diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 1468402..e0bf92c 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -3,6 +3,5 @@ "folder-notes", "homepage", "obsidian-style-settings", - "lazy-plugins", - "iconic" + "lazy-plugins" ] \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json index 8605515..a586d79 100644 --- a/.obsidian/core-plugins.json +++ b/.obsidian/core-plugins.json @@ -26,5 +26,6 @@ "workspaces": false, "file-recovery": true, "publish": false, - "sync": false + "sync": false, + "webviewer": false } \ No newline at end of file diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index 66fd933..898d702 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -7506,6 +7506,108 @@ var emojiRegex = () => { return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; }; +var removeMarkdown = function(md, options) { + options = options || {}; + options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false; + options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true; + options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true; + options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true; + options.abbr = options.hasOwnProperty('abbr') ? options.abbr : false; + options.replaceLinksWithURL = options.hasOwnProperty('replaceLinksWithURL') ? options.replaceLinksWithURL : false; + options.htmlTagsToSkip = options.hasOwnProperty('htmlTagsToSkip') ? options.htmlTagsToSkip : []; + options.throwError = options.hasOwnProperty('throwError') ? options.throwError : false; + + var output = md || ''; + + // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top) + output = output.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*/gm, ''); + + try { + if (options.stripListLeaders) { + if (options.listUnicodeChar) + output = output.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm, options.listUnicodeChar + ' $1'); + else + output = output.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm, '$1'); + } + if (options.gfm) { + output = output + // Header + .replace(/\n={2,}/g, '\n') + // Fenced codeblocks + .replace(/~{3}.*\n/g, '') + // Strikethrough + .replace(/~~/g, '') + // Fenced codeblocks + .replace(/`{3}.*\n/g, ''); + } + if (options.abbr) { + // Remove abbreviations + output = output.replace(/\*\[.*\]:.*\n/, ''); + } + output = output + // Remove HTML tags + .replace(/<[^>]*>/g, ''); + + var htmlReplaceRegex = new RegExp('<[^>]*>', 'g'); + if (options.htmlTagsToSkip.length > 0) { + // Using negative lookahead. Eg. (?!sup|sub) will not match 'sup' and 'sub' tags. + var joinedHtmlTagsToSkip = '(?!' + options.htmlTagsToSkip.join("|") + ')'; + + // Adding the lookahead literal with the default regex for html. Eg./<(?!sup|sub)[^>]*>/ig + htmlReplaceRegex = new RegExp( + '<' + + joinedHtmlTagsToSkip + + '[^>]*>', + 'ig' + ); + } + + output = output + // Remove HTML tags + .replace(htmlReplaceRegex, '') + // Remove setext-style headers + .replace(/^[=\-]{2,}\s*$/g, '') + // Remove footnotes? + .replace(/\[\^.+?\](\: .*?$)?/g, '') + .replace(/\s{0,2}\[.*?\]: .*?$/g, '') + // Remove images + .replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, options.useImgAltText ? '$1' : '') + // Remove inline links + .replace(/\[([^\]]*?)\][\[\(].*?[\]\)]/g, options.replaceLinksWithURL ? '$2' : '$1') + // Remove blockquotes + .replace(/^(\n)?\s{0,3}>\s?/gm, '$1') + // .replace(/(^|\n)\s{0,3}>\s?/g, '\n\n') + // Remove reference-style links? + .replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g, '') + // Remove atx-style headers + .replace(/^(\n)?\s{0,}#{1,6}\s*( (.+))? +#+$|^(\n)?\s{0,}#{1,6}\s*( (.+))?$/gm, '$1$3$4$6') + // Remove * emphasis + .replace(/([\*]+)(\S)(.*?\S)??\1/g, '$2$3') + // Remove _ emphasis. Unlike *, _ emphasis gets rendered only if + // 1. Either there is a whitespace character before opening _ and after closing _. + // 2. Or _ is at the start/end of the string. + .replace(/(^|\W)([_]+)(\S)(.*?\S)??\2($|\W)/g, '$1$3$4$5') + // Remove code blocks + .replace(/(`{3,})(.*?)\1/gm, '$2') + // Remove inline code + .replace(/`(.+?)`/g, '$1') + // // Replace two or more newlines with exactly two? Not entirely sure this belongs here... + // .replace(/\n{2,}/g, '\n\n') + // // Remove newlines in a paragraph + // .replace(/(\S+)\n\s*(\S+)/g, '$1 $2') + // Replace strike through + .replace(/~(.*?)~/g, '$1'); + } catch(e) { + if (options.throwError) throw e; + + console.error("remove-markdown encountered error: %s", e); + return md; + } + return output; +}; + +var removeMd = /*@__PURE__*/getDefaultExportFromCjs(removeMarkdown); + /** Normalize a duration to all of the proper units. */ function normalizeDuration(dur) { if (dur === undefined || dur === null) @@ -7550,7 +7652,7 @@ function extractSubtags(tag) { return result; } /** Try calling the given function; on failure, return the error message. */ -function tryOrPropogate(func) { +function tryOrPropagate(func) { try { return func(); } @@ -7559,7 +7661,7 @@ function tryOrPropogate(func) { } } /** Try asynchronously calling the given function; on failure, return the error message. */ -async function asyncTryOrPropogate(func) { +async function asyncTryOrPropagate(func) { try { return await func(); } @@ -7618,6 +7720,16 @@ function setsEqual(first, second) { return false; return true; } +/** Normalize a markdown string. Removes all markdown tags and obsidian links. */ +function normalizeMarkdown(str) { + // [[test]] -> test + let interim = str.replace(/\[\[([^\|]*?)\]\]/g, "$1"); + // [[test|test]] -> test + interim = interim.replace(/\[\[.*?\|(.*?)\]\]/, "$1"); + // remove markdown tags + interim = removeMd(interim); + return interim; +} var Values; (function (Values) { @@ -7823,7 +7935,7 @@ var Values; } } Values.compareValue = compareValue; - /** Find the corresponding Dataveiw type for an arbitrary value. */ + /** Find the corresponding Dataview type for an arbitrary value. */ function typeOf(val) { return wrapValue(val)?.type; } @@ -8232,7 +8344,7 @@ class DataArrayImpl { "max", ]); static ARRAY_PROXY = { - get: function (target, prop, reciever) { + get: function (target, prop, receiver) { if (typeof prop === "symbol") return target[prop]; else if (typeof prop === "number") @@ -8548,7 +8660,7 @@ async function renderCompactMarkdownForInlineFieldLivePreview(app, markdown, con await obsidian.MarkdownRenderer.render(app, markdown, tmpContainer, sourcePath, component); let paragraph = tmpContainer.querySelector(":scope > p"); if (tmpContainer.childNodes.length == 1 && paragraph) { - container.replaceChildren(...paragraph.childNodes); + container.appendChild(paragraph.childNodes.item(paragraph.childNodes.length - 1)); } else { container.replaceChildren(...tmpContainer.childNodes); @@ -9052,7 +9164,7 @@ const EXPRESSION = parsimmon_umd_minExports.createLanguage({ inlineFieldList: q => q.atomInlineField.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).lookahead(q.atomInlineField)), inlineField: q => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(q.atomInlineField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace), q.inlineFieldList, (f, _s, l) => [f].concat(l)), q.atomInlineField), atomField: q => parsimmon_umd_minExports.alt( - // Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambigious. + // Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambiguous. q.embedLink.map(l => Fields.literal(l)), q.negatedField, q.linkField, q.listField, q.objectField, q.lambdaField, q.parensField, q.boolField, q.numberField, q.stringField, q.dateField, q.durationField, q.nullField, q.variableField), indexField: q => parsimmon_umd_minExports.seqMap(q.atomField, parsimmon_umd_minExports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => { let result = obj; @@ -9137,7 +9249,7 @@ function findClosing(line, start, open, close) { nesting++; else if (char == close) nesting--; - // Only occurs if we are on a close character and trhere is no more nesting. + // Only occurs if we are on a close character and there is no more nesting. if (nesting < 0) return { value: line.substring(start, index).trim(), endIndex: index + 1 }; escaped = false; @@ -9151,7 +9263,7 @@ function findSeparator(line, start) { return undefined; return { key: line.substring(start, sep).trim(), valueIndex: sep + 2 }; } -/** Try to completely parse an inline field starting at the given position. Assuems `start` is on a wrapping character. */ +/** Try to completely parse an inline field starting at the given position. Assumes `start` is on a wrapping character. */ function findSpecificInlineField(line, start) { let open = line.charAt(start); let key = findSeparator(line, start + 1); @@ -9581,7 +9693,7 @@ function addFields(fields, target) { } /** Importer for markdown documents. */ -// TODO: Consider using an actual parser in leiu of a more expensive regex. +// TODO: Consider using an actual parser in lieu of a more expensive regex. const LIST_ITEM_REGEX = /^[\s>]*(\d+\.|\d+\)|\*|-|\+)\s*(\[.{0,1}\])?\s*(.*)$/mu; /** Recursively convert frontmatter into fields. We have to dance around YAML structure. */ function parseFrontmatter(value) { @@ -12669,7 +12781,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkc0luTGl2ZVByZXZpZXc6IHRydWUsCiAgICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogImRhdGF2aWV3anMiLAogICAgICB9LAogIH0pOwoKICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgU3VjY2VzcyB7CiAgICAgIHZhbHVlOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTsKICAgICAgfQogICAgICBtYXAoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpOwogICAgICB9CiAgICAgIGZsYXRNYXAoZikgewogICAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7CiAgICAgIH0KICAgICAgbWFwRXJyKGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoc3VjYyk7CiAgICAgIH0KICAgICAgb3JFbHNlKF92YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogIH0KICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgRmFpbHVyZSB7CiAgICAgIGVycm9yOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHZhbDEgPSBudWxsOwogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwyID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7CiAgICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7CiAgICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LgogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkKICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpOwogICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciA/PyAoKHgpID0+IHgpOwogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4KICAgICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7CiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLgogICAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7CiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLgogICAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gIiIpLmxvY2FsZUNvbXBhcmUobGluazIuc3VicGF0aCA/PyAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlOwogICAgICB9CiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7CiAgICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzICJ0cnV0aHkiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqLwogICAgICBmdW5jdGlvbiBpc1RydXRoeShmaWVsZCkgewogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOwogICAgICAgICAgaWYgKCF3cmFwcGVkKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHdyYXBwZWQudmFsdWUpLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc1RydXRoeSA9IGlzVHJ1dGh5OwogICAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7CiAgICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChmaWVsZC5tYXAodiA9PiBkZWVwQ29weSh2KSkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5kZWVwQ29weSA9IGRlZXBDb3B5OwogICAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOwogICAgICB9CiAgICAgIFZhbHVlcy5pc1N0cmluZyA9IGlzU3RyaW5nOwogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOwogICAgICBmdW5jdGlvbiBpc0RhdGUodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZVRpbWU7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRGF0ZSA9IGlzRGF0ZTsKICAgICAgZnVuY3Rpb24gaXNEdXJhdGlvbih2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247CiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsKICAgICAgZnVuY3Rpb24gaXNBcnJheSh2YWwpIHsKICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzQXJyYXkgPSBpc0FycmF5OwogICAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47CiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7CiAgICAgIGZ1bmN0aW9uIGlzV2lkZ2V0KHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIFdpZGdldDsKICAgICAgfQogICAgICBWYWx1ZXMuaXNXaWRnZXQgPSBpc1dpZGdldDsKICAgICAgZnVuY3Rpb24gaXNIdG1sKHZhbCkgewogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmlzSHRtbCA9IGlzSHRtbDsKICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhdmlldy1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqLwogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsKICAgICAgICAgIHJldHVybiAodHlwZW9mIHZhbCA9PSAib2JqZWN0IiAmJgogICAgICAgICAgICAgICFpc0h0bWwodmFsKSAmJgogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmCiAgICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJgogICAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiYKICAgICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJgogICAgICAgICAgICAgICFpc051bGwodmFsKSk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzT2JqZWN0ID0gaXNPYmplY3Q7CiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAiZnVuY3Rpb24iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKICB9KShWYWx1ZXMgfHwgKFZhbHVlcyA9IHt9KSk7CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gR3JvdXBpbmdzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgdmFyIEdyb3VwaW5nczsKICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgewogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZ3JvdXAgZW50cnkgaXMgYSBzdGFuZGFsb25lIHZhbHVlLCBvciBhIGdyb3VwaW5nIG9mIHN1Yi1lbnRyaWVzLiAqLwogICAgICBmdW5jdGlvbiBpc0VsZW1lbnRHcm91cChlbnRyeSkgewogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsKICAgICAgfQogICAgICBHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAgPSBpc0VsZW1lbnRHcm91cDsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovCiAgICAgIGZ1bmN0aW9uIGlzR3JvdXBpbmcoZW50cnkpIHsKICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzR3JvdXBpbmcgPSBpc0dyb3VwaW5nOwogICAgICAvKiogQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJlY3Vyc2l2ZSBncm91cGluZy4gKi8KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsKICAgICAgICAgIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSAwOwogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gY291bnQoc3ViZ3JvdXAucm93cyk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmNvdW50ID0gY291bnQ7CiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOwogIC8vLy8vLy8vLy8KICAvLyBMSU5LIC8vCiAgLy8vLy8vLy8vLwogIC8qKiBUaGUgT2JzaWRpYW4gJ2xpbmsnLCB1c2VkIGZvciB1bmlxdWVseSBkZXNjcmliaW5nIGEgZmlsZSwgaGVhZGVyLCBvciBibG9jay4gKi8KICBjbGFzcyBMaW5rIHsKICAgICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi8KICAgICAgcGF0aDsKICAgICAgLyoqIFRoZSBkaXNwbGF5IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLiAqLwogICAgICBkaXNwbGF5OwogICAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqLwogICAgICBzdWJwYXRoOwogICAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKCEpPyAqLwogICAgICBlbWJlZDsKICAgICAgLyoqIFRoZSB0eXBlIG9mIHRoaXMgbGluaywgd2hpY2ggZGV0ZXJtaW5lcyB3aGF0ICdzdWJwYXRoJyByZWZlcnMgdG8sIGlmIGFueXRoaW5nLiAqLwogICAgICB0eXBlOwogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUuICovCiAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayh7CiAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICBlbWJlZCwKICAgICAgICAgICAgICBkaXNwbGF5LAogICAgICAgICAgICAgIHN1YnBhdGg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgaW5mZXIobGlua3BhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjXiIpOwogICAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlua3BhdGguaW5jbHVkZXMoIiMiKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLgogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLAogICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlIGFuZCBibG9jayBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBibG9jayhwYXRoLCBibG9ja0lkLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogYmxvY2tJZCwKICAgICAgICAgICAgICB0eXBlOiAiYmxvY2siLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsKICAgICAgfQogICAgICBjb25zdHJ1Y3RvcihmaWVsZHMpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTsKICAgICAgfQogICAgICAvKiogQ2hlY2tzIGZvciBsaW5rIGVxdWFsaXR5IChpLmUuLCB0aGF0IHRoZSBsaW5rcyBhcmUgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZXhhY3QgbG9jYXRpb24pLiAqLwogICAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovCiAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovCiAgICAgIHRvT2JqZWN0KCkgewogICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9OwogICAgICB9CiAgICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi8KICAgICAgLy9AdHMtaWdub3JlOyBlcnJvciBhcHBlYXJlZCBhZnRlciB1cGRhdGluZyBPYnNpZGlhbiB0byAwLjE1LjQ7IGl0IGFsc28gdXBkYXRlZCBvdGhlciBwYWNrYWdlcyBidXQgZGlkbid0IHNheSB3aGljaAogICAgICB3aXRoUGF0aChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovCiAgICAgIHdpdGhEaXNwbGF5KGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWMgaGVhZGVyLiAqLwogICAgICB3aXRoSGVhZGVyKGhlYWRlcikgewogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqLwogICAgICB0b0ZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMucGF0aCwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLwogICAgICB0b0VtYmVkKCkgewogICAgICAgICAgaWYgKHRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7CiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi8KICAgICAgZnJvbUVtYmVkKCkgewogICAgICAgICAgaWYgKCF0aGlzLmVtYmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgbGluayA9IG5ldyBMaW5rKHRoaXMpOwogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLwogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOwogICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOwogICAgICAgICAgfQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8KICAgICAgb2JzaWRpYW5MaW5rKCkgewogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlQWxsKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZUFsbCgifCIsICJcXHwiKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2VBbGwoInwiLCAiXFx8Iik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgICR3aWRnZXQ7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGtleTsKICAgICAgdmFsdWU7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIHVybDsKICAgICAgZGlzcGxheTsKICAgICAgY29uc3RydWN0b3IodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOwogICAgICAgICAgdGhpcy51cmwgPSB1cmw7CiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5OwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLmRpc3BsYXkgPz8gdGhpcy51cmx9XSgke3RoaXMudXJsfSlgOwogICAgICB9CiAgfQogIHZhciBXaWRnZXRzOwogIChmdW5jdGlvbiAoV2lkZ2V0cykgewogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gbGlzdFBhaXIoa2V5LCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaXN0UGFpcldpZGdldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICBXaWRnZXRzLmxpc3RQYWlyID0gbGlzdFBhaXI7CiAgICAgIC8qKiBDcmVhdGUgYW4gZXh0ZXJuYWwgbGluayB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBPYnNpZGlhbiBsaW5rLiAqLwogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IEV4dGVybmFsTGlua1dpZGdldCh1cmwsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYSBsaXN0IHBhaXIgd2lkZ2V0LiAqLwogICAgICBmdW5jdGlvbiBpc0xpc3RQYWlyKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsKICAgICAgfQogICAgICBXaWRnZXRzLmlzTGlzdFBhaXIgPSBpc0xpc3RQYWlyOwogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsKICAgICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhbnkga2luZCBvZiBidWlsdC1pbiB3aWRnZXQgd2l0aCBzcGVjaWFsIHJlbmRlcmluZyBoYW5kbGluZy4gKi8KICAgICAgZnVuY3Rpb24gaXNCdWlsdGluKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNCdWlsdGluID0gaXNCdWlsdGluOwogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovCiAgdmFyIEZpZWxkczsKICAoZnVuY3Rpb24gKEZpZWxkcykgewogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07CiAgICAgIH0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7CiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4OwogICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8KICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOwogICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsKICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsKICAgICAgfQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7CiAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsKICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7CiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7CiAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7CiAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7CiAgICAgIH0KICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7CiAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7CiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLwogIC8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBzb3VyY2VzLiAqLwogIHZhciBTb3VyY2VzOwogIChmdW5jdGlvbiAoU291cmNlcykgewogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZyb20gYSB0YWcuICovCiAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsKICAgICAgfQogICAgICBTb3VyY2VzLnRhZyA9IHRhZzsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07CiAgICAgIH0KICAgICAgU291cmNlcy5jc3YgPSBjc3Y7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHVuZGVyIGEgZm9sZGVyIHByZWZpeC4gKi8KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07CiAgICAgIH0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHdoaWNoIGxpbmsgdG8vZnJvbSBhIGdpdmVuIGZpbGUuICovCiAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07CiAgICAgIH0KICAgICAgU291cmNlcy5saW5rID0gbGluazsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovCiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3A6ICImIiwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCB0YWtlcyB0aGUgdW5pb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIG9yKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMub3IgPSBvcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8KICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlIiwgY2hpbGQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gZW1wdHkoKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07CiAgICAgIH0KICAgICAgU291cmNlcy5lbXB0eSA9IGVtcHR5OwogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8KICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7CiAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsKICAgICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwKICAgICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwKICAgICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICB9OwogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8KICBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7CiAgICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSwKICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksCiAgICAgIHllc3RlcmRheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLAogICAgICB0b21vcnJvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgICJzdGFydC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLAogICAgICAiZW5kLW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigieWVhciIpLAogICAgICAiZW5kLW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLAogICAgICAic3RhcnQtb2YtbW9udGgiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksCiAgfTsKICAvKioKICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudAogICAqIHRvIGFjY2Vzcy4KICAgKi8KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgLyoqIFNwbGl0IG9uIHVuZXNjYXBlZCBwaXBlcyBpbiBhbiBpbm5lciBsaW5rLiAqLwogIGZ1bmN0aW9uIHNwbGl0T25VbmVzY2FwZWRQaXBlKGxpbmspIHsKICAgICAgbGV0IHBpcGUgPSAtMTsKICAgICAgd2hpbGUgKChwaXBlID0gbGluay5pbmRleE9mKCJ8IiwgcGlwZSArIDEpKSA+PSAwKSB7CiAgICAgICAgICBpZiAocGlwZSA+IDAgJiYgbGlua1twaXBlIC0gMV0gPT0gIlxcIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcfC9nLCAifCIpLCBsaW5rLnN1YnN0cmluZyhwaXBlICsgMSldOwogICAgICB9CiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07CiAgfQogIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsKICAgICAgbGV0IFtsaW5rLCBkaXNwbGF5XSA9IHNwbGl0T25VbmVzY2FwZWRQaXBlKHJhd2xpbmspOwogICAgICByZXR1cm4gTGluay5pbmZlcihsaW5rLCBmYWxzZSwgZGlzcGxheSk7CiAgfQogIC8qKiBDcmVhdGUgYSBsZWZ0LWFzc29jaWF0aXZlIGJpbmFyeSBwYXJzZXIgd2hpY2ggcGFyc2VzIHRoZSBnaXZlbiBzdWItZWxlbWVudCBhbmQgc2VwYXJhdG9yLiBIYW5kbGVzIHdoaXRlc3BhY2UuICovCiAgZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGFyc2VyKGNoaWxkLCBzZXAsIGNvbWJpbmUpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gewogICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSk7CiAgfQogIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7CiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuY3VzdG9tKChzdWNjZXNzLCBmYWlsdXJlKSA9PiB7CiAgICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBmdW5jKHJlc3VsdC52YWx1ZSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTsKICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9OwogICAgICB9KTsKICB9CiAgY29uc3QgRVhQUkVTU0lPTiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jcmVhdGVMYW5ndWFnZSh7CiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4KICAgICAgbnVtYmVyOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkKICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwKICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKQogICAgICAgICAgLnRoZW4ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm5vbmVPZignIlxcJykpCiAgICAgICAgICAuYXRMZWFzdCgwKQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpCiAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCciJykpCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksCiAgICAgIGVzY2FwZUNoYXJhY3RlcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJcXCIpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55KQogICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsKICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykKICAgICAgICAgICAgICByZXR1cm4gJyInOwogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpCiAgICAgICAgICAgICAgcmV0dXJuICJcXCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOwogICAgICB9KSwKICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvdHJ1ZXxmYWxzZXxUcnVlfEZhbHNlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpID09ICJ0cnVlIikKICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwKICAgICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuCiAgICAgIHRhZzogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksCiAgICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuCiAgICAgIGlkZW50aWZpZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xwe0xldHRlcn0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLAogICAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uCiAgICAgIGxpbms6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQogICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkKICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkKICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuCiAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHsKICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbDsKICAgICAgfSkuZGVzYygiZmlsZSBsaW5rIiksCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLgogICAgICBiaW5hcnlQbHVzTWludXM6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCt8LS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLAogICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLgogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCp8XC98JS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwKICAgICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJz49JyBvciAnPD0nIG9yICchPScgb3IgJz0nIG9yICc+JyBvciAnPCciKSwKICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQogICAgICAgICAgLm1hcChzdHIgPT4gewogICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQogICAgICAgICAgICAgIHJldHVybiAiJiI7CiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQogICAgICAgICAgICAgIHJldHVybiAifCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfSkKICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLgogICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7CiAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICBkYXRlU2hvcnRoYW5kOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZGF0ZTogcSA9PiBjaGFpbk9wdChxLnJvb3REYXRlLCAoeW0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgZGF5KSA9PiB5bS5zZXQoeyBkYXk6IE51bWJlci5wYXJzZUludChkYXkpIH0pKSwgKHltZCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSwgKHltZGgpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgbWludXRlKSA9PiB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSkpLCAoeW1kaG0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgc2Vjb25kKSA9PiB5bWRobS5zZXQoeyBzZWNvbmQ6IE51bWJlci5wYXJzZUludChzZWNvbmQpIH0pKSwgKHltZGhtcykgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi4iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MKICAgICAgKSwgKGR0KSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKyIpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWiIpLCAoKSA9PiBkdC5zZXRab25lKCJ1dGMiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOUEtWmEteistXC9dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQogICAgICAgICAgLmFzc2VydCgoZHQpID0+IGR0LmlzVmFsaWQsICJ2YWxpZCBkYXRlIikKICAgICAgICAgIC5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwKICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4KICAgICAgZGF0ZVBsdXM6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLCBxLmRhdGUpLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmQiKSwKICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLgogICAgICBkdXJhdGlvblR5cGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUykKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQogICAgICAgICAgLm1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKSksCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5udW1iZXIsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PiBEVVJBVElPTl9UWVBFU1t0XS5tYXBVbml0cyh4ID0+IHggKiBjb3VudCkpCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5vcihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpCiAgICAgICAgICAubWFwKGR1cmF0aW9ucyA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKQogICAgICAgICAgLmRlc2MoImR1cmF0aW9uIGxpa2UgNGhyMm1pbiIpLAogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLgogICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm51bGwiKSwKICAgICAgLy8gU291cmNlIHBhcnNpbmcuCiAgICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLAogICAgICBjc3ZTb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuc3RyaW5nLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwKICAgICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksCiAgICAgIGxpbmtPdXRnb2luZ1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm91dGdvaW5nKCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmxpbmssIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwKICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksCiAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIG5lZ2F0ZVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLAogICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5wYXJlbnNTb3VyY2UsIHEubmVnYXRlU291cmNlLCBxLmxpbmtPdXRnb2luZ1NvdXJjZSwgcS5saW5rSW5jb21pbmdTb3VyY2UsIHEuZm9sZGVyU291cmNlLCBxLnRhZ1NvdXJjZSwgcS5jc3ZTb3VyY2UpLAogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksCiAgICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLAogICAgICAvLyBGaWVsZCBwYXJzaW5nLgogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcgogICAgICAgICAgLmNoYWluKHIgPT4gewogICAgICAgICAgaWYgKEtFWVdPUkRTLmluY2x1ZGVzKHIudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmZhaWwoIlZhcmlhYmxlIGZpZWxkcyBjYW5ub3QgYmUgYSBrZXl3b3JkICgiICsgS0VZV09SRFMuam9pbigiIG9yICIpICsgIikiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOwogICAgICAgICAgfQogICAgICB9KQogICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksCiAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksCiAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImRhdGUoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpKS5kZXNjKCJkYXRlIiksCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJkdXIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKSkuZGVzYygiZHVyYXRpb24iKSwKICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksCiAgICAgIGxpbmtGaWVsZDogcSA9PiBxLmxpbmsubWFwKGYgPT4gRmllbGRzLmxpdGVyYWwoZikpLAogICAgICBsaXN0RmllbGQ6IHEgPT4gcS5maWVsZAogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIikpKQogICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLAogICAgICBvYmplY3RGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllci5vcihxLnN0cmluZyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9OwogICAgICB9KQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoInsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJ9IikpKQogICAgICAgICAgLm1hcCh2YWxzID0+IHsKICAgICAgICAgIGxldCByZXMgPSB7fTsKICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHZhbHMpCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7CiAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwKICAgICAgYXRvbUlubGluZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kYXRlLCBxLmR1cmF0aW9uLm1hcChkID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSwgcS5zdHJpbmcsIHEudGFnLCBxLmVtYmVkTGluaywgcS5ib29sLCBxLm51bWJlciwgcS5yYXdOdWxsKSwKICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwKICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+IFtmXS5jb25jYXQobCkpLCBxLmF0b21JbmxpbmVGaWVsZCksCiAgICAgIGF0b21GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KAogICAgICAvLyBQbGFjZSBlbWJlZCBsaW5rcyBhYm92ZSBuZWdhdGVkIGZpZWxkcyBhcyB0aGV5IGFyZSB0aGUgc3BlY2lhbCBwYXJzZXIgY2FzZSAnIVtbdGhpbmddXScgYW5kIGFyZSBnZW5lcmFsbHkgdW5hbWJpZ2lvdXMuCiAgICAgIHEuZW1iZWRMaW5rLm1hcChsID0+IEZpZWxkcy5saXRlcmFsKGwpKSwgcS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLAogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOwogICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkgewogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgRmllbGRzLmxpdGVyYWwocG9zdC5maWVsZCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSksCiAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksCiAgICAgIHBhcmVuc0ZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLAogICAgICBsYW1iZGFGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllcgogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07CiAgICAgIH0pLAogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9OwogICAgICB9KSwKICAgICAgaW5kZXhQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9OwogICAgICB9KSwKICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXywgXzEsIGZpZWxkcywgXzIsIF8zKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsKICAgICAgfSksCiAgICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLgogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlDb21wYXJlRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzRmllbGQsIHEuYmluYXJ5Q29tcGFyZU9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCwKICAgICAgZmllbGQ6IHEgPT4gcS5iaW5hcnlPcEZpZWxkLAogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLwogIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8KICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsKICAgICAgIlsiOiAiXSIsCiAgICAgICIoIjogIikiLAogIH0pOwogIC8qKgogICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwKICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLgogICAqLwogIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgewogICAgICBsZXQgbmVzdGluZyA9IDA7CiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOwogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuCiAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy4KICAgICAgICAgIGlmIChlc2NhcGVkKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikKICAgICAgICAgICAgICBuZXN0aW5nKys7CiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQogICAgICAgICAgICAgIG5lc3RpbmctLTsKICAgICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy4KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkKICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTsKICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLwogIGZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQpIHsKICAgICAgbGV0IHNlcCA9IGxpbmUuaW5kZXhPZigiOjoiLCBzdGFydCk7CiAgICAgIGlmIChzZXAgPCAwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsga2V5OiBsaW5lLnN1YnN0cmluZyhzdGFydCwgc2VwKS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsKICB9CiAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8KICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgewogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsKICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsKICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gRmFpbCB0aGUgbWF0Y2ggaWYgd2UgZmluZCBhbnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKG5vdCBhbGxvd2VkIGluIGtleXMpLgogICAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkgewogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOwogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIHJldHVybiB7CiAgICAgICAgICBrZXk6IGtleS5rZXksCiAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsCiAgICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgICBzdGFydFZhbHVlOiBrZXkudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwKICAgICAgfTsKICB9CiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICBmdW5jdGlvbiBwYXJzZUlubGluZVZhbHVlKHZhbHVlKSB7CiAgICAgIC8vIEVtcHR5IGlubGluZSB2YWx1ZXMgKGkuZS4sIG5vIHRleHQpIHNob3VsZCBtYXAgdG8gbnVsbCB0byBtYXRjaCBsb25nLXRlcm0gRGF0YXZpZXcgc2VtYW50aWNzLgogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLgogICAgICBpZiAodmFsdWUudHJpbSgpID09ICIiKQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLgogICAgICAvLyBJbmxpbmUgZmllbGQgb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQ7IGlubGluZSBhcnJheSBvYmplY3RzIGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0aGUgcGFyc2VyCiAgICAgIC8vIHNlcGFyYXRlbHkuCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsKICAgICAgaWYgKGlubGluZS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gaW5saW5lLnZhbHVlOwogICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgfQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5CiAgICogInJvYnVzdCIgd2F5IHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIGJhZCBuZXN0aW5nIG9yIG90aGVyIGludGVyZmVyaW5nIE1hcmtkb3duIHN5bWJvbHM6CiAgICoKICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LgogICAqIC0gSWYgc3VjY2Vzc2Z1bCwgc2NhbiB1bnRpbCB5b3UgZmluZCBhIG1hdGNoaW5nIGVuZCBicmFja2V0LCBhbmQgcGFyc2Ugd2hhdGV2ZXIgcmVtYWlucyBhcyBhbiBpbmxpbmUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7CiAgICAgIGxldCBmaWVsZHMgPSBbXTsKICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSB7CiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsKICAgICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHsKICAgICAgICAgICAgICBsZXQgcGFyc2VkRmllbGQgPSBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBmb3VuZEluZGV4KTsKICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7CiAgICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmllbGRzLnB1c2gocGFyc2VkRmllbGQpOwogICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgcGFyc2VkRmllbGQuZW5kKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7CiAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7CiAgICAgIGxldCBmaWx0ZXJlZEZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGkgPT0gMCB8fCBmaWx0ZXJlZEZpZWxkc1tmaWx0ZXJlZEZpZWxkcy5sZW5ndGggLSAxXS5lbmQgPCBmaWVsZHNbaV0uc3RhcnQpIHsKICAgICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzOwogIH0KICAvKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqLwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSVCA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgInUiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1swLTlccHtMZXR0ZXJ9XHdcc18vLV0rL3UpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocGFydHMgPT4gcGFydHMuam9pbigiIikpOwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSU0VSID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQogICAgICAudGhlbihGVUxMX0xJTkVfS0VZX1BBUlQpCiAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsKICAvKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQpIHsKICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7CiAgICAgIGlmICghc2VwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcwogICAgICAvLyBkcm9wIHN1cnJvdW5kaW5nIE1hcmtkb3duLgogICAgICBsZXQgcmVhbEtleSA9IEZVTExfTElORV9LRVlfUEFSU0VSLnBhcnNlKHNlcC5rZXkpOwogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwKICAgICAgICAgIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhzZXAudmFsdWVJbmRleCkudHJpbSgpLAogICAgICAgICAgc3RhcnQ6IDAsCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsCiAgICAgIH07CiAgfQogIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcdXsxRjRDNX18XHV7MUY0QzZ9fFx1ezFGNUQzfVx1e0ZFMEZ9PylccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNDSEVEVUxFRF9EQVRFX1JFR0VYID0gL1tcdXsyM0YzfVx1ezIzMUJ9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBTVEFSVF9EQVRFX1JFR0VYID0gL1x1ezFGNkVCfVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWwogICAgICB7IHJlZ2V4OiBDUkVBVEVEX0RBVEVfUkVHRVgsIGtleTogImNyZWF0ZWQiIH0sCiAgICAgIHsgcmVnZXg6IFNUQVJUX0RBVEVfUkVHRVgsIGtleTogInN0YXJ0IiB9LAogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LAogICAgICB7IHJlZ2V4OiBEVUVfREFURV9SRUdFWCwga2V5OiAiZHVlIiB9LAogICAgICB7IHJlZ2V4OiBET05FX0RBVEVfUkVHRVgsIGtleTogImNvbXBsZXRpb24iIH0sCiAgXTsKICAvKiogUGFyc2Ugc3BlY2lhbCBjb21wbGV0ZWQvZHVlL2RvbmUgdGFzayBmaWVsZHMgd2hpY2ggYXJlIG1hcmtlZCB2aWEgZW1vamkuICovCiAgZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpIHsKICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKICAgICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykgewogICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpOwogICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgICAgICAga2V5LAogICAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsxXSwKICAgICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLAogICAgICAgICAgICAgIGVuZDogbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsCiAgICAgICAgICAgICAgd3JhcHBpbmc6ICJlbW9qaS1zaG9ydGhhbmQiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLwogIGNsYXNzIFBhZ2VNZXRhZGF0YSB7CiAgICAgIC8qKiBUaGUgcGF0aCB0aGlzIGZpbGUgZXhpc3RzIGF0LiAqLwogICAgICBwYXRoOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIGNyZWF0ZWQuICovCiAgICAgIGN0aW1lOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIG1vZGlmaWVkLiAqLwogICAgICBtdGltZTsKICAgICAgLyoqIE9ic2lkaWFuLXByb3ZpZGVkIHNpemUgb2YgdGhpcyBwYWdlIGluIGJ5dGVzLiAqLwogICAgICBzaXplOwogICAgICAvKiogVGhlIGRheSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYWdlLCBpZiByZWxldmFudC4gKi8KICAgICAgZGF5OwogICAgICAvKiogVGhlIGZpcnN0IEgxL0gyIGhlYWRlciBpbiB0aGUgZmlsZS4gTWF5IG5vdCBleGlzdC4gKi8KICAgICAgdGl0bGU7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGZpZWxkcyBjb250YWluZWQgaW4gdGhpcyBtYXJrZG93biBmaWxlIC0gYm90aCBmcm9udG1hdHRlciBBTkQgaW4tZmlsZSBsaW5rcy4gKi8KICAgICAgZmllbGRzOwogICAgICAvKiogQWxsIG9mIHRoZSBleGFjdCB0YWdzIChwcmVmaXhlZCB3aXRoICcjJykgaW4gdGhpcyBmaWxlIG92ZXJhbGwuICovCiAgICAgIHRhZ3M7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGFsaWFzZXMgZGVmaW5lZCBmb3IgdGhpcyBmaWxlLiAqLwogICAgICBhbGlhc2VzOwogICAgICAvKiogQWxsIE9VVEdPSU5HIGxpbmtzIChpbmNsdWRpbmcgZW1iZWRzLCBoZWFkZXIgKyBibG9jayBsaW5rcykgaW4gdGhpcyBmaWxlLiAqLwogICAgICBsaW5rczsKICAgICAgLyoqIEFsbCBsaXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwYWdlLiBGaWx0ZXIgZm9yIHRhc2tzIHRvIGdldCBqdXN0IHRhc2tzLiAqLwogICAgICBsaXN0czsKICAgICAgLyoqIFRoZSByYXcgZnJvbnRtYXR0ZXIgZm9yIHRoaXMgZG9jdW1lbnQuICovCiAgICAgIGZyb250bWF0dGVyOwogICAgICBjb25zdHJ1Y3RvcihwYXRoLCBpbml0KSB7CiAgICAgICAgICB0aGlzLnBhdGggPSBwYXRoOwogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICB0aGlzLmZyb250bWF0dGVyID0ge307CiAgICAgICAgICB0aGlzLnRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmxpbmtzID0gW107CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOwogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOwogICAgICB9CiAgICAgIC8qKiBDYW5vbmljYWxpemUgcmF3IGxpbmtzIGFuZCBvdGhlciBkYXRhIGluIHBhcnRpYWwgZGF0YSB3aXRoIG5vcm1hbGl6ZXJzLCByZXR1cm5pbmcgYSBjb21wbGV0ZWQgb2JqZWN0LiAqLwogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7CiAgICAgICAgICAvLyBNdXRhdGUgdGhlIGRhdGEgZm9yIG5vdywgd2hpY2ggaXMgcHJvYmFibHkgYSBiYWQgaWRlYSBidXQuLi4gYWxsIHdlbGwuCiAgICAgICAgICBpZiAoZGF0YS5mcm9udG1hdHRlcikgewogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5maWVsZHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgIGRhdGEuZmllbGRzLnNldChrZXksIFZhbHVlcy5tYXBMZWF2ZXModmFsdWUsIHQgPT4gKFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZHMuc2V0KGtleSwgdmFsdWUubWFwKHggPT4gVmFsdWVzLm1hcExlYXZlcyh4LCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpbmtzKSB7CiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOwogICAgICAgICAgfQogICAgICAgICAgLy8gVGhpcyBpcyBwcmV0dHkgdWdseSwgYnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIG5vcm1hbGl6ZSBvbiB0aGUgd29ya2VyIHRocmVhZCB0aGF0IGRvZXMgcGFyc2luZy4KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8KICAgICAgICAgIC8vIG9wdGltaXplIGBWYWx1ZXMubWFwTGVhdmVzYCB0byBvbmx5IG11dGF0ZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VzIHRoaW5ncy4KICAgICAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKGRhdGEucGF0aCwgZGF0YSk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBuYW1lIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovCiAgICAgIG5hbWUoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBjb250YWluaW5nIGZvbGRlciAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLwogICAgICBmb2xkZXIoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50Rm9sZGVyKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovCiAgICAgIGV4dGVuc2lvbigpIHsKICAgICAgICAgIHJldHVybiBnZXRFeHRlbnNpb24odGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgc2V0IG9mIHRhZ3MgQU5EIGFsbCBvZiB0aGVpciBwYXJlbnQgdGFncyAoc28gI2hlbGxvL3llcyB3b3VsZCBiZWNvbWUgI2hlbGxvLCAjaGVsbG8veWVzKS4gKi8KICAgICAgZnVsbFRhZ3MoKSB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIHRoaXMudGFncykgewogICAgICAgICAgICAgIGZvciAobGV0IHN1YnRhZyBvZiBleHRyYWN0U3VidGFncyh0YWcpKQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFsbCBsaW5rcyBpbiB0aGlzIGZpbGUgdG8gZmlsZSBsaW5rcy4gKi8KICAgICAgZmlsZUxpbmtzKCkgewogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQogICAgICAgICAgLy8gbm93IGtlZXAgdGhlIGFkZGl0aW9uYWwgbWV0YWRhdGEuCiAgICAgICAgICBsZXQgZGlzdGluY3RMaW5rcyA9IG5ldyBTZXQodGhpcy5saW5rcyk7CiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsKICAgICAgfQogICAgICAvKiogTWFwIHRoaXMgbWV0YWRhdGEgdG8gYSBmdWxsIG9iamVjdDsgdXNlcyB0aGUgaW5kZXggZm9yIGFkZGl0aW9uYWwgZGF0YSBsb29rdXBzLiAgKi8KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgewogICAgICAgICAgLy8gQ29udmVydCBsaXN0IGl0ZW1zIHZpYSB0aGUgY2Fub25pY2FsaXphdGlvbiBjYWNoZS4KICAgICAgICAgIGxldCByZWFsQ2FjaGUgPSBjYWNoZSA/PyBuZXcgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSh0aGlzLmxpc3RzKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgZmlsZTogewogICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwKICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lKCksCiAgICAgICAgICAgICAgICAgIGxpbms6IExpbmsuZmlsZSh0aGlzLnBhdGgpLAogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwKICAgICAgICAgICAgICAgICAgaW5saW5rczogQXJyYXkuZnJvbShpbmRleC5saW5rcy5nZXRJbnZlcnNlKHRoaXMucGF0aCkpLm1hcChsID0+IExpbmsuZmlsZShsKSksCiAgICAgICAgICAgICAgICAgIGV0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwKICAgICAgICAgICAgICAgICAgYWxpYXNlczogQXJyYXkuZnJvbSh0aGlzLmFsaWFzZXMpLAogICAgICAgICAgICAgICAgICBsaXN0czogdGhpcy5saXN0cy5tYXAobCA9PiByZWFsQ2FjaGUuZ2V0KGwubGluZSkpLAogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwKICAgICAgICAgICAgICAgICAgY3RpbWU6IHRoaXMuY3RpbWUsCiAgICAgICAgICAgICAgICAgIGNkYXk6IHN0cmlwVGltZSh0aGlzLmN0aW1lKSwKICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsCiAgICAgICAgICAgICAgICAgIG1kYXk6IHN0cmlwVGltZSh0aGlzLm10aW1lKSwKICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5zaXplLAogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwKICAgICAgICAgICAgICAgICAgZnJvbnRtYXR0ZXI6IFZhbHVlcy5kZWVwQ29weSh0aGlzLmZyb250bWF0dGVyKSwKICAgICAgICAgICAgICAgICAgZXh0OiB0aGlzLmV4dGVuc2lvbigpLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICB9OwogICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IGRheSBpZiBwcmVzZW50LgogICAgICAgICAgaWYgKHRoaXMuZGF5KQogICAgICAgICAgICAgIHJlc3VsdC5maWxlLmRheSA9IHRoaXMuZGF5OwogICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIGNvbXB1dGVkIGZpZWxkcy4KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCkKICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIERvbid0IGFsbG93IGZpZWxkcyB0byBvdmVycmlkZSBleGlzdGluZyBrZXlzLgogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8qKiBBIGxpc3QgaXRlbSBpbnNpZGUgb2YgYSBsaXN0LiAqLwogIGNsYXNzIExpc3RJdGVtIHsKICAgICAgLyoqIFRoZSBzeW1ib2wgKCcqJywgJy0nLCAnMS4nKSB1c2VkIHRvIGRlZmluZSB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgc3ltYm9sOwogICAgICAvKiogQSBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGlzIHRhc2ssIG9yIHRvIHRoZSBjbG9zZXN0IGJsb2NrIHRoYXQgdGhpcyB0YXNrIGlzIGNvbnRhaW5lZCBpbi4gKi8KICAgICAgbGluazsKICAgICAgLyoqIEEgbGluayB0byB0aGUgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgbGlzdCBlbGVtZW50OyBjb3VsZCBiZSBhIGZpbGUgaWYgdGhpcyBpcyBub3QgaW4gYSBzZWN0aW9uLiAqLwogICAgICBzZWN0aW9uOwogICAgICAvKiogVGhlIHRleHQgb2YgdGhpcyBsaXN0IGl0ZW0uIFRoaXMgbWF5IGJlIG11bHRpcGxlIGxpbmVzIG9mIG1hcmtkb3duLiAqLwogICAgICB0ZXh0OwogICAgICAvKiogVGhlIGxpbmUgdGhhdCB0aGlzIGxpc3QgaXRlbSBzdGFydHMgb24gaW4gdGhlIGZpbGUuICovCiAgICAgIGxpbmU7CiAgICAgIC8qKiBUaGUgbnVtYmVyIG9mIGxpbmVzIHRoYXQgZGVmaW5lIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICBsaW5lQ291bnQ7CiAgICAgIC8qKiBUaGUgbGluZSBudW1iZXIgZm9yIHRoZSBmaXJzdCBsaXN0IGl0ZW0gaW4gdGhlIGxpc3QgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovCiAgICAgIGxpc3Q7CiAgICAgIC8qKiBBbnkgbGlua3MgY29udGFpbmVkIHdpdGhpbiB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgbGlua3M7CiAgICAgIC8qKiBUaGUgdGFncyBjb250YWluZWQgd2l0aGluIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICB0YWdzOwogICAgICAvKiogVGhlIHJhdyBPYnNpZGlhbi1wcm92aWRlZCBwb3NpdGlvbiBmb3Igd2hlcmUgdGhpcyB0YXNrIGlzLiAqLwogICAgICBwb3NpdGlvbjsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciBvZiB0aGUgcGFyZW50IGxpc3QgaXRlbSwgaWYgcHJlc2VudDsgaWYgdGhpcyBpcyB1bmRlZmluZWQsIHRoaXMgaXMgYSByb290IGl0ZW0uICovCiAgICAgIHBhcmVudDsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlcnMgb2YgY2hpbGRyZW4gb2YgdGhpcyBsaXN0IGl0ZW0uICovCiAgICAgIGNoaWxkcmVuOwogICAgICAvKiogVGhlIGJsb2NrIElEIGZvciB0aGlzIGl0ZW0sIGlmIG9uZSBpcyBwcmVzZW50LiAqLwogICAgICBibG9ja0lkOwogICAgICAvKiogQW55IGZpZWxkcyBkZWZpbmVkIGluIHRoaXMgbGlzdCBpdGVtLiBGb3IgdGFza3MsIHRoaXMgaW5jbHVkZXMgZmllbGRzIHVuZGVybmVhdGggdGhlIHRhc2suICovCiAgICAgIGZpZWxkczsKICAgICAgdGFzazsKICAgICAgY29uc3RydWN0b3IoaW5pdCkgewogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsKICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOwogICAgICAgICAgdGhpcy50YWdzID0gdGhpcy50YWdzIHx8IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuIHx8IFtdOwogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107CiAgICAgIH0KICAgICAgaWQoKSB7CiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsKICAgICAgfQogICAgICBmaWxlKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGlmICh0aGlzLnRhc2spCiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3ltYm9sfSBbJHt0aGlzLnRhc2suY29tcGxldGVkID8gIngiIDogIiAifV0gJHt0aGlzLnRleHR9YDsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7CiAgICAgIH0KICAgICAgY3JlYXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikgPz8gdGhpcy5maWVsZHMuZ2V0KCJjdGltZSIpID8/IHRoaXMuZmllbGRzLmdldCgiY2RheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGR1ZSgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJkdWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZWRheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGNvbXBsZXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0ZWQiKSA/PwogICAgICAgICAgICAgIHRoaXMuZmllbGRzLmdldCgiY29tcGxldGlvbiIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wZGF5IikpPy5bMF07CiAgICAgIH0KICAgICAgc3RhcnQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpPy5bMF07CiAgICAgIH0KICAgICAgc2NoZWR1bGVkKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzLmdldCgic2NoZWR1bGVkIik/LlswXTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovCiAgICAgIHNlcmlhbGl6ZShjYWNoZSkgewogICAgICAgICAgLy8gTWFwIGNoaWxkcmVuIHRvIHRoZWlyIHNlcmlhbGl6ZWQvZGUtZHVwbGljYXRlZCBlcXVpdmFsZW50cyByaWdodCBhd2F5LgogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCwKICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssCiAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLAogICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwKICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogdGhpcy5saW5lQ291bnQsCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LAogICAgICAgICAgICAgIG91dGxpbmtzOiBBcnJheS5mcm9tKHRoaXMubGlua3MpLAogICAgICAgICAgICAgIHBhdGg6IHRoaXMubGluay5wYXRoLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgICAgICB0YXNrOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBhbm5vdGF0ZWQ6IHRoaXMuZmllbGRzLnNpemUgPiAwLAogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksCiAgICAgICAgICAgICAgc3VidGFza3M6IGNoaWxkcmVuLAogICAgICAgICAgICAgIHJlYWw6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50ID09PSAwKQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgIGlmICh0aGlzLmJsb2NrSWQpCiAgICAgICAgICAgICAgcmVzdWx0LmJsb2NrSWQgPSB0aGlzLmJsb2NrSWQ7CiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7CiAgICAgICAgICBpZiAodGhpcy50YXNrKSB7CiAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IHRoaXMudGFzay5zdGF0dXM7CiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsKICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGVkID0gdGhpcy50YXNrLmNvbXBsZXRlZDsKICAgICAgICAgICAgICByZXN1bHQuZnVsbHlDb21wbGV0ZWQgPSB0aGlzLnRhc2suZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7CiAgICAgICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gVmFsdWVzLmRlZXBDb3B5KGNyZWF0ZWQpOwogICAgICAgICAgICAgIGlmIChkdWUpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSBWYWx1ZXMuZGVlcENvcHkoZHVlKTsKICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOwogICAgICAgICAgICAgIGlmIChzdGFydCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gVmFsdWVzLmRlZXBDb3B5KHN0YXJ0KTsKICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVkID0gVmFsdWVzLmRlZXBDb3B5KHNjaGVkdWxlZCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vIENvbnZlcnNpb24gLyBTZXJpYWxpemF0aW9uIFV0aWxpdGllcyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovCiAgY2xhc3MgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSB7CiAgICAgIGxpc3RJdGVtczsKICAgICAgY2FjaGU7CiAgICAgIHNlZW47CiAgICAgIGNvbnN0cnVjdG9yKGxpc3RJdGVtcykgewogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsKICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQogICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIGdldChsaW5lbm8pIHsKICAgICAgICAgIGlmIChsaW5lbm8gaW4gdGhpcy5jYWNoZSkKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtsaW5lbm9dOwogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGF2aWV3OiBFbmNvdW50ZXJlZCBhIGNpcmN1bGFyIGxpc3QgKGxpbmUgbnVtYmVyICR7bGluZW5vfTsgY2hpbGRyZW4gJHt0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLmNoaWxkcmVuLmpvaW4oIiwgIil9KWApOwogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNlZW4uYWRkKGxpbmVubyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5saXN0SXRlbXNbbGluZW5vXS5zZXJpYWxpemUodGhpcyk7CiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGFkZEZpZWxkcyhmaWVsZHMsIHRhcmdldCkgewogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZXMubGVuZ3RoID09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8qKiBDb21tb24gdXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIHRhZ3MsIGxpbmtzLCBhbmQgb3RoZXIgYnVzaW5lc3MgZnJvbSBtZXRhZGF0YS4gKi8KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7CiAgLyoqIEV4dHJhY3QgYWxsIHRhZ3MgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyQxKHNvdXJjZSkgewogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICBsZXQgbWF0Y2hlcyA9IHNvdXJjZS5tYXRjaEFsbChQT1RFTlRJQUxfVEFHX01BVENIRVIpOwogICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7CiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOwogICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpCiAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZWQudmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvKiogSW1wb3J0ZXIgZm9yIG1hcmtkb3duIGRvY3VtZW50cy4gKi8KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLwogIGZ1bmN0aW9uIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOwogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICBsZXQgbGlua3MgPSBbXTsKICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuCiAgICAgIChtZXRhZGF0YS50YWdzIHx8IFtdKS5mb3JFYWNoKHQgPT4gdGFncy5hZGQodC50YWcuc3RhcnRzV2l0aCgiIyIpID8gdC50YWcgOiAiIyIgKyB0LnRhZykpOwogICAgICAvLyBGcm9udC1tYXR0ZXIgZmlsZSB0YWdzLCBhbGlhc2VzLCBBTkQgZnJvbnRtYXR0ZXIgcHJvcGVydGllcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgZXh0cmFjdFRhZ3MobWV0YWRhdGEuZnJvbnRtYXR0ZXIpKSB7CiAgICAgICAgICAgICAgaWYgKCF0YWcuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7CiAgICAgICAgICAgICAgdGFncy5hZGQodGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkKICAgICAgICAgICAgICBhbGlhc2VzLmFkZChhbGlhcyk7CiAgICAgICAgICBsZXQgZnJvbnRGaWVsZHMgPSBwYXJzZUZyb250bWF0dGVyKG1ldGFkYXRhLmZyb250bWF0dGVyKTsKICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsKICAgICAgICAgICAgICBpZiAoa2V5ID09ICJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWRkIGZyb250bWF0dGVyIGxpbmtzIHRvIGxpbmtzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcykgewogICAgICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzIHx8IFtdKSB7CiAgICAgICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgY29uc3QgbGlua3NCeUxpbmUgPSB7fTsKICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3TGluay5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGZvciAobGV0IHJhd0VtYmVkIG9mIG1ldGFkYXRhLmVtYmVkcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3RW1iZWQubGluaywgdHJ1ZSwgcmF3RW1iZWQuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBNZXJnZSBmcm9udG1hdHRlciBmaWVsZHMgd2l0aCBwYXJzZWQgZmllbGRzLgogICAgICBsZXQgbWFya2Rvd25EYXRhID0gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cy5zcGxpdCgiXG4iKSwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOwogICAgICAvLyBTdHJpcCAicG9zaXRpb24iIGZyb20gZnJvbnRtYXR0ZXIgc2luY2UgaXQgaXMgT2JzaWRpYW4gZGV0ZXJtaW5lZC4KICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBtZXRhZGF0YS5mcm9udG1hdHRlciB8fCB7fTsKICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpCiAgICAgICAgICBkZWxldGUgZnJvbnRtYXR0ZXJbInBvc2l0aW9uIl07CiAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKHBhdGgsIHsKICAgICAgICAgIHRhZ3MsCiAgICAgICAgICBhbGlhc2VzLAogICAgICAgICAgbGlua3MsCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLAogICAgICAgICAgZmllbGRzOiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpLAogICAgICAgICAgZnJvbnRtYXR0ZXI6IGZyb250bWF0dGVyLAogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksCiAgICAgICAgICBtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0Lm10aW1lKSwKICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSwKICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwKICAgICAgfSk7CiAgfQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJ0YWdzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZyIpOwogICAgICByZXR1cm4gdGFnS2V5cwogICAgICAgICAgLm1hcChrID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKG1ldGFkYXRhW2tdLCAvWyxcc10rLykpCiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOwogIH0KICAvKiogRXh0cmFjdCBhbGlhc2VzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAgKi8KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgewogICAgICBsZXQgYWxpYXNLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXMiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXNlcyIpOwogICAgICBjb25zdCByZXN1bHQgPSBbXTsKICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgewogICAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YVtrZXldOwogICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi52YWx1ZS5tYXAodiA9PiAoIiIgKyB2KS50cmltKCkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5zcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyh2YWx1ZSwgLywvKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqLwogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7CiAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gW107CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICAgICAgIC5maWx0ZXIocyA9PiAhIXMpCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkKICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pOwogICAgICB9CiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4KICAgICAgcmV0dXJuICgiIiArIGRhdGEpCiAgICAgICAgICAuc3BsaXQob24pCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQogICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKQogICAgICAgICAgLmZpbHRlcih0ID0+IHQubGVuZ3RoID4gMCk7CiAgfQogIC8qKiBQYXJzZSByYXcgKG5ld2xpbmUtZGVsaW1pdGVkKSBtYXJrZG93biwgcmV0dXJuaW5nIGlubGluZSBmaWVsZHMsIGxpc3QgaXRlbXMsIGFuZCBvdGhlciBtZXRhZGF0YS4gKi8KICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gRXh0cmFjdCB0YXNrIGRhdGEgYW5kIGFwcGVuZCB0aGUgZ2xvYmFsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlbSB0byBvdXIgZmllbGRzLgogICAgICBsZXQgW2xpc3RzLCBleHRyYURhdGFdID0gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoIWZpZWxkcy5oYXMoa2V5KSkKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgZmllbGRzLmdldChrZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQKICAgICAgLy8gY2FsbG91dHMpLi4uIHRoaXMgbWVhbnMgd2UgbWlnaHQgc2VlIG1ldGFkYXRhIHR3aWNlLCBzbyBza2lwIHRoZW0gbm93LiBWZXJ5IGFubm95aW5nLgogICAgICBjb25zdCBsaXN0TGluZXNUb1NraXAgPSBuZXcgU2V0KCk7CiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgewogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lLmxpbmVDb3VudDsgaSsrKQogICAgICAgICAgICAgIGxpc3RMaW5lc1RvU2tpcC5hZGQobGluZS5saW5lICsgaSk7CiAgICAgIH0KICAgICAgLy8gT25seSBwYXJzZSBoZWFkaW5nIGFuZCBwYXJhZ3JhcGggZWxlbWVudHMgZm9yIGlubGluZSBmaWVsZHM7IHdlIHdpbGwgcGFyc2UgbGlzdCBtZXRhZGF0YSBzZXBhcmF0ZWx5LgogICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7CiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBmb3IgKGxldCBsaW5lbm8gPSBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmU7IGxpbmVubyA8PSBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lbm8rKykgewogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsKICAgICAgICAgICAgICBpZiAobGluZSA9PSB1bmRlZmluZWQgfHwgbGluZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAvLyBGYXN0IGJhaWwtb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLgogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsKICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsKICB9CiAgLy8gVE9ETzogQ29uc2lkZXIgdXNpbmcgYW4gYWN0dWFsIHBhcnNlciBpbiBsZWl1IG9mIGEgbW9yZSBleHBlbnNpdmUgcmVnZXguCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7CiAgLyoqCiAgICogUGFyc2UgbGlzdCBpdGVtcyBmcm9tIHRoZSBwYWdlICsgbWV0YWRhdGEuIFRoaXMgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHBhcnNpbmcgYWJvdmUgd2hhdGV2ZXIgT2JzaWRpYW4gcHJvdmlkZXMsCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuCiAgICovCiAgZnVuY3Rpb24gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50LCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGNhY2hlID0ge307CiAgICAgIC8vIFBsYWNlIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSBiZWZvcmUgcmVzb2x2aW5nIGNoaWxkcmVuICYgbWV0YWRhdGEgcmVsYXRpb25zaGlwcy4KICAgICAgZm9yIChsZXQgcmF3RWxlbWVudCBvZiBtZXRhZGF0YS5saXN0SXRlbXMgfHwgW10pIHsKICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuCiAgICAgICAgICBsZXQgcmF3TWF0Y2ggPSBMSVNUX0lURU1fUkVHRVguZXhlYyhjb250ZW50W3Jhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZV0pOwogICAgICAgICAgaWYgKCFyYXdNYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIC8vIEFuZCB0aGVuIHN0cmlwIHVubmVjZXNzYXJ5IHNwYWNpbmcgZnJvbSB0aGUgcmVtYWluaW5nIGxpbmVzLgogICAgICAgICAgbGV0IHRleHRQYXJ0cyA9IFtyYXdNYXRjaFszXV0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQogICAgICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSk7CiAgICAgICAgICBsZXQgdGV4dFdpdGhOZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIlxuIik7CiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7CiAgICAgICAgICAvLyBGaW5kIHRoZSBsaXN0IHRoYXQgd2UgYXJlIGEgcGFydCBvZiBieSBsaW5lLgogICAgICAgICAgbGV0IGNvbnRhaW5pbmdMaXN0SWQgPSAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pLmZpbmRJbmRleChzID0+IHMudHlwZSA9PSAibGlzdCIgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmCiAgICAgICAgICAgICAgcy5wb3NpdGlvbi5lbmQubGluZSA+PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUpOwogICAgICAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiB3ZSBiZWxvbmcgdG8gYXMgd2VsbC4KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsKICAgICAgICAgIGxldCBzZWN0aW9uTGluayA9IHNlY3Rpb25OYW1lID09PSB1bmRlZmluZWQgPyBMaW5rLmZpbGUocGF0aCkgOiBMaW5rLmhlYWRlcihwYXRoLCBzZWN0aW9uTmFtZSk7CiAgICAgICAgICBsZXQgY2xvc2VzdExpbmsgPSByYXdFbGVtZW50LmlkID09PSB1bmRlZmluZWQgPyBzZWN0aW9uTGluayA6IExpbmsuYmxvY2socGF0aCwgcmF3RWxlbWVudC5pZCk7CiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suCiAgICAgICAgICBjb25zdCBsaW5rcyA9IFtdOwogICAgICAgICAgZm9yIChsZXQgbGluZSA9IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZTsgbGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lKyspIHsKICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pCiAgICAgICAgICAgICAgICAgIGxpbmtzLnB1c2goLi4ubGlua3NCeUxpbmVbbGluZV0pOwogICAgICAgICAgfQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuCiAgICAgICAgICBsZXQgaXRlbSA9IG5ldyBMaXN0SXRlbSh7CiAgICAgICAgICAgICAgc3ltYm9sOiByYXdNYXRjaFsxXSwKICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywKICAgICAgICAgICAgICBsaW5rczogbGlua3MsCiAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbkxpbmssCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLAogICAgICAgICAgICAgIHRhZ3M6IGV4dHJhY3RUYWdzJDEodGV4dE5vTmV3bGluZSksCiAgICAgICAgICAgICAgbGluZTogcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsCiAgICAgICAgICAgICAgbGlzdDogY29udGFpbmluZ0xpc3RJZCA9PSAtMSA/IC0xIDogKG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKVtjb250YWluaW5nTGlzdElkXS5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIHBvc2l0aW9uOiByYXdFbGVtZW50LnBvc2l0aW9uLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICBibG9ja0lkOiByYXdFbGVtZW50LmlkLAogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpCiAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSByYXdFbGVtZW50LnBhcmVudDsKICAgICAgICAgIC8vIFNldCB1cCB0aGUgYmFzaWMgdGFzayBpbmZvcm1hdGlvbiBmb3Igbm93LCB0aG91Z2ggd2UgaGF2ZSB0byByZWNvbXB1dGUgYGZ1bGx5Q29tcHV0ZWRgIGxhdGVyLgogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgewogICAgICAgICAgICAgIGl0ZW0udGFzayA9IHsKICAgICAgICAgICAgICAgICAgc3RhdHVzOiByYXdFbGVtZW50LnRhc2ssCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLAogICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgICAgLy8gRXh0cmFjdCBpbmxpbmUgZmllbGRzOyBleHRyYWN0IGZ1bGwtbGluZSBmaWVsZHMgb25seSBpZiB3ZSBhcmUgTk9UIGEgdGFzay4KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHRyYWN0SW5saW5lRmllbGRzKHRleHROb05ld2xpbmUsIHRydWUpKQogICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGVsZW1lbnQsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgewogICAgICAgICAgICAgIGxldCBmdWxsTGluZSA9IGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHROb05ld2xpbmUpOwogICAgICAgICAgICAgIGlmIChmdWxsTGluZSkKICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhY2hlW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIC8vIFRyZWUgdXBkYXRpbmcgcGFzc2VzLiBVcGRhdGUgY2hpbGQgbGlzdHMuIFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byBwYXJlbnQgdGFza3MuIFVwZGF0ZSB0YXNrIGBmdWxseUNvbXBsZXRlZGAuCiAgICAgIGxldCBsaXRlcmFscyA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsKICAgICAgICAgIC8vIFBhc3MgMTogVXBkYXRlIGNoaWxkIGxpc3RzLgogICAgICAgICAgaWYgKGxpc3RJdGVtLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIGxpc3RJdGVtLnBhcmVudCBpbiBjYWNoZSkgewogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOwogICAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKGxpc3RJdGVtLmxpbmUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4KICAgICAgICAgIGlmICghbGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIG1lcmdlRmllbGRHcm91cHMobGl0ZXJhbHMsIGxpc3RJdGVtLmZpZWxkcyk7CiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUKICAgICAgICAgICAgICAvLyBtb3JlIGludHVpdGl2ZSBiZWhhdmlvci4gRm9yIG5vdywgdGhvdWdoLCB3ZSB3aWxsIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljLgogICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhcm9vdCAmJiAhcm9vdC50YXNrKSByb290ID0gY2FjaGVbcm9vdC5wYXJlbnQgPz8gLTFdOwoKICAgICAgICAgICAgICAvLyBJZiB0aGUgcm9vdCBpcyBudWxsLCBhcHBlbmQgdGhpcyBtZXRhZGF0YSB0byB0aGUgcm9vdDsgb3RoZXJ3aXNlLCBhcHBlbmQgdG8gdGhlIHRhc2suCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAqLwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQogICAgICAgICAgLy8gREZTIHVzaW5nIHRoZSBjaGlsZHJlbiBJRHMsIGJ1dCBpdCdzIHByb2JhYmx5IGZpbmUuCiAgICAgICAgICBpZiAobGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhY3VycikgewogICAgICAgICAgICAgICAgICBpZiAoY3Vyci50YXNrKQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOwogICAgICAgICAgICAgICAgICBjdXJyID0gY2FjaGVbY3Vyci5wYXJlbnQgPz8gLTFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107CiAgfQogIC8qKiBBdHRlbXB0IHRvIGZpbmQgYSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBmcm9tIG1ldGFkYXRhIG9yIGZpbGVuYW1lcy4gKi8KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsKICAgICAgZm9yIChsZXQga2V5IG9mIGZpZWxkcy5rZXlzKCkpIHsKICAgICAgICAgIGlmICghKGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXRlIiB8fCBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAiZGF5IikpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWVsZHMuZ2V0KGtleSk7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiBWYWx1ZXMuaXNEYXRlKHZhbHVlWzBdKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0xpbmsodmFsdWUpKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5zdWJwYXRoID8/ICIiKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5kaXNwbGF5ID8/ICIiKTsKICAgICAgICAgICAgICBpZiAoZGF0ZSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7CiAgfQogIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGZyb250bWF0dGVyIGludG8gZmllbGRzLiBXZSBoYXZlIHRvIGRhbmNlIGFyb3VuZCBZQU1MIHN0cnVjdHVyZS4gKi8KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGcm9udG1hdHRlcihjaGlsZCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWU7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZyb250bWF0dGVyKG9iamVjdFtrZXldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRVhQUkVTU0lPTi5kYXRlLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IEVYUFJFU1NJT04uZHVyYXRpb24ucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IEVYUFJFU1NJT04uZW1iZWRMaW5rLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBsaW5rUGFyc2UudmFsdWU7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuCiAgICAgIHJldHVybiBudWxsOwogIH0KICAvKiogQWRkIGEgcGFyc2VkIGlubGluZSBmaWVsZCB0byB0aGUgb3V0cHV0IG1hcC4gKi8KICBmdW5jdGlvbiBhZGRSYXdJbmxpbmVGaWVsZChmaWVsZCwgb3V0cHV0KSB7CiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7CiAgfQogIC8qKiBBZGQgYSByYXcgaW5saW5lIGZpZWxkIHRvIGFuIG91dHB1dCBtYXAsIGNhbm9uaWNhbGl6aW5nIGFzIG5lZWRlZC4gKi8KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsKICAgICAgaWYgKCFvdXRwdXQuaGFzKGtleSkpCiAgICAgICAgICBvdXRwdXQuc2V0KGtleSwgW3ZhbHVlXSk7CiAgICAgIGVsc2UKICAgICAgICAgIG91dHB1dC5nZXQoa2V5KT8ucHVzaCh2YWx1ZSk7CiAgfQogIC8qKiBHaXZlbiBhIHJhdyBsaXN0IG9mIGlubGluZSBmaWVsZCB2YWx1ZXMsIGFkZCBub3JtYWxpemVkIGtleXMgYW5kIHNxdWFzaCB0aGVtLiAqLwogIGZ1bmN0aW9uIGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcykgewogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuCiAgICAgIGxldCBub3JtYWxpemVkID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOwogICAgICAgICAgaWYgKG5vcm1LZXkgPT0gIiIgfHwgZmllbGRzLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gQ29tYmluZSBub3JtYWxpemVkICsgbm9ybWFsIGtleXMuCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIGZpZWxkcyk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgbm9ybWFsaXplZCk7CiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4KICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGludGVyaW0uZW50cmllcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlWzBdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBDb3B5IGFsbCBmaWVsZHMgb2YgJ3NvdXJjZScgaW50byAndGFyZ2V0Jy4gKi8KICBmdW5jdGlvbiBtZXJnZUZpZWxkR3JvdXBzKHRhcmdldCwgc291cmNlKSB7CiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7CiAgICAgICAgICBpZiAoIXRhcmdldC5oYXMoa2V5KSkKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgc291cmNlLmdldChrZXkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgdGFyZ2V0LmdldChrZXkpLmNvbmNhdChzb3VyY2UuZ2V0KGtleSkpKTsKICAgICAgfQogIH0KICAvKiogRmluZCB0aGUgaGVhZGVyIHRoYXQgaXMgbW9zdCBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuICovCiAgZnVuY3Rpb24gZmluZFByZXZpb3VzSGVhZGVyKGxpbmUsIGhlYWRlcnMpIHsKICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBpZiAoaGVhZGVyc1swXS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGxldCBpbmRleCA9IGhlYWRlcnMubGVuZ3RoIC0gMTsKICAgICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaGVhZGVyc1tpbmRleF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICBpbmRleC0tOwogICAgICByZXR1cm4gaGVhZGVyc1tpbmRleF0uaGVhZGluZzsKICB9CgogIC8qKiBBY3R1YWwgaW1wb3J0IGltcGxlbWVudGF0aW9uIGJhY2tlbmQuIFRoaXMgbXVzdCByZW1haW4gc2VwYXJhdGUgZnJvbSBgaW1wb3J0LWVudHJ5YCBzaW5jZSBpdCBpcyB1c2VkIHdpdGhvdXQgd2ViIHdvcmtlcnMuICovCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsKICAgICAgcmV0dXJuIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKTsKICB9CgogIC8qKiBTaW1wbGlmaWVzIHBhc3NpbmcgZGF0YXZpZXcgdmFsdWVzIGFjcm9zcyB0aGUgSlMgd2ViIHdvcmtlciBiYXJyaWVyLiAqLwogIHZhciBUcmFuc2ZlcmFibGU7CiAgKGZ1bmN0aW9uIChUcmFuc2ZlcmFibGUpIHsKICAgICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2VyaWFsaXplci1mcmllbmRseSB0cmFuc2ZlcmFibGUgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgewogICAgICAgICAgLy8gSGFuZGxlIHNpbXBsZSB1bml2ZXJzYWwgdHlwZXMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOwogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IHdyYXBwZWQudmFsdWUuem9uZS5lcXVhbHMoU3lzdGVtWm9uZS5pbnN0YW5jZSkgPyB1bmRlZmluZWQgOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImR1cmF0aW9uIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAodiA9PiB0cmFuc2ZlcmFibGUodikpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZmVyYWJsZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZSA9IHRyYW5zZmVyYWJsZTsKICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICAgICAgZnVuY3Rpb24gdmFsdWUodHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICBpZiAodHJhbnNmZXJhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHRyYW5zZmVyYWJsZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIHJlYWwuc2V0KHZhbHVlKGtleSksIHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRyYW5zZmVyYWJsZSkKICAgICAgICAgICAgICAgICAgcmVhbC5hZGQodmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0cmFuc2ZlcmFibGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlRGF0YSA9IHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZURhdGEsIHsgem9uZTogZGF0ZU9wdHMuem9uZSB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnJlY29nbml6ZWQgdHJhbnNmZXIgdHlwZSAnJHt0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXX0nYCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZSh2YWwpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlOwogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOwogIH0pKFRyYW5zZmVyYWJsZSB8fCAoVHJhbnNmZXJhYmxlID0ge30pKTsKCiAgLyoqIEVudHJ5LXBvaW50IHNjcmlwdCB1c2VkIGJ5IHRoZSBpbmRleCBhcyBhIHdlYiB3b3JrZXIuICovCiAgLyoqIEFuIGltcG9ydCB3aGljaCBjYW4gZmFpbCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIGNhdWdodCBieSB0aGUgaGFuZGxlci4gKi8KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgaWYgKG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgaW5kZXggZmlsZSwgc2luY2UgaXQgaGFzIG5vIE9ic2lkaWFuIGZpbGUgbWV0YWRhdGEuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogIH0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7CiAgICAgIHRyeSB7CiAgICAgICAgICBsZXQgeyBwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEgfSA9IGV2dC5kYXRhOwogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHBhdGg6IGV2dC5kYXRhLnBhdGgsIHJlc3VsdDogVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZShyZXN1bHQpIH0pOwogICAgICB9CiAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsCiAgICAgICAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICAgICAgICAgICRlcnJvcjogYEZhaWxlZCB0byBpbmRleCBmaWxlOiAke2V2dC5kYXRhLnBhdGh9OiAke2Vycm9yfWAsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCn0pKCk7Cgo=', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkc0luTGl2ZVByZXZpZXc6IHRydWUsCiAgICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogImRhdGF2aWV3anMiLAogICAgICB9LAogIH0pOwoKICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgU3VjY2VzcyB7CiAgICAgIHZhbHVlOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTsKICAgICAgfQogICAgICBtYXAoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpOwogICAgICB9CiAgICAgIGZsYXRNYXAoZikgewogICAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7CiAgICAgIH0KICAgICAgbWFwRXJyKGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoc3VjYyk7CiAgICAgIH0KICAgICAgb3JFbHNlKF92YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogIH0KICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgRmFpbHVyZSB7CiAgICAgIGVycm9yOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHZhbDEgPSBudWxsOwogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwyID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7CiAgICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7CiAgICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LgogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkKICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpOwogICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciA/PyAoKHgpID0+IHgpOwogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4KICAgICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7CiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLgogICAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7CiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLgogICAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gIiIpLmxvY2FsZUNvbXBhcmUobGluazIuc3VicGF0aCA/PyAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2aWV3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlOwogICAgICB9CiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7CiAgICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzICJ0cnV0aHkiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqLwogICAgICBmdW5jdGlvbiBpc1RydXRoeShmaWVsZCkgewogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOwogICAgICAgICAgaWYgKCF3cmFwcGVkKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHdyYXBwZWQudmFsdWUpLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc1RydXRoeSA9IGlzVHJ1dGh5OwogICAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7CiAgICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChmaWVsZC5tYXAodiA9PiBkZWVwQ29weSh2KSkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5kZWVwQ29weSA9IGRlZXBDb3B5OwogICAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOwogICAgICB9CiAgICAgIFZhbHVlcy5pc1N0cmluZyA9IGlzU3RyaW5nOwogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOwogICAgICBmdW5jdGlvbiBpc0RhdGUodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZVRpbWU7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRGF0ZSA9IGlzRGF0ZTsKICAgICAgZnVuY3Rpb24gaXNEdXJhdGlvbih2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247CiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsKICAgICAgZnVuY3Rpb24gaXNBcnJheSh2YWwpIHsKICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzQXJyYXkgPSBpc0FycmF5OwogICAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47CiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7CiAgICAgIGZ1bmN0aW9uIGlzV2lkZ2V0KHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIFdpZGdldDsKICAgICAgfQogICAgICBWYWx1ZXMuaXNXaWRnZXQgPSBpc1dpZGdldDsKICAgICAgZnVuY3Rpb24gaXNIdG1sKHZhbCkgewogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmlzSHRtbCA9IGlzSHRtbDsKICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhdmlldy1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqLwogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsKICAgICAgICAgIHJldHVybiAodHlwZW9mIHZhbCA9PSAib2JqZWN0IiAmJgogICAgICAgICAgICAgICFpc0h0bWwodmFsKSAmJgogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmCiAgICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJgogICAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiYKICAgICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJgogICAgICAgICAgICAgICFpc051bGwodmFsKSk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzT2JqZWN0ID0gaXNPYmplY3Q7CiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAiZnVuY3Rpb24iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKICB9KShWYWx1ZXMgfHwgKFZhbHVlcyA9IHt9KSk7CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gR3JvdXBpbmdzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgdmFyIEdyb3VwaW5nczsKICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgewogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZ3JvdXAgZW50cnkgaXMgYSBzdGFuZGFsb25lIHZhbHVlLCBvciBhIGdyb3VwaW5nIG9mIHN1Yi1lbnRyaWVzLiAqLwogICAgICBmdW5jdGlvbiBpc0VsZW1lbnRHcm91cChlbnRyeSkgewogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsKICAgICAgfQogICAgICBHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAgPSBpc0VsZW1lbnRHcm91cDsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovCiAgICAgIGZ1bmN0aW9uIGlzR3JvdXBpbmcoZW50cnkpIHsKICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzR3JvdXBpbmcgPSBpc0dyb3VwaW5nOwogICAgICAvKiogQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJlY3Vyc2l2ZSBncm91cGluZy4gKi8KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsKICAgICAgICAgIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSAwOwogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gY291bnQoc3ViZ3JvdXAucm93cyk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmNvdW50ID0gY291bnQ7CiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOwogIC8vLy8vLy8vLy8KICAvLyBMSU5LIC8vCiAgLy8vLy8vLy8vLwogIC8qKiBUaGUgT2JzaWRpYW4gJ2xpbmsnLCB1c2VkIGZvciB1bmlxdWVseSBkZXNjcmliaW5nIGEgZmlsZSwgaGVhZGVyLCBvciBibG9jay4gKi8KICBjbGFzcyBMaW5rIHsKICAgICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi8KICAgICAgcGF0aDsKICAgICAgLyoqIFRoZSBkaXNwbGF5IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLiAqLwogICAgICBkaXNwbGF5OwogICAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqLwogICAgICBzdWJwYXRoOwogICAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKCEpPyAqLwogICAgICBlbWJlZDsKICAgICAgLyoqIFRoZSB0eXBlIG9mIHRoaXMgbGluaywgd2hpY2ggZGV0ZXJtaW5lcyB3aGF0ICdzdWJwYXRoJyByZWZlcnMgdG8sIGlmIGFueXRoaW5nLiAqLwogICAgICB0eXBlOwogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUuICovCiAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayh7CiAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICBlbWJlZCwKICAgICAgICAgICAgICBkaXNwbGF5LAogICAgICAgICAgICAgIHN1YnBhdGg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgaW5mZXIobGlua3BhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjXiIpOwogICAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlua3BhdGguaW5jbHVkZXMoIiMiKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLgogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLAogICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlIGFuZCBibG9jayBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBibG9jayhwYXRoLCBibG9ja0lkLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogYmxvY2tJZCwKICAgICAgICAgICAgICB0eXBlOiAiYmxvY2siLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsKICAgICAgfQogICAgICBjb25zdHJ1Y3RvcihmaWVsZHMpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTsKICAgICAgfQogICAgICAvKiogQ2hlY2tzIGZvciBsaW5rIGVxdWFsaXR5IChpLmUuLCB0aGF0IHRoZSBsaW5rcyBhcmUgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZXhhY3QgbG9jYXRpb24pLiAqLwogICAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovCiAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovCiAgICAgIHRvT2JqZWN0KCkgewogICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9OwogICAgICB9CiAgICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi8KICAgICAgLy9AdHMtaWdub3JlOyBlcnJvciBhcHBlYXJlZCBhZnRlciB1cGRhdGluZyBPYnNpZGlhbiB0byAwLjE1LjQ7IGl0IGFsc28gdXBkYXRlZCBvdGhlciBwYWNrYWdlcyBidXQgZGlkbid0IHNheSB3aGljaAogICAgICB3aXRoUGF0aChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovCiAgICAgIHdpdGhEaXNwbGF5KGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWMgaGVhZGVyLiAqLwogICAgICB3aXRoSGVhZGVyKGhlYWRlcikgewogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqLwogICAgICB0b0ZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMucGF0aCwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLwogICAgICB0b0VtYmVkKCkgewogICAgICAgICAgaWYgKHRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7CiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi8KICAgICAgZnJvbUVtYmVkKCkgewogICAgICAgICAgaWYgKCF0aGlzLmVtYmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgbGluayA9IG5ldyBMaW5rKHRoaXMpOwogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLwogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOwogICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOwogICAgICAgICAgfQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8KICAgICAgb2JzaWRpYW5MaW5rKCkgewogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlQWxsKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZUFsbCgifCIsICJcXHwiKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2VBbGwoInwiLCAiXFx8Iik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgICR3aWRnZXQ7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGtleTsKICAgICAgdmFsdWU7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIHVybDsKICAgICAgZGlzcGxheTsKICAgICAgY29uc3RydWN0b3IodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOwogICAgICAgICAgdGhpcy51cmwgPSB1cmw7CiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5OwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLmRpc3BsYXkgPz8gdGhpcy51cmx9XSgke3RoaXMudXJsfSlgOwogICAgICB9CiAgfQogIHZhciBXaWRnZXRzOwogIChmdW5jdGlvbiAoV2lkZ2V0cykgewogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gbGlzdFBhaXIoa2V5LCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaXN0UGFpcldpZGdldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICBXaWRnZXRzLmxpc3RQYWlyID0gbGlzdFBhaXI7CiAgICAgIC8qKiBDcmVhdGUgYW4gZXh0ZXJuYWwgbGluayB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBPYnNpZGlhbiBsaW5rLiAqLwogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IEV4dGVybmFsTGlua1dpZGdldCh1cmwsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYSBsaXN0IHBhaXIgd2lkZ2V0LiAqLwogICAgICBmdW5jdGlvbiBpc0xpc3RQYWlyKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsKICAgICAgfQogICAgICBXaWRnZXRzLmlzTGlzdFBhaXIgPSBpc0xpc3RQYWlyOwogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsKICAgICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhbnkga2luZCBvZiBidWlsdC1pbiB3aWRnZXQgd2l0aCBzcGVjaWFsIHJlbmRlcmluZyBoYW5kbGluZy4gKi8KICAgICAgZnVuY3Rpb24gaXNCdWlsdGluKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNCdWlsdGluID0gaXNCdWlsdGluOwogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovCiAgdmFyIEZpZWxkczsKICAoZnVuY3Rpb24gKEZpZWxkcykgewogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07CiAgICAgIH0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7CiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4OwogICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8KICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOwogICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsKICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsKICAgICAgfQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7CiAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsKICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7CiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7CiAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7CiAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7CiAgICAgIH0KICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7CiAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7CiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLwogIC8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBzb3VyY2VzLiAqLwogIHZhciBTb3VyY2VzOwogIChmdW5jdGlvbiAoU291cmNlcykgewogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZyb20gYSB0YWcuICovCiAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsKICAgICAgfQogICAgICBTb3VyY2VzLnRhZyA9IHRhZzsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07CiAgICAgIH0KICAgICAgU291cmNlcy5jc3YgPSBjc3Y7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHVuZGVyIGEgZm9sZGVyIHByZWZpeC4gKi8KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07CiAgICAgIH0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHdoaWNoIGxpbmsgdG8vZnJvbSBhIGdpdmVuIGZpbGUuICovCiAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07CiAgICAgIH0KICAgICAgU291cmNlcy5saW5rID0gbGluazsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovCiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3A6ICImIiwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCB0YWtlcyB0aGUgdW5pb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIG9yKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMub3IgPSBvcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8KICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlIiwgY2hpbGQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gZW1wdHkoKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07CiAgICAgIH0KICAgICAgU291cmNlcy5lbXB0eSA9IGVtcHR5OwogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8KICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7CiAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsKICAgICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwKICAgICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwKICAgICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICB9OwogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8KICBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7CiAgICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSwKICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksCiAgICAgIHllc3RlcmRheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLAogICAgICB0b21vcnJvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgICJzdGFydC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLAogICAgICAiZW5kLW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigieWVhciIpLAogICAgICAiZW5kLW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLAogICAgICAic3RhcnQtb2YtbW9udGgiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksCiAgfTsKICAvKioKICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudAogICAqIHRvIGFjY2Vzcy4KICAgKi8KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgLyoqIFNwbGl0IG9uIHVuZXNjYXBlZCBwaXBlcyBpbiBhbiBpbm5lciBsaW5rLiAqLwogIGZ1bmN0aW9uIHNwbGl0T25VbmVzY2FwZWRQaXBlKGxpbmspIHsKICAgICAgbGV0IHBpcGUgPSAtMTsKICAgICAgd2hpbGUgKChwaXBlID0gbGluay5pbmRleE9mKCJ8IiwgcGlwZSArIDEpKSA+PSAwKSB7CiAgICAgICAgICBpZiAocGlwZSA+IDAgJiYgbGlua1twaXBlIC0gMV0gPT0gIlxcIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcfC9nLCAifCIpLCBsaW5rLnN1YnN0cmluZyhwaXBlICsgMSldOwogICAgICB9CiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07CiAgfQogIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsKICAgICAgbGV0IFtsaW5rLCBkaXNwbGF5XSA9IHNwbGl0T25VbmVzY2FwZWRQaXBlKHJhd2xpbmspOwogICAgICByZXR1cm4gTGluay5pbmZlcihsaW5rLCBmYWxzZSwgZGlzcGxheSk7CiAgfQogIC8qKiBDcmVhdGUgYSBsZWZ0LWFzc29jaWF0aXZlIGJpbmFyeSBwYXJzZXIgd2hpY2ggcGFyc2VzIHRoZSBnaXZlbiBzdWItZWxlbWVudCBhbmQgc2VwYXJhdG9yLiBIYW5kbGVzIHdoaXRlc3BhY2UuICovCiAgZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGFyc2VyKGNoaWxkLCBzZXAsIGNvbWJpbmUpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gewogICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSk7CiAgfQogIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7CiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuY3VzdG9tKChzdWNjZXNzLCBmYWlsdXJlKSA9PiB7CiAgICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBmdW5jKHJlc3VsdC52YWx1ZSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTsKICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9OwogICAgICB9KTsKICB9CiAgY29uc3QgRVhQUkVTU0lPTiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jcmVhdGVMYW5ndWFnZSh7CiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4KICAgICAgbnVtYmVyOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkKICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwKICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKQogICAgICAgICAgLnRoZW4ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm5vbmVPZignIlxcJykpCiAgICAgICAgICAuYXRMZWFzdCgwKQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpCiAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCciJykpCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksCiAgICAgIGVzY2FwZUNoYXJhY3RlcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJcXCIpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55KQogICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsKICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykKICAgICAgICAgICAgICByZXR1cm4gJyInOwogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpCiAgICAgICAgICAgICAgcmV0dXJuICJcXCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOwogICAgICB9KSwKICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvdHJ1ZXxmYWxzZXxUcnVlfEZhbHNlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpID09ICJ0cnVlIikKICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwKICAgICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuCiAgICAgIHRhZzogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksCiAgICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuCiAgICAgIGlkZW50aWZpZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xwe0xldHRlcn0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLAogICAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uCiAgICAgIGxpbms6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQogICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkKICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkKICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuCiAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHsKICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbDsKICAgICAgfSkuZGVzYygiZmlsZSBsaW5rIiksCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLgogICAgICBiaW5hcnlQbHVzTWludXM6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCt8LS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLAogICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLgogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCp8XC98JS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwKICAgICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJz49JyBvciAnPD0nIG9yICchPScgb3IgJz0nIG9yICc+JyBvciAnPCciKSwKICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQogICAgICAgICAgLm1hcChzdHIgPT4gewogICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQogICAgICAgICAgICAgIHJldHVybiAiJiI7CiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQogICAgICAgICAgICAgIHJldHVybiAifCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfSkKICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLgogICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7CiAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICBkYXRlU2hvcnRoYW5kOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZGF0ZTogcSA9PiBjaGFpbk9wdChxLnJvb3REYXRlLCAoeW0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgZGF5KSA9PiB5bS5zZXQoeyBkYXk6IE51bWJlci5wYXJzZUludChkYXkpIH0pKSwgKHltZCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSwgKHltZGgpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgbWludXRlKSA9PiB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSkpLCAoeW1kaG0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgc2Vjb25kKSA9PiB5bWRobS5zZXQoeyBzZWNvbmQ6IE51bWJlci5wYXJzZUludChzZWNvbmQpIH0pKSwgKHltZGhtcykgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi4iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MKICAgICAgKSwgKGR0KSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKyIpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWiIpLCAoKSA9PiBkdC5zZXRab25lKCJ1dGMiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOUEtWmEteistXC9dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQogICAgICAgICAgLmFzc2VydCgoZHQpID0+IGR0LmlzVmFsaWQsICJ2YWxpZCBkYXRlIikKICAgICAgICAgIC5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwKICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4KICAgICAgZGF0ZVBsdXM6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLCBxLmRhdGUpLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmQiKSwKICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLgogICAgICBkdXJhdGlvblR5cGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUykKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQogICAgICAgICAgLm1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKSksCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5udW1iZXIsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PiBEVVJBVElPTl9UWVBFU1t0XS5tYXBVbml0cyh4ID0+IHggKiBjb3VudCkpCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5vcihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpCiAgICAgICAgICAubWFwKGR1cmF0aW9ucyA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKQogICAgICAgICAgLmRlc2MoImR1cmF0aW9uIGxpa2UgNGhyMm1pbiIpLAogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLgogICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm51bGwiKSwKICAgICAgLy8gU291cmNlIHBhcnNpbmcuCiAgICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLAogICAgICBjc3ZTb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuc3RyaW5nLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwKICAgICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksCiAgICAgIGxpbmtPdXRnb2luZ1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm91dGdvaW5nKCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmxpbmssIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwKICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksCiAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIG5lZ2F0ZVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLAogICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5wYXJlbnNTb3VyY2UsIHEubmVnYXRlU291cmNlLCBxLmxpbmtPdXRnb2luZ1NvdXJjZSwgcS5saW5rSW5jb21pbmdTb3VyY2UsIHEuZm9sZGVyU291cmNlLCBxLnRhZ1NvdXJjZSwgcS5jc3ZTb3VyY2UpLAogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksCiAgICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLAogICAgICAvLyBGaWVsZCBwYXJzaW5nLgogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcgogICAgICAgICAgLmNoYWluKHIgPT4gewogICAgICAgICAgaWYgKEtFWVdPUkRTLmluY2x1ZGVzKHIudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmZhaWwoIlZhcmlhYmxlIGZpZWxkcyBjYW5ub3QgYmUgYSBrZXl3b3JkICgiICsgS0VZV09SRFMuam9pbigiIG9yICIpICsgIikiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOwogICAgICAgICAgfQogICAgICB9KQogICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksCiAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksCiAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImRhdGUoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpKS5kZXNjKCJkYXRlIiksCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJkdXIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKSkuZGVzYygiZHVyYXRpb24iKSwKICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksCiAgICAgIGxpbmtGaWVsZDogcSA9PiBxLmxpbmsubWFwKGYgPT4gRmllbGRzLmxpdGVyYWwoZikpLAogICAgICBsaXN0RmllbGQ6IHEgPT4gcS5maWVsZAogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIikpKQogICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLAogICAgICBvYmplY3RGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllci5vcihxLnN0cmluZyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9OwogICAgICB9KQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoInsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJ9IikpKQogICAgICAgICAgLm1hcCh2YWxzID0+IHsKICAgICAgICAgIGxldCByZXMgPSB7fTsKICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHZhbHMpCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7CiAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwKICAgICAgYXRvbUlubGluZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kYXRlLCBxLmR1cmF0aW9uLm1hcChkID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSwgcS5zdHJpbmcsIHEudGFnLCBxLmVtYmVkTGluaywgcS5ib29sLCBxLm51bWJlciwgcS5yYXdOdWxsKSwKICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwKICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+IFtmXS5jb25jYXQobCkpLCBxLmF0b21JbmxpbmVGaWVsZCksCiAgICAgIGF0b21GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KAogICAgICAvLyBQbGFjZSBlbWJlZCBsaW5rcyBhYm92ZSBuZWdhdGVkIGZpZWxkcyBhcyB0aGV5IGFyZSB0aGUgc3BlY2lhbCBwYXJzZXIgY2FzZSAnIVtbdGhpbmddXScgYW5kIGFyZSBnZW5lcmFsbHkgdW5hbWJpZ3VvdXMuCiAgICAgIHEuZW1iZWRMaW5rLm1hcChsID0+IEZpZWxkcy5saXRlcmFsKGwpKSwgcS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLAogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOwogICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkgewogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgRmllbGRzLmxpdGVyYWwocG9zdC5maWVsZCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSksCiAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksCiAgICAgIHBhcmVuc0ZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLAogICAgICBsYW1iZGFGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllcgogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07CiAgICAgIH0pLAogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9OwogICAgICB9KSwKICAgICAgaW5kZXhQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9OwogICAgICB9KSwKICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXywgXzEsIGZpZWxkcywgXzIsIF8zKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsKICAgICAgfSksCiAgICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLgogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlDb21wYXJlRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzRmllbGQsIHEuYmluYXJ5Q29tcGFyZU9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCwKICAgICAgZmllbGQ6IHEgPT4gcS5iaW5hcnlPcEZpZWxkLAogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLwogIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8KICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsKICAgICAgIlsiOiAiXSIsCiAgICAgICIoIjogIikiLAogIH0pOwogIC8qKgogICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwKICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLgogICAqLwogIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgewogICAgICBsZXQgbmVzdGluZyA9IDA7CiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOwogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuCiAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy4KICAgICAgICAgIGlmIChlc2NhcGVkKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikKICAgICAgICAgICAgICBuZXN0aW5nKys7CiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQogICAgICAgICAgICAgIG5lc3RpbmctLTsKICAgICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdGhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLgogICAgICAgICAgaWYgKG5lc3RpbmcgPCAwKQogICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9OwogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBGaW5kIHRoZSAnOjonIHNlcGFyYXRvciBpbiBhbiBpbmxpbmUgZmllbGQuICovCiAgZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCkgewogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsKICAgICAgaWYgKHNlcCA8IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9OwogIH0KICAvKiogVHJ5IHRvIGNvbXBsZXRlbHkgcGFyc2UgYW4gaW5saW5lIGZpZWxkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gQXNzdW1lcyBgc3RhcnRgIGlzIG9uIGEgd3JhcHBpbmcgY2hhcmFjdGVyLiAqLwogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7CiAgICAgIGxldCBvcGVuID0gbGluZS5jaGFyQXQoc3RhcnQpOwogICAgICBsZXQga2V5ID0gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCArIDEpOwogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBGYWlsIHRoZSBtYXRjaCBpZiB3ZSBmaW5kIGFueSBzZXBhcmF0b3IgY2hhcmFjdGVycyAobm90IGFsbG93ZWQgaW4ga2V5cykuCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7CiAgICAgICAgICBpZiAoa2V5LmtleS5pbmNsdWRlcyhzZXApKQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7CiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleToga2V5LmtleSwKICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwKICAgICAgICAgIHN0YXJ0OiBzdGFydCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IGtleS52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwKICAgICAgICAgIHdyYXBwaW5nOiBvcGVuLAogICAgICB9OwogIH0KICAvKiogUGFyc2UgYSB0ZXh0dWFsIGlubGluZSBmaWVsZCB2YWx1ZSBpbnRvIHNvbWV0aGluZyB3ZSBjYW4gd29yayB3aXRoLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5saW5lVmFsdWUodmFsdWUpIHsKICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuCiAgICAgIC8vIE51bGwgaXMgYWxzbyBhIG1vcmUgdW5pdmVyc2FsIHR5cGUgdG8gZGVhbCB3aXRoIHRoYW4gc3RyaW5ncywgc2luY2UgYWxsIGZ1bmN0aW9ucyBhY2NlcHQgbnVsbHMuCiAgICAgIGlmICh2YWx1ZS50cmltKCkgPT0gIiIpCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuCiAgICAgIC8vIElubGluZSBmaWVsZCBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZDsgaW5saW5lIGFycmF5IG9iamVjdHMgaGF2ZSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJzZXIKICAgICAgLy8gc2VwYXJhdGVseS4KICAgICAgbGV0IGlubGluZSA9IEVYUFJFU1NJT04uaW5saW5lRmllbGQucGFyc2UodmFsdWUpOwogICAgICBpZiAoaW5saW5lLnN0YXR1cykKICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7CiAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICB9CiAgLyoqIEV4dHJhY3RzIGlubGluZSBmaWVsZHMgb2YgdGhlIGZvcm0gJ1trZXk6OiB2YWx1ZV0nIGZyb20gYSBsaW5lIG9mIHRleHQuIFRoaXMgaXMgZG9uZSBpbiBhIHJlbGF0aXZlbHkKICAgKiAicm9idXN0IiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczoKICAgKgogICAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouCiAgICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS4KICAgKi8KICBmdW5jdGlvbiBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUsIGluY2x1ZGVUYXNrRmllbGRzID0gZmFsc2UpIHsKICAgICAgbGV0IGZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsKICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIpOwogICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkgewogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOwogICAgICAgICAgICAgIGlmICghcGFyc2VkRmllbGQpIHsKICAgICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7CiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykKICAgICAgICAgIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpKTsKICAgICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTsKICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAoaSA9PSAwIHx8IGZpbHRlcmVkRmllbGRzW2ZpbHRlcmVkRmllbGRzLmxlbmd0aCAtIDFdLmVuZCA8IGZpZWxkc1tpXS5zdGFydCkgewogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7CiAgfQogIC8qKiBWYWxpZGF0ZXMgdGhhdCBhIHJhdyBmaWVsZCBuYW1lIGhhcyBhIHZhbGlkIGZvcm0uICovCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAidSIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpCiAgICAgIC5tYW55KCkKICAgICAgLm1hcChwYXJ0cyA9PiBwYXJ0cy5qb2luKCIiKSk7CiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXjAtOVx3XHB7TGV0dGVyfV0qL3UpCiAgICAgIC50aGVuKEZVTExfTElORV9LRVlfUEFSVCkKICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW19cKn5gXSovdSkpOwogIC8qKiBBdHRlbXB0IHRvIGV4dHJhY3QgYSBmdWxsLWxpbmUgZmllbGQgKEtleTo6IFZhbHVlIGNvbnN1bWluZyB0aGUgZW50aXJlIGNvbnRlbnQgbGluZSkuICovCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgewogICAgICBsZXQgc2VwID0gZmluZFNlcGFyYXRvcih0ZXh0LCAwKTsKICAgICAgaWYgKCFzZXApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBXZSBuZWVkIHRvIHBvc3QtcHJvY2VzcyB0aGUga2V5IHRvIGRyb3AgdW5uZWNlc3Nhcnkgb3BlbmluZyBhbm5vdGF0aW9ucyBhcyB3ZWxsIGFzCiAgICAgIC8vIGRyb3Agc3Vycm91bmRpbmcgTWFya2Rvd24uCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7CiAgICAgIGlmICghcmVhbEtleS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4gewogICAgICAgICAga2V5OiByZWFsS2V5LnZhbHVlLAogICAgICAgICAgdmFsdWU6IHRleHQuc3Vic3RyaW5nKHNlcC52YWx1ZUluZGV4KS50cmltKCksCiAgICAgICAgICBzdGFydDogMCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IHNlcC52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCwKICAgICAgfTsKICB9CiAgY29uc3QgQ1JFQVRFRF9EQVRFX1JFR0VYID0gL1x1ezI3OTV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXHV7MjcwNX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgU0NIRURVTEVEX0RBVEVfUkVHRVggPSAvW1x1ezIzRjN9XHV7MjMxQn1dXHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IEVNT0pJX1JFR0VYRVMgPSBbCiAgICAgIHsgcmVnZXg6IENSRUFURURfREFURV9SRUdFWCwga2V5OiAiY3JlYXRlZCIgfSwKICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sCiAgICAgIHsgcmVnZXg6IFNDSEVEVUxFRF9EQVRFX1JFR0VYLCBrZXk6ICJzY2hlZHVsZWQiIH0sCiAgICAgIHsgcmVnZXg6IERVRV9EQVRFX1JFR0VYLCBrZXk6ICJkdWUiIH0sCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwKICBdOwogIC8qKiBQYXJzZSBzcGVjaWFsIGNvbXBsZXRlZC9kdWUvZG9uZSB0YXNrIGZpZWxkcyB3aGljaCBhcmUgbWFya2VkIHZpYSBlbW9qaS4gKi8KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgewogICAgICBsZXQgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKGxldCB7IHJlZ2V4LCBrZXkgfSBvZiBFTU9KSV9SRUdFWEVTKSB7CiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7CiAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgcmVzdWx0cy5wdXNoKHsKICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoWzFdLAogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwKICAgICAgICAgICAgICBzdGFydFZhbHVlOiBtYXRjaC5pbmRleCArIDEsCiAgICAgICAgICAgICAgZW5kOiBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCwKICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICB9CgogIC8qKiBBbGwgZXh0cmFjdGVkIG1hcmtkb3duIGZpbGUgbWV0YWRhdGEgb2J0YWluZWQgZnJvbSBhIGZpbGUuICovCiAgY2xhc3MgUGFnZU1ldGFkYXRhIHsKICAgICAgLyoqIFRoZSBwYXRoIHRoaXMgZmlsZSBleGlzdHMgYXQuICovCiAgICAgIHBhdGg7CiAgICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgY3JlYXRlZC4gKi8KICAgICAgY3RpbWU7CiAgICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgbW9kaWZpZWQuICovCiAgICAgIG10aW1lOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgc2l6ZSBvZiB0aGlzIHBhZ2UgaW4gYnl0ZXMuICovCiAgICAgIHNpemU7CiAgICAgIC8qKiBUaGUgZGF5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhZ2UsIGlmIHJlbGV2YW50LiAqLwogICAgICBkYXk7CiAgICAgIC8qKiBUaGUgZmlyc3QgSDEvSDIgaGVhZGVyIGluIHRoZSBmaWxlLiBNYXkgbm90IGV4aXN0LiAqLwogICAgICB0aXRsZTsKICAgICAgLyoqIEFsbCBvZiB0aGUgZmllbGRzIGNvbnRhaW5lZCBpbiB0aGlzIG1hcmtkb3duIGZpbGUgLSBib3RoIGZyb250bWF0dGVyIEFORCBpbi1maWxlIGxpbmtzLiAqLwogICAgICBmaWVsZHM7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGV4YWN0IHRhZ3MgKHByZWZpeGVkIHdpdGggJyMnKSBpbiB0aGlzIGZpbGUgb3ZlcmFsbC4gKi8KICAgICAgdGFnczsKICAgICAgLyoqIEFsbCBvZiB0aGUgYWxpYXNlcyBkZWZpbmVkIGZvciB0aGlzIGZpbGUuICovCiAgICAgIGFsaWFzZXM7CiAgICAgIC8qKiBBbGwgT1VUR09JTkcgbGlua3MgKGluY2x1ZGluZyBlbWJlZHMsIGhlYWRlciArIGJsb2NrIGxpbmtzKSBpbiB0aGlzIGZpbGUuICovCiAgICAgIGxpbmtzOwogICAgICAvKiogQWxsIGxpc3QgaXRlbXMgY29udGFpbmVkIHdpdGhpbiB0aGlzIHBhZ2UuIEZpbHRlciBmb3IgdGFza3MgdG8gZ2V0IGp1c3QgdGFza3MuICovCiAgICAgIGxpc3RzOwogICAgICAvKiogVGhlIHJhdyBmcm9udG1hdHRlciBmb3IgdGhpcyBkb2N1bWVudC4gKi8KICAgICAgZnJvbnRtYXR0ZXI7CiAgICAgIGNvbnN0cnVjdG9yKHBhdGgsIGluaXQpIHsKICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGg7CiAgICAgICAgICB0aGlzLmZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgICAgIHRoaXMuZnJvbnRtYXR0ZXIgPSB7fTsKICAgICAgICAgIHRoaXMudGFncyA9IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMuYWxpYXNlcyA9IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMubGlua3MgPSBbXTsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7CiAgICAgICAgICB0aGlzLmxpc3RzID0gKHRoaXMubGlzdHMgfHwgW10pLm1hcChsID0+IG5ldyBMaXN0SXRlbShsKSk7CiAgICAgIH0KICAgICAgLyoqIENhbm9uaWNhbGl6ZSByYXcgbGlua3MgYW5kIG90aGVyIGRhdGEgaW4gcGFydGlhbCBkYXRhIHdpdGggbm9ybWFsaXplcnMsIHJldHVybmluZyBhIGNvbXBsZXRlZCBvYmplY3QuICovCiAgICAgIHN0YXRpYyBjYW5vbmljYWxpemUoZGF0YSwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIE11dGF0ZSB0aGUgZGF0YSBmb3Igbm93LCB3aGljaCBpcyBwcm9iYWJseSBhIGJhZCBpZGVhIGJ1dC4uLiBhbGwgd2VsbC4KICAgICAgICAgIGlmIChkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICAgICAgZGF0YS5mcm9udG1hdHRlciA9IFZhbHVlcy5tYXBMZWF2ZXMoZGF0YS5mcm9udG1hdHRlciwgdCA9PiBWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmZpZWxkcykgewogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBkYXRhLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICAgICAgZGF0YS5maWVsZHMuc2V0KGtleSwgVmFsdWVzLm1hcExlYXZlcyh2YWx1ZSwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5saXN0cykgewogICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YS5saXN0cykgewogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaXRlbS5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZpZWxkcy5zZXQoa2V5LCB2YWx1ZS5tYXAoeCA9PiBWYWx1ZXMubWFwTGVhdmVzKHgsIHQgPT4gKFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpKSkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGlua3MpIHsKICAgICAgICAgICAgICBkYXRhLmxpbmtzID0gZGF0YS5saW5rcy5tYXAobCA9PiBsaW5rTm9ybWFsaXplcihsKSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB1Z2x5LCBidXQgaXQncyBub3QgcG9zc2libGUgdG8gbm9ybWFsaXplIG9uIHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQgZG9lcyBwYXJzaW5nLgogICAgICAgICAgLy8gVGhlIGJlc3Qgd2F5IHRvIGltcHJvdmUgdGhpcyBpcyB0byBpbnN0ZWFkIGp1c3QgY2Fub25pY2FsaXplIHRoZSBlbnRpcmUgZGF0YSBvYmplY3Q7IEkgY2FuIHRyeSB0bwogICAgICAgICAgLy8gb3B0aW1pemUgYFZhbHVlcy5tYXBMZWF2ZXNgIHRvIG9ubHkgbXV0YXRlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZXMgdGhpbmdzLgogICAgICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEoZGF0YS5wYXRoLCBkYXRhKTsKICAgICAgfQogICAgICAvKiogVGhlIG5hbWUgKGJhc2VkIG9uIHBhdGgpIG9mIHRoaXMgZmlsZS4gKi8KICAgICAgbmFtZSgpIHsKICAgICAgICAgIHJldHVybiBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogVGhlIGNvbnRhaW5pbmcgZm9sZGVyIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovCiAgICAgIGZvbGRlcigpIHsKICAgICAgICAgIHJldHVybiBnZXRQYXJlbnRGb2xkZXIodGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogVGhlIGV4dGVuc2lvbiBvZiB0aGlzIGZpbGUgKGxpa2VseSAnbWQnKS4gKi8KICAgICAgZXh0ZW5zaW9uKCkgewogICAgICAgICAgcmV0dXJuIGdldEV4dGVuc2lvbih0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBSZXR1cm4gYSBzZXQgb2YgdGFncyBBTkQgYWxsIG9mIHRoZWlyIHBhcmVudCB0YWdzIChzbyAjaGVsbG8veWVzIHdvdWxkIGJlY29tZSAjaGVsbG8sICNoZWxsby95ZXMpLiAqLwogICAgICBmdWxsVGFncygpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgU2V0KCk7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgdGhpcy50YWdzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgc3VidGFnIG9mIGV4dHJhY3RTdWJ0YWdzKHRhZykpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3VidGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYWxsIGxpbmtzIGluIHRoaXMgZmlsZSB0byBmaWxlIGxpbmtzLiAqLwogICAgICBmaWxlTGlua3MoKSB7CiAgICAgICAgICAvLyBXZSB3YW50IHRvIG1ha2UgdGhlbSBkaXN0aW5jdCwgYnV0IHdoZXJlIGxpbmtzIGFyZSBub3QgcmF3IGxpbmtzIHdlCiAgICAgICAgICAvLyBub3cga2VlcCB0aGUgYWRkaXRpb25hbCBtZXRhZGF0YS4KICAgICAgICAgIGxldCBkaXN0aW5jdExpbmtzID0gbmV3IFNldCh0aGlzLmxpbmtzKTsKICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKGRpc3RpbmN0TGlua3MpOwogICAgICB9CiAgICAgIC8qKiBNYXAgdGhpcyBtZXRhZGF0YSB0byBhIGZ1bGwgb2JqZWN0OyB1c2VzIHRoZSBpbmRleCBmb3IgYWRkaXRpb25hbCBkYXRhIGxvb2t1cHMuICAqLwogICAgICBzZXJpYWxpemUoaW5kZXgsIGNhY2hlKSB7CiAgICAgICAgICAvLyBDb252ZXJ0IGxpc3QgaXRlbXMgdmlhIHRoZSBjYW5vbmljYWxpemF0aW9uIGNhY2hlLgogICAgICAgICAgbGV0IHJlYWxDYWNoZSA9IGNhY2hlID8/IG5ldyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlKHRoaXMubGlzdHMpOwogICAgICAgICAgbGV0IHJlc3VsdCA9IHsKICAgICAgICAgICAgICBmaWxlOiB7CiAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwKICAgICAgICAgICAgICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcigpLAogICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUoKSwKICAgICAgICAgICAgICAgICAgbGluazogTGluay5maWxlKHRoaXMucGF0aCksCiAgICAgICAgICAgICAgICAgIG91dGxpbmtzOiB0aGlzLmZpbGVMaW5rcygpLAogICAgICAgICAgICAgICAgICBpbmxpbmtzOiBBcnJheS5mcm9tKGluZGV4LmxpbmtzLmdldEludmVyc2UodGhpcy5wYXRoKSkubWFwKGwgPT4gTGluay5maWxlKGwpKSwKICAgICAgICAgICAgICAgICAgZXRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwKICAgICAgICAgICAgICAgICAgdGFnczogQXJyYXkuZnJvbSh0aGlzLmZ1bGxUYWdzKCkpLAogICAgICAgICAgICAgICAgICBhbGlhc2VzOiBBcnJheS5mcm9tKHRoaXMuYWxpYXNlcyksCiAgICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLmxpc3RzLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksCiAgICAgICAgICAgICAgICAgIHRhc2tzOiB0aGlzLmxpc3RzLmZpbHRlcihsID0+ICEhbC50YXNrKS5tYXAobCA9PiByZWFsQ2FjaGUuZ2V0KGwubGluZSkpLAogICAgICAgICAgICAgICAgICBjdGltZTogdGhpcy5jdGltZSwKICAgICAgICAgICAgICAgICAgY2RheTogc3RyaXBUaW1lKHRoaXMuY3RpbWUpLAogICAgICAgICAgICAgICAgICBtdGltZTogdGhpcy5tdGltZSwKICAgICAgICAgICAgICAgICAgbWRheTogc3RyaXBUaW1lKHRoaXMubXRpbWUpLAogICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsCiAgICAgICAgICAgICAgICAgIHN0YXJyZWQ6IGluZGV4LnN0YXJyZWQuc3RhcnJlZCh0aGlzLnBhdGgpLAogICAgICAgICAgICAgICAgICBmcm9udG1hdHRlcjogVmFsdWVzLmRlZXBDb3B5KHRoaXMuZnJvbnRtYXR0ZXIpLAogICAgICAgICAgICAgICAgICBleHQ6IHRoaXMuZXh0ZW5zaW9uKCksCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH07CiAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgZGF5IGlmIHByZXNlbnQuCiAgICAgICAgICBpZiAodGhpcy5kYXkpCiAgICAgICAgICAgICAgcmVzdWx0LmZpbGUuZGF5ID0gdGhpcy5kYXk7CiAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgY29tcHV0ZWQgZmllbGRzLgogICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChrZXkgaW4gcmVzdWx0KQogICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgYWxsb3cgZmllbGRzIHRvIG92ZXJyaWRlIGV4aXN0aW5nIGtleXMuCiAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICB9CiAgLyoqIEEgbGlzdCBpdGVtIGluc2lkZSBvZiBhIGxpc3QuICovCiAgY2xhc3MgTGlzdEl0ZW0gewogICAgICAvKiogVGhlIHN5bWJvbCAoJyonLCAnLScsICcxLicpIHVzZWQgdG8gZGVmaW5lIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICBzeW1ib2w7CiAgICAgIC8qKiBBIGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoaXMgdGFzaywgb3IgdG8gdGhlIGNsb3Nlc3QgYmxvY2sgdGhhdCB0aGlzIHRhc2sgaXMgY29udGFpbmVkIGluLiAqLwogICAgICBsaW5rOwogICAgICAvKiogQSBsaW5rIHRvIHRoZSBzZWN0aW9uIHRoYXQgY29udGFpbnMgdGhpcyBsaXN0IGVsZW1lbnQ7IGNvdWxkIGJlIGEgZmlsZSBpZiB0aGlzIGlzIG5vdCBpbiBhIHNlY3Rpb24uICovCiAgICAgIHNlY3Rpb247CiAgICAgIC8qKiBUaGUgdGV4dCBvZiB0aGlzIGxpc3QgaXRlbS4gVGhpcyBtYXkgYmUgbXVsdGlwbGUgbGluZXMgb2YgbWFya2Rvd24uICovCiAgICAgIHRleHQ7CiAgICAgIC8qKiBUaGUgbGluZSB0aGF0IHRoaXMgbGlzdCBpdGVtIHN0YXJ0cyBvbiBpbiB0aGUgZmlsZS4gKi8KICAgICAgbGluZTsKICAgICAgLyoqIFRoZSBudW1iZXIgb2YgbGluZXMgdGhhdCBkZWZpbmUgdGhpcyBsaXN0IGl0ZW0uICovCiAgICAgIGxpbmVDb3VudDsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciBmb3IgdGhlIGZpcnN0IGxpc3QgaXRlbSBpbiB0aGUgbGlzdCB0aGlzIGl0ZW0gYmVsb25ncyB0by4gKi8KICAgICAgbGlzdDsKICAgICAgLyoqIEFueSBsaW5rcyBjb250YWluZWQgd2l0aGluIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICBsaW5rczsKICAgICAgLyoqIFRoZSB0YWdzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBsaXN0IGl0ZW0uICovCiAgICAgIHRhZ3M7CiAgICAgIC8qKiBUaGUgcmF3IE9ic2lkaWFuLXByb3ZpZGVkIHBvc2l0aW9uIGZvciB3aGVyZSB0aGlzIHRhc2sgaXMuICovCiAgICAgIHBvc2l0aW9uOwogICAgICAvKiogVGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBwYXJlbnQgbGlzdCBpdGVtLCBpZiBwcmVzZW50OyBpZiB0aGlzIGlzIHVuZGVmaW5lZCwgdGhpcyBpcyBhIHJvb3QgaXRlbS4gKi8KICAgICAgcGFyZW50OwogICAgICAvKiogVGhlIGxpbmUgbnVtYmVycyBvZiBjaGlsZHJlbiBvZiB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgY2hpbGRyZW47CiAgICAgIC8qKiBUaGUgYmxvY2sgSUQgZm9yIHRoaXMgaXRlbSwgaWYgb25lIGlzIHByZXNlbnQuICovCiAgICAgIGJsb2NrSWQ7CiAgICAgIC8qKiBBbnkgZmllbGRzIGRlZmluZWQgaW4gdGhpcyBsaXN0IGl0ZW0uIEZvciB0YXNrcywgdGhpcyBpbmNsdWRlcyBmaWVsZHMgdW5kZXJuZWF0aCB0aGUgdGFzay4gKi8KICAgICAgZmllbGRzOwogICAgICB0YXNrOwogICAgICBjb25zdHJ1Y3Rvcihpbml0KSB7CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOwogICAgICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkcyB8fCBuZXcgTWFwKCk7CiAgICAgICAgICB0aGlzLnRhZ3MgPSB0aGlzLnRhZ3MgfHwgbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gfHwgW107CiAgICAgICAgICB0aGlzLmxpbmtzID0gdGhpcy5saW5rcyB8fCBbXTsKICAgICAgfQogICAgICBpZCgpIHsKICAgICAgICAgIHJldHVybiBgJHt0aGlzLmZpbGUoKS5wYXRofS0ke3RoaXMubGluZX1gOwogICAgICB9CiAgICAgIGZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5saW5rLnRvRmlsZSgpOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgaWYgKHRoaXMudGFzaykKICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9IFske3RoaXMudGFzay5jb21wbGV0ZWQgPyAieCIgOiAiICJ9XSAke3RoaXMudGV4dH1gOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gJHt0aGlzLnRleHR9YDsKICAgICAgfQogICAgICBjcmVhdGVkKCkgewogICAgICAgICAgcmV0dXJuICh0aGlzLmZpZWxkcy5nZXQoImNyZWF0ZWQiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImN0aW1lIikgPz8gdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpPy5bMF07CiAgICAgIH0KICAgICAgZHVlKCkgewogICAgICAgICAgcmV0dXJuICh0aGlzLmZpZWxkcy5nZXQoImR1ZSIpID8/IHRoaXMuZmllbGRzLmdldCgiZHVldGltZSIpID8/IHRoaXMuZmllbGRzLmdldCgiZHVlZGF5IikpPy5bMF07CiAgICAgIH0KICAgICAgY29tcGxldGVkKCkgewogICAgICAgICAgcmV0dXJuICh0aGlzLmZpZWxkcy5nZXQoImNvbXBsZXRlZCIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0aW9uIikgPz8KICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5nZXQoImNvbXB0aW1lIikgPz8KICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5nZXQoImNvbXBkYXkiKSk/LlswXTsKICAgICAgfQogICAgICBzdGFydCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkcy5nZXQoInN0YXJ0Iik/LlswXTsKICAgICAgfQogICAgICBzY2hlZHVsZWQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZHMuZ2V0KCJzY2hlZHVsZWQiKT8uWzBdOwogICAgICB9CiAgICAgIC8qKiBDcmVhdGUgYW4gQVBJLWZyaWVuZGx5IGNvcHkgb2YgdGhpcyBsaXN0IGl0ZW0uIERlLWR1cGxpY2F0aW9uIGlzIGRvbmUgdmlhIHRoZSBwcm92aWRlZCBjYWNoZS4gKi8KICAgICAgc2VyaWFsaXplKGNhY2hlKSB7CiAgICAgICAgICAvLyBNYXAgY2hpbGRyZW4gdG8gdGhlaXIgc2VyaWFsaXplZC9kZS1kdXBsaWNhdGVkIGVxdWl2YWxlbnRzIHJpZ2h0IGF3YXkuCiAgICAgICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLm1hcChsID0+IGNhY2hlLmdldChsKSkuZmlsdGVyKChsKSA9PiBsICE9PSB1bmRlZmluZWQpOwogICAgICAgICAgbGV0IHJlc3VsdCA9IHsKICAgICAgICAgICAgICBzeW1ib2w6IHRoaXMuc3ltYm9sLAogICAgICAgICAgICAgIGxpbms6IHRoaXMubGluaywKICAgICAgICAgICAgICBzZWN0aW9uOiB0aGlzLnNlY3Rpb24sCiAgICAgICAgICAgICAgdGV4dDogdGhpcy50ZXh0LAogICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwKICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsCiAgICAgICAgICAgICAgbGluZUNvdW50OiB0aGlzLmxpbmVDb3VudCwKICAgICAgICAgICAgICBsaXN0OiB0aGlzLmxpc3QsCiAgICAgICAgICAgICAgb3V0bGlua3M6IEFycmF5LmZyb20odGhpcy5saW5rcyksCiAgICAgICAgICAgICAgcGF0aDogdGhpcy5saW5rLnBhdGgsCiAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLAogICAgICAgICAgICAgIHRhc2s6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGFubm90YXRlZDogdGhpcy5maWVsZHMuc2l6ZSA+IDAsCiAgICAgICAgICAgICAgcG9zaXRpb246IFZhbHVlcy5kZWVwQ29weSh0aGlzLnBvc2l0aW9uKSwKICAgICAgICAgICAgICBzdWJ0YXNrczogY2hpbGRyZW4sCiAgICAgICAgICAgICAgcmVhbDogISF0aGlzLnRhc2ssCiAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnNlY3Rpb24sIC8vIEBkZXByZWNhdGVkLCB1c2UgJ2l0ZW0uc2VjdGlvbicgaW5zdGVhZC4KICAgICAgICAgIH07CiAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQgPT09IDApCiAgICAgICAgICAgICAgcmVzdWx0LnBhcmVudCA9IHRoaXMucGFyZW50OwogICAgICAgICAgaWYgKHRoaXMuYmxvY2tJZCkKICAgICAgICAgICAgICByZXN1bHQuYmxvY2tJZCA9IHRoaXMuYmxvY2tJZDsKICAgICAgICAgIGFkZEZpZWxkcyh0aGlzLmZpZWxkcywgcmVzdWx0KTsKICAgICAgICAgIGlmICh0aGlzLnRhc2spIHsKICAgICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gdGhpcy50YXNrLnN0YXR1czsKICAgICAgICAgICAgICByZXN1bHQuY2hlY2tlZCA9IHRoaXMudGFzay5jaGVja2VkOwogICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZWQgPSB0aGlzLnRhc2suY29tcGxldGVkOwogICAgICAgICAgICAgIHJlc3VsdC5mdWxseUNvbXBsZXRlZCA9IHRoaXMudGFzay5mdWxseUNvbXBsZXRlZDsKICAgICAgICAgICAgICBsZXQgY3JlYXRlZCA9IHRoaXMuY3JlYXRlZCgpLCBkdWUgPSB0aGlzLmR1ZSgpLCBjb21wbGV0ZWQgPSB0aGlzLmNvbXBsZXRlZCgpLCBzdGFydCA9IHRoaXMuc3RhcnQoKSwgc2NoZWR1bGVkID0gdGhpcy5zY2hlZHVsZWQoKTsKICAgICAgICAgICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSBWYWx1ZXMuZGVlcENvcHkoY3JlYXRlZCk7CiAgICAgICAgICAgICAgaWYgKGR1ZSkKICAgICAgICAgICAgICAgICAgcmVzdWx0LmR1ZSA9IFZhbHVlcy5kZWVwQ29weShkdWUpOwogICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0aW9uID0gVmFsdWVzLmRlZXBDb3B5KGNvbXBsZXRlZCk7CiAgICAgICAgICAgICAgaWYgKHN0YXJ0KQogICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBWYWx1ZXMuZGVlcENvcHkoc3RhcnQpOwogICAgICAgICAgICAgIGlmIChzY2hlZHVsZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5zY2hlZHVsZWQgPSBWYWx1ZXMuZGVlcENvcHkoc2NoZWR1bGVkKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICB9CiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gQ29udmVyc2lvbiAvIFNlcmlhbGl6YXRpb24gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLyoqIERlLWR1cGxpY2F0ZXMgbGlzdCBpdGVtcyBhY3Jvc3Mgc2VjdGlvbiBtZXRhZGF0YSBhbmQgcGFnZSBtZXRhZGF0YS4gKi8KICBjbGFzcyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlIHsKICAgICAgbGlzdEl0ZW1zOwogICAgICBjYWNoZTsKICAgICAgc2VlbjsKICAgICAgY29uc3RydWN0b3IobGlzdEl0ZW1zKSB7CiAgICAgICAgICB0aGlzLmxpc3RJdGVtcyA9IHt9OwogICAgICAgICAgdGhpcy5jYWNoZSA9IHt9OwogICAgICAgICAgdGhpcy5zZWVuID0gbmV3IFNldCgpOwogICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBsaXN0SXRlbXMpCiAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbXNbaXRlbS5saW5lXSA9IGl0ZW07CiAgICAgIH0KICAgICAgZ2V0KGxpbmVubykgewogICAgICAgICAgaWYgKGxpbmVubyBpbiB0aGlzLmNhY2hlKQogICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2xpbmVub107CiAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlZW4uaGFzKGxpbmVubykpIHsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YXZpZXc6IEVuY291bnRlcmVkIGEgY2lyY3VsYXIgbGlzdCAobGluZSBudW1iZXIgJHtsaW5lbm99OyBjaGlsZHJlbiAke3RoaXMubGlzdEl0ZW1zW2xpbmVub10uY2hpbGRyZW4uam9pbigiLCAiKX0pYCk7CiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuc2Vlbi5hZGQobGluZW5vKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLnNlcmlhbGl6ZSh0aGlzKTsKICAgICAgICAgIHRoaXMuY2FjaGVbbGluZW5vXSA9IHJlc3VsdDsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICB9CiAgZnVuY3Rpb24gYWRkRmllbGRzKGZpZWxkcywgdGFyZ2V0KSB7CiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlcy5sZW5ndGggPT0gMSA/IHZhbHVlc1swXSA6IHZhbHVlczsKICAgICAgfQogICAgICByZXR1cm4gdGFyZ2V0OwogIH0KCiAgLyoqIENvbW1vbiB1dGlsaXRpZXMgZm9yIGV4dHJhY3RpbmcgdGFncywgbGlua3MsIGFuZCBvdGhlciBidXNpbmVzcyBmcm9tIG1ldGFkYXRhLiAqLwogIGNvbnN0IFBPVEVOVElBTF9UQUdfTUFUQ0hFUiA9IC8jW15ccyw7XC46IVw/JyJgKClcW1xdXHtcfV0rL2dpdTsKICAvKiogRXh0cmFjdCBhbGwgdGFncyBmcm9tIHRoZSBnaXZlbiBzb3VyY2Ugc3RyaW5nLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzJDEoc291cmNlKSB7CiAgICAgIGxldCByZXN1bHQgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBtYXRjaGVzID0gc291cmNlLm1hdGNoQWxsKFBPVEVOVElBTF9UQUdfTUFUQ0hFUik7CiAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHsKICAgICAgICAgIGxldCBwYXJzZWQgPSBFWFBSRVNTSU9OLnRhZy5wYXJzZShtYXRjaFswXSk7CiAgICAgICAgICBpZiAocGFyc2VkLnN0YXR1cykKICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlZC52YWx1ZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLwogIC8qKiBFeHRyYWN0IG1hcmtkb3duIG1ldGFkYXRhIGZyb20gdGhlIGdpdmVuIE9ic2lkaWFuIG1hcmtkb3duIGZpbGUuICovCiAgZnVuY3Rpb24gcGFyc2VQYWdlKHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSkgewogICAgICBsZXQgdGFncyA9IG5ldyBTZXQoKTsKICAgICAgbGV0IGFsaWFzZXMgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBmaWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgIGxldCBsaW5rcyA9IFtdOwogICAgICAvLyBGaWxlIHRhZ3MsIGluY2x1ZGluZyBmcm9udC1tYXR0ZXIgYW5kIGluLWZpbGUgdGFncy4KICAgICAgKG1ldGFkYXRhLnRhZ3MgfHwgW10pLmZvckVhY2godCA9PiB0YWdzLmFkZCh0LnRhZy5zdGFydHNXaXRoKCIjIikgPyB0LnRhZyA6ICIjIiArIHQudGFnKSk7CiAgICAgIC8vIEZyb250LW1hdHRlciBmaWxlIHRhZ3MsIGFsaWFzZXMsIEFORCBmcm9udG1hdHRlciBwcm9wZXJ0aWVzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXIpIHsKICAgICAgICAgIGZvciAobGV0IHRhZyBvZiBleHRyYWN0VGFncyhtZXRhZGF0YS5mcm9udG1hdHRlcikpIHsKICAgICAgICAgICAgICBpZiAoIXRhZy5zdGFydHNXaXRoKCIjIikpCiAgICAgICAgICAgICAgICAgIHRhZyA9ICIjIiArIHRhZzsKICAgICAgICAgICAgICB0YWdzLmFkZCh0YWcpOwogICAgICAgICAgfQogICAgICAgICAgZm9yIChsZXQgYWxpYXMgb2YgZXh0cmFjdEFsaWFzZXMobWV0YWRhdGEuZnJvbnRtYXR0ZXIpIHx8IFtdKQogICAgICAgICAgICAgIGFsaWFzZXMuYWRkKGFsaWFzKTsKICAgICAgICAgIGxldCBmcm9udEZpZWxkcyA9IHBhcnNlRnJvbnRtYXR0ZXIobWV0YWRhdGEuZnJvbnRtYXR0ZXIpOwogICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZyb250RmllbGRzKSkgewogICAgICAgICAgICAgIGlmIChrZXkgPT0gInBvc2l0aW9uIikKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgYWRkSW5saW5lRmllbGQoa2V5LCB2YWx1ZSwgZmllbGRzKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBBZGQgZnJvbnRtYXR0ZXIgbGlua3MgdG8gbGlua3MuCiAgICAgIGlmIChtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzKSB7CiAgICAgICAgICBmb3IgKGxldCByYXdMaW5rIG9mIG1ldGFkYXRhLmZyb250bWF0dGVyTGlua3MgfHwgW10pIHsKICAgICAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdMaW5rLmxpbmssIGZhbHNlLCByYXdMaW5rLmRpc3BsYXlUZXh0KTsKICAgICAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8vIExpbmtzIGluIG1ldGFkYXRhLgogICAgICBjb25zdCBsaW5rc0J5TGluZSA9IHt9OwogICAgICBmb3IgKGxldCByYXdMaW5rIG9mIG1ldGFkYXRhLmxpbmtzIHx8IFtdKSB7CiAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdMaW5rLmxpbmssIGZhbHNlLCByYXdMaW5rLmRpc3BsYXlUZXh0KTsKICAgICAgICAgIGNvbnN0IGxpbmUgPSByYXdMaW5rLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBFbWJlZCBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgZm9yIChsZXQgcmF3RW1iZWQgb2YgbWV0YWRhdGEuZW1iZWRzIHx8IFtdKSB7CiAgICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihyYXdFbWJlZC5saW5rLCB0cnVlLCByYXdFbWJlZC5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3RW1iZWQucG9zaXRpb24uc3RhcnQubGluZTsKICAgICAgICAgIGxpbmtzLnB1c2gobGluayk7CiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkKICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXSA9IFtsaW5rXTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOwogICAgICB9CiAgICAgIC8vIE1lcmdlIGZyb250bWF0dGVyIGZpZWxkcyB3aXRoIHBhcnNlZCBmaWVsZHMuCiAgICAgIGxldCBtYXJrZG93bkRhdGEgPSBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLnNwbGl0KCJcbiIpLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGZpZWxkcywgbWFya2Rvd25EYXRhLmZpZWxkcyk7CiAgICAgIC8vIFN0cmlwICJwb3NpdGlvbiIgZnJvbSBmcm9udG1hdHRlciBzaW5jZSBpdCBpcyBPYnNpZGlhbiBkZXRlcm1pbmVkLgogICAgICBjb25zdCBmcm9udG1hdHRlciA9IG1ldGFkYXRhLmZyb250bWF0dGVyIHx8IHt9OwogICAgICBpZiAoZnJvbnRtYXR0ZXIgJiYgInBvc2l0aW9uIiBpbiBmcm9udG1hdHRlcikKICAgICAgICAgIGRlbGV0ZSBmcm9udG1hdHRlclsicG9zaXRpb24iXTsKICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEocGF0aCwgewogICAgICAgICAgdGFncywKICAgICAgICAgIGFsaWFzZXMsCiAgICAgICAgICBsaW5rcywKICAgICAgICAgIGxpc3RzOiBtYXJrZG93bkRhdGEubGlzdHMsCiAgICAgICAgICBmaWVsZHM6IGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcyksCiAgICAgICAgICBmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIsCiAgICAgICAgICBjdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0LmN0aW1lKSwKICAgICAgICAgIG10aW1lOiBEYXRlVGltZS5mcm9tTWlsbGlzKHN0YXQubXRpbWUpLAogICAgICAgICAgc2l6ZTogc3RhdC5zaXplLAogICAgICAgICAgZGF5OiBmaW5kRGF0ZShwYXRoLCBmaWVsZHMpLAogICAgICB9KTsKICB9CiAgLyoqIEV4dHJhY3QgdGFncyBpbnRlbGxpZ2VudGx5IGZyb20gZnJvbnRtYXR0ZXIuIEhhbmRsZXMgYXJyYXlzLCBudW1iZXJzLCBhbmQgc3RyaW5ncy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyhtZXRhZGF0YSkgewogICAgICBsZXQgdGFnS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZ3MiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAidGFnIik7CiAgICAgIHJldHVybiB0YWdLZXlzCiAgICAgICAgICAubWFwKGsgPT4gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMobWV0YWRhdGFba10sIC9bLFxzXSsvKSkKICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSkKICAgICAgICAgIC5tYXAoc3RyID0+IChzdHIuc3RhcnRzV2l0aCgiIyIpID8gc3RyIDogIiMiICsgc3RyKSk7CiAgfQogIC8qKiBFeHRyYWN0IGFsaWFzZXMgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICAqLwogIGZ1bmN0aW9uIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhKSB7CiAgICAgIGxldCBhbGlhc0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJhbGlhcyIgfHwgdC50b0xvd2VyQ2FzZSgpID09ICJhbGlhc2VzIik7CiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdOwogICAgICBmb3IgKGxldCBrZXkgb2YgYWxpYXNLZXlzKSB7CiAgICAgICAgICBjb25zdCB2YWx1ZSA9IG1ldGFkYXRhW2tleV07CiAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKQogICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnZhbHVlLm1hcCh2ID0+ICgiIiArIHYpLnRyaW0oKSkpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHZhbHVlLCAvLC8pKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH0KICAvKiogU3BsaXQgYSBmcm9udG1hdHRlciBsaXN0IGludG8gc2VwYXJhdGUgZWxlbWVudHM7IGhhbmRsZXMgYWN0dWFsIGxpc3RzLCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMsIGFuZCBzaW5nbGUgZWxlbWVudHMuICovCiAgZnVuY3Rpb24gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMoZGF0YSwgb24pIHsKICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IHVuZGVmaW5lZCkKICAgICAgICAgIHJldHVybiBbXTsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHsKICAgICAgICAgIHJldHVybiBkYXRhCiAgICAgICAgICAgICAgLmZpbHRlcihzID0+ICEhcykKICAgICAgICAgICAgICAubWFwKHMgPT4gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMocywgb24pKQogICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSk7CiAgICAgIH0KICAgICAgLy8gRm9yY2UgdG8gYSBzdHJpbmcgdG8gaGFuZGxlIG51bWJlcnMgYW5kIHNvIG9uLgogICAgICByZXR1cm4gKCIiICsgZGF0YSkKICAgICAgICAgIC5zcGxpdChvbikKICAgICAgICAgIC5maWx0ZXIodCA9PiAhIXQpCiAgICAgICAgICAubWFwKHQgPT4gdC50cmltKCkpCiAgICAgICAgICAuZmlsdGVyKHQgPT4gdC5sZW5ndGggPiAwKTsKICB9CiAgLyoqIFBhcnNlIHJhdyAobmV3bGluZS1kZWxpbWl0ZWQpIG1hcmtkb3duLCByZXR1cm5pbmcgaW5saW5lIGZpZWxkcywgbGlzdCBpdGVtcywgYW5kIG90aGVyIG1ldGFkYXRhLiAqLwogIGZ1bmN0aW9uIHBhcnNlTWFya2Rvd24ocGF0aCwgY29udGVudHMsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgewogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAvLyBFeHRyYWN0IHRhc2sgZGF0YSBhbmQgYXBwZW5kIHRoZSBnbG9iYWwgZGF0YSBleHRyYWN0ZWQgZnJvbSB0aGVtIHRvIG91ciBmaWVsZHMuCiAgICAgIGxldCBbbGlzdHMsIGV4dHJhRGF0YV0gPSBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGV4dHJhRGF0YS5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmICghZmllbGRzLmhhcyhrZXkpKQogICAgICAgICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZXMpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGZpZWxkcy5zZXQoa2V5LCBmaWVsZHMuZ2V0KGtleSkuY29uY2F0KHZhbHVlcykpOwogICAgICB9CiAgICAgIC8vIFRoZSBPYnNpZGlhbiBtZXRhZGF0YSBjYWNoZSB3aWxsIHRyYWNrIGxpc3QgZWxlbWVudHMgaW5zaWRlIG9mIG90aGVyIGVsZW1lbnQgZ3JvdXBzIChsaWtlIGFubm90YXRpb25zIGFuZAogICAgICAvLyBjYWxsb3V0cykuLi4gdGhpcyBtZWFucyB3ZSBtaWdodCBzZWUgbWV0YWRhdGEgdHdpY2UsIHNvIHNraXAgdGhlbSBub3cuIFZlcnkgYW5ub3lpbmcuCiAgICAgIGNvbnN0IGxpc3RMaW5lc1RvU2tpcCA9IG5ldyBTZXQoKTsKICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpc3RzKSB7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmUubGluZUNvdW50OyBpKyspCiAgICAgICAgICAgICAgbGlzdExpbmVzVG9Ta2lwLmFkZChsaW5lLmxpbmUgKyBpKTsKICAgICAgfQogICAgICAvLyBPbmx5IHBhcnNlIGhlYWRpbmcgYW5kIHBhcmFncmFwaCBlbGVtZW50cyBmb3IgaW5saW5lIGZpZWxkczsgd2Ugd2lsbCBwYXJzZSBsaXN0IG1ldGFkYXRhIHNlcGFyYXRlbHkuCiAgICAgIGZvciAobGV0IHNlY3Rpb24gb2YgbWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pIHsKICAgICAgICAgIGlmIChzZWN0aW9uLnR5cGUgPT0gImxpc3QiIHx8IHNlY3Rpb24udHlwZSA9PSAicnVsaW5nIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGZvciAobGV0IGxpbmVubyA9IHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZTsgbGluZW5vIDw9IHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmU7IGxpbmVubysrKSB7CiAgICAgICAgICAgICAgbGV0IGxpbmUgPSBjb250ZW50c1tsaW5lbm9dOwogICAgICAgICAgICAgIGlmIChsaW5lID09IHVuZGVmaW5lZCB8fCBsaW5lID09IG51bGwpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGlmIChsaXN0TGluZXNUb1NraXAuaGFzKGxpbmVubykpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nIG9yIGRvIG5vdCBjb250YWluICc6OicuCiAgICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMzI3NjggfHwgIWxpbmUuaW5jbHVkZXMoIjo6IikpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTsKICAgICAgICAgICAgICBsZXQgaW5saW5lRmllbGRzID0gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lKTsKICAgICAgICAgICAgICBpZiAoaW5saW5lRmllbGRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaWZpZWxkIG9mIGlubGluZUZpZWxkcykKICAgICAgICAgICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGlmaWVsZCwgZmllbGRzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGxldCBmdWxsTGluZSA9IGV4dHJhY3RGdWxsTGluZUZpZWxkKGxpbmUpOwogICAgICAgICAgICAgICAgICBpZiAoZnVsbExpbmUpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgZmllbGRzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHsgZmllbGRzLCBsaXN0cyB9OwogIH0KICAvLyBUT0RPOiBDb25zaWRlciB1c2luZyBhbiBhY3R1YWwgcGFyc2VyIGluIGxpZXUgb2YgYSBtb3JlIGV4cGVuc2l2ZSByZWdleC4KICBjb25zdCBMSVNUX0lURU1fUkVHRVggPSAvXltccz5dKihcZCtcLnxcZCtcKXxcKnwtfFwrKVxzKihcWy57MCwxfVxdKT9ccyooLiopJC9tdTsKICAvKioKICAgKiBQYXJzZSBsaXN0IGl0ZW1zIGZyb20gdGhlIHBhZ2UgKyBtZXRhZGF0YS4gVGhpcyByZXF1aXJlcyBzb21lIGFkZGl0aW9uYWwgcGFyc2luZyBhYm92ZSB3aGF0ZXZlciBPYnNpZGlhbiBwcm92aWRlcywKICAgKiBzaW5jZSBPYnNpZGlhbiBvbmx5IGdpdmVzIGxpbmUgbnVtYmVycy4KICAgKi8KICBmdW5jdGlvbiBwYXJzZUxpc3RzKHBhdGgsIGNvbnRlbnQsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSkgewogICAgICBsZXQgY2FjaGUgPSB7fTsKICAgICAgLy8gUGxhY2UgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIGNhY2hlIGJlZm9yZSByZXNvbHZpbmcgY2hpbGRyZW4gJiBtZXRhZGF0YSByZWxhdGlvbnNoaXBzLgogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgewogICAgICAgICAgLy8gTWF0Y2ggb24gdGhlIGZpcnN0IGxpbmUgdG8gZ2V0IHRoZSBzeW1ib2wgYW5kIGZpcnN0IGxpbmUgb2YgdGV4dC4KICAgICAgICAgIGxldCByYXdNYXRjaCA9IExJU1RfSVRFTV9SRUdFWC5leGVjKGNvbnRlbnRbcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lXSk7CiAgICAgICAgICBpZiAoIXJhd01hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgLy8gQW5kIHRoZW4gc3RyaXAgdW5uZWNlc3Nhcnkgc3BhY2luZyBmcm9tIHRoZSByZW1haW5pbmcgbGluZXMuCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQogICAgICAgICAgICAgIC5jb25jYXQoY29udGVudC5zbGljZShyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgKyAxLCByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lICsgMSkpCiAgICAgICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKTsKICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsKICAgICAgICAgIGxldCB0ZXh0Tm9OZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIiAiKTsKICAgICAgICAgIC8vIEZpbmQgdGhlIGxpc3QgdGhhdCB3ZSBhcmUgYSBwYXJ0IG9mIGJ5IGxpbmUuCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJgogICAgICAgICAgICAgIHMucG9zaXRpb24uc3RhcnQubGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLmVuZC5saW5lID49IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSk7CiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLgogICAgICAgICAgbGV0IHNlY3Rpb25OYW1lID0gZmluZFByZXZpb3VzSGVhZGVyKHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSwgbWV0YWRhdGEuaGVhZGluZ3MgfHwgW10pOwogICAgICAgICAgbGV0IHNlY3Rpb25MaW5rID0gc2VjdGlvbk5hbWUgPT09IHVuZGVmaW5lZCA/IExpbmsuZmlsZShwYXRoKSA6IExpbmsuaGVhZGVyKHBhdGgsIHNlY3Rpb25OYW1lKTsKICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsKICAgICAgICAgIC8vIEdhdGhlciBhbnkgbGlua3MgdGhhdCBvY2N1ciBvbiB0aGUgc2FtZSBsaW5lcyBhcyB0aGUgdGFzay4KICAgICAgICAgIGNvbnN0IGxpbmtzID0gW107CiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgewogICAgICAgICAgICAgIGlmIChsaW5rc0J5TGluZVtsaW5lXSkKICAgICAgICAgICAgICAgICAgbGlua3MucHVzaCguLi5saW5rc0J5TGluZVtsaW5lXSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBDb25zdHJ1Y3QgdW5pdmVyc2FsIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZWxlbWVudCAoYmVmb3JlIHRhc2tzKS4KICAgICAgICAgIGxldCBpdGVtID0gbmV3IExpc3RJdGVtKHsKICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLAogICAgICAgICAgICAgIGxpbms6IGNsb3Nlc3RMaW5rLAogICAgICAgICAgICAgIGxpbmtzOiBsaW5rcywKICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywKICAgICAgICAgICAgICB0ZXh0OiB0ZXh0V2l0aE5ld2xpbmUsCiAgICAgICAgICAgICAgdGFnczogZXh0cmFjdFRhZ3MkMSh0ZXh0Tm9OZXdsaW5lKSwKICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgbGluZUNvdW50OiByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lIC0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwKICAgICAgICAgICAgICBsaXN0OiBjb250YWluaW5nTGlzdElkID09IC0xID8gLTEgOiAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pW2NvbnRhaW5pbmdMaXN0SWRdLnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sCiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLAogICAgICAgICAgICAgIGJsb2NrSWQ6IHJhd0VsZW1lbnQuaWQsCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChyYXdFbGVtZW50LnBhcmVudCA+PSAwICYmIHJhd0VsZW1lbnQucGFyZW50ICE9IGl0ZW0ubGluZSkKICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHJhd0VsZW1lbnQucGFyZW50OwogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuCiAgICAgICAgICBpZiAocmF3RWxlbWVudC50YXNrKSB7CiAgICAgICAgICAgICAgaXRlbS50YXNrID0gewogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywKICAgICAgICAgICAgICAgICAgY2hlY2tlZDogcmF3RWxlbWVudC50YXNrICE9ICIiICYmIHJhd0VsZW1lbnQudGFzayAhPSAiICIsCiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLgogICAgICAgICAgaXRlbS5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGV4dHJhY3RJbmxpbmVGaWVsZHModGV4dE5vTmV3bGluZSwgdHJ1ZSkpCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOwogICAgICAgICAgaWYgKCFyYXdFbGVtZW50LnRhc2sgJiYgaXRlbS5maWVsZHMuc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgbGV0IGZ1bGxMaW5lID0gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dE5vTmV3bGluZSk7CiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgaXRlbS5maWVsZHMpOwogICAgICAgICAgfQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07CiAgICAgIH0KICAgICAgLy8gVHJlZSB1cGRhdGluZyBwYXNzZXMuIFVwZGF0ZSBjaGlsZCBsaXN0cy4gUHJvcGFnYXRlIG1ldGFkYXRhIHVwIHRvIHBhcmVudCB0YXNrcy4gVXBkYXRlIHRhc2sgYGZ1bGx5Q29tcGxldGVkYC4KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBsaXN0SXRlbSBvZiBPYmplY3QudmFsdWVzKGNhY2hlKSkgewogICAgICAgICAgLy8gUGFzcyAxOiBVcGRhdGUgY2hpbGQgbGlzdHMuCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7CiAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGNhY2hlW2xpc3RJdGVtLnBhcmVudF07CiAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobGlzdEl0ZW0ubGluZSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDI6IFByb3BhZ2F0ZSBtZXRhZGF0YSB1cCB0byB0aGUgcGFyZW50IHRhc2sgb3Igcm9vdCBlbGVtZW50LgogICAgICAgICAgaWYgKCFsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAvLyBUT0RPIChibGFja3NtaXRoZ3UpOiBUaGUgYmVsb3cgY29kZSBwcm9wZXJseSBQcm9wYWdhdGVzIG1ldGFkYXRhIHVwIHRvIHRoZSBuZWFyZXN0IHRhc2ssIHdoaWNoIGlzIHRoZQogICAgICAgICAgICAgIC8vIG1vcmUgaW50dWl0aXZlIGJlaGF2aW9yLiBGb3Igbm93LCB0aG91Z2gsIHdlIHdpbGwga2VlcCB0aGUgZXhpc3RpbmcgbG9naWMuCiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICBsZXQgcm9vdDogTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFyb290ICYmICFyb290LnRhc2spIHJvb3QgPSBjYWNoZVtyb290LnBhcmVudCA/PyAtMV07CgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4KICAgICAgICAgICAgICBtZXJnZUZpZWxkR3JvdXBzKHJvb3QgPT09IHVuZGVmaW5lZCB8fCByb290ID09IG51bGwgPyBsaXRlcmFscyA6IHJvb3QuZmllbGRzLCBsaXN0SXRlbS5maWVsZHMpOwogICAgICAgICAgICAgICovCiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDM6IFByb3BhZ2F0ZSBgZnVsbHlDb21wbGV0ZWRgIHVwIHRoZSB0YXNrIHRyZWUuIFRoaXMgaXMgYSBsaXR0bGUgbGVzcyBlZmZpY2llbnQgdGhhbiBqdXN0IGRvaW5nIGEgc2ltcGxlCiAgICAgICAgICAvLyBERlMgdXNpbmcgdGhlIGNoaWxkcmVuIElEcywgYnV0IGl0J3MgcHJvYmFibHkgZmluZS4KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbGV0IGN1cnIgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFjdXJyKSB7CiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spCiAgICAgICAgICAgICAgICAgICAgICBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgPSBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgJiYgbGlzdEl0ZW0udGFzay5jb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgIGN1cnIgPSBjYWNoZVtjdXJyLnBhcmVudCA/PyAtMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbT2JqZWN0LnZhbHVlcyhjYWNoZSksIGxpdGVyYWxzXTsKICB9CiAgLyoqIEF0dGVtcHQgdG8gZmluZCBhIGRhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYWdlIGZyb20gbWV0YWRhdGEgb3IgZmlsZW5hbWVzLiAqLwogIGZ1bmN0aW9uIGZpbmREYXRlKGZpbGUsIGZpZWxkcykgewogICAgICBmb3IgKGxldCBrZXkgb2YgZmllbGRzLmtleXMoKSkgewogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGxldCB2YWx1ZSA9IGZpZWxkcy5nZXQoa2V5KTsKICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGV4dHJhY3REYXRlKHZhbHVlLnBhdGgpID8/IGV4dHJhY3REYXRlKHZhbHVlLnN1YnBhdGggPz8gIiIpID8/IGV4dHJhY3REYXRlKHZhbHVlLmRpc3BsYXkgPz8gIiIpOwogICAgICAgICAgICAgIGlmIChkYXRlKQogICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZXh0cmFjdERhdGUoZ2V0RmlsZVRpdGxlKGZpbGUpKTsKICB9CiAgLyoqIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgZnJvbnRtYXR0ZXIgaW50byBmaWVsZHMuIFdlIGhhdmUgdG8gZGFuY2UgYXJvdW5kIFlBTUwgc3RydWN0dXJlLiAqLwogIGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXIodmFsdWUpIHsKICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTsKICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiB2YWx1ZSkgewogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZyb250bWF0dGVyKGNoaWxkKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHsKICAgICAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSk7CiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVQYXJzZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBvYmplY3QgPSB2YWx1ZTsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkgewogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHBhcnNlRnJvbnRtYXR0ZXIob2JqZWN0W2tleV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gIm51bWJlciIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJib29sZWFuIikgewogICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIpIHsKICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBFWFBSRVNTSU9OLmRhdGUucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGRhdGVQYXJzZS5zdGF0dXMpCiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVQYXJzZS52YWx1ZTsKICAgICAgICAgIGxldCBkdXJhdGlvblBhcnNlID0gRVhQUkVTU0lPTi5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7CiAgICAgICAgICBpZiAoZHVyYXRpb25QYXJzZS5zdGF0dXMpCiAgICAgICAgICAgICAgcmV0dXJuIGR1cmF0aW9uUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgbGlua1BhcnNlID0gRVhQUkVTU0lPTi5lbWJlZExpbmsucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGxpbmtQYXJzZS5zdGF0dXMpCiAgICAgICAgICAgICAgcmV0dXJuIGxpbmtQYXJzZS52YWx1ZTsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICAvLyBCYWNrdXAgaWYgd2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgdHlwZS4KICAgICAgcmV0dXJuIG51bGw7CiAgfQogIC8qKiBBZGQgYSBwYXJzZWQgaW5saW5lIGZpZWxkIHRvIHRoZSBvdXRwdXQgbWFwLiAqLwogIGZ1bmN0aW9uIGFkZFJhd0lubGluZUZpZWxkKGZpZWxkLCBvdXRwdXQpIHsKICAgICAgYWRkSW5saW5lRmllbGQoZmllbGQua2V5LCBwYXJzZUlubGluZVZhbHVlKGZpZWxkLnZhbHVlKSwgb3V0cHV0KTsKICB9CiAgLyoqIEFkZCBhIHJhdyBpbmxpbmUgZmllbGQgdG8gYW4gb3V0cHV0IG1hcCwgY2Fub25pY2FsaXppbmcgYXMgbmVlZGVkLiAqLwogIGZ1bmN0aW9uIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIG91dHB1dCkgewogICAgICBpZiAoIW91dHB1dC5oYXMoa2V5KSkKICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsKICAgICAgZWxzZQogICAgICAgICAgb3V0cHV0LmdldChrZXkpPy5wdXNoKHZhbHVlKTsKICB9CiAgLyoqIEdpdmVuIGEgcmF3IGxpc3Qgb2YgaW5saW5lIGZpZWxkIHZhbHVlcywgYWRkIG5vcm1hbGl6ZWQga2V5cyBhbmQgc3F1YXNoIHRoZW0uICovCiAgZnVuY3Rpb24gZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSB7CiAgICAgIC8vIENvbXB1dGUgdW5pcXVlIG5vcm1hbGl6ZWQga2V5cyAodGhhdCBkbyBub3Qgb3ZlcmxhcCB3LyB0aGUgZmllbGRzKS4KICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBuZXcgTWFwKCk7CiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgbGV0IG5vcm1LZXkgPSBjYW5vbmljYWxpemVWYXJOYW1lKGtleSk7CiAgICAgICAgICBpZiAobm9ybUtleSA9PSAiIiB8fCBmaWVsZHMuaGFzKG5vcm1LZXkpKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgaWYgKCFub3JtYWxpemVkLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCB2YWx1ZXMpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIG5vcm1hbGl6ZWQuc2V0KG5vcm1LZXksIG5vcm1hbGl6ZWQuZ2V0KG5vcm1LZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBDb21iaW5lIG5vcm1hbGl6ZWQgKyBub3JtYWwga2V5cy4KICAgICAgbGV0IGludGVyaW0gPSBuZXcgTWFwKCk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgZmllbGRzKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBub3JtYWxpemVkKTsKICAgICAgLy8gQW5kIHRoZW4gZmxhdHRlbiB0aGVtLgogICAgICBsZXQgcmVzdWx0ID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaW50ZXJpbS5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMSkKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWVbMF0pOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIENvcHkgYWxsIGZpZWxkcyBvZiAnc291cmNlJyBpbnRvICd0YXJnZXQnLiAqLwogIGZ1bmN0aW9uIG1lcmdlRmllbGRHcm91cHModGFyZ2V0LCBzb3VyY2UpIHsKICAgICAgZm9yIChsZXQga2V5IG9mIHNvdXJjZS5rZXlzKCkpIHsKICAgICAgICAgIGlmICghdGFyZ2V0LmhhcyhrZXkpKQogICAgICAgICAgICAgIHRhcmdldC5zZXQoa2V5LCBzb3VyY2UuZ2V0KGtleSkpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHRhcmdldC5zZXQoa2V5LCB0YXJnZXQuZ2V0KGtleSkuY29uY2F0KHNvdXJjZS5nZXQoa2V5KSkpOwogICAgICB9CiAgfQogIC8qKiBGaW5kIHRoZSBoZWFkZXIgdGhhdCBpcyBtb3N0IGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBnaXZlbiBsaW5lIG51bWJlci4gKi8KICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgewogICAgICBpZiAoaGVhZGVycy5sZW5ndGggPT0gMCkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgbGV0IGluZGV4ID0gaGVhZGVycy5sZW5ndGggLSAxOwogICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIGluZGV4LS07CiAgICAgIHJldHVybiBoZWFkZXJzW2luZGV4XS5oZWFkaW5nOwogIH0KCiAgLyoqIEFjdHVhbCBpbXBvcnQgaW1wbGVtZW50YXRpb24gYmFja2VuZC4gVGhpcyBtdXN0IHJlbWFpbiBzZXBhcmF0ZSBmcm9tIGBpbXBvcnQtZW50cnlgIHNpbmNlIGl0IGlzIHVzZWQgd2l0aG91dCB3ZWIgd29ya2Vycy4gKi8KICBmdW5jdGlvbiBydW5JbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXRzLCBtZXRhZGF0YSkgewogICAgICByZXR1cm4gcGFyc2VQYWdlKHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpOwogIH0KCiAgLyoqIFNpbXBsaWZpZXMgcGFzc2luZyBkYXRhdmlldyB2YWx1ZXMgYWNyb3NzIHRoZSBKUyB3ZWIgd29ya2VyIGJhcnJpZXIuICovCiAgdmFyIFRyYW5zZmVyYWJsZTsKICAoZnVuY3Rpb24gKFRyYW5zZmVyYWJsZSkgewogICAgICAvKiogQ29udmVydCBhIGxpdGVyYWwgdmFsdWUgdG8gYSBzZXJpYWxpemVyLWZyaWVuZGx5IHRyYW5zZmVyYWJsZSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHJhbnNmZXJhYmxlKHZhbHVlKSB7CiAgICAgICAgICAvLyBIYW5kbGUgc2ltcGxlIHVuaXZlcnNhbCB0eXBlcyBmaXJzdC4KICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkgewogICAgICAgICAgICAgIGxldCBjb3BpZWQgPSBuZXcgTWFwKCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB2YWx1ZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5zZXQodHJhbnNmZXJhYmxlKGtleSksIHRyYW5zZmVyYWJsZSh2YWwpKTsKICAgICAgICAgICAgICByZXR1cm4gY29waWVkOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IFNldCgpOwogICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB2YWx1ZSkKICAgICAgICAgICAgICAgICAgY29waWVkLmFkZCh0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGxldCB3cmFwcGVkID0gVmFsdWVzLndyYXBWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICBpZiAod3JhcHBlZCA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgdHJhbnNmZXJhYmxlIHZhbHVlOiAiICsgdmFsdWUpOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgIl9fX3RyYW5zZmVyLXR5cGUiOiAiZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSksCiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgem9uZTogd3JhcHBlZC52YWx1ZS56b25lLmVxdWFscyhTeXN0ZW1ab25lLmluc3RhbmNlKSA/IHVuZGVmaW5lZCA6IHdyYXBwZWQudmFsdWUuem9uZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAiZHVyYXRpb24iLCB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSkgfTsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcCh2ID0+IHRyYW5zZmVyYWJsZSh2KSk7CiAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImxpbmsiLCB2YWx1ZTogdHJhbnNmZXJhYmxlKHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSkgfTsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmZXJhYmxlKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlID0gdHJhbnNmZXJhYmxlOwogICAgICAvKiogQ29udmVydCBhIHRyYW5zZmVyYWJsZSB2YWx1ZSBiYWNrIHRvIGEgbGl0ZXJhbCB2YWx1ZSB3ZSBjYW4gd29yayB3aXRoLiAqLwogICAgICBmdW5jdGlvbiB2YWx1ZSh0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgIGlmICh0cmFuc2ZlcmFibGUgPT09IG51bGwpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIE1hcCkgewogICAgICAgICAgICAgIGxldCByZWFsID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdHJhbnNmZXJhYmxlLmVudHJpZXMoKSkKICAgICAgICAgICAgICAgICAgcmVhbC5zZXQodmFsdWUoa2V5KSwgdmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBTZXQpIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdHJhbnNmZXJhYmxlKQogICAgICAgICAgICAgICAgICByZWFsLmFkZCh2YWx1ZSh2YWwpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVhbDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHJhbnNmZXJhYmxlKSkgewogICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlcmFibGUubWFwKHYgPT4gdmFsdWUodikpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRyYW5zZmVyYWJsZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICBpZiAoIl9fX3RyYW5zZmVyLXR5cGUiIGluIHRyYW5zZmVyYWJsZSkgewogICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZU9wdHMgPSB2YWx1ZSh0cmFuc2ZlcmFibGUub3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVEYXRhID0gdmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlRGF0YSwgeyB6b25lOiBkYXRlT3B0cy56b25lIH0pOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExpbmsuZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0cmFuc2ZlcmFibGUpKQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlKHZhbCk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0cmFuc2ZlcmFibGU7CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnZhbHVlID0gdmFsdWU7CiAgfSkoVHJhbnNmZXJhYmxlIHx8IChUcmFuc2ZlcmFibGUgPSB7fSkpOwoKICAvKiogRW50cnktcG9pbnQgc2NyaXB0IHVzZWQgYnkgdGhlIGluZGV4IGFzIGEgd2ViIHdvcmtlci4gKi8KICAvKiogQW4gaW1wb3J0IHdoaWNoIGNhbiBmYWlsIGFuZCByYWlzZSBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGJ5IHRoZSBoYW5kbGVyLiAqLwogIGZ1bmN0aW9uIGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSkgewogICAgICBpZiAobWV0YWRhdGEgPT09IHVuZGVmaW5lZCB8fCBtZXRhZGF0YSA9PT0gbnVsbCkgewogICAgICAgICAgdGhyb3cgRXJyb3IoYENhbm5vdCBpbmRleCBmaWxlLCBzaW5jZSBpdCBoYXMgbm8gT2JzaWRpYW4gZmlsZSBtZXRhZGF0YS5gKTsKICAgICAgfQogICAgICByZXR1cm4gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgfQogIG9ubWVzc2FnZSA9IGFzeW5jIChldnQpID0+IHsKICAgICAgdHJ5IHsKICAgICAgICAgIGxldCB7IHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSB9ID0gZXZ0LmRhdGE7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gZmFpbGFibGVJbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKTsKICAgICAgICAgIHBvc3RNZXNzYWdlKHsgcGF0aDogZXZ0LmRhdGEucGF0aCwgcmVzdWx0OiBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlKHJlc3VsdCkgfSk7CiAgICAgIH0KICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgcGF0aDogZXZ0LmRhdGEucGF0aCwKICAgICAgICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgICAgICAgICAgJGVycm9yOiBgRmFpbGVkIHRvIGluZGV4IGZpbGU6ICR7ZXZ0LmRhdGEucGF0aH06ICR7ZXJyb3J9YCwKICAgICAgICAgICAgICB9LAogICAgICAgICAgfSk7CiAgICAgIH0KICB9OwoKfSkoKTsKCg==', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ @@ -13415,7 +13527,7 @@ function cyrb53(str, seed = 0) { /** Default function implementations for the expression evaluator. */ /** * Allows for the creation of functions that check the number and type of their arguments, and dispatch - * to different implemenations based on the types of the inputs. + * to different implementations based on the types of the inputs. */ class FunctionBuilder { name; @@ -13824,7 +13936,7 @@ var DefaultFunctions; .add2("*", "*", (elem1, elem2, context) => context.evaluate(Fields.binaryOp(Fields.literal(elem1), "=", Fields.literal(elem2))).orElseThrow()) .vectorize(2, [1]) .build(); - // Case insensitive contains which looks for exact word matches (i.e., boundry-to-boundry match). + // Case insensitive contains which looks for exact word matches (i.e., boundary-to-boundary match). DefaultFunctions.containsword = new FunctionBuilder("containsword") .add2("string", "string", (hay, needle) => !!hay.match(new RegExp(".*\\b" + escapeRegex(needle) + "\\b.*", "i"))) .add2("null", "*", (_a, _b) => null) @@ -14018,6 +14130,25 @@ var DefaultFunctions; DefaultFunctions.ldefault = new FunctionBuilder("ldefault") .add2("*", "*", (v, bk) => (Values.isNull(v) ? bk : v)) .build(); + // Returns the display name of the element. + DefaultFunctions.display = new FunctionBuilder("display") + .add1("null", () => "") + .add1("array", (a, ctx) => { + return a.map(e => DefaultFunctions.display(ctx, e)).join(", "); + }) + .add1("string", (str) => normalizeMarkdown(str)) + .add1("link", (a, ctx) => { + if (a.display) { + return DefaultFunctions.display(ctx, a.display); + } + else { + return Values.toString(a, ctx.settings).replace(/\[\[.*\|(.*)\]\]/, "$1"); + } + }) + .add1("*", (a, ctx) => { + return Values.toString(a, ctx.settings); + }) + .build(); DefaultFunctions.choice = new FunctionBuilder("choice") .add3("*", "*", "*", (b, left, right) => (Values.isTruthy(b) ? left : right)) .vectorize(3, [0]) @@ -14157,6 +14288,15 @@ var DefaultFunctions; }) .add1("null", () => null) .build(); + // Returns the first non-null value from the array as a single element + DefaultFunctions.firstvalue = new FunctionBuilder("firstvalue") + .add1("array", a => { + let nonnull = a.filter(v => Values.typeOf(v) != "null"); + let res = nonnull.length != 0 ? nonnull[0] : null; + return res; + }) + .add1("null", () => null) + .build(); })(DefaultFunctions || (DefaultFunctions = {})); /** Default function implementations for the expression evaluator. */ // Keep functions in same order as they're documented !! @@ -14195,6 +14335,7 @@ const DEFAULT_FUNCTIONS = { reverse: DefaultFunctions.reverse, length: DefaultFunctions.length, nonnull: DefaultFunctions.nonnull, + firstvalue: DefaultFunctions.firstvalue, all: DefaultFunctions.all, any: DefaultFunctions.any, none: DefaultFunctions.none, @@ -14222,6 +14363,7 @@ const DEFAULT_FUNCTIONS = { // Utility Operations default: DefaultFunctions.fdefault, ldefault: DefaultFunctions.ldefault, + display: DefaultFunctions.display, choice: DefaultFunctions.choice, striptime: DefaultFunctions.striptime, dateformat: DefaultFunctions.dateformat, @@ -15250,7 +15392,7 @@ function ErrorMessage({ message }) { y$1("p", { class: "dataview dataview-error-message" }, message))); } /** - * Complex convienence hook which calls `compute` every time the index updates, updating the current state. + * Complex convenience hook which calls `compute` every time the index updates, updating the current state. */ function useIndexBackedState(container, app, settings, index, initial, compute) { let [initialized, setInitialized] = h(false); @@ -15418,7 +15560,7 @@ function TaskGrouping({ items, sourcePath }) { function TaskView({ query, sourcePath }) { let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { - let result = await asyncTryOrPropogate(() => executeTask(query, sourcePath, context.index, context.settings)); + let result = await asyncTryOrPropagate(() => executeTask(query, sourcePath, context.index, context.settings)); if (!result.successful) return { state: "error", error: result.error, sourcePath }; else @@ -15570,7 +15712,7 @@ function ListGrouping({ items, sourcePath }) { function ListView({ query, sourcePath }) { let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { - let result = await asyncTryOrPropogate(() => executeList(query, context.index, sourcePath, context.settings)); + let result = await asyncTryOrPropagate(() => executeList(query, context.index, sourcePath, context.settings)); if (!result.successful) return { state: "error", error: result.error, sourcePath }; return { state: "ready", items: result.value.data }; @@ -15618,7 +15760,7 @@ function TableGrouping({ headings, values, sourcePath, }) { function TableView({ query, sourcePath }) { let context = q$1(DataviewContext); let items = useIndexBackedState(context.container, context.app, context.settings, context.index, { state: "loading" }, async () => { - let result = await asyncTryOrPropogate(() => executeTable(query, context.index, sourcePath, context.settings)); + let result = await asyncTryOrPropagate(() => executeTable(query, context.index, sourcePath, context.settings)); if (!result.successful) return { state: "error", error: result.error }; return { state: "ready", headings: result.value.names, values: result.value.data }; @@ -18497,7 +18639,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { } async render() { this.container.innerHTML = ""; - let maybeResult = await asyncTryOrPropogate(() => executeCalendar(this.query, this.index, this.origin, this.settings)); + let maybeResult = await asyncTryOrPropagate(() => executeCalendar(this.query, this.index, this.origin, this.settings)); if (!maybeResult.successful) { renderErrorPre(this.container, "Dataview: " + maybeResult.error); return; @@ -18694,7 +18836,7 @@ class DataviewInlineApi { * Note that `this` is implicitly available and refers to the current file. * * This method returns a Result type instead of throwing an error; you can check the result of the - * execution via `result.successful` and obtain `result.value` or `result.error` resultingly. If + * execution via `result.successful` and obtain `result.value` or `result.error` accordingly. If * you'd rather this method throw on an error, use `dv.tryEvaluate`. */ evaluate(expression, context) { @@ -18725,7 +18867,7 @@ class DataviewInlineApi { array(raw) { return this.api.array(raw); } - /** Return true if theg given value is a javascript array OR a dataview data array. */ + /** Return true if the given value is a javascript array OR a dataview data array. */ isArray(raw) { return this.api.isArray(raw); } @@ -18996,7 +19138,7 @@ function markdownTable(headers, values, settings) { let table = `| ${headers.map((v, i) => padright(escapeTable(v), " ", maxLengths[i])).join(" | ")} |\n`; // Then the separating column. table += `| ${maxLengths.map(i => padright("", "-", i)).join(" | ")} |\n`; - // Then the data colunns. + // Then the data columns. for (let row = 0; row < values.length; row++) { table += `| ${mvalues[row].map((v, i) => padright(v, " ", maxLengths[i])).join(" | ")} |\n`; } @@ -19164,7 +19306,7 @@ class DataviewApi { this.func = Functions.bindAll(DEFAULT_FUNCTIONS, this.evaluationContext); this.io = new DataviewIOApi(this); } - /** Utilities to check the current Dataview version and comapre it to SemVer version ranges. */ + /** Utilities to check the current Dataview version and compare it to SemVer version ranges. */ version = (() => { const self = this; return { @@ -19384,7 +19526,7 @@ class DataviewApi { * ``` * * This method returns a Result type instead of throwing an error; you can check the result of the - * execution via `result.successful` and obtain `result.value` or `result.error` resultingly. If + * execution via `result.successful` and obtain `result.value` or `result.error` accordingly. If * you'd rather this method throw on an error, use `dv.tryEvaluate`. */ evaluate(expression, context, originFile) { @@ -19423,7 +19565,7 @@ class DataviewApi { renderCodeBlock(container, source); return; } - let maybeQuery = tryOrPropogate(() => parseQuery(source)); + let maybeQuery = tryOrPropagate(() => parseQuery(source)); // In case of parse error, just render the error. if (!maybeQuery.successful) { renderErrorPre(container, "Dataview: " + maybeQuery.error); @@ -19561,7 +19703,7 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { } async render() { this.errorbox?.remove(); - let result = tryOrPropogate(() => executeInline(this.field, this.origin, this.index, this.settings)); + let result = tryOrPropagate(() => executeInline(this.field, this.origin, this.index, this.settings)); if (!result.successful) { this.errorbox = this.container.createEl("div"); renderErrorPre(this.errorbox, "Dataview (for inline query '" + this.fieldText + "'): " + result.error); @@ -19607,7 +19749,11 @@ async function replaceInlineFields(ctx, init) { else { renderContainer.createSpan({ cls: ["dataview", "inline-field-standalone-value"], - attr: { id: "dataview-inline-field-" + x }, + attr: { + id: "dataview-inline-field-" + x, + "data-dv-key": field.key, + "data-dv-norm-key": canonicalizeVarName(field.key), + }, }); } result = result.slice(0, field.start) + renderContainer.outerHTML + result.slice(field.end); @@ -19929,14 +20075,14 @@ function inlinePlugin(app, index, settings, api) { if (text.startsWith(settings.inlineQueryPrefix)) { if (settings.enableInlineDataview) { code = text.substring(settings.inlineQueryPrefix.length).trim(); - const field = tryOrPropogate(() => parseField(code)); + const field = tryOrPropagate(() => parseField(code)); if (!field.successful) { result = `Dataview (inline field '${code}'): ${field.error}`; el.innerText = result; } else { const fieldValue = field.value; - const intermediateResult = tryOrPropogate(() => executeInline(fieldValue, currentFile.path, index, settings)); + const intermediateResult = tryOrPropagate(() => executeInline(fieldValue, currentFile.path, index, settings)); if (!intermediateResult.successful) { result = `Dataview (for inline query '${fieldValue}'): ${intermediateResult.error}`; el.innerText = result; @@ -20043,7 +20189,7 @@ function buildInlineFields(state$1) { const inlineFieldsField = state.StateField.define({ create: buildInlineFields, update(oldFields, tr) { - return tr.docChanged ? buildInlineFields(tr.state) : oldFields; + return buildInlineFields(tr.state); }, }); /** Create a view plugin that renders inline fields in live preview just as in the reading view. */ @@ -20091,10 +20237,7 @@ const replaceInlineFieldsInLivePreview = (app, settings) => view.ViewPlugin.from this.decorations = this.decorations.map(update.changes); this.updateDecorations(update.view); } - else if (update.selectionSet) { - this.updateDecorations(update.view); - } - else if (update.viewportChanged || layoutChanged) { + else if (update.selectionSet || update.viewportChanged || layoutChanged) { this.decorations = this.buildDecorations(update.view); } } @@ -20188,6 +20331,10 @@ class InlineFieldWidget extends view.WidgetType { renderCompactMarkdown(this.app, this.field.key, key, this.sourcePath, this.component, true); const value = renderContainer.createSpan({ cls: ["dataview", "inline-field-value"], + attr: { + "data-dv-key": this.field.key, + "data-dv-norm-key": canonicalizeVarName(this.field.key), + }, }); renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); this.addKeyClickHandler(key, renderContainer); @@ -20196,6 +20343,10 @@ class InlineFieldWidget extends view.WidgetType { else { const value = renderContainer.createSpan({ cls: ["dataview", "inline-field-standalone-value"], + attr: { + "data-dv-key": this.field.key, + "data-dv-norm-key": canonicalizeVarName(this.field.key), + }, }); renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); this.addValueClickHandler(value, renderContainer); @@ -20409,7 +20560,7 @@ class DataviewPlugin extends obsidian.Plugin { let potentialField = text.substring(this.settings.inlineQueryPrefix.length).trim(); if (potentialField.length == 0) continue; - let field = tryOrPropogate(() => parseField(potentialField)); + let field = tryOrPropagate(() => parseField(potentialField)); if (!field.successful) { let errorBlock = el.createEl("div"); renderErrorPre(errorBlock, `Dataview (inline field '${potentialField}'): ${field.error}`); diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index 95b8152..926b2a6 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.67", + "version": "0.5.68", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/.obsidian/plugins/dataview/styles.css b/.obsidian/plugins/dataview/styles.css index e884570..618821a 100644 --- a/.obsidian/plugins/dataview/styles.css +++ b/.obsidian/plugins/dataview/styles.css @@ -1,8 +1,3 @@ -/** Live Preview padding fixes, specifically for DataviewJS custom HTML elements. */ -.is-live-preview .block-language-dataviewjs > p, .is-live-preview .block-language-dataviewjs > span { - line-height: 1.0; -} - .block-language-dataview { overflow-y: auto; } @@ -74,7 +69,7 @@ padding-right: 8px; font-family: var(--font-monospace); background-color: var(--background-primary-alt); - color: var(--text-nav-selected); + color: var(--nav-item-color-selected); } .dataview.inline-field-value { @@ -82,7 +77,7 @@ padding-right: 8px; font-family: var(--font-monospace); background-color: var(--background-secondary-alt); - color: var(--text-nav-selected); + color: var(--nav-item-color-selected); } .dataview.inline-field-standalone-value { @@ -90,7 +85,7 @@ padding-right: 8px; font-family: var(--font-monospace); background-color: var(--background-secondary-alt); - color: var(--text-nav-selected); + color: var(--nav-item-color-selected); } /***************/ diff --git a/.obsidian/plugins/dynamic-outline/main.js b/.obsidian/plugins/dynamic-outline/main.js index 008b52d..77f4858 100644 --- a/.obsidian/plugins/dynamic-outline/main.js +++ b/.obsidian/plugins/dynamic-outline/main.js @@ -3,6 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var b=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var U=(a,e)=>{for(var t in e)b(a,t,{get:e[t],enumerable:!0})},R=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of N(e))!$.call(a,n)&&n!==t&&b(a,n,{get:()=>e[n],enumerable:!(i=I(e,n))||i.enumerable});return a};var z=a=>R(b({},"__esModule",{value:!0}),a);var G={};U(G,{default:()=>C});module.exports=z(G);var S=require("obsidian");var O=require("obsidian"),j="list",T="dynamic-outline-button",d=class{constructor(e){this._hideTimeout=null;this._plugin=e}_createButtonHTML(){let e=createEl("button",{cls:`clickable-icon view-action ${T}`,attr:{"aria-label":"Toggle Dynamic Outline"}});return(0,O.setIcon)(e,j),e}_handleButtonClick(){let e=this._plugin.getActiveMarkdownView();if(!e)return;let t=this._plugin.windowManager.getWindowFromView(e);if(t){if(this._plugin.settings.toggleOnHover){if(t.hasAttribute("pinned"))this.clearHideTimeout();else{t.setAttribute("pinned","");return}t.removeAttribute("pinned")}this._plugin.windowManager.hideWindowFromView(e)}else{let i=this._plugin.windowManager.createWindowForView(e,this._plugin.headingsManager.getHeadingsForView(e));this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this.clearHideTimeout()),i.setAttribute("pinned",""))}}_handleMouseEnter(){let e=this._plugin.getActiveMarkdownView();if(!e)return;if(!this._plugin.windowManager.getWindowFromView(e)){let i=this._plugin.windowManager.createWindowForView(e,this._plugin.headingsManager.getHeadingsForView(e));this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this.clearHideTimeout()),this._plugin.registerDomEvent(i,"mouseleave",()=>this._handleMouseLeave()))}this._plugin.settings.toggleOnHover&&this.clearHideTimeout()}_handleMouseLeave(){let e=this._plugin.getActiveMarkdownView();if(!e)return;let t=this._plugin.windowManager.getWindowFromView(e);t&&(t.hasAttribute("pinned")||(this._hideTimeout=setTimeout(()=>{this._plugin.windowManager.hideWindowFromView(e)},100)))}clearHideTimeout(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null)}addButtonToLeaf(e){if(this.getButtonFromLeaf(e))return;let t=e.view.containerEl.querySelector("div.view-actions");if(!t)return;let i=this._createButtonHTML();return t.insertBefore(i,t.firstChild),this._plugin.registerDomEvent(i,"click",n=>this._handleButtonClick()),this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this._handleMouseEnter()),this._plugin.registerDomEvent(i,"mouseleave",()=>this._handleMouseLeave())),i}addButtonToLeaves(){this._plugin.app.workspace.onLayoutReady(()=>{this._plugin.getAllMarkdownLeaves().forEach(t=>{this.addButtonToLeaf(t)})})}getButtonFromLeaf(e){return e.view.containerEl.querySelector(`button.${T}`)}removeButtonFromLeaf(e){var t;(t=this.getButtonFromLeaf(e))==null||t.remove()}removeButtonFromLeaves(){this._plugin.getAllMarkdownLeaves().forEach(t=>{this.removeButtonFromLeaf(t)})}};var V=require("obsidian");var h=class{constructor(e,t){this.plugin=t,this.searchContainer=e,this.inputField=this.searchContainer.createEl("input",{attr:{placeholder:"Search headings...",type:"search"}}),this.clearButton=this.searchContainer.createEl("div",{cls:"search-input-clear-button dynamic-outline-search-clear-button",attr:{"aria-label":"Clear search"}}),this.setupEventListeners()}setupEventListeners(){this.plugin.registerDomEvent(this.searchContainer,"input",()=>{this.toggleClearButton()}),this.plugin.registerDomEvent(this.clearButton,"click",()=>{this.clearInput()})}toggleClearButton(){this.inputField.value.length>0?(this.clearButton.classList.add("visible"),this.inputField.classList.add("has-content")):(this.clearButton.classList.remove("visible"),this.inputField.classList.remove("has-content"))}clearInput(){this.inputField.value="";let e=new Event("input",{bubbles:!0,cancelable:!0});this.inputField.dispatchEvent(e),this.inputField.focus()}};var m=class{constructor(e){this.plugin=e}handleFileOpen(){let e=this.plugin.app.workspace.getActiveViewOfType(V.MarkdownView);if(!e)return;let t=this.getWindowFromView(e),i=this.plugin.headingsManager.getHeadingsForView(e);!i||i.length{let n=this.createWindowForView(e,i);this.plugin.settings.toggleOnHover&&n.setAttribute("pinned","")},50)}_createWindowHTML(){let e=createEl("div",{attr:{id:"dynamic-outline"}}),t=e.createEl("div",{cls:"dynamic-outline-search-container"});return new h(t,this.plugin),e.createEl("div",{cls:"dynamic-outline-content-container"}).createEl("ul",{}),e}_createWindowListElement(e){let t=createEl("li",{attr:{"data-heading-line":e.position.start.line}}),i=createEl("a",{cls:`heading-level-${e.level}`,text:e.heading});return t.append(i),t}createWindowForView(e,t){let i=this._createWindowHTML();this.updateWindowWithHeadings(i,t,e);let n=i.querySelector("input");n&&this.plugin.registerDomEvent(n,"input",()=>{let o=n.value.toLowerCase(),u=i.querySelectorAll("li");u==null||u.forEach(c=>{var r;(r=c.textContent)!=null&&r.toLowerCase().includes(o)?c.classList.remove("outline-item-hidden"):c.classList.add("outline-item-hidden")})}),e.contentEl.append(i),this.plugin.settings.autofocusSearchOnOpen&&(n==null||n.focus()),this.plugin.settings.highlightCurrentHeading&&this.plugin.highlightCurrentHeading("start");let s=this.plugin.buttonManager.getButtonFromLeaf(e.leaf);return s==null||s.classList.add("button-active"),this.checkForAbstructions(i),i}checkForAbstructions(e){let t=document.getElementById("cMenuToolbarModalBar");t!=null&&t.classList.contains("top")&&e.classList.add("obstruction-top")}updateWindowWithHeadings(e,t,i){let n=e.querySelector("ul");n&&(n.empty(),t==null||t.forEach(s=>{let o=this._createWindowListElement(s);n.append(o),o.onclick=()=>{if(i.leaf.openFile(i.file,{eState:{line:s.position.start.line}}),setTimeout(()=>{i==null||i.currentMode.applyScroll(s.position.start.line)},0),this.plugin.settings.resetSearchFieldOnHeadingClick){let u=e.querySelector("input");if(u){u.value="";let c=new Event("input",{bubbles:!0,cancelable:!0});u.dispatchEvent(c),u.focus()}}}}))}getWindowFromView(e){return e==null?void 0:e.contentEl.querySelector("#dynamic-outline")}hideWindowFromView(e){let t=this.getWindowFromView(e),i=e==null?void 0:e.containerEl.querySelector(`button.${T}`);this._hideWindow(t,i)}_hideWindow(e,t){this.plugin.settings.toggleOnHover&&e&&e.hasAttribute("pinned")||(e==null||e.remove(),t==null||t.classList.remove("button-active"))}};var F=require("obsidian"),p=class{constructor(e){this.plugin=e}_cleanupHeadings(e){let t=s=>(0,F.htmlToMarkdown)(s).replaceAll("*","").replaceAll("_","").replaceAll("`","").replaceAll("==","").replaceAll("~~",""),i=s=>s.replace(/\[([^\]]+)\]\(.*?\)/g,"$1").replace(/\[\[([^\]]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1"),n=e;return n.forEach(s=>{let o=s.heading;o=t(o),o=i(o),s.heading=o}),n}getHeadingsForView(e){var o;let t=e==null?void 0:e.file;if(!t)return[];let n=(o=(this.plugin.app.metadataCache.getFileCache(t)||{}).headings)!=null?o:[];return this._cleanupHeadings(n)}};var k=require("obsidian");var _=require("obsidian");var l=class{constructor(e,t){this.plugin=e,this.containerEl=t}};var w=class extends l{display(){new _.Setting(this.containerEl).setName("Autofocus search field on open").setDesc("Focus the search field immediately after the outline is opened.").addToggle(e=>{e.setValue(this.plugin.settings.autofocusSearchOnOpen).onChange(async t=>{this.plugin.settings.autofocusSearchOnOpen=t,await this.plugin.saveSettings()})})}};var A=require("obsidian");var f=class extends l{display(){new A.Setting(this.containerEl).setName("Highlight active heading").setDesc(g('Highlight the current outline heading when scrolling the file.
Requires a restart to take effect.')).addToggle(e=>{e.setValue(this.plugin.settings.highlightCurrentHeading).onChange(async t=>{this.plugin.settings.highlightCurrentHeading=t,await this.plugin.saveSettings()})})}};var W=require("obsidian");var v=class extends l{display(){new W.Setting(this.containerEl).setName("Style customizations").setDesc(g('Please use the Style Settings plugin to apply custom font size, opacity, alignment, etc.'))}};var B=require("obsidian");var H=class extends l{display(){new B.Setting(this.containerEl).setName("Reset search field").setDesc("Erase the search field contents after jumping to a heading.").addToggle(e=>{e.setValue(this.plugin.settings.resetSearchFieldOnHeadingClick).onChange(async t=>{this.plugin.settings.resetSearchFieldOnHeadingClick=t,await this.plugin.saveSettings()})})}};var D=require("obsidian");var M=class extends l{display(){new D.Setting(this.containerEl).setName("Toggle automatically").setDesc(g('Show and hide the outline automatically based on the number of headings in the file.
Requires a restart to take effect.')).addToggle(t=>{t.setValue(this.plugin.settings.toggleAutomatically).onChange(async i=>{this.plugin.settings.toggleAutomatically=i,await this.plugin.saveSettings(),e.setDisabled(!i)})});let e=new D.Setting(this.containerEl).setName("Minimum headings").setDesc(g("The minimum number of headings in the file to trigger the outline.")).addSlider(t=>{t.setLimits(1,10,1).setDynamicTooltip().setValue(this.plugin.settings.minimumHeadings).onChange(async i=>{this.plugin.settings.minimumHeadings=i,await this.plugin.saveSettings()})}).setDisabled(!this.plugin.settings.toggleAutomatically)}};var P=require("obsidian");var E=class extends l{display(){new P.Setting(this.containerEl).setName("Toggle on hover").setDesc(g("Show and hide on mouse hover. Pin the outline on mouse click.")).addToggle(e=>{e.setValue(this.plugin.settings.toggleOnHover).onChange(async t=>{this.plugin.settings.toggleOnHover=t,await this.plugin.saveSettings()})})}};var x={autofocusSearchOnOpen:!0,highlightCurrentHeading:!0,minimumHeadings:1,resetSearchFieldOnHeadingClick:!0,toggleAutomatically:!1,toggleOnHover:!1};function g(a){return(0,k.sanitizeHTMLToDom)(a)}var y=class extends k.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i}display(){let{containerEl:t}=this;t.empty(),new M(this.plugin,t).display(),new E(this.plugin,t).display(),new f(this.plugin,t).display(),new H(this.plugin,t).display(),new w(this.plugin,t).display(),new v(this.plugin,t).display()}};var C=class extends S.Plugin{constructor(){super(...arguments);this.headingsManager=new p(this);this.buttonManager=new d(this);this.windowManager=new m(this);this.getAllMarkdownLeaves=()=>this.app.workspace.getLeavesOfType("markdown");this.getActiveMarkdownView=()=>this.app.workspace.getActiveViewOfType(S.MarkdownView);this.handleMetadataChanged=()=>{let t=this.getActiveMarkdownView(),i=this.windowManager.getWindowFromView(t);if(!i)return;let n=this.headingsManager.getHeadingsForView(t);this.windowManager.updateWindowWithHeadings(i,n,t)};this.highlightCurrentHeading=(t="nearest")=>{let i=this.getActiveMarkdownView(),n=this.windowManager.getWindowFromView(i);if(!n)return;let s=this.headingsManager.getHeadingsForView(i),o=i==null?void 0:i.currentMode.getScroll(),u=s.reduce((r,L)=>o!==void 0&&L.position.start.line<=o+1&&(!r||r.position.start.lineq.classList.remove("highlight")),r.classList.add("highlight"))}else{let r=n.querySelector("li");r&&r.classList.add("highlight")}let c=n.querySelector("li.highlight");c&&c.scrollIntoView({behavior:"instant",block:t})}}async onload(){await this.loadSettings(),this.addSettingTab(new y(this.app,this)),this.app.workspace.trigger("parse-style-settings"),this.buttonManager.addButtonToLeaves(),this.registerEvent(this.app.workspace.on("layout-change",()=>{this.buttonManager.addButtonToLeaves()})),this.settings.toggleAutomatically&&this.registerEvent(this.app.workspace.on("file-open",()=>{this.windowManager.handleFileOpen()})),this.registerEvent(this.app.workspace.on("active-leaf-change",()=>{this.handleMetadataChanged()})),this.registerEvent(this.app.metadataCache.on("changed",()=>{this.handleMetadataChanged()})),this.settings.highlightCurrentHeading&&(activeWindow.document.addEventListener("scroll",t=>{let i=t.target;i!=null&&i.classList.contains("dynamic-outline-content-container")||this.highlightCurrentHeading()},!0),this.registerEvent(this.app.metadataCache.on("changed",()=>{this.highlightCurrentHeading()}))),this.addCommand({id:"toggle-dynamic-outline",name:"Toggle for current file",checkCallback:t=>{let i=this.getActiveMarkdownView();if(i){if(!t){let n=this.windowManager.getWindowFromView(i);if(n)this.settings.toggleOnHover&&n.removeAttribute("pinned"),this.windowManager.hideWindowFromView(i);else{let s=this.windowManager.createWindowForView(i,this.headingsManager.getHeadingsForView(i));this.settings.toggleOnHover&&s.setAttribute("pinned","")}}return!0}return!1}})}onunload(){this.buttonManager.removeButtonFromLeaves()}async loadSettings(){this.settings=Object.assign({},x,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}}; +var vt=Object.create;var Se=Object.defineProperty;var mt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,bt=Object.prototype.hasOwnProperty;var _t=(p,e)=>()=>(e||p((e={exports:{}}).exports,e),e.exports),yt=(p,e)=>{for(var t in e)Se(p,t,{get:e[t],enumerable:!0})},Ke=(p,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of ft(e))!bt.call(p,l)&&l!==t&&Se(p,l,{get:()=>e[l],enumerable:!(n=mt(e,l))||n.enumerable});return p};var Et=(p,e,t)=>(t=p!=null?vt(wt(p)):{},Ke(e||!p||!p.__esModule?Se(t,"default",{value:p,enumerable:!0}):t,p)),Ot=p=>Ke(Se({},"__esModule",{value:!0}),p);var Qe=_t((Ye,De)=>{((p,e)=>{typeof define=="function"&&define.amd?define([],e):typeof De=="object"&&De.exports?De.exports=e():p.fuzzysort=e()})(Ye,p=>{"use strict";var e=(s,i)=>{if(!s||!i)return B;var a=T(s);ee(i)||(i=w(i));var c=a.bitflags;return(c&i._bitflags)!==c?B:$(a,i)},t=(s,i,a)=>{if(!s)return a!=null&&a.all?z(i,a):Ne;var c=T(s),d=c.bitflags,u=c.containsSpace,o=I((a==null?void 0:a.threshold)||0),g=(a==null?void 0:a.limit)||Fe,h=0,f=0,b=i.length;function N(te){hTe.peek()._score&&Te.replaceTop(te))}if(a!=null&&a.key)for(var A=a.key,E=0;E-1e3&&K[C]>R){var x=(K[C]+j[C])/4;x>K[C]&&(K[C]=x)}j[C]>K[C]&&(K[C]=j[C])}}if(u){for(let L=0;L-1e3&&V>R){var x=(V+H._score)/4;x>V&&(V=x)}H._score>V&&(V=H._score)}}if(q.obj=F,q._score=V,a!=null&&a.scoreFn){if(V=a.scoreFn(q),!V)continue;V=I(V),q._score=V}V=0;--E)X[E]=Te.poll();return X.total=h+f,X},n=(s,i="",a="")=>{for(var c=typeof i=="function"?i:void 0,d=s.target,u=d.length,o=s.indexes,g="",h=0,f=0,b=!1,N=[],A=0;A{typeof s=="number"?s=""+s:typeof s!="string"&&(s="");var i=ke(s);return S(s,{_targetLower:i._lower,_targetLowerCodes:i.lowerCodes,_bitflags:i.bitflags})},r=()=>{Ae.clear(),Pe.clear()};class v{get indexes(){return this._indexes.slice(0,this._indexes.len).sort((i,a)=>i-a)}set indexes(i){return this._indexes=i}highlight(i,a){return n(this,i,a)}get score(){return D(this._score)}set score(i){this._score=I(i)}}class y extends Array{get score(){return D(this._score)}set score(i){this._score=I(i)}}var S=(s,i)=>{var c,d,u,o,g,h,f;let a=new v;return a.target=s,a.obj=(c=i.obj)!=null?c:B,a._score=(d=i._score)!=null?d:R,a._indexes=(u=i._indexes)!=null?u:[],a._targetLower=(o=i._targetLower)!=null?o:"",a._targetLowerCodes=(g=i._targetLowerCodes)!=null?g:B,a._nextBeginningIndexes=(h=i._nextBeginningIndexes)!=null?h:B,a._bitflags=(f=i._bitflags)!=null?f:0,a},D=s=>s===R?0:s>1?s:Math.E**(((-s+1)**.04307-1)*-2),I=s=>s===0?R:s>1?s:1-Math.pow(Math.log(s)/-2+1,1/.04307),W=s=>{typeof s=="number"?s=""+s:typeof s!="string"&&(s=""),s=s.trim();var i=ke(s),a=[];if(i.containsSpace){var c=s.split(/\s+/);c=[...new Set(c)];for(var d=0;d{if(s.length>999)return l(s);var i=Ae.get(s);return i!==void 0||(i=l(s),Ae.set(s,i)),i},T=s=>{if(s.length>999)return W(s);var i=Pe.get(s);return i!==void 0||(i=W(s),Pe.set(s,i)),i},z=(s,i)=>{var a=[];a.total=s.length;var c=(i==null?void 0:i.limit)||Fe;if(i!=null&&i.key)for(var d=0;d=c)return a}}else if(i!=null&&i.keys)for(var d=0;d=0;--f){var o=Ce(u,i.keys[f]);if(!o){h[f]=le;continue}ee(o)||(o=w(o)),o._score=R,o._indexes.len=0,h[f]=o}if(h.obj=u,h._score=R,a.push(h),a.length>=c)return a}else for(var d=0;d=c))return a}return a},$=(s,i,a=!1,c=!1)=>{if(a===!1&&s.containsSpace)return ct(s,i,c);for(var d=s._lower,u=s.lowerCodes,o=u[0],g=i._targetLowerCodes,h=u.length,f=g.length,E=0,b=0,N=0;;){var A=o===g[b];if(A){if(G[N++]=b,++E,E===h)break;o=u[E]}if(++b,b>=f)return B}var E=0,F=!1,O=0,H=i._nextBeginningIndexes;H===B&&(H=i._nextBeginningIndexes=ht(i.target)),b=G[0]===0?0:H[G[0]-1];var Q=0;if(b!==f)for(;;)if(b>=f){if(E<=0||(++Q,Q>200))break;--E;var J=Le[--O];b=H[J]}else{var A=u[E]===g[b];if(A){if(Le[O++]=b,++E,E===h){F=!0;break}++b}else b=H[b]}var P=h<=1?-1:i._targetLower.indexOf(d,G[0]),_=!!~P,x=_?P===0||i._nextBeginningIndexes[P-1]===P:!1;if(_&&!x){for(var m=0;m{for(var C=0,Ge=0,U=1;U24&&(C*=(ze-24)*10)}return C-=(f-h)/2,_&&(C/=1+h*h*1),x&&(C/=1+h*h*1),C-=(f-h)/2,C};if(F)if(x){for(var m=0;m{for(var c=new Set,d=0,u=B,o=0,g=s.spaceSearches,h=g.length,f=0,b=()=>{for(let x=f-1;x>=0;x--)i._nextBeginningIndexes[He[x*2+0]]=He[x*2+1]},N=!1,_=0;_=0&&Q===i._nextBeginningIndexes[m];m--)i._nextBeginningIndexes[m]=H,He[f*2+0]=m,He[f*2+1]=Q,f++}}d+=u._score/h,j[_]=u._score/h,u._indexes[0]d){if(a)for(var _=0;_s.replace(/\p{Script=Latin}+/gu,i=>i.normalize("NFD")).replace(/[\u0300-\u036f]/g,""),ke=s=>{s=$e(s);for(var i=s.length,a=s.toLowerCase(),c=[],d=0,u=!1,o=0;o=97&&g<=122?g-97:g>=48&&g<=57?26:g<=127?30:31;d|=1<{for(var i=s.length,a=[],c=0,d=!1,u=!1,o=0;o=65&&g<=90,f=h||g>=97&&g<=122||g>=48&&g<=57,b=h&&!d||!u||!f;d=h,u=f,b&&(a[c++]=o)}return a},ht=s=>{s=$e(s);for(var i=s.length,a=dt(s),c=[],d=a[0],u=0,o=0;oo?c[o]=d:(d=a[++u],c[o]=d===void 0?i:d);return c},Ae=new Map,Pe=new Map,G=[],Le=[],He=[],K=[],j=[],We=[],se=[],Ce=(s,i)=>{var a=s[i];if(a!==void 0)return a;if(typeof i=="function")return i(s);var c=i;Array.isArray(i)||(c=i.split("."));for(var d=c.length,u=-1;s&&++utypeof s=="object"&&typeof s._bitflags=="number",Fe=1/0,R=-Fe,Ne=[];Ne.total=0;var B=null,le=l(""),gt=s=>{var i=[],a=0,c={},d=u=>{for(var o=0,g=i[o],h=1;h>1]=i[o],h=1+(o<<1)}for(var b=o-1>>1;o>0&&g._score>1)i[o]=i[b];i[o]=g};return c.add=u=>{var o=a;i[a++]=u;for(var g=o-1>>1;o>0&&u._score>1)i[o]=i[g];i[o]=u},c.poll=u=>{if(a!==0){var o=i[0];return i[0]=i[--a],d(),o}},c.peek=u=>{if(a!==0)return i[0]},c.replaceTop=u=>{i[0]=u,d()},c},Te=gt();return{single:e,go:t,prepare:l,cleanup:r}})});var Lt={};yt(Lt,{BUTTON_CLASS:()=>Re,LUCID_ICON_NAME:()=>qe,WINDOW_ID:()=>Oe,default:()=>xe});module.exports=Ot(Lt);var Y=require("obsidian");var Je=require("obsidian");var Ue=require("obsidian"),oe=class{constructor(e,t){this._plugin=e,this._outline=t,this._containerEl=this._createElement(),this._setupEventListeners()}get visible(){let e=this._containerEl.isConnected,t=this._containerEl.classList.contains("hidden");return e&&!t}set visible(e){this._containerEl.isConnected||this._connectToDOM(this._containerEl),this._containerEl.classList.toggle("hidden",!e)}get active(){return this._containerEl.classList.contains("button-active")}set active(e){this._containerEl.classList.toggle("button-active",e)}set pinned(e){this._containerEl.classList.toggle("pinned",e)}getContainerElement(){return this._containerEl}_setupEventListeners(){this._plugin.registerDomEvent(this._containerEl,"click",()=>this.handleClick()),this._plugin.settings.revealOnHover&&(this._plugin.registerDomEvent(this._containerEl,"mouseenter",()=>this._handleMouseEnter()),this._plugin.registerDomEvent(this._containerEl,"mouseleave",()=>this._handleMouseLeave()))}_createElement(){let e=createEl("button",{cls:`clickable-icon view-action ${Re} hidden`,attr:{"aria-label":"Toggle Dynamic Outline"}});return(0,Ue.setIcon)(e,qe),this._connectToDOM(e),e}_connectToDOM(e){if(this._plugin.settings.outlinePosition==="right"){let t=this._outline.view.containerEl.querySelector(".view-actions");t==null||t.insertBefore(e,t==null?void 0:t.firstChild)}else if(this._plugin.settings.outlinePosition==="left"){let t=this._outline.view.containerEl.querySelector(".view-header-left .view-header-nav-buttons");t==null||t.appendChild(e)}else console.error("Invalid window location: ",this._plugin.settings.outlinePosition)}_handleMouseEnter(){this._outline.windowVisible||this._outline.showWindow({scrollBlock:"start"}),this._plugin.settings.revealOnHover&&this._outline.clearWindowHideTimeout()}_handleMouseLeave(){this._outline.windowVisible&&!this._outline.windowPinned&&this._outline.hideWindow({timeout:100})}handleClick(){if(this._outline.windowVisible){if(this._plugin.settings.revealOnHover)if(this._outline.windowPinned)this._outline.windowPinned=!1,this._outline.clearWindowHideTimeout();else{this._outline.windowPinned=!0;return}this._outline.hideWindow()}else this._outline.showWindow({scrollBlock:"start"}),this._plugin.settings.revealOnHover&&(this._outline.windowPinned=!0)}show(){this.visible||(this.active=this.visible,this.visible=!0)}hide(){this.visible&&(this.visible=!1)}destroy(){this._containerEl.remove()}};var ie=class{constructor(e,t){this._plugin=e,t?(this.element=t,this.inputField=this.element.querySelector("input"),this.clearButton=this.element.querySelector(".dynamic-outline-search-clear-button")):(this.element=createEl("div",{cls:"dynamic-outline-search-container"}),this.inputField=createEl("input",{attr:{placeholder:"Search headings\u2026",type:"search"}}),this.element.appendChild(this.inputField),this.clearButton=createEl("div",{cls:"search-input-clear-button dynamic-outline-search-clear-button",attr:{"aria-label":"Clear search"}}),this.element.appendChild(this.clearButton),this.setupEventListeners())}setupEventListeners(){this._plugin.registerDomEvent(this.inputField,"input",()=>{this.handleInput()}),this._plugin.registerDomEvent(this.clearButton,"click",()=>{this.clearInput()})}clearInput(e=!0){this.inputField.value="";let t=new Event("input",{bubbles:!0,cancelable:!0});this.inputField.dispatchEvent(t),e&&this.inputField.focus()}handleInput(){this.inputField.value.length>0?(this.clearButton.classList.add("visible"),this.inputField.classList.add("has-content")):(this.clearButton.classList.remove("visible"),this.inputField.classList.remove("has-content"))}};var re=class{constructor(e,t){this.COLLAPSE_ICON_SVG='';this._plugin=e,this._outline=t}createLiElement(e,t,n,l,r,v){let y=l+1e.level,S=r&&y,D=t===1&&!v,I=[`tab-level-${t}`,`li-heading-level-${e.level}`];S&&I.push("has-children"),D&&I.push("is-single-top-level");let W=createEl("li",{cls:I,attr:{"data-heading-line":e.position.start.line,"data-level":t}});if(r&&!D){let T=createEl("span",{cls:"dynamic-outline-collapse-icon"});T.innerHTML=this.COLLAPSE_ICON_SVG,S?T.addEventListener("click",z=>this._handleCollapseToggle(z)):T.style.cursor="default",W.append(T)}let w=createEl("a",{cls:`heading-level-${e.level}`,text:e.heading});return W.append(w),this._setupEventListener(W,e),W}updateLiElementLine(e,t){e.setAttribute("data-heading-line",t.position.start.line.toString()),this._setupEventListener(e,t)}_setupEventListener(e,t){e.onclick=n=>{n.target.closest(".dynamic-outline-collapse-icon")||this._handleClick(t)},e.addEventListener("mouseenter",()=>{e.classList.add("hovered")}),e.addEventListener("mouseleave",()=>{e.classList.remove("hovered")})}_handleCollapseToggle(e){e.stopPropagation();let n=e.currentTarget.parentElement;if(!n)return;let l=parseInt(n.dataset.level||"0"),r=!n.classList.contains("collapsed");n.classList.toggle("collapsed");let v=[],y=n.nextElementSibling;for(;y&&!(parseInt(y.dataset.level||"0")<=l);)v.push(y),y=y.nextElementSibling;requestAnimationFrame(()=>{let S=r?-1:l+1;v.forEach(D=>{let I=parseInt(D.dataset.level||"0");r?D.classList.add("hidden-by-collapse"):I<=S?(D.classList.remove("hidden-by-collapse"),S=D.classList.contains("collapsed")?I:I+1):D.classList.add("hidden-by-collapse")})})}_handleClick(e){this._outline.view.file&&(this._navigateToHeading(e),this._resetSearchField(),this._plugin.runCommand("editor:focus"))}_navigateToHeading(e){let t=this._outline.view.file;t&&(this._outline.view.leaf.openFile(t,{eState:{line:e.position.start.line}}),setTimeout(()=>{this._outline.view.currentMode.applyScroll(e.position.start.line)},0),this._plugin.settings.hideOutlineOnJump&&this._outline.outlineWindow.hide())}_resetSearchField(){if(this._plugin.settings.disableSearchClearOnJump)return;let e=this._outline.outlineWindow,t=e.getContainerElement().querySelector(".dynamic-outline-search-container");if(!t)return;new ie(this._plugin,t).clearInput(!1),e.removeHovered()}};var Xe=Et(Qe()),ne=class ne{constructor(e,t){this.hiddenOnResize=!1;this._latestHeadings=[];this._pinned=!1;this._plugin=e,this._outline=t,this._containerEl=this._createElement(),this._setupEventListeners()}get visible(){let e=this._containerEl.isConnected,t=this._containerEl.classList.contains("hidden");return e&&!t}set visible(e){this._containerEl.isConnected||this._connectToDOM(this._containerEl),this._containerEl.classList.toggle("hidden",!e)}get pinned(){return this._pinned}set pinned(e){this._pinned=e,this._outline.buttonPinned=e,this._plugin.settings.revealOnHover&&!e&&this.hide()}getContainerElement(){return this._containerEl}toggle(){this.visible?this.hide():this.show()}show(e){if(!this.visible){if(this._checkForLocation(),this._setVisibilityBasedOnEditingToolbar(),this.update(),this._outline.buttonActive=!0,this.hiddenOnResize=!1,!this._plugin.settings.disableSearchFieldAutofocus){let t=this._containerEl.querySelector("input");t==null||t.focus()}this._plugin.settings.disableActiveHeadingHighlighting||this.highlightCurrentHeading(e==null?void 0:e.scrollBlock)}}hide(){this.visible&&(this.visible=!1,this.removeHovered(),this._outline.buttonActive=!1,this._plugin.runCommand("editor:focus"),this._plugin.settings.revealOnHover&&(this.pinned=!1))}destroy(){this._clearHideTimeout(),this._containerEl.remove()}update(){if(!this.visible)return;let e=(w,T)=>w.length===T.length&&w.every((z,$)=>z.heading===T[$].heading&&z.level===T[$].level),t=this._containerEl.querySelector("ul");if(!t)return;let n=new re(this._plugin,this._outline),l=this._outline.outlineHeadings.headings;if(l.length>0&&e(l,this._latestHeadings)){t.querySelectorAll("li").forEach((T,z)=>{n.updateLiElementLine(T,l[z])});return}this._latestHeadings=l,t.empty();let r=!1;if(!this._plugin.settings.disableHeadingCollapsing){let w=l.map(z=>z.level);new Set(w).size>1&&(r=!0)}let v=Math.min(...l.map(w=>w.level)),S=l.filter(w=>w.level===v).length>1,D=document.createDocumentFragment();if(this._plugin.settings.disableDynamicHeadingIndentation)l==null||l.forEach((w,T)=>{D.append(n.createLiElement(w,w.level,l,T,r,S))});else{let w=[];l==null||l.forEach((T,z)=>{for(;w.length>0&&T.level<=w[w.length-1];)w.pop();w.push(T.level),D.append(n.createLiElement(T,w.length,l,z,r,S))})}t.appendChild(D),this._containerEl.classList.toggle("has-single-top-level",!S);let I=!this._plugin.settings.disableSearchBarAutoHide&&l.length{let I=0,W=0,w=S.length-1;for(;W<=w;){let T=Math.floor((W+w)/2);S[T].position.start.line<=D?(I=T,W=T+1):w=T-1}return I},n=this._outline.view.currentMode.getScroll(),l=this._outline.outlineHeadings.headings;if(l.length==0)return;let r=t(l,n+1);this._containerEl.querySelectorAll("li").forEach((S,D)=>S.classList.toggle("highlight",D===r));let y=this._containerEl.querySelector("li.highlight");y==null||y.scrollIntoView({behavior:"instant",block:e})}removeHovered(){this._getVisibleLiItems().forEach(t=>{t.classList.remove("hovered")})}_setupEventListeners(){this._plugin.registerDomEvent(this._containerEl.querySelector("input"),"input",()=>{this._filterItems()}),this._plugin.registerDomEvent(this._containerEl.querySelector("input"),"keydown",e=>{this._handleKeyDown(e)}),this._plugin.settings.revealOnHover&&(this._plugin.registerDomEvent(this._containerEl,"mouseenter",()=>this._handleMouseEnter()),this._plugin.registerDomEvent(this._containerEl,"mouseleave",()=>this._handleMouseLeave()))}_handleKeyDown(e){let t=()=>{let y=n.findIndex(S=>S.classList.contains("hovered"));return y!==-1?y:n.findIndex(S=>S.classList.contains("highlight"))||0},n=this._getVisibleLiItems(),l=n.length,r=t(),v=r;switch(e.key){case"ArrowDown":case"Tab":e.preventDefault(),v=e.shiftKey?(r+l-1)%l:(r+1)%l;break;case"ArrowUp":e.preventDefault(),v=(r+l-1)%l;break;case"Enter":e.preventDefault(),r>=0&&n[r].click();break;case"Escape":e.preventDefault(),this.hide();break}v!==r&&(this._setHovered(n,v),n[v].scrollIntoView({block:"nearest"}))}_handleMouseEnter(){this._clearHideTimeout(),this._getVisibleLiItems().forEach(t=>{t.classList.remove("hovered")})}_handleMouseLeave(){this._plugin.settings.revealOnHover&&!this.pinned&&(ne.hideTimeout=setTimeout(()=>{this.hide()},100))}_createElement(){let e=createEl("div",{cls:"hidden",attr:{id:"dynamic-outline"}}),t=new ie(this._plugin);e.appendChild(t.element);let n=createEl("div",{cls:"dynamic-outline-content-container"});return n.createEl("ul",{}),e.appendChild(n),e}_getVisibleLiItems(){return Array.from(this._containerEl.querySelectorAll("li:not(.outline-item-hidden):not(.hidden-by-collapse)"))}_setHovered(e,t){e.forEach((n,l)=>{n.classList.toggle("hovered",l===t)})}_filterItems(){let t=this._containerEl.querySelector("input").value.toLowerCase(),n=this._containerEl.querySelectorAll("li"),l=t!=="";this._containerEl.classList.toggle("is-searching",l);let r;l?r=Xe.go(t,Array.from(n),{key:"textContent"}).map(y=>y.obj):r=Array.from(n),n.forEach(y=>{let S=r.includes(y);y.classList.toggle("outline-item-hidden",!S)});let v=this._getVisibleLiItems();this._setHovered(v,0)}_clearHideTimeout(){ne.hideTimeout&&(clearTimeout(ne.hideTimeout),ne.hideTimeout=null)}_setVisibilityBasedOnEditingToolbar(){let e=document.getElementById("editingToolbarModalBar");if(!e){this.visible=!0;return}let t=e.classList.contains("top");if(this._containerEl.classList.toggle("obstruction-top",t),!t){let n=e.style.display;e.style.setProperty("display","none","important"),this.visible=!0,setTimeout(()=>{e.style.display=n},0);return}this.visible=!0}_checkForLocation(){this._containerEl.classList.toggle("location-left",this._plugin.settings.outlinePosition==="left")}_connectToDOM(e){this._outline.view.contentEl.append(e)}};ne.hideTimeout=null;var ae=ne;var Ze=require("obsidian"),ue=class{constructor(e,t){this._headings=[];this._plugin=e,this._outline=t}get headings(){return this._headings=this._getHeadingsForView(this._outline.view),this._headings}_getHeadingsForView(e){var v;let t=e==null?void 0:e.file;if(!t)return[];let l=(v=(this._plugin.app.metadataCache.getFileCache(t)||{}).headings)!=null?v:[];return this._cleanupHeadings(l)}_cleanupHeadings(e){let t=r=>(0,Ze.htmlToMarkdown)(r).replaceAll("*","").replaceAll("_","").replaceAll("`","").replaceAll("==","").replaceAll("~~",""),n=r=>r.replace(/\[(.*?)\]\(.*?\)/g,"$1").replace(/\[\[([^\]]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1"),l=e;return l.forEach(r=>{let v=r.heading;v=t(v),v=n(v),r.heading=v}),l}};var ce=class{constructor(e,t){this._plugin=e,this._view=t,this.outlineWindow=new ae(this._plugin,this),this.outlineButton=new oe(this._plugin,this),this.outlineHeadings=new ue(this._plugin,this),this.toggledAutomaticallyOnce=!1}get view(){return this._view}set view(e){this._view=e}get window(){return this.outlineWindow}get button(){return this.outlineButton}get headings(){return this.outlineHeadings.headings}get isButtonVisible(){return this.outlineButton.visible}set buttonActive(e){this.outlineButton.active=e}set buttonPinned(e){this.outlineButton.pinned=e}get windowVisible(){return this.outlineWindow.visible}get windowPinned(){return this.outlineWindow.pinned}set windowPinned(e){this.outlineWindow.pinned=e}toggleButton(e){e?this.showButton():this.hideButton()}showButton(){this.isButtonVisible||this.outlineButton.show()}hideButton(){this.isButtonVisible&&this.outlineButton.hide()}toggleWindow(e){e?this.showWindow():this.hideWindow()}showWindow(e){this.windowVisible||(this.outlineWindow.show(e),e!=null&&e.hiddenOnResize&&(this.outlineWindow.hiddenOnResize=e.hiddenOnResize))}hideWindow(e){this.windowVisible&&(e!=null&&e.timeout?ae.hideTimeout=setTimeout(()=>{this.outlineWindow.hide()},e==null?void 0:e.timeout):this.outlineWindow.hide(),e!=null&&e.hiddenOnResize&&(this.outlineWindow.hiddenOnResize=e.hiddenOnResize))}updateWindow(){this.outlineWindow.update()}clearWindowHideTimeout(){this.outlineWindow._clearHideTimeout()}};var de=class p{constructor(e){this._outlines=new Map;this.mobileOutsideClickHandler=e=>{if(!this._plugin.app.isMobile)return;let t=this.getActiveMDView();if(!t)return;let n=this.getOutlineInView(t);if(!n.windowVisible)return;let l=n.window.getContainerElement(),r=n.button.getContainerElement(),v=e.target;!l.contains(v)&&!r.contains(v)&&n.hideWindow()};this._plugin=e,this._setupEventListeners()}static initialize(e){return p.instance||(p.instance=new p(e)),p.instance}static getInstance(){if(!p.instance)throw new Error("OutlineStateManager not initialized");return p.instance}getActiveMDView(){return this._plugin.app.workspace.getActiveViewOfType(Je.MarkdownView)}getVisibleMDViews(){return this._plugin.app.workspace.getLeavesOfType("markdown").map(t=>t.view).filter(t=>t.contentEl)}getOutlineInView(e){let t=this._getViewId(e);return this._outlines.has(t)||this._outlines.set(t,new ce(this._plugin,e)),this._outlines.get(t)}updateViewForOutline(e){let t=this.getOutlineInView(e);t.view=e}handleActiveLeafChange(e){this._updateOutlineVisibility(e)}handleMetadataChanged(){let e=this.getActiveMDView();e&&this._updateOutlineVisibility(e,!0)}handleResize(){if(!this._plugin.settings.avoidContentOverlap)return;let e=this.getVisibleMDViews();e.length!==0&&e.forEach(t=>{let n=this.getOutlineInView(t),l=n.windowVisible,r=this._plugin.settings.revealAutomaticallyOnFileOpen?this._isEnoughWidthForAutomaticToggle(t):this._isEnoughWidthForHideOnResize(t);l?r||n.hideWindow({hiddenOnResize:!0}):n.window.hiddenOnResize&&r&&(n.showWindow({hiddenOnResize:!1}),n.windowPinned=!0)})}createButtonsInOpenViews(){let e=this.getVisibleMDViews();e.length!==0&&e.map(t=>this._createButtonInView(t))}removeAll(){this._outlines.forEach(e=>{e.window.destroy(),e.button.destroy()}),this._outlines.clear()}_setupEventListeners(){this._plugin.registerEvent(this._plugin.app.workspace.on("active-leaf-change",e=>{if((e==null?void 0:e.view)instanceof Je.MarkdownView){let t=e.view,n=this.getOutlineInView(t);n.view=t}}))}_getViewId(e){return e.leaf.id}_createButtonInView(e){let t=this.getOutlineInView(e);!t.isButtonVisible&&t.headings&&t.headings.length>1&&t.showButton()}_updateOutlineVisibility(e,t=!1){let n=this.getOutlineInView(e),l=n.headings&&n.headings.length>1,r=l&&n.headings.length>=this._plugin.settings.minimumHeadingsToRevealAutomatically;n.toggleButton(l);let v=!l||!t&&this._plugin.settings.revealAutomaticallyOnFileOpen&&!r,y=!t&&!n.toggledAutomaticallyOnce&&this._plugin.settings.revealAutomaticallyOnFileOpen&&r&&this._isEnoughWidthForAutomaticToggle(e);v?(n.hideWindow(),n.windowPinned=!1):y&&(n.showWindow(),n.windowPinned=!0),n.windowVisible&&(n.toggledAutomaticallyOnce=!0,n.updateWindow())}_isEnoughWidthForAutomaticToggle(e){if(this._plugin.settings.handleContentOverlap==="allow")return!0;let t=this._plugin.settings.handleContentOverlap==="partial"?1:2;return this._calculateAvailableWidth(e,t)>=0}_isEnoughWidthForHideOnResize(e){return this._calculateAvailableWidth(e,2)>=0}_calculateAvailableWidth(e,t=1){var r;let n=e.contentEl.innerWidth,l=(r=this._plugin.getCssVariableAsNumber("--dynamic-outline-window-width"))!=null?r:256;return(n-700)/t-l}};var Z=require("obsidian");var je=require("obsidian");var M=class{constructor(e,t){this.plugin=e,this.containerEl=t}};var he=class extends M{display(){new je.Setting(this.containerEl).setName("Disable search field autofocus").setDesc("Turn off the automatic focusing of the search field when the outline window opens.").addToggle(e=>{e.setValue(this.plugin.settings.disableSearchFieldAutofocus).onChange(async t=>{this.plugin.settings.disableSearchFieldAutofocus=t,await this.plugin.saveSettings()})})}};var et=require("obsidian");var k=class{constructor(e,t,n){this.button=t,this.initialValue=n,this.currentValue=n,this.button.setButtonText("Reload plugin"),this.button.setTooltip("Requires a plugin reload to take effect."),this.button.setDisabled(!0),this.button.setClass("dynamic-outline-reload"),this.button.setCta(),this.button.onClick(()=>{e.reloadPlugin()})}updateValue(e){this.currentValue=e,this.button.setDisabled(this.initialValue===this.currentValue)}};var ge=class extends M{display(){let e,t=this.plugin.settings.disableActiveHeadingHighlighting;new et.Setting(this.containerEl).setName("Disable active heading highlighting").setDesc("Turn off the highlighting of the corresponding heading in the outline as you scroll.").addButton(n=>{e=n}).addToggle(n=>{let l=new k(this.plugin,e,t);n.setValue(this.plugin.settings.disableActiveHeadingHighlighting).onChange(async r=>{this.plugin.settings.disableActiveHeadingHighlighting=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var tt=require("obsidian");var pe=class extends M{display(){new tt.Setting(this.containerEl).setName("Disable search clear on jump").setDesc("Turn off the ability to keep the search field text after clicking a heading.").addToggle(e=>{e.setValue(this.plugin.settings.disableSearchClearOnJump).onChange(async t=>{this.plugin.settings.disableSearchClearOnJump=t,await this.plugin.saveSettings()})})}};var Ve=require("obsidian");var ve=class extends M{display(){let e,t=this.plugin.settings.revealAutomaticallyOnFileOpen;new Ve.Setting(this.containerEl).setName("Reveal automatically on file open").setDesc("Automatically show or hide the outline when opening a file, based on heading count.").addButton(r=>{e=r}).addToggle(r=>{let v=new k(this.plugin,e,t);r.setValue(this.plugin.settings.revealAutomaticallyOnFileOpen).onChange(async y=>{this.plugin.settings.revealAutomaticallyOnFileOpen=y,await this.plugin.saveSettings(),v.updateValue(y),l.setDisabled(!y),n.setDisabled(!y)})});let n=new Ve.Setting(this.containerEl).setName("Handle content overlap").setDesc("Choose if the outline can overlap page content when space is limited, or if it should hide to prevent overlap.").addDropdown(r=>{r.addOption("allow","Allow").addOption("partial","Partial").addOption("prevent","Prevent").setValue(this.plugin.settings.handleContentOverlap).onChange(async v=>{this.plugin.settings.handleContentOverlap=v,await this.plugin.saveSettings()})}).setClass("dynamic-outline-setting-item-hidden").setDisabled(!this.plugin.settings.revealAutomaticallyOnFileOpen),l=new Ve.Setting(this.containerEl).setName("Minimum number of headings").setDesc("Set the minimum heading count required to automatically show the outline on file open.").addSlider(r=>{r.setLimits(2,10,1).setDynamicTooltip().setValue(this.plugin.settings.minimumHeadingsToRevealAutomatically).onChange(async v=>{this.plugin.settings.minimumHeadingsToRevealAutomatically=v,await this.plugin.saveSettings()})}).setClass("dynamic-outline-setting-item-hidden").setDisabled(!this.plugin.settings.revealAutomaticallyOnFileOpen)}};var it=require("obsidian");var me=class extends M{display(){let e,t=this.plugin.settings.revealOnHover;new it.Setting(this.containerEl).setName("Reveal on hover").setDesc("Show the outline when hovering over its button. Click the button to pin it open.").addButton(n=>{e=n}).addToggle(n=>{let l=new k(this.plugin,e,t);n.setValue(this.plugin.settings.revealOnHover).onChange(async r=>{this.plugin.settings.revealOnHover=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var nt=require("obsidian");var fe=class extends M{display(){let e,t=this.plugin.settings.outlinePosition;new nt.Setting(this.containerEl).setName("Outline position").setDesc("Set the screen location for the outline window and its trigger button.").addButton(n=>{e=n}).addDropdown(n=>{let l=new k(this.plugin,e,t);n.addOption("right","Right").addOption("left","Left").setValue(this.plugin.settings.outlinePosition).onChange(async r=>{this.plugin.settings.outlinePosition=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var st=require("obsidian");var we=class extends M{display(){let e,t=this.plugin.settings.disableDynamicHeadingIndentation;new st.Setting(this.containerEl).setName("Disable dynamic heading indentation").setDesc("Turn off automatic heading indentation adjustments based on the previous heading's level.").addButton(n=>{e=n}).addToggle(n=>{let l=new k(this.plugin,e,t);n.setValue(this.plugin.settings.disableDynamicHeadingIndentation).onChange(async r=>{this.plugin.settings.disableDynamicHeadingIndentation=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var at=require("obsidian");var be=class extends M{display(){new at.Setting(this.containerEl).setName("Disable search bar auto-hide").setDesc("Turn off the automatic hiding of the search bar when the outline contains only a few headings.").addToggle(e=>{e.setValue(this.plugin.settings.disableSearchBarAutoHide).onChange(async t=>{this.plugin.settings.disableSearchBarAutoHide=t,await this.plugin.saveSettings()})})}};var lt=require("obsidian");var _e=class extends M{display(){new lt.Setting(this.containerEl).setName("Hide on jump").setDesc("Hide outline automatically when selecting a heading.").addToggle(e=>{e.setValue(this.plugin.settings.hideOutlineOnJump).onChange(async t=>{this.plugin.settings.hideOutlineOnJump=t,await this.plugin.saveSettings()})})}};var ot=require("obsidian");var ye=class extends M{display(){let e,t=this.plugin.settings.avoidContentOverlap;new ot.Setting(this.containerEl).setName("Avoid content overlap").setDesc("Automatically hide the outline when the note is too narrow.").addButton(n=>{e=n}).addToggle(n=>{let l=new k(this.plugin,e,t);n.setValue(this.plugin.settings.avoidContentOverlap).onChange(async r=>{this.plugin.settings.avoidContentOverlap=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var rt=require("obsidian");var Ee=class extends M{display(){let e,t=this.plugin.settings.disableHeadingCollapsing;new rt.Setting(this.containerEl).setName("Disable heading collapsing").setDesc("Turn off the ability to collapse/expand heading sections within the outline.").addButton(n=>{e=n}).addToggle(n=>{let l=new k(this.plugin,e,t);n.setValue(this.plugin.settings.disableHeadingCollapsing).onChange(async r=>{this.plugin.settings.disableHeadingCollapsing=r,await this.plugin.saveSettings(),l.updateValue(r)})})}};var ut={handleContentOverlap:"allow",disableActiveHeadingHighlighting:!1,disableDynamicHeadingIndentation:!1,disableSearchBarAutoHide:!1,disableSearchClearOnJump:!1,disableSearchFieldAutofocus:!1,disableHeadingCollapsing:!1,hideOutlineOnJump:!1,minHeadingsToHideSearchBar:5,minimumHeadingsToRevealAutomatically:2,revealAutomaticallyOnFileOpen:!1,revealOnHover:!1,avoidContentOverlap:!1,outlinePosition:"right"};function Be(p){return(0,Z.sanitizeHTMLToDom)(p)}var Ie=class extends Z.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){let{containerEl:e}=this;e.empty(),new Z.Setting(e).setName(Be("Window behavior")).setHeading().setDesc("Customize the visibility and behavior of the outline window."),new fe(this.plugin,e).display(),new me(this.plugin,e).display(),new ve(this.plugin,e).display(),new ye(this.plugin,e).display(),new _e(this.plugin,e).display(),new Z.Setting(e).setName(Be("Search bar")).setHeading().setDesc("Customize the search bar behavior."),new be(this.plugin,e).display(),new he(this.plugin,e).display(),new pe(this.plugin,e).display(),new Z.Setting(e).setName(Be("Outline content")).setHeading().setDesc(Be('To customize the appearance of the Dynamic Outline, please use the Style Settings plugin.')),new Ee(this.plugin,e).display(),new ge(this.plugin,e).display(),new we(this.plugin,e).display()}};var Oe="dynamic-outline",Re="dynamic-outline-button",qe="list",xe=class extends Y.Plugin{constructor(){super(...arguments);this.highlightCurrentHeadingDebounceHandler=(0,Y.debounce)(t=>{let n=t.target;if(!(n!=null&&n.classList.contains("dynamic-outline-content-container"))){let l=this.stateManager.getActiveMDView();l&&this.stateManager.getOutlineInView(l).window.highlightCurrentHeading()}},0);this.resizeDebounceHandler=(0,Y.debounce)(()=>{this.stateManager.handleResize()},100)}async onload(){await this.loadSettings(),this.addSettingTab(new Ie(this.app,this)),this.app.workspace.trigger("parse-style-settings"),this.stateManager=de.initialize(this),this.app.workspace.onLayoutReady(()=>{this.stateManager.createButtonsInOpenViews()}),this.registerEvent(this.app.workspace.on("active-leaf-change",t=>{if(!((t==null?void 0:t.view)instanceof Y.MarkdownView))return;let n=t.view;this.stateManager.updateViewForOutline(n),this.stateManager.handleActiveLeafChange(n)})),this.app.isMobile&&activeWindow.document.addEventListener("click",this.stateManager.mobileOutsideClickHandler,!0),this.registerEvent(this.app.metadataCache.on("changed",()=>{this.stateManager.handleMetadataChanged()})),this.settings.avoidContentOverlap&&this.registerEvent(this.app.workspace.on("resize",this.resizeDebounceHandler)),this.settings.disableActiveHeadingHighlighting||(activeWindow.document.addEventListener("scroll",this.highlightCurrentHeadingDebounceHandler,!0),this.registerEvent(this.app.metadataCache.on("changed",()=>{let t=this.stateManager.getActiveMDView();t&&this.stateManager.getOutlineInView(t).window.highlightCurrentHeading()}))),this.addCommand({id:"toggle-dynamic-outline",name:"Toggle for current file",checkCallback:t=>{let n=this.stateManager.getActiveMDView();return n?(t||this.stateManager.getOutlineInView(n).button.handleClick(),!0):!1}})}onunload(){this.stateManager.removeAll(),activeWindow.document.removeEventListener("scroll",this.highlightCurrentHeadingDebounceHandler,!0),activeWindow.document.removeEventListener("click",this.stateManager.mobileOutsideClickHandler,!0)}async loadSettings(){this.settings=Object.assign({},ut,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}async reloadPlugin(){let t=this.app.plugins,n=this.app.setting;t.enabledPlugins.has(Oe)&&(await t.disablePlugin(Oe),await t.enablePlugin(Oe),await n.openTabById(Oe),new Y.Notice("Dynamic Outline has been reloaded"))}getCssVariableAsNumber(t,n=document.body){let l=getComputedStyle(n).getPropertyValue(t).trim(),r=parseFloat(l);return isNaN(r)?null:r}runCommand(t){this.app.commands.executeCommandById(t)}}; /* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/dynamic-outline/manifest.json b/.obsidian/plugins/dynamic-outline/manifest.json index ebd3656..eedc0e6 100644 --- a/.obsidian/plugins/dynamic-outline/manifest.json +++ b/.obsidian/plugins/dynamic-outline/manifest.json @@ -1,10 +1,11 @@ { "id": "dynamic-outline", "name": "Dynamic Outline", - "version": "1.2.0", + "version": "1.19.0", "minAppVersion": "0.15.0", "description": "Adds a customizable GitHub-like floating table of contents.", "author": "theopavlove", "authorUrl": "https://github.com/theopavlove", + "fundingUrl": "https://www.buymeacoffee.com/theopavlove", "isDesktopOnly": false } \ No newline at end of file diff --git a/.obsidian/plugins/dynamic-outline/styles.css b/.obsidian/plugins/dynamic-outline/styles.css index d76c08e..edfc41f 100644 --- a/.obsidian/plugins/dynamic-outline/styles.css +++ b/.obsidian/plugins/dynamic-outline/styles.css @@ -3,7 +3,79 @@ name: Dynamic Outline id: obsidian-dynamic-outline settings: - - + - + id: active-heading + title: 'Active heading' + type: heading + level: 2 + collapsed: true + - + id: dynamic-outline-highlight-font-weight + title: 'Active heading font weight' + description: 'Font weight of active heading' + type: variable-select + allowEmpty: false + default: var(--font-normal) + options: + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: dynamic-outline-active-heading-pill-color + title: 'Active heading indication color' + description: 'Color of active heading pill' + type: variable-select + allowEmpty: false + default: var(--text-accent) + options: + - + label: Accent + value: var(--text-accent) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-active-heading-background + title: 'Active heading background color' + description: 'Background color of the active heading' + type: variable-select + allowEmpty: false + default: var(--background-modifier-hover) + options: + - + label: Mono + value: var(--background-modifier-hover) + - + label: Accent + value: var(--dynamic-outline-background-accent) + - + label: None + value: none + - + id: button + title: 'Button' + type: heading + level: 2 + collapsed: true + - + id: hide-button-from-toolbar + title: 'Hide button' + description: 'Hide button from the toolbar' + type: class-toggle + default: false + - + id: headings + title: 'Headings' + type: heading + level: 2 + collapsed: true + - id: dynamic-outline-font-size title: 'Font size' description: 'Font size of the outline headings' @@ -23,16 +95,486 @@ settings: label: 'Smallest' value: var(--font-smallest) - - id: dynamic-outline-tab-size + id: dynamic-outline-li-padding-tab-size title: 'Tab size' - description: 'Left padding multiplier size (in pixels)' + description: 'Left padding multiplier size (in pixels). Will be applied on next outline refresh' type: variable-number-slider - default: 24 + default: 16 min: 0 - max: 48 + max: 32 step: 1 format: px - + id: heading-level-styling + title: 'Heading level styling' + description: 'Add heading level styling to the outline' + type: class-select + allowEmpty: true + default: none + options: + - + label: "H1, H2…" + value: heading-level-styling-1 + - + label: "#, ##…" + value: heading-level-styling-2 + - + id: disable-heading-word-wrap + title: "Disable heading word wrap" + description: 'Prevent line breaks in headings, ensuring they are displayed on a single line without wrapping' + type: class-toggle + default: false + - + id: headings-level-1 + title: 'Headings level 1' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h1-text-color + title: 'H1 text color' + description: 'Use `--h1-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h1-color) + options: + - + label: Theme + value: var(--h1-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h1-font-style + title: 'H1 font style' + description: 'Use `--h1-style` from theme or apply custom styling' + type: variable-select + default: var(--h1-style) + options: + - + label: Theme + value: var(--h1-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h1-font-variant + title: 'H1 font variant' + description: 'Use `--h1-variant` from theme of apply custom variant' + type: variable-select + default: var(--h1-variant) + options: + - + label: Theme + value: var(--h1-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h1-font-weight + title: 'H1 font weight' + description: 'Use `--h1-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-bold) + options: + - + label: Theme + value: var(--h1-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: headings-level-2 + title: 'Headings level 2' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h2-text-color + title: 'H2 text color' + description: 'Use `--h2-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h2-color) + options: + - + label: Theme + value: var(--h2-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h2-font-style + title: 'H2 font style' + description: 'Use `--h2-style` from theme or apply custom styling' + type: variable-select + default: var(--h2-style) + options: + - + label: Theme + value: var(--h2-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h2-font-variant + title: 'H2 font variant' + description: 'Use `--h2-variant` from theme of apply custom variant' + type: variable-select + default: var(--h2-variant) + options: + - + label: Theme + value: var(--h2-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h2-font-weight + title: 'H2 font weight' + description: 'Use `--h2-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-normal) + options: + - + label: Theme + value: var(--h2-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: headings-level-3 + title: 'Headings level 3' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h3-text-color + title: 'H3 text color' + description: 'Use `--h3-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h3-color) + options: + - + label: Theme + value: var(--h3-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h3-font-style + title: 'H3 font style' + description: 'Use `--h3-style` from theme or apply custom styling' + type: variable-select + default: var(--h3-style) + options: + - + label: Theme + value: var(--h3-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h3-font-variant + title: 'H3 font variant' + description: 'Use `--h3-variant` from theme of apply custom variant' + type: variable-select + default: var(--h3-variant) + options: + - + label: Theme + value: var(--h3-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h3-font-weight + title: 'H3 font weight' + description: 'Use `--h3-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-normal) + options: + - + label: Theme + value: var(--h3-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: headings-level-4 + title: 'Headings level 4' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h4-text-color + title: 'H4 text color' + description: 'Use `--h4-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h4-color) + options: + - + label: Theme + value: var(--h4-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h4-font-style + title: 'H4 font style' + description: 'Use `--h4-style` from theme or apply custom styling' + type: variable-select + default: var(--h4-style) + options: + - + label: Theme + value: var(--h4-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h4-font-variant + title: 'H4 font variant' + description: 'Use `--h4-variant` from theme of apply custom variant' + type: variable-select + default: var(--h4-variant) + options: + - + label: Theme + value: var(--h4-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h4-font-weight + title: 'H4 font weight' + description: 'Use `--h4-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-normal) + options: + - + label: Theme + value: var(--h4-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: headings-level-5 + title: 'Headings level 5' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h5-text-color + title: 'H5 text color' + description: 'Use `--h5-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h5-color) + options: + - + label: Theme + value: var(--h5-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h5-font-style + title: 'H5 font style' + description: 'Use `--h5-style` from theme or apply custom styling' + type: variable-select + default: var(--h5-style) + options: + - + label: Theme + value: var(--h5-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h5-font-variant + title: 'H5 font variant' + description: 'Use `--h5-variant` from theme of apply custom variant' + type: variable-select + default: var(--h5-variant) + options: + - + label: Theme + value: var(--h5-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h5-font-weight + title: 'H5 font weight' + description: 'Use `--h5-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-normal) + options: + - + label: Theme + value: var(--h5-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: headings-level-6 + title: 'Headings level 6' + type: heading + level: 3 + collapsed: true + - + id: dynamic-outline-h6-text-color + title: 'H6 text color' + description: 'Use `--h6-color` from theme or apply monochrome color' + markdown: true + type: variable-select + default: var(--h6-color) + options: + - + label: Theme + value: var(--h6-color) + - + label: Mono + value: var(--text-normal) + - + id: dynamic-outline-h6-font-style + title: 'H6 font style' + description: 'Use `--h6-style` from theme or apply custom styling' + type: variable-select + default: var(--h6-style) + options: + - + label: Theme + value: var(--h6-style) + - + label: Normal + value: normal + - + label: Italic + value: italic + - + id: dynamic-outline-h6-font-variant + title: 'H6 font variant' + description: 'Use `--h6-variant` from theme of apply custom variant' + type: variable-select + default: var(--h6-variant) + options: + - + label: Theme + value: var(--h6-variant) + - + label: Normal + value: normal + - + label: Small-caps + value: small-caps + - + label: All small-caps + value: all-small-caps + - + id: dynamic-outline-h6-font-weight + title: 'H6 font weight' + description: 'Use `--h6-weight` from theme or apply custom weight' + type: variable-select + default: var(--font-normal) + options: + - + label: Theme + value: var(--h6-weight) + - + label: Normal + value: var(--font-normal) + - + label: Semibold + value: var(--font-semibold) + - + label: Bold + value: var(--font-bold) + - + id: window-layout + title: 'Window layout' + type: heading + level: 2 + collapsed: true + - id: dynamic-outline-window-width title: 'Window width' description: 'Outline window width (in pixels)' @@ -43,6 +585,28 @@ settings: step: 32 format: px - + id: dynamic-outline-window-offset-top + title: 'Window offset top' + description: 'Add more space before the outline window' + type: variable-number-slider + allowEmpty: false + default: 0 + min: -100 + max: 100 + step: 1 + format: px + - + id: dynamic-outline-window-offset-bottom + title: 'Window offset bottom' + description: 'Add more space after the outline window' + type: variable-number-slider + allowEmpty: false + default: 0 + min: -100 + max: 100 + step: 1 + format: px + - id: dynamic-outline-opacity title: 'Window opacity' description: 'Outline window opacity when the outline is not hovered over' @@ -51,227 +615,576 @@ settings: min: 0.0 max: 1.0 step: 0.05 - - - id: window-alignment - title: "Window location" - description: "Outline window location" - type: class-select - allowEmpty: false - default: do-align-right - options: - - - label: Right - value: do-align-right - - - label: Left - value: do-align-left */ +/* TODO: transfer variables to :root. */ +:root { + /* Applied to the li.style directly with dynamic tab levels. */ + --dynamic-outline-li-padding-tab-size: 16px; + + --dynamic-outline-collapse-icon-width: 12px; +} + .theme-dark, .theme-light { - --dynamic-outline-background: var(--background-primary); - --dynamic-outline-text-color: var(--text-normal); - --dynamic-outline-font-size: var(--font-text-size); - --dynamic-outline-color: var(--text-normal); - --dynamic-outline-border-color: var(--background-modifier-border); - --dynamic-outline-background-hover-color: var(--background-modifier-hover); - --dynamic-outline-input-height: var(--input-height); - --dynamic-outline-input-background-color: var(--background-primary); - --dynamic-outline-tab-size: 24px; - --dynamic-outline-opacity: 1; - --dynamic-outline-window-width: 256px; - --dynamic-outline-top: 40px; + /* New color variables */ + --dynamic-outline-background-modifier-hover-lighter: rgba( + var(--mono-rgb-100), + 0.045 + ); + --dynamic-outline-background-accent: hsla( + var(--accent-h), + var(--accent-s), + var(--accent-l), + 0.075 + ); + + /* Outline Window */ + --dynamic-outline-input-height: var(--input-height); + --dynamic-outline-input-background-color: var(--background-primary); + --dynamic-outline-background: var(--background-primary); + --dynamic-outline-text-color: var(--text-normal); + --dynamic-outline-font-size: var(--font-text-size); + --dynamic-outline-color: var(--text-normal); + --dynamic-outline-border-color: var(--background-modifier-border); + --dynamic-outline-window-width: 256px; + --dynamic-outline-opacity: 1; + + --dynamic-outline-window-gap: 4px; + --dynamic-outline-window-offset-top: 0px; + --dynamic-outline-window-offset-bottom: 0px; + --dynamic-outline-status-bar-height-offset-bottom: 30px; + --dynamic-outline-top: calc( + var(--header-height) + var(--dynamic-outline-window-gap) + + var(--dynamic-outline-window-offset-top) + ); + --dynamic-outline-top-editing-toolbar: calc( + var(--header-height) + 38px + var(--dynamic-outline-window-gap) + + var(--dynamic-outline-window-offset-top) + ); + --dynamic-outline-bottom: calc( + var(--dynamic-outline-window-gap) + + var(--dynamic-outline-window-offset-bottom) + + var(--dynamic-outline-status-bar-height-offset-bottom) + ); + + /* List items */ + --dynamic-outline-background-hover: var( + --dynamic-outline-background-modifier-hover-lighter + ); + + /* Active Heading */ + --dynamic-outline-active-heading-pill-color: var(--interactive-accent); + --dynamic-outline-highlight-font-weight: var(--font-normal); + --dynamic-outline-active-heading-background: var( + --background-modifier-hover + ); + + /* Headings */ + --dynamic-outline-h1-text-color: var(--h1-color); + --dynamic-outline-h2-text-color: var(--h2-color); + --dynamic-outline-h3-text-color: var(--h3-color); + --dynamic-outline-h4-text-color: var(--h4-color); + --dynamic-outline-h5-text-color: var(--h5-color); + --dynamic-outline-h6-text-color: var(--h6-color); + + --dynamic-outline-h1-font-weight: var(--font-bold); + --dynamic-outline-h2-font-weight: var(--font-normal); + --dynamic-outline-h3-font-weight: var(--font-normal); + --dynamic-outline-h4-font-weight: var(--font-normal); + --dynamic-outline-h5-font-weight: var(--font-normal); + --dynamic-outline-h6-font-weight: var(--font-normal); + + --dynamic-outline-h1-font-style: var(--h1-style); + --dynamic-outline-h2-font-style: var(--h2-style); + --dynamic-outline-h3-font-style: var(--h3-style); + --dynamic-outline-h4-font-style: var(--h4-style); + --dynamic-outline-h5-font-style: var(--h5-style); + --dynamic-outline-h6-font-style: var(--h6-style); + + --dynamic-outline-h1-font-variant: var(--h1-variant); + --dynamic-outline-h2-font-variant: var(--h2-variant); + --dynamic-outline-h3-font-variant: var(--h3-variant); + --dynamic-outline-h4-font-variant: var(--h4-variant); + --dynamic-outline-h5-font-variant: var(--h5-variant); + --dynamic-outline-h6-font-variant: var(--h6-variant); } .theme-light { - --dynamic-outline-shadow-color: rgba(99, 99, 99, .2); + --dynamic-outline-shadow-color: rgba(99, 99, 99, 0.2); } .theme-dark { - --dynamic-outline-shadow-color: rgba(0, 0, 0, .2); + --dynamic-outline-shadow-color: rgba(0, 0, 0, 0.2); } #dynamic-outline, #dynamic-outline ul, #dynamic-outline li { - margin: 0; - padding: 0; - list-style: none; + margin: 0; + padding: 0; + list-style: none; } +.setting-item.is-disabled { + pointer-events: none; + opacity: 0.5; +} + +/* + * Dynamic Outline Window + */ + #dynamic-outline { - position: fixed; - display: flex; - flex-direction: column; - /* overflow-y: auto; */ - z-index: 2; + position: fixed; + display: flex; + flex-direction: column; + z-index: var(--layer-popover); - top: var(--dynamic-outline-top); + top: var(--dynamic-outline-top); + max-height: calc( + 100% - var(--dynamic-outline-top) - var(--dynamic-outline-bottom) + ); - min-height: max-content; - max-height: calc(100% - 50px); - width: var(--dynamic-outline-window-width); - /* padding: 10px 15px 5px; */ - padding: 10px 0 5px; + width: var(--dynamic-outline-window-width); + /* padding: 10px 0 5px; */ + padding: 5px 0 5px; + right: 20px; - font-size: var(--dynamic-outline-font-size); + font-size: var(--dynamic-outline-font-size); - background-color: var(--dynamic-outline-background); - border: 1px solid var(--dynamic-outline-border-color); - border-radius: 12px; - box-shadow: var(--dynamic-outline-shadow-color) 0px 2px 8px 0px; + background-color: var(--dynamic-outline-background); + border: 1px solid var(--dynamic-outline-border-color); + border-radius: 12px; + box-shadow: var(--dynamic-outline-shadow-color) 0px 2px 8px 0px; + box-sizing: border-box; - opacity: var(--dynamic-outline-opacity); + opacity: var(--dynamic-outline-opacity); } -.do-align-left #dynamic-outline { - left: 20px; -} - -.do-align-right #dynamic-outline { - right: 20px; +#dynamic-outline.hidden { + display: none; } /* Corner case for the Editing Toolbar plugin */ -.view-content:not(:has(.markdown-source-view[style*="display: none;"])) #dynamic-outline.obstruction-top { - top: calc(var(--dynamic-outline-top) + 38px + 10px); +.view-content + > .markdown-source-view[style=""] + ~ #dynamic-outline.obstruction-top { + top: var(--dynamic-outline-top-editing-toolbar); + max-height: calc( + 100% - var(--dynamic-outline-top-editing-toolbar) - + var(--dynamic-outline-bottom) + ); } -.dynamic-outline-content-container { - overflow-y: auto; - padding: 0 15px; -} - -.dynamic-outline-search-container { - padding: 0 15px; +#dynamic-outline.location-left { + right: unset; + left: 20px; } #dynamic-outline:hover { - opacity: 1.0; + opacity: 1; } -#dynamic-outline li { - display: flex; - align-items: flex-start; - - padding: 7px 0; - transition: background 25ms linear; - cursor: pointer; +button.dynamic-outline-reload[disabled] { + display: none; } -#dynamic-outline li.highlight { - position: relative; -} +/* + * Dynamic Outline Search Container + */ -#dynamic-outline li.highlight::after { - content: ""; - position: absolute; - - inset-inline-start: -8px; - width: 4px; - background-color: var(--text-normal); - border-radius: 8px; - - /* Center the highlight indicator vertically. */ - top: 50%; - transform: translateY(-50%); - /* height: 90%; */ - height: 22px; -} - -#dynamic-outline li:hover { - background-color: var(--dynamic-outline-background-hover-color); - border-radius: 6px; -} - -#dynamic-outline li a { - padding: 0px 8px; - color: var(--dynamic-outline-text-color); - text-decoration: none; -} - -#dynamic-outline li .heading-level-1 { - font-weight: bold; -} - -#dynamic-outline li .heading-level-2 { - padding-left: var(--dynamic-outline-tab-size); -} - -#dynamic-outline li .heading-level-3 { - padding-left: calc(var(--dynamic-outline-tab-size) * 2); -} - -#dynamic-outline li .heading-level-4 { - padding-left: calc(var(--dynamic-outline-tab-size) * 3); -} - -#dynamic-outline li .heading-level-5 { - padding-left: calc(var(--dynamic-outline-tab-size) * 4); -} - -#dynamic-outline li .heading-level-6 { - padding-left: calc(var(--dynamic-outline-tab-size) * 5); +.dynamic-outline-search-container.hidden { + display: none; } .dynamic-outline-search-container { - display: flex; - align-items: center; + display: flex; + align-items: center; - margin-bottom: 5px; + margin-top: 5px; + margin-bottom: 5px; } -/* Tweak pixels */ .dynamic-outline-search-container::before { - display: block; - content: ''; - height: var(--search-icon-size); - width: var(--search-icon-size); - position: absolute; - inset-inline-start: 22px; - background-color: var(--search-icon-color); - -webkit-mask-image: url("data:image/svg+xml,"); - -webkit-mask-repeat: no-repeat; + display: block; + content: ""; + height: var(--search-icon-size); + width: var(--search-icon-size); + position: absolute; + inset-inline-start: 22px; + background-color: var(--search-icon-color); + -webkit-mask-image: url("data:image/svg+xml,"); + -webkit-mask-repeat: no-repeat; } -/* Tweak variables */ -.dynamic-outline-button.button-active { - box-shadow: none; - opacity: var(--icon-opacity-hover); - color: var(--icon-color-hover); - background-color: var(--background-modifier-hover); - -} - - /* Tweak pixels */ .dynamic-outline-search-container input { - display: block; - width: 100%; - padding-inline-start: 32px; + display: block; + width: 100%; + padding-inline-start: 32px; } .dynamic-outline-search-container input.has-content { - padding-inline-end: 32px; + padding-inline-end: 32px; } .dynamic-outline-search-clear-button { - display: none; - margin: 0; - top: calc((var(--input-height) - var(--search-icon-size)) + 6px); - right: 10px; + display: none; + margin: 0; + top: calc((var(--input-height) - var(--search-icon-size)) + 6px); + right: 10px; } .dynamic-outline-search-clear-button.visible { - display: block; + display: block; } -/* Custom css for disabled settings */ -.setting-item.is-disabled { - pointer-events: none; - opacity: 0.5; +/* + * Dynamic Outline Content Container + */ + +.dynamic-outline-search-container.hidden ~ .dynamic-outline-content-container { + margin-top: 10px; + margin-bottom: 5px; } -.outline-item-hidden { - display: none !important; -} \ No newline at end of file +.dynamic-outline-content-container { + overflow-y: auto; + padding: 0 15px; +} + +.dynamic-outline-search-container { + padding: 0 15px; +} + +/* + * Dynamic Outline List Items + */ + +#dynamic-outline li { + display: flex; + align-items: center; + + padding: 7px 0; + margin: 1px 0; + transition: background 25ms linear; + + border-radius: 6px; +} + +.dynamic-outline-collapse-icon { + /* background-color: var(--color-green); */ + display: flex; + align-items: center; + justify-content: center; + width: var(--dynamic-outline-collapse-icon-width); + height: var(--dynamic-outline-collapse-icon-width); + margin-left: 8px; + color: var(--text-muted); + transition: transform 0.1s ease-in-out, visibility 0s linear; + flex-shrink: 0; +} + +.dynamic-outline-collapse-icon svg { + width: var(--dynamic-outline-collapse-icon-width); + height: var(--dynamic-outline-collapse-icon-width); + stroke-width: 3; +} + +#dynamic-outline li:not(.has-children) .dynamic-outline-collapse-icon { + visibility: hidden !important; + cursor: default; +} + +/* Hide collapse icon for single top-level items, even if they have children */ +#dynamic-outline li.is-single-top-level .dynamic-outline-collapse-icon { + visibility: hidden !important; + cursor: default; +} + +#dynamic-outline li.collapsed > .dynamic-outline-collapse-icon { + color: var(--text-accent); + transform: rotate(-90deg); +} + +.dynamic-outline-collapse-icon:hover { + color: var(--text-normal); +} + +#dynamic-outline li:hover, +#dynamic-outline li.highlight:hover, +#dynamic-outline li.hovered, +#dynamic-outline li.highlight.hovered { + background-color: var(--dynamic-outline-background-hover); +} + +#dynamic-outline li.highlight { + position: relative; + background-color: var(--dynamic-outline-active-heading-background); +} + +#dynamic-outline li.highlight::before { + color: var(--dynamic-outline-active-heading-pill-color) !important; +} + +#dynamic-outline li.highlight::after { + content: ""; + position: absolute; + + inset-inline-start: -8px; + width: 4px; + background-color: var(--dynamic-outline-active-heading-pill-color); + border-radius: 8px; + + /* + * Center the highlight indicator vertically. + */ + top: 50%; + transform: translateY(-50%); + height: 22px; +} + +.heading-level-styling-1 #dynamic-outline li::before, +.heading-level-styling-2 #dynamic-outline li::before { + font-size: var(--font-smallest); + color: var(--text-faint); + margin-left: 0.5em; + margin-right: 0.25em; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-1::before { + content: "H1"; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-2::before { + content: "H2"; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-3::before { + content: "H3"; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-4::before { + content: "H4"; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-5::before { + content: "H5"; +} + +.heading-level-styling-1 #dynamic-outline li.li-heading-level-6::before { + content: "H6"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-1::before { + content: "#"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-2::before { + content: "##"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-3::before { + content: "###"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-4::before { + content: "####"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-5::before { + content: "#####"; +} + +.heading-level-styling-2 #dynamic-outline li.li-heading-level-6::before { + content: "######"; +} + +#dynamic-outline li a { + padding: 0px 8px; + color: var(--dynamic-outline-text-color); + text-decoration: none; + cursor: default; + flex-grow: 1; /* Allow text to take remaining space */ + min-width: 0; /* Prevent overflow issues with flex */ +} + +.disable-heading-word-wrap #dynamic-outline li a { + /* Text Handling */ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* Default padding */ +#dynamic-outline li.tab-level-2 { + padding-left: var(--dynamic-outline-li-padding-tab-size); +} + +#dynamic-outline li.tab-level-3 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 2); +} + +#dynamic-outline li.tab-level-4 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 3); +} + +#dynamic-outline li.tab-level-5 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 4); +} + +#dynamic-outline li.tab-level-6 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 5); +} + +/* Override padding when there is only one top-level heading */ +#dynamic-outline.has-single-top-level li.tab-level-2 { + padding-left: 0; +} + +#dynamic-outline.has-single-top-level li.tab-level-3 { + padding-left: var(--dynamic-outline-li-padding-tab-size); /* Effectively level 2 */ +} + +#dynamic-outline.has-single-top-level li.tab-level-4 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 2); /* Effectively level 3 */ +} + +#dynamic-outline.has-single-top-level li.tab-level-5 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 3); /* Effectively level 4 */ +} + +#dynamic-outline.has-single-top-level li.tab-level-6 { + padding-left: calc(var(--dynamic-outline-li-padding-tab-size) * 4); /* Effectively level 5 */ +} + +#dynamic-outline li a.heading-level-1 { + color: var(--dynamic-outline-h1-text-color); + font-weight: var(--dynamic-outline-h1-font-weight); + font-style: var(--dynamic-outline-h1-font-style); + font-variant: var(--dynamic-outline-h1-font-variant); +} + +#dynamic-outline li a.heading-level-2 { + color: var(--dynamic-outline-h2-text-color); + font-weight: var(--dynamic-outline-h2-font-weight); + font-style: var(--dynamic-outline-h2-font-style); + font-variant: var(--dynamic-outline-h2-font-variant); +} + +#dynamic-outline li a.heading-level-3 { + color: var(--dynamic-outline-h3-text-color); + font-weight: var(--dynamic-outline-h3-font-weight); + font-style: var(--dynamic-outline-h3-font-style); + font-variant: var(--dynamic-outline-h3-font-variant); +} + +#dynamic-outline li a.heading-level-4 { + color: var(--dynamic-outline-h4-text-color); + font-weight: var(--dynamic-outline-h4-font-weight); + font-style: var(--dynamic-outline-h4-font-style); + font-variant: var(--dynamic-outline-h4-font-variant); +} + +#dynamic-outline li a.heading-level-5 { + color: var(--dynamic-outline-h5-text-color); + font-weight: var(--dynamic-outline-h5-font-weight); + font-style: var(--dynamic-outline-h5-font-style); + font-variant: var(--dynamic-outline-h5-font-variant); +} + +#dynamic-outline li a.heading-level-6 { + color: var(--dynamic-outline-h6-text-color); + font-weight: var(--dynamic-outline-h6-font-weight); + font-style: var(--dynamic-outline-h6-font-style); + font-variant: var(--dynamic-outline-h6-font-variant); +} + +#dynamic-outline li.highlight .heading-level-1 { + font-weight: max( + var(--dynamic-outline-h1-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline li.highlight .heading-level-2 { + font-weight: max( + var(--dynamic-outline-h2-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline li.highlight .heading-level-3 { + font-weight: max( + var(--dynamic-outline-h3-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline li.highlight .heading-level-4 { + font-weight: max( + var(--dynamic-outline-h4-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline li.highlight .heading-level-5 { + font-weight: max( + var(--dynamic-outline-h5-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline li.highlight .heading-level-6 { + font-weight: max( + var(--dynamic-outline-h6-font-weight), + var(--dynamic-outline-highlight-font-weight) + ); /* Preserve the maximum font weight on highlight. */ +} + +#dynamic-outline .outline-item-hidden { /* Rule for items hidden by search */ + display: none !important; +} + +/* Hide by collapse ONLY when NOT searching */ +#dynamic-outline:not(.is-searching) li.hidden-by-collapse { + display: none !important; +} + +/* + * Dynamic Outline Button + */ + +.dynamic-outline-button.button-active { + box-shadow: none; + opacity: var(--icon-opacity-hover); + color: var(--icon-color-hover); + background-color: var(--background-modifier-hover); +} + +.dynamic-outline-button.pinned { + color: var(--text-normal); +} + +.dynamic-outline-button.hidden, +.hide-button-from-toolbar .dynamic-outline-button { + display: none; +} + +/* + * Other + */ + +/* Custom Style Settings left padding for the headings sublist. */ +.setting-item[data-id="obsidian-dynamic-outline"] + + .style-settings-container + .setting-item[data-id="headings"] + + .style-settings-container { + padding-left: 17px; +} + +/* Custom hide logic for settings options */ +.setting-item.dynamic-outline-setting-item-hidden.is-disabled { + display: none; +} diff --git a/.obsidian/plugins/folder-notes/data.json b/.obsidian/plugins/folder-notes/data.json index 55e94e0..8a7608d 100644 --- a/.obsidian/plugins/folder-notes/data.json +++ b/.obsidian/plugins/folder-notes/data.json @@ -5,6 +5,9 @@ "hideFolderNote": true, "templatePath": "", "autoCreate": false, + "autoCreateFocusFiles": true, + "autoCreateForAttachmentFolder": false, + "autoCreateForFiles": false, "enableCollapsing": true, "excludeFolders": [], "whitelistFolders": [], @@ -14,6 +17,8 @@ "underlineFolderInPath": true, "openFolderNoteOnClickInPath": true, "openInNewTab": false, + "focusExistingTab": false, + "oldFolderNoteName": "{{folder_name}}", "folderNoteName": "{{folder_name}}", "folderNoteType": ".md", "disableFolderHighlighting": false, @@ -41,7 +46,14 @@ "onlyIncludeSubfolders": false, "storeFolderCondition": true, "showFolderNotes": false, - "disableCollapseIcon": true + "disableCollapseIcon": true, + "alwaysCollapse": false, + "autoSync": true, + "allowDragAndDrop": true, + "hideLinkList": true, + "hideFolderOverview": false, + "useActualLinks": false, + "fmtpIntegration": false }, "useSubmenus": true, "syncMove": true, @@ -90,7 +102,18 @@ "hideInSettings": false }, "hideCollapsingIcon": true, + "hideCollapsingIconForEmptyFolders": false, "tabManagerEnabled": true, "ignoreAttachmentFolder": true, - "deleteFilesAction": "trash" + "deleteFilesAction": "trash", + "openSidebar": { + "mobile": false, + "desktop": true + }, + "highlightFolder": true, + "persistentSettingsTab": { + "afterRestart": true, + "afterChangingTab": true + }, + "firstTimeInsertOverview": true } \ No newline at end of file diff --git a/.obsidian/plugins/folder-notes/main.js b/.obsidian/plugins/folder-notes/main.js index 6638872..6ac7f53 100644 --- a/.obsidian/plugins/folder-notes/main.js +++ b/.obsidian/plugins/folder-notes/main.js @@ -89,7 +89,7 @@ var require_lib = __commonJS({ return (_c = (_b = (_a = app2 === null || app2 === void 0 ? void 0 : app2.plugins) === null || _a === void 0 ? void 0 : _a.enabledPlugins) === null || _b === void 0 ? void 0 : _b.has(exports.pluginId)) !== null && _c !== void 0 ? _c : false; } exports.isPluginEnabled = isPluginEnabled; - function getDefer2(app2) { + function getDefer3(app2) { var _a, _b, _c, _d; const plugin = (_b = (_a = app2 === null || app2 === void 0 ? void 0 : app2.plugins) === null || _a === void 0 ? void 0 : _a.getPlugin(exports.pluginId)) !== null && _b !== void 0 ? _b : null; const defer = (_d = (_c = plugin === null || plugin === void 0 ? void 0 : plugin.getDefer) === null || _c === void 0 ? void 0 : _c.call(plugin)) !== null && _d !== void 0 ? _d : null; @@ -98,7 +98,7 @@ var require_lib = __commonJS({ } return defer; } - exports.getDefer = getDefer2; + exports.getDefer = getDefer3; function getApiSafe(app2) { return new ApiWrapper(null, app2); } @@ -127,7 +127,7 @@ var require_lib = __commonJS({ } getDeffer() { try { - return getDefer2(this.app); + return getDefer3(this.app); } catch (e) { if (e instanceof PluginNotEnabledError) { return null; @@ -160,10 +160,10 @@ __export(main_exports, { default: () => FolderNotesPlugin }); module.exports = __toCommonJS(main_exports); -var import_obsidian33 = require("obsidian"); +var import_obsidian48 = require("obsidian"); // src/settings/SettingsTab.ts -var import_obsidian24 = require("obsidian"); +var import_obsidian37 = require("obsidian"); // src/modals/ExistingNote.ts var import_obsidian = require("obsidian"); @@ -243,25 +243,15 @@ async function applyTemplate(plugin, file, leaf, templatePath) { if (templateContent.includes("==\u26A0 Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. \u26A0==")) { return; } - if (templatesEnabled && templaterEnabled) { - if (/<%/.test(templateContent)) { - return await templaterPlugin.write_template_to_file(templateFile, file); - } else { - if (leaf instanceof import_obsidian2.WorkspaceLeaf) { - leaf.openFile(file).then(async () => { - return await templatesPlugin.instance.insertTemplate(templateFile, file); - }); - } - } - } - if (templatesEnabled) { - if (leaf instanceof import_obsidian2.WorkspaceLeaf) { - leaf.openFile(file); - } - return await templatesPlugin.instance.insertTemplate(templateFile); - } if (templaterEnabled) { return await templaterPlugin.write_template_to_file(templateFile, file); + } else if (templatesEnabled) { + if (leaf instanceof import_obsidian2.WorkspaceLeaf) { + await leaf.openFile(file); + } + return await templatesPlugin.instance.insertTemplate(templateFile); + } else { + await plugin.app.vault.modify(file, templateContent); } } catch (e) { console.error(e); @@ -274,8 +264,8 @@ function getTemplatePlugins(app2) { const templatesEnabled = templatesPlugin.enabled; const templaterPlugin = app2.plugins.plugins["templater-obsidian"]; const templaterEnabled = app2.plugins.enabledPlugins.has("templater-obsidian"); - const templaterEmptyFileTemplate = templaterPlugin && ((_a = this.app.plugins.plugins["templater-obsidian"].settings) == null ? void 0 : _a.empty_file_template); - const templateFolder = templatesEnabled ? templatesPlugin.instance.options.folder : templaterPlugin ? templaterPlugin.settings.template_folder : void 0; + const templaterEmptyFileTemplate = templaterPlugin && ((_a = templaterPlugin.settings) == null ? void 0 : _a.empty_file_template); + const templateFolder = templatesEnabled ? templatesPlugin.instance.options.folder : templaterPlugin == null ? void 0 : templaterPlugin.settings.template_folder; return { templatesPlugin, templatesEnabled, @@ -287,7 +277,7 @@ function getTemplatePlugins(app2) { } // src/functions/folderNoteFunctions.ts -var import_obsidian12 = require("obsidian"); +var import_obsidian17 = require("obsidian"); // src/modals/DeleteConfirmation.ts var import_obsidian3 = require("obsidian"); @@ -303,7 +293,7 @@ var DeleteConfirmationModal = class extends import_obsidian3.Modal { const modalTitle = contentEl.createDiv({ cls: "fn-modal-title" }); const modalContent = contentEl.createDiv({ cls: "fn-modal-content" }); modalTitle.createEl("h2", { text: "Delete folder note" }); - modalContent.createEl("p", { text: `Are you sure you want to delete the folder note "${this.file.name}" ?` }); + modalContent.createEl("p", { text: `Are you sure you want to delete the folder note '${this.file.name}' ?` }); switch (plugin.settings.deleteFilesAction) { case "trash": modalContent.createEl("p", { text: "It will be moved to your system trash." }); @@ -357,6 +347,7 @@ var DeleteConfirmationModal = class extends import_obsidian3.Modal { }; // src/functions/utils.ts +var import_obsidian4 = require("obsidian"); function getFileNameFromPathString(path) { return path.substring(path.lastIndexOf("/") >= 0 ? path.lastIndexOf("/") + 1 : 0); } @@ -372,16 +363,33 @@ function removeExtension(name) { } function getFolderPathFromString(path) { const subString = path.lastIndexOf("/") >= 0 ? path.lastIndexOf("/") : 0; - return path.substring(0, subString); + const folderPath = path.substring(0, subString); + if (folderPath === "") { + return "/"; + } else { + return folderPath; + } } -function getFileExplorer() { - return this.app.workspace.getLeavesOfType("file-explorer")[0]; +function getFileExplorer(plugin) { + return plugin.app.workspace.getLeavesOfType("file-explorer")[0]; +} +function getFileExplorerActiveFolder() { + var _a, _b, _c; + const view = this.app.workspace.getActiveViewOfType(import_obsidian4.View); + if ((view == null ? void 0 : view.getViewType()) !== "file-explorer") + return null; + const fe = view; + const activeFileOrFolder = (_c = (_a = fe.tree.focusedItem) == null ? void 0 : _a.file) != null ? _c : (_b = fe.activeDom) == null ? void 0 : _b.file; + if (!(activeFileOrFolder instanceof import_obsidian4.TFolder)) + return null; + return activeFileOrFolder; } // src/ExcludeFolders/ExcludePattern.ts var ExcludePattern = class { - constructor(pattern, position, plugin) { + constructor(pattern, position, id, plugin) { this.type = "pattern"; + this.id = id || crypto.randomUUID(); this.string = pattern; this.position = position; this.subFolders = plugin.settings.excludePatternDefaultSettings.subFolders; @@ -392,17 +400,18 @@ var ExcludePattern = class { this.excludeFromFolderOverview = plugin.settings.excludePatternDefaultSettings.excludeFromFolderOverview; this.path = ""; this.hideInSettings = false; + this.showFolderNote = plugin.settings.excludePatternDefaultSettings.showFolderNote; } }; // src/ExcludeFolders/functions/folderFunctions.ts -var import_obsidian9 = require("obsidian"); +var import_obsidian15 = require("obsidian"); // src/suggesters/FolderSuggester.ts -var import_obsidian5 = require("obsidian"); +var import_obsidian6 = require("obsidian"); // src/suggesters/Suggest.ts -var import_obsidian4 = require("obsidian"); +var import_obsidian5 = require("obsidian"); // node_modules/@popperjs/core/lib/enums.js var top = "top"; @@ -1905,7 +1914,7 @@ var TextInputSuggest = class { constructor(inputEl, plugin) { this.inputEl = inputEl; this.plugin = plugin; - this.scope = new import_obsidian4.Scope(); + this.scope = new import_obsidian5.Scope(); this.suggestEl = createDiv("suggestion-container"); const suggestion = this.suggestEl.createDiv("suggestion"); this.suggest = new Suggest(this, suggestion, this.scope); @@ -1965,9 +1974,10 @@ var TextInputSuggest = class { // src/suggesters/FolderSuggester.ts var FolderSuggest = class extends TextInputSuggest { - constructor(inputEl, plugin, folder) { + constructor(inputEl, plugin, whitelistSuggester, folder) { super(inputEl, plugin); this.inputEl = inputEl; + this.whitelistSuggester = whitelistSuggester; this.folder = folder; } get_error_msg(mode) { @@ -1985,10 +1995,10 @@ var FolderSuggest = class extends TextInputSuggest { if (this.folder) { files = this.folder.children; } else { - files = this.plugin.app.vault.getAllLoadedFiles(); + files = this.plugin.app.vault.getAllLoadedFiles().slice(0, 100); } files.forEach((folder) => { - if (folder instanceof import_obsidian5.TFolder && folder.path.toLowerCase().contains(lower_input_str) && !this.plugin.settings.excludeFolders.find((f) => f.path === folder.path)) { + if (folder instanceof import_obsidian6.TFolder && folder.path.toLowerCase().contains(lower_input_str) && (!this.plugin.settings.excludeFolders.find((f) => f.path === folder.path) || this.whitelistSuggester)) { folders.push(folder); } }); @@ -2005,8 +2015,188 @@ var FolderSuggest = class extends TextInputSuggest { }; // src/ExcludeFolders/modals/ExcludeFolderSettings.ts -var import_obsidian6 = require("obsidian"); -var ExcludedFolderSettings = class extends import_obsidian6.Modal { +var import_obsidian8 = require("obsidian"); + +// src/functions/styleFunctions.ts +var import_obsidian7 = require("obsidian"); + +// src/ExcludeFolders/ExcludeFolder.ts +var ExcludedFolder = class { + constructor(path, position, id, plugin) { + this.type = "folder"; + this.id = id || crypto.randomUUID(); + this.path = path; + this.subFolders = plugin.settings.excludeFolderDefaultSettings.subFolders; + this.disableSync = plugin.settings.excludeFolderDefaultSettings.disableSync; + this.disableAutoCreate = plugin.settings.excludeFolderDefaultSettings.disableAutoCreate; + this.disableFolderNote = plugin.settings.excludeFolderDefaultSettings.disableFolderNote; + this.enableCollapsing = plugin.settings.excludeFolderDefaultSettings.enableCollapsing; + this.position = position; + this.excludeFromFolderOverview = plugin.settings.excludeFolderDefaultSettings.excludeFromFolderOverview; + this.string = ""; + this.hideInSettings = false; + this.showFolderNote = plugin.settings.excludeFolderDefaultSettings.showFolderNote; + } +}; + +// src/functions/styleFunctions.ts +function refreshAllFolderStyles(forceReload = false, plugin) { + if (plugin.activeFileExplorer === getFileExplorer(plugin) && !forceReload) { + return; + } + plugin.activeFileExplorer = getFileExplorer(plugin); + plugin.app.vault.getAllLoadedFiles().forEach(async (file) => { + if (file instanceof import_obsidian7.TFolder) { + await updateCSSClassesForFolder(file.path, plugin); + } + }); +} +async function updateCSSClassesForFolder(folderPath, plugin) { + const folder = plugin.app.vault.getAbstractFileByPath(folderPath); + if (!folder || !(folder instanceof import_obsidian7.TFolder)) { + return; + } + const folderNote = getFolderNote(plugin, folder.path); + const detachedFolderNote = getDetachedFolder(plugin, folder.path); + if (folder.children.length === 0) { + addCSSClassToFileExplorerEl(folder.path, "fn-empty-folder", false, plugin); + } + if (!folderNote || detachedFolderNote) { + removeCSSClassFromFileExplorerEL(folder == null ? void 0 : folder.path, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folder == null ? void 0 : folder.path, "only-has-folder-note", true, plugin); + return; + } + const excludedFolder = getExcludedFolder(plugin, folder.path, true); + if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) { + removeCSSClassFromFileExplorerEL(folderNote.path, "is-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folder.path, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folder == null ? void 0 : folder.path, "only-has-folder-note", true, plugin); + } else { + markFolderWithFolderNoteClasses(folder, plugin); + if (excludedFolder == null ? void 0 : excludedFolder.showFolderNote) { + addCSSClassToFileExplorerEl(folder.path, "show-folder-note-in-explorer", true, plugin); + unmarkFileAsFolderNote(folderNote, plugin); + return; + } + if (plugin.isEmptyFolderNoteFolder(folder) && getFolderNote(plugin, folder.path)) { + addCSSClassToFileExplorerEl(folder.path, "only-has-folder-note", true, plugin); + } else { + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); + } + } + markFolderAndNoteWithClasses(folderNote, folder, plugin); +} +function markFolderAndNoteWithClasses(file, folder, plugin) { + markFileAsFolderNote(file, plugin); + markFolderWithFolderNoteClasses(folder, plugin); +} +function markFolderWithFolderNoteClasses(folder, plugin) { + addCSSClassToFileExplorerEl(folder.path, "has-folder-note", false, plugin); + if (plugin.isEmptyFolderNoteFolder(folder) && getFolderNote(plugin, folder.path)) { + addCSSClassToFileExplorerEl(folder.path, "only-has-folder-note", true, plugin); + } else { + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); + } +} +function markFileAsFolderNote(file, plugin) { + addCSSClassToFileExplorerEl(file.path, "is-folder-note", false, plugin); +} +function unmarkFileAsFolderNote(file, plugin) { + removeCSSClassFromFileExplorerEL(file.path, "is-folder-note", false, plugin); +} +function unmarkFolderAsFolderNote(folder, plugin) { + removeCSSClassFromFileExplorerEL(folder.path, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); +} +async function addCSSClassToFileExplorerEl(path, cssClass, parent = false, plugin, waitForCreate = false, count = 0) { + const fileExplorerItem = getFileExplorerElement(path, plugin); + if (!fileExplorerItem) { + if (waitForCreate && count < 5) { + await new Promise((r) => setTimeout(r, 500)); + addCSSClassToFileExplorerEl(path, cssClass, parent, plugin, waitForCreate, count + 1); + return; + } + return; + } + if (parent) { + const parentElement = fileExplorerItem == null ? void 0 : fileExplorerItem.parentElement; + if (parentElement) { + parentElement.addClass(cssClass); + } + } else { + fileExplorerItem.addClass(cssClass); + document.querySelectorAll(`[data-path='${CSS.escape(path)}']`).forEach((item) => { + item.addClass(cssClass); + }); + } +} +function removeCSSClassFromFileExplorerEL(path, cssClass, parent, plugin) { + if (!path) + return; + const fileExplorerItem = getFileExplorerElement(path, plugin); + document.querySelectorAll(`[data-path='${CSS.escape(path)}']`).forEach((item) => { + item.removeClass(cssClass); + }); + if (!fileExplorerItem) { + return; + } + if (parent) { + const parentElement = fileExplorerItem == null ? void 0 : fileExplorerItem.parentElement; + if (parentElement) { + parentElement.removeClass(cssClass); + } + return; + } else { + fileExplorerItem.removeClass(cssClass); + } +} +function getFileExplorerElement(path, plugin) { + var _a, _b, _c, _d; + const fileExplorer = getFileExplorer(plugin); + if (!((_a = fileExplorer == null ? void 0 : fileExplorer.view) == null ? void 0 : _a.fileItems)) { + return null; + } + const fileExplorerItem = (_b = fileExplorer.view.fileItems) == null ? void 0 : _b[path]; + return (_d = (_c = fileExplorerItem == null ? void 0 : fileExplorerItem.selfEl) != null ? _c : fileExplorerItem == null ? void 0 : fileExplorerItem.titleEl) != null ? _d : null; +} +function showFolderNoteInFileExplorer(path, plugin) { + const excludedFolder = new ExcludedFolder(path, plugin.settings.excludeFolders.length, void 0, plugin); + excludedFolder.subFolders = false; + excludedFolder.disableSync = false; + excludedFolder.disableAutoCreate = false; + excludedFolder.disableFolderNote = false; + excludedFolder.enableCollapsing = false; + excludedFolder.excludeFromFolderOverview = false; + excludedFolder.hideInSettings = true; + excludedFolder.showFolderNote = true; + addExcludedFolder(plugin, excludedFolder, false); + addCSSClassToFileExplorerEl(path, "show-folder-note-in-explorer", true, plugin); + updateCSSClassesForFolder(path, plugin); +} +function hideFolderNoteInFileExplorer(folderPath, plugin) { + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.path !== folderPath && folder.showFolderNote); + plugin.saveSettings(false); + removeCSSClassFromFileExplorerEL(folderPath, "show-folder-note-in-explorer", true, plugin); + updateCSSClassesForFolder(folderPath, plugin); +} +function setActiveFolder(folderPath, plugin) { + const fileExplorerItem = getFileExplorerElement(folderPath, plugin); + if (fileExplorerItem) { + fileExplorerItem.addClass("fn-is-active"); + plugin.activeFolderDom = fileExplorerItem; + } +} +function removeActiveFolder(plugin) { + var _a; + if (plugin.activeFolderDom) { + plugin.activeFolderDom.removeClass("fn-is-active"); + (_a = plugin.activeFolderDom) == null ? void 0 : _a.removeClass("has-focus"); + plugin.activeFolderDom = null; + } +} + +// src/ExcludeFolders/modals/ExcludeFolderSettings.ts +var ExcludedFolderSettings = class extends import_obsidian8.Modal { constructor(app2, plugin, excludedFolder) { super(app2); this.plugin = plugin; @@ -2020,29 +2210,35 @@ var ExcludedFolderSettings = class extends import_obsidian6.Modal { const { contentEl } = this; contentEl.empty(); contentEl.createEl("h2", { text: "Excluded folder settings" }); - new import_obsidian6.Setting(contentEl).setName("Include subfolders").setDesc("Choose if the subfolders of the folder should also be excluded").addToggle((toggle) => toggle.setValue(this.excludedFolder.subFolders).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Include subfolders").setDesc("Choose if the subfolders of the folder should also be excluded").addToggle((toggle) => toggle.setValue(this.excludedFolder.subFolders).onChange(async (value) => { this.excludedFolder.subFolders = value; await this.plugin.saveSettings(true); })); - new import_obsidian6.Setting(contentEl).setName("Disable folder name sync").setDesc("Choose if the folder note should be renamed when the folder name is changed").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableSync).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Disable folder name sync").setDesc("Choose if the folder note should be renamed when the folder name is changed").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableSync).onChange(async (value) => { this.excludedFolder.disableSync = value; await this.plugin.saveSettings(); })); - new import_obsidian6.Setting(contentEl).setName("Don't show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.excludedFolder.excludeFromFolderOverview).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Don't show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.excludedFolder.excludeFromFolderOverview).onChange(async (value) => { this.excludedFolder.excludeFromFolderOverview = value; await this.plugin.saveSettings(); })); - new import_obsidian6.Setting(contentEl).setName("Disable auto creation of folder notes in this folder").setDesc("Choose if a folder note should be created when a new folder is created").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableAutoCreate).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Show folder note in the file explorer").setDesc("Choose if the folder note should be shown in the file explorer").addToggle((toggle) => toggle.setValue(this.excludedFolder.showFolderNote).onChange(async (value) => { + this.excludedFolder.showFolderNote = value; + updateCSSClassesForFolder(this.excludedFolder.path, this.plugin); + await this.plugin.saveSettings(); + this.display(); + })); + new import_obsidian8.Setting(contentEl).setName("Disable auto creation of folder notes in this folder").setDesc("Choose if a folder note should be created when a new folder is created").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableAutoCreate).onChange(async (value) => { this.excludedFolder.disableAutoCreate = value; await this.plugin.saveSettings(); })); - new import_obsidian6.Setting(contentEl).setName("Disable open folder note").setDesc("Choose if the folder note should be opened when the folder is opened").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableFolderNote).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Disable open folder note").setDesc("Choose if the folder note should be opened when the folder is opened").addToggle((toggle) => toggle.setValue(this.excludedFolder.disableFolderNote).onChange(async (value) => { this.excludedFolder.disableFolderNote = value; await this.plugin.saveSettings(true); this.display(); })); if (!this.excludedFolder.disableFolderNote) { - new import_obsidian6.Setting(contentEl).setName("Collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.excludedFolder.enableCollapsing).onChange(async (value) => { + new import_obsidian8.Setting(contentEl).setName("Collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.excludedFolder.enableCollapsing).onChange(async (value) => { this.excludedFolder.enableCollapsing = value; await this.plugin.saveSettings(); })); @@ -2055,11 +2251,11 @@ var ExcludedFolderSettings = class extends import_obsidian6.Modal { }; // src/ExcludeFolders/functions/patternFunctions.ts -var import_obsidian8 = require("obsidian"); +var import_obsidian10 = require("obsidian"); // src/ExcludeFolders/modals/PatternSettings.ts -var import_obsidian7 = require("obsidian"); -var PatternSettings = class extends import_obsidian7.Modal { +var import_obsidian9 = require("obsidian"); +var PatternSettings = class extends import_obsidian9.Modal { constructor(app2, plugin, pattern) { super(app2); this.plugin = plugin; @@ -2073,25 +2269,31 @@ var PatternSettings = class extends import_obsidian7.Modal { const { contentEl } = this; contentEl.empty(); contentEl.createEl("h2", { text: "Pattern settings" }); - new import_obsidian7.Setting(contentEl).setName("Disable folder name sync").setDesc("Choose if the folder name should be renamed when the file name has been changed").addToggle((toggle) => toggle.setValue(this.pattern.disableSync).onChange(async (value) => { + new import_obsidian9.Setting(contentEl).setName("Disable folder name sync").setDesc("Choose if the folder name should be renamed when the file name has been changed").addToggle((toggle) => toggle.setValue(this.pattern.disableSync).onChange(async (value) => { this.pattern.disableSync = value; await this.plugin.saveSettings(); })); - new import_obsidian7.Setting(contentEl).setName("Disable auto creation of folder notes in this folder").setDesc("Choose if a folder note should be created when a new folder is created that matches this pattern").addToggle((toggle) => toggle.setValue(this.pattern.disableAutoCreate).onChange(async (value) => { + new import_obsidian9.Setting(contentEl).setName("Disable auto creation of folder notes in this folder").setDesc("Choose if a folder note should be created when a new folder is created that matches this pattern").addToggle((toggle) => toggle.setValue(this.pattern.disableAutoCreate).onChange(async (value) => { this.pattern.disableAutoCreate = value; await this.plugin.saveSettings(); })); - new import_obsidian7.Setting(contentEl).setName("Don't show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.pattern.excludeFromFolderOverview).onChange(async (value) => { + new import_obsidian9.Setting(contentEl).setName("Don't show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.pattern.excludeFromFolderOverview).onChange(async (value) => { this.pattern.excludeFromFolderOverview = value; await this.plugin.saveSettings(); })); - new import_obsidian7.Setting(contentEl).setName("Disable open folder note").setDesc("Choose if the folder note should be opened when the folder is opened").addToggle((toggle) => toggle.setValue(this.pattern.disableFolderNote).onChange(async (value) => { - this.pattern.disableFolderNote = value; + new import_obsidian9.Setting(contentEl).setName("Show folder note in the file explorer").setDesc("Choose if the folder note should be shown in the file explorer").addToggle((toggle) => toggle.setValue(this.pattern.showFolderNote).onChange(async (value) => { + this.pattern.showFolderNote = value; await this.plugin.saveSettings(); + refreshAllFolderStyles(true, this.plugin); + this.display(); + })); + new import_obsidian9.Setting(contentEl).setName("Disable open folder note").setDesc("Choose if the folder note should be opened when the folder is opened").addToggle((toggle) => toggle.setValue(this.pattern.disableFolderNote).onChange(async (value) => { + this.pattern.disableFolderNote = value; + await this.plugin.saveSettings(true); this.display(); })); if (!this.pattern.disableFolderNote) { - new import_obsidian7.Setting(contentEl).setName("Collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.pattern.enableCollapsing).onChange(async (value) => { + new import_obsidian9.Setting(contentEl).setName("Collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.pattern.enableCollapsing).onChange(async (value) => { this.pattern.enableCollapsing = value; await this.plugin.saveSettings(); })); @@ -2105,16 +2307,16 @@ var PatternSettings = class extends import_obsidian7.Modal { // src/ExcludeFolders/functions/patternFunctions.ts function updatePattern(plugin, pattern, newPattern) { - plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.string !== pattern.string); + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.id !== pattern.id); addExcludedFolder(plugin, newPattern); } function deletePattern(plugin, pattern) { - plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.string !== pattern.string || folder.type === "folder"); - plugin.saveSettings(); + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.id !== pattern.id || folder.type === "folder"); + plugin.saveSettings(true); resyncArray(plugin); } -function getExcludedFolderByPattern(plugin, folderName) { - return plugin.settings.excludeFolders.filter((s) => s.type == "pattern").find((pattern) => { +function getExcludedFoldersByPattern(plugin, folderName) { + return plugin.settings.excludeFolders.filter((s) => s.type === "pattern").filter((pattern) => { if (!pattern.string) { return false; } @@ -2148,16 +2350,13 @@ function getExcludedFolderByPattern(plugin, folderName) { } function addExcludePatternListItem(settings, containerEl, pattern) { const plugin = settings.plugin; - const setting = new import_obsidian8.Setting(containerEl); + const setting = new import_obsidian10.Setting(containerEl); setting.setClass("fn-exclude-folder-list"); setting.addSearch((cb) => { cb.containerEl.addClass("fn-exclude-folder-path"); cb.setPlaceholder("Pattern"); cb.setValue(pattern.string); cb.onChange((value) => { - if (plugin.settings.excludeFolders.find((folder) => folder.string === value)) { - return; - } pattern.string = value; updatePattern(plugin, pattern, pattern); }); @@ -2169,48 +2368,50 @@ function addExcludePatternListItem(settings, containerEl, pattern) { new PatternSettings(plugin.app, plugin, pattern).open(); }); }); - setting.addButton((cb) => { - cb.setIcon("up-chevron-glyph"); - cb.setTooltip("Move up"); - cb.onClick(() => { - if (pattern.position === 0) { - return; - } - pattern.position -= 1; - updatePattern(plugin, pattern, pattern); - const oldPattern = plugin.settings.excludeFolders.find((folder) => folder.position === pattern.position); - if (oldPattern) { - oldPattern.position += 1; - if (oldPattern.type === "pattern") { - updatePattern(plugin, oldPattern, oldPattern); - } else { - updateExcludedFolder(plugin, oldPattern, oldPattern); + if (import_obsidian10.Platform.isDesktop || import_obsidian10.Platform.isTablet) { + setting.addButton((cb) => { + cb.setIcon("up-chevron-glyph"); + cb.setTooltip("Move up"); + cb.onClick(() => { + if (pattern.position === 0) { + return; } - } - settings.display(); - }); - }); - setting.addButton((cb) => { - cb.setIcon("down-chevron-glyph"); - cb.setTooltip("Move down"); - cb.onClick(() => { - if (pattern.position === plugin.settings.excludeFolders.length - 1) { - return; - } - pattern.position += 1; - updatePattern(plugin, pattern, pattern); - const oldPattern = plugin.settings.excludeFolders.find((folder) => folder.position === pattern.position); - if (oldPattern) { - oldPattern.position -= 1; - if (oldPattern.type === "pattern") { - updatePattern(plugin, oldPattern, oldPattern); - } else { - updateExcludedFolder(plugin, oldPattern, oldPattern); + pattern.position -= 1; + updatePattern(plugin, pattern, pattern); + const oldPattern = plugin.settings.excludeFolders.find((folder) => folder.position === pattern.position); + if (oldPattern) { + oldPattern.position += 1; + if (oldPattern.type === "pattern") { + updatePattern(plugin, oldPattern, oldPattern); + } else { + updateExcludedFolder(plugin, oldPattern, oldPattern); + } } - } - settings.display(); + settings.display(); + }); }); - }); + setting.addButton((cb) => { + cb.setIcon("down-chevron-glyph"); + cb.setTooltip("Move down"); + cb.onClick(() => { + if (pattern.position === plugin.settings.excludeFolders.length - 1) { + return; + } + pattern.position += 1; + updatePattern(plugin, pattern, pattern); + const oldPattern = plugin.settings.excludeFolders.find((folder) => folder.position === pattern.position); + if (oldPattern) { + oldPattern.position -= 1; + if (oldPattern.type === "pattern") { + updatePattern(plugin, oldPattern, oldPattern); + } else { + updateExcludedFolder(plugin, oldPattern, oldPattern); + } + } + settings.display(); + }); + }); + } setting.addButton((cb) => { cb.setIcon("trash-2"); cb.setTooltip("Delete pattern"); @@ -2222,21 +2423,451 @@ function addExcludePatternListItem(settings, containerEl, pattern) { }); } -// src/ExcludeFolders/functions/folderFunctions.ts -function getExcludedFolder(plugin, path) { - const folderName = getFolderNameFromPathString(path); - const matchedPattern = getExcludedFolderByPattern(plugin, folderName); - if (matchedPattern) { - return matchedPattern; +// src/ExcludeFolders/WhitelistPattern.ts +var WhitelistedPattern = class { + constructor(pattern, position, id, plugin) { + this.type = "pattern"; + this.id = id || crypto.randomUUID(); + this.subFolders = plugin.settings.excludePatternDefaultSettings.subFolders; + this.position = position; + this.string = pattern; + this.path = ""; } - const excludedFolder = getExcludedFolderByPath(plugin, path); - if ((excludedFolder == null ? void 0 : excludedFolder.path) === "") { - return; +}; + +// src/ExcludeFolders/functions/whitelistFolderFunctions.ts +var import_obsidian14 = require("obsidian"); + +// src/ExcludeFolders/modals/WhitelistFolderSettings.ts +var import_obsidian11 = require("obsidian"); +var WhitelistFolderSettings = class extends import_obsidian11.Modal { + constructor(app2, plugin, whitelistedFolder) { + super(app2); + this.plugin = plugin; + this.app = app2; + this.whitelistedFolder = whitelistedFolder; + } + onOpen() { + this.display(); + } + display() { + const { contentEl } = this; + contentEl.empty(); + contentEl.createEl("h2", { text: "Whitelisted folder settings" }); + new import_obsidian11.Setting(contentEl).setName("Include subfolders").setDesc("Choose if the subfolders of the folder should also be whitelisted").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.subFolders).onChange(async (value) => { + this.whitelistedFolder.subFolders = value; + await this.plugin.saveSettings(true); + })); + new import_obsidian11.Setting(contentEl).setName("Enable folder name sync").setDesc("Choose if the name of a folder note should be renamed when the folder name is changed").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.enableSync).onChange(async (value) => { + this.whitelistedFolder.enableSync = value; + await this.plugin.saveSettings(); + })); + new import_obsidian11.Setting(contentEl).setName("Show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.showInFolderOverview).onChange(async (value) => { + this.whitelistedFolder.showInFolderOverview = value; + await this.plugin.saveSettings(); + })); + new import_obsidian11.Setting(contentEl).setName("Hide folder note in file explorer").setDesc("Choose if the folder note should be hidden in the file explorer").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.hideInFileExplorer).onChange(async (value) => { + this.whitelistedFolder.hideInFileExplorer = value; + await this.plugin.saveSettings(); + })); + new import_obsidian11.Setting(contentEl).setName("Allow auto creation of folder notes in this folder").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.enableAutoCreate).onChange(async (value) => { + this.whitelistedFolder.enableAutoCreate = value; + await this.plugin.saveSettings(); + })); + new import_obsidian11.Setting(contentEl).setName("Open folder note when clicking on the folder").setDesc("Choose if the folder note should be opened when the folder is opened").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.enableFolderNote).onChange(async (value) => { + this.whitelistedFolder.enableFolderNote = value; + await this.plugin.saveSettings(true); + this.display(); + })); + if (this.whitelistedFolder.enableFolderNote) { + new import_obsidian11.Setting(contentEl).setName("Don't collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.whitelistedFolder.disableCollapsing).onChange(async (value) => { + this.whitelistedFolder.disableCollapsing = value; + await this.plugin.saveSettings(); + })); + } + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/ExcludeFolders/functions/whitelistPatternFunctions.ts +var import_obsidian13 = require("obsidian"); + +// src/ExcludeFolders/modals/WhitelistPatternSettings.ts +var import_obsidian12 = require("obsidian"); +var WhitelistPatternSettings = class extends import_obsidian12.Modal { + constructor(app2, plugin, pattern) { + super(app2); + this.plugin = plugin; + this.app = app2; + this.pattern = pattern; + } + onOpen() { + this.display(); + } + display() { + const { contentEl } = this; + contentEl.empty(); + contentEl.createEl("h2", { text: "Whitelisted pattern settings" }); + new import_obsidian12.Setting(contentEl).setName("Enable folder name sync").setDesc("Choose if the name of a folder note should be renamed when the folder name is changed").addToggle((toggle) => toggle.setValue(this.pattern.enableSync).onChange(async (value) => { + this.pattern.enableSync = value; + await this.plugin.saveSettings(); + })); + new import_obsidian12.Setting(contentEl).setName("Allow auto creation of folder notes in this folder").addToggle((toggle) => toggle.setValue(this.pattern.enableAutoCreate).onChange(async (value) => { + this.pattern.enableAutoCreate = value; + await this.plugin.saveSettings(); + })); + new import_obsidian12.Setting(contentEl).setName("Show folder in folder overview").setDesc("Choose if the folder should be shown in the folder overview").addToggle((toggle) => toggle.setValue(this.pattern.showInFolderOverview).onChange(async (value) => { + this.pattern.showInFolderOverview = value; + await this.plugin.saveSettings(); + })); + new import_obsidian12.Setting(contentEl).setName("Open folder note when clicking on the folder").setDesc("Choose if the folder note should be opened when you click on the folder").addToggle((toggle) => toggle.setValue(this.pattern.enableFolderNote).onChange(async (value) => { + this.pattern.enableFolderNote = value; + await this.plugin.saveSettings(true); + this.display(); + })); + if (this.pattern.enableFolderNote) { + new import_obsidian12.Setting(contentEl).setName("Don't collapse folder when opening folder note").setDesc("Choose if the folder should be collapsed when the folder note is opened").addToggle((toggle) => toggle.setValue(this.pattern.disableCollapsing).onChange(async (value) => { + this.pattern.disableCollapsing = value; + await this.plugin.saveSettings(); + })); + } + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/ExcludeFolders/functions/whitelistPatternFunctions.ts +function updateWhitelistedPattern(plugin, pattern, newPattern) { + plugin.settings.whitelistFolders = plugin.settings.whitelistFolders.filter((folder) => folder.id !== pattern.id); + addWhitelistedFolder(plugin, newPattern); +} +function deletePattern2(plugin, pattern) { + plugin.settings.whitelistFolders = plugin.settings.whitelistFolders.filter((folder) => folder.id !== pattern.id || folder.type === "folder"); + plugin.saveSettings(true); + resyncArray(plugin); +} +function getWhitelistedFoldersByPattern(plugin, folderName) { + return plugin.settings.whitelistFolders.filter((s) => s.type === "pattern").filter((pattern) => { + if (!pattern.string) { + return false; + } + const string = pattern.string.trim(); + if (!string.startsWith("{regex}") && !(string.startsWith("*") || string.endsWith("*"))) { + return false; + } + const regex = string.replace("{regex}", "").trim(); + if (string.startsWith("{regex}") && regex === "") { + return false; + } + if (regex !== void 0 && string.startsWith("{regex}")) { + const match = new RegExp(regex).exec(folderName); + if (match) { + return true; + } + } else if (string.startsWith("*") && string.endsWith("*")) { + if (folderName.includes(string.slice(1, -1))) { + return true; + } + } else if (string.startsWith("*")) { + if (folderName.endsWith(string.slice(1))) { + return true; + } + } else if (string.endsWith("*")) { + if (folderName.startsWith(string.slice(0, -1))) { + return true; + } + } + }); +} +function addWhitelistedPatternListItem(settings, containerEl, pattern) { + const plugin = settings.plugin; + const setting = new import_obsidian13.Setting(containerEl); + setting.setClass("fn-exclude-folder-list"); + setting.addSearch((cb) => { + cb.containerEl.addClass("fn-exclude-folder-path"); + cb.setPlaceholder("Pattern"); + cb.setValue(pattern.string); + cb.onChange((value) => { + if (plugin.settings.whitelistFolders.find((folder) => folder.string === value)) { + return; + } + pattern.string = value; + updateWhitelistedPattern(plugin, pattern, pattern); + }); + }); + setting.addButton((cb) => { + cb.setIcon("edit"); + cb.setTooltip("Edit pattern"); + cb.onClick(() => { + new WhitelistPatternSettings(plugin.app, plugin, pattern).open(); + }); + }); + setting.addButton((cb) => { + cb.setIcon("up-chevron-glyph"); + cb.setTooltip("Move up"); + cb.onClick(() => { + if (pattern.position === 0) { + return; + } + pattern.position -= 1; + updateWhitelistedPattern(plugin, pattern, pattern); + const oldPattern = plugin.settings.whitelistFolders.find((folder) => folder.position === pattern.position); + if (oldPattern) { + oldPattern.position += 1; + if (oldPattern.type === "pattern") { + updateWhitelistedPattern(plugin, oldPattern, oldPattern); + } else { + updateWhitelistedFolder(plugin, oldPattern, oldPattern); + } + } + settings.display(); + }); + }); + setting.addButton((cb) => { + cb.setIcon("down-chevron-glyph"); + cb.setTooltip("Move down"); + cb.onClick(() => { + if (pattern.position === plugin.settings.whitelistFolders.length - 1) { + return; + } + pattern.position += 1; + updateWhitelistedPattern(plugin, pattern, pattern); + const oldPattern = plugin.settings.whitelistFolders.find((folder) => folder.position === pattern.position); + if (oldPattern) { + oldPattern.position -= 1; + if (oldPattern.type === "pattern") { + updateWhitelistedPattern(plugin, oldPattern, oldPattern); + } else { + updateWhitelistedFolder(plugin, oldPattern, oldPattern); + } + } + settings.display(); + }); + }); + setting.addButton((cb) => { + cb.setIcon("trash-2"); + cb.setTooltip("Delete pattern"); + cb.onClick(() => { + deletePattern2(plugin, pattern); + setting.clear(); + setting.settingEl.remove(); + }); + }); +} + +// src/ExcludeFolders/functions/whitelistFolderFunctions.ts +import_obsidian14.Platform.isMobileApp; +function getWhitelistedFolder(plugin, path) { + let whitelistedFolder = {}; + const folderName = getFolderNameFromPathString(path); + const matchedPatterns = getWhitelistedFoldersByPattern(plugin, folderName); + const whitelistedFolders = getWhitelistedFoldersByPath(plugin, path); + const combinedWhitelistedFolders = [...matchedPatterns, ...whitelistedFolders]; + const propertiesToCopy = [ + "enableAutoCreate", + "enableFolderNote", + "enableSync", + "showInFolderOverview" + ]; + if (combinedWhitelistedFolders.length > 0) { + for (const matchedFolder of combinedWhitelistedFolders) { + propertiesToCopy.forEach((property) => { + if (matchedFolder[property] === true) { + whitelistedFolder[property] = true; + } else if (!matchedFolder[property]) { + whitelistedFolder[property] = false; + } + }); + } + } + if (whitelistedFolder instanceof Object && Object.keys(whitelistedFolder).length === 0) { + whitelistedFolder = void 0; + } + return whitelistedFolder; +} +function getWhitelistedFoldersByPath(plugin, path) { + return plugin.settings.whitelistFolders.filter((whitelistedFolder) => { + if (whitelistedFolder.path === path) { + return true; + } + if (!whitelistedFolder.subFolders) { + return false; + } + return getFolderPathFromString(path).startsWith(whitelistedFolder.path); + }); +} +function addWhitelistedFolder(plugin, whitelistedFolder) { + plugin.settings.whitelistFolders.push(whitelistedFolder); + plugin.saveSettings(true); +} +function deleteWhitelistedFolder(plugin, whitelistedFolder) { + plugin.settings.whitelistFolders = plugin.settings.whitelistFolders.filter((folder) => folder.id !== whitelistedFolder.id || folder.type === "pattern"); + plugin.saveSettings(true); + resyncArray2(plugin); +} +function updateWhitelistedFolder(plugin, whitelistedFolder, newWhitelistFolder) { + plugin.settings.whitelistFolders = plugin.settings.whitelistFolders.filter((folder) => folder.id !== whitelistedFolder.id); + addWhitelistedFolder(plugin, newWhitelistFolder); +} +function resyncArray2(plugin) { + plugin.settings.whitelistFolders = plugin.settings.whitelistFolders.sort((a, b) => a.position - b.position); + plugin.settings.whitelistFolders.forEach((folder, index) => { + folder.position = index; + }); + plugin.saveSettings(); +} +function addWhitelistFolderListItem(settings, containerEl, whitelistedFolder) { + const plugin = settings.plugin; + const setting = new import_obsidian14.Setting(containerEl); + setting.setClass("fn-exclude-folder-list"); + const inputContainer = setting.settingEl.createDiv({ cls: "fn-whitelist-folder-input-container" }); + const SearchComponent = new import_obsidian14.Setting(inputContainer); + SearchComponent.addSearch((cb) => { + new FolderSuggest(cb.inputEl, plugin, true); + cb.containerEl.addClass("fn-exclude-folder-path"); + cb.setPlaceholder("Folder path"); + cb.setValue(whitelistedFolder.path); + cb.onChange((value) => { + if (value.startsWith("{regex}") || value.includes("*")) { + deleteWhitelistedFolder(plugin, whitelistedFolder); + const pattern = new WhitelistedPattern(value, plugin.settings.whitelistFolders.length, void 0, plugin); + addWhitelistedFolder(plugin, pattern); + addWhitelistedPatternListItem(settings, containerEl, pattern); + setting.clear(); + setting.settingEl.remove(); + } + if (!plugin.app.vault.getAbstractFileByPath(value)) + return; + whitelistedFolder.path = value; + updateWhitelistedFolder(plugin, whitelistedFolder, whitelistedFolder); + }); + }); + const buttonContainer = setting.settingEl.createDiv({ cls: "fn-whitelist-folder-buttons" }); + new import_obsidian14.ButtonComponent(buttonContainer).setIcon("edit").setTooltip("Edit folder note").onClick(() => { + new WhitelistFolderSettings(plugin.app, plugin, whitelistedFolder).open(); + }); + new import_obsidian14.ButtonComponent(buttonContainer).setIcon("up-chevron-glyph").setTooltip("Move up").onClick(() => { + if (whitelistedFolder.position === 0) { + return; + } + whitelistedFolder.position -= 1; + updateWhitelistedFolder(plugin, whitelistedFolder, whitelistedFolder); + const oldWhitelistedFolder = plugin.settings.whitelistFolders.find((folder) => folder.position === whitelistedFolder.position); + if (oldWhitelistedFolder) { + oldWhitelistedFolder.position += 1; + if (oldWhitelistedFolder.type === "pattern") { + updateWhitelistedPattern(plugin, oldWhitelistedFolder, oldWhitelistedFolder); + } else { + updateWhitelistedFolder(plugin, oldWhitelistedFolder, oldWhitelistedFolder); + } + } + settings.display(); + }); + new import_obsidian14.ButtonComponent(buttonContainer).setIcon("down-chevron-glyph").setTooltip("Move down").onClick(() => { + if (whitelistedFolder.position === plugin.settings.whitelistFolders.length - 1) { + return; + } + whitelistedFolder.position += 1; + updateWhitelistedFolder(plugin, whitelistedFolder, whitelistedFolder); + const oldWhitelistedFolder = plugin.settings.whitelistFolders.find((folder) => folder.position === whitelistedFolder.position); + if (oldWhitelistedFolder) { + oldWhitelistedFolder.position -= 1; + if (oldWhitelistedFolder.type === "pattern") { + updateWhitelistedPattern(plugin, oldWhitelistedFolder, oldWhitelistedFolder); + } else { + updateWhitelistedFolder(plugin, oldWhitelistedFolder, oldWhitelistedFolder); + } + } + settings.display(); + }); + new import_obsidian14.ButtonComponent(buttonContainer).setIcon("trash-2").setTooltip("Delete excluded folder").onClick(() => { + deleteWhitelistedFolder(plugin, whitelistedFolder); + setting.clear(); + setting.settingEl.remove(); + }); +} + +// src/ExcludeFolders/functions/folderFunctions.ts +function getExcludedFolder(plugin, path, includeDetached, pathOnly, ignoreWhitelist) { + let excludedFolder = {}; + const whitelistedFolder = getWhitelistedFolder(plugin, path); + const folderName = getFolderNameFromPathString(path); + let matchedPatterns = getExcludedFoldersByPattern(plugin, folderName); + const excludedFolders = getExcludedFoldersByPath(plugin, path); + if (pathOnly) { + matchedPatterns = []; + } + let combinedExcludedFolders = [...matchedPatterns, ...excludedFolders]; + if (!includeDetached) { + combinedExcludedFolders = combinedExcludedFolders.filter((f) => !f.detached); + } + const propertiesToCopy = [ + "disableAutoCreate", + "disableFolderNote", + "disableSync", + "enableCollapsing", + "excludeFromFolderOverview", + "detached", + "hideInSettings", + "id", + "showFolderNote" + ]; + if (combinedExcludedFolders.length > 0) { + for (const matchedFolder of combinedExcludedFolders) { + propertiesToCopy.forEach((property) => { + if (matchedFolder[property] === true) { + excludedFolder[property] = true; + } else if (!matchedFolder[property]) { + excludedFolder[property] = false; + } + }); + } + } else { + excludedFolder = void 0; + } + if (excludedFolder == null ? void 0 : excludedFolder.detached) { + ignoreWhitelist = true; + } + if (whitelistedFolder && excludedFolder && !ignoreWhitelist) { + excludedFolder.disableAutoCreate ? excludedFolder.disableAutoCreate = !whitelistedFolder.enableAutoCreate : ""; + excludedFolder.disableFolderNote ? excludedFolder.disableFolderNote = !whitelistedFolder.enableFolderNote : ""; + excludedFolder.disableSync ? excludedFolder.disableSync = !whitelistedFolder.enableSync : ""; + excludedFolder.enableCollapsing = !whitelistedFolder.disableCollapsing; + excludedFolder.excludeFromFolderOverview ? excludedFolder.excludeFromFolderOverview = !whitelistedFolder.showInFolderOverview : ""; + excludedFolder.showFolderNote = !whitelistedFolder.hideInFileExplorer; + } else if (excludedFolder && Object.keys(excludedFolder).length === 0) { + excludedFolder = { + type: "folder", + id: "", + path: "", + string: "", + subFolders: false, + disableSync: false, + disableAutoCreate: false, + disableFolderNote: false, + enableCollapsing: false, + position: 0, + excludeFromFolderOverview: false, + hideInSettings: false, + detached: false, + showFolderNote: false + }; } return excludedFolder; } -function getExcludedFolderByPath(plugin, path) { - return plugin.settings.excludeFolders.find((excludedFolder) => { +function getDetachedFolder(plugin, path) { + return plugin.settings.excludeFolders.find((f) => f.path === path && f.detached); +} +function getExcludedFoldersByPath(plugin, path) { + return plugin.settings.excludeFolders.filter((excludedFolder) => { + if (path.trim() === "" || !excludedFolder.path) { + return false; + } if (excludedFolder.path === path) { return true; } @@ -2253,17 +2884,17 @@ function getExcludedFolderByPath(plugin, path) { } }); } -function addExcludedFolder(plugin, excludedFolder) { +function addExcludedFolder(plugin, excludedFolder, reloadStyles = true) { plugin.settings.excludeFolders.push(excludedFolder); - plugin.saveSettings(true); + plugin.saveSettings(reloadStyles); } -function deleteExcludedFolder(plugin, excludedFolder) { - plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.path !== excludedFolder.path || folder.type === "pattern"); +async function deleteExcludedFolder(plugin, excludedFolder) { + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.id !== excludedFolder.id || folder.type === "pattern"); plugin.saveSettings(true); resyncArray(plugin); } function updateExcludedFolder(plugin, excludedFolder, newExcludeFolder) { - plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.path !== excludedFolder.path); + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((folder) => folder.id !== excludedFolder.id); addExcludedFolder(plugin, newExcludeFolder); } function resyncArray(plugin) { @@ -2275,17 +2906,17 @@ function resyncArray(plugin) { } function addExcludeFolderListItem(settings, containerEl, excludedFolder) { const plugin = settings.plugin; - const setting = new import_obsidian9.Setting(containerEl); + const setting = new import_obsidian15.Setting(containerEl); setting.setClass("fn-exclude-folder-list"); setting.addSearch((cb) => { - new FolderSuggest(cb.inputEl, plugin); + new FolderSuggest(cb.inputEl, plugin, false); cb.containerEl.addClass("fn-exclude-folder-path"); cb.setPlaceholder("Folder path"); - cb.setValue(excludedFolder.path); + cb.setValue(excludedFolder.path || ""); cb.onChange((value) => { if (value.startsWith("{regex}") || value.includes("*")) { deleteExcludedFolder(plugin, excludedFolder); - const pattern = new ExcludePattern(value, plugin.settings.excludeFolders.length, plugin); + const pattern = new ExcludePattern(value, plugin.settings.excludeFolders.length, void 0, plugin); addExcludedFolder(plugin, pattern); addExcludePatternListItem(settings, containerEl, pattern); setting.clear(); @@ -2304,48 +2935,50 @@ function addExcludeFolderListItem(settings, containerEl, excludedFolder) { new ExcludedFolderSettings(plugin.app, plugin, excludedFolder).open(); }); }); - setting.addButton((cb) => { - cb.setIcon("up-chevron-glyph"); - cb.setTooltip("Move up"); - cb.onClick(() => { - if (excludedFolder.position === 0) { - return; - } - excludedFolder.position -= 1; - updateExcludedFolder(plugin, excludedFolder, excludedFolder); - const oldExcludedFolder = plugin.settings.excludeFolders.find((folder) => folder.position === excludedFolder.position); - if (oldExcludedFolder) { - oldExcludedFolder.position += 1; - if (oldExcludedFolder.type === "pattern") { - updatePattern(plugin, oldExcludedFolder, oldExcludedFolder); - } else { - updateExcludedFolder(plugin, oldExcludedFolder, oldExcludedFolder); + if (import_obsidian15.Platform.isDesktop || import_obsidian15.Platform.isTablet) { + setting.addButton((cb) => { + cb.setIcon("up-chevron-glyph"); + cb.setTooltip("Move up"); + cb.onClick(() => { + if (excludedFolder.position === 0) { + return; } - } - settings.display(); - }); - }); - setting.addButton((cb) => { - cb.setIcon("down-chevron-glyph"); - cb.setTooltip("Move down"); - cb.onClick(() => { - if (excludedFolder.position === plugin.settings.excludeFolders.length - 1) { - return; - } - excludedFolder.position += 1; - updateExcludedFolder(plugin, excludedFolder, excludedFolder); - const oldExcludedFolder = plugin.settings.excludeFolders.find((folder) => folder.position === excludedFolder.position); - if (oldExcludedFolder) { - oldExcludedFolder.position -= 1; - if (oldExcludedFolder.type === "pattern") { - updatePattern(plugin, oldExcludedFolder, oldExcludedFolder); - } else { - updateExcludedFolder(plugin, oldExcludedFolder, oldExcludedFolder); + excludedFolder.position -= 1; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + const oldExcludedFolder = plugin.settings.excludeFolders.find((folder) => folder.position === excludedFolder.position); + if (oldExcludedFolder) { + oldExcludedFolder.position += 1; + if (oldExcludedFolder.type === "pattern") { + updatePattern(plugin, oldExcludedFolder, oldExcludedFolder); + } else { + updateExcludedFolder(plugin, oldExcludedFolder, oldExcludedFolder); + } } - } - settings.display(); + settings.display(); + }); }); - }); + setting.addButton((cb) => { + cb.setIcon("down-chevron-glyph"); + cb.setTooltip("Move down"); + cb.onClick(() => { + if (excludedFolder.position === plugin.settings.excludeFolders.length - 1) { + return; + } + excludedFolder.position += 1; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + const oldExcludedFolder = plugin.settings.excludeFolders.find((folder) => folder.position === excludedFolder.position); + if (oldExcludedFolder) { + oldExcludedFolder.position -= 1; + if (oldExcludedFolder.type === "pattern") { + updatePattern(plugin, oldExcludedFolder, oldExcludedFolder); + } else { + updateExcludedFolder(plugin, oldExcludedFolder, oldExcludedFolder); + } + } + settings.display(); + }); + }); + } setting.addButton((cb) => { cb.setIcon("trash-2"); cb.setTooltip("Delete excluded folder"); @@ -2357,23 +2990,6 @@ function addExcludeFolderListItem(settings, containerEl, excludedFolder) { }); } -// src/ExcludeFolders/ExcludeFolder.ts -var ExcludedFolder = class { - constructor(path, position, plugin) { - this.type = "folder"; - this.path = path; - this.subFolders = plugin.settings.excludeFolderDefaultSettings.subFolders; - this.disableSync = plugin.settings.excludeFolderDefaultSettings.disableSync; - this.disableAutoCreate = plugin.settings.excludeFolderDefaultSettings.disableAutoCreate; - this.disableFolderNote = plugin.settings.excludeFolderDefaultSettings.disableFolderNote; - this.enableCollapsing = plugin.settings.excludeFolderDefaultSettings.enableCollapsing; - this.position = position; - this.excludeFromFolderOverview = plugin.settings.excludeFolderDefaultSettings.excludeFromFolderOverview; - this.string = ""; - this.hideInSettings = false; - } -}; - // src/functions/excalidraw.ts async function openExcalidrawView(leaf) { const { excalidraw, excalidrawEnabled } = await getExcalidrawPlugin(this.app); @@ -2391,8 +3007,8 @@ async function getExcalidrawPlugin(app2) { } // src/modals/AskForExtension.ts -var import_obsidian10 = require("obsidian"); -var AskForExtensionModal = class extends import_obsidian10.FuzzySuggestModal { +var import_obsidian16 = require("obsidian"); +var AskForExtensionModal = class extends import_obsidian16.FuzzySuggestModal { constructor(plugin, folderPath, openFile, extension, useModal, existingNote) { super(plugin.app); this.plugin = plugin; @@ -2401,6 +3017,7 @@ var AskForExtensionModal = class extends import_obsidian10.FuzzySuggestModal { this.openFile = openFile; this.useModal = useModal; this.existingNote = existingNote; + plugin.askModalCurrentlyOpen = true; } getItems() { return this.plugin.settings.supportedFileTypes.filter((item) => item.toLowerCase() !== ".ask"); @@ -2409,118 +3026,13 @@ var AskForExtensionModal = class extends import_obsidian10.FuzzySuggestModal { return item; } onChooseItem(item, evt) { + this.plugin.askModalCurrentlyOpen = false; this.extension = "." + item; createFolderNote(this.plugin, this.folderPath, this.openFile, this.extension, this.useModal, this.existingNote); this.close(); } }; -// src/functions/styleFunctions.ts -var import_obsidian11 = require("obsidian"); -function loadFileClasses(forceReload = false, plugin) { - if (plugin.activeFileExplorer === getFileExplorer() && !forceReload) { - return; - } - plugin.activeFileExplorer = getFileExplorer(); - plugin.app.vault.getAllLoadedFiles().forEach((file) => { - if (!(file instanceof import_obsidian11.TFolder)) { - return; - } - const folderNote = getFolderNote(plugin, file.path); - if (!folderNote) { - removeCSSClassFromEL(file == null ? void 0 : file.path, "has-folder-note"); - removeCSSClassFromEL(file == null ? void 0 : file.path, "only-has-folder-note"); - return; - } - const excludedFolder = getExcludedFolder(plugin, file.path); - if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) { - removeCSSClassFromEL(folderNote.path, "is-folder-note"); - removeCSSClassFromEL(file.path, "has-folder-note"); - removeCSSClassFromEL(file == null ? void 0 : file.path, "only-has-folder-note"); - } else { - addCSSClassToTitleEL(folderNote.path, "is-folder-note"); - addCSSClassToTitleEL(file.path, "has-folder-note"); - if (plugin.isEmptyFolderNoteFolder(file)) { - addCSSClassToTitleEL(file.path, "only-has-folder-note"); - } else { - removeCSSClassFromEL(file.path, "only-has-folder-note"); - } - } - }); -} -function applyCSSClassesToFolder(folderPath, plugin) { - const folder = plugin.app.vault.getAbstractFileByPath(folderPath); - if (!folder || !(folder instanceof import_obsidian11.TFolder)) { - return; - } - const excludedFolder = getExcludedFolder(plugin, folder.path); - if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) { - return; - } - const folderNote = getFolderNote(plugin, folder.path); - if (!folderNote) { - return; - } - addCSSClassesToBothFolderAndNote(folderNote, folder, plugin); -} -function addCSSClassesToBothFolderAndNote(file, folder, plugin) { - addCSSClassToFolderNote(file); - addCSSClassesToFolder(folder, plugin); -} -function addCSSClassesToFolder(folder, plugin) { - addCSSClassToTitleEL(folder.path, "has-folder-note"); - if (plugin.isEmptyFolderNoteFolder(folder)) { - addCSSClassToTitleEL(folder.path, "only-has-folder-note"); - } else { - removeCSSClassFromEL(folder.path, "only-has-folder-note"); - } -} -function addCSSClassToFolderNote(file) { - addCSSClassToTitleEL(file.path, "is-folder-note"); -} -async function addCSSClassToTitleEL(path, cssClass, waitForCreate = false, count = 0) { - const fileExplorerItem = getEl(path); - if (!fileExplorerItem) { - if (waitForCreate && count < 5) { - await new Promise((r) => setTimeout(r, 500)); - addCSSClassToTitleEL(path, cssClass, waitForCreate, count + 1); - return; - } - return; - } - fileExplorerItem.addClass(cssClass); - const viewHeaderItems = document.querySelectorAll(`[data-path="${path}"]`); - viewHeaderItems.forEach((item) => { - item.addClass(cssClass); - }); -} -function removeCSSClassFromEL(path, cssClass) { - if (!path) - return; - const fileExplorerItem = getEl(path); - const viewHeaderItems = document.querySelectorAll(`[data-path="${path}"]`); - viewHeaderItems.forEach((item) => { - item.removeClass(cssClass); - }); - if (!fileExplorerItem) { - return; - } - fileExplorerItem.removeClass(cssClass); -} -function getEl(path) { - const fileExplorer = getFileExplorer(); - if (!fileExplorer) { - return null; - } - const fileExplorerItem = fileExplorer.view.fileItems[path]; - if (!fileExplorerItem) { - return null; - } - if (fileExplorerItem.selfEl) - return fileExplorerItem.selfEl; - return fileExplorerItem.titleEl; -} - // src/functions/folderNoteFunctions.ts var defaultExcalidrawTemplate = `--- @@ -2534,22 +3046,29 @@ tags: [excalidraw] %% # Drawing \`\`\`json -{"type":"excalidraw","version":2,"source":"https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.20","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}} +{'type":"excalidraw","version":2,"source":"https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.20","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff'}} \`\`\` %%`; -async function createFolderNote(plugin, folderPath, openFile, extension, useModal, existingNote) { +async function createFolderNote(plugin, folderPath, openFile, extension, displayModal, preexistingNote) { var _a; const leaf = plugin.app.workspace.getLeaf(false); const folderName = getFolderNameFromPathString(folderPath); const fileName = plugin.settings.folderNoteName.replace("{{folder_name}}", folderName); + let folderNote = getFolderNote(plugin, folderPath); + if (preexistingNote) { + folderNote = preexistingNote; + } let folderNoteType = extension != null ? extension : plugin.settings.folderNoteType; + const detachedFolder = getDetachedFolder(plugin, folderPath); + let path = ""; if (folderNoteType === ".excalidraw") { folderNoteType = ".md"; extension = ".excalidraw"; } else if (folderNoteType === ".ask") { - return new AskForExtensionModal(plugin, folderPath, openFile, folderNoteType, useModal, existingNote).open(); + if (plugin.askModalCurrentlyOpen) + return; + return new AskForExtensionModal(plugin, folderPath, openFile, folderNoteType, displayModal, preexistingNote).open(); } - let path = ""; if (plugin.settings.storageLocation === "parentFolder") { const parentFolderPath = getFolderPathFromString(folderPath); if (parentFolderPath.trim() === "") { @@ -2562,13 +3081,39 @@ async function createFolderNote(plugin, folderPath, openFile, extension, useModa } else { path = `${folderPath}/${fileName}${folderNoteType}`; } - let file; - if (!existingNote) { + if (detachedFolder && (folderNote == null ? void 0 : folderNote.extension) !== extension && folderNote) { + deleteExcludedFolder(plugin, detachedFolder); + removeCSSClassFromFileExplorerEL(folderNote == null ? void 0 : folderNote.path, "is-folder-note", false, plugin); + const folder2 = plugin.app.vault.getAbstractFileByPath(folderPath); + if (!folderNote || folderNote.basename !== fileName) + return; + let count = 1; + let newName = removeExtension(folderNote.path) + ` (${count}).${folderNote.path.split(".").pop()}`; + while (count < 100 && plugin.app.vault.getAbstractFileByPath(newName)) { + count++; + newName = removeExtension(folderNote.path) + ` (${count}).${folderNote.path.split(".").pop()}`; + } + const [excludedFolder, excludedFolderExisted, disabledSync] = await tempDisableSync(plugin, folder2); + await plugin.app.fileManager.renameFile(folderNote, newName).then(() => { + if (!excludedFolder) + return; + if (!excludedFolderExisted) { + deleteExcludedFolder(plugin, excludedFolder); + } else if (!disabledSync) { + excludedFolder.disableSync = false; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + } + }); + } + if (!extension) { + extension = folderNoteType; + } + if (!folderNote) { let content = ""; - if (extension !== ".md") { - if (plugin.settings.templatePath && folderNoteType.split(".").pop() == plugin.settings.templatePath.split(".").pop()) { + if (extension !== ".md" && extension) { + if (plugin.settings.templatePath && folderNoteType.split(".").pop() === plugin.settings.templatePath.split(".").pop()) { const templateFile = plugin.app.vault.getAbstractFileByPath(plugin.settings.templatePath); - if (templateFile instanceof import_obsidian12.TFile) { + if (templateFile instanceof import_obsidian17.TFile) { if (["md", "canvas", "txt"].includes(templateFile.extension)) { content = await plugin.app.vault.read(templateFile); if (extension === ".excalidraw" && !content.includes("==\u26A0 Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. \u26A0==")) { @@ -2576,9 +3121,9 @@ async function createFolderNote(plugin, folderPath, openFile, extension, useModa } } else { return plugin.app.vault.readBinary(templateFile).then(async (data) => { - file = await plugin.app.vault.createBinary(path, data); + folderNote = await plugin.app.vault.createBinary(path, data); if (openFile) { - await leaf.openFile(file); + await leaf.openFile(folderNote); } }); } @@ -2589,67 +3134,48 @@ async function createFolderNote(plugin, folderPath, openFile, extension, useModa content = "{}"; } } - file = await plugin.app.vault.create(path, content); + folderNote = await plugin.app.vault.create(path, content); } else { - file = existingNote; - await plugin.app.fileManager.renameFile(existingNote, path).then(() => { - file = existingNote; - }); + await plugin.app.fileManager.renameFile(folderNote, path); } if (openFile) { if (((_a = plugin.app.workspace.getActiveFile()) == null ? void 0 : _a.path) === path) { - if (plugin.activeFolderDom) { - plugin.activeFolderDom.removeClass("fn-is-active"); - plugin.activeFolderDom = null; - } - const folder2 = getFolder2(plugin, file); + removeActiveFolder(plugin); + const folder2 = getFolder(plugin, folderNote); if (!folder2) { return; } - plugin.activeFolderDom = getEl(folder2.path); - if (plugin.activeFolderDom) - plugin.activeFolderDom.addClass("fn-is-active"); + setActiveFolder(folder2.path, plugin); } - await leaf.openFile(file); + await leaf.openFile(folderNote); if (plugin.settings.folderNoteType === ".excalidraw" || extension === ".excalidraw") { openExcalidrawView(leaf); } } - const matchingExtension = (extension == null ? void 0 : extension.split(".").pop()) == plugin.settings.templatePath.split(".").pop(); - if (file && !existingNote && matchingExtension && plugin.settings.folderNoteType !== ".excalidraw") { - applyTemplate(plugin, file, leaf, plugin.settings.templatePath); + const matchingExtension = (extension == null ? void 0 : extension.split(".").pop()) === plugin.settings.templatePath.split(".").pop(); + if (folderNote && matchingExtension && plugin.settings.folderNoteType !== ".excalidraw") { + applyTemplate(plugin, folderNote, leaf, plugin.settings.templatePath); } const folder = plugin.app.vault.getAbstractFileByPath(folderPath); - if (!(folder instanceof import_obsidian12.TFolder)) + if (!(folder instanceof import_obsidian17.TFolder)) return; - addCSSClassToTitleEL(path, "is-folder-note", true); - addCSSClassToTitleEL(folder.path, "has-folder-note"); + addCSSClassToFileExplorerEl(path, "is-folder-note", false, plugin, true); + addCSSClassToFileExplorerEl(folder.path, "has-folder-note", false, plugin); } async function turnIntoFolderNote(plugin, file, folder, folderNote, skipConfirmation) { var _a; const extension = file.extension; + const detachedExcludedFolder = getDetachedFolder(plugin, folder.path); if (folderNote) { - if (plugin.settings.showRenameConfirmation && !skipConfirmation) { + if (plugin.settings.showRenameConfirmation && !skipConfirmation && !detachedExcludedFolder) { return new ExistingFolderNoteModal(plugin.app, plugin, file, folder, folderNote).open(); } - removeCSSClassFromEL(folderNote.path, "is-folder-note"); - let excludedFolder = getExcludedFolder(plugin, folder.path); - let excludedFolderExisted = true; - let disabledSync = false; - if (!excludedFolder) { - excludedFolderExisted = false; - excludedFolder = new ExcludedFolder(folder.path, plugin.settings.excludeFolders.length, plugin); - addExcludedFolder(plugin, excludedFolder); - } else if (!excludedFolder.disableSync) { - disabledSync = false; - excludedFolder.disableSync = true; - updateExcludedFolder(plugin, excludedFolder, excludedFolder); - } + removeCSSClassFromFileExplorerEL(folderNote.path, "is-folder-note", false, plugin); + const [excludedFolder, excludedFolderExisted, disabledSync] = await tempDisableSync(plugin, folder); const newPath = `${folder.path}/${folder.name} (${file.stat.ctime.toString().slice(10) + Math.floor(Math.random() * 1e3)}).${extension}`; plugin.app.fileManager.renameFile(folderNote, newPath).then(() => { - if (!excludedFolder) { + if (!excludedFolder) return; - } if (!excludedFolderExisted) { deleteExcludedFolder(plugin, excludedFolder); } else if (!disabledSync) { @@ -2671,29 +3197,67 @@ async function turnIntoFolderNote(plugin, file, folder, folderNote, skipConfirma path = `${parentFolderPath}/${fileName}.${extension}`; } } + if (detachedExcludedFolder) { + deleteExcludedFolder(plugin, detachedExcludedFolder); + } await plugin.app.fileManager.renameFile(file, path); - addCSSClassToTitleEL(path, "is-folder-note", true); - addCSSClassToTitleEL(folder.path, "has-folder-note"); + addCSSClassToFileExplorerEl(path, "is-folder-note", false, plugin, true); + addCSSClassToFileExplorerEl(folder.path, "has-folder-note", false, plugin); + removeActiveFolder(plugin); + setActiveFolder(folder.path, plugin); +} +async function tempDisableSync(plugin, folder) { + let excludedFolder = getExcludedFolder(plugin, folder.path, false); + let excludedFolderExisted = true; + let disabledSync = false; + if (!excludedFolder) { + excludedFolderExisted = false; + excludedFolder = new ExcludedFolder(folder.path, plugin.settings.excludeFolders.length, void 0, plugin); + excludedFolder.disableSync = true; + addExcludedFolder(plugin, excludedFolder); + } else if (!excludedFolder.disableSync) { + disabledSync = false; + excludedFolder.disableSync = true; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + } + return [excludedFolder, excludedFolderExisted, disabledSync]; } async function openFolderNote(plugin, file, evt) { var _a; const path = file.path; - if (((_a = plugin.app.workspace.getActiveFile()) == null ? void 0 : _a.path) === path && !(import_obsidian12.Keymap.isModEvent(evt) == "tab")) { + const focusExistingTab = plugin.settings.focusExistingTab && plugin.settings.openInNewTab; + const activeFilePath = (_a = plugin.app.workspace.getActiveFile()) == null ? void 0 : _a.path; + if (activeFilePath === path && !(import_obsidian17.Keymap.isModEvent(evt) === "tab")) { return; } - const leaf = plugin.app.workspace.getLeaf(import_obsidian12.Keymap.isModEvent(evt) || plugin.settings.openInNewTab); - if (file instanceof import_obsidian12.TFile) { - await leaf.openFile(file); + let foundLeaf = null; + if (focusExistingTab && file instanceof import_obsidian17.TFile) { + plugin.app.workspace.iterateAllLeaves((leaf) => { + var _a2; + if (leaf.getViewState().type === "markdown" && ((_a2 = leaf.view.file) == null ? void 0 : _a2.path) === path) { + foundLeaf = leaf; + } + }); + } + if (foundLeaf) { + plugin.app.workspace.setActiveLeaf(foundLeaf, { focus: true }); + } else { + const leaf = plugin.app.workspace.getLeaf(import_obsidian17.Keymap.isModEvent(evt) || plugin.settings.openInNewTab); + if (file instanceof import_obsidian17.TFile) { + await leaf.openFile(file); + } } } async function deleteFolderNote(plugin, file, displayModal) { if (plugin.settings.showDeleteConfirmation && displayModal) { return new DeleteConfirmationModal(plugin.app, plugin, file).open(); } - const folder = getFolder2(plugin, file); + const folder = getFolder(plugin, file); if (!folder) return; - removeCSSClassFromEL(folder.path, "has-folder-note"); + plugin.settings.excludeFolders = plugin.settings.excludeFolders.filter((excludedFolder) => excludedFolder.path !== folder.path && excludedFolder.showFolderNote); + plugin.saveSettings(false); + removeCSSClassFromFileExplorerEL(folder.path, "has-folder-note", false, plugin); switch (plugin.settings.deleteFilesAction) { case "trash": await plugin.app.vault.trash(file, true); @@ -2721,16 +3285,17 @@ function extractFolderName(template, changedFileName) { } return null; } -function getFolderNote(plugin, folderPath, storageLocation, file) { +function getFolderNote(plugin, folderPath, storageLocation, file, oldFolderNoteName) { if (!folderPath) return null; const folder = { path: folderPath, name: getFolderNameFromPathString(folderPath) }; - let fileName = plugin.settings.folderNoteName.replace("{{folder_name}}", folder.name); + const folderNoteName = oldFolderNoteName != null ? oldFolderNoteName : plugin.settings.folderNoteName; + let fileName = folderNoteName.replace("{{folder_name}}", folder.name); if (file) { - fileName = plugin.settings.folderNoteName.replace("{{folder_name}}", file.basename); + fileName = folderNoteName.replace("{{folder_name}}", file.basename); } if (!fileName) return null; @@ -2738,16 +3303,13 @@ function getFolderNote(plugin, folderPath, storageLocation, file) { folder.path = getFolderPathFromString(folderPath); } let path = `${folder.path}/${fileName}`; - if (folder.path.trim() === "") { - folder.path = fileName; - path = `${fileName}`; - } + folder.path === "/" ? path = fileName : path = `${folder.path}/${fileName}`; let folderNoteType = plugin.settings.folderNoteType; if (folderNoteType === ".excalidraw") { folderNoteType = ".md"; } let folderNote = plugin.app.vault.getAbstractFileByPath(path + folderNoteType); - if (folderNote instanceof import_obsidian12.TFile) { + if (folderNote instanceof import_obsidian17.TFile && plugin.settings.supportedFileTypes.includes(plugin.settings.folderNoteType.replace(".", ""))) { return folderNote; } else { const supportedFileTypes = plugin.settings.supportedFileTypes.filter((type) => type !== plugin.settings.folderNoteType.replace(".", "")); @@ -2759,13 +3321,27 @@ function getFolderNote(plugin, folderPath, storageLocation, file) { type = "." + type; } folderNote = plugin.app.vault.getAbstractFileByPath(path + type); - if (folderNote instanceof import_obsidian12.TFile) { + if (folderNote instanceof import_obsidian17.TFile) { return folderNote; } } } } -function getFolder2(plugin, file, storageLocation) { +function detachFolderNote(plugin, file) { + const folder = getFolder(plugin, file); + if (!folder) + return; + const excludedFolder = new ExcludedFolder(folder.path, plugin.settings.excludeFolders.length, void 0, plugin); + excludedFolder.hideInSettings = true; + excludedFolder.disableFolderNote = true; + excludedFolder.disableSync = true; + excludedFolder.subFolders = false; + excludedFolder.excludeFromFolderOverview = false; + excludedFolder.detached = true; + excludedFolder.detachedFilePath = file.path; + addExcludedFolder(plugin, excludedFolder); +} +function getFolder(plugin, file, storageLocation) { var _a, _b; if (!file) return null; @@ -2778,7 +3354,7 @@ function getFolder2(plugin, file, storageLocation) { let folderPath = getFolderPathFromString(file.path); let folder = null; if ((plugin.settings.storageLocation === "parentFolder" || storageLocation === "parentFolder") && storageLocation !== "insideFolder") { - if (folderPath.trim() === "") { + if (folderPath.trim() === "" || folderPath === "/") { folderPath = folderName; } else { folderPath = `${folderPath}/${folderName}`; @@ -2823,11 +3399,108 @@ function getFolderNoteFolder(plugin, folderNote, fileName) { } // src/settings/GeneralSettings.ts -var import_obsidian17 = require("obsidian"); +var import_obsidian24 = require("obsidian"); + +// src/events/EventEmitter.ts +var CustomEventEmitter = class { + constructor() { + this.events = {}; + } + on(event, listener) { + if (!this.events[event]) { + this.events[event] = []; + } + this.events[event].push(listener); + } + off(event, listener) { + if (!this.events[event]) + return; + this.events[event] = this.events[event].filter((l) => l !== listener); + } + emit(event, data) { + if (!this.events[event]) + return; + this.events[event].forEach((listener) => listener(data)); + } +}; + +// src/functions/ListComponent.ts +var ListComponent = class { + constructor(containerEl, values = [], defaultValues = []) { + this.emitter = new CustomEventEmitter(); + this.containerEl = containerEl; + this.controlEl = containerEl.querySelector(".setting-item-control") || containerEl; + this.listEl = this.controlEl.createDiv("setting-command-hotkeys"); + this.addResetButton(); + this.setValues(values); + this.defaultValues = defaultValues; + } + on(event, listener) { + this.emitter.on(event, listener); + } + off(event, listener) { + this.emitter.off(event, listener); + } + emit(event, data) { + this.emitter.emit(event, data); + } + setValues(values) { + this.removeElements(); + this.values = values; + if (values.length !== 0) { + values.forEach((value) => { + this.addElement(value); + }); + } + this.emit("update", this.values); + } + removeElements() { + this.listEl.empty(); + } + addElement(value) { + this.listEl.createSpan("setting-hotkey", (span) => { + if (value.toLocaleLowerCase() === "md") { + span.innerText = "markdown"; + } else { + span.innerText = value; + } + span.setAttribute("extension", value); + const removeSpan = span.createEl("span", { cls: "ofn-list-item-remove setting-hotkey-icon" }); + const svg = ''; + const svgElement = removeSpan.createEl("span", { cls: "ofn-list-item-remove-icon" }); + svgElement.innerHTML = svg; + removeSpan.onClickEvent((e) => { + this.removeValue(value); + span.remove(); + }); + }); + } + async addValue(value) { + this.values.push(value); + this.addElement(value); + this.emit("add", value); + this.emit("update", this.values); + } + addResetButton() { + const resetButton = this.controlEl.createEl("span", { cls: "clickable-icon setting-restore-hotkey-button" }); + const svg = ''; + resetButton.innerHTML = svg; + resetButton.onClickEvent((e) => { + this.setValues(this.defaultValues); + }); + return this; + } + removeValue(value) { + this.values = this.values.filter((v) => v !== value); + this.listEl.find(`[extension='${value}']`).remove(); + this.emit("remove", value); + this.emit("update", this.values); + } +}; // src/modals/AddSupportedFileType.ts -var import_obsidian13 = require("obsidian"); -var AddSupportedFileModal = class extends import_obsidian13.Modal { +var import_obsidian18 = require("obsidian"); +var AddSupportedFileModal = class extends import_obsidian18.Modal { constructor(app2, plugin, settingsTab, list) { super(app2); this.plugin = plugin; @@ -2844,7 +3517,7 @@ var AddSupportedFileModal = class extends import_obsidian13.Modal { } }); contentEl.createEl("h2", { text: "Extension name" }); - new import_obsidian13.Setting(contentEl).setName('Enter the name of the extension (only the short form, e.g. "md")').addText((text) => text.setValue("").onChange(async (value) => { + new import_obsidian18.Setting(contentEl).setName('Enter the name of the extension (only the short form, e.g. "md")').addText((text) => text.setValue("").onChange(async (value) => { if (value.trim() !== "") { this.name = value.trim(); } @@ -2859,7 +3532,7 @@ var AddSupportedFileModal = class extends import_obsidian13.Modal { contentEl.empty(); this.settingsTab.display(); } else if (this.plugin.settings.supportedFileTypes.includes(this.name.toLowerCase())) { - return new import_obsidian13.Notice("This extension is already supported"); + return new import_obsidian18.Notice("This extension is already supported"); } else { await this.list.addValue(this.name.toLowerCase()); this.settingsTab.display(); @@ -2871,7 +3544,7 @@ var AddSupportedFileModal = class extends import_obsidian13.Modal { // src/events/FrontMatterTitle.ts var import_front_matter_plugin_api_provider = __toESM(require_lib()); -var import_obsidian14 = require("obsidian"); +var import_obsidian19 = require("obsidian"); var FrontMatterTitlePluginHandler = class { constructor(plugin) { this.api = null; @@ -2891,24 +3564,23 @@ var FrontMatterTitlePluginHandler = class { await this.deffer.awaitFeatures(); } } - const dispatcher = (_a = this.api) == null ? void 0 : _a.getEventDispatcher(); - if (dispatcher) { - this.dispatcher = dispatcher; - } - const event = { - name: "manager:update", - cb: (data) => { - this.handleRename(data, true); + if (plugin.settings.frontMatterTitle.enabled) { + const dispatcher = (_a = this.api) == null ? void 0 : _a.getEventDispatcher(); + if (dispatcher) { + this.dispatcher = dispatcher; } - }; - const ref = dispatcher == null ? void 0 : dispatcher.addListener(event); - if (ref) { - this.eventRef = ref; + const event = { + name: "manager:update", + cb: (data) => { + this.fmptUpdateFileName(data, true); + } + }; + const ref = dispatcher == null ? void 0 : dispatcher.addListener(event); + if (ref) { + this.eventRef = ref; + } + this.plugin.updateAllBreadcrumbs(); } - this.plugin.app.vault.getFiles().forEach((file) => { - this.handleRename({ id: "", result: false, path: file.path }, false); - }); - this.plugin.updateBreadcrumbs(); })(); } deleteEvent() { @@ -2916,18 +3588,18 @@ var FrontMatterTitlePluginHandler = class { this.dispatcher.removeListener(this.eventRef); } } - async handleRename(data, isEvent) { + async fmptUpdateFileName(data, isEvent) { var _a, _b, _c; if (data.data) data = data.data; const file = this.app.vault.getAbstractFileByPath(data.path); - if (!(file instanceof import_obsidian14.TFile)) { + if (!(file instanceof import_obsidian19.TFile)) { return; } const resolver = (_b = (_a = this.api) == null ? void 0 : _a.getResolverFactory()) == null ? void 0 : _b.createResolver("#feature-id#"); const newName = resolver == null ? void 0 : resolver.resolve((_c = file == null ? void 0 : file.path) != null ? _c : ""); - const folder = getFolder2(this.plugin, file); - if (!(folder instanceof import_obsidian14.TFolder)) { + const folder = getFolder(this.plugin, file); + if (!(folder instanceof import_obsidian19.TFolder)) { return; } const folderNote = getFolderNote(this.plugin, folder.path); @@ -2937,10 +3609,15 @@ var FrontMatterTitlePluginHandler = class { if (folderNote !== file) { return; } + if (!data.pathOnly) { + this.plugin.changeFolderNameInExplorer(folder, newName); + } + const breadcrumb = data.breadcrumb; + if (breadcrumb) { + this.plugin.changeFolderNameInPath(folder, newName, breadcrumb); + } if (isEvent) { - this.plugin.changeName(folder, newName, true); - } else { - this.plugin.changeName(folder, newName, false); + this.plugin.updateAllBreadcrumbs(); } if (newName) { folder.newName = newName; @@ -2950,11 +3627,57 @@ var FrontMatterTitlePluginHandler = class { this.modifiedFolders.delete(folder.path); } } + async fmptUpdateFolderName(data, replacePath) { + var _a, _b, _c; + if (data.data) + data = data.data; + const folder = this.app.vault.getAbstractFileByPath(data.path); + if (!(folder instanceof import_obsidian19.TFolder)) { + return; + } + const folderNote = getFolderNote(this.plugin, folder.path); + if (!folderNote) { + return; + } + const resolver = (_b = (_a = this.api) == null ? void 0 : _a.getResolverFactory()) == null ? void 0 : _b.createResolver("#feature-id#"); + const newName = resolver == null ? void 0 : resolver.resolve((_c = folderNote == null ? void 0 : folderNote.path) != null ? _c : ""); + if (!newName) + return; + if (!data.pathOnly) { + this.plugin.changeFolderNameInExplorer(folder, newName); + } + const breadcrumb = data.breadcrumb; + if (breadcrumb) { + this.plugin.changeFolderNameInPath(folder, newName, breadcrumb); + } + folder.newName = newName; + this.modifiedFolders.set(folder.path, folder); + } + async getNewFolderName(folder) { + var _a, _b, _c, _d; + if (this.modifiedFolders.has(folder.path)) { + const modifiedFolder = this.modifiedFolders.get(folder.path); + if (modifiedFolder) { + return modifiedFolder.newName; + } + } + const folderNote = getFolderNote(this.plugin, folder.path); + if (!folderNote) + return null; + const resolver = (_b = (_a = this.api) == null ? void 0 : _a.getResolverFactory()) == null ? void 0 : _b.createResolver("#feature-id#"); + return (_d = resolver == null ? void 0 : resolver.resolve((_c = folderNote == null ? void 0 : folderNote.path) != null ? _c : "")) != null ? _d : null; + } + async getNewFileName(file) { + var _a, _b, _c; + const resolver = (_b = (_a = this.api) == null ? void 0 : _a.getResolverFactory()) == null ? void 0 : _b.createResolver("#feature-id#"); + const changedName = resolver == null ? void 0 : resolver.resolve((_c = file == null ? void 0 : file.path) != null ? _c : ""); + return changedName != null ? changedName : null; + } }; -// src/modals/ConfirmCreation.ts -var import_obsidian15 = require("obsidian"); -var ConfirmationModal = class extends import_obsidian15.Modal { +// src/settings/modals/CreateFnForEveryFolder.ts +var import_obsidian20 = require("obsidian"); +var ConfirmationModal = class extends import_obsidian20.Modal { constructor(app2, plugin) { super(app2); this.plugin = plugin; @@ -2976,13 +3699,13 @@ var ConfirmationModal = class extends import_obsidian15.Modal { } const { contentEl } = this; contentEl.createEl("h2", { text: "Create folder note for every folder" }); - const setting = new import_obsidian15.Setting(contentEl); + const setting = new import_obsidian20.Setting(contentEl); setting.infoEl.createEl("p", { text: "Make sure to backup your vault before using this feature." }).style.color = "#fb464c"; setting.infoEl.createEl("p", { text: "This feature will create a folder note for every folder in your vault." }); setting.infoEl.createEl("p", { text: "Every folder that already has a folder note will be ignored." }); setting.infoEl.createEl("p", { text: "Every excluded folder will be ignored." }); if (!this.plugin.settings.templatePath || ((_c = this.plugin.settings.templatePath) == null ? void 0 : _c.trim()) === "") { - new import_obsidian15.Setting(contentEl).setName("Folder note file extension").setDesc("Choose the file extension for the folder notes.").addDropdown((cb) => { + new import_obsidian20.Setting(contentEl).setName("Folder note file extension").setDesc("Choose the file extension for the folder notes.").addDropdown((cb) => { this.plugin.settings.supportedFileTypes.forEach((extension) => { cb.addOption("." + extension, extension); }); @@ -2992,7 +3715,7 @@ var ConfirmationModal = class extends import_obsidian15.Modal { }); }); } - new import_obsidian15.Setting(contentEl).addButton((cb) => { + new import_obsidian20.Setting(contentEl).addButton((cb) => { cb.setButtonText("Create"); cb.setCta(); cb.buttonEl.focus(); @@ -3001,13 +3724,13 @@ var ConfirmationModal = class extends import_obsidian15.Modal { this.extension = "." + this.plugin.settings.templatePath.split(".").pop(); } if (this.extension === ".ask") { - return new import_obsidian15.Notice("Please choose a file extension"); + return new import_obsidian20.Notice("Please choose a file extension"); } this.close(); - const folders = this.app.vault.getAllLoadedFiles().filter((file) => file.parent instanceof import_obsidian15.TFolder); + const folders = this.app.vault.getAllLoadedFiles().filter((file) => file.parent instanceof import_obsidian20.TFolder); for (const folder of folders) { - if (folder instanceof import_obsidian15.TFolder) { - const excludedFolder = getExcludedFolder(this.plugin, folder.path); + if (folder instanceof import_obsidian20.TFolder) { + const excludedFolder = getExcludedFolder(this.plugin, folder.path, true); if (excludedFolder) continue; if (folder.path === templateFolderPath) @@ -3033,11 +3756,12 @@ var ConfirmationModal = class extends import_obsidian15.Modal { }; // src/suggesters/TemplateSuggester.ts -var import_obsidian16 = require("obsidian"); -var TemplateSuggest = class extends TextInputSuggest { +var import_obsidian21 = require("obsidian"); +var TemplateSuggest = class extends import_obsidian21.AbstractInputSuggest { constructor(inputEl, plugin) { - super(inputEl, plugin); + super(plugin.app, inputEl); this.inputEl = inputEl; + this.plugin = plugin; } get_error_msg(mode) { switch (mode) { @@ -3049,29 +3773,34 @@ var TemplateSuggest = class extends TextInputSuggest { } getSuggestions(input_str) { var _a, _b; - const { templateFolder, templaterPlugin } = getTemplatePlugins(this.plugin.app); - if ((!templateFolder || (templateFolder == null ? void 0 : templateFolder.trim()) === "") && !templaterPlugin) { - this.plugin.settings.templatePath = ""; - this.plugin.saveSettings(); - return []; - } - let folder; - if (templaterPlugin) { - folder = this.plugin.app.vault.getAbstractFileByPath((_b = (_a = templaterPlugin.plugin) == null ? void 0 : _a.settings) == null ? void 0 : _b.templates_folder); - } else { - folder = this.plugin.app.vault.getAbstractFileByPath(templateFolder); - } - const files = []; + const { templateFolder, templaterPlugin } = getTemplatePlugins(this.app); + let files = []; const lower_input_str = input_str.toLowerCase(); - import_obsidian16.Vault.recurseChildren(folder, (file) => { - if (file instanceof import_obsidian16.TFile && file.path.toLowerCase().contains(lower_input_str)) { - files.push(file); + if ((!templateFolder || templateFolder.trim() === "") && !templaterPlugin) { + files = this.plugin.app.vault.getFiles().filter((file) => file.path.toLowerCase().includes(lower_input_str)); + } else { + let folder; + if (templaterPlugin) { + folder = this.plugin.app.vault.getAbstractFileByPath((_b = (_a = templaterPlugin.plugin) == null ? void 0 : _a.settings) == null ? void 0 : _b.templates_folder); + } else { + folder = this.plugin.app.vault.getAbstractFileByPath(templateFolder); } - }); + import_obsidian21.Vault.recurseChildren(folder, (file) => { + if (file instanceof import_obsidian21.TFile && file.path.toLowerCase().includes(lower_input_str)) { + files.push(file); + } + }); + } return files; } renderSuggestion(file, el) { - el.setText(file.name.replace(".md", "")); + var _a, _b; + const { templateFolder, templaterPlugin } = getTemplatePlugins(this.app); + if ((!templateFolder || templateFolder.trim() === "") && !templaterPlugin) { + el.setText(`${((_a = file.parent) == null ? void 0 : _a.path) !== "/" ? ((_b = file.parent) == null ? void 0 : _b.path) + "/" : ""}${file.name}`); + } else { + el.setText(file.name); + } } selectSuggestion(file) { this.inputEl.value = file.name.replace(".md", ""); @@ -3082,23 +3811,92 @@ var TemplateSuggest = class extends TextInputSuggest { } }; +// src/settings/modals/BackupWarning.ts +var import_obsidian22 = require("obsidian"); +var BackupWarningModal = class extends import_obsidian22.Modal { + constructor(plugin, title, description, callback, args = []) { + super(plugin.app); + this.plugin = plugin; + this.title = title; + this.callback = callback; + this.args = args; + this.desc = description; + } + onOpen() { + this.modalEl.addClass("fn-backup-warning-modal"); + const { contentEl } = this; + contentEl.createEl("h2", { text: this.title }); + contentEl.createEl("p", { text: this.desc }); + this.insertCustomHtml(); + contentEl.createEl("p", { text: "Make sure to backup your vault before using this feature." }).style.color = "#fb464c"; + const buttonContainer = contentEl.createDiv({ cls: "fn-modal-button-container" }); + const confirmButton = new import_obsidian22.ButtonComponent(buttonContainer); + confirmButton.setButtonText("Confirm").setCta().onClick(() => { + this.callback(...this.args); + this.close(); + }); + const cancelButton = new import_obsidian22.ButtonComponent(buttonContainer); + cancelButton.setButtonText("Cancel").onClick(() => { + this.close(); + }); + } + insertCustomHtml() { + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/settings/modals/RenameFns.ts +var import_obsidian23 = require("obsidian"); +var RenameFolderNotesModal = class extends BackupWarningModal { + constructor(plugin, title, description, callback, args = []) { + super(plugin, title, description, callback, args); + } + insertCustomHtml() { + const { contentEl } = this; + new import_obsidian23.Setting(contentEl).setName("Old Folder Note Name").setDesc("Every folder note that matches this name will be renamed to the new folder note name.").addText((text) => text.setPlaceholder("Enter the old folder note name").setValue(this.plugin.settings.oldFolderNoteName || "").onChange(async (value) => { + this.plugin.settings.oldFolderNoteName = value; + })); + new import_obsidian23.Setting(contentEl).setName("New Folder Note Name").setDesc("Every folder note that matches the old folder note name will be renamed to this name.").addText((text) => text.setPlaceholder("Enter the new folder note name").setValue(this.plugin.settings.folderNoteName || "").onChange(async (value) => { + this.plugin.settings.folderNoteName = value; + this.plugin.settingsTab.display(); + })); + } +}; + // src/settings/GeneralSettings.ts +var debounceTimer; async function renderGeneral(settingsTab) { const containerEl = settingsTab.settingsPage; - const nameSetting = new import_obsidian17.Setting(containerEl).setName("Folder note name").setDesc("{{folder_name}} will be replaced with the name of the folder").addText((text) => text.setValue(settingsTab.plugin.settings.newFolderNoteName).onChange(async (value) => { + const nameSetting = new import_obsidian24.Setting(containerEl).setName("Folder note name template").setDesc("All folder notes will use this name. Use {{folder_name}} to insert the folder\u2019s name. Existing notes won\u2019t update automatically; click on the button to apply the new name.").addText((text) => text.setValue(settingsTab.plugin.settings.folderNoteName).onChange(async (value) => { if (value.trim() === "") { return; } - settingsTab.plugin.settings.newFolderNoteName = value; + settingsTab.plugin.settings.folderNoteName = value; await settingsTab.plugin.saveSettings(); + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => { + if (!value.includes("{{folder_name}}")) { + if (!settingsTab.showFolderNameInTabTitleSetting) { + settingsTab.display(); + settingsTab.showFolderNameInTabTitleSetting = true; + } + } else { + if (settingsTab.showFolderNameInTabTitleSetting) { + settingsTab.display(); + settingsTab.showFolderNameInTabTitleSetting = false; + } + } + }, 2e3); })).addButton((button) => button.setButtonText("Rename existing folder notes").setCta().onClick(async () => { - settingsTab.updateFolderNotes(settingsTab.plugin.settings.newFolderNoteName); - settingsTab.display(); + new RenameFolderNotesModal(settingsTab.plugin, "Rename all existing folder notes", 'When you click on "Confirm" all existing folder notes will be renamed to the new folder note name.', settingsTab.renameFolderNotes, []).open(); })); nameSetting.infoEl.appendText("Requires a restart to take effect"); nameSetting.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - if (settingsTab.plugin.settings.newFolderNoteName !== "{{folder_name}}") { - new import_obsidian17.Setting(containerEl).setName("Use folder name instead of folder note name in the tab title").setDesc(`When you're using a folder note name like "folder note" and have multiple folder notes open you can't separate them anymore by their name. This setting uses the folder name instead and allows you to indentify the different files.`).addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.tabManagerEnabled).onChange(async (value) => { + if (!settingsTab.plugin.settings.folderNoteName.includes("{{folder_name}}")) { + new import_obsidian24.Setting(containerEl).setName("Display Folder Name in Tab Title").setDesc('Use the actual folder name in the tab title instead of the custom folder note name (e.g., "Folder Note").').addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.tabManagerEnabled).onChange(async (value) => { if (!value) { settingsTab.plugin.tabManager.resetTabs(); } else { @@ -3110,7 +3908,7 @@ async function renderGeneral(settingsTab) { settingsTab.display(); })); } - new import_obsidian17.Setting(containerEl).setName("Default folder note type for new folder notes").setDesc("Choose the default file type for new folder notes. (canvas, markdown, ...)").addDropdown((dropdown) => { + new import_obsidian24.Setting(containerEl).setName("Default file type for new folder notes").setDesc("Choose the default file type (canvas, markdown, ...) used when creating new folder notes.").addDropdown((dropdown) => { dropdown.addOption(".ask", "ask for file type"); settingsTab.plugin.settings.supportedFileTypes.forEach((type) => { if (type === ".md" || type === "md") { @@ -3123,22 +3921,27 @@ async function renderGeneral(settingsTab) { settingsTab.plugin.settings.folderNoteType = ".md"; settingsTab.plugin.saveSettings(); } - const defaultType = settingsTab.plugin.settings.folderNoteType.startsWith(".") ? settingsTab.plugin.settings.folderNoteType : "." + settingsTab.plugin.settings.folderNoteType; + let defaultType = settingsTab.plugin.settings.folderNoteType.startsWith(".") ? settingsTab.plugin.settings.folderNoteType : "." + settingsTab.plugin.settings.folderNoteType; + if (!settingsTab.plugin.settings.supportedFileTypes.includes(defaultType.replace(".", ""))) { + defaultType = ".ask"; + settingsTab.plugin.settings.folderNoteType = defaultType; + } dropdown.setValue(defaultType).onChange(async (value) => { settingsTab.plugin.settings.folderNoteType = value; settingsTab.plugin.saveSettings(); settingsTab.display(); }); }); - const setting0 = new import_obsidian17.Setting(containerEl); - setting0.setName("Supported file types for folder notes"); + const setting0 = new import_obsidian24.Setting(containerEl); + setting0.setName("Supported file types"); const desc0 = document.createDocumentFragment(); - desc0.append("Choose the file types that should be supported for folder notes. (e.g. if you click on a folder name it searches for all file extensions that are supported)", desc0.createEl("br"), "Adding more file types may cause performance issues becareful when adding more file types and don't add too many."); + desc0.append("Specify which file types are allowed as folder notes. Applies to both new and existing folders. Adding many types may affect performance."); setting0.setDesc(desc0); - const list = setting0.createList((list2) => { - list2.addSettings(settingsTab); - list2.setValues(settingsTab.plugin.settings.supportedFileTypes || ["md", "canvas"]); - list2.addResetButton(); + const list = new ListComponent(setting0.settingEl, settingsTab.plugin.settings.supportedFileTypes || [], ["md", "canvas"]); + list.on("update", async (values) => { + settingsTab.plugin.settings.supportedFileTypes = values; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); }); if (!settingsTab.plugin.settings.supportedFileTypes.includes("md") || !settingsTab.plugin.settings.supportedFileTypes.includes("canvas") || !settingsTab.plugin.settings.supportedFileTypes.includes("excalidraw")) { setting0.addDropdown((dropdown) => { @@ -3170,12 +3973,7 @@ async function renderGeneral(settingsTab) { new AddSupportedFileModal(settingsTab.app, settingsTab.plugin, settingsTab, list).open(); })); } - const setting = new import_obsidian17.Setting(containerEl); - const desc = document.createDocumentFragment(); - desc.append("Restart after changing the template path"); - setting.setName("Template path"); - setting.setDesc(desc).descEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - setting.addSearch((cb) => { + const templateSetting = new import_obsidian24.Setting(containerEl).setDesc("Can be used with templater/templates plugin. If you add the location of the templates there.").setName("Template path").addSearch((cb) => { var _a; new TemplateSuggest(cb.inputEl, settingsTab.plugin); cb.setPlaceholder("Template path"); @@ -3189,38 +3987,38 @@ async function renderGeneral(settingsTab) { } }); }); - const storageLocation = new import_obsidian17.Setting(containerEl).setName("Storage location").setDesc("Choose where to store the folder notes").addDropdown((dropdown) => dropdown.addOption("insideFolder", "Inside the folder").addOption("parentFolder", "In the parent folder").setValue(settingsTab.plugin.settings.storageLocation).onChange(async (value) => { + templateSetting.infoEl.appendText("Requires a restart to take effect"); + templateSetting.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; + const storageLocation = new import_obsidian24.Setting(containerEl).setName("Storage location").setDesc("Choose where to store the folder notes").addDropdown((dropdown) => dropdown.addOption("insideFolder", "Inside the folder").addOption("parentFolder", "In the parent folder").setValue(settingsTab.plugin.settings.storageLocation).onChange(async (value) => { settingsTab.plugin.settings.storageLocation = value; await settingsTab.plugin.saveSettings(); settingsTab.display(); - loadFileClasses(void 0, settingsTab.plugin); - })); - storageLocation.infoEl.appendText("Requires a restart to take effect"); - storageLocation.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - const switchLocation = new import_obsidian17.Setting(containerEl).setName("Switch to new storage location").setDesc("Move all folder notes to the new storage location").addButton((button) => button.setButtonText("Switch").setCta().onClick(async () => { + refreshAllFolderStyles(void 0, settingsTab.plugin); + })).addButton((button) => button.setButtonText("Switch").setCta().onClick(async () => { let oldStorageLocation = settingsTab.plugin.settings.storageLocation; if (settingsTab.plugin.settings.storageLocation === "parentFolder") { oldStorageLocation = "insideFolder"; } else if (settingsTab.plugin.settings.storageLocation === "insideFolder") { oldStorageLocation = "parentFolder"; } - settingsTab.switchStorageLocation(oldStorageLocation); + new BackupWarningModal(settingsTab.plugin, "Switch storage location", 'When you click on "Confirm" all folder notes will be moved to the new storage location.', settingsTab.switchStorageLocation, [oldStorageLocation]).open(); })); - switchLocation.infoEl.appendText("Requires a restart to take effect"); - switchLocation.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; + storageLocation.infoEl.appendText("Requires a restart to take effect"); + storageLocation.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; if (settingsTab.plugin.settings.storageLocation === "parentFolder") { - new import_obsidian17.Setting(containerEl).setName("Delete folder notes when deleting the folder").setDesc("Delete the folder note when deleting the folder").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncDelete).onChange(async (value) => { + new import_obsidian24.Setting(containerEl).setName("Delete folder notes when deleting the folder").setDesc("Delete the folder note when deleting the folder").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncDelete).onChange(async (value) => { settingsTab.plugin.settings.syncDelete = value; await settingsTab.plugin.saveSettings(); })); - new import_obsidian17.Setting(containerEl).setName("Move folder notes when moving the folder").setDesc("Move the folder note when moving the folder").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncMove).onChange(async (value) => { + new import_obsidian24.Setting(containerEl).setName("Move folder notes when moving the folder").setDesc("Move the folder note file along with the folder when it is moved").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncMove).onChange(async (value) => { settingsTab.plugin.settings.syncMove = value; await settingsTab.plugin.saveSettings(); })); } - if (import_obsidian17.Platform.isDesktopApp) { - new import_obsidian17.Setting(containerEl).setName("Key for creating folder note").setDesc("The key combination to create a folder note").addDropdown((dropdown) => { - if (!import_obsidian17.Platform.isMacOS) { + if (import_obsidian24.Platform.isDesktopApp) { + settingsTab.settingsPage.createEl("h3", { text: "Keyboard Shortcuts" }); + new import_obsidian24.Setting(containerEl).setName("Key for creating folder note").setDesc("The key combination to create a folder note").addDropdown((dropdown) => { + if (!import_obsidian24.Platform.isMacOS) { dropdown.addOption("ctrl", "Ctrl + Click"); } else { dropdown.addOption("ctrl", "Cmd + Click"); @@ -3234,9 +4032,9 @@ async function renderGeneral(settingsTab) { settingsTab.display(); }); }); - new import_obsidian17.Setting(containerEl).setName("Key for opening folder note").setDesc("Select the combination to open a folder note").addDropdown((dropdown) => { + new import_obsidian24.Setting(containerEl).setName("Key for opening folder note").setDesc("Select the combination to open a folder note").addDropdown((dropdown) => { dropdown.addOption("click", "Mouse Click"); - if (!import_obsidian17.Platform.isMacOS) { + if (!import_obsidian24.Platform.isMacOS) { dropdown.addOption("ctrl", "Ctrl + Click"); } else { dropdown.addOption("ctrl", "Cmd + Click"); @@ -3258,17 +4056,13 @@ async function renderGeneral(settingsTab) { }); }); } - new import_obsidian17.Setting(containerEl).setName("Sync folder name").setDesc("Automatically rename the folder note when the folder name is changed").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncFolderName).onChange(async (value) => { - settingsTab.plugin.settings.syncFolderName = value; - await settingsTab.plugin.saveSettings(); - settingsTab.display(); - })); - new import_obsidian17.Setting(containerEl).setName("Confirm folder note deletion").setDesc("Ask for confirmation before deleting a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.showDeleteConfirmation).onChange(async (value) => { + settingsTab.settingsPage.createEl("h3", { text: "Folder note behavior" }); + new import_obsidian24.Setting(containerEl).setName("Confirm folder note deletion").setDesc("Ask for confirmation before deleting a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.showDeleteConfirmation).onChange(async (value) => { settingsTab.plugin.settings.showDeleteConfirmation = value; await settingsTab.plugin.saveSettings(); settingsTab.display(); })); - new import_obsidian17.Setting(containerEl).setName("Deleted folder notes").setDesc("What happens to the folder note after you delete it").addDropdown((dropdown) => { + new import_obsidian24.Setting(containerEl).setName("Deleted folder notes").setDesc("What happens to the folder note after you delete it").addDropdown((dropdown) => { dropdown.addOption("trash", "Move to system trash"); dropdown.addOption("obsidianTrash", "Move to Obsidian trash (.trash folder)"); dropdown.addOption("delete", "Delete permanently"); @@ -3279,10 +4073,10 @@ async function renderGeneral(settingsTab) { settingsTab.display(); }); }); - if (import_obsidian17.Platform.isDesktop) { - const setting3 = new import_obsidian17.Setting(containerEl); + if (import_obsidian24.Platform.isDesktop) { + const setting3 = new import_obsidian24.Setting(containerEl); setting3.setName("Open folder note in a new tab by default"); - setting3.setDesc("Always open folder notes in a new tab (except when you try to open the same note) instead of having to use ctrl/cmd + click to open in a new tab"); + setting3.setDesc("Always open folder notes in a new tab unless the note is already open in the current tab."); setting3.addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.openInNewTab).onChange(async (value) => { settingsTab.plugin.settings.openInNewTab = value; await settingsTab.plugin.saveSettings(); @@ -3291,12 +4085,56 @@ async function renderGeneral(settingsTab) { setting3.infoEl.appendText("Requires a restart to take effect"); setting3.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; } - new import_obsidian17.Setting(containerEl).setName("Automatically create folder notes").setDesc("Automatically create a folder note when a new folder is created").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.autoCreate).onChange(async (value) => { + if (settingsTab.plugin.settings.openInNewTab) { + new import_obsidian24.Setting(containerEl).setName("Focus existing tab instead of creating a new one").setDesc("If a folder note is already open in a tab, focus that tab instead of creating a new one.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.focusExistingTab).onChange(async (value) => { + settingsTab.plugin.settings.focusExistingTab = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + } + new import_obsidian24.Setting(containerEl).setName("Sync folder name").setDesc("Automatically rename the folder note when the folder name is changed").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.syncFolderName).onChange(async (value) => { + settingsTab.plugin.settings.syncFolderName = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + settingsTab.settingsPage.createEl("h4", { text: "Automation settings" }); + new import_obsidian24.Setting(containerEl).setName("Create folder notes for all folders").setDesc("Generate folder notes for every folder in the vault.").addButton((cb) => { + cb.setIcon("plus"); + cb.setTooltip("Create folder notes"); + cb.onClick(async () => { + new ConfirmationModal(settingsTab.app, settingsTab.plugin).open(); + }); + }); + new import_obsidian24.Setting(containerEl).setName("Auto-create on folder creation").setDesc("Automatically create a folder note whenever a new folder is added.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.autoCreate).onChange(async (value) => { settingsTab.plugin.settings.autoCreate = value; await settingsTab.plugin.saveSettings(); settingsTab.display(); })); - new import_obsidian17.Setting(containerEl).setName("Enable front matter title plugin integration").setDesc("Automatically rename a folder name when the folder note is renamed").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.enabled).onChange(async (value) => { + if (settingsTab.plugin.settings.autoCreate) { + new import_obsidian24.Setting(containerEl).setName("Auto-open after creation").setDesc("Open the folder note immediately after it\u2019s created automatically.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.autoCreateFocusFiles).onChange(async (value) => { + settingsTab.plugin.settings.autoCreateFocusFiles = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + new import_obsidian24.Setting(containerEl).setName("Auto-create for attachment folders").setDesc('Also automatically create folder notes for attachment folders (e.g., "Attachments", "Media", etc.).').addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.autoCreateForAttachmentFolder).onChange(async (value) => { + settingsTab.plugin.settings.autoCreateForAttachmentFolder = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + } + new import_obsidian24.Setting(containerEl).setName("Auto-create when creating notes").setDesc("Automatically create a folder note when a regular note is created inside a folder. Works for supported file types only.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.autoCreateForFiles).onChange(async (value) => { + settingsTab.plugin.settings.autoCreateForFiles = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + settingsTab.settingsPage.createEl("h3", { text: "Integration & Compatibility" }); + const desc1 = document.createDocumentFragment(); + const link = document.createElement("a"); + link.href = "https://github.com/snezhig/obsidian-front-matter-title"; + link.textContent = "front matter title plugin"; + link.target = "_blank"; + desc1.append("Allows you to use the ", link, " with folder notes. It allows you to set the folder name to some name you set in the front matter."); + const fmtpSetting = new import_obsidian24.Setting(containerEl).setName("Enable front matter title plugin integration").setDesc(desc1).addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.enabled).onChange(async (value) => { var _a; settingsTab.plugin.settings.frontMatterTitle.enabled = value; await settingsTab.plugin.saveSettings(); @@ -3304,31 +4142,37 @@ async function renderGeneral(settingsTab) { settingsTab.plugin.fmtpHandler = new FrontMatterTitlePluginHandler(settingsTab.plugin); } else { if (settingsTab.plugin.fmtpHandler) { - settingsTab.plugin.updateBreadcrumbs(true); + settingsTab.plugin.updateAllBreadcrumbs(true); } settingsTab.plugin.app.vault.getFiles().forEach((file) => { var _a2; - (_a2 = settingsTab.plugin.fmtpHandler) == null ? void 0 : _a2.handleRename({ id: "", result: false, path: file.path }, false); + (_a2 = settingsTab.plugin.fmtpHandler) == null ? void 0 : _a2.fmptUpdateFileName({ id: "", result: false, path: file.path, pathOnly: false }, false); }); (_a = settingsTab.plugin.fmtpHandler) == null ? void 0 : _a.deleteEvent(); - settingsTab.plugin.fmtpHandler = null; + settingsTab.plugin.fmtpHandler = new FrontMatterTitlePluginHandler(settingsTab.plugin); } settingsTab.display(); })); - new import_obsidian17.Setting(containerEl).setName("Create folder note for every folder").setDesc("Create a folder note for every folder in the vault").addButton((cb) => { - cb.setIcon("plus"); - cb.setTooltip("Create folder notes"); - cb.onClick(async () => { - new ConfirmationModal(settingsTab.app, settingsTab.plugin).open(); - }); - }); + fmtpSetting.infoEl.appendText("Requires a restart to take effect"); + fmtpSetting.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; + settingsTab.settingsPage.createEl("h3", { text: "Session & Persistence" }); + new import_obsidian24.Setting(containerEl).setName("Persist tab after restart").setDesc("Restore the same settings tab after restarting Obsidian.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.persistentSettingsTab.afterRestart).onChange(async (value) => { + settingsTab.plugin.settings.persistentSettingsTab.afterRestart = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); + new import_obsidian24.Setting(containerEl).setName("Persist tab during session only").setDesc("Keep the current settings tab open during the session, but reset it after a restart or reload.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.persistentSettingsTab.afterChangingTab).onChange(async (value) => { + settingsTab.plugin.settings.persistentSettingsTab.afterChangingTab = value; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + })); } // src/settings/FileExplorerSettings.ts -var import_obsidian18 = require("obsidian"); +var import_obsidian25 = require("obsidian"); async function renderFileExplorer(settingsTab) { const containerEl = settingsTab.settingsPage; - new import_obsidian18.Setting(containerEl).setName("Hide folder note").setDesc("Hide the folder note in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.hideFolderNote).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Hide folder note").setDesc("Hide the folder note file from appearing in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.hideFolderNote).onChange(async (value) => { settingsTab.plugin.settings.hideFolderNote = value; await settingsTab.plugin.saveSettings(); if (value) { @@ -3338,13 +4182,13 @@ async function renderFileExplorer(settingsTab) { } settingsTab.display(); })); - const setting2 = new import_obsidian18.Setting(containerEl).setName("Don't open folder notes by clicking on the name (on mobile)").setDesc("Folder notes don't open when clicking on the name of the folder (on mobile)").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.disableOpenFolderNoteOnClick).onChange(async (value) => { + const setting2 = new import_obsidian25.Setting(containerEl).setName("Disable click-to-open folder note on mobile").setDesc("Prevents folder notes from opening when tapping the folder name or surrounding area on mobile devices. They can now only be opened via the context menu or a command.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.disableOpenFolderNoteOnClick).onChange(async (value) => { settingsTab.plugin.settings.disableOpenFolderNoteOnClick = value; await settingsTab.plugin.saveSettings(); })); setting2.infoEl.appendText("Requires a restart to take effect"); setting2.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - new import_obsidian18.Setting(containerEl).setName("Only open folder notes through the name").setDesc("Only open folder notes in the file explorer by clicking on the folder name").addToggle((toggle) => toggle.setValue(!settingsTab.plugin.settings.stopWhitespaceCollapsing).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Open folder notes by only clicking directly on the folder name").setDesc("Only allow folder notes to open when clicking directly on the folder name in the file explorer").addToggle((toggle) => toggle.setValue(!settingsTab.plugin.settings.stopWhitespaceCollapsing).onChange(async (value) => { if (!value) { document.body.classList.add("fn-whitespace-stop-collapsing"); } else { @@ -3353,32 +4197,41 @@ async function renderFileExplorer(settingsTab) { settingsTab.plugin.settings.stopWhitespaceCollapsing = !value; await settingsTab.plugin.saveSettings(); })); - const disableSetting = new import_obsidian18.Setting(containerEl); + const disableSetting = new import_obsidian25.Setting(containerEl); disableSetting.setName("Disable folder collapsing"); - disableSetting.setDesc("Disable the ability to collapse folders by clicking exactly on the folder name"); + disableSetting.setDesc("When enabled, folders in the file explorer will only collapse when clicking the collapse icon next to the folder name, not when clicking near a folder name when it has a folder note."); disableSetting.addToggle((toggle) => toggle.setValue(!settingsTab.plugin.settings.enableCollapsing).onChange(async (value) => { settingsTab.plugin.settings.enableCollapsing = !value; await settingsTab.plugin.saveSettings(); })); disableSetting.infoEl.appendText("Requires a restart to take effect"); disableSetting.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - new import_obsidian18.Setting(containerEl).setName("Use submenus").setDesc("Use submenus for file/folder commands").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.useSubmenus).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Use submenus").setDesc("Use submenus for file/folder commands").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.useSubmenus).onChange(async (value) => { settingsTab.plugin.settings.useSubmenus = value; await settingsTab.plugin.saveSettings(); settingsTab.display(); })); if (settingsTab.plugin.settings.frontMatterTitle.enabled) { - new import_obsidian18.Setting(containerEl).setName("Change folder name in the file explorer").setDesc("Automatically rename a folder name in the file explorer when the folder note is renamed").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.explorer).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Auto update folder name in the file explorer (front matter title plugin only)").setDesc("Automatically update the folder name in the file explorer when the front matter title plugin is enabled and the title for a folder note is changed in the front matter. This will not change the file name, only the displayed name in the file explorer.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.explorer).onChange(async (value) => { settingsTab.plugin.settings.frontMatterTitle.explorer = value; await settingsTab.plugin.saveSettings(); settingsTab.plugin.app.vault.getFiles().forEach((file) => { var _a; - (_a = settingsTab.plugin.fmtpHandler) == null ? void 0 : _a.handleRename({ id: "", result: false, path: file.path }, false); + (_a = settingsTab.plugin.fmtpHandler) == null ? void 0 : _a.fmptUpdateFileName({ id: "", result: false, path: file.path, pathOnly: false }, false); }); })); } settingsTab.settingsPage.createEl("h3", { text: "Style settings" }); - new import_obsidian18.Setting(containerEl).setName("Hide collapse icon").setDesc("Hide the collapse icon in the file explorer next to the name of a folder when a folder only contains a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.hideCollapsingIcon).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Highlight folder in the file explorer").setDesc("Highlight the folder in the file explorer when it has a folder note and the folder note is open in the editor").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.highlightFolder).onChange(async (value) => { + settingsTab.plugin.settings.highlightFolder = value; + if (!value) { + document.body.classList.add("disable-folder-highlight"); + } else { + document.body.classList.remove("disable-folder-highlight"); + } + await settingsTab.plugin.saveSettings(); + })); + new import_obsidian25.Setting(containerEl).setName("Hide collapse icon").setDesc("Hide the collapse icon in the file explorer next to the name of a folder when a folder only contains a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.hideCollapsingIcon).onChange(async (value) => { settingsTab.plugin.settings.hideCollapsingIcon = value; await settingsTab.plugin.saveSettings(); if (value) { @@ -3388,13 +4241,23 @@ async function renderFileExplorer(settingsTab) { } settingsTab.display(); })); + new import_obsidian25.Setting(containerEl).setName("Hide collapse icon for every empty folder").setDesc("Hide the collapse icon in the file explorer next to the name of a folder when a folder is empty").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.hideCollapsingIconForEmptyFolders).onChange(async (value) => { + settingsTab.plugin.settings.hideCollapsingIconForEmptyFolders = value; + await settingsTab.plugin.saveSettings(); + if (value) { + document.body.classList.add("fn-hide-empty-collapse-icon"); + } else { + document.body.classList.remove("fn-hide-empty-collapse-icon"); + } + settingsTab.display(); + })); if (settingsTab.plugin.settings.hideCollapsingIcon) { - new import_obsidian18.Setting(containerEl).setName("Hide collapse icon also when the attachment folder is in the same folder").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.ignoreAttachmentFolder).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Hide collapse icon also when only the attachment folder is in the same folder").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.ignoreAttachmentFolder).onChange(async (value) => { settingsTab.plugin.settings.ignoreAttachmentFolder = value; await settingsTab.plugin.saveSettings(); })); } - new import_obsidian18.Setting(containerEl).setName("Underline the name of folder notes").setDesc("Add an underline to folders that have a folder note in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.underlineFolder).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Underline the name of folder notes").setDesc("Add an underline to folders that have a folder note in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.underlineFolder).onChange(async (value) => { settingsTab.plugin.settings.underlineFolder = value; if (value) { document.body.classList.add("folder-note-underline"); @@ -3403,7 +4266,7 @@ async function renderFileExplorer(settingsTab) { } await settingsTab.plugin.saveSettings(); })); - new import_obsidian18.Setting(containerEl).setName("Bold the name of folder notes").setDesc("Make the folder name bold in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.boldName).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Bold the name of folder notes").setDesc("Make the folder name bold in the file explorer when it has a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.boldName).onChange(async (value) => { settingsTab.plugin.settings.boldName = value; if (value) { document.body.classList.add("folder-note-bold"); @@ -3412,7 +4275,7 @@ async function renderFileExplorer(settingsTab) { } await settingsTab.plugin.saveSettings(); })); - new import_obsidian18.Setting(containerEl).setName("Cursive the name of folder notes").setDesc("Make the folder name cursive in the file explorer").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.cursiveName).onChange(async (value) => { + new import_obsidian25.Setting(containerEl).setName("Cursive the name of folder notes").setDesc("Make the folder name cursive in the file explorer when it has a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.cursiveName).onChange(async (value) => { settingsTab.plugin.settings.cursiveName = value; if (value) { document.body.classList.add("folder-note-cursive"); @@ -3424,25 +4287,35 @@ async function renderFileExplorer(settingsTab) { } // src/settings/PathSettings.ts -var import_obsidian19 = require("obsidian"); +var import_obsidian26 = require("obsidian"); async function renderPath(settingsTab) { const containerEl = settingsTab.settingsPage; - new import_obsidian19.Setting(containerEl).setName("Open folder note through path").setDesc("Open a folder note when clicking on a folder name in the path if it is a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.openFolderNoteOnClickInPath).onChange(async (value) => { + new import_obsidian26.Setting(containerEl).setName("Open folder note through path").setDesc("Open a folder note when clicking on a folder name in the path if it is a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.openFolderNoteOnClickInPath).onChange(async (value) => { settingsTab.plugin.settings.openFolderNoteOnClickInPath = value; await settingsTab.plugin.saveSettings(); settingsTab.display(); })); - new import_obsidian19.Setting(containerEl).setName("Change folder name in the path").setDesc("Automatically rename a folder name in the path above a note when the folder note is renamed").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.path).onChange(async (value) => { - settingsTab.plugin.settings.frontMatterTitle.path = value; + new import_obsidian26.Setting(containerEl).setName("Open sidebar when opening a folder note through path (Mobile only)").setDesc("Open the sidebar when opening a folder note through the path on mobile").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.openSidebar.mobile).onChange(async (value) => { + settingsTab.plugin.settings.openSidebar.mobile = value; await settingsTab.plugin.saveSettings(); - if (value) { - settingsTab.plugin.updateBreadcrumbs(); - } else { - settingsTab.plugin.updateBreadcrumbs(true); - } })); + new import_obsidian26.Setting(containerEl).setName("Open sidebar when opening a folder note through path (Desktop only)").setDesc("Open the sidebar when opening a folder note through the path on desktop").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.openSidebar.desktop).onChange(async (value) => { + settingsTab.plugin.settings.openSidebar.desktop = value; + await settingsTab.plugin.saveSettings(); + })); + if (settingsTab.plugin.settings.frontMatterTitle.enabled) { + new import_obsidian26.Setting(containerEl).setName("Auto update folder name in the path (front matter title plugin only)").setDesc("Automatically update the folder name in the path when the front matter title plugin is enabled and the title for a folder note is changed in the front matter. This will not change the file name, only the displayed name in the path.").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.frontMatterTitle.path).onChange(async (value) => { + settingsTab.plugin.settings.frontMatterTitle.path = value; + await settingsTab.plugin.saveSettings(); + if (value) { + settingsTab.plugin.updateAllBreadcrumbs(); + } else { + settingsTab.plugin.updateAllBreadcrumbs(true); + } + })); + } settingsTab.settingsPage.createEl("h3", { text: "Style settings" }); - new import_obsidian19.Setting(containerEl).setName("Underline folders in the path").setDesc("Add an underline to folders that have a folder note in the path above a note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.underlineFolderInPath).onChange(async (value) => { + new import_obsidian26.Setting(containerEl).setName("Underline folders in the path").setDesc("Add an underline to folders that have a folder note in the path above a note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.underlineFolderInPath).onChange(async (value) => { settingsTab.plugin.settings.underlineFolderInPath = value; if (value) { document.body.classList.add("folder-note-underline-path"); @@ -3451,7 +4324,7 @@ async function renderPath(settingsTab) { } await settingsTab.plugin.saveSettings(); })); - new import_obsidian19.Setting(containerEl).setName("Bold folders in the path").setDesc("Make the folder name bold in the path above a note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.boldNameInPath).onChange(async (value) => { + new import_obsidian26.Setting(containerEl).setName("Bold folders in the path").setDesc("Make the folder name bold in the path above a note when it has a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.boldNameInPath).onChange(async (value) => { settingsTab.plugin.settings.boldNameInPath = value; if (value) { document.body.classList.add("folder-note-bold-path"); @@ -3460,7 +4333,7 @@ async function renderPath(settingsTab) { } await settingsTab.plugin.saveSettings(); })); - new import_obsidian19.Setting(containerEl).setName("Cursive the name of folder notes in the path").setDesc("Make the folder name cursive in the path above a note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.cursiveNameInPath).onChange(async (value) => { + new import_obsidian26.Setting(containerEl).setName("Cursive the name of folder notes in the path").setDesc("Make the folder name cursive in the path above a note when it has a folder note").addToggle((toggle) => toggle.setValue(settingsTab.plugin.settings.cursiveNameInPath).onChange(async (value) => { settingsTab.plugin.settings.cursiveNameInPath = value; if (value) { document.body.classList.add("folder-note-cursive-path"); @@ -3471,85 +4344,907 @@ async function renderPath(settingsTab) { })); } -// src/settings/FolderOverviewSettings.ts -var import_obsidian22 = require("obsidian"); +// src/obsidian-folder-overview/src/settings.ts +var import_obsidian34 = require("obsidian"); -// src/folderOverview/ModalSettings.ts -var import_obsidian21 = require("obsidian"); +// src/obsidian-folder-overview/src/FolderOverview.ts +var import_obsidian31 = require("obsidian"); -// src/folderOverview/FolderOverview.ts -var import_obsidian20 = require("obsidian"); +// src/obsidian-folder-overview/src/modals/Settings.ts +var import_obsidian27 = require("obsidian"); + +// src/obsidian-folder-overview/src/utils/functions.ts +function getFolderPathFromString2(path) { + const subString = path.lastIndexOf("/") >= 0 ? path.lastIndexOf("/") : 0; + const folderPath = path.substring(0, subString); + if (folderPath === "") { + return "/"; + } else { + return folderPath; + } +} + +// src/obsidian-folder-overview/src/modals/Settings.ts +var FolderOverviewSettings = class extends import_obsidian27.Modal { + constructor(app2, plugin, yaml, ctx, el, defaultSettings) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u; + super(app2); + this.plugin = plugin; + this.app = app2; + if (!yaml) { + this.yaml = this.defaultSettings; + } else if (ctx) { + const includeTypes3 = (yaml == null ? void 0 : yaml.includeTypes) || defaultSettings.includeTypes || ["folder", "markdown"]; + this.yaml = { + id: (_a = yaml == null ? void 0 : yaml.id) != null ? _a : crypto.randomUUID(), + folderPath: (_b = yaml == null ? void 0 : yaml.folderPath) != null ? _b : getFolderPathFromString2(ctx.sourcePath), + title: (_c = yaml == null ? void 0 : yaml.title) != null ? _c : defaultSettings.title, + showTitle: (_d = yaml == null ? void 0 : yaml.showTitle) != null ? _d : defaultSettings.showTitle, + depth: (_e = yaml == null ? void 0 : yaml.depth) != null ? _e : defaultSettings.depth, + style: (_f = yaml == null ? void 0 : yaml.style) != null ? _f : "list", + includeTypes: includeTypes3.map((type) => type.toLowerCase()), + disableFileTag: (_g = yaml == null ? void 0 : yaml.disableFileTag) != null ? _g : defaultSettings.disableFileTag, + sortBy: (_h = yaml == null ? void 0 : yaml.sortBy) != null ? _h : defaultSettings.sortBy, + sortByAsc: (_i = yaml == null ? void 0 : yaml.sortByAsc) != null ? _i : defaultSettings.sortByAsc, + showEmptyFolders: (_j = yaml == null ? void 0 : yaml.showEmptyFolders) != null ? _j : defaultSettings.showEmptyFolders, + onlyIncludeSubfolders: (_k = yaml == null ? void 0 : yaml.onlyIncludeSubfolders) != null ? _k : defaultSettings.onlyIncludeSubfolders, + storeFolderCondition: (_l = yaml == null ? void 0 : yaml.storeFolderCondition) != null ? _l : defaultSettings.storeFolderCondition, + showFolderNotes: (_m = yaml == null ? void 0 : yaml.showFolderNotes) != null ? _m : defaultSettings.showFolderNotes, + disableCollapseIcon: (_n = yaml == null ? void 0 : yaml.disableCollapseIcon) != null ? _n : defaultSettings.disableCollapseIcon, + alwaysCollapse: (_o = yaml == null ? void 0 : yaml.alwaysCollapse) != null ? _o : defaultSettings.alwaysCollapse, + autoSync: (_p = yaml == null ? void 0 : yaml.autoSync) != null ? _p : defaultSettings.autoSync, + allowDragAndDrop: (_q = yaml == null ? void 0 : yaml.allowDragAndDrop) != null ? _q : defaultSettings.allowDragAndDrop, + hideLinkList: (_r = yaml == null ? void 0 : yaml.hideLinkList) != null ? _r : defaultSettings.hideLinkList, + hideFolderOverview: (_s = yaml == null ? void 0 : yaml.hideFolderOverview) != null ? _s : defaultSettings.hideFolderOverview, + useActualLinks: (_t = yaml == null ? void 0 : yaml.useActualLinks) != null ? _t : defaultSettings.useActualLinks, + fmtpIntegration: (_u = yaml == null ? void 0 : yaml.fmtpIntegration) != null ? _u : defaultSettings.fmtpIntegration + }; + } + if (ctx) { + this.ctx = ctx; + } + if (el) { + this.el = el; + } + updateYaml(this.plugin, this.ctx, this.el, this.yaml, false); + } + onOpen() { + const { contentEl } = this; + this.display(contentEl, this.yaml, this.plugin, this.defaultSettings, this.display, this.el, this.ctx); + } + display(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, changedSection) { + modal = this != null ? this : modal; + contentEl.empty(); + contentEl.addEventListener("keydown", (e) => { + if (e.key === "Enter") { + if (!modal) { + return; + } + modal.close(); + } + }); + if (!modal.defaultSettings) { + contentEl.createEl("h2", { text: "Folder overview settings" }); + } else { + contentEl.createEl("h2", { text: "Default folder overview settings" }); + } + createOverviewSettings(contentEl, yaml, plugin, defaultSettings, display, el, ctx, void 0, void 0, modal, changedSection); + } + onClose() { + this.plugin.updateOverviewView(this.plugin, this.yaml); + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/obsidian-folder-overview/src/FileExplorer.ts +var import_obsidian28 = require("obsidian"); +var FileExplorerOverview = class { + constructor(plugin, ctx, root, yaml, pathBlacklist, folderOverview) { + this.eventListeners = []; + this.plugin = plugin; + this.folderOverview = folderOverview; + this.pathBlacklist = pathBlacklist; + this.source = ctx.sourcePath; + this.yaml = yaml; + this.root = root; + } + disconnectListeners() { + this.eventListeners.forEach((unregister) => { + unregister(); + }); + this.eventListeners = []; + } + async renderFileExplorer() { + this.disconnectListeners(); + const plugin = this.plugin; + const ctx = this.folderOverview.ctx; + const root = this.folderOverview.root; + const yaml = this.folderOverview.yaml; + const folderOverview = this.folderOverview; + let folder = null; + if (plugin instanceof FolderNotesPlugin) { + folder = getFileExplorerElement(yaml.folderPath, plugin); + } + let folderElement = folder == null ? void 0 : folder.parentElement; + const overviewList = folderOverview.listEl; + overviewList == null ? void 0 : overviewList.empty(); + if (!overviewList) + return; + let tFolder = plugin.app.vault.getAbstractFileByPath(yaml.folderPath); + if (!tFolder && yaml.folderPath.trim() === "") { + if (ctx.sourcePath.includes("/")) { + tFolder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); + } else { + yaml.folderPath = "/"; + tFolder = plugin.app.vault.getAbstractFileByPath("/"); + } + } + if (!folderElement && !tFolder) + return; + const sourceFolderPath = (tFolder == null ? void 0 : tFolder.path) || ""; + folderElement = document.querySelectorAll(".nav-files-container")[0]; + if (!folderElement) { + folderElement = root.createDiv({ + cls: "nav-files-container" + }); + } + const newFolderElement = folderElement.cloneNode(true); + newFolderElement.querySelectorAll("div.nav-folder-title").forEach((el) => { + var _a; + const folder2 = plugin.app.vault.getAbstractFileByPath(el.getAttribute("data-path") || ""); + if (!(folder2 instanceof import_obsidian28.TFolder)) + return; + if (yaml.alwaysCollapse) { + folder2.collapsed = true; + el.classList.add("is-collapsed"); + } else { + if (yaml.storeFolderCondition) { + if (folder2.collapsed) { + el.classList.add("is-collapsed"); + } else { + el.classList.remove("is-collapsed"); + } + } else { + if ((_a = el.parentElement) == null ? void 0 : _a.classList.contains("is-collapsed")) { + folder2.collapsed = true; + } else { + folder2.collapsed = false; + } + } + } + if (el.classList.contains("has-folder-note")) { + if (plugin instanceof FolderNotesPlugin) { + const folderNote = getFolderNote(plugin, folder2.path); + if (folderNote) { + folderOverview.pathBlacklist.push(folderNote.path); + } + } + } + }); + const debouncedRenderFileExplorer = this.debounce(() => this.renderFileExplorer(), 300); + const handleVaultChange = () => { + debouncedRenderFileExplorer(); + }; + this.eventListeners.push(() => { + folderOverview.off("vault-change", handleVaultChange); + }); + folderOverview.on("vault-change", handleVaultChange); + if (tFolder instanceof import_obsidian28.TFolder) { + await this.addFiles(tFolder.children, overviewList, folderOverview, sourceFolderPath); + } + newFolderElement.querySelectorAll("div.tree-item-icon").forEach((el) => { + if (el instanceof HTMLElement) { + el.onclick = () => { + var _a; + const path = (_a = el.parentElement) == null ? void 0 : _a.getAttribute("data-path"); + if (!path) + return; + const folder2 = plugin.app.vault.getAbstractFileByPath(path); + this.handleCollapseClick(el, plugin, yaml, this.pathBlacklist, sourceFolderPath, folderOverview, folder2); + }; + } + }); + } + debounce(func, wait) { + let timeout; + return (...args) => { + clearTimeout(timeout); + timeout = window.setTimeout(() => func.apply(this, args), wait); + }; + } + async addFiles(files, childrenElement, folderOverview, sourceFolderPath) { + const plugin = folderOverview.plugin; + const allFiles = await folderOverview.filterFiles(files, plugin, sourceFolderPath, folderOverview.yaml.depth, folderOverview.pathBlacklist); + const sortedFiles = folderOverview.sortFiles((allFiles != null ? allFiles : []).filter((file) => file !== null)); + const folders = sortedFiles.filter((child) => child instanceof import_obsidian28.TFolder); + const otherFiles = sortedFiles.filter((child) => child instanceof import_obsidian28.TFile); + for (const child of folders) { + if (!(child instanceof import_obsidian28.TFolder)) + continue; + await this.createFolderEL(plugin, child, folderOverview, childrenElement, sourceFolderPath); + } + for (const child of otherFiles) { + if (!(child instanceof import_obsidian28.TFile)) + continue; + await this.createFileEL(plugin, child, folderOverview, childrenElement); + } + } + async handleCollapseClick(el, plugin, yaml, pathBlacklist, sourceFolderPath, folderOverview, folder) { + var _a, _b, _c, _d, _e; + el.classList.toggle("is-collapsed"); + if (el.classList.contains("is-collapsed")) { + if (!(folder instanceof import_obsidian28.TFolder)) + return; + folder.collapsed = true; + (_c = (_b = (_a = el.parentElement) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.childNodes[1]) == null ? void 0 : _c.remove(); + } else { + if (!(folder instanceof import_obsidian28.TFolder)) + return; + folder.collapsed = false; + const folderElement = (_d = el.parentElement) == null ? void 0 : _d.parentElement; + if (!folderElement) + return; + const childrenElement = folderElement.createDiv({ cls: "tree-item-children nav-folder-children" }); + const files = folderOverview.sortFiles(folder.children); + const filteredFiles = ((_e = await folderOverview.filterFiles(files, plugin, folder.path, yaml.depth || 1, pathBlacklist)) != null ? _e : []).filter((file) => file !== null); + await this.addFiles(filteredFiles, childrenElement, folderOverview, sourceFolderPath); + } + } + async createFolderEL(plugin, child, folderOverview, childrenElement, sourceFolderPath) { + var _a, _b, _c, _d; + const pathBlacklist = folderOverview.pathBlacklist; + let folderNote = void 0; + if (plugin instanceof FolderNotesPlugin) { + folderNote = getFolderNote(plugin, child.path); + } + const yaml = folderOverview.yaml; + let folderTitle = null; + let folderElement = null; + if (folderNote) { + pathBlacklist.push(folderNote.path); + } + let excludedFolder = void 0; + if (plugin instanceof FolderNotesPlugin) { + excludedFolder = getExcludedFolder(plugin, child.path, true); + } + if (excludedFolder == null ? void 0 : excludedFolder.excludeFromFolderOverview) { + return; + } + if (yaml.includeTypes.includes("folder")) { + (_a = folderOverview.el.parentElement) == null ? void 0 : _a.classList.add("fv-remove-edit-button"); + folderElement = childrenElement.createDiv({ + cls: "tree-item nav-folder" + }); + folderTitle = folderElement.createDiv({ + cls: "tree-item-self is-clickable nav-folder-title", + attr: { + "data-path": child.path + } + }); + let folderName = child.name; + if (yaml.fmtpIntegration && plugin instanceof FolderNotesPlugin && folderNote) { + folderName = (_c = await ((_b = plugin.fmtpHandler) == null ? void 0 : _b.getNewFileName(folderNote))) != null ? _c : child.name; + } + const folderTitleText = folderTitle == null ? void 0 : folderTitle.createDiv({ + cls: "tree-item-inner nav-folder-title-content", + text: folderName + }); + if (folderTitleText && !folderNote) { + folderTitleText.onclick = () => { + const collapseIcon2 = folderTitle == null ? void 0 : folderTitle.querySelectorAll(".tree-item-icon")[0]; + if (collapseIcon2) { + this.handleCollapseClick(collapseIcon2, plugin, yaml, pathBlacklist, sourceFolderPath, folderOverview, child); + } + }; + } + if (yaml.allowDragAndDrop) { + folderTitle.draggable = true; + folderTitle.addEventListener("dragstart", (e) => { + const dragManager = plugin.app.dragManager; + const dragData = dragManager.dragFolder(e, child); + dragManager.onDragStart(e, dragData); + folderTitle == null ? void 0 : folderTitle.classList.add("is-being-dragged"); + }); + folderTitle.addEventListener("dragend", (e) => { + folderTitle == null ? void 0 : folderTitle.classList.remove("is-being-dragged"); + }); + folderTitle.addEventListener("dragover", (e) => { + e.preventDefault(); + const { draggable } = plugin.app.dragManager; + if (draggable) { + folderElement == null ? void 0 : folderElement.classList.add("is-being-dragged-over"); + plugin.app.dragManager.setAction(window.i18next.t("interface.drag-and-drop.move-into-folder", { folder: child.name })); + } + }); + folderTitle.addEventListener("dragleave", (e) => { + folderElement == null ? void 0 : folderElement.classList.remove("is-being-dragged-over"); + }); + folderTitle.addEventListener("drop", (e) => { + const { draggable } = plugin.app.dragManager; + if (draggable && draggable.file) { + plugin.app.fileManager.renameFile(draggable.file, child.path + "/" + draggable.file.name); + } + }); + } + folderTitle.oncontextmenu = (e) => { + folderOverview.folderMenu(child, e); + }; + } + if (!child.collapsed || !yaml.includeTypes.includes("folder")) { + if (yaml.alwaysCollapse) { + child.collapsed = true; + } + if (yaml.includeTypes.includes("folder")) { + folderTitle == null ? void 0 : folderTitle.classList.remove("is-collapsed"); + const childrenElement2 = folderElement == null ? void 0 : folderElement.createDiv({ cls: "tree-item-children nav-folder-children" }); + if (childrenElement2) { + await this.addFiles(child.children, childrenElement2, folderOverview, sourceFolderPath); + } + } else { + await this.addFiles(child.children, childrenElement, folderOverview, sourceFolderPath); + } + } else { + folderTitle == null ? void 0 : folderTitle.classList.add("is-collapsed"); + } + if (folderNote) { + folderTitle == null ? void 0 : folderTitle.classList.add("has-folder-note"); + } + if (folderNote && child.children.length === 1 && yaml.disableCollapseIcon) { + folderTitle == null ? void 0 : folderTitle.classList.add("fn-has-no-files"); + } + const collapseIcon = folderTitle == null ? void 0 : folderTitle.createDiv({ + cls: "tree-item-icon collapse-icon nav-folder-collapse-indicator fn-folder-overview-collapse-icon" + }); + if (child.collapsed) { + collapseIcon == null ? void 0 : collapseIcon.classList.add("is-collapsed"); + } + if (collapseIcon) { + (0, import_obsidian28.setIcon)(collapseIcon, "chevron-down"); + (_d = collapseIcon.querySelector("path")) == null ? void 0 : _d.setAttribute("d", "M3 8L12 17L21 8"); + collapseIcon.onclick = () => { + this.handleCollapseClick(collapseIcon, plugin, yaml, pathBlacklist, sourceFolderPath, folderOverview, child); + }; + } + } + async createFileEL(plugin, child, folderOverview, childrenElement) { + var _a, _b, _c; + const yaml = folderOverview.yaml; + const pathBlacklist = folderOverview.pathBlacklist; + if (pathBlacklist.includes(child.path) && !yaml.showFolderNotes) { + return; + } + const extension = child.extension.toLowerCase() === "md" ? "markdown" : child.extension.toLowerCase(); + const includeTypes3 = yaml.includeTypes; + if (includeTypes3.length > 0 && !includeTypes3.includes("all")) { + if ((extension === "md" || extension === "markdown") && !includeTypes3.includes("markdown")) + return; + if (extension === "canvas" && !includeTypes3.includes("canvas")) + return; + if (extension === "pdf" && !includeTypes3.includes("pdf")) + return; + const imageTypes = ["jpg", "jpeg", "png", "gif", "svg", "webp"]; + if (imageTypes.includes(extension) && !includeTypes3.includes("image")) + return; + const videoTypes = ["mp4", "webm", "ogv", "mov", "mkv"]; + if (videoTypes.includes(extension) && !includeTypes3.includes("video")) + return; + const audioTypes = ["mp3", "wav", "m4a", "3gp", "flac", "ogg", "oga", "opus"]; + if (audioTypes.includes(extension) && includeTypes3.includes("audio")) + return; + const allTypes = ["markdown", "md", "canvas", "pdf", ...imageTypes, ...videoTypes, ...audioTypes]; + if (!allTypes.includes(extension) && !includeTypes3.includes("other")) + return; + } + (_a = folderOverview.el.parentElement) == null ? void 0 : _a.classList.add("fv-remove-edit-button"); + const fileElement = childrenElement.createDiv({ + cls: "tree-item nav-file" + }); + const fileTitle = fileElement.createDiv({ + cls: "tree-item-self is-clickable nav-file-title pointer-cursor", + attr: { + "data-path": child.path + } + }); + if (yaml.allowDragAndDrop) { + fileTitle.draggable = true; + fileTitle.addEventListener("dragstart", (e) => { + const dragManager = plugin.app.dragManager; + const dragData = dragManager.dragFile(e, child); + dragManager.onDragStart(e, dragData); + fileTitle.classList.add("is-being-dragged"); + }); + fileTitle.addEventListener("dragend", () => { + fileTitle.classList.remove("is-being-dragged"); + }); + fileTitle.addEventListener("dragover", (e) => { + var _a2, _b2, _c2; + e.preventDefault(); + const { draggable } = plugin.app.dragManager; + if (draggable) { + plugin.app.dragManager.setAction(window.i18next.t("interface.drag-and-drop.move-into-folder", { folder: ((_a2 = child.parent) == null ? void 0 : _a2.name) || plugin.app.vault.getName() })); + (_c2 = (_b2 = fileElement.parentElement) == null ? void 0 : _b2.parentElement) == null ? void 0 : _c2.classList.add("is-being-dragged-over"); + } + }); + fileTitle.addEventListener("dragleave", () => { + var _a2, _b2; + (_b2 = (_a2 = fileElement.parentElement) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.classList.remove("is-being-dragged-over"); + }); + fileTitle.addEventListener("drop", (e) => { + var _a2, _b2, _c2; + e.preventDefault(); + const { draggable } = plugin.app.dragManager; + if (draggable == null ? void 0 : draggable.file) { + const targetFolder = ((_a2 = child.parent) == null ? void 0 : _a2.path) || ""; + if (targetFolder) { + plugin.app.fileManager.renameFile(draggable.file, `${targetFolder}/${draggable.file.name}`); + } + (_c2 = (_b2 = fileElement.parentElement) == null ? void 0 : _b2.parentElement) == null ? void 0 : _c2.classList.remove("is-being-dragged-over"); + } + }); + } + fileTitle.onclick = () => { + plugin.app.workspace.openLinkText(child.path, child.path, true); + }; + fileTitle.oncontextmenu = (e) => { + folderOverview.fileMenu(child, e); + }; + let fileName = child.basename; + if (yaml.fmtpIntegration) { + fileName = (_c = await ((_b = plugin.fmtpHandler) == null ? void 0 : _b.getNewFileName(child))) != null ? _c : child.basename; + } + fileTitle.createDiv({ + cls: "tree-item-inner nav-file-title-content", + text: fileName + }); + if (child.extension !== "md" && !yaml.disableFileTag) { + fileTitle.createDiv({ + cls: "nav-file-tag", + text: child.extension + }); + } + } +}; + +// src/obsidian-folder-overview/src/ListStyle.ts +var import_obsidian29 = require("obsidian"); +async function renderListOverview(plugin, ctx, root, yaml, pathBlacklist, folderOverview) { + const overviewList = folderOverview.listEl; + overviewList == null ? void 0 : overviewList.empty(); + let tFolder = plugin.app.vault.getAbstractFileByPath(yaml.folderPath); + if (!tFolder && yaml.folderPath.trim() === "") { + if (ctx.sourcePath.includes("/")) { + tFolder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); + } else { + yaml.folderPath = "/"; + tFolder = plugin.app.vault.getAbstractFileByPath("/"); + } + } + if (!(tFolder instanceof import_obsidian29.TFolder)) { + return; + } + let files = tFolder.children; + if (!files) { + return; + } + const ul = folderOverview.listEl; + const sourceFolderPath = tFolder.path; + files = await folderOverview.filterFiles(files, plugin, sourceFolderPath, yaml.depth, folderOverview.pathBlacklist); + const folders = folderOverview.sortFiles(files.filter((f) => f instanceof import_obsidian29.TFolder)); + files = folderOverview.sortFiles(files.filter((f) => f instanceof import_obsidian29.TFile)); + folders.forEach(async (file) => { + if (file instanceof import_obsidian29.TFolder) { + if (yaml.includeTypes.includes("folder")) { + const folderItem = await addFolderList(plugin, ul, folderOverview.pathBlacklist, file, folderOverview); + if (!folderItem) { + return; + } + goThroughFolders(plugin, folderItem, file, folderOverview.yaml.depth, sourceFolderPath, ctx, folderOverview.yaml, folderOverview.pathBlacklist, folderOverview.yaml.includeTypes, folderOverview.yaml.disableFileTag, folderOverview); + } else { + goThroughFolders(plugin, ul, file, folderOverview.yaml.depth, sourceFolderPath, ctx, folderOverview.yaml, folderOverview.pathBlacklist, folderOverview.yaml.includeTypes, folderOverview.yaml.disableFileTag, folderOverview); + } + } + }); + files.forEach((file) => { + if (file instanceof import_obsidian29.TFile) { + addFileList(plugin, ul, folderOverview.pathBlacklist, file, folderOverview.yaml.includeTypes, folderOverview.yaml.disableFileTag, folderOverview); + } + }); + const debouncedRenderListOverview = debounce2(() => renderListOverview(plugin, ctx, root, yaml, pathBlacklist, folderOverview), 300); + const handleVaultChange = () => { + debouncedRenderListOverview(); + }; + folderOverview.on("vault-change", handleVaultChange); +} +function debounce2(func, wait) { + let timeout; + return (...args) => { + clearTimeout(timeout); + timeout = window.setTimeout(() => func.apply(this, args), wait); + }; +} +async function addFolderList(plugin, list, pathBlacklist, folder, folderOverview) { + var _a, _b, _c; + (_a = folderOverview.el.parentElement) == null ? void 0 : _a.classList.add("fv-remove-edit-button"); + const isFirstLevelSub = folder.path.split("/").length === folderOverview.yaml.folderPath.split("/").length + 1; + if (!folderOverview.yaml.showEmptyFolders && folder.children.length === 0 && !folderOverview.yaml.onlyIncludeSubfolders) { + return; + } else if (folderOverview.yaml.onlyIncludeSubfolders && !isFirstLevelSub && folder.children.length === 0) { + return; + } + const folderItem = list.createEl("li", { cls: "folder-overview-list folder-list" }); + if (plugin instanceof FolderNotesPlugin) { + const folderNote = getFolderNote(plugin, folder.path); + if (folderNote instanceof import_obsidian29.TFile) { + const folderNoteLink = folderItem.createEl("a", { cls: "folder-overview-list-item folder-name-item internal-link", href: folderNote.path }); + if (folderOverview.yaml.fmtpIntegration) { + folderNoteLink.innerText = (_c = await ((_b = plugin.fmtpHandler) == null ? void 0 : _b.getNewFileName(folderNote))) != null ? _c : folder.name; + } else { + folderNoteLink.innerText = folder.name; + } + pathBlacklist.push(folderNote.path); + folderNoteLink.oncontextmenu = (e) => { + e.stopImmediatePropagation(); + folderOverview.fileMenu(folderNote, e); + }; + } else { + const folderName = folderItem.createEl("span", { cls: "folder-overview-list-item folder-name-item" }); + folderName.innerText = folder.name; + folderName.oncontextmenu = (e) => { + folderOverview.folderMenu(folder, e); + }; + } + } else { + const folderName = folderItem.createEl("span", { cls: "folder-overview-list-item folder-name-item" }); + folderName.innerText = folder.name; + folderName.oncontextmenu = (e) => { + folderOverview.folderMenu(folder, e); + }; + } + return folderItem; +} +async function goThroughFolders(plugin, list, folder, depth, sourceFolderPath, ctx, yaml, pathBlacklist, includeTypes3, disableFileTag, folderOverview) { + if (sourceFolderPath === "") { + depth--; + } + const allFiles = await folderOverview.filterFiles(folder.children, plugin, sourceFolderPath, depth, pathBlacklist); + const files = folderOverview.sortFiles(allFiles.filter((file) => !(file instanceof import_obsidian29.TFolder) && file !== null)); + const folders = folderOverview.sortFiles(allFiles.filter((file) => file instanceof import_obsidian29.TFolder && file !== null)); + const ul = list.createEl("ul", { cls: "folder-overview-list" }); + folders.forEach(async (file) => { + if (file instanceof import_obsidian29.TFolder) { + if (yaml.includeTypes.includes("folder")) { + const folderItem = await addFolderList(plugin, ul, pathBlacklist, file, folderOverview); + if (!folderItem) { + return; + } + goThroughFolders(plugin, folderItem, file, depth, sourceFolderPath, ctx, yaml, pathBlacklist, includeTypes3, disableFileTag, folderOverview); + } else { + goThroughFolders(plugin, list, file, depth, sourceFolderPath, ctx, yaml, pathBlacklist, includeTypes3, disableFileTag, folderOverview); + } + } + }); + files.forEach((file) => { + if (file instanceof import_obsidian29.TFile) { + if (yaml.includeTypes.includes("folder")) { + addFileList(plugin, ul, pathBlacklist, file, includeTypes3, disableFileTag, folderOverview); + } else { + addFileList(plugin, list, pathBlacklist, file, includeTypes3, disableFileTag, folderOverview); + } + } + }); +} +async function addFileList(plugin, list, pathBlacklist, file, includeTypes3, disableFileTag, folderOverview) { + var _a, _b, _c, _d; + if (includeTypes3.length > 0 && !includeTypes3.includes("all")) { + if (file.extension === "md" && !includeTypes3.includes("markdown")) + return; + if (file.extension === "canvas" && !includeTypes3.includes("canvas")) + return; + if (file.extension === "pdf" && !includeTypes3.includes("pdf")) + return; + const imageTypes = ["jpg", "jpeg", "png", "gif", "svg", "webp"]; + if (imageTypes.includes(file.extension) && !includeTypes3.includes("image")) + return; + const videoTypes = ["mp4", "webm", "ogv", "mov", "mkv"]; + if (videoTypes.includes(file.extension) && !includeTypes3.includes("video")) + return; + const audioTypes = ["mp3", "wav", "m4a", "3gp", "flac", "ogg", "oga", "opus"]; + if (audioTypes.includes(file.extension) && includeTypes3.includes("audio")) + return; + const allTypes = ["md", "canvas", "pdf", ...imageTypes, ...videoTypes, ...audioTypes]; + if (!allTypes.includes(file.extension) && !includeTypes3.includes("other")) + return; + } + if (!folderOverview.yaml.showFolderNotes) { + if (pathBlacklist.includes(file.path)) + return; + if (plugin instanceof FolderNotesPlugin && extractFolderName(plugin.settings.folderNoteName, file.basename) === ((_a = file.parent) == null ? void 0 : _a.name)) { + return; + } + } + (_b = folderOverview.el.parentElement) == null ? void 0 : _b.classList.add("fv-remove-edit-button"); + const listItem = list.createEl("li", { cls: "folder-overview-list file-link" }); + listItem.oncontextmenu = (e) => { + e.stopImmediatePropagation(); + folderOverview.fileMenu(file, e); + }; + const nameItem = listItem.createEl("div", { cls: "folder-overview-list-item" }); + const link = nameItem.createEl("a", { cls: "internal-link", href: file.path }); + if (folderOverview.yaml.fmtpIntegration) { + link.innerText = (_d = await ((_c = plugin.fmtpHandler) == null ? void 0 : _c.getNewFileName(file))) != null ? _d : file.basename; + } else { + link.innerText = file.basename; + } + if (file.extension !== "md" && !disableFileTag) { + nameItem.createDiv({ cls: "nav-file-tag" }).innerText = file.extension; + } +} + +// src/modals/NewFolderName.ts +var import_obsidian30 = require("obsidian"); +var NewFolderNameModal = class extends import_obsidian30.Modal { + constructor(app2, plugin, folder) { + super(app2); + this.plugin = plugin; + this.app = app2; + this.folder = folder; + } + onOpen() { + const { contentEl } = this; + contentEl.addEventListener("keydown", (e) => { + if (e.key === "Enter") { + this.saveFolderName(); + this.close(); + } + }); + this.modalEl.classList.add("mod-file-rename"); + const modalTitle = this.modalEl.querySelector("div.modal-title"); + if (modalTitle) { + modalTitle.textContent = "Folder title"; + } + const textarea = contentEl.createEl("textarea", { + text: this.folder.name.replace(this.plugin.settings.folderNoteType, ""), + attr: { + placeholder: "Enter the name of the folder", + rows: "1", + spellcheck: "false", + class: "rename-textarea" + } + }); + textarea.addEventListener("focus", function() { + this.select(); + }); + textarea.focus(); + const buttonContainer = this.modalEl.createDiv({ cls: "modal-button-container" }); + const saveButton = buttonContainer.createEl("button", { text: "Save", cls: "mod-cta" }); + saveButton.addEventListener("click", async () => { + this.saveFolderName(); + this.close(); + }); + const cancelButton = buttonContainer.createEl("button", { text: "Cancel", cls: "mod-cancel" }); + cancelButton.addEventListener("click", () => { + this.close(); + }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } + saveFolderName() { + const textarea = this.contentEl.querySelector("textarea"); + if (textarea) { + const newName = textarea.value.trim(); + if (newName.trim() !== "") { + if (!this.app.vault.getAbstractFileByPath(this.folder.path.slice(0, this.folder.path.lastIndexOf("/") + 1) + newName.trim())) { + this.plugin.app.fileManager.renameFile(this.folder, this.folder.path.slice(0, this.folder.path.lastIndexOf("/") + 1) + newName.trim()); + } + } + } + } +}; + +// src/obsidian-folder-overview/src/utils/EventEmitter.ts +var CustomEventEmitter2 = class { + constructor() { + this.events = {}; + } + on(event, listener) { + if (!this.events[event]) { + this.events[event] = []; + } + this.events[event].push(listener); + } + off(event, listener) { + if (!this.events[event]) + return; + this.events[event] = this.events[event].filter((l) => l !== listener); + } + emit(event, data) { + if (!this.events[event]) + return; + this.events[event].forEach((listener) => listener(data)); + } +}; + +// src/obsidian-folder-overview/src/FolderOverview.ts var FolderOverview = class { - constructor(plugin, ctx, source, el) { + constructor(plugin, ctx, source, el, defaultSettings) { this.pathBlacklist = []; this.folders = []; - let yaml = (0, import_obsidian20.parseYaml)(source); + this.eventListeners = []; + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u; + this.plugin = plugin; + this.emitter = new CustomEventEmitter2(); + let yaml = (0, import_obsidian31.parseYaml)(source); if (!yaml) { yaml = {}; } - const includeTypes = (yaml == null ? void 0 : yaml.includeTypes) || plugin.settings.defaultOverview.includeTypes || ["folder", "markdown"]; - this.plugin = plugin; + const includeTypes3 = (yaml == null ? void 0 : yaml.includeTypes) || defaultSettings.includeTypes || ["folder", "markdown"]; this.ctx = ctx; this.source = source; this.el = el; this.sourceFilePath = this.ctx.sourcePath; + const sourceFile = this.plugin.app.vault.getAbstractFileByPath(ctx.sourcePath); + if (sourceFile instanceof import_obsidian31.TFile) { + this.sourceFile = sourceFile; + } + switch (yaml == null ? void 0 : yaml.folderPath.trim()) { + case "File\u2019s parent folder path": { + const sourceFolder = this.plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); + if (sourceFolder instanceof import_obsidian31.TFolder) { + yaml.folderPath = sourceFolder.path; + this.sourceFolder = sourceFolder; + } + break; + } + case "Path of folder linked to the file": { + if (plugin instanceof FolderNotesPlugin && this.sourceFile instanceof import_obsidian31.TFile) { + const folderNoteFolder = getFolder(plugin, this.sourceFile); + if (folderNoteFolder instanceof import_obsidian31.TFolder) { + this.sourceFolder = folderNoteFolder; + yaml.folderPath = folderNoteFolder.path; + } else { + yaml.folderPath = ""; + } + } + break; + } + case "": { + const sourceFolder = this.plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); + if (sourceFolder instanceof import_obsidian31.TFolder) { + yaml.folderPath = sourceFolder.path; + this.sourceFolder = sourceFolder; + } + break; + } + default: { + const sourceFolder = this.plugin.app.vault.getAbstractFileByPath(yaml.folderPath.trim()); + if (sourceFolder instanceof import_obsidian31.TFolder) { + yaml.folderPath = sourceFolder.path; + this.sourceFolder = sourceFolder; + } + break; + } + } + this.defaultSettings = defaultSettings; this.yaml = { - id: (yaml == null ? void 0 : yaml.id) || crypto.randomUUID(), - folderPath: (yaml == null ? void 0 : yaml.folderPath) === void 0 || (yaml == null ? void 0 : yaml.folderPath) === null ? getFolderPathFromString(ctx.sourcePath) : yaml == null ? void 0 : yaml.folderPath, - title: (yaml == null ? void 0 : yaml.title) || plugin.settings.defaultOverview.title, - showTitle: (yaml == null ? void 0 : yaml.showTitle) === void 0 || (yaml == null ? void 0 : yaml.showTitle) === null ? plugin.settings.defaultOverview.showTitle : yaml == null ? void 0 : yaml.showTitle, - depth: (yaml == null ? void 0 : yaml.depth) || plugin.settings.defaultOverview.depth, - style: (yaml == null ? void 0 : yaml.style) || "list", - includeTypes: includeTypes.map((type) => type.toLowerCase()), - disableFileTag: (yaml == null ? void 0 : yaml.disableFileTag) === void 0 || (yaml == null ? void 0 : yaml.disableFileTag) === null ? plugin.settings.defaultOverview.disableFileTag : yaml == null ? void 0 : yaml.disableFileTag, - sortBy: (yaml == null ? void 0 : yaml.sortBy) || plugin.settings.defaultOverview.sortBy, - sortByAsc: (yaml == null ? void 0 : yaml.sortByAsc) === void 0 || (yaml == null ? void 0 : yaml.sortByAsc) === null ? plugin.settings.defaultOverview.sortByAsc : yaml == null ? void 0 : yaml.sortByAsc, - showEmptyFolders: (yaml == null ? void 0 : yaml.showEmptyFolders) === void 0 || (yaml == null ? void 0 : yaml.showEmptyFolders) === null ? plugin.settings.defaultOverview.showEmptyFolders : yaml == null ? void 0 : yaml.showEmptyFolders, - onlyIncludeSubfolders: (yaml == null ? void 0 : yaml.onlyIncludeSubfolders) === void 0 || (yaml == null ? void 0 : yaml.onlyIncludeSubfolders) === null ? plugin.settings.defaultOverview.onlyIncludeSubfolders : yaml == null ? void 0 : yaml.onlyIncludeSubfolders, - storeFolderCondition: (yaml == null ? void 0 : yaml.storeFolderCondition) === void 0 || (yaml == null ? void 0 : yaml.storeFolderCondition) === null ? plugin.settings.defaultOverview.storeFolderCondition : yaml == null ? void 0 : yaml.storeFolderCondition, - showFolderNotes: (yaml == null ? void 0 : yaml.showFolderNotes) === void 0 || (yaml == null ? void 0 : yaml.showFolderNotes) === null ? plugin.settings.defaultOverview.showFolderNotes : yaml == null ? void 0 : yaml.showFolderNotes, - disableCollapseIcon: (yaml == null ? void 0 : yaml.disableCollapseIcon) === void 0 || (yaml == null ? void 0 : yaml.disableCollapseIcon) === null ? plugin.settings.defaultOverview.disableCollapseIcon : yaml == null ? void 0 : yaml.disableCollapseIcon + id: (_a = yaml == null ? void 0 : yaml.id) != null ? _a : crypto.randomUUID(), + folderPath: (_b = yaml == null ? void 0 : yaml.folderPath.trim()) != null ? _b : getFolderPathFromString(ctx.sourcePath), + title: (_c = yaml == null ? void 0 : yaml.title) != null ? _c : defaultSettings.title, + showTitle: (_d = yaml == null ? void 0 : yaml.showTitle) != null ? _d : defaultSettings.showTitle, + depth: (_e = yaml == null ? void 0 : yaml.depth) != null ? _e : defaultSettings.depth, + style: (_f = yaml == null ? void 0 : yaml.style) != null ? _f : "list", + includeTypes: includeTypes3.map((type) => type.toLowerCase()), + disableFileTag: (_g = yaml == null ? void 0 : yaml.disableFileTag) != null ? _g : defaultSettings.disableFileTag, + sortBy: (_h = yaml == null ? void 0 : yaml.sortBy) != null ? _h : defaultSettings.sortBy, + sortByAsc: (_i = yaml == null ? void 0 : yaml.sortByAsc) != null ? _i : defaultSettings.sortByAsc, + showEmptyFolders: (_j = yaml == null ? void 0 : yaml.showEmptyFolders) != null ? _j : defaultSettings.showEmptyFolders, + onlyIncludeSubfolders: (_k = yaml == null ? void 0 : yaml.onlyIncludeSubfolders) != null ? _k : defaultSettings.onlyIncludeSubfolders, + storeFolderCondition: (_l = yaml == null ? void 0 : yaml.storeFolderCondition) != null ? _l : defaultSettings.storeFolderCondition, + showFolderNotes: (_m = yaml == null ? void 0 : yaml.showFolderNotes) != null ? _m : defaultSettings.showFolderNotes, + disableCollapseIcon: (_n = yaml == null ? void 0 : yaml.disableCollapseIcon) != null ? _n : defaultSettings.disableCollapseIcon, + alwaysCollapse: (_o = yaml == null ? void 0 : yaml.alwaysCollapse) != null ? _o : defaultSettings.alwaysCollapse, + autoSync: (_p = yaml == null ? void 0 : yaml.autoSync) != null ? _p : defaultSettings.autoSync, + allowDragAndDrop: (_q = yaml == null ? void 0 : yaml.allowDragAndDrop) != null ? _q : defaultSettings.allowDragAndDrop, + hideLinkList: (_r = yaml == null ? void 0 : yaml.hideLinkList) != null ? _r : defaultSettings.hideLinkList, + hideFolderOverview: (_s = yaml == null ? void 0 : yaml.hideFolderOverview) != null ? _s : defaultSettings.hideFolderOverview, + useActualLinks: (_t = yaml == null ? void 0 : yaml.useActualLinks) != null ? _t : defaultSettings.useActualLinks, + fmtpIntegration: (_u = yaml == null ? void 0 : yaml.fmtpIntegration) != null ? _u : defaultSettings.fmtpIntegration }; + const customChild = new CustomMarkdownRenderChild(el, this); + ctx.addChild(customChild); } - create(plugin, source, el, ctx) { - var _a; + on(event, listener) { + this.emitter.on(event, listener); + } + off(event, listener) { + this.emitter.off(event, listener); + } + emit(event, data) { + this.emitter.emit(event, data); + } + handleVaultChange(eventType) { + if (this.yaml.autoSync) { + this.emit("vault-change", eventType); + } + } + disconnectListeners() { + this.eventListeners.forEach((unregister) => unregister()); + this.eventListeners = []; + } + registerListeners() { + const plugin = this.plugin; + const handleRename2 = () => this.handleVaultChange("renamed"); + const handleCreate2 = () => this.handleVaultChange("created"); + const handleDelete2 = () => this.handleVaultChange("deleted"); + plugin.app.vault.on("rename", handleRename2); + plugin.app.vault.on("create", handleCreate2); + plugin.app.vault.on("delete", handleDelete2); + this.eventListeners.push(() => plugin.app.vault.off("rename", handleRename2)); + this.eventListeners.push(() => plugin.app.vault.off("create", handleCreate2)); + this.eventListeners.push(() => plugin.app.vault.off("delete", handleDelete2)); + } + async create(plugin, source, el, ctx) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; el.empty(); (_a = el.parentElement) == null ? void 0 : _a.classList.add("folder-overview-container"); + if (this.yaml.hideFolderOverview) { + (_b = el.parentElement) == null ? void 0 : _b.classList.add("fv-hide-overview"); + } + (_c = el.parentElement) == null ? void 0 : _c.addEventListener("contextmenu", (e) => { + this.editOverviewContextMenu(e); + }, { capture: true }); const root = el.createEl("div", { cls: "folder-overview" }); + this.root = root; const titleEl = root.createEl("h1", { cls: "folder-overview-title" }); const ul = root.createEl("ul", { cls: "folder-overview-list" }); + this.listEl = ul; if (this.yaml.includeTypes.length === 0) { return this.addEditButton(root); } let files = []; const sourceFile = plugin.app.vault.getAbstractFileByPath(ctx.sourcePath); - if (!sourceFile) + if (!(sourceFile instanceof import_obsidian31.TFile)) return; - let sourceFolderPath = this.yaml.folderPath || getFolderPathFromString(ctx.sourcePath); - let sourceFolder; - if (sourceFolderPath !== "/") { - if (this.yaml.folderPath === "") { - sourceFolder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); - } else { - sourceFolder = plugin.app.vault.getAbstractFileByPath(this.yaml.folderPath); - } - } - if (this.yaml.showTitle) { - if (sourceFolder && sourceFolderPath !== "/") { - titleEl.innerText = this.yaml.title.replace("{{folderName}}", sourceFolder.name); - } else if (sourceFolderPath == "/") { - titleEl.innerText = this.yaml.title.replace("{{folderName}}", "Vault"); - } else { - titleEl.innerText = this.yaml.title.replace("{{folderName}}", ""); - } - } - if (!sourceFolder && (sourceFolderPath !== "/" && sourceFolderPath !== "")) { - return new import_obsidian20.Notice("Folder overview: Couldn't find the folder"); - } - if (!sourceFolder && sourceFolderPath == "") { + let sourceFolderPath = this.yaml.folderPath.trim() || getFolderPathFromString(ctx.sourcePath); + if (!ctx.sourcePath.includes("/")) { sourceFolderPath = "/"; } - if (sourceFolderPath == "/") { + this.registerListeners(); + const sourceFolder = this.sourceFolder; + if (this.yaml.showTitle) { + const variables = { + "folderName": (sourceFolder == null ? void 0 : sourceFolder.path) === "/" || sourceFolderPath === "/" ? "Vault" : (_d = sourceFolder == null ? void 0 : sourceFolder.name) != null ? _d : "", + "folderPath": (_f = (_e = sourceFolder == null ? void 0 : sourceFolder.path) != null ? _e : sourceFolderPath) != null ? _f : "", + "filePath": sourceFile.path, + "fileName": sourceFile instanceof import_obsidian31.TFile ? sourceFile.basename : "", + "fmtpFileName": (_h = await ((_g = this.plugin.fmtpHandler) == null ? void 0 : _g.getNewFileName(sourceFile))) != null ? _h : "" + }; + const fileCache = this.plugin.app.metadataCache.getFileCache(sourceFile); + const frontmatter = (_i = fileCache == null ? void 0 : fileCache.frontmatter) != null ? _i : {}; + const propertyRegex = /\{\{properties\.([\w-]+)\}\}/g; + let title = this.yaml.title; + title = title.replace(propertyRegex, (_, prop) => { + const value = frontmatter[prop]; + return value !== void 0 ? String(value) : ""; + }); + title = title.replace(/\{\{(\w+)\}\}/g, (_, key) => { + var _a2; + return (_a2 = variables[key]) != null ? _a2 : ""; + }); + titleEl.innerText = title; + } + if (!sourceFolder && (sourceFolderPath !== "/" && sourceFolderPath !== "")) { + return new import_obsidian31.Notice("Folder overview: Couldn't find the folder"); + } + if (!sourceFolder && sourceFolderPath === "") { + sourceFolderPath = "/"; + } + if (!(sourceFolder instanceof import_obsidian31.TFolder) && sourceFolderPath !== "/") { + return; + } + if ((sourceFolder == null ? void 0 : sourceFolder.path) === "/") { const rootFiles = []; plugin.app.vault.getAllLoadedFiles().filter((f) => { var _a2; @@ -3560,10 +5255,10 @@ var FolderOverview = class { } }); files = rootFiles; - } else if (sourceFolder) { + } else if (sourceFolder instanceof import_obsidian31.TFolder) { files = sourceFolder.children; } - files = this.filterFiles(files, plugin, sourceFolderPath, this.yaml.depth, this.pathBlacklist); + files = (await this.filterFiles(files, plugin, sourceFolderPath, this.yaml.depth, this.pathBlacklist)).filter((file) => file !== null); if (!this.yaml.includeTypes.includes("folder")) { files = this.getAllFiles(files, sourceFolderPath, this.yaml.depth); } @@ -3576,7 +5271,7 @@ var FolderOverview = class { files.forEach(async (file) => { const gridItem = grid.createEl("div", { cls: "folder-overview-grid-item" }); const gridArticle = gridItem.createEl("article", { cls: "folder-overview-grid-item-article" }); - if (file instanceof import_obsidian20.TFile) { + if (file instanceof import_obsidian31.TFile) { const fileContent = await plugin.app.vault.read(file); const descriptionEl = gridArticle.createEl("p", { cls: "folder-overview-grid-item-description" }); let description = fileContent.split("\n")[0]; @@ -3588,56 +5283,111 @@ var FolderOverview = class { const title = link.createEl("h1", { cls: "folder-overview-grid-item-link-title" }); title.innerText = file.name.replace(".md", "").replace(".canvas", ""); link.href = file.path; - } else if (file instanceof import_obsidian20.TFolder) { + } else if (file instanceof import_obsidian31.TFolder) { const folderItem = gridArticle.createEl("div", { cls: "folder-overview-grid-item-folder" }); const folderName = folderItem.createEl("h1", { cls: "folder-overview-grid-item-folder-name" }); folderName.innerText = file.name; } }); } else if (this.yaml.style === "list") { - const folders = this.sortFiles(files.filter((f) => f instanceof import_obsidian20.TFolder)); - files = this.sortFiles(files.filter((f) => f instanceof import_obsidian20.TFile)); - folders.forEach((file) => { - if (file instanceof import_obsidian20.TFolder) { - const folderItem = this.addFolderList(plugin, ul, this.pathBlacklist, file); - if (!folderItem) { - return; - } - this.goThroughFolders(plugin, folderItem, file, this.yaml.depth, sourceFolderPath, ctx, this.yaml, this.pathBlacklist, this.yaml.includeTypes, this.yaml.disableFileTag); - } - }); - files.forEach((file) => { - if (file instanceof import_obsidian20.TFile) { - this.addFileList(plugin, ul, this.pathBlacklist, file, this.yaml.includeTypes, this.yaml.disableFileTag); - } - }); + renderListOverview(plugin, ctx, root, this.yaml, this.pathBlacklist, this); } else if (this.yaml.style === "explorer") { - if (this.plugin.app.workspace.layoutReady) { - this.cloneFileExplorerView(plugin, ctx, root, this.yaml, this.pathBlacklist); - } else { - this.plugin.app.workspace.onLayoutReady(() => { - this.cloneFileExplorerView(plugin, ctx, root, this.yaml, this.pathBlacklist); - }); - } + const fileExplorerOverview = new FileExplorerOverview(plugin, ctx, root, this.yaml, this.pathBlacklist, this); + this.plugin.app.workspace.onLayoutReady(async () => { + await fileExplorerOverview.renderFileExplorer(); + }); } - const overviewListEl = el.childNodes[0].childNodes[1]; - if (overviewListEl && overviewListEl.childNodes.length === 0) { - if (this.yaml.style === "explorer") { - const overview = el.childNodes[0]; - if (!overview.childNodes[2]) { - if (this.plugin.app.workspace.layoutReady) { - return this.addEditButton(root); + if (this.yaml.useActualLinks) { + setTimeout(() => { + this.updateLinkList(files); + }, 1e3); + } else { + this.removeLinkList(); + } + this.addEditButton(root); + } + updateLinkList(files = []) { + this.buildLinkList(files).then((fileLinks) => { + this.plugin.app.vault.process(this.sourceFile, (text) => { + const lines = text.split("\n"); + const linkListStart = ``; + const linkListEnd = ``; + const startIdx = lines.findIndex((l) => l.trim() === linkListStart); + const endIdx = lines.findIndex((l) => l.trim() === linkListEnd); + const linkListExists = startIdx !== -1 && endIdx !== -1; + const isInvalidLinkList = endIdx < startIdx; + if (!linkListExists || isInvalidLinkList) { + return text; + } + lines.splice(startIdx, endIdx - startIdx + 1); + const newBlock = [ + linkListStart, + ...fileLinks, + linkListEnd + ]; + lines.splice(startIdx, 0, ...newBlock); + return lines.join("\n"); + }); + }); + } + removeLinkList() { + this.plugin.app.vault.process(this.sourceFile, (text) => { + const lines = text.split("\n"); + const linkListStart = ``; + const linkListEnd = ``; + const startIdx = lines.findIndex((l) => l.trim() === linkListStart); + const endIdx = lines.findIndex((l) => l.trim() === linkListEnd); + const linkListExists = startIdx !== -1 && endIdx !== -1; + const isInvalidLinkList = endIdx < startIdx; + if (!linkListExists || isInvalidLinkList) { + return text; + } + lines.splice(startIdx, endIdx - startIdx + 1); + return lines.join("\n"); + }); + } + async buildLinkList(items, indent = 0) { + const result = []; + const filtered = (await this.filterFiles(items, this.plugin, this.yaml.folderPath, this.yaml.depth, this.pathBlacklist)).filter((file) => file !== null); + const sorted = this.sortFiles(filtered); + for (const item of sorted) { + const indentStr = " ".repeat(indent); + if (item instanceof import_obsidian31.TFile) { + if (this.yaml.hideLinkList) { + result.push(`${indentStr}- [[${item.path}|${item.basename}]] `); + } else { + result.push(`${indentStr}- [[${item.path}|${item.basename}]]`); + } + } else if (item instanceof import_obsidian31.TFolder) { + const isFirstLevelSub = item.path.split("/").length === this.yaml.folderPath.split("/").length + 1; + if (!this.yaml.showEmptyFolders && item.children.length === 0 && !this.yaml.onlyIncludeSubfolders) { + continue; + } else if (this.yaml.onlyIncludeSubfolders && !isFirstLevelSub && item.children.length === 0) { + continue; + } + let line = `${indentStr}- ${item.name}`; + if (this.yaml.hideLinkList) { + line += ' '; + } + let folderNote = null; + if (this.plugin instanceof FolderNotesPlugin) { + folderNote = getFolderNote(this.plugin, item.path); + } + if (folderNote) { + line = `${indentStr}- [[${folderNote.path}|${item.name}]]`; + if (this.yaml.hideLinkList) { + line += ' '; } } - } else { - if (this.plugin.app.workspace.layoutReady) { - return this.addEditButton(root); + result.push(line); + const children = item.children.filter((child) => !(child instanceof import_obsidian31.TFile && folderNote && child.path === folderNote.path)); + if (children.length > 0) { + const childLinks = await this.buildLinkList(children, indent + 1); + result.push(...childLinks); } } } - if (this.yaml.includeTypes.length > 1 && (!this.yaml.showEmptyFolders || this.yaml.onlyIncludeSubfolders) && this.yaml.style === "list") { - this.removeEmptyFolders(ul, 1, this.yaml); - } + return result; } addEditButton(root) { const editButton = root.createEl("button", { cls: "folder-overview-edit-button" }); @@ -3646,368 +5396,68 @@ var FolderOverview = class { e.stopImmediatePropagation(); e.preventDefault(); e.stopPropagation(); - new FolderOverviewSettings(this.plugin.app, this.plugin, this.yaml, this.ctx, this.el).open(); + new FolderOverviewSettings(this.plugin.app, this.plugin, this.yaml, this.ctx, this.el, this.plugin.settings).open(); }, { capture: true }); } - cloneFileExplorerView(plugin, ctx, root, yaml, pathBlacklist) { - const folder = getEl(this.yaml.folderPath); - let folderElement = folder == null ? void 0 : folder.parentElement; - let tFolder = plugin.app.vault.getAbstractFileByPath(this.yaml.folderPath); - if (!tFolder && yaml.folderPath.trim() == "") { - tFolder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(ctx.sourcePath)); - } - if (!folderElement && yaml.folderPath.trim() !== "") - return; - folderElement = document.querySelector("div.nav-files-container"); - if (!folderElement) - return; - const newFolderElement = folderElement.cloneNode(true); - newFolderElement.querySelectorAll("div.nav-folder-title ").forEach((el) => { - var _a; - const folder2 = plugin.app.vault.getAbstractFileByPath(el.getAttribute("data-path") || ""); - if (!(folder2 instanceof import_obsidian20.TFolder)) - return; - if (this.yaml.storeFolderCondition) { - if (folder2.collapsed) { - el.classList.add("is-collapsed"); - } else { - el.classList.remove("is-collapsed"); - } - } else { - if ((_a = el.parentElement) == null ? void 0 : _a.classList.contains("is-collapsed")) { - folder2.collapsed = true; - } else { - folder2.collapsed = false; - } - } - if (el.classList.contains("has-folder-note")) { - const folderNote = getFolderNote(plugin, folder2.path); - if (folderNote) { - this.pathBlacklist.push(folderNote.path); - } - } - }); - if (tFolder instanceof import_obsidian20.TFolder) { - this.addFiles(tFolder.children, root); - } else if (yaml.folderPath.trim() === "/") { - const rootFiles = []; - plugin.app.vault.getAllLoadedFiles().filter((f) => f instanceof import_obsidian20.TFolder).forEach((file) => { - if (!file.path.includes("/")) { - rootFiles.push(file); - } - }); - this.addFiles(rootFiles, root); - } - newFolderElement.querySelectorAll("div.tree-item-icon").forEach((el) => { - if (el instanceof HTMLElement) { - el.onclick = () => { - var _a; - const path = (_a = el.parentElement) == null ? void 0 : _a.getAttribute("data-path"); - if (!path) - return; - const folder2 = plugin.app.vault.getAbstractFileByPath(path); - this.handleCollapseClick(el, plugin, yaml, pathBlacklist, this.source, folder2); - }; - } - }); - } - async addFiles(files, childrenElement) { - const folders = this.sortFiles(files.filter((file) => file instanceof import_obsidian20.TFolder)); - const filesWithoutFolders = this.sortFiles(files.filter((file) => !(file instanceof import_obsidian20.TFolder))); - for (const child of folders) { - if (child instanceof import_obsidian20.TFolder) { - const folderNote = getFolderNote(this.plugin, child.path); - if (folderNote) { - this.pathBlacklist.push(folderNote.path); - } - const excludedFolder = getExcludedFolder(this.plugin, child.path); - if (excludedFolder == null ? void 0 : excludedFolder.excludeFromFolderOverview) { - continue; - } - const svg = ''; - const folderElement = childrenElement.createDiv({ - cls: "tree-item nav-folder" - }); - const folderTitle = folderElement.createDiv({ - cls: "tree-item-self is-clickable nav-folder-title", - attr: { - "data-path": child.path, - "draggable": "true" - } - }); - if (!child.collapsed) { - folderTitle.classList.remove("is-collapsed"); - const childrenElement2 = folderElement == null ? void 0 : folderElement.createDiv({ cls: "tree-item-children nav-folder-children" }); - this.addFiles(child.children, childrenElement2); - } else { - folderTitle.classList.add("is-collapsed"); - } - if (folderNote) { - folderTitle.classList.add("has-folder-note"); - } - if (folderNote && child.children.length === 1 && this.yaml.disableCollapseIcon) { - folderTitle.classList.add("fn-has-no-files"); - } - const collapseIcon = folderTitle.createDiv({ - cls: "tree-item-icon collapse-icon nav-folder-collapse-indicator fn-folder-overview-collapse-icon" - }); - if (child.collapsed) { - collapseIcon.classList.add("is-collapsed"); - } - collapseIcon.innerHTML = svg; - collapseIcon.onclick = () => { - this.handleCollapseClick(collapseIcon, this.plugin, this.yaml, this.pathBlacklist, this.source, child); - }; - folderTitle.createDiv({ - cls: "tree-item-inner nav-folder-title-content", - text: child.name - }); - } - } - for (const child of filesWithoutFolders) { - if (child instanceof import_obsidian20.TFile) { - if (this.pathBlacklist.includes(child.path) && !this.yaml.showFolderNotes) { - continue; - } - const extension = child.extension.toLowerCase() == "md" ? "markdown" : child.extension.toLowerCase(); - const includeTypes = this.yaml.includeTypes; - if (includeTypes.length > 0 && !includeTypes.includes("all")) { - if ((extension === "md" || extension === "markdown") && !includeTypes.includes("markdown")) - continue; - if (extension === "canvas" && !includeTypes.includes("canvas")) - continue; - if (extension === "pdf" && !includeTypes.includes("pdf")) - continue; - const imageTypes = ["jpg", "jpeg", "png", "gif", "svg", "webp"]; - if (imageTypes.includes(extension) && !includeTypes.includes("image")) - continue; - const videoTypes = ["mp4", "webm", "ogv", "mov", "mkv"]; - if (videoTypes.includes(extension) && !includeTypes.includes("video")) - continue; - const audioTypes = ["mp3", "wav", "m4a", "3gp", "flac", "ogg", "oga", "opus"]; - if (audioTypes.includes(extension) && includeTypes.includes("audio")) - continue; - const allTypes = ["markdown", "md", "canvas", "pdf", ...imageTypes, ...videoTypes, ...audioTypes]; - if (!allTypes.includes(extension) && !includeTypes.includes("other")) - continue; - } - const fileElement = childrenElement.createDiv({ - cls: "tree-item nav-file" - }); - const fileTitle = fileElement.createDiv({ - cls: "tree-item-self is-clickable nav-file-title pointer-cursor", - attr: { - "data-path": child.path, - "draggable": "true" - } - }); - fileTitle.onclick = () => { - this.plugin.app.workspace.openLinkText(child.path, child.path, true); - }; - fileTitle.createDiv({ - cls: "tree-item-inner nav-file-title-content", - text: child.basename - }); - if (child.extension !== "md") { - fileTitle.createDiv({ - cls: "nav-file-tag", - text: child.extension - }); - } - } - } - } - handleCollapseClick(el, plugin, yaml, pathBlacklist, sourcePath, folder) { - var _a, _b, _c, _d; - el.classList.toggle("is-collapsed"); - if (el.classList.contains("is-collapsed")) { - if (!(folder instanceof import_obsidian20.TFolder)) - return; - folder.collapsed = true; - (_c = (_b = (_a = el.parentElement) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.childNodes[1]) == null ? void 0 : _c.remove(); - } else { - if (!(folder instanceof import_obsidian20.TFolder)) - return; - folder.collapsed = false; - const folderElement = (_d = el.parentElement) == null ? void 0 : _d.parentElement; - if (!folderElement) - return; - const childrenElement = folderElement.createDiv({ cls: "tree-item-children nav-folder-children" }); - let files = this.sortFiles(folder.children); - files = this.filterFiles(files, plugin, folder.path, this.yaml.depth || 1, pathBlacklist); - this.addFiles(files, childrenElement); - } - } - goThroughFolders(plugin, list, folder, depth, sourceFolderPath, ctx, yaml, pathBlacklist, includeTypes, disableFileTag) { - if (sourceFolderPath === "") { - depth--; - } - let files = this.filterFiles(folder.children, plugin, sourceFolderPath, depth, pathBlacklist); - files = this.sortFiles(files.filter((file) => !(file instanceof import_obsidian20.TFolder))); - if (this.yaml.sortByAsc) { - files = files.reverse(); - } - const folders = this.sortFiles(files.filter((file) => file instanceof import_obsidian20.TFolder)); - const ul = list.createEl("ul", { cls: "folder-overview-list" }); - folders.forEach((file) => { - if (file instanceof import_obsidian20.TFolder) { - const folderItem = this.addFolderList(plugin, ul, pathBlacklist, file); - if (!folderItem) - return; - this.goThroughFolders(plugin, folderItem, file, depth, sourceFolderPath, ctx, yaml, pathBlacklist, includeTypes, disableFileTag); - } - }); - files.forEach((file) => { - if (file instanceof import_obsidian20.TFile) { - this.addFileList(plugin, ul, pathBlacklist, file, includeTypes, disableFileTag); - } - }); - } - filterFiles(files, plugin, sourceFolderPath, depth, pathBlacklist) { - return files.filter((file) => { - if (pathBlacklist.includes(file.path) && !this.yaml.showFolderNotes) { - return false; - } + async filterFiles(files, plugin, sourceFolderPath, depth, pathBlacklist) { + const filteredFiles = await Promise.all(files.map(async (file) => { + var _a, _b; const folderPath = getFolderPathFromString(file.path); - if (!folderPath.startsWith(sourceFolderPath) && sourceFolderPath !== "/") { - return false; + const dontShowFolderNote = pathBlacklist.includes(file.path); + const isSubfolder = sourceFolderPath === "/" || folderPath.startsWith(sourceFolderPath); + const isSourceFile = file.path === this.sourceFilePath; + let isExcludedFromOverview = false; + if (plugin instanceof FolderNotesPlugin) { + isExcludedFromOverview = (_b = (_a = getExcludedFolder(plugin, file.path, true)) == null ? void 0 : _a.excludeFromFolderOverview) != null ? _b : false; } - if (file.path === this.sourceFilePath) { - return false; + if (dontShowFolderNote && !this.yaml.showFolderNotes || !isSubfolder || isSourceFile || isExcludedFromOverview) { + return null; } - const excludedFolder = getExcludedFolder(plugin, file.path); - if (excludedFolder == null ? void 0 : excludedFolder.excludeFromFolderOverview) { - return false; - } - if (file.path.split("/").length - sourceFolderPath.split("/").length - 1 < depth) { - return true; - } - }); + const fileDepth = file.path.split("/").length - (sourceFolderPath === "/" ? 0 : sourceFolderPath.split("/").length); + return fileDepth <= depth ? file : null; + })); + return filteredFiles.filter((file) => file !== null); } sortFiles(files) { + var _a, _b; const yaml = this.yaml; if (!(yaml == null ? void 0 : yaml.sortBy)) { - yaml.sortBy = this.plugin.settings.defaultOverview.sortBy || "name"; - yaml.sortByAsc = this.plugin.settings.defaultOverview.sortByAsc || false; + yaml.sortBy = (_a = this.defaultSettings.sortBy) != null ? _a : "name"; + yaml.sortByAsc = (_b = this.defaultSettings.sortByAsc) != null ? _b : false; } + const collator = new Intl.Collator(void 0, { numeric: true, sensitivity: "base" }); files.sort((a, b) => { - if (a instanceof import_obsidian20.TFolder && !(b instanceof import_obsidian20.TFolder)) { + if (a instanceof import_obsidian31.TFolder && !(b instanceof import_obsidian31.TFolder)) { return -1; } - if (!(a instanceof import_obsidian20.TFolder) && b instanceof import_obsidian20.TFolder) { + if (!(a instanceof import_obsidian31.TFolder) && b instanceof import_obsidian31.TFolder) { return 1; } - if (a instanceof import_obsidian20.TFolder && b instanceof import_obsidian20.TFolder) { - if (a.name.localeCompare(b.name) < 0) { - return -1; - } else if (a.name.localeCompare(b.name) > 0) { - return 1; - } + if (a instanceof import_obsidian31.TFolder && b instanceof import_obsidian31.TFolder) { + return yaml.sortByAsc ? collator.compare(a.name, b.name) : collator.compare(b.name, a.name); } - if (!(a instanceof import_obsidian20.TFile) || !(b instanceof import_obsidian20.TFile)) { - return -1; - } - if (yaml.sortBy === "created") { - if (a.stat.ctime > b.stat.ctime) { - return -1; - } else if (a.stat.ctime < b.stat.ctime) { - return 1; - } - } else if (yaml.sortBy === "modified") { - if (a.stat.mtime > b.stat.mtime) { - return -1; - } else if (a.stat.mtime < b.stat.mtime) { - return 1; - } - } else if (yaml.sortBy === "name") { - if (a.basename.localeCompare(b.basename) < 0) { - return -1; - } else if (a.basename.localeCompare(b.basename) > 0) { - return 1; + if (a instanceof import_obsidian31.TFile && b instanceof import_obsidian31.TFile) { + if (yaml.sortBy === "created") { + return yaml.sortByAsc ? a.stat.ctime - b.stat.ctime : b.stat.ctime - a.stat.ctime; + } else if (yaml.sortBy === "modified") { + return yaml.sortByAsc ? a.stat.mtime - b.stat.mtime : b.stat.mtime - a.stat.mtime; + } else if (yaml.sortBy === "name") { + return yaml.sortByAsc ? collator.compare(a.basename, b.basename) : collator.compare(b.basename, a.basename); } } return 0; }); - if (!(yaml == null ? void 0 : yaml.sortByAsc)) { - files = files.reverse(); - } return files; } - removeEmptyFolders(ul, depth, yaml) { - const childrensToRemove = []; - ul.childNodes.forEach((el) => { - var _a, _b; - if (((_a = el.childNodes[0]) == null ? void 0 : _a.classList) && ((_b = el.childNodes[0]) == null ? void 0 : _b.classList.contains("internal-link"))) { - return; - } - const childrens = el.querySelector("ul"); - if (!childrens || childrens === null) { - return; - } - if (childrens && !(childrens == null ? void 0 : childrens.hasChildNodes()) && !(el instanceof HTMLUListElement)) { - childrensToRemove.push(el); - } else if (el instanceof HTMLUListElement || el instanceof HTMLLIElement) { - this.removeEmptyFolders(el, depth + 1, yaml); - } - }); - childrensToRemove.forEach((el) => { - if (yaml.onlyIncludeSubfolders && depth === 1) { - return; - } - el.remove(); - }); - } - addFolderList(plugin, list, pathBlacklist, folder) { - const folderItem = list.createEl("li", { cls: "folder-overview-list folder-list" }); - const folderNote = getFolderNote(plugin, folder.path); - if (folderNote instanceof import_obsidian20.TFile) { - const folderNoteLink = folderItem.createEl("a", { cls: "folder-overview-list-item folder-name-item internal-link", href: folderNote.path }); - folderNoteLink.innerText = folder.name; - pathBlacklist.push(folderNote.path); - } else { - const folderName = folderItem.createEl("span", { cls: "folder-overview-list-item folder-name-item" }); - folderName.innerText = folder.name; - } - return folderItem; - } - addFileList(plugin, list, pathBlacklist, file, includeTypes, disableFileTag) { - if (includeTypes.length > 0 && !includeTypes.includes("all")) { - if (file.extension === "md" && !includeTypes.includes("markdown")) - return; - if (file.extension === "canvas" && !includeTypes.includes("canvas")) - return; - if (file.extension === "pdf" && !includeTypes.includes("pdf")) - return; - const imageTypes = ["jpg", "jpeg", "png", "gif", "svg", "webp"]; - if (imageTypes.includes(file.extension) && !includeTypes.includes("image")) - return; - const videoTypes = ["mp4", "webm", "ogv", "mov", "mkv"]; - if (videoTypes.includes(file.extension) && !includeTypes.includes("video")) - return; - const audioTypes = ["mp3", "wav", "m4a", "3gp", "flac", "ogg", "oga", "opus"]; - if (audioTypes.includes(file.extension) && includeTypes.includes("audio")) - return; - const allTypes = ["md", "canvas", "pdf", ...imageTypes, ...videoTypes, ...audioTypes]; - if (!allTypes.includes(file.extension) && !includeTypes.includes("other")) - return; - } - if (!this.yaml.showFolderNotes) { - if (pathBlacklist.includes(file.path)) - return; - } - const listItem = list.createEl("li", { cls: "folder-overview-list file-link" }); - const nameItem = listItem.createEl("div", { cls: "folder-overview-list-item" }); - const link = nameItem.createEl("a", { cls: "internal-link", href: file.path }); - link.innerText = file.basename; - if (file.extension !== "md" && !disableFileTag) { - nameItem.createDiv({ cls: "nav-file-tag" }).innerText = file.extension; - } - } getAllFiles(files, sourceFolderPath, depth) { const allFiles = []; + const getDepth = (filePath) => { + return filePath.split("/").length - sourceFolderPath.split("/").length; + }; files.forEach((file) => { - if (file instanceof import_obsidian20.TFolder) { - if (file.path.split("/").length - sourceFolderPath.split("/").length - 1 < depth - 1) { + const fileDepth = getDepth(file.path); + if (file instanceof import_obsidian31.TFolder) { + if (fileDepth < depth) { allFiles.push(...this.getAllFiles(file.children, sourceFolderPath, depth)); } } else { @@ -4016,12 +5466,92 @@ var FolderOverview = class { }); return allFiles; } + fileMenu(file, e) { + const plugin = this.plugin; + const fileMenu = new import_obsidian31.Menu(); + fileMenu.addItem((item) => { + item.setTitle("Edit folder overview"); + item.setIcon("pencil"); + item.onClick(async () => { + new FolderOverviewSettings(plugin.app, plugin, this.yaml, this.ctx, this.el, plugin.settings).open(); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((item) => { + item.setTitle(window.i18next.t("plugins.file-explorer.menu-opt-rename")); + item.setIcon("pencil"); + item.onClick(async () => { + plugin.app.fileManager.promptForFileRename(file); + }); + }); + fileMenu.addItem((item) => { + item.setTitle(window.i18next.t("plugins.file-explorer.menu-opt-delete")); + item.setIcon("trash"); + item.dom.addClass("is-warning"); + item.dom.setAttribute("data-section", "danger"); + item.onClick(() => { + plugin.app.fileManager.promptForDeletion(file); + }); + }); + fileMenu.addSeparator(); + plugin.app.workspace.trigger("file-menu", fileMenu, file, "folder-overview-file-context-menu", null); + fileMenu.showAtPosition({ x: e.pageX, y: e.pageY }); + } + folderMenu(folder, e) { + const plugin = this.plugin; + const folderMenu = new import_obsidian31.Menu(); + folderMenu.addItem((item) => { + item.setTitle("Edit folder overview"); + item.setIcon("pencil"); + item.onClick(async () => { + new FolderOverviewSettings(plugin.app, plugin, this.yaml, this.ctx, this.el, plugin.settings).open(); + }); + }); + folderMenu.addSeparator(); + folderMenu.addItem((item) => { + item.setTitle("Rename"); + item.setIcon("pencil"); + item.onClick(async () => { + if (plugin instanceof FolderNotesPlugin) { + new NewFolderNameModal(plugin.app, plugin, folder).open(); + } + }); + }); + folderMenu.addItem((item) => { + item.setTitle("Delete"); + item.setIcon("trash"); + item.dom.addClass("is-warning"); + item.dom.setAttribute("data-section", "danger"); + item.onClick(() => { + plugin.app.fileManager.promptForFolderDeletion(folder); + }); + }); + folderMenu.addSeparator(); + plugin.app.workspace.trigger("file-menu", folderMenu, folder, "folder-overview-folder-context-menu", null); + folderMenu.showAtPosition({ x: e.pageX, y: e.pageY }); + } + editOverviewContextMenu(e) { + const plugin = this.plugin; + const menu = new import_obsidian31.Menu(); + menu.addItem((item) => { + item.setTitle("Edit folder overview"); + item.setIcon("pencil"); + item.onClick(async () => { + new FolderOverviewSettings(plugin.app, plugin, this.yaml, this.ctx, this.el, plugin.settings).open(); + }); + }); + menu.showAtPosition({ x: e.pageX, y: e.pageY }); + } + getElFromOverview(path) { + const el = this.listEl.querySelector(`[data-path='${CSS.escape(path)}']`); + return el; + } }; -async function updateYaml(plugin, ctx, el, yaml) { +async function updateYaml(plugin, ctx, el, yaml, addLinkList) { const file = plugin.app.vault.getAbstractFileByPath(ctx.sourcePath); - if (!(file instanceof import_obsidian20.TFile)) + if (!(file instanceof import_obsidian31.TFile)) return; - let stringYaml = (0, import_obsidian20.stringifyYaml)(yaml); + let stringYaml = (0, import_obsidian31.stringifyYaml)(yaml); await plugin.app.vault.process(file, (text) => { const info = ctx.getSectionInfo(el); if (stringYaml[stringYaml.length - 1] !== "\n") { @@ -4034,12 +5564,20 @@ async function updateYaml(plugin, ctx, el, yaml) { return text; const lineLength = lineEnd - lineStart; const lines = text.split("\n"); - lines.splice(lineStart, lineLength + 1, `\`\`\`folder-overview -${stringYaml}\`\`\``); + let overviewBlock2 = `\`\`\`folder-overview +${stringYaml}\`\`\``; + overviewBlock2 += addLinkList ? ` + +` : ""; + lines.splice(lineStart, lineLength + 1, overviewBlock2); return lines.join("\n"); } - return `\`\`\`folder-overview + let overviewBlock = `\`\`\`folder-overview ${stringYaml}\`\`\``; + overviewBlock += addLinkList ? ` + +` : ""; + return overviewBlock; }); } function getCodeBlockEndLine(text, startLine, count = 1) { @@ -4057,133 +5595,355 @@ function getCodeBlockEndLine(text, startLine, count = 1) { } return line; } - -// src/folderOverview/ModalSettings.ts -var FolderOverviewSettings = class extends import_obsidian21.Modal { - constructor(app2, plugin, yaml, ctx, el, defaultSettings) { - super(app2); - this.plugin = plugin; - this.app = app2; - if (!yaml) { - this.yaml = this.plugin.settings.defaultOverview; - } else if (ctx) { - const includeTypes = (yaml == null ? void 0 : yaml.includeTypes) || plugin.settings.defaultOverview.includeTypes || ["folder", "markdown"]; - this.yaml = { - id: (yaml == null ? void 0 : yaml.id) || crypto.randomUUID(), - folderPath: (yaml == null ? void 0 : yaml.folderPath) === void 0 || (yaml == null ? void 0 : yaml.folderPath) === null ? getFolderPathFromString(ctx.sourcePath) : yaml == null ? void 0 : yaml.folderPath, - title: (yaml == null ? void 0 : yaml.title) || plugin.settings.defaultOverview.title, - showTitle: (yaml == null ? void 0 : yaml.showTitle) === void 0 || (yaml == null ? void 0 : yaml.showTitle) === null ? plugin.settings.defaultOverview.showTitle : yaml == null ? void 0 : yaml.showTitle, - depth: (yaml == null ? void 0 : yaml.depth) || plugin.settings.defaultOverview.depth, - style: (yaml == null ? void 0 : yaml.style) || "list", - includeTypes: includeTypes.map((type) => type.toLowerCase()), - disableFileTag: (yaml == null ? void 0 : yaml.disableFileTag) === void 0 || (yaml == null ? void 0 : yaml.disableFileTag) === null ? plugin.settings.defaultOverview.disableFileTag : yaml == null ? void 0 : yaml.disableFileTag, - sortBy: (yaml == null ? void 0 : yaml.sortBy) || plugin.settings.defaultOverview.sortBy, - sortByAsc: (yaml == null ? void 0 : yaml.sortByAsc) === void 0 || (yaml == null ? void 0 : yaml.sortByAsc) === null ? plugin.settings.defaultOverview.sortByAsc : yaml == null ? void 0 : yaml.sortByAsc, - showEmptyFolders: (yaml == null ? void 0 : yaml.showEmptyFolders) === void 0 || (yaml == null ? void 0 : yaml.showEmptyFolders) === null ? plugin.settings.defaultOverview.showEmptyFolders : yaml == null ? void 0 : yaml.showEmptyFolders, - onlyIncludeSubfolders: (yaml == null ? void 0 : yaml.onlyIncludeSubfolders) === void 0 || (yaml == null ? void 0 : yaml.onlyIncludeSubfolders) === null ? plugin.settings.defaultOverview.onlyIncludeSubfolders : yaml == null ? void 0 : yaml.onlyIncludeSubfolders, - storeFolderCondition: (yaml == null ? void 0 : yaml.storeFolderCondition) === void 0 || (yaml == null ? void 0 : yaml.storeFolderCondition) === null ? plugin.settings.defaultOverview.storeFolderCondition : yaml == null ? void 0 : yaml.storeFolderCondition, - showFolderNotes: (yaml == null ? void 0 : yaml.showFolderNotes) === void 0 || (yaml == null ? void 0 : yaml.showFolderNotes) === null ? plugin.settings.defaultOverview.showFolderNotes : yaml == null ? void 0 : yaml.showFolderNotes, - disableCollapseIcon: (yaml == null ? void 0 : yaml.disableCollapseIcon) === void 0 || (yaml == null ? void 0 : yaml.disableCollapseIcon) === null ? plugin.settings.defaultOverview.disableCollapseIcon : yaml == null ? void 0 : yaml.disableCollapseIcon - }; - } - if (ctx) { - this.ctx = ctx; - } - if (el) { - this.el = el; - } - if (defaultSettings) { - this.yaml = this.plugin.settings.defaultOverview; - this.defaultSettings = true; - return; - } - updateYaml(this.plugin, this.ctx, this.el, this.yaml); +async function getOverviews(plugin, file) { + if (!file) + return []; + const overviews = []; + const content = await plugin.app.vault.read(file); + if (!content) + return overviews; + const yamlBlocks = content.match(/```folder-overview\n([\s\S]*?)```/g); + if (!yamlBlocks) + return overviews; + for (const block of yamlBlocks) { + const yaml = (0, import_obsidian31.parseYaml)(block.replace("```folder-overview\n", "").replace("```", "")); + if (!yaml) + continue; + overviews.push(yaml); } - onOpen() { - this.display(); + return overviews; +} +async function updateYamlById(plugin, overviewId, file, newYaml, addLinkList) { + await plugin.app.vault.process(file, (text) => { + const yamlBlocks = text.match(/```folder-overview\n([\s\S]*?)```/g); + if (!yamlBlocks) + return text; + for (const block of yamlBlocks) { + const yaml = (0, import_obsidian31.parseYaml)(block.replace("```folder-overview\n", "").replace("```", "")); + if (!yaml) + continue; + if (yaml.id === overviewId) { + let stringYaml = (0, import_obsidian31.stringifyYaml)(newYaml); + if (stringYaml[stringYaml.length - 1] !== "\n") { + stringYaml += "\n"; + } + let newBlock = `\`\`\`folder-overview +${stringYaml}\`\`\``; + if (addLinkList) { + newBlock += ` + +`; + } + text = text.replace(block, newBlock); + } + } + return text; + }); +} +function parseOverviewTitle(overview, plugin, folder, sourceFile) { + var _a, _b, _c, _d, _e; + const sourceFolderPath = overview.folderPath.trim(); + let title = overview.title; + const variables = { + "folderName": (folder == null ? void 0 : folder.path) === "/" || sourceFolderPath === "/" ? "Vault" : (_a = folder == null ? void 0 : folder.name) != null ? _a : "", + "folderPath": (_c = (_b = folder == null ? void 0 : folder.path) != null ? _b : sourceFolderPath) != null ? _c : "", + "filePath": (_d = sourceFile == null ? void 0 : sourceFile.path) != null ? _d : "", + "fileName": sourceFile instanceof import_obsidian31.TFile ? sourceFile.basename : "" + }; + if (sourceFile instanceof import_obsidian31.TFile) { + const fileCache = plugin.app.metadataCache.getFileCache(sourceFile); + const frontmatter = (_e = fileCache == null ? void 0 : fileCache.frontmatter) != null ? _e : {}; + const propertyRegex = /\{\{properties\.([\w-]+)\}\}/g; + title = title.replace(propertyRegex, (_, prop) => { + const value = frontmatter[prop]; + return value !== void 0 ? String(value) : ""; + }); + title = title.replace(/\{\{(\w+)\}\}/g, (_, key) => { + var _a2; + return (_a2 = variables[key]) != null ? _a2 : ""; + }); + } + return title; +} +var CustomMarkdownRenderChild = class extends import_obsidian31.MarkdownRenderChild { + constructor(el, folderOverview) { + super(el); + this.folderOverview = folderOverview; + } + onunload() { + this.folderOverview.disconnectListeners(); + } +}; + +// src/obsidian-folder-overview/src/suggesters/FolderSuggester.ts +var import_obsidian32 = require("obsidian"); +var FolderSuggest2 = class extends import_obsidian32.AbstractInputSuggest { + constructor(inputEl, plugin, whitelistSuggester, folder) { + super(plugin.app, inputEl); + this.inputEl = inputEl; + this.whitelistSuggester = whitelistSuggester; + this.folder = folder; + this.plugin = plugin; + } + getSuggestions(input_str) { + const folders = []; + const lower_input_str = input_str.toLowerCase(); + let files = []; + if (this.folder) { + files = this.folder.children; + } else { + files = this.plugin.app.vault.getAllLoadedFiles().slice(0, 100); + } + folders.push({ path: "File\u2019s parent folder path" }); + if (this.plugin instanceof FolderNotesPlugin) { + folders.push({ path: "Path of folder linked to the file" }); + } + files.forEach((folder) => { + if (folder instanceof import_obsidian32.TFolder && folder.path.toLowerCase().contains(lower_input_str) && (this.plugin instanceof FolderNotesPlugin ? !this.plugin.settings.excludeFolders.find((f) => f.path === folder.path) || this.whitelistSuggester : true)) { + folders.push(folder); + } + }); + return folders; + } + renderSuggestion(folder, el) { + el.setText(folder.path); + } + selectSuggestion(folder) { + this.inputEl.value = folder.path; + this.inputEl.trigger("input"); + this.close(); + } +}; + +// src/obsidian-folder-overview/src/utils/ListComponent.ts +var import_obsidian33 = require("obsidian"); +var ListComponent2 = class { + constructor(containerEl, values = [], defaultValues = []) { + this.emitter = new CustomEventEmitter2(); + this.containerEl = containerEl; + this.controlEl = containerEl.querySelector(".setting-item-control") || containerEl; + this.listEl = this.controlEl.createDiv("setting-command-hotkeys"); + this.addResetButton(); + this.setValues(values); + this.defaultValues = defaultValues; + } + on(event, listener) { + this.emitter.on(event, listener); + } + off(event, listener) { + this.emitter.off(event, listener); + } + emit(event, data) { + this.emitter.emit(event, data); + } + setValues(values) { + this.removeElements(); + this.values = values; + if (values.length !== 0) { + values.forEach((value) => { + this.addElement(value); + }); + } + this.emit("update", this.values); + } + removeElements() { + this.listEl.empty(); + } + addElement(value) { + this.listEl.createSpan("setting-hotkey", (span) => { + if (value.toLocaleLowerCase() === "md") { + span.innerText = "markdown"; + } else { + span.innerText = value; + } + span.setAttribute("extension", value); + const removeSpan = span.createEl("span", { cls: "ofn-list-item-remove setting-hotkey-icon" }); + const svgElement = removeSpan.createEl("span", { cls: "ofn-list-item-remove-icon" }); + (0, import_obsidian33.setIcon)(svgElement, "x"); + removeSpan.onClickEvent((e) => { + this.removeValue(value); + span.remove(); + }); + }); + } + async addValue(value) { + this.values.push(value); + this.addElement(value); + this.emit("add", value); + this.emit("update", this.values); + } + addResetButton() { + const resetButton = this.controlEl.createEl("span", { cls: "clickable-icon setting-restore-hotkey-button" }); + (0, import_obsidian33.setIcon)(resetButton, "rotate-ccw"); + resetButton.onClickEvent((e) => { + this.setValues(this.defaultValues); + }); + return this; + } + removeValue(value) { + this.values = this.values.filter((v) => v !== value); + this.listEl.find(`[extension='${value}']`).remove(); + this.emit("remove", value); + this.emit("update", this.values); + } +}; + +// src/obsidian-folder-overview/src/settings.ts +var DEFAULT_SETTINGS = { + id: "", + folderPath: "", + title: "{{folderName}} overview", + showTitle: false, + depth: 3, + includeTypes: ["folder", "markdown"], + style: "list", + disableFileTag: false, + sortBy: "name", + sortByAsc: true, + showEmptyFolders: false, + onlyIncludeSubfolders: false, + storeFolderCondition: true, + showFolderNotes: false, + disableCollapseIcon: true, + alwaysCollapse: false, + autoSync: true, + allowDragAndDrop: true, + hideLinkList: true, + hideFolderOverview: false, + useActualLinks: false, + fmtpIntegration: false +}; +var SettingsTab = class extends import_obsidian34.PluginSettingTab { + constructor(plugin) { + super(plugin.app, plugin); } display() { - var _a, _b, _c, _d; - const { contentEl } = this; - contentEl.empty(); - contentEl.addEventListener("keydown", (e) => { - if (e.key === "Enter") { - this.close(); - } - }); - if (!this.defaultSettings) { - contentEl.createEl("h2", { text: "Folder overview settings" }); + const { containerEl } = this; + containerEl.empty(); + containerEl.createEl("p", { text: "Edit the default settings of folder overviews", cls: "setting-item-description" }); + this.display = this.display.bind(this); + createOverviewSettings(containerEl, this.plugin.settings, this.plugin, this.plugin.settings, this.display, void 0, void 0, void 0, this); + } +}; +var createOrReplaceSetting = (container, section, changedSection, renderSetting) => { + let sectionContainer = container.querySelector(`.setting-${section}`); + if (sectionContainer) { + if (changedSection === section || changedSection === "all") { + sectionContainer.empty(); + renderSetting(sectionContainer); + return; } else { - contentEl.createEl("h2", { text: "Default folder overview settings" }); + return; } - new import_obsidian21.Setting(contentEl).setName("Show the title").setDesc("Choose if the title should be shown").addToggle((toggle) => toggle.setValue(this.yaml.showTitle).onChange(async (value) => { - this.yaml.showTitle = value; - this.display(); - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - ; + } + sectionContainer = container.createDiv({ cls: `setting-${section} overview-setting-item-fv` }); + renderSetting(sectionContainer); +}; +async function createOverviewSettings(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, changedSection) { + changedSection = changedSection != null ? changedSection : null; + createOrReplaceSetting(contentEl, "auto-sync", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Auto sync").setDesc("Choose if the overview should automatically update when you delete, create or rename a file/folder").addToggle((toggle) => toggle.setValue(yaml.autoSync).onChange(async (value) => { + yaml.autoSync = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); })); - if (this.yaml.showTitle) { - new import_obsidian21.Setting(contentEl).setName("Title").setDesc("Choose the title of the folder overview").addText((text) => { - var _a2; - return text.setValue(((_a2 = this.yaml) == null ? void 0 : _a2.title) || "{{folderName}} overview").onChange(async (value) => { - this.yaml.title = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - ; - }); + }); + createOrReplaceSetting(contentEl, "allow-drag-and-drop", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Allow drag and drop").setDesc("Choose if you want to allow drag and drop in the overview").addToggle((toggle) => toggle.setValue(yaml.allowDragAndDrop).onChange(async (value) => { + yaml.allowDragAndDrop = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + }); + createOrReplaceSetting(contentEl, "showTitle", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Show the title").setDesc("Choose if the title above the folder overview should be shown").addToggle((toggle) => toggle.setValue(yaml.showTitle).onChange(async (value) => { + yaml.showTitle = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + }); + createOrReplaceSetting(contentEl, "title-container-fn", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Title").setDesc(createFragment((frag) => { + const link = frag.createEl("a", { + text: "Find more information about the title in the documentation. There is also a list of variables you can use", + href: "https://lostpaul.github.io/obsidian-folder-notes/Folder%20overview/#title" }); - } - new import_obsidian21.Setting(contentEl).setName("Folder path for the overview").setDesc("Choose the folder path for the overview").addSearch((search) => { - var _a2; - new FolderSuggest(search.inputEl, this.plugin); - search.setPlaceholder("Folder path").setValue(((_a2 = this.yaml) == null ? void 0 : _a2.folderPath) || "").onChange(async (value) => { - if (!(this.app.vault.getAbstractFileByPath(value) instanceof import_obsidian21.TFolder) && value !== "") - return; - this.yaml.folderPath = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); + link.target = "_blank"; + })).addText((text) => text.setValue((yaml == null ? void 0 : yaml.title) || "{{folderName}} overview").onChange(async (value) => { + yaml.title = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + })); + }); + createOrReplaceSetting(contentEl, "folder-path", changedSection, (settingEl) => { + const folderPathSetting = new import_obsidian34.Setting(settingEl).setName("Folder path for the overview").setDesc(createFragment((frag) => { + frag.appendText("The overview will show the subfolders and files of the folder you choose here. "); + const link = frag.createEl("a", { + text: "Find more information about this setting in the documentation.", + href: "https://lostpaul.github.io/obsidian-folder-notes/Folder%20overview/#folder-path" + }); + link.target = "_blank"; + })).addSearch((search) => { + new FolderSuggest2(search.inputEl, plugin, false); + search.setPlaceholder("Folder path").setValue((yaml == null ? void 0 : yaml.folderPath) || "").onChange(async (value) => { + const whiteList = ["File\u2019s parent folder path", "Path of folder linked to the file"]; + if (value.trim() !== "" && !whiteList.includes(value.trim())) { + value = (0, import_obsidian34.normalizePath)(value); } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - ; + if (!whiteList.includes(value.trim())) { + if (!(plugin.app.vault.getAbstractFileByPath(value) instanceof import_obsidian34.TFolder) && value !== "") + return; + } + yaml.folderPath = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); }); }); - new import_obsidian21.Setting(contentEl).setName("Overview style").setDesc("Choose the style of the overview (grid style soon)").addDropdown((dropdown) => { - var _a2; - return dropdown.addOption("list", "List").addOption("explorer", "Explorer").setValue(((_a2 = this.yaml) == null ? void 0 : _a2.style) || "list").onChange(async (value) => { - this.yaml.style = value; - this.display(); - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); - }); - if (this.yaml.style === "explorer") { - new import_obsidian21.Setting(contentEl).setName("Store collapsed condition").setDesc("Choose if the collapsed condition should be stored stored until you restart Obsidian").addToggle((toggle) => toggle.setValue(this.yaml.storeFolderCondition).onChange(async (value) => { - this.yaml.storeFolderCondition = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - ; - })); - } - const setting = new import_obsidian21.Setting(contentEl); + folderPathSetting.settingEl.classList.add("fn-overview-folder-path"); + }); + createOrReplaceSetting(contentEl, "use-actual-links", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Use actual links").setDesc("Choose if the links in the overview should be showed in the graph view. This requires a second list under the actual overview and which is hidden by default.").addToggle((toggle) => toggle.setValue(yaml.useActualLinks).onChange(async (value) => { + yaml.useActualLinks = value; + updateSettings(contentEl, yaml, plugin, yaml.useActualLinks, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + }); + createOrReplaceSetting(contentEl, "hide-folder-overview", changedSection, (settingEl) => { + const hideOverviewSeting = new import_obsidian34.Setting(settingEl).setName("Hide folder overview").setDesc("Choose if the folder overview should be hidden and instead only the link list should be shown").addToggle((toggle) => toggle.setValue(yaml.hideFolderOverview).onChange(async (value) => { + yaml.hideFolderOverview = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + hideOverviewSeting.settingEl.classList.add("fn-hide-overview-setting"); + }); + createOrReplaceSetting(contentEl, "hide-link-list", changedSection, (settingEl) => { + const hideLinkListSetting = new import_obsidian34.Setting(settingEl).setName("Hide link list").setDesc("Choose if only link list under the folder overview should be shown").addToggle((toggle) => toggle.setValue(yaml.hideLinkList).onChange(async (value) => { + yaml.hideLinkList = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + hideLinkListSetting.settingEl.classList.add("fn-hide-link-list-setting"); + }); + createOrReplaceSetting(contentEl, "overview-style", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Overview style").setDesc("Choose the style of the overview (grid style soon)").addDropdown((dropdown) => dropdown.addOption("list", "List").addOption("explorer", "Explorer").setValue((yaml == null ? void 0 : yaml.style) || "list").onChange(async (value) => { + yaml.style = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); + })); + }); + createOrReplaceSetting(contentEl, "include-types", changedSection, (settingEl) => { + var _a, _b; + const setting = new import_obsidian34.Setting(settingEl); setting.setName("Include types"); - const list = setting.createList((list2) => { - var _a2; - return list2.addModal(this).setValues(((_a2 = this.yaml) == null ? void 0 : _a2.includeTypes) || this.plugin.settings.defaultOverview.includeTypes || []).addResetButton(); + const list = new ListComponent2(setting.settingEl, yaml.includeTypes || [], ["markdown", "folder"]); + list.on("update", (values) => { + yaml.includeTypes = values; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, "include-types"); }); - if ((((_b = (_a = this.yaml) == null ? void 0 : _a.includeTypes) == null ? void 0 : _b.length) || 0) < 8 && !((_c = this.yaml.includeTypes) == null ? void 0 : _c.includes("all"))) { + if ((((_a = yaml == null ? void 0 : yaml.includeTypes) == null ? void 0 : _a.length) || 0) < 8 && !((_b = yaml.includeTypes) == null ? void 0 : _b.includes("all"))) { setting.addDropdown((dropdown) => { - if (!this.yaml.includeTypes) - this.yaml.includeTypes = this.plugin.settings.defaultOverview.includeTypes || []; - this.yaml.includeTypes = this.yaml.includeTypes.map((type) => type.toLowerCase()); + if (!yaml.includeTypes) + yaml.includeTypes = plugin instanceof FolderNotesPlugin ? plugin.settings.defaultOverview.includeTypes : plugin.settings.includeTypes || []; + yaml.includeTypes = yaml.includeTypes.map((type) => type.toLowerCase()); const options = [ { value: "markdown", label: "Markdown" }, { value: "folder", label: "Folder" }, @@ -4197,7 +5957,7 @@ var FolderOverviewSettings = class extends import_obsidian21.Modal { ]; options.forEach((option) => { var _a2; - if (!((_a2 = this.yaml.includeTypes) == null ? void 0 : _a2.includes(option.value))) { + if (!((_a2 = yaml.includeTypes) == null ? void 0 : _a2.includes(option.value))) { dropdown.addOption(option.value, option.label); } }); @@ -4206,115 +5966,222 @@ var FolderOverviewSettings = class extends import_obsidian21.Modal { dropdown.onChange(async (value) => { var _a2; if (value === "all") { - this.yaml.includeTypes = (_a2 = this.yaml.includeTypes) == null ? void 0 : _a2.filter((type) => type === "folder"); - list.setValues(this.yaml.includeTypes); + yaml.includeTypes = (_a2 = yaml.includeTypes) == null ? void 0 : _a2.filter((type) => type === "folder"); + list.setValues(yaml.includeTypes); } await list.addValue(value.toLowerCase()); - this.display(); - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, "include-types"); }); }); } - let disableFileTag; - (_d = this.yaml.includeTypes) == null ? void 0 : _d.forEach((type) => { - type === "folder" || type === "markdown" ? disableFileTag = true : null; + }); + createOrReplaceSetting(contentEl, "file-tag", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Disable file tag").setDesc("Choose if the file tag should be shown after the file name").addToggle((toggle) => { + toggle.setValue(yaml.disableFileTag).onChange(async (value) => { + yaml.disableFileTag = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + }); }); - if (disableFileTag) { - new import_obsidian21.Setting(contentEl).setName("Disable file tag").setDesc("Choose if the file tag should be shown after the file name").addToggle((toggle) => { - toggle.setValue(this.yaml.disableFileTag).onChange(async (value) => { - this.yaml.disableFileTag = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); - }); - } - new import_obsidian21.Setting(contentEl).setName("Show folder notes").setDesc("Choose if folder notes (the note itself and not the folder name) should be shown in the overview").addToggle((toggle) => toggle.setValue(this.yaml.showFolderNotes).onChange(async (value) => { - this.yaml.showFolderNotes = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); + }); + createOrReplaceSetting(contentEl, "show-folder-notes", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Show folder notes").setDesc("Choose if folder notes (the note itself and not the folder name) should be shown in the overview").addToggle((toggle) => toggle.setValue(yaml.showFolderNotes).onChange(async (value) => { + yaml.showFolderNotes = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); })); - if (this.yaml.style !== "explorer") { - new import_obsidian21.Setting(contentEl).setName("File depth").setDesc("File & folder = +1 depth").addSlider((slider) => { - var _a2; - return slider.setValue(((_a2 = this.yaml) == null ? void 0 : _a2.depth) || 2).setLimits(1, 10, 1).onChange(async (value) => { - this.yaml.depth = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); - }); - } - new import_obsidian21.Setting(contentEl).setName("Sort files by").setDesc("Choose how the files should be sorted").addDropdown((dropdown) => { - var _a2; - return dropdown.addOption("name", "Name").addOption("created", "Created").addOption("modified", "Modified").setValue(((_a2 = this.yaml) == null ? void 0 : _a2.sortBy) || "name").onChange(async (value) => { - this.yaml.sortBy = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); - }).addDropdown((dropdown) => { + }); + createOrReplaceSetting(contentEl, "file-depth", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("File depth").setDesc("File & folder = +1 depth").addSlider((slider) => slider.setValue((yaml == null ? void 0 : yaml.depth) || 2).setLimits(1, 10, 1).setDynamicTooltip().onChange(async (value) => { + yaml.depth = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + })); + }); + createOrReplaceSetting(contentEl, "sort-files", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Sort files by").setDesc("Choose how the files should be sorted").addDropdown((dropdown) => dropdown.addOption("name", "Name").addOption("created", "Created").addOption("modified", "Modified").setValue((yaml == null ? void 0 : yaml.sortBy) || "name").onChange(async (value) => { + yaml.sortBy = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + })).addDropdown((dropdown) => { dropdown.addOption("desc", "Descending").addOption("asc", "Ascending"); - if (this.yaml.sortByAsc) { + if (yaml.sortByAsc) { dropdown.setValue("asc"); } else { dropdown.setValue("desc"); } dropdown.onChange(async (value) => { - if (value === "desc") { - this.yaml.sortByAsc = false; - } else { - this.yaml.sortByAsc = true; - } - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); + yaml.sortByAsc = value === "asc"; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); }); }); - if (this.yaml.style === "list") { - new import_obsidian21.Setting(contentEl).setName("Show folder names of folders that appear empty in the folder overview").setDesc("Show the names of folders that appear to have no files/folders in the folder overview. That's mostly the case when you set the file depth to 1.").addToggle((toggle) => { - toggle.setValue(this.yaml.showEmptyFolders).onChange(async (value) => { - this.yaml.showEmptyFolders = value; - this.yaml.onlyIncludeSubfolders = false; - this.display(); - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); + }); + createOrReplaceSetting(contentEl, "show-empty-folders", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Show folder names of folders that appear empty in the folder overview").setDesc("Show the names of folders that appear to have no files/folders in the folder overview. That's mostly the case when you set the file depth to 1.").addToggle((toggle) => { + toggle.setValue(yaml.showEmptyFolders).onChange(async (value) => { + yaml.showEmptyFolders = value; + yaml.onlyIncludeSubfolders = false; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal); }); - if (this.yaml.showEmptyFolders) { - new import_obsidian21.Setting(contentEl).setName("Only show first empty subfolders of current folder").addToggle((toggle) => { - toggle.setValue(this.yaml.onlyIncludeSubfolders).onChange(async (value) => { - this.yaml.onlyIncludeSubfolders = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); - }); + }); + }); + createOrReplaceSetting(contentEl, "show-empty-folders-only-first-level", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Only show empty folders which are on the first level of the folder overview").addToggle((toggle) => { + toggle.setValue(yaml.onlyIncludeSubfolders).onChange(async (value) => { + yaml.onlyIncludeSubfolders = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + }); + }); + }); + createOrReplaceSetting(contentEl, "disable-collapse-icon", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Disable collapse icon for folder notes").setDesc("Remove the collapse icon next to the folder name for folder notes when they only contain the folder note itself").addToggle((toggle) => { + toggle.setValue(yaml.disableCollapseIcon).onChange(async (value) => { + yaml.disableCollapseIcon = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + }); + }); + }); + createOrReplaceSetting(contentEl, "store-collapse-condition", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Store collapsed condition").setDesc("Choose if the collapsed condition should be stored until you restart Obsidian").addToggle((toggle) => toggle.setValue(yaml.storeFolderCondition).onChange(async (value) => { + yaml.storeFolderCondition = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + })); + }); + createOrReplaceSetting(contentEl, "collapse-all-by-default", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Collapse all in the tree by default").setDesc("Collapse every folder in the file explorer in the overview by default").addToggle((toggle) => { + toggle.setValue(yaml.alwaysCollapse).onChange(async (value) => { + yaml.alwaysCollapse = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + }); + }); + }); + createOrReplaceSetting(contentEl, "fmtp-integration", changedSection, (settingEl) => { + new import_obsidian34.Setting(settingEl).setName("Front Matter Title Plugin integration").setDesc("Replace the folder/file name with the title from the Front Matter Title Plugin. This requires the plugin to be installed and enabled.").addToggle((toggle) => toggle.setValue(yaml.fmtpIntegration).onChange(async (value) => { + yaml.fmtpIntegration = value; + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); + })); + }); + updateSettings(contentEl, yaml, plugin, false, defaultSettings, el, ctx, file); +} +async function updateSettings(contentEl, yaml, plugin, addLinkList, defaultSettings, el, ctx, file) { + var _a; + let showDisableFileTag = false; + (_a = yaml.includeTypes) == null ? void 0 : _a.forEach((type) => { + if (type !== "markdown" && type !== "folder") { + showDisableFileTag = true; + } + }); + if (yaml.includeTypes.length === 0) { + showDisableFileTag = false; + } + toggleSections(contentEl, { + "setting-title-container-fn": yaml.showTitle, + "setting-store-collapse-condition": yaml.style === "explorer", + "setting-file-tag": showDisableFileTag, + "setting-show-empty-folders": yaml.style === "list", + "setting-show-empty-folders-only-first-level": yaml.showEmptyFolders && yaml.style === "list", + "setting-disable-collapse-icon": yaml.style === "explorer", + "setting-collapse-all-by-default": yaml.style === "explorer", + "setting-allow-drag-and-drop": yaml.style === "explorer", + "setting-hide-folder-overview": !yaml.hideLinkList && yaml.useActualLinks, + "setting-hide-link-list": !yaml.hideFolderOverview && yaml.useActualLinks, + "setting-fmtp-integration": !!plugin.app.plugins.getPlugin("obsidian-front-matter-title-plugin") + }); + if (!yaml.id) { + plugin.saveSettings(); + if (file === void 0) { + plugin.updateOverviewView(plugin); + } + return; + } + if (el && ctx) { + await updateYaml(plugin, ctx, el, yaml, addLinkList); + } + if (file) { + await updateYamlById(plugin, yaml.id, file, yaml, addLinkList); + } +} +function refresh(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, changedSection) { + if (file) { + contentEl = contentEl.parentElement; + } + display(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, changedSection); +} +function toggleSections(contentEl, sections) { + Object.entries(sections).forEach(([sectionClass, shouldShow]) => { + const sections2 = contentEl.querySelectorAll(`.${sectionClass}`); + sections2.forEach((section) => { + if (shouldShow && section) { + section.classList.remove("hide"); + } else { + section == null ? void 0 : section.classList.add("hide"); } - } - if (this.yaml.style === "explorer") { - new import_obsidian21.Setting(contentEl).setName("Disable collapse icon for folder notes").setDesc("Remove the collapse icon next to the folder name for folder notes when they only contain the folder note itself").addToggle((toggle) => { - toggle.setValue(this.yaml.disableCollapseIcon).onChange(async (value) => { - this.yaml.disableCollapseIcon = value; - if (this.defaultSettings) { - return this.plugin.saveSettings(); - } - await updateYaml(this.plugin, this.ctx, this.el, this.yaml); - }); + }); + }); +} + +// src/settings/FolderOverviewSettings.ts +async function renderFolderOverview(settingsTab) { + const { plugin } = settingsTab; + const overviewSettings5 = plugin.settings.defaultOverview; + const containerEl = settingsTab.settingsPage; + const pEl = containerEl.createEl("p", { + text: "Edit the default settings for new folder overviews, ", + cls: "setting-item-description" + }); + const span = createSpan({ text: "this won't apply to already existing overviews.", cls: "" }); + const accentColor = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; + span.setAttr("style", `color: ${accentColor};`); + pEl.appendChild(span); + createOverviewSettings(containerEl, overviewSettings5, plugin, plugin.settings.defaultOverview, settingsTab.display, void 0, void 0, void 0, settingsTab); +} + +// src/settings/ExcludedFoldersSettings.ts +var import_obsidian36 = require("obsidian"); + +// src/ExcludeFolders/modals/WhitelistedFoldersSettings.ts +var import_obsidian35 = require("obsidian"); + +// src/ExcludeFolders/WhitelistFolder.ts +var WhitelistedFolder = class { + constructor(path, position, id, plugin) { + this.type = "folder"; + this.id = id || crypto.randomUUID(); + this.path = path; + this.subFolders = plugin.settings.excludeFolderDefaultSettings.subFolders; + this.position = position; + this.string = ""; + } +}; + +// src/ExcludeFolders/modals/WhitelistedFoldersSettings.ts +var WhitelistedFoldersSettings = class extends import_obsidian35.Modal { + constructor(settingsTab) { + super(settingsTab.app); + this.plugin = settingsTab.plugin; + this.settingsTab = settingsTab; + this.app = settingsTab.app; + } + onOpen() { + const { contentEl } = this; + contentEl.createEl("h2", { text: "Manage whitelisted folders" }); + new import_obsidian35.Setting(contentEl).setName("Add whitelisted folder").setClass("add-exclude-folder-item").addButton((cb) => { + cb.setIcon("plus"); + cb.setClass("add-exclude-folder"); + cb.setTooltip("Add whitelisted folder"); + cb.onClick(() => { + const whitelistedFolder = new WhitelistedFolder("", this.plugin.settings.whitelistFolders.length, void 0, this.plugin); + addWhitelistFolderListItem(this.plugin.settingsTab, contentEl, whitelistedFolder); + addWhitelistedFolder(this.plugin, whitelistedFolder); + this.settingsTab.display(); }); - } + }); + this.plugin.settings.whitelistFolders.sort((a, b) => a.position - b.position).forEach((whitelistedFolder) => { + var _a, _b; + if (((_a = whitelistedFolder.string) == null ? void 0 : _a.trim()) !== "" && ((_b = whitelistedFolder.path) == null ? void 0 : _b.trim()) === "") { + addWhitelistedPatternListItem(this.settingsTab, contentEl, whitelistedFolder); + } else { + addWhitelistFolderListItem(this.settingsTab, contentEl, whitelistedFolder); + } + }); } onClose() { const { contentEl } = this; @@ -4322,19 +6189,10 @@ var FolderOverviewSettings = class extends import_obsidian21.Modal { } }; -// src/settings/FolderOverviewSettings.ts -async function renderFolderOverview(settingsTab) { - const containerEl = settingsTab.settingsPage; - new import_obsidian22.Setting(containerEl).setName("Manage folder overview defaults").setDesc("Manage the default settings for the folder overview plugin").addButton((button) => button.setButtonText("Manage").setCta().onClick(async () => { - new FolderOverviewSettings(settingsTab.plugin.app, settingsTab.plugin, settingsTab.plugin.settings.defaultOverview, null, null, true).open(); - })); -} - // src/settings/ExcludedFoldersSettings.ts -var import_obsidian23 = require("obsidian"); async function renderExcludeFolders(settingsTab) { const containerEl = settingsTab.settingsPage; - const manageExcluded = new import_obsidian23.Setting(containerEl).setHeading().setClass("fn-excluded-folder-heading").setName("Manage excluded folders"); + const manageExcluded = new import_obsidian36.Setting(containerEl).setHeading().setClass("fn-excluded-folder-heading").setName("Manage excluded folders"); const desc3 = document.createDocumentFragment(); desc3.append("Add {regex} at the beginning of the folder name to use a regex pattern.", desc3.createEl("br"), "Use * before and after to exclude folders that include the name between the *s.", desc3.createEl("br"), "Use * before the folder name to exclude folders that end with the folder name.", desc3.createEl("br"), "Use * after the folder name to exclude folders that start with the folder name."); manageExcluded.setDesc(desc3); @@ -4342,32 +6200,39 @@ async function renderExcludeFolders(settingsTab) { manageExcluded.infoEl.createEl("br"); manageExcluded.infoEl.appendText("If you want to switch to a folder path delete the pattern first."); manageExcluded.infoEl.style.color = settingsTab.app.vault.getConfig("accentColor") || "#7d5bed"; - new import_obsidian23.Setting(containerEl).setName("Exclude folder default settings").addButton((cb) => { + new import_obsidian36.Setting(containerEl).setName("Whitelisted folders").setDesc("Folders that override the excluded folders/patterns").addButton((cb) => { + cb.setButtonText("Manage"); + cb.setCta(); + cb.onClick(async () => { + new WhitelistedFoldersSettings(settingsTab).open(); + }); + }); + new import_obsidian36.Setting(containerEl).setName("Exclude folder default settings").addButton((cb) => { cb.setButtonText("Manage"); cb.setCta(); cb.onClick(async () => { new ExcludedFolderSettings(settingsTab.app, settingsTab.plugin, settingsTab.plugin.settings.excludeFolderDefaultSettings).open(); }); }); - new import_obsidian23.Setting(containerEl).setName("Exclude pattern default settings").addButton((cb) => { + new import_obsidian36.Setting(containerEl).setName("Exclude pattern default settings").addButton((cb) => { cb.setButtonText("Manage"); cb.setCta(); cb.onClick(async () => { new PatternSettings(settingsTab.app, settingsTab.plugin, settingsTab.plugin.settings.excludePatternDefaultSettings).open(); }); }); - new import_obsidian23.Setting(containerEl).setName("Add excluded folder").setClass("add-exclude-folder-item").addButton((cb) => { + new import_obsidian36.Setting(containerEl).setName("Add excluded folder").setClass("add-exclude-folder-item").addButton((cb) => { cb.setIcon("plus"); cb.setClass("add-exclude-folder"); cb.setTooltip("Add excluded folder"); cb.onClick(() => { - const excludedFolder = new ExcludedFolder("", settingsTab.plugin.settings.excludeFolders.length, settingsTab.plugin); + const excludedFolder = new ExcludedFolder("", settingsTab.plugin.settings.excludeFolders.length, void 0, settingsTab.plugin); addExcludeFolderListItem(settingsTab, containerEl, excludedFolder); addExcludedFolder(settingsTab.plugin, excludedFolder); settingsTab.display(); }); }); - settingsTab.plugin.settings.excludeFolders.sort((a, b) => a.position - b.position).forEach((excludedFolder) => { + settingsTab.plugin.settings.excludeFolders.filter((folder) => !folder.hideInSettings).sort((a, b) => a.position - b.position).forEach((excludedFolder) => { var _a, _b; if (((_a = excludedFolder.string) == null ? void 0 : _a.trim()) !== "" && ((_b = excludedFolder.path) == null ? void 0 : _b.trim()) === "") { addExcludePatternListItem(settingsTab, containerEl, excludedFolder); @@ -4378,13 +6243,16 @@ async function renderExcludeFolders(settingsTab) { } // src/settings/SettingsTab.ts -var DEFAULT_SETTINGS = { +var DEFAULT_SETTINGS2 = { syncFolderName: true, ctrlKey: true, altKey: false, hideFolderNote: true, templatePath: "", autoCreate: false, + autoCreateFocusFiles: true, + autoCreateForAttachmentFolder: false, + autoCreateForFiles: false, enableCollapsing: false, excludeFolders: [], whitelistFolders: [], @@ -4394,6 +6262,8 @@ var DEFAULT_SETTINGS = { underlineFolderInPath: true, openFolderNoteOnClickInPath: true, openInNewTab: false, + focusExistingTab: false, + oldFolderNoteName: void 0, folderNoteName: "{{folder_name}}", folderNoteType: ".md", disableFolderHighlighting: false, @@ -4416,7 +6286,14 @@ var DEFAULT_SETTINGS = { onlyIncludeSubfolders: false, storeFolderCondition: true, showFolderNotes: false, - disableCollapseIcon: true + disableCollapseIcon: true, + alwaysCollapse: false, + autoSync: true, + allowDragAndDrop: true, + hideLinkList: true, + hideFolderOverview: false, + useActualLinks: false, + fmtpIntegration: false }, useSubmenus: true, syncMove: true, @@ -4438,6 +6315,7 @@ var DEFAULT_SETTINGS = { excludeFolderDefaultSettings: { type: "folder", path: "", + id: crypto.randomUUID(), subFolders: true, disableSync: true, disableAutoCreate: true, @@ -4446,11 +6324,14 @@ var DEFAULT_SETTINGS = { position: 0, excludeFromFolderOverview: false, string: "", - hideInSettings: false + hideInSettings: false, + detached: false, + showFolderNote: false }, excludePatternDefaultSettings: { type: "pattern", path: "", + id: crypto.randomUUID(), subFolders: true, disableSync: true, disableAutoCreate: true, @@ -4459,14 +6340,27 @@ var DEFAULT_SETTINGS = { position: 0, excludeFromFolderOverview: false, string: "", - hideInSettings: false + hideInSettings: false, + detached: false, + showFolderNote: false }, hideCollapsingIcon: false, + hideCollapsingIconForEmptyFolders: false, tabManagerEnabled: true, ignoreAttachmentFolder: true, - deleteFilesAction: "trash" + deleteFilesAction: "trash", + openSidebar: { + mobile: false, + desktop: true + }, + highlightFolder: true, + persistentSettingsTab: { + afterRestart: true, + afterChangingTab: true + }, + firstTimeInsertOverview: true }; -var SettingsTab = class extends import_obsidian24.PluginSettingTab { +var SettingsTab2 = class extends import_obsidian37.PluginSettingTab { constructor(app2, plugin) { super(app2, plugin); this.TABS = { @@ -4512,56 +6406,85 @@ var SettingsTab = class extends import_obsidian24.PluginSettingTab { break; } } - display() { - this.plugin.settingsOpened = true; - const { containerEl } = this; + display(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab) { + var _a; + plugin = (_a = this == null ? void 0 : this.plugin) != null ? _a : plugin; + if (plugin) { + plugin.settingsOpened = true; + } + settingsTab = this != null ? this : settingsTab; + const { containerEl } = settingsTab; + if (plugin && !plugin.settings.persistentSettingsTab.afterChangingTab) { + plugin.settings.settingsTab = this.TABS.GENERAL.id; + } containerEl.empty(); const tabBar = containerEl.createEl("nav", { cls: "fn-settings-tab-bar" }); - for (const [tabId, tabInfo] of Object.entries(this.TABS)) { + for (const [tabId, tabInfo] of Object.entries(settingsTab.TABS)) { const tabEl = tabBar.createEl("div", { cls: "fn-settings-tab" }); - const tabName = tabEl.createEl("div", { cls: "fn-settings-tab-name", text: tabInfo.name }); - if (this.plugin.settings.settingsTab.toLocaleLowerCase() === tabId.toLocaleLowerCase()) { + tabEl.createEl("div", { cls: "fn-settings-tab-name", text: tabInfo.name }); + if (plugin && plugin.settings.settingsTab.toLocaleLowerCase() === tabId.toLocaleLowerCase()) { tabEl.addClass("fn-settings-tab-active"); } tabEl.addEventListener("click", () => { for (const tabEl2 of tabBar.children) { tabEl2.removeClass("fn-settings-tab-active"); - this.plugin.settings.settingsTab = tabId.toLocaleLowerCase(); - this.plugin.saveSettings(); + if (!plugin) { + return; + } + plugin.settings.settingsTab = tabId.toLocaleLowerCase(); + plugin.saveSettings(); } tabEl.addClass("fn-settings-tab-active"); - this.renderSettingsPage(tabId); + if (!settingsTab) { + return; + } + settingsTab.renderSettingsPage(tabId); }); } - this.settingsPage = containerEl.createDiv({ cls: "fn-settings-page" }); - this.renderSettingsPage(this.plugin.settings.settingsTab); - } - updateFolderNotes(newTemplate) { - new import_obsidian24.Notice("Starting to update folder notes..."); - for (const folder of this.app.vault.getAllLoadedFiles()) { - if (folder instanceof import_obsidian24.TFolder) { - const folderNote = getFolderNote(this.plugin, folder.path); - if (!(folderNote instanceof import_obsidian24.TFile)) { - continue; - } - const folderNoteName = newTemplate.replace("{{folder_name}}", folder.name); - const newPath = `${folder.path}/${folderNoteName}.${folderNote.extension}`; - if (this.plugin.app.vault.getAbstractFileByPath(newPath)) { - continue; - } - this.plugin.app.fileManager.renameFile(folderNote, newPath); + settingsTab.settingsPage = containerEl.createDiv({ cls: "fn-settings-page" }); + if (plugin) { + if (plugin.settings.persistentSettingsTab) { + settingsTab.renderSettingsPage(plugin.settings.settingsTab); + } else { + settingsTab.renderSettingsPage(this.TABS.GENERAL.id); } } - this.plugin.settings.folderNoteName = newTemplate; + } + renameFolderNotes() { + var _a, _b, _c; + new import_obsidian37.Notice("Starting to update folder notes..."); + const oldTemplate = (_a = this.plugin.settings.oldFolderNoteName) != null ? _a : "{{folder_name}}"; + for (const folder of this.app.vault.getAllLoadedFiles()) { + if (folder instanceof import_obsidian37.TFolder) { + const folderNote = getFolderNote(this.plugin, folder.path, void 0, void 0, oldTemplate); + if (!(folderNote instanceof import_obsidian37.TFile)) { + continue; + } + const folderName = (_b = extractFolderName(oldTemplate, folderNote.basename)) != null ? _b : ""; + const newFolderNoteName = this.plugin.settings.folderNoteName.replace("{{folder_name}}", folderName); + let newPath = ""; + if (this.plugin.settings.storageLocation === "parentFolder") { + if (getFolderPathFromString(folder.path).trim() === "/") { + newPath = `${newFolderNoteName}.${folderNote.extension}`; + } else { + newPath = `${(_c = folderNote.parent) == null ? void 0 : _c.path}/${newFolderNoteName}.${folderNote.extension}`; + } + } else if (this.plugin.settings.storageLocation === "insideFolder") { + newPath = `${folder.path}/${newFolderNoteName}.${folderNote.extension}`; + } + this.app.fileManager.renameFile(folderNote, newPath); + } + } + this.plugin.settings.oldFolderNoteName = this.plugin.settings.folderNoteName; this.plugin.saveSettings(); - new import_obsidian24.Notice("Finished updating folder notes"); + new import_obsidian37.Notice("Finished updating folder notes"); } switchStorageLocation(oldMethod) { - new import_obsidian24.Notice("Starting to switch storage location..."); + new import_obsidian37.Notice("Starting to switch storage location..."); this.app.vault.getAllLoadedFiles().forEach((file) => { - if (file instanceof import_obsidian24.TFolder) { + if (file instanceof import_obsidian37.TFolder) { const folderNote = getFolderNote(this.plugin, file.path, oldMethod); - if (folderNote instanceof import_obsidian24.TFile) { + if (folderNote instanceof import_obsidian37.TFile) { if (this.plugin.settings.storageLocation === "parentFolder") { let newPath = ""; if (getFolderPathFromString(file.path).trim() === "") { @@ -4581,7 +6504,7 @@ var SettingsTab = class extends import_obsidian24.PluginSettingTab { } } }); - new import_obsidian24.Notice("Finished switching storage location"); + new import_obsidian37.Notice("Finished switching storage location"); } onClose() { this.plugin.settingsOpened = false; @@ -4589,7 +6512,7 @@ var SettingsTab = class extends import_obsidian24.PluginSettingTab { }; // src/Commands.ts -var import_obsidian25 = require("obsidian"); +var import_obsidian38 = require("obsidian"); var Commands = class { constructor(app2, plugin) { this.plugin = plugin; @@ -4603,39 +6526,45 @@ var Commands = class { regularCommands() { this.plugin.addCommand({ id: "turn-into-folder-note", - name: "Make current active note a folder note for the folder of the active note", - callback: () => { + name: "Use this file as the folder note for its parent folder", + checkCallback: (checking) => { const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) - return; + if (!(file instanceof import_obsidian38.TFile)) + return false; const folder = file.parent; - if (!(folder instanceof import_obsidian25.TFolder)) - return; + if (!folder || !(folder instanceof import_obsidian38.TFolder)) + return false; + if (folder.path === "" || folder.path === "/") + return false; const folderNote = getFolderNote(this.plugin, folder.path); + if (folderNote instanceof import_obsidian38.TFile && folderNote === file) + return false; + if (checking) + return true; turnIntoFolderNote(this.plugin, file, folder, folderNote); } }); this.plugin.addCommand({ id: "create-folder-note", - name: "Create folder note with a new folder for the active note in the current folder", + name: "Make a folder with this file as its folder note", callback: async () => { var _a, _b, _c; const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) + if (!(file instanceof import_obsidian38.TFile)) return; let newPath = ((_a = file.parent) == null ? void 0 : _a.path) + "/" + file.basename; if (((_b = file.parent) == null ? void 0 : _b.path) === "" || ((_c = file.parent) == null ? void 0 : _c.path) === "/") { newPath = file.basename; } if (this.plugin.app.vault.getAbstractFileByPath(newPath)) { - return new import_obsidian25.Notice("Folder already exists"); + return new import_obsidian38.Notice("Folder already exists"); } const automaticallyCreateFolderNote = this.plugin.settings.autoCreate; this.plugin.settings.autoCreate = false; this.plugin.saveSettings(); await this.plugin.app.vault.createFolder(newPath); const folder = this.plugin.app.vault.getAbstractFileByPath(newPath); - if (!(folder instanceof import_obsidian25.TFolder)) + if (!(folder instanceof import_obsidian38.TFolder)) return; createFolderNote(this.plugin, folder.path, true, "." + file.extension, false, file); this.plugin.settings.autoCreate = automaticallyCreateFolderNote; @@ -4644,14 +6573,18 @@ var Commands = class { }); this.plugin.addCommand({ id: "create-folder-note-for-current-folder", - name: "Create markdown folder note for current folder of active note", - callback: () => { + name: "Create markdown folder note for this folder", + checkCallback: (checking) => { const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) - return; + if (!(file instanceof import_obsidian38.TFile)) + return false; const folder = file.parent; - if (!(folder instanceof import_obsidian25.TFolder)) - return; + if (!(folder instanceof import_obsidian38.TFolder)) + return false; + if (folder.path === "" || folder.path === "/") + return false; + if (checking) + return true; createFolderNote(this.plugin, folder.path, true, ".md", false); } }); @@ -4660,88 +6593,115 @@ var Commands = class { return; this.plugin.addCommand({ id: `create-${fileType}-folder-note-for-current-folder`, - name: `Create ${fileType} folder note for current folder of active note`, - callback: () => { + name: `Create ${fileType} folder note for this folder`, + checkCallback: (checking) => { const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) - return; + if (!(file instanceof import_obsidian38.TFile)) + return false; const folder = file.parent; - if (!(folder instanceof import_obsidian25.TFolder)) - return; + if (!(folder instanceof import_obsidian38.TFolder)) + return false; + if (folder.path === "" || folder.path === "/") + return false; + if (checking) + return true; createFolderNote(this.plugin, folder.path, true, "." + fileType, false); } }); }); + this.plugin.settings.supportedFileTypes.forEach((fileType) => { + const type = fileType === "md" ? "markdown" : fileType; + this.plugin.addCommand({ + id: `create-${type}-folder-note-for-active-file-explorer-folder`, + name: `Create ${type} folder note for current active folder in file explorer`, + checkCallback: (checking) => { + const folder = getFileExplorerActiveFolder(); + if (!folder) + return false; + const folderNote = getFolderNote(this.plugin, folder.path); + if (folderNote instanceof import_obsidian38.TFile) + return false; + if (checking) + return true; + const ext = "." + fileType; + const path = folder.path; + createFolderNote(this.plugin, path, true, ext, false); + } + }); + }); this.plugin.addCommand({ id: "delete-folder-note-for-current-folder", - name: "Delete folder note of current folder of active note", - callback: () => { + name: "Delete this folder's linked note", + checkCallback: (checking) => { const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) - return; + if (!(file instanceof import_obsidian38.TFile)) + return false; const folder = file.parent; - if (!(folder instanceof import_obsidian25.TFolder)) - return; + if (!(folder instanceof import_obsidian38.TFolder)) + return false; const folderNote = getFolderNote(this.plugin, folder.path); - if (!(folderNote instanceof import_obsidian25.TFile)) - return; + if (!(folderNote instanceof import_obsidian38.TFile)) + return false; + if (checking) + return true; + deleteFolderNote(this.plugin, folderNote, true); + } + }); + this.plugin.addCommand({ + id: "delete-folder-note-of-active-file-explorer-folder", + name: "Delete folder note of current active folder in file explorer", + checkCallback: (checking) => { + const folder = getFileExplorerActiveFolder(); + if (!folder) + return false; + const folderNote = getFolderNote(this.plugin, folder.path); + if (!(folderNote instanceof import_obsidian38.TFile)) + return false; + if (checking) + return true; deleteFolderNote(this.plugin, folderNote, true); } }); this.plugin.addCommand({ id: "open-folder-note-for-current-folder", - name: "Open folder note of current folder of active note", - callback: () => { + name: "Open this folder's linked note", + checkCallback: (checking) => { const file = this.app.workspace.getActiveFile(); - if (!(file instanceof import_obsidian25.TFile)) - return; + if (!(file instanceof import_obsidian38.TFile)) + return false; const folder = file.parent; - if (!(folder instanceof import_obsidian25.TFolder)) - return; + if (!(folder instanceof import_obsidian38.TFolder)) + return false; const folderNote = getFolderNote(this.plugin, folder.path); - if (!(folderNote instanceof import_obsidian25.TFile)) - return; + if (!(folderNote instanceof import_obsidian38.TFile)) + return false; + if (checking) + return true; openFolderNote(this.plugin, folderNote); } }); this.plugin.addCommand({ - id: "insert-folder-overview-fn", - name: "Insert folder overview", - editorCheckCallback: (checking, editor) => { - const line = editor.getCursor().line; - const lineText = editor.getLine(line); - if (lineText.trim() === "" || lineText.trim() === ">") { - if (!checking) { - let json = Object.assign({}, this.plugin.settings.defaultOverview); - json.id = crypto.randomUUID(); - const yaml = (0, import_obsidian25.stringifyYaml)(json); - if (lineText.trim() === "") { - editor.replaceSelection(`\`\`\`folder-overview -${yaml}\`\`\` -`); - } else if (lineText.trim() === ">") { - const lines = yaml.split("\n"); - const newLines = lines.map((line2) => { - return `> ${line2}`; - }); - editor.replaceSelection(`\`\`\`folder-overview -${newLines.join("\n")}\`\`\` -`); - } - } + id: "open-folder-note-of-active-file-explorer-folder", + name: "Open folder note of current active folder in file explorer", + checkCallback: (checking) => { + const folder = getFileExplorerActiveFolder(); + if (!folder) + return false; + const folderNote = getFolderNote(this.plugin, folder.path); + if (!(folderNote instanceof import_obsidian38.TFile)) + return false; + if (checking) return true; - } - return false; + openFolderNote(this.plugin, folderNote); } }); this.plugin.addCommand({ id: "create-folder-note-from-selected-text", - name: "Create folder note from selected text", + name: "Create folder note from selection", editorCheckCallback: (checking, editor, view) => { const text = editor.getSelection().trim(); - const line = editor.getCursor().line; const file = view.file; - if (!(file instanceof import_obsidian25.TFile)) + if (!(file instanceof import_obsidian38.TFile)) return false; if (text && text.trim() !== "") { if (checking) { @@ -4750,20 +6710,20 @@ ${newLines.join("\n")}\`\`\` const blacklist = ["*", "\\", '"', "/", "<", ">", "?", "|", ":"]; for (const char of blacklist) { if (text.includes(char)) { - new import_obsidian25.Notice('File name cannot contain any of the following characters: * " \\ / < > : | ?'); + new import_obsidian38.Notice('File name cannot contain any of the following characters: * " \\ / < > : | ?'); return false; } } if (text.endsWith(".")) { - new import_obsidian25.Notice("File name cannot end with a dot"); + new import_obsidian38.Notice("File name cannot end with a dot"); return; } let folder; const folderPath = getFolderPathFromString(file.path); if (folderPath === "") { folder = this.plugin.app.vault.getAbstractFileByPath(text); - if (folder instanceof import_obsidian25.TFolder) { - new import_obsidian25.Notice("Folder note already exists"); + if (folder instanceof import_obsidian38.TFolder) { + new import_obsidian38.Notice("Folder note already exists"); return false; } else { this.plugin.app.vault.createFolder(text); @@ -4771,13 +6731,13 @@ ${newLines.join("\n")}\`\`\` } } else { folder = this.plugin.app.vault.getAbstractFileByPath(folderPath + "/" + text); - if (folder instanceof import_obsidian25.TFolder) { - new import_obsidian25.Notice("Folder note already exists"); + if (folder instanceof import_obsidian38.TFolder) { + new import_obsidian38.Notice("Folder note already exists"); return false; } if (this.plugin.settings.storageLocation === "parentFolder") { if (this.app.vault.getAbstractFileByPath(folderPath + "/" + text + this.plugin.settings.folderNoteType)) { - new import_obsidian25.Notice("File already exists"); + new import_obsidian38.Notice("File already exists"); return false; } } @@ -4800,7 +6760,7 @@ ${newLines.join("\n")}\`\`\` this.plugin.registerEvent(this.app.workspace.on("file-menu", (menu, file) => { var _a, _b, _c; let folder = file.parent; - if (file instanceof import_obsidian25.TFile) { + if (file instanceof import_obsidian38.TFile) { if (this.plugin.settings.storageLocation === "insideFolder") { folder = file.parent; } else { @@ -4813,27 +6773,28 @@ ${newLines.join("\n")}\`\`\` } } } - if (folder instanceof import_obsidian25.TFolder) { + if (folder instanceof import_obsidian38.TFolder) { const folderNote = getFolderNote(this.plugin, folder.path); - if ((folderNote == null ? void 0 : folderNote.path) === file.path) { + const excludedFolder = getExcludedFolder(this.plugin, folder.path, true); + if ((folderNote == null ? void 0 : folderNote.path) === file.path && !(excludedFolder == null ? void 0 : excludedFolder.detached)) { return; } - } else if (file.parent instanceof import_obsidian25.TFolder) { + } else if (file.parent instanceof import_obsidian38.TFolder) { folder = file.parent; } } - menu.addItem((item) => { - if (import_obsidian25.Platform.isDesktop && !import_obsidian25.Platform.isTablet && this.plugin.settings.useSubmenus) { + menu.addItem(async (item) => { + if (import_obsidian38.Platform.isDesktop && !import_obsidian38.Platform.isTablet && this.plugin.settings.useSubmenus) { item.setTitle("Folder Note Commands").setIcon("folder-edit"); } let subMenu; - if (!import_obsidian25.Platform.isDesktopApp || !import_obsidian25.Platform.isDesktop || import_obsidian25.Platform.isTablet || !this.plugin.settings.useSubmenus) { + if (!import_obsidian38.Platform.isDesktopApp || !import_obsidian38.Platform.isDesktop || import_obsidian38.Platform.isTablet || !this.plugin.settings.useSubmenus) { subMenu = menu; item.setDisabled(true); } else { subMenu = item.setSubmenu(); } - if (file instanceof import_obsidian25.TFile) { + if (file instanceof import_obsidian38.TFile) { subMenu.addItem((item2) => { item2.setTitle("Create folder note").setIcon("edit").onClick(async () => { if (!folder) @@ -4843,14 +6804,14 @@ ${newLines.join("\n")}\`\`\` newPath = file.basename; } if (this.plugin.app.vault.getAbstractFileByPath(newPath)) { - return new import_obsidian25.Notice("Folder already exists"); + return new import_obsidian38.Notice("Folder already exists"); } const automaticallyCreateFolderNote = this.plugin.settings.autoCreate; this.plugin.settings.autoCreate = false; this.plugin.saveSettings(); await this.plugin.app.vault.createFolder(newPath); const newFolder = this.plugin.app.vault.getAbstractFileByPath(newPath); - if (!(newFolder instanceof import_obsidian25.TFolder)) + if (!(newFolder instanceof import_obsidian38.TFolder)) return; await createFolderNote(this.plugin, newFolder.path, true, "." + file.extension, false, file); this.plugin.settings.autoCreate = automaticallyCreateFolderNote; @@ -4859,41 +6820,55 @@ ${newLines.join("\n")}\`\`\` }); if (getFolderPathFromString(file.path) === "") return; - if (!(folder instanceof import_obsidian25.TFolder)) + if (!(folder instanceof import_obsidian38.TFolder)) + return; + if (folder.path === "" || folder.path === "/") return; subMenu.addItem((item2) => { item2.setTitle(`Turn into folder note for ${folder == null ? void 0 : folder.name}`).setIcon("edit").onClick(() => { - if (!folder || !(folder instanceof import_obsidian25.TFolder)) + if (!folder || !(folder instanceof import_obsidian38.TFolder)) return; const folderNote2 = getFolderNote(this.plugin, folder.path); turnIntoFolderNote(this.plugin, file, folder, folderNote2); }); }); } - if (!(file instanceof import_obsidian25.TFolder)) + if (!(file instanceof import_obsidian38.TFolder)) return; - if (this.plugin.settings.excludeFolders.find((folder2) => folder2.path === file.path)) { + const excludedFolder = getExcludedFolder(this.plugin, file.path, false); + const detachedExcludedFolder = getDetachedFolder(this.plugin, file.path); + if (excludedFolder && !excludedFolder.hideInSettings) { subMenu.addItem((item2) => { item2.setTitle("Remove folder from excluded folders").setIcon("trash").onClick(() => { - this.plugin.settings.excludeFolders = this.plugin.settings.excludeFolders.filter((folder2) => folder2.path !== file.path); - this.plugin.saveSettings(); - new import_obsidian25.Notice("Successfully removed folder from excluded folders"); + this.plugin.settings.excludeFolders = this.plugin.settings.excludeFolders.filter((folder2) => folder2.path !== file.path || folder2.detached); + this.plugin.saveSettings(true); + new import_obsidian38.Notice("Successfully removed folder from excluded folders"); }); }); return; } + if (detachedExcludedFolder) { + subMenu.addItem((item2) => { + item2.setTitle("Remove folder from detached folders").setIcon("trash").onClick(() => { + deleteExcludedFolder(this.plugin, detachedExcludedFolder); + }); + }); + } + if (detachedExcludedFolder) { + return; + } subMenu.addItem((item2) => { item2.setTitle("Exclude folder from folder notes").setIcon("x-circle").onClick(() => { - const excludedFolder = new ExcludedFolder(file.path, this.plugin.settings.excludeFolders.length, this.plugin); - this.plugin.settings.excludeFolders.push(excludedFolder); - this.plugin.saveSettings(); - new import_obsidian25.Notice("Successfully excluded folder from folder notes"); + const excludedFolder2 = new ExcludedFolder(file.path, this.plugin.settings.excludeFolders.length, void 0, this.plugin); + this.plugin.settings.excludeFolders.push(excludedFolder2); + this.plugin.saveSettings(true); + new import_obsidian38.Notice("Successfully excluded folder from folder notes"); }); }); - if (!(file instanceof import_obsidian25.TFolder)) + if (!(file instanceof import_obsidian38.TFolder)) return; const folderNote = getFolderNote(this.plugin, file.path); - if (folderNote instanceof import_obsidian25.TFile) { + if (folderNote instanceof import_obsidian38.TFile && !detachedExcludedFolder) { subMenu.addItem((item2) => { item2.setTitle("Delete folder note").setIcon("trash").onClick(() => { deleteFolderNote(this.plugin, folderNote, true); @@ -4904,11 +6879,31 @@ ${newLines.join("\n")}\`\`\` openFolderNote(this.plugin, folderNote); }); }); + subMenu.addItem((item2) => { + item2.setTitle("Detach folder note").setIcon("unlink").onClick(() => { + detachFolderNote(this.plugin, folderNote); + }); + }); subMenu.addItem((item2) => { item2.setTitle("Copy Obsidian URL").setIcon("link").onClick(() => { this.app.copyObsidianUrl(folderNote); }); }); + if (this.plugin.settings.hideFolderNote) { + if (excludedFolder == null ? void 0 : excludedFolder.showFolderNote) { + subMenu.addItem((item2) => { + item2.setTitle("Hide folder note in explorer").setIcon("eye-off").onClick(() => { + hideFolderNoteInFileExplorer(file.path, this.plugin); + }); + }); + } else { + subMenu.addItem((item2) => { + item2.setTitle("Show folder note in explorer").setIcon("eye").onClick(() => { + showFolderNoteInFileExplorer(file.path, this.plugin); + }); + }); + } + } } else { subMenu.addItem((item2) => { item2.setTitle("Create markdown folder note").setIcon("edit").onClick(() => { @@ -4931,46 +6926,22 @@ ${newLines.join("\n")}\`\`\` editorCommands() { this.plugin.registerEvent(this.plugin.app.workspace.on("editor-menu", (menu, editor, view) => { const text = editor.getSelection().trim(); - const line = editor.getCursor().line; - const lineText = editor.getLine(line); - if (lineText.trim() === "" || lineText.trim() === ">") { - menu.addItem((item) => { - item.setTitle("Create folder overview").setIcon("edit").onClick(() => { - let json = Object.assign({}, this.plugin.settings.defaultOverview); - json.id = crypto.randomUUID(); - const yaml = (0, import_obsidian25.stringifyYaml)(json); - if (lineText.trim() === "") { - editor.replaceSelection(`\`\`\`folder-overview -${yaml}\`\`\` -`); - } else if (lineText.trim() === ">") { - const lines = yaml.split("\n"); - const newLines = lines.map((line2) => { - return `> ${line2}`; - }); - editor.replaceSelection(`\`\`\`folder-overview -${newLines.join("\n")}\`\`\` -`); - } - }); - }); - } if (!text || text.trim() === "") return; menu.addItem((item) => { item.setTitle("Create folder note").setIcon("edit").onClick(() => { const file = view.file; - if (!(file instanceof import_obsidian25.TFile)) + if (!(file instanceof import_obsidian38.TFile)) return; const blacklist = ["*", "\\", '"', "/", "<", ">", "?", "|", ":"]; for (const char of blacklist) { if (text.includes(char)) { - new import_obsidian25.Notice('File name cannot contain any of the following characters: * " \\ / < > : | ?'); + new import_obsidian38.Notice('File name cannot contain any of the following characters: * " \\ / < > : | ?'); return; } } if (text.endsWith(".")) { - new import_obsidian25.Notice("File name cannot end with a dot"); + new import_obsidian38.Notice("File name cannot end with a dot"); return; } let folder; @@ -4978,20 +6949,20 @@ ${newLines.join("\n")}\`\`\` const fileName = this.plugin.settings.folderNoteName.replace("{{folder_name}}", text); if (folderPath === "") { folder = this.plugin.app.vault.getAbstractFileByPath(text); - if (folder instanceof import_obsidian25.TFolder) { - return new import_obsidian25.Notice("Folder note already exists"); + if (folder instanceof import_obsidian38.TFolder) { + return new import_obsidian38.Notice("Folder note already exists"); } else { this.plugin.app.vault.createFolder(text); createFolderNote(this.plugin, text, false); } } else { folder = this.plugin.app.vault.getAbstractFileByPath(folderPath + "/" + text); - if (folder instanceof import_obsidian25.TFolder) { - return new import_obsidian25.Notice("Folder note already exists"); + if (folder instanceof import_obsidian38.TFolder) { + return new import_obsidian38.Notice("Folder note already exists"); } if (this.plugin.settings.storageLocation === "parentFolder") { if (this.app.vault.getAbstractFileByPath(folderPath + "/" + fileName + this.plugin.settings.folderNoteType)) { - return new import_obsidian25.Notice("File already exists"); + return new import_obsidian38.Notice("File already exists"); } } this.plugin.app.vault.createFolder(folderPath + "/" + text); @@ -5008,9 +6979,15 @@ ${newLines.join("\n")}\`\`\` } }; +// src/events/MutationObserver.ts +var import_obsidian40 = require("obsidian"); + // src/events/handleClick.ts -var import_obsidian26 = require("obsidian"); +var import_obsidian39 = require("obsidian"); async function handleViewHeaderClick(event, plugin) { + event.stopImmediatePropagation(); + event.preventDefault(); + event.stopPropagation(); if (!(event.target instanceof HTMLElement)) return; if (!plugin.settings.openFolderNoteOnClickInPath) @@ -5019,7 +6996,7 @@ async function handleViewHeaderClick(event, plugin) { if (!folderPath) { return; } - const excludedFolder = getExcludedFolder(plugin, folderPath); + const excludedFolder = getExcludedFolder(plugin, folderPath, true); if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) { event.target.onclick = null; event.target.click(); @@ -5030,216 +7007,339 @@ async function handleViewHeaderClick(event, plugin) { } const folderNote = getFolderNote(plugin, folderPath); if (folderNote) { - return openFolderNote(plugin, folderNote, event); - } else if (event.altKey || import_obsidian26.Keymap.isModEvent(event) === "tab") { - if (plugin.settings.altKey && event.altKey || plugin.settings.ctrlKey && import_obsidian26.Keymap.isModEvent(event) === "tab") { + await openFolderNote(plugin, folderNote, event).then(async () => { + const fileExplorerPlugin = plugin.app.internalPlugins.getEnabledPluginById("file-explorer"); + if (fileExplorerPlugin && import_obsidian39.Platform.isMobile && plugin.settings.openSidebar.mobile) { + setTimeout(() => { + fileExplorerPlugin.revealInFolder(folderNote); + }, 200); + } else if (fileExplorerPlugin && import_obsidian39.Platform.isDesktop && plugin.settings.openSidebar.desktop) { + fileExplorerPlugin.revealInFolder(folderNote); + } + }); + return; + } else if (event.altKey || import_obsidian39.Keymap.isModEvent(event) === "tab") { + if (plugin.settings.altKey && event.altKey || plugin.settings.ctrlKey && import_obsidian39.Keymap.isModEvent(event) === "tab") { await createFolderNote(plugin, folderPath, true, void 0, true); - addCSSClassToTitleEL(folderPath, "has-folder-note"); - removeCSSClassFromEL(folderPath, "has-not-folder-note"); + addCSSClassToFileExplorerEl(folderPath, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folderPath, "has-not-folder-note", false, plugin); return; } } event.target.onclick = null; event.target.click(); } -async function handleFolderClick(event, plugin) { - var _a, _b, _c; - if (!(event.target instanceof HTMLElement)) - return; - if (!event || !event.target) - return; - event.stopImmediatePropagation(); - const folderPath = (_a = event.target.parentElement) == null ? void 0 : _a.getAttribute("data-path"); - if (!folderPath) { - return; - } - const excludedFolder = getExcludedFolder(plugin, folderPath); - if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) { - event.target.onclick = null; - event.target.click(); - return; - } else if ((excludedFolder == null ? void 0 : excludedFolder.enableCollapsing) || plugin.settings.enableCollapsing) { - event.target.onclick = null; - event.target.click(); - } - const folderNote = getFolderNote(plugin, folderPath); - if (folderNote) { - if (plugin.settings.openByClick) { - return openFolderNote(plugin, folderNote, event); - } else if (plugin.settings.openWithCtrl && import_obsidian26.Keymap.isModEvent(event) === "tab") { - return openFolderNote(plugin, folderNote, event); - } else if (plugin.settings.openWithAlt && event.altKey) { - return openFolderNote(plugin, folderNote, event); - } else { - if (plugin.settings.enableCollapsing) - return; - (_b = event.target.parentElement) == null ? void 0 : _b.click(); - return; - } - } else if (event.altKey || import_obsidian26.Keymap.isModEvent(event) === "tab") { - if (plugin.settings.altKey && event.altKey || plugin.settings.ctrlKey && import_obsidian26.Keymap.isModEvent(event) === "tab") { - await createFolderNote(plugin, folderPath, true, void 0, true); - addCSSClassToTitleEL(folderPath, "has-folder-note"); - removeCSSClassFromEL(folderPath, "has-not-folder-note"); - return; - } - } else if (!folderNote) { - if (plugin.settings.enableCollapsing) - return; - return (_c = event.target.parentElement) == null ? void 0 : _c.click(); - } - event.target.onclick = null; - event.target.click(); -} // src/events/MutationObserver.ts -var import_obsidian27 = require("obsidian"); -async function addObserver(plugin) { - plugin.observer = new MutationObserver((mutations) => { - mutations.forEach((rec) => { - if (rec.type === "childList") { - rec.target.querySelectorAll("div.nav-folder-title-content").forEach((element) => { - var _a; - if (element.onclick) - return; - if (import_obsidian27.Platform.isMobile && plugin.settings.disableOpenFolderNoteOnClick) - return; - const folderPath = ((_a = element.parentElement) == null ? void 0 : _a.getAttribute("data-path")) || ""; - const apply = applyCSSClassesToFolder(folderPath, plugin); - element.addEventListener("auxclick", (event) => { - if (event.button == 1) { - handleFolderClick(event, plugin); - } - }, { capture: true }); - element.onclick = (event) => handleFolderClick(event, plugin); - plugin.registerDomEvent(element, "pointerover", (event) => { - var _a2, _b; - plugin.hoveredElement = element; - plugin.mouseEvent = event; - if (!import_obsidian27.Keymap.isModEvent(event)) - return; - if (!(event.target instanceof HTMLElement)) - return; - const folderPath2 = ((_b = (_a2 = event == null ? void 0 : event.target) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.getAttribute("data-path")) || ""; - const folderNote = getFolderNote(plugin, folderPath2); - if (!folderNote) - return; - plugin.app.workspace.trigger("hover-link", { - event, - source: "preview", - hoverParent: { - file: folderNote - }, - targetEl: event.target, - linktext: folderNote == null ? void 0 : folderNote.basename, - sourcePath: folderNote == null ? void 0 : folderNote.path - }); - plugin.hoverLinkTriggered = true; - }); - plugin.registerDomEvent(element, "pointerout", () => { - plugin.hoveredElement = null; - plugin.mouseEvent = null; - plugin.hoverLinkTriggered = false; - }); - }); - if (!plugin.settings.openFolderNoteOnClickInPath) { - return; - } - rec.target.querySelectorAll("span.view-header-breadcrumb").forEach((element) => { - var _a, _b; - const breadcrumbs = (_a = element.parentElement) == null ? void 0 : _a.querySelectorAll("span.view-header-breadcrumb"); - if (!breadcrumbs) - return; - let path = ""; - breadcrumbs.forEach((breadcrumb) => { - var _a2; - if (breadcrumb.hasAttribute("old-name")) { - path += breadcrumb.getAttribute("old-name") + "/"; - } else { - path += breadcrumb.innerText.trim() + "/"; - } - const folderPath = path.slice(0, -1); - breadcrumb.setAttribute("data-path", folderPath); - const folder = (_a2 = plugin.fmtpHandler) == null ? void 0 : _a2.modifiedFolders.get(folderPath); - if (folder && plugin.settings.frontMatterTitle.path && plugin.settings.frontMatterTitle.enabled) { - breadcrumb.setAttribute("old-name", folder.name || ""); - breadcrumb.innerText = folder.newName || ""; - } - const folderNote = getFolderNote(plugin, folderPath); - if (folderNote) { - breadcrumb.classList.add("has-folder-note"); - } - }); - (_b = element.parentElement) == null ? void 0 : _b.setAttribute("data-path", path.slice(0, -1)); - if (breadcrumbs.length > 0) { - breadcrumbs.forEach((breadcrumb) => { - if (breadcrumb.onclick) - return; - breadcrumb.onclick = (event) => handleViewHeaderClick(event, plugin); - }); - } - }); - } - }); +var fileExplorerMutationObserver = null; +function registerFileExplorerObserver(plugin) { + plugin.app.workspace.onLayoutReady(() => { + initializeFolderNoteFeatures(plugin); + initializeBreadcrumbs(plugin); }); + plugin.registerEvent(plugin.app.workspace.on("layout-change", () => { + var _a; + initializeFolderNoteFeatures(plugin); + const activeLeaf = (_a = plugin.app.workspace.getActiveFileView()) == null ? void 0 : _a.containerEl; + if (!activeLeaf) + return; + const titleContainer = activeLeaf.querySelector(".view-header-title-container"); + if (!(titleContainer instanceof HTMLElement)) + return; + updateFolderNamesInPath(plugin, titleContainer); + })); +} +function unregisterFileExplorerObserver() { + if (fileExplorerMutationObserver) { + fileExplorerMutationObserver.disconnect(); + fileExplorerMutationObserver = null; + } +} +function initializeFolderNoteFeatures(plugin) { + initializeAllFolderTitles(plugin); + observeFolderTitleMutations(plugin); +} +function initializeBreadcrumbs(plugin) { + const titleContainers = document.querySelectorAll(".view-header-title-container"); + if (!titleContainers.length) + return; + titleContainers.forEach((container) => { + if (!(container instanceof HTMLElement)) + return; + scheduleIdle(() => updateFolderNamesInPath(plugin, container), { timeout: 1e3 }); + }); +} +function observeFolderTitleMutations(plugin) { + if (fileExplorerMutationObserver) { + fileExplorerMutationObserver.disconnect(); + } + fileExplorerMutationObserver = new MutationObserver((mutations) => { + for (const mutation of mutations) { + for (const node of Array.from(mutation.addedNodes)) { + if (!(node instanceof HTMLElement)) + continue; + processAddedFolders(node, plugin); + } + } + }); + fileExplorerMutationObserver.observe(document, { childList: true, subtree: true }); +} +function initializeAllFolderTitles(plugin) { + const allTitles = document.querySelectorAll(".nav-folder-title-content"); + for (const title of Array.from(allTitles)) { + const folderTitle = title; + const folderEl = folderTitle.closest(".nav-folder-title"); + if (!folderEl) + continue; + const folderPath = folderEl.getAttribute("data-path") || ""; + setupFolderTitle(folderTitle, plugin, folderPath); + } +} +function processAddedFolders(node, plugin) { + const titles = []; + if (node.matches(".nav-folder-title-content")) { + titles.push(node); + } + node.querySelectorAll(".nav-folder-title-content").forEach((el) => { + titles.push(el); + }); + titles.forEach((folderTitle) => { + const folderEl = folderTitle.closest(".nav-folder-title"); + const folderPath = (folderEl == null ? void 0 : folderEl.getAttribute("data-path")) || ""; + if (!folderEl || !folderPath) { + setTimeout(() => { + const retryFolderEl = folderTitle.closest(".nav-folder-title"); + const retryFolderPath = (retryFolderEl == null ? void 0 : retryFolderEl.getAttribute("data-path")) || ""; + if (retryFolderEl && retryFolderPath) { + setupFolderTitle(folderTitle, plugin, retryFolderPath); + } + }, 50); + return; + } + setupFolderTitle(folderTitle, plugin, folderPath); + }); +} +async function setupFolderTitle(folderTitle, plugin, folderPath) { + var _a; + if (folderTitle.dataset.initialized === "true") + return; + if (!folderPath) + return; + folderTitle.dataset.initialized = "true"; + await updateCSSClassesForFolder(folderPath, plugin); + if (plugin.settings.frontMatterTitle.enabled) { + (_a = plugin.fmtpHandler) == null ? void 0 : _a.fmptUpdateFolderName({ id: "", result: false, path: folderPath, pathOnly: false }, false); + } + if (import_obsidian40.Platform.isMobile && plugin.settings.disableOpenFolderNoteOnClick) + return; + plugin.registerDomEvent(folderTitle, "pointerover", (event) => { + plugin.hoveredElement = folderTitle; + plugin.mouseEvent = event; + if (!import_obsidian40.Keymap.isModEvent(event)) + return; + if (!(event.target instanceof HTMLElement)) + return; + const folderNote = getFolderNote(plugin, folderPath); + if (!folderNote) + return; + plugin.app.workspace.trigger("hover-link", { + event, + source: "preview", + hoverParent: { file: folderNote }, + targetEl: event.target, + linktext: folderNote.basename, + sourcePath: folderNote.path + }); + plugin.hoverLinkTriggered = true; + }); + plugin.registerDomEvent(folderTitle, "pointerout", () => { + plugin.hoveredElement = null; + plugin.mouseEvent = null; + plugin.hoverLinkTriggered = false; + }); +} +async function updateFolderNamesInPath(plugin, titleContainer) { + const headers = titleContainer.querySelectorAll("span.view-header-breadcrumb"); + let path = ""; + headers.forEach(async (breadcrumb) => { + var _a, _b; + path += (_a = breadcrumb.getAttribute("old-name")) != null ? _a : breadcrumb.innerText.trim(); + path += "/"; + const folderPath = path.slice(0, -1); + const excludedFolder = getExcludedFolder(plugin, folderPath, true); + if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) + return; + const folderNote = getFolderNote(plugin, folderPath); + if (!folderNote) + return; + if (folderNote) + breadcrumb.classList.add("has-folder-note"); + breadcrumb == null ? void 0 : breadcrumb.setAttribute("data-path", path.slice(0, -1)); + if (!breadcrumb.onclick) { + breadcrumb.addEventListener("click", (e) => { + handleViewHeaderClick(e, plugin); + }, { capture: true }); + } + if (plugin.settings.frontMatterTitle.enabled) { + (_b = plugin.fmtpHandler) == null ? void 0 : _b.fmptUpdateFolderName({ id: "", result: false, path: folderPath, pathOnly: true, breadcrumb }, true); + } + }); +} +function scheduleIdle(callback, options) { + if ("requestIdleCallback" in window) { + window.requestIdleCallback(callback, options); + } else { + setTimeout(callback, (options == null ? void 0 : options.timeout) || 200); + } } // src/events/handleRename.ts -var import_obsidian28 = require("obsidian"); +var import_obsidian41 = require("obsidian"); function handleRename(file, oldPath, plugin) { - if (!plugin.settings.syncFolderName) { - removeCSSClassFromEL(file.path, "has-folder-note"); - removeCSSClassFromEL(file.path, "is-folder-note"); - return; - } const folder = file.parent; const oldFolder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(oldPath)); - if (folder instanceof import_obsidian28.TFolder) { - if (plugin.isEmptyFolderNoteFolder(folder)) { - addCSSClassToTitleEL(folder.path, "only-has-folder-note"); + if (folder instanceof import_obsidian41.TFolder) { + if (plugin.isEmptyFolderNoteFolder(folder) && getFolderNote(plugin, folder.path)) { + addCSSClassToFileExplorerEl(folder.path, "only-has-folder-note", true, plugin); } else { - removeCSSClassFromEL(folder.path, "only-has-folder-note"); + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); } } - if (oldFolder instanceof import_obsidian28.TFolder) { - if (plugin.isEmptyFolderNoteFolder(oldFolder)) { - addCSSClassToTitleEL(oldFolder.path, "only-has-folder-note"); + if (oldFolder instanceof import_obsidian41.TFolder) { + if (plugin.isEmptyFolderNoteFolder(oldFolder) && getFolderNote(plugin, oldFolder.path)) { + addCSSClassToFileExplorerEl(oldFolder.path, "only-has-folder-note", true, plugin); } else { - removeCSSClassFromEL(oldFolder.path, "only-has-folder-note"); + removeCSSClassFromFileExplorerEL(oldFolder.path, "only-has-folder-note", true, plugin); } } - if (file instanceof import_obsidian28.TFolder) { - plugin.tabManager.updateTab(file.path); - return handleFolderRename(file, oldPath, plugin); - } else if (file instanceof import_obsidian28.TFile) { - return handleFileRename(file, oldPath, plugin); + if (file instanceof import_obsidian41.TFolder) { + const folder2 = file; + plugin.tabManager.updateTab(folder2.path); + updateExcludedFolderPath(folder2, oldPath, plugin); + if (isFolderRename(folder2, oldPath)) { + return handleFolderRename(folder2, oldPath, plugin); + } else { + return handleFolderMove(folder2, oldPath, plugin); + } + } else if (file instanceof import_obsidian41.TFile) { + if (isFileRename(file, oldPath)) { + return fmptUpdateFileName(file, oldPath, plugin); + } else { + return handleFileMove(file, oldPath, plugin); + } } } -function handleFolderRename(file, oldPath, plugin) { +function isFileRename(file, oldPath) { + var _a; + const oldFolderPath = getFolderPathFromString(oldPath); + const newFolderPath = (_a = file.parent) == null ? void 0 : _a.path; + const oldName = getFileNameFromPathString(oldPath); + const newName = file.name; + return oldFolderPath === newFolderPath && oldName !== newName; +} +function isFolderRename(folder, oldPath) { + var _a; + const oldName = getFileNameFromPathString(oldPath); + const newName = folder.name; + const oldParent = getFolderPathFromString(oldPath); + const newParent = (_a = folder.parent) == null ? void 0 : _a.path; + return oldParent === newParent && oldName !== newName; +} +function handleFolderMove(file, oldPath, plugin) { + var _a; + if (plugin.settings.storageLocation === "insideFolder") { + return; + } + if (!plugin.settings.syncMove) { + return; + } + const folderNote = getFolderNote(plugin, oldPath, plugin.settings.storageLocation); + if (!(file instanceof import_obsidian41.TFolder) || !folderNote) + return; + const newFolder = plugin.app.vault.getAbstractFileByPath(file.path); + if (!(newFolder instanceof import_obsidian41.TFolder)) + return; + let newPath = folderNote.path; + if (newFolder.path === "/") { + newPath = folderNote.name; + } else { + newPath = `${(_a = newFolder.parent) == null ? void 0 : _a.path}/${folderNote.name}`; + } + plugin.app.fileManager.renameFile(folderNote, newPath); +} +async function handleFileMove(file, oldPath, plugin) { + var _a; + const folderName = extractFolderName(plugin.settings.folderNoteName, file.basename) || file.basename; + const oldFileName = removeExtension(getFileNameFromPathString(oldPath)); + const newFolder = getFolderNoteFolder(plugin, file, file.basename); + let excludedFolder = getExcludedFolder(plugin, (newFolder == null ? void 0 : newFolder.path) || "", true); + const oldFolder = getFolderNoteFolder(plugin, oldPath, oldFileName); + const folderNote = getFolderNote(plugin, oldPath, plugin.settings.storageLocation, file); + const isFileNowFolderNoteInNewFolder = folderName === (newFolder == null ? void 0 : newFolder.name); + const isFileMovedFromOldFolderNote = oldFolder && oldFolder.name === oldFileName && (newFolder == null ? void 0 : newFolder.path) !== oldFolder.path; + const isFileNowFolderNoteWithExistingNote = folderName === (newFolder == null ? void 0 : newFolder.name) && folderNote; + if (isFileNowFolderNoteWithExistingNote) { + let excludedFolderExisted = true; + let disabledSync = false; + if (!excludedFolder) { + excludedFolderExisted = false; + excludedFolder = new ExcludedFolder((oldFolder == null ? void 0 : oldFolder.path) || "", plugin.settings.excludeFolders.length, void 0, plugin); + addExcludedFolder(plugin, excludedFolder); + } else if (!excludedFolder.disableSync) { + disabledSync = false; + excludedFolder.disableSync = true; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + } + return plugin.app.fileManager.renameFile(file, oldPath).then(() => { + if (!excludedFolder) { + return; + } + if (!excludedFolderExisted) { + deleteExcludedFolder(plugin, excludedFolder); + } else if (!disabledSync) { + excludedFolder.disableSync = false; + updateExcludedFolder(plugin, excludedFolder, excludedFolder); + } + }); + } else if (isFileNowFolderNoteInNewFolder) { + if (!(excludedFolder == null ? void 0 : excludedFolder.disableFolderNote)) { + markFileAsFolderNote(file, plugin); + if (newFolder instanceof import_obsidian41.TFolder) { + markFolderWithFolderNoteClasses(newFolder, plugin); + if (((_a = plugin.app.workspace.getActiveFile()) == null ? void 0 : _a.path) === file.path) { + removeActiveFolder(plugin); + setActiveFolder(newFolder.path, plugin); + } + } + if (oldFolder instanceof import_obsidian41.TFolder) { + hideFolderNoteInFileExplorer(oldFolder.path, plugin); + unmarkFolderAsFolderNote(oldFolder, plugin); + } + } + } else if (isFileMovedFromOldFolderNote) { + unmarkFileAsFolderNote(file, plugin); + if (oldFolder instanceof import_obsidian41.TFolder) { + removeActiveFolder(plugin); + hideFolderNoteInFileExplorer(oldFolder.path, plugin); + unmarkFolderAsFolderNote(oldFolder, plugin); + } + } +} +async function handleFolderRename(file, oldPath, plugin) { const fileName = plugin.settings.folderNoteName.replace("{{folder_name}}", file.name); - const folder = plugin.app.vault.getAbstractFileByPath(file.path); + const oldFileName = plugin.settings.folderNoteName.replace("{{folder_name}}", getFileNameFromPathString(oldPath)); + if (fileName === oldFileName) { + return; + } const folderNote = getFolderNote(plugin, oldPath); - if (!(folderNote instanceof import_obsidian28.TFile)) + if (!(folderNote instanceof import_obsidian41.TFile)) return; - if (!(folder instanceof import_obsidian28.TFolder)) - return; - const excludedFolders = plugin.settings.excludeFolders.filter((excludedFolder2) => excludedFolder2.path.includes(oldPath)); - excludedFolders.forEach((excludedFolder2) => { - if (excludedFolder2.path === oldPath) { - excludedFolder2.path = folder.path; - return; - } - const folders = excludedFolder2.path.split("/"); - if (folders.length < 1) { - folders.push(excludedFolder2.path); - } - folders[folders.indexOf(folder.name)] = folder.name; - excludedFolder2.path = folders.join("/"); - }); - plugin.saveSettings(); - const excludedFolder = getExcludedFolder(plugin, file.path); + const excludedFolder = getExcludedFolder(plugin, file.path, true); if ((excludedFolder == null ? void 0 : excludedFolder.disableSync) && !folderNote) { - return removeCSSClassFromEL(file.path, "has-folder-note"); + return removeCSSClassFromFileExplorerEL(file.path, "has-folder-note", false, plugin); + } + if (!plugin.settings.syncFolderName) { + return; } let newPath = ""; if (plugin.settings.storageLocation === "parentFolder") { @@ -5263,52 +7363,34 @@ function handleFolderRename(file, oldPath, plugin) { } plugin.app.fileManager.renameFile(folderNote, newPath); } -function handleFileRename(file, oldPath, plugin) { +async function fmptUpdateFileName(file, oldPath, plugin) { const oldFileName = removeExtension(getFileNameFromPathString(oldPath)); + const newFileName = file.basename; + if (oldFileName === newFileName) { + return; + } const oldFolder = getFolderNoteFolder(plugin, oldPath, oldFileName); const folderName = extractFolderName(plugin.settings.folderNoteName, file.basename) || file.basename; const oldFolderName = extractFolderName(plugin.settings.folderNoteName, oldFileName) || oldFileName; const newFolder = getFolderNoteFolder(plugin, file, file.basename); - let excludedFolder = getExcludedFolder(plugin, (newFolder == null ? void 0 : newFolder.path) || ""); + const excludedFolder = getExcludedFolder(plugin, (newFolder == null ? void 0 : newFolder.path) || "", true); + const detachedExcludedFolder = getDetachedFolder(plugin, (newFolder == null ? void 0 : newFolder.path) || ""); const folderNote = getFolderNote(plugin, oldPath, plugin.settings.storageLocation, file); - if ((excludedFolder == null ? void 0 : excludedFolder.disableSync) && folderName === (newFolder == null ? void 0 : newFolder.name)) { - addCSSClassToTitleEL(file.path, "is-folder-note"); - addCSSClassToTitleEL(newFolder.path, "has-folder-note"); - return; - } else if (excludedFolder == null ? void 0 : excludedFolder.disableSync) { - removeCSSClassFromEL(file.path, "is-folder-note"); - removeCSSClassFromEL((newFolder == null ? void 0 : newFolder.path) || "", "has-folder-note"); + if (!(excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) && folderName === (newFolder == null ? void 0 : newFolder.name) && !detachedExcludedFolder) { + addCSSClassToFileExplorerEl(file.path, "is-folder-note", false, plugin); + addCSSClassToFileExplorerEl(newFolder.path, "has-folder-note", false, plugin); return; + } else if ((excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) || folderName !== (newFolder == null ? void 0 : newFolder.name)) { + removeCSSClassFromFileExplorerEL(file.path, "is-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL((newFolder == null ? void 0 : newFolder.path) || "", "has-folder-note", false, plugin); } - if (folderName === (newFolder == null ? void 0 : newFolder.name) && folderNote) { - new import_obsidian28.Notice("Folder with same name already exists!"); - let excludedFolderExisted = true; - let disabledSync = false; - if (!excludedFolder) { - excludedFolderExisted = false; - excludedFolder = new ExcludedFolder((oldFolder == null ? void 0 : oldFolder.path) || "", plugin.settings.excludeFolders.length, plugin); - addExcludedFolder(plugin, excludedFolder); - } else if (!excludedFolder.disableSync) { - disabledSync = false; - excludedFolder.disableSync = true; - updateExcludedFolder(plugin, excludedFolder, excludedFolder); - } - return plugin.app.fileManager.renameFile(file, oldPath).then(() => { - if (!excludedFolder) { - return; - } - if (!excludedFolderExisted) { - deleteExcludedFolder(plugin, excludedFolder); - } else if (!disabledSync) { - excludedFolder.disableSync = false; - updateExcludedFolder(plugin, excludedFolder, excludedFolder); - } - }); + if ((excludedFolder == null ? void 0 : excludedFolder.disableSync) || !plugin.settings.syncFolderName) { + return; } if (folderName === (newFolder == null ? void 0 : newFolder.name)) { - addCSSClassToTitleEL(file.path, "is-folder-note"); - removeCSSClassFromEL(oldFolder == null ? void 0 : oldFolder.path, "has-folder-note"); - addCSSClassToTitleEL(newFolder.path, "has-folder-note"); + addCSSClassToFileExplorerEl(file.path, "is-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(oldFolder == null ? void 0 : oldFolder.path, "has-folder-note", false, plugin); + addCSSClassToFileExplorerEl(newFolder.path, "has-folder-note", false, plugin); return; } if (!oldFolder) @@ -5318,22 +7400,17 @@ function handleFileRename(file, oldPath, plugin) { } else if (folderNote && oldFolderName === oldFolder.name) { return renameFolderOnFileRename(file, oldPath, oldFolder, plugin); } - if (oldFolder.name === oldFileName && (newFolder == null ? void 0 : newFolder.path) !== oldFolder.path) { - removeCSSClassFromEL(oldFolder.path, "has-folder-note"); - removeCSSClassFromEL(file.path, "is-folder-note"); - removeCSSClassFromEL(oldPath, "is-folder-note"); - } } async function renameFolderOnFileRename(file, oldPath, oldFolder, plugin) { var _a, _b; const newFolderName = extractFolderName(plugin.settings.folderNoteName, file.basename); if (!newFolderName) { - removeCSSClassFromEL(oldFolder.path, "has-folder-note"); - removeCSSClassFromEL(file.path, "is-folder-note"); + removeCSSClassFromFileExplorerEL(oldFolder.path, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(file.path, "is-folder-note", false, plugin); return; } else if (newFolderName === oldFolder.name) { - addCSSClassToTitleEL(oldFolder.path, "has-folder-note"); - addCSSClassToTitleEL(file.path, "is-folder-note"); + addCSSClassToFileExplorerEl(oldFolder.path, "has-folder-note", false, plugin); + addCSSClassToFileExplorerEl(file.path, "is-folder-note", false, plugin); return; } let newFolderPath = ""; @@ -5353,54 +7430,104 @@ async function renameFolderOnFileRename(file, oldPath, oldFolder, plugin) { } if (plugin.app.vault.getAbstractFileByPath(newFolderPath)) { await plugin.app.fileManager.renameFile(file, oldPath); - return new import_obsidian28.Notice("A folder with the same name already exists"); + return new import_obsidian41.Notice("A folder with the same name already exists"); } plugin.app.fileManager.renameFile(oldFolder, newFolderPath); } +function updateExcludedFolderPath(folder, oldPath, plugin) { + const excludedFolders = plugin.settings.excludeFolders.filter((excludedFolder) => { + var _a; + return (_a = excludedFolder.path) == null ? void 0 : _a.includes(oldPath); + }); + excludedFolders.forEach((excludedFolder) => { + if (excludedFolder.path === oldPath) { + excludedFolder.path = folder.path; + return; + } + if (!excludedFolder.path) + return; + const folders = excludedFolder.path.split("/"); + if (folders.length < 1) { + folders.push(excludedFolder.path); + } + folders[folders.indexOf(folder.name)] = folder.name; + excludedFolder.path = folders.join("/"); + }); + plugin.saveSettings(); +} // src/events/handleCreate.ts -var import_obsidian29 = require("obsidian"); -function handleCreate(file, plugin) { +var import_obsidian42 = require("obsidian"); +async function handleCreate(file, plugin) { if (!plugin.app.workspace.layoutReady) return; const folder = file.parent; - if (folder instanceof import_obsidian29.TFolder) { - if (plugin.isEmptyFolderNoteFolder(folder)) { - addCSSClassToTitleEL(folder.path, "only-has-folder-note"); + if (folder instanceof import_obsidian42.TFolder) { + if (plugin.isEmptyFolderNoteFolder(folder) && getFolderNote(plugin, folder.path)) { + addCSSClassToFileExplorerEl(folder.path, "only-has-folder-note", true, plugin); } else { - removeCSSClassFromEL(folder.path, "only-has-folder-note"); + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); } } - if (file instanceof import_obsidian29.TFile) { - const folder2 = getFolder2(plugin, file); - if (!(folder2 instanceof import_obsidian29.TFolder)) { + if (file instanceof import_obsidian42.TFile) { + handleFileCreation(file, plugin); + } else if (file instanceof import_obsidian42.TFolder && plugin.settings.autoCreate) { + handleFolderCreation(file, plugin); + } +} +async function handleFileCreation(file, plugin) { + const folder = getFolder(plugin, file); + if (!(folder instanceof import_obsidian42.TFolder) && plugin.settings.autoCreateForFiles) { + if (!file.parent) { return; } - const folderNote2 = getFolderNote(plugin, folder2.path); - if (folderNote2 && folderNote2.path === file.path) { - addCSSClassToTitleEL(folder2.path, "has-folder-note"); - addCSSClassToTitleEL(file.path, "is-folder-note"); + const newFolder = await plugin.app.fileManager.createNewFolder(file.parent); + turnIntoFolderNote(plugin, file, newFolder); + } else if (folder instanceof import_obsidian42.TFolder) { + if (folder.children.length >= 1) { + removeCSSClassFromFileExplorerEL(folder.path, "fn-empty-folder", false, plugin); + } + const detachedFolder = getExcludedFolder(plugin, folder.path, true); + if (detachedFolder) { return; } + const folderNote = getFolderNote(plugin, folder.path); + if (folderNote && folderNote.path === file.path) { + addCSSClassToFileExplorerEl(folder.path, "has-folder-note", false, plugin); + addCSSClassToFileExplorerEl(file.path, "is-folder-note", false, plugin); + } else if (plugin.settings.autoCreateForFiles) { + if (!file.parent) { + return; + } + const newFolder = await plugin.app.fileManager.createNewFolder(file.parent); + turnIntoFolderNote(plugin, file, newFolder); + } } - if (!plugin.app.workspace.layoutReady) - return; - if (!(file instanceof import_obsidian29.TFolder)) - return; - if (!plugin.settings.autoCreate) - return; - const excludedFolder = getExcludedFolder(plugin, file.path); +} +async function handleFolderCreation(folder, plugin) { + let openFile = plugin.settings.autoCreateFocusFiles; + const attachmentFolderPath = plugin.app.vault.getConfig("attachmentFolderPath"); + const cleanAttachmentFolderPath = (attachmentFolderPath == null ? void 0 : attachmentFolderPath.replace("./", "")) || ""; + const attachmentsAreInRootFolder = attachmentFolderPath === "./" || attachmentFolderPath === ""; + addCSSClassToFileExplorerEl(folder.path, "fn-empty-folder", false, plugin); + if (!plugin.settings.autoCreateForAttachmentFolder) { + if (!attachmentsAreInRootFolder && cleanAttachmentFolderPath === folder.name) + return; + } else if (!attachmentsAreInRootFolder && cleanAttachmentFolderPath === folder.name) { + openFile = false; + } + const excludedFolder = getExcludedFolder(plugin, folder.path, true); if (excludedFolder == null ? void 0 : excludedFolder.disableAutoCreate) return; - const folderNote = getFolderNote(plugin, file.path); + const folderNote = getFolderNote(plugin, folder.path); if (folderNote) return; - createFolderNote(plugin, file.path, true, void 0, true); - addCSSClassToTitleEL(file.path, "has-folder-note"); + createFolderNote(plugin, folder.path, openFile, void 0, true); + addCSSClassToFileExplorerEl(folder.path, "has-folder-note", false, plugin); } // src/events/TabManager.ts -var import_obsidian30 = require("obsidian"); +var import_obsidian43 = require("obsidian"); var TabManager = class { constructor(plugin) { this.plugin = plugin; @@ -5411,7 +7538,7 @@ var TabManager = class { return; this.app.workspace.iterateAllLeaves((leaf) => { var _a; - if (!(leaf.view instanceof import_obsidian30.EditableFileView)) + if (!(leaf.view instanceof import_obsidian43.EditableFileView)) return; const file = (_a = leaf.view) == null ? void 0 : _a.file; if (!file) @@ -5424,12 +7551,12 @@ var TabManager = class { return; this.app.workspace.iterateAllLeaves((leaf) => { var _a; - if (!(leaf.view instanceof import_obsidian30.EditableFileView)) + if (!(leaf.view instanceof import_obsidian43.EditableFileView)) return; const file = (_a = leaf.view) == null ? void 0 : _a.file; if (!file) return; - const folder = getFolder2(this.plugin, file); + const folder = getFolder(this.plugin, file); if (!folder) return; leaf.tabHeaderInnerTitleEl.setText(folder.name); @@ -5439,14 +7566,14 @@ var TabManager = class { if (!this.isEnabled()) return; const folder = this.app.vault.getAbstractFileByPath(folderPath); - if (!(folder instanceof import_obsidian30.TFolder)) + if (!(folder instanceof import_obsidian43.TFolder)) return; const folderNote = getFolderNote(this.plugin, folder.path); if (!folderNote) return; this.app.workspace.iterateAllLeaves((leaf) => { var _a; - if (!(leaf.view instanceof import_obsidian30.EditableFileView)) + if (!(leaf.view instanceof import_obsidian43.EditableFileView)) return; const file = (_a = leaf.view) == null ? void 0 : _a.file; if (!file) @@ -5457,139 +7584,25 @@ var TabManager = class { }); } isEnabled() { - if (this.plugin.settings.folderNoteName == "{{folder_name}}") + if (this.plugin.settings.folderNoteName === "{{folder_name}}") return false; return this.plugin.settings.tabManagerEnabled; } }; -// src/functions/ListComponent.ts -var import_obsidian31 = require("obsidian"); -var ListComponent = class { - constructor(containerEl) { - this.containerEl = containerEl; - this.controlEl = containerEl.querySelector(".setting-item-control") || containerEl; - this.listEl = this.controlEl.createDiv("setting-command-hotkeys"); - } - addModal(modal) { - this.modal = modal; - this.values = modal.yaml.includeTypes || []; - return this; - } - addSettings(settings) { - this.settings = settings; - return this; - } - setValues(values) { - this.listEl.empty(); - this.values = values; - if (this.modal) { - this.modal.yaml.includeTypes = values; - } - if (values.length !== 0) { - values.forEach((value) => { - this.addElement(value); - }); - } - if (this.modal && this.modal.defaultSettings) { - this.modal.plugin.saveSettings(); - return this; - } else if (this.settings) { - this.settings.plugin.settings.supportedFileTypes = values; - this.settings.plugin.saveSettings(); - return this; - } - if (!this.modal) - return this; - updateYaml(this.modal.plugin, this.modal.ctx, this.modal.el, this.modal.yaml); - return this; - } - addElement(value) { - this.listEl.createSpan("setting-hotkey", (span) => { - if (value.toLocaleLowerCase() === "md") { - span.innerText = "markdown"; - } else { - span.innerText = value; - } - const removeSpan = span.createEl("span", { cls: "ofn-list-item-remove setting-hotkey-icon" }); - const svg = ''; - const svgElement = removeSpan.createEl("span", { cls: "ofn-list-item-remove-icon" }); - svgElement.innerHTML = svg; - removeSpan.onClickEvent((e) => { - this.removeValue(value); - span.remove(); - }); - }); - } - async addValue(value) { - this.values.push(value); - this.addElement(value); - if (this.settings) { - this.settings.plugin.settings.supportedFileTypes = this.values; - this.settings.plugin.saveSettings(); - } - if (!this.modal) - return this; - this.modal.yaml.includeTypes = this.values; - return this; - } - addResetButton() { - const resetButton = this.controlEl.createEl("span", { cls: "clickable-icon setting-restore-hotkey-button" }); - const svg = ''; - resetButton.innerHTML = svg; - resetButton.onClickEvent((e) => { - if (this.modal) { - this.modal.plugin.loadSettings(); - this.setValues(this.modal.plugin.settings.defaultOverview.includeTypes || []); - this.modal.display(); - } else if (this.settings) { - this.setValues(["md", "canvas"]); - this.settings.display(); - } - }); - return this; - } - removeValue(value) { - if (value === "all") { - if (this.modal) { - this.modal.plugin.loadSettings(); - this.setValues(this.modal.plugin.settings.defaultOverview.includeTypes || []); - this.modal.display(); - } else if (this.settings) { - this.setValues(["md", "canvas"]); - this.settings.display(); - } - } else { - this.values = this.values.filter((v) => v !== value); - this.setValues(this.values); - if (this.modal) { - this.modal.display(); - } else if (this.settings) { - this.settings.display(); - } - } - } -}; -function createList(cb) { - const list = new ListComponent(this.settingEl); - cb(list); - return list; -} -import_obsidian31.Setting.prototype.createList = createList; - // src/events/handleDelete.ts -var import_obsidian32 = require("obsidian"); +var import_obsidian44 = require("obsidian"); function handleDelete(file, plugin) { const folder = plugin.app.vault.getAbstractFileByPath(getFolderPathFromString(file.path)); - if (folder instanceof import_obsidian32.TFolder) { - if (plugin.isEmptyFolderNoteFolder(folder)) { - addCSSClassToTitleEL(folder.path, "only-has-folder-note"); + if (folder instanceof import_obsidian44.TFolder) { + if (plugin.isEmptyFolderNoteFolder(folder) && getFolderNote(plugin, folder.path)) { + addCSSClassToFileExplorerEl(folder.path, "only-has-folder-note", true, plugin); } else { - removeCSSClassFromEL(folder.path, "only-has-folder-note"); + removeCSSClassFromFileExplorerEL(folder.path, "only-has-folder-note", true, plugin); } } - if (file instanceof import_obsidian32.TFile) { - const folder2 = getFolder2(plugin, file); + if (file instanceof import_obsidian44.TFile) { + const folder2 = getFolder(plugin, file); if (!folder2) { return; } @@ -5597,25 +7610,374 @@ function handleDelete(file, plugin) { if (folderNote2) { return; } - removeCSSClassFromEL(folder2.path, "has-folder-note"); - removeCSSClassFromEL(folder2.path, "only-has-folder-note"); + removeCSSClassFromFileExplorerEL(folder2.path, "has-folder-note", false, plugin); + removeCSSClassFromFileExplorerEL(folder2.path, "only-has-folder-note", true, plugin); + hideFolderNoteInFileExplorer(folder2.path, plugin); } - if (!(file instanceof import_obsidian32.TFolder)) { + if (!(file instanceof import_obsidian44.TFolder)) { return; } const folderNote = getFolderNote(plugin, file.path); if (!folderNote) { return; } - removeCSSClassFromEL(folderNote.path, "is-folder-note"); + removeCSSClassFromFileExplorerEL(folderNote.path, "is-folder-note", false, plugin); if (!plugin.settings.syncDelete) { return; } deleteFolderNote(plugin, folderNote, false); } +// src/obsidian-folder-overview/src/view.ts +var import_obsidian47 = require("obsidian"); + +// src/obsidian-folder-overview/src/main.ts +var import_obsidian46 = require("obsidian"); + +// src/obsidian-folder-overview/src/Commands.ts +var import_obsidian45 = require("obsidian"); +function registerOverviewCommands(plugin) { + plugin.addCommand({ + id: "open-folder-overview-settings", + name: "Edit folder overview", + callback: () => { + plugin.activateOverviewView(); + } + }); + plugin.addCommand({ + id: "insert-folder-overview", + name: "Insert folder overview", + editorCheckCallback: (checking, editor) => { + const line = editor.getCursor().line; + const lineText = editor.getLine(line); + if (lineText.trim() === "" || lineText.trim() === ">") { + if (!checking) { + const json = Object.assign({}, plugin instanceof FolderOverviewPlugin ? plugin.settings : plugin.settings.defaultOverview); + json.id = crypto.randomUUID(); + const yaml = (0, import_obsidian45.stringifyYaml)(json); + let overviewBlock = `\`\`\`folder-overview +${yaml}\`\`\` +`; + if (plugin instanceof FolderOverviewPlugin && plugin.settings.useActualLinks || plugin instanceof FolderNotesPlugin && plugin.settings.defaultOverview.useActualLinks) { + overviewBlock = `${overviewBlock} + +`; + } + if (lineText.trim() === "") { + editor.replaceSelection(overviewBlock); + } else if (lineText.trim() === ">") { + const lines = yaml.split("\n"); + const newLines = lines.map((line2) => { + return `> ${line2}`; + }); + let quotedBlock = `\`\`\`folder-overview +${newLines.join("\n")}\`\`\` +`; + if (plugin instanceof FolderOverviewPlugin && plugin.settings.useActualLinks || plugin instanceof FolderNotesPlugin && plugin.settings.defaultOverview.useActualLinks) { + quotedBlock = `${overviewBlock} + +`; + } + editor.replaceSelection(quotedBlock); + } + } + return true; + } + return false; + } + }); + plugin.registerEvent(plugin.app.workspace.on("editor-menu", (menu, editor, view) => { + const line = editor.getCursor().line; + const lineText = editor.getLine(line); + if (lineText.trim() === "" || lineText.trim() === ">") { + menu.addItem((item) => { + item.setTitle("Insert folder overview").setIcon("edit").onClick(() => { + if (plugin.settings.firstTimeInsertOverview) { + plugin.settings.firstTimeInsertOverview = false; + plugin.saveSettings(); + const frag = document.createDocumentFragment(); + const text = document.createTextNode('You can edit the overview using the "Edit folder overview" command from the command palette. To find more about folder overview, check the plugin documentation: '); + const link = document.createElement("a"); + link.href = "https://lostpaul.github.io/obsidian-folder-notes/Folder%20overview/"; + link.textContent = "https://lostpaul.github.io/obsidian-folder-notes/Folder%20overview/"; + frag.appendChild(text); + frag.appendChild(link); + new import_obsidian45.Notice(frag); + } + const json = Object.assign({}, plugin instanceof FolderOverviewPlugin ? plugin.settings : plugin.settings.defaultOverview); + json.id = crypto.randomUUID(); + const yaml = (0, import_obsidian45.stringifyYaml)(json); + let overviewBlock = `\`\`\`folder-overview +${yaml}\`\`\` +`; + if (plugin instanceof FolderOverviewPlugin && plugin.settings.useActualLinks || plugin instanceof FolderNotesPlugin && plugin.settings.defaultOverview.useActualLinks) { + overviewBlock = `${overviewBlock} + +`; + } + if (lineText.trim() === "") { + editor.replaceSelection(overviewBlock); + } else if (lineText.trim() === ">") { + const lines = yaml.split("\n"); + const newLines = lines.map((line2) => { + return `> ${line2}`; + }); + let quotedBlock = `\`\`\`folder-overview +${newLines.join("\n")}\`\`\` +`; + if (plugin instanceof FolderOverviewPlugin && plugin.settings.useActualLinks || plugin instanceof FolderNotesPlugin && plugin.settings.defaultOverview.useActualLinks) { + quotedBlock = `${overviewBlock} + +`; + } + editor.replaceSelection(quotedBlock); + } + }); + }); + } + })); +} + +// src/obsidian-folder-overview/src/FmtpHandler.ts +var import_front_matter_plugin_api_provider2 = __toESM(require_lib()); +var FrontMatterTitlePluginHandler2 = class { + constructor(plugin) { + this.api = null; + this.deffer = null; + this.modifiedFolders = /* @__PURE__ */ new Map(); + this.plugin = plugin; + this.app = plugin.app; + (async () => { + var _a; + this.deffer = (0, import_front_matter_plugin_api_provider2.getDefer)(this.app); + if (this.deffer.isPluginReady()) { + this.api = this.deffer.getApi(); + } else { + await this.deffer.awaitPlugin(); + this.api = this.deffer.getApi(); + if (!this.deffer.isFeaturesReady()) { + await this.deffer.awaitFeatures(); + } + } + const dispatcher = (_a = this.api) == null ? void 0 : _a.getEventDispatcher(); + if (dispatcher) { + this.dispatcher = dispatcher; + } + })(); + } + deleteEvent() { + if (this.eventRef) { + this.dispatcher.removeListener(this.eventRef); + } + } + async getNewFileName(file) { + var _a, _b, _c; + const resolver = (_b = (_a = this.api) == null ? void 0 : _a.getResolverFactory()) == null ? void 0 : _b.createResolver("#feature-id#"); + const changedName = resolver == null ? void 0 : resolver.resolve((_c = file == null ? void 0 : file.path) != null ? _c : ""); + return changedName != null ? changedName : null; + } +}; + +// src/obsidian-folder-overview/src/main.ts +var FolderOverviewPlugin = class extends import_obsidian46.Plugin { + constructor() { + super(...arguments); + this.updateOverviewView = updateOverviewView; + this.updateViewDropdown = updateViewDropdown; + } + async onload() { + await this.loadSettings(); + this.settingsTab = new SettingsTab(this); + this.addSettingTab(this.settingsTab); + this.settingsTab.display(); + registerOverviewCommands(this); + this.app.workspace.onLayoutReady(async () => { + this.registerView(FOLDER_OVERVIEW_VIEW, (leaf) => { + return new FolderOverviewView(leaf, this); + }); + if (this.app.plugins.getPlugin("obsidian-front-matter-title-plugin")) { + this.fmtpHandler = new FrontMatterTitlePluginHandler2(this); + } + }); + this.registerMarkdownCodeBlockProcessor("folder-overview", (source, el, ctx) => { + this.handleOverviewBlock(source, el, ctx); + }); + console.log("loading Folder Overview plugin"); + } + async handleOverviewBlock(source, el, ctx) { + const observer = new MutationObserver(() => { + var _a; + const editButton = (_a = el.parentElement) == null ? void 0 : _a.childNodes.item(1); + if (editButton) { + editButton.addEventListener("click", (e) => { + e.stopImmediatePropagation(); + e.preventDefault(); + e.stopPropagation(); + new FolderOverviewSettings(this.app, this, (0, import_obsidian46.parseYaml)(source), ctx, el, this.settings).open(); + }, { capture: true }); + } + }); + observer.observe(el, { + childList: true, + subtree: true + }); + try { + this.app.workspace.onLayoutReady(async () => { + const folderOverview = new FolderOverview(this, ctx, source, el, this.settings); + await folderOverview.create(this, (0, import_obsidian46.parseYaml)(source), el, ctx); + this.updateOverviewView(this); + }); + } catch (e) { + new import_obsidian46.Notice("Error creating folder overview (folder notes plugin) - check console for more details"); + console.error(e); + } + } + async onunload() { + console.log("unloading Folder Overview plugin"); + } + async loadSettings() { + const data = await this.loadData(); + this.settings = Object.assign({}, DEFAULT_SETTINGS, data); + if ((data == null ? void 0 : data.firstTimeInsertOverview) === void 0) { + this.settings.firstTimeInsertOverview = true; + } + } + async saveSettings() { + await this.saveData(this.settings); + } + async activateOverviewView() { + const { workspace } = this.app; + let leaf = null; + const leaves = workspace.getLeavesOfType(FOLDER_OVERVIEW_VIEW); + if (leaves.length > 0) { + leaf = leaves[0]; + } else { + leaf = workspace.getRightLeaf(false); + await (leaf == null ? void 0 : leaf.setViewState({ type: FOLDER_OVERVIEW_VIEW, active: true })); + } + if (!leaf) + return; + workspace.revealLeaf(leaf); + } +}; +async function updateOverviewView(plugin, newYaml) { + const { workspace } = plugin.app; + const leaf = workspace.getLeavesOfType(FOLDER_OVERVIEW_VIEW)[0]; + if (!leaf) + return; + const view = leaf.view; + if (!view) + return; + if (!view.yaml) + return; + const yaml = view.yaml.id === "" ? view.yaml : newYaml; + view.display(view.contentEl, yaml != null ? yaml : view.yaml, plugin, view.defaultSettings, view.display, void 0, void 0, view.activeFile, plugin.settingsTab, view.modal, "all"); +} +async function updateViewDropdown(plugin) { + const { workspace } = plugin.app; + const leaf = workspace.getLeavesOfType(FOLDER_OVERVIEW_VIEW)[0]; + if (!leaf) + return; + const view = leaf.view; + view.display(view.contentEl, view.yaml, plugin, view.defaultSettings, view.display, void 0, void 0, view.activeFile, plugin.settingsTab, view.modal, "dropdown"); +} + +// src/obsidian-folder-overview/src/view.ts +var FOLDER_OVERVIEW_VIEW = "folder-overview-view"; +var FolderOverviewView = class extends import_obsidian47.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.contentEl = this.containerEl.children[1]; + this.plugin = plugin; + this.display = this.display.bind(this); + if (plugin instanceof FolderOverviewPlugin) { + this.defaultSettings = this.plugin.settings; + } else if (plugin instanceof FolderNotesPlugin) { + this.defaultSettings = plugin.settings.defaultOverview; + } + this.registerEvent(this.plugin.app.workspace.on("file-open", (file) => { + this.activeFile = file; + this.display(this.contentEl, this.yaml, this.plugin, this.defaultSettings, this.display, void 0, void 0, file, void 0, void 0, "all"); + })); + } + getViewType() { + return FOLDER_OVERVIEW_VIEW; + } + getDisplayText() { + return "Folder Overview settings"; + } + getIcon() { + return "settings"; + } + async onOpen() { + this.display(this.contentEl, this.yaml, this.plugin, this.defaultSettings, this.display, void 0, void 0, this.activeFile); + } + async display(contentEl, yaml, plugin, defaultSettings, display, el, ctx, file, settingsTab, modal, changedSection) { + this.contentEl = contentEl; + this.yaml = yaml; + this.defaultSettings = defaultSettings; + this.changedSection = changedSection; + if (file) { + this.activeFile = file; + } + let header = contentEl.querySelector(".fn-folder-overview-header"); + if (!header) { + header = contentEl.createEl("h4", { + cls: "fn-folder-overview-header", + text: "Folder Overview settings" + }); + } + const activeFile = plugin.app.workspace.getActiveFile(); + const overviews = await getOverviews(plugin, activeFile); + let settingsContainer = contentEl.querySelector(".fn-settings-container"); + if (!settingsContainer) { + settingsContainer = contentEl.createDiv({ cls: "fn-settings-container" }); + } + let dropdown = settingsContainer.querySelector(".fn-select-overview-setting"); + if (!dropdown || changedSection === "all" || changedSection === "dropdown") { + if (dropdown) { + settingsContainer.empty(); + } + dropdown = settingsContainer.createDiv({ cls: "fn-select-overview-setting" }); + const overviewSetting = new import_obsidian47.Setting(dropdown); + overviewSetting.setName("Select overview").setClass("fn-select-overview-setting").addDropdown((cb) => { + var _a; + if (activeFile) { + const titleCounts = {}; + const options = overviews.reduce((acc, overview) => { + const title = parseOverviewTitle(overview, plugin, activeFile.parent, activeFile); + const count = (titleCounts[title] || 0) + 1; + titleCounts[title] = count; + acc[overview.id] = count > 1 ? `${title} (${count})` : title; + return acc; + }, {}); + cb.addOptions(options); + } + cb.addOption("default", "Default"); + cb.setValue((_a = yaml == null ? void 0 : yaml.id) != null ? _a : "default"); + if (cb.getValue() === "default" || !(yaml == null ? void 0 : yaml.id.trim()) || cb.getValue().trim() === "") { + yaml = defaultSettings; + cb.setValue("default"); + } else { + yaml = overviews.find((overview) => overview.id === yaml.id); + } + cb.onChange(async (value) => { + if (value === "default") { + yaml = defaultSettings; + } else { + yaml = overviews.find((overview) => overview.id === value); + } + await display(contentEl, yaml, plugin, defaultSettings, display, void 0, void 0, activeFile, void 0, void 0, "all"); + }); + }); + } + this.yaml = yaml; + await createOverviewSettings(settingsContainer, yaml, plugin, defaultSettings, display, void 0, void 0, activeFile, void 0, void 0, changedSection); + } +}; + // src/main.ts -var FolderNotesPlugin = class extends import_obsidian33.Plugin { +var FolderNotesPlugin = class extends import_obsidian48.Plugin { constructor() { super(...arguments); this.fmtpHandler = null; @@ -5623,17 +7985,23 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { this.mouseEvent = null; this.hoverLinkTriggered = false; this.settingsOpened = false; + this.askModalCurrentlyOpen = false; + this.updateOverviewView = updateOverviewView; + this.updateViewDropdown = updateViewDropdown; } async onload() { console.log("loading folder notes plugin"); await this.loadSettings(); - this.settingsTab = new SettingsTab(this.app, this); + this.settingsTab = new SettingsTab2(this.app, this); this.addSettingTab(this.settingsTab); this.saveSettings(); document.body.classList.add("folder-notes-plugin"); if (this.settings.hideFolderNote) { document.body.classList.add("hide-folder-note"); } + if (this.settings.hideCollapsingIconForEmptyFolders) { + document.body.classList.add("fn-hide-empty-collapse-icon"); + } if (this.settings.underlineFolder) { document.body.classList.add("folder-note-underline"); } @@ -5658,22 +8026,18 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { if (this.settings.hideCollapsingIcon) { document.body.classList.add("fn-hide-collapse-icon"); } - if ((0, import_obsidian33.requireApiVersion)("1.7.2")) { + if (!this.settings.highlightFolder) { + document.body.classList.add("disable-folder-highlight"); + } + if ((0, import_obsidian48.requireApiVersion)("1.7.2")) { document.body.classList.add("version-1-7-2"); } new Commands(this.app, this).registerCommands(); - this.app.workspace.onLayoutReady(() => { - if (this.settings.frontMatterTitle.enabled) { - this.fmtpHandler = new FrontMatterTitlePluginHandler(this); - } - this.tabManager = new TabManager(this); - this.tabManager.updateTabs(); - }); - await addObserver(this); - this.observer.observe(document.body, { - childList: true, - subtree: true - }); + registerOverviewCommands(this); + this.app.workspace.onLayoutReady(this.onLayoutReady.bind(this)); + if (!this.settings.persistentSettingsTab.afterRestart) { + this.settings.settingsTab = "general"; + } this.registerDomEvent(window, "keydown", (event) => { var _a; const hoveredElement = this.hoveredElement; @@ -5681,7 +8045,7 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { return; if (!hoveredElement) return; - if (!import_obsidian33.Keymap.isModEvent(event)) + if (!import_obsidian48.Keymap.isModEvent(event)) return; const folderPath = ((_a = hoveredElement == null ? void 0 : hoveredElement.parentElement) == null ? void 0 : _a.getAttribute("data-path")) || ""; const folderNote = getFolderNote(this, folderPath); @@ -5702,18 +8066,18 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { this.registerEvent(this.app.vault.on("create", (file) => { handleCreate(file, this); })); - this.registerEvent(this.app.workspace.on("file-open", (openFile) => { - if (this.activeFolderDom) { - this.activeFolderDom.removeClass("fn-is-active"); - this.activeFolderDom = null; - } + this.registerEvent(this.app.workspace.on("file-open", async (openFile) => { + removeActiveFolder(this); if (!openFile || !openFile.basename) { return; } - const folder = getFolder2(this, openFile); + const folder = getFolder(this, openFile); if (!folder) { return; } + const excludedFolder = getExcludedFolder(this, folder.path, true); + if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) + return; const folderNote = getFolderNote(this, folder.path); if (!folderNote) { return; @@ -5721,9 +8085,7 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { if (folderNote.path !== openFile.path) { return; } - this.activeFolderDom = getEl(folder.path); - if (this.activeFolderDom) - this.activeFolderDom.addClass("fn-is-active"); + setActiveFolder(folder.path, this); })); this.registerEvent(this.app.vault.on("rename", (file, oldPath) => { handleRename(file, oldPath, this); @@ -5731,29 +8093,124 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { this.registerEvent(this.app.vault.on("delete", (file) => { handleDelete(file, this); })); - const folderOverviewEnabled = this.app.plugins.getPlugin("folder-overview"); - if (!folderOverviewEnabled) { - this.registerMarkdownCodeBlockProcessor("folder-overview", (source, el, ctx) => { - this.handleOverviewBlock(source, el, ctx); - }); + this.registerMarkdownCodeBlockProcessor("folder-overview", (source, el, ctx) => { + this.handleOverviewBlock(source, el, ctx); + }); + } + onLayoutReady() { + var _a, _b, _c; + registerFileExplorerObserver(this); + this.registerView(FOLDER_OVERVIEW_VIEW, (leaf2) => { + return new FolderOverviewView(leaf2, this); + }); + if (this.app.plugins.getPlugin("obsidian-front-matter-title-plugin")) { + this.fmtpHandler = new FrontMatterTitlePluginHandler(this); } - if (this.app.workspace.layoutReady) { - loadFileClasses(void 0, this); - this.registerEvent(this.app.workspace.on("layout-change", () => { - var _a; - loadFileClasses(void 0, this); - (_a = this.tabManager) == null ? void 0 : _a.updateTabs(); - })); - } else { - this.app.workspace.onLayoutReady(async () => { - loadFileClasses(void 0, this); - this.registerEvent(this.app.workspace.on("layout-change", () => { - var _a; - loadFileClasses(void 0, this); - (_a = this.tabManager) == null ? void 0 : _a.updateTabs(); - })); - }); + this.tabManager = new TabManager(this); + this.tabManager.updateTabs(); + this.registerDomEvent(document, "click", (evt) => { + this.handleFileExplorerClick(evt); + }, true); + const fileExplorerPlugin = this.app.internalPlugins.getEnabledPluginById("file-explorer"); + if (fileExplorerPlugin) { + const originalRevealInFolder = fileExplorerPlugin.revealInFolder.bind(fileExplorerPlugin); + fileExplorerPlugin.revealInFolder = (file) => { + if (file instanceof import_obsidian48.TFile) { + const folder = getFolder(this, file); + if (folder instanceof import_obsidian48.TFolder) { + const folderNote = getFolderNote(this, folder.path); + if (!folderNote || folderNote.path !== file.path) { + return originalRevealInFolder.call(fileExplorerPlugin, file); + } + document.body.classList.remove("hide-folder-note"); + originalRevealInFolder.call(fileExplorerPlugin, folder); + setTimeout(() => { + document.body.classList.add("hide-folder-note"); + }, 100); + return; + } + } + return originalRevealInFolder.call(fileExplorerPlugin, file); + }; } + const leaf = this.app.workspace.getLeavesOfType("markdown").first(); + const view = leaf == null ? void 0 : leaf.view; + if (!view) { + return; + } + const editMode = (_c = (_a = view.editMode) != null ? _a : view.sourceMode) != null ? _c : (_b = this.app.workspace.activeEditor) == null ? void 0 : _b.editMode; + const plugin = this; + if (!editMode) { + return; + } + const clipboardProto = editMode.clipboardManager.constructor.prototype; + const originalHandleDragOver = clipboardProto.handleDragOver; + const originalHandleDrop = clipboardProto.handleDrop; + clipboardProto.handleDragOver = function(evt, ...args) { + const dragManager = this.app.dragManager; + const draggable = dragManager == null ? void 0 : dragManager.draggable; + if ((draggable == null ? void 0 : draggable.file) instanceof import_obsidian48.TFolder) { + const folderNote = getFolderNote(plugin, draggable.file.path); + if (folderNote) { + dragManager.setAction(window.i18next.t("interface.drag-and-drop.insert-link-here")); + return; + } + } + return originalHandleDragOver.call(this, evt, ...args); + }; + clipboardProto.handleDrop = function(evt, ...args) { + const dragManager = this.app.dragManager; + const draggable = dragManager == null ? void 0 : dragManager.draggable; + if ((draggable == null ? void 0 : draggable.file) instanceof import_obsidian48.TFolder) { + const folderNote = getFolderNote(plugin, draggable.file.path); + if (folderNote) { + draggable.file = folderNote; + draggable.type = "file"; + } + } + return originalHandleDrop.call(this, evt, ...args); + }; + } + handleFileExplorerClick(evt) { + const target = evt.target; + if (evt.shiftKey) + return; + if (import_obsidian48.Platform.isMobile && this.settings.disableOpenFolderNoteOnClick) + return; + const folderTitleEl = target.closest(".nav-folder-title"); + if (!folderTitleEl) + return; + const onlyClickedOnFolderTitle = !!target.closest(".nav-folder-title-content"); + if (!this.settings.stopWhitespaceCollapsing && !onlyClickedOnFolderTitle) + return; + if (target.closest(".collapse-icon")) + return; + const folderPath = folderTitleEl.getAttribute("data-path"); + if (!folderPath) + return; + const excludedFolder = getExcludedFolder(this, folderPath, true); + if (excludedFolder == null ? void 0 : excludedFolder.disableFolderNote) + return; + const folderNote = getFolderNote(this, folderPath); + if (!folderNote && (evt.altKey || import_obsidian48.Keymap.isModEvent(evt) === "tab")) { + if (this.settings.altKey && evt.altKey || this.settings.ctrlKey && import_obsidian48.Keymap.isModEvent(evt) === "tab") { + createFolderNote(this, folderPath, true, void 0, true); + addCSSClassToFileExplorerEl(folderPath, "has-folder-note", false, this); + removeCSSClassFromFileExplorerEL(folderPath, "has-not-folder-note", false, this); + return; + } + } + if (!(folderNote instanceof import_obsidian48.TFile)) + return; + if (this.settings.openWithCtrl && !evt.ctrlKey) + return; + if (this.settings.openWithAlt && !evt.altKey) + return; + if (!this.settings.enableCollapsing || evt.ctrlKey) { + evt.preventDefault(); + evt.stopImmediatePropagation(); + } + openFolderNote(this, folderNote, evt); } handleOverviewBlock(source, el, ctx) { const observer = new MutationObserver(() => { @@ -5764,7 +8221,7 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { e.stopImmediatePropagation(); e.preventDefault(); e.stopPropagation(); - new FolderOverviewSettings(this.app, this, (0, import_obsidian33.parseYaml)(source), ctx, el).open(); + new FolderOverviewSettings(this.app, this, (0, import_obsidian48.parseYaml)(source), ctx, el, this.settings.defaultOverview).open(); }, { capture: true }); } }); @@ -5773,20 +8230,44 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { subtree: true }); try { - const folderOverview = new FolderOverview(this, ctx, source, el); - folderOverview.create(this, (0, import_obsidian33.parseYaml)(source), el, ctx); + if (this.app.workspace.layoutReady) { + const folderOverview = new FolderOverview(this, ctx, source, el, this.settings.defaultOverview); + folderOverview.create(this, (0, import_obsidian48.parseYaml)(source), el, ctx); + } else { + this.app.workspace.onLayoutReady(() => { + const folderOverview = new FolderOverview(this, ctx, source, el, this.settings.defaultOverview); + folderOverview.create(this, (0, import_obsidian48.parseYaml)(source), el, ctx); + }); + } } catch (e) { - new import_obsidian33.Notice("Error creating folder overview (folder notes plugin) - check console for more details"); + new import_obsidian48.Notice("Error creating folder overview (folder notes plugin) - check console for more details"); console.error(e); } } + async activateOverviewView() { + const { workspace } = this.app; + let leaf = null; + const leaves = workspace.getLeavesOfType(FOLDER_OVERVIEW_VIEW); + if (leaves.length > 0) { + leaf = leaves[0]; + } else { + leaf = workspace.getRightLeaf(false); + await (leaf == null ? void 0 : leaf.setViewState({ type: FOLDER_OVERVIEW_VIEW, active: true })); + } + if (!leaf) + return; + workspace.revealLeaf(leaf); + } isEmptyFolderNoteFolder(folder) { var _a; - let attachmentFolderPath = this.app.vault.getConfig("attachmentFolderPath"); + const attachmentFolderPath = this.app.vault.getConfig("attachmentFolderPath"); const cleanAttachmentFolderPath = (attachmentFolderPath == null ? void 0 : attachmentFolderPath.replace("./", "")) || ""; const attachmentsAreInRootFolder = attachmentFolderPath === "./" || attachmentFolderPath === ""; const threshold = this.settings.storageLocation === "insideFolder" ? 1 : 0; - if (folder.children.length == threshold) { + if (folder.children.length === 0) { + addCSSClassToFileExplorerEl(folder.path, "fn-empty-folder", false, this); + } + if (folder.children.length === threshold) { return true; } else if (folder.children.length > threshold) { if (attachmentsAreInRootFolder) { @@ -5794,9 +8275,9 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { } else if (this.settings.ignoreAttachmentFolder && this.app.vault.getAbstractFileByPath(`${folder.path}/${cleanAttachmentFolderPath}`)) { const folderPath = `${folder.path}/${cleanAttachmentFolderPath}`; const attachmentFolder = this.app.vault.getAbstractFileByPath(folderPath); - if (attachmentFolder instanceof import_obsidian33.TFolder && folder.children.length <= threshold + 1) { + if (attachmentFolder instanceof import_obsidian48.TFolder && folder.children.length <= threshold + 1) { if (!folder.collapsed) { - (_a = getEl(folder.path)) == null ? void 0 : _a.click(); + (_a = getFileExplorerElement(folder.path, this)) == null ? void 0 : _a.click(); } } return folder.children.length <= threshold + 1; @@ -5806,46 +8287,50 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { } return true; } - async changeName(folder, name, replacePath, waitForCreate = false, count = 0) { - if (!name) - name = folder.name; - let fileExplorerItem = getEl(folder.path); + async changeFolderNameInExplorer(folder, newName, waitForCreate = false, count = 0) { + if (!newName) + newName = folder.name; + let fileExplorerItem = getFileExplorerElement(folder.path, this); if (!fileExplorerItem) { if (waitForCreate && count < 5) { await new Promise((r) => setTimeout(r, 500)); - this.changeName(folder, name, replacePath, waitForCreate, count + 1); + this.changeFolderNameInExplorer(folder, newName, waitForCreate, count + 1); return; } return; } - fileExplorerItem = fileExplorerItem.querySelector("div.nav-folder-title-content"); + fileExplorerItem = fileExplorerItem == null ? void 0 : fileExplorerItem.querySelector("div.nav-folder-title-content"); if (!fileExplorerItem) { return; } if (this.settings.frontMatterTitle.explorer && this.settings.frontMatterTitle.enabled) { - fileExplorerItem.innerText = name; + fileExplorerItem.innerText = newName; fileExplorerItem.setAttribute("old-name", folder.name); } else { fileExplorerItem.innerText = folder.name; fileExplorerItem.removeAttribute("old-name"); } - if (replacePath) { - this.updateBreadcrumbs(); - } } - updateBreadcrumbs(remove) { + async changeFolderNameInPath(folder, newName, breadcrumb) { + if (!newName) + newName = folder.name; + breadcrumb.textContent = folder.newName || folder.name; + breadcrumb.setAttribute("old-name", folder.name); + breadcrumb.setAttribute("data-path", folder.path); + } + updateAllBreadcrumbs(remove) { if (!this.settings.frontMatterTitle.path && !remove) { return; } const viewHeaderItems = document.querySelectorAll("span.view-header-breadcrumb"); - const files = this.app.vault.getAllLoadedFiles().filter((file) => file instanceof import_obsidian33.TFolder); + const files = this.app.vault.getAllLoadedFiles().filter((file) => file instanceof import_obsidian48.TFolder); viewHeaderItems.forEach((item) => { if (!item.hasAttribute("data-path")) { return; } const path = item.getAttribute("data-path"); const folder = files.find((file) => file.path === path); - if (!(folder instanceof import_obsidian33.TFolder)) { + if (!(folder instanceof import_obsidian48.TFolder)) { return; } if (remove) { @@ -5858,23 +8343,13 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { } }); } - reloadHandlers() { - document.querySelectorAll("div.nav-folder-title-content").forEach((element) => { - if (element.onclick) - return; - element.onclick = (event) => handleFolderClick(event, this); - }); - } onunload() { - console.log("unloading folder notes plugin"); - this.observer.disconnect(); + unregisterFileExplorerObserver(); document.body.classList.remove("folder-notes-plugin"); document.body.classList.remove("folder-note-underline"); document.body.classList.remove("hide-folder-note"); document.body.classList.remove("fn-whitespace-stop-collapsing"); - if (this.activeFolderDom) { - this.activeFolderDom.removeClass("is-active"); - } + removeActiveFolder(this); if (this.fmtpHandler) { this.fmtpHandler.deleteEvent(); } @@ -5890,7 +8365,10 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { delete data.allowWhitespaceCollapsing; } } - this.settings = Object.assign({}, DEFAULT_SETTINGS, data); + this.settings = Object.assign({}, DEFAULT_SETTINGS2, data); + if (!this.settings.oldFolderNoteName) { + this.settings.oldFolderNoteName = this.settings.folderNoteName; + } if (!data) { return; } @@ -5898,15 +8376,14 @@ var FolderNotesPlugin = class extends import_obsidian33.Plugin { if (!overview) { return; } - this.settings.defaultOverview = Object.assign({}, DEFAULT_SETTINGS.defaultOverview, overview); + this.settings.defaultOverview = Object.assign({}, DEFAULT_SETTINGS2.defaultOverview, overview); } async saveSettings(reloadStyles) { await this.saveData(this.settings); - if (!this.settingsOpened || reloadStyles === true) { - loadFileClasses(true, this); + if ((!this.settingsOpened || reloadStyles === true) && reloadStyles !== false) { + refreshAllFolderStyles(true, this); } } }; - /* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/folder-notes/manifest.json b/.obsidian/plugins/folder-notes/manifest.json index c7dc725..b84cbdd 100644 --- a/.obsidian/plugins/folder-notes/manifest.json +++ b/.obsidian/plugins/folder-notes/manifest.json @@ -1,7 +1,7 @@ { "id": "folder-notes", "name": "Folder notes", - "version": "1.7.35", + "version": "1.8.15", "minAppVersion": "0.15.0", "description": "Create notes within folders that can be accessed without collapsing the folder, similar to the functionality offered in Notion.", "author": "Lost Paul", diff --git a/.obsidian/plugins/folder-notes/styles.css b/.obsidian/plugins/folder-notes/styles.css index fe2301c..83abedf 100644 --- a/.obsidian/plugins/folder-notes/styles.css +++ b/.obsidian/plugins/folder-notes/styles.css @@ -1,34 +1,26 @@ -.fn-whitespace-stop-collapsing .nav-folder-title-content { - flex-grow: 1 !important; - display: flex; - padding-bottom: 4px !important; - padding-top: 4px !important; +/* ========================================================================== + General States & Utilities + ========================================================================== */ + +.hide, +.hide-folder .folder-name, +.hide-folder-note .is-folder-note { + display: none; } -.fn-whitespace-stop-collapsing .collapse-icon { - padding-top: 4px !important; +.pointer-cursor, +.has-folder-note .nav-folder-title-content:hover, +.has-folder-note.view-header-breadcrumb:hover, +.nav-folder-collapse-indicator:hover, +.fn-delete-confirmation-modal-buttons span:hover, +.fn-delete-confirmation-modal-buttons input:hover { + cursor: pointer !important; } -.mod-rtl .fn-whitespace-stop-collapsing .nav-folder-title-content { - padding-left: 8px !important; -} -.fn-whitespace-stop-collapsing .nav-folder-title { - padding-bottom: 0 !important; - padding-top: 0 !important; -} - -body:not(.mod-rtl).fn-whitespace-stop-collapsing .nav-folder-title { - padding-right: 0 !important; -} - -.mod-rtl.fn-whitespace-stop-collapsing .nav-folder-title { - padding-left: 0 !important; -} - -.fn-whitespace-stop-collapsing .nav-folder-collapse-indicator { - margin-top: 4px !important; -} +/* ========================================================================== + Tree Items + ========================================================================== */ body:not(.is-grabbing) .tree-item-self.fn-is-active:hover, body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { @@ -37,33 +29,17 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { font-weight: var(--nav-item-weight-active); } -.has-folder-note .nav-folder-title-content:hover, -.has-folder-note.view-header-breadcrumb:hover { - cursor: pointer; -} - -.hide-folder-note .is-folder-note { - display: none; -} - -.hide-folder .folder-name { - display: none; -} - -.nav-folder-collapse-indicator:hover { - cursor: pointer; -} +/* ========================================================================== + Exclude Folder Settings + ========================================================================== */ .fn-excluded-folder-heading { margin-top: 0 !important; border-top: 1px solid var(--background-modifier-border); } -.add-exclude-folder-item { - padding-bottom: 0 !important; -} - +.add-exclude-folder-item, .fn-exclude-folder-list { padding-bottom: 0 !important; } @@ -87,13 +63,27 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { } +/* ========================================================================== + Modal Styles + ========================================================================== */ + +.fn-backup-warning-modal .fn-modal-button-container { + display: flex; + gap: 0.5rem; + justify-content: flex-end; +} + .fn-confirmation-modal { padding-bottom: 0; } +.fn-confirmation-modal .setting-item { + border-top: 0 !important; + padding-top: 0 !important; +} + :not(.is-phone) .fn-confirmation-modal-button { margin-right: 0.7rem; - } :not(.is-phone) .fn-delete-confirmation-modal-buttons { @@ -102,11 +92,6 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { margin-top: 10px; } -.fn-delete-confirmation-modal-buttons span:hover, -.fn-delete-confirmation-modal-buttons input:hover { - cursor: pointer; -} - :not(.is-phone) .fn-delete-confirmation-modal-buttons .fn-confirmation-modal-button { margin-left: auto; } @@ -125,16 +110,24 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { margin-top: 10px; } -/* Folder overview */ -.fn-folder-overview-collapse-icon { - display: block !important; +/* ========================================================================== + Folder Overview + ========================================================================== */ + +.folder-overview-container.fv-remove-edit-button .folder-overview-edit-button { + display: none; } -.fn-has-no-files .collapse-icon { +.cm-line:has(.fv-link-list-item), +.el-ul:has(.fv-link-list-item), +.cm-line:has(.fv-link-list-start), +.cm-line:has(.fv-link-list-end), +.fv-hide-overview { display: none !important; } + .folder-overview-list { margin-top: 0 !important; margin-bottom: 0 !important; @@ -146,7 +139,6 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { display: flex; } - .folder-overview-list::marker { color: var(--text-faint); } @@ -161,12 +153,17 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { grid-template-columns: repeat(3, 1fr); } +.folder-overview-grid-item { + flex: 1 1 auto; + margin: 0 1.2rem 1.2rem 0; +} + .folder-overview-grid-item-article article { - padding: 15px; - flex: 1; display: flex; flex-direction: column; justify-content: space-between; + padding: 15px; + flex: 1; } .folder-overview-grid-item-article a { @@ -177,53 +174,20 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { font-size: 1.2rem; } - -.folder-overview-grid-item { - flex: 1 1 auto; - margin-right: 1.200rem; - margin-bottom: 1.200rem; -} - -.fn-confirmation-modal .setting-item { - border-top: 0 !important; - padding-top: 0 !important; -} - -.pointer-cursor { - cursor: pointer !important; -} - - -/* Setting tab style */ -.fn-settings-tab-bar { - display: flex; - flex-direction: row; - padding-bottom: 1rem; -} - -.fn-settings-tab { - display: flex; - flex-direction: row; +.overview-setting-item-fv { + border-top: 1px solid var(--background-modifier-border); + padding: 0.75em 0; align-items: center; - gap: var(--size-4-2); - padding: 10px; - border: 1px solid var(--background-modifier-border) } -.fn-settings-tab-active { - background-color: var(--color-accent); - color: var(--text-on-accent); +.overview-setting-item-fv .setting-item { + padding: 0; } -.fn-settings-tab-name { - font-weight: bold; -} -.fn-settings-tab-icon { - display: flex; -} - -/* File explorer & path styles */ +/* ========================================================================== + File Explorer & Path Styling + ========================================================================== */ .folder-note-underline .has-folder-note .nav-folder-title-content { text-decoration-line: underline; @@ -249,14 +213,57 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { font-style: italic; } -.fn-hide-collapse-icon .has-folder-note.only-has-folder-note .tree-item-icon { + +/* Collapse Icon Handling */ + +.fn-folder-overview-collapse-icon { + display: block !important; +} + +.fn-has-no-files .collapse-icon, +.fn-hide-collapse-icon .has-folder-note.only-has-folder-note .tree-item-icon, +.fn-hide-empty-collapse-icon .fn-empty-folder .tree-item-icon, +.only-has-folder-note:not(.is-collapsed):not(.show-folder-note-in-explorer)>.nav-folder-children { display: none; } -.fn-hide-empty-collapse-icon .fn-empty-folder .tree-item-icon { - display: none; + +/* ========================================================================== + Settings Tabs + ========================================================================== */ + +.fn-settings-tab-bar { + display: flex; + flex-direction: row; + padding-bottom: 1rem; } +.fn-settings-tab { + display: flex; + flex-direction: row; + align-items: center; + gap: var(--size-4-2); + padding: 10px; + border: 1px solid var(--background-modifier-border); +} + +.fn-settings-tab-active { + background-color: var(--color-accent); + color: var(--text-on-accent); +} + +.fn-settings-tab-name { + font-weight: bold; +} + +.fn-settings-tab-icon { + display: flex; +} + + +/* ========================================================================== + Suggestion Container + ========================================================================== */ .fn-suggestion-container { position: absolute; @@ -271,3 +278,60 @@ body:not(.disable-folder-highlight) .tree-item-self.fn-is-active { box-shadow: var(--shadow-s); z-index: var(--layer-notice); } + + +/* ========================================================================== + Whitelist Folder Input (Desktop & Mobile) + ========================================================================== */ + +/* Default Desktop Layout */ +.fn-whitelist-folder-input-container { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin: 0; +} + +.fn-whitelist-folder-input-container input { + flex-grow: 1; + width: auto; + margin-right: 8px; + height: 40px; + box-sizing: border-box; +} + +.fn-whitelist-folder-buttons { + display: flex; + gap: 8px; + justify-content: flex-end; + align-items: center; + flex-grow: 0; + flex-shrink: 0; +} + +/* Mobile Overrides */ +@media (max-width: 768px) { + .fn-whitelist-folder-input-container { + display: block; + width: 100%; + text-align: center; + } + + .fn-whitelist-folder-input-container input { + width: 100%; + margin-right: 0; + } + + .fn-whitelist-folder-buttons { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + width: 100%; + } + + .is-phone .fn-overview-folder-path .setting-item-control { + display: block; + } +} \ No newline at end of file diff --git a/.obsidian/plugins/harper/data.json b/.obsidian/plugins/harper/data.json deleted file mode 100644 index d2e4782..0000000 --- a/.obsidian/plugins/harper/data.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "useWebWorker": true, - "lintSettings": {} -} \ No newline at end of file diff --git a/.obsidian/plugins/harper/main.js b/.obsidian/plugins/harper/main.js deleted file mode 100644 index c99f30d..0000000 --- a/.obsidian/plugins/harper/main.js +++ /dev/null @@ -1,2728 +0,0 @@ -'use strict'; - -var obsidian = require('obsidian'); -var view = require('@codemirror/view'); -var state = require('@codemirror/state'); - -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -var logoSvg = "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"; - -var $ = Object.defineProperty; -var AA = (Q, A, C) => A in Q ? $(Q, A, { enumerable: !0, configurable: !0, writable: !0, value: C }) : Q[A] = C; -var i = (Q, A, C) => AA(Q, typeof A != "symbol" ? A + "" : A, C); -let I; -const Y = new Array(128).fill(void 0); -Y.push(void 0, null, !0, !1); -function R(Q) { - return Y[Q]; -} -let b = 0, y = null; -function k() { - return (y === null || y.byteLength === 0) && (y = new Uint8Array(I.memory.buffer)), y; -} -const J = typeof TextEncoder < "u" ? new TextEncoder("utf-8") : { encode: () => { - throw Error("TextEncoder not available"); -} }, CA = typeof J.encodeInto == "function" ? function(Q, A) { - return J.encodeInto(Q, A); -} : function(Q, A) { - const C = J.encode(Q); - return A.set(C), { - read: Q.length, - written: C.length - }; -}; -function p(Q, A, C) { - if (C === void 0) { - const F = J.encode(Q), U = A(F.length, 1) >>> 0; - return k().subarray(U, U + F.length).set(F), b = F.length, U; - } - let B = Q.length, g = A(B, 1) >>> 0; - const E = k(); - let G = 0; - for (; G < B; G++) { - const F = Q.charCodeAt(G); - if (F > 127) break; - E[g + G] = F; - } - if (G !== B) { - G !== 0 && (Q = Q.slice(G)), g = C(g, B, B = G + Q.length * 3, 1) >>> 0; - const F = k().subarray(g + G, g + B), U = CA(Q, F); - G += U.written, g = C(g, B, G, 1) >>> 0; - } - return b = G, g; -} -let M = null; -function N() { - return (M === null || M.buffer.detached === !0 || M.buffer.detached === void 0 && M.buffer !== I.memory.buffer) && (M = new DataView(I.memory.buffer)), M; -} -let K = Y.length; -function V(Q) { - K === Y.length && Y.push(Y.length + 1); - const A = K; - return K = Y[A], Y[A] = Q, A; -} -const n = typeof TextDecoder < "u" ? new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }) : { decode: () => { - throw Error("TextDecoder not available"); -} }; -typeof TextDecoder < "u" && n.decode(); -function c(Q, A) { - return Q = Q >>> 0, n.decode(k().subarray(Q, Q + A)); -} -function QA(Q, A) { - try { - return Q.apply(this, A); - } catch (C) { - I.__wbindgen_export_3(V(C)); - } -} -function IA(Q) { - Q < 132 || (Y[Q] = K, K = Q); -} -function w(Q) { - const A = R(Q); - return IA(Q), A; -} -function z(Q) { - const A = typeof Q; - if (A == "number" || A == "boolean" || Q == null) - return `${Q}`; - if (A == "string") - return `"${Q}"`; - if (A == "symbol") { - const g = Q.description; - return g == null ? "Symbol" : `Symbol(${g})`; - } - if (A == "function") { - const g = Q.name; - return typeof g == "string" && g.length > 0 ? `Function(${g})` : "Function"; - } - if (Array.isArray(Q)) { - const g = Q.length; - let E = "["; - g > 0 && (E += z(Q[0])); - for (let G = 1; G < g; G++) - E += ", " + z(Q[G]); - return E += "]", E; - } - const C = /\[object ([^\]]+)\]/.exec(toString.call(Q)); - let B; - if (C && C.length > 1) - B = C[1]; - else - return toString.call(Q); - if (B == "Object") - try { - return "Object(" + JSON.stringify(Q) + ")"; - } catch { - return "Object"; - } - return Q instanceof Error ? `${Q.name}: ${Q.message} -${Q.stack}` : B; -} -function v(Q) { - return Q == null; -} -function BA() { - I.setup(); -} -function o(Q, A) { - if (!(Q instanceof A)) - throw new Error(`expected instance of ${A.name}`); -} -function u(Q, A) { - Q = Q >>> 0; - const C = N(), B = []; - for (let g = Q; g < Q + 4 * A; g += 4) - B.push(w(C.getUint32(g, !0))); - return B; -} -function gA(Q) { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16), G = p(Q, I.__wbindgen_export_0, I.__wbindgen_export_1), F = b; - I.to_title_case(E, G, F); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } -} -function EA(Q, A, C) { - let B, g; - try { - const h = I.__wbindgen_add_to_stack_pointer(-16), P = p(Q, I.__wbindgen_export_0, I.__wbindgen_export_1), _ = b; - o(A, Z); - var E = A.__destroy_into_raw(); - o(C, D), I.apply_suggestion(h, P, _, E, C.__wbg_ptr); - var G = N().getInt32(h + 4 * 0, !0), F = N().getInt32(h + 4 * 1, !0), U = N().getInt32(h + 4 * 2, !0), a = N().getInt32(h + 4 * 3, !0), W = G, d = F; - if (a) - throw W = 0, d = 0, w(U); - return B = W, g = d, c(W, d); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(B, g, 1); - } -} -function NA() { - let Q, A; - try { - const g = I.__wbindgen_add_to_stack_pointer(-16); - I.get_default_lint_config_as_json(g); - var C = N().getInt32(g + 4 * 0, !0), B = N().getInt32(g + 4 * 1, !0); - return Q = C, A = B, c(C, B); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(Q, A, 1); - } -} -function GA() { - const Q = I.get_default_lint_config(); - return w(Q); -} -const L = Object.freeze({ - Plain: 0, - 0: "Plain", - Markdown: 1, - 1: "Markdown" -}), FA = Object.freeze({ - /** - * Replace the problematic text. - */ - Replace: 0, - 0: "Replace", - /** - * Remove the problematic text. - */ - Remove: 1, - 1: "Remove", - /** - * Insert additional text after the error. - */ - InsertAfter: 2, - 2: "InsertAfter" -}), s = typeof FinalizationRegistry > "u" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((Q) => I.__wbg_lint_free(Q >>> 0, 1)); -class m { - static __wrap(A) { - A = A >>> 0; - const C = Object.create(m.prototype); - return C.__wbg_ptr = A, s.register(C, C.__wbg_ptr, C), C; - } - __destroy_into_raw() { - const A = this.__wbg_ptr; - return this.__wbg_ptr = 0, s.unregister(this), A; - } - free() { - const A = this.__destroy_into_raw(); - I.__wbg_lint_free(A, 0); - } - /** - * @returns {string} - */ - to_json() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_to_json(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @param {string} json - * @returns {Lint} - */ - static from_json(A) { - try { - const E = I.__wbindgen_add_to_stack_pointer(-16), G = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), F = b; - I.lint_from_json(E, G, F); - var C = N().getInt32(E + 4 * 0, !0), B = N().getInt32(E + 4 * 1, !0), g = N().getInt32(E + 4 * 2, !0); - if (g) - throw w(B); - return m.__wrap(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get the content of the source material pointed to by [`Self::span`] - * @returns {string} - */ - get_problem_text() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_get_problem_text(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * Get a string representing the general category of the lint. - * @returns {string} - */ - lint_kind() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_lint_kind(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * Get a string representing the general category of the lint. - * @returns {string} - */ - lint_kind_pretty() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_lint_kind_pretty(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * Equivalent to calling `.length` on the result of `suggestions()`. - * @returns {number} - */ - suggestion_count() { - return I.lint_suggestion_count(this.__wbg_ptr) >>> 0; - } - /** - * Get an array of any suggestions that may resolve the issue. - * @returns {Suggestion[]} - */ - suggestions() { - try { - const g = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_suggestions(g, this.__wbg_ptr); - var A = N().getInt32(g + 4 * 0, !0), C = N().getInt32(g + 4 * 1, !0), B = u(A, C).slice(); - return I.__wbindgen_export_2(A, C * 4, 4), B; - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get the location of the problematic text. - * @returns {Span} - */ - span() { - const A = I.lint_span(this.__wbg_ptr); - return Z.__wrap(A); - } - /** - * Get a description of the error. - * @returns {string} - */ - message() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.lint_message(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } -} -const S = typeof FinalizationRegistry > "u" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((Q) => I.__wbg_linter_free(Q >>> 0, 1)); -class T { - static __wrap(A) { - A = A >>> 0; - const C = Object.create(T.prototype); - return C.__wbg_ptr = A, S.register(C, C.__wbg_ptr, C), C; - } - __destroy_into_raw() { - const A = this.__wbg_ptr; - return this.__wbg_ptr = 0, S.unregister(this), A; - } - free() { - const A = this.__destroy_into_raw(); - I.__wbg_linter_free(A, 0); - } - /** - * Construct a new `Linter`. - * Note that this can mean constructing the curated dictionary, which is the most expensive operation - * in Harper. - * @returns {Linter} - */ - static new() { - const A = I.linter_new(); - return T.__wrap(A); - } - /** - * Helper method to quickly check if a plain string is likely intended to be English - * @param {string} text - * @returns {boolean} - */ - is_likely_english(A) { - const C = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), B = b; - return I.linter_is_likely_english(this.__wbg_ptr, C, B) !== 0; - } - /** - * Helper method to remove non-English text from a plain English document. - * @param {string} text - * @returns {string} - */ - isolate_english(A) { - let C, B; - try { - const G = I.__wbindgen_add_to_stack_pointer(-16), F = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), U = b; - I.linter_isolate_english(G, this.__wbg_ptr, F, U); - var g = N().getInt32(G + 4 * 0, !0), E = N().getInt32(G + 4 * 1, !0); - return C = g, B = E, c(g, E); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(C, B, 1); - } - } - /** - * Get a JSON map containing the descriptions of all the linting rules. - * @returns {string} - */ - get_lint_descriptions_as_json() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.linter_get_lint_descriptions_as_json(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @returns {string} - */ - get_lint_config_as_json() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.linter_get_lint_config_as_json(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @param {string} json - */ - set_lint_config_from_json(A) { - try { - const g = I.__wbindgen_add_to_stack_pointer(-16), E = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), G = b; - I.linter_set_lint_config_from_json(g, this.__wbg_ptr, E, G); - var C = N().getInt32(g + 4 * 0, !0), B = N().getInt32(g + 4 * 1, !0); - if (B) - throw w(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get a Record containing the descriptions of all the linting rules. - * @returns {any} - */ - get_lint_descriptions_as_object() { - const A = I.linter_get_lint_descriptions_as_object(this.__wbg_ptr); - return w(A); - } - /** - * @returns {any} - */ - get_lint_config_as_object() { - const A = I.linter_get_lint_config_as_object(this.__wbg_ptr); - return w(A); - } - /** - * @param {any} object - */ - set_lint_config_from_object(A) { - try { - const g = I.__wbindgen_add_to_stack_pointer(-16); - I.linter_set_lint_config_from_object(g, this.__wbg_ptr, V(A)); - var C = N().getInt32(g + 4 * 0, !0), B = N().getInt32(g + 4 * 1, !0); - if (B) - throw w(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {Lint} lint - */ - ignore_lint(A) { - o(A, m); - var C = A.__destroy_into_raw(); - I.linter_ignore_lint(this.__wbg_ptr, C); - } - /** - * Perform the configured linting on the provided text. - * @param {string} text - * @param {Language} language - * @returns {Lint[]} - */ - lint(A, C) { - try { - const G = I.__wbindgen_add_to_stack_pointer(-16), F = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), U = b; - I.linter_lint(G, this.__wbg_ptr, F, U, C); - var B = N().getInt32(G + 4 * 0, !0), g = N().getInt32(G + 4 * 1, !0), E = u(B, g).slice(); - return I.__wbindgen_export_2(B, g * 4, 4), E; - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Export the linter's ignored lints as a privacy-respecting JSON list of hashes. - * @returns {string} - */ - export_ignored_lints() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.linter_export_ignored_lints(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * Import into the linter's ignored lints from a privacy-respecting JSON list of hashes. - * @param {string} json - */ - import_ignored_lints(A) { - try { - const g = I.__wbindgen_add_to_stack_pointer(-16), E = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), G = b; - I.linter_import_ignored_lints(g, this.__wbg_ptr, E, G); - var C = N().getInt32(g + 4 * 0, !0), B = N().getInt32(g + 4 * 1, !0); - if (B) - throw w(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - clear_ignored_lints() { - I.linter_clear_ignored_lints(this.__wbg_ptr); - } -} -const x = typeof FinalizationRegistry > "u" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((Q) => I.__wbg_span_free(Q >>> 0, 1)); -class Z { - static __wrap(A) { - A = A >>> 0; - const C = Object.create(Z.prototype); - return C.__wbg_ptr = A, x.register(C, C.__wbg_ptr, C), C; - } - __destroy_into_raw() { - const A = this.__wbg_ptr; - return this.__wbg_ptr = 0, x.unregister(this), A; - } - free() { - const A = this.__destroy_into_raw(); - I.__wbg_span_free(A, 0); - } - /** - * @returns {string} - */ - to_json() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.span_to_json(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @param {string} json - * @returns {Span} - */ - static from_json(A) { - try { - const E = I.__wbindgen_add_to_stack_pointer(-16), G = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), F = b; - I.span_from_json(E, G, F); - var C = N().getInt32(E + 4 * 0, !0), B = N().getInt32(E + 4 * 1, !0), g = N().getInt32(E + 4 * 2, !0); - if (g) - throw w(B); - return Z.__wrap(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {number} - */ - get start() { - return I.__wbg_get_span_start(this.__wbg_ptr) >>> 0; - } - /** - * @param {number} arg0 - */ - set start(A) { - I.__wbg_set_span_start(this.__wbg_ptr, A); - } - /** - * @returns {number} - */ - get end() { - return I.__wbg_get_span_end(this.__wbg_ptr) >>> 0; - } - /** - * @param {number} arg0 - */ - set end(A) { - I.__wbg_set_span_end(this.__wbg_ptr, A); - } - /** - * @param {number} start - * @param {number} end - * @returns {Span} - */ - static new(A, C) { - const B = I.span_new(A, C); - return Z.__wrap(B); - } - /** - * @returns {boolean} - */ - is_empty() { - return I.span_is_empty(this.__wbg_ptr) !== 0; - } - /** - * @returns {number} - */ - len() { - return I.span_len(this.__wbg_ptr) >>> 0; - } -} -const X = typeof FinalizationRegistry > "u" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((Q) => I.__wbg_suggestion_free(Q >>> 0, 1)); -class D { - static __wrap(A) { - A = A >>> 0; - const C = Object.create(D.prototype); - return C.__wbg_ptr = A, X.register(C, C.__wbg_ptr, C), C; - } - __destroy_into_raw() { - const A = this.__wbg_ptr; - return this.__wbg_ptr = 0, X.unregister(this), A; - } - free() { - const A = this.__destroy_into_raw(); - I.__wbg_suggestion_free(A, 0); - } - /** - * @returns {string} - */ - to_json() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.suggestion_to_json(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @param {string} json - * @returns {Suggestion} - */ - static from_json(A) { - try { - const E = I.__wbindgen_add_to_stack_pointer(-16), G = p(A, I.__wbindgen_export_0, I.__wbindgen_export_1), F = b; - I.suggestion_from_json(E, G, F); - var C = N().getInt32(E + 4 * 0, !0), B = N().getInt32(E + 4 * 1, !0), g = N().getInt32(E + 4 * 2, !0); - if (g) - throw w(B); - return D.__wrap(C); - } finally { - I.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get the text that is going to replace the problematic section. - * If [`Self::kind`] is `SuggestionKind::Remove`, this will return an empty - * string. - * @returns {string} - */ - get_replacement_text() { - let A, C; - try { - const E = I.__wbindgen_add_to_stack_pointer(-16); - I.suggestion_get_replacement_text(E, this.__wbg_ptr); - var B = N().getInt32(E + 4 * 0, !0), g = N().getInt32(E + 4 * 1, !0); - return A = B, C = g, c(B, g); - } finally { - I.__wbindgen_add_to_stack_pointer(16), I.__wbindgen_export_2(A, C, 1); - } - } - /** - * @returns {SuggestionKind} - */ - kind() { - return I.suggestion_kind(this.__wbg_ptr); - } -} -async function cA(Q, A) { - if (typeof Response == "function" && Q instanceof Response) { - if (typeof WebAssembly.instantiateStreaming == "function") - try { - return await WebAssembly.instantiateStreaming(Q, A); - } catch (B) { - if (Q.headers.get("Content-Type") != "application/wasm") - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", B); - else - throw B; - } - const C = await Q.arrayBuffer(); - return await WebAssembly.instantiate(C, A); - } else { - const C = await WebAssembly.instantiate(Q, A); - return C instanceof WebAssembly.Instance ? { instance: C, module: Q } : C; - } -} -function q() { - const Q = {}; - return Q.wbg = {}, Q.wbg.__wbg_String_8f0eb39a4a4c2f66 = function(A, C) { - const B = String(R(C)), g = p(B, I.__wbindgen_export_0, I.__wbindgen_export_1), E = b; - N().setInt32(A + 4 * 1, E, !0), N().setInt32(A + 4 * 0, g, !0); - }, Q.wbg.__wbg_buffer_609cc3eee51ed158 = function(A) { - const C = R(A).buffer; - return V(C); - }, Q.wbg.__wbg_error_7534b8e9a36f1ab4 = function(A, C) { - let B, g; - try { - B = A, g = C, console.error(c(A, C)); - } finally { - I.__wbindgen_export_2(B, g, 1); - } - }, Q.wbg.__wbg_getwithrefkey_1dc361bd10053bfe = function(A, C) { - const B = R(A)[R(C)]; - return V(B); - }, Q.wbg.__wbg_instanceof_ArrayBuffer_e14585432e3737fc = function(A) { - let C; - try { - C = R(A) instanceof ArrayBuffer; - } catch { - C = !1; - } - return C; - }, Q.wbg.__wbg_instanceof_Uint8Array_17156bcf118086a9 = function(A) { - let C; - try { - C = R(A) instanceof Uint8Array; - } catch { - C = !1; - } - return C; - }, Q.wbg.__wbg_length_a446193dc22c12f8 = function(A) { - return R(A).length; - }, Q.wbg.__wbg_lint_new = function(A) { - const C = m.__wrap(A); - return V(C); - }, Q.wbg.__wbg_log_0cc1b7768397bcfe = function(A, C, B, g, E, G, F, U) { - let a, W; - try { - a = A, W = C, console.log(c(A, C), c(B, g), c(E, G), c(F, U)); - } finally { - I.__wbindgen_export_2(a, W, 1); - } - }, Q.wbg.__wbg_log_cb9e190acc5753fb = function(A, C) { - let B, g; - try { - B = A, g = C, console.log(c(A, C)); - } finally { - I.__wbindgen_export_2(B, g, 1); - } - }, Q.wbg.__wbg_mark_7438147ce31e9d4b = function(A, C) { - performance.mark(c(A, C)); - }, Q.wbg.__wbg_measure_fb7825c11612c823 = function() { - return QA(function(A, C, B, g) { - let E, G, F, U; - try { - E = A, G = C, F = B, U = g, performance.measure(c(A, C), c(B, g)); - } finally { - I.__wbindgen_export_2(E, G, 1), I.__wbindgen_export_2(F, U, 1); - } - }, arguments); - }, Q.wbg.__wbg_new_405e22f390576ce2 = function() { - const A = new Object(); - return V(A); - }, Q.wbg.__wbg_new_8a6f238a6ece86ea = function() { - const A = new Error(); - return V(A); - }, Q.wbg.__wbg_new_a12002a7f91c75be = function(A) { - const C = new Uint8Array(R(A)); - return V(C); - }, Q.wbg.__wbg_set_3f1d0b984ed272ed = function(A, C, B) { - R(A)[w(C)] = w(B); - }, Q.wbg.__wbg_set_65595bdd868b3009 = function(A, C, B) { - R(A).set(R(C), B >>> 0); - }, Q.wbg.__wbg_stack_0ed75d68575b0f3c = function(A, C) { - const B = R(C).stack, g = p(B, I.__wbindgen_export_0, I.__wbindgen_export_1), E = b; - N().setInt32(A + 4 * 1, E, !0), N().setInt32(A + 4 * 0, g, !0); - }, Q.wbg.__wbg_suggestion_new = function(A) { - const C = D.__wrap(A); - return V(C); - }, Q.wbg.__wbindgen_boolean_get = function(A) { - const C = R(A); - return typeof C == "boolean" ? C ? 1 : 0 : 2; - }, Q.wbg.__wbindgen_debug_string = function(A, C) { - const B = z(R(C)), g = p(B, I.__wbindgen_export_0, I.__wbindgen_export_1), E = b; - N().setInt32(A + 4 * 1, E, !0), N().setInt32(A + 4 * 0, g, !0); - }, Q.wbg.__wbindgen_error_new = function(A, C) { - const B = new Error(c(A, C)); - return V(B); - }, Q.wbg.__wbindgen_in = function(A, C) { - return R(A) in R(C); - }, Q.wbg.__wbindgen_is_object = function(A) { - const C = R(A); - return typeof C == "object" && C !== null; - }, Q.wbg.__wbindgen_is_undefined = function(A) { - return R(A) === void 0; - }, Q.wbg.__wbindgen_jsval_loose_eq = function(A, C) { - return R(A) == R(C); - }, Q.wbg.__wbindgen_memory = function() { - const A = I.memory; - return V(A); - }, Q.wbg.__wbindgen_number_get = function(A, C) { - const B = R(C), g = typeof B == "number" ? B : void 0; - N().setFloat64(A + 8 * 1, v(g) ? 0 : g, !0), N().setInt32(A + 4 * 0, !v(g), !0); - }, Q.wbg.__wbindgen_object_clone_ref = function(A) { - const C = R(A); - return V(C); - }, Q.wbg.__wbindgen_object_drop_ref = function(A) { - w(A); - }, Q.wbg.__wbindgen_string_get = function(A, C) { - const B = R(C), g = typeof B == "string" ? B : void 0; - var E = v(g) ? 0 : p(g, I.__wbindgen_export_0, I.__wbindgen_export_1), G = b; - N().setInt32(A + 4 * 1, G, !0), N().setInt32(A + 4 * 0, E, !0); - }, Q.wbg.__wbindgen_string_new = function(A, C) { - const B = c(A, C); - return V(B); - }, Q.wbg.__wbindgen_throw = function(A, C) { - throw new Error(c(A, C)); - }, Q; -} -function t(Q, A) { - return I = Q.exports, j.__wbindgen_wasm_module = A, M = null, y = null, I.__wbindgen_start(), I; -} -function RA(Q) { - if (I !== void 0) return I; - typeof Q < "u" && (Object.getPrototypeOf(Q) === Object.prototype ? { module: Q } = Q : console.warn("using deprecated parameters for `initSync()`; pass a single object instead")); - const A = q(); - Q instanceof WebAssembly.Module || (Q = new WebAssembly.Module(Q)); - const C = new WebAssembly.Instance(Q, A); - return t(C, Q); -} -async function j(Q) { - if (I !== void 0) return I; - typeof Q < "u" && (Object.getPrototypeOf(Q) === Object.prototype ? { module_or_path: Q } = Q : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), typeof Q > "u" && (Q = new URL()); - const A = q(); - (typeof Q == "string" || typeof Request == "function" && Q instanceof Request || typeof URL == "function" && Q instanceof URL) && (Q = fetch(Q)); - const { instance: C, module: B } = await cA(await Q, A); - return t(C, B); -} -const UA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - Language: L, - Lint: m, - Linter: T, - Span: Z, - Suggestion: D, - SuggestionKind: FA, - apply_suggestion: EA, - default: j, - get_default_lint_config: GA, - get_default_lint_config_as_json: NA, - initSync: RA, - setup: BA, - to_title_case: gA -}, Symbol.toStringTag, { value: "Module" })), bA = "data:application/wasm;base64,AGFzbQEAAAAB7gIxYAJ/fwF/YAJ/fwBgAX8AYAN/f38Bf2ADf39/AGAFf39/f38Bf2ABfwF/YAR/f39/AGAFf39/f38AYAR/f39/AX9gBn9/f39/fwBgAAF/YAAAYAJ/fwF+YAJ/fgBgA39/fwF+YAd/f39/f39/AX9gAn9+AX9gA35+fwF+YAV/f39+fwBgA39/fgBgBH9/fn4AYAZ/f39/f38Bf2AHf39/f39/fwBgCH9/f39/f39/AGAEf3x/fwF/YAV/fn9/fwBgB39/fn5+fn4BfmADfn9/AGADf35/AX9gBH5+f38Bf2ADf35+AGACfn8AYAl/f39/f39+fn4AYAN+f38Bf2AJf39/f39/f39/AX9gBX9/fn5+AX5gC39/f39/f39/f39/AX9gBH9+fn4AYAN/fn8AYAR/fn5/AGAAAX5gA39/fABgBX9/fn9/AGAEf35/fwBgBX9/fX9/AGAEf31/fwBgBX9/fH9/AGAEf3x/fwACrAghA3diZxdfX3diaW5kZ2VuX2lzX3VuZGVmaW5lZAAGA3diZw1fX3diaW5kZ2VuX2luAAADd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAIDd2JnFl9fd2JpbmRnZW5fYm9vbGVhbl9nZXQABgN3YmcUX193YmluZGdlbl9lcnJvcl9uZXcAAAN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3AAADd2JnFV9fd2JpbmRnZW5fbnVtYmVyX2dldAABA3diZxRfX3diaW5kZ2VuX2lzX29iamVjdAAGA3diZxRfX3diZ19zdWdnZXN0aW9uX25ldwAGA3diZw5fX3diZ19saW50X25ldwAGA3diZxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxAAADd2JnFV9fd2JpbmRnZW5fc3RyaW5nX2dldAABA3diZx1fX3diZ19TdHJpbmdfOGYwZWIzOWE0YTRjMmY2NgABA3diZxtfX3diaW5kZ2VuX29iamVjdF9jbG9uZV9yZWYABgN3YmckX193YmdfZ2V0d2l0aHJlZmtleV8xZGMzNjFiZDEwMDUzYmZlAAADd2JnGl9fd2JnX3NldF8zZjFkMGI5ODRlZDI3MmVkAAQDd2JnGl9fd2JnX25ld180MDVlMjJmMzkwNTc2Y2UyAAsDd2JnLV9fd2Jn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X2xpbnRfY29uZmlnX2FzX29iamVjdACeAyJsaW50ZXJfc2V0X2xpbnRfY29uZmlnX2Zyb21fb2JqZWN0AJsDEmxpbnRlcl9pZ25vcmVfbGludAC4AgtsaW50ZXJfbGludADBAhtsaW50ZXJfZXhwb3J0X2lnbm9yZWRfbGludHMA8gIbbGludGVyX2ltcG9ydF9pZ25vcmVkX2xpbnRzAIMDGmxpbnRlcl9jbGVhcl9pZ25vcmVkX2xpbnRzAIEDDXRvX3RpdGxlX2Nhc2UA4wMQYXBwbHlfc3VnZ2VzdGlvbgD+ARVfX3diZ19zdWdnZXN0aW9uX2ZyZWUArQMfc3VnZ2VzdGlvbl9nZXRfcmVwbGFjZW1lbnRfdGV4dAD8Ag9zdWdnZXN0aW9uX2tpbmQAsQQPX193YmdfbGludF9mcmVlAK8CFWxpbnRfZ2V0X3Byb2JsZW1fdGV4dADmAg5saW50X2xpbnRfa2luZAD0AhVsaW50X2xpbnRfa2luZF9wcmV0dHkAtwIVbGludF9zdWdnZXN0aW9uX2NvdW50AMMEEGxpbnRfc3VnZ2VzdGlvbnMA0wIJbGludF9zcGFuAOcDDGxpbnRfbWVzc2FnZQD1Ah9nZXRfZGVmYXVsdF9saW50X2NvbmZpZ19hc19qc29uAJgDF2dldF9kZWZhdWx0X2xpbnRfY29uZmlnANMDD19fd2JnX3NwYW5fZnJlZQDVAxRfX3diZ19nZXRfc3Bhbl9zdGFydACzBRRfX3diZ19zZXRfc3Bhbl9zdGFydAC6BRJfX3diZ19nZXRfc3Bhbl9lbmQAtAUSX193Ymdfc2V0X3NwYW5fZW5kALsFCHNwYW5fbmV3APAEDXNwYW5faXNfZW1wdHkAwAMIc3Bhbl9sZW4AwQMFc2V0dXAAgQUTX193YmluZGdlbl9leHBvcnRfMACMBRNfX3diaW5kZ2VuX2V4cG9ydF8xALYFE19fd2JpbmRnZW5fZXhwb3J0XzIA7gUTX193YmluZGdlbl9leHBvcnRfMwCFBh9fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyAJgGEF9fd2JpbmRnZW5fc3RhcnQAgQUJ9AUBAEEBC/kC+gX7BfUFlAabAtIG2gbbBogG1wbYBuEG4QbhBoYFnwbdBNUGngbdBdcEogagBs8EmgbZ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IABBCGpBhI3rACkCADcCACAAQfyM6wApAgA3AgAPCyAAQQhqQfCM6wApAgA3AgAgAEHojOsAKQIANwIADwsgAEEIakHMjOsAKQIANwIAIABBxIzrACkCADcCAA8LIABBCGpBtIzrACkCADcCACAAQayM6wApAgA3AgAPCyAAQQhqQYyM6wApAgA3AgAgAEGEjOsAKQIANwIADwsgAEEIakHsi+sAKQIANwIAIABB5IvrACkCADcCAA8LIABBCGpB0IvrACkCADcCACAAQciL6wApAgA3AgAPCyAAQQhqQaSL6wApAgA3AgAgAEGci+sAKQIANwIADwsgAEEIakGMi+sAKQIANwIAIABBhIvrACkCADcCAA8LIABBCGpB8IrrACkCADcCACAAQeiK6wApAgA3AgAPCyAAQQhqQcyK6wApAgA3AgAgAEHEiusAKQIANwIADwsgAEEIakG0iusAKQIANwIAIABBrIrrACkCADcCAA8LIABBCGpBnIrrACkCADcCACAAQZSK6wApAgA3AgAPCyAAQQhqQfSJ6wApAgA3AgAgAEHsiesAKQIANwIADwsgAEEIakHciesAKQIANwIAIABB1InrACkCADcCAA8LIABBCGpBuInrACkCADcCACAAQbCJ6wApAgA3AgAPCyAAQQhqQaSJ6wApAgA3AgAgAEGciesAKQIANwIADwsgAEEIakGAiesAKQIANwIAIABB+IjrACkCADcCAA8LIABBCGpB6IjrACkCADcCACAAQeCI6wApAgA3AgAPCyAAQQhqQcCI6wApAgA3AgAgAEG4iOsAKQIANwIADwsgAEEIakGciOsAKQIANwIAIABBlIjrACkCADcCAA8LIABBCGpB/IfrACkCADcCACAAQfSH6wApAgA3AgAPCyAAQQhqQdiH6wApAgA3AgAgAEHQh+sAKQIANwIADwsgAEEIakG8h+sAKQIANwIAIABBtIfrACkCADcCAA8LIABBCGpBnIfrACkCADcCACAAQZSH6wApAgA3AgAPCyAAQQhqQfSG6wApAgA3AgAgAEHshusAKQIANwIADwsgAEEIakHUhusAKQIANwIAIABBzIbrACkCADcCAA8LIABBCGpBqIbrACkCADcCACAAQaCG6wApAgA3AgAPCyAAQQhqQfiF6wApAgA3AgAgAEHwhesAKQIANwIADwsgAEEIakGohesAKQIANwIAIABBoIXrACkCADcCAA8LIAZBgPwDRg2jAQsgAUGw/ANrQSBJDXQgAUHQ/ANrQSBJDXUgAUHw/ANrQZABSQ12IAFBgP4Da0HwAUkNdwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZB8P8DRwRAIAFBgP//AHEiBEGAgARGDQEgBEGAgQRGDQIgA0GAggRGDQMgAUHAggRrQdAASQ0EIAFBkIMEa0HAAEkNBSABQdCDBGtBMEkNBiACQYCFBEYNByABQaCFBGtBwABJDQggAkHghQRGDQkgAUGAhgRrQTBJDQogAUGwhgRrQSBJDQsgAUHQhgRrQTBJDQwgAkGAhwRGDQ0gAUGghwRrQcAASQ0OIAFBgIgEa0HQAEkNDyABQdCIBGtBMEkNECABQYCJBGtBMEkNESABQbCJBGtB0ABJDRIgAUGAigRrQTBJDRMgAUGwigRrQcAASQ0UIAFB8IoEa0HQAEkNFSABQYCMBGtBgANPDRYgAEEIakHI/uoAKQIANwIAIABBwP7qACkCADcCAA8LIABBCGpBvIPrACkCADcCACAAQbSD6wApAgA3AgAPCyAAQQhqQaSD6wApAgA3AgAgAEGcg+sAKQIANwIADwsgAEEIakGAg+sAKQIANwIAIABB+ILrACkCADcCAA8LIABBCGpB3ILrACkCADcCACAAQdSC6wApAgA3AgAPCyAAQQhqQbyC6wApAgA3AgAgAEG0gusAKQIANwIADwsgAEEIakGUgusAKQIANwIAIABBjILrACkCADcCAA8LIABBCGpB9IHrACkCADcCACAAQeyB6wApAgA3AgAPCyAAQQhqQdSB6wApAgA3AgAgAEHMgesAKQIANwIADwsgAEEIakG8gesAKQIANwIAIABBtIHrACkCADcCAA8LIABBCGpBpIHrACkCADcCACAAQZyB6wApAgA3AgAPCyAAQQhqQYCB6wApAgA3AgAgAEH4gOsAKQIANwIADwsgAEEIakHkgOsAKQIANwIAIABB3IDrACkCADcCAA8LIABBCGpBzIDrACkCADcCACAAQcSA6wApAgA3AgAPCyAAQQhqQbCA6wApAgA3AgAgAEGogOsAKQIANwIADwsgAEEIakGYgOsAKQIANwIAIABBkIDrACkCADcCAA8LIABBCGpB/P/qACkCADcCACAAQfT/6gApAgA3AgAPCyAAQQhqQeT/6gApAgA3AgAgAEHc/+oAKQIANwIADwsgAEEIakHM/+oAKQIANwIAIABBxP/qACkCADcCAA8LIABBCGpBtP/qACkCADcCACAAQaz/6gApAgA3AgAPCyAAQQhqQZz/6gApAgA3AgAgAEGU/+oAKQIANwIADwsgAEEIakGE/+oAKQIANwIAIABB/P7qACkCADcCAA8LIABBCGpB4P7qACkCADcCACAAQdj+6gApAgA3AgAPCyADQYCPBEYNeAJAAkACQAJAAkACQAJAAkAgA0GAkARHBEAgAkHAkARGDQEgAkHgkARGDQIgAUGAkQRrQTBJDQMgAUHgkQRrQQV2DgYEBQYICAcICyAAQQhqQZD+6gApAgA3AgAgAEGI/uoAKQIANwIADwsgAEEIakHs/eoAKQIANwIAIABB5P3qACkCADcCAA8LIABBCGpBzP3qACkCADcCACAAQcT96gApAgA3AgAPCyAAQQhqQbD96gApAgA3AgAgAEGo/eoAKQIANwIADwsgAEEIakGU/eoAKQIANwIAIABBjP3qACkCADcCAA8LIABBCGpB/PzqACkCADcCACAAQfT86gApAgA3AgAPCyAAQQhqQeD86gApAgA3AgAgAEHY/OoAKQIANwIADwsgAEEIakHI/OoAKQIANwIAIABBwPzqACkCADcCAA8LIAFBoJMEa0HgAEkNeQJAAkAgAUGAlARrQeAATwRAIAJB4JQERg0BIAJBgJUERw0CIABBCGpBxPvqACkCADcCACAAQbz76gApAgA3AgAPCyAAQQhqQYT86gApAgA3AgAgAEH8++oAKQIANwIADwsgAEEIakHo++oAKQIANwIAIABB4PvqACkCADcCAA8LIANBwJUERg16AkACQAJAAkACQAJAAkAgA0GAlgRHBEAgAkHAlgRGDQEgAkHglgRGDQIgAUGAlwRrQTBJDQMgAUGAmARrQdAASQ0EIARBgJkERg0FIANBgJoERg0GIAJB4JwERw0HIABBCGpBoPnqACkCADcCACAAQZj56gApAgA3AgAPCyAAQQhqQYT76gApAgA3AgAgAEH8+uoAKQIANwIADwsgAEEIakHs+uoAKQIANwIAIABB5PrqACkCADcCAA8LIABBCGpBxPrqACkCADcCACAAQbz66gApAgA3AgAPCyAAQQhqQZz66gApAgA3AgAgAEGU+uoAKQIANwIADwsgAEEIakH8+eoAKQIANwIAIABB9PnqACkCADcCAA8LIABBCGpB4PnqACkCADcCACAAQdj56gApAgA3AgAPCyAAQQhqQcD56gApAgA3AgAgAEG4+eoAKQIANwIADwsgA0GAnQRGDXsgA0HAnQRGDXwgAUGAngRrQTBJDX0gAUGwngRrQcAASQ1+IAFB8J4Ea0HAAEkNfyABQbCfBGtBMEkNgAEgAkHgnwRGDYEBIARBgKAERg2CASABQYChBGtB0ABJDYMBIAFB0KEEa0EwSQ2EASABQYCiBGtB0ABJDYUBIAFB0KIEa0EwSQ2GASABQYCjBGtB4ABJDYcBIAJB4KMERg2IASABQYCkBGtB0ABJDYkBIAFBgKUEa0EwSQ2KAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBsKUEa0HQAE8EQCAEQYCmBEYNASAEQYCoBEYNAiABQYCpBGtB4ABJDQMgBEGAqwRGDQQgAUGArARrQeAASQ0FIAJB4KwERg0GIAFBgK0Ea0HQAEkNByABQYCuBGtB0ABJDQggAUGAsARrQdAASQ0JIAFBoLEEa0HgAEkNCiABQYCyBGtB4ABJDQsgAUGgswRrQeAASQ0MIAFBgLQEa0HQAEkNDSABQdC0BGtB4ABJDQ4gBkGwtQRGDQ8gA0HAtQRGDRAgAUGAtgRrQeAASQ0RIAFBgLgEa0HwAEkNEiABQfC4BGtB0ABJDRMgAUGAugRrQeAASQ0UIAFB4LoEa0HQAEkNFSACQeC9BEYNFiABQYC+BGtB4ABJDRcgBkGwvwRGDRggA0HAvwRGDRkgAUGA+P8AcSIHQYDABEYNGiAEQYDIBEYNGyABQYDJBGtB0AFJDRwgAUGQ3wRrQfAASQ0dIAFBgOAEa0GwCEkNHiABQbDoBGtBMEkNHyABQYCIBWtBgAVJDSAgAUGA0AVrQcAESQ0hIAFBwNQFa0EwSQ0iIAFB8NQFa0HgAEkNIyABQdDVBWtBMEkNJCABQYDWBWtBkAFJDSUgAUHA3AVrQeAASQ0mIAFBgN4Fa0GgAUkNJyACQeDfBUYNKCABQYDgBWtBgDBJDSkgAUGAkAZrQYAGSQ0qIAFBgJYGa0GABEkNKyAEQYCaBkYNLCAGQfDfBkYNLSAFQYDgBkYNLiABQYDiBmtBMEkNLyABQbDiBmtBwABJDTAgAUHw4gZrQZADSQ0xIAFBgPgGa0GgAUkNMiAGQaD5BkYNMyABQYCeB2tB0AFPDTQgAEEIakGM6eoAKQIANwIAIABBhOnqACkCADcCAA8LIABBCGpB0PXqACkCADcCACAAQcj16gApAgA3AgAPCyAAQQhqQbT16gApAgA3AgAgAEGs9eoAKQIANwIADwsgAEEIakGc9eoAKQIANwIAIABBlPXqACkCADcCAA8LIABBCGpBiPXqACkCADcCACAAQYD16gApAgA3AgAPCyAAQQhqQfD06gApAgA3AgAgAEHo9OoAKQIANwIADwsgAEEIakHY9OoAKQIANwIAIABB0PTqACkCADcCAA8LIABBCGpBxPTqACkCADcCACAAQbz06gApAgA3AgAPCyAAQQhqQaD06gApAgA3AgAgAEGY9OoAKQIANwIADwsgAEEIakGI9OoAKQIANwIAIABBgPTqACkCADcCAA8LIABBCGpB9PPqACkCADcCACAAQezz6gApAgA3AgAPCyAAQQhqQdzz6gApAgA3AgAgAEHU8+oAKQIANwIADwsgAEEIakHA8+oAKQIANwIAIABBuPPqACkCADcCAA8LIABBCGpBpPPqACkCADcCACAAQZzz6gApAgA3AgAPCyAAQQhqQYjz6gApAgA3AgAgAEGA8+oAKQIANwIADwsgAEEIakHo8uoAKQIANwIAIABB4PLqACkCADcCAA8LIABBCGpB0PLqACkCADcCACAAQcjy6gApAgA3AgAPCyAAQQhqQZDy6gApAgA3AgAgAEGI8uoAKQIANwIADwsgAEEIakH08eoAKQIANwIAIABB7PHqACkCADcCAA8LIABBCGpBzPHqACkCADcCACAAQcTx6gApAgA3AgAPCyAAQQhqQbDx6gApAgA3AgAgAEGo8eoAKQIANwIADwsgAEEIakGY8eoAKQIANwIAIABBkPHqACkCADcCAA8LIABBCGpB+PDqACkCADcCACAAQfDw6gApAgA3AgAPCyAAQQhqQdjw6gApAgA3AgAgAEHQ8OoAKQIANwIADwsgAEEIakHA8OoAKQIANwIAIABBuPDqACkCADcCAA8LIABBCGpBrPDqACkCADcCACAAQaTw6gApAgA3AgAPCyAAQQhqQYzw6gApAgA3AgAgAEGE8OoAKQIANwIADwsgAEEIakHs7+oAKQIANwIAIABB5O/qACkCADcCAA8LIABBCGpB0O/qACkCADcCACAAQcjv6gApAgA3AgAPCyAAQQhqQZzv6gApAgA3AgAgAEGU7+oAKQIANwIADwsgAEEIakH07uoAKQIANwIAIABB7O7qACkCADcCAA8LIABBCGpB2O7qACkCADcCACAAQdDu6gApAgA3AgAPCyAAQQhqQbTu6gApAgA3AgAgAEGs7uoAKQIANwIADwsgAEEIakGA7uoAKQIANwIAIABB+O3qACkCADcCAA8LIABBCGpB2O3qACkCADcCACAAQdDt6gApAgA3AgAPCyAAQQhqQbjt6gApAgA3AgAgAEGw7eoAKQIANwIADwsgAEEIakGk7eoAKQIANwIAIABBnO3qACkCADcCAA8LIABBCGpBjO3qACkCADcCACAAQYTt6gApAgA3AgAPCyAAQQhqQfDs6gApAgA3AgAgAEHo7OoAKQIANwIADwsgAEEIakHU7OoAKQIANwIAIABBzOzqACkCADcCAA8LIABBCGpBuOzqACkCADcCACAAQbDs6gApAgA3AgAPCyAAQQhqQaTs6gApAgA3AgAgAEGc7OoAKQIANwIADwsgAEEIakHw6+oAKQIANwIAIABB6OvqACkCADcCAA8LIABBCGpB2OvqACkCADcCACAAQdDr6gApAgA3AgAPCyAAQQhqQbTr6gApAgA3AgAgAEGs6+oAKQIANwIADwsgAEEIakGQ6+oAKQIANwIAIABBiOvqACkCADcCAA8LIABBCGpB7OrqACkCADcCACAAQeTq6gApAgA3AgAPCyAAQQhqQczq6gApAgA3AgAgAEHE6uoAKQIANwIADwsgAEEIakGs6uoAKQIANwIAIABBpOrqACkCADcCAA8LIABBCGpBjOrqACkCADcCACAAQYTq6gApAgA3AgAPCyAAQQhqQejp6gApAgA3AgAgAEHg6eoAKQIANwIADwsgAEEIakHQ6eoAKQIANwIAIABByOnqACkCADcCAA8LIABBCGpBuOnqACkCADcCACAA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6wApAgA3AgAgAEGwqusAKQIANwIADwsgAEEIakGgqusAKQIANwIAIABBmKrrACkCADcCAA8LIABBCGpB/KnrACkCADcCACAAQfSp6wApAgA3AgAPCyAAQQhqQeSp6wApAgA3AgAgAEHcqesAKQIANwIADwsgAEEIakHMqesAKQIANwIAIABBxKnrACkCADcCAA8LIABBCGpBtKnrACkCADcCACAAQayp6wApAgA3AgAPCyAAQQhqQZyp6wApAgA3AgAgAEGUqesAKQIANwIADwsgAEEIakH4qOsAKQIANwIAIABB8KjrACkCADcCAA8LIABBCGpB4KjrACkCADcCACAAQdio6wApAgA3AgAPCyAAQQhqQcyo6wApAgA3AgAgAEHEqOsAKQIANwIADwsgAEEIakGwqOsAKQIANwIAIABBqKjrACkCADcCAA8LIABBCGpBmKjrACkCADcCACAAQZCo6wApAgA3AgAPCyAAQQhqQfSn6wApAgA3AgAgAEHsp+sAKQIANwIADwsgAEEIakHQp+sAKQIANwIAIABByKfrACkCADcCAA8LIABBCGpBrKfrACkCADcCACAAQaSn6wApAgA3AgAPCyAAQQhqQZCn6wApAgA3AgAgAEGIp+sAKQIANwIADwsgAEEIakH4pusAKQIANwIAIABB8KbrACkCADcCAA8LIABBCGpB4KbrACkCADcCACAAQdim6wApAgA3AgAPCyAAQQhqQcim6wApAgA3AgAgAEHApusAKQIANwIADwsgAEEIakGwpusAKQIANwIAIABBqKbrACkCADcCAA8LIABBCGpBmKbrACkCADcCACAAQZCm6wApAgA3AgAPCyAAQQhqQYCm6wApAgA3AgAgAEH4pesAKQIANwIADwsgAEEIakHopesAKQIANwIAIABB4KXrACkCADcCAA8LIABBCGpBzKXrACkCADcCACAAQcSl6wApAgA3AgAPCyAAQQhqQbSl6wApAgA3AgAgAEGspesAKQIANwIADwsgAEEIakGgpesAKQIANwIAIABBmKXrACkCADcCAA8LIABBCGpBjKXrACkCADcCACAAQYSl6wApAgA3AgAPCyAAQQhqQfSk6wApAgA3AgAgAEHspOsAKQIANwIADwsgAEEIakHcpOsAKQIANwIAIABB1KTrACkCADcCAA8LIABBCGpBxKTrACkCADcCACAAQbyk6wApAgA3AgAPCyAAQQhqQaik6wApAgA3AgAgAEGgpOsAKQIANwIADwsgAEEIakGQpOsAKQIANwIAIABBiKTrACkCADcCAA8LIABBCGpB7KPrACkCADcCACAAQeSj6wApAgA3AgAPCyAAQQhqQdSj6wApAgA3AgAgAEHMo+sAKQIANwIADwsgAEEIakGco+sAKQIANwIAIABBlKPrACkCADcCAA8LIABBCGpBhKPrACkCADcCACAAQfyi6wApAgA3AgAPCyAAQQhqQeyi6wApAgA3AgAgAEHkousAKQIANwIADwsgAEEIakHUousAKQIANwIAIABBzKLrACkCADcCAA8LIABBCGpBvKLrACkCADcCACAAQbSi6wApAgA3AgAPCyAAQQhqQaSi6wApAgA3AgAgAEGcousAKQIANwIADwsgAEEIakGMousAKQIANwIAIABBhKLrACkCADcCAA8LIABBCGpB9KHrACkCADcCACAAQeyh6wApAgA3AgAPCyAAQQhqQdih6wApAgA3AgAgAEHQoesAKQIANwIADwsgAEEIakGYoesAKQIANwIAIABBkKHrACkCADcCAA8LIABBCGpBgKHrACkCADcCACAAQfig6wApAgA3AgAPCyAAQQhqQeig6wApAgA3AgAgAEHgoOsAKQIANwIADwsgAEEIakHMoOsAKQIANwIAIABBxKDrACkCADcCAA8LIABBCGpBrKDrACkCADcCACAAQaSg6wApAgA3AgAPCyAAQQhqQZSg6wApAgA3AgAgAEGMoOsAKQIANwIADwsgAEEIakH8n+sAKQIANwIAIABB9J/rACkCADcCAA8LIABBCGpByJ/rACkCADcCACAAQcCf6wApAgA3AgAPCyAAQQhqQbCf6wApAgA3AgAgAEGon+sAKQIANwIADwsgAEEIakGUn+sAKQIANwIAIABBjJ/rACkCADcCAA8LIABBCGpB/J7rACkCADcCACAAQfSe6wApAgA3AgAPCyAAQQhqQeSe6wApAgA3AgAgAEHcnusAKQIANwIADwsgAEEIakHMnusAKQIANwIAIABBxJ7rACkCADcCAA8LIABBCGpBqJ7rACkCADcCACAAQaCe6wApAgA3AgAPCyAAQQhqQYSe6wApAgA3AgAgAEH8nesAKQIANwIADwsgAEEIakHgnesAKQIANwIAIABB2J3rACkCADcCAA8LIABBCGpBwJ3rACkCADcCACAAQbid6wApAgA3AgAPCyAAQQhqQZyd6wApAgA3AgAgAEGUnesAKQIANwIADwsgAEEIakHsnOsAKQIANwIAIABB5JzrACkCADcCAA8LIABBCGpBtJzrACkCADcCACAAQayc6wApAgA3AgAPCyAAQQhqQYic6wApAgA3AgAgAEGAnOsAKQIANwIADwsgAEEIakHom+sAKQIANwIAIABB4JvrACkCADcCAA8LIABBCGpBxJvrACkCADcCACAAQbyb6wApAgA3AgAPCyAAQQhqQZib6wApAgA3AgAgAEGQm+sAKQIANwIADwsgAEEIakH4musAKQIANwIAIABB8JrrACkCADcCAA8LIABBCGpBwJrrACkCADcCACAAQbia6wApAgA3AgAPCyAAQQhqQZya6wApAgA3AgAgAEGUmusAKQIANwIADwsgAEEIakGAmusAKQIANwIAIABB+JnrACkCADcCAA8LIABBCGpB6JnrACkCADcCACAAQeCZ6wApAgA3AgAPCyAAQQhqQcCZ6wApAgA3AgAgAEG4mesAKQIANwIADwsgAEEIakGYmesAKQIANwIAIABBkJnrACkCADcCAA8LIABBCGpB+JjrACkCADcCACAAQfCY6wApAgA3AgAPCyAAQQhqQciY6wApAgA3AgAgAEHAmOsAKQIANwIADwsgAEEIakGgmOsAKQIANwIAIABBmJjrACkCADcCAA8LIABBCGpBhJjrACkCADcCACAAQfyX6wApAgA3AgAPCyAAQQhqQeSX6wApAgA3AgAgAEHcl+sAKQIANwIADwsgAEEIakHEl+sAKQIANwIAIABBvJfrACkCADcCAA8LIABBCGpBnJfrACkCADcCACAAQZSX6wApAgA3AgAPCyAAQQhqQYSX6wApAgA3AgAgAEH8lusAKQIANwIADwsgAEEIakHQlusAKQIANwIAIABByJbrACkCADcCAA8LIABBCGpBqJbrACkCADcCACAAQaCW6wApAgA3AgAPCyAAQQhqQYiW6wApAgA3AgAgAEGAlusAKQIANwIADwsgAEEIakHglesAKQIANwIAIABB2JXrACkCADcCAA8LIABBCGpBrJXrACkCADcCACAAQaSV6wApAgA3AgAPCyAAQQhqQfiU6wApAgA3AgAgAEHwlOsAKQIANwIADwsgAEEIakHIlOsAKQIANwIAIABBwJTrACkCADcCAA8LIABBCGpBrJTrACkCADcCACAAQaSU6wApAgA3AgAPCyAAQQhqQYyU6wApAgA3AgAgAEGElOsAKQIANwIADwsgAEEIakH0k+sAKQIANwIAIABB7JPrACkCADcCAA8LIABBCGpB0JPrACkCADcCACAAQciT6wApAgA3AgAPCyAAQQhqQbiT6wApAgA3AgAgAEGwk+sAKQIANwIADwsgAEEIakGUk+sAKQIANwIAIABBjJPrACkCADcCAA8LIABBCGpB8JLrACkCADcCACAAQeiS6wApAgA3AgAPCyAAQQhqQciS6wApAgA3AgAgAEHAkusAKQIANwIADwsgAEEIakGgkusAKQIANwIAIABBmJLrACkCADcCAA8LIABBCGpBgJLrACkCADcCACAAQfiR6wApAgA3AgAPCyAAQQhqQcyR6wApAgA3AgAgAEHEkesAKQIANwIADwsgAEEIakGgkesAKQIANwIAIABBmJHrACkCADcCAA8LIABBCGpBiJHrACkCADcCACAAQYCR6wApAgA3AgAPCyAAQQhqQfCQ6wApAgA3AgAgAEHokOsAKQIANwIADwsgAEEIakHYkOsAKQIANwIAIABB0JDrACkCADcCAA8LIABBCGpBrJDrACkCADcCACAAQaSQ6wApAgA3AgAPCyAAQQhqQZSQ6wApAgA3AgAgAEGMkOsAKQIANwIADwsgAEEIakHwj+sAKQIANwIAIABB6I/rACkCADcCAA8LIABBCGpBiIXrACkCADcCACAAQYCF6wApAgA3AgAPCyAAQQhqQeSE6wApAgA3AgAgAEHchOsAKQIANwIADwsgAEEIakG8hOsAKQIANwIAIABBtITrACkCADcCAA8LIABBCGpBmITrACkCADcCACAAQZCE6wApAgA3AgAPCyAAQQhqQeyD6wApAgA3AgAgAEHkg+sAKQIANwIADwsgAEEIakGw/uoAKQIANwIAIABBqP7qACkCADcCAA8LIABBCGpBpPzqACkCADcCACAAQZz86gApAgA3AgAPCyAAQQhqQaD76gApAgA3AgAgAEGY++oAKQIANwIADwsgAEEIakH8+OoAKQIANwIAIABB9PjqACkCADcCAA8LIABBCGpB5PjqACkCADcCACAAQdz46gApAgA3AgAPCyAAQQhqQcD46gApAgA3AgAgAEG4+OoAKQIANwIADwsgAEEIakGk+OoAKQIANwIAIABBnPjqACkCADcCAA8LIABBCGpBjPjqACkCADcCACAAQYT46gApAgA3AgAPCyAAQQhqQfD36gApAgA3AgAgAEHo9+oAKQIANwIADwsgAEEIakHU9+oAKQIANwIAIABBzPfqACkCADcCAA8LIABBCGpBvPfqACkCADcCACAAQbT36gApAgA3AgAPCyAAQQhqQaT36gApAgA3AgAgAEGc9+oAKQIANwIADwsgAEEIakGM9+oAKQIANwIAIABBhPfqACkCADcCAA8LIABBCGpB8PbqACkCADcCACAAQej26gApAgA3AgAPCyAAQQhqQdj26gApAgA3AgAgAEHQ9uoAKQIANwIADwsgAEEIakHA9uoAKQIANwIAIABBuPbqACkCADcCAA8LIABBCGpBqPbqACkCADcCACAAQaD26gApAgA3AgAPCyAAQQhqQYD26gApAgA3AgAgAEH49eoAKQIANwIADwsgAEEIakHo9eoAKQIANwIAIABB4PXqACkCADcCAA8LIABBCGpB4OjqACkCADcCACAAQdjo6gApAgA3AgAPCyAAQQhqQbTo6gApAgA3AgAgAEGs6OoAKQIANwIADwsgAEEIakHg4eoAKQIANwIAIABB2OHqACkCADcCAA8LIABBCGpBsOHqACkCADcCACAAQajh6gApAgA3AgAPCyAAQQhqQYDh6gApAgA3AgAgAEH44OoAKQIANwIADwsgAEEIakHI4OoAKQIANwIAIABBwODqACkCADcCAA8LIABBCGpBjN/qACkCADcCACAAQYTf6gApAgA3AgAPCyAAQQhqQeTe6gApAgA3AgAgAEHc3uoAKQIANwIADwsgAEEIakGw3uoAKQIANwIAIABBqN7qACkCADcCAA8LIABBCGpBkN7qACkCADcCACAAQYje6gApAgA3AgAPCyAAQQhqQdzd6gApAgA3AgAgAEHU3eoAKQIANwIADwsgAEEIakGw3eoAKQIANwIAIABBqN3qACkCADcCAA8LIABBCGpB/NzqACkCADcCACAAQfTc6gApAgA3AgAPCyAAQQhqQcjc6gApAgA3AgAgAEHA3OoAKQIANwIADwsgAEEIakGU3OoAKQIA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CyAJIAtJG0EBaiEIAkADQCAIQQFrIghFDQEgBygCACEMIAQoAgAhCiAEQQRqIQQgB0EEaiEHIAogDEYNAAsgCiAMSQ0BDAILIAkgC08NAQsgASAGTQ0EIBBBOGoiDiAAQTBqIhspAgA3AwAgEEEwaiIRIABBKGoiHykCADcDACAQQShqIhIgAEEgaiIZKQIANwMAIBBBIGoiFiAAQRhqIhwpAgA3AwAgEEEYaiIUIABBEGoiGikCADcDACAQQRBqIhcgAEEIaiIeKQIANwMAIBAgACkCADcDCCAAIAZBOGxqIgVBMGoiBikCACEhIAVBKGoiBCkCACEiIAVBIGoiBykCACEjIAVBGGoiDCkCACEkIAVBEGoiCCkCACElIAVBCGoiCSkCACEmIAAgBSkCADcCACAeICY3AgAgGiAlNwIAIBwgJDcCACAZICM3AgAgHyAiNwIAIBsgITcCACAGIA4pAwA3AgAgBCARKQMANwIAIAcgEikDADcCACAMIBYpAwA3AgAgCCAUKQMANwIAIAkgFykDADcCACAFIBApAwg3AgAgDiAAQegAaikCADcDACARIABB4ABqKQIANwMAIBIgAEHYAGopAgA3AwAgFiAAQdAAaikCADcDACAUIABByABqKQIANwMAIBcgAEFAaykCADcDACAQIAApAjg3AwggAEE4aiIMIAFBAWsiBUE4bGohGCAAQfAAaiEEQQAhCQJAIAVBAkgEQCAMIQUMAQsgACgCNCIVQQ1PBEAgACgCBCEVIAAoAgghCiAMIQYDQCAEIQUgBigCbCIHQQxNBH8gBkE8agUgBigCPCEHIAYoAkALIQQgByAVIAcgFUkiCxtBAWohCCAKIQcCQANAIAhBAWsiCEUNASAHKAIAIQ8gBCgCACETIARBBGohBCAHQQRqIQcgDyATRg0ACyAPIBNLIQsLIAwgCUE4bGoiBCkCACEhIARBCGoiBykCACEiIARBEGoiCCkCACEjIARBGGoiDykCACEkIARBIGoiEykCACElIARBKGoiHSkCACEmIAZBMGogBEEwaiIgKQIANwIAIAZBKGogJjcCACAGQSBqICU3AgAgBkEYaiAkNwIAIAZBEGogIzcCACAGQQhqICI3AgAgBiAhNwIAICAgBUEwaikCADcCACAdIAVBKGopAgA3AgAgEyAFQSBqKQIANwIAIA8g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JTcCACAcICQ3AgAgGSAjNwIAIB8gIjcCACAbICE3AgAgAiAOKQMANwIAIAYgESkDADcCACAEIBIpAwA3AgAgByAWKQMANwIAIAwgFCkDADcCACAIIBcpAwA3AgAgBSAQKQMINwIAIA4gAEHoAGopAgA3AwAgESAAQeAAaikCADcDACASIABB2ABqKQIANwMAIBYgAEHQAGopAgA3AwAgFCAAQcgAaikCADcDACAXIABBQGspAgA3AwAgECAAKQI4NwMIIABBOGoiAiABQQFrIgVBOGxqIRggAEHwAGohBCAAKAI0IQpBACEJAkAgBUECSARAIAIhBQwBCyAKQQ1PBEAgACgCBCEVIAAoAgghDCACIQYDQCAEIQUgBigCbCIHQQxNBH8gBkE8agUgBigCPCEHIAYoAkALIQQgFSAHIAcgFUsiCxtBAWohCCAMIQcCQANAIAhBAWsiCEUNASAEKAIAIQ8gBygCACETIAdBBGohByAEQQRqIQQgDyATRg0ACyAPIBNLIQsLIAIgCUE4bGoiBCkCACEhIARBCGoiBykCACEiIARBEGoiCCkCACEjIARBGGoiDykCACEkIARBIGoiEykCACElIARBKGoiHSkCACEmIAZBMGogBEEwaiIgKQIANwIAIAZBKGogJjcCACAGQSBqICU3AgAgBkEYaiAkNwIAIAZBEGogIzcCACAGQQhqICI3AgAgBiAhNwIAICAgBUEwaikCADcCACAdIAVBKGopAgA3AgAgEyAFQSBqKQIANwIAIA8gBUEYaikCADcCACAIIAVBEGopAgA3AgAgByAFQQhqKQIANwIAIAQgBSkCADcCACAJIAtBAXNqIQkgBSIGQThqIgQgGEkNAAsMAQsgAEEEaiEMIAIhBgNAIAQhBQJ/IAYoAmwiB0ENTwRAIAYoAjwhByAGKAJADAELIAZBPGoLIQQgCiAHIAcgCksiCxtBAWohCCAMIQcCQANAIAhBAWsiCEUNASAEKAIAIRUgBygCACEPIAdBBGohByAEQQRqIQQgDyAVRg0ACyAPIBVJIQsLIAIgCUE4bGoiBCkCACEhIARBCGoiBykCACEiIARBEGoiCCkCACEjIARBGGoiFSkCACEkIARBIGoiDykCACElIARBKGoiEykCACEmIAZBMGogBEEwaiIdKQIANwIAIAZBKGogJjcCACAGQSBq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aygCAAwBCyAEQTRrCyEKIAdBAWohByAEQThrIQAgDSABIAEgDUsbQQFqIQsCQAJAAkADQCALQQFrIgtFDQEgCigCACEIIAIoAgAhFCACQQRqIQIgCkEEaiEKIAggFEYNAAsgCCAUSw0BDAILIAEgDU0NAQsgBCAAKQIANwIAIAlBuBVqIBcpAgA3AwAgCUGwFWogGCkCADcDACAJQagVaiAbKQIANwMAIAlBoBVqIB8pAgA3AwAgCUGYFWogGSkCADcDACAJQZAVaiAcKQIANwMAIB0gAEEIaikCADcCACATIABBEGopAgA3AgAgDyAAQRhqKQIANwIAIBUgAEEgaikCADcCACAeIABBKGopAgA3AgAgGiAAQTBqKQIANwIAIAkgEikCADcDiBUCQCAJQQhqIgEgAEYNACAJKAK8FSIIQQ1PBEAgCSgCjBUhFCAJKAKQFSEIA0AgAEEEaygCACINQQxNBH8gAEE0awUgAEE0aygCACENIABBMGsoAgALIQogAEE4ayEEIBQgDSANIBRLG0EBaiELIAghAgJAAkADQCALQQFrIgtFDQEgCigCACEaIAIoAgAhHiACQQRqIQIgCkEEaiEKIBogHkYNAAsgGiAeSw0BIAAhAQwECyANIBRLDQAgACEBDAMLIAAgBCkCADcCACAAQTBqIARBMGopAgA3AgAgAEEoaiAEQShqKQIANwIAIABBIGogBEEgaikCADcCACAAQRhqIARBGGopAgA3AgAgAEEQaiAEQRBqKQIANwIAIABBCGogBEEIaikCADcCACAEIgAgCUEIakcNAAsMAQsDQAJ/IABBBGsoAgAiDUENTwRAIABBNGsoAgAhDSAAQTBrKAIADAELIABBNGsLIQogAEE4ayEEIAggDSAIIA1JG0EBaiELIAMhAgJAAkADQCALQQFrIgtFDQEgCigCACEUIAIoAgAhGiACQQRqIQIgCkEEaiEKIBQgGkYNAAsgFCAaSw0BIAAhAQwDCyAIIA1JDQAgACEBDAILIAAgBCkCADcCACAAQTBqIARBMGopAgA3AgAgAEEoaiAEQShqKQIANwIAIABBIGogBEEgaikCADcCACAAQRhqIARBGGopAgA3AgAgAEEQaiAEQRBqKQIANwIAIABBCGogBEEIaikCADcCACAEIgAgCUEIakcNAAsLIBwpAgAhISAZKQIAISIgHykCACEjIBspAgAhJCAYKQIAISUgEikCACEmIAFBMGogFykCADcCACABQShqICU3AgAgAUEgaiAkNwIAIAFBGGogIzcCACABQRBqICI3AgAgAUEIaiAhNwIAIAEgJjcCAAsgByAWRw0ACwsgDCAWayIaIAZLBEADQCAOIAZBOGwiAGoiBEEwaiIcIAAgEWoiB0EwaiISKQIANwIAIAQgBykCADcCACAEQShqIh4gB0EoaiIUKQIANwIAIARBIGoiFSAHQSBqIhcpAgA3AgAgBEEYaiIPIAdBGGoiGCkCADcCACAEQRBqIhMgB0EQaiIbKQIANwIAIARBCGoiHSAHQQhqIh8pAgA3AgAgBCgCNCINQQxNBH8gBEEEagUgBCgCBCENIAQoAggLIQIgBEEEaygCACIBQQxNBH8gBEE0awUgBEE0aygCACEBIARBMGsoAgALIQogBkEBaiEGIARBOGshACANIAEgASANSxtBAWohCwJAAkACQANAIAtBAWsiC0UNASAKKAIAIQggAigCACEZIAJBBGohAiAKQQRqIQogCCAZRg0ACyAIIBlLDQEMAgsgASANTQ0BCyAEIAApAgA3AgAgCUG4FWogEikCADcDACAJQbAVaiAUKQIANwMAIAlBqBVqIBcpAgA3AwAgCUGgFWogGCkCADcDACAJQZgVaiAbKQIANwMAIAlBkBVqIB8pAgA3AwAgHSAAQQhqKQIANwIAIBMgAEEQaikCADcCACAPIABBGGopAgA3AgAgFSAAQSBqKQIANwIAIB4gAEEoaikCADcCACAcIABBMGopAgA3AgAgCSAHKQIANwOIFQJ/IA4gACAORg0AGgJAIAkoArwVIgRBDE0EQANAIABBBGsoAgAiDUEMTQR/IABBNGsFIABBNGsoAgAhDSAAQTBrKAIACyEKIABBOGshASAEIA0gBCANSRtBAWohCyADIQICQAJAA0AgC0EBayILRQ0BIAooAgAhCCACKAIAIRkgAkEEaiECIApBBGohCiAIIBlGDQALIAggGUsNASAADAULIAQgDUkNACAADAQLIAAgASkCADcCACAAQTBqIAFBMGopAgA3AgAgAEEoaiABQShqKQIANwIAIABBIGogAUEgaikCADcCACAAQRhqIAFBGGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCACABIgAgDkcNAAwCCwALIAkoAowVIQggCSgCkBUhBANAIABBBGsoAgAiDUEMTQR/IABBNGsFIABBNGsoAgAhDSAAQTBrKAIACyEKIABBOGshASAIIA0gCCANSRtBAWohCyAEIQICQAJAA0AgC0EBayILRQ0BIAooAgAhGSACKAIAIRwgAkEEaiECIApBBGohCiAZIBxGDQALIBkgHEsNASAADAQLIAggDUkNACAADAMLIAAgASkCADcCACAAQTBqIAFBMGopAgA3AgAgAEEoaiABQShqKQIANwIAIABBIGogAUEgaikCADcCACAAQRhqIAFBGGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCACABIgAgDkcNAAsLIA4LIQAgHykCACEhIBspAgAhIiAYKQIAISMgFykCACEkIBQpAgAhJSAHKQIAISYgAEEwaiASKQIANwIAIABBKGogJTcCACAAQSBqICQ3AgAgAEEYaiAjNwIAIABBEGogIjcCACAAQQhqICE3AgAgACAmNwIACyAGIBpHDQALCyAOQThrIQ0gBSAMQThsQThrIgFqIQAgCUEIaiIDIAFqIQZBACEEA0ACfyAOKAI0IgtBDU8EQCAOKAIEIQsgDigCCAwBCyAOQQRqCyECAn8gAygCNCIBQQ1PBEAgAygCBCEBIAMoAggMAQsgA0EEagshCiAEQQFqIQQgCyABIAEgC0siARtBAWohCwJAA0AgC0EBayILRQ0BIAooAgAhByACKAIAIQggAkEEaiECIApBBGohCiAHIAhGDQALIAcgCEshAQsgBSAOIAMgARsiAikCADcCACAFQTBqIAJBMGopAgA3AgAgBUEoaiACQShqKQIANwIAIAVBIGogAkEgaikCADcCACAFQRhqIAJBGGopAgA3AgAgBUEQaiACQRBqKQIANwIAIAVBCGogAkEIaikCADcCACABQQFzAn8gBigCNCILQQ1PBEAgBigCBCELIAYoAggMAQsgBkEEagshAiABQThsIQhBOGwhBwJ/IA0oAjQiAUENTwRAIA0oAgQhASANKAIIDAELIA1BBGoLIQogBUE4aiEFIAggDmohDiADIAdqIQMgCyABIAEgC0siARtBAWohCwJAA0AgC0EBayILRQ0BIAooAgAhByACKAIAIQggAkEEaiECIApBBGohCiAHIAhGDQALIAcgCEshAQsgACANIAYgARsiAikCADcCACAAQTBqIAJBMGopAgA3AgAgAEEoaiACQShqKQIANwIAIABBIGogAkEgaikCADcCACAAQRhqIAJBGGopAgA3AgAgAEEQaiACQRBqKQIANwIAIABBCGogAkEIaikCADcCACAAQThrIQAgDSABQUhsaiENIAFBOGwgBmpBOGshBiAEIBZHDQALIA1BOGohASAMQQFxBH8gBSADIA4gASADSyICGyIAKQIANwIAIAVBMGogAEEwaikCADcCACAFQShqIABBKGopAgA3AgAgBUEgaiAAQSBqKQIANwIAIAVBGGogAEEYaikCADcCACAFQRBqIABBEGopAgA3AgAgBUEIaiAAQQhqKQIANwIAIA4gASADTUE4bGohDiADIAJBOGxqBSADCyABRiAOIAZBOGpGcQ0AEJYFAAsgCUHAFWokAAwBCwALIBBBQGskAAvbKQIbfwl+IwBBgAFrIgQkAAJ+QaCU9gAoAgBBAUYEQEGwlPYAKQMAIR5BqJT2ACkDAAwBCyAEQRhqEL4EQaCU9gBCATcDAEGwlPYAIAQpAyAiHjcDACAEKQMYCyEdIARBIGpBiLHrACkDADcDACAEIB03AyhBqJT2ACAdQgF8NwMAIARBADYCQCAEQoCAgIDAADcDOCAEIB43AzAgBEGAsesAKQMANwMYIARBGGoiBUEEQQAQgAEaIARBADYCcCAEQoCAgIDAADcCaCAEQegAahChAyAEKAJsIhdCADcCACAEKAJoIRggBSAXQQEQgAEaIARBADYCUCAEQoCAgIDAADcCSEIBIAFBAXQiCEEBciITQT9xIgethiEfIARB5ABqIQYgB0EfTQRAIARBATYCZCAEQeAAaiEGIB+nIQILIAYgAjYCAAJAAkACQCAEKAJkQQFGBEAgBCgCYCICQQN0IQMgAkH/////AUsgA0H4////B0tyDQFBACEFAkAgA0UEQEEIIQ1BACECDAELQfmN9gAtAAAaQQghCSADQQgQ/AUiDUUNAgsgBEEANgJcIAQgDTYCWCAEIAI2AlQgBEHoAGohBiAHQR9NBEAgBEEBNgJoIARB5ABqIQYgH6chBQsgBiAFNgIAIAQoAmhBAUYEQEEAIQYgBCgCZCIFIAJLBEAgBEHUAGpBACAFQQhBCBDsAiAEKAJYIQ0gBCgCXCEGCyAfQgKDIR4gB0EBRgRAQgAhHQwECyAfQqjVqtWq1arVqn+DISAgDSAGQQN0aiECQgAhHQNAIAIgHTcDACACQRhqIB1CA3w3AwAgAkEQaiAdQgJ8NwMAIAJBCGogHUIBfDcDACACQSBqIQIgBkEEaiEGIB1CBHwiHSAgUg0ACwwDCwwDCwwCCyAJIANBhLPrABDlBQALIB5QRQRAIA0gBkEDdGohAgNAIAIgHTcDACACQQhqIQIgBkEBaiEGIB1CAXwhHSAeQgF9Ih5CAFINAAsLIAQoAlghFCAEKAJUIRkgBEKAgICAwAA3AlQCfwJAIAQoAkAiDwRAIAFBAWohGiAGBEAgFCAGQQN0aiEVQn8gCEE+cUEBcq2GQn+FISJBACEPQQQhBUEBIQIDQCAPIREgAiEPIBFBDGwhFiAUIRICQANAIAQoAkAiAiARSwRAQQAhCSAEQQA2AlwCQCAEKAI8IBZqIgJBCGooAgAiA0UEQEEAIQYMAQsgAkEEaigCACIJIANBA3RqIRsgEikDACEjQQAhAwNAICMgCSkCACIdiCEgIB2nIQcgHUIgiKciDEH/AXEiDSABQf8BcUkEQCAMQQFqIQYCQAJAIANFBEBBACEDDAELIAUgA0EDdGohCiAGQf8BcSEIIAUhAgNAIAItAAQgByACKAIAIgtrIAsgB2sgByALSxtqIAhNDQIgAkEIaiICIApHDQALQQAhAgNAIAUgAkEDdGoiDikCACIepyILIAdrIAcgC2sgByALSRsgCGohCyAeQiCIp0H/AXEhCgJAAkACQCAeQoCAgICAIINQBEAgCiALSQ0BDAILIAogC0sNAQsgAkEBaiECDAELIA4gBSADQQFrIgNBA3RqKQIANwIACyACIANJDQALIAQgAzYCXAsgBCgCVCADRgR/IARB1ABqEKEDIAQoAlgFIAULIANBA3RqIB1C/////w+DIAatQv8Bg0IghoQ3AgAgBCADQQFqIgM2AlwgBCgCWCEFCyAHQQFqIQgCQAJAIANFBEBBACEDDAELIAUgA0EDdGohDiAGQf8BcSELIAUhAgNAIAItAAQgCCACKAIAIgprIAogCGsgCCAKSxtqIAtNDQIgAkEIaiICIA5HDQALQQAhAgNAIAUgAkEDdGoiECkCACIepyIKIAhrIAggCmsgCCAKSRsgC2ohCiAeQiCIp0H/AXEhDgJAAkACQCAeQoCAgICAIINQBEAgCiAOSw0BDAILIAogDkkNAQsgAkEBaiECDAELIBAgBSADQQFrIgNBA3RqKQIANwIACyACIANJDQALIAQgAzYCXAsgBCgCVCADRgRAIARB1ABqEKEDIAQoAlghBQsgBSADQQN0aiAIrSAGrUL/AYNCIIaENwIAIAQgA0EBaiIDNgJcCyAaIAxrIgJB/wFxQQJPBEAgICAigyEkIAKtQv8BgyElQgEhHgNAAkAgJCAeiEIBg1ANACAEKAJYIQUgHqciAiAMaiELIAIgCGohAgJAIANFBEBBACEDDAELIAUgA0EDdGohECALQf8BcSEKIAUhBgNAIAYtAAQgAiAGKAIAIg5rIA4gAmsgAiAOSxtqIApNDQIgBkEIaiIGIBBHDQALQQAhBgNAIAUgBkEDdGoiHCkCACIhpyIOIAJrIAIgDmsgAiAOSRsgCmohDiAhQiCIp0H/AXEhEAJAAkACQCAhQoCAgICAIINQBEAgDiAQSw0BDAILIA4gEEkNAQsgBkEBaiEGDAELIBwgBSADQQFrIgNBA3RqKQIANwIACyADIAZLDQALIAQgAzYCXAsgBCgCVCADRgRAIARB1ABqEKEDIAQoAlghBQsgBSADQQN0aiACrSALrUL/AYNCIIaENwIAIAQgA0EBaiIDNgJcCyAeQgF8Ih4gJVINAAsLCwJAICBCAYNQDQAgB0EBaiECIAQoAlghBQJAAkAgA0UEQEEAIQMMAQsgBSADQQN0aiEMIAUhBgNAIAYtAAQgAiAGKAIAIghrIAggAmsgAiAISxtqIA1NDQIgBkEIaiIGIAxHDQALQQAhBgNAIAUgBkEDdGoiCykCACIepyIIIAJrIAIgCGsgAiAISRsgDWohCCAeQiCIp0H/AXEhDAJAAkACQCAeQoCAgICAIINQBEAgCCAMSw0BDAILIAggDEkNAQsgBkEBaiEGDAELIAsgBSADQQFrIgNBA3RqKQIANwIACyADIAZLDQALIAQgAzYCXAsgBCgCVCADRgRAIARB1ABqEKEDIAQoAlghBQsgBSADQQN0aiACrSAdQoCAgIDwH4OENwIAIAQgA0EBaiIDNgJcCyAdQoCAgICAIINQDQAgB0ECaiECAkAgA0UEQEEAIQMMAQsgBSADQQN0aiEIIAUhBgNAIAYtAAQgAiAGKAIAIgdrIAcgAmsgAiAHSxtqIA1NDQIgBkEIaiIGIAhHDQALQQAhBgNAIAUgBkEDdGoiDCkCACIepyIHIAJrIAIgB2sgAiAHSRsgDWohByAeQiCIp0H/AXEhCAJAAkACQCAeQoCAgICAIINQBEAgByAISw0BDAILIAcgCEkNAQsgBkEBaiEGDAELIAwgBSADQQFrIgNBA3RqKQIANwIACyADIAZLDQALIAQgAzYCXAsgBCgCVCADRgRAIARB1ABqEKEDIAQoAlghBQsgBSADQQN0aiACrSAdQoCAgIDwH4OENwIAIAQgA0EBaiIDNgJcCyAJQQhqIgkgG0cNAAsgBCgCWCEFAn8CQCADQQJPBEAgA0EVTwRAIAUgAxDNAyAFQQhqIQggBSADQQN0IgJqIQ0gBSgCACEGDAILIAVBCGohBiAFIANBA3RqIQ1BACEMIAUhBwNAIAchAiAGIQcCQAJAAkACfyACKAIIIgMgAigCACIGRwRAIAMgBkkMAQsgAi0ADCIDIAItAAQiBkYNASADIAZJC0UNAgwBCyACLQANIAItAAVrQf8BcUH/AUcNAQsgAikCCCEdIAIgAikCADcCCAJAIAUiAyACRg0AIB1CKIinIQsgHachCCAdQiCIp0H/AXEhCSAMIQYDQAJAAkACfyAIIAUgBmoiA0EIayIKKAIAIg5HBEAgCCAOSQwBCyADQQRrLQAAIg4gCUYNASAJIA5JCw0BIAIhAwwDCyALIANBA2stAABrQf8BcUH/AUcNAgsgAkEIayECIAMgCikCADcCACAGQQhrIgYNAAsgBSEDCyADIB03AgALIAxBCGohDCAHQQhqIgYgDUcNAAsgBCgCXCEDIAQoAlghBQsgA0UEQEEAIQlBACEGDAMLIAVBCGohCCAFIANBA3QiAmohDUEBIQwgBSgCACEGQQEgA0EBRg0BGgsgAkEIa0EDdiICQQNxIQlBACEMAkAgAkEBa0EDSQRAQQAhBwwBCyACQfz///8BcSELQQAhByAIIQIDQCAGIAIoAgAiCiAGIApJGyIGIAJBCGooAgAiCiAGIApJGyIGIAJBEGooAgAiCiAGIApJGyIGIAJBGGooAgAiCiAGIApJGyEGIAJBIGohAiALIAdBBGoiB0cNAAsLIAkEQCAIIAdBA3RqIQIDQCAGIAIoAgAiByAGIAdJGyEGIAJBCGohAiAJQQFrIgkNAAsLIAMLIQkgBSECA0AgAiACKAIAIAZrNgIAIAJBCGoiAiANRw0ACyAMBEBBASEJDAELIAUhByAJQRRLBEAgBSAJEM0DDAELA0AgByEDAkACQAJAAn8gCCIHKAIAIgIgAygCACIIRwRAIAIgCEkMAQsgAy0ADCICIAMtAAQiCEYNASACIAhJC0UNAgwBCyADLQANIAMtAAVrQf8BcUH/AUcNAQsgBykCACEdIAcgAykCADcCAAJAIAUiAiADRg0AIB1CKIinIQwgHachCCADQQhrIQIgHUIgiKdB/wFxIQkCQANAAkACQAJ/IAggAigCACILRwRAIAggC0kMAQsgAkEEai0AACILIAlGDQEgCSALSQsNASADIQIMBAsgDCACQQVqLQAAa0H/AXFB/wFHDQILIANBCGshAyACQQhqIAIpAgA3AgAgAiAFRiACQQhrIQJFDQALIAUhAgwBCyACQQhqIQILIAIgHTcCAAsgB0EIaiIIIA1HDQALIAQoAlwhCSAEKAJYIQULIARBGGogBSAJEIABIQsgBCgCUCIIIAQoAkhGBEBBACEJQQAhDSMAQSBrIgIkAAJAAkAgBEHIAGoiBygCACIDQX9GDQAgA0EBdCIMIANBAWoiCiAKIAxJGyIMQf////8BSw0AQQQgDCAMQQRNGyIMQQN0IgpB/P///wdLDQAgAiADBH8gAiADQQN0NgIcIAIgBygCBDYCFEEEBUEACzYCGCACQQhqQQQgCiACQRRqENgDIAIoAghBAUcNASACKAIQIQ0gAigCDCEJCyAJIA1BuLvrABDlBQALIAIoAgwhAyAHIAw2AgAgByADNgIEIAJBIGokAAsgBCgCTCAIQQN0aiICIAY2AgQgAiALNgIAIAQgCEEBajYCUCAVIBJBCGoiEkcNAQwCCwsgESACQai76wAQlQQACyAPQQFqIQIgDyAEKAJARw0ACwtBACEGAkAgDyATQf8BcSIRbCIFQQBOBEAgD0UNA0EAIQxB+Y32AC0AABpBASEGIAVBARD8BSISDQELIAYgBUHIu+sAEOUFAAsgBEEANgJwIAQgEjYCbCAEIAU2AmggBCgCPCEOQQAhEwNAQQAhCCAOIBNBDGxqIhBBBGohFQNAIBUoAgAiAiAQQQhqKAIAQQN0IgNqIQsgCCIHQQFqIQggAkEIaiEFIANBCGshCQJAA0AgBSENIAkhBiACIAtGBEAgGiEDDAILIAIoAgAhAyACQQRqIRYgBkEIayEJIA1BCGohBSACQQhqIQIgAUH/AXEiCiAWLQAAIAcgA2sgAyAHayADIAdJG2oiA0H/AXFJDQALIAIgC0YNAEEAIQkgCyACayILQQhHBEAgBkEDdkH+////AXEhBgNAIAMgA0H/AXEiAyANQQRqLQAAIAcgDSgCACIFayAFIAdrIAUgB0kbakH/AXEiBSADIAVJGyAFIApLGyIFIAVB/wFxIgMgDUEMai0AACAHIA1BCGooAgAiBWsgBSAHayAFIAdJG2pB/wFxIgUgAyAFSRsgBSAKSxshAyANQRBqIQ0gBiAJQQJqIglHDQALCyALQQhxRQ0AIAMgA0H/AXEiAyACIAlBA3RqIgVBBGotAAAgByAFKAIAIgVrIAUgB2sgBSAHSRtqQf8BcSIFIAMgBUkbIAUgCksbIQMLIAQoAmggDEYEQCMAQSBrIgUkAAJAAn9BACAEQegAaiICKAIAIgdBf0YNABpBAEEIIAdBAXQiBiAHQQFqIgkgBiAJSxsiBiAGQQhNGyIGQQBIDQAaIAUgBwR/IAUgBzYCHCAFIAIoAgQ2AhRBAQVBAAs2AhggBUEIakEBIAYgBUEUahDYAyAFKAIIQQFHDQEgBSgCECECIAUoAgwLIAJB2LvrABDlBQALIAUoAgwhByACIAY2AgAgAiAHNgIEIAVBIGokACAEKAJsIRILIAwgEmogAzoAACAEIAxBAWoiDDYCcCAIIBFHDQALIBNBAWoiEyAPRw0AC0EADAILIBNB/wFxIRELQQAhDyAEQQA2AnAgBEKAgICAEDcCaEEBCyAEQRRqIARB0ABqKAIANgIAIARBCGogBEHwAGooAgA2AgAgBCAEKQJINwIMIAQgBCkCaDcDACAEKAJUIgUEQCAEKAJYIAVBA3RBBBCNBgsgGQRAIBQgGUEDdEEIEI0GCyAYBEAgFyAYQQN0QQQQjQYLAkAgBCgCHCIFRQ0AIAQoAiQiDQRAIAQoAhgiBkEIaiECIAYpAwBCf4VCgIGChIiQoMCAf4MhHQNAIB1QBEADQCAGQYABayEGIAIpAwAgAkEIaiECQoCBgoSIkKDAgH+DIh1CgIGChIiQoMCAf1ENAAsgHUKAgYKEiJCgwIB/hSEdCyAGIB16p0EBdEHwAXFrIgdBEGsoAgAiCARAIAdBDGsoAgAgCEEDdEEEEI0GCyAdQgF9IB2DIR0gDUEBayINDQALCyAFQRFsQRlqIgJFDQAgBCgCGCAFQQR0a0EQayACQQgQjQYLIAQoAjwhBUUEQCAFIQIDQCACKAIAIgMEQCACQQRqKAIAIANBA3RBBBCNBgsgAkEMaiECIA9BAWsiDw0ACwsgBCgCOCICBEAgBSACQQxsQQQQjQYLIAAgBCkDADcCACAAIAE6ACAgACARNgIcIAAgHz4CGCAAQRBqIARBEGopAwA3AgAgAEEIaiAEQQhqKQMANwIAIARBgAFqJAAPCyAEQQA2AnggBEEBNgJsIARB2K3rADYCaCAEQgQ3AnAgBEHoAGpBhLPrABCuBQAL6ywBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQYDaAE8EQCABQcDMAmtBLUkNASABQYDNAmtBG0kNAiABQaLOAmtBDUkNAyABQbLOAmtBPUkNBAJAIAFB+c4Ca0EDTwRAIAFB/c4CRw0BQfk6IQIMIQsgAUEBakH+zgJxIQIMIAsCQAJAIAFB/s4Ca0EJTwRAQYzPAiECIAFBi88Caw4DIgIBAgsgAUEBciECDCELQeUEIQIMIAsgAUGQzwJrQQNJDQUgAUGWzwJrQRNJDQYgAUGqzwJrIgJBCkkNHQweCyABIQIgAUEIdkH/AXFBAWsOLA4NGgwLGxsbGxsbGxsbGwobGxkbGxsbGxsbGwkbCAcbGBsbFxsbGxsbGxsGFgsgAUEBciECDB0LIAFBAXIhAgwcCyABQQFyIQIMGwsgAUEBciECDBoLIAFBAXIhAgwZCyABQQFyIQIMGAsgAUH/AXFBME8EQCABQeAAayICQf8BcSIDQQVJDQkMCgsgAUEwaiECDBQLAkAgAUH4AXEiAkEIRwRAAkACQAJAIAFBGGtB/wFxQQZPBEAgAkEoayIDRQ0BIANBEEYNAgwDCyABQfj/A2ohAgwYCyABQfj/A2ohAgwXCyABQfj/A2ohAgwWCwJAAkACQAJAAkAgAUHIAGtB/wFxQQZPBEAgAUH/AXFB0ABrDgcBBQIFAwUEBQsgAUH4/wNqIQIMGgsgAEGTBjYCCCAAQoKAxIDQ+AA3AgAPCyAAQYAGNgIIDBwLIABBgQY2AggMGwsgAEHCBjYCCAwaCyABQdkAa0H/AXFBB0kNAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJB6ABHBEAgAUH/AXFBgAFrDjgoKSorLC0uLygpKissLS4vMDEyMzQ1NjcwMTIzNDU2Nzg5Ojs8PT4/ODk6Ozw9Pj8BAQJAAwEEBQELIAFB+P8DaiECDCILIAFB/gFxIgNBuAFrDgMEBQYFCyAAQbkHNgIIIABCgoDEgIDuBzcCAA8LIABBuQc2AgggAEKCgMSAwPUANwIADwsgAEHCBjYCCCAAQoKAxICQ9gA3AgAPCyAAQbkHNgIIIABCsYeAgKDoADcCAA8LIAFB+P8DaiECDBwLQbkHIQIgAUH/AXFBvAFrDgw4BRsFBQUBOQIFAwQFCyABQbb/A2ohAgwaCyAAQbkHNgIIIABCgoDEgMDuBzcCAA8LIABBuQc2AgggAEKCgMSA4PUANwIADwsgAEHCBjYCCCAAQoKAxIDw9gA3AgAPCyAAQbkHNgIIIABCt4eAgKDoADcCAA8LAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQfwBcUHIAUcEQCABQf8BcUHMAWsODEsBAQEBAQJMAQEDBAELIAFBqv8DaiECDCwLIANB2AFrDgMDBAUECyAAQYAGNgIIDEoLIABBwgY2AgggAEKCgMSAkPcANwIADwsgAEHCBjYCCAxICyABQfj/A2ohAgwnCyABQf8BcUHiAWsOBgJHAwEEBQELIAFBnP8DaiECDCULIANB6AFrDgMEBQYFCyAAQYAGNgIIDEULIABBkwY2AgggAEKCgMSAkPgANwIADwsgAEHCBjYCCCAAQoKAxIDQ+AA3AgAPCyAAQcIGNgIIDEILIAFB+P8DaiECDB8LQeU/IQIgAUH/AXFB7AFrDgweAQEBAQECQQMBBAUBCyABQZD/A2ohAgwdCyADQfgBaw4DBAYFBgsgAEG5BzYCCCAAQoKAxIDA7wc3AgAPCyAAQbkHNgIIIABCgoDEgOD5ADcCAA8LIABBwgY2AgggAEKCgMSAkPkANwIADwsgAEG5BzYCCCAAQsmHgICg6AA3AgAPCyABQYD/A2ohAgwXCyABQYL/A2ohAgwWCyABIQIgAUH/AXFB/AFHDRUMOAsgAUH4/wNqIQIMFAsgAUH4/wNqIAEgAUEBcRshAgwTCwJAAkACQAJAAkACQAJAIAFB/wFxIgNBlQFPBEBB4TwhAiADQZYBaw4JAgMEBQYaAQEHAQsgAUEBciECDBkLIAFB4ABqQf8BcUHfAEkgAXIhAgwYCyAAQbEGNgIIIABCgoDEgIANNwIADwsgAEGIBjYCCCAAQoKAxIDADjcCAA8LIABBigY2AgggAEKCgMSA8A43AgAPCyAAQYoGNgIIIABCgoDEgJAPNwIADwsgAEG+BTYCCCAAQoKAxICQDDcCAA8LDDYLIAFBgH9zIgJB/wFxQQNJDQsCQCABQf0AakH/AXFBAk8EQCABQfsAaiICQf8BcUEFTw0BIAJB/wFxQQJ0QbDJ8ABqLwEAIQIMEwsgAUG+zwNqIQIMEgsgAUHwAGpB/wFxQStPBEAgAUHA6ANqIAEgAUHDAGpB/wFxQQNJGyECDBILIAFBwOgDaiECDBELAkACQCABQeAAakH/AXFBJk8EQCABQf8BcUHHAWsOBwETExMTEwITCyABQeA4aiECDBILQafaACECDBELQa3aACECDBALAkAgAUH/AXEiA0EvTwRAIAFBMWtB/wFxQSZJDQEgA0GHAUcNESAAQYILNgIIIABCgoDEgNCsATcCAA8LIAFBAXIhAgwQCyABQTBqIQIMDwsCQAJAIAFB/wFxIgJBEE8EQCACQTBJDQEgAUHgAGtB/wFxQSFJDQICQCABQfYAakH/AXFBNU8EQCACQcABRw0BQc8JIQIMEwsgAUEBciECDBILIAFBP2pB/wFxQQ1PBEAgAUH/AXFBzwFLIAFyIQIMEgsgAUEBakH+/wFxIQIMEQsgAUHQAHIhAgwQCyABQSBqIQIMDwsgAUEBciECDA4LAkAgAUH/AXEiAkEfTwRAIAJBIEcNAUGeAyECDA8LIAFBAXIhAgwOCyABQSJrQf8BcUERTwRAIAFBOmsiAkH/AXEiA0EMSQ0EDAULIAFBAXIhAgwNCwJAAkACQAJAIAFB/wFxIgJBL08EQCACQTBGBEAgAEGHBjYCCCAAQoKAxICQDTcCAA8LIAFBMmtB/wFxQQVJDQEgAUE5a0H/AXFBD0kNAiABQf8BcUHJAEYEQCAAQe4ANgIIIABCgoDEgMDXADcCAA8LQf8BIQIgAUHKAGtB/wFxQS1JDQMgAUH/AXEiA0H4AEYNEQJAAkAgAUH5AGtB/wFxQQVPBEBB8wAhAiADQf8Aaw4DFAIBAgsgAUEBakH+/wFxIQIMEwtB0wQhAgwSCwJAAkAgAUH+AGpB/wFxQQNPBEBB1AQhAiABQf8BcUGGAWsOAhQBAgsgAUEBciECDBMLQYgDIQIMEgsgAUH3AGpB/wFxQQJJDQQgAUH1AGoiAkH/AXFBFUkNCQwKCyABQQFyIQIMEAsgAUEBciECDA8LIAFBAWpB/v8BcSECDA4LIAFBAXIhAgwNCyABQc0BaiECDAwLQR0gA3ZBAXFFDQAgAkH/AXFBAnRBxMnwAGovAQAhAgwLCwJAAkAgAUHnAGtB/wFxQQVPBEAgAUHtAGsiAkH/AXEiA0EJSQ0BDAILIAFBAWpB/v8BcSECDAwLQa8CIAN2QQFxRQ0AIAJB/wFxQQJ0QdjJ8ABqLwEAIQIMCwsCQCABwCICQf0ATARAIAJBY0gNASABQRVqQf8BcUEDTwRAQfPZACABIAFB/wFxQfIBRhshAgwNCyABQQFqQf7/AXEhAgwMCyABQcGrA2ohAgwLCyABQQFyIQIMCgtBmx0gA3ZBAXFFDQAgAkH/AXFBAnRB1MjwAGovAQAhAgwJCyABQcYAa0H/AXFBCUkgAXIhAgwIC0H59tgAIAJB/wFxIgJ2QQFxRQ0AIAJBAnRBiMfwAGovAQAhAgwHCwJAAkAgAUHgAGpB/wFxQQVPBEAgAUHaAGoiAkH/AXFBCkkNAQwCCyABQQFyIQIMCAtBywYgAkH/AXEiAnZBAXFFDQAgAkECdEHcx/AAai8BACECDAcLAkACQAJAIAFBzwBqQf8BcUECTwRAIAFBzQBqQf8BcUEDSQ0BIAFByQBqIgJB/wFxIgNBFEkNAgwDCyABQdkBaiECDAkLIAFBAWpB/v8BcSECDAgLQaPALSADdkEBcUUNACACQf8BcUECdEGEyPAAai8BACECDAcLIAFBNWpB/wFxQRFPBEACQAJAIAFBImpB/wFxQRFPBEBB8wMhAiABQf8BcUHwAWsOAgEKAgsgAUEBciECDAkLIABBjAY2AgggAEKCgMSAoA03AgAPCwJAAkAgAUEOakH/AXFBA08EQEGVAyECIAFB/wFxQfYBaw4CCgIBCyABQQFyIQIMCQsgAUH/AXFB9wFLIAFyIQIMCAtBvwMhAgwHCyABQQFqQf7/AXEhAgwGCyACQf8BcUECdEH8xvAAai8BACECDAULAkAgAUHBAGtB/wFxQRpPBEAgAUH/AXFBtQFHDQFBvAchAgwGCyABQSBqIQIMBQsCQCABQUBrQf8BcUEXTwRAIAFBKGpB/wFxQQdJDQEgAUH/AXFB3wFHDQYMKgsgAUEgaiECDAULIAFBIGohAgwECyABQRpqIAEgAUHKAGpB/wFxQRpJGyECDAMLQckHIQICQAJAAkACQCABQf8BcUEmaw4NBgMDAwABAwMDAwMDAgMLQesAIQIMBQtB5QEhAgwEC0HOwgAhAgwDCyABQfABcUHgAEcEQEGEwwAgASABQf8BcUGDAUYbIQIMAwsgAUEQaiECDAILIAFB+P8DaiABIAFBCGpB/wFxQQZJGyECDAELIAFB/wFxQcUARgRAQbkHIQIMAQsCQAJAAkAgAUHwAGtB/wFxQQNPBEBB9wYhAiABQf8BcUH2AGsOEQQDAwMDAwMDAwEDAwMDAwMCAwsgAUEBciECDAMLQfMHIQIMAgtBrAchAgwBCwJAIAFB+ABqQf8BcUEDTwRAIAFB/wFxQYwBRw0BQcwHIQIMAgsgAUElaiECDAELAkACQAJAAkAgAUH+AXFBjgFHBEAgAUH/AXFBkAFGBEAMJQsgAUHvAGpB/wFxQRFJDQECQAJAAkACQAJAAkAgAUHdAGpB/wFxQQlPBEBBwwchAiABQf8BcUGwAWsOJy0GBgYGBgYGBgYGBgYGBgYGBgwGBgYGBgYGBgYGBgYBAgMGBgYEBQYLIAFBIGohAgwLC0HXByECDAoLQbIHIQIMCQtBuAchAgwIC0HGByECDAcLQcAHIQIMBgsgAUEoakH/AXFBF0kNAiABQRBqIgJB/wFxQQtJDQMMBAsgAUE/aiECDAQLIAFBIGohAgwDCyABQQFyIQIMAgtBsw0gAkH/AXEiAnZBAXFFDQAgAkECdEGEyfAAai8BACECDAELIAFB/v4DaiABIAFB/wFxQfwBSxshAgsgAEGBgMQANgIAIAAgASACQf//A3EiACAAQYCwv39zQYCQvH9JGzYCBA8LQd8HIAJ2QQFxRQ0AIAJBAnRByMbwAGooAgAhAgwBCwJAAkACQAJAAkACQAJAAkACQAJAIAFBtM8Ca0EPTwRAIAFBxM8CayICQQNJDQoCQAJAAkAgAUHHzwJrQQNPBEBB5AQhAiABQcvPAmsOBg8BAwMDAgMLIAFBAWpB3s8CcSECDA4LQc3PAiECDA0LQdHPAiECDAwLAkAgAUHWzwJrQQVPBEAgAUHczwJHDQFBmwMhAgwNCyABQQFyIQIMDAsgAUH1zwJGDQECQAJAAkACQAJAAkACQAJAAkACQAJAIAFB8NYCa0HQAE8EQCABQYD2A2sOGAECAwQFOjoLCwsLCwsLCwsLCwsGBwgJCgsLIAFB0K8CayECDBYLIABB5gA2AggMNwsgAEHpADYCCAw2CyAAQewANgIIDDULIABB6QA2AgggAELmgICA4Aw3AgAPCyAAQewANgIIIABC5oCAgOAMNwIADwsgAEH2CjYCCAw0CyAAQeUKNgIIDDMLIABB6wo2AggMMgsgAEH2CjYCCCAAQoKAxIDgrwE3AgAPCyAAQe0KNgIIDDALIAFBof4Da0EaSQ0CIAFBgIgEa0EoSQ0DIAFBsIkEa0EkSQ0EIAFB8IoEa0ELSQ0FIAFB/IoEa0EPSQ0GIAFBjIsEa0EHSQ0HIAFB/v//AHFBlIsERg0IIAFBgJkEa0EzSQ0JAkACQCABQdCaBGtBFk8EQCABQeD//wBxIgJBoLEERg0BIAJBwNwFRg0CIAFBImogASABQYDSB2tBIkkbIQIMDgsgAUEgaiECDA0LIAFBIGohAgwMCyABQSByIQIMCwsgAUEBciECDAoLQfbPAiECDAkLIAFBIGohAgwICyABQShqIQIMBwsgAUEoaiECDAYLIAFBJ2ohAgwFCyABQSdqIQIMBAsgAUEnaiECDAMLIAFBJ2ohAgwCCyABQcAAciECDAELIAJBAnRB8MbwAGooAgAhAgsgAEGBgMQANgIAIAAgAUGAgMQAIAIgAkGAsANzQYCAxABrQYCQvH9JGyIAIABBgIDEAEYbNgIEDwsgAELFh4CAsOIANwIADwsgAEG5BzYCCCAAQoKAxICA4Ac3AgAPCyAAQbkHNgIIIABCgoDEgJDgBzcCAA8LIABBuQc2AgggAEKCgMSAoOAHNwIADwsgAEG5BzYCCCAAQoKAxICw4Ac3AgAPCyAAQbkHNgIIIABCgoDEgMDgBzcCAA8LIABBuQc2AgggAEKCgMSA0OAHNwIADwsgAEG5BzYCCCAAQoKAxIDg4Ac3AgAPCyAAQbkHNgIIIABCgoDEgPDgBzcCAA8LIABBuQc2AgggAEKCgMSAgOQHNwIADwsgAEG5BzYCCCAAQoKAxICQ5Ac3AgAPCyAAQbkHNgIIIABCgoDEgKDkBzcCAA8LIABBuQc2AgggAEKCgMSAsOQHNwIADwsgAEG5BzYCCCAAQoKAxIDA5Ac3AgAPCyAAQbkHNgIIIABCgoDEgNDkBzcCAA8LIABBuQc2AgggAEKCgMSA4OQHNwIADwsgAEG5BzYCCCAAQoKAxIDw5Ac3AgAPCyAAQbkHNgIIIABCgoDEgIDsBzcCAA8LIABBuQc2AgggAEKCgMSAkOwHNwIADwsgAEG5BzYCCCAAQoKAxICg7Ac3AgAPCyAAQbkHNgIIIABCgoDEgLDsBzcCAA8LIABBuQc2AgggAEKCgMSAwOwHNwIADwsgAEG5BzYCCCAAQoKAxIDQ7Ac3AgAPCyAAQbkHNgIIIABCgoDEgODsBzcCAA8LIABBuQc2AgggAEKCgMSA8OwHNwIADwsgAEG5BzYCCCAAQoKAxICQ9gA3AgAPCyAAQbkHNgIIIABCgoDEgPD2ADcCAA8LIABBgQY2AggLIABCuYeAgIDhADcCAA8LIABBgQY2AggLIABCxYeAgIDhADcCAA8LIABBuQc2AgggAEKCgMSAkPkANwIADwsgAEHzADYCCCAAQoKAxICwDjcCAA8LIABCgoDEgOAMNwIADwsgAEH0ADYCCCAAQoKAxICwDjcCAA8LIABCgoDEgMCuATcCAAu3JQITfwF+IwBB0ABrIg4kAAJAAkACQAJAIAFBIUkEQCABIQ0MAQsgAkE4ayERA0AgBEUEQCAAIAEgAiADQQEQSwwFCyAAIAFBA3YiDUGIA2xqIQYgACANQeABbGohDyAEQQFrIQQgDkEwaiAAAn8gAUHAAE8EQCAAIA8gBiANEP8CDAELIAAoAjQiByEJIAdBDUkiDUUEQCAAKAIEIQkLIA8oAjQiDCEIIAxBDUkiEEUEQCAPKAIEIQgLIA1FBEAgACgCBCEHCyAGKAI0IgshCiAAIAggCUsiCCALQQ1JIhQEfyAKBSAGKAIECyAHS3MNABogBiAPIAggEAR/IAwFIA8oAgQLIBQEfyALBSAGKAIEC0lzGwsgAGtBOG4iD0E4bGoiCUEwaikCADcDACAOQShqIAlBKGopAgA3AwAgDkEgaiAJQSBqKQIANwMAIA5BGGogCUEYaikCADcDACAOQRBqIAlBEGopAgA3AwAgDkEIaiAJQQhqKQIANwMAIA4gCSkCADcDAAJAAkAgBQRAIAUoAjQiBkENTwR/IAUoAgQFIAYLIAkoAjQiCkENTwR/IAkoAgQFIAoLTw0BCyABIANLDQRBACENIAAhBiACIAFBOGwiE2oiECELIA8hCANAIAAgCEE4bGoiDCAGSwRAA0AgDUE4bCACIAtBOGsiCyAGKAI0IgpBDU8EfyAGKAIEBSAKCyAJKAI0IgdBDU8EfyAJKAIEBSAHC0kiChtqIgcgBikCADcCACAHQTBqIAZBMGopAgA3AgAgB0EoaiAGQShqKQIANwIAIAdBIGogBkEgaikCADcCACAHQRhqIAZBGGopAgA3AgAgB0EQaiAGQRBqKQIANwIAIAdBCGogBkEIaikCADcCACAKIA1qIQ0gBkE4aiIGIAxJDQALCyABIAhHBEAgC0E4ayILIA1BOGxqIgggBikCADcCACAIQTBqIAZBMGopAgA3AgAgCEEoaiAGQShqKQIANwIAIAhBIGogBkEgaikCADcCACAIQRhqIAZBGGopAgA3AgAgCEEQaiAGQRBqKQIANwIAIAhBCGogBkEIaikCADcCACAGQThqIQYgASEIDAELCyAAIAIgDUE4bCIUEKwBIRIgASANayEMAkAgASANRg0AIBIgFGohCEEAIQsgDUEBaiABRwRAIAxBfnEhFSARIBNqIQogCCEGA0AgBiAKKQIANwIAIAZBMGogCkEwaikCADcCACAGQShqIApBKGopAgA3AgAgBkEgaiAKQSBqKQIANwIAIAZBGGogCkEYaikCADcCACAGQRBqIApBEGopAgA3AgAgBkEIaiAKQQhqKQIANwIAIAZBOGogECALQf7///8Bc0E4bGoiBykCADcCACAGQUBrIAdBCGopAgA3AgAgBkHIAGogB0EQaikCADcCACAGQdAAaiAHQRhqKQIANwIAIAZB2ABqIAdBIGopAgA3AgAgBkHgAGogB0EoaikCADcCACAGQegAaiAHQTBqKQIANwIAIApB8ABrIQogBkHwAGohBiAVIAtBAmoiC0cNAAsLIAxBAXFFDQAgCCALQThsaiIGIBAgC0F/c0E4bGoiCCkCADcCACAGQTBqIAhBMGopAgA3AgAgBkEoaiAIQShqKQIANwIAIAZBIGogCEEgaikCADcCACAGQRhqIAhBGGopAgA3AgAgBkEQaiAIQRBqKQIANwIAIAZBCGogCEEIaikCADcCAAsgDUUNACABIA1PDQEgDkEANgJIIA5BATYCPCAOQdTNwQA2AjggDkIENwJAIA5BOGpB3M3BABCuBQALIAEgA0sNA0EAIQcgACEGIAIgAUE4bCIQaiIIIQsDQCAAIA9BOGxqIgwgBksEQANAIAkoAjQiCkENTwRAIAkoAgQhCgsgB0E4bCACIAtBOGsiCyAGKAI0Ig1BDU8EfyAGKAIEBSANCyAKTSING2oiBSAGKQIANwIAIAVBMGogBkEwaikCADcCACAFQShqIAZBKGopAgA3AgAgBUEgaiAGQSBqKQIANwIAIAVBGGogBkEYaikCADcCACAFQRBqIAZBEGopAgA3AgAgBUEIaiAGQQhqKQIANwIAIAcgDWohByAGQThqIgYgDEkNAAsLIAEgD0cEQCACIAdBOGxqIgUgBikCADcCACAFQTBqIAZBMGopAgA3AgAgBUEoaiAGQShqKQIANwIAIAVBIGogBkEgaikCADcCACAFQRhqIAZBGGopAgA3AgAgBUEQaiAGQRBqKQIANwIAIAVBCGogBkEIaikCADcCACAGQThqIQYgB0EBaiEHIAtBOGshCyABIQ8MAQsLIAAgAiAHQThsIg8QrAEhCSABIAdrIQ0CQCABIAdGDQAgCSAPaiEAQQAhDCAHQQFqIAFHBEAgDUF+cSELIBAgEWohCiAAIQYDQCAGIAopAgA3AgAgBkEwaiAKQTBqKQIANwIAIAZBKGogCkEoaikCADcCACAGQSBqIApBIGopAgA3AgAgBkEYaiAKQRhqKQIANwIAIAZBEGogCkEQaikCADcCACAGQQhqIApBCGopAgA3AgAgBkE4aiAIIAxB/v///wFzQThsaiIFKQIANwIAIAZBQGsgBUEIaikCADcCACAGQcgAaiAFQRBqKQIANwIAIAZB0ABqIAVBGGopAgA3AgAgBkHYAGogBUEgaikCADcCACAGQeAAaiAFQShqKQIANwIAIAZB6ABqIAVBMGopAgA3AgAgCkHwAGshCiAGQfAAaiEGIAsgDEECaiIMRw0ACwsgDUEBcUUNACAAIAxBOGxqIgAgCCAMQX9zQThsaiIFKQIANwIAIABBMGogBUEwaikCADcCACAAQShqIAVBKGopAgA3AgAgAEEgaiAFQSBqKQIANwIAIABBGGogBUEYaikCADcCACAAQRBqIAVBEGopAgA3AgAgAEEIaiAFQQhqKQIANwIACyABIAdPBEAgCSAPaiEAQQAhBSANIgFBIUkNAwwCCyAHIAFB7M3BABCSBgALIBIgFGogDCACIAMgBCAOECogDSIBQSFPDQALCyANQQJJDQIgDUEQaiADSw0AQQEhBCACIA1BAXYiD0E4bCIDaiEBIAAgA2ohEQJAIA1BB0sEQCAAIAIQmwEgESABEJsBQQQhBAwBCyACIAApAgA3AgAgAkEwaiAAQTBqKQIANwIAIAJBKGogAEEoaikCADcCACACQSBqIABBIGopAgA3AgAgAkEYaiAAQRhqKQIANwIAIAJBEGogAEEQaikCADcCACACQQhqIABBCGopAgA3AgAgAUEwaiARQTBqKQIANwIAIAFBKGogEUEoaikCADcCACABQSBqIBFBIGopAgA3AgAgAUEYaiARQRhqKQIANwIAIAFBEGogEUEQaikCADcCACABQQhqIBFBCGopAgA3AgAgASARKQIANwIACyANIA9rIRQgBCAPTw0BIARBOGwhCCAEIQkDQCACIAlBOGwiBWoiA0EwaiAAIAVqIgVBMGoiBikCADcCACADIAUpAgAiGTcCACADQShqIAVBKGoiCikCADcCACADQSBqIAVBIGoiECkCADcCACADQRhqIAVBGGoiEikCADcCACADQRBqIAVBEGoiEykCADcCACADQQhqIAVBCGopAgA3AgAgAygCNCILIQcgC0ENTwR/IAMoAgQFIAcLIANBBGsoAgAiDEENTwR/IANBNGsoAgAFIAwLSQRAIA5BCGoiFSATKQIANwMAIA5BEGoiEyASKQIANwMAIA5BGGoiEiAQKQIANwMAIA5BIGoiECAKKQIANwMAIA5BKGoiFiAGKAIANgIAIA4gBSkCCDcDACADKAIEIQwgCCEHAn8gC0EMSwRAA0AgAiAHaiIDIANBOGsiBSkCADcCACADQTBqIAVBMGopAgA3AgAgA0EoaiAFQShqKQIANwIAIANBIGogBUEgaikCADcCACADQRhqIAVBGGopAgA3AgAgA0EQaiAFQRBqKQIANwIAIANBCGogBUEIaikCADcCACACIAdBOEYNAhogB0E4ayEHIANBPGsoAgAiCkENTwR/IANB7ABrKAIABSAKCyAMSw0ACyACIAdqDAELA0AgAiAHaiIDIANBOGsiBSkCADcCACADQTBqIAVBMGopAgA3AgAgA0EoaiAFQShqKQIANwIAIANBIGogBUEgaikCADcCACADQRhqIAVBGGopAgA3AgAgA0EQaiAFQRBqKQIANwIAIANBCGogBUEIaikCADcCACACIAdBOEYNARogB0E4ayEHIANBPGsoAgAiCkENTwR/IANB7ABrKAIABSAKCyALSw0ACyACIAdqCyIGIAw2AgQgBiAZPgIAIAYgDikDADcCCCAGIAs2AjQgBkEQaiAVKQMANwIAIAZBGGogEykDADcCACAGQSBqIBIpAwA3AgAgBkEoaiAQKQMANwIAIAZBMGogFigCADYCAAsgCEE4aiEIIAlBAWoiCSAPRw0ACwwBCwALIAQgFEkEQCAEQThsIQdBOCEFIAEhAwNAIAEgBEE4bCIIaiIGQTBqIAggEWoiCEEwaiIJKQIANwIAIAYgCCkCACIZNwIAIAZBKGogCEEoaiIKKQIANwIAIAZBIGogCEEgaiISKQIANwIAIAZBGGogCEEYaiITKQIANwIAIAZBEGogCEEQaiIVKQIANwIAIAZBCGogCEEIaikCADcCACAGKAI0IhAhCyAQQQ1PBEAgBigCBCELCyAGQQRrKAIAIgxBDU8EfyAGQTRrKAIABSAMCyALSwRAIA5BCGoiFiAVKQIANwMAIA5BEGoiFSATKQIANwMAIA5BGGoiEyASKQIANwMAIA5BIGoiFyAKKQIANwMAIA5BKGoiGCAJKAIANgIAIA4gCCkCCDcDACAGKAIEIRIgBSIJIQggAyILIQwCfyAQQQxNBEADQCAHIAtqIgYgBkE4ayIIKQIANwIAIAZBMGogCEEwaikCADcCACAGQShqIAhBKGopAgA3AgAgBkEgaiAIQSBqKQIANwIAIAZBGGogCEEYaikCADcCACAGQRBqIAhBEGopAgA3AgAgBkEIaiAIQQhqKQIANwIAIAEgByAJRg0CGiAJQThqIQkgC0E4ayELIAZBPGsoAgAiCkENTwR/IAZB7ABrKAIABSAKCyAQSw0ACyAHIAtqDAELA0AgByAMaiIGIAZBOGsiCSkCADcCACAGQTBqIAlBMGopAgA3AgAgBkEoaiAJQShqKQIANwIAIAZBIGogCUEgaikCADcCACAGQRhqIAlBGGopAgA3AgAgBkEQaiAJQRBqKQIANwIAIAZBCGogCUEIaikCADcCACABIAcgCEYNARogCEE4aiEIIAxBOGshDCAGQTxrKAIAIgpBDU8EfyAGQewAaygCAAUgCgsgEksNAAsgByAMagsiBiASNgIEIAYgGT4CACAGIBA2AjQgBiAOKQMANwIIIAZBEGogFikDADcCACAGQRhqIBUpAwA3AgAgBkEgaiATKQMANwIAIAZBKGogFykDADcCACAGQTBqIBgoAgA2AgALIAVBOGshBSADQThqIQMgBEEBaiIEIBRHDQALCyABQThrIQcgACANQThsQThrIgNqIQYgAiADaiELA0AgASgCNCIMQQ1PBEAgASgCBCEMCyACKAI0IglBDU8EQCACKAIEIQkLIAAgASACIAkgDEsiBBsiAykCADcCACAAQTBqIANBMGopAgA3AgAgAEEoaiADQShqKQIANwIAIABBIGogA0EgaikCADcCACAAQRhqIANBGGopAgA3AgAgAEEQaiADQRBqKQIANwIAIABBCGogA0EIaikCADcCACAJIAxNIAsoAjQiDEENTwRAIAsoAgQhDAsgAEE4aiEAQThsIAJqIQIgBEE4bCABaiEBIAcoAjQiCUENTwRAIAcoAgQhCQsgBiAHIAsgCSAMSyIEGyIDKQIANwIAIAZBMGogA0EwaikCADcCACAGQShqIANBKGopAgA3AgAgBkEgaiADQSBqKQIANwIAIAZBGGogA0EYaikCADcCACAGQRBqIANBEGopAgA3AgAgBkEIaiADQQhqKQIANwIAIAZBOGshBiAHQUhBACAEG2ohByALQUhBACAJIAxNG2ohCyAPQQFrIg8NAAsgB0E4aiEEIA1BAXEEfyAAIAIgASACIARJIgUbIgMpAgA3AgAgAEEwaiADQTBqKQIANwIAIABBKGogA0EoaikCADcCACAAQSBqIANBIGopAgA3AgAgAEEYaiADQRhqKQIANwIAIABBEGogA0EQaikCADcCACAAQQhqIANBCGopAgA3AgAgASACIARP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DxCsASEJIAEgB2shDQJAIAEgB0YNACAJIA9qIQBBACEMIAdBAWogAUcEQCANQX5xIQsgECARaiEKIAAhBgNAIAYgCikCADcCACAGQTBqIApBMGopAgA3AgAgBkEoaiAKQShqKQIANwIAIAZBIGogCkEgaikCADcCACAGQRhqIApBGGopAgA3AgAgBkEQaiAKQRBqKQIANwIAIAZBCGogCkEIaikCADcCACAGQThqIAggDEH+////AXNBOGxqIgUpAgA3AgAgBkFAayAFQQhqKQIANwIAIAZByABqIAVBEGopAgA3AgAgBkHQAGogBUEYaikCADcCACAGQdgAaiAFQSBqKQIANwIAIAZB4ABqIAVBKGopAgA3AgAgBkHoAGogBUEwaikCADcCACAKQfAAayEKIAZB8ABqIQYgCyAMQQJqIgxHDQALCyANQQFxRQ0AIAAgDEE4bGoiACAIIAxBf3NBOGxqIgUpAgA3AgAgAEEwaiAFQTBqKQIANwIAIABBKGogBUEoaikCADcCACAAQSBqIAVBIGopAgA3AgAgAEEYaiAFQRhqKQIANwIAIABBEGogBUEQaikCADcCACAAQQhqIAVBCGopAgA3AgALIAEgB08EQCAJIA9qIQBBACEFIA0iAUEhSQ0DDAILIAcgAUHszcEAEJIGAAsgEiAUaiAMIAIgAyAEIA4QKyANIgFBIU8NAAsLIA1BAkkNAiANQRBqIANLDQBBASEEIAIgDUEBdiIPQThsIgNqIQEgACADaiERAkAgDUEHSwRAIAAgAhCbASARIAEQmwFBBCEEDAELIAIgACkCADcCACACQTBqIABBMGopAgA3AgAgAkEoaiAAQShqKQIANwIAIAJBIGogAEEgaikCADcCACACQRhqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAIAJBCGogAEEIaikCADcCACABQTBqIBFBMGopAgA3AgAgAUEoaiARQShqKQIANwIAIAFBIGogEUEgaikCADcCACABQRhqIBFBGGopAgA3AgAgAUEQaiARQRBqKQIANwIAIAFBCGogEUEIaikCADcCACABIBEpAgA3AgALIA0gD2shFCAEIA9PDQEgBEE4bCEIIAQhCQNAIAIgCUE4bCIFaiIDQTBqIAAgBWoiBUEwaiIGKQIANwIAIAMgBSkCACIZNwIAIANBKGog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NGogBEEQaikCADcCACACQSxqIARBCGopAgA3AgAgAkHoAGogByAIIAYbIgRBIGooAgA2AgAgAkHgAGogBEEYaikCADcCACACQdgAaiAEQRBqKQIANwIAIAJB0ABqIARBCGopAgA3AgAgAiAEKQIANwJIIAIgAyAFIAobIgMpAgA3AmwgAkH0AGogA0EIaikCADcCACACQfwAaiADQRBqKQIANwIAIAJBhAFqIANBGGopAgA3AgAgAkGMAWogA0EgaigCADYCACAAIAFBJGwiD2oiA0HIAEHsACADQYgBaigCACADQeQAaigCAEsgA0GEAWooAgAiBCADQeAAaigCACIFSSAEIAVGGyIFG2oiBiADIANBQGsoAgAgA0EcaigCAEsgA0E8aigCACIEIANBGGooAgAiCEkgBCAIRhsiCEEBc0EkbGoiBCADQewAQcgAIAUbaiIFIAVBHGooAgAgAyAIQSRsaiIIQRxqKAIASyAFQRhqKAIAIgMgCEEYaigCACIHSSADIAdGGyIKGyAGQRxqKAIAIARBHGooAgBLIAZBGGooAgAiAyAEQRhqKAIAIgdJIAMgB0YbIgwbIgdBHGooAgAhEiAIIAUgBCAMGyAKGyIJQRxqKAIAIREgB0EYaigCACENIAlBGGooAgAhDiACIA9qIgNBIGogBSAIIAobIgVBIGooAgA2AgAgA0EYaiAFQRhqKQIANwIAIANBEGogBUEQaikCADcCACADQQhqIAVBCGopAgA3AgAgAyAFKQIANwIAIAMgByAJIBEgEkkgDSAOSSANIA5GGyIIGyIFKQIANwIkIANBxABqIAVBIGooAgA2AgAgA0E8aiAFQRhqKQIANwIAIANBNGogBUEQaikCADcCACADQSxqIAVBCGopAgA3AgAgA0HoAGogCSAHIAgbIgVBIGooAgA2AgAgA0HgAGogBUEYaikCADcCACADQdgAaiAFQRBqKQIANwIAIANB0ABqIAVBCGopAgA3AgAgAyAFKQIANwJIIAMgBCAGIAwbIgQpAgA3AmwgA0H0AGogBEEIaikCADcCACADQfwAaiAEQRBqKQIANwIAIANBhAFqIARBGGopAgA3AgAgA0GMAWogBEEgaigCADYCAEEEIQUMAQsgAiAAKQIANwIAIAJBIGogAEEgaigCADYCACACQRhqIABBGGopAgA3AgAgAkEQaiAAQRBqKQIANwIAIAJBCGogAEEIaikCADcCACACIAFBJGwiBGoiA0EgaiAAIARqIgRBIGooAgA2AgAgA0EYaiAEQRhqKQIANwIAIANBEGogBEEQaikCADcCACADQQhqIARBCGopAgA3AgAgAyAEKQIANwIACyALIAFrIQ8gASAFTQ0BIAVBJGwhBCAFIQMDQCACIANBJGwiCGoiBkEYaiAAIAhqIghBGGopAgAiFjcCACAGIAgpAgA3AgAgBkEgaiAIQSBqKAIANgIAIAZBEGogCEEQaiINKQIANwIAIAZBCGogCEEIaiIOKQIANwIAIAZBHGooAgAiDCAGQQhrKAIASyAWpyIKIAZBDGsoAgAiB0kgByAKRhtBAUYEQCAGKAIgIRIgBCEJAn8DQCACIAlqIgYgBkEkayIHKQIANwIAIAZBIGogB0EgaigCADYCACAGQRhqIAdBGGopAgA3AgAgBkEQaiAHQRBqKQIANwIAIAZBCGogB0EIaikCADcCACACIAlBJEYNARogCUEkayEJIAwgBkEsaygCAEsgCiAGQTBrKAIAIgdJIAcgCkYbDQALIAIgCWoLIgcgCCkCADcCACAHQRBqIA0pAgA3AgAgB0EIaiAOKQIANwIAIAZBBGsgEjYCACAGQQhrIAw2AgAgBkEMayAKNgIACyAEQSRqIQQgA0EBaiIDIAFHDQALDAELAAsgAiABQSRsIgRqIQMgBSAPSQRAIAAgBGohESAFQSRsIQ5BJCEIIAMhBANAIAMgBUEkbCIHaiIGQRhqIAcgEWoiDEEYaikCACIWNwIAIAYgDCkCADcCACAGQSBqIAxBIGooAgA2AgAgBkEQaiAMQRBqIhQpAgA3AgAgBkEIaiAMQQhqIhMpAgA3AgAgBkEcaigCACISIAZBCGsoAgBLIBanIg0gBkEMaygCACIHSSAHIA1GG0EBRgRAIAYoAiAhFSAIIQogBCEJAn8DQCAJIA5qIgYgBkEkayIHKQIANwIAIAZBIGogB0EgaigCADYCACAGQRhqIAdBGGopAgA3AgAgBkEQaiAHQRBqKQIANwIAIAZBCGogB0EIaikCADcCACADIAogDkYNARogCkEkaiEKIAlBJGshCSASIAZBLGsoAgBLIA0gBkEwaygCACIHSSAHIA1GGw0ACyAJIA5qCyIHIAwpAgA3AgAgB0EQaiAUKQIANwIAIAdBCGogEykCADcCACAGQQRrIBU2AgAgBkEIayASNgIAIAZBDGsgDTYCAAsgCEEkayEIIARBJGohBCAFQQFqIgUgD0cNAAsLIANBJGshByAAIAtBJGxBJGsiBGohBiACIARqIQkDQCAAIAMgAiADQRxqKAIAIAJBHGooAgBLIANBGGooAgAiBCACQRhqKAIAIgVJIAQgBUYbIgUbIgQpAgA3AgAgAEEgaiAEQSBqKAIANgIAIABBGGogBEEYaikCADcCACAAQRBqIARBEGopAgA3AgAgAEEIaiAEQQhqKQIANwIAIAYgByAJIAlBHGooAgAgB0EcaigCAEsgCUEYaigCACIEIAdBGGooAgAiCEkgBCAIRhsiCBsiBCkCADcCACAGQSBqIARBIGooAgA2AgAgBkEYaiAEQRhqKQIANwIAIAZBEGogBEEQaikCADcCACAGQQhqIARBCGopAgA3AgAgAyAFQSRsaiEDIAIgBUEBc0EkbGohAiAHIAhBXGxqIQcgCEEkbCAJakEkayEJIAZBJGshBiAAQSRqIQAgAUEBayIBDQALIAdBJGohBCALQQFxBH8gACACIAMgAiAESSIFGyIBKQIANwIAIABBIGogAUEgaigCADYCACAAQRhqIAFBGGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCACADIAIgBE9BJGxqIQMgAiAFQSRsagUgAgsgBEYgAyAJQSRqRnENABCWBQALIBBBQGskAAvpQAIffwZ+IwBBQGoiDiQAAkACQCABQSFPBEADQCADRQRAIAEiAiABQQF2aiIHBEAgACEBIwBBQGohBQNAAkACfyACIAdBAWsiB0sEQCAFQThqIgMgAUEwaiIEKQIANwMAIAVBMGoiCCABQShqIgopAgA3AwAgBUEoaiIGIAFBIGoiCSkCADcDACAFQSBqIgsgAUEYaiIMKQIANwMAIAVBGGoiECABQRBqIg8pAgA3AwAgBUEQaiINIAFBCGoiESkCADcDACAFIAEpAgA3AwggASAHQThsaiIAKQIAISMgAEEIaiITKQIAISQgAEEQaiIVKQIAISUgAEEYaiIZKQIAISYgAEEgaiIaKQIAIScgAEEoaiIbKQIAISggBCAAQTBqIgQpAgA3AgAgCiAoNwIAIAkgJzcCACAMICY3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KAIAIgdBDU8EfyABQewAaygCAAUgBwsgDUsNAAsgCSAMagsiASANNgIEIAEgIz4CACABIA82AjQgASACKQOAFTcCCCABQRBqIBkpAwA3AgAgAUEYaiAVKQMANwIAIAFBIGogEykDADcCACABQShqIBopAwA3AgAgAUEwaiAbKAIANgIACyAGQThrIQYgAEE4aiEAIAhBAWoiCCARRw0ACwsgBEE4ayEHIAMgCkE4bEE4ayIAaiEIIAAgAmohCSACIQADQCAEKAI0IgFBDU8EQCAEKAIEIQELIAAoAjQiBUENTwRAIAAoAgQhBQsgAyAEIAAgASAFSSILGyIGKQIANwIAIANBMGogBkEwaikCADcCACADQShqIAZBKGopAgA3AgAgA0EgaiAGQSBqKQIANwIAIANBGGogBkEYaikCADcCACADQRBqIAZBEGopAgA3AgAgA0EIaiAGQQhqKQIANwIAIANBOGohAyABIAVPQThsIABqIQAgC0E4bCAEaiEEIAkoAjQiAUENTwRAIAkoAgQhAQsgBygCNCIFQQ1PBEAgBygCBCEFCyAIIAcgCSABIAVJIgsbIgYpAgA3AgAgCEEwaiAGQTBqKQIANwIAIAhBKGogBkEoaikCADcCACAIQSBqIAZBIGopAgA3AgAgCEEYaiAGQRhqKQIANwIAIAhBEGogBkEQaikCADcCACAIQQhqIAZBCGopAgA3AgAgCEE4ayEIIAdBSEEAIAsbaiEHIAlBSEEAIAEgBU8baiEJIBBBAWsiEA0ACyAHQThqIQUgCkEBcQR/IAMgACAEIAAgBUkiBxsiASkCADcCACADQTBqIAFBMGopAgA3AgAgA0EoaiABQShqKQIANwIAIANBIGogAUEgaikCADcCACADQRhqIAFBGGopAgA3AgAgA0EQaiABQRBqKQIANwIAIANBCGogAUEIaikCADcCACAEIAAgBU9BOGxqIQQgACAHQThsagUgAAsgBUYgBCAJQThqRnENABCWBQALIAJBsBVqJAAMAQsACyAOQUBrJAALoh4BH38jAEEgayIDJAACQAJAAkAgAkEASA0AAkACQAJAIAJFBEBBASEKDAELQfmN9gAtAAAaQQEhBCACQQEQ/AUiCkUNAyABIQUgCiEEAkAgAiIJQRBJDQAgCUHw////B3EhBgNAIAogC2ohBCABIAtqIgVB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AkGIAWogAEEMahCeBCAALQAhIQYgAiABIAAoAhgiAyAAKAIcEL8CQQAhBCADQQJPBEAgAkHAAWogASADQQJrIAMQvwIgAigCyAEhDCACKALEASEPIAIoAsABIQQLIAJBDGogASADQQJqIANBBGoQvwIgAiABNgKAASACQQs6AGggAkELOgBQIAIgATYCTCACIA8gDEECdGo2AiggAiAENgIkIAIgDzYCICACIA82AhwgAkEBNgIYIAIgAigCDDYCRCACIAIoAhAiATYCQCACIAE2AjwgAiACKAIANgI0IAIgAigCBCIANgIwIAIgADYCLCACIAEgAigCFEECdGo2AkggAiAAIAIoAghBAnRqNgI4IAJBoAFqIAJBGGoQswECQAJ/IAIoArABQYCAgIB4RgRAQQghCEEAIQFBACACKAIYIgBBAkYNARoCQCAARQ0AAkAgAigCHCIDRQ0AIAIoAiQiAEUNACADIABBAnRBBBCNBgsgAigCLCIDRQ0AIAIoAjQiAEUNACADIABBAnRBBBCNBgtBACACKAI8IgNFDQEaQQAgAigCRCIARQ0BGiADIABBAnRBBBCNBkEADAELQfmN9gAtAAAaQYABQQgQ/AUiCEUNASAIIAIpA6ABNwMAIAhBGGogAkG4AWopAwA3AwAgCEEQaiACQbABaikDADcDACAIQQhqIAJBqAFqKQMANwMAQQEhASACQQE2ApwBIAIgCDYCmAEgAkEENgKUASACQcABaiIAIAJBGGpB8AAQrAEaIAJBsAJqIAAQswEgAigCwAJBgICAgHhHBEBBICEMA0AgAigClAEgAUYEQCACQZQBaiABQQFBCEEgEOoCIAIoApgBIQgLIAggDGoiAyACKQOwAjcDACADQRhqIAJByAJqKQMANwMAIANBEGogAkHAAmoiACkDADcDACADQQhqIAJBuAJqKQMANwMAIAIgAUEBaiIBNgKcASAMQSBqIQwgAkGwAmogAkHAAWoQswEgACgCAEGAgICAeEcNAAsLAkAgAigCwAEiAEECRg0AAkAgAEUNAAJAIAIoAsQBIgNFDQAgAigCzAEiAEUNACADIABBAnRBBBCNBgsgAigC1AEiA0UNACACKALcASIARQ0AIAMgAEECdEEEEI0GCyACKALkASIDRQ0AIAIoAuwBIgBFDQAgAyAAQQJ0QQQQjQYLIAIo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EI0GCyAAKAL4ASEBIAAoAvwBIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAoACIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAQYACahCrAwsgACgChAIhASAAKAKIAiIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKAKMAiIBIAEoAgAiAUEBazYCACABQQFGBEAgAEGMAmoQqwMLIAAoApACIQEgACgClAIiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCmAIiASABKAIAIgFBAWs2AgAgAUEBRgRAIABBmAJqEKsDCyAAKAKcAiEBIAAoAqACIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAqQCIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAQaQCahCrAwsgACgCqAIhASAAKAKsAiIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKAKwAiIBIAEoAgAiAUEBazYCACABQQFGBEAgAEGwAmoQqwMLIAAoArQCIQEgACgCuAIiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCvAIiASABKAIAIgFBAWs2AgAgAUEBRgRAIABBvAJqEKsDCyAAKALAAiEBIAAoAsQCIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAsgCIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAQcgCahCrAwsgACgCzAIhASAAKALQAiIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKALUAiIBIAEoAgAiAUEBazYCACABQQFGBEAgAEHUAmoQqwMLIAAoAtgCIQEgACgC3AIiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgC4AIiASABKAIAIgFBAWs2AgAgAUEBRgRAIABB4AJqEKsDCyAAKALkAiEBIAAoAugCIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAuwCIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAQewCahCrAwsgACgC8AIhASAAKAL0AiIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKAL4AiIBIAEoAgAiAUEBazYCACABQQFGBEAgAEH4AmoQqwMLIAAoAvwCIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAQfwCahCrAwsgACgCoAEhASAAKAKkASIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKAKcAyEDIAAoAqADIgIEQCADIQEDQCABKAIAIQQgAUEEaigCACIGKAIAIgUEQCAEIAURAgALIAYoAgQiBQRAIAQgBSAGKAIIEI0GCyABQQhqIQEgAkEBayICDQALCyAAKAKYAyIBBEAgAyABQQN0QQQQjQYLIAAoAlghASAAKAJcIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAmAhASAAKAJkIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAqgBIQEgACgCrAEiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCaCEBIAAoAmwiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCcCEBIAAoAnQiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCsAEhASAAKAK0ASIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKAK4ASEBIAAoArwBIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAsABIQEgACgCxAEiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgCyAEhASAAKALMASIDKAIAIgIEQCABIAIRAgALIAMoAgQiAgRAIAEgAiADKAIIEI0GCyAAKALQASEBIAAoAtQBIgMoAgAiAgRAIAEgAhECAAsgAygCBCICBEAgASACIAMoAggQjQYLIAAoAtgBIQEgACgC3AEiAygCACICBEAgASACEQIACyADKAIEIgIEQCABIAIgAygCCBCNBgsgACgC4AEhASAA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AjwgASgCQBCKASABKAIoIgUgASgCIEYEQCATQci8wQAQtgMgASgCLCEHIAEoAjQhBgsgASgCJCAFaiAKOgAAIAEgBUEBajYCKCADQbgBaiIIIAxBCGopAwA3AwAgA0HAAWoiCSAMQRBqKQMANwMAIANByAFqIgsgDEEYaikDADcDACADQdABaiINIAxBIGopAwA3AwAgAyAMKQMANwOwASADKAJ4QQFqIQ4gAy0ArwEgAygCfCEPIAMpA0ghFgJ/IAYgB0cEQCABKAIwIgogBkE4bGoiBSAPNgI0IAUgDjYCMCAFIBY3AwAgBSADKQOwATcDCCADQeABaiADQZABaikDADcDACADQegBaiADQZgBaikDADcDACADQfABaiADQaABaikDADcDACADQfgBaiADQagBaikDADcDACAFQRBqIAgpAwA3AwAgBUEYaiAJKQMANwMAIAVBIGogCykDADcDACAFQShqIA0pAwA3AwAgAyADKQOIATcD2AEgAygChAEhBSAHDAELIBJB2LzBABCGAyABKAIwIgogB0E4bGoiBiAPNgI0IAYgDjYCMCADQeABaiADQZABaikDADcDACADQegBaiADQZgBaikDADcDACADQfABaiADQaABaikDADcDACADQfgBaiADQagBaikDADcDACAGIBY3AwAgBiADKQOwATcDCCAGQRBqIAgpAwA3AwAgBkEYaiAJKQMANwMAIAZBIGogCykDADcDACAGQShqIA0pAwA3AwAgAyADKQOIATcD2AEgAygChAEhBSAHIQYgASgCLAshCCABIAZBAWoiBzYCNCAHIAhGBEAgEkHovMEAEIYDIAEoAjAhCgsgCiAHQThsaiIHIBUgF3wiFTcDACABIAZBAmoiBjYCNCAHIAMpA9gBNwMIIAdBEGogA0HgAWopAwA3AwAgB0EYaiADQegBaikDADcDACAHQSBqIANB8AFqKQMANwMAIAdBKGogA0H4AWopAwA3AwAgByAFNgI0IAdBADYCMCABKAIoIQcgASgCJCEIAkACQAJAIAEoAhAiBUEBaw4CAAIBC0F/IQULIAUgCCABKAIYIAEoAhwiCCAHIAcgCEsbEMwEIgkgByAIayAJG0gNAgtxRQRAIAYNAQwHCwsgAykDkAEgFXwhFSADKAIUIQcMAgsgAUEANgI0DAQLIAMoAkghBAsg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AiAEIAVqIQcCQCABQQhPBEAgACAFEJEBIAIgBxCRAUEEIQgMAQsgBUEQaiAGQRBqKQIANwMAIAVBCGogBkEIaikCADcDACAFIAYpAgA3AwAgByACKQIANwIAIAdBCGogAkEIaikCADcCACAHQRBqIAJBEGopAgA3AgALIAVBAjYCjAkgBSAPrUIghjcDgAkgDCAPayEVQQIhAQNAIAUgA0EBaiIANgKICSADQQJ0IQIgACEDIBUgDyACIAVBgAlqaigCACIAGyIXIAhLBEAgBiAAQRhsIgBqIRQgACAFaiECIAghCQNAIAIgCUEYbCIBaiIAIAEgFGoiCykCACIaNwIAIABBEGoiESALQRBqIhIpAgA3AgAgAEEIaiITIAtBCGopAgA3AgAgAEEEaigCACINIABBFGsoAgAiDiANIA5JG0EBaiEEIAlBAWohCSAAQRhrIgEoAgAhFiAapyEKQQAhAwJAAkACQANAIARBAWsiBEUNASADIBZqIRggAyAKaiADQQRqIQMoAgAiGSAYKAIAIhhGDQALIBggGUsNAQwCCyANIA5PDQELIAAgASkCADcCACAFQZgJaiIWIBIpAgA3AwAgEyABQQhqKQIANwIAIBEgAUEQaikCADcCACAFIAspAgg3A5AJAkAgAiIAIAFGDQADQCANIAEiAEEUaygCACIOIA0gDkkbQQFqIQsgAEEYayIBKAIAIQMgCiEEAkACQANAIAtBAWsiC0UNASADKAIAIREgBCgCACESIARBBGohBCADQQRqIQMgESASRg0ACyARIBJLDQEMAwsgDSAOTw0CCyAAIAEpAgA3AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCACABIAJHDQALIAIhAAsgACANNgIEIAAgCjYCACAAIAUpA5AJNwIIIABBEGogFikDADcCAAsgCSAXRw0ACyAFKAKICSEDIAUoAowJIQELIAEgA0cNAAsgB0EYayEAIAYgDEEYbEEYayIBaiEKIAEgBWohAiAFIQFBACEJA0AgB0EEaigCACIDIAFBBGooAgAiBCADIARJIg0bQQFqIQsgCUEBaiEJIAEoAgAhAyAHKAIAIQQCQANAIAtBAWsiC0UNASADKAIAIQggBCgCACEOIARBBGohBCADQQRqIQMgCCAORg0ACyAIIA5LIQ0LIAYgByABIA0b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BGohASACIAEgAUEEdCIBQbzp7QBqKAIAIAQgAUHA6e0AaigCACIBIAMgASADSRsQzAQiAiABIANrIAIbQQBKGyICQYoCaiEBIAIgASABQQR0IgFBvOntAGooAgAgBCABQcDp7QBqKAIAIgEgAyABIANJGxDMBCICIAEgA2sgAhtBAEobIgJBhQFqIQEgAiABIAFBBHQiAUG86e0AaigCACAEIAFBwOntAGooAgAiASADIAEgA0kbEMwEIgIgASADayACG0EAShsiAkHCAGohASACIAEgAUEEdCIBQbzp7QBqKAIAIAQgAUHA6e0AaigCACIBIAMgASADSRsQzAQiAiABIANrIAIbQQBKGyICQSFqIQEgAiABIAFBBHQiAUG86e0AaigCACAEIAFBwOntAGooAgAiASADIAEgA0kbEMwEIgIgASADayACG0EAShsiAkERaiEBIAIgASABQQR0IgFBvOntAGooAgAgBCABQcDp7QBqKAIAIgEgAyABIANJGxDMBCICIAEgA2sgAhtBAEobIgJBCGohASACIAEgAUEEdCIBQbzp7QBqKAIAIAQgAUHA6e0AaigCACIBIAMgASADSRsQzAQiAiABIANrIAIbQQBKGyICQQRqIQEgAiABIAFBBHQiAUG86e0AaigCACAEIAFBwOntAGooAgAiASADIAEgA0kbEMwEIgIgASADayACG0EAShsiAkECaiEBIAIgASABQQR0IgFBvOntAGooAgAgBCABQcDp7QBqKAIAIgEgAyABIANJGxDMBCICIAEgA2sgAhtBAEobIgJBAWohASACIAEgAUEEdCIBQbzp7QBqKAIAIAQgAUHA6e0AaigCACIBIAMgASADSRsQzAQiAiABIANrIAIbQQBKGyICQQFqIQEgAiABIAFBBHQiAUG86e0AaigCACAEIAFBwOntAGooAgAiASADIAEgA0kbEMwEIgIgASADayACG0EAShsiAkEEdCIBQbzp7QBqKAIAIAQgAUHA6e0AaigCACIBIAMgASADSRsQzAQiBSABIANrIAUbIgENBCABQR92IAJqIgFBzRBPDQIgAEEBOgAEIAAgA0ECajYCACAAIAFBBHRBxOntAGopAgA3AggPCyAFIAJB5K7wABCSBgALQQFBAEHUrvAAEJUGAAtBzRBBzRBB9PPvABCVBAALIAJBA0kNAAJA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IAQpAgA3AgAgBiANIBFLaiEGIAQhBSAEQRhqIgQgEEcNAAsgBEEYayEFCyALIAZBGGxqIgQpAgAhFyAEQQhqIgspAgAhFiAFQRBqIARBEGopAgA3AgAgBUEIaiAWNwIAIAUgFzcCACAEQQ1qIAcpAAA3AAAgCyAJKQMANwIAIAQgDikDCDcCACAEIBI7ARYgBCATOgAVIAYgDSATS2oiBCABTw0DIAggCikCADcDACAJIAwpAgA3AwAgDiAAKQIANwMIIAAgBEEYbGoiBUEQaiIGKQIAIRcgBUEIaiILKQIAIRYgACAFKQIANwIAIAwgFjcCACAKIBc3AgAgBiAIKQMANwIAIAsgCSkDADcCACAFIA4pAwg3AgAgACAEIAIgAxBNIAVBGGohACAFIQIgASAEQX9zagsiAUEhTw0ACwsgACEFIwBBgAlrIgMkAAJAIAEiCUECSQ0AQQEhBCABQQF2IQsCQCABQQhPBEAgA0EIaiAAQcgAQTAgAEHdAGotAAAgAEHFAGotAABJIgIbaiIBIAAgAEEtai0AACIKIABBFWotAAAiDElBGGxqIgQgAUEVai0AACAEQRVqLQAASSIGGyIHQQhqKQIANwMAIANBEGogB0EQaikCADcDACADQSBqIABBMEHIACACG2oiCCAAIAogDE9BGGxqIgIgASAGGyAIQRVqLQAAIAJBFWotAABJIgobIgwgBCABIAIgChsgBhsiASAMQRVqLQAAIAFBFWotAABJIgYbIgRBCGopAgA3AwAgA0EoaiAEQRBqKQIANwMAIAMgBykCADcDACADIAQpAgA3AxggA0FAayABIAwgBhsiAUEQaikCADcDACADQThqIAFBCGopAgA3AwAgA0HYAGogAiAIIAobIgJBEGopAgA3AwAgA0HQAGogAkEIaikCADcDACADIAEpAgA3AzAgAyACKQIANwNIIAAgC0EYbCIQaiIAIABBLWotAAAiAiAAQRVqLQAAIgZJQRhsaiIEIABByABBMCAAQd0Aai0AACAAQcUAai0AAEkiBxtqIgEgACACIAZPQRhsaiICIABBMEHIACAHG2oiBkEVai0AACACQRVqLQAASSIHGyABQRVqLQAAIARBFWotAABJIggbIgpBFWotAAAhDSAGIAIgASAIGyAHGyIMQRVqLQAAIQ8gAyAQaiIAIAEgBCAIGyIBKQIANwIAIABBCGogAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgAgACAMIAogDSAPSyIEGyIBKQIANwIYIABBKGogAUEQaikCADcCACAAQSBqIAFBCGopAgA3AgAgAEFAayAKIAwgBBsiAUEQaikCADcCACAAQThqIAFBCGopAgA3AgAgACABKQIANwIwIABB2ABqIAIgBiAHGyIBQRBqKQIANwIAIABB0ABqIAFBCGopAgA3AgAgACABKQIANwJIQQQhBAwBCyADQRBqIAVBEGopAgA3AwAgA0EIaiAFQQhqKQIANwMAIAMgBSkCADcDACADIAtBGGwiAWoiACABIAVqIgEpAgA3AgAgAEEIaiABQQhqKQIANwIAIABBEGogAUEQaikCADcCAAsgBCALSQRAIARBGGwhASAEIQIDQCADIAJBGGwiBmoiAEEQaiAFIAZqIgdBEGopAgA3AgAgACAHKQIANwIAIABBCGogB0EIaiIMKQIANwIAIABBFWotAAAiCCAAQQNrLQAASQRAIAAvARYhECABIQACfwNAIAAgA2oiBiAGQRhrIgopAgA3AgAgBkEQaiAKQRBqKQIANwIAIAZBCGogCkEIaikCADcCACADIABBGEYNARogAEEYayEAIAggBkEbay0AAEkNAAsgACADagsiACAHKQIANwIAIABBDWogB0ENaikAADcAACAAQQhqIAwpAgA3AgAgBkECayAQOwEAIAZBA2sgCDoAAAsgAUEYaiEBIAJBAWoiAiALRw0ACwsgAyALQRhsIgBqIQIgCSALayIPIARLBEAgACAFaiETIARBGGwhDEEYIQcgAiEBA0AgAiAEQRhsIgZqIgBBEGogBiATaiIKQRBqKQIANwIAIAAgCikCADcCACAAQQhqIApBCGoiEikCADcCACAAQRVqLQAAIhAgAEEDay0AAEkEQCAALwEWIREgByEGIAEhAAJ/A0AgACAMaiIIIAhBGGsiDSkCADcCACAIQRBqIA1BEGopAgA3AgAgCEEIaiANQQhqKQIANwIAIAIgBiAMRg0BGiAGQRhqIQYgAEEYayEAIBAgCEEbay0AAEkNAAsgACAMagsiACAKKQIANwIAIABBDWogCkENaikAADcAACAAQQhqIBIpAgA3AgAgCEECayAROwEAIAhBA2sgEDoAAAsgB0EYayEHIAFBGGoh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K0YEQCADQQFrIQIgBEEBaiEEIANBCkkNAQwCCyADIgJBCU8NAQtBACEDA0AgBC0AAEEwayIFQQlLDQIgBEEBaiEEIAUgA0EKbGohAyACQQFrIgINAAsMAgtBACEDA0AgAkUNAiAELQAAQTBrIgVBCUsNASADrUIKfiIHQiCIpw0BIARBAWohBCACQQFrIQIgBSAHpyIGaiIDIAZPDQALCyAAQoCAgIAINwIADAELIAOtQsQAfiIHpyEEQQAhBSAHQiCIpyAEQfz///8HS3INAQJAIARFBEBBBCECQQAhAwwBC0H5jfYALQAAGkEEIQUgBEEEEPwFIgJFDQILIAFBADYCNCABIAI2AjAgASADNgIsIAFB2ABqIAFBJGopAgA3AwAgAUHQAGogAUEcaikCADcDACABQcgAaiABQRRqKQIANwMAIAFBQGsgAUEMaikCADcDACABIAEpAgQ3AzgCQCABLQBdDQAgAUGYAWohBgNAIAEoAjwhAyABQaQBaiABQThqEOABAkACfyABKAKkAUUEQCABLQBdDQQgAUEBOgBdAkAgAS0AXEEBRgRAIAEoAlghAyABKAJUIQIMAQsgASgCWCIDIAEoAlQiAkYNBQsgASgCPCACaiEEIAMgAmsMAQsgASgCVCECIAEgASgCrAEiBTYCVCACIANqIQQgBSACawsiAkUEQEEAIQIMAQsgBCACQQFrIgNqLQAAQQpHDQAgAkECayICIAMgAwR/IARBACACIARqLQAAQQ1GGwVBAAsiBRshAiAFIAQgBRshBAsgASACNgK0ASABQQA2ArABIAEgAjYCrAEgASAENgKoASABQQE6ALwBIAFBLzYCpAEgAUEvNgK4ASABQZQCaiABQaQBahDgAQJAIAEoApQCRQRAIAFB3AFqIAQgAiAEahCGASABKAI0IgIgASgCLEYEQCABQSxqQfSgwgAQigMLIAEoAjAgAkHEAGxqIgMgASkC3AE3AgAgA0EANgJAIANCgICAgMAANwI4IANBCGogAUHkAWopAgA3AgAgA0EQaiABQewBaikCADcCACADQRhqIAFB9AFqKQIANwIAIANBIGogAUH8AWopAgA3AgAgA0EoaiABQYQCaikCADcCACADQTBqIAFBjAJqKQIANwIADAELIAEoApwCIQMgAUGkAWogBCAEIAEoApgCahCGASAGIAMgBGogAiAEahC3ASABQZABaiABQdQBaikCADcDACABQYgBaiABQcwBaikCADcDACABQYABaiABQcQBaikCADcDACABQfgAaiABQbwBaikCADcDACABQfAAaiABQbQBaikCADcDACABQegAaiABQawBaikCADcDACABIAEpAqQBNwNgIAEoAjQiAiABKAIsRgRAIAFBLGpB5KDCABCKAwsgASgCMCACQcQAbGogAUHgAGpBxAAQrAEaCyABIAJBAWo2AjQgAS0AXUUNAAsLIAAgASkCLDcCACAAQQhqIAFBNGooAgA2AgALIAFBoAJqJAAPCyAFIARB1KDCABDlBQAL9wsCD38EfiMAQSBrIggkACAAKAIMIg0gAWoiASANTwRAAkAgACgCBCIHIAdBAWoiCUEDdiIEQQdsIAdBCEkbIgtBAXYgAUkEQCAIQQhqQQggASALQQFqIAEgC0sbELUCIAgoAgwhCyAIKAIIIgVFDQEgCCgCECEMIAAoAgAhBCANBEAgBUEIaiEOIARBCGshDyAEKQMAQn+FQoCBgoSIkKDAgH+DIRIgAikDACEUIAQhASANIQIDQCASUARAA0AgBkEIaiEGIAEpAwggAUEIaiEBQoCBgoSIkKDAgH+DIhJCgIGChIiQoMCAf1ENAAsgEkKAgYKEiJCgwIB/hSESCyAFIAtB0I/2ACkDACITQv////8PgyAUIA8gEnqnQQN2IAZqIhBBA3RrKQMAhSIVQiCIfkIgiCATQiCIIBV+haciEXEiCmopAABCgIGChIiQoMCAf4MiE1AEQEEIIQMDQCADIApqIQogA0EIaiEDIAUgCiALcSIKaikAAEKAgYKEiJCgwIB/gyITUA0ACwsgEkIBfSASgyESIAUgE3qnQQN2IApqIAtxIgNqLAAAQQBOBEAgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IQMLIAMgBWogEUEZdiIKOgAAIA4gA0EIayALcWogCjoAACAFIANBf3NBA3RqIAQgEEF/c0EDdGopAAA3AAAgAkEBayICDQALCyAAIAs2AgQgACAFNgIAIAAgDCANazYCCCAHRQ0BIAQgCUEDdCIAayAAIAdqQQlqQQgQjQYMAQtBACEBIAAoAgAhBQJAIAQgCUEHcUEAR2oiBEUNACAEQQFHBEAgBEH+////A3EhBgNAIAEgBWoiAyADKQMA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hQ8LIAMgAykCWDcDSEGQiPAAQSsgA0HIAGpBgIjwAEHYu/AAEIUEAAvwCQEWfyMAQYABayIDJAACQCABKAIIIgRFBEBBBCEIQQQhDQwBCyABKAIEIg4gBEEYbGohFCABKAIMIRNBBCEPQQQhDUEEIQgCQAJAAkADQCATKAIMIgVBACAOKAIUIgQgDigCECIBRhsgBSABQQJ0aiAEIBMoAhAiBUsgASAESyABIAVPcnIiChsiEARAQQAhBUEAIAQgAWsgChsiBEECdCEKIARB/////wNLIApB/P///wdLcg0CIA4tAAAhEQJAIApFBEBBBCELQQAhAQwBC0H5jfYALQAAGkEEIQUgBCEBIApBBBD8BSILRQ0DCyALIBAgChCsASELAkACQAJAAkAgEQ4KAgAAAQAAAAAAAQALIANBADYCFCADQQE2AgggA0HMmcIANgIEIANCBDcCDCADQQRqQYSawgAQrgUACyADIAg2AgggAyAJNgIEIAMgDDYCDCAJIAxGBEAgA0EEakGkmMIAEJIDIAMoAgQhCSADKAIIIQgLIAggD2oiBEGUmMIANgIAIARBBGtBATYCACADIA02AgggAyAGNgIEIAMgBzYCDCAGIAdGBEAgA0EEakGkmMIAEJIDIAMoAgghDSADKAIEIQYLIA0gB0EDdGoiBEGUmMIANgIEIARBATYCACABRQ0BIAsgAUECdEEEEI0GDAELIAMgBzYCUCADIA02AkwgAyAGNgJIIANBBGogCyAKIAtqENIBQfmN9gAtAAAaQThBBBD8BSIFRQ0EIAUgAykCBDcCACAFQTBqIANBNGoiECkCADcCACAFQShqIANBLGoiESkCADcCACAFQSBqIANBJGoiEikCADcCACAFQRhqIANBHGoiFSkCADcCACAFQRBqIANBFGoiFikCADcCACAFQQhqIANBDGoiFykCADcCACADKAJQIgcgAygCSCIGRgRAIANByABqQfSYwgAQkgMgAygCSCEGCyADKAJMIg0gB0EDdGoiGEG0l8IANgIEIBggBTYCACADIAw2AkQgAyAINgJAIAMgCTYCPAJAIAFBDE0EQCADQQRqIAsgChCsARogAyAENgI0QQAhBCABRQ0BIAsgAUECdEEEEI0GDAELIAMgCzYCCCADIAQ2AgQgAyABNgI0QQEhBAsgA0H4AGoiBSAQKAIA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IABBGGogA0EgaikDADcCACAAQRBqIANBGGopAwA3AgAgAEEIaiADQRBqKQMANwIAIANBwAFqJAALixMCEX8BfiMAQdAAayIDJABB9I72ACgCACIHRQRAIwBB8ANrIgEkAEH5jfYALQAAGgJAAkACQAJAAkACQEEQQQQQ/AUiBQRAIAFBADYCgAIgAUKAgICAwAA3AvgBIAFBADYC7AMgAUEANgKIAiABQYgCaiICQaDewQBBAxDCASACQaPewQBBAhDCASABQRBqIgQgAkHoARCsARpB+Y32AC0AABpB6AFBBBD8BSICBEAgAiAEQegBEKwBIQIgAUH4AWpB9JjCABCSAyABQQhqQQE2AgAgASgC/AEiBEGk/cEANgIEIAQgAjYCACABIAEpAvgBIhI3AwAgEqdBAUYEQCABQejL6QAQkgMLIAEoAgRBCGoiAkHYy+kANgIEIAJBATYCACABQQI2AghB+Y32AC0AABpBDEEEEPwFIgRFDQQgBCABKQMANwIAIARBCGogAUEIaigCADYCACABQQA2AhggAUKAgICAwAA3AhAgAUGIAmpBuN7BAEG63sEAEIYBQfmN9gAtAAAaQThBBBD8BSICRQ0CIAIgASkCiAI3AgAgAkEwaiABQbgCaikCADcCACACQShqIAFBsAJqKQIANwIAIAJBIGogAUGoAmopAgA3AgAgAkEYaiABQaACaikCADcCACACQRBqIAFBmAJqKQIANwIAIAJBCGogAUGQAmopAgA3AgAgAUEQakHEl8IAEJIDIAFBgAJqQQE2AgAgASgCFCIGQbSXwgA2AgQgBiACNgIAIAEgASkCECISNwP4ASASp0EBRgRAIAFB+AFqQaSYwgAQkgMLIAEoAvwBIgZBCGoiAkGUmMIANgIEIAJBATYCACABQQI2AoACIAFBiAJqQbrewQBBvN7BABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNAyACIAEpAogCNwIAIAJBMGogAUG4AmopAgA3AgAgAkEoaiABQbACaikCADcCACACQSBqIAFBqAJqKQIANwIAIAJBGGogAUGgAmopAgA3AgAgAkEQaiABQZgCaikCADcCACACQQhqIAFBkAJqIgcpAgA3AgAgASgC+AFBAkYEQCABQfgBakHEl8IAEJIDIAEoAvwBIQYLIAFBgAJqQQM2AgAgB0EDNgIAIAZBEGoiBkG0l8IANgIEIAYgAjYCACABIAEpA/gBIhI3A4gCIBKnQQNGBEAgAUGIAmpB6MvpABCSAwsgASgCjAJBGGoiAkHYy+kANgIEIAJBATYCACABQQQ2ApACQfmN9gAtAAAaQQxBBBD8BSICRQ0FIAIgASkDiAI3AgAgBUGo3sEANgIMIAUgAjYCCCAFQajewQA2AgQgBSAENgIAIAJBCGogAUGQAmooAgA2AgBB+Y32AC0AABpBFEEEEPwFIgJFDQYgAkECNgIQIAIgBTYCDCACQQI2AgggAkKBgICAEDcCAEH0jvYAKAIAIQVB9I72ACACNgIAIAEgBTYCiAICQCAFRQ0AIAUgBSgCACICQQFrNgIAIAJBAUcNACABQYgCahDQAwsgAUHwA2okAAwHC0EEQegBEMwGAAtBBEEQEMwGAAtBBEE4EMwGAAtBBEE4EMwGAAtBBEEMEMwGAAtBBEEMEMwGAAtBBEEUEMwGAAtB9I72ACgCACEHCyAHIAcoAgAiAUEBajYCAAJ/AkACQCABQQBOBEAgB0UNASADIAc2AgwgACgCBCEPIAAoAgghCyAAKAIMIgEoAgwhBiABKAIQIQwgA0EANgJIIANCgICAgMAANwJAIAtFBEBBACEMQQQMBAtBBCEJQQAhAQNAIAsgASICayEKIAFBAWohASAHKAIQQQN0IQUgDyACQRhsaiENIAcoAgwhBAJAA0AgBUUNASAFQQhrIQUgBCgCACAEKAIEIRAgBEEIaiEEIA0gCiAGIAwgECgCDBEFACIORQ0ACyADKAJAIAhGBEAgA0FAa0HEmsIAEJIDIAMoAkQhCQsgCSAIQQN0aiIFIAIgDmo2AgQgBSACNgIAIAMgCEEBaiIINgJICyABIAtHDQALDAILAAtBoMrBAEHGACADQShqQZDKwQBBuMvBABCFBAALIAhBAUsEQCADQoCAgIDAADcCKCADQgA3AjAgAygCRCEEQQEhBUEEIQdBACEJQQAhBkEAIQEDQAJAIAQoAgAgBEEMaigCAE8NACAEQQhqKAIAIARBBGooAgBPDQAgASAGRgRAIANBKGpBtJrCABDcAyADKAIsIQcgAygCMCEJIAMoAighBiADKAI0IQELIAcgASAJaiICIAZBACACIAZPG2tBAnRqIAU2AgAgAyABQQFqIgE2AjQLIARBCGohBCAIIAVBAWoiBUcNAAsgA0FAayADQShqEPABIAMoAkghCAsgAygCQCEMIAMoAkQLIQJBACEGAkACQAJAAkACQCAIQf////8DSyAIQQJ0IgRB/P///wdLcg0AAkAgBEUEQEEEIQVBACEBDAELQfmN9gAtAAAaQQQhBiAIIQEgBEEEEPwFIgVFDQELIAMgBTYCFCADIAE2AhAgA0IANwIYIAhFDQQgAiAIQQN0aiEOIA9BKGohECACIQEDQCADQRBqIAEoAgAiCEEBaiABKAIEIgQQjgEgBCAISQ0CIAQgC0sNAwJAIAQgCEcEQCAPIAhBGGwiCmoiCUEUaigCACIFIAlBEGooAgAiByAFIAdJGyEGIAUgByAFIAdLGyEFIAlBGGogDyAEQRhsIgRqRg0BIAQgCmtBGGshByAKIBBqIQQDQCAEQQRqKAIAIgogBCgCACINIAogDUsbIhEgBSAFIBFJGyEFIAogDSAKIA1JGyIKIAYgBiAKSxshBiAEQRhqIQQgB0EYayIHDQALIAMgBTYCJCADIAY2AiAgBSAGTw0BIANBAjYCLCADQdiawgA2AiggA0ICNwI0IAMgA0Ekaq1CgICAgMAAhDcDSCADIANBIGqtQoCAgIDAAIQ3A0AgAyADQUBrNgIwIANBKGpBgJvCABCuBQALQezewQAQlgYACyAIIAtPDQQgCSAFNgIUIAkgBjYCECABQQhqIgEgDkcNAAsMBAsgBiAEQbzewQAQ5QUACyAIIARB3N7BABCVBgALIAQgC0Hc3sEAEJMGAAsgCCALQfzewQAQlQQACyAMBEAgAiAMQQN0QQQQjQYLIANBMGogA0EYaikCADcDACADIAMpAhA3AyggACADQShqEOUBIAMoAgwiACAAKAIAIgBBAWs2AgAgAEEBRgRAIANBDGoQ0AMLIANB0ABqJAALigkCBX8DfgJAAkACQAJAIAFBCE8EQCABQQdxIgJFDQIgACgCoAEiA0EpTw0DIANFBEAgAEEANgKgAQwDCyADQQFrQf////8DcSIFQQFqIgRBA3EhBiACQQJ0QaCk8wBqKAIAIAJ2rSEJIAVBA0kEQCAAIQIMAgsgBEH8////B3EhBSAAIQIDQCACIAI1AgAgCX4gCHwiBz4CACACQQRqIgQgBDUCACAJfiAHQiCIfCIHPgIAIAJBCGoiBCAENQIAIAl+IAdCIIh8Igc+AgAgAkEMaiIEIAQ1AgAgCX4gB0IgiHwiBz4CACAHQiCIIQggAkEQaiECIAVBBGsiBQ0ACwwBCyAAKAKgASIDQSlPDQIgA0UEQCAAQQA2AqABDwsgAUECdEGgpPMAajUCACEJIANBAWtB/////wNxIgFBAWoiAkEDcSEGAkAgAUEDSQRAIAAhAgwBCyACQfz///8HcSEFIAAhAgNAIAIgAjUCACAJfiAIfCIHPgIAIAJBBGoiASABNQIAIAl+IAdCIIh8Igc+AgAgAkEIaiIBIAE1AgAgCX4gB0IgiHwiBz4CACACQQxqIgEgATUCACAJfiAHQiCIfCIHPgIAIAdCIIghCCACQRBqIQIgBUEEayIFDQALCyAGBEADQCACIAI1AgAgCX4gCHwiBz4CACACQQRqIQIgB0IgiCEIIAZBAWsiBg0ACwsCQCAAIAdCgICAgBBaBH8gA0EoRg0BIAAgA0ECdGogCD4CACADQQFqBSADCzYCoAEPCwwDCyAGBEADQCACIAI1AgAgCX4gCHwiBz4CACACQQRqIQIgB0IgiCEIIAZBAWsiBg0ACwsCQCAAIAdCgICAgBBaBH8gA0EoRg0BIAAgA0ECdGogCD4CACADQQFqBSADCzYCoAEMAQsMAgsCQCABQQhxBEACQAJAIAAoAqABIgNBKUkEQCADRQRAQQAhAwwDCyADQQFrQf////8DcSICQQFqIgVBA3EhBiACQQNJBEBCACEHIAAhAgwCCyAFQfz///8HcSEFQgAhByAAIQIDQCACIAI1AgBC4esXfiAHfCIHPgIAIAJBBGoiBCAENQIAQuHrF34gB0IgiHwiBz4CACACQQhqIgQgBDUCAELh6xd+IAdCIIh8Igc+AgAgAkEMaiIEIAQ1AgBC4esXfiAHQiCIfCIIPgIAIAhCIIghByACQRBqIQIgBUEEayIFDQALDAELDAQLIAYEQANAIAIgAjUCAELh6xd+IAd8Igg+AgAgAkEEaiECIAhCIIghByAGQQFrIgYNAAsLIAhCgICAgBBUDQAgA0EoRg0CIAAgA0ECdGogBz4CACADQQFqIQMLIAAgAzYCoAELIAFBEHEEQCAAQaCR8wBBAhCXAQsgAUEgcQRAIABBqJHzAEEDEJcBCyABQcAAcQRAIABBtJHzAEEFEJcBCyABQYABcQRAIABByJHzAEEKEJcBCyABQYACcQRAIABB8JHzAEETEJcBCyAAIAEQ6QEaDwsMAQsgA0EoQbjC8wAQkwYAC0EoQShBuMLzABCVBAALxgsBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDiwBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLAALIAIgAEECajYCDCABQeC/8ABBDSAAQQRqQbDY7AAgAEEBakHAv/AAIAJBDGpB0L/wABCqAwwsCyACIABBAWo2AgwgAUHtv/AAQQkgAEECakHAv/AAIABBA2pBwL/wACACQQxqQfTY7AAQqgMMKwsgAiAAQQNqNgIMIAFBiMDwAEEPIABBAWpB+L/wACAAQQJqQcC/8AAgAkEMakHQv/AAEKoDDCoLIAIgAEEBajYCDCABQZfA8ABBCSAAQQRqQbDY7AAgAkEMakHQv/AAELQDDCkLIAFBoMDwAEEJEPQFDCgLIAFBqcDwAEENEPQFDCcLIAIgAEEBajYCDCABQbbA8ABBDiACQQxqQdC/8AAQugMMJgsgAUHEwPAAQQoQ9AUMJQsgAUHOwPAAQQgQ9AUMJAsgAUHWwPAAQQYQ9AUMIwsgAUHcwPAAQQ0Q9AUMIgsgAiAAQQFqNgIMIAFB/MDwAEEEIABBBGpB7MDwACACQQxqQdC/8AAQtAMMIQsgAiAAQQRqNgIMIAFBkMHwAEEEIAJBDGpBgMHwABC6AwwgCyACIABBBGo2AgwgAUGkwfAAQQQgAkEMakGUwfAAELoDDB8LIAIgAEEEajYCDCABQajB8ABBBSACQQxqQZTB8AAQugMMHgsgAiAAQQRqNgIMIAFBrcHwAEERIAJBDGpBgMHwABC6AwwdCyACIABBAWo2AgwgAUG+wfAAQQ4gAkEMakHQv/AAELoDDBwLIAFBzMHwAEEKEPQFDBsLIAIgAEEEajYCDCABQdbB8ABBDyACQQxqQYDB8AAQugMMGgsgAiAAQQRqNgIMIAFB5cHwAEEOIAJBDGpBgMHwABC6AwwZCyACIABBBGo2AgwgAUGEwvAAQQ4gAkEMakH0wfAAELoDDBgLIAFBksLwAEEEEPQFDBcLIAIgAEEBajYCDCABQZbC8ABBBEGawvAAQREgAkEMakHQv/AAEM4DDBYLIAFBq8LwAEEJEPQFDBULIAIgAEEBajYCDCABQbTC8ABBCSACQQxqQdC/8AAQugMMFAsgAUG9wvAAQQQQ9AUMEwsgAUHBwvAAQQkQ9AUMEgsgAUHKwvAAQQQQ9AUMEQsgAiAAQQRqNgIMIAFB8MLwAEEHIABBAWpB0MLwACACQQxqQeDC8AAQtAMMEAsgAiAAQQRqNgIMIAFB98LwAEEPIAJBDGpBgMHwABC6AwwPCyABQYbD8ABBDxD0BQwOCyABQZXD8ABBCRD0BQwNCyACIABBAWo2AgwgAUGww/AAQQogAkEMakGgw/AAELoDDAwLIAIgAEEIajYCDCABQczD8ABBBCAAQQJqQcC/8AAgAEEBakH4v/AAIAJBDGpBvMPwABCqAwwLCyACIABBBGo2AgwgAUHQw/AAQQggAkEMakGo2ewAELoDDAoLIAIgAEEEajYCDCABQdjD8ABBEiACQQxqQYDB8AAQugMMCQsgAiAAQQFqNgIMIAFB/MPwAEENIAJBDGpB7MPwABC6AwwICyACIABBAWo2AgwgAUGJxPAAQQ4gAkEMakHQv/AAELoDDAcLIAFBl8TwAEEYEPQFDAYLIAFBr8TwAEETEPQFDAULIAIgAEEEajYCDCABQcLE8ABBGCACQQxqQajZ7AAQugMMBAsgAiAAQQRqNgIMIAFB7MTwAEEFIAJBDGpB3MTwABC6AwwDCyABQfHE8ABBCRD0BQwCCyABQfrE8ABBCBD0BQwBCyABQYLF8ABBCRD0BQsgAkEQaiQAC+cIARF/IAAoAhQiA0UEQEEADwsgACgCECIOIANBAnRqIREgA0EBa0H/////A3FBAWohEiABKAIQIQcgASgCDCEEIAEoAgghAyABKAIEIQsgASgCACEMIAAoAgQhEyAAKAIIIRACQANAIAMhCSAEIQogByEFAkACQAJAAkACQAJAAkACQAJAAkAgECAOKAIAIgBLBEAgEyAAQQV0aiIALQAAQSBrDgkBCgIDCgoKCgQKCyAAIBBBsI7wABCVBAALIAVBAyAFIAVBA08bIgBrIQYCQCAFQQJLBEAMAQsgAEEDcyEAIAohCANAIAMgC08NAQJ/IAMgDGotAAAiB0EJRwRAIAdBIEcNAyAAQQFrIQAgA0EBagwBCyABIANBAWoiBDYCDEEEIAMgCGtBA3FrIgMgAyAAIAAgA0sbIgNrIQYgACADayEAIAQhCCAECyEDIAANAAsLIAMgC08NCiADIAxqLQAAQT5HDQogASADQQFqIgA2AgggASAGIAZBAEdrIgc2AhAgBgRAIAAhAwwJCyAAIAtPBEAgACEDDAkLIAAgDGotAAAiCUEJRwRAIAlBIEYNCCAAIQMMCQsgASADQQJqIgM2AgwgASADNgIIIAEgACAEa0F/c0EDcSIHNgIQIAMhBAwICyABIAUgBSAAKAIEIgAgACAFSxsiA2siBzYCECAAIANrIgBFDQUgCSEDIAohCANAIAMgC08NCCADIAxqIgYtAAAiDUEJRwRAIA1BIEcNBCABIANBAWoiAzYCCCAAQQFrIgBFDQkMAQsgASADQQFqIgQ2AgwgASAENgIIIAFBBCADIAhrQQNxayIDIAMgACAAIANLGyIGayIHNgIQIAQiAyEIIAAgBmsiAA0ACwwHCyACDQIMBAsgASAFIAUgACgCBCIAIAAgBUsbIgNrIgc2AhAgACADayIARQ0DIAkhAyAKIQgDQCADIAtPDQYgAyAMaiIGLQAAIg1BCUcEQCANQSBHDQQgASADQQFqIgM2AgggAEEBayIARQ0HDAELIAEgA0EBaiIENgIMIAEgBDYCCCABQQQgAyAIa0EDcWsiAyADIAAgACADSxsiBmsiBzYCECAEIgMhCCAAIAZrIgANAAsMBQsgBi0AAEEKaw4EBAYGBAYLIAEgBUEEIAUgBUEETxsiAGsiBzYCECAFQQNLDQFBBCAAayEAIAohCANAIAMgC08NBAJAIAMgDGoiBi0AACINQQlHBEAgDUEgRw0BIAEgA0EBaiIDNgIIIABBAWsiAEUNBgwCCyABIANBAWoiBDYCDCABIAQ2AgggAUEEIAMgCGtBA3FrIgMgAyAAIAAgA0sbIgZrIgc2AhAgBCIDIQggACAGayIARQ0FDAELCyAGLQAAQQprDgQDBQUDBQsgBi0AAEEKaw4EAgQEAgQLIAkhAwwBCyABIANBAmoiAzYCCAsgD0EBaiEPIA5BBGoiDiARRw0ACyASDwsgASAFNgIQIAEgCjYCDCABIAk2AgggDwvjCQEJfyMAQdAAayICJAAgAAJ/AkAgASgCFCIEIAEoAhAiB0kEQCABQQxqIQMgASgCDCEIA0AgBCAIai0AACIGQQlrIglBF0tBASAJdEGTgIAEcUVyDQIgASAEQQFqIgQ2AhQgBCAHRw0ACwsgAkEFNgI4IAIgAUEMahDABCAAIAJBOGogAigCACACKAIEENUENgIEQQEMAQsCQAJAAkAgAAJ/AkACQAJAAkAgBkHbAEcEQCAGQfsARg0BIAEgAkE4akGAp8AAEHMhAwwICyABIAEtABhBAWsiBToAGCAFQf8BcQRAQQEhBSABIARBAWo2AhQgAkEBOgBMIAIgATYCSCACQThqIAJByABqEPYBIAItADgNAgJAIAItADkEQCACQRhqIAIoAkgQwwEgAigCHCEDIAIoAhhFDQEMCAtBAEHol8AAEP8DIQMMBwsgAkE4aiACQcgAahD2ASACLQA4DQICQCACLQA5BEAgAkEQaiACKAJIEMMBIAIoAhQhByACKAIQRQ0BIAchAwwIC0EBQeiXwAAQ/wMhAwwHC0EAIQUMBgsgAkEYNgI4IAJBCGogAxDABCACQThqIAIoAgggAigCDBDVBAwECyABIAEtABhBAWsiBjoAGCAGQf8BcUUNAiABIARBAWo2AhQgAkEBOgBMIAIgATYCSCACQThqIAJByABqENwBAn8CQCACLQA4RQRAQQAhBkEAIQgDQAJAAkACQAJAIAItADkEQCACKAJIIgRBADYCCCAEIAQoAhRBAWo2AhQgAkE4aiAEQQxqIAQQ2gEgAigCPCEDIAIoAjgiCkECRg0HIAIoAkAhCQJAAkACQAJAAkAgCkUEQCAJQQNrDgMBBAMECwJAAkAgCUEDaw4DAAUBBQsgA0HPisAAQQMQzARFDQIMBAsgA0HKisAAQQUQzAQNAwwICyADQc+KwABBAxDMBA0CCyAIRQ0CQc+KwABBAxCkBCEDQQEMCwsgA0HKisAAQQUQzARFDQULIAQQUCIDRQ0FDAgLIAQQwwMiAw0HIAJBMGogBBDDASACKAI0IQcgAigCMEUNASAHIQNBAQwICyAGRQ0BIAUhA0EAIAgNBxpBz4rAAEEDEKMEIQNBAQwHC0EBIQgMAgtByorAAEEFEKMEIQNBAQwFCyAGBEBByorAAEEFEKQEIQNBAQwFCyAEEMMDIgMNAyACQShqIAQQwwEgAigCLCEFIAIoAigEQCAFIQNBAQwFC0EBIQYLIAJBOGogAkHIAGoQ3AEgAi0AOEUNAAsLIAIoAjwhAwtBAQshBEEBIQYgASABLQAYQQFqOgAYIAIgARCQAyIFNgJEIAIgBzYCQCACIAM2AjwgAiAENgI4IARFBEAgBSADIAUbIQMgBUEARyEGDAILIAVFDQEgAkHEAGoQ/QMMAQsgAigCPCEDDAMLIAYNBAwDCyACQRg2AjggAkEgaiADEMAEIAJBOGogAigCICACKAIkENUECzYCBEEBDAMLIAEgAS0AGEEBajoAGCACIAEQqAIiBDYCRCACIAc2AkAgAiADNgI8IAIgBTYCOCAFRQRAIAQgAyAEGyEDIAQNAgwBCyAERQ0BIAJBxABqEP0DDAELIAAgBzYCCCAAIAM2AgRBAAwBCyAAIAMgARCJBDYCBEEBCzYCACACQdAAaiQAC6gNAwN/BH0CfiMAQYABayICJAACQAJAAkACQAJAAkAgAULnB1gEQCABpyEDAkAgAULaAFYNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOWgECAwQFBgcICQoLDA0ODxAREhMUHBwcHBwcHBwcFRwcHBwcHBwcHBYcHBwcHBwcHBwXHBwcHBwcHBwcGBwcHBwcHBwcHBkcHBwcHBwcHBwaHBwcHBwcHBwcGwALIAJBCGpBoInCAEEEELAEDCELIAJBCGpBpInCAEEDELAEDCALIAJBCGpBp4nCAEEDELAEDB8LIAJBCGpBqonCAEEFELAEDB4LIAJBCGpBr4nCAEEEELAEDB0LIAJBCGpBs4nCAEEEELAEDBwLIAJBCGpBt4nCAEEDELAEDBsLIAJBCGpBuonCAEEFELAEDBoLIAJBCGpB5/HBAEEFELAEDBkLIAJBCGpBv4nCAEEEELAEDBgLIAJBCGpBw4nCAEEDELAEDBcLIAJBCGpBxonCAEEGELAEDBYLIAJBCGpBzInCAEEGELAEDBULIAJBCGpB0onCAEEIELAEDBQLIAJBCGpB2onCAEEIELAEDBMLIAJBCGpB4onCAEEHELAEDBILIAJBCGpB6YnCAEEHELAEDBELIAJBCGpB8InCAEEJELAEDBALIAJBCGpB+YnCAEEIELAEDA8LIAJBCGpBgYrCAEEIELAEDA4LIAJBCGpBiYrCAEEGELAEDA0LIAJBCGpBj4rCAEEGELAEDAwLIAJBCGpBlYrCAEEFELAEDAsLIAJBCGpBmorCAEEFELAEDAoLIAJBCGpBn4rCAEEFELAEDAkLIAJBCGpBpIrCAEEHELAEDAgLIAJBCGpBq4rCAEEGELAEDAcLIAJBCGpBsYrCAEEGELAEDAYLAkACQCADIANB//8DcUHkAG4iA0HkAGxrQf//A3EEQEF/An8CfQJAAkAgAbUiBbwiA0GAgIAETgRAIANB////+wdLDQFBgX8hBEMAAAAAIQUgA0GAgID8A0YNAQwCC0MAAIC/IAUgBZSVIAVDAAAAAFsNAhogA0EATgRAIAVDAAAATJS8IQNB6H4hBAwCCyAFIAWTQwAAAACVIQULIAUMAQsgA0GN9qsCaiIDQRd2IARqsiIIQ4Agmj6UIANB////A3FB84nU+QNqvkMAAIC/kiIFIAUgBUMAAAA/lJQiBpO8QYBgcb4iB0MAYN4+lCAFIAeTIAaTIAUgBUMAAABAkpUiBSAGIAUgBZQiBSAFIAWUIgVD7umRPpRDqqoqP5KUIAUgBUMmnng+lEMTzsw+kpSSkpSSIgVDAGDePpQgCEPbJ1Q1lCAFIAeSQ9nqBLiUkpKSkgsiBUMAAIBPXSAFQwAAAABgIgNxBEAgBakMAQtBAAtBACADGyAFQ///f09eGyIDRQRAQgEhCQwDC0IKIQpCASEJA0AgA0EBcQRAIAkgCn4hCSADQQFGDQMLIANBAXYhAyAKIAp+IQoMAAsACyACQSBqIAOtEHAgAigCIEGAgICAeEYNBiACQfgAaiACQShqKAIANgIAIAIgAikCIDcDcCACQQI2AjwgAkHQisIANgI4IAJCATcCRCACIAJB8ABqrUKAgICAsBWENwNgIAIgAkHgAGo2AkAgAkEIaiACQThqENQDIAIoAnAiA0UNByACKAJ0IANBARCNBgwHCyAJUA0CCyACQThqIgMgASABIAmCIgl9EHAgAigCOEGAgICAeEYNAiACQdgAaiACQUBrKAIANgIAIAIgAikCODcDUCACQS1BICABQuQAVBs2AlwgAkHwAGogCRBwIAIoAnBBgICAgHhGDQMgAkHoAGogAkH4AGooAgA2AgAgAiACKQJwNwNgIAJBAzYCJCACQZCLwgA2AiAgAkIDNwIsIAIgAkHgAGqtQoCAgICwFYQ3A0ggAiACQdwAaq1CgICAgMAVhDcDQCACIAJB0ABqrUKAgICAsBWENwM4IAIgAzYCKCACQRRqIAJBIGoQ1AMgAigCYCIDBEAgAigCZCADQQEQjQYLIAIoAlAiAwRAIAIoAlQgA0EBEI0GCyACQRBqIAJBHGooAgA2AgAgAiACKQIUNwMIDAULIABBgICAgHg2AgAMBQtB4IrCABCVBQALQfCKwgAQlgYAC0GAi8IAEJYGAAtBuIrCABCWBgALIAAgAikDCDcCACAAQQhqIAJBEGooAgA2AgALIAJBgAFqJAALqQgCCH8BfiMAQdAAayICJABBlI72AEGUjvYAKAIAIgFBAWs2AgACQAJAAkAgAUEBRw0AIAAtAAxBAUcNAEEAIQEgACgCAEEBayIEQRZ2Qf8BcSIDIAAoAggiACgCBEkEQCAAKAIAIANBAnRqKAIAIQELAkBByI72ACgCAA0AQciO9gApAgAhCUHIjvYAQgE3AgAgAkE4akHQjvYAKAIANgIAIAIgCTcDMCAJp0UNACACQTBqQQRyEIUDCwJ/QcyO9gAoAgBFBEAQyQEMAQtB0I72ACgCAAsgA0cEQCABRQ0BQSAgBEH///8BcSIAQSBqQQZ2Z2siAyABQQxqKAIATw0BIAFBCGooAgAgA0EUbGoiBSgCACIBRQ0BIAAgBSgCEGsiByAFKAIETw0BIARBHnYhBiABIAdBOGxqIgMoAjAhAQNAIAEiAEEediAGRw0CAkAgAUEDcSIBBEAgAUECaw4CBgQBCyADIABBfHFBAXIgAygCMCIBIAAgAUYbNgIwIAAgAUcNAQsLIABB/P///wNxDQEgAygCMCIAQR52IAZHDQEgBEEfdUEBcyAGakEedCEIQQAhBANAIAMgAEH/////A3EgCHIgAygCMCIBIAAgAUYbNgIwAkAgACABRwRAIAEhAAwBC0EBIQQgAUH8////A3ENACADEJ8BIAUoAgghAANAIAMgADYCNCAFIAcgBSgCCCIBIAAgAUYiBBs2AgggASEAIARFDQALDAMLIAQgAEEediAGRnINAAsMAQsgAUUNAEEgIARB////AXEiBUEgakEGdmdrIgAgASgCDE8NACAAIAEoAgQiA08NASABKAIIIABBFGxqIgMoAgAiCEUNACAFIAMoAhBrIgYgAygCBE8NACAEQR52IQUgASgCACAAQQJ0aiEHIAggBkE4bGoiAygCMCEBA0AgASIAQR52IAVHDQECQCABQQNxIgEEQCABQQJrDgIFAwELIAMgAEF8cUEBciADKAIwIgEgACABRhs2AjAgACABRw0BCwsgAEH8////A3ENACADKAIwIgBBHnYgBUcNACAEQR91QQFzIAVqQR50IQhBACEEA0AgAyAAQf////8DcSAIciADKAIwIgEgACABRhs2AjACQCAAIAFHBEAgASEADAELQQEhBCABQfz///8DcQ0AIAMQnwEgAyAHKAIANgI0IAcgBjYCAAwCCyAEIABBHnYgBUZyDQALCyACQdAAaiQADwsgACADQZj2wAAQlQQACyACQQI2AgwgAiACQQxqrUKAgICAsAeENwMoIAJBATYCJCACQQE2AhQgAkHA+sAANgIQIAJBATYCHCACQQM6AEwgAkEENgJIIAJCIDcCQCACQQI2AjggAkECNgIwIAIgAkEwajYCICACIAJBKGo2AhggAkEQakGw+8AAEK4FAAvaCQEDfyMAQSBrIgQkAEH5jfYALQAAGkGAAUEBEPwFIgIEQCAEIAI2AgwgBEGAATYCCCAEIARBCGo2AhQgAkH7ADoAACAEQQE2AhAgBEEBOgAcIAQgBEEUajYCGAJAAkAgBEEYaiIDQf+KwABBDyABLQAAEPMBIgINACADQY6LwABBBCABLQABEPMBIgINACADQZKLwABBFyABLQACEPMBIgINACADQamLwABBDyABLQADEPMBIgINACADQbiLwABBDCABLQAEEPMBIgINACADQcSLwABBDiABLQAFEPMBIgINACADQdKLwABBDiABLQAGEPMBIgINACADQeCLwABBBiABLQAHEPMBIgINACADQeaLwABBByABLQAIEPMBIgINACADQe2LwABBFSABLQAJEPMBIgINACADQYKMwABBHCABLQAKEPMBIgINACADQZ6MwABBHCABLQALEPMBIgINACADQbqMwABBDSABLQAMEPMBIgINACADQceMwABBDCABLQANEPMBIgINACADQdOMwABBGCABLQAOEPMBIgINACADQeuMwABBDyABLQAPEPMBIgINACADQfqMwABBDyABLQAQEPMBIgINACADQYmNwABBDCABLQAREPMBIgINACADQZWNwABBDCABLQASEPMBIgINACADQaGNwABBCiABLQATEPMBIgINACADQauNwABBHCABLQAUEPMBIgINACADQceNwABBCCABLQAVEPMBIgINACADQc+NwABBBiABLQAWEPMBIgINACADQdWNwABBFyABLQAXEPMBIgINACADQeyNwABBFCABLQAYEPMBIgINACADQYCOwABBCCABLQAZEPMBIgINACADQYiOwABBDCABLQAaEPMBIgINACADQZSOwABBDCABLQAbEPMBIgINACADQaCOwABBCiABLQAcEPMBIgINACADQaqOwABBDyABLQAdEPMBIgINACADQbmOwABBCyABLQAeEPMBIgINACADQcSOwABBCyABLQAfEPMBIgINACADQc+OwABBCyABLQAgEPMBIgINACADQdqOwABBECABLQAhEPMBIgINACADQeqOwABBDCABLQAiEPMBIgINACADQfaOwABBEyABLQAjEPMBIgINACADQYmPwABBEiABLQAkEPMBIgINACADQZuPwABBEiABLQAlEPMBIgINACADQa2PwABBDiABLQAmEPMBIgINACADQbuPwABBCiABLQAnEPMBIgINACADQcWPwABBCCABLQAoEPMBIgINACADQc2PwABBCCABLQApEPMBIgINACADQdWPwABBCiABLQAqEPMBIgINACADQd+PwABBCSABLQArEPMBIgINACADQeiPwABBCSABLQAsEPMBIgINACADQfGPwABBDyABLQAtEPMBIgINACADQYCQwABBCyABLQAuEPMBIgINACADQYuQwABBCSABLQAvEPMBIgINACADQZSQwABBCyABLQAwEPMBIgINACAEKAIYKAIAIAQtABwQzQQiAg0AIAAgBCkCCDcCACAAQQhqIARBEGooAgA2AgAMAQsgAEGAgICAeDYCACAAIAI2AgQgBCgCCCIARQ0AIAQoAgwgAEEBEI0GCyAEQSBqJAAPC0EBQYABQfCGwAAQ5QUAC6UJAQh/IwBBgAFrIgMkAAJ/AkACQAJAAkAgACgCFCIEIAAoAhAiBkkEQCAAQQxqIQoCQAJAAkACQCAAKAIMIgcgBGotAAAiBUEiaw4MAgMDAwMDAwMDAwMBAAsCQAJAAkACQAJAAkACQAJAIAVB2wBrDiEDCgoKCgoKCgoKCgIKCgoKCgoKAAoKCgoKAQoKCgoKCgQKCyAAIARB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QCAGIAAiA2oiFC0AAEGAAUcNACAQIABBaGwiAGohAiAAIA9qIRUCQANAIAUgFSkDAKciEnEiCyEEIAYgC2opAABCgIGChIiQoMCAf4MiIVAEQEEIIQADQCAAIARqIQQgAEEIaiEAIAYgBCAFcSIEaikAAEKAgYKEiJCgwIB/gyIhUA0ACwsgBiAheqdBA3YgBGogBXEiAGosAABBAE4EQCAGKQMAQoCBgoSIkKDAgH+DeqdBA3YhAAsgACALayADIAtrcyAFcUEISQ0BIAAgBmoiBC0AACAEIBJBGXYiBDoAACANIABBCGsgBXFqIAQ6AAAgECAAQWhsaiEAQf8BRwRAIAItAAAhBCACIAAtAAA6AAAgACAEOgAAIAItAAEhBCACIAAtAAE6AAEgACAEOgABIAItAAIhBCACIAAtAAI6AAIgACAEOgACIAItAAMhBCACIAAtAAM6AAMgACAEOgADIAItAAQhBCACIAAtAAQ6AAQgACAEOgAEIAItAAUhBCACIAAtAAU6AAUgACAEOgAFIAItAAYhBCACIAAtAAY6AAYgACAEOgAGIAItAAchBCACIAAtAAc6AAcgACAEOgAHIAItAAghBCACIAAtAAg6AAggACAEOgAIIAItAAkhBCACIAAtAAk6AAkgACAEOgAJIAItAAohBCACIAAtAAo6AAogACAEOgAKIAItAAshBCACIAAtAAs6AAsgACAEOgALIAItAAwhBCACIAAtAAw6AAwgACAEOgAMIAItAA0hBCACIAAtAA06AA0gACAEOgANIAItAA4hBCACIAAtAA46AA4gACAEOgAOIAItAA8hBCACIAAtAA86AA8gACAEOgAPIAItABAhBCACIAAtABA6ABAgACAEOgAQIAItABEhBCACIAAtABE6ABEgACAEOgARIAItABIhBCACIAAtABI6ABIgACAEOgASIAItABMhBCACIAAtABM6ABMgACAEOgATIAItABQhBCACIAAtABQ6ABQgACAEOgAUIAItABUhBCACIAAtABU6ABUgACAEOgAVIAItABYhBCACIAAtABY6ABYgACAEOgAWIAItABchBCACIAAtABc6ABcgACAEOgAXDAELCyAUQf8BOgAAIA0gA0EIayAFcWpB/wE6AAAgAEEQaiACQRBqKQAANwAAIABBCGogAkEIaikAADcAACAAIAIp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QQd1cWprNgIcIAAgAjYCGCAAIA5BAXE6ACcMBAsgCSAHQazT7AAQlQQAC0GIvusAQSxBtL7rABDvBAALIAUgCUHEvusAEJMGAAsgBCAHQdzT7AAQkgYACyAAIAo6ACYgACAGNgIgIAAgEDcDCAv0BgAgAC0AAEECRgRAIABBADoAAAsgAC0AAUECRgRAIABBAToAAQsgAC0AAkECRgRAIABBAToAAgsgAC0AA0ECRgRAIABBAToAAwsgAC0ABEECRgRAIABBADoABAsgAC0ABUECRgRAIABBAToABQsgAC0ABkECRgRAIABBAToABgsgAC0AB0ECRgRAIABBAToABwsgAC0ACEECRgRAIABBAToACAsgAC0ACUECRgRAIABBAToACQsgAC0ACkECRgRAIABBAToACgsgAC0AC0ECRgRAIABBAToACwsgAC0ADEECRgRAIABBADoADAsgAC0ADUECRgRAIABBAToADQsgAC0ADkECRgRAIABBAToADgsgAC0AD0ECRgRAIABBAToADwsgAC0AEEECRgRAIABBAToAEAsgAC0AEUECRgRAIABBADoAEQsgAC0AEkECRgRAIABBADoAEgsgAC0AE0ECRgRAIABBAToAEwsgAC0AFEECRgRAIABBAToAFAsgAC0AFUECRgRAIABBAToAFQsgAC0AFkECRgRAIABBAToAFgsgAC0AF0ECRgRAIABBAToAFwsgAC0AGEECRgRAIABBAToAGAsgAC0AGUECRgRAIABBAToAGQsgAC0AGkECRgRAIABBAToAGgsgAC0AG0ECRgRAIABBAToAGwsgAC0AHEECRgRAIABBAToAHAsgAC0AHUECRgRAIABBAToAHQsgAC0AHkECRgRAIABBAToAHgsgAC0AH0ECRgRAIABBAToAHwsgAC0AIEECRgRAIABBAToAIAsgAC0AIUECRgRAIABBADoAIQsgAC0AIkECRgRAIABBAToAIgsgAC0AI0ECRgRAIABBAToAIwsgAC0AJEECRgRAIABBAToAJAsgAC0AJUECRgRAIABBAToAJQsgAC0AJkECRgRAIABBAToAJgsgAC0AJ0ECRgRAIABBAToAJwsgAC0AKEECRgRAIABBAToAKAsgAC0AKUECRgRAIABBAToAKQsgAC0AKkECRgRAIABBAToAKgsgAC0AK0ECRgRAIABBAToAKwsgAC0ALEECRgRAIABBAToALAsgAC0ALUECRgRAIABBAToALQsgAC0ALkECRgRAIABBAToALgsgAC0AL0ECRgRAIABBAToALwsgAC0AMEECRgRAIABBAToAMAsLohADB38BfgF8IwBB8ABrIgQkACAEQRhqIAFBEGopAwA3AwAgBEEQaiABQQhqKQMANwMAIARBKGogAkEIaikDADcDACAEQTBqIAJBEGopAwA3AwAgBCABKQMAIgs3AwggBCACKQMANwMgAkACQAJ/AkACQCALpyIBQf8BcUEBRwRAIAQtACBBAUYNAQwECyAEIAQpAgwiCzcDOCALp0EhRw0DIARBOGpBBHIhCgwBCyAEIAQpAiQiCzcDOCALp0EhRw0CIARBOGpBBHIhCiAEQQhqIAFB/wFxQQJGDQEaCyAELQAgQQJHDQEgBEEgagsiASsACCEMIAEtAAEhASAEIAQoAjQiAiAEKAIwIgUgAiAFSxsiBiAEKAIcIgcgBCgCGCIIIAcgCEsbIgkgBiAJSxsiBjYCRCAEIAIgBSACIAVJGyICIAcgCCAHIAhJGyIFIAIgBUkbIgU2AkACQAJAAkAgBSAGTQRAIARByABqIQcjAEHgAGsiAiQAIAIgDDkDCAJAAkACQAJAAkACQAJAAkACQAJAAkAgCi0AACIIQQFrDgkBAgMEBQYHCAkACyACQSQ2AhQMCQsgAkGiATYCFAwICyACQazBADYCFAwHCyACQb3BADYCFAwGCyACQbrBADYCFAwFCyACQaMBNgIUDAQLIAJBpQE2AhQMAwsgAkG/HDYCFAwCCyACQanBADYCFAwBCyACQa3BADYCFAsgAkEANgIwIAJCgICAgBA3AiggAkEDOgBYIAJBIDYCSCACQQA2AlQgAkG41MEANgJQIAJBADYCQCACQQA2AjggAiACQShqNgJMAkAgAkEIaiACQThqEPoERQRAIAJBIGogAkEwaigCADYCACACIAIpAig3AxggAUH/AXFBBEcEQEH5jfYALQAAGiABQQJ0QfwHcSIBQczV6QBqKAIAIQogAUG81ekAaigCACEBIAIoAhggAigCICIJa0EBTQRAIAJBGGogCUECQQFBARDqAgsgAkEYaiIJIAEQwwIgCSAKEMMCCwJAAkACQAJAAkACQAJAAkACQAJAAkAgCEEBaw4JAQIDBAUG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ACECIAgoAgAhAwJAA0AgBEEBayIERQ0BIAIoAgAhDSADKAIAIQ4gA0EEaiEDIAJBBGohAiANIA5GDQALIA0gDkshDAsgASAGIAsgBxsiAikCADcCACABQRBqIAJBEGopAgA3AgAgAUEIaiACQQhqKQIANwIAIAFBKGogCCAKIAwbIgJBEGopAgA3AgAgAUEgaiACQQhqKQIANwIAIAEgAikCADcCGCABQUBrIAogCCAMGyICQRBqKQIANwIAIAFBOGogAkEIaikCADcCACABIAIpAgA3AjAgASAAIAkgBRsiACkCADcCSCABQdAAaiAAQQhqKQIANwIAIAFB2ABqIABBEGopAgA3AgAL+zMCIn8GfiMAQfAIayIKJAAgAb0hJgJ/QQMgAZlEAAAAAAAA8H9hDQAaQQIgJkKAgICAgICA+P8AgyInQoCAgICAgID4/wBRDQAaICZC/////////weDIipCgICAgICAgAiEICZCAYZC/v///////w+DICZCNIinQf8PcSIFGyIoQgGDISkgJ1AEQEEEICpQDQEaIAVBswhrIQZCASEnIClQDAELQoCAgICAgIAgIChCAYYgKEKAgICAgICACFEiBhshKEICQgEgBhshJ0HLd0HMdyAGGyAFaiEGIClQCyEFIAogBjsB6AggCiAnNwPgCCAKQgE3A9gIIAogKDcD0AggCiAFOgDqCAJAAn8CQAJAAkACQCAFQQJrIg0EQEEBIQVB4qbzAEHjpvMAICZCAFMiBxtB4qbzAEEBIAcbIAIbIRtBASAmQj+IpyACGyECQQMgDSANQQNPG0ECaw4CAgMBCyAKQQM2ApgIIApB5KbzADYClAggCkECOwGQCEEBIRtBACECQQEhBSAKQZAIagwECyAKQQM2ApgIIApB56bzADYClAggCkECOwGQCCAKQZAIagwDC0ECIQUgCkECOwGQCCADRQ0BIAogAzYCoAggCkEAOwGcCCAKQQI2ApgIIApBuabzADYClAggCkGQCGoMAgtBdEEFIAbBIgVBAEgbIAVsIgVBwP0ASQRAIApBkAhqIRAgCkEQaiERIAVBBHZBFWohDUGAgH5BACADayADQYCAAk8bIRICQAJAAn8CQAJAAkACQCAKQdAIaiIFKQMAIiZQRQRAICZCgICAgICAgIAgWg0BIA1FDQJBoH8gBS8BGCIGQSBrIAYgJkKAgICAEFQiBhsiB0EQayAHICZCIIYgJiAGGyImQoCAgICAgMAAVCIGGyIHQQhrIAcgJkIQhiAmIAYbIiZCgICAgICAgIABVCIGGyIHQQRrIAcgJkIIhiAmIAYbIiZCgICAgICAgIAQVCIGGyIHQQJrIAcgJkIEhiAmIAYbIiZCgICAgICAgIDAAFQiBhsgJkIChiAmIAYbIiZCAFlrIghrwUHQAGxBsKcFakHOEG0iBkHRAE8NAyAGQQR0IgdBkJfzAGopAwAiJ0L/////D4MiKCAmICZCf4VCP4iGIiZCIIgiKX4iKkIgiCAnQiCIIicgKX58ICcgJkL/////D4MiJn4iJ0IgiHwgKkL/////D4MgJiAofkIgiHwgJ0L/////D4N8QoCAgIAIfEIgiHwiKEFAIAggB0GYl/MAai8BAGprIgRBP3GtIiaIpyEGIAdBmpfzAGovAQAhByAoQgEgJoYiKUIBfSIqgyInUARAIA1BCksNByANQQJ0QZyk8wBqKAIAIAZLDQcLIAZBkM4ATwRAIAZBwIQ9SQ0FIAZBgMLXL08EQEEIQQkgBkGAlOvcA0kiCBshC0GAwtcvQYCU69wDIAgbDAcLQQZBByAGQYCt4gRJIggbIQtBwIQ9QYCt4gQgCBsMBgsgBkHkAE8EQEECQQMgBkHoB0kiCBshC0HkAEHoByAIGwwGC0EKQQEgBkEJSyILGwwFC0HjkvMAQRxBzKPzABDvBAALQdyj8wBBJEGApPMAEO8EAAtBqKPzAEEhQZCk8wAQ7wQACyAGQdEAQcih8wAQlQQAC0EEQQUgBkGgjQZJIggbIQtBkM4AQaCNBiAIGwshCAJAAkACQAJAIAsgB2tBAWrBIhUgEsEiB0oEQCAEQf//A3EhDCAVIBJrwSANIBUgB2sgDUkbIgRBAWshDkEAIQcDQCAGIAhuIQkgByANRg0DIAYgCCAJbGshBiAHIBFqIAlBMGo6AAAgByAORg0EIAcgC0YNAiAHQQFqIQcgCEEKSSAIQQpuIQhFDQALQcik8wAQlQUACyAQIBEgDUEAIBUgEiAoQgqAIAitICaGICkQlwIMBQsgB0EBaiEHIAxBAWtBP3GtIStCASEoA0AgKCAriFBFBEAgEEEANgIADAYLIAcgDU8NAyAHIBFqICdCCn4iJyAmiKdBMGo6AAAgKEIKfiEoICcgKoMhJyAEIAdBAWoiB0cNAAsgECARIA0gBCAVIBIgJyApICgQlwIMBAsgDSANQdik8wAQlQQACyAQIBEgDSAEIBUgEiAGrSAmhiAnfCAIrSAmhiApEJcCDAILIAcgDUHopPMAEJUEAAsgEEEANgIACyASwSEVAkAgCigCkAhFBEAgCkHACGohGEEAIQwjAEHABmsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQCAFKQMAIiZQRQRAIAUpAwgiJ1ANASAFKQMQIihQDQIgJiAofCAmVA0DICYgJ1QNBCAFLgEYIQUgCSAmPgIMIAlBAUECICZCgICAgBBUIgYbNgKsASAJQQAgJkIgiKcgBhs2AhAgCUEUakEAQZgBEIMCGiAJQbQBakEAQZwBEIMCGiAJQQE2ArABIAlBATYC0AIgBawgJkIBfXl9QsKawegEfkKAoc2gtAJ8QiCIpyIGwSEUAkAgBUEATgRAIAlBDGogBRDpARoMAQsgCUGwAWpBACAFa8EQ6QEaCwJAIBRBAEgEQCAJQQxqQQAgFGtB//8DcRBsDAELIAlBsAFqIAZB//8BcRBsCyAJKALQAiEOIAlBnAVqIAlBsAFqQaABEKwBGiAJIA42ArwGIA0iC0EKTwRAIAlBlAVqIQYDQCAJKAK8BiIEQSlPDQoCQCAERQ0AIARBAnQhBQJ/IARB/////wNqIgdB/////wNxIghFBEBCACEmIAlBnAVqIAVqDAELIAUgBmohBCAIQQFqQf7///8HcSEIQgAhJgNAIARBBGoiBSAFNQIAICZCIIaEIiZCgJTr3AOAIic+AgAgBCAENQIAICYgJ0KAlOvcA359QiCGhCImQoCU69wDgCInPgIAICYgJ0KAlOvcA359ISYgBEEIayEEIAhBAmsiCA0ACyAEQQhqCyAHQQFxDQBBBGsiBSAFNQIAICZCIIaEQoCU69wDgD4CAAsgC0EJayILQQlLDQALCyALQQJ0QaCk8wBqKAIAQQF0IgZFDQUgCSgCvAYiBEEpTw0IIAQEfyAEQQJ0IQUgBq0hJgJ/IARB/////wNqIgZB/////wNxIgdFBEBCACEnIAlBnAVqIAVqDAELIAdBAWpB/v///wdxIQggBSAJakGUBWohBEIAIScDQCAEQQRqIgUgBTUCACAnQiCGhCInICaAIig+AgAgBCAENQIAICcgJiAofn1CIIaEIicgJoAiKD4CACAnICYgKH59IScgBEEIayEEIAhBAmsiCA0ACyAEQQhqCyEFIAZBAXFFBEAgBUEEayIFIAU1AgAgJ0IghoQgJoA+AgALIAkoArwGBUEACyIGIAkoAqwBIgUgBSAGSRsiBkEoSw0RIAZFBEBBACEGDAgLIAZBAXEhECAGQQFGBEBBACELDAcLIAZBPnEhEkEAIQsgCUGcBWohBCAJQQxqIQgDQCAEIAQoAgAiDyAIKAIAaiIHIAtBAXFqIhM2AgAgBEEEaiILIAsoAgAiGiAIQQRqKAIAaiILIAcgD0kgByATS3JqIgc2AgAgCyAaSSAHIAtJciELIAhBCGohCCAEQQhqIQQgEiAMQQJqIgxHDQALDAYLQeOS8wBBHEHslfMAEO8EAAtBkJPzAEEdQfyV8wAQ7wQAC0HAk/MAQRxBjJbzABDvBAALQaSV8wBBNkH8lvMAEO8EAAtB3JTzAEE3QeyW8wAQ7wQAC0H/wvMAQRtBuMLzABDvBAALIBAEfyAMQQJ0IgcgCUGcBWpqIgggCyAIKAIAIgggCUEMaiAHaigCAGoiB2oiCzYCACAHIAhJIAcgC0tyBSALC0EBcUUNACAGQShGDQIgCUGcBWogBkECdGpBATYCACAGQQFqIQYLIAkgBjYCvAYgBiAOIAYgDksbIgRBKU8NACAEQQJ0IQQCQANAIAQEQEF/IARBBGsiBCAJQbABamooAgAiBiAEIAlBnAVqaigCACIHRyAGIAdLGyIIRQ0BDAILC0F/QQAgBBshCAsCQAJAIAhBAk8EQCAFRQRAQQAhBSAJQQA2AqwBDAMLIAVBAWtB/////wNxIgZBAWoiB0EDcSEIIAZBA0kEQCAJQQxqIQRCACEmDAILIAdB/P///wdxIQYgCUEMaiEEQgAhJgNAIAQgBDUCAEIKfiAmfCImPgIAIARBBGoiByAHNQIAQgp+ICZCIIh8IiY+AgAgBEEIaiIHIAc1AgBCCn4gJkIgiHwiJj4CACAEQQxqIgcgBzUCAEIKfiAmQiCIfCInPgIAICdCIIghJiAEQRBqIQQgBkEEayIGDQALDAELIBRBAWohFAwBCyAIBEADQCAEIAQ1AgBCCn4gJnwiJz4CACAEQQRqIQQgJ0IgiCEmIAhBAWsiCA0ACwsgJ0KAgICAEFoEQCAFQShGDQMgCUEMaiAFQQJ0aiAmPgIAIAVBAWohBQsgCSAFNgKsAQtBASEPAkACQAJAIBTBIgYgFcEiB0giHkUEQCAUIBVrwSANIAYgB2sgDUkbIgsNAQtBACELDAELIAlB1AJqIgYgCUGwAWoiBUGgARCsARogCSAONgL0AyAGQQEQ6QEhHyAJKALQAiEGIAlB+ANqIgcgBUGgARCsARogCSAGNgKYBSAHQQIQ6QEhICAJKALQAiEGIAlBnAVqIgcgBUGgARCsARogCSAGNgK8BiAJQawBaiEhIAlB0AJqISIgCUH0A2ohIyAJQZgFaiEkIAdBAxDpASElIAkoAqwBIQUgCSgC0AIhDiAJKAL0AyEaIAkoApgFIRwgCSgCvAYhHUEAIRICQANAIBIhEAJAAkACQAJAIAVBKUkEQCAQQQFqIRIgBUECdCEGQQAhBAJAAkACQANAIAQgBkYNASAJQQxqIARqIARBBGohBCgCAEUNAAsgBSAdIAUgHUsbIgZBKU8NFSAGQQJ0IQQCQANAIAQEQEF/IAQgJGooAgAiByAEQQRrIgQgCUEMamooAgAiCEcgByAISxsiCEUNAQwCCwtBf0EAIAQbIQgLQQAhEyAIQQJJBEBBASEMQQAhDyAGQQFHBEAgBkE+cSETIAlBDGohBCAJQZwFaiEIA0AgBCAEKAIAIhYgCCgCAEF/c2oiBSAMQQFxaiIMNgIAIARBBGoiByAHKAIAIhcgCEEEaigCAEF/c2oiByAFIBZJIAUgDEtyaiIFNgIAIAcgF0kgBSAHSXIhDCAIQQhqIQggBEEIaiEEIBMgD0ECaiIPRw0ACwsgBkEBcQR/IA9BAnQiBSAJQQxqaiIHIAcoAgAiByAFICVqKAIAQX9zaiIFIAxqIgg2AgAgBSAHSSAFIAhLcgUgDAtBAXFFDRAgCSAGNgKsAUEIIRMgBiEFCyAFIBwgBSAcSxsiB0EpTw0FIAdBAnQhBANAIARFDQJBfyAEICNqKAIAIgYgBEEEayIEIAlBDGpqKAIAIghHIAYgCEsbIghFDQALDAILIAsgDUsNAyALIBBHBEAgECARakEwIAsgEGsQgwIaCyAYIBQ7AQggGCALNgIEDAoLQX9BACAEGyEICwJAIAhBAUsEQCAFIQcMAQsgBwRAQQEhDEEAIQ8gB0EBRwRAIAdBPnEhFiAJQQxqIQQgCUH4A2ohCANAIAQgBCgCACIXIAgoAgBBf3NqIgUgDEEBcWoiDDYCACAEQQRqIgYgBigCACIZIAhBBGooAgBBf3NqIgYgBSAXSSAFIAxLcmoiBTYCACAGIBlJIAUgBklyIQwgCEEIaiEIIARBCGohBCAWIA9BAmoiD0cNAAsLIAdBAXEEfyAPQQJ0IgUgCUEMamoiBiAGKAIAIgYgBSAgaigCAEF/c2oiBSAMaiIINgIAIAUgBkkgBSAIS3IFIAwLQQFxRQ0OCyAJIAc2AqwBIBNBBHIhEwsgByAaIAcgGksbIgZBKU8NEiAGQQJ0IQQCQANAIAQEQEF/IAQgImooAgAiBSAEQQRrIgQgCUEMamooAgAiCEcgBSAISxsiCEUNAQwCCwtBf0EAIAQbIQgLAkAgCEEBSwRAIAchBgwBCyAGBEBBASEMQQAhDyAGQQFHBEAgBkE+cSEWIAlBDGohBCAJQdQCaiEIA0AgBCAEKAIAIhcgCCgCAEF/c2oiBSAMQQFxaiIMNgIAIARBBGoiByAHKAIAIhkgCEEEaigCAEF/c2oiByAFIBdJIAUgDEtyaiIFNgIAIAcgGUkgBSAHSXIhDCAIQQhqIQggBEEIaiEEIBYgD0ECaiIPRw0ACwsgBkEBcQR/IA9BAnQiBSAJQQxqaiIHIAcoAgAiByAFIB9qKAIAQX9zaiIFIAxqIgg2AgAgBSAHSSAFIAhLcgUgDAtBAXFFDQ4LIAkgBjYCrAEgE0ECaiETCyAGIA4gBiAOSxsiBUEpTw0LIAVBAnQhBAJAA0AgBARAQX8gBCAhaigCACIHIARBBGsiBCAJQQxqaigCACIIRyAHIAhLGyIIRQ0BDAILC0F/QQAgBBshCAsCQCAIQQFLBEAgBiEFDAELIAUEQEEBIQxBACEPIAVBAUcEQCAFQT5xIRYgCUEMaiEEIAlBsAFqIQgDQCAEIAQoAgAiFyAIKAIAQX9zaiIGIAxBAXFqIgw2AgAgBEEEaiIHIAcoAgAiGSAIQQRqKAIAQX9zaiIHIAYgF0kgBiAMS3JqIgY2AgAgByAZSSAGIAdJciEMIAhBCGohCCAEQQhqIQQgFiAPQQJqIg9HDQALCyAFQQFxBH8gD0ECdCIGIAlBDGpqIgcgBygCACIHIAlBsAFqIAZqKAIAQX9zaiIGIAxqIgg2AgAgBiAHSSAGIAhLcgUgDAtBAXFFDQ4LIAkgBTYCrAEgE0EBaiETCyANIBBHBEAgECARaiATQTBqOgAAIAVBKU8NDCAFRQRAQQAhBQwGCyAFQQFrQf////8DcSIGQQFqIgdBA3EhCCAGQQNJBEAgCUEMaiEEQgAhJgwFCyAHQfz///8HcSEGIAlBDGohBEIAISYDQCAEIAQ1AgBCCn4gJnwiJj4CACAEQQRqIgcgBzUCAEIKfiAmQiCIfCImPgIAIARBCGoiByAHNQIAQgp+ICZCIIh8IiY+AgAgBEEMaiIHIAc1AgBCCn4gJkIgiHwiJz4CACAnQiCIISYgBEEQaiEEIAZBBGsiBg0ACwwECyANIA1BzJbzABCVBAALDAoLIAsgDUHclvMAEJMGAAsgB0EoQbjC8wAQkwYACyAIBEADQCAEIAQ1AgBCCn4gJnwiJz4CACAEQQRqIQQgJ0IgiCEmIAhBAWsiCA0ACwsgJ0KAgICAEFQNACAFQShGDQIgCUEMaiAFQQJ0aiAmPgIAIAVBAWohBQsgCSAFNgKsASALIBJHDQALQQAhDwwBCwwDCwJAAn8CQAJAIA5BKUkEQCAORQRAQQAhDgwDCyAOQQFrQf////8DcSIGQQFqIgdBA3EhCCAGQQNJBEAgCUGwAWohBEIAISYMAgsgB0H8////B3EhBiAJQbABaiEEQgAhJgNAIAQgBDUCAEIFfiAmfCImPgIAIARBBGoiByAHNQIAQgV+ICZCIIh8IiY+AgAgBEEIaiIHIAc1AgBCBX4gJkIgiHwiJj4CACAEQQxqIgcgBzUCAEIFfiAmQiCIfCInPgIAICdCIIghJiAEQRBqIQQgBkEEayIGDQALDAELIA5BKEG4wvMAEJMGAAsgCARAA0AgBCAENQIAQgV+ICZ8Iic+AgAgBEEEaiEEICdCIIghJiAIQQFrIggNAAsLICdCgICAgBBUDQAgDkEoRg0FIAlBsAFqIA5BAnRqICY+AgAgDkEBaiEOCyAJIA42AtACIAUgDiAFIA5LGyIEQSlPDQMgBEECdCEEAkADQCAEBEBBfyAEQQRrIgQgCUGwAWpqKAIAIgUgBCAJQQxqaigCACIGRyAFIAZLGyIIRQ0BDAILC0F/QQAgBBshCAsCQAJAAkAgCEH/AXEOAgABAgtBACAPDQIaIA0gC0EBayIFSwRAIAUgEWotAABBAXENAQwCCyAFIA1BnJbzABCVBAALIAsgDU0EQCALIBFqQQAhBCARIQgCQANAIAQgC0YNASAEQQFqIQQgCEEBayIIIAtqIgUtAABBOUYNAAsgBSAFLQAAQQFqOgAAIAsgBGtBAWogC08NAiAFQQFqQTAgBEEBaxCDAhoMAgsCf0ExIA8NABogEUExOgAAQTAgC0EBRg0AGiARQQFqQTAgC0EBaxCDAhpBMAsgFEEBaiEUIB4gCyANT3INAToAACALQQFqIQsMAQsgCyANQayW8wAQkwYACyALIA1LDQEgCwshBSAYIBQ7AQggGCAFNgIEDAELIAsgDUG8lvMAEJMGAAsgGCARNgIAIAlBwAZqJAAMBQsgBEEoQbjC8wAQkwYAC0EoQShBuMLzABCVBAALIAVBKEG4wvMAEJMGAAtByMLzAEEaQbjC8wAQ7wQACyAKQcgIaiAKQZgIaigCADYCACAKIAopApAINwPACAsgFSAKLgHICCIFSARAIApBCGogCigCwAggCigCxAggBSADIApBkAhqELICIAooAgwhBSAKKAIIDAMLQQIhBSAKQQI7AZAIIANFBEBBASEFIApBATYCmAggCkHqpvMANgKUCCAKQZAIagwDCyAKIAM2AqAIIApBADsBnAggCkECNgKYCCAKQbmm8wA2ApQIIApBkAhqDAILQfGm8wBBJUGYp/MAEO8EAAtBASEFIApBATYCmAggCkHqpvMANgKUCCAKQZAIagshAyAKIAU2AswIIAogAzYCyAggCiACNgLECCAKIBs2AsAIIAAgCkHACGoQ1gEgCkHwCGokAA8LIAZBKEG4wvMAEJMGAAuWBgEDfyMAQSBrIgQkACACKAIIIgMgAigCAEYEQCACIANBAUEBQQEQ5wIgAigCCCEDCyACIANBAWoiBTYCCCACKAIEIANqQdsAOgAAAn8gAUUEQCAFIAIoAgBGBEAgAiAFQQFBAUEBEOcCIAIoAgghBQsgAiAFQQFqNgIIIAIoAgQgBWpB3QA6AABBAAwBCyAAKAIAIQMgBEEANgIMIARBEGogAiAEQQxqAn8gA0GAAU8EQCADQYAQTwRAIANBgIAETwRAIAQgA0E/cUGAAXI6AA8gBCADQRJ2QfABcjoADCAEIANBBnZBP3FBgAFyOgAOIAQgA0EMdkE/cUGAAXI6AA1BBAwDCyAEIANBP3FBgAFyOgAOIAQgA0EMdkHgAXI6AAwgBCADQQZ2QT9xQYABcjoADUEDDAILIAQgA0E/cUGAAXI6AA0gBCADQQZ2QcABcjoADEECDAELIAQgAzoADEEBCxCUAQJAIAQtABBBBEcNACABQQFHBEAgAEEEaiEFIAFBAnRBBGshAANAIAUoAgAhAyACKAIIIgEgAigCAEYEQCACIAFBAUEBQQEQ5wIgAigCCCEBCyACIAFBAWo2AgggAigCBCABakEsOgAAIARBADYCDCAEQRBqIAIgBEEMagJ/IANBgAFPBEAgA0GAEE8EQCADQYCABE8EQCAEIANBP3FBgAFyOgAPIAQgA0ESdkHwAXI6AAwgBCADQQZ2QT9xQYABcjoADiAEIANBDHZBP3FBgAFyOgANQQQMAwsgBCADQT9xQYABcjoADiAEIANBDHZB4AFyOgAMIAQgA0EGdkE/cUGAAXI6AA1BAwwCCyAEIANBP3FBgAFyOgANIAQgA0EGdkHAAXI6AAxBAgwBCyAEIAM6AAxBAQsQlAEgBC0AEEEERw0CIAVBBGohBSAAQQRrIgANAAsLIAIoAggiAyACKAIARgRAIAIgA0EBQQFBARDnAiACKAIIIQMLIAIgA0EBajYCCCACKAIEIANqQd0AOgAAQQAMAQsgBCAEKQMQNwMYIARBGGoQ8gQLIARBIGokAAvVBgELfyABKAIIIgUgASgCAEYEQCABIAVBAUEBQQEQ5wIgASgCCCEFCyABIAVBAWoiBDYCCCABKAIEIAVqQSI6AAAgA0F/cyEMIAJBAWshDSACIANqIQ4gAiEKAkACQANAQQAhBQJAA0AgDiAFIApqIgdGBEAgAyAGRwRAIAYEQCADIAZNDQQgAiAGaiwAAEG/f0wNBAsgAyAGayIDIAEoAgAgBGtLBEAgASAEIANBAUEBEOcCIAEoAgghBAsgASgCBCAEaiACIAZqIAMQrAEaIAEgAyAEaiIENgIICyAEIAEoAgBGBEAgASAEQQFBAUEBEOcCIAEoAgghBAsgAEEEOgAAIAEgBEEBajYCCCABKAIEIARqQSI6AAAPCyAFQQFqIQUgBy0AACIIQbD26QBqLQAAIgtFDQALIAUgBmoiB0EBayIJIAZLBEACQCAGRQ0AIAMgBk0EQCADIAZGDQEMBgsgAiAGaiwAAEFASA0FCwJAIAMgCU0EQCAHIAxqRQ0BDAYLIAYgDWogBWosAABBv39MDQULIAVBAWsiCSABKAIAIARrSwRAIAEgBCAJQQFBARDnAiABKAIIIQQLIAEoAgQgBGogAiAGaiAJEKwBGiABIAQgBWpBAWsiBDYCCAsgBSAKaiEKIAECfwJAAkACQAJAAkACQAJAAkACQCALQdwAaw4aAAwMDAwMAQwMDAIMDAwMDAwMAwwMDAQMBQYHC0GHh8AAIQUMBwtBiYfAACEFDAYLQYuHwAAhBQwFC0GNh8AAIQUMBAtBj4fAACEFDAMLQZGHwAAhBQwCCyAIQQ9xQaD26QBqLQAAIQUgCEEEdkGg9ukAai0AACEIIAEoAgAgBGtBBU0EQCABIARBBkEBQQEQ5wIgASgCCCEECyABKAIEIARqIgYgBToABSAGIAg6AAQgBkHc6sGBAzYAACAEQQZqDAILQYWHwAAhBSALQSJHDQQLIAEoAgAgBGtBAU0EQCABIARBAkEBQQEQ5wIgASgCCCEECyABKAIEIARqIAUvAAA7AAAgBEECagsiBDYCCCAHIQYMAQsLIAIgAyAGIANBwIbAABD5BQALQeaEwABBKEHghsAAEO8EAAsgAiADIAYgBSAGakEBa0HQhsAAEPkFAAuKBgIHfwR+IwBB0ABrIgYkACACQQJ0IQgCQAJ/A0AgAyAIRgRAIAEhB0GAgICAeAwCCwJAAkACQCABIANqKAIAIgdBmMAAaw4CAQEACyAHIgRBh/4DRw0BC0EnIQQLIANBBGohAyAEIAdGDQALIAJFBEBBBCEHQQAMAQtB+Y32AC0AABogAkECdCIIQQQQ/AUiB0UNASACQQFHBEAgAkF+cSEIIAchAyABIQUDQAJAAkACQCAFKAIAIgRBmMAAaw4CAQEACyAEQYf+A0cNAQtBJyEECyADIAQ2AgACQAJAAkAgBUEEaigCACIEQZjAAGsOAgEBAAsgBEGH/gNHDQELQSchBAsgA0EEaiAENgIAIANBCGohAyAFQQhqIQUgCCAJQQJqIglHDQALCyACQQFxBEACQAJAAkAgASAJQQJ0aigCACIDQZjAAGsOAgEBAAsgA0GH/gNHDQELQSchAwsgByAJQQJ0aiADNgIACyACCyEIIAZBGGogByACEGoCf0EBIAAgByACENMBDQAaQQAgACgCDEUNABoCfyAGKAJMIgVBDU8EQCAGKAIcIQUgBigCIAwBCyAGQRxqCyEDQdCP9gApAwAhDSAAKQMQIQsCQCAFRQRADAELIAVBAnQhBCAFrSEMIAZBEGohAkEgIQUDQCADKAIAIQkCfyAFQf8BcSIBQeAATQRAIAZBCGogCa0gARCpBCACKQMAIAqEIQogBikDCCAMhCEMIAVBIGoMAQsgCiANhSIKQv////8PgyALIAyFIgtCIIh+QiCJIAtC/////w+DIApCIIh+hSELIAmtIQxCACEKQSALIQUgA0EEaiEDIARBBGsiBA0ACwsgACAKIA2FIgpC/////w+DIAsgDIUiC0IgiH5CIIkgC0L/////D4MgCkIgiH6FIAZBGGoQ4QFBAEcLIAYoAkwiAEENTwRAIAYoAiAgAEECdEEEEI0GCyAIQYCAgIB4ckGAgICAeEcEQCAHIAhBAnRBBBCNBgsgBkHQAGokAA8LQQQgCEGE3MEAEOUFAAuBBgEHfwJAAkACQCAFRQ0AAkAgASAFTQRAIAEgBUYNAQwECyAAIAVqLAAAQb9/TA0DCyAAIAVqIgpBAWssAAAiCyEAIAtBAEgEQCALQT9xAn8gCkECay0AACIAwCIHQUBOBEAgAEEfcQwBCyAHQT9xAn8gCkEDay0AACIAwCIIQUBOBEAgAEEPcQwBCyAIQT9xIApBBGstAABBB3FBBnRyC0EGdHILQQZ0ciEACyAAQQlrIgdBGElBn4CABCAHdkEBcXENAAJAIABBgAFJDQACQAJAAkACQCAAQQh2IgdBFmsOGwAEBAQEBAQEBAQCBAQEBAQEBAQEBAQEBAQEAQMLIABBgC1GDQQMAwsgAEGA4ABGDQMMAgsgAEH/AXFB2sf0AGotAABBAnENAgwBCyAHDQAgAEH/AXFB2sf0AGotAABBAXENAQsCQAJAAkAgBEUNACADIARNBEAgAyAERg0BDAILIAIgBGosAABBv39MDQELIAMgBEYEQEEBDwsCfyACIARqIggsAAAiB0EATgRAIAdB/wFxDAELIAgtAAFBP3EhCSAHQR9xIQwgDEEGdCAJciAHQV9NDQAaIAgtAAJBP3EgCUEGdHIhCSAJIAxBDHRyIAdBcEkNABogDEESdEGAgPAAcSAILQADQT9xIAlBBnRycgshBwJAAkACQAJAAkACQCAGQf8BcUEBRw0AIAEgBUkNASALQfwARgRAIAVBAUYNCSAKQQJrLwAAQdz4AUcNCQsgB0H8AEcNAEEBDwsgA0UNASACLQAAIgFB/gBHBEAgAUEqRw0FDAMLIARBAUsNAgwDCyAFIAFBlIvwABCTBgALQaSL8AAQlgYACyAAEJMCDQBBAQ8LIABB/gBHIAFB/gBHcg0AQQEPCyAHQQlrIgBBGEkNAQwDCyACIAMgBCADQYSL8AAQ+QUAC0EBIQ1Bn4CABCAAdkEBcUUNAQsgDQ8LAkAgB0GAAUkNACAHEJwERQ0AQQEPCyAHEJMCDwsgACABQQAgBUH0ivAAEPkFAAvbBQIMfwN+IwBBoAFrIgMkACADQQBBoAEQgwIhCgJAAkACQAJAIAIgACgCoAEiBU0EQCAFQSlPDQEgASACQQJ0aiEMAkACQCAFBEAgBUEBaiENIAVBAnQhCQNAIAogBkECdGohAwNAIAYhAiADIQQgASAMRg0JIANBBGohAyACQQFqIQYgASgCACEHIAFBBGoiCyEBIAdFDQALIAetIRFCACEPIAkhByACIQEgACEDA0AgAUEoTw0EIAQgDyAENQIAfCADNQIAIBF+fCIQPgIAIBBCIIghDyAEQQRqIQQgAUEBaiEBIANBBGohAyAHQQRrIgcNAAsgCCAQQoCAgIAQWgR/IAIgBWoiAUEoTw0DIAogAUECdGogDz4CACANBSAFCyACaiIBIAEgCEkbIQggCyEBDAALAAsDQCABIAxGDQcgBEEBaiEEIAEoAgAgAUEEaiEBRQ0AIAggBEEBayICIAIgCEkbIQgMAAsACyABQShBuMLzABCVBAALIAFBKEG4wvMAEJUEAAsgBUEpTw0BIAJBAnQhDCACQQFqIQ0gACAFQQJ0aiEOIAAhAwNAIAogB0ECdGohBgNAIAchCyAGIQQgAyAORg0FIARBBGohBiAHQQFqIQcgAygCACEJIANBBGoiBSEDIAlFDQALIAmtIRFCACEPIAwhCSALIQMgASEGAkADQCADQShPDQEgBCAPIAQ1AgB8IAY1AgAgEX58IhA+AgAgEEIgiCEPIARBBGohBCADQQFqIQMgBkEEaiEGIAlBBGsiCQ0ACyAIIBBCgICAgBBaBH8gAiALaiIDQShPDQUgCiADQQJ0aiAPPgIAIA0FIAILIAtqIgMgAyAISRshCCAFIQMMAQsLIANBKEG4wvMAEJUEAAsgBUEoQbjC8wAQkwYACyAFQShBuMLzABCTBgALIANBKEG4wvMAEJUEAAsgACAKQaABEKwBIAg2AqABIApBoAFqJAALsQ0BE38jAEHQAGsiAyQAQfyO9gAoAgAiBEUEQCMAQRBrIgQkACAEQQA2AgwgBEKAgICAwAA3AgQgBEEEaiIGQYSYwgAQkgMgBCgCCCIBQfSXwgA2AgQgAUEBNgIAIARBATYCDCAEKAIEIgJBAUYEQCAGQbjM6QAQkgMgBCgCBCECIAQoAgghAQsgAUGozOkANgIMIAFBATYCCCAEQQI2AgwgAkECRgRAIARBBGpBhJjCABCSAyAEKAIIIQELIAFB9JfCADYCFCABQQE2AhAgBEEDNgIMQfmN9gAtAAAaAkBBFEEEEPwFIgEEQCABQoGAgIAQNwIAIAEgBCkCBDcCCCABQRBqIARBDGooAgA2AgBB/I72ACgCACECQfyO9gAgATYCACAEIAI2AgQCQCACRQ0AIAIgAigCACIBQQFrNgIAIAFBAUcNACAEQQRqENADCyAEQRBqJAAMAQtBBEEUEMwGAAtB/I72ACgCACEECyAEIAQoAgAiAUEBajYCAAJAAkACQAJAAkACQCABQQBOBEAgBEUNASADIAQ2AgAgA0EEaiENIAAoAgQhDiAAKAIIIg8hBSAAKAIMIgEoAgwhECABKAIQIREjAEEgayIBJAAgAUEANgIMIAFCgICAgMAANwIEAkAgBUUNACAEKAIQBEBBBCEMA0ACQCAEKAIQIgJFDQAgBSAHayEJIA4gB0EYbGohEiAEKAIMIQYgAkEDdCEIQQAhAgJAA0AgAiAJTQRAIAYoAgAgEiACQRhsaiAJIAJrIBAgESAGKAIEKAIMEQUAIhNFDQMgBkEIaiEGIAIgE2ohAiAIQQhrIggNAQwCCwsgAiAJQYSZwgAQkgYACyACRQ0AIAEoAgQgC0YEQCABQQRqQcSawgAQkgMgASgCCCEMCyAMIAtBA3RqIgYgAiAHajYCBCAGIAc2AgAgASALQQFqIgs2AgwLIAdBAWoiByAFRw0ACyALQQJJDQEgAUKAgICAwAA3AhAgAUIANwIYIAEoAgghAkEBIQZBBCEHQQAhCUEAIQhBACEFA0ACQCACKAIAIAJBDGooAgBPDQAgAkEIaigCACACQQRqKAIATw0AIAUgCEYEQCABQRBqQbSawgAQ3AMgASgCFCEHIAEoAhghCSABKAIcIQUgASgCECEICyAHIAUgCWoiDCAIQQAgCCAMTRtrQQJ0aiAGNgIAIAEgBUEBaiIFNgIcCyACQQhqIQIgCyAGQQFqIgZHDQALIAFBBGogAUEQahDwAQwBCyAFQQdxIQIgBUEITwRAIAVBeHEhBgNAIAZBCGsiBg0ACwsgAkUNAANAIAJBAWsiAg0ACwsgDSABKQIENwIAIA1BCGogAUEMaigCADYCACABQSBqJAAgAygCDCICQQJ0IQYgAkH/////A0sgBkH8////B0tyDQICQCAGRQRAQQQhCEEAIQEMAQtB+Y32AC0AABpBBCEKIAIhASAGQQQQ/AUiCEUNAwsgAyAINgIUIAMgATYCECADQgA3AhggAygCCCEGIAMoAgQhDSACRQ0GIAYgAkEDdGohECAOQShqIREgBiECA0AgA0EQaiACKAIAIghBAWogAigCBCIFEI4BIAUgCEkNBCAFIA9LDQUCQCAFIAhHBEAgDiAIQRhsIglqIgtBFGooAgAiCiALQRBqKAIAIgcgByAKSxshASAKIAcgByAKSRshCiALQRhqIA4gBUEYbCIFakYNASAFIAlrQRhrIQwgCSARaiEFA0AgBUEEaigCACIHIAUoAgAiCSAHIAlLGyISIAogCiASSRshCiAHIAkgByAJSRsiByABIAEgB0sbIQEgBUEYaiEFIAxBGGsiDA0ACyADIAo2AiQgAyABNgIgIAEgCk0NASADQQI2AiwgA0HYmsIANgIoIANCAjcCNCADIANBJGqtQoCAgIDAAIQ3A0ggAyADQSBqrUKAgICAwACENwNAIAMgA0FAazYCMCADQShqQYCbwgAQrgUAC0Hs3sEAEJYGAAsgCCAPTw0GIAsgCjYCFCALIAE2AhAgAkEIaiICIBBHDQALDAYLAAtBoMrBAEHGACADQShqQZDKwQBBuMvBABCFBAALIAogBkG83sEAEOUFAAsgCCAFQdzewQAQlQYACyAFIA9B3N7BABCTBgALIAggD0H83sEAEJUEAAsgDQRAIAYgDUEDdEEEEI0GCyADQTBqIANBGGopAgA3AwAgAyADKQIQNwMoIAAgA0EoahDlASAEIAQoAgAiAEEBazYCACAAQQFGBEAgAxDQAwsgA0HQAGokAAvMBgEQfwJAAkACQAJAIAEoAgAiBSABKAIEIgtGDQAgASgCFCEHIAEoAgwhCSABKAIYIQ8gASgCHCEMIAEoAhAhDSABKAIIIQ4gASgCLEEMaiEQA0AgByEDIA4hCAJAA0AgBS0AAEEBRgRAIAUoAgRBAmsiAkEhSyACQQlGcg0CCyABIAhBAWoiCDYCCCAFQRhqIgUgC0cNAAsgASAFNgIADAILIAEgCEEBaiIONgIIIAEgBUEYaiIFNgIAIAkgDUYNAUEAIQQgAyECAkADQCAEIAlqIgYtAABBAUYEQCAGQQRqKAIAQQJrIgdBIUsgB0EJRnINAgsgASACQQFqIgI2AhQgCSAEQRhqIgRqIgcgDUcNAAsgASAHNgIMDAILIAEgAkEBaiIHNgIUIAEgBkEYaiIJNgIMIAIgDE8NAiAPIANBGGxqIARqIgItAAAiA0EKRg0BAkACQAJAIANBAUcNACAQKAIAIQYgAkEUaigAACEEIAJBEGooAAAhAyACQQhqKAAAIREgAkEEaigAACICQQJrIgpBIU0gCkEJR3ENACACRQ0CIAYoAgwiAkEAIAMgBEYiChsgAiADQQJ0aiAGKAIQIgIgBEkgAiADTSADIARLcnIiAhsiBkUNBiACIApyDQJBnMAAQZ3AACAIIBFJGyIIIAYoAgBGDQJB+Y32AC0AABpBEEEEEPwFIgJFDQdB+Y32AC0AABpBBEEEEPwFIgEEQCACQQE2AgwgAiABNgIIIAJCgICAgBA3AgAgASAINgIAQfmN9gAtAAAaQSlBARD8BSIBDQJBAUEpQcjOwQAQ5QUAC0EEQQQQzAYAC0HskcIAEJYGAAsgAEGI/gE7ASAgACAENgIcIAAgAzYCGCAAQSk2AhQgACABNgIQIABCgYCAgJAFNwIIIAAgAjYCBCAAQQE2AgAgAUEoakHCkcIALQAAOgAAIAFBIGpBupHCACkAADcAACABQRhqQbKRwgApAAA3AAAgAUEQakGqkcIAKQAANwAAIAFBCGpBopHCACkAADcAACABQZqRwgApAAA3AAAPCyAFIAtHDQALCyAAQYCAgIB4NgIADwsgAiAMQezR6QAQlQQAC0GQm8IAEJYGAAtBBEEQEMwGAAu9BQEHfyMAQdAAayIGJAACQCACRQ0AIAEtAAANAAJAAkACQCADQQAgASgCFCICIAEoAhAiAUYbIAMgAUECdGogASACSyABIARPciACIARLciIDGyIEBEAgACgCBCEJIAAoAgAhACAGQQxqIARBACACIAFrIAMbEGogBkHEAGogACAJEC4gBigCSCIAIAYoAkxqIQogBigCECELIAYoAhQhCSAGKAJAIgNBDEsNASAGQRBqIQIgACEBA0AgASAKRg0DAn8gASwAACIEQQBOBEAgBEH/AXEhBCABQQFqDAELIAEtAAFBP3EhByAEQR9xIQggBEFfTQRAIAhBBnQgB3IhBCABQQJqDAELIAEtAAJBP3EgB0EGdHIhByAEQXBJBEAgByAIQQx0ciEEIAFBA2oMAQsgCEESdEGAgPAAcSABLQADQT9xIAdBBnRyciEEIAFBBGoLIQEgAyAFRg0EIAVBAWohBSACKAIAIQggAkEEaiECIAQgCEYNAAsMAwtBkJvCABCWBgALIAkhAiAAIQEDQCABIApGDQECfyABLAAAIgRBAEgEQCABLQABQT9xIQcgBEEfcSEIIARBYEkEQCAIQQZ0IAdyIQQgAUECagwCCyABLQACQT9xIAdBBnRyIQcgBEFwSQRAIAcgCEEMdHIhBCABQQNqDAILIAhBEnRBgIDwAHEgAS0AA0E/cSAHQQZ0cnIhBCABQQRqDAELIARB/wFxIQQgAUEBagshASAFIAtGDQIgBUEBaiEFIAIoAgAhCCACQQRqIQIgBCAIRg0ACwwBCyAGKAJEIgEEQCAAIAFBARCNBgsgA0ENTwR/IAkgA0ECdEEEEI0GIAsFIAMLIAVGIQUMAQsgBigCRCIBBEAgACABQQEQjQYLIANBDU8EQCAJIANBAnRBBBCNBgtBACEFCyAGQdAAaiQAIAULgQYBCX8gACgCbCIEQQ1PBEAgACgCPCEECyAAKAI0IgJBDU8EQCAAKAIEIQILQfAAQagBIAAoAtwBIgNBDU8EfyAAKAKsAQUgAwsgACgCpAEiB0ENTwR/IAAoAnQFIAcLSSIDGyEIIABBqAFB8AAgAxtqIgMoAjQiBUENTwRAIAMoAgQhBQsgACACIARLQThsaiIHKAI0IgZBDU8EQCAHKAIEIQYLIAcgAyACIARNQThsIABqIgQgACAIaiIIKAI0IgBBDU8EfyAIKAIEBSAACyAEKAI0IgJBDU8EfyAEKAIEBSACC0kiChsgBSAGSSIAGyECIAggBCADIAAbIAobIgUoAjQiBkENTwRAIAUoAgQhBgsgAigCNCIJQQ1PBEAgAigCBCEJCyABIAMgByAAGyIAKQIANwIAIAFBMGogAEEwaikCADcCACABQShqIABBKGopAgA3AgAgAUEgaiAAQSBqKQIANwIAIAFBGGogAEEYaikCADcCACABQRBqIABBEGopAgA3AgAgAUEIaiAAQQhqKQIANwIAIAEgBSACIAYgCUkiAxsiACkCADcCOCABQUBrIABBCGopAgA3AgAgAUHIAGogAEEQaikCADcCACABQdAAaiAAQRhqKQIANwIAIAFB2ABqIABBIGopAgA3AgAgAUHgAGogAEEoaikCADcCACABQegAaiAAQTBqKQIANwIAIAEgAiAFIAMbIgApAgA3AnAgAUGgAWogAEEwaikCADcCACABQZgBaiAAQShqKQIANwIAIAFBkAFqIABBIGopAgA3AgAgAUGIAWogAEEYaikCADcCACABQYABaiAAQRBqKQIANwIAIAFB+ABqIABBCGopAgA3AgAgASAEIAggChsiACkCADcCqAEgAUGwAWogAEEIaikCADcCACABQbgBaiAAQRBqKQIANwIAIAFBwAFqIABBGGopAgA3AgAgAUHIAWogAEEgaikCADcCACABQdABaiAAQShqKQIANwIAIAFB2AFqIABBMGopAgA3AgALqQUBB38CQCAAKAIIQQFxRSIEIAAoAgAiCUVxRQRAAkAgBA0AIAEgAmohBwJAIAAoAgwiBkUEQCABIQQMAQsgASEEA0AgBCIDIAdGDQICfyADQQFqIAMsAAAiCEEATg0AGiADQQJqIAhBYEkNABogA0EDaiAIQXBJDQAaIANBBGoLIgQgA2sgBWohBSAGQQFrIgYNAAsLIAQgB0YNACAELAAAGiAFIAICfwJAIAVFDQAgAiAFTQRAIAIgBUYNAUEADAILIAEgBWosAABBQE4NAEEADAELIAELIgMbIQIgAyABIAMbIQELIAlFDQEgACgCBCEHAkAgAkEQTwRAIAEgAhCBASEDDAELIAJFBEBBACEDDAELIAJBA3EhBgJAIAJBBEkEQEEAIQNBACEFDAELIAJBDHEhCEEAIQNBACEFA0AgAyABIAVqIgQsAABBv39KaiAEQQFqLAAAQb9/SmogBEECaiwAAEG/f0pqIARBA2osAABBv39KaiEDIAggBUEEaiIFRw0ACwsgBkUNACABIAVqIQQDQCADIAQsAABBv39KaiEDIARBAWohBCAGQQFrIgYNAAsLAkAgAyAHSQRAIAcgA2shBEEAIQMCQAJAAkAgAC0AIEEBaw4CAAECCyAEIQNBACEEDAELIARBAXYhAyAEQQFqQQF2IQQLIANBAWohAyAAKAIQIQYgACgCGCEFIAAoAhQhAANAIANBAWsiA0UNAiAAIAYgBSgCEBEAAEUNAAtBAQ8LDAILIAAgASACIAUoAgwRAwAEQEEBDwtBACEDA0AgAyAERgRAQQAPCyADQQFqIQMgACAGIAUoAhARAABFDQALIANBAWsgBEkPCyAAKAIUIAEgAiAAKAIYKAIMEQMADwsgACgCFCABIAIgACgCGCgCDBEDAAvmBQEJfyMAQSBrIgckAAJAAkACQAJAAkAgAyAETwRAAkAgAyAEayIGRQRADAELIAIgBGohCANAIAUgCGotAABBCWsiCUEXS0EBIAl0QY2AgARxRXINASAGIAVBAWoiBUcNAAsgBiEFCyADIAQgBWoiBUkNBCABKALEASEIIAEoAqwBIQkCQCADIAVGBEBBACEEDAELQQEhBEEAIQYCQCACIAVqIgotAABBCmsOBAEEBAAECyADIAVrQQFGDQBBAkEBIAotAAFBCkYbIQQLAkACQCAEIAVqIgYgA00EQCAHQRBqIgRCADcCACAEQQhqQgA3AgAgByADIAZrNgIMIAcgAiAGajYCCCABQZgBaiAHQQhqIAhBAnYgCEGEBHFBhARHcRBuIQogBygCECEFIAcoAhgiBEEDSw0CIAUgBygCDCILTw0BIAcoAgghDEEEIARrIQggBygCFCEEA0ACQCAFIAxqLQAAIg1BCUcEQCANQSBHDQQgBUEBaiEFIAhBAWsiCA0BDAULIAUgBGsgBUEBaiEFQQNxIAhqQQRrIgRBACAEIAhNGyIIRQ0EIAUhBAsgBSALSQ0ACwwBCyAGIANBwIXwABCSBgALIAUgBmoiBCADTQRAIAEgAiAEaiIBIAMgBGsiBCAJIApGELUBRQRAIAcgASAEEKwCIActAARFDQILIABBADYCAAwHCyAEIANBsIXwABCSBgALIAMgBSAGaiIETw0BCyAEIANB4IXwABCSBgALAkAgAyAEayIBRQRAQQAhBQwBCyACIARqIQZBACEFA0AgBSAGai0AAEEJayIIQRdLQQEgCHRBjYCABHFFcg0BIAEgBUEBaiIFRw0ACyABIQULIAQgBWoiBSADSw0CIAMgBUYNAUEBIQYgAiAFai0AAEEKaw4EAQAAAQALIAAgBjYCCCAAIAU2AgQgAEEBNgIADAILIABBADYCAAwBCyAFIANB0IXwABCSBgALIAdBIGokAAvaBQIFfwF+IAFBQHEiBwRAQQAgB2shCCAAIQcDQCAHKQA4IAaFIgxC/////w+DIAcpABggBYUiBUIgiH5CIIkgBUL/////D4MgDEIgiH6FIQUgBykAMCAGhSIMQv////8PgyAHKQAQIASFIgRCIIh+QiCJIARC/////w+DIAxCIIh+hSEEIAcpACggBoUiDEL/////D4MgBykACCADhSIDQiCIfkIgiSADQv////8PgyAMQiCIfoUhAyAHKQAgIAaFIgxC/////w+DIAcpAAAgAoUiAkIgiH5CIIkgAkL/////D4MgDEIgiH6FIQIgB0FAayEHIAhBQGsiCA0ACwsgAyAFhSEFIAIgBIUhBAJAAkAgAUE/cSIHRQ0AIAFBECAHIAdBEE0bIgdrIQggAUEQSQ0BIAdBMHEiAUUNACAAIAhqIgAgACAHQQ9xIgdqIgggAWoiCU8NACAIIAFBEGsiCmoiCykACCAGhSICQv////8PgyAAKQAIIAWFIgNCIIh+QiCJIANC/////w+DIAJCIIh+hSEFIAspAAAgBoUiAkL/////D4MgACkAACAEhSIDQiCIfkIgiSADQv////8PgyACQiCIfoUhBCAKRSAHIApyQRFIcg0AIAggAUEgayIBaiIIKQAIIAaFIgJC/////w+DIAApABggBYUiA0IgiH5CIIkgA0L/////D4MgAkIgiH6FIQUgCCkAACAGhSICQv////8PgyAAKQAQIASFIgNCIIh+QiCJIANC/////w+DIAJCIIh+hSEEIAFFIAEgB3JBIUhyDQAgCUEoaykAACAGhSICQv////8PgyAAKQAoIAWFIgNCIIh+QiCJIANC/////w+DIAJCIIh+hSEFIAlBMGspAAAgBoUiAkL/////D4MgACkAICAEhSIDQiCIfkIgiSADQv////8PgyACQiCIfoUhBAsgBCAFhQ8LIAggAUHYyvAAEJIGAAu7BgIIfwF+IwBBEGsiBSQAAkACQAJAIAApAwhQDQACQAJAAkBB5I72ACgCAEUEQEHgjvYAKAIA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IAJBNGogAigCCCACKAIMENUENgIEDAELIAEgAS0AGEEBayIEOgAYIARB/wFxBEAgASADQQFqNgIUIAJBNGogARDtAQJAAkAgAi0ANEUEQCACLQA1IQYgARDDAyIDDQEgARCSAiIDDQFBASEDIAEgAS0AGEEBajoAGCABKAIUIgQgASgCECIHSQRAIAUoAgAhCANAIAQgCGotAAAiCUEJayIKQRdLQQEgCnRBk4CABHFFcg0EIAEgBEEBaiIENgIUIAQgB0cNAAsLIAJBAzYCNCACQShqIAUQ7AQgACACQTRqIAIoAiggAigCLBDVBDYCBAwFCyACKAI4IQMLIAAgAzYCBEEBIQMgASABLQAYQQFqOgAYDAMLIAlB/QBGBEAgACAGOgABIAEgBEEBajYCFEEAIQMMAwsgAkEKNgI0IAJBIGogBRDsBCAAIAJBNGogAigCICACKAIkENUENgIEDAELIAJBGDYCNCACQRhqIAUQwAQgACACQTRqIAIoAhggAigCHBDVBDYCBAtBASEDCyAAIAM6AAAgAkFAayQAC8QFAQ5/IAFBAUcEQCAAIAFBOGxqIQ0gAEE4aiECIwBBMGsiA0EIaiEHIANBEGohCCADQRhqIQkgA0EgaiEKIANBKGohCyAAIQEDQCACIAEoAmwiBSECIAVBDU8EfyABKAI8BSACCyABKAI0IgRBDU8EfyABKAIEBSAEC0kEQCABKAI4IQ8gByABQcgAaikCADcDACAIIAFB0ABqKQIANwMAIAkgAUHYAGopAgA3AwAgCiABQeAAaikCADcDACALIAFB6ABqKAIANgIAIAMgASkCQDcDACABKAI8IQwgBiECAn8gBUEMSwRAA0AgACACaiIBQThqIAEpAgA3AgAgAUHoAGogAUEwaikCADcCACABQeAAaiABQShqKQIANwIAIAFB2ABqIAFBIGopAgA3AgAgAUHQAGogAUEYaikCADcCACABQcgAaiABQRBqKQIANwIAIAFBQGsgAUEIaikCADcCACAAIAJFDQIaIAJBOGshAiABQQRrKAIAIgRBDU8EfyABQTRrKAIABSAECyAMSw0ACyAAIAJqQThqDAELA0AgACACaiIBQThqIAEpAgA3AgAgAUHoAGogAUEwaikCADcCACABQeAAaiABQShqKQIANwIAIAFB2ABqIAFBIGopAgA3AgAg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AAsgDyAQSw0BIAAhAgwECyAFIAhLDQAgACECDAMLIAAgB0HIABCsARogByIAIAlHDQALCyAJIQILIAIgDUEIakHIABCsARoLIANByABqIgIgGEcNAAsLIA1B0ABqJAALIApBAWshB0EAIQZBACEAA0ACfyAAIAlqIgJB/ABqKAIAIgNBDU8EQCACQdAAaigCACEFIAJBzABqKAIADAELIAJBzABqIQUgAwshCAJ/IAJBNGooAgAiBEENTwRAIAJBBGooAgAhBCACQQhqKAIADAELIAJBBGoLIQwCQCAEIAhGBEAgBSAMIAhBAnQQzARFDQELIABByABqIQAgByAGQQFqIgZHDQEMAgsLIANBDU8EQCACQdAAaigCACADQQJ0QQQQjQYLIAZBAWohAyAKIAZBAmpLBEAgCiAGa0ECayEIIAJBkAFqIQIDQCAJIANByABsaiEAAn8gAkE0aigCACIKQQ1JIg5FBEAgAkEIaigCACEFIAJBBGooAgAMAQsgAkEEaiEFIAoLIQQCfyAAQRRrKAIAIgZBDU8EQCAAQcQAaygCACEGIABBQGooAgAMAQsgAEHEAGsLIQcCQAJAIAQgBkYEQCAFIAcgBEECdBDMBEUNAQsgACACQcgAEKwBGiADQQFqIQMMAQsgDg0AIAJBCGooAgAgCkECdEEEEI0GCyACQcgAaiECIAhBAWsiCA0ACwsgAyEKC0H5jfYALQAAGkGA0ABBARD8BSIABEAgASAANgIMIAFBgNAANgIIQgAhHiABQgA3AxAgAUIANwMAIAFCAzcDgAEgAUEANgCEASABQQA2AIEBIAFBFGoiACABQYABakEIEM0BIAEoAgggASgCECICa0EHTQRAIAFBCGogAkEIQQFBARDqAiABKAIQIQILIAEoAgwgAmogASkDgAE3AAAgASACQQhqNgIQIAEgASkDAEIIfDcDACABQgA3A4ABIAAgAUGAAWpBCBDNASABKAIIIAEoAhAiAmtBB00EQCABQQhqIAJBCEEBQQEQ6gIgASkDgAEhHiABKAIQIQILIAEoAgwgAmogHjcAACABQRBqIgAgAkEIajYCACABIAEpAwBCCHwiHjcDACABQZABaiIEIAApAwA3AwAgAUGIAWoiBiABQQhqKQMANwMAIAEgHjcDgAFB+Y32AC0AABpBgBhBCBD8BSIARQRAQQhBgBhBsL/rABDlBQALIABBADoALCAAQQA2AiggAEKAgICAgAE3AyAgAEIANwMYIABCADcDACABQZgBaiICQQE2AgggAiAANgIEIAJBwAA2AgAgAUGkAWohA0H5jfYALQAAGgJAQYCIJ0EIEPwFIgAEQEEDIQggACECQZycASEFA0AgAkEBNgJ4IAJBADoAdCACQQA2AnAgAkKAgICAgAE3A2ggAkIANwNgIAJBATYCWCACQQA6AFQgAkEANgJQIAJCgICAgIABNwNIIAJCADcDQCACQQE2AjggAkEAOgA0IAJBADYCMCACQoCAgICAATcDKCACQgA3AyAgAkEBNgIYIAJBADoAFCACQQA2AhAgAkKAgICAgAE3AwggAkIANwMAIAJBgAFqIQIgBUEEayIFDQALA0AgAkEBNgIYIAJBADoAFCACQQA2AhAgAkKAgICAgAE3AwggAkIANwMAIAJBIGohAiAIQQFrIggNAAsMAQtBCEGAiCdBzNTsABDlBQALIAJBATYCGCACQQA6ABQgAkEANgIQIAJCgICAgIABNwMIIAJCADcDACADQQI2AhAgA0GQzgA2AgwgA0GgnAE2AgggAyAANgIEIANBoJwBNgIAIAFBoAJqIgAgAUGUAWopAgA3AwAgAUGoAmoiAiABQZwBaikCADcDACABQbACaiIFIAMoAgA2AgAgAUHoAWoiAyABQbABaikDADcDACABIAEpAowBNwOYAiABIAEpA6gBNwPgASAGKAIAIghBgICAgHhHBEAgASkDgAEhHiABQSRqIAUoAgA2AgAgAUEcaiACKQMANwIAIAFBFGogACkDADcCACABQTBqIAMpAwA3AwAgASABKQOYAjcCDCABIAEpA+ABNwMoIAFCATcCRCABQYCAgIB4NgI4IAEgCDYCCCABIB43AwAgCkHIAGwhDyAKRQ0DIAkgD2ohGyABQThqIRwgAUEYaiEMQgAhHiAJIQgDQAJ/IAgoAjQiAEEMSwRAIAgoAgQhACAIKAIIDAELIAhBBGoLIQMgAUEANgKIASABQoCAgIAQNwKAAQJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQCAABEAgAUGAAWpBACAAQQFBARDqAgNAIAECfyADKAIAIgJBgAFPBEAgAUEANgKYAgJ/IAJBgBBPBEAgAkGAgARPBEAgASACQT9x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IAFBuAJqKQIANwMAIAFBiAJqIAFBwAJqKQIANwMAIAEgBDYCnAIgASACNgKYAiABIAYpAgA3A9ABIAEgBkEFaikAADcA1QEgASABKQKYAjcD4AFBAQwBCyABQZgCaiADIAJBAnQQrAEaIAggAjYCACABQegBaiABQaACaikCADcDACABQfABaiABQagCaikCADcDACABQfgBaiABQbACaikCADcDACABQYACaiABQbgCaikCADcDACABQYgCaiABQcACaikCADcDACABIAEpApgCNwPgASABIAYpAgA3A9ABIAEgBkEFaikAADcA1QFBACEEIBMNASABKAKIASEDQQALIQQgAyAUQQJ0QQQQjQYLIAAgB2oiAiAENgIAIAJBBGogASkD4AE3AgAgAkEMaiABQegBaikDADcCACACQRRqIAFB8AFqKQMANwIAIAJBHGogAUH4AWopAwA3AgAgAkEkaiABQYACaikDADcCACACQSxqIAFBiAJqKQMANwIAIAJBNGogCCgCADYCACACQThqIAEpA9ABNwIAIAJBPWogASkA1QE3AAAgAEHIAGohACAFQQFrIgUNAAsgAUHoAGpBACAKQQRBOBDqAiAKIAEoAnAiAGohCCABKAJsIgUgAEE4bGohAiAHIQAgCiEGA0AgAUGAAWoCfyAAQTRqKAIAIgRBDU8EQCAAQQRqKAIAIQQgAEEIaigCAAwBCyAAQQRqCyIDIAMgBEECdGoQ0gEgAkEwaiABQbABaikCADcCACACQShqIAFBqAFqKQIANwIAIAJBIGogAUGgAWopAgA3AgAgAkEYaiABQZgBaikCADcCACACQRBqIAFBkAFqKQIANwIAIAJBCGogAUGIAWopAgA3AgAgAiABKQKAATcCACAAQcgAaiEAIAJBOGohAiAGQQFrIgYNAAsgByAPaiEAIAEgCDYCcCAIQQJJDQAgCEEVTwRAQQAhDiMAQYAgayIEJAACQAJAIAhBAXYiAkGJ3AggCCAIQYncCE8bIgMgAiADSxsiAkHKAE8EQEEwIAIgAkEwTRutQjh+Ih6nIQMgHkIgiKcgA0H8////B0tyDQICQCADRQRAQQAhAkEEIQYMAQtB+Y32AC0AABpBBCEOIANBBBD8BSIGRQ0DCyAFIAggBiACIAhBwQBJEEsgBiACQThsQQQQjQYMAQsgBSAIIARByQAgCEHBAEkQSwsgBEGAIGokAAwCCyAOIANB5M/BABDlBQALIAUgCBCmAQsgAUGAAWogBSAIEHsgASgCdCICBEAgASgCeCACQQJ0QQQQjQYLIAFB9ABqIgIgASkCgAE3AgAgAkEIaiABQYgBaigCADYCACAKQQFqQQF2IAogASgCXBsiAiABKAJYSw0CDAMLIAIgD0GE3MEAEOUFAAsgEyAEQcjOwQAQ5QUACyABQdAAaiACIAFB4ABqEEkLIAoEQCABQbgBaiEDIAchAgNAIAFBgAFqIg4gAkHIABCsARogAUGYAmogAUHQAGogDiADEGUgAkHIAGoiAiAARw0ACyAHIApByABsQQQQjQYLIAFBgAFqIgMgAUHQABCsARogAUGYAmoiByADQQAQ/gICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAKYAiIFQYqAgIB4RgRAIAFB4AFqIQACQAJAIAFBmAFqIg4oAghBAUYEQCAOKAIEIgIoAgANASAOQQA2AgggACACKQMYNwMAIABBCGogAkEgaikDADcDACAAQRBqIAJBKGopAwA3AwAMAgtBkMDrAEEnQbjA6wAQ7wQAC0HQv+sAQS5BgMDrABDvBAALIAcgAyAAEDQgASgCnAIhCCABKAKYAiIFQYqAgIB4RgRAIAEoAsgBIQAgAUEANgKcAiABIABBGHY6AJsCIAEgAEEQdjoAmgIgASAAQQh2OgCZAiABIAA6AJgCIAFBlAFqIgMgB0EIEM0BIAFBiAFqIQAgASgCiAEgASgCkAEiAmtBB00EQCAAIAJBCEEBQQEQ6gIgASgCkAEhAgsgASgCjAEgAmogASkDmAI3AAAgASACQQhqNgKQASABIAEpA4ABQgh8NwOAASABQQA2ApwCIAEgCDoAmAIgASAIQRh2OgCbAiABIAhBEHY6AJoCIAEgCEEIdjoAmQIgAyABQZgCakEIEM0BIAEoAogBIAEoApABIgJrQQdNBEAgAUGIAWogAkEIQQFBARDqAiABKAKQASECCyABKAKMASACaiABKQOYAjcAACABIAJBCGo2ApABIAEgASkDgAFCCHw3A4ABIAFB2AFqIABBCGooAgAiBDYCACABIAApAgAiHjcD0AEgASgClAFBEXdBqKr06wVrIQAgHqciCCAEa0EDTQRAIAFB0AFqIARBBEEBQQEQ6gIgASgC0AEhCCABKALYASEECyABKALUASIGIARqIAA2AAAgASgC6AEiAARAIAEoAuwBIABBBHRBCBCNBgsgASgCnAEhAyABKAKgASIABEAgA0EkaiECA0AgAkEEaygCACIHBEAgAigCACAHQQR0QQgQjQYLIAJBMGohAiAAQQFrIgANAAsLIAEoApgBIgAEQCADIABBMGxBCBCNBgsgASgCqAEhBSABKAKsASIABEAgBUEMaiECA0AgAkEEaygCACIDBEAgAigCACADQQR0QQgQjQYLIAJBIGohAiAAQQFrIgANAAsLIAEoAqQBIgAEQCAFIABBBXRBCBCNBgsgBEEEaiEEIAEoArgBIgJBgICAgHhyQYCAgIB4Rg0FQYqAgIB4IQUMAwsgASkDqAIhHiABKAKkAiEEIAEoAqACIQYgASgC6AEiAEUNASABKALsASAAQQR0QQgQjQYMAQsgASkDqAIhHiABKAKkAiEEIAEoAqACIQYgASgCnAIhCAsgASgCiAEiAARAIAEoAowBIABBARCNBgsgASgCnAEhAyABKAKgASIABEAgA0EkaiECA0AgAkEEaygCACIHBEAgAigCACAHQQR0QQgQjQYLIAJBMGohAiAAQQFrIgANAAsLIAEoApgBIgAEQCADIABBMGxBCBCNBgsgASgCqAEhAyABKAKsASIABEAgA0EMaiECA0AgAkEEaygCACIHBEAgAigCACAHQQR0QQgQjQYLIAJBIGohAiAAQQFrIgANAAsLIAEoAqQBIgAEQCADIABBBXRBCBCNBgsgASgCuAEiAkGAgICAeHJBgICAgHhGDQELIAEoArwBIAJBARCNBgsgBUGKgICAeEcNAQtCACEhQoGAgIAIISICQCAEQSRJBEBCACEgDAELIAYpAAAiHkIEfUJ8WARAIB5C/////w+DISAgHkKAgICAcIMhIUKAgICACCEiDAELAn8gHkIDVARAIAQhAEEADAELIAYgBEEEayIAaigAACEFQQELIQMgBCAAQQhrIgJJDQQgBCACayIHQQdNDQMgBikACCEkIAEgAiAGaikAACIfNwPgASAfQv////8PVg0IIAQgAEEQayIASQ0GIAQgAGsiAkEHTQ0FIAEgACAGaikAACIjNwPgASAjQv////8PVg0IIARBIEEkIB5CA1QiABtGIB9CAFJyDQJCACEgIB+nQRFBFSAAG2ogBEYNAgsgCARAIAYgCEEBEI0GCyABQgM3A4gBIAEgICAhhDcDkAEgASAiIAStQiCGhDcDgAFB6JvCAEEYIAFBgAFqQbDGwQBBgJzCABCFBAALIAEgHjcDkAEgASAENgKMASABIAY2AogBIAEgCDYChAEgASAFNgKAAUHAxsEAQSsgAUGAAWpBsMbBAEGQnMIAEIUEAAtB+Y32AC0AABpBOEEIEPwFIgANBEEIQTgQzAYAC0EIIAdB1MfBABCTBgALIAIgBEHou8EAEJIGAAtBCCACQdTHwQAQkwYACyAAIARB2LvBABCSBgALIABCgYCAgBA3AwAgACABKQNQNwMIIBUgADYCPCAVIAo2AjggFSAJNgI0IBUgFzYCMCAVIAQ2AiggFSAGNgIkIBUgCDYCICAVICQ3AxAgFSAeNwMIIBUgBTYCBCAVIAM2AgAgAEEQaiABQdgAaikDADcDACAAQRhqIAFB4ABqKQMANwMAIABBIGogAUHoAGopAwA3AwAgAEEoaiABQfAAaikDADcDACAAQTBqIAFB+ABqKQMANwMAIBUgI0IghiAfhDcDGCABQdACaiQADAELIAFBAjYChAEgAUG4u8EANgKAASABQgE3AowBIAEgAUHgAWqtQoCAgICAFYQ3A5gCIAEgAUGYAmo2AogBIAFBgAFqQci7wQAQrgUAC0H5jfYALQAAGkHIAEEIEPwFIgJFDQQgAkKBgICAEDcDACACIAspA1A3AwggAkEQaiAaKQMANwMAIAJBGGogC0HgAGopAwA3AwAgAkEgaiALQegAaikDADcDACACQShqIAtB8ABqKQMANwMAIAJBMGogC0H4AGopAwA3AwAgAkE4aiALQYABaikDADcDACACQUBrIAtBiAFqKQMANwMAAkAgCygCFCIHRQ0AIAsoAhwiCQRAIAsoAhAiA0EIaiEAIAMpAwBCf4VCgIGChIiQoMCAf4MhHgNAIB5QBEADQCADQeACayEDIAApAwAgAEEIaiEAQoCBgoSIkKDAgH+DIh5CgIGChIiQoMCAf1ENAAsgHkKAgYKEiJCgwIB/hSEeCyADIB56p0EDdkFUbGpBKGsQ9gIgHkIBfSAegyEeIAlBAWsiCQ0ACwsgByAHQSxsQTNqQXhxIgBqQQlqIgNFDQAgCygCECAAayADQQgQjQYLIAI2AgBBhI/2AEEDOgAACyALQZABaiQADwsgC0EANgJgIAtBATYCVCALQezIwQA2AlAMBAtBgMrBABCWBgALIAsgCykCVDcCKEHAxsEAQSsgC0EoakGgm8IAQdibwgAQhQQAC0EIQcgAEMwGAAsgC0EANgJgIAtBATYCVCALQazJwQA2AlALIAtCBDcCWCALQdAAakHczekAEK4FAAvCCwEFfyMAQSBrIgQkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDigGAQEBAQEBAQECBAEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBCAEBAQEHAAsgAUHcAEYNBAsgAkEBcUUgAUGABklyDQcCfwJAQRFBACABQa+wBE8bIgIgAkEIciIDIAFBC3QiAiADQQJ0Qciv9ABqKAIAQQt0SRsiAyADQQRyIgMgA0ECdEHIr/QAaigCAEELdCACSxsiAyADQQJyIgMgA0ECdEHIr/QAaigCAEELdCACSxsiAyADQQFqIgMgA0ECdEHIr/QAaigCAEELdCACSxsiAyADQQFqIgMgA0ECdEHIr/QAaigCAEELdCACSxsiA0ECdEHIr/QAaigCAEELdCIFIAJGIAIgBUtqIANqIgNBIU0EQCADQQJ0Qciv9ABqIgYoAgBBFXYhAkHvBSEFAn8CQCADQSFGDQAgBigCBEEVdiEFIAMNAEEADAELIANBAnRBxK/0AGooAgBB////AHELIQMCQCAFIAJBf3NqRQ0AIAEgA2shB0HvBSACIAJB7wVNGyEGIAVBAWshA0EAIQUDQCACIAZGDQMgBSACQdCw9ABqLQAAaiIFIAdLDQEgAyACQQFqIgJHDQALIAMhAgsgAkEBcQwCCyADQSJBgMLzABCVBAALIAZB7wVBkMLzABCVBAALRQ0HIARBADoACiAEQQA7AQggBCABQRR2Qcqn8wBqLQAAOgALIAQgAUEEdkEPcUHKp/MAai0AADoADyAEIAFBCHZBD3FByqfzAGotAAA6AA4gBCABQQx2QQ9xQcqn8wBqLQAAOgANIAQgAUEQdkEPcUHKp/MAai0AADoADCABQQFyZ0ECdiICIARBCGoiA2oiBUH7ADoAACAFQQFrQfUAOgAAIAMgAkECayICakHcADoAACAEQRBqIgMgAUEPcUHKp/MAai0AADoAACAAQQo6AAsgACACOgAKIAAgBCkCCDcCACAEQf0AOgARIABBCGogAy8BADsBAAwJCyAAQYAEOwEKIABCADcBAiAAQdzoATsBAAwICyAAQYAEOwEKIABCADcBAiAAQdzkATsBAAwHCyAAQYAEOwEKIABCADcBAiAAQdzcATsBAAwGCyAAQYAEOwEKIABCADcBAiAAQdy4ATsBAAwFCyAAQYAEOwEKIABCADcBAiAAQdzgADsBAAwECyACQYACcUUNASAAQYAEOwEKIABCADcBAiAAQdzOADsBAAwDCyACQYCABHENAQsCf0EAIAFBIEkNABpBASABQf8ASQ0AGiABQYCABE8EQCABQeD//wBxQeDNCkcgAUH+//8AcUGe8ApHcSABQcDuCmtBeklxIAFBsJ0La0FySXEgAUHw1wtrQXFJcSABQYDwC2tB3mxJcSABQYCADGtBnnRJcSABQdCmDGtBe0lxIAFBgII4a0GwxVRJcSABQfCDOElxIAFBgIAITw0BGiABQYS28wBBLEHctvMAQdABQay48wBB5gMQqQIMAQsgAUGSvPMAQShB4rzzAEGiAkGEv/MAQakCEKkCC0UEQCAEQQA6ABYgBEEAOwEUIAQgAUEUdkHKp/MAai0AADoAFyAEIAFBBHZBD3FByqfzAGotAAA6ABsgBCABQQh2QQ9xQcqn8wBqLQAAOgAaIAQgAUEMdkEPcUHKp/MAai0AADoAGSAEIAFBEHZBD3FByqfzAGotAAA6ABggAUEBcmdBAnYiAiAEQRRqIgNqIgVB+wA6AAAgBUEBa0H1ADoAACADIAJBAmsiAmpB3AA6AAAgBEEcaiIDIAFBD3FByqfzAGotAAA6AAAgAEEKOgALIAAgAjoACiAAIAQpAhQ3AgAgBEH9ADoAHSAAQQhqIAMvAQA7AQAMAgsgACABNgIEIABBgAE6AAAMAQsgAEGABDsBCiAAQgA3AQIgAEHcxAA7AQALIARBIGokAAvgBQEHfyMAQeAAayIFJAAgA0ECdCEJAkACfwNAIAQgCUYEQCACIQdBgICAgHgMAgsCQAJAAkAgAiAEaigCACIHQZjAAGsOAgEBAAsgByIGQYf+A0cNAQtBJyEGCyAEQQRqIQQgBiAHRg0ACyADRQRAQQQhB0EADAELQfmN9gAtAAAaIANBAnQiBkEEEPwFIgdFDQEgA0EBRwRAIANBfnEhCiAHIQQgAiEJA0ACQAJAAkAgCSgCACIGQZjAAGsOAgEBAAsgBkGH/gNHDQELQSchBgsgBCAGNgIAAkACQAJAIAlBBGooAgAiBkGYwABrDgIBAQALIAZBh/4DRw0BC0EnIQYLIARBBGogBjYCACAEQQhqIQQgCUEIaiEJIAogCEECaiIIRw0ACwsgA0EBcQRAAkACQAJAIAIgCEECdGooAgAiBEGYwABrDgIBAQALIARBh/4DRw0BC0EnIQQLIAcgCEECdGogBDYCAAsgAwshBiAFQQhqIAcgAxBqIAEgByADENMBIgIEfyAFQdgAaiACQcEAaigAADYCACAFIAIpADk3A1AgAi0AOAVBAgshBAJ/IAUoAjwiA0ENTwRAIAUoAhAhCCAFKAIMDAELIAVBDGohCCADCyECAkACQAJAAkAgASAIIAIQ0wEiAUUEQCAEQf8BcUECRw0BIABBADYAACAAQQM6AAsgAEEDNgAHIABBAjoABiAAQQRqQQA7AAAMBAsgBEH/AXFBAkYNAQsgBUHIAGogBUHYAGooAgA2AgAgBSAFKQNQNwNADAELIAVByABqIAFBwQBqKAAANgIAIAUgASkAOTcDQCABLQA4IQQLIAAgBDoAACAAIAUpA0A3AAEgAEEJaiAFQcgAaigCADYAAAsgA0ENTwRAIAUoAhAgA0ECdEEEEI0GCyAGQYCAgIB4ckGAgICAeEcEQCAHIAZBAnRBBBCNBgsgBUHgAGokAA8LQQQgBkGE3MEAEOUFAAu9BQEJfyMAQUBqIgIkACAAAn8CQCABKAIUIgQgASgCECIFSQRAQQAgBWshAyAEQQVqIQQgAUEMaiEIIAEoAgwhBwNAIAQgB2oiBkEFay0AACIJQQlrIgpBF0tBASAKdEGTgIAEcUVyDQIgASAEQQRrNgIUIAMgBEEBaiIEakEFRw0ACwsgAkEFNgI0IAJBCGogAUEMahDABCAAIAJBNGogAigCCCACKAIMENUENgIEQQEMAQsgAAJ/AkACQAJAIAlB5gBrIgMEQCADQQ5HBEAgACABIAJBNGpB0NjBABBzIAEQiQQ2AgRBAQwGCyABIARBBGsiAzYCFCADIAVPDQMgASAEQQNrIgc2AhQCQCAGQQRrLQAAQfIARw0AIAcgAyAFIAMgBUsbIgVGDQQgASAEQQJrIgM2AhQgBkEDay0AAEH1AEcNACADIAVGDQQgASAEQQFrNgIUIAZBAmstAABB5QBGDQILIAJBCTYCNCACQRhqIAgQ7AQgAkE0aiACKAIYIAIoAhwQ1QQMBAsgASAEQQRrIgM2AhQgAyAFTw0BIAEgBEEDayIHNgIUAkACQCAGQQRrLQAAQeEARw0AIAcgAyAFIAMgBUsbIgVGDQMgASAEQQJrIgM2AhQgBkEDay0AAEHsAEcNACADIAVGDQMgASAEQQFrIgM2AhQgBkECay0AAEHzAEcNACADIAVGDQMgASAENgIUIAZBAWstAABB5QBGDQELIAJBCTYCNCACQShqIAgQ7AQgAkE0aiACKAIoIAIoAiwQ1QQMBAsgAEEAOgABQQAMBAsgAEEBOgABQQAMAwsgAkEFNgI0IAJBIGogCBDsBCACQTRqIAIoAiAgAigCJBDVBAwBCyACQQU2AjQgAkEQaiAIEOwEIAJBNGogAigCECACKAIUENUECzYCBEEBCzoAACACQUBrJAALlwUCC38BfiMAQTBrIgYkAAJAAkACQAJAIAAoAgAgASACIAMgBCAAKAIEKAIMEQUAIgpFBEBBACEKDAELIAIgCkkNASABQRRqKAIAIgIgAUEQaigCACIFIAIgBUkbIQggAiAFIAIgBUsbIQcgCkEBRwRAIAFBGGohBQJAIApBGGwiC0EwayIMQRhuQQFxBEAgBSECIAEhBQwBCyABQSxqKAIAIgIgAUEoaigCACIJIAIgCUsbIg0gByAHIA1JGyEHIAIgCSACIAlJGyICIAggAiAISRshCCABQTBqIQILIAxBGE8EQCABIAtqIQ0DQCACQSxqKAIAIgkgAkEoaigCACILIAkgC0sbIg4gBUEsaigCACIMIAVBKGooAgAiBSAFIAxJGyIPIAcgByAPSRsiByAHIA5JGyEHIAkgCyAJIAtJGyIJIAwgBSAFIAxLGyIFIAggBSAISRsiBSAFIAlLGyEIIAJBGGohBSACQTBqIgIgDUcNAAsLIAYgBzYCBCAGIAg2AgAgByAISQ0ECyADQQAgByAIRhsgAyAIQQJ0aiAEIAdJIAQgCE1yIgIbIgVFDQIgBkEIaiABIAogAyAEIAAoAggQRCAGKAIMIQACQEEAIAcgCGsgAhsiASAGKAIQRw0AIAAgBSABQQJ0EMwEDQAgBigCCCIBBEAgACABQQJ0QQQQjQYLQQAhCgwBCyAGKAIIIgFFDQAgACABQQJ0QQQQjQYLIAZBMGokACAKDwsgCiACQciVwgAQkwYAC0GQm8IAEJYGAAsgBkECNgIMIAZB2JrCADYCCCAGQgI3AhQgBkKAgICAwAAiECAGQQRqrYQ3AyggBiAQIAathDcDICAGIAZBIGo2AhAgBkEIakGAm8IAEK4FAAuMBQEIfwJAIAJBEEkEQCAAIQMMAQsCQCAAQQAgAGtBA3EiBmoiBSAATQ0AIAAhAyABIQQgBgRAIAYhBwNAIAMgBC0AADoAACAEQQFqIQQgA0EBaiEDIAdBAWsiBw0ACwsgBkEBa0EHSQ0AA0AgAyAELQAAOgAAIANBAWogBEEBai0AADoAACADQQJqIARBAmotAAA6AAAgA0EDaiAEQQNqLQAAOgAAIANBBGogBEEEai0AADoAACADQQVqIARBBWotAAA6AAAgA0EGaiAEQQZqLQAAOgAAIANBB2ogBEEHai0AADoAACAEQQhqIQQgA0EIaiIDIAVHDQALCyAFIAIgBmsiB0F8cSIIaiEDAkAgASAGaiIEQQNxRQRAIAMgBU0NASAEIQEDQCAFIAEoAgA2AgAgAUEEaiEBIAVBBGoiBSADSQ0ACwwBCyADIAVNDQAgBEEDdCICQRhxIQYgBEF8cSIJQQRqIQFBACACa0EYcSEKIAkoAgAhAgNAIAUgAiAGdiABKAIAIgIgCnRyNgIAIAFBBGohASAFQQRqIgUgA0kNAAsLIAdBA3EhAiAEIAhqIQELAkAgAyACIANqIgZPDQAgAkEHcSIEBEADQCADIAEtAAA6AAAgAUEBaiEBIANBAWohAyAEQQFrIgQNAAsLIAJBAWtBB0kNAANAIAMgAS0AADoAACADQQFqIAFBAWotAAA6AAAgA0ECaiABQQJqLQAAOgAAIANBA2ogAUEDai0AADoAACADQQRqIAFBBGotAAA6AAAgA0EFaiABQQVqLQAAOgAAIANBBmogAUEGai0AADoAACADQQdqIAFBB2otAAA6AAAgAUEIaiEBIANBCGoiAyAGRw0ACwsgAAvOBQEKfwJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCrAEiCARAIAAgCEEBayIJNgKsASAAIAAoAqgBIgogCUECdGooAgAiBTYCsAEgBSAAKAKgASIDTw0BIAAoApwBIgQgBUEFdGoiBiABNgIUIAYtAAAiAUElRw0FIAYoAhgiAkUNBANAAkACQCADIAIiAUsEQCAEIAFBBXRqIgItAAAiC0Ena0ECSQ0CIAtBJkYNAQwGCyABIANBlIrwABCVBAALIAJBGjoAAAwECyABIQcgAigCHCICDQALDAMLQaCC8AAQlgYACyAFIANBsILwABCVBAALIAciAUUNAQsgASADTw0CIAQgAUEFdGoiAigCHCEBIAJBADYCHCAEIAVBBXRqIAE2AhwgACABBH8gAQUgCUUNASAAIAhBAmsiATYCrAEgCiABQQJ0aigCAAs2ArABCyAAQQA2AgAgBi0AACEBCwJAAkACQCABQf8BcUEhaw4FAAgICAEICyAGLQACDQEMBwsgBi0AAUEBRw0GCyAEIAVBBXRqKAIYIgEEQANAIAEgA08NAyAEIAFBBXRqIgUoAhgiAgRAIAIgA08NBSAEIAJBBXRqIgEtAABBGkYEQCAFQRhqIAEoAhg2AgALQQAhBwNAAkACQCACIANJBEAgBCACQQV0aiIGLQAAQRpGDQEgAiEBDAILIAIgA0HkifAAEJUEAAsgAiEBIAYoAhgiAkUNACAHBEAgBCAHQQV0aiACNgIcCwNAIAIiASADTw0JIAQgAUEFdGooAhwiAg0ACwsgASADTw0IIAQgAUEFdGogBigCHCICNgIcIAEhByACDQALCyAFKAIcIgENAAsLIABBADYCAA8LIAEgA0GMvvAAEJUEAAsgASADQcSJ8AAQlQQACyACIANB1InwABCVBAALIAEgA0H0ifAAEJUEAAsgASADQYSK8AAQlQQACwuRBQEGfwJAAkAgAiADTwRAIAEgA2ohBgJAIAIgA0YNACACIANrIQggBi0AAEE8Rg0CA0AgBCAGai0AACIHQSFPBEACQAJAAkACQAJAIAdBKGsOAgMBAAsgB0HcAEYNAQwDCyAFRQ0FIAVBAWshBQwCCyAEQQFqIgcgCE8NASAGIAdqLAAAIglBAEgNASAHIAQgCUHwAXFBA3ZBxJPwAGovAQBBASAJQQ9xdHEbIQQMAQsgBUEgTQRAIAVBAWohBQwBCwwGCyAEQQFqIgQgCEkNAQsLIAUNAwsCQCADIARqIgUgBEkNAAJAIANFDQAgAiADTQRADAELIAYsAABBv39MDQELAkAgBUUNACACIAVNBEAgAiAFRw0CDAELIAEgBWosAABBv39MDQELIAAgBDYCCCAAIAY2AgQgACAENgIADwsgASACIAMgBUGEr/AAEPkFAAsgAyACQaSv8AAQkgYACwJAIAhBAkkNAEEBIQQCQAJAA0ACQAJAIAQgBmotAAAiBUHcAEcEQAJAIAVBCmsOBAgCAggACwJAIAVBPGsOAwgCAAILIANBAWoiBiADIARqIgNLDQUgBkUNBCACIAZLDQIgAiAGRw0FDAQLIARBAWoiBSAITw0AIAUgBmosAAAiB0EASA0AIAUgBCAHQfABcUEDdkHEk/AAai8BAEEBIAdBD3F0cRshBAsgBEEBaiIEIAhJDQEMBAsLIAEgBmosAABBv39MDQELAkAgA0UNACACIANNBEAgAiADRw0CDAELIAEgA2osAABBv39MDQELIAAgBEEBazYCCCAAIAEgBmo2AgQgACAEQQFqNgIADwsgASACIAYgA0GUr/AAEPkFAAsgAEEANgIEDwsgAEEANgIEC84FAgZ/An4CQCACRQ0AIAJBB2siA0EAIAIgA08bIQcgAUEDakF8cSABayEIQQAhAwNAAkACQAJAIAEgA2otAAAiBcAiBkEATgRAIAggA2tBA3ENASADIAdPDQIDQCABIANqIgQoAgQgBCgCAHJBgIGChHhxDQMgA0EIaiIDIAdJDQALDAILQoCAgICAICEKQoCAgIAQIQkCQAJAAn4CQAJAAkACQAJAAkACQAJAAkAgBUHrsPMAai0AAEECaw4DAAECCgsgA0EBaiIEIAJJDQJCACEKQgAhCQwJC0IAIQogA0EBaiIEIAJJDQJCACEJDAgLQgAhCiADQQFqIgQgAkkNAkIAIQkMBwsgASAEaiwAAEG/f0oNBgwHCyABIARqLAAAIQQCQAJAIAVB4AFrIgUEQCAFQQ1GBEAMAgUMAwsACyAEQWBxQaB/Rg0EDAMLIARBn39KDQIMAwsgBkEfakH/AXFBDE8EQCAGQX5xQW5HDQIgBEFASA0DDAILIARBQEgNAgwBCyABIARqLAAAIQQCQAJAAkACQCAFQfABaw4FAQAAAAIACyAGQQ9qQf8BcUECSyAEQUBOcg0DDAILIARB8ABqQf8BcUEwTw0CDAELIARBj39KDQELIAIgA0ECaiIETQRAQgAhCQwFCyABIARqLAAAQb9/Sg0CQgAhCSADQQNqIgQgAk8NBCABIARqLAAAQb9/TA0FQoCAgICA4AAMAwtCgICAgIAgDAILQgAhCSADQQJqIgQgAk8NAiABIARqLAAAQb9/TA0DC0KAgICAgMAACyEKQoCAgIAQIQkLIAAgCiADrYQgCYQ3AgQgAEEBNgIADwsgBEEBaiEDDAILIANBAWohAwwBCyACIANNDQADQCABIANqLAAAQQBIDQEgAiADQQFqIgNHDQALDAILIAIgA0sNAAsLIAAgAjYCCCAAIAE2AgQgAEEANgIAC64FAQx/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQCAAKAIIIghFDQAgACgCBCIKIAhBGGwiBmohByAKIQADQAJAIAAtAABBAUYEQCAAKAIEQQJrIgVBIUsgBUEJRnINAQsgAEEYaiEAIAFBAWohASAGQRhrIgYNAQwCCwtB+Y32AC0AABpBEEEEEPwFIgNFDQMgAyABNgIAIAJBATYCDCACIAM2AgggAkEENgIEAkAgBkEYRwRAIABBGGohAEEBIQQDQCABQQFqIQECQANAAkAgAC0AAEEBRgRAIAAoAgRBAmsiBUEhSyAFQQlGcg0BCyABQQFqIQEgAEEYaiIAIAdHDQEMAgsLIAIoAgQgBEYEQCACQQRqIARBAUEEQQQQ6gIgAigCCCEDCyADIARBAnRqIAE2AgAgAiAEQQFqIgQ2AgwgAEEYaiIAIAdHDQELCyACKAIIIQUgAigCBCELIARBAkkNASAEQQF2IQZBACEAIAUhAQNAIAAgBE8NByAAQQFqIARPDQggASgCACIMIAhPDQkgCiAMQRhsaiIDLQAAQQFHDQUgAUEEaigCACEJIAMoAgRBAmsiB0EhTSAHQQlHcQ0FIAMgCTYCCCADQQE2AgQgCCAJTQ0KIAogCUEYbGoiAy0AAEEBRw0EIAMoAgRBAmsiB0EhTSAHQQlHcQ0EIAMgDDYCCCADQQE2AgQgAUEIaiEBIABBAmohACAGQQFrIgYNAAsMAQsgAigCCCEFIAIoAgQhCwsgC0UNACAFIAtBAnRBBBCNBgsgAkEQaiQADwtB4N3BABCWBgALQfDdwQAQlgYAC0EEQRBBhNzBABDlBQALIAAgBEGg3cEAEJUEAAsgAEEBaiAEQbDdwQAQlQQACyAMIAhBwN3BABCVBAALIAkgCEHQ3cEAEJUEAAuKBgIBfwF8IwBBMGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAEEBaw4RAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkECNgIUIAJB4MvwADYCECACQgE3AhwgAiACQQhqrUKAgICA4CaENwMoIAIgAkEoajYCGCABKAIUIAEoAhggAkEQahDGAQwRCyACIAApAwg3AwggAkECNgIUIAJB/MvwADYCECACQgE3AhwgAiACQQhqrUKAgICAgBWENwMoIAIgAkEoajYCGCABKAIUIAEoAhggAkEQahDGAQwQCyACIAApAwg3AwggAkECNgIUIAJB/MvwADYCECACQgE3AhwgAiACQQhqrUKAgICA8CaENwMoIAIgAkEoajYCGCABKAIUIAEoAhggAkEQahDGAQwPCyAAKwMIIQMgAkECNgIUIAJBnMzwADYCECACQgE3AhwgAiACQShqrUKAgICAgCeENwMIIAIgAzkDKCACIAJBCGo2AhggASgCFCABKAIYIAJBEGoQxgEMDgsgAiAAKAIENgIIIAJBAjYCFCACQbjM8AA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgMAVhDcDKCACIAJBKGo2AhggASgCFCABKAIYIAJBEGoQxgEMDQsgAiAAKQIENwIIIAJBATYCFCACQdDM8AA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgJAnhDcDKCACIAJBKGo2AhggASgCFCABKAIYIAJBEGoQxgEMDAsgAUHMy/AAQQoQ9AUMCwsgAUHYzPAAQQoQ9AUMCgsgAUHizPAAQQwQ9AUMCQsgAUHuzPAAQQ4Q9AUMCAsgAUH8zPAAQQgQ9AUMBwsgAUGEzfAAQQMQ9AUMBgsgAUGHzfAAQQQQ9AUMBQsgAUGLzfAAQQwQ9AUMBAsgAUGXzfAAQQ8Q9AUMAwsgAUGmzfAAQQ0Q9AUMAgsgAUGzzfAAQQ4Q9AUMAQsgASAAKAIEIAAoAggQ9AULIAJBMGokAAuBBgEFfyAAQQhrIgEgAEEEaygCACIDQXhxIgBqIQICQAJAIANBAXENACADQQJxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUHwk/YAKAIARgRAIAIoAgRBA3FBA0cNAUHok/YAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCACIAA2AgAPCyABIAMQrgILAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkH0k/YAKAIARg0CIAJB8JP2ACgCAEYNAyACIANBeHEiAhCuAiABIAAgAmoiAEEBcjYCBCAAIAFqIAA2AgAgAUHwk/YAKAIARw0BQeiT9gAgADYCAA8LIAIgA0F+cTYCBCABIABBAXI2AgQgACABaiAANgIACyAAQYACSQ0CIAEgABDIAkEAIQFBiJT2AEGIlPYAKAIAQQFrIgA2AgAgAA0EQdCR9gAoAgAiAARAA0AgAUEBaiEBIAAoAggiAA0ACwtBiJT2AEH/HyABIAFB/x9NGzYCAA8LQfST9gAgATYCAEHsk/YAQeyT9gAoAgAgAGoiADYCACABIABBAXI2AgRB8JP2ACgCACABRgRAQeiT9gBBADYCAEHwk/YAQQA2AgALIABBgJT2ACgCACIDTQ0DQfST9gAoAgAiAkUNA0EAIQBB7JP2ACgCACIEQSlJDQJByJH2ACEBA0AgAiABKAIAIgVPBEAgAiAFIAEoAgRqSQ0ECyABKAIIIQEMAAsAC0Hwk/YAIAE2AgBB6JP2AEHok/YAKAIAIABqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAA8LIABB+AFxQdiR9gBqIQICf0Hgk/YAKAIAIgNBASAAQQN2dCIAcUUEQEHgk/YAIAAgA3I2AgAgAgwBCyACKAIICyEAIAIgATYCCCAAIAE2AgwgASACNgIMIAEgADYCCA8LQdCR9gAoAgAiAQRAA0AgAEEBaiEAIAEoAggiAQ0ACwtBiJT2AEH/HyAAIABB/x9NGzYCACADIARPDQBBgJT2AEF/NgIACwutBQEOfyMAQTBrIgQkAAJAAkACQAJAIAEoAgAiB0ECRg0AIAFBKGohBSABQRhqIQsgAUEIaiEGIAFBBGohCCABKAI0IQ0gASgCMCEOIAEoAiQhDwNAAkAgB0EBcQRAIAgoAgAiDARAIAEoAggiAiABKAIQRwRAIAYhAwwDCyABKAIMIgMEQCAMIANBAnRBBBCNBgsgCEEANgIACwJAIAEoAhQiDEUNACALIQMgASgCGCICIAEoAiBHDQIgASgCHCIDRQ0AIAwgA0ECdEEEEI0GCyABQQA2AgAgCCAEKQIQNwIAIAhBCGogBEEYaikCADcCACAIQRBqIARBIGopAgA3AgAgCEEYaiAEQShqKQIANwIAQQAhBwsgD0UNAiAFIgMoAgAiAiAORg0CCyADIAJBBGo2AgBBCiEDIAIoAgAiAiANKAIISQRAIAQgDSgCBCACQRhsaiICKQABNwMAIAQgAkEIaikAADcAByACLQAAIgNBC0YNAiACKAAQIQkgAigAFCEKCyADQQpGDQALIAQgBCkABzcAFyAEIAQpAwA3AxBBACEHIAEoAmgoAgwiBigCDCIBQQAgCSAKRhsgASAJQQJ0aiAKIAYoAhAiAUsgASAJTSAJIApLcnIiARsiBkUNAUEAIAogCWsgARsiAkECdCEFIAJB/////wNLIAVB/P///wdLcg0CAkAgBUUEQEEEIQtBACEBDAELQfmN9gAtAAAaQQQhByACIQEgBUEEEPwFIgtFDQMLIAsgBiAFEKwBIQYgAEEIaiAEKQAXNwAAIAAgBCkDEDcAASAAIAY2AhQgACABNgIQIAAgAzoAAEEYIQMMAwtBgICAgHghAkEQIQMMAgtBkJvCABCWBgALIAcgBUHIzsEAEOUFAAsgACADaiACNgIAIARBMGokAAvXBQELfyMAQRBrIgYkAEEIIQRBBCEFIAAgASgCEBEGACEIAkACQAJAAkACQAJAAkAgAkEBaw4CAgEAC0EAIQVB5I72ACgCAEUEQEHgjvYAKAIAQQJHDQVBvI32ACgCACECQbiN9gAoAgAhA0G0jfYAKAIAQQFGBH8gAyACKAIIQQFrQXhxakEIagUgAwsgCCACKAIQEQAAIQUMAwtB1I32AC0AAEHUjfYAQQA6AABBAUcNBEHEjfYAKAIAIgJB/v///wdLDQVBxI32ACACQQFqNgIAQciN9gAhA0HIjfYAKAIAIgJBAkYEQEG0jfYAQbiTwQBB4I72ACgCAEECRhsiAygCACECCyADKAIIIQQgAygCBCEDIAJBAXEEfyADIAQoAghBAWtBeHFqQQhqBSADCyAIIAQoAhARAAAhBUHUjfYAQQE6AABBxI32AEHEjfYAKAIAQQFrNgIADAILQQwhBEEIIQULIAMgBGooAgAiCkUNASADIAVqKAIAIQsgBkEIaiEMQQMhBQNAAkACfyALIAlBDGxqIgcoAgAiDUEBRgRAIAcoAgQiBEF/Rg0CIAQoAgAhAwJAA0AgA0UNBCADQQBIDQEgBCADQQFqIAQoAgAiAiACIANGIg4bNgIAIAIhAyAORQ0ACyAGIAcoAggiAzYCDCAGQQE2AgQgAygCCCECIAYgBDYCCCAEIAJBAWtBeHFqQQhqDAILEOAEAAsgBygCBCEEIAYgBygCCCIDNgIMIAYgBDYCCCAGQQA2AgQgBAshAkEBIAUgBUH/AXEiBSACIAggAygCEBEAACICQf8BcUcbIQMgBUEDRiEFAkAgDUUNACAEIAQoAgAiBEEBazYCACAEQQFHDQAgDBDxAwsgAiADIAUbIQULIAlBAWoiCSAKRw0ACwsgBUH/AXFBA0cNAQtBACEFCyAAIAUgASgCDBEBACAGQRBqJAAPC0GslMEAEMsEAAuDBQELfyMAQTBrIgUkAAJAIAEgAiADIAAoAsQBIghBBHEiDUECdiAIQYAgcUEMdiAAQZgBaiIOEF8EQEEBIQMMAQtBACEDIAJFIAhBAnFFcg0AIAJFIAEtAABB/ABHcg0AIAEgAmohCiABIQQDQCAHIQYgBEEBaiEDAkACQCAELQAAIgxB3ABHBEAgBkEBaiEHIAxB/ABGBEAgAyEEIAYhCyAJQQFqIQkMAwsgAyEEIAxBCmsOBAECAgECCwNAIAMgCkYEQEEAIQMMBQsgBkEBaiEGIAMtAAAhByADQQFqIgQhAyAHQdwARg0ACwJAAkACQCAHQQprDgQDAQEDAAsgB0H8AEYNAQsgBkEBaiEHDAILIAZBAWohBwwBCwJAAkACQAJAIAIgBk8EQEEAIQNBACEEAkAgAiAGRg0AQQEhBAJAIAEgBmoiBy0AAEEKaw4EAQMDAAMLIAIgBmtBAUYNAEECQQEgBy0AAUEKRhshBAsgBCAGaiIERQ0HIAIgBEkNAyAFQRhqQgA3AgAgBUIANwIQIAUgAiAEazYCDCAFIAEgBGo2AgggDiAFQQhqIA1BAEcgCEGEBHFBhARHcRBuIAAoAqwBRw0HIAIgBSgCECAEaiIASQ0EIAVBIGogACABaiACIABrEKEBIAUoAighBCAFKAIkIQAgBSgCIA0CIABFDQcgBCAAQQEQjQYMBwsgBiACQaCH8AAQkgYAC0HwhvAAEJYGAAsgBSgCLCEDIAEgAiAJQQAgCxCxAiAABEAgBCAAQQEQjQYLIANGIQMMBAsgBCACQZCH8AAQkgYACyAAIAJBgIfwABCSBgALQQAhAyAEIApHDQALCyAFQTBqJAAgAwvuBAEIfyMAQRBrIgUkAAJAAkACQCABIAJGDQBBBCACAn8gASwAACIDQQBOBEAgA0H/AXEhAyABQQFqDAELIAEtAAFBP3EhBCADQR9xIQYgA0FfTQRAIAZBBnQgBHIhAyABQQJqDAELIAEtAAJBP3EgBEEGdHIhBCADQXBJBEAgBCAGQQx0ciEDIAFBA2oMAQsgBkESdEGAgPAAcSABLQADQT9xIARBBnRyciIDQYCAxABGDQEgAUEEagsiAWtBA2oiBkECdkEBaiAGQRBJGyIHQQJ0IQQgB0H/////A0sgBEH8////B0tyDQFB+Y32AC0AABpBBCEIIARBBBD8BSIGRQ0BIAYgAzYCACAFQQE2AgwgBSAGNgIIIAUgBzYCBAJAIAEgAkYNACACQQNqIQpBBCEHQQEhBANAAn8gASwAACIDQQBOBEAgA0H/AXEhAyABQQFqDAELIAEtAAFBP3EhCSADQR9xIQggA0FfTQRAIAhBBnQgCXIhAyABQQJqDAELIAEtAAJBP3EgCUEGdHIhCSADQXBJBEAgCSAIQQx0ciEDIAFBA2oMAQsgCEESdEGAgPAAcSABLQADQT9xIAlBBnRyciIDQYCAxABGDQIgAUEEagshASAFKAIEIARGBEAgBUEEaiAEIAogAWtBAnZBAWpBBEEEEOcCIAUoAgghBgsgBiAHaiADNgIAIAUgBEEBaiIENgIMIAdBBGohByABIAJHDQALCyAAIAUpAgQ3AgAgAEEIaiAFQQxqKAIANgIADAILIABBADYCCCAAQoCAgIDAADcCAAwBCyAIIARB1ILAABDlBQALIAVBEGokAAvuBAEIfyMAQRBrIgUkAAJAAkACQCABIAJGDQBBBCACAn8gASwAACIDQQBOBEAgA0H/AXEhAyABQQFqDAELIAEtAAFBP3EhBCADQR9xIQYgA0FfTQRAIAZBBnQgBHIhAyABQQJqDAELIAEtAAJBP3EgBEEGdHIhBCADQXBJBEAgBCAGQQx0ciEDIAFBA2oMAQsgBkESdEGAgPAAcSABLQADQT9xIARBBnRyciIDQYCAxABGDQEgAUEEagsiAWtBA2oiBkECdkEBaiAGQRBJGyIHQQJ0IQQgB0H/////A0sgBEH8////B0tyDQFB+Y32AC0AABpBBCEIIARBBBD8BSIGRQ0BIAYgAzYCACAFQQE2AgwgBSAGNgIIIAUgBzYCBAJAIAEgAkYNACACQQNqIQpBBCEHQQEhBANAAn8gASwAACIDQQBOBEAgA0H/AXEhAyABQQFqDAELIAEtAAFBP3EhCSADQR9xIQggA0FfTQRAIAhBBnQgCXIhAyABQQJqDAELIAEtAAJBP3EgCUEGdHIhCSADQXBJBEAgCSAIQQx0ciEDIAFBA2oMAQsgCEESdEGAgPAAcSABLQADQT9xIAlBBnRyciIDQYCAxABGDQIgAUEEagshASAFKAIEIARGBEAgBUEEaiAEIAogAWtBAnZBAWpBBEEEEOoCIAUoAgghBgsgBiAHaiADNgIAIAUgBEEBaiIENgIMIAdBBGohByABIAJHDQALCyAAIAUpAgQ3AgAgAEEIaiAFQQxqKAIANgIADAILIABBADYCCCAAQoCAgIDAADcCAAwBCyAIIARBhNzBABDlBQALIAVBEGokAAvTBAIGfgR/IAAgACgCOCACajYCOAJAIAAoAjwiC0UEQAwBC0EEIQkCfkEIIAtrIgogAiACIApLGyIMQQRJBEBBACEJQgAMAQsgATUAAAshAyAMIAlBAXJLBEAgASAJajMAACAJQQN0rYYgA4QhAyAJQQJyIQkLIAAgACkDMCAJIAxJBH4gASAJajEAACAJQQN0rYYgA4QFIAMLIAtBA3RBOHGthoQiAzcDMCACIApPBEAgACAAKQMYIAOFIgQgACkDCHwiBiAAKQMQIgVCDYkgBSAAKQMAfCIFhSIHfCIIIAdCEYmFNwMQIAAgCEIgiTcDCCAAIAYgBEIQiYUiBEIViSAEIAVCIIl8IgSFNwMYIAAgAyAEhTcDAAwBCyAAIAIgC2o2AjwPCyACIAprIgJBB3EhCSACQXhxIgIgCksEQCAAKQMIIQQgACkDECEDIAApAxghBiAAKQMAIQUDQCAEIAYgASAKaikAACIHhSIGfCIEIAMgBXwiBSADQg2JhSIDfCIIIANCEYmFIQMgBCAGQhCJhSIEQhWJIAQgBUIgiXwiBYUhBiAIQiCJIQQgBSAHhSEFIApBCGoiCiACSQ0ACyAAIAM3AxAgACAGNwMYIAAgBDcDCCAAIAU3AwALQQQhAgJ+IAlBBEkEQEEAIQJCAAwBCyABIApqNQAACyEDIAkgAkEBcksEQCABIAJqIApqMwAAIAJBA3SthiADhCEDIAJBAnIhAgsgACACIAlJBH4gASACIApqajEAACACQQN0rYYgA4QFIAMLNwMwIAAgCTYCPAvTBAIGfgR/IAAgACgCOCACajYCOAJAIAAoAjwiC0UEQAwBC0EEIQkCfkEIIAtrIgogAiACIApLGyIMQQRJBEBBACEJQgAMAQsgATUAAAshAyAMIAlBAXJLBEAgASAJajMAACAJQQN0rYYgA4QhAyAJQQJyIQkLIAAgACkDMCAJIAxJBH4gASAJajEAACAJQQN0rYYgA4QFIAMLIAtBA3RBOHGthoQiAzcDMCACIApPBEAgACAAKQMYIAOFIgQgACkDCHwiBiAAKQMQIgVCDYkgBSAAKQMAfCIFhSIHfCIIIAdCEYmFNwMQIAAgCEIgiTcDCCAAIAYgBEIQiYUiBEIViSAEIAVCIIl8IgSFNwMYIAAgAyAEhTcDAAwBCyAAIAIgC2o2AjwPCyACIAprIgJBB3EhCSACQXhxIgIgCksEQCAAKQMIIQQgACkDECEDIAApAxghBiAAKQMAIQUDQCAEIAEgCmopAAAiByAGhSIEfCIGIAMgBXwiBSADQg2JhSIDfCIIIANCEYmFIQMgBiAEQhCJhSIEQhWJIAQgBUIgiXwiBYUhBiAIQiCJIQQgBSAHhSEFIApBCGoiCiACSQ0ACyAAIAM3AxAgACAGNwMYIAAgBDcDCCAAIAU3AwALQQQhAgJ+IAlBBEkEQEEAIQJCAAwBCyABIApqNQAACyEDIAkgAkEBcksEQCABIAJqIApqMwAAIAJBA3SthiADhCEDIAJBAnIhAgsgACACIAlJBH4gASACIApqajEAACACQQN0rYYgA4QFIAMLNwMwIAAgCTYCPAucBQIEfwV+IwBBgAFrIgQkACABvSEIAn9BAyABmUQAAAAAAADwf2ENABpBAiAIQoCAgICAgID4/wCDIglCgICAgICAgPj/AFENABogCEL/////////B4MiDEKAgICAgICACIQgCEIBhkL+////////D4MgCEI0iKdB/w9xIgUbIgpCAYMhCyAJUARAQQQgDFANARogBUGzCGshBUIBIQkgC1AMAQtCgICAgICAgCAgCkIBhiAKQoCAgICAgIAIUSIHGyEKQgJCASAHGyEJQct3Qcx3IAcbIAVqIQUgC1ALIQYgBCAFOwF4IAQgCTcDcCAEQgE3A2ggBCAKNwNgIAQgBjoAegJ/AkACQAJAIAZBAmsiBQRAQQEhBkHipvMAQeOm8wAgCEIAUyIHG0HipvMAQQEgBxsgAhshB0EBIAhCP4inIAIbIQJBAyAFIAVBA08bQQJrDgIDAgELIARBAzYCKCAEQeSm8wA2AiQgBEECOwEgQQEhB0EAIQJBASEGIARBIGoMAwsgBEEDNgIoIARB56bzADYCJCAEQQI7ASAgBEEgagwCCyAEQSBqIARB4ABqIgUgBEEPaiIGEEcCQCAEKAIgRQRAIARB0ABqIAUgBhAkDAELIARB2ABqIARBKGooAgA2AgAgBCAEKQIgNwNQCyAEIAQoAlAgBCgCVCAELwFYIAMgBEEgahCyAiAEKAIEIQYgBCgCAAwBC0ECIQYgBEECOwEgIAMEQCAEQQE2AjAgBEEAOwEsIARBAjYCKCAEQbmm8wA2AiQgBEEgagwBC0EBIQYgBEEBNgIoIARB6qbzADYCJCAEQSBqCyEFIAQgBjYCXCAEIAU2AlggBCACNgJUIAQgBzYCUCAAIARB0ABqENYBIARBgAFqJAALiwUCB38BfiMAQRBrIggkAAJAQciO9gAoAgANAEHIjvYAKQIAIQlByI72AEIBNwIAIAhBCGpB0I72ACgCADYCACAIIAk3AwAgCadFDQAgCEEEchCFAwsCQAJAAn9BzI72ACgCAEUEQBDHAQwBC0HQjvYAKAIACyAAKAIQRwRAQSAgAUH///8BcSICQSBqQQZ2Z2siAyAAKAIMTw0BIAAoAgggA0EUbGoiAygCACIARQ0BIAIgAygCEGsiBSADKAIETw0BIAFBHnYiBiAAIAVBOGxqIgQoAjAiAEEedkcNASABQR91QQFzIAZqQR50IQdBACEBA0AgBCAAQf////8DcSAHciAEKAIwIgIgACACRhs2AjACQCAAIAJHBEAgAiEADAELQQEhASACQfz///8DcQ0AIAQQnwEgAygCCCEAA0AgBCAANgI0IAMgBSADKAIIIgEgACABRiICGzYCCCABIQAgAkUNAAsMAwsgAUEBcSAAQR52IAZGcg0ACwwBC0EgIAFB////AXEiBEEgakEGdmdrIgMgACgCDE8NACADIAAoAgQiAk8NASAAKAIIIANBFGxqIgIoAgAiB0UNACAEIAIoAhBrIgUgAigCBE8NACABQR52IgYgByAFQThsaiIEKAIwIgJBHnZHDQAgACgCACADQQJ0aiEDIAFBH3VBAXMgBmpBHnQhB0EAIQEDQCAEIAJB/////wNxIAdyIAQoAjAiACAAIAJGGzYCMAJAIAAgAkcEQCAAIQIMAQtBASEBIABB/P///wNxDQAgBBCfASAEIAMoAgA2AjQgAyAFNgIADAILIAFBAXEgAkEediAGRnINAAsLIAhBEGokAA8LIAMgAkGY4MAAEJUEAAvEFQIUfwV+IwBBQGoiCyQAIAApAxAhFyALQgA3AwggC0IANwMAIAsgFzcDECALQQA6ADggC0Hoj/YAKQMANwMwIAtB4I/2ACkDADcDKCALQdiP9gApAwA3AyAgC0HQj/YAKQMANwMYIAFBAiALEIQCAn4gCy0AOEUEQCALKQMQDAELIAspAxggC0EIaikDAIUiF0L/////D4MgCykDECALKQMAhSIZQiCIfkIgiCAXQiCIIBl+hQshGyAAKAIIRQRAAkAgAEEQaiEFIwBBQGoiByQAIAAoAgwiCkF/RwRAAkAgACgCBCINIA1BAWoiDkEDdiIGQQdsIA1BCEkbIgxBAXYgCk0EQCAHQRAgCiAMIAogDEsbQQFqELUCIAcoAgQhCSAHKAIAIghFDQEgBygCCCEQIAAoAgAhBiAKBEAgCEEIaiESIAYpAwBCf4VCgIGChIiQoMCAf4MhFyAFKQMAIRkgBiEDIAohBQNAIBdQBEADQCAPQQhqIQ8gAykDCCADQQhqIQNCgIGChIiQoMCAf4MiF0KAgYKEiJCgwIB/UQ0ACyAXQoCBgoSIkKDAgH+FIRcLIAYgF3qnQQN2IA9qIhNBBHRrIgRBDGsoAgAhDCAEQRBrKAIAIAdCADcDCCAHQgA3AwAgByAZNwMQIAdBADoAOCAHQeiP9gApAwA3AzAgB0Hgj/YAKQMANwMoIAdB2I/2ACkDADcDICAHQdCP9gApAwA3AxggDCAHEIQCIAggCQJ+IActADhFBEAgBykDEAwBCyAHKQMYIAdBCGopAwCFIhhC/////w+DIAcpAxAgBykDAIUiGkIgiH5CIIggGEIgiCAafoULpyIUcSIEaikAAEKAgYKEiJCgwIB/gyIYUARAQQghDANAIAQgDGohBCAMQQhqIQwgCCAEIAlxIgRqKQAAQoCBgoSIkKDAgH+DIhhQDQALCyAXQgF9IBeDIRcgCCAYeqdBA3YgBGogCXEiDGosAABBAE4EQCAIKQMAQoCBgoSIkKDAgH+DeqdBA3YhDAsgCCAMaiAUQRl2IgQ6AAAgEiAMQQhrIAlxaiAEOgAAIAggDEF/c0EEdGoiBEEIaiAGIBNBf3NBBHRqIgxBCGopAAA3AAAgBCAMKQAANwAAIAVBAWsiBQ0ACwsgACAJNgIEIAAgCDYCACAAIBAgCms2AgggDUUNASAGIA5BBHQiA2sgAyANakEJakEIEI0GDAELIAAoAgAhCAJAIAYgDkEHcUEAR2oiBkUNACAGQQFHBEAgBkH+////A3EhBANAIAMgCGoiCSAJKQMAIhdCf4VCB4hCgYKEiJCgwIABgyAXQv/+/fv379+//wCEfDcDACAJQQhqIgkgCSkDACIXQn+FQgeIQoGChIiQoMCAAYMgF0L//v379+/fv/8AhHw3AwAgA0EQaiEDIARBAmsiBA0ACwsgBkEBcUUNACADIAhqIgMgAykDACIXQn+FQgeIQoGChIiQoMCAAYMgF0L//v379+/fv/8AhHw3AwALAkACQCAOQQhPBEAgCCAOaiAIKQAANwAADAELIAhBCGogCCAOEM8GGiAORQ0BCyAIQQhqIQ4gBSkDACEZQQAhAwNAAkAgCCADIgZqIg8tAABBgAFHDQAgCCADQQR0ayIFQQxrIRIgBUEQayETIAggA0F/c0EEdGohBQJAA0BB2I/2ACkDACEXQdCP9gApAwAhGCATKAIAIQQgDQJ+IBIoAgAiA0ERTwRAIANBgAJPBEAgBCADIBkgF0Hgj/YAKQMAQeiP9gApAwAgGBCeAQwCCyAEIAMgGSAXIBgQxgMMAQsCfiADQQdNBEACQCADQQNNBEAgAw0BIBkMAwsgFyADIARqQQRrNQAAhSEXIBkgBDUAAIUMAgsgBCADQQF2ajEAACADIARqQQFrMQAAQgiGhCAXhSEXIBkgBDEAAIUMAQsgAyAEakEIaykAACAXhSEXIAQpAAAgGYULIhpC/////w+DIBdCIIh+IBdC/////w+DIBpCIIh+QiCJhQsiF0L/AYUgGEIgiH4gGEL/////D4MgF0IgiH5CIIiFpyIQcSIJIQQgCCAJaikAAEKAgYKEiJCgwIB/gyIYUARAQQghAwNAIAMgBGohBCADQQhqIQMgCCAEIA1xIgRqKQAAQoCBgoSIkKDAgH+DIhhQDQALCyAIIBh6p0EDdiAEaiANcSIDaiwAAEEATgRAIAgpAwBCgIGChIiQoMCAf4N6p0EDdiEDCyADIAlrIAYgCWtzIA1xQQhPBEAgAyAIaiIELQAAIAQgEEEZdiIEOgAAIA4gA0EIayANcWogBDoAACAIIANBf3NBBHRqIQNB/wFGDQIgBS0AACEEIAUgAy0AADoAACAFLQABIQkgBSADLQABOgABIAUtAAIhECAFIAMtAAI6AAIgBS0AAyEUIAUgAy0AAzoAAyADIAQ6AAAgAyAJOgABIAMgEDoAAiADIBQ6AAMgBS0ABCEEIAUgAy0ABDoABCADIAQ6AAQgBS0ABSEEIAUgAy0ABToABSADIAQ6AAUgBS0ABiEEIAUgAy0ABjoABiADIAQ6AAYgBS0AByEEIAUgAy0ABzoAByADIAQ6AAcgBS0ACCEEIAUgAy0ACDoACCADIAQ6AAggBS0ACSEEIAUgAy0ACToACSADIAQ6AAkgBS0ACiEEIAUgAy0ACjoACiADIAQ6AAogBS0ACyEEIAUgAy0ACzoACyADIAQ6AAsgBS0ADCEEIAUgAy0ADDoADCADIAQ6AAwgBS0ADSEEIAUgAy0ADToADSADIAQ6AA0gBS0ADiEEIAUgAy0ADjoADiADIAQ6AA4gBS0ADyEEIAUgAy0ADzoADyADIAQ6AA8MAQsLIA8gEEEZdiIDOgAAIA4gBkEIayANcWogAzoAAAwBCyAPQf8BOgAAIA4gBkEIayANcWpB/wE6AAAgA0EIaiAFQQhqKQAANwAAIAMgBSkAADcAAAsgBkEBaiEDIAYgDUcNAAsLIAAgDCAKazYCCAsgB0FAayQADAELIAdBADYCECAHQQE2AgQgB0GM2sEANgIAIAdCBDcCCCAHQfjawQAQrgUACwsgG0IZiCIYQv8Ag0KBgoSIkKDAgAF+IRogG6chBiAAKAIEIQUgACgCACEKIAoCfwNAIAogBSAGcSIGaikAACIZIBqFIhdCf4UgF0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIXUEUEQANAAkAgCiAXeqdBA3YgBmogBXEiA0EEdGsiB0EMaygCAEECRw0AIAEvAAAgB0EQaygCAC8AAEcNAEEAIANrDAQLIBdCAX0gF4MiF1BFDQALCyAZQoCBgoSIkKDAgH+DIRdBASEDIBVBAUcEQCAXeqdBA3YgBmogBXEhESAXQgBSIQMLIBcgGUIBhoNQBEAgBiAWQQhqIhZqIQYgAyEVDAELCyAKIBFqLAAAIgZBAE4EQCAKIAopAwBCgIGChIiQoMCAf4N6p0EDdiIRai0AACEGCyAKIBFqIBinQf8AcSIDOgAAIAogEUEIayAFcWpBCGogAzoAACAAIAAoAgggBkEBcWs2AgggACAAKAIMQQFqNgIMIAogEUEEdGsiAEEQayABNgIAIABBDGtBAjYCAEEAIBFrC0EEdGoiAEEEa0EENgIAIABBCGsgAjYCACALQUBrJAALngUBCX8jAEFAaiICJAACQAJAAkACQAJAIAEoAhQiAyABKAIQIgZJBEAgAUEMaiEFIAEoAgwhBwNAIAMgB2otAAAiCEEJayIEQRlLDQRBASAEdEGTgIAEcUUEQCAEQRlHDQUgAkE0aiABEIUCIAItADQNBCACLQA1DQNBACEDIABBADoAAQwHCyABIANBAWoiAzYCFCADIAZHDQALCyACQQU2AjQgAkEQaiABQQxqEMAEIAAgAkE0aiACKAIQIAIoAhQQ1QQ2AgQMAwsgAEEBOgABQQAhAwwDCyAAIAIoAjg2AgQMAQsgCEH7AEcEQCACQQo2AjQgAkEIaiAFEMAEIAAgAkE0aiACKAIIIAIoAgwQ1QQ2AgQMAQsgASABLQAYQQFrIgQ6ABggBEH/AXEEQCABIANBAWo2AhQgAkE0aiABEIUCAkACQCACLQA0RQRAIAItADUhBiABEMMDIgMNASABEJICIgMNAUEBIQMgASABLQAYQQFqOgAYIAEoAhQiBCABKAIQIgdJBEAgBSgCACEIA0AgBCAIai0AACIJQQlrIgpBF0tBASAKdEGTgIAEcUVyDQQgASAEQQFqIgQ2AhQgBCAHRw0ACwsgAkEDNgI0IAJBKGogBRDsBCAAIAJBNGogAigCKCACKAIsENUENgIEDAULIAIoAjghAwsgACADNgIEQQEhAyABIAEtABhBAWo6ABgMAwsgCUH9AEYEQCAAIAY6AAEgASAEQQFqNgIUQQAhAwwDCyACQQo2AjQgAkEgaiAFEOwEIAAgAkE0aiACKAIgIAIoAiQQ1QQ2AgQMAQsgAkEYNgI0IAJBGGogBRDABCAAIAJBNGogAigCGCACKAIcENUENgIEC0EBIQMLIAAgAzoAACACQUBrJAAL+wYCCH8BfiMAQTBrIgQkACAEQRxqIQkgACgCACEDAkACQAJAA0ACQAJAAkACQCADQQNxIgZBAWsOAwEFAgALIAENAgsgBEEIahDrAyAEKQMIIQsgACAEQRhqIAZyIgcgACgCACIFIAMgBUYiCBs2AgAgBCADIAZrNgIgIAQgCzcCGCAEQQA6ACQCQAJAAkAgCEUEQEEAIAZrIQgDQCAFIgNBA3EgBkcNAgJAIAQoAhgiBUECRiAFRXINACAEKAIcIgUgBSgCACIFQQFrNgIAIAVBAUcNACAJEKsECyAEEOsDIAQpAwAhCyAAIAcgACgCACIFIAMgBUYiChs2AgAgBEEAOgAkIAQgAyAIajYCICAEIAs3AhggCkUNAAsLIAQtACRFBEADQEEAIQUjAEEQayIDJAACQAJAAn9BuJT2ACgCACIGQQJNBEAgAyAGEO8CIAMoAgAhBSADKAIEDAELIAZBCGshByAGQfiP9gBGIgZFBEBBASEFIAcgBygCACIIQQFqNgIAIAhBAEgNAgtB+I/2ACAHIAYbCyEGIAMgBTYCCCADIAY2AgwCQCAFRQ0AIAYgBigCACIFQQFrNgIAIAVBAUcNACADQQxqEKsECyADQRBqJAAMAQsACyAELQAkRQ0ACwsgBCgCGCIDQQJGIANFcg0CIAQoAhwiAyADKAIAIgNBAWs2AgAgA0EBRg0BDAILIAQoAhgiA0ECRiADRXINASAEKAIcIgMgAygCACIDQQFrNgIAIANBAUcNAQsgCRCrBAsgACgCACEDDAILA0AMAAsACyAAIANBAWogACgCACIFIAMgBUYbNgIAIAMgBUcgBSEDDQALIAEgAigCEBEGACECIAAoAgAhASAAQQJBACACGzYCACAEIAFBA3EiADYCFCAAQQFHDQEgAUEBayIBRQ0AIARBHGohBQNAIAEiACgCCCEBIAAoAgAhAiAAQQI2AgAgAkECRg0DIAAoAgQhAyAAQQE6AAwgBCADNgIcIAQgAjYCGAJAIAJFDQAgAyADKAIAIgBBAWs2AgAgAEEBRw0AIAUQqwQLIAENAAsLIARBMGokAA8LIARBADYCGCMAQRBrIgAkACAAQeycwQA2AgwgACAEQRRqNgIIQQAgAEEIakHcnMEAIABBDGpB3JzBACAEQRhqQeSdwQAQpgIAC0HUncEAEJYGAAuBRQI0fwF+IwBB0ABrIhEkAEGIj/YAKAIARQRAEOsBCwJAQYyP9gAoAgBFBEBBjI/2AEF/NgIAQZiP9gAoAgAiEEEobCEEQZSP9gAoAgAhCSABQf8BcSEHQYyP9gACfwJAA0AgBCAKRg0BIAkgCmogCkEoaiEKLQAAIAdHDQALQQAMAQsgEUEsaiABECggEUEnaiARQcwAaigCADYAACARQR9qIBFBxABqKQIANwAAIBFBF2ogEUE8aikCADcAACARQQ9qIBFBNGopAgA3AAAgESARKQIsNwAHQZCP9gAoAgAgEEYEf0EAIQlBACEEIwBBIGsiEyQAAkACQEGQj/YAKAIAIgpBf0YNAEEEIApBAXQiByAKQQFqIgUgBSAHSRsiBSAFQQRNGyIHrUIofiI4QiCIUEUNACA4pyIFQfz///8HSw0AIBMgCgR/IBMgCkEobDYCHCATQZSP9gAoAgA2AhRBBAVBAAs2AhggE0EIakEEIAUgE0EUahDYAyATKAIIQQFHDQEgEygCECEJIBMoAgwhBAsgBCAJQdicwgAQ5QUACyATKAIMIQVBkI/2ACAHNgIAQZSP9gAgBTYCACATQSBqJABBlI/2ACgCAAUgCQsgEEEobGoiBSARKQAENwABIAUgAToAACAFQQlqIBFBDGopAAA3AABBmI/2ACAQQQFqNgIAIAVBEWogEUEUaikAADcAACAFQRlqIBFBHGopAAA3AAAgBUEgaiARQSNqKQAANwAAQYyP9gAoAgBBAWoLIgo2AgBBiI/2ACgCAEUEQBDrAUGMj/YAKAIAIQoLIApB/v///wdNBEBBjI/2ACAKQQFqNgIAAkBBmI/2ACgCACIHRQ0AIAFB/wFxIgVBlI/2ACgCACIBLQAARwRAIAdBKGxBKGshCgNAIApFDQIgCkEoayEKIAFBKGoiAS0AACAFRw0ACwsgEUEEaiEZIAFBBGohDkEAIRAjAEHwAGsiBiQAAkACQAJAIANFDQACfyACLAAAIgdBAE4EQCAHQf8BcSELIAJBAWoMAQsgAi0AAUE/cSEBIAdBH3EhBSAHQV9NBEAgBUEGdCABciELIAJBAmoMAQsgAi0AAkE/cSABQQZ0ciEBIAdBcEkEQCABIAVBDHRyIQsgAkEDagwBCyAFQRJ0QYCA8ABxIAItAANBP3EgAUEGdHJyIgtBgIDEAEYNASACQQRqCyEBQQQgAiADaiIEIAFrQQNqIgJBAnZBAWogAkEQSRsiF0ECdCEDQQAhAiAXQf////8DSyADQfz///8HS3INAUH5jfYALQAAGkEEIQIgA0EEEPwFIhVFDQEgFSALNgIAQQEhECAGQQE2AiwgBiAVNgIoIAYgFzYCJCABIARGDQIgBEEDaiEFQQQhAwNAAkACfyABLAAAIglBAE4EQCAJQf8BcSECIAFBAWoMAQsgAS0AAUE/cSECIAlBH3EhByAJQV9NBEAgB0EGdCACciECIAFBAmoMAQsgAS0AAkE/cSACQQZ0ciECIAlBcEkEQCACIAdBDHRyIQIgAUEDagwBCyAHQRJ0QYCA8ABxIAEtAANBP3EgAkEGdHJyIgJBgIDEAEYNASABQQRqCyEBIAYoAiQgEEYEQCAGQSRqIBAgBSABa0ECdkEBakEEQQQQ7AIgBigCKCEVCyADIBVqIAI2AgAgBiAQQQFqIhA2AiwgA0EEaiEDIAEgBEcNAQsLIAYoAighFSAGKAIkIRcMAgtBBCEVDAELIAIgA0GEs+sAEOUFAAtBACECAkACQAJAAkAgEEH/////A0sgEEECdCIJQfz///8HS3INAAJAIAlFBEBBBCEBDAELQfmN9gAtAAAaQQQhAiAQIQ8gCUEEEPwFIgFFDQELIAEgFSAJEKwBIQcCQCAQIgFBAkkNAAJAIAFBFU8EQEEAIQQjAEGAIGsiBSQAAkACQCABQQF2IgNBgIn6ACABIAFBgIn6AE8bIgIgAiADSRsiA0GBCE8EQCABQQBIIANBAnQiCUH8////B0tyDQJB+Y32AC0AABpBBCEEIAlBBBD8BSICRQ0CIAcgASACIAMgAUHBAEkQYCACIAlBBBCNBgwBCyAHIAEgBUGACCABQcEASRBgCyAFQYAgaiQADAILIAQgCUH4r+sAEOUFAAsgB0EEaiEBAkAgEEEBcQRAIAEhBCAHIQEMAQsgBygCBCIFIAcoAgAiCEkEQEEAIQICfwNAIAIgB2pBBGogCDYCACAHIAJFDQEaIAUgAkEEayICIAdqIgMoAgAiCEkNAAsgA0EEagsgBTYCAAsgB0EIaiEECyAJQQhGDQAgByAJaiEJIARBBGohBQNAIAQoAgAiCiABKAIAIgNJBEAgBCECAn8DQCACIAM2AgAgByABIAdGDQEaIAEhAiAKIAFBBGsiASgCACIDSQ0ACyABQQRqCyAKNgIACyAEKAIEIgogBCgCACIDSQRAIAUhAQNAAkAgASADNgIAIAcgAUEEayICRgRAIAchAgwBCyABQQhrIQMgAiEBIAogAygCACIDSQ0BCwsgAiAKNgIACyAEQQRqIQEgBUEIaiEFIARBCGoiBCAJRw0ACwtBACECIAchAwNAIANBBGoiCiIBKAIAIAMoAgBGBEBBASACayEBQQIgAmsiCSIIIBBPDQIgAiAQaiIEQQNrIARBAXEEQEEDIAJrIQggA0EIaigCACICIAMoAgBHBH8gCiACNgIAIAkFIAELIQELRQ0CIBAgCGshAiAHIAhBAnRqIQMDQCADKAIAIgQgByABQQJ0aiIFQQRrKAIARwRAIAUgBDYCACABQQFqIQELIANBBGooAgAiBCAHIAFBAnRqIgVBBGsoAgBHBEAgBSAENgIAIAFBAWohAQsgA0EIaiEDIAJBAmsiAg0ACwwCCyABIQMgECACQQFrIgJqQQFHDQALIBAhAQtBACECIAFB/////wBLIAFBBHQiA0H8////B0tyDQECQCADRQRAQQQhFgwBC0H5jfYALQAAGkEEIQIgASEgIANBBBD8BSIWRQ0CCyABRQ0DIBBFDQIgByABQQJ0aiEhIBBBBXYgEEEfcUEAR2oiE0ECdCEaIAchAgNAIAIoAgAhDEEEIRICQCATRQ0AQfmN9gAtAAAaIBpBBBD8BSISDQBBBCAaQYSz6wAQ5QUACyACQQRqIQIgBiASNgIoIAYgEzYCJEEAIQkgECEFIBUhCgNAQQEhAUEgIAUgBUEgTxsiG0EBa0H/////A3EiHUEBaiIEQQNxIQtBACEIIAohAyAdQQNPBEAgBEH8////B3EhBANAIAFBACADKAIAIAxGGyAIciABQQF0QQAgA0EEaigCACAMRhtyIAFBAnRBACADQQhqKAIAIAxGG3IgAUEDdEEAIANBDGooAgAgDEYbciEIIANBEGohAyABQQR0IQEgBEEEayIEDQALCyALBEADQCABQQAgAygCACAMRhsgCHIhCCABQQF0IQEgA0EEaiEDIAtBAWsiCw0ACwsgG0ECdCAKaiEKIBIgCUECdGogCDYCACAJQQFqIQkgBSAbayIFDQALIAYgCTYCLCAJIBNGBEAgBkEkahCgAyAGKAIoIRIgEyEJCyASIAlBAnRqQQA2AgAgFiAUQQR0aiIBIAw2AgAgAUEMaiAJQQFqNgIAIAEgBikCJDcCBCAUQQFqIRQgAiAhRw0ACwwDCyACIAlB6K/rABDlBQALIAIgA0G0resAEOUFAAsgAUECdCICQQRrQQJ2QQFqIRQgBkEsaiEEIBYhASAHIQMDQCADKAIAIQUgBEEANgIAIAZCgICAgMAANwIkIAZBJGoQoAMgBigCKEEANgIAIAFBDGpBATYCACABQQRqIAYpAiQ3AgAgASAFNgIAIAFBEGohASADQQRqIQMgAkEEayICDQALCyAPBEAgByAPQQJ0QQQQjQYLAkACQAJAAkAgDigCGCIiBEAgEEEBaiIHIA4oAhQiHiAibmwiAUEDdCECQQAhCwJAIAFB/////wFLIAJB/P///wdLcg0AQQAhBEEEIQMgAgRAQfmN9gAtAAAaQQQhCyACEOMEIgNFDQEgASEEC0H5jfYALQAAGkGgBkEEEPwFIgUEQCAGIAc2AhwgBkEANgIYIAYgBTYCFCAGQeQANgIQIAYgATYCDCAGIAM2AgggBiAENgIEIAEEQAJAAkACQAJAAkACQCADKAIARQRAIAVCADcCACADQgE3AgBBASEIIAZBATYCGCAGQQA2AiAMAQsgBiADKAIEIgI2AiBBACEIIAINAQsgASAHTQ0EAn8gAyAHQQN0aiICKAIABEAgCCEJIAIoAgQMAQsgBSAIQQN0akIBNwIAIAIgCDYCBCACQQE2AgAgBiAIQQFqIgk2AhggCAshL0EAIQggAUH///8/SyABQQJ0QQNyIgNBA3QiAkH8////B0tyDQNB+Y32AC0AABpBBCEIIAIQ4wQiB0UNA0H5jfYALQAAGkHIAUEBEPwFIgVFDQJB+Y32AC0AABpBgKAGQQQQ/AUiAkUNASAGIAE2AlAgBkEANgJMIAZCADcCRCAGIAI2AkAgBkKAgICAwAw3AjggBiAFNgI0IAZB5AA2AjAgBiADNgIsIAYgBzYCKCAGIAM2AiQgCUUNCiAGQfAAaiEhIAZB7ABqIgFBA3IhGiABQQJyIRsgAUEBciEwIAZBEGohH0F/IA4oAhwiKHRBf3MhMSAWIBRBBHRqITIgDi0AICIzQQFqIR0gBkHcAGohKSAOKAIQISogDigCBCE0IA4oAgghKyAJIQFBASEDQQAhAgJAAkADQAJAAkACQCABIAJLBEAgBigCFCIPIAJBA3RqIgUoAgQhGCAFKAIAIgoEQEEBIQQgHSEFIBAgGGsiByAoTw0DIAcgCiAobGoiBSArTw0CIAUgNGotAAAiBSAzSyEEDAMLQQEhBCAdIQUMAgsgAiABQei56wAQlQQACyAFICtBvLrrABCVBAALIAogImwiIyAeTw0DIAMhEwJAICogI0EDdGoiAygCACISRQRAIAYoAgxFDREgBigCCCIDKAIABEAgAygCBCEBDAILAkACQCAGKAIQIAFHBEAgDyABQQN0akIANwIAIAYgAUEBaiIJNgIYDAELIB8QnwMgBigCFCABQQN0akIANwIAIAYgAUEBaiIJNgIYIAYoAgxFDQEgBigCCCEDCyADIAE2AgQgA0EBNgIADAILQQBBAEHYuesAEJUEAAsgAygCBCAYaiIKIAYoAhwgEmxqIgggBigCDCILTw0DIAhBA3QiByAGKAIIaiIDKAIABEAgAygCBCEBDAELIAYoAhAgAUYEfyAfEJ8DIAYoAgwhCyAGKAIUBSAPCyABQQN0aiIDIAo2AgQgAyASNgIAIAYgAUEBaiIJNgIYIAggC08NASAGKAIIIAdqIgMgATYCBCADQQE2AgALIAZB1ABqIQoCQAJAAkACQAJAAkACQAJAAkACQCACIAZBJGoiDigCLEkEQCAOKAIIIgsgAkECdCIHTQ0BAkAgDigCBCICIAdBA3RqIgMoAgAEQCADKAIEIQ8MAQsgDhDVASEPIA4oAggiCyAHTQ0DIA4oAgQiAiAHQQN0aiIDIA82AgQgA0EBNgIACwJAAkAgDigCFCIDIA9LBEAgDigCECAPQQF0aiIDIAU6AAEgAyAEOgAAIAsgAUECdCIETQ0GAkAgAiAEQQN0aiIBKAIABEAgASgCBCEIDAELIA4Q1QEhCCAOKAIIIgsgBE0NCCAOKAIEIgIgBEEDdGoiASAINgIEIAFBATYCAAsgCyAEQQFyIgxNDQkgAiAMQQN0aiIBKAIARQ0BIAEoAgQhBQwCCyAPIANB9LXrABCVBAALIA4Q1QEhBSAOKAIIIgsgDE0NCSAOKAIEIgIgDEEDdGoiASAFNgIEIAFBATYCAAsgBSAOKAIgIhJPDQkgDigCHCAFQQp0aiEBQYB4IQwDQCABIAxqIgNBnAhqIAg2AgAgA0GYCGogCDYCACADQZQIaiAINgIAIANBkAhqIAg2AgAgA0GMCGogCDYCACADQYgIaiAINgIAIANBhAhqIAg2AgAgA0GACGogCDYCACAMQSBqIgwNAAsMBQsjAEEQayIAJAAgAEHktesANgIMIABBJjYCCCAAQby16wA2AgQjAEEQayIBJAAgASAAQQRqIgApAgA3AgggAUEIakHgresAIAAoAghBAUEAEMcDAAsgByALQZy16wAQlQQACyAHIAtBrLXrABCVBAALIAQgC0GctesAEJUEAAsgBCALQay16wAQlQQACyALIARBAnIiDE0NAAJAIAIgDEEDdCIHaiIBKAIARQRAIA4Q1QEhAyAOKAIIIgsgDE0NBCAHIA4oAgQiAmoiASADNgIEIAFBATYCACAOKAIgIRIMAQsgASgCBCEDCyADIBJPBEAgAyEFDAQLIA4oAhwgA0EKdGohAUGAeCEMA0AgASAMaiIHQZwIaiAFNgIAIAdBmAhqIAU2AgAgB0GUCGogBTYCACAHQZAIaiAFNgIAIAdBjAhqIAU2AgAgB0GICGogBTYCACAHQYQIaiAFNgIAIAdBgAhqIAU2AgAgDEEgaiIMDQALIAsgBEEDciIMTQ0AAkAgAiAMQQN0IgdqIgEoAgBFBEAgDhDVASECIA4oAggiCyAMTQ0EIAcgDigCBGoiASACNgIEIAFBATYCACAOKAIgIRIMAQsgASgCBCECCyACIBJPBEAgAiEFDAQLIA4oAhwiByACQQp0aiEBQYB4IQwDQCABIAxqIgRBnAhqIAM2AgAgBEGYCGogAzYCACAEQZQIaiADNgIAIARBkAhqIAM2AgAgBEGMCGogAzYCACAEQYgIaiADNgIAIARBhAhqIAM2AgAgBEGACGogAzYCACAMQSBqIgwNAAsgDyASTw0BIAcgD0EKdGohBEGAeiEBA0AgASAEaiIHQZwGaiAINgIAIAdBmAZqIAg2AgAgB0GUBmogCDYCACAHQZAGaiAINgIAIAdBjAZqIAg2AgAgB0GIBmogCDYCACAHQYQGaiAINgIAIAdBgAZqIAg2AgAgAUEgaiIBDQALIAQgAjYC/AcgBCACNgL4ByAEIAI2AvQHIAQgAjYC8AcgBCACNgLsByAEIAI2AugHIAQgAjYC5AcgBCACNgLgByAEIAI2AtwHIAQgAjYC2AcgBCACNgLUByAEIAI2AtAHIAQgAjYCzAcgBCACNgLIByAEIAI2AsQHIAQgAjYCwAcgBCADNgK8ByAEIAM2ArgHIAQgAzYCtAcgBCADNgKwByAEIAM2AqwHIAQgAzYCqAcgBCADNgKkByAEIAM2AqAHIAQgAzYCnAcgBCADNgKYByAEIAM2ApQHIAQgAzYCkAcgBCADNgKMByAEIAM2AogHIAQgAzYChAcgBCADNgKAByAEIAU2AvwGIAQgBTYC+AYgBCAFNgL0BiAEIAU2AvAGIAQgBTYC7AYgBCAFNgLoBiAEIAU2AuQGIAQgBTYC4AYgBCAFNgLcBiAEIAU2AtgGIAQgBTYC1AYgBCAFNgLQBiAEIAU2AswGIAQgBTYCyAYgBCAFNgLEBiAEIAU2AsAGIAQgBTYCvAYgBCAFNgK4BiAEIAU2ArQGIAQgBTYCsAYgBCAFNgKsBiAEIAU2AqgGIAQgBTYCpAYgBCAFNgKgBiAEIAU2ApwGIAQgBTYCmAYgBCAFNgKUBiAEIAU2ApAGIAQgBTYCjAYgBCAFNgKIBiAEIAU2AoQGIAQgBTYCgAYgCiACNgIUIAogAzYCECAKIAU2AgwgCiAINgIIIAogDzYCBCAKIA42AgAMBAsgDCALQZy16wAQlQQACyAPIBJBhLbrABCVBAALIAwgC0GstesAEJUEAAsgBSASQZS26wAQlQQACyAUBEAgGEEfcSEsQQAgGGtBH3EhNSAYQQV2IhxBAWohJCAGKAJYIQcgHEECdCEtIAYoAlQiDUEYaiEuIBYhEgNAIBJBDGooAgAhAiASQQhqKAIAIQECQAJAAkACQAJAAkACQAJAAkACQCAiAn8gLEUEQCACIBxLBEAgASAtaigCAAwCCyAcIAJB/LHrABCVBAALIAIgHE0NCCACICRNDQEgASAkQQJ0aigCACA1dCABIC1qKAIAICx2cgsgMXEiAU0NASABICNqIgEgHk8NAgJAICogAUEDdGoiASgCACIERQRAIAYoAgxFDR0gBigCCCIBKAIABEAgASgCBCEPDAILQQEhASAGKAIYIg8gBigCEEYEQCAfEJ8DIAYoAgwhAQsgBigCFCAPQQN0akIANwIAIAYgD0EBajYCGCABBEAgBigCCCIBIA82AgQgAUEBNgIADAILQQBBAEHYuesAEJUEAAsgASgCBCAYaiIFIAYoAhwgBGxqIgkgBigCDCICTw0EIAlBA3QiAyAGKAIIaiIBKAIABEAgASgCBCEPDAELIAYoAhgiDyAGKAIQRgRAIB8QnwMgBigCDCECCyAGKAIUIA9BA3RqIgEgBTYCBCABIAQ2AgAgBiAPQQFqNgIYIAIgCU0NBSAGKAIIIANqIgEgDzYCBCABQQE2AgALIBIoAgAhASAGQQA2AmwgAUGAAUkNCAJ/AkAgAUGAEE8EQCABQYCABEkNASAGIAFBEnZB8AFyOgBsIAYgAUEGdkE/cUGAAXI6AG4gBiABQQx2QT9xQYABcjoAbUEEISUgISECIBoMAgsgBiABQQZ2QcABcjoAbEECISUgGyECIDAMAQsgBiABQQx2QeABcjoAbCAGIAFBBnZBP3FBgAFyOgBtQQMhJSAaIQIgGwsgAUE/cUGAAXI6AAAgAkEBayEmQQAhCSAGQewAaiEKIAchBQJAA0AgBSANKAIgIgFPDQcCQCAKLQAAQQJ0IjYgBUEKdCI3IA0oAhxqaigCACIEICkgJSAJQX9zaiIOQQJ0aigCAEYEQCANIA0oAigiBEEBaiIINgIoIA0gDSgCFCICIAhJBH8gCCACIgtrIicgDSgCDCACa0sEQCANQQxqIAIgJ0EBQQIQ7AIgDSgCFCELCyANKAIQIAtBAXRqIQEgJ0ECTwRAIAQgAmsiDEEHcSEDIAIgBGtBeE0EQCAMQXhxIQIDQCABQoH+h/if4P+AfzcACCABQoH+h/if4P+AfzcAACABQRBqIQEgAkEIayICDQALCyADBEADQCABQYH+AzsAACABQQJqIQEgA0EBayIDDQALCyALICdqQQFrIQsLIAFBgf4DOwAAIA0oAiAhASALQQFqBSAICzYCFCABIAhJBEAgCCABIgNrIgggDSgCGCABa0sEQCAuIAEgCEEEQYAIEOwCIA0oAiAhAwsgDSgCHCILIANBCnRqIQIgCEECTwRAIAJBACAEIAFrIgFBCnQQgwIaIAsgASADakEKdGohAiADIAhqQQFrIQMLIAJBAEGACBCDAhogA0EBaiEICyANIAg2AiAgBCAITw0BIA5BAWsiAkEETw0DIA0oAhwgBEEKdGohASApIAJBAnRqKAIAIQtBgHghAgNAIAEgAmoiA0GcCGogCzYCACADQZgIaiALNgIAIANBlAhqIAs2AgAgA0GQCGogCzYCACADQYwIaiALNgIAIANBiAhqIAs2AgAgA0GECGogCzYCACADQYAIaiALNgIAIAJBIGoiAg0ACyANKAIgIQELIAEgBU0NCSAJQQFqIQkgDSgCHCA3aiA2aiAENgIAIAQhBSAKQQFqIgogJkcNAQwMCwsgBCAIQcy06wAQlQQAC0F/QQRB3LTrABCVBAALICQgAkGcsusAEJUEAAtBzLrrAEE5QYi76wAQ7wQACyABIB5BmLvrABCVBAALIAkgAkG4uesAEJUEAAsgCSACQdi56wAQlQQACyAFIAFBvLTrABCVBAALIAUgAUGstOsAEJUEAAsgHCACQYyy6wAQlQQACyAGIAE6AGwgBkHsAGohJiAHIQQLAkACQCANKAIIIgEgD0ECdCIISwRAAkAgCEEDdCIPIA0oAgRqIgEoAgAEQCABKAIEIQUMAQsgDSANKAIoIgVBAWoiDDYCKCANIA0oAhQiAiAMSQR/IAwgAiIKayILIA0oAgwgAmtLBEAgDUEMaiACIAtBAUECEOwCIA0oAhQhCgsgDSgCECAKQQF0aiEBIAtBAk8EQCAFIAJrIglBB3EhAyACIAVrQXhNBEAgCUF4cSECA0AgAUKB/of4n+D/gH83AAggAUKB/of4n+D/gH83AAAgAUEQaiEBIAJBCGsiAg0ACwsgAwRAA0AgAUGB/gM7AAAgAUECaiEBIANBAWsiAw0ACwsgCiALakEBayEKCyABQYH+AzsAACAKQQFqBSAMCzYCFCANIA0oAiAiASAMSQR/IAwgASIDayIKIA0oAhggAWtLBEAgLiABIApBBEGACBDsAiANKAIgIQMLIA0oAhwiCSADQQp0aiECIApBAk8EQCACQQAgBSABayIBQQp0EIMCGiAJIAEgA2pBCnRqIQIgAyAKakEBayEDCyACQQBBgAgQgwIaIANBAWoFIAwLNgIgIA0oAggiASAITQ0CIA0oAgQgD2oiASAFNgIEIAFBATYCAAsgDSgCICIBIARLDQIgBCABQay06wAQlQQACyAIIAFBnLXrABCVBAALIAggAUGstesAEJUEAAsgDSgCHCAEQQp0aiAmLQAAQQJ0aiAFNgIAIBJBEGoiEiAyRw0ACyAGKAIYIQkLIBNBAWohAyAJIgEgEyICRw0BDA0LCyAIIAtB2LnrABCVBAALIAggC0G4uesAEJUEAAsgIyAeQZi76wAQlQQACyAGQQA2AiQjAEEQayIAJAAgAEGYuusANgIMIAAgBkEgajYCCEEAIABBCGpBjK/rACAAQQxqQYyv6wAgBkEkakGcuusAEKYCAAtBBEGAoAZBjLXrABDlBQALQQFByAFB/LTrABDlBQALIAggAkHstOsAEOUFAAsgByABQbi56wAQlQQACwwFC0EEQaAGQai56wAQ5QUACyALIAJBmLnrABDlBQALQay66wAQlQUACyAGKAIsIQMLAkAgL0ECdCIFIANJBEACQCAGKAIoIgMgBUEDdGoiASgCAARAIAEoAgQhAQwBCyAGQSRqENUBIQEgBigCLCICIAVNDQIgBigCKCAFQQN0aiICIAE2AgQgAkEBNgIAIAYoAighAwsgGSABNgIYIBkgBkE8aiIFKQIANwIAIBkgBkEwaiICKQIANwIMIBlBCGogBUEIaigCADYCACAZQRRqIAJBCGooAgA2AgAgBiABNgJIIAYoAiQiAQRAIAMgAUEDdEEEEI0GCyAGKAIEIgEEQCAGKAIIIAFBA3RBBBCNBgsgBigCECIBBEAgBigCFCABQQN0QQQQjQYLIBQEQCAWQQhqIQEDQCABQQRrKAIAIgIEQCABKAIAIAJBAnRBBBCNBgsgAUEQaiEBIBRBAWsiFA0ACwsgIARAIBYgIEEEdEEEEI0GCyAXBEAgFSAXQQJ0QQQQjQYLIAZB8ABqJAAMAwsgBSADQZy16wAQlQQACyAFIAJBrLXrABCVBAALQQBBAEG4uesAEJUEAAtBjI/2AEGMj/YAKAIAQQFrNgIAIBEoAgRBgICAgHhGDQMgACARKQIENwIAIABBGGogEUEcaigCADYCACAAQRBqIBFBFGopAgA3AgAgAEEIaiARQQxqKQIANwIAIBFB0ABqJAAPC0HonMIAEJYGAAtByMvBABDLBAALQdjLwQAQygQAC0GgysEAQcYAIBFBLGpBkMrBAEG4y8EAEIUEAAvMAgIGfwF+AkAgACgCCCIBIAAoAgQiAkYNACABIAJJBEAgACgCACIEIAFqLQAAIgNBIkYgA0HcAEZyIANBIElyDQEgBEEBaiEDQQAgAiABQQFqIgRrQXhxIgVrIQIDQCACRQRAIAAgBCAFajYCCAJAIAAoAggiASAAKAIEIgNPDQAgACgCACEEA0AgASAEai0AACICQSJGIAJB3ABGciACQSBJcg0BIAAgAUEBaiIBNgIIIAEgA0cNAAsLDwsgASADaiACQQhqIQIgAUEIaiEBKQAAIgdCf4UgB0LcuPHixYuXrtwAhUKBgoSIkKDAgAF9IAdCosSIkaLEiJEihUKBgoSIkKDAgAF9IAdCoMCAgYKEiJAgfYSEg0KAgYKEiJCgwIB/gyIHUA0ACyAAIAd6p0EDdiABakEHazYCCA8LIAEgAkGw+ekAEJUEAAsLxwUCBX8CfiMAQTBrIgIkAAJAAkACQCABKAIUIgMgASgCECIESQRAIAEoAgwhBQNAAkAgAyAFai0AACIGQQlrDiUAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQDBAsgASADQQFqIgM2AhQgAyAERw0ACwsgAkEFNgIYIAIgAUEMahDABCACQRhqIAIoAgAgAigCBBDVBCEBIABBAToAACAAIAE2AgQMAgsgASADQQFqNgIUIAJBCGogAUEAEJABAn8CQAJAIAIpAwgiCEIDUgRAIAIpAxAhBwJAAkAgCKdBAWsOAgABBAsgB0KAAlQNAiACQQE6ABggAiAHNwMgIAJBGGogAkEvakGwhcAAEOYDDAQLIAdCgAJUDQEgAkECOgAYIAIgBzcDICACQRhqIAJBL2pBsIXAABDmAwwDCyAAIAIoAhA2AgQgAEEBOgAADAQLIABBADoAACAAIAc8AAEMAwsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBsIXAABDlAwsgARCJBCEBIABBAToAACAAIAE2AgQMAQsgBkEwa0H/AXFBCk8EQCABIAJBL2pBsIXAABBzIAEQiQQhASAAQQE6AAAgACABNgIEDAELIAJBCGogAUEBEJABAn8CQAJAIAIpAwgiCEIDUgRAIAIpAxAhBwJAAkAgCKdBAWsOAgABBAsgB0KAAlQNAiACQQE6ABggAiAHNwMgIAJBGGogAkEvakGwhcAAEOYDDAQLIAdCgAJUDQEgAkECOgAYIAIgBzcDICACQRhqIAJBL2pBsIXAABDmAwwDCyAAIAIoAhA2AgQgAEEBOgAADAMLIABBADoAACAAIAc8AAEMAgsgAkEDOgAYIAIgBzcDICACQRhqIAJBL2pBsIXAABDlAwsgARCJBCEBIABBAToAACAAIAE2AgQLIAJBMGokAAuJCAIIfwZ+IwBBQGoiBCQAIARBCGogASABIAJqEIYBAn8gACgC5AEiBkEFTwRAIAAoAgQhAiAAKAIIDAELIAYhAiAAQQRqCyEBAkACQAJAIAJFDQAgBCgCECEFIAQoAjwiCEENTwRAIAJBOGwhAyAEKAIMIglBAnQhBwNAIAEoAjQiAkEMTQR/IAFBBGoFIAEoAgQhAiABKAIICyEKIAIgCUYEQCAKIAUgBxDMBEUNBAsgAUE4aiEBIANBOGsiAw0ACwwBCyAEQQxqIQkgAkE4bCEDIAhBAnQhBwNAAn8gASgCNCICQQ1PBEAgASgCBCECIAEoAggMAQsgAUEEagshCiACIAhGBEAgCiAJIAcQzARFDQMLIAFBOGohASADQThrIgMNAAsLQQQhAyAAQQRqIQgCfyAGQQVJBEAgAEHkAWohAiAIIQUgBgwBCyAAKAIIIQUgCCECIAYhAyAAKAIECyIBIANGBEAjAEEQayIFJAAgACgC5AEiAiEBAkACQAJAAkACQAJAIAJBBU8EQCAAKAIEIgFBf0YNAQtBfyABZ3ZBACABGyIHQQFqIglFDQBBBCEGIABBBGoiCiEDIAIiAUEFTwRAIAAoAgghAyABIQYgACgCBCEBCyABIAlLDQEgB0EETwRAIAYgCUYNBgJAAkACQCAJrUI4fiILQiCIpw0AIAunIgdBBBDHBUUNACACQQVJDQEgBq1COH4iC0IgiKcNACALpyICQQQQxwVFDQAgAyACQQQgBxDrBSICRQ0CDAgLQfCiwQBBEUGQ18EAEO8EAAtB+Y32AC0AABogB0EEEPwFIgINBQtBBCAHEMwGAAsgAkEFTw0CDAULQfCiwQBBEUHQ18EAELcEAAtB4NfBAEEgQYDYwQAQ7wQACyAAQQA2AgAgCiADIAFBOGwQrAEaIAAgATYC5AEgBq1COH4iC6chAQJAIAtCIIinDQAgAUEEEMcFRQ0AIAMgAUEEEI0GDAMLIAUgATYCDCAFQQA2AghBwMbBAEErIAVBCGpB8NbBAEGA18EAEIUEAAsgAiADIAFBOGwQrAEaCyAAIAk2AuQBIAAgAjYCCCAAIAE2AgQgAEEBNgIACyAFQRBqJAAgACgCCCEFIAghAiAAKAIEIQELIARBEGopAgAhCyAEQRhqKQIAIQwgBEEgaikCACENIARBKGopAgAhDiAEQTBqKQIAIQ8gBEE4aikCACEQIAUgAUE4bGoiACAEKQIINwIAIABBMGogEDcCACAAQShqIA83AgAgAEEgaiAONwIAIABBGGogDTcCACAAQRBqIAw3AgAgAEEIaiALNwIAIAIgAigCAEEBajYCAAwBCyAIQQ1JDQAgBSAIQQJ0QQQQjQYLIARBQGskAAuxBQIFfwJ+IwBBMGsiAiQAAkACQAJAAkAgASgCFCIEIAEoAhAiA0kEQCABKAIMIQUDQAJAIAQgBWotAAAiBkEJaw4lAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEAwQLIAEgBEEBaiIENgIUIAMgBEcNAAsLIAJBBTYCGCACIAFBDGoQwAQgAkEYaiACKAIAIAIoAgQQ1QQhBEEBIQMMAwtBASEDIAEgBEEBajYCFCACQQhqIAFBABCQAQJAIAIpAwgiCEIDUgRAIAIpAxAhBwJ/AkACQAJAIAinQQFrDgIAAQULIAdCgICAgBBUDQEgAkEBOgAYIAIgBzcDICACQRhqIAJBL2pB0IXAABDmAwwCCyAHQoCAgIAQVA0AIAJBAjoAGCACIAc3AyAgAkEYaiACQS9qQdCFwAAQ5gMMAQtBACEDIAenCyEEIAMNA0EAIQMMBAsgAigCECEEDAMLIAJBAzoAGCACIAc3AyAgAkEYaiACQS9qQdCFwAAQ5QMhBAwBCyAGQTBrQf8BcUEKTwRAQQEhAyABIAJBL2pB0IXAABBzIAEQiQQhBAwCC0EBIQMgAkEIaiABQQEQkAECQCACKQMIIghCA1IEQCACKQMQIQcCfwJAAkACQCAIp0EBaw4CAAEFCyAHQoCAgIAQVA0BIAJBAToAGCACIAc3AyAgAkEYaiACQS9qQdCFwAAQ5gMMAgsgB0KAgICAEFQNACACQQI6ABggAiAHNwMgIAJBGGogAkEvakHQhcAAEOYDDAELQQAhAyAHpwshBCADDQJBACEDDAMLIAIoAhAhBAwCCyACQQM6ABggAiAHNwMgIAJBGGogAkEvakHQhcAAEOUDIQQLQQEhAyAEIAEQiQQhBAsgACAENgIEIAAgAzYCACACQTBqJAAL+QQCBX8DfiMAQUBqIgUkAAJAIAJFBEBBACECDAELQQAhAgJ/AkAgA0EAIAFBFGooAgAiBiABQRBqKAIAIgFGIgcbIAMgAUECdGogASAGSyABIARPciAEIAZJciIJGyIEBEAgACgCACEDIAVBADYCCCAFQoCAgIAQNwIAQQEhACAHIAlyRQRAIAVBACAGIAFrIgJBAUEBEOoCA0AgBSAEKAIAEMMCIARBBGohBCACQQFrIgINAAsgBSgCCCECIAUoAgAhCCAFKAIEIQALIAMoAhRFDQEgAykDGCEKIAVCADcDCCAFQgA3AwAgBSAKNwMQIAVBADoAOCAFQeiP9gApAwA3AzAgBUHgj/YAKQMANwMoIAVB2I/2ACkDADcDICAFQdCP9gApAwA3AxggACACIAUQhAIgAygCDCIBAn4gBS0AOEUEQCAFKQMQDAELIAUpAxggBUEIaikDAIUiCkL/////D4MgBSkDECAFKQMAhSILQiCIfkIgiCAKQiCIIAt+hQsiCqdxIQQgCkIZiEL/AINCgYKEiJCgwIABfiEMIAMoAgghA0EAIQYDQCADIARqKQAAIgsgDIUiCkJ/hSAKQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIgpQRQRAA0ACQCADIAp6p0EDdiAEaiABcUEDdGsiB0EEaygCACACRw0AIAAgB0EIaygCACACEMwEDQBBAQwGCyAKQgF9IAqDIgpQRQ0ACwsgCyALQgGGg0KAgYKEiJCgwIB/g1BFDQIgBkEIaiIGIARqIAFxIQQMAAsAC0GQm8IAEJYGAAtBAAshAiAIRQ0AIAAgCEEBEI0GCyAFQUBrJAAgAgu5BAIHfwR+IABBCGohBSAAKAIAIgRBAWshAiABQT9xrSEKQQAhAQJAAkACQAJAA0AgASAERg0CIAFBgAZHBEAgACABaiIDQQhqMQAAIAlCCn58IgkgCohCAFINAiABIAJGDQMgAUECaiEBIANBCWoxAAAgCUIKfnwiCSAKiFANAQwECwtBgAZBgAZBhIHzABCVBAALIAFBAWohAQwBCyAJUA0BIAkgCohQRQRAIAQhAQwBCyAEIQEDQCABQQFqIQEgCUIKfiIJIAqIUA0ACwsgACAAKAIEIAFrQQFqIgI2AgQCQAJAIAJBgXBOBEBCfyAKhkJ/hSEMQQAhAiABIARJBEBBACEDQYAGIAFrIgJBACACQYAGTRshBiABIARrIQcgASAFaiEIIAQgAWshAgNAIAMgBkYEQCABIANqQYAGQZSB8wAQlQQACyADIAhqMQAAIAMgBWogCSAKiDwAACAJIAyDQgp+fCEJIAcgA0EBaiIDag0ACwsgCVANAQNAIAkiCyAMg0IKfiEJIAsgCoinIQECQCACQYAGTwRAIAFB/wFxRQ0BIABBAToAiAYMAQsgAiAFaiABOgAAIAJBAWohAgsgCUIAUg0ACyAAIAI2AgAMAgsgAEEAOgCIBiAAQgA3AgAMAgsgACACNgIAIAJFDQELIAJBgAZNBEAgAkEHaiEBA0AgACABai0AAA0CIAAgAUEIazYCACABQQFrIgFBB0cNAAsMAQsgAkEBa0GABkHkgPMAEJUEAAsL6wQBCn8jAEEwayIDJAAgA0EDOgAsIANBIDYCHCADQQA2AiggAyABNgIkIAMgADYCICADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECIKRQRAIAIoAgwiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEHIAIoAgAhAANAIABBBGooAgAiBQRAIAMoAiAgACgCACAFIAMoAiQoAgwRAwANBAsgASgCACADQQxqIAEoAgQRAAANAyAAQQhqIQAgAUEIaiIBIARHDQALDAELIAIoAhQiAEUNACAAQQV0IQsgAEEBa0H///8/cUEBaiEHIAIoAgghBSACKAIAIQADQCAAQQRqKAIAIgEEQCADKAIgIAAoAgAgASADKAIkKAIMEQMADQMLIAMgCCAKaiIBQRBqKAIANgIcIAMgAUEcai0AADoALCADIAFBGGooAgA2AiggAUEMaigCACEEQQAhCUEAIQYCQAJAAkAgAUEIaigCAEEBaw4CAAIBCyAEQQN0IAVqIgwoAgANASAMKAIEIQQLQQEhBgsgAyAENgIQIAMgBjYCDCABQQRqKAIAIQQCQAJAAkAgASgCAEEBaw4CAAIBCyAEQQN0IAVqIgYoAgANASAGKAIEIQQLQQEhCQsgAyAENgIYIAMgCTYCFCAFIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABKAIEEQAADQIgAEEIaiEAIAsgCEEgaiIIRw0ACwsgByACKAIETw0BIAMoAiAgAigCACAHQQN0aiIAKAIAIAAoAgQgAygCJCgCDBEDAEUNAQtBAQwBC0EACyADQTBqJAALrgUBBH8jAEHwAGsiACQAENQEIgEtAAQhAiABQQE6AAQgACACOgAoAkAgAkEBRwRAAkAgASgCFCICQQFNBEAgAUEAOgAEENQEIgEgASgCACICQQFqNgIAIAAgAjYCHCACQYACSQ0BQbCQ9gAoAgBB/////wdxRQ0DEOAGDQMgAEEQahDrAyAAIAApAxA3AiAgAEEIaiAAQSBqENIEIAAgACgCDEEJIAAoAggiARs2AmQgACABQdDZwAAgARs2AmAgAELc18CAwAA3A1ggACAAQegAaq1CgICAgMAHhDcDUCAAIABBHGqtQoCAgIDAAIQ3A0ggACAAQeAAaq1CgICAgMAHhDcDQCAAQQU2AiwgAEG428AANgIoIABCBDcCNCAAQSA2AmwgAEG818AANgJoIAAgAEFAazYCMCAAQShqEMgDAkAgACgCIEUNACAAKAIkIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQSRqEKsECyAAKAIcIQIMAQsgASACQQFrNgIUIAEoAgwgASgCECIDQQJ0aigCACECIAFBADoABCABIANBAWoiAyABKAIIIgFBACABIANNG2s2AhALQdCO9gAgAjYCAEHMjvYAQQE2AgAgAEHwAGokACACDwsgAEIANwJMIABCgYCAgMAANwJEIABB6OPAADYCQCMAQRBrIgEkACABQfDjwAA2AgwgASAAQShqNgIIQQAgAUEIakHI5cAAIAFBDGpByOXAACAAQUBrQdDkwAAQpgIACyAAQQQ2AiwgAEHA2MAANgIoIABCAzcCNCAAQSA2AmwgAEG818AANgJoIABC3NfAgMAANwNQIAAgAEHoAGqtQoCAgIDAB4Q3A0ggACAAQRxqrUKAgICAwACENwNAIAAgAEFAazYCMCAAQShqQcDZwAAQrgUAC+4EAQF/IwBB8ABrIgQkACAEIAM2AhwgBCACNgIYIARBEGogARCEBQJAAkACQAJAIAQoAhRBB0YEQCAEKAIQQavuwABBBxDMBEUNAQsCQCAALQAMRQRAIAAoAggiAyAAKAIARgRAIAAgA0EBQQFBARDpAiAAKAIIIQMLIAAoAgQgA2pBIDoAACAAIANBAWo2AgggAEEBOgAMDAELIAAoAggiAyAAKAIARgRAIAAgA0EBQQFBARDpAiAAKAIIIQMLIAAgA0EBajYCCCAAKAIEIANqQQo6AAALIARBCGogARCEBSAEIARBGGqtQoCAgICwCIQ3A1ggBCAEQeQAaq1CgICAgMAHhDcDUCAEQQM2AjwgBEH87sAANgI4IARCAjcCRCAEIAQpAwg3AmQgBCAEQdAAajYCQCAAQaTnwAAgBEE4ahDGAQ0BDAMLIAAoAghFDQEgBEECNgI8IARBrO/AADYCOCAEQgI3AkQgBCAArUKAgICA8AeENwNYIAQgBEEYaq1CgICAgLAIhDcDUCAEIARB0ABqNgJAIARBIGogBEE4ahCfAiAAKAIAIgEEQCAAKAIEIAFBARCNBgsgACAEKQIgNwIAIABBCGogBEEoaigCADYCAAwCC0HM7sAAQSsgBEHvAGpBvO7AAEGU78AAEIUEAAsgBEEBNgI8IARBpO/AADYCOCAEQgE3AkQgBCAEQRhqrUKAgICAsAiENwNQIAQgBEHQAGo2AkAgBEEsaiAEQThqEJ8CIAAoAgAiAQRAIAAoAgQgAUEBEI0GCyAAIAQpAiw3AgAgAEEIaiAEQTRqKAIANgIACyAEQfAAaiQAC64FAQR/IwBB8ABrIgAkABDUBCIBLQAEIQIgAUEBOgAEIAAgAjoAKAJAIAJBAUcEQAJAIAEoAhQiAkEBTQRAIAFBADoABBDUBCIBIAEoAgAiAkEBajYCACAAIAI2AhwgAkGAAkkNAUGwkPYAKAIAQf////8HcUUNAxDgBg0DIABBEGoQ6wMgACAAKQMQNwIgIABBCGogAEEgahDSBCAAIAAoAgxBCSAAKAIIIgEbNgJkIAAgAUH08sAAIAEbNgJgIABCgPHAgMAANwNYIAAgAEHoAGqtQoCAgICgDoQ3A1AgACAAQRxqrUKAgICAwACENwNIIAAgAEHgAGqtQoCAgICgDoQ3A0AgAEEFNgIsIABB3PTAADYCKCAAQgQ3AjQgAEEgNgJsIABB4PDAADYCaCAAIABBQGs2AjAgAEEoahDIAwJAIAAoAiBFDQAgACgCJCIBIAEoAgAiAUEBazYCACABQQFHDQAgAEEkahCrBAsgACgCHCECDAELIAEgAkEBazYCFCABKAIMIAEoAhAiA0ECdGooAgAhAiABQQA6AAQgASADQQFqIgMgASgCCCIBQQAgASADTRtrNgIQC0HQjvYAIAI2AgBBzI72AEEBNgIAIABB8ABqJAAgAg8LIABCADcCTCAAQoGAgIDAADcCRCAAQcD3wAA2AkAjAEEQayIBJAAgAUHI98AANgIMIAEgAEEoajYCCEEAIAFBCGpBvPnAACABQQxqQbz5wAAgAEFAa0Go+MAAEKYCAAsgAEEENgIsIABB5PHAADYCKCAAQgM3AjQgAEEgNgJsIABB4PDAADYCaCAAQoDxwIDAADcDUCAAIABB6ABqrUKAgICAoA6ENwNIIAAgAEEcaq1CgICAgMAAhDcDQCAAIABBQGs2AjAgAEEoakHk8sAAEK4FAAujBAEIfyADQQhPBEAgACAAIANBA3YiA0HgAWwiBGogACADQYgDbCIFaiADEMoBIQAgASABIARqIAEgBWogAxDKASEBIAIgAiAEaiACIAVqIAMQygEhAgsCfyAAKAI0IgVBDU8EQCAAKAIEIQQgACgCCAwBCyAFIQQgAEEEagshAyAEAn8gASgCNCIIQQ1PBEAgASgCCCEGIAEoAgQMAQsgAUEEaiEGIAgLIgcgBCAHSSIKG0EBaiEEAkADQCAEQQFrIgRFDQEgBigCACEHIAMoAgAhCSADQQRqIQMgBkEEaiEGIAcgCUYNAAsgByAJSyEKCwJ/IAVBDU8EQCAAKAIEIQUgACgCCAwBCyAAQQRqCyEDIAUCfyACKAI0IgdBDU8EQCACKAIIIQYgAigCBAwBCyACQQRqIQYgBwsiBCAEIAVLIgUbQQFqIQQCQANAIARBAWsiBEUNASAGKAIAIQkgAygCACELIANBBGohAyAGQQRqIQYgCSALRg0ACyAJIAtLIQULIAUgCkYEfwJ/IAhBDU8EQCABKAIEIQggASgCCAwBCyABQQRqCyEDAn8gB0ENTwRAIAIoAgQhByACKAIIDAELIAJBBGoLIQYgCCAHIAcgCEsiABtBAWohBAJAA0AgBEEBayIERQ0BIAYoAgAhBSADKAIAIQggA0EEaiEDIAZBBGohBiAFIAhGDQALIAUgCEshAAsgAiABIAAgCnMbBSAACwujBAEIfyADQQhPBEAgACAAIANBA3YiA0GgAmwiBGogACADQfgDbCIFaiADEMsBIQAgASABIARqIAEgBWogAxDLASEBIAIgAiAEaiACIAVqIAMQywEhAgsCfyAAKAI0IgVBDU8EQCAAKAIEIQQgACgCCAwBCyAFIQQgAEEEagshAyAEAn8gASgCNCIIQQ1PBEAgASgCCCEGIAEoAgQMAQsgAUEEaiEGIAgLIgcgBCAHSSIKG0EBaiEEAkADQCAEQQFrIgRFDQEgBigCACEHIAMoAgAhCSADQQRqIQMgBkEEaiEGIAcgCUYNAAsgByAJSyEKCwJ/IAVBDU8EQCAAKAIEIQUgACgCCAwBCyAAQQRqCyEDIAUCfyACKAI0IgdBDU8EQCACKAIIIQYgAigCBAwBCyACQQRqIQYgBwsiBCAEIAVLIgUbQQFqIQQCQANAIARBAWsiBEUNASAGKAIAIQkgAygCACELIANBBGohAyAGQQRqIQYgCSALRg0ACyAJIAtLIQULIAUgCkYEfwJ/IAhBDU8EQCABKAIEIQggASgCCAwBCyABQQRqCyEDAn8gB0ENTwRAIAIoAgQhByACKAIIDAELIAJBBGoLIQYgCCAHIAcgCEsiABtBAWohBAJAA0AgBEEBayIERQ0BIAYoAgAhBSADKAIAIQggA0EEaiEDIAZBBGohBiAFIAhGDQALIAUgCEshAAsgAiABIAAgCnMbBSAACwv1BAEEfyMAQSBrIgQkAAJAIAFFDQAgAUEESQRAIAAoAlwiBiAAKAJURgRAIABB1ABqQbCR8AAQjQMLIAAgBkEBajYCXCAAKAJYIAZBDGxqIgUgATYCCCAFQdyB8AA2AgQgBUEBOgAAIAQgAjYCHCAEIAI2AhggBCAGNgIMIARBEzoACCAAQZgBaiAEQQhqEI4DGgwBC0HcgfAAQQNBACABQeCB8AAQ+QUACwJAAkACQAJAAkACQCADQQJrIgEgACgClAEiBkkEQCAAQZgBaiEGIAAoApABIAFqLQAAQQ1HDQMgASACTQ0FIAAoArABIgVFDQQgBSAAKAKgASIHTw0BIAAoApwBIAVBBXRqIgUtAABBFkYNAgwECyABIAZB8IHwABCVBAALIAUgB0HAjvAAEJUEAAsgBSgCFCACRw0BIAUgATYCFAwCCyACIANPDQICQCAAKAKwASIBRQ0AAkAgACgCoAEiBSABSwRAIAAoApwBIAFBBXRqIgAtAABBFkYNAQwCCyABIAVBwI7wABCVBAALIAAoAhQgAkcNACAAIAM2AhQMAwsgBCADNgIcIAQgAjYCGCAEQRY7AQggBiAEQQhqEI4DGgwCCyAEIAE2AhwgBCACNgIYIARBFjsBCCAGIARBCGoQjgMaCyADRQ0AIANBAWshAgJAIAAoArABIgFFDQACQCAAKAKgASIFIAFLBEAgACgCnAEgAUEFdGoiAC0AAEEWRg0BDAILIAEgBUHAjvAAEJUEAAsgACgCFCACRw0AIAAgAzYCFAwBCyAEIAM2AhwgBCACNgIYIARBFjsBCCAGIARBCGoQjgMaCyAEQSBqJAAL1gQBA38gACgCAEF/cyEEIAJBEE8EQANAIAEoAAAgBHMiA0EWdkH8B3FB2KrsAGooAgAgAS0ABEECdEHYouwAaigCACABLQAFQQJ0Qdia7ABqKAIAIAEtAAZBAnRB2JLsAGooAgAgAS0AB0ECdEHYiuwAaigCACABLQAIQQJ0QdiC7ABqKAIAIAEtAAlBAnRB2PrrAGooAgAgAS0ACkECdEHY8usAaigCACABLQALQQJ0Qdjq6wBqKAIAIAEtAAxBAnRB2OLrAGooAgAgAS0ADUECdEHY2usAaigCACABLQAOQQJ0QdjS6wBqKAIAIAEtAA9BAnRB2MrrAGooAgBzc3Nzc3Nzc3Nzc3MgA0EOdkH8B3FB2LLsAGooAgBzIANBBnZB/AdxQdi67ABqKAIAcyADQf8BcUECdEHYwuwAaigCAHMhBCABQRBqIQEgAkEQayICQQ9LDQALCwJAIAJFDQACQCACQQNxIgVFBEAgASEDDAELIAEhAwNAIAMtAAAgBHNB/wFxQQJ0QdjC6wBqKAIAIARBCHZzIQQgA0EBaiEDIAVBAWsiBQ0ACwsgAkEESQ0AIAEgAmohAQNAIAMtAAAgBHNB/wFxQQJ0QdjC6wBqKAIAIARBCHZzIgIgA0EBai0AAHNB/wFxQQJ0QdjC6wBqKAIAIAJBCHZzIgIgA0ECai0AAHNB/wFxQQJ0QdjC6wBqKAIAIAJBCHZzIgIgA0EDai0AAHNB/wFxQQJ0QdjC6wBqKAIAIAJBCHZzIQQgA0EEaiIDIAFHDQALCyAAIARBf3M2AgALrwQCCn8EfgJAIAAoAgAiBkUNAAJAAkACQCABQT9xIgdBAXQiAkHEgfMAai8BACIBQf8PcSIFQZ0KSQRAIAFBC3YhA0EAIAZrIQggAEEIaiEJIAUgAkHGgfMAai8BAEH/D3FrIQpB5HUhAQNAIAEgCmpB5HVGDQQgASAFaiILRQ0EIAEgCGpB5HVGDQIgAUHke0YNAyABIAlqIAFBAWohAUGcCmotAAAiBCALQeKM8wBqLQAAIgJGDQALIAMgAiAES2shAwwDCyAFQZwKQeSM8wAQkgYACyADQQFrIQMMAQtBgAZBgAZB9IzzABCVBAALIAZBAWshASAAQQdqIgQgA2ohAiAHrSEOA0ACQAJAIAFBAWpBgQZJBEAgASAEakEBajEAACAOhiAMfCIPIA9CCoAiDEJ2fnwhDSABIANqQYAGSQ0BIA1QDQIgAEEBOgCIBgwCCyABQYAGQfSA8wAQlQQACyABIAJqQQFqIA08AAALIAFBAWsiAUF/Rw0ACyAPQgpaBEAgAEEHaiEEIAMhAQNAIAwiDiAMQgqAIgxCdn58IQ0CQCABIgJBAWsiAUGABk8EQCANUA0BIABBAToAiAYMAQsgAiAEaiANPAAACyAOQgpaDQALCyAAIAAoAgQgA2o2AgQgAEGABiAAKAIAIANqIgIgAkGABk8bIgE2AgAgAkUNACABQQdqIQEDQCAAIAFqLQAADQEgACABQQhrNgIAIAFBAWsiAUEHRw0ACwsL3gQBBH8CQAJAAkACQAJAAkACQAJAIAAtAABBAWsOEwAGAQYGBgIGBgYDBgYGBgYGBAUGCwJAIAAtAAQiAUEDRiABcg0AIAAoAgwiAUUNACAAKAIIIAFBARCNBgsgACgCFCEDIAAoAhgiBARAIAMhAQNAAkAgAS0AAA0AIAFBCGooAgAiAkUNACABQQRqKAIAIAJBARCNBgsgAUEMaiEBIARBAWsiBA0ACwsgACgCECIBBEAgAyABQQxsQQQQjQYLIAAoAiAhAyAAKAIkIgQEQCADIQEDQAJAIAEtAAANACABQQhqKAIAIgJFDQAgAUEEaigCACACQQEQjQYLAkAgAUEMai0AACICQQNGIAJyDQAgAUEUaigCACICRQ0AIAFBEGooAgAgAkEBEI0GCyABQRhqIQEgBEEBayIEDQALCyAAKAIcIgBFDQUgAyAAQRhsQQQQjQYPCyAALQAEIgFBA0YgAXINBCAAKAIMIgFFDQQMBQsgAC0ABA0DIAAoAgwiAUUNAwwECyAAKAIEIgFFDQIMAwsCQCAALQAEDQAgACgCDCIBRQ0AIAAoAgggAUEBEI0GCwJAIAAtABANACAAKAIYIgFFDQAgACgCFCABQQEQjQYLIAAtABwNASAAKAIkIgFFDQEgACgCICABQQEQjQYPCwJAIAAtAAQNACAAKAIMIgFFDQAgACgCCCABQQEQjQYLAkAgAC0AEA0AIAAoAhgiAUUNACAAKAIUIAFBARCNBgsgAC0AHA0AIAAoAiQiAUUNACAAKAIgIAFBARCNBgsPCyAAKAIIIAFBARCNBgucBAEEfyMAQYABayIEJAACQAJAAkAgASgCHCICQRBxRQRAIAJBIHENAUEBIQIgACgCAEEBIAEQxQJFDQIMAwsgACgCACECA0AgAyAEakH/AGogAkEPcSIFQTByIAVB1wBqIAVBCkkbOgAAIANBAWshAyACQRBJIAJBBHYhAkUNAAtBASECIAFBAUG0q/MAQQIgAyAEakGAAWpBACADaxCgAUUNAQwCCyAAKAIAIQIDQCADIARqQf8AaiACQQ9xIgVBMHIgBUE3aiAFQQpJGzoAACADQQFrIQMgAkEPSyACQQR2IQINAAtBASECIAFBAUG0q/MAQQIgAyAEakGAAWpBACADaxCgAQ0BCyABKAIUQcin8wBBAiABKAIYKAIMEQMADQACQCABKAIcIgJBEHFFBEAgAkEgcQ0BIAAoAgRBASABEMUCIQIMAgsgACgCBCECQQAhAwNAIAMgBGpB/wBqIAJBD3EiAEEwciAAQdcAaiAAQQpJGzoAACADQQFrIQMgAkEPSyACQQR2IQINAAsgAUEBQbSr8wBBAiADIARqQYABakEAIANrEKABIQIMAQsgACgCBCECQQAhAwNAIAMgBGpB/wBqIAJBD3EiAEEwciAAQTdqIABBCkkbOgAAIANBAWshAyACQQ9LIAJBBHYhAg0ACyABQQFBtKvzAEECIAMgBGpBgAFqQQAgA2sQoAEhAgsgBEGAAWokACACC9EFAQt/IwBBIGsiBSQAQfCM9gAoAgBBAkcEQCMAQSBrIgEkACABQdiM9gA2AgggAUHYjPYANgIMIAEgAUEfajYCGCABIAFBDGo2AhQgASABQQhqNgIQQfCM9gAgAUEQakG8hsEAEL4BIAFBIGokAAtB3Iz2AC0AACEBQdyM9gBBAToAACAFIAE6AAcCQAJAAkACQAJAIAFBAUcEQEHojPYAKAIAIglFDQVB6Iz2ACAJQQFrIgQ2AgBB5Iz2ACgCACIDIARBAnRqKAIAIQZBASELIARFBEAgBiEHDAYLIAMoAgAhByADIAY2AgAgCUEESQ0BIARBAmsiAUEAIAEgBE0bIQRBASEBA0AgAyACQQJ0aiADIAEgAyABQQJ0aiICQQRqKAIAIAIoAgBNaiICQQJ0aiIKKAIANgIAIAJBAXQiCEEBciEBIAQgCEsNAAsgCCAJQQNrRw0DDAILIAVCADcCFCAFQoGAgIDAADcCDCAFQbSFwQA2AggjAEEQayIAJAAgAEG8hcEANgIMIAAgBUEHajYCCEEAIABBCGpBrIbBACAAQQxqQayGwQAgBUEIakGchsEAEKYCAAtBASEBIARBAkcNAgsgAyACQQJ0aiADIAFBAnRqIgooAgA2AgAgASECCyAKIAY2AgAgAiEBA0AgBiADIAFBAWsiCEEBdiICQQJ0aigCACIETwRAIAEhAgwCCyADIAFBAnRqIAQ2AgAgAiEBIAhBAUsNAAsLIAMgAkECdGogBjYCAAsCQCALBEAgB0EBaiECDAELQeyM9gBB7Iz2ACgCACIHQQFqIgI2AgALIAAgBzYCAEHcjPYAQQA6AABBnI72ACAHNgIAQZiO9gBBATYCAEGgjvYAQR8gAmdrIgE2AgAgACABNgIEQaSO9gBBASABdCIBNgIAIAAgATYCCEGojvYAIAIgAWsiATYCACAAIAE2AgwgBUEgaiQAC5UEAQh/IwBBQGoiAyQAIANBADYCCCADQQA2AjwgA0EMaiEIIANBPGohCUEMIQYCQAJAAkACfyACIAFrIgdBMUkEQCAIIQUgCQwBCyADIANBCGpBfyAHQQJ2QQFrZ3ZBAWoQjgIgAygCACIEQYGAgIB4RwRAIARFDQQgBCADKAIEEMwGAAsgAygCPCIGQQ1JBEAgBiEEIAghBUEMIQYgCQwBCyADKAIMIQQgAygCECEFIAgLIgcgBCAGSQR/IAUgBEECdGohBQNAIAEgAkYNAiAFIAEoAgA2AgAgBUEEaiEFIAFBBGohASAGIARBAWoiBEcNAAsgBgUgBAs2AgAgASACRg0BA0ACfyADKAI8IgZBDUkEQCAGIQUgCCEHQQwhBiAJDAELIAMoAgwhBSADKAIQIQcgCAshBCABKAIAIQogBSAGRgRAIANBCGoQ5AMgAygCDCEFIAMoAhAhByAIIQQLIAcgBUECdGogCjYCACAEIAQoAgBBAWo2AgAgAUEEaiIBIAJHDQALDAELIAcgBDYCAAsgACADKQIINwIAIABBMGogA0E4aikCADcCACAAQShqIANBMGopAgA3AgAgAEEgaiADQShqKQIANwIAIABBGGogA0EgaikCADcCACAAQRBqIANBGGopAgA3AgAgAEEIaiADQRBqKQIANwIAIANBQGskAA8LQfCiwQBBEUGQ18EAEO8EAAukBAIEfgh/IwBBEGsiCiQAAkAgACgCDEUEQAwBC0HQj/YAKQMAIQYgACkDECEFAkAgAkUEQAwBCyACQQJ0IQsgAq0hAyAKQQhqIQxBICEIIAEhBwNAIAcoAgAhCQJ+IAhB/wFxIg1B4ABNBEAgCiAJrSANEKkEIAhBIGohCCAMKQMAIASEIQQgCikDACADhAwBCyAEIAaFIgRC/////w+DIAMgBYUiA0IgiH5CIIkgA0L/////D4MgBEIgiH6FIQVCACEEQSAhCCAJrQshAyAHQQRqIQcgC0EEayILDQALCyAAKAIEIgwgBCAGhSIEQv////8PgyADIAWFIgNCIIh+QiCIIARCIIggA36FIgOncSEJIANCGYhC/wCDQoGChIiQoMCAAX4hBSACQQJ0IQ4gACgCACENQQAhAANAAkACQCAJIA1qKQAAIgQgBYUiA0J/hSADQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIgNQRQRAA0ACfyANIAN6p0EDdiAJaiAMcUG4f2xqIgdBFGsoAgAiCEENTwRAIAdBxABrKAIAIQggB0FAaigCAAwBCyAHQcQAawshCyACIAhGBEAgASALIA4QzARFDQMLIANCAX0gA4MiA1BFDQALCyAEIARCAYaDQoCBgoSIkKDAgH+DUA0BQQAhBwsgB0HIAGtBACAHGyEHDAILIABBCGoiACAJaiAMcSEJDAALAAsgCkEQaiQAIAcLnwQCBH8EfiMAQdAAayIDJAAgA0FAa0IANwMAIANCADcDOCADIAE3AzAgAyABQvPK0cunjNmy9ACFNwMgIAMgAULt3pHzlszct+QAhTcDGCADIAA3AyggAyAAQuHklfPW7Nm87ACFNwMQIAMgAEL1ys2D16zbt/MAhTcDCCACKAIEIQQgAyACKAIIIgI2AkwgA0EIaiADQcwAakEEELkBIAIEQCAEIAJBA3RqIQIDQCADIAQoAgA2AkwgA0EIaiIFIANBzABqIgZBBBC5ASADIAQtAAQ6AEwgBSAGQQEQuQEgAyAELQAFOgBMIAUgBkEBELkBIARBCGoiBCACRw0ACwsgAykDCCEBIAMpAxghACADNQJAIQkgAykDOCEHIAMpAyAgAykDECEKIANB0ABqJAAgByAJQjiGhCIJhSIHQhCJIAcgCnwiB4UiCEIViSAIIAAgAXwiAUIgiXwiCIUiCkIQiSAKIAcgAEINiSABhSIAfCIBQiCJQv8BhXwiB4UiCkIViSAKIAEgAEIRiYUiACAIIAmFfCIBQiCJfCIJhSIIQhCJIAggASAAQg2JhSIAIAd8IgFCIIl8IgeFIghCFYkgCCABIABCEYmFIgAgCXwiAUIgiXwiCYUiCEIQiSAIIABCDYkgAYUiACAHfCIBQiCJfCIHhUIViSAAQhGJIAGFIgBCDYkgACAJfIUiAEIRiYUgACAHfCIAQiCJhSAAhQuuBAEIfyAAIAAoAigiBkEBaiIDNgIoIAAgAyICIAAoAhQiBEsEfyADIAQiAWsiCCAAKAIMIAFrSwRAIABBDGogASAIQQFBAhDsAiAAKAIUIQELIAAoAhAgAUEBdGohAiAIQQJPBEAgBiAEayIHQQdxIQUgBCAGa0F4TQRAIAdBeHEhBANAIAJCgf6H+J/g/4B/NwAIIAJCgf6H+J/g/4B/NwAAIAJBEGohAiAEQQhrIgQNAAsLIAUEQANAIAJBgf4DOwAAIAJBAmohAiAFQQFrIgUNAAsLIAEgCGpBAWshAQsgAkGB/gM7AAAgAUEBagUgAgs2AhQgACAAKAIgIgQgA0kEfyADIAQiAWsiByAAKAIYIAFrSwRAIABBGGogASAHQQRBgAgQ7AIgACgCICEBCyAAKAIcIAFBCnRqIQIgB0ECTwRAIAYgBGsiA0EHcSEFIAQgBmtBeE0EQCADQXhxIQQDQCACQQBBgAgQgwIiA0GACGpBAEGACBCDAhogA0GAEGpBAEGACBCDAhogA0GAGGpBAEGACBCDAhogA0GAIGpBAEGACBCDAhogA0GAKGpBAEGACBCDAhogA0GAMGpBAEGACBCDAhogA0GAOGpBAEGACBCDAhogA0GAQGshAiAEQQhrIgQNAAsLIAUEQANAIAJBAEGACBCDAkGACGohAiAFQQFrIgUNAAsLIAEgB2pBAWshAQsgAkEAQYAIEIMCGiABQQFqBSADCzYCICAGC74EAQl/IwBBEGsiBCQAAkACQAJ/AkAgACgCAEEBRgRAIAAoAgQhBiAEIAEoAgwiAzYCDCAEIAEoAggiAjYCCCAEIAEoAgQiBTYCBCAEIAEoAgAiATYCACAALQAgIQkgACgCECEKIAAtABxBCHENASAKIQggCQwCCyAAKAIUIAAoAhggARDdASECDAMLIAAoAhQgASAFIAAoAhgoAgwRAwANASAAQQE6ACBBMCEIIABBMDYCECAEQgE3AgAgBiAFayEBQQAhBSABQQAgASAGTRshBkEBCyEHIAMEQCADQQxsIQMDQAJ/AkACQAJAIAIvAQBBAWsOAgIBAAsgAigCBAwCCyACKAIIDAELIAIvAQIiAUHoB08EQEEEQQUgAUGQzgBJGwwBC0EBIAFBCkkNABpBAkEDIAFB5ABJGwsgAkEMaiECIAVqIQUgA0EMayIDDQALCwJ/AkAgBSAGSQRAIAYgBWshAwJAAkACQCAHQf8BcSICQQFrDgMAAQACCyADIQJBACEDDAELIANBAXYhAiADQQFqQQF2IQMLIAJBAWohAiAAKAIYIQcgACgCFCEBA0AgAkEBayICRQ0CIAEgCCAHKAIQEQAARQ0ACwwDCyAAKAIUIAAoAhggBBDdAQwBCyABIAcgBBDdAQ0BQQAhAgJ/A0AgAyACIANGDQEaIAJBAWohAiABIAggBygCEBEAAEUNAAsgAkEBawsgA0kLIQIgACAJOgAgIAAgCjYCEAwBC0EBIQILIARBEGokACACC68EAQV/AkACQAJAIAIgA08EQEEBIQYCQCADQQBMDQAgASADaiEEAkAgA0EDTQRAA0AgASAETw0DIARBAWsiBC0AAEEKRw0ADAILAAtBgIKECCAEQQRrKAAAIgdBipSo0ABzayAHckGAgYKEeHFBgIGChHhHBEADQCABIARPDQMgBEEBayIELQAAQQpHDQAMAgsACyADIARBA3FrIQQgA0EJTwRAA0ACQCAEIgdBCEgNAEGAgoQIIAEgBGoiCEEIaygCACIEQYqUqNAAc2sgBHJBgIGChHhxQYCBgoR4Rw0AIAdBCGshBEGAgoQIIAhBBGsoAgAiCEGKlKjQAHNrIAhyQYCBgoR4cUGAgYKEeEYNAQsLIAEgB2ohBANAIAEgBE8NAyAEQQFrIgQtAABBCkcNAAsMAQsgASAEaiEEA0AgASAETw0CIARBAWsiBC0AAEEKRw0ACwsgBCABayIEQQFqIQUgAiAETQ0CCyABIAVqIAFNDQMgBUEDcSEGIAVBAWtBA0kEQEEAIQQMAwsgBUF8cSECQQAhBANAIAQgAS0AAEEKRmogAS0AAUEKRmogAS0AAkEKRmogAS0AA0EKRmohBCABQQRqIQEgAkEEayICDQALDAILIAMgAkGQ+ekAEJMGAAsgBSACQaD56QAQkwYACyAGBEADQCAEIAEtAABBCkZqIQQgAUEBaiEBIAZBAWsiBg0ACwsgBEEBaiEGCyAAIAY2AgAgACADIAVrNgIEC8kOAQd/IwBBIGsiByQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAggiBCAAKAIEIgZJBEAgACAEQQFqIgM2AgggBCAAKAIAIgVqLQAAQSJrDlQDAQEBAQEBAQEBAQEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBAEBAQEBBgEBAQcBAQEBAQEBCAEBAQkBCgIBCyAHQQQ2AhQgB0EIaiAAKAIAIAYgBBDXASAHQRRqIAcoAgggBygCDBDVBAwLCyAHQQw2AhQgByAFIAYgAxDXASAHQRRqIAcoAgAgBygCBBDVBAwKCyABIQYjAEEwayIDJAAgA0EkaiAAIgQQ1gICfwJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkAgAy8BJEUEQCADLwEmIgFBgPgDcUGAuANGQQAgBhsNAQJAAkACQCABQYDIAGpB//8DcUGA+ANJBEAgASEADAELIAYNAQNAIAQoAggiACAEKAIEIghPDQYgBCgCACIJIABqLQAAQdwARw0MIAQgAEEBaiIFNgIIIAUgCE8NByAFIAlqLQAAQfUARw0KIAQgAEECajYCCCADQSRqIAQQ1gIgAy8BJA0IIAMvASYiAEGAQGtB//8DcUGA+ANPDQMgAigCACACKAIIIgVrQQRJBEAgAiAFQQQQ6wIgAigCCCEFCyACIAVBA2o2AgggAigCBCAFaiIFQe0BOgAAIAVBAmogAUE/cUGAAXI6AAAgBSABQQZ2QS9xQYABcjoAASAAIQEgAEGAyABqQf//A3FBgPgDTw0ACwsgAEH//wNxQYABSQ0OIAIoAgAgAigCCCIBa0EDTQRAIAIgAUEEEOsCIAIoAgghAQsgAigCBCABaiEEIABB//8DcUGAEE8NDCAAQQZ2QUByIQhBAgwNCyAEKAIIIgAgBCgCBCIITw0DIAQoAgAiCSAAai0AAEHcAEcNCiAEIABBAWoiBTYCCCAFIAhPDQQgBSAJai0AAEH1AEcNCCAEIABBAmo2AgggA0EkaiAEENYCIAMvASQNBSADLwEmIgBBgEBrQf//A3FBgPgDSQ0GCyAAQYDIAGpB//8DcSABQYDQAGpB//8DcUEKdGoiBkGAgARqIQQgAigCACACKAIIIgFrQQNNBEAgAiABQQQQ6wIgAigCCCEBCyACIAFBBGo2AgggAigCBCABaiIBIARBEnZB8AFyOgAAIAFBA2ogAEE/cUGAAXI6AAAgASAGQQZ2QT9xQYABcjoAAiABIARBDHZBP3FBgAFyOgABQQAMDwsgAygCKAwOCyADQRQ2AiQgAyAEKAIAIAQoAgQgBCgCCBDXASADQSRqIAMoAgAgAygCBBDVBAwNCyADQQQ2AiQgA0EYaiAEKAIAIAggABDXASADQSRqIAMoAhggAygCHBDVBAwMCyADQQQ2AiQgA0EQaiAJIAggBRDXASADQSRqIAMoAhAgAygCFBDVBAwLCyADKAIoDAoLIANBFDYCJCADQQhqIAQoAgAgBCgCBCAEKAIIENcBIANBJGogAygCCCADKAIMENUEDAkLIAZFDQcLIAQgAEECajYCCCADQRc2AiQgBCADQSRqEPMEDAcLIAZFDQQLIAQgAEEBajYCCCADQRc2AiQgBCADQSRqEPMEDAULIAQgAEEGdkE/cUGAAXI6AAEgAEGA4ANxQQx2QWByIQhBAwshBiAEIAg6AAAgAiABIAZqNgIIIAQgBmpBAWsgAEE/cUGAAXI6AABBAAwDCyACKAIIIgEgAigCAEYEQCACQaD76QAQtgMLIAIgAUEBajYCCCACKAIEIAFqIAA6AABBAAwCCyABQf//A3EgAhDdAkEADAELIAFB//8DcSACEN0CIARBACACENgBCyADQTBqJAAMCQsgAigCCCIAIAIoAgBGBEAgAkGg+ukAELYDCyACIABBAWo2AgggAigCBCAAakEiOgAADAcLIAIoAggiACACKAIARgRAIAJBsPrpABC2AwsgAiAAQQFqNgIIIAIoAgQgAGpB3AA6AAAMBgsgAigCCCIAIAIoAgBGBEAgAkHA+ukAELYDCyACIABBAWo2AgggAigCBCAAakEvOgAADAULIAIoAggiACACKAIARgRAIAJB0PrpABC2AwsgAiAAQQFqNgIIIAIoAgQgAGpBCDoAAAwECyACKAIIIgAgAigCAEYEQCACQeD66QAQtgMLIAIgAEEBajYCCCACKAIEIABqQQw6AAAMAwsgAigCCCIAIAIoAgBGBEAgAkHw+ukAELYDCyACIABBAWo2AgggAigCBCAAakEKOgAADAILIAIoAggiACACKAIARgRAIAJBgPvpABC2AwsgAiAAQQFqNgIIIAIoAgQgAGpBDToAAAwBCyACKAIIIgAgAigCAEYEQCACQZD76QAQtgMLIAIgAEEBajYCCCACKAIEIABqQQk6AAALQQALIAdBIGokAAuPBAENfyABQQFrIQ8gACgCBCEKIAAoAgAhCyAAKAIIIQwCQANAIA4NAQJAAkAgAiAESQ0AA0AgASAEaiEFAkACQAJAIAIgBGsiBkEHTQRAIAIgBEcNASACIQQMBQsCQCAFQQNqQXxxIgggBWsiAwRAQQAhAANAIAAgBWotAABBCkYNBSADIABBAWoiAEcNAAsgAyAGQQhrIgBNDQEMAwsgBkEIayEACwNAQYCChAggCCgCACIJQYqUqNAAc2sgCXJBgIKECCAIQQRqKAIAIglBipSo0ABzayAJcnFBgIGChHhxQYCBgoR4Rw0CIAhBCGohCCADQQhqIgMgAE0NAAsMAQtBACEAA0AgACAFai0AAEEKRg0CIAYgAEEBaiIARw0ACyACIQQMAwsgAyAGRgRAIAIhBAwDCwNAIAMgBWotAABBCkYEQCADIQAMAgsgBiADQQFqIgNHDQALIAIhBAwCCyAAIARqIgNBAWohBAJAIAIgA00NACAAIAVqLQAAQQpHDQAgBCEFIAQhAAwDCyACIARPDQALC0EBIQ4gAiIAIAciBUYNAgsCQCAMLQAABEAgC0H4qvMAQQQgCigCDBEDAA0BC0EAIQMgACAHRwRAIAAgD2otAABBCkYhAwsgACAHayEAIAEgB2ohBiAMIAM6AAAgBSEHIAsgBiAAIAooAgwRAwBFDQELC0EBIQ0LIA0LtgQBB38jAEEgayIGJAACQAJAAkACQAJAAkACQANAIAEoAgghBSABEMABIAEoAggiAyABKAIEIgRGDQIgAyAETw0DIAEoAgAiCCADai0AACIHQdwARwRAIAdBIkYNAiABIANBAWoiATYCCCAGQRA2AhQgBkEIaiAIIAQgARDXASAGQRRqIAYoAgggBigCDBDVBCEBIABBAjYCACAAIAE2AgQMCAsgAyAFSQ0EIAMgBWsiByACKAIAIAIoAggiBGtLBEAgAiAEIAcQ6wIgAigCCCEECyACKAIEIARqIAUgCGogBxCsARogASADQQFqNgIIIAIgBCAHajYCCCABQQEgAhDYASIDRQ0ACyAAQQI2AgAgACADNgIEDAYLIAIoAggiBEUNBCADIAVJDQMgAyAFayIHIAIoAgAgBGtLBEAgAiAEIAcQ6wIgAigCCCEECyACKAIEIgkgBGogBSAIaiAHEKwBGiABIANBAWo2AgggAiAEIAdqIgE2AgggACABNgIIIAAgCTYCBCAAQQE2AgAMBQsgBkEENgIUIAYgASgCACADIAMQ1wEgBkEUaiAGKAIAIAYoAgQQ1QQhASAAQQI2AgAgACABNgIEDAQLIAMgBEHA+ekAEJUEAAsgBSADQfD56QAQlQYACyAFIANB4PnpABCVBgALIAMgBUkEQCAFIANB0PnpABCVBgALIABBADYCACAAIAMgBWs2AgggACAFIAhqNgIEIAEgA0EBajYCCAsgBkEgaiQAC5UEAQ1/IwBBIGsiASQAIAAoAggiBEECTwRAIAFCgICAgMAANwIAIAFCADcCCCAEQQFrIQ0gACgCBCEIQQQhCkEBIQMDQAJAAkACQCAEIANBAWsiBksEQCADIARPDQECQAJAAkAgCCAGQRhsaiIJLQAADQAgCSgCFCAJKAIQa0EBRw0AIAggA0EYbGoiCS0AAEEBRw0AIAkoAgRBBkYNAQsgB0EAIQcNAQwFCwJAIAdFBEAgBiEMDAELIAIgBUYEQCABQbzfwQAQ3AMgASgCBCEKIAEoAgghCyABKAIAIQUgASgCDCECCyAKIAIgC2oiByAFQQAgBSAHTRtrQQJ0aiAGNgIAIAEgAkEBaiICNgIMIAEoAgAhBQsgAiAFRgRAIAFBzN/BABDcAyABKAIAIQUgASgCDCECCyABKAIEIgogASgCCCILIAJqIgcgBUEAIAUgB00ba0ECdGogAzYCAEEBIQcgASACQQFqIgI2AgwgA0EBaiEDDAQLIANBAmsiBiAETw0CIAQgDEsEQCAIIAxBGGxqIAggBkEYbGooAhQ2AhQMBAsgDCAEQezfwQAQlQQACyAGIARBnN/BABCVBAALIAMgBEGs38EAEJUEAAsgBiAEQdzfwQAQlQQACyADQQFqIgMgDUkNAAsgAUEYaiABQQhqKQIANwMAIAEgASkCADcDECAAIAFBEGoQ5QELIAFBIGokAAu0BAEIfyMAQUBqIgIkAAJAAkACQCABKAIAIgQoAhQiAyAEKAIQIghJBEAgBEEMaiEGIAQoAgwhCQNAIAMgCWotAAAiB0EJayIFQRdLQQEgBXRBk4CABHFFcg0CIAQgA0EBaiIDNgIUIAMgCEcNAAsLIAJBAzYCNCACQShqIARBDGoQwAQgACACQTRqIAIoAiggAigCLBDVBDYCBAwBCyAHQf0ARgRAQQAhBSAAQQA6AAEMAgsCQAJAIAEtAARFBEAgB0EsRw0BQQEhBSAEIANBAWoiAzYCFCADIAhJBEADQCADIAlqLQAAIgdBCWsiAUEZSw0EQQEgAXRBk4CABHFFBEAgAUEZRw0FIABBAToAAUEAIQUMBwsgBCADQQFqIgM2AhQgAyAIRw0ACwsgAkEFNgI0IAJBEGogBhDABCAAIAJBNGogAigCECACKAIUENUENgIEDAQLQQAhBSABQQA6AAQgB0EiRwRAIAJBETYCNCACIAYQwAQgACACQTRqIAIoAgAgAigCBBDVBDYCBAwDCyAAQQE6AAEMAwsgAkEINgI0IAJBIGogBhDABCAAIAJBNGogAigCICACKAIkENUENgIEDAELIAdB/QBHBEAgAkERNgI0IAJBCGogBhDABCAAIAJBNGogAigCCCACKAIMENUENgIEDAELIAJBFTYCNCACQRhqIAYQwAQgACACQTRqIAIoAhggAigCHBDVBDYCBAtBASEFCyAAIAU6AAAgAkFAayQAC/4DAQl/IwBBEGsiBCQAAn8CQCACKAIEIgNFDQAgACACKAIAIAMgASgCDBEDAEUNAEEBDAELIAIoAgwiBgRAIAIoAggiAyAGQQxsaiEIIARBDGohCQNAAkACQAJAAkAgAy8BAEEBaw4CAgEACwJAIAMoAgQiAkHBAE8EQCABQQxqKAIAIQYDQEEBIABBrK3zAEHAACAGEQMADQgaIAJBQGoiAkHAAEsNAAsMAQsgAkUNAwsgAEGsrfMAIAIgAUEMaigCABEDAEUNAkEBDAULIAAgAygCBCADKAIIIAFBDGooAgARAwBFDQFBAQwECyADLwECIQIgCUEAOgAAIARBADYCCAJ/QQRBBSACQZDOAEkbIAJB6AdPDQAaQQEgAkEKSQ0AGkECQQMgAkHkAEkbCyIGIARBCGoiCmoiB0EBayIFIAIgAkEKbiILQQpsa0EwcjoAAAJAIAUgCkYNACAHQQJrIgUgC0EKcEEwcjoAACAEQQhqIAVGDQAgB0EDayIFIAJB5ABuQQpwQTByOgAAIARBCGogBUYNACAHQQRrIgUgAkHoB25BCnBBMHI6AAAgBEEIaiAFRg0AIAdBBWsgAkGQzgBuQTByOgAACyAAIARBCGogBiABQQxqKAIAEQMARQ0AQQEMAwsgA0EMaiIDIAhHDQALC0EACyAEQRBqJAALkRUCE38DfkH8jfYAKAIARQRAIwBBEGsiBSQAQYCO9gBBADYCAEH8jfYAKAIAIQJB/I32AEEBNgIAQYSO9gAoAgAhB0GIjvYAKAIAIQNBhI72AEHw0sAAKQIAIhU3AgAgBUEIakH40sAAKQIAIhY3AwBBkI72ACgCACEGQYyO9gAgFjcCACAFIBU3AwACQCACRSADRXINACAGBEAgB0EIaiEIIAcpAwBCf4VCgIGChIiQoMCAf4MhFSAHIQIDQCAVUARAA0AgAkHgAGshAiAIKQMAIAhBCGohCEKAgYKEiJCgwIB/gyIVQoCBgoSIkKDAgH9RDQALIBVCgIGChIiQoMCAf4UhFQsgAiAVeqdBA3ZBdGxqQQRrKAIAIgRBhAFPBEAgBBACCyAVQgF9IBWDIRUgBkEBayIGDQALCyADIANBDGxBE2pBeHEiAmpBCWoiA0UNACAHIAJrIANBCBCNBgsgBUEQaiQAC0GAjvYAKAIARQRAQYCO9gBBfzYCAEGIjvYAKAIAIgUgAHEhAiAAQRl2IhKtQoGChIiQoMCAAX4hF0GEjvYAKAIAIQMCQANAIAIgA2opAAAiFiAXhSIVQn+FIBVCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiFVBFBEADQCAAIAMgFXqnQQN2IAJqIAVxQXRsaiIHQQxrKAIARgRAIAdBCGsoAgAgAUYNBAsgFUIBfSAVgyIVUEUNAAsLIBYgFkIBhoNCgIGChIiQoMCAf4NQBEAgAiAKQQhqIgpqIAVxIQIMAQsLQYyO9gAoAgBFBEBBACECQQAhCiMAQSBrIg0kAAJAAkBBkI72ACgCACIHQX9HBEBBiI72ACgCACIIIAhBAWoiC0EDdiIFQQdsIAhBCEkbIgxBAXYgB00EQAJAAkACfyAHIAwgByAMSxsiAkEHTwRAQX8gAkEDdEEIakEHbkEBa2d2QQFqIAJB/v///wFNDQEaENYEIA0oAhgaDAcLQQRBCCACQQNJGwsiAq1CDH4iFUIgiKcNACAVpyIFQXhLDQAgBUEHakF4cSIDIAJBCGoiBmoiBSADSQ0AIAVB+f///wdJDQELENYEIA0oAggaDAQLQfmN9gAtAAAaIAVBCBD8BSIERQRAIAUQ0QUgDSgCEBoMBAsgAyAEakH/ASAGEIMCIQYgAkEBayIMIAJBA3ZBB2wgAkEJSRshDiAHRQRAQYSO9gAoAgAhBQwDCyAGQQxrIQ8gBkEIaiEQQYSO9gAoAgAiBUEMayERIAUpAwBCf4VCgIGChIiQoMCAf4MhFSAFIQIgByEDA0AgFVAEQANAIApBCGohCiACKQMIIAJBCGohAkKAgYKEiJCgwIB/gyIVQoCBgoSIkKDAgH9RDQALIBVCgIGChIiQoMCAf4UhFQsgBiAFIBV6p0EDdiAKaiITQXRsaiIEQQxrKAIAIgkgBEEIaygCACAJGyIUIAxxIglqKQAAQoCBgoSIkKDAgH+DIhZQBEBBCCEEA0AgBCAJaiEJIARBCGohBCAGIAkgDHEiCWopAABCgIGChIiQoMCAf4MiFlANAAsLIBVCAX0gFYMhFSAGIBZ6p0EDdiAJaiAMcSIEaiwAAEEATgRAIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEECyAEIAZqIBRBGXYiCToAACAQIARBCGsgDHFqIAk6AAAgDyAEQXRsaiIEQQhqIBEgE0F0bGoiCUEIaigAADYAACAEIAkpAAA3AAAgA0EBayIDDQALDAILQYSO9gAoAgAhBgJAIAUgC0EHcUEAR2oiBUUNACAFQQFHBEAgBUH+////A3EhCgNAIAIgBmoiAyADKQMAIhVCf4VCB4hCgYKEiJCgwIABgyAVQv/+/fv379+//wCEfDcDACADQQhqIgMgAykDACIVQn+FQgeIQoGChIiQoMCAAYMgFUL//v379+/fv/8AhHw3AwAgAkEQaiECIApBAmsiCg0ACwsgBUEBcUUNACACIAZqIgIgAikDACIVQn+FQgeIQoGChIiQoMCAAYMgFUL//v379+/fv/8AhHw3AwALAkACQCALQQhPBEAgBiALaiAGKQAANwAADAELIAZBCGogBiALEM8GGiALRQ0BCyAGQQhqIQogBkEMayEJQQAhAgNAAkAgBiACIgVqIg4tAABBgAFHDQAgCSACQXRsIgJqIQMgAiAGaiICQQhrIRAgAkEMayERAkADQCARKAIAIgIgECgCACACGyIPIAhxIgshBCAGIAtqKQAAQoCBgoSIkKDAgH+DIhZQBEBBCCECA0AgAiAEaiEEIAJBCGohAiAGIAQgCHEiBGopAABCgIGChIiQoMCAf4MiFlANAAsLIAYgFnqnQQN2IARqIAhxIgJqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQILIAIgC2sgBSALa3MgCHFBCEkNASACIAZqIgQtAAAgBCAPQRl2IgQ6AAAgCiACQQhrIAhxaiAEOgAAIAkgAkF0bGohAkH/AUcEQCADLQAAIQQgAyACLQAAOgAAIAIgBDoAACADLQABIQQgAyACLQABOgABIAIgBDoAASADLQACIQQgAyACLQACOgACIAIgBDoAAiADLQADIQQgAyACLQADOgADIAIgBDoAAyADLQAEIQQgAyACLQAEOgAEIAIgBDoABCADLQAFIQQgAyACLQAFOgAFIAIgBDoABSADLQAGIQQgAyACLQAGOgAGIAIgBDoABiADLQAHIQQgAyACLQAHOgAHIAIgBDoAByADLQAIIQQgAyACLQAIOgAIIAIgBDoACCADLQAJIQQgAyACLQAJOgAJIAIgBDoACSADLQAKIQQgAyACLQAKOgAKIAIgBDoACiADLQALIQQgAyACLQALOgALIAIgBDoACwwBCwsgDkH/AToAACAKIAVBCGsgCHFqQf8BOgAAIAJBCGogA0EIaigAADYAACACIAMpAAA3AAAMAQsgDiAPQRl2IgI6AAAgCiAFQQhrIAhxaiACOgAACyAFQQFqIQIgBSAIRw0ACwtBjI72ACAMIAdrNgIADAILENYEIA0oAgAaDAELQYiO9gAgDDYCAEGEjvYAIAY2AgBBjI72ACAOIAdrNgIAIAhFDQAgCCALQQxsQQdqQXhxIgJqQQlqIgdFDQAgBSACayAHQQgQjQYLIA1BIGokAAsgACABEAUhBkGEjvYAKAIAIgVBiI72ACgCACIDIABxIgJqKQAAQoCBgoSIkKDAgH+DIhVQBEBBCCEHA0AgAiAHaiECIAdBCGohByAFIAIgA3EiAmopAABCgIGChIiQoMCAf4MiFVANAAsLIAUgFXqnQQN2IAJqIANxIgdqLAAAIgJBAE4EQCAFIAUpAwBCgIGChIiQoMCAf4N6p0EDdiIHai0AACECCyAFIAdqIBI6AAAgBSAHQQhrIANxakEIaiASOgAAQYyO9gBBjI72ACgCACACQQFxazYCAEGQjvYAQZCO9gAoAgBBAWo2AgAgBSAHQXRsaiIHQQRrIAY2AgAgB0EIayABNgIAIAdBDGsgADYCAAsgB0EEaygCABANQYCO9gBBgI72ACgCAEEBajYCAA8LQfDTwAAQygQAC4oEAQt/IwBBEGsiCCQAQQwhBSAAQTRqIQkgASgCBCEKIAEoAgAhDAJAAkACQAJAIAEoAggiByAAKAI0IgJBDCACQQxLIgEbIAAoAgQgAiABGyIBa0sEQCABIAEgB2oiAUsNAUF/IAFBAWtndkEAIAFBAk8bIgFBf0YNASAIQQhqIAAgAUEBahCOAiAIKAIIIgFBgYCAgHhHBEAgAUUNAiABIAgoAgwQzAYACyAJKAIAIQILIABBBGoiCyEDIAkhBiACQQ1PBEAgCyEGIAIhBSAAKAIIIQMLIAUgBigCACIETQRAIAohAgwCCyAHQQJ0IQEgAyAEQQJ0aiEDIAohAgJAA0AgAUUNASADIAIoAgA2AgAgAUEEayEBIANBBGohAyACQQRqIQIgBSAEQQFqIgRHDQALIAUhBAwCCyAGIAQ2AgAgDA0CDAMLQfCiwQBBEUGQ18EAEO8EAAsgBiAENgIAIAogB0ECdGoiBiACRwRAA0ACfyAJKAIAIgRBDUkEQCAEIQEgCyEFQQwhBCAJDAELIAAoAgQhASAAKAIIIQUgCwshAyACKAIAIQcgASAERgR/IAAQ5AMgACgCCCEFIAshAyAAKAIEBSABC0ECdCAFaiAHNgIAIAMgAygCAEEBajYCACACQQRqIgIgBkcNAAsLIAxFDQELIAogDEECdEEEEI0GCyAIQRBqJAAL7wMBC38jAEEQayIGJAACQCABKAIQIgQgASgCDCIDSQRADAELIAEoAggiDCAESQRADAELIAFBFGoiCSABLQAYIgdqQQFrLQAAIQogASgCBCELAkAgB0EETQRAA0AgAyALaiEFAkAgBCADayIIQQdNBEAgAyAERgRAQQAhAiABIAQ2AgwMBgtBACECA0AgAiAFai0AACAKRg0CIAggAkEBaiICRw0AC0EAIQIgASAENgIMDAULIAZBCGogCiAFIAgQ1QIgBigCCCICQQFHDQMgBigCDCECCyABIAIgA2pBAWoiAzYCDAJAIAMgB0kgAyAMS3INACALIAMgB2siAmogCSAHEMwEDQAgACADNgIIIAAgAjYCBEEBIQIMBAsgAyAETQ0AC0EAIQIMAgsCQANAIAMgC2ohCAJAIAQgA2siCUEITwRAIAYgCiAIIAkQ1QIgBigCACICQQFHDQQgBigCBCEFDAELIAMgBEYEQEEAIQIgASAENgIMDAULQQAhBQNAIAUgCGotAAAgCkYNAUEAIQIgCSAFQQFqIgVHDQALDAMLIAEgAyAFakEBaiIDNgIMIAMgDE0gAyAHT3ENASADIARNDQALQQAhAgwCCyAHQQRB0NbBABCTBgALIAEgBDYCDAsgACACNgIAIAZBEGokAAuQBAIIfwJ+IAAoAgQiBiABp3EhAyABQhmIQv8Ag0KBgoSIkKDAgAF+IQwgACgCACEEAkAgAigCNCIHQQxNBEAgAkEEaiEIIAdBAnQhCQNAIAMgBGopAAAiCyAMhSIBQn+FIAFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiAVBFBEADQAJ/IARBACABeqdBA3YgA2ogBnFrIgpByABsaiICQRRrKAIAIgBBDU8EQCACQcQAaygCACEAIAJBQGooAgAMAQsgAkHEAGsLIQIgACAHRgRAIAggAiAJEMwERQ0FCyABQgF9IAGDIgFQRQ0ACwsgCyALQgGGg0KAgYKEiJCgwIB/g1AEQCAFQQhqIgUgA2ogBnEhAwwBBUEADwsACwALIAIoAgQiB0ECdCEIIAIoAgghCQNAIAMgBGopAAAiCyAMhSIBQn+FIAFCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiAVBFBEADQAJ/IARBACABeqdBA3YgA2ogBnFrIgpByABsaiICQRRrKAIAIgBBDE0EQCACQcQAawwBCyACQcQAaygCACEAIAJBQGooAgALIQIgACAHRgRAIAkgAiAIEMwERQ0ECyABQgF9IAGDIgFQRQ0ACwsgCyALQgGGg0KAgYKEiJCgwIB/g1AEQCAFQQhqIgUgA2ogBnEhAwwBBUEADwsACwALIAQgCkHIAGxqC+8DAQl/An8gACgCCCICIAAoAgAiA0cEQCACIANJDAELIAAtAAwiAiAALQAEIgNHBEAgAiADSQwBCyAALQANIAAtAAVrQf8BcUH/AUYLIQIgAEEQQRgCfyAAKAIYIgMgACgCECIFRwRAIAMgBUkMAQsgAC0AHCIDIAAtABQiBUcEQCADIAVJDAELIAAtAB0gAC0AFWtB/wFxQf8BRgsiBhtqIQUgACACRUEDdGohAwJ/IABBGEEQIAYbaiIGKAIAIgQgACACQQN0aiIIKAIAIgBHBEAgACAESwwBCyAGLQAEIgAgCC0ABCICRwRAIAAgAkkMAQsgBi0ABSAILQAFa0H/AXFB/wFGCyEAAn8gBSADIAYgABsCfyAFKAIAIgIgAygCACIERwRAIAIgBEkMAQsgBS0ABCICIAMtAAQiBEcEQCACIARJDAELIAUtAAUgAy0ABWtB/wFxQf8BRgsiAhsiBCgCACIHIAggBiADIAIbIAAbIgkoAgAiCkcEQCAHIApJDAELIAQtAAQiByAJLQAEIgpHBEAgByAKSQwBCyAELQAFIAktAAVrQf8BcUH/AUYLIQcgASAGIAggABspAgA3AgAgASAEIAkgBxspAgA3AgggASAJIAQgBxspAgA3AhAgASADIAUgAhspAgA3AhgLmAQCCH8BfCMAQdAAayIDJAACQAJAAkACQAJAIAAoAgAiBEGBARAKRQRAIAQQAw4CAgEDCyADQQc6ADAgA0EwaiABIAIQiwQhBQwEC0EBIQULQQEhAAwBCyADQRBqIAQQBiADKAIQBEAgAysDGCELQQMhCEEBIQAMAQsgA0EIaiAEEAsCfwJAIAMoAggiBEUNACADKAIMIgZBgICAgHhGDQBBBSEIIAYhBUEADAELAkACQCAAKAIAEBYEQCADQTBqIAAQ2QMgAygCOCEFIAMoAjQhCSADKAIwIQcMAQsgACgCABARRQ0BIAMgACgCABATIgQ2AkggA0EwaiADQcgAahDZAyADKAI4IQUgAygCNCEJIAMoAjAhByAEQYQBSQ0AIAQQAgsgB0GAgICAeEYNAEEGIQggCSEEQQEMAQsgA0EBNgI0IANBgNPAADYCMCADQgE3AjwgAyAArUKAgICA4AWENwNIIAMgA0HIAGo2AjggA0EkaiADQTBqEJ8CQREhCEGAgICAeCEHIAMoAiwhBSADKAIoIQQgAygCJCEGQQALIQAgBa2/IQsgACEKCyADIAs5AzggAyAENgI0IAMgBToAMSADIAg6ADAgA0EwaiABIAIQiwQhBQJAIApFBEAgACAGRXJFDQEMAgsgBwRAIAkgB0EBEI0GCyAAIAZFckEBRg0BCyAEIAZBARCNBgsgA0HQAGokACAFC+YDAgR/A34jAEEwayIDJAACQAJAAkAgAiABKAIgIgRJBEAgASgCFCIFIAEoAhhBf0F+IABBP3EbaiAEIAEtACZBBHYiAGogACACbGprQYB+QQAgASkDAEIBVhtBACAEQSBLG2oiAk8EQCAAQQFrIgZBCE8NAiAFIAJrIgQgAEkNAyABKAIQIAJqIQIgAEEDcSEEAkAgBkEDSQRADAELIABBDHEhAEIYIQcDQCACMQAAIAdCGH2GIAiEIAJBAWoxAAAgB0IQfYaEIAJBAmoxAAAgB0IIfYaEIAJBA2oxAAAgB4aEIQggAkEEaiECIAdCIHwhByAJQgR8IQkgAEEEayIADQALCyAEBEAgCUIDhiEHA0AgAjEAACAHhiAIhCEIIAdCCHwhByACQQFqIQIgBEEBayIEDQALCyABKAIcIQAgAyAINwMIIAhCgICAgBBaDQQgA0EwaiQAQQAgACAIp2sgCFAbDwsgAiAFQbi+wQAQkgYAC0GEvsEAQSFBqL7BABDvBAALQeTHwQBBLEGQyMEAEO8EAAsgACAEQaDIwQAQkwYACyADQQI2AhQgA0G4u8EANgIQIANCATcCHCADIANBCGqtQoCAgICAFYQ3AyggAyADQShqNgIYIANBEGpByLvBABCuBQAL2gMBC38CQAJAIAEoAgwiBUUEQCAAKAIIIgZFDQIgAEEIaiEJDAELIAEgBUEBayIHNgIMIAEgASgCCCICQQFqIgMgASgCACIGQQAgAyAGTxtrNgIIIAAoAggiBkUNASAAQQhqIQkgASgCBCACQQJ0aigCACICIAZBAWtLDQACQCAHRQRAQQAhBQwBCyABIAVBAmsiBTYCDCABIAEoAggiA0EBaiIEIAEoAgAiCEEAIAQgCE8bazYCCCABKAIEIANBAnRqKAIAIQoLQQEhBCACQQFqIgggBkYNACAHQQBHIQMgACgCBCACQRhsakEYaiEAIAEoAgQhDCABKAIAIQsgASgCCCEHA0ACQCADRSAIIApHckUEQAJAIAVFBEBBACECDAELIAEgBUEBayICNgIMIAEgB0EBaiIDIAtBACADIAtPG2siAzYCCCAMIAdBAnRqKAIAIQogAyEHCyAFQQBHIQMgBEEBaiEEIAIhBQwBCyAAIARBaGxqIgIgACkDADcDACACQRBqIABBEGopAwA3AwAgAkEIaiAAQQhqKQMANwMACyAAQRhqIQAgBiAIQQFqIghHDQALCyAJIAYgBGs2AgALIAEoAgAiAARAIAEoAgQgAEECdEEEEI0GCwviAwEMfyACLQAHIQYCfyACLwAIIAJBCmotAABBEHRyIgQgAS0AByIFQQNGDQAaIAEvAAggAUEKai0AAEEQdHIhAyAGQf8BcUEDRgRAIAUhBiADDAELIAYgBSAFQQJGGyEGIAQgAyADQf8BcUECRhtB/wFxIARBgID8B3FBEHYgA0EQdiIHIAdBAkYbQRB0IARBCHYgA0EIdiIEIARB/wFxQQJGG0H/AXFBCHRycgshBCACLQAMIQUCfyACLQALIgMgAS0ACyIHQQNGDQAaIAEtAAwhCCADQf8BcUEDRgRAIAghBSAHDAELIAUgCCAIQQNGGyEFIAMgByAHQQJGGwshAyAAIAQ7AAggACAFOgAMIAAgAzoACyAAIAY6AAcgAEEKaiAEQRB2OgAAIAEtAAMhBCACLQADIQYgAS0ABCEDIAItAAQhBSABLQAFIQcgAi0ABSEIIAEtAAAhCSACLQAAIQogAS0AASELIAItAAEhDCABLQACIQ0gAi0AAiEOIAAgAi0ABiABLQAGIgEgAUECRhs6AAYgACANIA5yQQFxOgACIAAgCyAMckEBcToAASAAIAkgCnJBAXE6AAAgACAHIAhyQQFxOgAFIAAgAyAFckEBcToABCAAIAQgBnJBAXE6AAML5QMCDH8BfiADIAEoAhgiCiAFayIISwRAIAEoAgwiCSAFIAUgCUkbIQ9BACAJayESIAEoAiAhDCABKAIQIRAgASkDACETA0ACQAJAIBMgAiAIaiIRMQAAiEIBg1AEQCABIAg2AhggBSEHIAghCiAGDQIMAQsgCSAJIAwgCSAMSRsgBhtBAWsiDSEHAkACQAJAAkADQCAHQX9GBEAgBSAMIAYbIgcgCSAHIAlLGyENIAkhBwNAIAcgDUYEQCABIAg2AhggBkUEQCABIAU2AiALIAAgCjYCCCAAIAg2AgQgAEEBNgIADwsgByAPRg0DIAcgCGogA08NBCAHIBFqIQsgBCAHaiAHQQFqIQctAAAgCy0AAEYNAAsgASAKIBBrIgo2AhggECEHIAZFDQYMBwsgBSANTQ0EIAcgCGoiCyADTw0DIAcgEWohCyAEIAdqIAdBAWshBy0AACALLQAARg0ACyAKIBJqIAdqQQFqIQogBSEHIAZFDQQMBQsgDyAFQYzX6QAQlQQACyADIAggCWoiACAAIANJGyADQZzX6QAQlQQACyALIANBvNfpABCVBAALIAcgBUGs1+kAEJUEAAsgASAHNgIgIAchDAsgCiAFayIIIANJDQALCyABQQA2AhggAEEANgIAC+oDAgN/AX4CQCAAAn8CQCABQYABTwRAQfsFQQAgAUGaP08bIgIgAkH9AmoiAiACQQN0Qcyj9QBqKAIAIAFLGyICIAJBvwFqIgIgAkEDdEHMo/UAaigCACABSxsiAiACQd8AaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEwaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEYaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEMaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEGaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEDaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEBaiICIAJBA3RBzKP1AGooAgAgAUsbIgIgAkEBaiICIAJBA3RBzKP1AGooAgAgAUsbIgJBA3RBzKP1AGooAgAiBCABRg0BQQAMAgsgAUHhAGtBGklBBXQgAXMhAUEADAELIAIgASAES2oiAUH1C0sNASABQQN0QdCj9QBqKAIAIgFBgLADc0GAgMQAa0GAkLx/SQRAIAFB////AXFBDGwiAUGAg/YAaikCACEFIAFB/IL2AGooAgAhAQsgBachAyAFQiCIpws2AgggACADNgIEIAAgATYCAA8LQfYLQfYLQezJ9AAQlQQAC9sDAQd/AkACQCABQYAKSQRAIAFBBXYhBQJAAkAgACgCoAEiBARAIARBAWshAyAEQQJ0IABqQQRrIQIgBCAFakECdCAAakEEayEGIARBKUkhBwNAIAdFDQIgAyAFaiIEQShPDQMgBiACKAIANgIAIAJBBGshAiAGQQRrIQYgA0EBayIDQX9HDQALCyABQR9xIQggAUEgTwRAIABBACAFQQJ0EIMCGgsgACgCoAEgBWohAiAIRQRAIAAgAjYCoAEgAA8LIAJBAWsiB0EnSw0DIAIhBCAAIAdBAnRqKAIAIgZBACABayIDdiIBRQ0EIAJBJ00EQCAAIAJBAnRqIAE2AgAgAkEBaiEEDAULIAJBKEG4wvMAEJUEAAsgA0EoQbjC8wAQlQQACyAEQShBuMLzABCVBAALQeLC8wBBHUG4wvMAEO8EAAsgB0EoQbjC8wAQlQQACwJAIAIgBUEBaiIHSwRAIANBH3EhASACQQJ0IABqQQhrIQMDQCACQQJrQShPDQIgA0EEaiAGIAh0IAMoAgAiBiABdnI2AgAgA0EEayEDIAcgAkEBayICSQ0ACwsgACAFQQJ0aiIBIAEoAgAgCHQ2AgAgACAENgKgASAADwtBf0EoQbjC8wAQlQQAC8EFAQd/IwBBMGsiAiQAAkACQAJAIAAoAhQiAyAAKAIQIgRPDQAgACADQQFqIgE2AhQgAEEMaiEGAkAgAyAAKAIMIgVqLQAAIgNBMEYEQCABIARPDQMgASAFai0AAEEwa0H/AXFBCkkNAQwDCyADQTFrQf8BcUEISw0BIAEgBE8NAgNAIAEgBWotAABBMGtB/wFxQQlLDQMgACABQQFqIgE2AhQgASAESQ0ACwwCCyACQQ02AiQgAkEIaiAGEMAEIAJBJGogAigCCCACKAIMENUEIQMMAgsgAkENNgIkIAJBGGogAEEMahDsBCACQSRqIAIoAhggAigCHBDVBCEDDAELQQAhAyABIARPDQACQAJAIAEgBWotAAAiB0HlAEYgB0HFAEZyRQRAIAdBLkcNAyAAIAFBAWoiBzYCFCAEIAdNDQIgBSAHai0AAEEwa0H/AXFBCUsNAiABQQJqIQEDQCABIARGDQIgASAFaiABQQFqIQEtAAAiBkEwa0H/AXFBCkkNAAsgACABQQFrNgIUIAZBIHJB5QBHDQMLIwBBIGsiBCQAIAAgACgCFCIFQQFqIgE2AhQgAEEMaiEGAkAgASAAKAIQIgNPDQACQCAGKAIAIAFqLQAAQStrDgMAAQABCyAAIAVBAmoiATYCFAsCQAJAIAEgA08NACAAIAFBAWoiBTYCFCAAKAIMIgcgAWotAABBMGtB/wFxQQlLDQBBACEBIAMgBU0NAQNAIAUgB2otAABBMGtB/wFxQQlLDQIgACAFQQFqIgU2AhQgAyAFRw0ACwwBCyAEQQ02AhQgBEEIaiAGEOwEIARBFGogBCgCCCAEKAIMENUEIQELIARBIGokACABIQMMAgsgACAENgIUDAELIAJBDTYCJCACQRBqIAYQwAQgAkEkaiACKAIQIAIoAhQQ1QQhAwsgAkEwaiQAIAMLpAMBBn8jAEHQAGsiACQAQfmN9gAtAAAaQShBBBD8BSIBBEAgAEEsakEDECggAEEoaiAAQcwAaigCADYAACAAQSBqIABBxABqKQIANwAAIABBGGogAEE8aikCADcAACAAQRBqIABBNGopAgA3AAAgACAAKQIsNwAIIAFBAzoAACABIAApAAU3AAEgAUEJaiAAQQ1qKQAANwAAIAFBEWogAEEVaikAADcAACABQRlqIABBHWopAAA3AAAgAUEgaiAAQSRqKQAANwAAQYyP9gAgAjYCAEGYj/YAKAIAIQJBmI/2AEEBNgIAQZSP9gAoAgAhBEGUj/YAIAE2AgBBkI/2ACgCACEFQZCP9gBBATYCAEGIj/YAKAIAIQFBiI/2AEEBNgIAAkAgAUUNACACBEAgBEEUaiEBA0AgAUEQaygCACIDBEAgAUEMaygCACADQQEQjQYLIAFBBGsoAgAiAwRAIAEoAgAgA0EDdEEEEI0GCyABQShqIQEgAkEBayICDQALCyAFRQ0AIAQgBUEobEEEEI0GCyAAQdAAaiQADwtBBEEoEMwGAAvuAwIDfwJ+IwBBkAFrIgQkACAEQSc2AowBIARBEGoCfiABQoCAIFoEQCAEQTBqIABCAELzstjBnp69zJV/EIQEIARBIGogAEIAQtLhqtrtp8mH9gAQhAQgBEHQAGogAUIAQvOy2MGenr3MlX8QhAQgBEFAayABQgBC0uGq2u2nyYf2ABCEBCAEQcgAaikDACAEQShqKQMAIARBOGopAwAiByAEKQMgfCIBIAdUrXwiCCAEKQNAfCIHIAhUrXwgByAEQdgAaikDACABIAQpA1B8IAFUrXx8IgEgB1StfCIIQj6IIQcgCEIChiABQj6IhAwBCyABQi2GIABCE4iEQr2igqOOqwSACyIBIAdCgIDgsLeft5z1ABCEBCAEKQMQIAB8IARB5QBqIgUgBEGMAWoiBhCjASADIAJBAUEAAn8gBCgCjAEiAiABIAeEUA0AGiAEQfkAakEwIAJBFGsQgwIaIARBFDYCjAEgBCAHQi2GIAFCE4iEIgBCvaKCo46rBIAiByABQoCA4LC3n7ec9QAQhAQgBCkDACABfCAFIAYQowEgBCgCjAEiAiAAQr2igqOOqwRUDQAaIARB5gBqQTAgAkEBaxCDAhogBCAHp0EwcjoAZUEACyICIARB5QBqakEnIAJrEKABIARBkAFqJAALkAQBBn8jAEEgayIDJAACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQCABKAIUIgIgASgCECIFSQRAIAFBDGohBiABKAIMIQcDQCACIAdqLQAAQQlrIgRBGUsNDEEBIAR0QZOAgARxRQRAIARBGUcNDSABQQA2AgggASACQQFqNgIUIANBFGogBiABENoBIAMoAhghAiADKAIUQQJGDQwgAygCHCIEQQVrDgoFCwsDCwYHCwkECwsgASACQQFqIgI2AhQgAiAFRw0ACwsgA0EFNgIUIANBCGogAUEMahDABCADQRRqIAMoAgggAygCDBDVBCEBIABBAToAACAAIAE2AgQMDAsgAikAAELT4JXjxq2at+cAUg0HQQAMBgsgAkGzlcAAQQ4QzAQNBkEBDAULIAJBwZXAAEEFEMwEDQVBAgwEC0EDIAJBxpXAAEEKEMwERQ0DGiACQdCVwABBChDMBA0BQQQMAwtBBSACQdqVwABBCxDMBEUNAhogAkHllcAAQQsQzAQNA0EGDAILIAJB8JXAAEEKEMwEDQJBBwwBCyACQfqVwABBDRDMBA0BQQgLIQIgAEEAOgAAIAAgAjoAAQwECyACIARBiJbAAEEJEPgDDAILIABBAToAACAAIAI2AgQMAgsgASADQRRqQeCmwAAQcwsgARCJBCEBIABBAToAACAAIAE2AgQLIANBIGokAAvJAwINfwF+IAMgBUEBayINIAEoAhQiCGoiB0sEQEEAIAEoAggiCmshDiAFIAEoAhAiD2shECABKAIcIQsgASkDACEUA0ACQCABAn8CQCAUIAIgB2oxAACIQgGDUARAIAEgBSAIaiIINgIUIAYNAwwBCyAKIAogCyAKIAtLGyAGGyIJIAUgBSAJSRshDCACIAhqIREgCSEHAkACQAJAA0AgByAMRgRAQQAgCyAGGyEMIAohBwNAIAcgDE0EQCABIAUgCGoiAjYCFCAGRQRAIAFBADYCHAsgACACNgIIIAAgCDYCBCAAQQE2AgAPCyAHQQFrIgcgBU8NBSAHIAhqIgkgA08NAyAEIAdqLQAAIAIgCWotAABGDQALIAEgCCAPaiIINgIUIBAgBkUNBhoMBwsgByAIaiADTw0CIAcgEWohEiAEIAdqIAdBAWohBy0AACASLQAARg0ACyAIIA5qIAdqIQggBkUNAwwFCyAJIANB/NXsABCVBAALIAMgCCAJaiIAIAAgA0kbIANBjNbsABCVBAALIAcgBUHs1ewAEJUEAAtBAAsiBzYCHCAHIQsLIAggDWoiByADSQ0ACwsgASADNgIUIABBADYCAAuXBAEGfyMAQSBrIgMkAAJAAkACQAJ/AkACQAJAAkACQAJAIAEoAhQiAiABKAIQIgVJBEAgAUEMaiEGIAEoAgwhBwNAIAIgB2otAABBCWsiBEEZSw0HQQEgBHRBk4CABHFFBEAgBEEZRw0IIAFBADYCCCABIAJBAWo2AhQgA0EUaiAGIAEQ2gEgAygCGCECIAMoAhQiBUECRg0DIAMoAhwhBCAFDQcgBEEGaw4GBQYGBgYEBgsgASACQQFqIgI2AhQgAiAFRw0ACwsgA0EFNgIUIANBCGogAUEMahDABCADQRRqIAMoAgggAygCDBDVBCEBIABBAToAACAAIAE2AgQMCQsgAEEBOgAAIAAgAjYCBAwICyACQb2TwABBCxDMBEUEQEEAIQIMBwsgAkHIk8AAQQsQzAQNAUEBIQIMBgsgAkHTk8AAQQYQzAQNAEECIQIMBQsgAiAEQdyTwABBAxD4AwwCCwJAAkACQCAEQQZrDgYBAgICAgACCyACQb2TwABBCxDMBEUEQEEAIQIMBQsgAkHIk8AAQQsQzAQNAUEBIQIMBAsgAkHTk8AAQQYQzAQNAEECIQIMAwsgAiAEQdyTwABBAxD4AwwBCyABIANBFGpBwKbAABBzCyABEIkEIQEgAEEBOgAAIAAgATYCBAwCCyAAQQA6AAAgACACOgABDAELIABBADoAACAAIAI6AAELIANBIGokAAu4AwELfwJAAkAgASgCDCIERQRAIAAoAggiBUUNAiAAQQhqIQkMAQsgASAEQQFrIgc2AgwgASABKAIIIgZBAWoiAiABKAIAIgVBACACIAVPG2s2AgggACgCCCIFRQ0BIABBCGohCSABKAIEIAZBAnRqKAIAIgYgBUEBa0sNAAJAIAdFBEBBACEEDAELIAEgBEECayIENgIMIAEgASgCCCICQQFqIgMgASgCACIIQQAgAyAITxtrNgIIIAEoAgQgAkECdGooAgAhCgtBASEDIAZBAWoiCCAFRg0AIAdBAEchAiAAKAIEIAZBA3RqQQhqIQAgASgCBCEMIAEoAgAhCyABKAIIIQcDQAJAIAJFIAggCkdyRQRAAkAgBEUEQEEAIQYMAQsgASAEQQFrIgY2AgwgASAHQQFqIgIgC0EAIAIgC08bayICNgIIIAwgB0ECdGooAgAhCiACIQcLIARBAEchAiADQQFqIQMgBiEEDAELIAAgA0EDdGsgACkCADcCAAsgAEEIaiEAIAUgCEEBaiIIRw0ACwsgCSAFIANrNgIACyABKAIAIgAEQCABKAIEIABBAnRBBBCNBgsLhwQBBn8jAEEgayIDJAACQAJAAkACfwJAAkACQAJAAkACQAJAIAEoAhQiAiABKAIQIgVJBEAgAUEMaiEGIAEoAgwhBwNAIAIgB2otAABBCWsiBEEZSw0IQQEgBHRBk4CABHFFBEAgBEEZRw0JIAFBADYCCCABIAJBAWo2AhQgA0EUaiAGIAEQ2gEgAygCGCECIAMoAhQiBUECRg0DIAMoAhwhBCAFDQggBEEEaw4EBAcGBQcLIAEgAkEBaiICNgIUIAIgBUcNAAsLIANBBTYCFCADQQhqIAFBDGoQwAQgA0EUaiADKAIIIAMoAgwQ1QQhASAAQQE6AAAgACABNgIEDAoLIABBAToAACAAIAI2AgQMCQsgAigAAEHQws2jB0cNAkEAIQIMBwsgAkGw0+kAQQcQzAQNAUEBIQIMBgsgAkG30+kAQQYQzAQNAEECIQIMBQsgAiAEEPkDDAILAkACQAJAAkAgBEEEaw4EAAMCAQMLIAIoAABB0MLNowdHDQJBACECDAULIAJBsNPpAEEHEMwEDQFBASECDAQLIAJBt9PpAEEGEMwEDQBBAiECDAMLIAIgBBD5AwwBCyABIANBFGpBwNjBABBzCyABEIkEIQEgAEEBOgAAIAAgATYCBAwCCyAAQQA6AAAgACACOgABDAELIABBADoAACAAIAI6AAELIANBIGokAAvuBAEHfyMAQSBrIgYkAEEBIQkgASABKAIUIgdBAWoiBTYCFCABQQxqIQgCQCAFIAEoAhAiCk8NAAJAAkAgCCgCACAFai0AAEEraw4DAQIAAgtBACEJCyABIAdBAmoiBTYCFAsCQAJAIAUgCkkEQCABIAVBAWoiBzYCFCABKAIMIgsgBWotAABBMGtB/wFxIgVBCk8EQCAGQQ02AhQgBiAIEOwEIAZBFGogBigCACAGKAIEENUEIQEgAEEBNgIAIAAgATYCBAwDCyAHIApPDQEDQCAHIAtqLQAAQTBrQf8BcSIIQQpPDQIgASAHQQFqIgc2AhQgBUHMmbPmAEcgCEEHS3IgBUHLmbPmAEpxRQRAIAVBCmwgCGohBSAHIApHDQEMAwsLIwBBIGsiBCQAIAACfwJAQQAgCSADUBtFBEAgASgCFCIFIAEoAhAiB08NASABKAIMIQkDQCAFIAlqLQAAQTBrQf8BcUEKTw0CIAEgBUEBaiIFNgIUIAUgB0kNAAsMAQsgBEEONgIUIARBCGogAUEMahDsBCAAIARBFGogBCgCCCAEKAIMENUENgIEQQEMAQsgAEQAAAAAAAAAAEQAAAAAAAAAgCACGzkDCEEACzYCACAEQSBqJAAMAgsgBkEFNgIUIAZBCGogCBDsBCAGQRRqIAYoAgggBigCDBDVBCEBIABBATYCACAAIAE2AgQMAQsgACABIAIgAwJ/IAlFBEAgBCAFayIAQR91QYCAgIB4cyAAIAAgBEggBUEASnMbDAELIAQgBWoiAEEfdUGAgICAeHMgACAFQQBIIAAgBEhzGwsQ4QILIAZBIGokAAveAwEEfyMAQRBrIgUkACAAKAIAIgcoAgAhBCAALQAEQQFHBEAgBCgCCCIGIAQoAgBGBEAgBCAGQQFBAUEBEOcCIAQoAgghBgsgBCAGQQFqNgIIIAQoAgQgBmpBLDoAACAHKAIAIQQLIABBAjoABCAFIAQgASACEJQBAn8gBS0AAEEERwRAIAUgBSkDADcDCCAFQQhqEPIEDAELIAcoAgAiASgCACABKAIIIgBGBEAgASAAQQFBAUEBEOcCIAEoAgghAAsgASAAQQFqNgIIIAEoAgQgAGpBOjoAACAHKAIAIQECQCADQf8BcUECRgRAIAEoAgAgASgCCCIAa0EDTQRAIAEgAEEEQQFBARDnAiABKAIIIQALIAEgAEEEajYCCCABKAIEIABqQe7qseMGNgAADAELIAECfyADQQFxRQRAIAEoAgAgASgCCCIAa0EETQRAIAEgAEEFQQFBARDnAiABKAIIIQALIAEoAgQgAGoiAkGAh8AAKAAANgAAIAJBBGpBhIfAAC0AADoAACAAQQVqDAELIAEoAgAgASgCCCIAa0EDTQRAIAEgAEEEQQFBARDnAiABKAIIIQALIAEoAgQgAGpB9OTVqwY2AAAgAEEEags2AggLQQALIAVBEGokAAvzAwEGfyMAQSBrIgMkAAJAAkAgASgCFCICIAEoAhAiBUkEQCABQQxqIQYgASgCDCEHA0ACQCACIAdqLQAAQQlrIgRBGU0EQEEBIAR0QZOAgARxDQEgBEEZRg0ECyABIANBFGpBsKbAABBzIAEQiQQhASAAQYCAgIB4NgIAIAAgATYCBAwECyABIAJBAWoiAjYCFCACIAVHDQALCyADQQU2AhQgA0EIaiABQQxqEMAEIANBFGogAygCCCADKAIMENUEIQEgAEGAgICAeDYCACAAIAE2AgQMAQsgAUEANgIIIAEgAkEBajYCFCADQRRqIAYgARDaASADKAIYIQUCQAJAIAMoAhQiAkECRwRAIAMoAhwhASACRQRAQQAhAiABQQBOBEAgAUUEQEEBIQQMBQtB+Y32AC0AABpBASECIAFBARD8BSIEDQQLIAIgAUGYnsAAEOUFAAtBACECIAFBAE4EQCABRQRAQQEhBAwDC0H5jfYALQAAGkEBIQIgAUEBEPwFIgQNAgsgAiABQZiewAAQ5QUACyAAQYCAgIB4NgIAIAAgBTYCBAwCCyAEIAUgARCsASECIAAgATYCCCAAIAI2AgQgACABNgIADAELIAQgBSABEKwBIQIgACABNgIIIAAgAjYCBCAAIAE2AgALIANBIGokAAvzAwEGfyMAQSBrIgMkAAJAAkAgASgCFCICIAEoAhAiBUkEQCABQQxqIQYgASgCDCEHA0ACQCACIAdqLQAAQQlrIgRBGU0EQEEBIAR0QZOAgARxDQEgBEEZRg0ECyABIANBFGpBsNjBABBzIAEQiQQhASAAQYCAgIB4NgIAIAAgATYCBAwECyABIAJBAWoiAjYCFCACIAVHDQALCyADQQU2AhQgA0EIaiABQQxqEMAEIANBFGogAygCCCADKAIMENUEIQEgAEGAgICAeDYCACAAIAE2AgQMAQsgAUEANgIIIAEgAkEBajYCFCADQRRqIAYgARDaASADKAIYIQUCQAJAIAMoAhQiAkECRwRAIAMoAhwhASACRQRAQQAhAiABQQBOBEAgAUUEQEEBIQQMBQtB+Y32AC0AABpBASECIAFBARD8BSIEDQQLIAIgAUHIzsEAEOUFAAtBACECIAFBAE4EQCABRQRAQQEhBAwDC0H5jfYALQAAGkEBIQIgAUEBEPwFIgQNAgsgAiABQcjOwQAQ5QUACyAAQYCAgIB4NgIAIAAgBTYCBAwCCyAEIAUgARCsASECIAAgATYCCCAAIAI2AgQgACABNgIADAELIAQgBSABEKwBIQIgACABNgIIIAAgAjYCBCAAIAE2AgALIANBIGokAAvQAwEIfyMAQTBrIgIkAAJAAkAgASgCACIFKAIUIgMgBSgCECIGSQRAIAVBDGohByAFKAIMIQkDQCADIAlqLQAAIgRBCWsiCEEXS0EBIAh0QZOAgARxRXINAiAFIANBAWoiAzYCFCADIAZHDQALCyACQQI2AiQgAkEYaiAFQQxqEMAEIAAgAkEkaiACKAIYIAIoAhwQ1QQ2AgRBASEEDAELIARB3QBGBEBBACEEIABBADoAAQwBCwJAAkAgAS0ABEUEQCAEQSxHDQFBASEEIAUgA0EBaiIDNgIUIAMgBkkEQANAIAMgCWotAAAiAUEJayIIQRdLQQEgCHRBk4CABHFFcg0EIAUgA0EBaiIDNgIUIAMgBkcNAAsLIAJBBTYCJCACIAcQwAQgACACQSRqIAIoAgAgAigCBBDVBDYCBAwDCyAAQQE6AAFBACEEIAFBADoABAwCCyACQQc2AiQgAkEQaiAHEMAEIAAgAkEkaiACKAIQIAIoAhQQ1QQ2AgRBASEEDAELIAFB3QBGBEAgAkEVNgIkIAJBCGogBxDABCAAIAJBJGogAigCCCACKAIMENUENgIEDAELIABBAToAAUEAIQQLIAAgBDoAACACQTBqJAALqAMCBH8DfiMAQTBrIgIkAAJAAkACQCABKAIUIgMgASgCGCAAQT9xRWsgAS0AJkEEdiIEQX9zaiIATwRAIARBAWsiBUEITw0BIAMgAGsiAyAESQ0CIAEoAhAgAGohACAEQQNxIQMCQCAFQQNJBEAMAQsgBEEMcSEEQhghBgNAIAAxAAAgBkIYfYYgB4QgAEEBajEAACAGQhB9hoQgAEECajEAACAGQgh9hoQgAEEDajEAACAGhoQhByAAQQRqIQAgBkIgfCEGIAhCBHwhCCAEQQRrIgQNAAsLIAMEQCAIQgOGIQYDQCAAMQAAIAaGIAeEIQcgBkIIfCEGIABBAWohACADQQFrIgMNAAsLIAEoAhwhACACIAc3AwggB0KAgICAEFoNAyACQTBqJABBACAAIAenayAHUBsPCyAAIANBlL/BABCSBgALQeTHwQBBLEGQyMEAEO8EAAsgBCADQaDIwQAQkwYACyACQQI2AhQgAkG4u8EANgIQIAJCATcCHCACIAJBCGqtQoCAgICAFYQ3AyggAiACQShqNgIYIAJBEGpByLvBABCuBQALtgMCAn8EfiMAQdAAayIDJAAgA0FAayIEQgA3AwAgA0IANwM4IAMgATcDMCADIAFC88rRy6eM2bL0AIU3AyAgAyABQu3ekfOWzNy35ACFNwMYIAMgADcDKCADIABC4eSV89bs2bzsAIU3AxAgAyAAQvXKzYPXrNu38wCFNwMIIAMgAi0AADoATyADQQhqIANBzwBqQQEQuQEgAykDCCEBIAMpAxghACAENQIAIQcgAykDOCEFIAMpAyAgAykDECEIIANB0ABqJAAgBSAHQjiGhCIHhSIFQhCJIAUgCHwiBYUiBkIViSAGIAAgAXwiAUIgiXwiBoUiCEIQiSAIIAUgAEINiSABhSIAfCIBQiCJQv8BhXwiBYUiCEIViSAIIAEgAEIRiYUiACAGIAeFfCIBQiCJfCIHhSIGQhCJIAYgASAAQg2JhSIAIAV8IgFCIIl8IgWFIgZCFYkgBiABIABCEYmFIgAgB3wiAUIgiXwiB4UiBkIQiSAGIABCDYkgAYUiACAFfCIBQiCJfCIFhUIViSAAQhGJIAGFIgBCDYkgACAHfIUiAEIRiYUgACAFfCIAQiCJhSAAhQu2AwICfwR+IwBB0ABrIgMkACADQUBrIgRCADcDACADQgA3AzggAyABNwMwIAMgAULzytHLp4zZsvQAhTcDICADIAFC7d6R85bM3LfkAIU3AxggAyAANwMoIAMgAELh5JXz1uzZvOwAhTcDECADIABC9crNg9es27fzAIU3AwggAyACKAIANgJMIANBCGogA0HMAGpBBBC5ASADKQMIIQEgAykDGCEAIAQ1AgAhByADKQM4IQUgAykDICADKQMQIQggA0HQAGokACAFIAdCOIaEIgeFIgVCEIkgBSAIfCIFhSIGQhWJIAYgACABfCIBQiCJfCIGhSIIQhCJIAggBSAAQg2JIAGFIgB8IgFCIIlC/wGFfCIFhSIIQhWJIAggASAAQhGJhSIAIAYgB4V8IgFCIIl8IgeFIgZCEIkgBiABIABCDYmFIgAgBXwiAUIgiXwiBYUiBkIViSAGIAEgAEIRiYUiACAHfCIBQiCJfCIHhSIGQhCJIAYgAEINiSABhSIAIAV8IgFCIIl8IgWFQhWJIABCEYkgAYUiAEINiSAAIAd8hSIAQhGJhSAAIAV8IgBCIImFIACFC8QDAQJ/An8gAUGAAU8EQEEAQc0FQQAgAUHSPU8bIgIgAkHmAmoiAiACQQN0QfzJ9ABqKAIAIAFLGyICIAJBswFqIgIgAkEDdEH8yfQAaigCACABSxsiAiACQdoAaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEtaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEWaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkELaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEGaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEDaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEBaiICIAJBA3RB/Mn0AGooAgAgAUsbIgIgAkEBaiICIAJBA3RB/Mn0AGooAgAgAUsbIgJBA3RB/Mn0AGooAgAiAyABRw0BGiACIAEgA0tqIgFBmQtNBEBB6QAgAUEDdEGAyvQAaigCACIBIAFBgLADc0GAgMQAa0GAkLx/SSICGyEBQYcGQQAgAhsMAgtBmgtBmgtB3Mn0ABCVBAALIAFBwQBrQRpJQQV0IAFyIQFBAAshAiAAQQA2AgggACACNgIEIAAgATYCAAv8AwECfyAAIAFqIQICQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQfCT9gAoAgBGBEAgAigCBEEDcUEDRw0BQeiT9gAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQrgILAkACQAJAIAIoAgQiA0ECcUUEQCACQfST9gAoAgBGDQIgAkHwk/YAKAIARg0DIAIgA0F4cSICEK4CIAAgASACaiIBQQFyNgIEIAAgAWogATYCACAAQfCT9gAoAgBHDQFB6JP2ACABNgIADwsgAiADQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFBgAJPBEAgACABEMgCDwsgAUH4AXFB2JH2AGohAgJ/QeCT9gAoAgAiA0EBIAFBA3Z0IgFxRQRAQeCT9gAgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtB9JP2ACAANgIAQeyT9gBB7JP2ACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQfCT9gAoAgBHDQFB6JP2AEEANgIAQfCT9gBBADYCAA8LQfCT9gAgADYCAEHok/YAQeiT9gAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACwuZBQECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUG+HEwEQEEeIQIgAUEhaw6FAQohFisHGAgUFRcdDg8JBSEhISEhISEhISEMDQMCBAssISEhISEhISEhISEhISEhISEhISEhISEhISEQBhEcHyEhISEhISEhISEhISEhISEhISEhISEhISEhIRIeEwEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISImISchCwJAIAFBqcEAaw4VKSEhIyohISEhISEhISEhISElISEkAAsgAUGTwABrDhQYGSAgICAHICAgICAgICAgICAgGh8LQR0hAgwqC0EbIQIMKQtBGSECDCgLQRohAgwnC0EXIQIMJgtBGCECDCULQRYhAgwkC0EVIQIMIwtBBiECDCILQQchAgwhC0EIIQIMIAtBCSECDB8LQQohAgweC0EMIQIMHQtBDSECDBwLQQ4hAgwbC0EPIQIMGgtBEiECDBkLQRMhAgwYC0EQIQIMFwtBESECDBYLQRQhAgwVC0EcIQIMFAtBBSECDBMLQQMhAgwSC0EEIQIMEQtBAiECDBALQR8hAgwPC0EgIQIMDgtBIiECDA0LQSMhAgwMCyABQb8cRg0HCyAAQSQ2AgAPC0EhIQJBASEDDAkLQSEhAkECIQMMCAtBISECQQMhAwwHC0EhIQJBBCEDDAYLQSEhAkEFIQMMBQtBISECQQYhAwwEC0EhIQJBByEDDAMLQSEhAkEIIQMMAgtBISECQQkhAwwBC0EhIQILIAAgAzoABCAAIAI2AgAL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IAZ0QYANcQ0CCyADQQFqIQMgBUEYayIFDQALIAIhAyABDAELIAlBACACIANrIAJJGwshBSAAIAI2AjQgACABNgIwIABBADYCLCAAIAEgB2o2AiggACABNgIkIABBADYCGCAAIAg2AhQgACAENgIQIABBATYCDCAAIAM2AgggACAFNgIEIABBATYCAA8LIAggAkHkqOkAEJMGAAv/AgEKfyADQQhPBEAgACAAIANBA3YiA0HgAGwiBGogACADQagBbCIFaiADEJkCIQAgASABIARqIAEgBWogAxCZAiEBIAIgAiAEaiACIAVqIAMQmQIhAgsgAEEEaigCACIHIAFBBGooAgAiCiAHIApJIgsbQQFqIQYgACgCACIDIQQgASgCACIMIQUCQANAIAZBAWsiBkUNASAFKAIAIQggBCgCACEJIARBBGohBCAFQQRqIQUgCCAJRg0ACyAIIAlLIQsLIAcgAkEEaigCACIGIAYgB0siCBtBAWohBSACKAIAIgchBAJAA0AgBUEBayIFRQ0BIAQoAgAhCSADKAIAIQ0gA0EEaiEDIARBBGohBCAJIA1GDQALIAkgDUshCAsgCCALRgR/IAogBiAGIApLIgYbQQFqIQMCQANAIANBAWsiA0UNASAHKAIAIQAgDCgCACEEIAxBBGohDCAHQQRqIQcgACAERg0ACyAAIARLIQYLIAIgASAGIAtzGwUgAAsLgQMBBX9BASEKAkAgAiADTQ0AIARFBEACQANAAkAgASADai0AAEEJayIEQRdNBEBBASAEdCIEQY2AgARxDQEgBEEScQ0DCwwECyACIANBAWoiA0cNAAsgAiEDDAILQQAhCgwBCyAHKAIAIQkDQCABIANqIgstAABBCWsiCEEXSw0BAkACQAJAQQEgCHRBjYCABHFFBEAgAgJ/QQEgCEEBRg0AGiAIQQRHDQZBASACIANrQQFGDQAaQQJBASALLQABQQpGGwsgA2oiA0kNASAEIAEgA2ogAiADayAFKAIUEQMAIgtFDQMgAyAJSQ0CIAMgCWsiDCAGKAIAIAYoAggiCGtLBEAgBiAIIAwQsgMgBigCCCEICyAGKAIEIAhqIAEgCWogDBCsARogByADIAtqIgk2AgAgBiAIIAxqNgIIIAkhAwwDCyADQQFqIQMMAgsgAyACQdSv8AAQkgYACyAJIANBxK/wABCV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PCIMQQ1PBEAgBygCDCEQIAcoAhAhDANAIANBBGsoAgAiE0EMTQR/IANBNGsFIANBNGsoAgAhEyADQTBrKAIACyELIANBOGshBiAQIBMgECATSRtBAWohGSAMIQICQAJAA0AgGUEBayIZRQ0BIAsoAgAhFSACKAIAIRQgAkEEaiECIAtBBGohCyAUIBVGDQALIBQgFUkNASADIQIMBQsgECATSQ0AIAMhAgwECyADIAYpAgA3AgAgA0EwaiAGQTBqKQIANwIAIANBKGogBkEoaikCADcCACADQSBqIAZBIGopAgA3AgAgA0EYaiAGQRhqKQIANwIAIANBEGogBkEQaikCADcCACADQQhqIAZBCGopAgA3AgAgBiIDIARHDQALDAELA0ACfyADQQRrKAIAIhNBDU8EQCADQTRrKAIAIRMgA0EwaygCAAwBCyADQTRrCyELIANBOGshBiAMIBMgDCATSRtBAWohGSAOIQICQAJAA0AgGUEBayIZRQ0BIAsoAgAhECACKAIAIRUgAkEEaiECIAtBBGohCyAQIBVGDQALIBAgFUsNASADIQIMBAsgDCATSQ0AIAMhAgwDCyADIAYpAgA3AgAgA0EwaiAGQTBqKQIANwIAIANBKGogBkEoaikCADcCACADQSBqIAZBIGopAgA3AgAgA0EYaiAGQRhqKQIANwIAIANBEGogBkEQaikCADcCACADQQhqIAZBCGopAgA3AgAgBiIDIARHDQALCyAEIQILIAIgBykDCDcCACACQTBqIBcpAwA3AgAgAkEoaiAaKQMANwIAIAJBIGogISkDADcCACACQRhqIBgpAwA3AgAgAkEQaiAcKQMANwIAIAJBCGogHikDADcCAAsgCUE4aiICIBJHDQALCwsgCkEBayEHQQAhCUEAIQICQAJAA0ACfyACIARqIgNB7ABqKAIAIgxBDU8EQCADQUBrKAIAIQ4gA0E8aigCAAwBCyADQTxqIQ4gDAshEwJ/IANBNGooAgAiBkENTwRAIANBBGooAgAhBiADQQhqKAIADAELIANBBGoLIQsgBiATRgRAIA4gCyATQQJ0EMwERQ0CCyACQThqIQIgByAJQQFqIglHDQALIAohAgwBCyAMQQ1PBEAgA0FAaygCACAMQQJ0QQQQjQYLIAlBAWohAiAJQQJqIApPDQAgCiAJa0ECayEKIANB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ABCEAyACKAIIIQkLIAkgBkEkbGoiA0GD/gM7ASAgAyAINgIcIAMgDjYCGCADQR42AhQgAyAENgIQIANCgICAgOADNwIIIANCgICAgMAANwIAIAIgBkEBaiIGNgIMDAELQQFBHkHIzsEAEOUFAAsgDEEYaiIMIApHDQALCyAFQaACaiIDIAIpAgQ3AgAgA0EIaiACQQxqKAIANgIAIAJBEGokACAFKAKkAiEDIAUoAqgCIgIgBSgCNCAFKAI8IgdrSwRAIAVBNGogByACQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogAyACQSRsEKwBGiAFIAIgB2o2AjwgBSgCoAIiAkUNACADIAJBJGxBBBCNBgsgBS0ARCICQQJHBEACQCACQQFxRQ0AIAVBoAJqIQkjAEHAAWsiAiQAIAJBADYCMCACQgA3AiggAkEANgIcIAJBADYCECACICI2AjQgAiAiKAIIIgQ2AiQgAiAiKAIEIgM2AiAgAiADNgIUIAIgAzYCCCACIAMgBEEYbGoiAzYCGCACIAM2AgwgAkHEAGogAkEIahCZAQJAAkACQCACKAJEQYCAgIB4RgRAIAlBADYCCCAJQoCAgIDAADcCAAwBC0H5jfYALQAAGkGQAUEEEPwFIgpFDQEgCiACKQJENwIAIApBIGogAkHkAGooAgA2AgAgCkEYaiACQdwAaikCADcCACAKQRBqIAJB1ABqKQIANwIAIApBCGogAkHMAGopAgA3AgAgAkEBNgJAIAIgCjYCPCACQQQ2AjggAkGQAWogAkEwaikCADcDACACQYgBaiACQShqKQIANwMAIAJBgAFqIAJBIGopAgA3AwAgAkH4AGogAkEYaikCADcDACACQfAAaiACQRBqKQIANwMAIAIgAikCCDcDaCACQZwBaiACQegAahCZASACKAKcAUGAgICAeEcEQEEkIQNBASEEA0AgAigCOCAERgRAIAJBOGogBEEBQQRBJBDqAiACKAI8IQoLIAMgCmoiBiACKQKcATcCACAGQSBqIAJBvAFqKAIANgIAIAZBGGogAkG0AWopAgA3AgAgBkEQaiACQawBaikCADcCACAGQQhqIAJBpAFqKQIANwIAIAIgBEEBaiIENgJAIANBJGohAyACQZwBaiACQegAahCZASACKAKcAUGAgICAeEcNAAsLIAkgAikCODcCACAJQQhqIAJBQGsoAgA2AgALIAJBwAFqJAAMAQtBBEGQAUGE3MEAEOUFAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAEUiAkECRwRAAkAgAkEBcUUNACAFQaACaiEQQQAhFiMAQZABayINJAAgDUEANgIUIA1CgICAgMAANwIMIA1BGGogIigCBCAiKAIIEMcCIA1B0ABqrUKAgICAwACEIVggDSgCTCEVIA0oAkghEiANKAJEIQIgDSgCQCEPIA0oAjwhGSANKAI4IREgDSgCMCEdIA0oAiwhByANKAIoIQkgDSgCJCEIIA0oAiAhCyANKAIcIQogDSgCGEEBcSEXIA1B3ABqIRpBBCEpAkACQAJAA0ACQAJAAn8CfwJAAkAgCEECRgRAIAIhAyAJIQYMAQsCQCAIQQFxRQRAIAkhBiAIIQQMAQtBACEGQQAhBCAJRQ0AIAkhDiAHIRMgCiEEQQAhCQwFCyAdQQJGBEBBAiEdIAIhAwwBCwJAIA8gGUcEQANAAkACQCAZIgwtAABBAWsOCQABAQEBAQEBBAELIAwoAgRBBmtBA0kNAwsgAkEBaiECIAxBGGoiGSAPRw0ACwsgAiEDDAELIAxBGGohGSACQQFqIQkgHUEBcQRAIAIhAyAJIQggESICQQFqDAMLQQAhHSAPIBlGBEAgCSEDDAELIAkhAwNAAkACQCAMQRhqIggtAABBAWsOCQABAQEBAQEBBAELIAxBHGooAgBBBmtBA0kNAwsgA0EBaiEDIAxBMGogCCEMIA9HDQALIAhBGGohGQsgF0UNBkECIQggAyECIAYhCSALIRMgCiEOQQAMAgtBASEdIANBAWohCCAMQTBqIRkgCQshCQJAIANBf0cEQCADQQFqIg4gCUkNBCADIBVJDQEgDiAVQbSp6QAQkwYACwwaCyADIAJrIRMgEiAJQRhsaiEOIAMhESAIIQIgBiEJIAQhCCAKCyEEIA5FDQMLAkAgEwRAIBNBA3EhCkEAIQZBACEDIBNBBE8EQCATQXxxISEgDiEMA0AgDEHIAGotAABFIAxBMGotAABFIAxBGGotAABFIAMgDC0AAEVqampqIQMgDEHgAGohDCAhIAZBBGoiBkcNAAsLIAoEQCAOIAZBGGxqIQwDQCADIAwtAABFaiEDIAxBGGohDCAKQQFrIgoNAAsLIA0gAzYCUCADQShLDQELIAQhCgwCCyAOKAIQIQogDSATQRhsIA5qQQRrKAIAIgY2AmQgDSAKNgJgIAYgCkkNAyANQQI2AmwgDUGo8MEANgJoIA1CATcCdCANIFg3A4ABIA0gDUGAAWo2AnAgDUHUAGogDUHoAGoQnwIgDSgCDCAWRgRAIA1BDGpBuPDBABCEAyANKAIQISkLICkgFkEkbGoiA0EANgIIIANCgICAgMAANwIAIAMgDSkCVDcCDCADQRRqIBooAgA2AgAgA0GG/gE7ASAgAyAGNgIcIAMgCjYCGCANIBZBAWoiFjYCFCAEIQoMAQsLIAkgDkG0qekAEJUGAAsgECANKQIMNwIAIBBBCGogDUEUaigCADYCACANQZABaiQADAELIA1BAjYCbCANQdiawgA2AmggDUICNwJ0IA0gDUHkAGqtQoCAgIDAAIQ3A4gBIA0gDUHgAGqtQoCAgIDAAIQ3A4ABIA0gDUGAAWo2AnAgDUHoAGpBgJvCABCuBQALIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBGIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohPUEAIQNBACEeQQAhKkEAISBBACEIQQAhJ0EAISVCACFaQQAhB0EAIRNCACFYQQAhGEEAIRJBACEPQQAhF0EAIRpBACEdQQAhFkEAIRVBACEhQQAhH0EAISlBACENIwBBwAFrIiYkACAmQQA2AgwgJkKAgICAwAA3AgQgJkEQaiAiKAIEICIoAggQmAIgJEHoAmoiAigCCCJCQThsIQwgJkGEAWohLyAmQcwAaiErICZBKGohQyACKAIEIREgIigCDCE3QQQhPgJAAkACQAJAAkACQANAAn8CQCAmKAIcIgJBAkcEQCACQQFxBEAgJigCICEZICZBADYCICAZBEAgJigCJAwECyAmQQA2AhwLAkAgJigCKEECRg0AICZBgAFqIEMQjQIgJigCgAFFDQAgJigCiAEiAkF/RwRAIAJBAWoiBCAmKAKEASIKQQFqIglJDQogAiAmKAJEIgZJDQMgBCAGQfSo6QAQkwYACwwbCyAmQQI2AhwLAkAgJigCEEEBRw0AICYoAhQhGSAmQQA2AhQgGUUNACAmKAIYDAILID0gJikCBDcCACA9QQhqICZBDGooAgA2AgAgJkHAAWokAAwICyAmKAJAIAlBGGxqIRkgAiAKawsiNEEYbCAZaiExQQshHEEAIQogGSEjQQAhDiAZIQkDQAJAAn8CQAJAAkACQAJAAkACQCAcQf8BcUELRwRAIAohBCAOIQIgCSELIFohWCAcIRAgGiEYIB0hEiAWIQ8gFSETICEhCCAfIQcgKSEnIA0hFyAlIR4gKiEgDAELQQohECAJIDFGBEAgCiEEIA4hAiAJIQsMAQsCfwJAA0ACQCAOIQYgCSICLQAARQ0AIAZBAWohDiAxIAJBGGoiCUcNAQwCCwsgAkEYaiELIAZBAWoiAiAjIDFGDQEaQQAhHCAKIQkCQANAAkAgCSEEIBwgI2oiDi0AAEUNACAEQQFqIQkgMSAjIBxBGGoiHGpHDQEMAgsLIAQgNE8NBCAEQQFqIQQgDkEYaiEjIBkgCkEYbGogHGoiCS0AACIQQQpGBEBBCiEQDAQLIAlBFGooAAAhICAJQRBqKAAAIR4gCUEMai0AACEXIAlBC2otAAAhJyAJQQpqLQAAIQcgCUEJai0AACEIIAlBCGotAAAhEyAJQQNqLQAAIQ8gCUECai0AACESIAlBAWotAAAhGCAGrSFYDAMLIARBAWohBCAOQRhqISMMAgsgAkEYaiELIAZBAWoLIQIgCiEECwJAAkAgCyAxRg0AIAJBGGwgWKciREEYbGtBGGshLgNAIAstAAAEQCAuQRhqIS4gAkEBaiECIDEgC0EYaiILRw0BDAILCyAjIDFGDQAgAkEBaiEOIAtBGGohCUEAIRwgBCEbA0AgHCAjaiIyLQAABEAgG0EBaiEbIDEgIyAcQRhqIhxqRw0BDAILCyAbIDRPDQMgGSAEQRhsaiAcaiIELQAAIhxBCkcNAQsgA60hWgwKCyACrSFaIBBB/wFxIgZBCkYEQCACIQMMCgsgNygCDCIDQQAgHiAgRiJHGyADIB5BAnQiSGogHiAgSyJJIDcoAhAiCiAgSXIgCiAeTXIiEBsiNUUNKyADQQAgBEEUaigAACIqIARBEGooAAAiJUYbIAMgJUECdGogCiAqSSAlICpLciAKICVNciIzGyJKRQ0rIBtBAWohCiAyQRhqISMgBEEMai0AACENIARBC2otAAAhKSAEQQpqLQAAIR8gBEEJai0AACEhIARBCGotAAAhFSAEQQNqLQAAIRYgBEECai0AACEdIARBAWotAAAhGkEAICAgHmsiSyAQGyEwIAYNBwJAIBNB/wFxIgNBAk8EQEEAIRAgA0EDRiAIQf8BcUECRnINAQwECyATIRAgCEH/AXFBAkcNAwtBACEGIANBA0YNAyAHQf8BcUECRw0FDAMLIAQgNEG80ekAEJUEAAsgGyA0QbzR6QAQlQQACyAHQf8BcUECRw0BIAghBgtBACEEQQAgA0EDRg0CGkEAICdB/wFxQQJGDQIaICcMAgsgCCEGCyAHIQQgJ0EAICdB/wFxQQJHGwshOEECIBdB/wFxIi0gLUECTxtBAXEgOEEBcWogBEEBcWogBkEBcWogEEEBcWpBAU0EQCASIBhqIA9qIANBA0dqIC1BA0dqQf8BcUECSQ0BCyAmQYABaiA1IDAQakEAIS0gJigCtAEhBgJAIEJFDQAgBkENTwRAICYoAogBITggJigChAEiP0ECdCFMIAwhAyARIQQDQCAEKAI0IhBBDE0EfyAEQQRqBSAEKAIEIRAgBCgCCAshTQJAIBAgP0cNACBNIDggTBDMBA0AQQEhLQwDCyAEQThqIQQgA0E4ayIDDQALDAELIAZBAnQhOCAMIQMgESEEA0ACfyAEKAI0IhBBDU8EQCAEKAIEIRAgBCgCCAwBCyAEQQRqCyE/AkAgBiAQRw0AID8gLyA4EMwEDQBBASEtDAILIARBOGohBCADQThrIgMNAAsLIAZBDU8EQCAmKAKIASAGQQJ0QQQQjQYLIAIhAyAtRQ0BCyAmQcgAaiA1IDAQaiAmQYABaiBKQQAgKiAlayAzGxBqICshBiAmKAJ8Ii0hBCAtQQ1JIjBFBEAgJigCUCEGICYoAkwhBAsgLyEDICYoArQBIjUhECA1QQ1JIjNFBEAgJigChAEhECAmKAKIASEDCwJAIAQgEEYEQCAGIAMgBEECdBDMBEUNAQsgM0UEQCAmKAKIASA1QQJ0QQQQjQYLIDBFBEAgJigCUCAtQQJ0QQQQjQYLIAIhAwwBCyAzRQRAICYoAogBIDVBAnRBBBCNBgsgMEUEQCAmKAJQIC1BAnRBBBCNBgsgREEBaiIDIAJNBEAgAiA0Sw0DIBkgA0EYbGohBAJAA0AgLkUNASAuQRhrIS4gBC0AACAEQRhqIQRBA2tB/wFxQQJJDQALIAIhAwwCCyAmICo2ArwBICYgHjYCuAEgHiAqSw0EQfmN9gAtAAAaQRBBBBD8BSIGRQ0jIDcoAgwiA0EAIEcbIAMgSGogNygCECIDICBJIElyIAMgHk1yIgMbIglFDSRBACEQQQAgSyADGyIDQQJ0IQQgA0H/////A0sgBEH8////B0tyDQUCQCAERQRAQQQhDkEAIQoMAQtB+Y32AC0AABpBBCEQIAMhCiAEQQQQ/AUiDkUNBgsgDiAJIAQQrAEhBCAGIAM2AgwgBiAENgIIIAYgCjYCBCAGQQA2AgBB+Y32AC0AABpBIUEBEPwFIgRFDQYgBEEgakGchMIALQAAOgAAIARBGGpBlITCACkAADcAACAEQRBqQYyEwgApAAA3AAAgBEEIakGEhMIAKQAANwAAIARB/IPCACkAADcAACAbQQFqIQogAkEBaiEOIAtBGGohCSAyQRhqISMgJigCBCA2RgRAICZBBGpBoITCABCEAyAmKAIIIT4LID4gNkEkbGoiA0GE/gE7ASAgAyAqNgIcIAMgHjYCGCADQSE2AhQgAyAENgIQIANCgYCAgJAENwIIIAMgBjYCBCADQQE2AgAgJiA2QQFqIjY2AgwgAiEDDAELCwsgAyACQeyDwgAQlQYACyACIDRB7IPCABCTBgALICZBAjYChAEgJkHYmsIANgKAASAmQgI3AowBICYgJkG8AWqtQoCAgIDAAIQ3A1AgJiAmQbgBaq1CgICAgMAAhDcDSCAmICZByABqNgKIASAmQYABakGAm8IAEK4FAAsgECAEQcjOwQAQ5QUAC0EBQSFByM7BABDlBQALIAkgBEH0qOkAEJUGAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAEciAkECRwRAAkAgAkEBcUUNACAFQaACaiEWQQAhFyMAQYABayINJAAgDUEANgIUIA1CgICAgMAANwIMIA1BGGogIigCBCAiKAIIEMcCIA1B0ABqrUKAgICAwACEIVggDSgCTCESIA0oAkghGCANKAJEIQIgDSgCQCEPIA0oAjwhGSANKAI4IQwgDSgCMCEaIA0oAiwhByANKAIoIQogDSgCJCEIIA0oAiAhCyANKAIcIQQgDSgCGEEBcSEcQQQhIQJAAkACQAJAAkADQAJAAn8CfwJAAkAgCEECRgRAIAIhAyAKIQYMAQsCQCAIQQFxRQRAIAohBiAIIQkMAQtBACEGQQAhCSAKRQ0AIAohDiAHIREgBCEJQQAhCgwFCyAaQQJGBEAgAiEDQQIhGgwBCwJAIA8gGUcEQANAAkACQCAZIhMtAABBAWsOCQABAQEBAQEBBAELIBMoAgRBBmtBA0kNAwsgAkEBaiECIBNBGGoiGSAPRw0ACwsgAiEDDAELIBNBGGohGSACQQFqIQogGkEBcQRAIAohCCACIQMgDCICQQFqDAMLQQAhGiAPIBlGBEAgCiEDDAELIAohAwNAAkACQCATQRhqIggtAABBAWsOCQABAQEBAQEBBAELIBNBHGooAgBBBmtBA0kNAwsgA0EBaiEDIBNBMGogCCETIA9HDQALIAhBGGohGQsgHEUNBkECIQggAyECIAYhCiALIREgBCEOQQAMAgtBASEaIANBAWohCCATQTBqIRkgCgshCgJAIANBf0cEQCADQQFqIg4gCkkNBSADIBJJDQEgDiASQbSp6QAQkwYACwwdCyADIAJrIREgGCAKQRhsaiEOIAghAiADIQwgBiEKIAkhCCAECyEJIA5FDQMLIA4gEUEYbGohEEEAIQMgDiEGQQAhBAJAA0BBACETAkADQCAGIBNqIhUgEEYNASATQRhqIRMgBEEBaiEEIBUtAABBA0cNAAsgESAEQQFrTQ0GIA4gA0EYbGogE2oiA0EYay0AAEEDRw0CIANBBGsoAgAhHiADQQhrKAIAIR0gDSADQRRrKAIAIgM2AlAgA0EBSwRAQfmN9gAtAAAaQRBBBBD8BSIVRQ0lQfmN9gAtAAAaQQRBBBD8BSIDRQ0dIBVBATYCDCAVIAM2AgggFUKAgICAEDcCACADQSA2AgAgDUECNgJkIA1BtIfCADYCYCANQgE3AmwgDSBYNwN4IA0gDUH4AGo2AmggDUHUAGogDUHgAGoQnwIgDSgCDCAXRgRAIA1BDGpBxIfCABCEAyANKAIQISELICEgF0EkbGoiA0EBNgIIIAMgFTYCBCADQQE2AgAgAyANKQJUNwIMIANBFGogDUHcAGooAgA2AgAgA0GDHjsBICADIB42AhwgAyAdNgIYIA0gF0EBaiIXNgIUCyAGIBNqIQYgBCEDDAELCyAJIQQgEUECTQ0BIBBBGGstAABBAUcNASAQQTBrIgMtAABBA0cNASAQQcgAay0AAA0BIANBFGooAgAhBiADQRBqKAIAIQ5B+Y32AC0AABpBEEEEEPwFIhFFDSIgEUECNgIAQfmN9gAtAAAaQS1BARD8BSIDRQ0FIANBJWpB6IbCACkAADcAACADQSBqQeOGwgApAAA3AAAgA0EYakHbhsIAKQAANwAAIANBEGpB04bCACkAADcAACADQQhqQcuGwgApAAA3AAAgA0HDhsIAKQAANwAAIA0oAgwgF0YEQCANQQxqQfCGwgAQhAMLIA0oAhAiISAXQSRsaiIEQYP+ADsBICAEIAYgDiAGIA5LGzYCHCAEIAYgDiAGIA5JGzYCGCAEQS02AhQgBCADNgIQIARCgYCAgNAFNwIIIAQgETYCBCAEQQE2AgAgDSAXQQFqIhc2AhQgCSEEDAELCyANQQA2AnAgDUEBNgJkIA1BhIjCADYCYCANQgQ3AmggDUHgAGpBjIjCABCuBQALIAogDkG0qekAEJUGAAsgFiANKQIMNwIAIBZBCGogDUEUaigCADYCACANQYABaiQADAILIARBAWsgEUHc0ekAEJUEAAtBAUEtQcjOwQAQ5QUACyAFKAKkAiEDIAUoAqgCIgIgBSgCNCAFKAI8IgdrSwRAIAVBNGogByACQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogAyACQSRsEKwBGiAFIAIgB2o2AjwgBSgCoAIiAkUNACADIAJBJGxBBBCNBgsgBS0ASCICQQJHBEACQCACQQFxRQ0AIAVBoAJqIRcgJEH0AmohAkEAIRIjAEHQAWsiDSQAIA1BADYCCCANQoCAgIDAADcCACANQoCAgICAATcCDAJAAkAgIigCCCIhRQ0AIAIoAggiA0UNACAiKAIEIgYgIUEYbGohIyANQYgBaq0iWEKAgICAsBWEIVogAigCBCIOIANBGGxqIR8gDUEoakEEciEMIA1BnAFqIQMgDUHMAWohCCANQeEAaiEcIA1B4ABqIR4gIigCDCEdIAYhE0EAIQQDQCATLQAAQQpHBEAgE0EYaiETICEgBCAEICFJGyASaiEbIARBAWogBiAEQRhsaiElIA4hBwNAIA1BADYCFAJAIAcoAggiGEUNAAJAIBtFBEBBACEKDAELIAcoAgQiICAYQcgAbGohJ0EAIQRBASEPQQAhCgJAAkADQCAlIARBGGxqIgItAAAiGkEKRg0DIA8hCSACKAAUIRYgAigAECEVIA0gAkEBaiICKQAANwMYIA0gAkEHaiIEKQAANwAfAn8gGkUEQCAdKAIMIgJBACAVIBZGGyACIBVBAnRqIB0oAhAiAiAWSSAVIBZLciACIBVNciIEGyIPRQ0pIA1BADYCmAEgDUEANgLMAUEMIRkgAyEQIAghAkEAIBYgFWsgBBsiBEENTwRAQX8gBEEBa2d2IgJB/v///wNLDQUgAkEBaiIZQQJ0IgJBBBDHBUUNBUH5jfYALQAAGiACQQQQ/AUiEEUNBCANIBk2AswBIA0gEDYCoAEgDUIBNwKYASADIQILIARBAnQhBEEAIQoCQAJAA0AgBEUNASAQIA8oAgA2AgAgBEEEayEEIBBBBGohECAPQQRqIQ8gGSAKQQFqIgpHDQALIAIgGTYCACAERQ0BQQAhEANAAn8gDSgCzAEiAkENSQRAIAIhCiADIQtBDCECIAgMAQsgDSgCnAEhCiANKAKgASELIAMLIRkgDyAQaigCACEpIAIgCkYEfyANQZgBahDkAyANKAKgASELIAMhGSANKAKcAQUgCgtBAnQgC2ogKTYCACAZIBkoAgBBAWo2AgAgBCAQQQRqIhBHDQALDAELIAIgCjYCAAsgDUHYAGogDUHIAWopAgA3AwAgDUHQAGogDUHAAWopAgA3AwAgDUHIAGogDUG4AWopAgA3AwAgDUFAayANQbABaikCADcDACANQThqIA1BqAFqKQIANwMAIA1BMGogDUGgAWopAgA3AwAgDSANKQKYATcDKCAeQQNqQQA2AAAgHkEANgIAIA1BAzoAbCANQQM2AmggDUECOgBnQQAMAQsgHCACKQAANwAAIBxBB2ogBCkAADcAACANIBo6AGAgDUECNgIoIBoLIQICQCACICAtADhHDQACQAJAAkACQAJAAkACQAJAAkAgAg4FAAECAwQICyAgLQBAIQIgDS0AaCIEQQNHDQUgAkEDRw0IDAYLQQkgDSgCZCICQQJrIgQgBEEiTxsiBEEJICAoAjwiCkECayILIAtBIk8bRw0HIARBH0cEQCAEQQlHDQcgAkUgCkVyDQQgDSgCaCAgKAJARg0HDAgLIA0tAGggIC0AQEYNBgwHCyAgKwNAIWECQCANKwNoImIgYmIEQCBhIGFiDQEMCAsgYSBiYg0HCyAgLQA5IQIgDS0AYSIEQQRGBEAgAkEERg0GDAcLIAIgBEYNBQwGCyANKAJkICAoAjxGDQQMBQsgDSgCZCAgKAI8Rg0DDAQLIAIgCnINAwwCCyACQQNGDQICQCAEQQJGBEAgAkECRw0EDAELIAIgBHNBAXEgAkECRnINAwsgIC0AQSECAkAgDS0AaSIEQQJGBEAgAkECRg0BDAQLIAIgBHNBAXEgAkECRnINAwsgIC0AQiECAkAgDS0AaiIEQQJGBEAgAkECRw0EDAELIAIgBHNBAXEgAkECRnINAwsgDS0AayICQQJGICAtAEMiBEECRnJFBEAgAiAEc0EBcUUNAQwDCyACQQJHIARBAkdyDQILICAtAEQhAgJAIA0tAGwiCkEDRgRAIAJBA0YNAQwDCyACQQNGDQIgIC0ARSEEIA0tAG0hCwJAIApBAkYEQCACQQJHDQQMAQsgAiAKc0EBcSACQQJGcg0DCyALQQNGBEAgBEEDRg0BDAMLIARBA0YgBCALR3INAgsgDS0AYSAgLQA5Rw0BIA0tAGIgIC0AOkcNASANLQBjICAtADtHDQEgIC0APyECAkAgDS0AZyIEQQJGBEAgAkECRw0DDAELIAIgBHNBAXEgAkECRnINAgsgDS0AZCAgLQA8Rw0BIA0tAGUgIC0APUcNASANLQBmICAtAD5HDQELAkAgDSgCKCICQQJGIgsgICgCACIEQQJGckUEQCAMIQogDSgCXCIEQQ1PBEAgDSgCMCEKIA0oAiwhBAsCfyAgKAI0Ig9BDU8EQCAgKAIEIQ8gICgCCAwBCyAgQQRqCyECIAQgD0cNAiAKIAIgBEECdBDMBEUNAQwCCyACQQJHIARBAkdyDQELIA0oAhQiBCANKAIMRgRAIA1BDGpB0PnBABCLAwsgDSgCECAEQRhsaiICIBo6AAAgAiANKQMYNwABIAIgFjYAFCACIBU2ABAgAkEIaiANKQAfNwAAIA0gBEEBaiIKNgIUAkAgCw0AIA0oAlwiAkENSQ0AIA0oAjAgAkECdEEEEI0GCyAgQcgAaiIgICdGDQQgCUEBaiEPIAkiBCAbRg0EDAELCwJAIA0oAihBAkYNACANKAJcIgJBDUkNACANKAIwIAJBAnRBBBCNBgsgDSgCFCEKDAILQQQgAhDMBgALQfCiwQBBEUGQ18EAEO8EAAsgCiAYRw0AIA0oAhAiAigCECEZIA0gGEEYbCACakEEaygCACIPNgKIASANIBk2AoABAkACQCAPIBlPBEBB+Y32AC0AABpBEEEEEPwFIglFDQIgB0EUaiIQKAIAIgJBAnQhC0EAIQogAkH/////A0sgC0H8////B0tyDQEgB0EQaiIVKAIAIRYCQCALRQRAQQQhIEEAIQQMAQtB+Y32AC0AABpBBCEKIAIhBCALQQQQ/AUiIEUNAgsgICAWIAsQrAEhCiAJIAI2AgwgCSAKNgIIIAkgBDYCBCAJQQA2AgAgECgCACEEIBUoAgAhCiANQQA2AqABIA1CgICAgBA3ApgBIAQEQCANQZgBakEAIARBAUEBEOoCA0ACQCAKKAIAIgJBgAFPBEAgDUEANgIoAn8gAkGAEE8EQCACQYCABE8EQCANIAJBP3FBgAFyOgArIA0gAkESdkHwAXI6ACggDSACQQZ2QT9xQYABcjoAKiANIAJBDHZBP3FBgAFyOgApQQQMAgsgDSACQT9xQYABcjoAKiANIAJBDHZB4AFyOgAoIA0gAkEGdkE/cUGAAXI6AClBAwwBCyANIAJBP3FBgAFyOgApIA0gAkEGdkHAAXI6AChBAgshAiACIA0oApgBIA0oAqABIgtrSwRAIA1BmAFqIAsgAkEBQQEQ6gIgDSgCoAEhCwsgDSgCnAEgC2ogDUEoaiACEKwBGiANIAIgC2o2AqABDAELIA0oAqABIgsgDSgCmAFGBEAgDUGYAWpB9M/BABC2AwsgDSgCnAEgC2ogAjoAACANIAtBAWo2AqABCyAKQQRqIQogBEEBayIEDQALCyANQZABaiANQaABaigCADYCACANIA0pApgBNwOIASANIFo3A4ABIA1BAjYCLCANQfT5wQA2AiggDUIBNwI0IA0gDUGAAWo2AjAgDUH0AGogDUEoahCfAiANKAKIASICBEAgDSgCjAEgAkEBEI0GCyANKAIIIgQgDSgCAEYEQCANQYT6wQAQhAMLIA0oAgQgBEEkbGoiAkEBNgIIIAIgCTYCBCACQQE2AgAgAiANKQJ0NwIMIAJBiB47ASAgAiAPNgIcIAIgGTYCGCACQRRqIA1B/ABqKAIANgIAIA0gBEEBajYCCAwDCyANQQI2AiwgDUHYmsIANgIoIA1CAjcCNCANIFhCgICAgMAAhDcDoAEgDSANQYABaq1CgICAgMAAhDcDmAEgDSANQZgBajYCMCANQShqQYCbwgAQrgUACyAKIAtByM7BABDlBQALDCILIAdBGGoiByAfRw0ACyASQQFrIRIhBCATICNHDQELCyAXIA0pAgA3AgAgF0EIaiANQQhqKAIANgIAIA0oAgwiAkUNASANKAIQIAJBGGxBCBCNBgwBCyAXIA0pAgA3AgAgF0EIaiANQQhqKAIANgIACyANQdABaiQAIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBJIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohEUEAIQNBACELIwBBEGsiBiQAIAZBADYCDCAGQoCAgIDAADcCBCAiKAIEIgogIigCCCITQRhsaiENQQQhDCAKIQQCQANAAkAgBCEJQQAhGSADIQICQAJAAkACQANAIAkgGWoiBCANRg0BIBlBGGohGSACQQFqIQIgBC0AAEECRw0ACyATIAJBAWtNDQEgCSAZaiEEIANBGGwgAiEDIApqIBlqIghBBGsoAgAiB0ECSQ0FIAhBGGstAABBAkcNBSAIQRdrLQAAIg5BBEYNBSAIQRBrKwMAImFEAAAAAAAAAABjIGFEAAAAAAAA8ENkciBhIGGcoUQAAAAAAACwPGRyDQVBACEQQn8CfiBhRAAAAAAAAAAAZiIDIGFEAAAAAAAA8ENjcQRAIGGxDAELQgALQgAgAxsgYUT////////vQ2QbIlhC5ACCQgt9QgNaBEAgWEIKgqdB3NXpAGotAAAhEAsgAiEDIA4gEEYNBUH5jfYALQAAGkE0QQEQ/AUiCEUNAkH5jfYALQAAGiAIQTBqQaznwQAoAAA2AAAgCEEoakGk58EAKQAANwAAIAhBIGpBnOfBACkAADcAACAIQRhqQZTnwQApAAA3AAAgCEEQakGM58EAKQAANwAAIAhBCGpBhOfBACkAADcAACAIQfzmwQApAAA3AABBEEEEEPwFIg4EQEH5jfYALQAAGkEIQQQQ/AUhBAJAAkACQAJAIBBBAWsOAwECAwALIARFDQhB6AAhEEH0ACEDDAcLIARFDQdB9AAhEEHzACEDDAYLIARFDQZB5AAhEEHuACEDDAULIAQEQEHkACEQQfIAIQMMBQsMBQsMJAsgESAGKQIENwIAIBFBCGogBkEMaigCADYCACAGQRBqJAAMBQsgAkEBayATQfzR6QAQlQQAC0EBQTRByM7BABDlBQALIAQgEDYCBCAEIAM2AgAgDkECNgIMIA4gBDYCCCAOQoCAgIAgNwIAIAkgGWohBCAGKAIEIAtGBEAgBkEEakHg58EAEIQDIAYoAgghDAsgDCALQSRsaiIDQYj+ATsBICADIAc2AhwgAyAHQQJrNgIYIANBNDYCFCADIAg2AhAgA0KBgICAwAY3AgggAyAONgIEIANBATYCACAGIAtBAWoiCzYCDCACIQMMAQsLDBULIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBKIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohDkEAIQ9BACELIwBBEGsiAiQAIAJBADYCDCACQoCAgIDAADcCBCAiKAIEIhBBGGshByAQICIoAggiDEEYbGohDSAiKAIMIRFBBCEKAkACQAJAAkACQAJAA0AgByAPQRhsaiEJA0AgDSAQRg0EIAlBGGohCSAPQQFqIQ8gEC0AACAQQRhqIRBBAkcNAAsgDCAPQQFrTQ0EIAlBFGooAgAhBiAJLQAAQQJGBEAgCUEBai0AAEEERg0BCyAGQQJJDQEgBiARKAIQTQRAAkAgESgCDCAGQQJrIhlBAnRqIgMoAgAiBEHhAGtBGk8EQCAEQYABSQ0BIAQQ9wJFDQELIAMoAgQiBEHhAGtBGkkNAiAEQYABSQ0AIAQQ9wINAgtB+Y32AC0AABpBH0EBEPwFIgRFDQZB+Y32AC0AABogBEEXakG9/MEAKQAANwAAIARBEGpBtvzBACkAADcAACAEQQhqQa78wQApAAA3AAAgBEGm/MEAKQAANwAAQRBBBBD8BSIJRQ0mQfmN9gAtAAAaQQhBBBD8BSIIRQ0DIAggAygCACITQSByIBMgE0HBAGtBGkkbNgIAIAMoAgQhAyAJQQI2AgwgCSAINgIIIAlCgICAgCA3AgAgCCADQSByIAMgA0HBAGtBGkkbNgIEIAIoAgQgC0YEQCACQQRqQfz8wQAQhAMgAigCCCEKCyAKIAtBJGxqIgNBgf4BOwEgIAMgBjYCHCADIBk2AhggA0EfNgIUIAMgBDYCECADQoGAgIDwAzcCCCADIAk2AgQgA0EBNgIAIAIgC0EBaiILNgIMDAELCwwlC0GM/cEAEJYGAAtBBEEIQYTcwQAQ5QUACyAOIAIpAgQ3AgAgDkEIaiACQQxqKAIANgIAIAJBEGokAAwCCyAPQQFrIAxB/NHpABCVBAALQQFBH0HIzsEAEOUFAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAEsiAkECRwRAIAJBAXFFDQ0gBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRggAigCECEdIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhICAFKALMAiEJIAUoAsgCIR8gBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhGSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhDyAFKAKkAiECIAUoAqACQQFxISUDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIBkhDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgH0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAfRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwVCwwVCyADIBFrIQwgICAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwUCyAlRQ0PQQAhBEECIQ4gBiEKIA8hDCACIRMgAwshCSATRQ0OCyAEIQIgDEUNAEEAIQIDQAJAICQoAmAgEyACQRhsaiIGIAwgAmsgGCAdICQoAmQoAgwRBQAiC0UEQCACQQFqIQIMAQsCQCALIAIgC2oiA00EQCADIAxLDQEgBUHoAWohFUEAIQJBACEXIwBBQGoiECQAIBBBADYCDCAQQoCAgIDAADcCBAJAAkACQAJAAkACQAJAIAtBA0cEQCALRQ0EIAZBFGooAgAiAiAGQRBqKAIAIg0gAiANSRshCCACIA0gAiANSxshFyALQQFGDQEgBkEYaiECAkAgC0EYbCIWQTBrIhJBGG5BAXEEQCACIQsgBiECDAELIAZBLGooAgAiCyAGQShqKAIAIg0gCyANSxsiGiAXIBcgGkkbIRcgCyANIAsgDUkbIgsgCCAIIAtLGyEIIAZBMGohCwsgEkEYTwRAIAYgFmohEgNAIAtBLGooAgAiBiALQShqKAIAIg0gBiANSxsiGiACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiEgFyAXICFJGyIXIBcgGkkbIRcgBiANIAYgDUkbIgYgFiACIAIgFksbIgIgCCACIAhJGyICIAIgBksbIQggC0EYaiECIAtBMGoiCyASRw0ACwsgECAXNgIUIBAgCDYCECAIIBdNDQEMBgsgGEEAIAZBFGooAgAiGiAGKAIQIhJGGyAYIBJBAnRqIBIgGksiJyASIB1PciAaIB1LciIIGyIWRQ0rQQAgGiASayAIGyIIQQJ0IQsgCEH/////A0sgC0H8////B0tyDQECQCALRQRAQQQhDQwBC0H5jfYALQAAGkEEIRcgCCECIAtBBBD8BSINRQ0CCyANIBYgCxCsASENIBBBBGpBwPvBABCUAyAQKAIIIgsgCDYCDCALIA02AgggCyACNgIEIAtBADYCACAQQQE2AgwgGEEAIAYoAkQiISAGKAJAIg1GGyAYIA1BAnRqIA0gIUsiKSANIB1PciAdICFJciICGyIqRQ0rQQAhFkEAICEgDWsgAhsiAkECdCEbIAJB/////wNLIBtB/P///wdLcg0CAkAgG0UEQEEEIRdBACEIDAELQfmN9gAtAAAaQQQhFiACIQggG0EEEPwFIhdFDQMLIBcgKiAbEKwBIRYgECgCBEEBRgRAIBBBBGpB0PvBABCUAyAQKAIIIQsLIAsgAjYCHCALIBY2AhggCyAINgIUIAtBADYCECAQQQI2AgwgECAhIA0gDSAhSRsiCCAGQSxqKAIAIgIgBkEoaigCACIGIAIgBksbIgsgGiASIBIgGkkbIhYgCyAWSxsiCyAIIAtLGyIXNgIUIBAgISANICkbIgggAiAGIAIgBkkbIgIgGiASICcbIgYgAiAGSRsiAiACIAhLGyIINgIQIAggF0sNBQtB+Y32AC0AABpBNkEBEPwFIgJFDQMgFSAQKQIENwIAIAJBLmpBnvzBACkAADcAACACQShqQZj8wQApAAA3AAAgAkEgakGQ/MEAKQAANwAAIAJBGGpBiPzBACkAADcAACACQRBqQYD8wQApAAA3AAAgAkEIakH4+8EAKQAANwAAIAJB8PvBACkAADcAACAVQQhqIBBBDGooAgA2AgAgFUGE/gA7ASAgFSAXNgIcIBUgCDYCGCAVQTY2AgwgFSACNgIQIBVBNjYCFCAQQUBrJAAMBQsgFyALQcjOwQAQ5QUACyAWIBtByM7BABDlBQALQeD7wQAQlgYAC0EBQTZByM7BABDlBQALIBBBAjYCHCAQQdiawgA2AhggEEICNwIkIBAgEEEUaq1CgICAgMAAhDcDOCAQIBBBEGqtQoCAgIDAAIQ3AzAgECAQQTBqNgIgIBBBGGpBgJvCABCuBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDBULDBULIAIgDEkNAAsgBCECDAALAAsMEgsMEQsMEAsMDwsMDgsMDQsMDAsMCwsMCgsMCQsMCAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBMIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohDEEAIRkjAEGAAWsiCSQAIAlBADYCDCAJQoCAgIDAADcCBCAJQRBqICIoAgQgIigCCBCYAiAJQcgAaq1CgICAgLAVhCFYIAlBKGohDSAiKAIMIQdBBCEIAkADQAJAAn8CQCAJKAIcIgJBAkcEQCACQQFxBEAgCSgCICECIAlBADYCICACBEAgCSgCJAwECyAJQQA2AhwLAkAgCSgCKEECRg0AIAlB6ABqIA0QjQIgCSgCaEUNACAJKAJwIgNBf0cEQCADQQFqIgIgCSgCbCIKQQFqIgRJDQUgAyAJKAJEIgZJDQMgAiAGQfSo6QAQkwYACwwRCyAJQQI2AhwLAkAgCSgCEEEBRw0AIAkoAhQhAiAJQQA2AhQgAkUNACAJKAIYDAILIAwgCSkCBDcCACAMQQhqIAlBDGooAgA2AgAgCUGAAWokAAwECyAJKAJAIARBGGxqIQIgAyAKawsiDkUNASACIA5BGGxqIQtBACEPIAIhAwNAAkACQAJAAkACQCADLQAABEAgD0EBaiEPDAELIA4gD00NAiACIA9BGGwiE2oiBC0AAA0DIA9BAWohDyAELQAMIgpB/gFxQQJGDQAgCkEBcQ0BCyADQRhqIgMgC0YNBgwECyAHKAIMIhFBACAEKAIUIgYgBCgCECIKRiIEGyARIApBAnRqIAYgCkkgBygCECIRIAZJciAKIBFPciIQGyIRRQ0cIAlBADYCcCAJQoCAgIAQNwJoIAQgEHJFBEAgCUHoAGpBACAGIAprIgRBAUEBEOoCA0AgCUHoAGogESgCABDDAiARQQRqIREgBEEBayIEDQALCyADQRhqIQMgCUHQAGogCUHwAGooAgA2AgAgCSAJKQJoNwNIA0AgE0UNAyATQRhrIhMgAmoiBC0AAA0ACyAEQQhqLQAAQQNHDQIgCUECNgJsIAlB2O7BADYCaCAJQgE3AnQgCSBYNwNgIAkgCUHgAGo2AnAgCUHUAGogCUHoAGoQnwIgCSgCBCAZRgRAIAlBBGpB6O7BABCEAyAJKAIIIQgLIAggGUEkbGoiBEEANgIIIARCgICAgMAANwIAIAQgCSkCVDcCDCAEQRRqIAlB3ABqKAIANgIAIARBiP4BOwEgIAQgBjYCHCAEIAo2AhggCSAZQQFqIhk2AgwMAgsgDyAOQaSo6QAQlQQACyAJQQA2AnggCUEBNgJsIAlBzKjpADYCaCAJQgQ3AnAgCUHoAGpB1KjpABCuBQALIAkoAkgiBARAIAkoAkwgBEEBEI0GCyADIAtHDQALDAELCyAEIAJB9KjpABCVBgALIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBNIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohCkEAIQsjAEEQayIDJAACQAJAAkACQAJAAkACQAJAICIoAggiBARAICIoAgQiBiAEQRhsIglqIQhBACEMA0ACQCAGIAxqIgItAAANACAEIAtNDQUgAi0AAA0AIAJBB2otAABBAXENAwsgC0EBaiELIAkgDEEYaiIMRw0ACwsgCkEANgIIIApCgICAgMAANwIADAELIAJBFGooAgAhDiACQRBqKAIAIRFB+Y32AC0AABpBIEEBEPwFIglFDQVB+Y32AC0AABogCUEYakHE5MEAKQAANwAAIAlBEGpBvOTBACkAADcAACAJQQhqQbTkwQApAAA3AAAgCUGs5MEAKQAANwAAQZABQQQQ/AUiE0UNAiATQYj+ADsBICATIA42AhwgEyARNgIYIBNBIDYCFCATIAk2AhAgE0KAgICAgAQ3AgggE0KAgICAwAA3AgAgA0EBNgIMIAMgEzYCCCADQQQ2AgQCQCAEQRhsQRhrIAxGDQAgAkEYaiECQQEhDgNAIAYgC0EYbGohEUEAIQwgC0EBaiELA0ACQAJAIAIgDGoiBy0AAA0AIAQgC00NCCAMIBFqIglBGGotAAANACAJQR9qLQAAQQFxDQELIAtBAWohCyACIAxBGGoiDGogCEcNAQwDCwsgCUEsaigCACEMIAlBKGooAgAhEUH5jfYALQAAGkEgQQEQ/AUiCUUNBiAJQRhqQcTkwQApAAA3AAAgCUEQakG85MEAKQAANwAAIAlBCGpBtOTBACkAADcAACAJQazkwQApAAA3AAAgAygCBCAORgRAIANBBGogDkEBQQRBJBDqAiADKAIIIRMLIBMgDkEkbGoiAkGI/gA7ASAgAiAMNgIcIAIgETYCGCACQSA2AhQgAiAJNgIQIAJCgICAgIAENwIIIAJCgICAgMAANwIAIAMgDkEBaiIONgIMIAdBGGoiAiAIRw0ACwsgCiADKQIENwIAIApBCGogA0EMaigCADYCAAsgA0EQaiQADAULIAsgBEG80ekAEJUEAAtBBEGQAUGE3MEAEOUFAAsgCyAEQbzR6QAQlQQAC0EBQSBByM7BABDlBQALQQFBIEHIzsEAEOUFAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAE4iAkECRwRAIAJBAXFFDQRBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEVIAIoAhAhFiAFQaACaiAiEIYGQQQhHiAFKALUAiEjIAUoAtACIRcgBSgCzAIhCSAFKALIAiESIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIQ0gBSgCsAIhCiAFKAKsAiEOIAUoAqgCIRkgBSgCpAIhAiAFKAKgAkEBcSEaA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyANIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBJGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgEkYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMDAsMDAsgAyARayEMIBcgB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCwsgGkUNBkEAIQRBAiEOIAYhCiAZIQwgAiETIAMLIQkgE0UNBQsgBCECIAxFDQBBACECA0ACQCAkKAJoIBMgAkEYbGoiDyAMIAJrIBUgFiAkKAJsKAIMEQUAIghFBEAgAkEBaiECDAELAkAgCCACIAhqIgNNBEAgAyAMSw0BIAVB6AFqIQsjAEEwayIGJAACQCAIQQJPBEAgFUEAIA8oAiwiECAPKAIoIg9GIgIbIBUgD0ECdGogDyAQSyAPIBZPciAQIBZLciIhGyIIRQ0dIAZBADYCGCAGQoCAgIAQNwIQIAIgIXJFBEAgBkEQakEAIBAgD2siAkEBQQEQ6gIDQCAGQRBqIAgoAgAQwwIgCEEEaiEIIAJBAWsiAg0ACwsgBkEIaiAGQRhqKAIANgIAIAYgBikCEDcDACAGQQI2AhQgBkGgjsIANgIQIAZCATcCHCAGIAatQoCAgICwFYQ3AyggBiAGQShqNgIYIAtBDGogBkEQahCfAiALIBA2AhwgCyAPNgIYIAtBiP4AOwEgIAtBADYCCCALQoCAgIDAADcCACAGKAIAIgIEQCAGKAIEIAJBARCNBgsgBkEwaiQADAELQQEgCEHAjcIAEJUEAAsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMDAsMDAsgAiAMSQ0ACyAEIQIMAAsACwwJCwwICwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAE8iAkECRwRAAkAgAkEBcUUNACAFQaACaiEMQQAhEEEAIQcjAEEQayIEJAAgBEEANgIMIARCgICAgMAANwIEICIoAgQiAkEIayELIAIgIigCCCIRQRhsaiENICIoAgwhE0EEIQ4CQAJAAkACQANAIAsgEEEYbGohCAJAA0AgAiIDIA1GDQEgAkEYaiECIAhBGGohCCAQQQFqIRAgAy0AAEEBRw0AIAMoAgRBAkcNAAsgESAQQQFrTQ0CIBMoAgwiA0EAIAhBBGooAgAiCiAIKAIAIgZGIgkbIAMgBkECdCIIaiATKAIQIgMgCkkgBiAKS3IgAyAGTXIiGRsiA0UNGyAJIBlyDQEgAygCAEEuRw0BIAogBmsgCkECdCAIa0EEayEJIANBBGohCANAIAkEQCAJQQRrIQkgCCgCACAIQQRqIQhBLkYNAQwDCwtBA0YNAUH5jfYALQAAGkEQQQQQ/AUiCEUNGkH5jfYALQAAGkEMQQQQ/AUiA0UNBCADQS42AgggA0KugICA4AU3AgAgCEEDNgIMIAggAzYCCCAIQoCAgIAwNwIAQfmN9gAtAAAaQSVBARD8BSIJRQ0DIAlBHWpB/+rBACkAADcAACAJQRhqQfrqwQApAAA3AAAgCUEQakHy6sEAKQAANwAAIAlBCGpB6urBACkAADcAACAJQeLqwQApAAA3AAAgBCgCBCAHRgRAIARBBGpBtOvBABCEAyAEKAIIIQ4LIA4gB0EkbGoiA0GDPjsBICADIAo2AhwgAyAGNgIYIANBJTYCFCADIAk2AhAgA0KBgICA0AQ3AgggAyAINgIEIANBATYCACAEIAdBAWoiBzYCDAwBCwsgDCAEKQIENwIAIAxBCGogBEEMaigCADYCACAEQRBqJAAMAwsgEEEBayARQYzS6QAQlQQAC0EBQSVByM7BABDlBQALQQRBDBDMBgALIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBQIgJBAkcEQCACQQFxRQ0DQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhFyACKAIQISEgBUGgAmogIhCGBkEEIR4gBSgC1AIhHSAFKALQAiEgIAUoAswCIQkgBSgCyAIhGyAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhKQNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAbRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBtGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAdSQ0BIAkgHUHgpcAAEJMGAAsMCwsgAyARayEMICAgB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCgsgKUUNBUEAIQRBAiEOIAYhCiAZIQwgAiETIAMLIQkgE0UNBAsgBCECIAxFDQBBACECA0ACQCAkKAIAIBMgAkEYbGoiBiAMIAJrIBcgISAkKAIEKAIMEQUAIhZFBEAgAkEBaiECDAELAkAgFiACIBZqIgNNBEAgAyAMSw0BIAVB6AFqIQ9BACELQQAhGiMAQeAAayIIJAACQAJAIBYEQCAXQQAgBkEUaigCACIVIAYoAhAiEEYiAhsgFyAQQQJ0aiAQIBVLIiogECAhT3IgFSAhS3IiGBsiJUUNHSAIQQA2AhAgCEKAgICAEDcCCEEBIRIgAiAYckUEQCAIQQhqQQAgFSAQayILQQFBARDqAgNAIAhBCGogJSgCABDDAiAlQQRqISUgC0EBayILDQALIAgoAgwhEiAIKAIIIRogCCgCECELCwJAAkAgJCgCFEUNACAkKQMYIVggCEIANwMQIAhCADcDCCAIIFg3AxggCEEAOgBAIAhB6I/2ACkDADcDOCAIQeCP9gApAwA3AzAgCEHYj/YAKQMANwMoIAhB0I/2ACkDADcDICASIAsgCEEIahCEAiAkKAIMIiMCfiAILQBARQRAIAgpAxgMAQsgCCkDICAIQRBqKQMAhSJYQv////8PgyAIKQMYIAgpAwiFIlpCIIh+QiCIIFhCIIggWn6FCyJYp3EhJyBYQhmIQv8Ag0KBgoSIkKDAgAF+IVkgJCgCCCEfQQAhAgNAIB8gJ2opAAAiWiBZhSJYQn+FIFhCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiWFBFBEADQCALIB8gWHqnQQN2ICdqICNxQQR0ayIYQQxrKAIARgRAIBIgGEEQaygCACALEMwERQ0FCyBYQgF9IFiDIlhQRQ0ACwsgWiBaQgGGg0KAgYKEiJCgwIB/g1BFDQEgAkEIaiICICdqICNxIScMAAsAC0Gk6sEAEJYGAAsgFSAQICobISUgFSAQIBAgFUkbIScgFkEBRwRAIAZBGGohAgJAIBZBGGwiFUEwayIWQRhuQQFxBEAgAiELIAYhAgwBCyAGQSxqKAIAIgsgBkEoaigCACIQIAsgEEsbIiMgJyAjICdLGyEnIAsgECALIBBJGyILICUgCyAlSRshJSAGQTBqIQsLIBZBGE8EQCAGIBVqIRYDQCALQSxqKAIAIgYgC0EoaigCACIQIAYgEEsbIiMgAkEsaigCACIVIAJBKGooAgAiAiACIBVJGyIfICcgHyAnSxsiHyAfICNJGyEnIAYgECAGIBBJGyIGIBUgAiACIBVLGyICICUgAiAlSRsiAiACIAZLGyElIAtBGGohAiALQTBqIgsgFkcNAAsLIAggJzYCTCAIICU2AkggJSAnSw0CC0H5jfYALQAAGkEQQQQQ/AUiBgRAIAZBBGogGEEIaygCACICIAIgGEEEaygCAGoQtwEgBkEANgIAQfmN9gAtAAAaQS5BARD8BSICRQ0aIA8gJzYCHCAPICU2AhggD0GD/gA7ASAgD0EuNgIUIA8gAjYCECAPQoGAgIDgBTcCCCAPIAY2AgQgD0EBNgIAIAJBJmpB2urBACkAADcAACACQSBqQdTqwQApAAA3AAAgAkEYakHM6sEAKQAANwAAIAJBEGpBxOrBACkAADcAACACQQhqQbzqwQApAAA3AAAgAkG06sEAKQAANwAAIBoEQCASIBpBARCNBgsgCEHgAGokAAwDCwwcC0GU6sEAEJYGAAsgCEECNgIMIAhB2JrCADYCCCAIQgI3AhQgCCAIQcwAaq1CgICAgMAAhDcDWCAIIAhByABqrUKAgICAwACENwNQIAggCEHQAGo2AhAgCEEIakGAm8IAEK4FAAsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCwsMCwsgAiAMSQ0ACyAEIQIMAAsACwwICwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAFEiAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEYIAIoAhAhHSAFQaACaiAiEIYGQQQhHiAFKALUAiEjIAUoAtACISkgBSgCzAIhCSAFKALIAiEgIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIQ0gBSgCsAIhCiAFKAKsAiEOIAUoAqgCIRIgBSgCpAIhAiAFKAKgAkEBcSEqA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyANIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHICBGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgIEYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMICkgB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgKkUNBEEAIQRBAiEOIAYhCiASIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKAJwIBMgAkEYbGoiBiAMIAJrIBggHSAkKAJ0KAIMEQUAIhpFBEAgAkEBaiECDAELAkAgGiACIBpqIgNNBEAgAyAMSw0BIAVB6AFqISEjAEFAaiIXJAACQAJAAkACQCAaBEAgBiAaQRhsIiVqIScgBkEUaigCACICIAZBEGooAgAiCCACIAhJGyEPIAIgCCACIAhLGyEQIAZBGGohAiAaQQFGDQEgAiEVIA8hGSAQIQsgBiEIICVBMGsiFkEYbkEBcUUEQCAGQSxqKAIAIhkgBkEoaigCACIVIBUgGUkbIhsgCyALIBtJGyELIBkgFSAVIBlLGyIZIA8gDyAZSxshGSAGQTBqIRUgAiEICyAWQRhPBEADQCAVQSxqKAIAIhYgFUEoaigCACIbIBYgG0sbIi8gCEEsaigCACIfIAhBKGooAgAiCCAIIB9JGyIrIAsgCyArSRsiCyALIC9JGyELIBYgGyAWIBtJGyIWIB8gCCAIIB9LGyIIIBkgCCAZSRsiCCAIIBZLGyEZIBVBGGohCCAVQTBqIhUgJ0cNAAsLIBcgCzYCACAXIBk2AhQgCyAZTw0CIBdBAjYCHCAXQdiawgA2AhggF0ICNwIkIBcgF61CgICAgMAAhDcDOCAXIBdBFGqtQoCAgIDAAIQ3AzAMAwtBpOXBABCWBgALIA8hGSAQIQsLAkAgGEEAIAsgGUYiCBsgGCAZQQJ0aiALIB1LIBkgHU9yIhUbIhYEQCAXQQA2AiAgF0KAgICAEDcCGCAIIBVyRQRAIBdBGGpBACALIBlrIhVBAUEBEOoCA0AgF0EYaiAWKAIAEMMCIBZBBGohFiAVQQFrIhUNAAsLIBdBCGogF0EgaigCADYCACAXIBcpAhg3AwAgGkEBRwRAAkAgJUEwayIZQRhuQQFxBEAgAiEVIAYhAgwBCyAGQSxqKAIAIgggBkEoaigCACILIAggC0sbIhUgECAQIBVJGyEQIAggCyAIIAtJGyIIIA8gCCAPSRshDyAGQTBqIRULIBlBGE8EQANAIBVBLGooAgAiBiAVQShqKAIAIgggBiAISxsiGSACQSxqKAIAIgsgAkEoaigCACICIAIgC0kbIhYgECAQIBZJGyIQIBAgGUkbIRAgBiAIIAYgCEkbIgYgCyACIAIgC0sbIgIgDyACIA9JGyICIAIgBksbIQ8gFUEYaiECIBVBMGoiFSAnRw0ACwsgFyAQNgIUIBcgDzYCECAPIBBLDQILIBdBAjYCHCAXQfDlwQA2AhggF0IBNwIkIBcgF61CgICAgLAVhDcDMCAXIBdBMGo2AiAgIUEMaiAXQRhqEJ8CICEgEDYCHCAhIA82AhggIUGF/gE7ASAgIUEANgIIICFCgICAgMAANwIAIBcoAgAiAgRAIBcoAgQgAkEBEI0GCyAXQUBrJAAMAwsMHAsgF0ECNgIcIBdB2JrCADYCGCAXQgI3AiQgFyAXQRRqrUKAgICAwACENwM4IBcgF0EQaq1CgICAgMAAhDcDMAsgFyAXQTBqNgIgIBdBGGpBgJvCABCuBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBSIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhECACKAIQIRUgBUGgAmogIhCGBkEEIR4gBSgC1AIhIyAFKALQAiEWIAUoAswCIQkgBSgCyAIhDyAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhEgNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAPRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIA9GBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAWIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLIBJFDQRBACEEQQIhDiAGIQogGSEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgCeCATIAJBGGxqIgggDCACayAQIBUgJCgCfCgCDBEFACIGRQRAIAJBAWohAgwBCwJAIAYgAiAGaiIDTQRAIAMgDEsNASAFQegBaiECAkACQCAGQQNPBEBB+Y32AC0AABogCCgCRCELIAgoAkAhF0EQQQQQ/AUiBkUNG0H5jfYALQAAGkEUQQQQ/AUiCARAIAhB8gA2AhAgCELlgICAkA03AgggCEL0gICAgA03AgAgBkEFNgIMIAYgCDYCCCAGQoCAgIDQADcCAEH5jfYALQAAGkEWQQEQ/AUiCEUNAiACIAs2AhwgAiAXNgIYIAJBiD47ASAgAkEWNgIUIAIgCDYCECACQoGAgIDgAjcCCCACIAY2AgQgAkEBNgIAIAhBDmpBkpHCACkAADcAACAIQQhqQYyRwgApAAA3AAAgCEGEkcIAKQAANwAADAMLQQRBFBDMBgALQQIgBkH0kMIAEJUEAAtBAUEWQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AUyICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRIgAigCECEaIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGCAFKALMAiEJIAUoAsgCISEgBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIR0DQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgIUYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAhRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgGCAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAdRQ0EQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAoABIBMgAkEYbGoiBiAMIAJrIBIgGiAkKAKEASgCDBEFACIWRQRAIAJBAWohAgwBCwJAIBYgAiAWaiIDTQRAIAMgDEsNASAFQegBaiEQIwBB4ABrIgskAAJAIBYEQCASQQAgBkEUaigCACIVIAYoAhAiCEYiAhsgEiAIQQJ0aiAIIBVLIhcgCCAaT3IgFSAaS3IiGxsiD0UNGyALQQA2AlggC0KAgICAEDcCUCACIBtyRQRAIAtB0ABqQQAgFSAIayICQQFBARDqAgNAIAtB0ABqIA8oAgAQwwIgD0EEaiEPIAJBAWsiAg0ACwsgC0EwaiALQdgAaigCADYCACALIAspAlA3AyggC0ECNgI8IAtBgI/CADYCOCALQgE3AkQgCyALQShqrSJYQoCAgICwFYQ3AyAgCyALQSBqNgJAIAtBFGogC0E4ahCfAiALKAIoIgIEQCALKAIsIAJBARCNBgsgCygCFCECIAtBCGogCygCGCIPIA8gCygCHGoQtwEgAgRAIA8gAkEBEI0GCyAVIAggFxshDyAVIAggCCAVSRshFyAWQQFGDQEgBkEYaiECAkAgFkEYbCIWQTBrIhtBGG5BAXEEQCACIQggBiECDAELIAZBLGooAgAiCCAGQShqKAIAIhUgCCAVSxsiHyAXIBcgH0kbIRcgCCAVIAggFUkbIgggDyAIIA9JGyEPIAZBMGohCAsgG0EYTwRAIAYgFmohGwNAIAhBLGooAgAiBiAIQShqKAIAIhUgBiAVSxsiHyACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiAgFyAXICBJGyIXIBcgH0kbIRcgBiAVIAYgFUkbIgYgFiACIAIgFksbIgIgDyACIA9JGyICIAIgBksbIQ8gCEEYaiECIAhBMGoiCCAbRw0ACwsgCyAXNgIoIAsgDzYCICAPIBdNDQEgC0ECNgI8IAtB2JrCADYCOCALQgI3AkQgCyBYQoCAgIDAAIQ3A1ggCyALQSBqrUKAgICAwACENwNQDBgLQQBBAEHojsIAEJUEAAtB+Y32AC0AABoCQAJAQRBBBBD8BSICBEAgAiALKQIINwIEIAJBADYCACACQQxqIAtBEGooAgA2AgBB+Y32AC0AABpBwwBBARD8BSIGRQ0BIAZBkI/CAEHDABCsASEGIBAgFzYCHCAQIA82AhggEEGE/AE7ASAgEEHDADYCFCAQIAY2AhAgEEKBgICAsAg3AgggECACNgIEIBBBATYCACALQeAAaiQADAILDBoLQQFBwwBByM7BABDlBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBUIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohDkEAIQtBACERIwBBEGsiAyQAIANBADYCDCADQoCAgIDAADcCBCAiKAIEIgdBGGshDSAHICIoAggiDEEYbGohGSAiKAIMIRNBBCEKAkACQAJAA0AgDSALQRhsaiECAkADQCAHIBlGDQEgAkEYaiECIAtBAWohCyAHLQAAIAdBGGohBw0ACyAMIAtBAWtNDQIgAi0AAA0BIAJBCGotAABBA0YNASACQQtqLQAAIgRBAkYgBEEBcUVyDQEgEygCDCIEIAJBEGooAgAiCUECdGogBEEAIAJBFGooAgAiBiAJRhsgBiAJTyATKAIQIgIgBk9xIAIgCUtxIgIbIgRFDRogAiAGIAlrQQFGcUUNASAEKAIAQekARw0BQfmN9gAtAAAaQRBBBBD8BSIIRQ0ZQfmN9gAtAAAaQQRBBBD8BSICRQ0RIAhBATYCDCAIIAI2AgggCEKAgICAEDcCACACQckANgIAQfmN9gAtAAAaQTNBARD8BSICRQ0DIAJBL2pBr+bBACgAADYAACACQShqQajmwQApAAA3AAAgAkEgakGg5sEAKQAANwAAIAJBGGpBmObBACkAADcAACACQRBqQZDmwQApAAA3AAAgAkEIakGI5sEAKQAANwAAIAJBgObBACkAADcAACADKAIEIBFGBEAgA0EEakHs5sEAEIQDIAMoAgghCgsgCiARQSRsaiIEQYE+OwEgIAQgBjYCHCAEIAk2AhggBEEzNgIUIAQgAjYCECAEQoGAgICwBjcCCCAEIAg2AgQgBEEBNgIAIAMgEUEBaiIRNgIMDAELCyAOIAMpAgQ3AgAgDkEIaiADQQxqKAIANgIAIANBEGokAAwCCyALQQFrIAxBvNHpABCVBAALQQFBM0HIzsEAEOUFAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAFUiAkECRwRAIAJBAXFFDQNBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEWIAIoAhAhFyAFQaACaiAiEIYGICRB4AFqISFBBCEeIAUoAtQCISMgBSgC0AIhHSAFKALMAiEJIAUoAsgCIRogBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIRsDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgGkYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAaRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwLCwwLCyADIBFrIQwgHSAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwKCyAbRQ0FQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0ECyAEIQIgDEUNAEEAIQIDQAJAICQoAuABIBMgAkEYbGoiBiAMIAJrIBYgFyAkKALkASgCDBEFACIIRQRAIAJBAWohAgwBCwJAIAggAiAIaiIDTQRAIAMgDEsNASAFQegBaiELIwBBQGoiGCQAIBhBBGogBiAIIBYgFyAhKAIIEEQCQCAIBEAgBkEUaigCACICIAZBEGooAgAiDyACIA9JGyESIAIgDyACIA9LGyEPIAhBAUYNASAGQRhqIQICQCAIQRhsIhVBMGsiH0EYbkEBcQRAIAIhCCAGIQIMAQsgBkEsaigCACIIIAZBKGooAgAiECAIIBBLGyIgIA8gDyAgSRshDyAIIBAgCCAQSRsiCCASIAggEkkbIRIgBkEwaiEICyAfQRhPBEAgBiAVaiEfA0AgCEEsaigCACIGIAhBKGooAgAiECAGIBBLGyIgIAJBLGooAgAiFSACQShqKAIAIgIgAiAVSRsiJSAPIA8gJUkbIg8gDyAgSRshDyAGIBAgBiAQSRsiBiAVIAIgAiAVSxsiAiASIAIgEkkbIgIgAiAGSxshEiAIQRhqIQIgCEEwaiIIIB9HDQALCyAYIA82AhQgGCASNgIQIA8gEk8NAQwVC0HYr+kAEJYGAAtB+Y32AC0AABoCQAJAQRBBBBD8BSICBEAgAiAYKQIENwIEIAJBADYCACACQQxqIBhBDGooAgA2AgBB+Y32AC0AABpBywBBARD8BSIGRQ0BIAZB6K/pAEHLABCsASEGIAsgDzYCHCALIBI2AhggC0GBPjsBICALQcsANgIUIAsgBjYCECALQoGAgICwCTcCCCALIAI2AgQgC0EBNgIAIBhBQGskAAwCCwwbC0EBQcsAQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwLCwwLCyACIAxJDQALIAQhAgwACwALDAgLDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AViICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRYgAigCECEXIAVBoAJqICIQhgYgJEHsAWohIUEEIR4gBSgC1AIhIyAFKALQAiEdIAUoAswCIQkgBSgCyAIhGiAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhGwNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAaRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBpGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAdIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLIBtFDQRBACEEQQIhDiAGIQogGSEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgC7AEgEyACQRhsaiIGIAwgAmsgFiAXICQoAvABKAIMEQUAIghFBEAgAkEBaiECDAELAkAgCCACIAhqIgNNBEAgAyAMSw0BIAVB6AFqIQsjAEFAaiIYJAAgGEEEaiAGIAggFiAXICEoAggQRAJAIAgEQCAGQRRqKAIAIgIgBkEQaigCACIPIAIgD0kbIRIgAiAPIAIgD0sbIQ8gCEEBRg0BIAZBGGohAgJAIAhBGGwiFUEwayIfQRhuQQFxBEAgAiEIIAYhAgwBCyAGQSxqKAIAIgggBkEoaigCACIQIAggEEsbIiAgDyAPICBJGyEPIAggECAIIBBJGyIIIBIgCCASSRshEiAGQTBqIQgLIB9BGE8EQCAGIBVqIR8DQCAIQSxqKAIAIgYgCEEoaigCACIQIAYgEEsbIiAgAkEsaigCACIVIAJBKGooAgAiAiACIBVJGyIlIA8gDyAlSRsiDyAPICBJGyEPIAYgECAGIBBJGyIGIBUgAiACIBVLGyICIBIgAiASSRsiAiACIAZLGyESIAhBGGohAiAIQTBqIgggH0cNAAsLIBggDzYCFCAYIBI2AhAgDyASTw0BDBQLQbiw6QAQlgYAC0H5jfYALQAAGgJAAkBBEEEEEPwFIgIEQCACIBgpAgQ3AgQgAkEANgIAIAJBDGogGEEMaigCADYCAEH5jfYALQAAGkHIAEEBEPwFIgZFDQEgBkHIsOkAQcgAEKwBIQYgCyAPNgIcIAsgEjYCGCALQYE+OwEgIAtByAA2AhQgCyAGNgIQIAtCgYCAgIAJNwIIIAsgAjYCBCALQQE2AgAgGEFAayQADAILDBoLQQFByABByM7BABDlBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBXIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhFiACKAIQIRcgBUGgAmogIhCGBiAkQfgBaiEhQQQhHiAFKALUAiEjIAUoAtACIR0gBSgCzAIhCSAFKALIAiEaIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIQ0gBSgCsAIhCiAFKAKsAiEOIAUoAqgCIRkgBSgCpAIhAiAFKAKgAkEBcSEbA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyANIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBpGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgGkYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMIB0gB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgG0UNBEEAIQRBAiEOIAYhCiAZIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKAL4ASATIAJBGGxqIgYgDCACayAWIBcgJCgC/AEoAgwRBQAiCEUEQCACQQFqIQIMAQsCQCAIIAIgCGoiA00EQCADIAxLDQEgBUHoAWohCyMAQUBqIhgkACAYQQRqIAYgCCAWIBcgISgCCBBEAkAgCARAIAZBFGooAgAiAiAGQRBqKAIAIg8gAiAPSRshEiACIA8gAiAPSxshDyAIQQFGDQEgBkEYaiECAkAgCEEYbCIVQTBrIh9BGG5BAXEEQCACIQggBiECDAELIAZBLGooAgAiCCAGQShqKAIAIhAgCCAQSxsiICAPIA8gIEkbIQ8gCCAQIAggEEkbIgggEiAIIBJJGyESIAZBMGohCAsgH0EYTwRAIAYgFWohHwNAIAhBLGooAgAiBiAIQShqKAIAIhAgBiAQSxsiICACQSxqKAIAIhUgAkEoaigCACICIAIgFUkbIiUgDyAPICVJGyIPIA8gIEkbIQ8gBiAQIAYgEEkbIgYgFSACIAIgFUsbIgIgEiACIBJJGyICIAIgBksbIRIgCEEYaiECIAhBMGoiCCAfRw0ACwsgGCAPNgIUIBggEjYCECAPIBJPDQEMFAtBqLHpABCWBgALQfmN9gAtAAAaAkACQEEQQQQQ/AUiAgRAIAIgGCkCBDcCBCACQQA2AgAgAkEMaiAYQQxqKAIANgIAQfmN9gAtAAAaQdAAQQEQ/AUiBkUNASAGQbix6QBB0AAQrAEhBiALIA82AhwgCyASNgIYIAtBgT47ASAgC0HQADYCFCALIAY2AhAgC0KBgICAgAo3AgggCyACNgIEIAtBATYCACAYQUBrJAAMAgsMGgtBAUHQAEHIzsEAEOUFAAsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCgsMCgsgAiAMSQ0ACyAEIQIMAAsACwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAFgiAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEWIAIoAhAhFyAFQaACaiAiEIYGICRBhAJqISFBBCEeIAUoAtQCISMgBSgC0AIhHSAFKALMAiEJIAUoAsgCIRogBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIRsDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgGkYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAaRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgHSAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAbRQ0EQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAoQCIBMgAkEYbGoiBiAMIAJrIBYgFyAkKAKIAigCDBEFACIIRQRAIAJBAWohAgwBCwJAIAggAiAIaiIDTQRAIAMgDEsNASAFQegBaiELIwBBQGoiGCQAIBhBBGogBiAIIBYgFyAhKAIIEEQCQCAIBEAgBkEUaigCACICIAZBEGooAgAiDyACIA9JGyESIAIgDyACIA9LGyEPIAhBAUYNASAGQRhqIQICQCAIQRhsIhVBMGsiH0EYbkEBcQRAIAIhCCAGIQIMAQsgBkEsaigCACIIIAZBKGooAgAiECAIIBBLGyIgIA8gDyAgSRshDyAIIBAgCCAQSRsiCCASIAggEkkbIRIgBkEwaiEICyAfQRhPBEAgBiAVaiEfA0AgCEEsaigCACIGIAhBKGooAgAiECAGIBBLGyIgIAJBLGooAgAiFSACQShqKAIAIgIgAiAVSRsiJSAPIA8gJUkbIg8gDyAgSRshDyAGIBAgBiAQSRsiBiAVIAIgAiAVSxsiAiASIAIgEkkbIgIgAiAGSxshEiAIQRhqIQIgCEEwaiIIIB9HDQALCyAYIA82AhQgGCASNgIQIA8gEk8NAQwUC0G4sukAEJYGAAtB+Y32AC0AABoCQAJAQRBBBBD8BSICBEAgAiAYKQIENwIEIAJBADYCACACQQxqIBhBDGooAgA2AgBB+Y32AC0AABpB5ABBARD8BSIGRQ0BIAZByLLpAEHkABCsASEGIAsgDzYCHCALIBI2AhggC0GBPjsBICALQeQANgIUIAsgBjYCECALQoGAgIDADDcCCCALIAI2AgQgC0EBNgIAIBhBQGskAAwCCwwaC0EBQeQAQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AWSICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRYgAigCECEXIAVBoAJqICIQhgYgJEGQAmohIUEEIR4gBSgC1AIhIyAFKALQAiEdIAUoAswCIQkgBSgCyAIhGiAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhGwNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAaRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBpGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAdIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLIBtFDQRBACEEQQIhDiAGIQogGSEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgCkAIgEyACQRhsaiIGIAwgAmsgFiAXICQoApQCKAIMEQUAIghFBEAgAkEBaiECDAELAkAgCCACIAhqIgNNBEAgAyAMSw0BIAVB6AFqIQsjAEFAaiIYJAAgGEEEaiAGIAggFiAXICEoAggQRAJAIAgEQCAGQRRqKAIAIgIgBkEQaigCACIPIAIgD0kbIRIgAiAPIAIgD0sbIQ8gCEEBRg0BIAZBGGohAgJAIAhBGGwiFUEwayIfQRhuQQFxBEAgAiEIIAYhAgwBCyAGQSxqKAIAIgggBkEoaigCACIQIAggEEsbIiAgDyAPICBJGyEPIAggECAIIBBJGyIIIBIgCCASSRshEiAGQTBqIQgLIB9BGE8EQCAGIBVqIR8DQCAIQSxqKAIAIgYgCEEoaigCACIQIAYgEEsbIiAgAkEsaigCACIVIAJBKGooAgAiAiACIBVJGyIlIA8gDyAlSRsiDyAPICBJGyEPIAYgECAGIBBJGyIGIBUgAiACIBVLGyICIBIgAiASSRsiAiACIAZLGyESIAhBGGohAiAIQTBqIgggH0cNAAsLIBggDzYCFCAYIBI2AhAgDyASTw0BDBQLQdS/6QAQlgYAC0H5jfYALQAAGgJAAkBBEEEEEPwFIgIEQCACIBgpAgQ3AgQgAkEANgIAIAJBDGogGEEMaigCADYCAEH5jfYALQAAGkHFAEEBEPwFIgZFDQEgBkHkv+kAQcUAEKwBIQYgCyAPNgIcIAsgEjYCGCALQYE+OwEgIAtBxQA2AhQgCyAGNgIQIAtCgYCAgNAINwIIIAsgAjYCBCALQQE2AgAgGEFAayQADAILDBoLQQFBxQBByM7BABDlBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBaIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhFiACKAIQIRcgBUGgAmogIhCGBiAkQZwCaiEhQQQhHiAFKALUAiEjIAUoAtACIR0gBSgCzAIhCSAFKALIAiEaIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIQ0gBSgCsAIhCiAFKAKsAiEOIAUoAqgCIRkgBSgCpAIhAiAFKAKgAkEBcSEbA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyANIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBpGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgGkYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMIB0gB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgG0UNBEEAIQRBAiEOIAYhCiAZIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKAKcAiATIAJBGGxqIgYgDCACayAWIBcgJCgCoAIoAgwRBQAiCEUEQCACQQFqIQIMAQsCQCAIIAIgCGoiA00EQCADIAxLDQEgBUHoAWohCyMAQUBqIhgkACAYQQRqIAYgCCAWIBcgISgCCBBEAkAgCARAIAZBFGooAgAiAiAGQRBqKAIAIg8gAiAPSRshEiACIA8gAiAPSxshDyAIQQFGDQEgBkEYaiECAkAgCEEYbCIVQTBrIh9BGG5BAXEEQCACIQggBiECDAELIAZBLGooAgAiCCAGQShqKAIAIhAgCCAQSxsiICAPIA8gIEkbIQ8gCCAQIAggEEkbIgggEiAIIBJJGyESIAZBMGohCAsgH0EYTwRAIAYgFWohHwNAIAhBLGooAgAiBiAIQShqKAIAIhAgBiAQSxsiICACQSxqKAIAIhUgAkEoaigCACICIAIgFUkbIiUgDyAPICVJGyIPIA8gIEkbIQ8gBiAQIAYgEEkbIgYgFSACIAIgFUsbIgIgEiACIBJJGyICIAIgBksbIRIgCEEYaiECIAhBMGoiCCAfRw0ACwsgGCAPNgIUIBggEjYCECAPIBJPDQEMFAtBkMHpABCWBgALQfmN9gAtAAAaAkACQEEQQQQQ/AUiAgRAIAIgGCkCBDcCBCACQQA2AgAgAkEMaiAYQQxqKAIANgIAQfmN9gAtAAAaQd8AQQEQ/AUiBkUNASAGQaDB6QBB3wAQrAEhBiALIA82AhwgCyASNgIYIAtBgT47ASAgC0HfADYCFCALIAY2AhAgC0KBgICA8As3AgggCyACNgIEIAtBATYCACAYQUBrJAAMAgsMGgtBAUHfAEHIzsEAEOUFAAsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCgsMCgsgAiAMSQ0ACyAEIQIMAAsACwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAFsiAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEWIAIoAhAhFyAFQaACaiAiEIYGICRBqAJqISFBBCEeIAUoAtQCISMgBSgC0AIhHSAFKALMAiEJIAUoAsgCIRogBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIRsDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgGkYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAaRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgHSAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAbRQ0EQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAqgCIBMgAkEYbGoiBiAMIAJrIBYgFyAkKAKsAigCDBEFACIIRQRAIAJBAWohAgwBCwJAIAggAiAIaiIDTQRAIAMgDEsNASAFQegBaiELIwBBQGoiGCQAIBhBBGogBiAIIBYgFyAhKAIIEEQCQCAIBEAgBkEUaigCACICIAZBEGooAgAiDyACIA9JGyESIAIgDyACIA9LGyEPIAhBAUYNASAGQRhqIQICQCAIQRhsIhVBMGsiH0EYbkEBcQRAIAIhCCAGIQIMAQsgBkEsaigCACIIIAZBKGooAgAiECAIIBBLGyIgIA8gDyAgSRshDyAIIBAgCCAQSRsiCCASIAggEkkbIRIgBkEwaiEICyAfQRhPBEAgBiAVaiEfA0AgCEEsaigCACIGIAhBKGooAgAiECAGIBBLGyIgIAJBLGooAgAiFSACQShqKAIAIgIgAiAVSRsiJSAPIA8gJUkbIg8gDyAgSRshDyAGIBAgBiAQSRsiBiAVIAIgAiAVSxsiAiASIAIgEkkbIgIgAiAGSxshEiAIQRhqIQIgCEEwaiIIIB9HDQALCyAYIA82AhQgGCASNgIQIA8gEk8NAQwUC0GMw+kAEJYGAAtB+Y32AC0AABoCQAJAQRBBBBD8BSICBEAgAiAYKQIENwIEIAJBADYCACACQQxqIBhBDGooAgA2AgBB+Y32AC0AABpB2ABBARD8BSIGRQ0BIAZBnMPpAEHYABCsASEGIAsgDzYCHCALIBI2AhggC0GBPjsBICALQdgANgIUIAsgBjYCECALQoGAgICACzcCCCALIAI2AgQgC0EBNgIAIBhBQGskAAwCCwwaC0EBQdgAQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AXCICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRYgAigCECEXIAVBoAJqICIQhgYgJEG0AmohIUEEIR4gBSgC1AIhIyAFKALQAiEdIAUoAswCIQkgBSgCyAIhGiAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhGwNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAaRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBpGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAdIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLIBtFDQRBACEEQQIhDiAGIQogGSEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgCtAIgEyACQRhsaiIGIAwgAmsgFiAXICQoArgCKAIMEQUAIghFBEAgAkEBaiECDAELAkAgCCACIAhqIgNNBEAgAyAMSw0BIAVB6AFqIQsjAEFAaiIYJAAgGEEEaiAGIAggFiAXICEoAggQRAJAIAgEQCAGQRRqKAIAIgIgBkEQaigCACIPIAIgD0kbIRIgAiAPIAIgD0sbIQ8gCEEBRg0BIAZBGGohAgJAIAhBGGwiFUEwayIfQRhuQQFxBEAgAiEIIAYhAgwBCyAGQSxqKAIAIgggBkEoaigCACIQIAggEEsbIiAgDyAPICBJGyEPIAggECAIIBBJGyIIIBIgCCASSRshEiAGQTBqIQgLIB9BGE8EQCAGIBVqIR8DQCAIQSxqKAIAIgYgCEEoaigCACIQIAYgEEsbIiAgAkEsaigCACIVIAJBKGooAgAiAiACIBVJGyIlIA8gDyAlSRsiDyAPICBJGyEPIAYgECAGIBBJGyIGIBUgAiACIBVLGyICIBIgAiASSRsiAiACIAZLGyESIAhBGGohAiAIQTBqIgggH0cNAAsLIBggDzYCFCAYIBI2AhAgDyASTw0BDBQLQbDJ6QAQlgYAC0H5jfYALQAAGgJAAkBBEEEEEPwFIgIEQCACIBgpAgQ3AgQgAkEANgIAIAJBDGogGEEMaigCADYCAEH5jfYALQAAGkHWAEEBEPwFIgZFDQEgBkHAyekAQdYAEKwBIQYgCyAPNgIcIAsgEjYCGCALQYE+OwEgIAtB1gA2AhQgCyAGNgIQIAtCgYCAgOAKNwIIIAsgAjYCBCALQQE2AgAgGEFAayQADAILDBoLQQFB1gBByM7BABDlBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBdIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhFiACKAIQIRcgBUGgAmogIhCGBiAkQcACaiEhQQQhHiAFKALUAiEjIAUoAtACIR0gBSgCzAIhCSAFKALIAiEaIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIQ0gBSgCsAIhCiAFKAKsAiEOIAUoAqgCIRkgBSgCpAIhAiAFKAKgAkEBcSEbA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyANIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBpGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgGkYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMIB0gB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgG0UNBEEAIQRBAiEOIAYhCiAZIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKALAAiATIAJBGGxqIgYgDCACayAWIBcgJCgCxAIoAgwRBQAiCEUEQCACQQFqIQIMAQsCQCAIIAIgCGoiA00EQCADIAxLDQEgBUHoAWohCyMAQUBqIhgkACAYQQRqIAYgCCAWIBcgISgCCBBEAkAgCARAIAZBFGooAgAiAiAGQRBqKAIAIg8gAiAPSRshEiACIA8gAiAPSxshDyAIQQFGDQEgBkEYaiECAkAgCEEYbCIVQTBrIh9BGG5BAXEEQCACIQggBiECDAELIAZBLGooAgAiCCAGQShqKAIAIhAgCCAQSxsiICAPIA8gIEkbIQ8gCCAQIAggEEkbIgggEiAIIBJJGyESIAZBMGohCAsgH0EYTwRAIAYgFWohHwNAIAhBLGooAgAiBiAIQShqKAIAIhAgBiAQSxsiICACQSxqKAIAIhUgAkEoaigCACICIAIgFUkbIiUgDyAPICVJGyIPIA8gIEkbIQ8gBiAQIAYgEEkbIgYgFSACIAIgFUsbIgIgEiACIBJJGyICIAIgBksbIRIgCEEYaiECIAhBMGoiCCAfRw0ACwsgGCAPNgIUIBggEjYCECAPIBJPDQEMFAtByMbpABCWBgALQfmN9gAtAAAaAkACQEEQQQQQ/AUiAgRAIAIgGCkCBDcCBCACQQA2AgAgAkEMaiAYQQxqKAIANgIAQfmN9gAtAAAaQdsAQQEQ/AUiBkUNASAGQdjG6QBB2wAQrAEhBiALIA82AhwgCyASNgIYIAtBgT47ASAgC0HbADYCFCALIAY2AhAgC0KBgICAsAs3AgggCyACNgIEIAtBATYCACAYQUBrJAAMAgsMGgtBAUHbAEHIzsEAEOUFAAsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCgsMCgsgAiAMSQ0ACyAEIQIMAAsACwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAF4iAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEWIAIoAhAhFyAFQaACaiAiEIYGICRBzAJqISFBBCEeIAUoAtQCISMgBSgC0AIhHSAFKALMAiEJIAUoAsgCIRogBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIRsDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgGkYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAaRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgHSAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAbRQ0EQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAswCIBMgAkEYbGoiBiAMIAJrIBYgFyAkKALQAigCDBEFACIIRQRAIAJBAWohAgwBCwJAIAggAiAIaiIDTQRAIAMgDEsNASAFQegBaiELIwBBQGoiGCQAIBhBBGogBiAIIBYgFyAhKAIIEEQCQCAIBEAgBkEUaigCACICIAZBEGooAgAiDyACIA9JGyESIAIgDyACIA9LGyEPIAhBAUYNASAGQRhqIQICQCAIQRhsIhVBMGsiH0EYbkEBcQRAIAIhCCAGIQIMAQsgBkEsaigCACIIIAZBKGooAgAiECAIIBBLGyIgIA8gDyAgSRshDyAIIBAgCCAQSRsiCCASIAggEkkbIRIgBkEwaiEICyAfQRhPBEAgBiAVaiEfA0AgCEEsaigCACIGIAhBKGooAgAiECAGIBBLGyIgIAJBLGooAgAiFSACQShqKAIAIgIgAiAVSRsiJSAPIA8gJUkbIg8gDyAgSRshDyAGIBAgBiAQSRsiBiAVIAIgAiAVSxsiAiASIAIgEkkbIgIgAiAGSxshEiAIQRhqIQIgCEEwaiIIIB9HDQALCyAYIA82AhQgGCASNgIQIA8gEk8NAQwUC0GYyOkAEJYGAAtB+Y32AC0AABoCQAJAQRBBBBD8BSICBEAgAiAYKQIENwIEIAJBADYCACACQQxqIBhBDGooAgA2AgBB+Y32AC0AABpB1wBBARD8BSIGRQ0BIAZBqMjpAEHXABCsASEGIAsgDzYCHCALIBI2AhggC0GBPjsBICALQdcANgIUIAsgBjYCECALQoGAgIDwCjcCCCALIAI2AgQgC0EBNgIAIBhBQGskAAwCCwwaC0EBQdcAQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AXyICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRYgAigCECEXIAVBoAJqICIQhgYgJEHYAmohIUEEIR4gBSgC1AIhIyAFKALQAiEdIAUoAswCIQkgBSgCyAIhGiAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiENIAUoArACIQogBSgCrAIhDiAFKAKoAiEZIAUoAqQCIQIgBSgCoAJBAXEhGwNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgDSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAaRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBpGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAdIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLIBtFDQRBACEEQQIhDiAGIQogGSEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgC2AIgEyACQRhsaiIGIAwgAmsgFiAXICQoAtwCKAIMEQUAIghFBEAgAkEBaiECDAELAkAgCCACIAhqIgNNBEAgAyAMSw0BIAVB6AFqIQsjAEFAaiIYJAAgGEEEaiAGIAggFiAXICEoAggQRAJAIAgEQCAGQRRqKAIAIgIgBkEQaigCACIPIAIgD0kbIRIgAiAPIAIgD0sbIQ8gCEEBRg0BIAZBGGohAgJAIAhBGGwiFUEwayIfQRhuQQFxBEAgAiEIIAYhAgwBCyAGQSxqKAIAIgggBkEoaigCACIQIAggEEsbIiAgDyAPICBJGyEPIAggECAIIBBJGyIIIBIgCCASSRshEiAGQTBqIQgLIB9BGE8EQCAGIBVqIR8DQCAIQSxqKAIAIgYgCEEoaigCACIQIAYgEEsbIiAgAkEsaigCACIVIAJBKGooAgAiAiACIBVJGyIlIA8gDyAlSRsiDyAPICBJGyEPIAYgECAGIBBJGyIGIBUgAiACIBVLGyICIBIgAiASSRsiAiACIAZLGyESIAhBGGohAiAIQTBqIgggH0cNAAsLIBggDzYCFCAYIBI2AhAgDyASTw0BDBQLQfjE6QAQlgYAC0H5jfYALQAAGgJAAkBBEEEEEPwFIgIEQCACIBgpAgQ3AgQgAkEANgIAIAJBDGogGEEMaigCADYCAEH5jfYALQAAGkHQAEEBEPwFIgZFDQEgBkGIxekAQdAAEKwBIQYgCyAPNgIcIAsgEjYCGCALQYE+OwEgIAtB0AA2AhQgCyAGNgIQIAtCgYCAgIAKNwIIIAsgAjYCBCALQQE2AgAgGEFAayQADAILDBoLQQFB0ABByM7BABDlBQALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBgIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohFyAkQeQCaiECQQAhC0EAIR1BACEWQQAhDkEAIQhBACEKQQAhESMAQaABayINJAAgDUEANgIUIA1CgICAgMAANwIMIA1BADYCGCANQQA2AkwCQCAiKAIIIgNFDQAgIigCBCIZIANBGGxqIRAgDUEcaiEJIAIoAgAhEiANQdQAaiEEICIoAgwhIUEEIRVBCiEGA0AgGS0AACIDQQpGDQEgGUEYaiEMAn8gBkH/AXFBCkYEQAJ/IANB/gFxQQpHBEAgGUEQaiELIBlBFGoMAQsgDCAQRg0EIBktABgiA0EKRg0EIBlBKGohCyAZQTBqIQwgGUEsagsgDCAQRg0DIAwtAAAiDkEKRg0DIAxBGGoiCiAQRg0DIAotAAAiCEEKRg0DIAsoAAAhBygAACECIAxBLGohGiAMQShqIRMgDEEwaiEZIAwoABAhCiADIQYgDCgAFAwBCyAZQRRqIRogGUEQaiETIA4hBiAIIQ4gAyEIIAwhGSAKIQcgESECIAshCiAdCyERIBMoAAAhCyAaKAAAIR0CQCAIIAZB/wFxIA5BA2tB/wFxQQFLcnINAAJAICEoAgwiA0EAIAIgB0YbIAMgB0ECdGogAiAHSSAhKAIQIgwgAklyIAcgDE9yIg8bIhMEQCADQQAgCyAdRhsgAyALQQJ0aiAMIB1JIAsgHUtyIAsgDE9yIgMbIgxFDRpBACACIAdrIA8bIg9BAUYEQCATKAIAQeEARg0DC0EAIB0gC2sgAxsiFEEBRgRAIAwoAgBB4QBGDQMLIA1BGGpBBEE0IA0oAkxBDEsbaiICKAIABEAgAkEANgIACyANQdAAaiATIA8QaiAEIQIgDSgChAEiAyEaIANBDUkiGEUEQCANKAJUIRogDSgCWCECCyANQRhqIA0oAkwiHEENTwR/IA0oAhwFIBwLIAIgGhDMAiAYRQRAIA0oAlggA0ECdEEEEI0GCyANQdAAaiAMIBQQaiAEIQIgDSgChAEiAyEaIANBDUkiGEUEQCANKAJUIRogDSgCWCECCyANQRhqIA0oAkwiHEENTwR/IA0oAhwFIBwLIAIgGhDMAiAYRQRAIA0oAlggA0ECdEEEEI0GCyASKAJEQQhqIA0oAkwiA0ENTwR/IA0oAhwhAyANKAIgBSAJCyADEJUBRQ0CIBIoAkRBCGogEyAPEJUBRQ0BIBIoAkRBCGogDCAUEJUBDQIMAQsMGQsgDSAdNgKMASANIAc2AogBAkACQCAHIB1NBEBB+Y32AC0AABpBEEEEEPwFIg9FDQIgCSETQQAhGiANKAJMIgxBDU8EQCANKAIgIRMgDSgCHCEMCyAMQf////8DSyAMQQJ0IhRB/P///wdLcg0BAkAgFEUEQEEEIQJBACEDDAELQfmN9gAtAAAaQQQhGiAMIQMgFEEEEPwFIgJFDQILIAIgEyAUEKwBIQIgDyAMNgIMIA8gAjYCCCAPIAM2AgQgD0EANgIAQfmN9gAtAAAaQS5BARD8BSICRQ0XIAJBJmpBuvrBACkAADcAACACQSBqQbT6wQApAAA3AAAgAkEYakGs+sEAKQAANwAAIAJBEGpBpPrBACkAADcAACACQQhqQZz6wQApAAA3AAAgAkGU+sEAKQAANwAAIA0oAgwgFkYEQCANQQxqQej6wQAQhAMgDSgCECEVCyAVIBZBJGxqIgNBgP4AOwEgIAMgHTYCHCADIAc2AhggA0EuNgIUIAMgAjYCECADQoGAgIDgBTcCCCADIA82AgQgA0EBNgIAIA0gFkEBaiIWNgIUDAMLIA1BAjYCVCANQdiawgA2AlAgDUICNwJcIA0gDUGMAWqtQoCAgIDAAIQ3A5gBIA0gDUGIAWqtQoCAgIDAAIQ3A5ABIA0gDUGQAWo2AlggDUHQAGpBgJvCABCuBQALIBogFEHIzsEAEOUFAAsMFwsgECAZRw0ACwsgFyANKQIMNwIAIBdBCGogDUEUaigCADYCACANKAJMIgJBDU8EQCANKAIgIAJBAnRBBBCNBgsgDUGgAWokACAFKAKkAiEDIAUoAqgCIgIgBSgCNCAFKAI8IgdrSwRAIAVBNGogByACQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogAyACQSRsEKwBGiAFIAIgB2o2AjwgBSgCoAIiAkUNACADIAJBJGxBBBCNBgsgBS0AYSICQQJHBEAgAkEBcUUNA0EAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRAgAigCECEWIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhEiAFKALMAiEJIAUoAsgCIQ8gBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIRcDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgD0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAPRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwLCwwLCyADIBFrIQwgEiAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwKCyAXRQ0FQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0ECyAEIQIgDEUNAEEAIQIDQAJAICQoAogBIBMgAkEYbGoiBiAMIAJrIBAgFiAkKAKMASgCDBEFACIIRQRAIAJBAWohAgwBCwJAIAggAiAIaiIDTQRAIAMgDEsNASAFQegBaiECAkACQCAIBEACQAJ/AkACQCAGLQAADQAgBi0ACEEDRg0AIAYtAAkiC0ECRg0AIAtBAXENAQtB+Y32AC0AABpBCEEEEPwFIhVFDRYgFULpgICAsA43AgBBAgwBC0H5jfYALQAAGkEMQQQQ/AUiFUUNASAVQeUANgIIIBVC4YCAgKAONwIAQQMLIQtB+Y32AC0AABogCEEYbCAGakEYayIGKAIUIQggBigCECEaQRBBBBD8BSIGRQ0dIAYgCzYCDCAGIBU2AgggBiALNgIEIAZBADYCAEH5jfYALQAAGkHcAEEBEPwFIgtFDQIgC0Hg/8EAQdwAEKwBIQsgAiAINgIcIAIgGjYCGCACQYf+ADsBICACQdwANgIUIAIgCzYCECACQoGAgIDACzcCCCACIAY2AgQgAkEBNgIADAMLQQRBDBDMBgALQdD/wQAQlgYAC0EBQdwAQcjOwQAQ5QUACyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwLCwwLCyACIAxJDQALIAQhAgwACwALDAgLDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AYiICQQJHBEACQCACQQFxRQ0AIAVBoAJqIRJBACEbIwBB0ABrIhQkACAUQQA2AhQgFEKAgICAwAA3AgwgFEEYaiAiKAIEICIoAggQxwIgJEGAA2oiAigCCCIcQQN0IQ0gAigCBCEZICIoAgwhFyAUKAJMIRogFCgCSCEeIBQoAkQhCiAUKAJAIRYgFCgCPCEVIBQoAjghDiAUKAIwISUgFCgCLCEPIBQoAighCSAUKAIkIRMgFCgCICEQIBQoAhwhBCAUKAIYQQFxISNBBCEdAkACQANAAkACQAJ/An8CQAJAIBNBAkYEQCAKIQMgCSEGDAELAkAgE0EBcUUEQCAJIQYgEyECDAELQQAhBkEAIQIgCUUNACAJIQwgDyEHIAQhAkEAIQkMBQsgJUECRgRAQQIhJSAKIQMMAQsCQCAVIBZHBEADQAJAAkAgFSIILQAAQQFrDgkAAQEBAQEBAQQBCyAIKAIEQQZrQQNJDQMLIApBAWohCiAIQRhqIhUgFkcNAAsLIAohAwwBCyAIQRhqIRUgCkEBaiEJICVBAXEEQCAKIQMgCSERIA4iCkEBagwDC0EAISUgFSAWRgRAIAkhAwwBCyAJIQMDQAJAAkAgCEEYaiIMLQAAQQFrDgkAAQEBAQEBAQQBCyAIQRxqKAIAQQZrQQNJDQMLIANBAWohAyAIQTBqIAwhCCAWRw0ACyAIQRhqIRULICNFDQRBACECQQIhEyAGIQkgECEHIAQhDCADDAILQQEhJSADQQFqIREgCEEwaiEVIAkLIQkCQCADQX9HBEAgA0EBaiIIIAlJDQYgAyAaSQ0BIAggGkG0qekAEJMGAAsMFAsgAyAKayEHIB4gCUEYbGohDCADIQ4gBiEJIAIhEyAEIQIgEQshCiAMRQ0BCyACIQQgB0UgHEVyDQFBACEEA0AgByAEayEGIAwgBEEYbGohISAXKAIQIR8gFygCDCEgIA0hEUEAIQMgGSEIAkACQAJAAkADQCADIgsgBk0EQCAIKAIAICEgA0EYbGogBiADayAgIB8gCCgCBCgCDBEFACIYRQ0DIAhBCGohCCADIBhqIQMgEUEIayIRDQEMAgsLIAsgBkGEmcIAEJIGAAsgAw0BCyAEQQFqIQQMAQsCQAJAAkAgAyADIARqIgZNBEAgBiAHSw0BIAsgGGoiCEEDayEEIAhBGGwhCAJAA0AgCCAhaiIRQRhrLQAARQRAIBFBFWstAABBAXENAgsgBEEBayEEIAhBGGsiCA0AC0Hc/cEAEJYGAAsgAyAETQ0CQfmN9gAtAAAaIBFBNGsoAgAhCyARQThrKAIAIRFBEEEEEPwFIghFDQNB+Y32AC0AABoCQEEEQQQQ/AUiAwRAIAhBATYCDCAIIAM2AgggCEKBgICAEDcCACADQSw2AgBB+Y32AC0AABpBIkEBEPwFIgQNAUEBQSJByM7BABDlBQALDBcLIARBIGpBnP7BAC8AADsAACAEQRhqQZT+wQApAAA3AAAgBEEQakGM/sEAKQAANwAAIARBCGpBhP7BACkAADcAACAEQfz9wQApAAA3AAAgFCgCDCAbRgRAIBRBDGpBsP7BABCEAyAUKAIQIR0LIB0gG0EkbGoiA0GCPjsBICADIAs2AhwgAyARNgIYIANBIjYCFCADIAQ2AhAgA0KBgICAoAQ3AgggAyAINgIEIANBATYCACAUIBtBAWoiGzYCFCAGIQQMBAsgBCAGQaD+wQAQlQYACyAGIAdBoP7BABCTBgALIAQgA0Hs/cEAEJUEAAsMGgsgBCAHSQ0ACyACIQQMAQsLIBIgFCkCDDcCACASQQhqIBRBFGooAgA2AgAgFEHQAGokAAwBCyAJIAhBtKnpABCVBgALIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBjIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohHUEAIRQjAEGAAWsiBiQAIAZBADYCCCAGQoCAgIDAADcCACAGQQA2AhQgBkKAgICAwAA3AgwgIigCDCISKAIMIRcgEigCECEaIAZBGGogIigCBCIfICIoAggiIBCYAiAGQTBqISUgJEFAayIhKAIEIScgISgCACEpQQQhDwJAAkACQAJAAkADQAJAAn8gBigCJCICQQJHBEAgAkEBcQRAIAYoAighFSAGQQA2AiggFQRAIAYoAiwMAwsgBkEANgIkCwJAIAYoAjBBAkYNACAGQfQAaiAlEI0CIAYoAnRFDQACQCAGKAJ8IgJBf0cEQCACQQFqIgMgBigCeCIJQQFqIgRJDSMgAiAGKAJMIgpJDQEMIAsMFgsgBigCSCAEQRhsaiEVIAIgCWsMAgsgBkECNgIkCyAGKAIYQQFHDQEgBigCHCEVIAZBADYCHCAVRQ0BIAYoAiALIhlFDQEgJygCDCEqQQAhDQNAIBkgKSAVIA1BGGxqIgMgGSANayAXIBogKhEFACICBH8gAiANaiIQIAJJDQQgECAZSw0FIAZB0ABqIQdBACEYIwBB4ABrIggkAAJAAkAgAgRAIBdBACADKAIUIg0gAygCECILRhsgFyALQQJ0aiALIA1LIAsgGk9yIA0gGktyIgIbIgRFDSIgCEEEaiAEQQAgDSALayACGyIWEGoCfyAIKAI4IglBDU8EQCAIKAIIIQIgCCgCDAwBCyAJIQIgCEEIagshDkEAIQMgCEEANgJQIAhCgICAgBA3AkhBASEcIAIEQCAIQcgAakEAIAJBAUEBEOoCA0AgCEHIAGogDigCABDDAiAOQQRqIQ4gAkEBayICDQALIAgoAkwhHCAIKAJIIRggCCgCUCEDCyAIQTxqIBwgAxAuIAgoAkRBBEcNASAIKAJAIgIoAABB+d7VkwdHBEAgAigAAEH3ysmrBkcNAkH5jfYALQAAGkEQQQQQ/AUiDEUNIiAMQfKCwgA2AgBBBiEDQeyCwgAhDkEFIREMAwtB+Y32AC0AABpBEEEEEPwFIgwEQCAMQc33wQA2AgBBByEDQfeCwgAhDkEGIREMAwsMIQtBAEEAQYCDwgAQlQQACyAIQQA2AlggCEEBNgJMIAhBlILCADYCSCAIQgQ3AlAgCEHIAGpB3ILCABCuBQALIAwgAzYCDCAMIA42AgggDCARNgIEIAgoAjwiAwRAIAIgA0EBEI0GC0H5jfYALQAAGgJAQSBBBBD8BSITBEAgCEHIAGogDCgCACICIAIgDCgCBGoQtwEgCCgCTCEKIAgoAkghLyAIKAJQIhsgFiAWIBtLGyIjBEAgCiECIAQhAwNAIAIoAgAiEUHBAGshDgJAAkAgAygCACIeQcAATQRAIA5BGkkNAQwCCyAeQdsASSIrIA5BGklzRQ0BAkAgKw0AIB5B/wBNDQEgHhD4AiACKAIAIRENACARQcEAayEODAELIBFB4QBrIQ4LIAIgEUEgcyARIA5BGkkbNgIACyACQQRqIQIgA0EEaiEDICNBAWsiIw0ACwsgEyAbNgIMIBMgCjYCCCATIC82AgQgE0EANgIAIAhByABqIAwoAggiAiACIAwoAgxqELcBIAgoAkwhCiAIKAJIIRsgCCgCUCIeIBYgFiAeSxsiEQRAIAohAgNAIAIoAgAiDkHBAGshAwJAAkAgBCgCACIWQcAATQRAIANBGkkNAQwCCyAWQdsASSIjIANBGklGDQECQCAjDQAgFkGAAUkNASAWEPgCIAIoAgAhDg0AIA5BwQBrIQMMAQsgDkHhAGshAwsgAiAOQSBzIA4gA0EaSRs2AgALIAJBBGohAiAEQQRqIQQgEUEBayIRDQALCyATIB42AhwgEyAKNgIYIBMgGzYCFCATQQA2AhAgDEEQQQQQjQZB+Y32AC0AABpBMkEBEPwFIgIEQCAHIA02AhwgByALNgIYIAdBhz47ASAgB0EyNgIUIAcgAjYCECAHQoKAgICgBjcCCCAHIBM2AgQgB0ECNgIAIAJBMGpBwIPCAC8AADsAACACQShqQbiDwgApAAA3AAAgAkEgakGwg8IAKQAANwAAIAJBGGpBqIPCACkAADcAACACQRBqQaCDwgApAAA3AAAgAkEIakGYg8IAKQAANwAAIAJBkIPCACkAADcAACAYBEAgHCAYQQEQjQYLIAlBDU8EQCAIKAIMIAlBAnRBBBCNBgsgCEHgAGokAAwCC0EBQTJByM7BABDlBQALQQRBIEHgosEAEOUFAAsgBigCDCAURgRAIAZBDGpB/P7BABCEAyAGKAIQIQ8LIA8gFEEkbGoiAiAGKQJQNwIAIAJBIGogBkHwAGooAgA2AgAgAkEYaiAGQegAaikCADcCACACQRBqIAZB4ABqKQIANwIAIAJBCGogBkHYAGopAgA3AgAgBiAUQQFqIhQ2AhQgEAUgDUEBagsiDUsNAAsMAQsLIBRBJGwhAyAGKAIMIQICfyAURQRAQQQhE0EADAELIAZBACAUQQRBJBDqAiAGKAIEIRMgBigCCAsiBEEkbCATaiAPIAMQrAEaIAYgBCAUaiILNgIIIAIEQCAPIAJBJGxBBBCNBgsgBkEANgIUIAZCgICAgMAANwIMIBIoAgwhByASKAIQIRkgBkEYaiAfICAQmAIgBkEwaiEXICEoAgwhGiAhKAIIISFBBCEPQQAhFANAAkACfyAGKAIkIgJBAkcEQCACQQFxBEAgBigCKCEVIAZBADYCKCAVBEAgBigCLAwDCyAGQQA2AiQLAkAgBigCMEECRg0AIAZB9ABqIBcQjQIgBigCdEUNAAJAIAYoAnwiAkF/RwRAIAJBAWoiAyAGKAJ4IglBAWoiBEkNIyACIAYoAkwiCkkNAQwgCwwWCyAGKAJIIARBGGxqIRUgAiAJawwCCyAGQQI2AiQLIAYoAhhBAUcNASAGKAIcIRUgBkEANgIcIBVFDQEgBigCIAsiCkUNASAaKAIMIRhBACENA0AgCiAhIBUgDUEYbGoiAyAKIA1rIAcgGSAYEQUAIgIEfyACIA1qIgggAkkNBiAIIApLDQcgBkHQAGohBAJAIAIEQCAHQQAgAygCFCIOIAMoAhAiCUYiAxsgByAJQQJ0aiAJIA5LIAkgGU9yIA4gGUtyIhEbIg1FDSFB+Y32AC0AABpBEEEEEPwFIgwEQEH5jfYALQAAGkEQQQQQ/AUiAkUNISACQvWAgICgDjcCCCACQvmAgIDwDTcCACADIBFyRQRAQQQgDiAJayIDIANBBE8bIRIgAiEDA0AgAygCACIQQcEAayERAkACQCANKAIAIhZBwABNBEAgEUEaTw0CDAELIBZB2wBJIhwgEUEaSXNFDQEgHEUEQCAWQf8ATQ0BIBYQ+AJFDQELIBBB4QBrIRELIAMgEEEgcyAQIBFBGkkbNgIACyADQQRqIQMgDUEEaiENIBJBAWsiEg0ACwsgDEEENgIMIAwgAjYCCCAMQoCAgIDAADcCAEH5jfYALQAAGkHCAEEBEPwFIgIEQCACQYyBwgBBwgAQrAEhAiAEIA42AhwgBCAJNgIYIARBh/4AOwEgIARBwgA2AhQgBCACNgIQIARCgYCAgKAINwIIIAQgDDYCBCAEQQE2AgAMAwtBAUHCAEHIzsEAEOUFAAsMIAtBAEEAQfyAwgAQlQQACyAGKAIMIBRGBEAgBkEMakH8/sEAEIQDIAYoAhAhDwsgDyAUQSRsaiICIAYpAlA3AgAgAkEgaiAGQfAAaigCADYCACACQRhqIAZB6ABqKQIANwIAIAJBEGogBkHgAGopAgA3AgAgAkEIaiAGQdgAaikCADcCACAGIBRBAWoiFDYCFCAIBSANQQFqCyINSw0ACwwBCwsgBigCDCECIBQgBigCACALa0sEQCAGIAsgFEEEQSQQ6gIgBigCCCELIAYoAgQhEwsgEyALQSRsaiAPIBRBJGwQrAEaIAYgCyAUajYCCCACBEAgDyACQSRsQQQQjQYLIB0gBikCADcCACAdQQhqIAZBCGooAgA2AgAgBkGAAWokAAwECyANIBBB7P7BABCVBgALIBAgGUHs/sEAEJMGAAsgDSAIQez+wQAQlQYACyAIIApB7P7BABCTBgALIAUoAqQCIQMgBSgCqAIiAiAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIAJBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiADIAJBJGwQrAEaIAUgAiAHajYCPCAFKAKgAiICRQ0AIAMgAkEkbEEEEI0GCyAFLQBkIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohC0EAIRUjAEGgAWsiAiQAIAJBADYCECACQoCAgIDAADcCCCACQRRqICIoAgQgIigCCBCYAiACQeAAaiEDIAJBLGohDSAiKAIMIQoCQANAAkACfwJAIAIoAiAiBEECRwRAIARBAXEEQCACKAIkISEgAkEANgIkICEEQCACKAIoDAQLIAJBADYCIAsCQCACKAIsQQJGDQAgAkHMAGogDRCNAiACKAJMRQ0AIAIoAlQiBEF/RwRAIARBAWoiCSACKAJQIghBAWoiBkkNBSAEIAIoAkgiDkkNAyAJIA5B9KjpABCTBgALDBMLIAJBAjYCIAsCQCACKAIUQQFHDQAgAigCGCEhIAJBADYCGCAhRQ0AIAIoAhwMAgsgAkEIahCiASALQQhqIAJBEGooAgA2AgAgCyACKQIINwIAIAJBoAFqJAAMBAsgAigCRCAGQRhsaiEhIAQgCGsLIgRFIARBAUZyDQEgAkGAAWoiBiAhQRBqKQMANwMAIAJB+ABqIgggIUEIaikDADcDACACICEpAwA3A3AgAkGYAWoiDiAhQRhqIgxBEGoiGSkDADcDACACQZABaiIRIAxBCGoiDykDADcDACACIAwpAwA3A4gBIAJBzABqIAJB8ABqIAJBiAFqIAoQjAEgAigCXCEQIAIoAlghFCACKAJUIRYgAigCUCESIAIoAkwiB0GAgICAeEciCSACKAIIIBVrSwRAIAJBCGogFSAJQQRBJBDqAiACKAIQIRULICFBMGohEyAHQYCAgIB4RwRAIAIoAgwgFUEkbGoiCSAQNgIQIAkgFDYCDCAJIBY2AgggCSASNgIEIAkgBzYCACAJIAMpAgA3AhQgCUEcaiADQQhqKQIANwIAIBVBAWohFQsgAiAVNgIQIARBAkYNASAEQRhsIhAgIWohFANAIAYgE0EYayIHQRBqKQMANwMAIAggB0EIaikDADcDACACIAcpAwA3A3AgDiATQRBqKQMANwMAIBEgE0EIaikDADcDACACIBMpAwA3A4gBIAJBzABqIAJB8ABqIAJBiAFqIAoQjAEgAigCXCEWIAIoAlghEiACKAJUIRcgAigCUCEaIAIoAkwiE0GAgICAeEciCSACKAIIIBVrSwRAIAJBCGogFSAJQQRBJBDqAiACKAIQIRULIBNBgICAgHhHBEAgAigCDCAVQSRsaiIJIBY2AhAgCSASNgIMIAkgFzYCCCAJIBo2AgQgCSATNgIAIAkgAykCADcCFCAJQRxqIANBCGopAgA3AgAgFUEBaiEVCyACIBU2AhAgB0EwaiITIBRHDQALICFFIARFIARBA0Zycg0BAkAgIS0AMEEDa0H/AXFBAUsNACAhLQAAQQFGBEAgISgCBEEhRg0BCyAGIBkpAwA3AwAgCCAPKQMANwMAIAIgDCkDADcDcCAOICFByABqIglBEGopAwA3AwAgESAJQQhqKQMANwMAIAIgCSkDADcDiAEgAkHMAGogAkHwAGogAkGIAWogChCMASACKAJcIRMgAigCWCEHIAIoAlQhGSACKAJQIQ8gAigCTCIMQYCAgIB4RyIJIAIoAgggFWtLBEAgAkEIaiAVIAlBBEEkEOoCIAIoAhAhFQsgDEGAgICAeEcEQCACKAIMIBVBJGxqIgkgEzYCECAJIAc2AgwgCSAZNgIIIAkgDzYCBCAJIAw2AgAgCSADKQIANwIUIAlBHGogA0EIaikCADcCACAVQQFqIRULIAIgFTYCEAsgBEEERg0BIBBB4ABrIQxBACETA0ACQCATICFqIgRByABqLQAAQQNrQf8BcUEBSw0AIARBGGotAABBAUYEQCAEQRxqKAIAQSFGDQELIAYgBEEwaiIJQRBqKQMANwMAIAggCUEIaikDADcDACACIAkpAwA3A3AgDiAEQeAAaiIEQRBqKQMANwMAIBEgBEEIaikDADcDACACIAQpAwA3A4gBIAJBzABqIAJB8ABqIAJBiAFqIAoQjAEgAigCXCEHIAIoAlghGSACKAJUIQ8gAigCUCEQIAIoAkwiCUGAgICAeEciBCACKAIIIBVrSwRAIAJBCGogFSAEQQRBJBDqAiACKAIQIRULIAlBgICAgHhHBEAgAigCDCAVQSRsaiIEIAc2AhAgBCAZNgIMIAQgDzYCCCAEIBA2AgQgBCAJNgIAIAQgAykCADcCFCAEQRxqIANBCGopAgA3AgAgFUEBaiEVCyACIBU2AhALIBNBGGoiEyAMRw0ACwwBCwsgBiAJQfSo6QAQlQYACyAFKAKkAiEDIAUoAqgCIgIgBSgCNCAFKAI8IgdrSwRAIAVBNGogByACQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogAyACQSRsEKwBGiAFIAIgB2o2AjwgBSgCoAIiAkUNACADIAJBJGxBBBCNBgsgBS0AZSICQQJHBEAgAkEBcUUNBUEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRIgAigCECEXIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGyAFKALMAiEJIAUoAsgCIRggBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhDSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhGSAFKAKkAiECIAUoAqACQQFxIR8DQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIA0hDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgGEYEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAYRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwNCwwNCyADIBFrIQwgGyAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwMCyAfRQ0HQQAhBEECIQ4gBiEKIBkhDCACIRMgAwshCSATRQ0GCyAEIQIgDEUNAEEAIQIDQAJAICQoApABIBMgAkEYbGoiCyAMIAJrIBIgFyAkKAKUASgCDBEFACIGRQRAIAJBAWohAgwBCwJAIAYgAiAGaiIDTQRAIAMgDEsNASAFQegBaiECIwBBEGsiCCQAAkAgBgRAIBJBACALKAIUIhAgCygCECIPRhsgEiAPQQJ0aiAPIBBLIA8gF09yIBAgF0tyIgYbIgsEQEH5jfYALQAAGkEQQQQQ/AUiFUUNHiAIQQRqQYCGwgBBiYbCABC3ASAIKAIMIhZBACAQIA9rIAYbIgYgBiAWSxsiBgRAIAgoAgghGgNAIBooAgAiHUHBAGshFgJAAkAgCygCACIhQcAATQRAIBZBGkkNAQwCCyAhQdsASSIgIBZBGklzRQ0BAkAgIA0AICFB/wBNDQEgIRD4AiAaKAIAIR0NACAdQcEAayEWDAELIB1B4QBrIRYLIBogHUEgcyAdIBZBGkkbNgIACyAaQQRqIRogC0EEaiELIAZBAWsiBg0ACwsgFUEANgIAIBUgCCkCBDcCBCAVQQxqIAhBDGooAgA2AgBB+Y32AC0AABpBGUEBEPwFIgYEQCACIBA2AhwgAiAPNgIYIAJBgv4AOwEgIAJBGTYCFCACIAY2AhAgAkKBgICAkAM3AgggAiAVNgIEIAJBATYCACAGQRhqQaGGwgAtAAA6AAAgBkEQakGZhsIAKQAANwAAIAZBCGpBkYbCACkAADcAACAGQYmGwgApAAA3AAAgCEEQaiQADAMLQQFBGUHIzsEAEOUFAAsMHgtB8IXCABCWBgALIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDA0LDA0LIAIgDEkNAAsgBCECDAALAAsMCgsMCQsMCAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBmIgJBAkcEQAJAIAJBAXFFDQAgBUGgAmohGEEAIRQjAEGAAWsiDCQAIAxBADYCCCAMQoCAgIDAADcCACAMQQA2AhQgDEKAgICAwAA3AgwgIigCDCIXKAIMIRkgFygCECEQIAxBGGogIigCBCIdICIoAggiGxCYAiAMQTBqISMgJEHQAGoiISgCBCEfICEoAgAhIEEEIQ8CQAJAAkACQAJAA0ACQAJ/IAwoAiQiAkECRwRAIAJBAXEEQCAMKAIoIRUgDEEANgIoIBUEQCAMKAIsDAMLIAxBADYCJAsCQCAMKAIwQQJGDQAgDEH0AGogIxCNAiAMKAJ0RQ0AAkAgDCgCfCICQX9HBEAgAkEBaiIDIAwoAngiCUEBaiIESQ0iIAIgDCgCTCIKSQ0BDB8LDBULIAwoAkggBEEYbGohFSACIAlrDAILIAxBAjYCJAsgDCgCGEEBRw0BIAwoAhwhFSAMQQA2AhwgFUUNASAMKAIgCyIWRQ0BIB8oAgwhJUEAIQ0DQCAWICAgFSANQRhsaiIDIBYgDWsgGSAQICURBQAiEwR/IA0gE2oiEiATSQ0EIBIgFksNBSAMQdAAaiERIwBB4ABrIgskAAJAAkAgEwRAIAMgE0EYbCIcaiEeIANBFGooAgAiAiADQRBqKAIAIgQgAiAESRshCSACIAQgAiAESxshCiADQRhqIQQgE0EBRg0BIAQhAiAJIQggCiEOIAMhBiAcQTBrIgdBGG5BAXFFBEAgA0EsaigCACIIIANBKGooAgAiBiAGIAhJGyIOIAogCiAOSRshDiAIIAYgBiAISxsiBiAJIAYgCUkbIQggAiEGIANBMGohAgsgB0EYTwRAA0AgAkEsaigCACIHIAJBKGooAgAiDSAHIA1LGyInIAZBLGooAgAiGiAGQShqKAIAIgYgBiAaSRsiKSAOIA4gKUkbIg4gDiAnSRshDiAHIA0gByANSRsiByAaIAYgBiAaSxsiBiAIIAYgCEkbIgYgBiAHSxshCCACQRhqIQYgAkEwaiICIB5HDQALCyALIA42AgAgCyAINgI0IAggDk0NAiALQQI2AjwgC0HYmsIANgI4IAtCAjcCRCALIAutQoCAgIDAAIQ3A1ggCyALQTRqrUKAgICAwACENwNQDB4LQYTswQAQlgYACyAJIQggCiEOCwJAIBlBACAIIA5GGyAZIAhBAnRqIA4gEEsgCCAQT3IiDRsiBwRAIBlBACATQRhsIANqQRhrIgIoAhQiBiACKAIQIgJGIicbIBkgAkECdGogAiAGSyACIBBPciAGIBBLciIpGyIaBEAgC0EANgJAIAtCgICAgBA3AjggJyApckUEQCALQThqQQAgBiACayICQQFBARDqAgNAIAtBOGogGigCABDDAiAaQQRqIRogAkEBayICDQALCyALQQhqIAtBQGsoAgA2AgAgCyALKQI4NwMAAkAgE0EBRwRAAkAgHEEwayITQRhuQQFxBEAgBCECIAMhBAwBCyADQSxqKAIAIgIgA0EoaigCACIGIAIgBksbIhogCiAKIBpJGyEKIAIgBiACIAZJGyICIAkgAiAJSRshCSADQTBqIQILIBNBGE8EQANAIAJBLGooAgAiAyACQShqKAIAIgYgAyAGSxsiGiAEQSxqKAIAIhMgBEEoaigCACIEIAQgE0kbIhwgCiAKIBxJGyIKIAogGkkbIQogAyAGIAMgBkkbIgMgEyAEIAQgE0sbIgQgCSAEIAlJGyIEIAMgBEkbIQkgAkEYaiEEIAJBMGoiAiAeRw0ACwsgCyAKNgI0IAsgCTYCMCAJIApLDQELQfmN9gAtAAAaQSBBBBD8BSITRQ0kIAtBATYCPCALQZzswQA2AjggC0IBNwJEIAsgC61CgICAgLAVhDcDUCALIAtB0ABqNgJAIAtBGGogC0E4ahCfAiALKAIYIRogC0EMaiALKAIcIhwgHCALKAIgahC3ASALKAIUIgJBACAOIAhrIA0bIg4gAiAOSRsiBARAIAsoAhAhAiAHIQMDQCACKAIAIgZBwQBrIQgCQAJAIAMoAgAiDUHAAE0EQCAIQRpJDQEMAgsgDUHbAEkiHiAIQRpJc0UNAQJAIB4NACANQf8ATQ0BIA0Q+AIgAigCACEGDQAgBkHBAGshCAwBCyAGQeEAayEICyACIAZBIHMgBiAIQRpJGzYCAAsgAkEEaiECIANBBGohAyAEQQFrIgQNAAsLQfmN9gAtAAAaQQVBARD8BSIEBEAgBEEEakHI68EALQAAOgAAIARBxOvBACgAADYAACALQSRqIAQgBEEFahC3ASALKAIsIgIgDiACIA5JGyIGBEAgCygCKCECA0AgAigCACIIQcEAayEDAkACQCAHKAIAIg5BwABNBEAgA0EaSQ0BDAILIA5B2wBJIg0gA0EaSXNFDQECQCANDQAgDkH/AE0NASAOEPgCIAIoAgAhCA0AIAhBwQBrIQMMAQsgCEHhAGshAwsgAiAIQSBzIAggA0EaSRs2AgALIAJBBGohAiAHQQRqIQcgBkEBayIGDQALCyATQQA2AgAgEyALKQIMNwIEIBNBADYCECATIAspAiQ3AhQgE0EMaiALQRRqKAIANgIAIBNBHGogC0EsaigCADYCAEH5jfYALQAAGkHHAEEBEPwFIgIEQCACQaTswQBBxwAQrAEhAiARIAo2AhwgESAJNgIYIBFBhD47ASAgEUHHADYCFCARIAI2AhAgEUKCgICA8Ag3AgggESATNgIEIBFBAjYCACALKAIAIgIEQCALKAIEIAJBARCNBgsgBEEFQQEQjQYgGgRAIBwgGkEBEI0GCyALQeAAaiQADAULQQFBxwBByM7BABDlBQALQQFBBUHIzsEAEOUFAAsgC0ECNgI8IAtB2JrCADYCOCALQgI3AkQgCyALQTRqrUKAgICAwACENwNYIAsgC0Ewaq1CgICAgMAAhDcDUAweCwwgCwwfCyAMKAIMIBRGBEAgDEEMakH8/sEAEIQDIAwoAhAhDwsgDyAUQSRsaiICIAwpAlA3AgAgAkEgaiAMQfAAaigCADYCACACQRhqIAxB6ABqKQIANwIAIAJBEGogDEHgAGopAgA3AgAgAkEIaiAMQdgAaikCADcCACAMIBRBAWoiFDYCFCASBSANQQFqCyINSw0ACwwBCwsgFEEkbCEDIAwoAgwhAgJ/IBRFBEBBBCETQQAMAQsgDEEAIBRBBEEkEOoCIAwoAgQhEyAMKAIICyIEQSRsIBNqIA8gAxCsARogDCAEIBRqIgs2AgggAgRAIA8gAkEkbEEEEI0GCyAMQQA2AhQgDEKAgICAwAA3AgwgFygCDCEQIBcoAhAhFiAMQRhqIB0gGxCYAiAMQTBqIRwgISgCDCEeICEoAgghIUEEIQ9BACEUA0ACQAJ/IAwoAiQiAkECRwRAIAJBAXEEQCAMKAIoIRUgDEEANgIoIBUEQCAMKAIsDAMLIAxBADYCJAsCQCAMKAIwQQJGDQAgDEH0AGogHBCNAiAMKAJ0RQ0AAkAgDCgCfCICQX9HBEAgAkEBaiIDIAwoAngiCUEBaiIESQ0iIAIgDCgCTCIKSQ0BDB8LDBULIAwoAkggBEEYbGohFSACIAlrDAILIAxBAjYCJAsgDCgCGEEBRw0BIAwoAhwhFSAMQQA2AhwgFUUNASAMKAIgCyIHRQ0BIB4oAgwhHUEAIQ0DQCAHICEgFSANQRhsaiIDIAcgDWsgECAWIB0RBQAiAgR/IAIgDWoiGSACSQ0GIAcgGUkNByAMQdAAaiEGIwBBIGsiBCQAAkAgAgRAIBBBACADKAIUIg0gAygCECIRRhsgECARQQJ0aiANIBFJIBEgFk9yIA0gFktyIgIbIgMEQEH5jfYALQAAGkEgQQQQ/AUiDkUNIyAEQQhqQcTrwQBByevBABC3ASAEKAIQIglBACANIBFrIAIbIhIgCSASSRsiGgRAIAQoAgwhCSADIQIDQCAJKAIAIghBwQBrIQoCQAJAIAIoAgAiF0HAAE0EQCAKQRpJDQEMAgsgF0HbAEkiGyAKQRpJc0UNAQJAIBsNACAXQf8ATQ0BIBcQ+AIgCSgCACEIDQAgCEHBAGshCgwBCyAIQeEAayEKCyAJIAhBIHMgCCAKQRpJGzYCAAsgCUEEaiEJIAJBBGohAiAaQQFrIhoNAAsLIARBFGpBxO3BAEHK7cEAELcBIAQoAhwiAiASIAIgEkkbIggEQCAEKAIYIQkDQCAJKAIAIgpBwQBrIQICQAJAIAMoAgAiEkHAAE0EQCACQRpJDQEMAgsgEkHbAEkiFyACQRpJc0UNAQJAIBcNACASQf8ATQ0BIBIQ+AIgCSgCACEKDQAgCkHBAGshAgwBCyAKQeEAayECCyAJIApBIHMgCiACQRpJGzYCAAsgCUEEaiEJIANBBGohAyAIQQFrIggNAAsLIA5BADYCACAOIAQpAgg3AgQgDkEANgIQIA4gBCkCFDcCFCAOQQxqIARBEGooAgA2AgAgDkEcaiAEQRxqKAIANgIAQfmN9gAtAAAaQS5BARD8BSICBEAgBiANNgIcIAYgETYCGCAGQYc+OwEgIAZBLjYCFCAGIAI2AhAgBkKCgICA4AU3AgggBiAONgIEIAZBAjYCACACQSZqQfDtwQApAAA3AAAgAkEgakHq7cEAKQAANwAAIAJBGGpB4u3BACkAADcAACACQRBqQdrtwQApAAA3AAAgAkEIakHS7cEAKQAANwAAIAJByu3BACkAADcAACAEQSBqJAAMAwsMHQsMIAtBtO3BABCWBgALIAwoAgwgFEYEQCAMQQxqQfz+wQAQhAMgDCgCECEPCyAPIBRBJGxqIgIgDCkCUDcCACACQSBqIAxB8ABqKAIANgIAIAJBGGogDEHoAGopAgA3AgAgAkEQaiAMQeAAaikCADcCACACQQhqIAxB2ABqKQIANwIAIAwgFEEBaiIUNgIUIBkFIA1BAWoLIg1LDQALDAELCyAMKAIMIQIgFCAMKAIAIAtrSwRAIAwgCyAUQQRBJBDqAiAMKAIIIQsgDCgCBCETCyATIAtBJGxqIA8gFEEkbBCsARogDCALIBRqNgIIIAIEQCAPIAJBJGxBBBCNBgsgGCAMKQIANwIAIBhBCGogDEEIaigCADYCACAMQYABaiQADAQLIA0gEkHs/sEAEJUGAAsgEiAWQez+wQAQkwYACyANIBlB7P7BABCVBgALIBkgB0Hs/sEAEJMGAAsgBSgCpAIhAyAFKAKoAiICIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgAkEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIAMgAkEkbBCsARogBSACIAdqNgI8IAUoAqACIgJFDQAgAyACQSRsQQQQjQYLIAUtAGciAkECRwRAIAJBAXFFDQNBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEWIAIoAhAhEiAFQaACaiAiEIYGQQQhHiAFKALUAiEjIAUoAtACIR8gBSgCzAIhCSAFKALIAiEdIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIRkgBSgCsAIhCiAFKAKsAiEOIAUoAqgCIQ8gBSgCpAIhAiAFKAKgAkEBcSEgA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyAZIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIB1GBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgHUYEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCwsMCwsgAyARayEMIB8gB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCgsgIEUNBUEAIQRBAiEOIAYhCiAPIQwgAiETIAMLIQkgE0UNBAsgBCECIAxFDQBBACECA0ACQCAkKAKYASATIAJBGGxqIgYgDCACayAWIBIgJCgCnAEoAgwRBQAiCEUEQCACQQFqIQIMAQsCQCAIIAIgCGoiA00EQCADIAxLDQEgBUHoAWohECAGIQIjAEHQAGsiCyQAAkAgCARAIAJBFGooAgAiBiACQRBqKAIAIg0gBiANSRshGyAGIA0gBiANSxshGCAIQQFGDQEgAkEYaiEGAkAgCEEYbCIVQTBrIhdBGG5BAXEEQCAGIQ0gAiEGDAELIAJBLGooAgAiCCACQShqKAIAIg0gCCANSxsiGiAYIBggGkkbIRggCCANIAggDUkbIgggGyAIIBtJGyEbIAJBMGohDQsgF0EYTwRAIAIgFWohFwNAIA1BLGooAgAiAiANQShqKAIAIgggAiAISxsiGiAGQSxqKAIAIhUgBkEoaigCACIGIAYgFUkbIiEgGCAYICFJGyIhIBogIUsbIRggAiAIIAIgCEkbIgIgFSAGIAYgFUsbIgYgGyAGIBtJGyIGIAIgBkkbIRsgDUEYaiEGIA1BMGoiDSAXRw0ACwsgCyAYNgIMIAsgGzYCCCAYIBtPDQEgC0ECNgIUIAtB2JrCADYCECALQgI3AhwgCyALQQxqrUKAgICAwACENwMwIAsgC0EIaq1CgICAgMAAhDcDKCALIAtBKGo2AhggC0EQakGAm8IAEK4FAAtB3OjBABCWBgALAkAgFkEAIBggG0YbIBYgG0ECdGogEiAYSSASIBtNciIGGyICBEBB+Y32AC0AABpBIEEEEPwFIhVFDR4gC0E4akGs6MEAQbPowQAQtwEgCygCQCIIQQAgGCAbayAGGyIaIAggGkkbIikEQCALKAI8IQ0gAiEIA0AgDSgCACIGQcEAayEXAkACQCAIKAIAIiFBwABNBEAgF0EaSQ0BDAILICFB2wBJIiUgF0EaSXNFDQECQCAlDQAgIUH/AE0NASAhEPgCIA0oAgAhBg0AIAZBwQBrIRcMAQsgBkHhAGshFwsgDSAGQSBzIAYgF0EaSRs2AgALIA1BBGohDSAIQQRqIQggKUEBayIpDQALCyALQcQAakHs6MEAQffowQAQtwEgCygCTCIGIBogBiAaSRsiBgRAIAsoAkghDQNAIA0oAgAiF0HBAGshCAJAAkAgAigCACIaQcAATQRAIAhBGkkNAQwCCyAaQdsASSIhIAhBGklzRQ0BAkAgIQ0AIBpB/wBNDQEgGhD4AiANKAIAIRcNACAXQcEAayEIDAELIBdB4QBrIQgLIA0gF0EgcyAXIAhBGkkbNgIACyANQQRqIQ0gAkEEaiECIAZBAWsiBg0ACwsgFUEANgIAIBUgCykCODcCBCAVQQA2AhAgFSALKQJENwIUIBVBDGogC0FAaygCADYCACAVQRxqIAtBzABqKAIANgIAQfmN9gAtAAAaQecAQQEQ/AUiAgRAIAJB9+jBAEHnABCsASECIBAgGDYCHCAQIBs2AhggEEGH/AE7ASAgEEHnADYCFCAQIAI2AhAgEEKCgICA8Aw3AgggECAVNgIEIBBBAjYCACALQdAAaiQADAILQQFB5wBByM7BABDlBQALDBsLIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAsLDAsLIAIgDEkNAAsgBCECDAALAAsMCAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBoIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhECACKAIQIRUgBUGgAmogIhCGBkEEIR4gBSgC1AIhIyAFKALQAiEaIAUoAswCIQkgBSgCyAIhFyAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiEZIAUoArACIQogBSgCrAIhDiAFKAKoAiEPIAUoAqQCIQIgBSgCoAJBAXEhIQNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgGSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAXRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBdGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAaIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLICFFDQRBACEEQQIhDiAGIQogDyEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgCoAEgEyACQRhsaiIGIAwgAmsgECAVICQoAqQBKAIMEQUAIgtFBEAgAkEBaiECDAELAkAgCyACIAtqIgNNBEAgAyAMSw0BIAVB6AFqIQgjAEFAaiIbJAACQCALBEAgBkEUaigCACICIAZBEGooAgAiDSACIA1JGyEYIAIgDSACIA1LGyESIAtBAUYNASAGQRhqIQICQCALQRhsIhZBMGsiHUEYbkEBcQRAIAIhDSAGIQIMAQsgBkEsaigCACILIAZBKGooAgAiDSALIA1LGyIfIBIgEiAfSRshEiALIA0gCyANSRsiCyAYIAsgGEkbIRggBkEwaiENCyAdQRhPBEAgBiAWaiEdA0AgDUEsaigCACIGIA1BKGooAgAiCyAGIAtLGyIfIAJBLGooAgAiFiACQShqKAIAIgIgAiAWSRsiICASIBIgIEkbIhIgEiAfSRshEiAGIAsgBiALSRsiBiAWIAIgAiAWSxsiAiAYIAIgGEkbIgIgAiAGSxshGCANQRhqIQIgDUEwaiINIB1HDQALCyAbIBI2AhQgGyAYNgIQIBIgGE8NAQwVC0G4rekAEJYGAAsCQCAQQQAgEiAYRhsgECAYQQJ0aiAVIBhNIBIgFUtyIgIbIgsEQEH5jfYALQAAGkEQQQQQ/AUiBkUNGiAbQQRqQbCt6QBBuK3pABC3ASAbKAIMIg1BACASIBhrIAIbIgIgAiANSxsiAgRAIBsoAgghDQNAIA0oAgAiHUHBAGshHwJAAkAgCygCACIWQcAATQRAIB9BGkkNAQwCCyAWQdsASSIgIB9BGklzRQ0BAkAgIA0AIBZB/wBNDQEgFhD4AiANKAIAIR0NACAdQcEAayEfDAELIB1B4QBrIR8LIA0gHUEgcyAdIB9BGkkbNgIACyANQQRqIQ0gC0EEaiELIAJBAWsiAg0ACwsgBkEANgIAIAYgGykCBDcCBCAGQQxqIBtBDGooAgA2AgBB+Y32AC0AABpBI0EBEPwFIgIEQCAIIBI2AhwgCCAYNgIYIAhBiD47ASAgCEEjNgIUIAggAjYCECAIQoGAgICwBDcCCCAIIAY2AgQgCEEBNgIAIAJBH2pB563pACgAADYAACACQRhqQeCt6QApAAA3AAAgAkEQakHYrekAKQAANwAAIAJBCGpB0K3pACkAADcAACACQcit6QApAAA3AAAgG0FAayQADAILQQFBI0HIzsEAEOUFAAsMGgsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCgsMCgsgAiAMSQ0ACyAEIQIMAAsACwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAGkiAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEQIAIoAhAhFSAFQaACaiAiEIYGQQQhHiAFKALUAiEjIAUoAtACIRogBSgCzAIhCSAFKALIAiEXIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIRkgBSgCsAIhCiAFKAKsAiEOIAUoAqgCIQ8gBSgCpAIhAiAFKAKgAkEBcSEhA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyAZIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBdGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgF0YEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMIBogB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgIUUNBEEAIQRBAiEOIAYhCiAPIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKAKoASATIAJBGGxqIgYgDCACayAQIBUgJCgCrAEoAgwRBQAiC0UEQCACQQFqIQIMAQsCQCALIAIgC2oiA00EQCADIAxLDQEgBUHoAWohCCMAQUBqIhskAAJAIAsEQCAGQRRqKAIAIgIgBkEQaigCACINIAIgDUkbIRggAiANIAIgDUsbIRIgC0EBRg0BIAZBGGohAgJAIAtBGGwiFkEwayIdQRhuQQFxBEAgAiENIAYhAgwBCyAGQSxqKAIAIgsgBkEoaigCACINIAsgDUsbIh8gEiASIB9JGyESIAsgDSALIA1JGyILIBggCyAYSRshGCAGQTBqIQ0LIB1BGE8EQCAGIBZqIR0DQCANQSxqKAIAIgYgDUEoaigCACILIAYgC0sbIh8gAkEsaigCACIWIAJBKGooAgAiAiACIBZJGyIgIBIgEiAgSRsiEiASIB9JGyESIAYgCyAGIAtJGyIGIBYgAiACIBZLGyICIBggAiAYSRsiAiACIAZLGyEYIA1BGGohAiANQTBqIg0gHUcNAAsLIBsgEjYCFCAbIBg2AhAgEiAYTw0BDBULQfyt6QAQlgYACwJAIBBBACASIBhGGyAQIBhBAnRqIBUgGE0gEiAVS3IiAhsiCwRAQfmN9gAtAAAaQRBBBBD8BSIGRQ0aIBtBBGpB663pAEH6rekAELcBIBsoAgwiDUEAIBIgGGsgAhsiAiACIA1LGyICBEAgGygCCCENA0AgDSgCACIdQcEAayEfAkACQCALKAIAIhZBwABNBEAgH0EaSQ0BDAILIBZB2wBJIiAgH0EaSXNFDQECQCAgDQAgFkH/AE0NASAWEPgCIA0oAgAhHQ0AIB1BwQBrIR8MAQsgHUHhAGshHwsgDSAdQSBzIB0gH0EaSRs2AgALIA1BBGohDSALQQRqIQsgAkEBayICDQALCyAGQQA2AgAgBiAbKQIENwIEIAZBDGogG0EMaigCADYCAEH5jfYALQAAGkEqQQEQ/AUiAgRAIAggEjYCHCAIIBg2AhggCEGIPjsBICAIQSo2AhQgCCACNgIQIAhCgYCAgKAFNwIIIAggBjYCBCAIQQE2AgAgAkEoakG0rukALwAAOwAAIAJBIGpBrK7pACkAADcAACACQRhqQaSu6QApAAA3AAAgAkEQakGcrukAKQAANwAAIAJBCGpBlK7pACkAADcAACACQYyu6QApAAA3AAAgG0FAayQADAILQQFBKkHIzsEAEOUFAAsMGgsgBSgCkAEgFEYEQCAFQZABakH0lMAAEIQDIAUoApQBIR4LIB4gFEEkbGoiAiAFKQLoATcCACACQSBqIAVBiAJqKAIANgIAIAJBGGogBUGAAmopAgA3AgAgAkEQaiAFQfgBaikCADcCACACQQhqIAVB8AFqKQIANwIAIAUgFEEBaiIUNgKYASADIQIMAgsMCgsMCgsgAiAMSQ0ACyAEIQIMAAsACwwHCyAFKAKQASECIBQgBSgCNCAFKAI8IgdrSwRAIAVBNGogByAUQQRBJBDnAiAFKAI8IQcLIAUoAjggB0EkbGogHiAUQSRsEKwBGiAFIAcgFGo2AjwgAkUNACAeIAJBJGxBBBCNBgsCQAJAIAUtAGoiAkECRwRAIAJBAXFFDQJBACEUIAVBADYCmAEgBUKAgICAwAA3ApABICIoAgwiAigCDCEQIAIoAhAhFSAFQaACaiAiEIYGQQQhHiAFKALUAiEjIAUoAtACIRogBSgCzAIhCSAFKALIAiEXIAUoAsQCIQcgBSgCwAIhESAFKAK4AiEcIAUoArQCIRkgBSgCsAIhCiAFKAKsAiEOIAUoAqgCIQ8gBSgCpAIhAiAFKAKgAkEBcSEhA0ACQAJ/AkAgDkECRgRAIAohBiAJIQMMAQsCQCAOQQFxRQRAIAohBiAOIQQMAQtBACEGQQAhBCAKRQ0AIAohEyAZIQwgAiEEQQAhCgwDCyAcQQJGBEBBAiEcIAkhAwwBCwNAIAkhCiAHIBdGBEAgCSEDDAILIApBAWohCSAHEJoEIAdBGGoiCyEHRQ0ACwJ/IBxBAXFFBEAgCSEIA0AgCCEDIAcgF0YEQEEAIRwMBAtBASEcIANBAWohCCAHEJoEIAdBGGoiCyEHRQ0ACyAKIREgCQwBCyAKIQMgCSEIIBFBAWoLIQcCQAJAIANBf0cEQCADQQFqIgkgB0kNAiADICNJDQEMCgsMCgsgAyARayEMIBogB0EYbGohEyADIREgBiEKIAQhDiALIQcgAiEEIAgMAgsMCQsgIUUNBEEAIQRBAiEOIAYhCiAPIQwgAiETIAMLIQkgE0UNAwsgBCECIAxFDQBBACECA0ACQCAkKAKwASATIAJBGGxqIgYgDCACayAQIBUgJCgCtAEoAgwRBQAiC0UEQCACQQFqIQIMAQsCQCALIAIgC2oiA00EQCADIAxLDQEgBUHoAWohCCMAQUBqIhskAAJAIAsEQCAGQRRqKAIAIgIgBkEQaigCACINIAIgDUkbIRggAiANIAIgDUsbIRIgC0EBRg0BIAZBGGohAgJAIAtBGGwiFkEwayIdQRhuQQFxBEAgAiENIAYhAgwBCyAGQSxqKAIAIgsgBkEoaigCACINIAsgDUsbIh8gEiASIB9JGyESIAsgDSALIA1JGyILIBggCyAYSRshGCAGQTBqIQ0LIB1BGE8EQCAGIBZqIR0DQCANQSxqKAIAIgYgDUEoaigCACILIAYgC0sbIh8gAkEsaigCACIWIAJBKGooAgAiAiACIBZJGyIgIBIgEiAgSRsiEiASIB9JGyESIAYgCyAGIAtJGyIGIBYgAiACIBZLGyICIBggAiAYSRsiAiACIAZLGyEYIA1BGGohAiANQTBqIg0gHUcNAAsLIBsgEjYCFCAbIBg2AhAgEiAYTw0BDBULQcCr6QAQlgYACwJAIBBBACASIBhGGyAQIBhBAnRqIBUgGE0gEiAVS3IiAhsiCwRAQfmN9gAtAAAaQRBBBBD8BSIGRQ0aIBtBBGpBtqvpAEHAq+kAELcBIBsoAgwiDUEAIBIgGGsgAhsiAiACIA1LGyICBEAgGygCCCENA0AgDSgCACIdQcEAayEfAkACQCALKAIAIhZBwABNBEAgH0EaSQ0BDAILIBZB2wBJIiAgH0EaSXNFDQECQCAgDQAgFkH/AE0NASAWEPgCIA0oAgAhHQ0AIB1BwQBrIR8MAQsgHUHhAGshHwsgDSAdQSBzIB0gH0EaSRs2AgALIA1BBGohDSALQQRqIQsgAkEBayICDQALCyAGQQA2AgAgBiAbKQIENwIEIAZBDGogG0EMaigCADYCAEH5jfYALQAAGkElQQEQ/AUiAgRAIAggEjYCHCAIIBg2AhggCEGIPjsBICAIQSU2AhQgCCACNgIQIAhCgYCAgNAENwIIIAggBjYCBCAIQQE2AgAgAkEdakHtq+kAKQAANwAAIAJBGGpB6KvpACkAADcAACACQRBqQeCr6QApAAA3AAAgAkEIakHYq+kAKQAANwAAIAJB0KvpACkAADcAACAbQUBrJAAMAgtBAUElQcjOwQAQ5QUACwwaCyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AayICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRAgAigCECEVIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGiAFKALMAiEJIAUoAsgCIRcgBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhGSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhDyAFKAKkAiECIAUoAqACQQFxISEDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIBkhDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgF0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAXRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgGiAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAhRQ0EQQAhBEECIQ4gBiEKIA8hDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoArgBIBMgAkEYbGoiBiAMIAJrIBAgFSAkKAK8ASgCDBEFACILRQRAIAJBAWohAgwBCwJAIAsgAiALaiIDTQRAIAMgDEsNASAFQegBaiEIIwBBQGoiGyQAAkAgCwRAIAZBFGooAgAiAiAGQRBqKAIAIg0gAiANSRshGCACIA0gAiANSxshEiALQQFGDQEgBkEYaiECAkAgC0EYbCIWQTBrIh1BGG5BAXEEQCACIQ0gBiECDAELIAZBLGooAgAiCyAGQShqKAIAIg0gCyANSxsiHyASIBIgH0kbIRIgCyANIAsgDUkbIgsgGCALIBhJGyEYIAZBMGohDQsgHUEYTwRAIAYgFmohHQNAIA1BLGooAgAiBiANQShqKAIAIgsgBiALSxsiHyACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiAgEiASICBJGyISIBIgH0kbIRIgBiALIAYgC0kbIgYgFiACIAIgFksbIgIgGCACIBhJGyICIAIgBksbIRggDUEYaiECIA1BMGoiDSAdRw0ACwsgGyASNgIUIBsgGDYCECASIBhPDQEMFQtB/KzpABCWBgALAkAgEEEAIBIgGEYbIBAgGEECdGogFSAYTSASIBVLciICGyILBEBB+Y32AC0AABpBEEEEEPwFIgZFDRogG0EEakHwrOkAQfms6QAQtwEgGygCDCINQQAgEiAYayACGyICIAIgDUsbIgIEQCAbKAIIIQ0DQCANKAIAIh1BwQBrIR8CQAJAIAsoAgAiFkHAAE0EQCAfQRpJDQEMAgsgFkHbAEkiICAfQRpJc0UNAQJAICANACAWQf8ATQ0BIBYQ+AIgDSgCACEdDQAgHUHBAGshHwwBCyAdQeEAayEfCyANIB1BIHMgHSAfQRpJGzYCAAsgDUEEaiENIAtBBGohCyACQQFrIgINAAsLIAZBADYCACAGIBspAgQ3AgQgBkEMaiAbQQxqKAIANgIAQfmN9gAtAAAaQSRBARD8BSICBEAgCCASNgIcIAggGDYCGCAIQYg+OwEgIAhBJDYCFCAIIAI2AhAgCEKBgICAwAQ3AgggCCAGNgIEIAhBATYCACACQSBqQayt6QAoAAA2AAAgAkEYakGkrekAKQAANwAAIAJBEGpBnK3pACkAADcAACACQQhqQZSt6QApAAA3AAAgAkGMrekAKQAANwAAIBtBQGskAAwCCwwWCwwaCyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AbCICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRAgAigCECEVIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGiAFKALMAiEJIAUoAsgCIRcgBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhGSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhDyAFKAKkAiECIAUoAqACQQFxISEDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIBkhDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgF0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAXRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgGiAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAhRQ0EQQAhBEECIQ4gBiEKIA8hDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAsABIBMgAkEYbGoiBiAMIAJrIBAgFSAkKALEASgCDBEFACILRQRAIAJBAWohAgwBCwJAIAsgAiALaiIDTQRAIAMgDEsNASAFQegBaiEIIwBBQGoiGyQAAkAgCwRAIAZBFGooAgAiAiAGQRBqKAIAIg0gAiANSRshGCACIA0gAiANSxshEiALQQFGDQEgBkEYaiECAkAgC0EYbCIWQTBrIh1BGG5BAXEEQCACIQ0gBiECDAELIAZBLGooAgAiCyAGQShqKAIAIg0gCyANSxsiHyASIBIgH0kbIRIgCyANIAsgDUkbIgsgGCALIBhJGyEYIAZBMGohDQsgHUEYTwRAIAYgFmohHQNAIA1BLGooAgAiBiANQShqKAIAIgsgBiALSxsiHyACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiAgEiASICBJGyISIBIgH0kbIRIgBiALIAYgC0kbIgYgFiACIAIgFksbIgIgGCACIBhJGyICIAIgBksbIRggDUEYaiECIA1BMGoiDSAdRw0ACwsgGyASNgIUIBsgGDYCECASIBhPDQEMFQtBvKzpABCWBgALAkAgEEEAIBIgGEYbIBAgGEECdGogFSAYTSASIBVLciICGyILBEBB+Y32AC0AABpBEEEEEPwFIgZFDRogG0EEakGyrOkAQbus6QAQtwEgGygCDCINQQAgEiAYayACGyICIAIgDUsbIgIEQCAbKAIIIQ0DQCANKAIAIh1BwQBrIR8CQAJAIAsoAgAiFkHAAE0EQCAfQRpJDQEMAgsgFkHbAEkiICAfQRpJc0UNAQJAICANACAWQf8ATQ0BIBYQ+AIgDSgCACEdDQAgHUHBAGshHwwBCyAdQeEAayEfCyANIB1BIHMgHSAfQRpJGzYCAAsgDUEEaiENIAtBBGohCyACQQFrIgINAAsLIAZBADYCACAGIBspAgQ3AgQgBkEMaiAbQQxqKAIANgIAQfmN9gAtAAAaQSRBARD8BSICBEAgCCASNgIcIAggGDYCGCAIQYg+OwEgIAhBJDYCFCAIIAI2AhAgCEKBgICAwAQ3AgggCCAGNgIEIAhBATYCACACQSBqQeys6QAoAAA2AAAgAkEYakHkrOkAKQAANwAAIAJBEGpB3KzpACkAADcAACACQQhqQdSs6QApAAA3AAAgAkHMrOkAKQAANwAAIBtBQGskAAwCCwwWCwwaCyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AbSICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRAgAigCECEVIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGiAFKALMAiEJIAUoAsgCIRcgBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhGSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhDyAFKAKkAiECIAUoAqACQQFxISEDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIBkhDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgF0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAXRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgGiAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAhRQ0EQQAhBEECIQ4gBiEKIA8hDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAsgBIBMgAkEYbGoiBiAMIAJrIBAgFSAkKALMASgCDBEFACILRQRAIAJBAWohAgwBCwJAIAsgAiALaiIDTQRAIAMgDEsNASAFQegBaiEIIwBBQGoiGyQAAkAgCwRAIAZBFGooAgAiAiAGQRBqKAIAIg0gAiANSRshGCACIA0gAiANSxshEiALQQFGDQEgBkEYaiECAkAgC0EYbCIWQTBrIh1BGG5BAXEEQCACIQ0gBiECDAELIAZBLGooAgAiCyAGQShqKAIAIg0gCyANSxsiHyASIBIgH0kbIRIgCyANIAsgDUkbIgsgGCALIBhJGyEYIAZBMGohDQsgHUEYTwRAIAYgFmohHQNAIA1BLGooAgAiBiANQShqKAIAIgsgBiALSxsiHyACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiAgEiASICBJGyISIBIgH0kbIRIgBiALIAYgC0kbIgYgFiACIAIgFksbIgIgGCACIBhJGyICIAIgBksbIRggDUEYaiECIA1BMGoiDSAdRw0ACwsgGyASNgIUIBsgGDYCECASIBhPDQEMFQtB+KvpABCWBgALAkAgEEEAIBIgGEYbIBAgGEECdGogFSAYTSASIBVLciICGyILBEBB+Y32AC0AABpBEEEEEPwFIgZFDRogG0EEakGZ88EAQajzwQAQtwEgGygCDCINQQAgEiAYayACGyICIAIgDUsbIgIEQCAbKAIIIQ0DQCANKAIAIh1BwQBrIR8CQAJAIAsoAgAiFkHAAE0EQCAfQRpJDQEMAgsgFkHbAEkiICAfQRpJc0UNAQJAICANACAWQf8ATQ0BIBYQ+AIgDSgCACEdDQAgHUHBAGshHwwBCyAdQeEAayEfCyANIB1BIHMgHSAfQRpJGzYCAAsgDUEEaiENIAtBBGohCyACQQFrIgINAAsLIAZBADYCACAGIBspAgQ3AgQgBkEMaiAbQQxqKAIANgIAQfmN9gAtAAAaQSpBARD8BSICBEAgCCASNgIcIAggGDYCGCAIQYg+OwEgIAhBKjYCFCAIIAI2AhAgCEKBgICAoAU3AgggCCAGNgIEIAhBATYCACACQShqQbCs6QAvAAA7AAAgAkEgakGorOkAKQAANwAAIAJBGGpBoKzpACkAADcAACACQRBqQZis6QApAAA3AAAgAkEIakGQrOkAKQAANwAAIAJBiKzpACkAADcAACAbQUBrJAAMAgtBAUEqQcjOwQAQ5QUACwwaCyAFKAKQASAURgRAIAVBkAFqQfSUwAAQhAMgBSgClAEhHgsgHiAUQSRsaiICIAUpAugBNwIAIAJBIGogBUGIAmooAgA2AgAgAkEYaiAFQYACaikCADcCACACQRBqIAVB+AFqKQIANwIAIAJBCGogBUHwAWopAgA3AgAgBSAUQQFqIhQ2ApgBIAMhAgwCCwwKCwwKCyACIAxJDQALIAQhAgwACwALDAcLIAUoApABIQIgFCAFKAI0IAUoAjwiB2tLBEAgBUE0aiAHIBRBBEEkEOcCIAUoAjwhBwsgBSgCOCAHQSRsaiAeIBRBJGwQrAEaIAUgByAUajYCPCACRQ0AIB4gAkEkbEEEEI0GCwJAAkAgBS0AbiICQQJHBEAgAkEBcUUNAkEAIRQgBUEANgKYASAFQoCAgIDAADcCkAEgIigCDCICKAIMIRAgAigCECEVIAVBoAJqICIQhgZBBCEeIAUoAtQCISMgBSgC0AIhGiAFKALMAiEJIAUoAsgCIRcgBSgCxAIhByAFKALAAiERIAUoArgCIRwgBSgCtAIhGSAFKAKwAiEKIAUoAqwCIQ4gBSgCqAIhDyAFKAKkAiECIAUoAqACQQFxISEDQAJAAn8CQCAOQQJGBEAgCiEGIAkhAwwBCwJAIA5BAXFFBEAgCiEGIA4hBAwBC0EAIQZBACEEIApFDQAgCiETIBkhDCACIQRBACEKDAMLIBxBAkYEQEECIRwgCSEDDAELA0AgCSEKIAcgF0YEQCAJIQMMAgsgCkEBaiEJIAcQmgQgB0EYaiILIQdFDQALAn8gHEEBcUUEQCAJIQgDQCAIIQMgByAXRgRAQQAhHAwEC0EBIRwgA0EBaiEIIAcQmgQgB0EYaiILIQdFDQALIAohESAJDAELIAohAyAJIQggEUEBagshBwJAAkAgA0F/RwRAIANBAWoiCSAHSQ0CIAMgI0kNAQwKCwwKCyADIBFrIQwgGiAHQRhsaiETIAMhESAGIQogBCEOIAshByACIQQgCAwCCwwJCyAhRQ0EQQAhBEECIQ4gBiEKIA8hDCACIRMgAwshCSATRQ0DCyAEIQIgDEUNAEEAIQIDQAJAICQoAtABIBMgAkEYbGoiBiAMIAJrIBAgFSAkKALUASgCDBEFACILRQRAIAJBAWohAgwBCwJAIAsgAiALaiIDTQRAIAMgDEsNASAFQegBaiEIIwBBQGoiGyQAAkAgCwRAIAZBFGooAgAiAiAGQRBqKAIAIg0gAiANSRshGCACIA0gAiANSxshEiALQQFGDQEgBkEYaiECAkAgC0EYbCIWQTBrIh1BGG5BAXEEQCACIQ0gBiECDAELIAZBLGooAgAiCyAGQShqKAIAIg0gCyANSxsiHyASIBIgH0kbIRIgCyANIAsgDUkbIgsgGCALIBhJGyEYIAZBMGohDQsgHUEYTwRAIAYgFmohHQNAIA1BLGooAgAiBiANQShqKAIAIgsgBiALSxsiHyACQSxqKAIAIhYgAkEoaigCACICIAIgFkkbIiAgEiASICBJGyISIBIgH0kbIRIgBiALIAYgC0kbIgYgFiACIAIgFksbIgIgGCACIBhJGyICIAIgBksbIRggDUEYaiECIA1BMGoiDSAdRw0ACwsgGyASNgIUIBsgGDYCECASIBhPDQEMFQtBgKvpABCWBgALAkAgEEEAIBIgGEYbIBAgGEECdGogFSAYTSASIBVLciICGyILBEBB+Y32AC0AABpBEEEEEPwFIgZFDRogG0EEakGyqukAQb2q6QAQtwEgGygCDCINQQAgEiAYayACGyICIAIgDUsbIgIEQCAbKAIIIQ0DQCANKAIAIh1BwQBrIR8CQAJAIAsoAgAiFkHAAE0EQCAfQRpJDQEMAgsgFkHbAEkiICAfQRpJc0UNAQJAICANACAWQf8ATQ0BIBYQ+AIgDSgCACEdDQAgHUHBAGshHwwBCyAdQeEAayEfCyANIB1BIHMgHSAfQRpJGzYCAAsgDUEEaiENIAtBBGohCyACQQFrIgINAAsLIAZBADYCACAGIBspAgQ3AgQgBkEMaiAbQQxqKAIANgIAQfmN9gAtAAAaQSZBARD8BSICBEAgCCASNgIcIAggGDYCGCAIQYg+OwEgIAhBJjYCFCAIIAI2AhAgCEKBgICA4AQ3AgggCCAGNgIEIAhBATYCACACQR5qQa6r6QApAAA3AAAgAkEYakGoq+kAKQAANwAAIAJBEGpBoKvpACkAADcAACACQQhqQZir6QApAAA3AAAgAkGQq+kAKQAANwAAIBtBQGskAAwCC0EBQSZByM7BABDlBQALDBoLIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkACQCAFLQBvIgJBAkcEQCACQQFxRQ0CQQAhFCAFQQA2ApgBIAVCgICAgMAANwKQASAiKAIMIgIoAgwhECACKAIQIRUgBUGgAmogIhCGBkEEIR4gBSgC1AIhIyAFKALQAiEaIAUoAswCIQkgBSgCyAIhFyAFKALEAiEHIAUoAsACIREgBSgCuAIhHCAFKAK0AiEZIAUoArACIQogBSgCrAIhDiAFKAKoAiEPIAUoAqQCIQIgBSgCoAJBAXEhIQNAAkACfwJAIA5BAkYEQCAKIQYgCSEDDAELAkAgDkEBcUUEQCAKIQYgDiEEDAELQQAhBkEAIQQgCkUNACAKIRMgGSEMIAIhBEEAIQoMAwsgHEECRgRAQQIhHCAJIQMMAQsDQCAJIQogByAXRgRAIAkhAwwCCyAKQQFqIQkgBxCaBCAHQRhqIgshB0UNAAsCfyAcQQFxRQRAIAkhCANAIAghAyAHIBdGBEBBACEcDAQLQQEhHCADQQFqIQggBxCaBCAHQRhqIgshB0UNAAsgCiERIAkMAQsgCiEDIAkhCCARQQFqCyEHAkACQCADQX9HBEAgA0EBaiIJIAdJDQIgAyAjSQ0BDAoLDAoLIAMgEWshDCAaIAdBGGxqIRMgAyERIAYhCiAEIQ4gCyEHIAIhBCAIDAILDAkLICFFDQRBACEEQQIhDiAGIQogDyEMIAIhEyADCyEJIBNFDQMLIAQhAiAMRQ0AQQAhAgNAAkAgJCgC2AEgEyACQRhsaiIGIAwgAmsgECAVICQoAtwBKAIMEQUAIgtFBEAgAkEBaiECDAELAkAgCyACIAtqIgNNBEAgAyAMSw0BIAVB6AFqIQgjAEFAaiIbJAACQCALBEAgBkEUaigCACICIAZBEGooAgAiDSACIA1JGyEYIAIgDSACIA1LGyESIAtBAUYNASAGQRhqIQICQCALQRhsIhZBMGsiHUEYbkEBcQRAIAIhDSAGIQIMAQsgBkEsaigCACILIAZBKGooAgAiDSALIA1LGyIfIBIgEiAfSRshEiALIA0gCyANSRsiCyAYIAsgGEkbIRggBkEwaiENCyAdQRhPBEAgBiAWaiEdA0AgDUEsaigCACIGIA1BKGooAgAiCyAGIAtLGyIfIAJBLGooAgAiFiACQShqKAIAIgIgAiAWSRsiICASIBIgIEkbIhIgEiAfSRshEiAGIAsgBiALSRsiBiAWIAIgAiAWSxsiAiAYIAIgGEkbIgIgAiAGSxshGCANQRhqIQIgDUEwaiINIB1HDQALCyAbIBI2AhQgGyAYNgIQIBIgGE8NAQwVC0HArukAEJYGAAsCQCAQQQAgEiAYRhsgECAYQQJ0aiAVIBhNIBIgFUtyIgIbIgsEQEH5jfYALQAAGkEQQQQQ/AUiBkUNGiAbQQRqQbau6QBBv67pABC3ASAbKAIMIg1BACASIBhrIAIbIgIgAiANSxsiAgRAIBsoAgghDQNAIA0oAgAiHUHBAGshHwJAAkAgCygCACIWQcAATQRAIB9BGkkNAQwCCyAWQdsASSIgIB9BGklzRQ0BAkAgIA0AIBZB/wBNDQEgFhD4AiANKAIAIR0NACAdQcEAayEfDAELIB1B4QBrIR8LIA0gHUEgcyAdIB9BGkkbNgIACyANQQRqIQ0gC0EEaiELIAJBAWsiAg0ACwsgBkEANgIAIAYgGykCBDcCBCAGQQxqIBtBDGooAgA2AgBB+Y32AC0AABpBJEEBEPwFIgIEQCAIIBI2AhwgCCAYNgIYIAhBiD47ASAgCEEkNgIUIAggAjYCECAIQoGAgIDABDcCCCAIIAY2AgQgCEEBNgIAIAJBIGpB8K7pACgAADYAACACQRhqQeiu6QApAAA3AAAgAkEQakHgrukAKQAANwAAIAJBCGpB2K7pACkAADcAACACQdCu6QApAAA3AAAgG0FAayQADAILDBYLDBoLIAUoApABIBRGBEAgBUGQAWpB9JTAABCEAyAFKAKUASEeCyAeIBRBJGxqIgIgBSkC6AE3AgAgAkEgaiAFQYgCaigCADYCACACQRhqIAVBgAJqKQIANwIAIAJBEGogBUH4AWopAgA3AgAgAkEIaiAFQfABaikCADcCACAFIBRBAWoiFDYCmAEgAyECDAILDAoLDAoLIAIgDEkNAAsgBCECDAALAAsMBwsgBSgCkAEhAiAUIAUoAjQgBSgCPCIHa0sEQCAFQTRqIAcgFEEEQSQQ5wIgBSgCPCEHCyAFKAI4IAdBJGxqIB4gFEEkbBCsARogBSAHIBRqNgI8IAJFDQAgHiACQSRsQQQQjQYLAkAgBS0AcCICQQJHBEAgAkEBcUUNASAFQQA2AoABIAVCgICAgMAANwJ4ICIoAgQiB0EIayFHIAVB6AFqrUKAgICAEIQhXyAHICIoAggiJkEYbGohSCAFQawCaiEeIAVBqAJqIR8gBUGkAmohBiAFQdQCaiETIAVBgAJqISUgBUHsAWohISAFQZQBaiExQQAhA0EEIQ5BACEJA0AgRyAJQRhsaiECAkACQAJAAkACQANAIAcgSEYNASACQRhqIQIgCUEBaiEJIActAAAgB0EYaiILIQcNAAsgCUEBayAmSQRAICIoAgwiCigCDCIIQQAgAigCACInIgQgAkEEaigCACIpIgJGGyAIIARBAnRqIAooAhAiCiACSSACIARJciAEIApPciIKGyIIRQ0aIAVBKGoiDCAINgIAIAxBACACIARrIAobNgIEICQoAjhBCGoiIyAFKAIoIiogBSgCLCIgEPcFDQYgIEECdCECAkACfwJAICBBDU8EQEEAIQwgIEH/////A0sgAkH8////B0tyRQRAQfmN9gAtAAAaQQQhDCACQQQQ/AUiBw0CCyAMIAJBmJ7AABDlBQALIDEgKiACEKwBIQdBACEMIAVBADYCkAEgBSAgNgLEASAFQQA2AqACIAVBADYC1AIgAiAHaiEKQQwhAyATIQ4gBgwBCyAFIAcgKiACEKwBIgQ2ApgBIAUgIDYClAEgBSAgNgLEASAFQQE2ApABIAVBADYCoAIgBUEANgLUAiAFQSBqIAVBoAJqQX8gIEEBa2d2QQFqEIsCIAUoAiAiA0GBgICAeEcEQCADRQ0CIAMgBSgCJBDMBgALIAIgBGohCiAFKALUAiIDQQ1JBEAgAyEMIBMhDkEMIQMgBgwBCyAFKAKkAiEMIAYhDiAFKAKoAgshAgJAAkAgDiADIAxLBH8gAiAMQQJ0aiECA0AgByAKRg0CIAIgBygCADYCACACQQRqIQIgB0EEaiEHIAMgDEEBaiIMRw0ACyADBSAMCzYCACAHIApGDQEDQAJ/IAUoAtQCIgNBDU8EQCAFKAKkAiECIAUoAqgCIQ4gBgwBCyADIQIgBiEOQQwhAyATCyEMIAcoAgAhBCACIANGBH8gBUGgAmoQ4gMgBSgCqAIhDiAGIQwgBSgCpAIFIAILQQJ0IA5qIAQ2AgAgDCAMKAIAQQFqNgIAIAogB0EEaiIHRw0ACwwBCyAOIAw2AgALIAVBmAJqIkkgBUHQAmoiNCkCADcDACAFQZACaiJKIAVByAJqIjYpAgA3AwAgBUGIAmoiSyAFQcACaiI3KQIANwMAICUgBUG4AmoiNSkCADcDACAFQfgBaiI4IAVBsAJqIj0pAgA3AwAgBUHwAWoiPiAfKQIANwMAIAUgBSkCoAIiXDcD6AFB0I/2ACkDACFbICQpAzAhWCAhIQcgBSgCnAIiBCECIARBDUkiDUUEQCAFKALwASEHIAUoAuwBIQILAkAgAkUEQEIAIVlCACFaDAELIAJBAnQhDCACrSFZQgAhWkEgIQIDQCAHKAIAIQMCfyACQf8BcSIKQeAATQRAIAVBEGogA60gChCpBCAFQRhqKQMAIFqEIVogBSkDECBZhCFZIAJBIGoMAQsgWiBbhSJaQv////8PgyBYIFmFIlhCIIh+QiCJIFhC/////w+DIFpCIIh+hSFYIAOtIVlCACFaQSALIQIgB0EEaiEHIAxBBGsiDA0ACwsgJCgCJCIRIFogW4UiWkL/////D4MgWCBZhSJYQiCIfkIgiCBaQiCIIFh+hSJYpyI/cSEIIFhCGYgiXkL/AINCgYKEiJCgwIABfiFYIAUoAuwBIS8gBEECdCEOICQoAiAhHSAFKALwASEHIARBDEsNA0EAIRIgCCEDA0AgAyAdaikAACJaIFiFIllCf4UgWUKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyJZUEUEQANAAn8gHUEAIFl6p0EDdiADaiARcWsiDEHEAGxqIgpBEGsoAgAiAkENTwRAIApBQGooAgAhAiAKQTxrKAIADAELIApBQGoLIQogAiAERgRAICEgCiAOEMwERQ0JCyBZQgF9IFmDIllQRQ0ACwsgWiBaQgGGg0KAgYKEiJCgwIB/g1BFDQUgEkEIaiISIANqIBFxIQMMAAsAC0GEiMAAQRFBoKTAABDvBAALIAlBAWsgJkHQpcAAEJUEAAsgBSgCeCEEIAMgBSgCNCAFKAI8IgJrSwRAIAVBNGogAiADQQRBJBDnAiAFKAI8IQILIAUoAjggAkEkbGogDiADQSRsEKwBGiAFIAIgA2o2AjwgBEUNBiAOIARBJGxBBBCNBgwGCyAvQQJ0IQpBACESIAghAwNAIAMgHWopAAAiWiBYhSJZQn+FIFlCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiWVBFBEADQAJ/IB1BACBZeqdBA3YgA2ogEXFrIgxBxABsaiIEQRBrKAIAIgJBDE0EQCAEQUBqDAELIARBQGooAgAhAiAEQTxrKAIACyEEIAIgL0YEQCAHIAQgChDMBEUNBQsgWUIBfSBZgyJZUEUNAAsLIFogWkIBhoNCgIGChIiQoMCAf4NCAFINASASQQhqIhIgA2ogEXEhAwwACwALIFynIUwgBUHQAWoiTSAlQQhqKQIANwMAIAVB2AFqIlIgJUEQaikCADcDACAFQeABaiJTICVBGGopAgA3AwAgBSAlKQIANwPIASAFKAKUASAFKALEASICIAJBDEsiAhshHCAFKAKYASAxIAIbIRsgBSgC/AEhVCAFKAL4ASFVIAUpA/ABIWBBBCEUQQIhDUEAIRUCfwJAAkADQCAbIQNBACEMQQAhB0EAIRZBACEQQQAhLSMAQbACayIaJAAgHCIOQQJ0IQoCQAJAAn8CQAJAA0AgCiAMRg0BAkACQAJAIAMgDGooAgAiAkGYwABrDgIBAQALIAIiBEGH/gNHDQELQSchBAsgDEEEaiEMIAIgBEYNAAsgDkUEQEEEIQNBASEuQQAMAwtB+Y32AC0AABogDkECdCIEQQQQ/AUiAkUNAyAOQQFHBEAgDkF+cSEZIAIhDCADIQoDQAJAAkACQCAKKAIAIgRBmMAAaw4CAQEACyAEQYf+A0cNAQtBJyEECyAMIAQ2AgACQAJAAkAgCkEEaigCACIEQZjAAGsOAgEBAAsgBEGH/gNHDQELQSchBAsgDEEEaiAENgIAIAxBCGohDCAKQQhqIQogGSAHQQJqIgdHDQALCyAOQQFxBEACQAJAAkAgAyAHQQJ0aigCACIMQZjAAGsOAgEBAAsgDEGH/gNHDQELQSchDAsgAiAHQQJ0aiAMNgIACyAaQQA2ApABIBpCgICAgBA3AogBIA4hFgwBCyAaQQA2ApABIBpCgICAgBA3AogBQYCAgIB4IRZBASEuIAMhAkEAIA5FDQEaCyAaQYgBakEAIA5BAUEBEOoCIAIhDANAIBpBiAFqIAwoAgAQwwIgDEEEaiEMIA5BAWsiDg0ACyAaKAKMASEuIBooAogBIS0gAiEDIBooApABCyECIBpBCGogDSAuIAIQvwEgGkGIAWogLiACEC4gGkEkaiANIBooAowBIgIgGigCkAEQvwEgGigCiAEiBARAIAIgBEEBEI0GCyAaICM2AogCIBpBAjYClAIgGiAjKAIoIgQ2ApACIBogIygCJCIKNgKMAiAaQUBrIg4gGkGIAmogGkEIaiIMIBpBlAJqIgIgAhAxIBogBDYCrAIgGiAKNgKoAiAaICM2AqQCIBpBiAFqIgQgGkGkAmogGkEkaiIKIAIgAhAxIBpB1AFqIA4gDBA+IBpB4AFqIAQgChA+IBooAtwBIgKtQhh+IlinIQoCQCBYQiCIpyAKQfz///8HS3INAEEAIQcCQCAKRQRAQQQhEkEAIQQMAQtB+Y32AC0AABpBBCEQIAIhBCAKQQQQ/AUiEkUNAQsgGkEANgL0ASAaIBI2AvABIBogBDYC7AEgGigC5AEhDiAaKALgASErIBooAtgBIQwgGigC1AEhMiACRQ0CIAJBBHQhGCAaKALoAUEEdCEQICMoAjQhViAjKAI4ITBBFSEXIA4hCiAMIQQDQCAQRQ0DIAogBCAELQAIIjMgCi0ACCJCSxsoAgAiAiAwTwRAIAIgMEGYncIAEJUEAAsCfyBWIAJByABsaiIZKAI0IgJBDU8EQCAZKAIEIQIgGSgCCAwBCyAZQQRqCyFXIBogGSkCODcD+AEgGiAZQT1qKQAANwD9ASAEQRBqIQQgCkEQaiEKIBooAuwBIAdGBEBBACFDQQAhRCMAQSBrIhkkAAJAAkAgGkHsAWoiEigCACIPQX9GDQBBBCAPQQF0IkAgD0EBaiJOIEAgTksbIkAgQEEETRsiQK1CGH4iWEIgiFBFDQAgWKciTkH8////B0sNACAZIA8EfyAZIA9BGGw2AhwgGSASKAIENgIUQQQFQQALNgIYIBlBCGpBBCBOIBlBFGoQ2AMgGSgCCEEBRw0BIBkoAhAhRCAZKAIMIUMLIEMgREGoncIAEOUFAAsgGSgCDCEPIBIgQDYCACASIA82AgQgGUEgaiQAIBooAvABIRILIBIgF2oiGUERayACNgIAIBlBFWsgVzYCACAZQQ1rIgIgGikD+AE3AgAgGikA/QEhWCAZIDMgQiAzIEJJGzoAACACQQVqIFg3AAAgGiAHQQFqIgc2AvQBIBBBEGshECAXQRhqIRcgGEEQayIYDQALDAILIBAgCkGIncIAEOUFAAtBBCAEQYTcwQAQ5QUACyAyBEAgDCAyQQR0QQgQjQYLICsEQCAOICtBBHRBCBCNBgsCQCAHQQJJDQAgGigC8AEhAiAHQRVPBEBBACEQIAIiDkEcaigCACIKIAJBBGooAgAiBCAEIApLIgwbQQFqIRIgAigCACEZIAIoAhghBAJAAkACQAJ/AkACQAJAA0AgEkEBayISRQ0BIBAgGWohDyAEIBBqIBBBBGohECgCACIXIA8oAgAiD0YNAAsgDyAXTQ0BDAILIAwNAQtBAiEXQQAgB0EDSQ0BGgNAIAQhDCAKIQQgDiAXQRhsaiIZQQRqKAIAIgogBCAEIApLIg8bQQFqIRIgGSgCACEEQQAhEAJAAkADQCASQQFrIhJFDQEgDCAQaiEZIAQgEGogEEEEaiEQKAIAIhggGSgCACIZRg0ACyAYIBlPDQFBAAwECyAPRQ0AQQAMAwsgF0EBaiIXIAdHDQALDAQLQQIhFwJAIAdBA0kNAANAIAQhGSAKIQwgDiAXQRhsaiIEQQRqKAIAIgogDCAKIAxJG0EBaiESIAQoAgAhBEEAIRACQAJAA0AgEkEBayISRQ0BIBAgGWohDyAEIBBqIBBBBGohECgCACIYIA8oAgAiD0YNAAsgDyAYTQ0DDAELIAogDE8NAgsgF0EBaiIXIAdHDQALDAILQQELIAcgF0cNAUUNAgsgB0ECSQ0BIAdBAXYhBCAHQRhsIA5qQRhrIRADQCAOQQhqIgopAgAhWCAKIBBBCGoiCikCADcCACAKIFg3AgAgEEEUaigCACEKIBBBEGoiDCgCACEZIAwgDkEQaiIMKQIANwIAIA4pAgAhWCAOIBApAgA3AgAgECBYNwIAIAwgGTYCACAOQRRqIAo2AgAgEEEYayEQIA5BGGohDiAEQQFrIgQNAAsMAQsgDiAHQQAgB0EBcmdBAXRBPnMQPwsCQAJAAkACQAJAIAJBLWotAAAiCiACQRVqLQAASSIMRQRAIAdBA0kNASACQcUAaiEOQQIhBANAIApB/wFxIA4tAAAiCksNBCAOQRhqIQ4gByAEQQFqIgRHDQALDAQLIAdBA08NAQtBAiEEDAELIAJBxQBqIQ5BAiEEA0AgCkH/AXEgDi0AACIKTQ0BIA5BGGohDiAHIARBAWoiBEcNAAsMAQsgBCAHRg0AIAIgB0EAIAdBAXJnQQF0QT5zEE0MAQsgDEUgB0ECSXJFBEAgB0EBdiEKIAdBGGwgAmpBGGshBANAIAJBCGoiDikCACFYIA4gBEEIaiIOKQIANwIAIA4gWDcCACAEQRRqKAIAIQ4gBEEQaiIMKAIAIRkgDCACQRBqIgwpAgA3AgAgAikCACFYIAIgBCkCADcCACAEIFg3AgAgDCAZNgIAIAJBFGogDjYCACAEQRhrIQQgAkEYaiECIApBAWsiCg0ACwsLDAELIAdBAUcEQCMAQRBrIRIgAiAHQRhsaiEwIAJBGGohDCACIQoDQCAKIQ4gDCEKIA5BHGooAgAiECAOQQRqKAIAIgQgBCAQSxtBAWohGSAOKAIAIRcgDigCGCEPQQAhDAJAAkACQANAIBlBAWsiGUUNASAMIBdqIRggDCAPaiAMQQRqIQwoAgAiKyAYKAIAIhhGDQALIBggK0sNAQwCCyAEIBBNDQELIBJBCGoiMyAOQShqKQIANwMAIBIgDikCIDcDACAKIA4pAgA3AgAgCkEIaiAOQQhqKQIANwIAIApBEGogDkEQaikCADcCAAJAIA4gAiIERg0AA0AgECAOIgRBFGsoAgAiFyAQIBdJG0EBaiEYIARBGGsiDigCACEMIA8hGQJAAkADQCAYQQFrIhhFDQEgDCgCACErIBkoAgAhMiAZQQRqIRkgDEEEaiEMICsgMkYNAAsgKyAySw0BDAMLIBAgF08NAgsgBCAOKQIANwIAIARBEGogDkEQaikCADcCACAEQQhqIA5BCGopAgA3AgAgAiAORw0ACyACIQQLIAQgEDYCBCAEIA82AgAgBCASKQMANwIIIARBEGogMykDADcCAAsgCkEYaiIMIDBHDQALC0EAIQwgB0EBRwRAIwBBIGshGSACIgQgB0EYbGohECACQRhqIQIgBCEKA0AgAiAKQS1qLQAAIg8gCkEVai0AAEkEQCAZQRVqIhIgAkENaikAADcAACAZQRBqIhcgAkEIaikCADcDACAZIAIpAgA3AwggCi8BLiEYIAwhAgJ/A0AgAiAEaiIKQRhqIAopAgA3AgAgCkEoaiAKQRBqKQIANwIAIApBIGogCkEIaikCADcCACAEIAJFDQEaIAJBGGshAiAPIApBA2stAABJDQALIAIgBGpBGGoLIgIgGSkDCDcCACACQQ1qIBIpAAA3AAAgAkEIaiAXKQMANwIAIApBFmogGDsBACAKQRVqIA86AAALIAxBGGohDCIKQRhqIgIgEEcNAAsLCyAHQeQATwRAIBpB5AA2AvQBCyAFQaACaiIYIBopAuwBNwIAIBhBCGogGkH0AWooAgA2AgAgGigCqAEiAgRAIBooAqwBIAJBARCNBgsgGigCtAEiAgRAIBooArgBIAJBOGxBCBCNBgsCQAJAIBooApgBDgIAAAELIBooApwBIgJFDQAgGigCoAEgAkEBEI0GCyAaKAJgIgIEQCAaKAJkIAJBARCNBgsgGigCbCICBEAgGigCcCACQThsQQgQjQYLAkACQCAaKAJQDgIAAAELIBooAlQiAkUNACAaKAJYIAJBARCNBgsgGigCJCICBEAgGigCKCACQQp0QQQQjQYLIBooAjAiAgRAIBooAjQgAkEBdEEBEI0GCyAaKAIIIgIEQCAaKAIMIAJBCnRBBBCNBgsgGigCFCICBEAgGigCGCACQQF0QQEQjQYLIC0EQCAuIC1BARCNBgsgFkGAgICAeHJBgICAgHhHBEAgAyAWQQJ0QQQQjQYLIBpBsAJqJAAgBSAFKAKoAjYC8AEgBSAFKQKgAjcC6AFBACEMQQAhA0EAIRJBACEXQQAhDiMAQRBrIhAkACAFQegBaiIuKAIIIgdBAnQhAgJAAn8CQAJAIAdB/////wNLIAJB/P///wdLcg0AAkAgAkUEQEEEIQ8MAQtB+Y32AC0AABpBBCEDIAchDiACQQQQ/AUiD0UNAQsgECAPNgIIIBAgDjYCBCAuKAIEIRkCQAJAAkAgBwRAQQEhGiAHQQFHBEACfyAZKAIcIgQgGSgCBCIDTwRAIAMhAiAEIQMgGQwBC0EAIRpBASEXIAQhAiAZQRhqCyEtIAdBGGwhKyAHQQJHBEAgK0HIAGshMCArQTBrITNBAiEKA0ACQCASIBlqIRYgEiAwRgRAIAIgFkE0aigCACIESwRAIAohFwwCCyAaIAogAyAESxshGgwBCwJAIBZBzABqKAIAIgQgFkE0aigCACIMTwRAIAogFyACIAxLIjIbIRcgFkEwaiAtIDIbIS0gDCACIDIbIQIgAyAESw0BIApBAXIhGiAEIQMMAQsCQCACIARNBEAgAyAMTQ0BDAILIApBAWohFyAWQcgAaiEtIAMgDEsEQCAEIQIMAgsgBCECCyAKIRogDCEDCyAKQQJqIQogMyASQTBqIhJHDQELCyAXIBpGDQULIAcgF00NAiAPIBkgF0EYbGo2AgAgEEEBNgIMIAcgGk0NAyAOQQFGBH8gEEEEakGMp+kAEJMDIBAoAggFIA8LIBkgGkEYbGo2AgRBAgwHCyAPIBk2AgBBASEMCyAQIAw2AgwMBgsgFyAHQeym6QAQlQQACyAaIAdB/KbpABCVBAALIAcgGksNASAaIAdBnKfpABCVBAALIAMgAkHcpukAEOUFAAsgDyAZIBpBGGxqNgIAQQELIQwgGSAraiECIBAgDDYCDEEAIRIgGSEDA0ACQANAIBIgF0cgEiAaR3ENASASQQFqIRIgA0EYaiIDIAJHDQALIBAoAgghDwwCCyAQKAIEIAxGBEAgEEEEaiAMQQFBBEEEEOoCCyASQQFqIRIgECgCCCIPIAxBAnRqIAM2AgAgECAMQQFqIgw2AgwgA0EYaiIDIAJHDQALCwJAAkACQCAMQQJNBEAgDyAMQQJ0IgJqIQoMAQsgDygCCCECIA8gDygCADYCCCAPIAI2AgAgDyAMQQJ0IgJqIQpBAyEDIAxBA0YNASACQQxrIRcgD0EMaiESA0AgEigCAC0ADyIEQQFNIARBAXFxRQRAIANBAWohAyASQQRqIRIgF0EEayIXDQEMAgsLAkAgDEEDTwRAIAMgDE8NASAPKAIIIQMgDyASKAIANgIIIBIgAzYCAAwDC0ECIAxBrKfpABCVBAALIAMgDEGsp+kAEJUEAAsgDEECSQ0BCyAMQRVPBEBBACEEIwBBgCBrIg4kAAJAAkAgDEEBdiIDQYCJ+gAgDCAMQYCJ+gBPGyIHIAMgB0sbIgdBgQhPBEAgDEEASCAHQQJ0IgNB/P///wdLcg0CQfmN9gAtAAAaQQQhBCADQQQQ/AUiFkUNAiAPIAwgFiAHIAxBwQBJEFogFiADQQQQjQYMAQsgDyAMIA5BgAggDEHBAEkQWgsgDkGAIGokAAwCCyAEIANB5M/BABDlBQALQQAhByAMQQFHBEAgDyAMQQJ0aiESIA9BBGohDiAPIQMDQCAOIAMoAgQiFi0ADUEBcyADKAIAIg4tAA1BAXNJBEAgByEDAn8DQCADIA9qQQRqIA42AgAgDyADRQ0BGiAWLQANQQFzIANBBGsiAyAPaiIXKAIAIg4tAA1BAXNJDQALIBdBBGoLIBY2AgALIAdBBGohByIDQQRqIg4gEkcNAAsLC0EAIQMCQAJAIAJB/P///wdLIAxBA3QiBEH8////B0tyDQAgECgCBCEOQQAhFwJ/IARFBEBBBCECQQAMAQtB+Y32AC0AABpBBCEDIARBBBD8BSICRQ0BIAxB/////wNxCyEEIAwEQCACIRIgDyEDA0AgEiADKAIAKQIANwIAIBJBCGohEiAXQQFqIRcgA0EEaiIDIApHDQALCyAOBEAgDyAOQQJ0QQQQjQYLIBggFzYCCCAYIAI2AgQgGCAENgIAIC4oAgAiAgRAIBkgAkEYbEEEEI0GCyAQQRBqJAAMAQsgAyAEQeCiwQAQ5QUACyAFKAKoAiICrUI4fiJYpyEMIFhCIIinIAxB/P///wdLcg0CIAUoAqQCIQQgBSgCoAIhD0EAIQ4CQCAMRQRAQQQhCkEAIQMMAQtB+Y32AC0AABogAiEDQQQgDEEEEPwFIgpFDQQaCyACBEAgBCACQQN0aiEWIAohByAEIQIDQCACKAIEIgxBAnQhGSACKAIAIRAgBwJ/IAxBDU8EQEEAIRIgDEH/////A0sgGUH8////B0tyDQVB+Y32AC0AABpBBCESIBlBBBD8BSIXRQ0FIAUgFyAQIBkQrAE2AqQCIAUgDDYCoAIgBSAMNgLQAkEBDAELIAVBoAJqIBAgGRCsARogBSAMNgLQAkEACzYCACAHQQRqIAUpAqACNwIAIAdBDGogHykCADcCACAHQRRqID0pAgA3AgAgB0EcaiA1KQIANwIAIAdBJGogNykCADcCACAHQSxqIDYpAgA3AgAgB0E0aiA0KAIANgIAIAdBOGohByAOQQFqIQ4gAkEIaiICIBZHDQALCyAPBEAgBCAPQQN0QQQQjQYLIBUEQCAUIBVBOGxBBBCNBgsgDUH/AXFBA00EQCANQQFqIQ0gAyEVIAohFCAORQ0BCwsgCCAdaikAAEKAgYKEiJCgwIB/gyJZUARAQQghBwNAIAcgCGohAiAHQQhqIQcgHSACIBFxIghqKQAAQoCBgoSIkKDAgH+DIllQDQALCyAdIFl6p0EDdiAIaiARcSIHaiwAACICQQBOBEAgHSAdKQMAQoCBgoSIkKDAgH+DeqdBA3YiB2otAAAhAgsCQCACQQFxRQ0AICQoAigNACAkQTBqIRZBACECQQAhFCMAQUBqIg0kAAJAICRBIGoiDygCDCIMQX9HBEACQCAPKAIEIhkgGUEBaiIQQQN2IghBB2wgGUEISRsiFUEBdiAMTQRAIA1BKGpBxAAgDCAVIAwgFUsbQQFqELQCIA0oAiwhFSANKAIoIgdFDQEgDSgCMCESIA8oAgAhESAMBEAgB0EIaiEaIBEpAwBCf4VCgIGChIiQoMCAf4MhXCAWKQMAIVogESEIIAwhBANAIFxQBEADQCAUQQhqIRQgCCkDCCAIQQhqIQhCgIGChIiQoMCAf4MiWEKAgYKEiJCgwIB/UQ0ACyBYQoCBgoSIkKDAgH+FIVwLAn8gESBceqdBA3YgFGoiHEG8f2xqIgJBEGsoAgAiF0ENTwRAIAJBQGooAgAhFyACQTxrKAIADAELIAJBQGoLIQJB0I/2ACkDACFdAkAgF0UEQEIAIVkgWiFYQgAhWwwBCyAXQQJ0IRggF60hWUIAIVtBICEXIFohWANAIAIoAgAhFgJ/IBdB/wFxIh1B4ABNBEAgDUEYaiAWrSAdEKkEIA1BIGopAwAgW4QhWyANKQMYIFmEIVkgF0EgagwBCyBbIF2FIltC/////w+DIFggWYUiWEIgiH5CIIkgWEL/////D4MgW0IgiH6FIVggFq0hWUIAIVtBIAshFyACQQRqIQIgGEEEayIYDQALCyAHIBUgWyBdhSJbQv////8PgyBYIFmFIlhCIIh+QiCIIFtCIIggWH6FpyIWcSIXaikAAEKAgYKEiJCgwIB/gyJZUARAQQghAgNAIAIgF2ohFyACQQhqIQIgByAVIBdxIhdqKQAAQoCBgoSIkKDAgH+DIllQDQALCyBcQgF9IFyDIVwgByBZeqdBA3YgF2ogFXEiAmosAABBAE4EQCAHKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgsgAiAHaiAWQRl2IhY6AAAgGiACQQhrIBVxaiAWOgAAIAcgAkF/c0HEAGxqIBEgHEF/c0HEAGxqQcQAEKwBGiAEQQFrIgQNAAsLIA8gFTYCBCAPIAc2AgAgDyASIAxrNgIIIBlFDQEgGSAQQcQAbEEHakF4cSICakEJaiIERQ0BIBEgAmsgBEEIEI0GDAELIA8oAgAhBAJAIAggEEEHcUEAR2oiCEUNACAIQQFHBEAgCEH+////A3EhGANAIAIgBGoiESARKQMAIlhCf4VCB4hCgYKEiJCgwIABgyBYQv/+/fv379+//wCEfDcDACARQQhqIhEgESkDACJYQn+FQgeIQoGChIiQoMCAAYMgWEL//v379+/fv/8AhHw3AwAgAkEQaiECIBhBAmsiGA0ACwsgCEEBcUUNACACIARqIgIgAikDACJYQn+FQgeIQoGChIiQoMCAAYMgWEL//v379+/fv/8AhHw3AwALAkACQCAQQQhPBEAgBCAQaiAEKQAANwAADAELIARBCGogBCAQEM8GGiAQRQ0BCyAEQQhqIRQgFikDACFaIAQhCEEAIQIDQAJAIAQgAiIRaiIWLQAAQYABRw0AIAQgAkF/c0HEAGxqIRogBCACQbx/bGoiAkE8ayEcIAJBQGohByACQRBrIR0CQANAQdCP9gApAwAhXCAHIQIgHSgCACIXQQ1PBEAgAigCACEXIBwoAgAhAgsCQCAXRQRAQgAhWSBaIVhCACFbDAELIBdBAnQhGCAXrSFZQgAhW0EgIRcgWiFYA0AgAigCACEQAn8gF0H/AXEiEkHgAE0EQCANQQhqIBCtIBIQqQQgDUEQaikDACBbhCFbIA0pAwggWYQhWSAXQSBqDAELIFsgXIUiW0L/////D4MgWCBZhSJYQiCIfkIgiSBYQv////8PgyBbQiCIfoUhWCAQrSFZQgAhW0EgCyEXIAJBBGohAiAYQQRrIhgNAAsLIBkgWyBchSJbQv////8PgyBYIFmFIlhCIIh+QiCIIFtCIIggWH6FpyIScSIQIRcgBCAQaikAAEKAgYKEiJCgwIB/gyJZUARAQQghAgNAIAIgF2ohFyACQQhqIQIgBCAXIBlxIhdqKQAAQoCBgoSIkKDAgH+DIllQDQALCyAEIFl6p0EDdiAXaiAZcSICaiwAAEEATgRAIAQpAwBCgIGChIiQoMCAf4N6p0EDdiECCyACIBBrIBEgEGtzIBlxQQhPBEAgAiAEaiIQLQAAIBAgEkEZdiIQOgAAIBQgAkEIayAZcWogEDoAAEH/AUYNAkG8fyEYIAQgAkG8f2xqIRIDQCAIIBhqIgItAAAhFyACIBIgGGoiEC0AADoAACAQIBc6AAAgAkEBaiIXLQAAIRsgFyAQQQFqIhctAAA6AAAgFyAbOgAAIAJBAmoiFy0AACEbIBcgEEECaiIXLQAAOgAAIBcgGzoAACACQQNqIgItAAAhFyACIBBBA2oiAi0AADoAACACIBc6AAAgGEEEaiIYDQALDAELCyAWIBJBGXYiAjoAACAUIBFBCGsgGXFqIAI6AAAMAQsgFkH/AToAACAUIBFBCGsgGXFqQf8BOgAAIAQgAkF/c0HEAGxqIBpBxAAQrAEaCyARQQFqIQIgCEHEAGshCCARIBlHDQALCyAPIBUgDGs2AggLIA1BQGskAAwBCyANQQA2AjggDUEBNgIsIA1B/KfAADYCKCANQgQ3AjAgDUEoakHoqMAAEK4FAAsgJCgCICIdICQoAiQiESA/cSICaikAAEKAgYKEiJCgwIB/gyJZUARAQQghBwNAIAIgB2ohAiAHQQhqIQcgHSACIBFxIgJqKQAAQoCBgoSIkKDAgH+DIllQDQALCyAdIFl6p0EDdiACaiARcSIHaiwAACICQQBIDQAgHSAdKQMAQoCBgoSIkKDAgH+DeqdBA3YiB2otAAAhAgsgByAdaiBep0H/AHEiBDoAACAdIAdBCGsgEXFqQQhqIAQ6AAAgJCAkKAIoIAJBAXFrNgIoICQgJCgCLEEBajYCLCAdIAdBvH9saiICQcQAayBMNgIAIAJBQGogLzYCACACQTxrIGA3AgAgAkE0ayBVNgIAIAJBDGsgAzYCACACQQhrIAo2AgAgAkEEayAONgIAIAJBLGsiA0EYaiBTKQMANwIAIANBEGogUikDADcCACADQQhqIE0pAwA3AgAgAyAFKQPIATcCACACQTBrIFQ2AgAMBAsgEiAZQZiewAAQ5QUAC0EACyAMQfSHwAAQ5QUACyANRQRAIAcgDkEEEI0GCyAMQcQAbCAdaiECCyACQQRrKAIAIgStQjh+IlinIQNBACEMAkACQCBYQiCIpyADQfz///8HS3INAAJAIANFBEBBBCERDAELIAJBCGsoAgAhI0H5jfYALQAAGkEEIQwgA0EEEPwFIhFFDQEgBEUNACAjIARBOGxqIRlBACEdIAQhCANAIBkgI0YNAQJ/ICMoAjQiAkEMTQRAQQAhDCAFQQA2AqACIAVBADYC1AIgI0EEaiIHIAJBAnRqIQpBDCEDIBMhDiAGDAELICMoAgghByAjKAIEIQJBACEMIAVBADYCoAIgBUEANgLUAiAHIAJBAnRqIQoCQCACQQ1JDQAgBUEIaiAFQaACakF/IAJBAWtndkEBahCLAgJAIAUoAggiAkGBgICAeEcEQCACRQ0BIAIgBSgCDBDMBgALIAUoAtQCIgNBDUkEQCADIQwMAgsgBSgCpAIhDCAGIQ4gBSgCqAIMAgtBhIjAAEERQaCkwAAQ7wQACyATIQ5BDCEDIAYLIQIgESAdQThsaiENAkACQCAOIAMgDEsEfyACIAxBAnRqIQIDQCAHIApGDQIgAiAHKAIANgIAIAJBBGohAiAHQQRqIQcgAyAMQQFqIgxHDQALIAMFIAwLNgIAIAcgCkYNAQNAAn8gBSgC1AIiA0ENTwRAIAUoAqQCIQIgBSgCqAIhDiAGDAELIAMhAiAGIQ5BDCEDIBMLIQwgBygCACEPIAIgA0YEfyAFQaACahDiAyAFKAKoAiEOIAYhDCAFKAKkAgUgAgtBAnQgDmogDzYCACAMIAwoAgBBAWo2AgAgCiAHQQRqIgdHDQALDAELIA4gDDYCAAsgHUEBaiEdICNBOGohIyBJIDQpAgAiWDcDACBKIDYpAgAiWjcDACBLIDcpAgAiWTcDACAlIDUpAgAiWzcDACA4ID0pAgAiXDcDACA+IB8pAgAiXTcDACAFIAUpAqACIl43A+gBIA1BMGogWDcCACANQShqIFo3AgAgDUEgaiBZNwIAIA1BGGogWzcCACANQRBqIFw3AgAgDUEIaiBdNwIAIA0gXjcCACAIQQFrIggNAAsLIAUoAsQBIgJBDU8EQCAFKAKYASACQQJ0QQQQjQYLIAQiFEEETwRAIBFB3AFqIQcgBEEDayECA0AgBygCACIDQQ1PBEAgB0EsaygCACADQQJ0QQQQjQYLIAdBOGohByACQQFrIgINAAtBAyEUCyAgRQ0BICooAgAiAkHBAGtBGk8EQCACQYABSQ0CIAIQ+AJFDQILIBRBOGwhAiARQQRqIQcgESEMA0AgAkUNAiAHIQMgDCgCNCIOQQ1PBEAgAygCACEOIANBBGooAgAhAwsCQCAORQ0AIAVB6AFqIAMoAgAQ6AEgHyAFKQLoATcCACAfQQhqID4oAgAiCjYCACAFQQA2AqACIAVBA0ECQQEgBSgC7AEbIAobNgKkAiAFQaACahD/BCIKQYCAxABHBEAgAyAKNgIADAELQeyBwAAQlgYACyAMQThqIQwgAkE4ayECIAdBOGohBwwACwALIAwgA0GonsAAEOUFAAsgFEE4bCEDIBEiByECAkACQCAUBEAgAyEKA0AgH0EwaiAHQTBqKQIANwIAIB8gBykCADcCACAfQShqIAdBKGopAgA3AgAgH0EgaiAHQSBqKQIANwIAIB9BGGogB0EYaikCADcCACAfQRBqIAdBEGopAgA3AgAgH0EIaiAHQQhqKQIANwIAIB4hFCAFKALcAiIZIQxBACEcIBlBDUkiD0UEQCAFKAKwAiEUIAUoAqwCIQwLIAxB/////wNLIAxBAnQiDUH8////B0tyDQICQCANRQRAQQQhDkEAIQgMAQtB+Y32AC0AABpBBCEcIAwhCCANQQQQ/AUiDkUNAwsgDiAUIA0QrAEhDiAPRQRAIAUoArACIBlBAnRBBBCNBgsgB0E4aiEHIAIgDDYCDCACIA42AgggAiAINgIEIAJBADYCACACQRBqIQIgCkE4ayIKDQALCyADIBFqIgMgB2tBOG4hDCADIAdHBEADQCAHQTRqKAIAIgNBDU8EQCAHQQhqKAIAIANBAnRBBBCNBgsgB0E4aiEHIAxBAWsiDA0ACwsgBEE4bCEIIBEhDCAERQ0BIAggCEFwcSIDRg0BIANFBEBBBCEMIAhFDQIgESAIQQQQjQYMAgsgESAIQQQgAxDrBSIMDQFBBCADEMwGAAsgHCANQZiewAAQ5QUACyAFQegBaiEOIwBBEGsiBCQAAkAgIigCDCIDKAIMIgpBACAnIClGIgcbIAogJ0ECdGogAygCECIDIClJICcgKUtyIAMgJ01yIgMbIgoEQCAEQQA2AgwgBEKAgICAEDcCBCADIAdyRQRAIARBBGpBACApICdrIgNBAUEBEOoCA0AgBEEEaiAKKAIAEMMCIApBBGohCiADQQFrIgMNAAsLIA4gBCkCBDcCACAOQQhqIARBDGooAgA2AgAgBEEQaiQADAELDBULIAVBAjYCpAIgBUGMg8AANgKgAiAFIF83A5ABIAVCATcCrAIgBSAFQZABajYCqAIgBUGEAWogBUGgAmoQnwIgBSgC6AEiAwRAIAUoAuwBIANBARCNBgsgBSgCgAEiBCAFKAJ4RgRAIAVB+ABqQZyDwAAQhAMLIAUoAnwiDiAEQSRsaiIDIAIgEWtBBHY2AgggAyAMNgIEIAMgCEEEdjYCACADIAUpAoQBNwIMIANBgP4AOwEgIAMgKTYCHCADICc2AhggA0EUaiAFQYwBaigCADYCACAFIARBAWoiAzYCgAEgCyEHDAALAAsMBgsgOiAFKQI0NwIAIDpBCGogBUE8aigCADYCACAFQeACaiQADBQLIAkgI0HgpcAAEJMGAAtB4KXAABCXBQALIAcgCUHgpcAAEJUGAAsgAiADQeSUwAAQlQYACyADIAxB5JTAABCTBgALQeyAwAAQlgYAC0H0qOkAEJcFAAtBBEEIEMwGAAtBBEEEEMwGAAtBtKnpABCXBQALIBhBAjYCHCAYQdiawgA2AhggGEICNwIkIBggGEEUaq1CgICAgMAAhDcDOCAYIBhBEGqtQoCAgIDAAIQ3AzAgGCAYQTBqNgIgIBhBGGpBgJvCABCuBQALIBtBAjYCHCAbQdiawgA2AhggG0ICNwIkIBsgG0EUaq1CgICAgMAAhDcDOCAbIBtBEGqtQoCAgIDAAIQ3AzAgGyAbQTBqNgIgIBtBGGpBgJvCABCuBQALQQFBJEHIzsEAEOUFAAtBAUEuQcjOwQAQ5QUACyALIAtB0ABqNgJAIAtBOGpBgJvCABCuBQALIAMgCkH0qOkAEJMGAAtBBEEQEMwGAAtBkJvCABCWBgALIAQgA0H0qOkAEJUGAAtBBEEgEMwGAAsgOhCiAUEAIQRBACEDIDooAggiAgRAIDooAgQhCQJAIDsoAgxFBEAgAiEKA0AgCSAiEDUaIAlBJGohCSAKQQFrIgoNAAsMAQsgOygCACIMQQhrIREgOygCBCEIIDspAxAhWgNAIAkgA0EkbGoiBCAiEDUhWSAIQdCP9gApAwAiWEL/////D4MgWSBahSJbQiCIfkIgiCBYQiCIIFt+hSJYp3EhCiBYQhmIQv8Ag0KBgoSIkKDAgAF+IVxBACEGAkADQAJAIAogDGopAAAiWyBchSJYQn+FIFhCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiWFBFBEADQCARIFh6p0EDdiAKaiAIcUEDdGspAwAgWVENAiBYQgF9IFiDIlhQRQ0ACwsgWyBbQgGGg0KAgYKEiJCgwIB/g1BFDQIgBkEIaiIGIApqIAhxIQoMAQsLIAQQ2wNBASEEIANBAWoiAyACRg0CA0AgCSADQSRsaiIOICIQNSFZQQAhBiAIQdCP9gApAwAiWEL/////D4MgWSBahSJbQiCIfkIgiCBYQiCIIFt+hSJYp3EhCiBYQhmIQv8Ag0KBgoSIkKDAgAF+IVwCQAJAA0ACQCAKIAxqKQAAIlsgXIUiWEJ/hSBYQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIlhQRQRAA0AgESBYeqdBA3YgCmogCHFBA3RrKQMAIFlRDQIgWEIBfSBYgyJYUEUNAAsLIFsgW0IBhoNCgIGChIiQoMCAf4NQRQ0CIAZBCGoiBiAKaiAIcSEKDAELCyAOENsDIARBAWohBAwBCyAJIAMgBGtBJGxqIgogDikCADcCACAKQSBqIA5BIGooAgA2AgAgCkEYaiAOQRhqKQIANwIAIApBEGogDkEQaikCADcCACAKQQhqIA5BCGopAgA3AgALIANBAWoiAyACRw0ACwwCC0EAIQQgA0EBaiIDIAJHDQALCyA6IAIgBGs2AggLICgoAjAiAq1CNH4iWKchBEEAIQkgWEIgiKcgBEH8////B0tyDQMgKCgCLCEOICgoAighEQJAIARFBEBBBCEDQQAhBgwBC0H5jfYALQAAGkEEIQkgAiEGIARBBBD8BSIDRQ0ECyACBEAgAkEkbCEKICgoAgwhByADIQIgDiEEA0AgKEHYAGoiCyAEQSBqKAIANgIAIChB0ABqIg0gBEEYaikCADcDACAoQcgAaiIZIARBEGopAgA3AwAgKEFAayIPIARBCGopAgA3AwAgKCAEKQIANwM4IAcoAhAiCEECdCEMIAhB/////wNLIAxB/P///wdLcg0GIAcoAgwhEAJAIAxFBEBBBCETQQAhCQwBC0H5jfYALQAAGiAIIQlBBCAMQQQQ/AUiE0UNCBoLIARBJGohBCATIBAgDBCsASEMIAJBMGogUToAACACQSxqIAg2AgAgAkEoaiAMNgIAIAJBJGogCTYCACACQSBqIAsoAgA2AgAgAkEYaiANKQMANwIAIAJBEGogGSkDADcCACACQQhqIA8pAwA3AgAgAiAoKQM4NwIAIAJBNGohAiBGQQFqIUYgCkEkayIKDQALCyARBEAgDiARQSRsQQQQjQYLIEUgRjYCCCBFIAM2AgQgRSAGNgIAICgoAhwiAiACKAIAIgJBAWs2AgAgAkEBRgRAIChBHGoQzgQLICgoAhAiAgRAICgoAhQgAkEYbEEIEI0GCyA5KAIAIgIEQCA8IAIRAgALIDkoAgQiAgRAIDwgAiA5KAIIEI0GCyAoKAIMIgIgAigCACICQQFrNgIAIAJBAUYEQCAoQQxqEM4ECyBPKAIAIgIEQCBQIAJBARCNBgsgKEHgAGokAAwGCwALQQFBARDMBgALQQRBFBDMBgALIAkgBEH0h8AAEOUFAAtBAAsgDEGYnsAAEOUFAAsgAUEANgIAIEEgQSgCAEEBayIBNgIAIAFFBEAgLEEUahCABQsCQCAsKAIkIgIgLCgCLCIBTQRAICwoAighAgwBCyACQTRsIQMgLCgCKCEEIAFFBEBBBCECIAQgA0EEEI0GDAELIAQgA0EEIAFBNGwiAxDrBSICRQ0FCyMAQUBqIgokACACIQMCQAJAAkAgASIEBEAgBEE0bCEGIAIhAQNAIApBOGoiCCABQTBqKAIANgIAIApBMGoiDiABQShqKQIANwMAIApBKGoiDCABQSBqKQIANwMAIApBIGoiESABQRhqKQIANwMAIApBGGoiEyABQRBqKQIANwMAIApBEGoiByABQQhqKQIANwMAQfmN9gAtAAAaIAogASkCADcDCEHAAEEEEPwFIglFDQIgCUEANgIIIAlCgYCAgBA3AgAgCSAKKQMINwIMIAlBFGogBykDADcCACAJQRxqIBMpAwA3AgAgCUEkaiARKQMANwIAIAlBLGogDCkDADcCACAJQTRqIA4pAwA3AgAgCUE8aiAIKAIANgIAIAMgCUEIahAJNgIAIANBBGohAyABQTRqIQEgBkE0ayIGDQALCwJAIAMgAmsiCUECdiIGIARBDWxPBEAgAiEBDAELIARBNGwhBCACIANGBEBBBCEBIAIgBEEEEI0GDAELIAIgBEEEIAkQ6wUiAUUNAgsgLCAGNgIEICwgATYCACAKQUBrJAAMAgtBBEHAABDMBgALQQQgCUGMn8AAEOUFAAsgLCgCBCEBIAAgLCgCADYCACAAIAE2AgQgLEEwaiQADwtBgNDAAEEZEK0GAAsQrgYLAAsQrwYAC0EEIANBvJfAABDlBQAL0wIBCH8jAEEgayIBJAAgACgCACIEKAIAIQIgBEEANgIAIAIoAhghBCACQQA2AhggBARAIAFBCGogBBECAAJAIAAoAgQiBygCACIFKAIARQ0AIAUoAgwhBCAFKAIQIgAEQCAEIQIDQAJAIAIoAgBFDQAgAkEEaigCACIGQX9GDQAgBiAGKAIEIgNBAWs2AgQgA0EBRw0AIAJBCGooAgAiAygCBEEEIAMoAggiAyADQQRNGyIDakEHakEAIANrcSIIRQ0AIAYgCCADEI0GCyACQQxqIQIgAEEBayIADQALCyAFKAIIIgBFDQAgBCAAQQxsQQQQjQYLIAcoAgAiAEEBNgIAIAAgASkCCDcCBCAAQQxqIAFBEGopAgA3AgAgAUEgaiQAQQEPCyABQQA2AhggAUEBNgIMIAFB5JDBADYCCCABQgQ3AhAgAUEIakHMkcEAEK4FAAvHAgECfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEANgIMAn8gAUGAEE8EQCABQYCABE8EQCACIAFBP3FBgAFyOgAPIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAwwBCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgshASABIAAoAgAgACgCCCIDa0sEQCAAIAMgAUEBQQEQ6gIgACgCCCEDCyAAKAIEIANqIAJBDGogARCsARogACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIABB9M/BABC2AwsgACADQQFqNgIIIAAoAgQgA2ogAToAAAsgAkEQaiQAC+8DAQZ/IwBBEGsiAyQAAkAgAUGAAU8EQCADQQA2AgwCfyABQYAQTwRAIAFBgIAETwRAIAMgAUE/cUGAAXI6AA8gAyABQRJ2QfABcjoADCADIAFBBnZBP3FBgAFyOgAOIAMgAUEMdkE/cUGAAXI6AA1BBAwCCyADIAFBP3FBgAFyOgAOIAMgAUEMdkHgAXI6AAwgAyABQQZ2QT9xQYABcjoADUEDDAELIAMgAUE/cUGAAXI6AA0gAyABQQZ2QcABcjoADEECCyEBIAEgACgCACAAKAIIIgJrSwRAIAAgAiABEO4CIAAoAgghAgsgACgCBCACaiADQQxqIAEQrAEaIAAgASACajYCCAwBCyAAKAIIIgYgACgCAEYEQCMAQSBrIgIkAAJAAn9BACAAKAIAIgRBf0YNABpBAEEIIARBAXQiBSAEQQFqIgcgBSAHSxsiBSAFQQhNGyIFQQBIDQAaIAIgBAR/IAIgBDYCHCACIAAoAgQ2AhRBAQVBAAs2AhggAkEIakEBIAUgAkEUahDYAyACKAIIQQFHDQEgAigCECEAIAIoAgwLIABBjN/yABDlBQALIAIoAgwhBCAAIAU2AgAgACAENgIEIAJBIGokAAsgACAGQQFqNgIIIAAoAgQgBmogAToAAAsgA0EQaiQAQQALvgIBBn8jAEEQayIEJABBCiEDAkAgAEGQzgBJBEAgACEFDAELA0AgBEEGaiADaiIGQQRrIAAgAEGQzgBuIgVBkM4AbGsiB0H//wNxQeQAbiIIQQF0Qbir8wBqLwAAOwAAIAZBAmsgByAIQeQAbGtB//8DcUEBdEG4q/MAai8AADsAACADQQRrIQMgAEH/wdcvSyAFIQANAAsLAkAgBUHjAE0EQCAFIQAMAQsgA0ECayIDIARBBmpqIAUgBUH//wNxQeQAbiIAQeQAbGtB//8DcUEBdEG4q/MAai8AADsAAAsCQCAAQQpPBEAgA0ECayIDIARBBmpqIABBAXRBuKvzAGovAAA7AAAMAQsgA0EBayIDIARBBmpqIABBMHI6AAALIAIgAUEBQQAgBEEGaiADakEKIANrEKABIARBEGokAAvxAwEGfyMAQRBrIgMkAAJAIAFBgAFPBEAgA0EANgIMAn8gAUGAEE8EQCABQYCABE8EQCADIAFBP3FBgAFyOgAPIAMgAUESdkHwAXI6AAwgAyABQQZ2QT9xQYABcjoADiADIAFBDHZBP3FBgAFyOgANQQQMAgsgAyABQT9xQYABcjoADiADIAFBDHZB4AFyOgAMIAMgAUEGdkE/cUGAAXI6AA1BAwwBCyADIAFBP3FBgAFyOgANIAMgAUEGdkHAAXI6AAxBAgshASABIAAoAgAgACgCCCICa0sEQCAAIAIgAUEBQQEQ5wIgACgCCCECCyAAKAIEIAJqIANBDGogARCsARogACABIAJqNgIIDAELIAAoAggiBiAAKAIARgRAIwBBIGsiAiQAAkACf0EAIAAoAgAiBEF/Rg0AGkEAQQggBEEBdCIFIARBAWoiByAFIAdLGyIFIAVBCE0bIgVBAEgNABogAiAEBH8gAiAENgIcIAIgACgCBDYCFEEBBUEACzYCGCACQQhqQQEgBSACQRRqENgDIAIoAghBAUcNASACKAIQIQAgAigCDAsgAEHon8AAEOUFAAsgAigCDCEEIAAgBTYCACAAIAQ2AgQgAkEgaiQACyAAIAZBAWo2AgggACgCBCAGaiABOgAACyADQRBqJAALywIBBn8gAkEYbCEGAkACfyACRQRAIAEMAQsCfwJAA0ACQAJAIAEgBGoiBS0AAEEBaw4JAAEBAQEBAQEDAQsgBUEEaigCAEEGa0EDSQ0CCyADQQFqIQMgBiAEQRhqIgRHDQALQQAMAQsgA0EBaiEHIAIgA00NAiABCyEFIAJBGGwhBEEAIQMCQANAAkACQCABIARqIghBGGstAABBAWsOCQABAQEBAQEBAwELIAhBFGsoAgBBBmtBA0kNAgsgA0EBaiEDIARBGGsiBA0ACyACIQMgAQwBCyAIQQAgAiADayACSRsLIQQgACACNgI0IAAgATYCMCAAQQA2AiwgACABIAZqNgIoIAAgATYCJCAAQQA2AhggACAHNgIUIAAgBTYCECAAQQE2AgwgACADNgIIIAAgBDYCBCAAQQE2AgAPCyAHIAJBpKnpABCTBgALxAIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQQYgAUEIdmciA2t2QQFxIANBAXRrQT5qCyICNgIcIAJBAnRByJD2AGohBEEBIAJ0IgNB5JP2ACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQeST9gBB5JP2ACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqQRBqIgQoAgAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgATYCCA8LIAQgADYCACAAIAM2AhggACAANgIMIAAgADYCCAvJAgEDfyMAQSBrIgQkAAJAIAFFDQAgAUEESQRAIAAoAlwiBSAAKAJURgRAIABB1ABqQbCR8AAQjQMLIAAgBUEBajYCXCAAKAJYIAVBDGxqIgYgATYCCCAGQdyB8AA2AgQgBkEBOgAAIAQgAjYCHCAEIAI2AhggBCAFNgIMIARBEzoACCAAQZgBaiAEQQhqEI4DGgwBC0HcgfAAQQNBACABQYCC8AAQ+QUACwJAAkAgA0ECayIBIAAoApQBIgVJBEAgAEGYAWohBSAAKAKQASABai0AAEENRw0BIAQgATYCHCAEIAI2AhggBEEVOgAIIAUgBEEIahCOAxogBEEVOgAIIAQgAzYCHCAEIANBAWs2AhgMAgsgASAFQZCC8AAQlQQACyAEIAM2AhwgBCACNgIYIARBFToACAsgBSAEQQhqEI4DGiAEQSBqJAALxwIBBX8jAEHQAGsiASQAIAAoAggiBCgCMCIDQQNxIgJBAkcEQANAAkACQAJAIAJBAUcgA0ECdkH/////AHEiAkEBR3JFBEAgBCADQYCAgIB8cUEDciAEKAIwIgIgAiADRiIFGzYCMCACIQMgBQ0BDAMLIAQgAkECdEEEayADQYOAgIB8cXIgBCgCMCICIAIgA0YiBRs2AjAgAiEDIAVFDQIMAQsgACgCDCAAKAIQELsBCyABQdAAaiQADwsgA0EDcSICQQJHDQALCyABQQI2AgwgASABQQxqrUKAgICAsAeENwMoIAFBATYCJCABQQE2AhQgAUGU6cAANgIQIAFBATYCHCABQQM6AEwgAUEENgJIIAFCIDcCQCABQQI2AjggAUECNgIwIAEgAUEwajYCICABIAFBKGo2AhggAUEQakGE6sAAEK4FAAu1AwACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQQFrDhgBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgACyABIAAoAgQgACgCCBD0BQ8LIABBBGogARChAg8LIAFB2e7pAEEYEPQFDwsgAUHx7ukAQRsQ9AUPCyABQYzv6QBBGhD0BQ8LIAFBpu/pAEEZEPQFDwsgAUG/7+kAQQwQ9AUPCyABQcvv6QBBExD0BQ8LIAFB3u/pAEETEPQFDwsgAUHx7+kAQQ4Q9AUPCyABQf/v6QBBDhD0BQ8LIAFBjfDpAEEMEPQFDwsgAUGZ8OkAQQ4Q9AUPCyABQafw6QBBDhD0BQ8LIAFBtfDpAEETEPQFDwsgAUHI8OkAQRoQ9AUPCyABQeLw6QBBPhD0BQ8LIAFBoPHpAEEUEPQFDwsgAUG08ekAQTQQ9AUPCyABQejx6QBBLBD0BQ8LIAFBlPLpAEEkEPQFDwsgAUG48ukAQQ4Q9AUPCyABQcby6QBBExD0BQ8LIAFB2fLpAEEcEPQFDwsgAUH18ukAQRgQ9AULsQIBBX8jAEEQayIGJAAgAEE0aiEHAkACQCADIAAoAjQiBUEMIAVBDEsiBBsgACgCBCAFIAQbIgRrSwRAIAQgAyAEaiIESw0BQX8gBEEBa2d2QQAgBEECTxsiBEF/Rg0BIAZBCGogACAEQQFqEI4CIAYoAggiBEGBgICAeEcEQCAERQ0CIAQgBigCDBDMBgALIAcoAgAhBQsgAEEEaiEEAkAgBUENTwRAIAQoAgAiBSABSQ0BIAAoAgghAAwDCyAEIQAgASAFTQ0CC0Gg18EAQR5BwNfBABDvBAALQfCiwQBBEUGQ18EAEO8EAAsgACABQQJ0aiIAIANBAnQiCGogACAFIAFrQQJ0EM8GGiAAIAIgCBCsARogBCAHIAcoAgBBDEsbIAMgBWo2AgAgBkEQaiQAC+UCAQJ/AkAgACgCAEEBRw0AIAAtAMwBQQFHDQAgACgCrAEiAkUNAAJAIAAoAqgBIAJBAnRqQQRrKAIAIgIgACgCoAEiA0kEQCAAKAKcASACQQV0ai0AAEEiaw4HAQICAgICAQILIAIgA0HggvAAEJUEAAsgACAAKAIEEK0BCyAAQQA2AgACQCAAKAKsASICRQ0AAkAgACgCqAEgAkECdGpBBGsoAgAiAiAAKAKgASIDSQRAIAAoApwBIAJBBXRqLQAAQSFrDgUBAgICAQILIAIgA0HAgvAAEJUEAAsgACABEK0BCyAALQDMAQRAAkAgACgCrAEiAUECSQ0AAkACQCAAKAKoASABQQJ0akEIaygCACIBIAAoAqABIgJJBEBBAiECIAAoApwBIAFBBXRqIgEtAABBIWsOBQIDAwMBAwsgASACQdCC8AAQlQQAC0EBIQILIAEgAmpBADoAAAsgAEEAOgDMAQsLrwIBAn8CQAJAIAJFDQAgA0H/AXEhBQJAA0AgASAEai0AACAFRw0BIAIgBEEBaiIERw0ACyACIQQLIARBA0cEQCADQf8BcUEtRw0BQQAhBAJAA0AgASAEai0AAEEuRw0BIAIgBEEBaiIERw0ACyACIQQLIARBA0cNAQsgAkEDTwRAIAJBA2siA0UEQEEBIQNBAyEEDAMLQQMhBAJAA0AgASAEai0AAEEgRgRAIAIgBEEBaiIERw0BDAILCyAEQQNrIQMLAkAgAiADQQNqIgRPBEBBASEDIAIgBEYEQCACIQQMBQtBACEDIAEgBGotAABBCmsOBAEEBAEECyAEIAJB9KzwABCSBgALQQEhAwwCC0EDIAJBhK3wABCSBgALQQAhAwsgACAENgIEIAAgAzYCAAu8AgEFfyMAQSBrIgIkAAJAAkACQAJAIAEEQCABQQhrIgUgBSgCAEEBaiIDNgIAIANFDQEgASgCACIDQX9GDQIgASADQQFqNgIAIAIgBTYCECACIAE2AgwgAiABQQhqNgIIIAJBFGogAUGsA2oQciACKAIYIQMgAigCFCIGQYCAgIB4Rg0DIAIoAhwhBCABIAEoAgBBAWs2AgAgBSAFKAIAQQFrIgE2AgAgAUUEQCACQRBqEIAFCwJAIAQgBk8EQCADIQEMAQsgBEUEQEEBIQEgAyAGQQEQjQYMAQsgAyAGQQEgBBDrBSIBRQ0FCyAAIAQ2AgQgACABNgIAIAJBIGokAA8LEK4GCwALEK8GAAsgAiADNgIUQeSjwABBKyACQRRqQZSqwABBwM/AABCFBAALQQEgBEG8l8AAEOUFAAufAgECfyMAQRBrIgIkACACQQA2AgwCfyABQYABTwRAIAFBgBBPBEAgAUGAgARPBEAgAiABQT9xQYABcjoADyACIAFBEnZB8AFyOgAMIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADUEEDAMLIAIgAUE/cUGAAXI6AA4gAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMMAgsgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIMAQsgAiABOgAMQQELIQEgASAAKAIIIgMoAgAgAygCCCIAa0sEQCADIAAgARDuAiADKAIIIQALIAMoAgQgAGogAkEMaiABEKwBGiADIAAgAWo2AgggAkEQaiQAQQALkh0CEX8BfiMAQUBqIggkACAIIAI2AgggCCABNgIEIAggAjYCACAIQQxqIQtBACEBIwBB8AFrIgMkACAIKAIEIRIgCCgCCCEFIANBADYCQCADIAU2AjwgAyASNgI4IANBgAE6AEQgA0EANgI0IANCgICAgBA3AiwgA0E4aiETAkACQAJAAkACQCAFBEADQCAEIBJqLQAAIgJBCWsiBkEXS0EBIAZ0QZOAgARxRXINAiAFIARBAWoiBEcNAAsgAyAFNgJACyADQQU2ApgBIANBCGogExDABCADQZgBaiADKAIIIAMoAgwQ1QQhBAwBCyADIAQ2AkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAgAkHbAEcEQCACQfsARg0BIANBLGogA0HvAWpBsKfAABBzIQEMDAsgA0H/ADoARCADIARBAWo2AkAgA0EBOgDUASADIANBLGo2AtABIANBmAFqIgEgA0HQAWoQ9gEgAy0AmAENBAJAIAMtAJkBBEAgASADKALQARA9QYCAgIB4IQUgAygCnAEhASADKAKYASICQYCAgIB4Rw0BDAsLQYCAgIB4IQVBAEGg0cAAEP8DIQEMCgsgA0HgAWoiDiADQbQBaikCADcDACADIAMpAqwBNwPYASADKAKoASENIAMoAqQBIQwgAygCoAEhCiADQZgBaiIPIANB0AFqIgUQ9gEgAy0AmAENAyADLQCZAUUNAiAPIAMoAtABEGQgAygCnAEiCSADKAKYASIHQYCAgIB4Rg0IGiADKAKgASEEIA8gBRD2AQJAIAMtAJgBDQAgAy0AmQFFDQIgDyADKALQARC9ASADLQCYAUEBRg0AIANB8ABqIA4pAwA3AwAgAyADKQPYATcDaCADLQCZASEGIAIhBQwKCyADKAKcASEEDAcLIANB/wA6AEQgAyAEQQFqNgJAIANBAToA1AEgAyADQSxqNgLQASADQZgBaiADQdABahDcAQJAIAMtAJgBBEBBgICAgHghB0GAgICAeCEFIAMoApwBIQIMAQsgA0GsAWohD0ECIRBBgICAgHghBUGAgICAeCEHA0ACQAJAAkACQAJAAkAgAy0AmQEEQCADKALQASIEQQA2AgggBCAEKAIUQQFqNgIUIANBmAFqIARBDGogBBDaASADKAKcASECIAMoApgBIg5BAkYNCCADKAKgASEKAkACQAJAAkACQAJAAkAgDkUEQCAKQQVrDgQBAw0EDQsCQCAKQQVrDgQAAw0EDQsgAkGs0MAAQQUQzARFDQEMDAsgAkGs0MAAQQUQzAQNCwsgBUGAgICAeEYNAkGs0MAAQQUQpAQhAgwNCyACQezQwABBBhDMBA0JIAdBgICAgHhGDQJB7NDAAEEGEKQEIQIMDAsgAikAAELswrm71q7Ys+UAUg0IIBBBAkYNAkHy0MAAQQgQpAQhAgwLCyAEEMMDIgINAyADQZgBaiAEED0gAygCnAEhAiADKAKYASIFQYCAgIB4Rg0DIANB4AFqIA9BCGopAgA3AwAgAyAPKQIANwPYASADKAKoASERIAMoAqQBIQ0gAygCoAEhBiACIQEMCAsgBBDDAyICDQ4gA0GYAWogBBBkIAMoApwBIQkgAygCmAEiB0GAgICAeEcNBSAJIQIMDgsgBBDDAyICDQggA0GYAWogBBC9ASADLQCYAUEBcUUEQCADLQCZASEQDAcLIAMoApwBIQIMCAsgBUGAgICAeEcEQCADQbQBaiADQeABaikCADcCACADIAMpAtgBNwKsASADIBE2AqgBIAMgDTYCpAEgAyAGNgKgASADIAE2ApwBIAMgBTYCmAEgB0GAgICAeEYNAiAQQQJHDQNB8tDAAEEIEKMEIQEgBwRAIAkgB0ECdEEEEI0GCyADQZgBahDbA0GAgICAeCEFDA4LQazQwABBBRCjBCECC0GAgICAeCEFDAYLQezQwABBBhCjBCEBIANBmAFqENsDQYCAgIB4IQUMCwsgA0GQAWogA0GgAWoiAkEYaigCADYCACADQYgBaiACQRBqKQIANwMAIANBgAFqIAJBCGopAgA3AwAgAyACKQIANwN4IBBBAXEhBAwKCyADKAKgASEMDAELIAQQUCICDQILIANBmAFqIANB0AFqENwBIAMtAJgBRQ0ACyADKAKcASECCyAHQYCAgIB4ckGAgICAeEYNBCAJIAdBAnRBBBCNBgwEC0ECQaDRwAAQ/wMhBAwFC0EBQaDRwAAQ/wMMBQsgAygCnAEMBAsgAygCnAEhAUGAgICAeCEFDAQLIAVBgICAgHhGBEAgAiEBQYCAgIB4IQUMAQsgBgRAIAEhBANAAkACQCAEKAIADgIAAAELIARBBGooAgAiDkUNACAEQQhqKAIAIA5BAnRBBBCNBgsgBEEQaiEEIAZBAWsiBg0ACwsgBQRAIAEgBUEEdEEEEI0GCyANRQRAIAIhAUGAgICAeCEFDAELIBEgDUEBEI0GIAIhAUGAgICAeCEFCyADIAMtAERBAWo6AEQgA0EsahCQAyECIANBqAFqIANBgAFqKQMANwIAIANBsAFqIANBiAFqKQMANwIAIANBuAFqIANBkAFqKAIANgIAIAMgATYCnAEgAyACNgLMASADIAQ6AMgBIAMgDDYCxAEgAyAJNgLAASADIAc2ArwBIAMgAykDeDcCoAEgAyAFNgKYAQJAAkAgBUGAgICAeEcEQCACDQEgA0HgAGogA0GMAWopAgA3AwAgAyADKQKEATcDWCADKQLEASEUIAMoAqgBIQ0gAygCpAEhDCADKAKgASEKDAYLIAINAUGAgICAeCEFDAULIAMoAqABIgYEQCABIQQDQAJAAkAgBCgCAA4CAAABCyAEQQRqKAIAIg5FDQAgBEEIaigCACAOQQJ0QQQQjQYLIARBEGohBCAGQQFrIgYNAAsLIAUEQCABIAVBBHRBBBCNBgsgAygCpAEiAQRAIAMoAqgBIAFBARCNBgtBgICAgHghBSAHBEAgCSAHQQJ0QQQQjQYLIAIhAQwECyADQcwBahD9A0GAgICAeCEFDAMLIAcEQCAJIAdBAnRBBBCNBgsgBAshCSAKBEAgASEEA0ACQAJAIAQoAgAOAgAAAQsgBEEEaigCACIGRQ0AIARBCGooAgAgBkECdEEEEI0GCyAEQRBqIQQgCkEBayIKDQALCyACBEAgASACQQR0QQQQjQYLQYCAgIB4IQUgDARAIA0gDEEBEI0GCyAJIQELIAMgAy0AREEBajoARCADQSxqEKgCIQIgA0G0AWogA0HwAGopAwA3AgAgAyANNgKoASADIAw2AqQBIAMgCjYCoAEgAyABNgKcASADIAI2AswBIAMgBjoAyAEgAyAENgLEASADIAk2AsABIAMgBzYCvAEgAyADKQNoNwKsASADIAU2ApgBAkACQCAFQYCAgIB4RwRAIAINASADQeAAaiADQfAAaikDADcDACADIAMpA2g3A1ggAykCxAEhFAwDCyACDQFBgICAgHghBQwCCyAKBEAgASEEIAohBgNAAkACQCAEKAIADgIAAAELIARBBGooAgAiDkUNACAEQQhqKAIAIA5BAnRBBBCNBgsgBEEQaiEEIAZBAWsiBg0ACwsgBQRAIAEgBUEEdEEEEI0GCyAMBEAgDSAMQQEQjQYLQYCAgIB4IQUgBwRAIAkgB0ECdEEEEI0GCyACIQEMAQsgA0HMAWoQ/QNBgICAgHghBQsgBUGAgICAeEYNACADQdAAaiIOIANB4ABqKQMANwMAIAMgAykDWDcDSAJAIAMoAkAiBCADKAI8Ig9JBEAgAygCOCEGA0AgBCAGai0AAEEJayICQRdLQQEgAnRBk4CABHFFcg0CIA8gBEEBaiIERw0ACyADIA82AkALIANBIGogDikDADcDACADIAMpA0g3AxggAygCLCICBEAgAygCMCACQQEQjQYLIAsgDTYCECALIAw2AgwgCyAKNgIIIAsgATYCBCALIAU2AgAgCyADKQMYNwIUIAsgFDcCLCALIAk2AiggCyAHNgIkIAtBHGogA0EgaikDADcCAAwDCyADIAQ2AkAgA0EWNgKYASADQRBqIBMQwAQgA0GYAWogAygCECADKAIUENUEIQQgCgRAIAEhBgNAAkACQCAGKAIADgIAAAELIAZBBGooAgAiAkUNACAGQQhqKAIAIAJBAnRBBBCNBgsgBkEQaiEGIApBAWsiCg0ACwsgBQRAIAEgBUEEdEEEEI0GCyAMBEAgDSAMQQEQjQYLIAdFDQEgCSAHQQJ0QQQQjQYMAQsgASADQSxqEIkEIQQLIAMoAiwiAQRAIAMoAjAgAUEBEI0GCyADIAQ2AiwgA0EANgKAASADQoCAgIAQNwJ4IANBAzoAuAEgA0EgNgKoASADQQA2ArQBIANB9KLAADYCsAEgA0EANgKgASADQQA2ApgBIAMgA0H4AGo2AqwBIANBLGoiASADQZgBahDgAw0BIAsgAykCeDcCBCALQQxqIANBgAFqKAIANgIAIAEQ/QMgC0GAgICAeDYCAAsgCCgCACIBBEAgEiABQQEQjQYLIANB8AFqJAAMAQtB3KrAAEE3IANB7wFqQcyqwABBlKvAABCFBAALAkACQCAIKAIMQYCAgIB4RwRAQQAhAUH5jfYALQAAGkHAAEEEEPwFIgJFDQIgAkEANgIIIAJCgYCAgBA3AgAgAiAIKQIMNwIMIAJBFGogCEEUaikCADcCACACQRxqIAhBHGopAgA3AgAgAkEkaiAIQSRqKQIANwIAIAJBLGogCEEsaikCADcCACACQTRqIAhBNGopAgA3AgAgAkE8aiAIQTxqKAIANgIAIAJBCGohAgwBCyAIKAIQIQkgCCgCFCIEIAgoAhgQBSECQQEhASAJRQ0AIAQgCUEBEI0GCyAAIAE2AgggACACQQAgARs2AgQgAEEAIAIgARs2AgAgCEFAayQADwtBBEHAABDMBgALhAIBAX8CQAJAIAJFDQAgAS0AAA0AIANBACABKAIUIgIgASgCECIBRhsgAyABQQJ0aiABIAJLIAEgBE9yIAIgBEtyIgMbIgVFDQFBACACIAFrIAMbIQICfwJAAkAgACgCNCIBQQ1PBEAgAiAAKAIERg0BQQAPCyABIAJGDQFBAA8LIAAoAggMAQsgAEEEagshA0EAIQQCfwNAIAIgAiAERg0BGiADKAIAIQAgBSgCACEBIAVBBGohBSADQQRqIQMgBEEBaiEEIAFBIHIgASABQcEAa0EaSRsgAEEgciAAIABBwQBrQRpJG0YNAAsgBEEBawsgAk8hBQsgBQ8LQZCbwgAQlgYAC/wHAQ9/IwBBIGsiBiQAAkACQAJAIAEEQCABQQhrIgsgCygCAEEBaiICNgIAIAJFDQEgASgCACICQX9GDQIgASACQQFqNgIAIAYgCzYCECAGIAE2AgwgBiABQQRqIgU2AgggBkEUaiENQQAhAkEEIQ4CQAJAAkACQCAFKAIIIgcEQCAFKAIEIQ9B+Y32AC0AABogB0EEdCIFQQQQ/AUiDkUNASAHIQUDQAJAAkACQCAMIA9qIgkoAgAiEEEBaw4CAQIACyAJQQxqKAIAIgJBAnQhA0EAIQogAkH/////A0sgA0H8////B0tyDQUgCUEIaigCACEJIANFBEBBBCEIQQAhBEEEIAkgAxCsARoMAgtB+Y32AC0AABpBBCEKIAIhBCADQQQQ/AUiCEUNBSAIIAkgAxCsARoMAQsgCUEMaigCACICQQJ0IQNBACEKIAJB/////wNLIANB/P///wdLcg0FIAlBCGooAgAhCQJAIANFBEBBBCEIQQAhBAwBC0H5jfYALQAAGkEEIQogAiEEIANBBBD8BSIIRQ0GCyAIIAkgAxCsARoLIAwgDmoiAyAQNgIAIANBDGogAjYCACADQQhqIAg2AgAgA0EEaiAENgIAIAxBEGohDCAFQQFrIgUNAAsLIA0gBzYCCCANIA42AgQgDSAHNgIADAMLQQQgBUHUgsAAEOUFAAsgCiADQZiewAAQ5QUACyAKIANBmJ7AABDlBQALIAEgASgCAEEBazYCACALIAsoAgBBAWsiATYCACABRQRAIAZBEGoQwgQLAkAgBigCFCIEIAYoAhwiAk0EQCAGKAIYIQEMAQtBBCEBIARBBHQhBCAGKAIYIQcgAkUEQCAHIARBBBCNBgwBCyAHIARBBCACQQR0IgQQ6wUiAUUNBAsjAEEQayIIJAAgASEHAkACQAJAIAIiBARAIAJBBHQhAyABIQIDQCAIQQhqIgogAkEIaikCADcDAEH5jfYALQAAGiAIIAIpAgA3AwBBHEEEEPwFIgVFDQIgBUEANgIIIAVCgYCAgBA3AgAgBSAIKQMANwIMIAVBFGogCikDADcCACAHIAVBCGoQCDYCACAHQQRqIQcgAkEQaiECIANBEGsiAw0ACwsCQCAHIAFrIgVBAnYiAyAEQQJ0TwRAIAEhAgwBC0EEIQIgBEEEdCEEIAEgB0YEQCABIARBBBCNBgwBCyABIARBBCAFEOsFIgJFDQILIAYgAzYCBCAGIAI2AgAgCEEQaiQADAILQQRBHBDMBgALQQQgBUGMn8AAEOUFAAsgBigCBCEBIAAgBigCADYCACAAIAE2AgQgBkEgaiQADwsQrgYLAAsQrwYAC0EEIARBvJfAABDlBQALlwIBAX8jAEEQayICJAACfwJAIAEoAgBFBEAgASgCCEEBRw0BCyAAKAIAIQAgAkEANgIMIAEgAkEMagJ/IABBgAFPBEAgAEGAEE8EQCAAQYCABE8EQCACIABBP3FBgAFyOgAPIAIgAEESdkHwAXI6AAwgAiAAQQZ2QT9xQYABcjoADiACIABBDHZBP3FBgAFyOgANQQQMAwsgAiAAQT9xQYABcjoADiACIABBDHZB4AFyOgAMIAIgAEEGdkE/cUGAAXI6AA1BAwwCCyACIABBP3FBgAFyOgANIAIgAEEGdkHAAXI6AAxBAgwBCyACIAA6AAxBAQsQnAEMAQsgASgCFCAAKAIAIAEoAhgoAhARAAALIAJBEGokAAudAgEFfwJAAkACQAJAIAJBA2pBfHEiBCACRg0AIAQgAmsiBCADIAMgBEsbIgVFDQBBACEEIAFB/wFxIQZBASEHA0AgAiAEai0AACAGRg0EIAUgBEEBaiIERw0ACyAFIANBCGsiCEsNAgwBCyADQQhrIQhBACEFCyABQf8BcUGBgoQIbCEEA0BBgIKECCACIAVqIgcoAgAgBHMiBmsgBnJBgIKECCAHQQRqKAIAIARzIgZrIAZycUGAgYKEeHFBgIGChHhHDQEgBUEIaiIFIAhNDQALCyADIAVHBEAgAUH/AXEhBEEBIQcDQCAEIAIgBWotAABGBEAgBSEEDAMLIAMgBUEBaiIFRw0ACwtBACEHCyAAIAQ2AgQgACAHNgIAC7MCAQR/IwBBIGsiAiQAAkAgASgCBCIDIAEoAggiBE8EQCADIARrQQNNBEAgASADNgIIIAJBBDYCFCACQQhqIAEoAgAgAyADENcBIAJBFGogAigCCCACKAIMENUEIQEgAEEBOwEAIAAgATYCBAwCCyABIARBBGoiBTYCCCAEIAEoAgAiBGoiAS0AAUEBdEGw++kAai8BACABLQAAQQF0QbD/6QBqLwEAcsFBCHQgAS0AAkEBdEGw/+kAai4BAHIgAS0AA0EBdEGw++kAai4BAHIiAUEASARAIAJBDDYCFCACIAQgAyAFENcBIAJBFGogAigCACACKAIEENUEIQEgAEEBOwEAIAAgATYCBAwCCyAAQQA7AQAgACABOwECDAELIAQgA0GQ+ukAEJIGAAsgAkEgaiQAC98QAiJ/AX4jAEEwayIKJAACQAJAAkAgAQRAIAFBCGsiFiAWKAIAQQFqIgY2AgAgBkUNASABKAIAIgZBf0YNAiABIAZBAWo2AgAgCiAWNgIUIAogATYCECAKIAM2AiAgCiACNgIcIAogAzYCGCAKIAFBCGoiAjYCDCAKQSRqIRkjAEGAAWsiBCQAIApBGGoiGigCCCEDIBooAgQhFyACKALYAyISIBIoAgAiAkEBajYCAAJAIAJBAE4EQCAEIBI2AiQgBEH4qMAANgIgIARBATYCHCAEQUBrIBcgAyAXahC2AUH5jfYALQAAGkEUQQQQ/AUiEwRAIBNCgYCAgBA3AgAgEyAEKQJANwIIIBNBEGoiAiAEQcgAaigCADYCACAEQTRqQQEgEygCDCIdIAIoAgAiHhAyIAQoAjwiAq1CGH4iJqchAwJAICZCIIinIANB+P///wdLcg0AQQghFCADBEBB+Y32AC0AABpBCCEIIAIhCyADQQgQ/AUiFEUNAQsgBEEkaiEfIARBADYCECAEIBQ2AgwgBCALNgIIIARBQGsgBCgCOCIgIAIQmAIgEkEIaiEhIAQoAnQhGyAEKAJwISIgBCgCbCECIAQoAmghHCAEKAJkIQ8gBCgCYCEQIAQoAlghFSAEKAJUISMgBCgCUCEHIAQoAkwhDCAEKAJIISQgBCgCRCEJIAQoAkBBAXEhJQNAAkACQAJ/AkAgDEECRgRAIAchCCACIQMMAQsCQCAMQQFxRQRAIAchCCAMIQYMAQtBACEIQQAhBiAHRQ0AIAchDSAjIQUgCSEGQQAhBwwECyAVQQJGBEBBAiEVIAIhAwwBCwNAIAIhByAPIBxGBEAgAiEDDAILIAdBAWohAiAPEJoEIA9BGGoiCyEPRQ0ACwJ/IBVBAXFFBEAgAiEOA0AgDiEDIA8gHEYEQEEAIRUMBAtBASEVIANBAWohDiAPEJoEIA9BGGoiCyEPRQ0ACyAHIRAgAgwBCyAHIQMgAiEOIBBBAWoLIQcCQAJAIANBf0cEQCADQQFqIgIgB0kNAiADIBtJDQEgAiAbQeClwAAQkwYAC0HgpcAAEJcFAAsgAyAQayEFICIgB0EYbGohDSADIRAgCCEHIAYhDCALIQ8gDiECIAkMAgsgByACQeClwAAQlQYACyAlRQ0BQQIhDCAIIQcgAyECICQhBSAJIQ1BAAshBiANDQELIARBMGoiBiAEQRBqIgMoAgA2AgAgBCAEKQIINwMoIAQoAjQiAgRAICAgAkEYbEEIEI0GCyAEQcgAaiICIAYoAgA2AgAgBCATNgJMIAQgBCkDKDcDQCAEQUBrIBIQpQMgAyACKQMANwMAIAQgBCkDQDcDCCASIBIoAgAiAkEBazYCACACQQFGBEAgHxCrAwsgBEEANgI8IARCgICAgBA3AjQgBEEDOgBgIARBIDYCUCAEQQA2AlwgBEH0osAANgJYIARBADYCSCAEQQA2AkAgBCAEQTRqNgJUAn8gBEFAayEJIwBBQGoiBSQAAkACf0EAIARBCGoiBigCCCIDRQ0AGiAGKAIEIgIgA0EYbGohCCAFQShqrUKAgICAsBWEISYgCSgCGCEOIAkoAhQhCSAGKAIMIQ0CQANAIA0oAgwiA0EAIAIoAhQiECACKAIQIgxGIgYbIAMgDEECdGogDSgCECIDIBBJIAwgEEtyIAMgDE1yIgMbIgdFDQMgBUEANgI8IAVCgICAgBA3AjQgAyAGckUEQCAFQTRqQQAgECAMayIDQQFBARDqAgNAIAVBNGogBygCABDDAiAHQQRqIQcgA0EBayIDDQALCyAFQTBqIAVBPGooAgA2AgAgBSAFKQI0NwMoIAUgJjcDICAFQQE2AgwgBUH838EANgIIIAVCATcCFCAFIAVBIGo2AhAgCSAOIAVBCGoQxgENASAFKAIoIgMEQCAFKAIsIANBARCNBgsgAkEYaiICIAhHDQALQQAMAQsgBSgCKCICBEAgBSgCLCACQQEQjQYLQQELIAVBQGskAAwBC0GQm8IAEJYGAAtFBEAgGSAEKQI0NwIAIBlBCGogBEE8aigCADYCACAEKAIUIgIgAigCACICQQFrNgIAIAJBAUYEQCAEQRRqEM4ECyAEKAIIIgIEQCAEKAIMIAJBGGxBCBCNBgsgGigCACICBEAgFyACQQEQjQYLIARBgAFqJAAMBgtB3KrAAEE3IARB/wBqQcyqwABBlKvAABCFBAALIAVBBU8EQCAFQRhsIQNBACEIQQAhC0EAIRhBACEOIA0hCQNAAkACQAJAAkAgCS0AAA4JAAEDAwMDAwMCAwsgBCAJQRBqIB0gHhCsBCAhIAQoAgAgBCgCBBD3BSALaiELIAhBAWohCAwCCyAYQQFqIRgMAQsgDkEBaiEOCyAJQRhqIQkgA0EYayIDDQALIAYhCSAIQQhIIAggC2tBAEpxIAsgDkhyIAuyIBiyQwAAoD+UXSALtyAIt6NEZmZmZmZm5j9jcnINAQsgBSAEKAIIIBFrSwRAIARBCGogESAFQQhBGBDnAiAEKAIQIREgBCgCDCEUCyAUIBFBGGxqIA0gBUEYbBCsARogBCAFIBFqIhE2AhAgBiEJDAALAAsgCCADQYiJwAAQ5QUAC0EEQRQQzAYLAAsgASABKAIAQQFrNgIAIBYgFigCAEEBayIBNgIAIAFFBEAgCkEUahCABQsgCigCKCEBAkAgCigCJCICIAooAiwiBk0EQCABIQMMAQsgBkUEQEEBIQMgASACQQEQjQYMAQsgASACQQEgBhDrBSIDRQ0ECyAAIAY2AgQgACADNgIAIApBMGokAA8LEK4GCwALEK8GAAtBASAGQbyXwAAQ5QUAC44CAQR/AkAgACgCCCIFBH8gACgCBCEGIAVBA3QhB0EAIQUCfwNAIAIgBUkNAyAGKAIAIAEgBUEYbGogAiAFayADIAQgBigCBCgCDBEFACIIBEAgBkEIaiEGIAUgCGoiBSAHQQhrIgdFDQIaDAELC0EAC0UFQQELIQggACgCFCIFRQRAQQAPCyAAKAIQIQYgBUEDdCEHQQAhBQJAAkADQCACIAVJDQEgBigCACABIAVBGGxqIAIgBWsgAyAEIAYoAgQoAgwRBQAiAARAIAZBCGohBiAAIAVqIQUgB0EIayIHRQ0DDAELC0EADwsgBSACQYSZwgAQkgYACyAFQQAgCBsPCyAFIAJBhJnCABCSBgALuAICBX8BfiMAQUBqIgMkAEEBIQUCQCAALQAEDQAgAC0ABSEHAkAgACgCACIEKAIcIgZBBHFFBEAgB0EBcUUNASAEKAIUQf+q8wBBAiAEKAIYKAIMEQMARQ0BDAILIAdBAXFFBEAgBCgCFEGNq/MAQQEgBCgCGCgCDBEDAA0CIAQoAhwhBgsgA0EBOgAbIAMgBCkCFDcCDCADQeCq8wA2AjQgAyADQRtqNgIUIAMgBCkCCDcCJCAEKQIAIQggAyAGNgI4IAMgBCgCEDYCLCADIAQtACA6ADwgAyAINwIcIAMgA0EMajYCMCABIANBHGogAigCDBEAAA0BIAMoAjBBhKvzAEECIAMoAjQoAgwRAwAhBQwBCyABIAQgAigCDBEAACEFCyAAQQE6AAUgACAFOgAEIANBQGskAAuAAgEGfyMAQYABayIEJABBISAAKAIAIgBBAXZnIgZrIgJBA3EhBQJAIABBCEkEQEGAASEDDAELIAJBPHEhB0GAASEDA0AgAyAEaiICQQFrIABBAXFBMHI6AAAgAkECayAAQQF2QQFxQTByOgAAIAJBA2sgAEECdkEBcUEwcjoAACACQQRrIABBA3ZBAXFBMHI6AAAgAEEEdiEAIAcgA0EEayIDakGAAUcNAAsgAyAEaiECCyAFBEAgAyAEaiECA0AgAkEBayICIABBAXFBMHI6AAAgAEEBdiEAIAVBAWsiBQ0ACwsgAUEBQbar8wBBAiACQSEgBmsQoAEgBEGAAWokAAurAgIBfwF+IwBB8ABrIgIkACAAKAIAIQAgAkEANgJEIAJCgICAgBA3AjwgAkEDOgBoIAJBIDYCWCACQQA2AmQgAkGk2ukANgJgIAJBADYCUCACQQA2AkggAiACQTxqNgJcIAAgAkHIAGoQywJFBEAgAkE4aiACQcQAaigCADYCACACIAIpAjw3AzAgAkEENgIEIAJB1PPpADYCACACQgM3AgwgAkKAgICAwAAiAyAAQRBqrYQ3AyggAiADIABBDGqthDcDICACIAJBMGqtQoCAgIDwIIQ3AxggAiACQRhqNgIIIAEoAhQgASgCGCACEMYBIAIoAjAiAQRAIAIoAjQgAUEBEI0GCyACQfAAaiQADwtBhPTpAEE3IAJB7wBqQfTz6QBBvPTpABCFBAAL3wIBAn8jAEFAaiICJAAgAiABNwMAIAJBFGogACABEJUCAkACQAJAIAIoAhRFBEBBsJD2ACgCAEH/////B3EEQBDgBkUNAgsgAkECNgIkIAJB1P/AADYCICACQgE3AiwgAiACrUKAgICAwA6ENwM4IAIgAkE4ajYCKCACQSBqQeT/wAAQrgUACyACQRBqIAJBHGooAgA2AgAgAiACKQIUIgE3AwggAaciACAAKAIQIgBBAWs2AhACQEGwkPYAKAIAQf////8HcQRAEOAGRSAAQX9Hcg0BDAQLIABBf0YNAwtBASEDIABBAU0EQCACQQhqEH8MAgsgAkEIahB/C0EAIQMLIAJBQGskACADDwsjAEEQayIAJAAgAEGQgMEANgIMIABBGTYCCCAAQfT/wAA2AgQjAEEQayICJAAgAiAAQQRqIgApAgA3AgggAkEIakG4+MAAIAAoAghBAUEAEMcDAAuKAgECfyAAQYABTwRAIAEoAgAgASgCCCIDa0EDTQRAIAEgA0EEEOsCIAEoAgghAwsgASgCBCADaiECIAECfyAAQYAQSQRAIAIgAEEGdkHAAXI6AABBAgwBCyAAQf//A00EQCACIABBDHZB4AFyOgAAIAIgAEEGdkE/cUGAAXI6AAFBAwwBCyACIABBBnZBP3FBgAFyOgACIAIgAEEMdkE/cUGAAXI6AAEgAiAAQRJ2QQdxQfABcjoAAEEECyIBIANqNgIIIAEgAmpBAWsgAEE/cUGAAXI6AAAPCyABKAIIIgIgASgCAEYEQCABQaD76QAQtgMLIAEgAkEBajYCCCABKAIEIAJqIAA6AAALqwICA38BfiMAQUBqIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQSRqIgRBADYCACACQoCAgIAQNwIcIAJBMGogAygCACIDQQhqKQIANwMAIAJBOGogA0EQaikCADcDACACIAMpAgA3AyggAkEcakGU4PIAIAJBKGoQxgEaIAJBGGogBCgCACIDNgIAIAIgAikCHCIFNwMQIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBCGoiAyABQQhqIgEoAgA2AgAgAUEANgIAQfmN9gAtAAAaIAIgBTcDAEEMQQQQ/AUiAUUEQEEEQQwQzAYACyABIAIpAwA3AgAgAUEIaiADKAIANgIAIABBiPDyADYCBCAAIAE2AgAgAkFAayQAC4ICAQN/IwBBgAFrIgQkAAJ/AkAgASgCHCICQRBxRQRAIAJBIHENASAAKAIAQQEgARDFAgwCCyAAKAIAIQBBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBtKvzAEECIAIgBGpBgAFqQQAgAmsQoAEMAQsgACgCACEAQQAhAgNAIAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBtKvzAEECIAIgBGpBgAFqQQAgAmsQoAELIARBgAFqJAALuwICBH8BfiMAQUBqIgMkACAAKAIAIQUgAAJ/QQEgAC0ACA0AGiAAKAIEIgQoAhwiBkEEcUUEQEEBIAQoAhRB/6rzAEGJq/MAIAUbQQJBASAFGyAEKAIYKAIMEQMADQEaIAEgBCACKAIMEQAADAELIAVFBEBBASAEKAIUQYqr8wBBAiAEKAIYKAIMEQMADQEaIAQoAhwhBgsgA0EBOgAbIAMgBCkCFDcCDCADQeCq8wA2AjQgAyADQRtqNgIUIAMgBCkCCDcCJCAEKQIAIQcgAyAGNgI4IAMgBCgCEDYCLCADIAQtACA6ADwgAyAHNwIcIAMgA0EMajYCMEEBIAEgA0EcaiACKAIMEQAADQAaIAMoAjBBhKvzAEECIAMoAjQoAgwRAwALOgAIIAAgBUEBajYCACADQUBrJAAgAAuiAgICfwJ8IwBBIGsiBSQAIAO6IQcgAAJ/AkACQAJAAkAgBCAEQR91IgZzIAZrIgZBtQJPBEADQCAHRAAAAAAAAAAAYQ0FIARBAE4NAiAHRKDI64XzzOF/oyEHIARBtAJqIgQgBEEfdSIGcyAGayIGQbUCTw0ACwsgBkEDdEHQ2ukAaisDACEIIARBAE4NASAHIAijIQcMAwsgBUEONgIUIAVBCGogAUEMahDsBCAAIAVBFGogBSgCCCAFKAIMENUENgIEDAELIAcgCKIiB5lEAAAAAAAA8H9iDQEgBUEONgIUIAUgAUEMahDsBCAAIAVBFGogBSgCACAFKAIEENUENgIEC0EBDAELIAAgByAHmiACGzkDCEEACzYCACAFQSBqJAALiAkBE38jAEEgayIGJAAgBkGAj/YANgIMQYSP9gAtAABBA0cEfyAGIAZBDGo2AhAgBkEQahCnASAGKAIMBUGAj/YACygCACIIIAgoAgAiA0EBajYCAAJAIANBAE4EQCAGIAg2AgwgBkEQaiIDIAEgASACahC3AUH5jfYALQAAGkEUQQQQ/AUiAUUNASABQoGAgIAQNwIAIAEgBikCEDcCCCABQRBqIgIgBkEYaiIQKAIANgIAIAMgBiABKAIMIAIoAgAQMiAGIAE2AhwjAEEQayIHJAAgAyIBEIACIAEQkAICQCABKAIIIgVFDQAgASgCBCIDIQICQCAFQRhsIgVBGGsiCUEYbkEBcQ0AIANBGGohAiADLQAAQQRHDQAgAygCBEECSQ0AIANBCToAAAsgCUEYSQ0AIAMgBWohAwNAAkAgAi0AAEEERw0AIAIoAgRBAU0NACACQQk6AAALAkAgAi0AGEEERw0AIAIoAhxBAkkNACACQQk6ABgLIAJBMGoiAiADRw0ACwsgARCYASABENsBIAEQViABEGggARBrIAEQsAEgASgCCCICBEAgASgCBCERIAJBGGwhEiABKAIMIQogB0ENaiETQQAhCQNAIAkgEWoiBS0AAEUEQAJ/AkAgCigCDCIDQQAgBUEUaigCACICIAVBEGooAgAiAUYbIAMgAUECdGogAiAKKAIQIgNLIAEgAksgASADT3JyIgMbIgQEQCAHQQNqIAgoAkRBCGogBEEAIAIgAWsgAxsQqQEgBUELaiELIAVBCWohDCAHLQAKIQEgBy8ACyATLQAAQRB0ciIEIAVBCGoiFC0AACICQQNGDQIaIAwvAAAgCy0AAEEQdHIhAyABQf8BcUEDRw0BIAIhASADDAILQZCbwgAQlgYACyABIAIgAkECRhshASAEIAMgA0H/AXFBAkYbQf8BcSAEQYCA/AdxQRB2IANBEHYiAiACQQJGG0EQdCAEQQh2IANBCHYiAiACQf8BcUECRhtB/wFxQQh0cnILIQ0gBUENaiEOIActAA8hAgJ/IActAA4iDyAFQQxqIhUtAAAiBEEDRg0AGiAOLQAAIQMgD0EDRgRAIAMhAiAEDAELIAIgAyADQQNGGyECIA8gBCAEQQJGGwshAyAFQQFqIgQgBC0AACAHLQADckEBcToAACAFQQdqIgQgBy0ACSAELQAAIgQgBEECRhs6AAAgBUEGaiIEIAQtAAAgBy0ACHJBAXE6AAAgBUEFaiIEIAQtAAAgBy0AB3JBAXE6AAAgBUEEaiIEIAQtAAAgBy0ABnJBAXE6AAAgBUEDaiIEIAQtAAAgBy0ABXJBAXE6AAAgBUECaiIFIAUtAAAgBy0ABHJBAXE6AAAgFCABOgAAIAsgDUEQdjoAACAMIA07AAAgDiACOgAAIBUgAzoAAAsgEiAJQRhqIglHDQALCyAHQRBqJAAgAEEIaiAQKQIANwIAIAAgBikCEDcCACAIIAgoAgAiAEEBazYCACAAQQFGBEAgBkEMahCrAwsgBkEgaiQADwsAC0EEQRQQzAYAC/8BAgF+An8jAEGAAWsiBCQAIAAoAgApAwAhAgJ/AkAgASgCHCIAQRBxRQRAIABBIHENASACQQEgARC8AgwCC0EAIQADQCAAIARqQf8AaiACp0EPcSIDQTByIANB1wBqIANBCkkbOgAAIABBAWshACACQg9WIAJCBIghAg0ACyABQQFBtKvzAEECIAAgBGpBgAFqQQAgAGsQoAEMAQtBACEAA0AgACAEakH/AGogAqdBD3EiA0EwciADQTdqIANBCkkbOgAAIABBAWshACACQg9WIAJCBIghAg0ACyABQQFBtKvzAEECIAAgBGpBgAFqQQAgAGsQoAELIARBgAFqJAALhgoBEn8jAEEgayILJAACQAJAIAJFDQAgAS0AAA0AIANBACABKAIUIgcgASgCECICRhsgAyACQQJ0aiACIAdLIAIgBE9yIAQgB0lyIgMbIgFFDQFBACAHIAJrIAMbIQYCfyAAKAI0IghBDU8EQCAAKAIEIQggACgCCAwBCyAAQQRqCyECIAtBADYCECALQoCAgIAQNwIIIAtBADYCHCALQoCAgIAQNwIUAn8gASERIAIhEiALQRRqIQVBACEBQQAhAyALQQhqIglBADYCCCAGQf8BcSICIAkoAgBPBEAgCUEAIAJBAWpBAUEBEOoCIAkoAgghAwsgCSgCBCEMAkAgAkUNACAGQf8BcUEETwRAIAZB/AFxIQQDQCADIAxqIgIgAToAACACQQNqIAFBA3I6AAAgAkECaiABQQJyOgAAIAJBAWogAUEBcjoAACADQQRqIQMgAUEEaiIBQf8BcSAERw0ACwsgBkEDcSICRQ0AQQAhBANAIAMgDGogAToAACADQQFqIQMgAUEBaiEBIARBAWoiBEH/AXEgAkcNAAsLIAkgA0EBaiIENgIIIAMgDGogBjoAACAGQQFqIgEgBSgCCCIDSwRAIAEgA2siASAFKAIAIANrSwRAIAUgAyABQQFBARDqAiAFKAIIIQMLIAUoAgQiByADaiECIAFBAk8EfyACQQAgAUEBayIBEIMCGiAHIAEgA2oiA2oFIAILQQA6AAAgA0EBaiEBCwJAAkAgCEUEQCAMIQ0gASECDAELIAkoAgAhAyAFKAIAIQcgBgRAQQEhCgJAAkACQAJAAkADQCAEIQIgASIERQ0IIAUoAgQiDSAKOgAAIApBAWsiASAITw0FIAMhDiAKIAggCktqIRMgEiABQQJ0aiEUQQEhAQJAA0AgAUEBayIDIAZPDQYgASACTw0BIAMgBE8NAyACIANNDQQgASAETw0FIAEgDWogASAMai0AACIPQQFqIhAgEEH/AXEiECADIA1qLQAAIhVBAWpB/wFxIhYgECAWSRsgDyAVRhtB/wFxIg8gAyAMai0AACARIANBAnRqKAIAIBQoAgBHakH/AXEiAyADIA9LGzoAACABIAZJIgMEQCABIANqIgEgBk0NAQsLIAUgDjYCACAJIAc2AgAgCSANNgIEIAUgDDYCBCAJIAQ2AgggCCAKTQ0IIA0hDCACIQEgByEDIA4hByATIgogCE0NAQwICwsgBSAENgIIIAEgAkHk4MEAEJUEAAsgBSAENgIIIAMgBEH04MEAEJUEAAsgBSAENgIIIAMgAkGE4cEAEJUEAAsgBSAENgIIIAEgBEGU4cEAEJUEAAsgBSAENgIIIAMgBkHE4MEAEJUEAAsgBSAENgIIIAEgCEHU4MEAEJUEAAtBASEKA0AgBCECIAEiBEUNAiAJIAc2AgAgBSADIg42AgAgCSABNgIIIAUoAgQiDSAKOgAAIAkgDTYCBCAFIAw2AgQgCCAKTQ0BIA0hDCACIQEgByEDIA4hByAKIAggCktqIgogCE0NAAsLIAUgAjYCCCAEIAZNBEAgBiAEQaTgwQAQlQQACyAGIA1qLQAADAELIAVBADYCCEEAQQBBtODBABCVBAALIQEgCygCFCICBEAgCygCGCACQQEQjQYLIAsoAggiAgRAIAsoAgwgAkEBEI0GCyAALQA4IAFB/wFxTyEICyALQSBqJAAgCA8LQZCbwgAQlgYAC/gBAQN/IwBBgAFrIgQkACAAKAIAIQACfwJAIAEoAhwiAkEQcUUEQCACQSBxDQEgAEEBIAEQxQIMAgtBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBtKvzAEECIAIgBGpBgAFqQQAgAmsQoAEMAQtBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANBN2ogA0EKSRs6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG0q/MAQQIgAiAEakGAAWpBACACaxCgAQsgBEGAAWokAAvXAwEJfyMAQSBrIgQkAAJAAkACQCABBEAgAUEIayIFIAUoAgBBAWoiAjYCACACRQ0BIAEoAgAiAkF/Rg0CIAEgAkEBajYCACAEIAU2AhAgBCABNgIMIAQgAUEEajYCCCAEQRRqIQkgASgCLCEGIAEoAjAhByMAQRBrIgIkAAJAIAZBACABQRxqIgMoAgQiCCADKAIAIgNGIgobIAYgA0ECdGogAyAISyADIAdPciAHIAhJciIHGyIGBEAgAkEANgIMIAJCgICAgBA3AgQgByAKckUEQCACQQRqQQAgCCADayIDQQFBARDqAgNAIAJBBGogBigCABDDAiAGQQRqIQYgA0EBayIDDQALCyAJIAIpAgQ3AgAgCUEIaiACQQxqKAIANgIAIAJBEGokAAwBC0GQm8IAEJYGAAsgASABKAIAQQFrNgIAIAUgBSgCAEEBayIBNgIAIAFFBEAgBEEQahDCBAsgBCgCGCEBAkAgBCgCFCIDIAQoAhwiBU0EQCABIQIMAQsgBUUEQEEBIQIgASADQQEQjQYMAQsgASADQQEgBRDrBSICRQ0ECyAAIAU2AgQgACACNgIAIARBIGokAA8LEK4GCwALEK8GAAtBASAFQbyXwAAQ5QUAC/YBAgR/AX4jAEEgayIFJAACQAJAIAEgASACaiICSwRAQQAhAQwBC0EAIQEgAyAEakEBa0EAIANrca1BCEEEIARBAUYbIgYgACgCACIIQQF0IgcgAiACIAdJGyICIAIgBkkbIgKtfiIJQiCIUEUNACAJpyIGQYCAgIB4IANrSw0AIAUgCAR/IAUgBCAIbDYCHCAFIAAoAgQ2AhQgAwVBAAs2AhggBUEIaiADIAYgBUEUahDYAyAFKAIIQQFHDQEgBSgCECEHIAUoAgwhAQsgASAHQcSgwAAQ5QUACyAFKAIMIQEgACACNgIAIAAgATYCBCAFQSBqJAALkAIBBH8jAEEQayIFJAAgACgCACIIKAIAIQYgAC0ABEEBRwRAIAYoAggiByAGKAIARgRAIAYgB0EBQQFBARDnAiAGKAIIIQcLIAYgB0EBajYCCCAGKAIEIAdqQSw6AAAgCCgCACEGCyAAQQI6AAQgBSAGIAEgAhCUAQJ/IAUtAABBBEcEQCAFIAUpAwA3AwggBUEIahDyBAwBCyAIKAIAIgEoAgAgASgCCCIARgRAIAEgAEEBQQFBARDnAiABKAIIIQALIAEgAEEBajYCCCABKAIEIABqQTo6AAAgBSAIKAIAIAMgBBCUASAFLQAAQQRHBEAgBSAFKQMANwMIIAVBCGoQ8gQMAQtBAAsgBUEQaiQAC/YBAgR/AX4jAEEgayIFJAACQAJAIAEgASACaiICSwRAQQAhAQwBC0EAIQEgAyAEakEBa0EAIANrca1BCEEEIARBAUYbIgYgACgCACIIQQF0IgcgAiACIAdJGyICIAIgBkkbIgKtfiIJQiCIUEUNACAJpyIGQYCAgIB4IANrSw0AIAUgCAR/IAUgBCAIbDYCHCAFIAAoAgQ2AhQgAwVBAAs2AhggBUEIaiADIAYgBUEUahDYAyAFKAIIQQFHDQEgBSgCECEHIAUoAgwhAQsgASAHQZTnwAAQ5QUACyAFKAIMIQEgACACNgIAIAAgATYCBCAFQSBqJAAL9gECBH8BfiMAQSBrIgUkAAJAAkAgASABIAJqIgJLBEBBACEBDAELQQAhASADIARqQQFrQQAgA2txrUEIQQQgBEEBRhsiBiAAKAIAIghBAXQiByACIAIgB0kbIgIgAiAGSRsiAq1+IglCIIhQRQ0AIAmnIgZBgICAgHggA2tLDQAgBSAIBH8gBSAEIAhsNgIcIAUgACgCBDYCFCADBUEACzYCGCAFQQhqIAMgBiAFQRRqENgDIAUoAghBAUcNASAFKAIQIQcgBSgCDCEBCyABIAdBmNHBABDlBQALIAUoAgwhASAAIAI2AgAgACABNgIEIAVBIGokAAvWAQIEfwF+IwBBIGsiAyQAAkACQCABIAEgAmoiAksEQEEAIQEMAQtBACEBQQggACgCACIFQQF0IgQgAiACIARJGyICIAJBCEkbIgKtIgdCIIhQRQ0AIAenIgZB/////wdLDQAgAyAFBH8gAyAFNgIcIAMgACgCBDYCFEEBBUEACzYCGCADQQhqQQEgBiADQRRqENgDIAMoAghBAUcNASADKAIQIQQgAygCDCEBCyABIARBlNrpABDlBQALIAMoAgwhASAAIAI2AgAgACABNgIEIANBIGokAAv2AQIEfwF+IwBBIGsiBSQAAkACQCABIAEgAmoiAksEQEEAIQEMAQtBACEBIAMgBGpBAWtBACADa3GtQQhBBCAEQQFGGyIGIAAoAgAiCEEBdCIHIAIgAiAHSRsiAiACIAZJGyICrX4iCUIgiFBFDQAgCaciBkGAgICAeCADa0sNACAFIAgEfyAFIAQgCGw2AhwgBSAAKAIENgIUIAMFQQALNgIYIAVBCGogAyAGIAVBFGoQ2AMgBSgCCEEBRw0BIAUoAhAhByAFKAIMIQELIAEgB0HUsOsAEOUFAAsgBSgCDCEBIAAgAjYCACAAIAE2AgQgBUEgaiQAC8UBAgV/AX4jAEEgayICJAACQAJAQQQgACgCACIFQQF0IgQgASABIARJGyIBIAFBBEkbIgGtQgSGIgdCIIhQRQ0AIAenIgZB+P///wdLDQAgAiAFBH8gAiAFQQR0NgIcIAIgACgCBDYCFEEIBUEACzYCGCACQQhqQQggBiACQRRqENgDIAIoAghBAUcNASACKAIQIQQgAigCDCEDCyADIARBoL3rABDlBQALIAIoAgwhAyAAIAE2AgAgACADNgIEIAJBIGokAAvWAQIEfwF+IwBBIGsiAyQAAkACQCABIAEgAmoiAksEQEEAIQEMAQtBACEBQQggACgCACIFQQF0IgQgAiACIARJGyICIAJBCEkbIgKtIgdCIIhQRQ0AIAenIgZB/////wdLDQAgAyAFBH8gAyAFNgIcIAMgACgCBDYCFEEBBUEACzYCGCADQQhqQQEgBiADQRRqENgDIAMoAghBAUcNASADKAIQIQQgAygCDCEBCyABIARB6N/yABDlBQALIAMoAgwhASAAIAI2AgAgACABNgIEIANBIGokAAvDAgIDfwN+IwBBIGsiAiQAAkACQAJAIAEOAgECAAsgAkEANgIYIAJBATYCDCACQezi8gA2AgggAkIENwIQIAJBCGpBkOPyABCuBQwBC0G4lPYAQQE2AgACQAJAQbiQ9gApAwAiBlAEQEHAkPYAKQMAIQUDQCAFQn9RDQJBwJD2ACAFQgF8IgZBwJD2ACkDACIHIAUgB1EiARs3AwAgByEFIAFFDQALQbiQ9gAgBjcDAAsjAEEQayIBJAAgAkEINgIAIAJBGDYCBCABQRBqJAAgAigCACEDIAIoAgQiBAR/QfmN9gAtAAAaIAQgAxD8BQUgAwsiAUUNASABQQA2AhAgAUKCgICAEDcCACABIAY3AwhBuJT2ACABQQhqNgIAIAAgATYCBCAAQQE2AgAgAkEgaiQADwsQlAUACyADIAQQzAYACwALtwICAX8BfiMAQUBqIgIkACACIAE2AgQgAkEYaiAAIAEpAwAQlQICQCACKAIYBEAgAkEQaiACQSBqKAIANgIAIAIgAikCGCIDNwMIIAOnIgAgACgCECIAQQFqNgIQIAIgADYCJCAARQ0BIAEpAwAgAkEIahB/IAJBQGskAA8LIAJBAjYCLCACQaT+wAA2AiggAkIBNwI0IAIgAkEEaq1CgICAgLAOhDcDCCACIAJBCGo2AjAgAkEoakG0/sAAEK4FAAsgAkIBNwI0IAJBAjYCLCACQfD+wAA2AiggAiACQQRqrUKAgICAsA6ENwMYIAIgAkEYajYCMCMAQRBrIgAkACAAQfD5wAA2AgwgACACQSRqNgIIQQEgAEEIakHM+cAAIABBDGpBzPnAACACQShqQYD/wAAQpgIAC80VAwh/B34BfCMAQUBqIgckAAJ/AkACQAJAIAAtAABBA2sOBQEAAAACAAsgB0EwaiAAQQhqKQMANwMAIAcgACkDADcDKCAHQShqIAEQsQEMAgsgBwJ/IAArAwgiEb0iCkL///////////8Ag0L/////////9/8AWARAIAdBKGohACMAQaACayIEJAAgEb0iDUL/////////B4MhCiANQgBTBEAgAEEtOgAAQQEhBgsCQAJ/An8CQAJAAkAgDUI0iKdB/w9xIgJFIApQcUUEQCACQQJJIApCAFJyIQMgCkKAgICAgICACIQgCiACGyIKQgKGIQsgCkIBgyEQIAJBtQhrQcx3IAIbIgJBAEgEQCAEQZACakGQruoAIAIgAkGFolNsQRR2IAJBf0drIglqIgVBBHQiAmspAwAiCkIAIAtCAoQiDBCEBCAEQYACakGYruoAIAJrKQMAIg1CACAMEIQEIARB8AFqIARBmAJqKQMAIgwgBCkDgAJ8Ig4gBEGIAmopAwAgDCAOVq18IAkgBUGx2bUfbEETdmtB/ABqQf8AcUHAAHMiAhCqBCAEQbABaiAKQgAgCyADQX9zrHwiDBCEBCAEQaABaiANQgAgDBCEBCAEQZABaiAEQbgBaikDACIMIAQpA6ABfCIOIARBqAFqKQMAIAwgDlatfCACEKoEIARB4AFqIApCACALEIQEIARB0AFqIA1CACALEIQEIARBwAFqIARB6AFqKQMAIgogBCkD0AF8Ig0gBEHYAWopAwAgCiANVq18IAIQqgQgBCkDwAEhDCAEKQOQASEOIAQpA/ABIQogCUECTwRAIAtCfyAJrYZCf4WDUEUgCUE/T3INBAwFCyAKIBB9IQogAyAQUHEhCEEBDAULIARBgAFqIAJBwegEbEESdiACQQNLayIFQQR0IglBsIPqAGopAwAiCkIAIAtCAoQiDRCEBCAEQfAAaiAJQbiD6gBqKQMAIgxCACANEIQEIARB4ABqIARBiAFqKQMAIg4gBCkDcHwiDyAEQfgAaikDACAOIA9WrXwgBSACayAFQc+mygBsQRN2akH9AGpB/wBxQcAAcyICEKoEIARBIGogCkIAIAsgA0F/c6x8Ig4QhAQgBEEQaiAMQgAgDhCEBCAEIARBKGopAwAiDiAEKQMQfCIPIARBGGopAwAgDiAPVq18IAIQqgQgBEHQAGogCkIAIAsQhAQgBEFAayAMQgAgCxCEBCAEQTBqIARB2ABqKQMAIgogBCkDQHwiDCAEQcgAaikDACAKIAxWrXwgAhCqBCAEKQMwIQwgBCkDACEOIAQpA2AhCiAFQRZPDQJBACALp2sgC0IFgKdBe2xGBEBBfyEDA0AgA0EBaiEDIAtCzZmz5syZs+ZMfiILQrPmzJmz5syZM1gNAAsgAyAFTw0EDAMLIBBQRQRAQX8hAwNAIANBAWohAyANQs2Zs+bMmbPmTH4iDUK05syZs+bMmTNUDQALIAogAyAFT619IQoMAwsgA61Cf4UgC3whC0F/IQMDQCADQQFqIQMgC0LNmbPmzJmz5kx+IgtCs+bMmbPmzJkzWA0ACwwBCyAAIAZqIgJBuNjqAC8AADsAACACQQJqQbrY6gAtAAA6AAAgDUI/iKdBA2ohAgwFCyADIAVJDQBBASEIQQAMAgtBACECAn8gCkLkAIAiDSAOQuQAgCIPWARAIA4hDyAKIQ0gDCELQQAMAQsgDKcgDELkAIAiC6dBnH9sakExSyECQQILIQMgDUIKgCINIA9CCoAiClYEfwNAIANBAWohAyALIgxCCoAhCyANQgqAIg0gCiIPQgqAIgpWDQALIAynIAunQXZsakEESwUgAgsgCyAPUXIMAgtBAQshCUEAIQICQCAKQgqAIgsgDkIKgCIPWARAQQAhAyAOIQ0gDCEKDAELQQAhAwNAIAhBACAOp2sgDyINp0F2bEZxIQggA0EBaiEDIAkgAkH/AXFFcSEJIAynIAxCCoAiCqdBdmxqIQIgCiEMIA0hDiALQgqAIgsgDUIKgCIPVg0ACwsCQAJAIAgEQEEAIA2nayANQgqAIgynQXZsRg0BCyAKIQsMAQsDQCADQQFqIQMgCSACQf8BcUVxIQkgCqcgCkIKgCILp0F2bGohAiALIQpBACAMp2sgDCINQgqAIgynQXZsRg0ACwsgEKcgCEF/c3IgCyANUXFBBEEFIAtCAYNQGyACIAJB/wFxQQVGGyACIAkbQf8BcUEES3ILIQICfwJAAkACQAJ/AkACQAJAIAMgBWoiBUEATiAFAn9BESALIAKtQgGDfCIKQv//g/6m3uERVg0AGkEQIApC//+Zpuqv4wFWDQAaQQ8gCkL//+iDsd4WVg0AGkEOIApC/7/K84SjAlYNABpBDSAKQv+flKWNHVYNABpBDCAKQv/P28P0AlYNABpBCyAKQv/Hr6AlVg0AGkEKIApC/5Pr3ANWDQAaQQkgCkL/wdcvVg0AGkEIIApC/6ziBFYNABpBByAKQr+EPVYNABpBBiAKQp+NBlYNABpBBSAKQo/OAFYNABpBBCAKQucHVg0AGkEDIApC4wBWDQAaQQJBASAKQglWGwsiAmoiA0ERSHFFBEAgA0EBayIFQRBJDQEgA0EEakEFSQ0CIAJBAUcNBSAAIAZqIgJB5QA6AAEgAiAKp0EwajoAACAAIAZBAnIiBmohAiAFQQBIDQMgBQwECyAKIAAgBmogAmoQhwIgAiADSARAIAAgAmogBmpBMCAFEIMCGgsgACADIAZqIgJqQa7gADsAACACQQJqIQIMCAsgCiAAIAIgBmpBAWoiAmoQhwIgACAGaiIGIAZBAWogAxDPBiADakEuOgAADAcLIAAgBmoiCEGw3AA7AABBAiADayEFIANBAEgEQCAIQQJqQTBBAyAFIAVBA00bQQJrEIMCGgsgCiAAIAIgBmogBWoiAmoQhwIMBgsgAkEtOgAAIAJBAWohAkEBIANrCyIDQeMASg0BIANBCUwEQCACIANBMGo6AAAgBUEfdkEBaiAGaiECDAULIAIgA0EBdEHw1uoAai8AADsAACAFQR92QQJyIAZqIQIMBAsgCiAAIAIgBmoiCGoiCUEBahCHAiAAIAZqIgIgAi0AAToAACACQS46AAEgCUHlADoAASAAIAhBAmoiBmohAiAFQQBIDQEgBQwCCyACIANB5ABuIghBMGo6AAAgAiADIAhB5ABsa0EBdEHw1uoAai8AADsAASAFQR92QQNqIAZqIQIMAgsgAkEtOgAAIAJBAWohAkEBIANrCyIDQeMATARAIANBCUwEQCACIANBMGo6AAAgBUEfdkEBaiAGaiECDAILIAIgA0EBdEHw1uoAai8AADsAACAFQR92QQJyIAZqIQIMAQsgAiADQeQAbiIIQTBqOgAAIAIgAyAIQeQAbGtBAXRB8NbqAGovAAA7AAEgBUEfdkEDaiAGaiECCyAEQaACaiQAIAIMAQtBsNbpAEGz1ukAIApCAFkiBBtBt9bpACAKQv////////8Hg1AiAhshAEEDQQQgBBtBAyACGws2AiQgByAANgIgIAdBAjYCBCAHQaz16QA2AgAgB0IBNwIMIAcgB0Egaq1CgICAgIAhhDcDGCAHIAdBGGo2AgggASgCFCABKAIYIAcQxgEMAQsgAUG89ekAQQQQ9AULIAdBQGskAAuICAIIfwJ+IwBBIGsiBSQAAkACQAJAIAEEQCABQQhrIgcgBygCAEEBaiIDNgIAIANFDQEgASgCACIDQX9GDQIgASADQQFqNgIAIAUgBzYCECAFIAE2AgwgBSABQQhqIgM2AgggBUEUaiEIIwBBIGsiAiQAQfmN9gAtAAAaAkACQAJAAkBBgAFBARD8BSIEBEAgBEH7ADoAACACIAQ2AgggAkGAATYCBCACQQE2AgwgAygCACEGIAMoAgwhCSACQRBqIAJBBGpBvIrAAEEOEJQBIAItABBBBEcEQCACIAIpAxA3AxggAkEYahDyBCEEDAMLIAIoAgwiAyACKAIERgRAIAJBBGogA0EBQQFBARDnAiACKAIMIQMLIAIoAgggA2pBOjoAACACIANBAWoiAzYCDCAGKQMAIQogAyACKAIERgRAIAJBBGogA0EBQQFBARDnAiACKAIMIQMLIAIoAgggA2pB2wA6AAAgAiADQQFqIgM2AgwCQAJAAkAgCQRAIAZBCGohAyAKQn+FQoCBgoSIkKDAgH+DIQpBASEEDAELIAIoAgQgA0YNAQwCCwNAIApQBEADQCAGQUBqIQYgAykDACADQQhqIQNCgIGChIiQoMCAf4MiCkKAgYKEiJCgwIB/UQ0ACyAKQoCBgoSIkKDAgH+FIQoLIAYgCnqnQfgAcWtBCGspAwAhCyAERQRAIAIoAgwiBCACKAIERgRAIAJBBGogBEEBQQFBARDnAiACKAIMIQQLIAIoAgggBGpBLDoAACACIARBAWo2AgwLIAJBBGogCxCgAiIEDQUgCkIBfSAKgyEKQQAhBCAJQQFrIgkNAAsgAigCDCIDIAIoAgRHDQELIAJBBGogA0EBQQFBARDnAiACKAIMIQMLIAIoAgggA2pB3QA6AAAgAiADQQFqIgM2AgwgAyACKAIERgRAIAJBBGogA0EBQQFBARDnAiACKAIMIQMLIAIoAgggA2pB/QA6AAAgAigCCCEEIAIoAgQiBkGAgICAeEcNAQwDC0EBQYABQfCGwAAQ5QUACyAIIAQ2AgQgCCAGNgIAIAggA0EBajYCCCACQSBqJAAMAgsgAigCBCIARQ0AIAIoAgggAEEBEI0GCyACIAQ2AgRB5KPAAEErIAJBBGpBlKrAAEGc0MAAEIUEAAsgASABKAIAQQFrNgIAIAcgBygCAEEBayIBNgIAIAFFBEAgBUEQahCABQsgBSgCGCEBAkAgBSgCFCIEIAUoAhwiAk0EQCABIQMMAQsgAkUEQEEBIQMgASAEQQEQjQYMAQsgASAEQQEgAhDrBSIDRQ0ECyAAIAI2AgQgACADNgIAIAVBIGokAA8LEK4GCwALEK8GAAtBASACQbyXwAAQ5QUAC5MNAQZ/IwBBIGsiBSQAAkACQAJAIAEEQCABQQhrIgYgBigCAEEBaiICNgIAIAJFDQEgASgCACICQX9GDQIgASACQQFqNgIAIAUgBjYCECAFIAE2AgwgBSABQQhqNgIIIAVBFGohByMAQSBrIgQkAEH5jfYALQAAGgJAQYABQQEQ/AUiAgRAIAQgAjYCDCAEQYABNgIIIAQgBEEIajYCFCACQfsAOgAAIARBATYCECAEQQE6ABwgBCAEQRRqNgIYAkACQAJAIARBGGoiA0H/isAAQQ9BtazAAEHFABDoAiICDQAgA0GOi8AAQQRB+qzAAEHyABDoAiICDQAgA0GSi8AAQRdB7K3AAEHDABDoAiICDQAgA0Gpi8AAQQ9Br67AAEHgABDoAiICDQAgA0G4i8AAQQxBj6/AAEHyABDoAiICDQAgA0HEi8AAQQ5BgbDAAEHOABDoAiICDQAgA0HSi8AAQQ5Bz7DAAEHBABDoAiICDQAgA0Hgi8AAQQZBkLHAAEEvEOgCIgINACADQeaLwABBB0G/scAAQc4AEOgCIgINACADQe2LwABBFUGNssAAQaMBEOgCIgINACADQYKMwABBHEGws8AAQSwQ6AIiAg0AIANBnozAAEEcQdyzwABB3wEQ6AIiAg0AIANBuozAAEENQbu1wABB6wAQ6AIiAg0AIANBx4zAAEEMQaa2wABBMBDoAiICDQAgA0HTjMAAQRhB1rbAAEGaARDoAiICDQAgA0HrjMAAQQ9B8LfAAEE/EOgCIgINACADQfqMwABBD0GvuMAAQcQAEOgCIgINACADQYmNwABBDEHzuMAAQf0AEOgCIgINACADQZWNwABBDEHwucAAQccAEOgCIgINACADQaGNwABBCkG3usAAQdgAEOgCIgINACADQauNwABBHEGPu8AAQfoAEOgCIgINACADQceNwABBCEGJvMAAQcsAEOgCIgINACADQc+NwABBBkHUvMAAQcgAEOgCIgINACADQdWNwABBF0GcvcAAQdAAEOgCIgINACADQeyNwABBFEHsvcAAQeQAEOgCIgINACADQYCOwABBCEHQvsAAQcUAEOgCIgINACADQYiOwABBDEGVv8AAQd8AEOgCIgINACADQZSOwABBDEH0v8AAQdgAEOgCIgINACADQaCOwABBCkHMwMAAQdYAEOgCIgINACADQaqOwABBD0GiwcAAQdsAEOgCIgINACADQbmOwABBC0H9wcAAQdcAEOgCIgINACADQcSOwABBC0HUwsAAQdAAEOgCIgINACADQc+OwABBC0Gkw8AAQfUAEOgCIgINACADQdqOwABBEEGZxMAAQdEAEOgCIgINACADQeqOwABBDEHqxMAAQb8BEOgCIgINACADQfaOwABBE0GpxsAAQdQAEOgCIgINACADQYmPwABBEkH9xsAAQekAEOgCIgINACADQZuPwABBEkHmx8AAQdQAEOgCIgINACADQa2PwABBDkG6yMAAQb8BEOgCIgINACADQbuPwABBCkH5ycAAQeQAEOgCIgINACADQcWPwABBCEHdysAAQcEAEOgCIgINACADQc2PwABBCEGey8AAQcgAEOgCIgINACADQdWPwABBCkHmy8AAQcMAEOgCIgINACADQd+PwABBCUGpzMAAQcIAEOgCIgINACADQeiPwABBCUHrzMAAQcIAEOgCIgINACADQfGPwABBD0Gt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CWsiDUEXS0EBIA10QZOAgARxRXINAiAHIARBAWoiBEcNAAsgAyAHNgJMCyADKAI4IgQEQCADKAI8IARBARCNBgsgCCAOQiCIPgIMIAggATYCCCAIIAI2AgQgCCAFNgIADAMLIAMgBDYCTCADQRY2AhwgA0EQaiAMEMAEIANBHGogAygCECADKAIUENUEIQQCQCAFDgIAAAILIAJFDQEgASACQQJ0QQQQjQYMAQsgAiADQThqEIkEIQQLIAMoAjgiAQRAIAMoAjwgAUEBEI0GCyADIAQ2AjAgA0EANgIkIANCgICAgBA3AhwgA0EDOgBYIANBIDYCSCADQQA2AlQgA0H0osAANgJQIANBADYCQCADQQA2AjggAyADQRxqNgJMIANBMGoiASADQThqEOADDQEgCCADKQIcNwIEIAhBDGogA0EkaigCADYCACABEP0DIAhBAzYCAAsgCygCACIBBEAgCiABQQEQjQYLIANB4ABqJAAMAQtB3KrAAEE3IANB3wBqQcyqwABBlKvAABCFBAALAkACQCAGKAIQQQNHBEBBACECQfmN9gAtAAAaQRxBBBD8BSIBRQ0CIAFBADYCCCABQoGAgIAQNwIAIAEgBikCEDcCDCABQRRqIAZBGGopAgA3AgAgAUEIaiEBDAELIAYoAhQhBCAGKAIYIgUgBigCHBAFIQFBASECIARFDQAgBSAEQQEQjQYLIAAgAjYCCCAAIAFBACACGzYCBCAAQQAgASACGzYCACAGQSBqJAAPC0EEQRwQzAYAC+YBAQN/IwBBIGsiASQAAkACQAJAIAAEQCAAQQhrIgMgAygCAEEBaiICNgIAIAJFDQEgACgCACICQX9GDQIgACACQQFqNgIAIAEgAzYCFCABIAA2AhAgASAAQQhqNgIMIAFBgYKACDYAGCABIABBrANqIAFBGGoQPCABKAIEIQIgASgCAA0DIAAgACgCAEEBazYCACADIAMoAgBBAWsiADYCACAARQRAIAFBFGoQgAULIAFBIGokACACDwsQrgYLAAsQrwYACyABIAI2AhxB5KPAAEErIAFBHGpB0M/AAEHwz8AAEIUEAAvNAQEGfyMAQSBrIgEkAAJAAkAgACgCACICQX9GDQAgAkEBdCIDIAJBAWoiBCADIARLGyIDQf////8BSw0AQQQgAyADQQRNGyIDQQN0IgRB/P///wdLDQAgASACBH8gASACQQN0NgIcIAEgACgCBDYCFEEEBUEACzYCGCABQQhqQQQgBCABQRRqENgDIAEoAghBAUcNASABKAIQIQYgASgCDCEFCyAFIAZByLnrABDlBQALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAvNAQEGfyMAQSBrIgEkAAJAAkAgACgCACICQX9GDQAgAkEBdCIDIAJBAWoiBCADIARLGyIDQf////8DSw0AQQQgAyADQQRNGyIDQQJ0IgRB/P///wdLDQAgASACBH8gASACQQJ0NgIcIAEgACgCBDYCFEEEBUEACzYCGCABQQhqQQQgBCABQRRqENgDIAEoAghBAUcNASABKAIQIQYgASgCDCEFCyAFIAZBlLPrABDlBQALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAvNAQEGfyMAQSBrIgEkAAJAAkAgACgCACICQX9GDQAgAkEBdCIDIAJBAWoiBCADIARLGyIDQf////8BSw0AQQQgAyADQQRNGyIDQQN0IgRB/P///wdLDQAgASACBH8gASACQQN0NgIcIAEgACgCBDYCFEEEBUEACzYCGCABQQhqQQQgBCABQRRqENgDIAEoAghBAUcNASABKAIQIQYgASgCDCEFCyAFIAZBlLjrABDlBQALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAvNAQEGfyMAQSBrIgEkAAJAAkAgACgCACICQX9GDQAgAkEBdCIDIAJBAWoiBCADIARLGyIDQf////8ASw0AQQQgAyADQQRNGyIDQQR0IgRB+P///wdLDQAgASACBH8gASACQQR0NgIcIAEgACgCBDYCFEEIBUEACzYCGCABQQhqQQggBCABQRRqENgDIAEoAghBAUcNASABKAIQIQYgASgCDCEFCyAFIAZByMLrABDlBQALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAvrAQEDfyMAQUBqIgMkACADIAI2AhAgAyABNgIMIANBFGogASACEK8BAkACQCADKAIURQRAQQAhAiADKAIcIgFBAEgNAiADKAIYIQUCQCABRQRAQQEhBAwBC0H5jfYALQAAGkEBIQIgAUEBEPwFIgRFDQMLIAQgBSABEKwBIQIgACABNgIIIAAgAjYCBCAAIAE2AgAMAQsgA0EB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i8AAQQZBkLHAAEEvELsEIAEoAsgCBEAgASgCzAIMAQsgAUHAAmogAUGQA2pB5ovAAEEHQb+xwABBzgAQuwQgASgCwAIEQCABKALEAgwBCyABQbgCaiABQZADakHti8AAQRVBjbLAAEGjARC7BCABKAK4AgRAIAEoArwCDAELIAFBsAJqIAFBkANqQYKMwABBHEGws8AAQSwQuwQgASgCsAIEQCABKAK0AgwBCyABQagCaiABQZADakGejMAAQRxB3LPAAEHfARC7BCABKAKoAgRAIAEoAqwCDAELIAFBoAJqIAFBkANqQbqMwABBDUG7tcAAQesAELsEIAEoAqACBEAgASgCpAIMAQsgAUGYAmogAUGQA2pBx4zAAEEMQaa2wABBMBC7BCABKAKYAgRAIAEoApwCDAELIAFBkAJqIAFBkANqQdOMwABBGEHWtsAAQZoBELsEIAEoApACBEAgASgClAIMAQsgAUGIAmogAUGQA2pB64zAAEEPQfC3wABBPxC7BCABKAKIAgRAIAEoAowCDAELIAFBgAJqIAFBkANqQfqMwABBD0GvuMAAQcQAELsEIAEoAoACBEAgASgChAIMAQsgAUH4AWogAUGQA2pBiY3AAEEMQfO4wABB/QAQuwQgASgC+AEEQCABKAL8AQwBCyABQfABaiABQZADakGVjcAAQQxB8LnAAEHHABC7BCABKALwAQRAIAEoAvQBDAELIAFB6AFqIAFBkANqQaGNwABBCkG3usAAQdgAELsEIAEoAugBBEAgASgC7AEMAQsgAUHgAWogAUGQA2pBq43AAEEcQY+7wABB+gAQuwQgASgC4AEEQCABKALkAQwBCyABQdgBaiABQZADakHHjcAAQQhBibzAAEHLABC7BCABKALYAQRAIAEoAtwBDAELIAFB0AFqIAFBkANqQc+NwABBBkHUvMAAQcgAELsEIAEoAtABBEAgASgC1AEMAQsgAUHIAWogAUGQA2pB1Y3AAEEXQZy9wABB0AAQuwQgASgCyAEEQCABKALMAQwBCyABQcABaiABQZADakHsjcAAQRRB7L3AAEHkABC7BCABKALAAQRAIAEoAsQBDAELIAFBuAFqIAFBkANqQYCOwABBCEHQvsAAQcUAELsEIAEoArgBBEAgASgCvAEMAQsgAUGwAWogAUGQA2pBiI7AAEEMQZW/wABB3wAQuwQgASgCsAEEQCABKAK0AQwBCyABQagBaiABQZADakGUjsAAQQxB9L/AAEHYABC7BCABKAKoAQRAIAEoAqwBDAELIAFBoAFqIAFBkANqQaCOwABBCkHMwMAAQdYAELsEIAEoAqABBEAgASgCpAEMAQsgAUGYAWogAUGQA2pBqo7AAEEPQaLBwABB2wAQuwQgASgCmAEEQCABKAKcAQwBCyABQZABaiABQZADakG5jsAAQQtB/cHAAEHXABC7BCABKAKQAQRAIAEoApQBDAELIAFBiAFqIAFBkANqQcSOwABBC0HUwsAAQdAAELsEIAEoAogBBEAgASgCjAEMAQsgAUGAAWogAUGQA2pBz47AAEELQaTDwABB9QAQuwQgASgCgAEEQCABKAKEAQwBCyABQfgAaiABQZADakHajsAAQRBBmcTAAEHRABC7BCABKAJ4BEAgASgCfAwBCyABQfAAaiABQZADakHqjsAAQQxB6sTAAEG/ARC7BCABKAJwBEAgASgCdAwBCyABQegAaiABQZADakH2jsAAQRNBqcbAAEHUABC7BCABKAJoBEAgASgCbAwBCyABQeAAaiABQZADakGJj8AAQRJB/cbAAEHpABC7BCABKAJgBEAgASgCZAwBCyABQdgAaiABQZADakGbj8AAQRJB5sfAAEHUABC7BCABKAJYBEAgASgCXAwBCyABQdAAaiABQZADakGtj8AAQQ5BusjAAEG/ARC7BCABKAJQBEAgASgCVAwBCyABQcgAaiABQZADakG7j8AAQQpB+cnAAEHkABC7BCABKAJIBEAgASgCTAwBCyABQUBrIAFBkANqQcWPwABBCEHdysAAQcEAELsEIAEoAkAEQCABKAJEDAELIAFBOGogAUGQA2pBzY/AAEEIQZ7LwABByAAQuwQgASgCOARAIAEoAjwMAQsgAUEwaiABQZADakHVj8AAQQpB5svAAEHDABC7BCABKAIwBEAgASgCNAwBCyABQShqIAFBkANqQd+PwABBCUGpzMAAQcIAELsEIAEoAigEQCABKAIsDAELIAFBIGogAUGQA2pB6I/AAEEJQevMwABBwgAQuwQgASgCIARAIAEoAiQMAQsgAUEYaiABQZADakHxj8AAQQ9Brc3AAEHIABC7BCABKAIYBEAgASgCHAwBCyABQRBqIAFBkANqQYCQwABBC0H1zcAAQcQAELsEIAEoAhAEQCABKAIUDAELIAFBCGogAUGQA2pBi5DAAEEJQbnOwABBwgAQuwQgASgCCARAIAEoAgwMAQsgASABQZADakGUkMAAQQtB+87AAEE0ELsEIAEoAgBFDQIgASgCBAshAyABKAKUAyIAQYQBSQ0AIAAQAgsgASADNgKYA0Hko8AAQSsgAUGYA2pB0M/AAEHgz8AAEIUEAAsgASgClAMgAUGgA2okACAAIAAoAgBBAWs2AgAgBSAFKAIAQQFrIgA2AgAgAEUEQCAEQQxqEIAFCyAEQRBqJAAPCxCuBgsACxCvBgAL3wEBAn8jAEHQAGsiACQAIABBQGtBAjoAACAAQThqQoKEiJCgwICBAjcDACAAQTBqQoKEiJCgwICBAjcDACAAQShqQoKEiJCgwICBAjcDACAAQSBqQoKEiJCgwICBAjcDACAAQRhqQoKEiJCgwICBAjcDACAAQoKEiJCgwICBAjcDECAAQRBqIgEQiwEgAEGBgoAINgBIIABBCGogASAAQcgAahA8IAAoAgwhASAAKAIIBEAgACABNgJMQeSjwABBKyAAQcwAakHQz8AAQbjRwAAQhQQACyAAQdAAaiQAIAELtQEBA38gASgCDCECAkACQAJAAkACQAJAIAEoAgQOAgABAgsgAg0BQQEhA0EAIQFBASECDAMLIAJFDQELIAAgARCfAg8LIAEoAgAiAigCBCIBQQBIDQEgAigCACEDIAFFBEBBASECQQAhAQwBC0H5jfYALQAAGkEBIQQgAUEBEPwFIgJFDQELIAIgAyABEKwBIQIgACABNgIIIAAgAjYCBCAAIAE2AgAPCyAEIAFByM7BABDlBQALogEBAX8jAEEQayICJAACQAJAIAFFBEAgAEUNAiAAQQhrIgEoAgBBAUYEQCABQQA2AgAgAUF/Rg0CIABBBGsiACAAKAIAQQFrIgA2AgAgAA0CIAFBFEEEEI0GDAILQfarwABBPxCtBgALIABFDQEgAEEIayIAIAAoAgBBAWsiATYCACACIAA2AgwgAQ0AIAJBDGoQoQULIAJBEGokAA8LEK4GAAulAQEBfyMAQUBqIgIkACAAKAIAIQAgAkIANwM4IAJBOGogABAeIAIgAigCPCIANgI0IAIgAigCODYCMCACIAA2AiwgAiACQSxqrUKAgICA0BSENwMgIAJBAjYCDCACQcycwQA2AgggAkIBNwIUIAIgAkEgajYCECABKAIUIAEoAhggAkEIahDGASACKAIsIgEEQCACKAIwIAFBARCNBgsgAkFAayQAC5IBAQJ/IANBCE8EQCAAIAAgA0EDdiIDQQR0IgRqIAAgA0EcbCIFaiADENcDIQAgASABIARqIAEgBWogAxDXAyEBIAIgAiAEaiACIAVqIAMQ1wMhAgsgACACIAEgACgCAC0ADUEBcyIAIAEoAgAtAA1BAXMiAUkiAyABIAIoAgAtAA1BAXMiAklzGyADIAAgAklzGwuLAQEBfwJAIAJBAE4EQAJ/IAMoAgQEQAJAIAMoAggiBEUEQAwBCyADKAIAIAQgASACEOsFDAILCyABIAJFDQAaQfmN9gAtAAAaIAIgARD8BQsiAwRAIAAgAjYCCCAAIAM2AgQgAEEANgIADwsgACACNgIIIAAgATYCBAwBCyAAQQA2AgQLIABBATYCAAufAQEFfwJAIAEoAgAiBBAVIgFBAEgNAAJAIAFFBEBBASEDDAELQfmN9gAtAAAaQQEhAiABQQEQ/AUiA0UNAQsQICIFEBIiBhATIQIgBkGEAU8EQCAGEAILIAIgBCADEBQgAkGEAU8EQCACEAILIAVBhAFPBEAgBRACCyAAIAQQFTYCCCAAIAM2AgQgACABNgIADwsgAiABQYjWwAAQ5QUAC5MBAQR/IAAoAgQhAyAAKAIIIgQEQCADIQEDQCABKAIAIgIEQCABQQRqKAIAIAJBARCNBgsgAUEMaigCACICBEAgAUEQaigCACACQQEQjQYLIAFBGGooAgAiAgRAIAFBHGooAgAgAkEBEI0GCyABQSRqIQEgBEEBayIEDQALCyAAKAIAIgAEQCADIABBJGxBBBCNBgsLhwEBBH8gACgCBCECIAAoAggiAwRAIAIhAQNAAkACQCABKAIADgIAAAELIAFBBGooAgAiBEUNACABQQhqKAIAIARBAnRBBBCNBgsgAUEQaiEBIANBAWsiAw0ACwsgACgCACIBBEAgAiABQQR0QQQQjQYLIAAoAgwiAgRAIAAoAhAgAkEBEI0GCwuLAQEEfyAAKAIAIQIgACABEJMDIAAoAggiBSACIAAoAgwiA2tLBEAgAiAFayIBIAMgAWsiA0sgACgCACIEIAJrIANPcUUEQCAAKAIEIgIgBCABayIEQQJ0aiACIAVBAnRqIAFBAnQQzwYaIAAgBDYCCA8LIAAoAgQiACACQQJ0aiAAIANBAnQQrAEaCwuLAQEEfyAAKAIAIQIgACABEJIDIAAoAggiBSACIAAoAgwiA2tLBEAgAiAFayIBIAMgAWsiA0sgACgCACIEIAJrIANPcUUEQCAAKAIEIgIgBCABayIEQQN0aiACIAVBA3RqIAFBA3QQzwYaIAAgBDYCCA8LIAAoAgQiACACQQN0aiAAIANBA3QQrAEaCwuLAQECfyADQQhPBEAgACAAIANBA3YiA0HgAGwiBGogACADQagBbCIFaiADEN4DIQAgASABIARqIAEgBWogAxDeAyEBIAIgAiAEaiACIAVqIAMQ3gMhAgsgACACIAEgAEEVai0AACIAIAFBFWotAAAiAUkiAyABIAJBFWotAAAiAklzGyADIAAgAklzGwupAQECfyMAQSBrIgIkAAJAAkACfyABLQAAQQJHBEAgASgCCCEDIAEoAgQMAQsgAS0ACyIDQQtPDQEgAkEMaiABQQFqIAMQrwEgAigCDEEBRg0CIAIoAhQhAyACKAIQCyEBIAAgAzYCBCAAIAE2AgAgAkEgaiQADwsgA0EKQci78AAQkwYACyACIAIpAhA3AxhBkIjwAEErIAJBGGpBgIjwAEHYu/AAEIUEAAuUAQIBfwF+IwBBMGsiAiQAAn8gACgCACIAKAIMRQRAIAAgARDLAgwBCyACQQM2AgQgAkGg8+kANgIAIAJCAzcCDCACQoCAgIDAACIDIABBEGqthDcDKCACIAMgAEEMaq2ENwMgIAIgAK1CgICAgOAghDcDGCACIAJBGGo2AgggASgCFCABKAIYIAIQxgELIAJBMGokAAuwAQECfyMAQRBrIgMkACADIAEgAigCDCIEEQEAAkAgAQJ/IAMpAwBC+IKZvZXuxsW5f1EEQEEEIAMpAwhC7bqtts2F1PXjAFENARoLIAMgASAEEQEAQeDw8gAhAkEMIQQgAykDAEL5q7OguIrVrUVSDQEgAykDCELkw5Ceovem3AVSDQEgAUEEaiEBQQgLaigCACEEIAEoAgAhAgsgACAENgIEIAAgAjYCACADQRBqJAALlgEBAn8jAEEQayICJAACQAJAIAAoAjQiAUENTwRAIAAoAgQiAUF/Rg0BC0F/IAFndkEAIAEbIgFBf0YNACACQQhqIAAgAUEBahCLAiACKAIIIgBBgYCAgHhHBEAgAEUNAiAAIAIoAgwQzAYACyACQRBqJAAPC0GEiMAAQRFBsKTAABC3BAALQYSIwABBEUGgpMAAEO8EAAutGAIkfwR+IwBBIGsiDiQAIA4gAjYCECAOIAE2AgwgDiACNgIIIA5BFGohHCMAQfABayIDJAAgDkEIaiIdKAIIIQEgHSgCBCEYIAMQkgQiCjYCKCADQZwBaiICIBggASAYahC2AUH5jfYALQAAGgJAAkBBFEEEEPwFIgEEQCABQoGAgIAQNwIAIAEgAykCnAE3AgggAUEQaiADQaQBaiIGKAIANgIAIAMgATYCLCABIAEoAgAiBEEBajYCACAEQQBIDQEgAkEBIAEoAgwgASgCEBAyIAMgATYCqAEgAiAKEKUDIANBOGogBikCACInNwMAIAMgAykCnAE3AzAgJ6ciEEUEQEEEIREMAwsgASgCECEeIAEoAgwhHyADKAI0IhMoAhAhFSATIQIjAEEwayIEJAACQAJAIANBnAFqIhEgEAR/IAJBFGooAgAiASACQRBqKAIAIgYgASAGSRshByABIAYgASAGSxshBQJAIBBBAUYNACACQRhqIQECQCAQQRhsIghBMGsiD0EYbkEBcQRAIAEhBiACIQEMAQsgAkEsaigCACIGIAJBKGooAgAiDSAGIA1LGyILIAUgBSALSRshBSAGIA0gBiANSRsiBiAHIAYgB0kbIQcgAkEwaiEGCyAPQRhJDQAgAiAIaiEPA0AgBkEsaigCACICIAZBKGooAgAiDSACIA1LGyILIAFBLGooAgAiCCABQShqKAIAIgEgASAISRsiDCAFIAUgDEkbIgUgBSALSRshBSACIA0gAiANSRsiAiAIIAEgASAISxsiASAHIAEgB0kbIgEgASACSxshByAGQRhqIQEgBkEwaiIGIA9HDQALCyAEIAU2AgQgBCAHNgIAIAUgB0kNASARIAU2AgggESAHNgIEQQEFQQALNgIAIARBMGokAAwBCyAEQQI2AgwgBEHYmsIANgIIIARCAjcCFCAEIARBBGqtQoCAgIDAAIQ3AyggBCAErUKAgICAwACENwMgIAQgBEEgajYCECAEQQhqQYCbwgAQrgUACyADKAKcAQRAIAMgAykCoAE3AnAgA0EgaiADQfAAaiAfIB4QrAQgAygCJCIIQQJ0IQECQCAIQf////8DSyABQfz///8HS3INACADKAIgIQJBBCERIAEEQEH5jfYALQAAGkEEIQkgCCEXIAFBBBD8BSIRRQ0BCyATIBBBGGxqIQ9BACAVayEiIApBCGohIyARIAIgARCsASIgIBVBAnRrISQgA0GgAWohDSADQYABaiElIANB8ABqQQFyIRkgA0HnAGohGiADQdsBaiEmQQAhAkEAIQEgEyEJQQshCgJAAkADQAJAAkACQAJAAkAgCkELRgRAIAkgD0YNDUEAIQUgASEEA0AgBSAJaiIHLQAAIgZBB01BAEEBIAZ0QaUBcRtFBEAgBEEBaiEEIA8gCSAFQRhqIgVqRw0BDA8LCyAEIBBPDQIgEyABQRhsaiAFaiIGLQAAIgpBCkYNDSAEQQFqIQEgB0EYaiEJIBogBkEQaikAADcAACADQeAAaiAGQQlqKQAANwMAIAMgBkEBaikAADcDWCACQQFqIQYgAiEHDAELIBogA0HPAGopAAA3AAAgA0HgAGogA0HIAGopAAA3AwAgAyADKQBANwNYIBQhByACIQYgCkEKRg0MCyAZIAMpA1g3AAAgGUEIaiADQeAAaikDADcAACAZQQ9qIBopAAA3AAAgAyAKOgBwIApBCyEKDQMgAyADKQBdNwCNASADIAMpA1g3A4gBIANBGGogJSAfIB4QrAQgA0GcAWogAygCGCADKAIcEGogDSEFIAMoAtABIgRBDU8EQCADKAKkASEFIAMoAqABIQQLIANB4wFqIgIgIyAFIAQQ8AUgA0HWAWogA0GIAWogAhDmASADIAMpANYBNwOIASADICYpAAA3AI0BIAMtAIwBQQFGBEAgAygChAEgAygCgAFrQQVJDQILIAMtAIsBDQEjAEEQayICJABBqI/2ACEEIAJBqI/2ADYCCEHAj/YALQAAQQNHBEAgAiACQQhqNgIMIAJBDGoQdiACKAIIIQQLIAJBEGokACANIQIgAygC0AEiDEENTwRAIAMoAqABIQwgAygCpAEhAgtBASEhIAQiCygCDEUNAkHQj/YAKQMAISogBCkDECEpAkAgDEUEQEIAISdCACEoDAELIAxBAnQhEiAMrSEnQgAhKEEgIQQgAiEFA0AgBSgCACEWAn8gBEH/AXEiG0HgAE0EQCADQQhqIBatIBsQqQQgA0EQaikDACAohCEoIAMpAwggJ4QhJyAEQSBqDAELICggKoUiKEL/////D4MgJyAphSInQiCIfkIgiSAnQv////8PgyAoQiCIfoUhKSAWrSEnQgAhKEEgCyEEIAVBBGohBSASQQRrIhINAAsLIAsoAgQiBSAoICqFIihC/////w+DICcgKYUiJ0IgiH5CIIggKEIgiCAnfoUiJ6dxIQQgJ0IZiEL/AINCgYKEiJCgwIABfiEpIAxBAnQhFiALKAIAIQtBACESA0AgBCALaikAACIoICmFIidCf4UgJ0KBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyInUEUEQANAIAwgCyAneqdBA3YgBGogBXFBdGxqIhtBBGsoAgBGBEAgAiAbQQhrKAIAIBYQzARFDQULICdCAX0gJ4MiJ1BFDQALCyAoIChCAYaDQoCBgoSIkKDAgH+DUEUNAyASQQhqIhIgBGogBXEhBAwACwALIAQgEEHwpcAAEJUEAAtBACEhCyADKALQASICQQ1PBEAgAygCpAEgAkECdEEEEI0GCyAHRSAhcg0AQQohCgJAIAkgD0YNAEEAIQUgASEEAkADQCAFIAlqIgItAAAiB0EHTUEAQQEgB3RBpQFxGw0BIARBAWohBCAJIAVBGGoiBWogD0cNAAsgBCEBDAELAkAgBCAQSQRAIARBAWohByACQRhqIQkgEyABQRhsaiAFaiIBLQAAIgpBCkYEQCAHIQFBCiEKDAQLIANBzwBqIAFBEGopAAA3AAAgA0HIAGogAUEJaikAADcDACADIAFBAWopAAA3A0AgBkEBaiECIAMoAoQBIhQgAygCgAEiAU0NASABICJqIQQgFCABayESICQgAUECdGohBQNAIAQgCEkEQCAFIAUoAgAiAUEgcyABIAFBwQBrQRpJGzYCACAFQQRqIQUgBEEBaiEEIBJBAWsiEg0BDAMLCyAEIAhBjIrAABCVBAALIAQgEEHwpcAAEJUEAAsgByEBIAYhFAwCCyAPIQkLIAggAygCgAEiBSAVayICSwRAICAgAkECdGoiBCAEKAIAIgRBIHMgBCAEQeEAa0EaSRs2AgAgAkEBaiEHIAIgAygChAEiCyAVayIETw0CIAQgCEsNAyAEIAdGBEAgBiECDAILIAtBAnQgBUECdGtBBGshDCAgIAdBAnRqIQUDQCAFIAUoAgAiAkEgcyACIAJBwQBrQRpJGzYCACAFQQRqIQUgDEEEayIMDQALIAYhAgwBCwsgAiAIQZyKwAAQlQQACyAHIARBrIrAABCVBgALIAQgCEGsisAAEJMGAAsgCSABQZiewAAQ5QUAC0H8icAAEJYGAAtBBEEUEMwGAAsACyADKAI8IgEgASgCACIBQQFrNgIAIAFBAUYEQCADQTxqEM4ECyADKAIwIgEEQCADKAI0IAFBGGxBCBCNBgsgAygCLCIBIAEoAgAiAUEBazYCACABQQFGBEAgA0EsahDOBAsgESEBIwBBEGsiAiQAIAJBADYCDCACQoCAgIAQNwIEIAgEQCACQQRqQQAgCEEBQQEQ6gIDQCACQQRqIAEoAgAQwwIgAUEEaiEBIAhBAWsiCA0ACwsgHCACKQIENwIAIBxBCGogAkEMaigCADYCACACQRBqJAAgFwRAIBEgF0ECdEEEEI0GCyADKAIoIgEgASgCACIBQQFrNgIAIAFBAUYEQCADQShqEKsDCyAdKAIAIgEEQCAYIAFBARCNBgsgA0HwAWokACAOKAIYIQECQCAOKAIUIgQgDigCHCIGTQRAIAEhAgwBCyAGRQRAQQEhAiABIARBARCNBgwBCyABIARBASAGEOsFIgINAEEBIAZBvJfAABDlBQALIAAgBjYCBCAAIAI2AgAgDkEgaiQAC5YBAQJ/IwBBEGsiAiQAAkACQCAAKAI0IgFBDU8EQCAAKAIEIgFBf0YNAQtBfyABZ3ZBACABGyIBQX9GDQAgAkEIaiAAIAFBAWoQjgIgAigCCCIAQYGAgIB4RwRAIABFDQIgACACKAIMEMwGAAsgAkEQaiQADwtB8KLBAEERQdDXwQAQtwQAC0HwosEAQRFBkNfBABDvBAALiQEBAX8jAEFAaiIDJAAgAyACNgIEIAMgATYCACADQThqIABBCGopAwA3AwAgA0ECNgIMIANB6PTpADYCCCADQgI3AhQgAyADrUKAgICAwCCENwMoIAMgA0Ewaq1CgICAgNAghDcDICADIAApAwA3AzAgAyADQSBqNgIQIANBCGoQuQMgA0FAayQAC4kBAQF/IwBBQGoiAyQAIAMgAjYCBCADIAE2AgAgA0E4aiAAQQhqKQMANwMAIANBAjYCDCADQYj16QA2AgggA0ICNwIUIAMgA61CgICAgMAghDcDKCADIANBMGqtQoCAgIDQIIQ3AyAgAyAAKQMANwMwIAMgA0EgajYCECADQQhqELkDIANBQGskAAuXAQEDfwJAAkACQCAABEAgAEEIayIDIAMoAgAiAUEBaiICNgIAIAJFDQEgACgCAEF/Rg0CIAAoAiAhAiAAKAIcIQAgAyABNgIAQfmN9gAtAAAaQRRBBBD8BSIBRQ0DIAEgAjYCECABIAA2AgwgAUEANgIIIAFCgYCAgBA3AgAgAUEIag8LEK4GCwALEK8GAAtBBEEUEMwGAAuQCQINfwF+IwBBQGoiBCQAIwBBIGsiBiQAIABBDGoiDkEMaiEJAkBBmI72ACgCAEEBRgRAIAZBGGpBpI72ACkCADcDACAGQZyO9gApAgA3AxAMAQsgBkEQahDRAQsCQCAJIAYoAhRBAnRqKAIAIgAEQCAAIAYoAhxBFGxqIgMtABANAQsgBkIINwIIIAZCADcCAAJ/AkACQCAJIAZBEGoiDCgCBEECdGoiCCgCACIFDQAgDCgCCCIDrUIUfiIPpyEHIA9CIIinIAdB/P///wdLcg0BAkAgB0UEQEEEIQAMAQtB+Y32AC0AABpBBCECIAdBBBD8BSIARQ0CCwJAIAMEQCADQQdxIQtBACEFIANBCE8EQCADQXhxIQogACECA0AgAkGcAWpBADoAACACQYgBakEAOgAAIAJB9ABqQQA6AAAgAkHgAGpBADoAACACQcwAakEAOgAAIAJBOGpBADoAACACQSRqQQA6AAAgAkEQakEAOgAAIAJBoAFqIQIgCiAFQQhqIgVHDQALCyALBEAgBUEUbCAAakEQaiECA0AgAkEAOgAAIAJBFGohAiALQQFrIgsNAAsLIAggCCgCACIFIAAgBRs2AgAgBQ0BIAAhBQwCCyAIIAgoAgAiAiAAIAIbIgU2AgAMAQsgAEEIaiECA0ACQCACQQhqLQAAQQFHDQAgAkEEaygCACIIRQ0AIAIoAgAgCEEEdEEIEI0GCyACQRRqIQIgA0EBayIDDQALIAAgB0EEEI0GCyAFIAwoAgxBFGxqIgAgBikCADcCACAGQQhqKQIAIQ8gAEEBOgAQIABBCGogDzcCACAJIAkoAnxBAWo2AnwgAAwBCyACIAdBrPnAABDlBQALIQMLAkAgAygCAEUEQCADQX82AgAgA0EEaiEHIAMoAgwiCEEEdCELIAMoAgghAiABKQMAIQ9BACEAA0AgACIFIAtHBEAgAEEQaiEAIAIgBWopAwAgD1INAQsLIAcoAgAgCEYEf0EAIQxBACECIwBBIGsiACQAAkACQCAHKAIAIglBf0YNACAJQQF0IgogCUEBaiINIAogDUsbIgpB/////wBLDQBBBCAKIApBBE0bIgpBBHQiDUH4////B0sNACAAIAkEfyAAIAlBBHQ2AhwgACAHKAIENgIUQQgFQQALNgIYIABBCGpBCCANIABBFGoQ2AMgACgCCEEBRw0BIAAoAhAhAiAAKAIMIQwLIAwgAkH0hMEAEOUFAAsgACgCDCECIAcgCjYCACAHIAI2AgQgAEEgaiQAIAMoAggFIAILIAhBBHRqIgAgBSALRyICOgAIIAAgDzcDACADIAhBAWo2AgwgAyADKAIAQQFqNgIAIAJFBEAgDiABEPACGgsgBkEgaiQADAELQej8wAAQygQACyABKQMAIQ8gBEEBNgIcIARBmOrAADYCGCAEQgE3AiQgBCAEQThqrUKAgICA4AeENwMwIAQgDzcDOCAEIARBMGo2AiAgBEEMaiAEQRhqEJ8CIAQoAhAiACAEKAIUEBcgBCgCDCIBBEAgACABQQEQjQYLIARBQGskAAuDAQBBACEDAkAgAkUNAEEBIQADQCABLQAADQECQCABQQFqLQAAQQFGDQAgAUEEai0AAA0AIABBACABQQhqLQAAQQNHGyEDDAILIAAgAk8NASABQRhqLQAAQQNrQf8BcUEBSw0BIABBAWohBCABQTBqIQEgAEECaiEAIAIgBEsNAAsLIAMLgAEBAn8gA0EITwRAIAAgACADQQN2IgNBBHQiBGogACADQRxsIgVqIAMQ6gMhACABIAEgBGogASAFaiADEOoDIQEgAiACIARqIAIgBWogAxDqAyECCyAAIAIgASAAKAIAIgAgASgCACIBSSIDIAEgAigCACICSXMbIAMgACACSXMbC40BAQV/IwBBEGsiAiQAAkACf0G4lPYAKAIAIgFBAk0EQCACQQhqIAEQ7wIgAigCCCEDIAIoAgwMAQsgAUEIayEEIAFB+I/2AEYiAUUEQEEBIQMgBCAEKAIAIgVBAWo2AgAgBUEASA0CC0H4j/YAIAQgARsLIQEgACADNgIAIAAgATYCBCACQRBqJAAPCwALiwEBA38CQAJAAkAgACgCACIAKAIQIgVFDQAgACgCDCEGIAVBA3QhBUEAIQADQCAAIAJLDQMgBigCACABIABBGGxqIAIgAGsgAyAEIAYoAgQoAgwRBQAiB0UNASAGQQhqIQYgACAHaiEAIAVBCGsiBQ0ACwwBC0EAIQALIAAPCyAAIAJBhJnCABCSBgALkwEBBH8jAEEQayICJABBASEEAkAgASgCFCIDQScgASgCGCIFKAIQIgERAAANACACQQRqIAAoAgBBgQIQqAECQCACLQAEQYABRgRAIAMgAigCCCABEQAARQ0BDAILIAMgAi0ADiIAIAJBBGpqIAItAA8gAGsgBSgCDBEDAA0BCyADQScgAREAACEECyACQRBqJAAgBAuGAQECfyMAQUBqIgIkACACIAE2AgwgAiAANgIIIAJBAjYCFCACQbShwAA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgCCENwMoIAIgAkEoajYCGCACQTRqIAJBEGoQnwIgAigCNCEAIAIoAjgiASACKAI8EAQgAARAIAEgAEEBEI0GCyACQUBrJAALiwECAX8BfiMAQTBrIgMkACADIAI2AgQgAyABNgIAIAEgAk0EQCAAIAI2AgQgACABNgIAIANBMGokAA8LIANBAjYCDCADQdiawgA2AgggA0ICNwIUIANCgICAgMAAIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGpBgJvCABCuBQALcQEEfyAAKAIEIQIgACgCCCIDBEAgAiEBA0ACQAJAIAEoAgAOAgAAAQsgAUEEaigCACIERQ0AIAFBCGooAgAgBEECdEEEEI0GCyABQRBqIQEgA0EBayIDDQALCyAAKAIAIgAEQCACIABBBHRBBBCNBgsLfQEDfyAAKAIAIQEgACgCBCICKAIIIQAgAigCACIDBEAgASAAQQFrQXhxakEIaiADEQIACwJAIAFBf0YNACABIAEoAgQiA0EBazYCBCADQQFHDQBBBCAAIABBBE0bIgAgAigCBGpBB2pBACAAa3EiAkUNACABIAIgABCNBgsLgwEBA38CQAJAIAAoAggiBUUNACAAKAIEIQYgBUEDdCEFQQAhAANAIAAgAk0EQCAGKAIAIAEgAEEYbGogAiAAayADIAQgBigCBCgCDBEFACIHRQ0CIAZBCGohBiAAIAdqIQAgBUEIayIFDQEMAwsLIAAgAkGEmcIAEJIGAAtBACEACyAAC58BAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkAgACgCAEEBaw4FAQIDBAUACyABQffO6QBBEhD0BQwFCyABQYnP6QBBEhD0BQwECyABQZvP6QBBDxD0BQwDCyABQarP6QBBFxD0BQwCCyABQcHP6QBBExD0BQwBCyACIABBBGo2AgwgAUHkz+kAQQcgAkEMakHUz+kAELoDCyACQRBqJAALeAEDfyMAQYABayIDJAAgAC0AACEEQQAhAANAIAAgA2pB/wBqIARBD3EiAkEwciACQTdqIAJBCkkbOgAAIABBAWshACAEIgJBBHYhBCACQQ9LDQALIAFBAUG0q/MAQQIgACADakGAAWpBACAAaxCgASADQYABaiQAC3kBA38jAEGAAWsiAyQAIAAtAAAhBEEAIQADQCAAIANqQf8AaiAEQQ9xIgJBMHIgAkHXAGogAkEKSRs6AAAgAEEBayEAIAQiAkEEdiEEIAJBD0sNAAsgAUEBQbSr8wBBAiAAIANqQYABakEAIABrEKABIANBgAFqJAALegIBfgJ/IwBBgAFrIgQkACAAKQMAIQJBACEAA0AgACAEakH/AGogAqdBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQQFrIQAgAkIPViACQgSIIQINAAsgAUEBQbSr8wBBAiAAIARqQYABakEAIABrEKABIARBgAFqJAALeQIBfgJ/IwBBgAFrIgQkACAAKQMAIQJBACEAA0AgACAEakH/AGogAqdBD3EiA0EwciADQTdqIANBCkkbOgAAIABBAWshACACQg9WIAJCBIghAg0ACyABQQFBtKvzAEECIAAgBGpBgAFqQQAgAGsQoAEgBEGAAWokAAt/AQF/IwBBQGoiBCQAIAQgATYCDCAEIAA2AgggBEECNgIUIARB5KHAADYCECAEQgI3AhwgBCAEQThqrUKAgICA0ACENwMwIAQgBEEIaq1CgICAgCCENwMoIAQgAzYCPCAEIAI2AjggBCAEQShqNgIYIARBEGoQtwMgBEFAayQAC4MBAQF/IwBBQGoiAiQAIAIgATYCDCACIAA2AgggAkECNgIUIAJBuNLBADYCECACQgI3AhwgAiACQThqrUKAgICA0ACENwMwIAIgAkEIaq1CgICAgJAVhDcDKCACQQM2AjwgAkHA0+kANgI4IAIgAkEo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ASA+QQA2AjggPkE7akEANgAAID5BAjYCSCA+QQM6AEQgPkEDNgJAID5BAjoAPyA+QTBqIAopAwA3AwAgPkEoaiAiKQMANwMAID5BIGogHykDADcDACA+QRhqICApAwA3AwAgPkEQaiAhKQMANwMAID5BCGogAykDADcDACA+IAApA4gJNwMAID5BAzoAgAEgPkH8AGogBCgCADYCACA+QfQAaiAGKQIANwIAID5B7ABqIAcpAgA3AgAgPkHkAGogBSkCADcCACA+QdwAaiAIKQIANwIAID5B1ABqIAkpAgA3AgAgPiAAKQIYNwJMID4gAC8AFTsAgQEgPkGDAWogCy0AADoAACA+QcsBakEANgAAID5BATYChAEgPkEANgLIASA+QQM6ANQBID5BAjoAzwEgPkECNgLYASA+QQM2AtABID4gACkCGDcC3AEgPkHkAWogCSkCADcCACA+QewBaiAIKQIANwIAID5B9AFqIAUpAgA3AgAgPkH8AWogBykCADcCACA+QYQCaiAGKQIANwIAID5BjAJqIAQoAgA2AgAgPkEDOgCQAiA+QZMCaiALLQAAOgAAID4gAC8AFTsAkQIgPkEBNgKUAiAAQYAEakGl9MEAQbP0wQAQtwFB+Y32AC0AABpBsANBCBD8BSIDRQ0EIABB0AhqQbP0wQBBuPTBABCGASAMQbj0wQBBu/TBABCGASADQaACakG79MEAQbz0wQAQhgEgA0EANgI4IANBO2pBADYAACADQQI2AkggA0EDOgBEIANBAzYCQCADQQI6AD8gA0EwaiAAQYAJaikDADcDACADQShqIABB+AhqKQMANwMAIANBIGogAEHwCGopAwA3AwAgA0EYaiAAQegIaikDADcDACADQRBqIABB4AhqKQMANwMAIANBCGogAEHYCGopAwA3AwAgAyAAKQPQCDcDACADQQM6AIABIANB/ABqIAQoAgA2AgAgA0H0AGogBikCADcCACADQewAaiAHKQIANwIAIANB5ABqIAUpAgA3AgAgA0HcAGogCCkCADcCACADQdQAaiAJKQIANwIAIAMgACkCGDcCTCADIAAvABU7AIEBIANBgwFqIAstAAA6AAAgA0EBNgKEASADQcsBakEANgAAIANBADYCyAEgA0EDOgDUASADQQI6AM8BIANBAjYC2AEgA0EDNgLQASADQcABaiAKKQMANwMAIANBuAFqICIpAwA3AwAgA0GwAWogHykDADcDACADQagBaiAgKQMANwMAIANBoAFqICEpAwA3AwAgA0GYAWogAEGQCWopAwA3AwAgAyAAKQOICTcDkAEgA0GMAmogBCgCADYCACADQYQCaiAGKQIANwIAIANB/AFqIAcpAgA3AgAgA0H0AWogBSkCADcCACADQewBaiAIKQIANwIAIANB5AFqIAkpAgA3AgAgAyAAKQIYNwLcASADQQM6AJACIANBkwJqIAstAAA6AAAgAyAALwAVOwCRAiADQQE2ApQCIANB2wJqQQA2AAAgA0EANgLYAiADQQI2AugCIANBAzoA5AIgA0EDNgLgAiADQQI6AN8CIANBnANqIgwgBCgCADYCACADQZQDaiAGKQIANwIAIANBjANqIAcpAgA3AgAgA0GEA2ogBSkCADcCACADQfwCaiAIKQIANwIAIANB9AJqIAkpAgA3AgAgAyAAKQIYNwLsAiADQQM6AKADIANBowNqIAstAAA6AAAgAyAALwAVOwChAyADQQE2AqQDIABBjARqQbz0wQBByPTBABC3AQJAIAMoAugCQX5xQQJGDQAgDCgCACIEQQ1JDQAgAygC8AIgBEECdEEEEI0GC0H5jfYALQAAGkGwA0EIEPwFIgRFDQQgAEHQCGpByPTBAEHN9MEAEIYBIABBiAlqQbj0wQBBu/TBABCGASAEQaACakHN9MEAQc/0wQAQhgEgBEEANgI4IARBO2pBADYAACAEQQI2AkggBEEDOgBEIARBAzYCQCAEQQI6AD8gBEEwaiAAQYAJaikDADcDACAEQShqIABB+AhqKQMANwMAIARBIGogAEHwCGopAwA3AwAgBEEYaiAAQegIaikDADcDACAEQRBqIABB4AhqKQMANwMAIARBCGogAEHYCGopAwA3AwAgBCAAKQPQCDcDACAEQQM6AIABIARB/ABqIABByABqIgYoAgA2AgAgBEH0AGogAEFAayIHKQIANwIAIARB7ABqIABBOGoiBSkCADcCACAEQeQAaiAAQTBqIggpAgA3AgAgBEHcAGogAEEoaiIJKQIANwIAIARB1ABqIABBIGoiCykCADcCACAEIAApAhg3AkwgBCAALwAVOwCBASAEQYMBaiAAQRdqIgwtAAA6AAAgBEEBNgKEASAEQcsBakEANgAAIARBADYCyAEgBEEDOgDUASAEQQI6AM8BIARBAjYC2AEgBEEDNgLQASAEQcABaiAAQbgJaikDADcDACAEQbgBaiAAQbAJaikDADcDACAEQbABaiAAQagJaikDADcDACAEQagBaiAAQaAJaikDADcDACAEQaABaiAAQZgJaikDADcDACAEQZgBaiAAQZAJaikDADcDACAEIAApA4gJNwOQASAEQYwCaiAGKAIANgIAIARBhAJqIAcpAgA3AgAgBEH8AWogBSkCADcCACAEQfQBaiAIKQIANwIAIARB7AFqIAkpAgA3AgAgBEHkAWogCykCADcCACAEIAApAhg3AtwBIARBAzoAkAIgBEGTAmogDC0AADoAACAEIAAvABU7AJECIARBATYClAIgBEHbAmpBADYAACAEQQA2AtgCIARBAjYC6AIgBEEDOgDkAiAEQQM2AuACIARBAjoA3wIgBEGcA2oiCiAGKAIANgIAIARBlANqIAcpAgA3AgAgBEGMA2ogBSkCADcCACAEQYQDaiAIKQIANwIAIARB/AJqIAkpAgA3AgAgBEH0AmogCykCADcCACAEIAApAhg3AuwCIARBAzoAoAMgBEGjA2ogDC0AADoAACAEIAAvABU7AKEDIARBATYCpAMgAEGYBGpBvPTBAEHI9MEAELcBAkAgBCgC6AJBfnFBAkYNACAKKAIAIgZBDUkNACAEKALwAiAGQQJ0QQQQjQYLQfmN9gAtAAAaQbADQQgQ/AUiBkUNBCAAQdAIakGz9MEAQbj0wQAQhgEgAEGICWpBz/TBAEHS9MEAEIYBIAZBoAJqQc30wQBBz/TBABCGASAGQQA2AjggBkE7akEANgAAIAZBAjYCSCAGQQM6AEQgBkEDNgJAIAZBAjoAPyAGQTBqIABBgAlqKQMANwMAIAZBKGogAEH4CGopAwA3AwAgBkEgaiAAQfAIaikDADcDACAGQRhqIABB6AhqKQMANwMAIAZBEGogAEHgCGopAwA3AwAgBkEIaiAAQdgIaikDADcDACAGIAApA9AINwMAIAZBAzoAgAEgBkH8AGogAEHIAGoiBygCADYCACAGQfQAaiAAQUBrIgUpAgA3AgAgBkHsAGogAEE4aiIIKQIANwIAIAZB5ABqIABBMGoiCSkCADcCACAGQdwAaiAAQShqIgspAgA3AgAgBkHUAGog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CGogAEHYCGopAwA3AwAgBSAAKQPQCDcDACAFQQM6AIABIAVB/ABqIABByABqIggoAgA2AgAgBUH0AGogAEFAayIJKQIANwIAIAVB7ABqIABBOGoiCykCADcCACAFQeQAaiAAQTBqIgwpAgA3AgAgBUHcAGogAEEoaiIKKQIANwIAIAVB1ABqIABBIGoiIikCADcCACAFIAApAhg3AkwgBSAALwAVOwCBASAFQYMBaiAAQRdqIh8tAAA6AAAgBUEBNgKEASAFQcsBakEANgAAIAVBADYCyAEgBUEDOgDUASAFQQI6AM8BIAVBAjYC2AEgBUEDNgLQASAFQcABaiAAQbgJaikDADcDACAFQbgBaiAAQbAJaikDADcDACAFQbABaiAAQagJaikDADcDACAFQagBaiAAQaAJaikDADcDACAFQaABaiAAQZgJaikDADcDACAFQZgBaiAAQZAJaikDADcDACAFIAApA4gJNwOQASAFQYwCaiAIKAIANgIAIAVBhAJqIAkpAgA3AgAgBUH8AWogCykCADcCACAFQfQBaiAMKQIANwIAIAVB7AFqIAopAgA3AgAgBUHkAWogIikCADcCACAFIAApAhg3AtwBIAVBAzoAkAIgBUGTAmogHy0AADoAACAFIAAvABU7AJECIAVBATYClAIgBUHbAmpBADYAACAFQQA2AtgCIAVBAjYC6AIgBUEDOgDkAiAFQQM2AuACIAVBAjoA3wIgBUGcA2oiICAIKAIANgIAIAVBlANqIAkpAgA3AgAgBUGMA2ogCykCADcCACAFQYQDaiAMKQIANwIAIAVB/AJqIAopAgA3AgAgBUH0AmogIikCADcCACAFIAApAhg3AuwCIAVBAzoAoAMgBUGjA2ogHy0AADoAACAFIAAvABU7AKEDIAVBATYCpAMgAEG8BGpBvPTBAEHI9MEAELcBAkAgBSgC6AJBfnFBAkYNACAgKAIAIghBDUkNACAFKALwAiAIQQJ0QQQQjQYLQfmN9gAtAAAaQaACQQgQ/AUiIkUNAiAAQYgJaiInQdb0wQBB2/TBABCGASAiQZABakHb9MEAQd70wQAQhgEgIkEANgI4ICJBO2pBADYAACAiQQI2AkggIkEDOgBEICJBAzYCQCAiQQI6AD8gIkEwaiAAQbgJaiIvKQMANwMAICJBKGogAEGwCWoiKikDADcDACAiQSBqIABBqAlqIispAwA3AwAgIkEYaiAAQaAJaiIsKQMANwMAICJBEGogAEGYCWoiMikDADcDACAiQQhqIABBkAlqIjMpAwA3AwAgIiAAKQOICTcDACAiQQM6AIABICJB/ABqIABByABqIgkoAgA2AgAgIkH0AGogAEFAayILKQIANwIAICJB7ABqIABBOGoiDCkCADcCACAiQeQAaiAAQTBqIgopAgA3AgAgIkHcAGogAEEoaiIfKQIANwIAICJB1ABqIABBIGoiICkCADcCACAiIAApAhg3AkwgIiAALwAVOwCBASAiQYMBaiAAQRdqIiEtAAA6AAAgIkHLAWpBADYAACAiQQE2AoQBICJBADYCyAEgIkEDOgDUASAiQQI6AM8BICJBAjYC2AEgIkEDNgLQASAiIAApAhg3AtwBICJB5AFqICApAgA3AgAgIkHsAWogHykCADcCACAiQfQBaiAKKQIANwIAICJB/AFqIAwpAgA3AgAgIkGEAmogCykCADcCACAiQYwCaiAJKAIANgIAICJBAzoAkAIgIkGTAmogIS0AADoAACAiIAAvABU7AJECICJBATYClAIgAEHIBGpB3vTBAEHn9MEAELcBQfmN9gAtAAAaQbADQQgQ/AUiCEUNBCAAQdAIakHn9MEAQej0wQAQhgEgJ0Ho9MEAQen0wQAQhgEgCEGgAmpB6fTBAEHq9MEAEIYBIAhBADYCOCAIQTtqQQA2AAAgCEECNgJIIAhBAzoARCAIQQM2AkAgCEECOgA/IAhBMGogAEGACWopAwA3AwAgCEEoaiAAQfgIaikDADcDACAIQSBqIABB8AhqKQMANwMAIAhBGGogAEHoCGopAwA3AwAgCEEQaiAAQeAIaikDADcDACAIQQhqIABB2AhqKQMANwMAIAggACkD0Ag3AwAgCEEDOgCAASAIQfwAaiAJKAIANgIAIAhB9ABqIAspAgA3AgAgCEHsAGogDCkCADcCACAIQeQAaiAKKQIANwIAIAhB3ABqIB8pAgA3AgAgCEHUAGogICkCADcCACAIIAApAhg3AkwgCCAALwAVOwCBASAIQYMBaiAhLQAAOgAAIAhBATYChAEgCEHLAWpBADYAACAIQQA2AsgBIAhBAzoA1AEgCEECOgDPASAIQQI2AtgBIAhBAzYC0AEgCEHAAWogLykDADcDACAI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IDMpAwA3AwAgIUEgaiA0KQMANwMAICFBGGogNSkDADcDACAhQRBqIDcpAwA3AwAgIUEIaiALKQMANwMAICEgACkDiAk3AwAgIUEDOgCAASAhQfwAaiAMKAIANgIAICFB9ABqIAopAgA3AgAgIUHsAGogJykCADcCACAhQeQAaiAvKQIANwIAICFB3ABqICopAgA3AgAgIUHUAGogKykCADcCACAhIAApAhg3AkwgISAALwAVOwCBASAhQYMBaiAsLQAAOgAAICFBywFqQQA2AAAgIUEBNgKEASAhQQA2AsgBICFBAzoA1AEgIUECOgDPASAhQQI2AtgBICFBAzYC0AEgISAAKQIYNwLcASAhQeQBaiArKQIANwIAICFB7AFqICopAgA3AgAgIUH0AWogLykCADcCACAhQfwBaiAnKQIANwIAICFBhAJqIAopAgA3AgAgIUGMAmogDCgCADYCACAhQQM6AJACICFBkwJqICwtAAA6AAAgISAALwAVOwCRAiAhQQE2ApQCIABBhAVqQY/1wQBBlfXBABC3AUH5jfYALQAAGkGwA0EIEPwFIgtFDQQgAEHQCGpBlfXBAEGY9cEAEIYBIDJBmPXBAEGa9cEAEIYBIAtBoAJqQZr1wQBBnvXBABCGASALQQA2AjggC0E7akEANgAAIAtBAjYCSCALQQM6AEQgC0EDNgJAIAtBAjoAPyALQTBqIABBgAlqKQMANwMAIAtBKGogAEH4CGopAwA3AwAgC0EgaiAAQfAIaikDADcDACALQRhqIABB6AhqKQMANwMAIAtBEGogAEHgCGopAwA3AwAgC0EIaiAAQdgIaikDADcDACALIAApA9AINwMAIAtBAzoAgAEgC0H8AGogDCgCADYCACALQfQAaiAKKQIANwIAIAtB7ABqICcpAgA3AgAgC0HkAGogLykCADcCACALQdwAaiAqKQIANwIAIAtB1ABqICspAgA3AgAgCyAAKQIYNwJMIAsgAC8AFTsAgQEgC0GDAWogLC0AADoAACALQQE2AoQBIAtBywFqQQA2AAAgC0EANgLIASALQQM6ANQBIAtBAjoAzwEgC0ECNgLYASALQQM2AtABIAtBwAFqIDgpAwA3AwAgC0G4AWogMykDADcDACALQbABaiA0KQMANwMAIAtBqAFqIDUpAwA3AwAgC0GgAWogNykDADcD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QewAaiAXKQIANwIAICpB5ABqIB0pAgA3AgAgKkHcAGogGCkCADcCACAqQdQAaiAZKQIANwIAICogACkCGDcCTCAqIAAvABU7AIEBICpBgwFqIBotAAA6AAAgKkHLAWpBADYAACAqQQE2AoQBICpBADYCyAEgKkEDOgDUASAqQQI6AM8BICpBAjYC2AEgKkEDNgLQASAqIAApAhg3AtwBICpB5AFqIBkpAgA3AgAgKkHsAWogGCkCADcCACAqQfQBaiAdKQIANwIAICpB/AFqIBcpAgA3AgAgKkGEAmogHCkCADcCACAqQYwCaiAKKAIANgIAICpBAzoAkAIgKkGTAmogGi0AADoAACAqIAAvABU7AJECICpBATYClAIgAEG0BWpB3PXBAEHp9cEAELcBQfmN9gAtAAAaQaACQQgQ/AUiK0UNAiAmQc71wQBB0vXBABCGASArQZABakHp9cEAQez1wQAQhgEgK0EANgI4ICtBO2pBADYAACArQQI2AkggK0EDOgBEICtBAzYCQCArQQI6AD8gK0EwaiAoKQMANwMAICtBKGogKSkDADcDACArQSBqIC0pAwA3AwAgK0EYaiAuKQMANwMAICtBEGogMCkDADcDACArQQhqIDEpAwA3AwAgKyAAKQOICTcDACArQQM6AIABICtB/ABqIAooAgA2AgAgK0H0AGogHCkCADcCACArQewAaiAXKQIANwIAICtB5ABqIB0pAgA3AgAgK0HcAGogGCkCADcCACArQdQAaiAZKQIANwIAICsgACkCGDcCTCArIAAvABU7AIEBICtBgwFqIBotAAA6AAAgK0HLAWpBADYAACArQQE2AoQBICtBADYCyAEgK0EDOgDUASArQQI6AM8BICtBAjYC2AEgK0EDNgLQASArIAApAhg3AtwBICtB5AFqIBkpAgA3AgAgK0HsAWogGCkCADcCACArQfQBaiAdKQIANwIAICtB/AFqIBcpAgA3AgAgK0GEAmogHCkCADcCACArQYwCaiAKKAIANgIAICtBAzoAkAIgK0GTAmogGi0AADoAACArIAAvABU7AJECICtBATYClAIgAEHABWpB7PXBAEHy9cEAELcBQfmN9gAtAAAaQaACQQgQ/AUiLEUNAiAmQc71wQBB0vXBABCGASAsQZABakHy9cEAQfb1wQAQhgEgLEEANgI4ICxB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AD8gJkEwaiBBKQMANwMAICZBKGogQikDADcDACAmQSBqIEMpAwA3AwAgJkEYaiBEKQMANwMAICZBEGogRSkDADcDACAmQQhqIEApAwA3AwAgJiAAKQOICTcDACAmQQM6AIABICZB/ABqIAooAgA2AgAgJkH0AGogEykCADcCACAmQewAaiARKQIANwIAICZB5ABqIBQpAgA3AgAgJkHcAGogFSkCADcCACAmQdQAaiAbKQIANwIAICYgACkCGDcCTCAmIAAvABU7AIEBICZBgwFqIBYtAAA6AAAgJkHLAWpBADYAACAmQQE2AoQBICZBADYCyAEgJkEDOgDUASAmQQI6AM8BICZBAjYC2AEgJkEDNgLQASAmIAApAhg3AtwBICZB5AFqIBspAgA3AgAgJkHsAWogFSkCADcCACAmQfQBaiAUKQIANwIAICZB/AFqIBEpAgA3AgAgJkGEAmogEykCADcCACAmQYwCaiAKKAIANgIAICZBAzoAkAIgJkGTAmogFi0AADoAACAmIAAvABU7AJECICZBATYClAIgAEGMB2pBzffBAEHT98EAELcBQfmN9gAtAAAaQaACQQgQ/AUiKEUNAiAjQdP3wQBB1/fBABCGASAoQZABakHX98EAQdj3wQAQhgEgKEEANgI4IChBO2pBADYAACAoQQI2AkggKEEDOgBEIChBAzYCQCAoQQI6AD8gKEEwaiBBKQMANwMAIChBKGogQikDADcDACAoQSBqIEMpAwA3AwAgKEEYaiBEKQMANwMAIChBEGogRSkDADcDACAoQQhqIEApAwA3AwAgKCAAKQOICTcDACAoQQM6AIABIChB/ABqIAooAgA2AgAgKEH0AGogEykCADcCACAoQewAaiARKQIANwIAIChB5ABqIBQpAgA3AgAgKEHcAGogFSkCADcCACAoQdQAaiAbKQIANwIAICggACkCGDcCTCAoIAAvABU7AIEBIChBgwFqIBYtAAA6AAAgKEHLAWpBADYAACAoQQE2AoQBIChBADYCyAEgKEEDOgDUASAoQQI6AM8BIChBAjYC2AEgKEEDNgLQASAoIAApAhg3AtwBIChB5AFqIBspAgA3AgAgKEHsAWogFSkCADcCACAoQfQBaiAUKQIANwIAIChB/AFqIBEpAgA3AgAgKEGEAmogEykCADcCACAoQYwCaiAKKAIANgIAIChBAzoAkAIgKEGTAmogFi0AADoAACAoIAAvABU7AJECIChBATYClAIgAEGYB2pB2PfBAEHe98EAELcBQfmN9gAtAAAaQaACQQgQ/AUiKUUNAiAjQd73wQBB4vfBABCGASApQZABakHX98EAQdj3wQAQhgEgKUEANgI4IClBO2pBADYAACApQQI2AkggKUEDOgBEIClBAzYCQCApQQI6AD8gKUEwaiBBKQMANwMAIClBKGogQikDADcDACApQSBqIEMpAwA3AwAgKUEYaiBEKQMANwMAIClBEGogRSkDADcDACApQQhqIEApAwA3AwAgKSAAKQOICTcDACApQQM6AIABIClB/ABqIAooAgA2AgAgKUH0AGogEykCADcCACApQewAaiARKQIANwIAIClB5ABqIBQpAgA3AgAgKUHcAGogFSkCADcCACApQdQAaiAbKQIANwIAICkgACkCGDcCTCApIAAvABU7AIEBIClBgwFqIBYtAAA6AAAgKUHLAWpBADYAACApQQE2AoQBIClBADYCyAEgKUEDOgDUASApQQI6AM8BIClBAjYC2AEgKUEDNgLQASApIAApAhg3AtwBIClB5AFqIBspAgA3AgAgKUHsAWogFSkCADcCACApQfQBaiAUKQIANwIAIClB/AFqIBEpAgA3AgAgKUGEAmogEykCADcCACApQYwCaiAKKAIANgIAIClBAzoAkAIgKUGTAmogFi0AADoAACApIAAvABU7AJECIClBATYClAIgAEGkB2pB4vfBAEHo98EAELcBQfmN9gAtAAAaQaACQQgQ/AUiLUUNAiAjQdP3wQBB1/fBABCGASAtQZABakHX98EAQdj3wQAQhgEgLUEANgI4IC1BO2pBADYAACAtQQI2AkggLUEDOgBEIC1BAzYCQCAtQQI6AD8gLUEwaiBBKQMANwMAIC1BKGogQikDADcDACAtQSBqIEMpAwA3AwAgLUEYaiBEKQMANwMAIC1BEGogRSkDADcDACAtQQhqIEApAwA3AwAgLSAAKQOICTcDACAtQQM6AIABIC1B/ABqIAooAgA2AgAgLUH0AGogEykCADcCACAtQewAaiARKQIANwIAIC1B5ABqIBQpAgA3AgAgLUHcAGogFSkCADcCACAtQdQAaiAbKQIANwIAIC0gACkCGDcCTCAtIAAvABU7AIEBIC1B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AgA3AgAgMSAAKQIYNwJMIDEgAC8AFTsAgQEgMUGDAWogFi0AADoAACAxQcsBakEANgAAIDFBATYChAEgMUEANgLIASAxQQM6ANQBIDFBAjoAzwEgMUECNgLYASAxQQM2AtABIDEgACkCGDcC3AEgMUHkAWogGykCADcCACAxQewBaiAVKQIANwIAIDFB9AFqIBQpAgA3AgAgMUH8AWogESkCADcCACAxQYQCaiATKQIANwIAIDFBjAJqIAooAgA2AgAgMUEDOgCQAiAxQZMCaiAWLQAAOgAAIDEgAC8AFTsAkQIgMUEBNgKUAiAAQeAHakGi+MEAQa34wQAQtwFB+Y32AC0AABpBsANBCBD8BSIKRQ0EIABB0AhqQa34wQBBsPjBABCGASAjQbPowQBBtejBABCGASAKQaACakG+8cEAQcHxwQAQhgEgCkEANgI4IApBO2pBADYAACAKQQI2AkggCkEDOgBEIApBAzYCQCAKQQI6AD8gCkEwaiAAQYAJaikDADcDACAKQShqIABB+AhqKQMANwMAIApBIGogAEHwCGopAwA3AwAgCkEYaiAAQegIaikDADcDACAKQRBqIABB4AhqKQMANwMAIApBCGogAEHYCGopAwA3AwAgCiAAKQPQCDcDACAKQQM6AIABIApB/ABqIFwoAgA2AgAgCkH0AGogEykCADcCACAKQewAaiARKQIANwIAIApB5ABqIBQpAgA3AgAgCkHcAGogFSkCADcCACAKQdQAaiAbKQIANwIAIAogACkCGDcCTCAKIAAvABU7AIEBIApBgwFqIBYtAAA6AAAgCkEBNgKEASAKQcsBakEANgAAIApBADYCyAEgCkEDOgDUASAKQQI6AM8BIApBAjYC2AEgCkEDNgLQASAKQcABaiBBKQMANwMAIApBuAFqIEIpAwA3AwAgCkGwAWogQykDADcDACAKQagBaiBEKQMANwMAIApBoAFqIEUpAwA3AwAgCkGYAWogQCkDADcDACAKIAApA4gJNwOQASAKQYwCaiBcKAIANgIAIApBhAJqIBMpAgA3AgAgCkH8AWogESkCADcCACAKQfQBaiAUKQIANwIAIApB7AFqIBUpAgA3AgAgCkHkAWogGykCADcCACAKIAApAhg3AtwBIApBAzoAkAIgCkGTAmogFi0AADoAACAKIAAvABU7AJECIApB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I0E7akEANgAAICNBAjYCSCAjQQM6AEQgI0EDNgJAICNBAjoAPyAjQTBqIF8pAwA3AwAgI0EoaiBgKQMANwMAICNBIGogYSkDADcDACAjQRhqIGIpAwA3AwAgI0EQaiBjKQMANwMAICNBCGogXikDADcDACAjIAApA4gJNwMAICNBAzoAgAEgI0H8AGogQigCADYCACAjQfQAaiBAKQIANwIAICNB7ABqIEMpAgA3AgAgI0HkAGogRCkCADcCACAjQdwAaiBFKQIANwIAICNB1ABqIEEpAgA3AgAgIyAAKQIYNwJMICMgAC8AFTsAgQEgI0GDAWogXC0AADoAACAjQcsBakEANgAAICNBATYChAEgI0EANgLIASAjQQM6ANQBICNBAjoAzwEgI0ECNgLYASAjQQM2AtABICMgACkCGDcC3AEgI0HkAWogQSkCADcCACAjQewBaiBFKQIANwIAICNB9AFqIEQpAgA3AgAgI0H8AWogQykCADcCACAjQYQCaiBAKQIANwIAICNBjAJqIEIoAgA2AgAgI0EDOgCQAiAjQZMCaiBcLQAAOgAAICMgAC8AFTsAkQIgI0EBNgKUAiBdQev4wQBB8vjBABC3ASABQQM2AgggASAkNgIEIAFBBDYCACABQQE2AiAgASBGNgIcIAFBAjYCGCABQQE2AjggASBHNgI0IAFBAjYCMCABIAApAgg3AgwgAUEUaiAAQRBqKAIANgIAIAEgACkCgAE3AiQgAUEsaiAAQYgBaigCADYCACABIAApAowBNwI8IAFBxABqIABBlAFqKAIANgIAIAFBATYCUCABIEg2AkwgAUECNgJIIAFBAjYCYCABIEk2AmQgAUEBNgJoIAFBAjYCeCABIEo2AnwgAUEBNgKAASABIAApApgBNwJUIAFB3ABqIABBoAFqKAIANgIAIAEgACkCpAE3AmwgAUH0AGogAEGsAWooAgA2AgAgAUGMAWogAEG4AWooAgA2AgAgASAAKQKwATcChAEgAUEFNgKYASABIAI2ApQBIAFBBjYCkAEgAUEDNgKwASABIA42AqwBIAFBBDYCqAEgAUEDNgLIASABIA82AsQBIAFBBDYCwAEgASAAKQK8ATcCnAEgAUGkAWogAEHEAWooAgA2AgAgASAAKQLIATcCtAEgAUG8AWogAEHQAWooAgA2AgAgASAAKQLUATcCzAEgAUHUAWogAEHcAWooAgA2AgAgAUEDNgLgASABIBA2AtwBIAFBBDYC2AEgAUHsAWogAEHoAWooAgA2AgAgASAAKQLgATcC5AEgAUEDNgL4ASABIBI2AvQBIAFBBDYC8AEgAUGEAmogAEH0AWooAgA2AgAgASAAKQLsATcC/AEgAUEBNgKQAiABIEs2AowCIAFBAjYCiAIgAUGcAmogAEGAAmooAgA2AgAgASAAKQL4ATcClAIgAUEBNgKoAiABIEw2AqQCIAFBAjYCoAIgAUG0AmogAEGMAmooAgA2AgAgASAAKQKEAjcCrAIgAUEDNgLAAiABICU2ArwCIAFBBDYCuAIgAUHMAmogAEGYAmooAgA2AgAgASAAKQKQAjcCxAIgAUEBNgLYAiABIE02AtQCIAFBAjYC0AIgAUHkAmogAEGkAmooAgA2AgAgASAAKQKcAjcC3AIgAUEBNgLwAiABIE42AuwCIAFBAjYC6AIgAUH8AmogAEGwAmooAgA2AgAgASAAKQKoAjcC9AIgAUEBNgKIAyABIE82AoQDIAFBAjYCgAMgAUGUA2ogAEG8AmooAgA2AgAgASAAKQK0AjcCjAMgAUEBNgKgAyABIFA2ApwDIAFBAjYCmAMgAUGsA2ogAEHIAmooAgA2AgAgASAAKQLAAjcCpAMgAUEBNgK4AyABIFE2ArQDIAFBAjYCsAMgAUHEA2ogAEHUAmooAgA2AgAgASAAKQLMAjcCvAMgAUEBNgLQAyABIFI2AswDIAFBAjYCyAMgAUHcA2ogAEHgAmooAgA2AgAgASAAKQLYAjcC1AMgAUEBNgLoAyABIFM2AuQDIAFBAjYC4AMgAUH0A2ogAEHsAmooAgA2AgAgASAAKQLkAjcC7AMgAUEBNgKABCABIFQ2AvwDIAFBAjYC+AMgAUGMBGogAEH4AmooAgA2AgAgASAAKQLwAjcChAQgAUEBNgKYBCABIFU2ApQEIAFBAjYCkAQgAUGkBGogAEGEA2ooAgA2AgAgASAAKQL8AjcCnAQgAUEBNgKwBCABIFY2AqwEIAFBAjYCqAQgAUG8BGogAEGQA2ooAgA2AgAgASAAKQKIAzcCtAQgAUEDNgLIBCABIDY2AsQEIAFBBDYCwAQgAUHUBGogAEGcA2ooAgA2AgAgASAAKQKUAzcCzAQgAUEBNgLgBCABIFc2AtwEIAFBAjYC2AQgAUHsBGogAEGoA2ooAgA2AgAgASAAKQKgAzcC5AQgAUEBNgL4BCABIFg2AvQEIAFBAjYC8AQgAUGEBWogAEG0A2ooAgA2AgAgASAAKQKsAzcC/AQgAUEDNgKQBSABIDo2AowFIAFBBDYCiAUgAUGcBWogAEHAA2ooAgA2AgAgASAAKQK4AzcClAUgAUEDNgKoBSABIDs2AqQFIAFBBDYCoAUgAUG0BWogAEHMA2ooAgA2AgAgASAAKQLEAzcCrAUgAUEBNgLABSABIFk2ArwFIAFBAjYCuAUgAUHMBWogAEHYA2ooAgA2AgAgASAAKQLQAzcCxAUgAUEBNgLYBSABIFo2AtQFIAFBAjYC0AUgAUHkBWogAEHkA2ooAgA2AgAgASAAKQLcAzcC3AUgAUEDNgLwBSABIDw2AuwFIAFBBDYC6AUgAUH8BWogAEHwA2ooAgA2AgAgASAAKQLoAzcC9AUgAUEDNgKIBiABID02AoQGIAFBBDYCgAYgAUGUBmogAEH8A2ooAgA2AgAgASAAKQL0AzcCjAYgAUEDNgKgBiABID42ApwGIAFBBDYCmAYgAUGsBmogAEGIBGooAgA2AgAgASAAKQKABDcCpAYgAUEFNgK4BiABIAM2ArQGIAFBBjYCsAYgAUHEBmogAEGUBGooAgA2AgAgASAAKQKMBDcCvAYgAUEFNgLQBiABIAQ2AswGIAFBBjYCyAYgAUHcBmogAEGgBGooAgA2AgAgASAAKQKYBDcC1AYgAUEFNgLoBiABIAY2AuQGIAFBBjYC4AYgAUH0BmogAEGsBGooAgA2AgAgASAAKQKkBDcC7AYgAUEFNgKAByABIAc2AvwGIAFBBjYC+AYgAUGMB2ogAEG4BGooAgA2AgAgASAAKQKwBDcChAcgAUEFNgKYByABIAU2ApQHIAFBBjYCkAcgAUGkB2ogAEHEBGooAgA2AgAgASAAKQK8BDcCnAcgAUEDNgKwByABICI2AqwHIAFBBDYCqAcgAUG8B2ogAEHQBGooAgA2AgAgASAAKQLIBDcCtAcgAUEFNgLIByABIAg2AsQHIAFBBjYCwAcgAUHUB2ogAEHcBGooAgA2AgAgASAAKQLUBDcCzAcgAUEFNgLgByABIAk2AtwHIAFBBjYC2AcgAUHsB2ogAEHoBGooAgA2AgAgASAAKQLgBDcC5AcgAUEDNgL4ByABIB82AvQHIAFBBDYC8AcgAUGECGogAEH0BGooAgA2AgAgASAAKQLsBDcC/AcgAUEDNgKQCCABICA2AowIIAFBBDYCiAggAUGcCGogAEGABWooAgA2AgAgASAAKQL4BDcClAggAUEDNgKoCCABICE2AqQIIAFBBDYCoAggAUG0CGogAEGMBWooAgA2AgAgASAAKQKEBTcCrAggAUEFNgLACCABIAs2ArwIIAFBBjYCuAggAUHMCGogAEGYBWooAgA2AgAgASAAKQKQBTcCxAggAUEDNgLYCCABICc2AtQIIAFBBDYC0AggAUHkCGogAEGkBWooAgA2AgAgASAAKQKcBTcC3AggAUEDNgLwCCABIC82AuwIIAFBBDYC6AggAUH8CGogAEGwBWooAgA2AgAgASAAKQKoBTcC9AggAUEDNgKICSABICo2AoQJIAFBBDYCgAkgAUGUCWogAEG8BWooAgA2AgAgASAAKQK0BTcCjAkgAUEDNgKgCSABICs2ApwJIAFBBDYCmAkgAUGsCWogAEHIBWooAgA2AgAgASAAKQLABTcCpAkgAUEDNgK4CSABICw2ArQJIAFBBDYCsAkgAUHECWogAEHUBWooAgA2AgAgASAAKQLMBTcCvAkgAUEDNgLQCSABIDI2AswJIAFBBDYCyAkgAUHcCWogAEHgBWooAgA2AgAgASAAKQLYBTcC1AkgAUEDNgLoCSABIDM2AuQJIAFBBDYC4AkgAUH0CWogAEHsBWooAgA2AgAgASAAKQLkBTcC7AkgAUEDNgKACiABIDQ2AvwJIAFBBDYC+AkgAUGMCmogAEH4BWooAgA2AgAgASAAKQLwBTcChAogAUEDNgKYCiABIDU2ApQKIAFBBDYCkAogAUGkCmogAEGEBmooAgA2AgAgASAAKQL8BTcCnAogAUEDNgKwCiABIDc2AqwKIAFBBDYCqAogAUG8CmogAEGQBmooAgA2AgAgASAAKQKIBjcCtAogAUEDNgLICiABIDg2AsQKIAFBBDYCwAogAUHUCmogAEGcBmooAgA2AgAgASAAKQKUBjcCzAogAUEDNgLgCiABIDk2AtwKIAFBBDYC2AogAUHsCmogAEGoBmooAgA2AgAgASAAKQKgBjcC5AogAUEDNgL4CiABID82AvQKIAFBBDYC8AogAUGEC2ogAEG0BmooAgA2AgAgASAAKQKsBjcC/AogAUEFNgKQCyABIAw2AowLIAFBBjYCiAsgAUGcC2ogAEHABmooAgA2AgAgASAAKQK4BjcClAsgAUEDNgKoCyABIBw2AqQLIAFBBDYCoAsgAUG0C2ogAEHMBmooAgA2AgAgASAAKQLEBjcCrAsgAUEDNgLACyABIB02ArwLIAFBBDYCuAsgAUHMC2ogAEHYBmooAgA2AgAgASAAKQLQBjcCxAsgAUEDNgLYCyABIBc2AtQLIAFBBDYC0AsgAUHkC2ogAEHkBmooAgA2AgAgASAAKQLcBjcC3AsgAUEDNgLwCyABIBg2AuwLIAFBBDYC6AsgAUH8C2ogAEHwBmooAgA2AgAgASAAKQLoBjcC9AsgAUEDNgKIDCABIBk2AoQMIAFBBDYCgAwgAUGUDGogAEH8BmooAgA2AgAgASAAKQL0BjcCjAwgAUEDNgKgDCABIBo2ApwMIAFBBDYCmAwgAUGsDGogAEGIB2ooAgA2AgAgASAAKQKABzcCpAwgAUEDNgK4DCABICY2ArQMIAFBBDYCsAwgAUHEDGogAEGUB2ooAgA2AgAgASAAKQKMBzcCvAwgAUEDNgLQDCABICg2AswMIAFBBDYCyAwgAUHcDGogAEGgB2ooAgA2AgAgASAAKQKYBzcC1AwgAUEDNgLoDCABICk2AuQMIAFBBDYC4AwgAUH0DGogAEGsB2ooAgA2AgAgASAAKQKkBzcC7AwgAUEDNgKADSABIC02AvwMIAFBBDYC+AwgAUGMDWogAEG4B2ooAgA2AgAgASAAKQKwBzcChA0gAUEDNgKYDSABIC42ApQNIAFBBDYCkA0gAUGkDWogAEHEB2ooAgA2AgAgASAAKQK8BzcCnA0gAUEBNgKwDSABIFs2AqwNIAFBAjYCqA0gAUG8DWogAEHQB2ooAgA2AgAgASAAKQLIBzcCtA0gAUEDNgLIDSABIDA2AsQNIAFBBDYCwA0gAUHUDWogAEHcB2ooAgA2AgAgASAAKQLUBzcCzA0gAUEDNgLgDSABIDE2AtwNIAFBBDYC2A0gAUHsDWogAEHoB2ooAgA2AgAgASAAKQLgBzcC5A0gAUEFNgL4DSABIAo2AvQNIAFBBjYC8A0gAUGEDmogAEH0B2ooAgA2AgAgASAAKQLsBzcC/A0gAUEDNgKQDiABIBE2AowOIAFBBDYCiA4gAUGcDmogAEGACGooAgA2AgAgASAAKQL4BzcClA4gAUEDNgKoDiABIBs2AqQOIAFBBDYCoA4gAUG0DmogAEGMCGooAgA2AgAgASAAKQKECDcCrA4gAUEDNgLADiABIBM2ArwOIAFBBDYCuA4gAUHMDmogAEGYCGooAgA2AgAgASAAKQKQCDcCxA4gAUEDNgLYDiABIBQ2AtQOIAFBBDYC0A4gAUHkDmogAEGkCGooAgA2AgAgASAAKQKcCDcC3A4gAUEDNgLwDiABIBU2AuwOIAFBBDYC6A4gAUH8DmogAEGwCGooAgA2AgAgASAAKQKoCDcC9A4gAUEDNgKIDyABIBY2AoQPIAFBBDYCgA8gAUGUD2ogAEHYCGoiCygCADYCACABIAApAtAINwKMDyABQQM2AqAPIAEgIzYCnA8gAUEENgKYDyABQawPaiBeKAIANgIAIAEgACkCiAk3AqQPIABB0gA2ArAIIAAgATYCrAggAEHSADYCqAhB+Y32AC0AABpB6AJBCBD8BSIBRQ0BIGpB9vjBAEH3+MEAEIYBIF1B9vjBAEH3+MEAEIYBIAFBoAJqQff4wQBB+PjBABCGASABQQA2AjggAUE7akEANgAAIAFBAjYCSCABQQM6AEQgAUEDNgJAIAFBAjoAPyABQTBqIABBgAlqKQMANwMAIAFBKGogAEH4CGopAwA3AwAgAUEgaiAAQfAIaikDADcDACABQRhqIABB6AhqKQMANwMAIAFBEGogAEHgCGopAwA3AwAgAUEIaiALKQMANwMAIAEgACkD0Ag3AwAgAUEBOgCAASABQfwAaiAAQfwAaiICKAIANgIAIAFB9ABqIABB9ABqIgMpAgA3AgAgAUHsAGogAEHsAGoiBCkCADcCACABQeQAaiAAQeQAaiIGKQIANwIAIAFB3ABqIABB3ABqIgcpAgA3AgAgAUHUAGogAEHUAGoiBSkCADcCACABIAApAkw3AkwgASAALwDBCDsAgQEgAUGDAWogAEHDCGoiCC0AADoAACABQQY2AoQBIAFBywFqQQA2AAAgAUEANgLIASABQQM6ANQBIAFBAjoAzwEgAUECNgLYASABQQM2AtABIAFBwAFqIF8pAwA3AwAgAUG4AWogYCkDADcDACABQbABaiBhKQMANwMAIAFBqAFqIGIpAwA3AwAgAUGgAWogYykDADcDACABQZgBaiBeKQMANwMAIAEgACkDiAk3A5ABIAFBjAJqIAIoAgA2AgAgAUGEAmogAykCADcCACABQfwBaiAEKQIANwIAIAFB9AFqIAYpAgA3AgAgAUHsAWogBykCADcCACABQeQBaiAFKQIANwIAIAEgACkCTDcC3AEgAUEBOgCQAiABQZMCaiAILQAAOgAAIAEgAC8AwQg7AJECIAFBBjYClAIgAUHbAmpBADYAACABQQA2AtgCIAFBAzoA5AIgAUEDNgLgAiABQQI6AN8CIABBtAhqQfj4wQBBjPnBABC3ASBpQbD5wQAQiAMgACgCrAgiCUEFNgK4DyAJIAE2ArQPIAlBBTYCsA8gCSAAKQK0CDcCvA8gCUHED2ogAEG8CGooAgA2AgAgAEHTADYCsAhB+Y32AC0AABpBsANBCBD8BSIBRQ0EIGpB9vjBAEH3+MEAEIYBIF1B9vjBAEH3+MEAEIYBIAFBoAJqQff4wQBB+PjBABCGASABQQA2AjggAUE7akEANgAAIAFBAjYCSCABQQM6AEQgAUEDNgJAIAFBAjoAPyABQTBqIABBgAlqKQMANwMAIAFBKGogAEH4CGopAwA3AwAgAUEgaiAAQfAIaikDADcDACABQRhqIABB6AhqKQMANwMAIAFBEGogAEHgCGopAwA3AwAgAUEIaiALKQMANwMAIAEgACkD0Ag3AwAgAUEBOgCAASABQfwAaiACKAIANgIAIAFB9ABqIAMpAgA3AgAgAUHsAGogBCkCADcCACABQeQAaiAGKQIANwIAIAFB3ABqIAcpAgA3AgAgAUHUAGogBSkCADcCACABIAApAkw3AkwgASAALwDBCDsAgQEgAUGDAWogCC0AADoAACABQQY2AoQBIAFBywFqQQA2AAAgAUEANgLIASABQQM6ANQBIAFBAjoAzwEgAUECNgLYASABQQM2AtABIAFBwAFqIF8pAwA3AwAgAUG4AWogYCkDADcDACABQbABaiBhKQMANwMAIAFBqAFqIGIpAwA3AwAgAUGgAWogYykDADcDACABQZgBaiBeKQMANwMAIAEgACkDiAk3A5ABIAFBjAJqIAIoAgA2AgAgAUGEAmogAykCADcCACABQfwBaiAEKQIANwIAIAFB9AFqIAYpAgA3AgAgAUHsAWogBykCADcCACABQeQB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RQ0IIAEgACkCiAI3AgAgAUEwaiAAQbgCaikCADcCACABQShqIABBsAJqKQIANwIAIAFBIGogAEGoAmopAgA3AgAgAUEYaiAAQaACaikCADcCACABQRBqIABBmAJqKQIANwIAIAFBCGogAEGQAmopAgA3AgAgACgCECIEIAAoAghGBEAgAEEIakHEl8IAEJIDCyAAKAIMIARBA3RqIgZBtJfCADYCBCAGIAE2AgAgACAEQQFqNgIQQfmN9gAtAAAaQQxBBBD8BSIERQ0KIAQgACkDCDcCACAEQQhqIABBEGooAgA2AgAgAiACKAIAIgFBAWo2AgAgAUEASA0AQfmN9gAtAAAaQQxBBBD8BSIBDQFBBEEMEMwGCwALIAEgAjYCCCABQajewQA2AgQgASAENgIAIAMgAjYCCCADQYiv6QA2AgQgAyABNgIAIABB8ANqJAAgDUG4AmohBCMAQeAAayIAJAAgAEGAj/YANgIcQYSP9gAtAABBA0cEfyAAIABBHGo2AiggAEEoahCnASAAKAIcBUGAj/YACygCACICIAIoAgAiAUEBajYCAAJAAkAgAUEASA0AIABBADYCJCAAQoCAgIDAADcCHCAAQShqQZCx6QBBl7HpABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCCABIAApAig3AgAgAUEwaiAAQdgAaikCADcCACABQShqIABB0ABqKQIANwIAIAFBIGogAEHIAGopAgA3AgAgAUEYaiAAQUBrKQIANwIAIAFBEGogAEE4aikCADcCACABQQhqIABBMGopAgA3AgAgAEEcakHEl8IAEJIDIABBGGpBATYCACAAKAIgIgNBtJfCADYCBCADIAE2AgAgACAAKQIcIms3AxAga6dBAUYEQCAAQRBqQaSYwgAQkgMLIAAoAhRBCGoiAUGUmMIANgIEIAFBATYCACAAQQI2AhggAEEoakGXsekAQaCx6QAQhgFB+Y32AC0AABpBOEEEEPwFIgFFDQggASAAKQIoNwIAIAFBMGogAEHYAGopAgA3AgAgAUEoaiAAQdAAaikCADcCACABQSBqIABByABqKQIANwIAIAFBGGogAEFAaykCADcCACABQRBqIABBOGopAgA3AgAgAUEIaiAAQTBqKQIANwIAIAAoAhgiBiAAKAIQRgRAIABBEGpBxJfCABCSAwsgAEEYaiAGQQFqIgM2AgAgAEEIaiADNgIAIAAoAhQgBkEDdGoiBkG0l8IANgIEIAYgATYCACAAIAApAxAiazcDACBrpyADRgRAIABBpJjCABCSAwsgACgCBCADQQN0aiIBQZSYwgA2AgQgAUEBNgIAIAAgA0EBajYCCCAAQShqQaCx6QBBpbHpABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCCABIAApAig3AgAgAUEwaiAAQdgAaikCADcCACABQShqIABB0ABqKQIANwIAIAFBIGogAEHIAGopAgA3AgAgAUEYaiAAQUBrKQIANwIAIAFBEGogAEE4aikCADcCACABQQhqIABBMGopAgA3AgAgACgCCCIDIAAoAgBGBEAgAEHEl8IAEJIDCyAAKAIEIANBA3RqIgZBtJfCADYCBCAGIAE2AgAgACADQQFqNgIIQfmN9gAtAAAaQQxBBBD8BSIDRQ0KIAMgACkDADcCACADQQhqIABBCGooAgA2AgAgAiACKAIAIgFBAWo2AgAgAUEASA0AQfmN9gAtAAAaQQxBBBD8BSIBDQFBBEEMEMwGCwALIAEgAjYCCCABQajewQA2AgQgASADNgIAIAQgAjYCCCAEQYiv6QA2AgQgBCABNgIAIABB4ABqJAAgDUGsAmohByMAQfAAayIAJAAgAEGAj/YANgIoQYSP9gAtAABBA0cEfyAAIABBKGo2AjggAEE4ahCnASAAKAIoBUGAj/YACygCACIEIAQoAgAiAUEBajYCAAJAAkACQCABQQBIDQAgAEEUakEANgIAIABCgICAgMAANwIMIABBMGpBADYCACAAQoCAgIDAADcDKCAAQThqQYiy6QBBjrLpABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCSABIAApAjg3AgAgAUEwaiAAQegAaikCADcCACABQShqIABB4ABqKQIANwIAIAFBIGogAEHYAGopAgA3AgAgAUEYaiAAQdAAaikCADcCACABQRBqIABByABqKQIANwIAIAFBCGogAEFAaykCADcCACAAKAIwIgMgACgCKEYEQCAAQShqQcSXwgAQkgMLIABBCGogA0EBaiICNgIAIAAoAiwgA0EDdGoiA0G0l8IANgIEIAMgATYCACAAIAApAygiazcDACBrpyACRgRAIABBpJjCABCSAwsgACgCBCACQQN0aiIBQZSYwgA2AgQgAUEBNgIAIAAgAkEBajYCCEH5jfYALQAAGkEoQQQQ/AUiAkUNASAAQQA2AjAgAEKAgICAwAA3AiggAEE4aiIGQY6y6QBBlbLpABCGAUH5jfYALQAAGkE4QQQQ/AUiA0UNCSADIAApAjg3AgAgA0EwaiAAQegAaikCADcCACADQShqIABB4ABqKQIANwIAIANBIGogAEHYAGopAgA3AgAgA0EYaiAAQdAAaikCADcCACADQRBqIABByABqKQIANwIAIANBCGogAEFAayIBKQIANwIAIABBKGoiBUHEl8IAEJIDIAAoAiwiCCADNgIAIAFBATYCACAIQbSXwgA2AgQgACAAKQIoNwM4QfmN9gAtAAAaQQxBBBD8BSIIRQ0LIAggACkDODcCACAIQQhqIAEoAgA2AgAgAEEANgIwIABCgICAgMAANwIoIAZBlbLpAEGbsukAEIYBQfmN9gAtAAAaQThBBBD8BSIDRQ0JIAMgACkCODcCACADQTBqIABB6ABqKQIANwIAIANBKGogAEHgAGopAgA3AgAgA0EgaiAAQdgAaikCADcCACADQRhqIABB0ABqKQIANwIAIANBEGogAEHIAGopAgA3AgAgA0EIaiABKQIANwIAIAVBxJfCABCSAyAAKAIsIgkgAzYCACABQQE2AgAgCUG0l8IANgIEIAAgACkCKDcDOEH5jfYALQAAGkEMQQQQ/AUiCUUNCyAJIAApAzg3AgAgCUEIaiABKAIANgIAIABBADYCMCAAQoCAgIDAADcCKCAGQZuy6QBBorLpABCGAUH5jfYALQAAGkE4QQQQ/AUiA0UNCSADIAApAjg3AgAgA0EwaiAAQegAaikCADcCACADQShqIABB4ABqKQIANwIAIANBIGogAEHYAGopAgA3AgAgA0EYaiAAQdAAaikCADcCACADQRBqIABByABqKQIANwIAIANBCGogASkCADcCACAFQcSXwgAQkgMgACgCLCILIAM2AgAgAUEBNgIAIAtBtJfCADYCBCAAIAApAig3AzhB+Y32AC0AABpBDEEEEPwFIgtFDQsgCyAAKQM4NwIAIAtBCGogASgCADYCACAAQQA2AjAgAEKAgICAwAA3AiggBkGisukAQaqy6QAQhgFB+Y32AC0AABpBOEEEEPwFIgNFDQkgAyAAKQI4NwIAIANBMGogAEHoAGop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aiAAQbgCaikCADcCACABQQhqIABBsAJqKQIANwIAIABBFGpBxJfCABCSAyAAQRxqQQE2AgAgAEGgAmpBATYCACAAKAIYIgVBtJfCADYCBCAFIAE2AgAgACAAKQIUIms3A5gCIGunQQFGBEAgAEGYAmpBpJjCABCSAwsgACgCnAJBCGoiAUGUmMIANgIEIAFBATYCACAAQQI2AqACIABBqAJqQc2/6QBB07/pABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCSABIAApAqgCNwIAIAFBMGogAEHYAmopAgA3AgAgAUEoaiAAQdACaikCADcCACABQSBqIABByAJqKQIANwIAIAFBGGogAEHAAmopAgA3AgAgAUEQaiAAQbgCaikCADcCACABQQhqIABBsAJqKQIANwIAIAAoAqACIgUgACgCmAJGBEAgAEGYAmpBxJfCABCSAwsgACgCnAIgBUEDdGoiCEG0l8IANgIEIAggATYCACAAIAVBAWo2AqACQfmN9gAtAAAaQQxBBBD8BSIBRQ0LIAEgACkDmAI3AgAgA0Go3sEANgIUIAMgATYCECADQajewQA2AgwgAyAHNgIIIANBqN7BADYCBCADIAI2AgAgAUEIaiAAQaACaigCADYCAEH5jfYALQAAGkEMQQQQ/AUiAUUNCyABQQM2AgggASADNgIEIAFBAzYCACAEIAQoAgAiAkEBajYCACACQQBIDQBB+Y32AC0AABpBDEEEEPwFIgINAkEEQQwQzAYLAAtBBEEgEMwGAAsgAiAENgIIIAJBnOjBADYCBCACIAE2AgAgBiAENgIIIAZBiK/pADYCBCAGIAI2AgAgAEGQBGokACANQZQCaiEEIwBB4ABrIgAkACAAQYCP9gA2AhhBhI/2AC0AAEEDRwR/IAAgAEEYajYCKCAAQShqEKcBIAAoAhgFQYCP9gALKAIAIgMgAygCACIBQQFqNgIAAkACQAJAIAFBAEgNACAAQRRqQQA2AgAgAEKAgICAwAA3AgwgAEEgakEANgIAIABCgICAgMAANwMYIABBKGpBqcDpAEGvwOkAEIYBQfmN9gAtAAAaQThBBBD8BSIBRQ0JIAEgACkCKDcCACABQTBqIABB2ABqKQIANwIAIAFBKGogAEHQAGopAgA3AgAgAUEgaiAAQcgAaikCADcCACABQRhqIABBQGspAgA3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QThqKQIANwIAIAJBCGogJSkCADcCACAAQQxqQcSXwgAQkgMgACgCECIlIAI2AgAgJUG0l8IANgIEIABBATYCFEH5jfYALQAAGkEMQQQQ/AUiAkUNCyACIAApAgw3AgAgAUGo3sEANgJsIAEgAjYCaCABQajewQA2AmQgASASNgJgIAFBqN7BADYCXCABIBA2AlggAUGo3sEANgJUIAEgDzYCUCABQajewQA2AkwgASAONgJIIAFBqN7BADYCRCABICQ2AkAgAUGo3sEANgI8IAEgCjYCOCABQajewQA2AjQgASAMNgIwIAFBqN7BADYCLCABIAs2AiggAUGo3sEANgIkIAEgCTYCICABQajewQA2AhwgASAINgIYIAFBqN7BADYCFCABIAU2AhAgAUGo3sEANgIMIAEgBzYCCCABQajewQA2AgQgASAGNgIAIAJBCGogAEEUaigCADYCAEH5jfYALQAAGkEMQQQQ/AUiAkUNCyACQQ42AgggAiABNgIEIAJBDjYCACAAKAIIIgEgACgCAEYEQCAAQfSYwgAQkgMLIAAoAgQgAUEDdGoiBkGc6MEANgIEIAYgAjYCACAAIAFBAWo2AghB+Y32AC0AABpBDEEEEPwFIgJFDQsgAiAAKQMANwIAIAJBCGogAEEIaigCADYCACADIAMoAgAiAUEBajYCACABQQBIDQBB+Y32AC0AABpBDEEEEPwFIgENAkEEQQwQzAYLAAtBBEHwABDMBgALIAEgAzYCCCABQajewQA2AgQgASACNgIAIAQgAzYCCCAEQYiv6QA2AgQgBCABNgIAIABB4ABqJAAgDUGIAmohAyMAQeADayIAJAAgAEGAj/YANgIQQYSP9gAtAABBA0cEfyAAIABBEGo2AvgBIABB+AFqEKcBIAAoAhAFQYCP9gALKAIAIgIgAigCACIBQQFqNgIAAkACQCABQQBIDQAgAEEANgIYIABCgICAgMAANwIQIABB+AFqQf/B6QBBhcLpABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCCABIAApAvgBNwIAIAFBMGogAEGoAmopAgA3AgAgAUEoaiAAQaACaikCADcCACABQSBqIABBmAJqKQIANwIAIAFBGGogAEGQAmopAgA3AgAgAUEQaiAAQYgCaikCADcCACABQQhqIABBgAJqKQIANwIAIABBEGpBxJfCABCSAyAAQQhqQQE2AgAgACgCFCIEQbSXwgA2AgQgBCABNgIAIAAgACkCECJrNwMAIGunQQFGBEAgAEGkmMIAEJIDCyAAKAIEQQhqIgFBlJjCADYCBCABQQE2AgAgAEECNgIIIABBADYC3AMgAEEANgL4ASAAQfgBaiIBQYXC6QBBBhDCASABQYvC6QBBBRDCASABQZDC6QBBBBDCASABQZTC6QBBBBDCASABQZjC6QBBBhDCASABQZ7C6QBBBhDCASABQaTC6QBBBRDCASABQanC6QBBBBDCASABQa3C6QBBBRDCASABQbLC6QBBCBDCASABQbrC6QBBBhDCASABQcDC6QBBCBDCASABQcjC6QBBBxDCASABQc/C6QBBBBDCASABQdPC6QBBBBDCASABQdfC6QBBBhDCASABQd3C6QBBBxDCASABQeTC6QBBBhDCASABQerC6QBBCRDCASABQfPC6QBBBxDCASABQfrC6QBBBRDCASABQf/C6QBBBBDCASABQYPD6QBBCRDCASAAQRBqIgQgAUHoARCsARpB+Y32AC0AABpB6AFBBBD8BSIBRQ0JIAEgBEHoARCsASEEIAAoAggiASAAKAIARgRAIABB9JjCABCSAwsgACgCBCABQQN0aiIGQaT9wQA2AgQgBiAENgIAIAAgAUEBajYCCEH5jfYALQAAGkEMQQQQ/AUiBEUNCiAEIAApAwA3AgAgBEEIaiAAQQhqKAIANgIAIAIgAigCACIBQQFqNgIAIAFBAEgNAEH5jfYALQAAGkEMQQQQ/AUiAQ0BQQRBDBDMBgsACyABIAI2AgggAUGo3sEANgIEIAEgBDYCACADIAI2AgggA0GIr+kANgIEIAMgATYCACAAQeADaiQAIA1B/AFqIQQjAEHwA2siACQAIABBgI/2ADYCEEGEj/YALQAAQQNHBH8gACAAQRBqNgKIAiAAQYgCahCnASAAKAIQBUGAj/YACygCACICIAIoAgAiAUEBajYCAAJAAkAgAUEASA0AIABBADYCGCAAQoCAgIDAADcCECAAQYgCakH/yOkAQYPJ6QAQhgFB+Y32AC0AABpBOEEEEPwFIgFFDQggASAAKQKIAjcCACABQTBqIABBuAJqKQIANwIAIAFBKGogAEGwAmopAgA3AgAgAUEgaiAAQagCaikCADcCACABQRhqIABB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ACkCICJrNwOoAiBrp0EBRgRAIAJBpJjCABCSAwsgAEEoakECNgIAIAAoAqwCQQhqIgJBlJjCADYCBCACQQE2AgAgACAAKQOoAjcDICAAQagCakH5x+kAQfzH6QAQhgFB+Y32AC0AABpBOEEEEPwFIgJFDQkgAiAAKQKoAjcCACACQTBqIABB2AJqKQIANwIAIAJBKGogAEHQAmopAgA3AgAgAkEgaiAAQcgCaikCADcCACACQRhqIABBwAJqKQIANwIAIAJBEGogAEG4AmopAgA3AgAgAkEIaiAAQbACaiIHKQIANwIAIAAoAigiAyAAKAIgRgRAIABBIGpBxJfCABCSAwsgACgCJCADQQN0aiIFQbSXwgA2AgQgBSACNgIAIAcgA0EBajYCACAAIAApAyA3A6gCQfmN9gAtAAAaQQxBBBD8BSIHRQ0LIAcgACkDqAI3AgAgB0EIaiAAQbACaiIDKAIANgIAIABBADYCKCAAQoCAgIDAADcCICAAQagCaiIFQcbH6QBBzcfpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAqgCNwIAIAJBMGogAEHYAmopAgA3AgAgAkEoaiAAQdACaikCADcCACACQSBqIABByAJqKQIANwIAIAJBGGogAEHAAmopAgA3AgAgAkEQaiAAQbgCaikCADcCACACQQhqIAMpAgA3AgAgAEEgakHEl8IAEJIDIANBATYCACAAKAIkIgNBtJfCADYCBCADIAI2AgAgACAAKQIgIms3A6gCIGunQQFGBEAgBUGkmMIAEJIDCyAAQShqQQI2AgAgACgCrAJBCGoiAkGUmMIANgIEIAJBATYCACAAIAApA6gCNwMgIABBqAJqQfzH6QBB/8fpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAqgCNwIAIAJBMGogAEHYAmopAgA3AgAgAkEoaiAAQdACaikCADcCACACQSBqIABByAJqKQIANwIAIAJBGGogAEHAAmopAgA3AgAgAkEQaiAAQbgCaikCADcCACACQQhqIABBsAJqKQIANwIAIAAoAigiAyAAKAIgRgRAIABBIGpBxJfCABCSAwsgACgCJCADQQN0aiIFQbSXwgA2AgQgBSACNgIAIABBsAJqIggiAiADQQFqNgIAIAAgACkDIDcDqAJB+Y32AC0AABpB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ACAAQdAAaiIMIgIgA0EBajYCACAAIAApAzg3A0hB+Y32AC0AABpBDEEEEPwFIgtFDQsgCyAAKQNINwIAIAtBCGogAigCADYCACAAQUBrIABBFGooAgA2AgAgACAAKQIMNwM4IABByABqQazE6QBBs8TpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAkg3AgAgAkEwaiAAQfgAaikCADcCACACQShqIABB8ABqKQIANwIAIAJBIGogAEHoAGopAgA3AgAgAkEYaiAAQeAAaikCADcCACACQRBqIABB2ABqKQIANwIAIAJBCGogDCkCADcCACAAKAJAIgogACgCOEYEQCAAQThqQcSXwgAQkgMLIAwgCkEBaiIDNgIAIAAoAjwgCkEDdGoiDEG0l8IANgIEIAwgAjYCACAAIAApAzgiazcDSCBrpyADRgRAIABByABqQaSYwgAQkgMLIABBQGsgA0EBajYCACAAKAJMIANBA3RqIgJBlJjCADYCBCACQQE2AgAgACAAKQNINwM4IABByABqQbPE6QBBu8TpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAkg3AgAgAkEwaiAAQfgAaikCADcCACACQShqIABB8ABqKQIANwIAIAJBIGogAEHoAGopAgA3AgAgAkEYaiAAQeAAaikCADcCACACQRBqIABB2ABqKQIANwIAIAJBCGogAEHQAGopAgA3AgAgACgCQCIDIAAoAjhGBEAgAEE4akHEl8IAEJIDCyAAKAI8IANBA3RqIgxBtJfCADYCBCAMIAI2AgAgAEHQAGoiAiADQQFqNgIAIAAgACkDODcDSEH5jfYALQAAGkEMQQQQ/AUiDEUNCyAMIAApA0g3AgAgDEEIaiACKAIANgIAIABBADYCQCAAQoCAgIDAADcCOCAAQcgAaiIOQbvE6QBBwsTpABCGAUH5jfYALQAAGkE4QQQQ/AUiA0UNCSADIAApAkg3AgAgA0EwaiAAQfgAaikCADcCACADQShqIABB8ABqKQIANwIAIANBIGogAEHoAGopAgA3AgAgA0EYaiAAQeAAaikCADcCACADQRBqIABB2ABqKQIANwIAIANBCGogAikCADcCACAAQThqIg9BxJfCABCSAyAAKAI8IgogAzYCACACQQE2AgAgCkG0l8IANgIEIAAgACkCODcDSEH5jfYALQAAGkEMQQQQ/AUiCkUNCyAKIAApA0g3AgAgCkEIaiACKAIANgIAIABBADYCQCAAQoCAgIDAADcCOCAOQcLE6QBBycTpABCGAUH5jfYALQAAGkE4QQQQ/AUiA0UNCSADIAApAkg3AgAgA0EwaiAAQfgAaikCADcCACADQShqIABB8ABqKQIANwIAIANBIGogAEHoAGopAgA3AgAgA0EYaiAAQeAAaikCADcCACADQRBqIABB2ABqKQIANwIAIANBCGogAikCADcCACAPQcSXwgAQkgMgACgCPCIkIAM2AgAgAkEBNgIAICRBtJfCADYCBCAAIAApAjg3A0hB+Y32AC0AABpBDEEEEPwFIiRFDQsgJCAAKQNINwIAICRBCGogAigCADYCACAAQUBrIABBFGooAgA2AgAgACAAKQIMNwM4IA5BycTpAEHPxOkAEIYBQfmN9gAtAAAaQThBBBD8BSIDRQ0JIAMgACkCSDcCACADQTBqIABB+ABqKQIANwIAIANBKGogAEHwAGopAgA3AgAgA0EgaiAAQegAaikCADcCACADQRhqIABB4ABqKQIANwIAIANBEGogAEHYAGopAgA3AgAgA0EIaiACKQIANwIAIAAoAkAiDiAAKAI4RgRAIA9BxJfCABCSAwsgAiAOQQFqIgI2AgAgACgCPCAOQQN0aiIOQbSXwgA2AgQgDiADNgIAIAAgACkDOCJrNwNIIGunIAJGBEAgAEHIAGpBpJjCABCSAwsgAEFAayACQQFqNgIAIAAoAkwgAkEDdGoiAkGUmMIANgIEIAJBATYCACAAIAApA0g3AzggAEHIAGpBz8TpAEHYxOkAEIYBQfmN9gAtAAAaQThBBBD8BSICRQ0JIAIgACkCSDcCACACQTBqIABB+ABqKQIANwIAIAJBKGogAEHwAGopAgA3AgAgAkEgaiAAQegAaikCADcCACACQRhqIABB4ABqKQIANwIAIAJBEGogAEHYAGopAgA3AgAgAkEIaiAAQdAAaikCADcCACAAKAJAIgMgACgCOEYEQCAAQThqQcSXwgAQkgMLIAAoAjwgA0EDdGoiDkG0l8IANgIEIA4gAjYCACAAQdAAaiIOIgIgA0EBajYCACAAIAApAzg3A0hB+Y32AC0AABpBDEEEEPwFIgNFDQsgAyAAKQNINwIAIANBCGog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ABpBDEEEEPwFIhBFDQsgECAAKQNINwIAIBBBCGogAigCADYCACAAQUBrIABBFGooAgA2AgAgACAAKQIMNwM4IABByABqQaXE6QBBrMTpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAkg3AgAgAkEwaiAAQfgAaikCADcCACACQShqIABB8ABqKQIANwIAIAJBIGogAEHoAGopAgA3AgAgAkEYaiAAQeAAaikCADcCACACQRBqIABB2ABqKQIANwIAIAJBCGogEikCADcCACAAKAJAIiUgACgCOEYEQCAAQThqQcSXwgAQkgMLIABBIGogJUEBaiISNgIAIAAoAjwgJUEDdGoiJUG0l8IANgIEICUgAjYCACAAIAApAzgiazcDGCBrpyASRgRAIABBGGpBpJjCABCSAwsgACgCHCASQQN0aiICQZSYwgA2AgQgAkEBNgIAIAAgEkEBajYCICAAQcgAakHsxOkAQe/E6QAQhgFB+Y32AC0AABpBOEEEEPwFIgJFDQkgAiAAKQJINwIAIAJBMGogAEH4AGopAgA3AgAgAkEoaiAAQfAAaikCADcCACACQSBqIABB6ABqKQIANwIAIAJBGGogAEHgAGopAgA3AgAgAkEQaiAAQdgAaikCADcCACACQQhqIABB0ABqKQIANwIAIAAoAiAiEiAAKAIYRgRAIABBGGpBxJfCABCSAwsgACgCHCASQQN0aiIlQbSXwgA2AgQgJSACNgIAIAAgEkEBajYCIEH5jfYALQAAGkEMQQQQ/AUiEkUNCyASIAApAxg3AgAgEkEIaiAAQSBqKAIANgIAIABByABqQe/E6QBB9MTpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAkg3AgAgAkEwaiAAQfgAaikCADcCACACQShqIABB8ABqKQIANwIAIAJBIGogAEHoAGopAgA3AgAgAkEYaiAAQeAAaikCADcCACACQRBqIABB2ABqKQIANwIAIAJBCGogAEHQAGopAgA3AgAgAEEMakHEl8IAEJIDIABBFGpBATYCACAAQTBqQQE2AgAgACgCECIlQbSXwgA2AgQgJSACNgIAIAAgACkCDCJrNwMoIGunQQFGBEAgAEEoakGkmMIAEJIDCyAAKAIsQQhqIgJBlJjCADYCBCACQQE2AgAgAEECNgIwIABByABqQfTE6QBB98TpABCGAUH5jfYALQAAGkE4QQQQ/AUiAkUNCSACIAApAkg3AgAgAkEwaiAAQfgAaikCADcCACACQShqIABB8ABqKQIANwIAIAJBIGogAEHoAGopAgA3AgAgAkEYaiAAQeAAaikCADcCACACQRBqIABB2ABqKQIANwIAIAJBCGogAEHQAGopAgA3AgAgACgCMCIlIAAoAihGBEAgAEEoakHEl8IAEJIDCyAAKAIsICVBA3RqIjZBtJfCADYCBCA2IAI2AgAgACAlQQFqNgIwQfmN9gAtAAAaQQxBBBD8BSICRQ0LIAIgACkDKDcCACABQajewQA2AmwgASACNgJoIAFBqN7BADYCZCABIBI2AmAgAUGo3sEANgJcIAEgEDYCWCABQajewQA2AlQgASAPNgJQIAFBqN7BADYCTCABIA42AkggAUGo3sEANgJEIAEgAzYCQCABQajewQA2AjwgASAkNgI4IAFBqN7BADYCNCABIAo2AjAgAUGo3sEANgIsIAEgDDYCKCABQajewQA2AiQgASALNgIgIAFBqN7BADYCHCABIAk2AhggAUGo3sEANgIUIAEgCDYCECABQajewQA2AgwgASAFNgIIIAFBqN7BADYCBCABIAc2AgAgAkEIaiAAQTBqKAIANgIAQfmN9gAtAAAaQQxBBBD8BSICRQ0LIAJBDjYCCCACIAE2AgQgAkEONgIAIAAoAggiASAAKAIARgRAIABB9JjCABCSAwsgACgCBCABQQN0aiIDQZzowQA2AgQgAyACNgIAIAAgAUEBajYCCEH5jfYALQAAGkEMQQQQ/AUiAkUNCyACIAApAwA3AgAgAkEIaiAAQQhqKAIANgIAIAQgBCgCACIBQQFqNgIAIAFBAEgNAEH5jfYALQAAGkEMQQQQ/AUiAQ0CQQRBDBDMBgsAC0EEQfAAEMwGAAsgASAENgIIIAFBqN7BADYCBCABIAI2AgAgBiAENgIIIAZBiK/pADYCBCAGIAE2AgAgAEGAAWokABCSBCEGIwBBMGsiACQAIABBDGpBADYCACAAQShqQQA2AgAgAEKAgICAwAA3AgQgAEKAgICAwAA3AyAgAEEgaiIBQcjK6QAQkgMgACgCJCICQbjK6QA2AgQgAkEBNgIAIABBATYCKCAAKAIgQQFGBEAgAUGkmMIAEJIDCyANQfgAaiEEIAAoAiRBCGoiAUGUmMIANgIEIAFBATYCACAAQQI2AihB+Y32AC0AABoCQEEIQQQQ/AUiAQRAIAFBAjYCBCABQYz/wQA2AgAgACgCKCICIAAoAiBGBEAgAEEgakGkl8IAEJIDCyAAKAIkIAJBA3RqIgNB6JbCADYCBCADIAE2AgAgACACQQFqNgIoIABBBGpB9JjCABCSAyAAQQxqQQE2AgAgAEEYakEBNgIAIAAoAggiAUGQ/8EANgIEIAFBATYCACAAIAApAgQiazcDECBrp0EBRgRAIABBEGpBpJjCABCSAwsgACgCFEEIaiIBQZSYwgA2AgQgAUEBNgIAIABBAjYCGEH5jfYALQAAGkEIQQQQ/AUiAUUNBCABQQM2AgQgAUGg/8EANgIAIAAoAhgiAiAAKAIQRgRAIABBEGpBpJfCABCSAwsgACgCFCACQQN0aiIDQeiWwgA2AgQgAyABNgIAIAAgAkEBajYCGEH5jfYALQAAGkEQQQQQ/AUiAUUNBkH5jfYALQAAGkEMQQQQ/AUiAkUNCiACIAApAyA3AgAgAkEIaiAAQShqKAIANgIAQfmN9gAtAAAaQQxBBBD8BSIDRQ0KIAMgACkDEDcCACABQajewQA2AgwgASADNgIIIAFBqN7BADYCBCABIAI2AgAgA0EIaiAAQRhqKAIANgIAQfmN9gAtAAAaQQxBBBD8BSICDQEMCgsMAwsgAkECNgIIIAIgATYCBCACQQI2AgAgBEGc6MEANgIEIAQgAjYCACAAQTBqJAAgDSkDeCFrIwBBkARrIgAkACAAQSxqQQA2AgAgAEGgAmpBADYCACAAQoCAgIDAADcCJCAAQoCAgIDAADcDmAIgAEGYAmoiAUH0mMIAEJIDIAAoApwCIgJB2JbCADYCBCACQQE2AgAgAEEBNgKgAiAAKAKYAkEBRgRAIAFByMvpABCSAwsgACgCnAJBCGoiAUG4y+kANgIEIAFBATYCACAAQQI2AqACIAAoApgCQQJGBEAgAEGYAmpBpJjCABCSAwsgDUGwAWohAyAAQQM2AqACIAAoApwCQRBqIgFBlJjCADYCBCABQQE2AgBB+Y32AC0AABoCQEEMQQQQ/AUiAgRAIAIgACkDmAI3AgAgAkEIaiAAQaACaigCADYCAEH5jfYALQAAGkEMQQQQ/AUiAQRAIAFBADYCCCABQajewQA2AgQgASACNgIAIABBJGpB5JjCABCSAyAAQSxqQQE2AgAgAEEgakEBNgIAIAAoAigiAkHUmMIANgIEIAIgATYCACAAIAApAiQibjcDGCBup0EBRgRAIABBGGpB9JjCABCSAwsgACgCHEEIaiIBQdiWwgA2AgQgAUEBNgIAIABBAjYCICAAKAIYQQJGBEAgAEEYakGkmMIAEJIDCyAAKAIcQRBqIgFBlJjCADYCBCABQQE2AgAgAEEDNgIgIABBADYCjAQgAEEANgKoAiAAQagCaiIBQf3xwQBBAxDCASABQZz9wQBBAhDCASABQZ79wQBBAxDCASAAQTBqIgIgAUHoARCsARpB+Y32AC0AABpB6AFBBBD8BSIBBEAgASACQegBEKwBIQQgACgCICICIAAoAhhGBEAgAEEYakH0mMIAEJIDCyAAQSBqIAJBAWoiATYCACAAQRBqIAE2AgAgACgCHCACQQN0aiICQaT9wQA2AgQgAiAENgIAIAAgACkDGCJuNwMIIG6nIAFGBEAgAEEIakGkmMIAEJIDCyAAKAIMIAFBA3RqIgJBlJjCADYCBCACQQE2AgAgACABQQFqIgI2AhAgACgCCCACRgRAIABBCGpB9JjCABCSAwsgAyAAKQMINwIAIABBEGogAUECaiIBNgIAIANBCGogATYCACAAKAIMIAJBA3RqIgFB2JbCADYCBCABQQE2AgAgAEGQBGokAAwDCwwKCwwKCwwJCyANQfAAaiEDIwBBgARrIgAkACAAQQA2AiwgAEKAgICAwAA3AiQgAEEANgL8AyAAQQA2ApgCIABBmAJqIgFByffBAEEEEMIBIAFBzoHCAEEEEMIBIABBMGoiAiABQegBEKwBGkH5jfYALQAAGgJAQegBQQQQ/AUiAQRAIAEgAkHoARCsASEBIABBJGpB9JjCABCSAyAAQSBqQQE2AgAgACgCKCICQaT9wQA2AgQgAiABNgIAIAAgACkCJCJuNwMYIG6nQQFGBEAgAEEYakGkmMIAEJIDCyAAKAIcQQhqIgFBlJjCADYCBCABQQE2AgAgAEECNgIgIABBmAJqQb7xwQBBwfHBABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCCABIAApApgCNwIAIAFBMGogAEHIAmopAgA3AgAgAUEoaiAAQcACaikCADcCACABQSBqIABBuAJqKQIANwIAIAFBGGogAEGwAmopAgA3AgAgAUEQaiAAQagCaikCADcCACABQQhqIABBoAJqKQIANwIAIAAoAiAiBCAAKAIYRgRAIABBGGpBxJfCABCSAwsgAEEgaiAEQQFqIgI2AgAgAEEQaiACNgIAIAAoAhwgBEEDdGoiBEG0l8IANgIEIAQgATYCACAAIAApAxgibjcDCCBupyACRgRAIABBCGpBpJjCABCSAwsgACgCDCACQQN0aiIBQZSYwgA2AgQgAUEBNgIAIAAgAkEBaiIBNgIQIAAoAgggAUYEQCAAQQhqQajK6QAQkgMLIAAoAgwgAUEDdGoiAUGYyukANgIEIAFBATYCACAAIAJBAmo2AhBB+Y32AC0AABpBDEEEEPwFIgENAQwKCwwICyABIAApAwg3AgAgAUEIaiAAQRBqKAIANgIAIANBqN7BADYCBCADIAE2AgAgAEGABGokACANKQNwIW4gDUHoAGohAiMAQdAAayIAJAAgAEEANgIUIABCgICAgMAANwIMIABBGGpBzffBAEHT98EAEIYBQfmN9gAtAAAaAkBBOEEEEPwFIgEEQCABIAApAhg3AgAgAUEwaiAAQcgAaikCADcCACABQShqIABBQGspAgA3AgAgAUEgaiAAQThqKQIANwIAIAFBGGogAEEwaikCADcCACABQRBqIABBKGopAgA3AgAgAUEIaiAAQSBqKQIANwIAIABBDGpBxJfCABCSAyAAQQhqQQE2AgAgACgCECIDQbSXwgA2AgQgAyABNgIAIAAgACkCDCJzNwMAIHOnQQFGBEAgAEGkmMIAEJIDCyAAKAIEQQhqIgFBlJjCADYCBCABQQE2AgAgAEECNgIIIAAoAgBBAkYEQCAAQajK6QAQkgMLIAAoAgRBEGoiAUGYyukANgIEIAFBATYCACAAQQM2AghB+Y32AC0AABpBDEEEEPwFIgENAQwKCwwHCyABIAApAwA3AgAgAUEIaiAAQQhqKAIANgIAIAJBqN7BADYCBCACIAE2AgAgAEHQAGokACANKQNoIXMgDUHgAGohAyMAQeAAayIAJAAgAEEANgIkIABCgICAgMAANwIcIABBKGpBuIXCAEHAhcIAEIYBQfmN9gAtAAAaAkBBOEEEEPwFIgEEQCABIAApAig3AgAgAUEwaiAAQdgAaikCADcCACABQShqIABB0ABqKQIANwIAIAFBIGogAEHIAGopAgA3AgAgAUEYaiAAQUBrKQIANwIAIAFBEGogAEE4aikCADcCACABQQhqIABBMGopAgA3AgAgAEEcakHEl8IAEJIDIABBGGpBATYCACAAKAIgIgJBtJfCADYCBCACIAE2AgAgACAAKQIcInE3AxAgcadBAUYEQCAAQRBqQaSYwgAQkgMLIAAoAhRBCGoiAUGUmMIANgIEIAFBATYCACAAQQI2AhggAEEoakGz6MEAQbXowQAQhgFB+Y32AC0AABpBOEEEEPwFIgFFDQggASAAKQIoNwIAIAFBMGogAEHYAGopAgA3AgAgAUEoaiAAQdAAaikCADcCACABQSBqIABByABqKQIANwIAIAFBGGogAEFAaykCADcCACABQRBqIABBOGopAgA3AgAgAUEIaiAAQTBqKQIANwIAIAAoAhgiBCAAKAIQRgRAIABBEGpBxJfCABCSAwsgAEEYaiAEQQFqIgI2AgAgAEEIaiACNgIAIAAoAhQgBEEDdGoiBEG0l8IANgIEIAQgATYCACAAIAApAxAicTcDACBxpyACRgRAIABBpJjCABCSAwsgACgCBCACQQN0aiIBQZSYwgA2AgQgAUEBNgIAIAAgAkEBajYCCCAAQShqQej0wQBB6fTBABCGAUH5jfYALQAAGkE4QQQQ/AUiAUUNCCABIAApAig3AgAgAUEwaiAAQdgAaikCADcCACABQShqIABB0ABqKQIANwIAIAFBIGogAEHIAGopAgA3AgAgAUEYaiAAQUBrKQIANwIAIAFBEGogAEE4aikCADcCACABQQhqIABBMGopAgA3AgAgACgCCCICIAAoAgBGBEAgAEHEl8IAEJIDCyAAKAIEIAJBA3RqIgRBtJfCADYCBCAEIAE2AgAgACACQQFqNgIIQfmN9gAtAAAaQQxBBBD8BSIBDQEMCgsMBwsgASAAKQMANwIAIAFBCGogAEEIaigCADYCACADQajewQA2AgQgAyABNgIAIABB4ABqJAAgDSkDYCFxIA1B2ABqIQIjAEHQAGsiACQAIABBADYCFCAAQoCAgIDAADcCDCAAQRhqQcTrwQBByevBABCGAUH5jfYALQAAGgJAQThBBBD8BSIBBEAgASAAKQIYNwIAIAFBMGogAEHIAGopAgA3AgAgAUEoaiAAQUBrKQIANwIA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AxshDEICQgEgAxshC0HLd0HMdyADGyACaiECIA1QCyEDIAAgAjsBiAEgACALNwOAASAAQgE3A3ggACAMNwNwIAAgAzoAigECQAJAAkACQAJAAkAgA0ECayIDBEBBASECQeKm8wBB46bzACAKQgBTIgUbQeKm8wBBASAFGyAEGyEFQQEgCkI/iKcgBBshBkEDIAMgA0EDTxtBAmsOAgIDAQsgAEEDNgIgIABB5KbzADYCHCAAQQI7ARhBASEFQQEhAgwDCyAAQQM2AiAgAEHnpvMANgIcIABBAjsBGAwCCyAAQQM2AiAgAEECOwEYIABB66bzADYCHAwBCyAAQeAAaiAAQfAAaiIEIABBB2oiAhBHAkAgACgCYEUEQCAAQZABaiAEIAIQJAwBCyAAQZgBaiAAQegAaigCADYCACAAIAApAmA3A5ABCyAAKAKUASICRQ0BIAAoApABIgMtAABBME0NAiAALgGYASEEIABBATYCICAAIAM2AhwgAEECOwEYAn8gAkEBRgRAQQEhAiAAQSRqDAELIABBAjsBMCAAQbim8wA2AiggAEECOwEkIAAgAkEBazYCOCAAQQE2AiwgACADQQFqNgI0QQMhAiAAQTxqCyIDQQJBASAEQQBMIgcbNgIIIANB3qbzAEHcpvMAIAcbNgIEIANBAjsBACAAQRhqIAJBDGxqIgNBDmpBASAEayAEQQFrIAcbOwEAIANBDGpBATsBACACQQJqIQILIAAgAjYCbCAAIAY2AmQgACAFNgJgIAAgAEEYajYCaCABIABB4ABqENYBIABBoAFqJAAMAgtBqKPzAEEhQbym8wAQ7wQAC0HUpfMAQR9BzKbzABDvBAALC14BAX8jAEEwayICJAAgAiABNgIMIAIgADYCCCACQQI2AhQgAkHkoMAANgIQIAJCATcCHCACIAJBCGqtQoCAgIAghDcDKCACIAJBKGo2AhggAkEQahC3AyACQTBqJAALXgEBfyMAQTBrIgIkACACIAE2AgwgAiAANgIIIAJBAjYCFCACQbShwAA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgCCENwMoIAIgAkEoajYCGCACQRBqELcDIAJBMGokAAtdAQF/IwBBIGsiAyQAIANBGGpCADcCACADQgA3AhAgAyACNgIMIAMgATYCCCAAKAIEIANBCGogACgCACgCACIA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AAsnAEEAIQACQCACRQ0AIAEtAAANACABLQAJIAEtAAhBA0dxIQALIAALIAAgAkUEQEEADwsgAS0ACyABLQAARSABLQAIQQNHcXELLQAgASgCFCACIAMgASgCGCgCDBEDACECIABBADoABSAAIAI6AAQgACABNgIACzIBAX8gASgCFEG8qPMAQQEgASgCGCgCDBEDACECIABBADoABSAAIAI6AAQgACABNgIACyIAAkAgAARAIAAoAgBBf0YNASAAKAIEDwsQrgYACxCvBgALIgACQCAABEAgACgCAEF/Rg0BIAAoAggPCxCuBgALEK8GAAseAQF/IAAoAgAiACgCFCAAQX82AhQEQAALIABBFGoLIQACQCABIAMQxwUEQCAAIAEgAyACEOsFIgANAQsACyAACx0AIAJFBEBBAA8LIAEtAABFIAFBDGotAABBA0dxCx0AIAJFBEBBAA8LIAEtAABFIAFBCGotAABBA0dxCx4BAX9BAUEgIABBAXJna0EBdiIBdCAAIAF2akEBdgshAAJAIAAEQCAAKAIARQ0BEK8GAAsQrgYACyAAIAE2AgQLIQACQCAABEAgACgCAEUNARCvBgALEK4GAAsgACABNgIICyUBAX8gACgCACIBIAEoAgAiAUEBazYCACABQQFGBEAgABDQAwsLJQEBfyAAKAIAIgEgASgCACIBQQFrNgIAIAFBAUYEQCAAEJMECwskACAAKAIAIAEgAiADIAQgACgCBCgCDBEFACIAQQAgACACRhsLHwAgAkUEQEEADwsgAS0AAEEBRiABQQRqKAIAQQxGcQsfACACRQRAQQAPCyABLQAAQQFGIAFBBGooAgBBBkZxCx8AIAJFBEBBAA8LIAEtAABBAUcgAUEEaigCAEENR3ILHwAgAkUEQEEADwsgAS0AAEEBRiABQQRqKAIAQRVGcQslACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgBSABKAIQEQUACyUAIAAoAgAgASgCCEsEQEHIjPYAQgA3AwBBAA8LIABBDGoQ7QULKgAgAEEAOgAMIAAgATYCCCAAIAI3AwBBlI72AEGUjvYAKAIAQQFqNgIACygAIAEgACgCAC0AAEECdCIAQZzG8ABqKAIAIABBiMbwAGooAgAQ9AULGQEBf0GAgICAeCABayAATyACIAFpQQFGGwsjACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgASgCEBEHAAsjACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgASgCEBEJAAsjACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgASgCEBEsAAsjACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgASgCEBEuAAsjACAARQRAQfzUwABBMhCtBgALIAAgAiADIAQgASgCEBEwAAscACAAQQJBASABQf8BcSIAQQJGG0EAIAAbOgAICyABAX8gACgCNCIBQQ1PBEAgACgCCCABQQJ0QQQQjQYLCygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCNBgsLJQAgASAALQAAQQJ0IgBBoPnyAGooAgAgAEH49/IAaigCABD0BQsKAEEIIAAQzAYACyEAIABFBEBB/NTAAEEyEK0GAAsgACACIAMgASgCEBEEAAsaACACRQRAQQAPCyABQQFqLQAAIAEtAABFcQsjACABQe/F8ABB5sXwACAAKAIALQAAIgAbQQtBCSAAGxD0BQskACAALQAARQRAIAFB/63zAEEFEJwBDwsgAUGErvMAQQQQnAELHwAgAEUEQEH81MAAQTIQrQYACyAAIAIgASgCEBEAAAsdACABKAIARQRAAAsgAEH0+cAANgIEIAAgATYCAAsqACAAIAE2AgQgACACQr2ugqSmj7LpHFEgA0Ln6eKpxcvm6O4AUXE2AgALHQAgASgCAEUEQAALIABB4NbBADYCBCAAIAE2AgALHQAgASgCAEUEQAALIABB5LDrADYCBCAAIAE2AgALHQAgASgCAEUEQAALIABBnMvwADYCBCAAIAE2AgALHAAgACAALQAEIAFBLkZyOgAEIAAoAgAgARD4BQsaAQF/IAAoAgAiAQRAIAAoAgQgAUEBEI0GCwsbACAAKAIAIAEgAiADIAQgACgCBCgCDBEFAEULFwAgAUUEQEEADwsgAC0AACACQf8BcUYLHAAgACgCACIAKAIAIAEgAEEEaigCACgCDBEAAAsbACAAKAIIKAIAKAIQBEBBxOvyABDKBAALQQALGwAgACgCCCgCACgCEARAQcTr8gAQygQAC0EACxgAIAAgAWoiAEUEQEHcvPAAEJYGAAsgAAsaACABIAAsAABBAnRBrMbwAGooAgBBAhD0BQtD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gICAgBWENwNAIAAgAEFAazYCMCABKAIUIAEoAhggAEEoahDGASEBDAMLIwBBMGsiAiQAAn8gA0EQaiIDLQAEQQFGBEAgAiADLQAFOgAHIAJBAjYCHCACQZSw8wA2AhggAkICNwIkIAIgA61CgICAgMAAhDcDECACIAJBB2qtQoCAgICwLoQ3AwggAiACQQhqNgIgIAEoAhQgASgCGCACQRhqEMYBDAELIAJBATYCHCACQdCw8wA2AhggAkIBNwIkIAIgA61CgICAgMAAhDcDCCACIAJBCGo2AiAgASgCFCABKAIYIAJBGGoQxgELIQEgAkEwaiQADAILQbTR7ABBKEG40uwAEO8EAAsgACADKQMINwMIIAAgAykDEDcDGCAAQQM2AiwgAEH8zOwANgIoIABCAjcCNCAAIABBGGqtQoCAgICAFYQ3A0ggACAAQQhqrUKAgICAgBWENwNAIAAgAEFAazYCMCABKAIUIAEoAhggAEEoahDGASEBCyAAQdAAaiQAIAELDgAgAEG41MEAIAEQxgELDgAgAUG3z8EAQQUQ9AULCwAgACABEMMCQQALDgAgAEGk2ukAIAEQxgELDgAgAUGo2OkAQQUQ9AULDAAgACgCACABEO0DCwsAIAAoAgAgARBtCw4AIABBhMvwACABEMYBCw4AIABBrODyACABEMYBCw4AIABBlODyACABEMYBCw4AIABBxODyACABEMYBCwwAIAAgASkCADcDAAsOACAAQbj78gAgARDGAQsOACABQaj78gBBBRD0BQsOACABQa378gBBCxD0BQsaACAAIAFBoJD2ACgCACIAQckCIAAbEQEAAAsOACAAQeCq8wAgARDGAQsLACACIAAgARCcAQvGCQEIfwJAAkAgAiIFIAAiByABa0sEQCABIAJqIQAgAiAHaiECIAVBEEkNAUEAIAJBA3EiBmshCQJAIAJBfHEiAyACTw0AIAZBAWsCQCAGRQRAIAAhBAwBCyAGIQggACEEA0AgAkEBayICIARBAWsiBC0AADoAACAIQQFrIggNAAsLQQNJDQAgBEEEayEEA0AgAkEBayAEQQNqLQAAOgAAIAJBAmsgBEECai0AADoAACACQQNrIARBAWotAAA6AAAgAkEEayICIAQtAAA6AAAgBEEEayEEIAIgA0sNAAsLIAMgBSAGayIEQXxxIgVrIQJB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eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzcvc3JjL2RlLnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZQAACAIQAF4AAACaBAAAIgAAAAgCEABeAAAAkAQAACYAQbiFwAALBQEAAAAGAEHIhcAACwUBAAAABwBB2IXAAAuLBQEAAAAIAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTM3L3NyYy9zZXIucnMA4AIQAF8AAAAwCAAAMwAAAOACEABfAAAAIwgAAEAAAADgAhAAXwAAAA0GAAASAAAA4AIQAF8AAACFCAAAFgAAAGZhbHNlXCJcXFxiXGZcblxyXHQvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAAAkwMQAF4AAAA0AAAABQAAAGNhcGFjaXR5IG92ZXJmbG93L2hvbWUvcnVubmVyL3dvcmsvaGFycGVyLW9ic2lkaWFuLXBsdWdpbi9oYXJwZXItb2JzaWRpYW4tcGx1Z2luL2hhcnBlci9oYXJwZXItY29yZS9zcmMvcGFyc2Vycy9pc29sYXRlX2VuZ2xpc2gucnMAABUEEABxAAAAGQAAAC4AAAAvaG9tZS9ydW5uZXIvd29yay9oYXJwZXItb2JzaWRpYW4tcGx1Z2luL2hhcnBlci1vYnNpZGlhbi1wbHVnaW4vaGFycGVyL2hhcnBlci1jb3JlL3NyYy90aXRsZV9jYXNlLnJzmAQQAGQAAAAjAAAAIgAAAJgEEABkAAAANQAAADEAAACYBBAAZAAAACwAAAAXAAAAmAQQAGQAAAAvAAAAIQAAAGNvbnRleHRfaGFzaGVzc3RhcnRlbmQAAAAAAAD//////////1gFEABB8IrAAAvZDkxpbnRHcm91cENvbmZpZ3NwZWxsZWRfbnVtYmVyc2FuX2FzZW50ZW5jZV9jYXBpdGFsaXphdGlvbnVuY2xvc2VkX3F1b3Rlc3dyb25nX3F1b3Rlc2xvbmdfc2VudGVuY2VzcmVwZWF0ZWRfd29yZHNzcGFjZXNtYXRjaGVyY29ycmVjdF9udW1iZXJfc3VmZml4bnVtYmVyX3N1ZmZpeF9jYXBpdGFsaXphdGlvbm11bHRpcGxlX3NlcXVlbnRpYWxfcHJvbm91bnNsaW5raW5nX3ZlcmJzYXZvaWRfY3Vyc2VzdGVybWluYXRpbmdfY29uanVuY3Rpb25zZWxsaXBzaXNfbGVuZ3RoZG90X2luaXRpYWxpc21zYm9yaW5nX3dvcmRzdXNlX2dlbml0aXZldGhhdF93aGljaGNhcGl0YWxpemVfcGVyc29uYWxfcHJvbm91bnNhbWVyaWNhc2tvcmVhc2NoaW5lc2VfY29tbXVuaXN0X3BhcnR5dW5pdGVkX29yZ2FuaXphdGlvbnNob2xpZGF5c2FtYXpvbl9uYW1lc2dvb2dsZV9uYW1lc21ldGFfbmFtZXNtaWNyb3NvZnRfbmFtZXNhcHBsZV9uYW1lc2F6dXJlX25hbWVzbWVyZ2Vfd29yZHNwbHVyYWxfY29uanVnYXRlb3hmb3JkX2NvbW1hcHJvbm91bl9jb250cmFjdGlvbmN1cnJlbmN5X3BsYWNlbWVudHNvbWV3aGF0X3NvbWV0aGluZ2xldHNfY29uZnVzaW9uZGVzcGl0ZV9vZmFuZF90aGlzZGVjaXNpb25odW1hbl9saWZlbmVlZF9oZWxwbm9fbG9uZ2VydGhhdF9jaGFsbGVuZ2VkdHVybl9pdF9vZmZvZl9jb3Vyc2VzcGVsbF9jaGVjawB/BRAADwAAAI4FEAAEAAAAkgUQABcAAACpBRAADwAAALgFEAAMAAAAxAUQAA4AAADSBRAADgAAAOAFEAAGAAAA5gUQAAcAAADtBRAAFQAAAAIGEAAcAAAAHgYQABwAAAA6BhAADQAAAEcGEAAMAAAAUwYQABgAAABrBhAADwAAAHoGEAAPAAAAiQYQAAwAAACVBhAADAAAAKEGEAAKAAAAqwYQABwAAADHBhAACAAAAM8GEAAGAAAA1QYQABcAAADsBhAAFAAAAAAHEAAIAAAACAcQAAwAAAAUBxAADAAAACAHEAAKAAAAKgcQAA8AAAA5BxAACwAAAEQHEAALAAAATwcQAAsAAABaBxAAEAAAAGoHEAAMAAAAdgcQABMAAACJBxAAEgAAAJsHEAASAAAArQcQAA4AAAC7BxAACgAAAMUHEAAIAAAAzQcQAAgAAADVBxAACgAAAN8HEAAJAAAA6AcQAAkAAADxBxAADwAAAAAIEAALAAAACwgQAAkAAAAUCBAACwAAAExpbnRHcm91cERlc2NyaXB0aW9uc1JlcGxhY2VXaXRoSW5zZXJ0QWZ0ZXJSZW1vdmUAAAC9CRAACwAAAMgJEAALAAAA0wkQAAYAAAAvaG9tZS9ydW5uZXIvd29yay9oYXJwZXItb2JzaWRpYW4tcGx1Z2luL2hhcnBlci1vYnNpZGlhbi1wbHVnaW4vaGFycGVyL2hhcnBlci1jb3JlL3NyYy9saW50aW5nL3BhdHRlcm5fbGludGVyLnJz9AkQAHAAAAA5AAAAMgAAAPQJEABwAAAAOwAAABsAAABzcGFubGludF9raW5kc3VnZ2VzdGlvbnNtZXNzYWdlcHJpb3JpdHlTcGVsbGluZ0NhcGl0YWxpemF0aW9uU3R5bGVGb3JtYXR0aW5nUmVwZXRpdGlvbkVuaGFuY2VtZW50UmVhZGFiaWxpdHlXb3JkQ2hvaWNlTWlzY2VsbGFuZW91cwCrChAACAAAALMKEAAOAAAAwQoQAAUAAADGChAACgAAANAKEAAKAAAA2goQAAsAAADlChAACwAAAPAKEAAKAAAA+goQAA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93YXNtLWJpbmRnZW4tMC4yLjEwMC9zcmMvY29udmVydC9zbGljZXMucnNQCxAAbAAAACQBAAAOAAAAc3RydWN0IFNwYW4gd2l0aCAyIGVsZW1lbnRzAMwLEAAbAAAAAAAAAAgAAAAEAAAACQAAAGEgc2VxdWVuY2UvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZS0xLjAuMjE3L3NyYy9kZS9pbXBscy5ycwAAAAoMEABfAAAAmAQAABwAAABzdHJ1Y3QgTGludCB3aXRoIDUgZWxlbWVudHMAfAwQABsAAABzdHJ1Y3QgSWdub3JlZExpbnRzIHdpdGggMSBlbGVtZW50AACgDBAAIgBB1JnAAAsFAQAAAAoAQeSZwAALNQEAAAALAAAAc3RydWN0IExpbnRHcm91cENvbmZpZyB3aXRoIDQ5IGVsZW1lbnRzAOwMEAAnAEGkmsAAC64IAQAAAAwAAAANAAAADgAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAANA0QACoAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseWgNEAA4AAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5yc6gNEABMAAAAngAAADIAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADMDhAASgAAAJ8AAAAZAAAAzA4QAEoAAACIAAAAGwAAAEVycm9yL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvYm94ZWQvaXRlci5ycz0PEABPAAAAkAAAAC4AAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAnA8QAEsAAACNBQAAGwAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnP4DxAATAAAACsCAAARAAAAbWlzc2luZyBmaWVsZCBgYFQQEAAPAAAAYxAQAAEAAABpbnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIAAAdBAQAA8AAACDEBAACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAAoBAQABEAAABjEBAAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAAxBAQABEAAADVEBAADAAAAAAAAAAEAAAABAAAAA8AAAAAAAAABAAAAAQAAAAQAAAATGF5b3V0c2l6ZWFsaWduQ2FwYWNpdHlPdmVyZmxvdwAAAAAABAAAAAQAAAARAAAAQWxsb2NFcnJsYXlvdXQAQdyiwAALoQMBAAAAEgAAAAAAAAAEAAAABAAAABMAAAAUAAAADAAAAAQAAAAVAAAAFgAAABcAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwX3Rocm93KClgIG9uIGEgYE5vbmVgIHZhbHVlbmV3dHlwZSB2YXJpYW50vREQAA8AAAAAAAAACAAAAAQAAAAYAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQCsARAAXAAAAFIBAAAuAAAArAEQAFwAAABBAQAANgAAAKwBEABcAAAAzgQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBuZXdfY2FwID49IGxlbqwBEABcAAAAmQQAAA0AAAAvaG9tZS9ydW5uZXIvd29yay9oYXJwZXItb2JzaWRpYW4tcGx1Z2luL2hhcnBlci1vYnNpZGlhbi1wbHVnaW4vaGFycGVyL2hhcnBlci1jb3JlL3NyYy90b2tlbi5ycwBwEhAAXwAAAHsAAAAFAAAAcBIQAF8AAADEAAAAJQAAAHASEABfAAAAfAAAAAUAQYimwAALBQEAAAAZAEGYpsAACwUBAAAAGQBBqKbAAAsFAQAAABkAQbimwAALBQEAAAAaAEHIpsAACwUBAAAAGwBB2KbAAAsFAQAAABwAQeimwAALBQEAAAAdAEH4psAACwUBAAAAHgBBiKfAAAsFAQAAAB8AQZinwAALBQEAAAAgAEGop8AACwUBAAAAIQBBuKfAAAsFAQAAACIAQcinwAALBQEAAAAjAEHYp8AAC50BAQAAACQAAABIYXNoIHRhYmxlIGNhcGFjaXR5IG92ZXJmbG934BMQABwAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9oYXNoYnJvd24tMC4xNS4yL3NyYy9yYXcvbW9kLnJzAAAABBQQAGEAAAAjAAAAKABBgKnAAAvJAQEAAAAlAAAAAAAAAAEAAAABAAAAJgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAJgUEABrAAAAlQAAAA4AAAAnAAAABAAAAAQAAAAoAAAAaGFycGVyLXdhc20vc3JjL2xpYi5ycwAAJBUQABYAAAApAAAAAQBB1KrAAAufKAEAAAApAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQCcDxAASwAAAIAKAAAOAAAAJBUQABYAAAAqAAAAAQAAACQVEAAWAAAAKwAAAAEAAABQbGFpbk1hcmtkb3duAAAAxBUQAAUAAADJFRAACAAAAHZhcmlhbnQgaWRlbnRpZmllcmF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZE1vc3Qgc3R5bGUgZ3VpZGVzIHJlY29tbWVuZCB0aGF0IHlvdSBzcGVsbCBvdXQgbnVtYmVycyBsZXNzIHRoYW4gdGVuLkEgcnVsZSB0aGF0IGxvb2tzIGZvciBpbmNvcnJlY3QgaW5kZWZpbml0ZSBhcnRpY2xlcy4gRm9yIGV4YW1wbGUsIGB0aGlzIGlzIGFuIG11bGVgIHdvdWxkIGJlIGZsYWdnZWQgYXMgaW5jb3JyZWN0LlRoZSBvcGVuaW5nIHdvcmQgb2YgYSBzZW50ZW5jZSBzaG91bGQgYWxtb3N0IGFsd2F5cyBiZSBjYXBpdGFsaXplZC5RdW90YXRpb24gbWFya3Mgc2hvdWxkIGFsd2F5cyBiZSBjbG9zZWQuIFVucGFpcmVkIHF1b3RhdGlvbiBtYXJrcyBhcmUgYSBoYWxsbWFyayBvZiBzbG9wcHkgd29yay5UaGUga2V5IG9uIHRoZSBrZXlib2FyZCBvZnRlbiB1c2VkIGFzIGEgcXVvdGF0aW9uIG1hcmsgaXMgYWN0dWFsbHkgYSBkb3VibGUtYXBvc3Ryb3BoZS4gVXNlIHRoZSBjb3JyZWN0IGNoYXJhY3Rlci5UaGlzIHJ1bGUgbG9va3MgZm9yIHJ1bi1vbiBzZW50ZW5jZXMsIHdoaWNoIGNhbiBtYWtlIHlvdXIgd29yayBoYXJkZXIgdG8gZ3Jvay5UaGlzIHJ1bGUgbG9va3MgZm9yIHJlcGV0aXRpb25zIG9mIHdvcmRzIHRoYXQgYXJlIG5vdCBob21vZ3JhcGhzLldvcmRzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgYXQgbW9zdCBvbmUgc3BhY2UuQSBjb2xsZWN0aW9uIG9mIGN1cmF0ZWQgcnVsZXMuIEEgY2F0Y2gtYWxsIHRoYXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuV2hlbiBtYWtpbmcgcXVpY2sgZWRpdHMsIGl0IGlzIGNvbW1vbiBmb3IgYXV0aG9ycyB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIGEgbnVtYmVyIHdpdGhvdXQgY2hhbmdpbmcgaXRzIHN1ZmZpeC4gVGhpcyBydWxlIGxvb2tzIGZvciB0aGVzZSBjYXNlcywgZm9yIGV4YW1wbGU6IGAyc3RgLllvdSBzaG91bGQgbmV2ZXIgY2FwaXRhbGl6ZSBudW1iZXIgc3VmZml4ZXMuV2hlbiBlZGl0aW5nIHdvcmsgdG8gY2hhbmdlIHBvaW50IG9mIHZpZXcgKGkuZS4gZmlyc3QtcGVyc29uIG9yIHRoaXJkLXBlcnNvbikgaXQgaXMgY29tbW9uIHRvIGFkZCBwcm9ub3VucyB3aGlsZSBuZWdsZWN0aW5nIHRvIHJlbW92ZSBvbGQgb25lcy4gVGhpcyBydWxlIGNhdGNoZXMgY2FzZXMgd2hlcmUgeW91IGhhdmUgbXVsdGlwbGUgZGlzcGFyYXRlIHByb25vdW5zIGluIHNlcXVlbmNlLkxpbmtpbmcgdmVyYnMgY29ubmVjdCBub3VucyB0byBvdGhlciBpZGVhcy4gTWFrZSBzdXJlIHlvdSBkbyBub3QgYWNjaWRlbnRhbGx5IGxpbmsgd29yZHMgdGhhdCBhcmVuJ3Qgbm91bnMuQSBydWxlIHRoYXQgbG9va3MgZm9yIGNvbW1vbiBvZmZlbnNpdmUgbGFuZ3VhZ2UuU3Vib3JkaW5hdGluZyBjb25qdW5jdGlvbnMgYXJlIHdvcmRzIHRoYXQgY3JlYXRlIGEgZ3JhbW1hdGljYWwgc3BhY2UgZm9yIGFub3RoZXIgaWRlYSBvciBjbGF1c2UuIEFzIHN1Y2gsIHRoZXkgc2hvdWxkIG5ldmVyIGFwcGVhciBhdCB0aGUgZW5kIG9mIGEgY2xhdXNlLk1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgZG90cyBpbiB5b3VyIGVsbGlwc2lzLkVuc3VyZXMgY29tbW9uIGluaXRpYWxpc21zIChsaWtlICJpLmUuIikgYXJlIHByb3Blcmx5IGRvdC1zZXBhcmF0ZWQuVGhpcyBydWxlIGxvb2tzIGZvciBwYXJ0aWN1bGFybHkgYm9yaW5nIG9yIG92ZXJ1c2VkIHdvcmRzLiBVc2luZyB2YXJpZWQgbGFuZ3VhZ2UgaXMgYW4gZWFzeSB3YXkgdG8ga2VlcCBhIHJlYWRlcidzIGF0dGVudGlvbi5Mb29rcyBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGUgZ2VuaXRpdmUgY2FzZSBvZiAidGhlcmUiIHNob3VsZCBiZSB1c2VkLlJlcGVhdGluZyB0aGUgd29yZCAidGhhdCIgaXMgb2Z0ZW4gcmVkdW5kYW50LiBUaGUgcGhyYXNlIGB0aGF0IHdoaWNoYCBpcyBlYXNpZXIgdG8gcmVhZC5Gb3JnZXR0aW5nIHRvIGNhcGl0YWxpemUgcGVyc29uYWwgcHJvbm91bnMsIGxpa2UgIkkiIG9yICJJJ20iIGlzIG9uZSBvZiB0aGUgbW9zdCBjb21tb24gZXJyb3JzLiBUaGlzIHJ1bGUgaGVscHMgd2l0aCB0aGF0LldoZW4gcmVmZXJyaW5nIHRvIHRoZSBjb250aW5lbnRzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLldoZW4gcmVmZXJyaW5nIHRvIHRoZSBuYXRpb25zLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLldoZW4gcmVmZXJyaW5nIHRvIHRoZSBwb2xpdGljYWwgcGFydHksIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIGEgcHJvcGVyIG5vdW4uV2hlbiByZWZlcnJpbmcgdG8gbmF0aW9uYWwgb3IgaW50ZXJuYXRpb25hbCBvcmdhbml6YXRpb25zLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLldoZW4gcmVmZXJyaW5nIHRvIGhvbGlkYXlzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLldoZW4gcmVmZXJyaW5nIHRvIHRoZSB2YXJpb3VzIHByb2R1Y3RzIG9mIEFtYXpvbi5jb20sIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIGEgcHJvcGVyIG5vdW4uV2hlbiByZWZlcnJpbmcgdG8gR29vZ2xlIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcywgbWFrZSBzdXJlIHRvIHRyZWF0IHRoZW0gYXMgcHJvcGVyIG5vdW5zLldoZW4gcmVmZXJyaW5nIHRvIE1ldGEgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBwcm9wZXIgbm91bnMuV2hlbiByZWZlcnJpbmcgdG8gTWljcm9zb2Z0IHByb2R1Y3RzIGFuZCBzZXJ2aWNlcywgbWFrZSBzdXJlIHRvIHRyZWF0IHRoZW0gYXMgcHJvcGVyIG5vdW5zLldoZW4gcmVmZXJyaW5nIHRvIEFwcGxlIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcywgbWFrZSBzdXJlIHRvIHRyZWF0IHRoZW0gYXMgcHJvcGVyIG5vdW5zLldoZW4gcmVmZXJyaW5nIHRvIEF6dXJlIGNsb3VkIHNlcnZpY2VzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBwcm9wZXIgbm91bnMuQWNjaWRlbnRhbGx5IGluc2VydGluZyBhIHNwYWNlIGluc2lkZSBhIHdvcmQgaXMgY29tbW9uLiBUaGlzIHJ1bGUgbG9va3MgZm9yIHZhbGlkIHdvcmRzIHRoYXQgYXJlIHNwbGl0IGJ5IHdoaXRlc3BhY2UuTWFrZSBzdXJlIHlvdSB1c2UgdGhlIGNvcnJlY3QgY29uanVnYXRpb24gb2YgdGhlIHZlcmIgInRvIGJlIiBpbiBwbHVyYWwgY29udGV4dHMuVGhlIE94Zm9yZCBjb21tYSBpcyBvbmUgb2YgdGhlIG1vcmUgY29udHJvdmVyc2lhbCBydWxlcyBpbiBjb21tb24gdXNlIHRvZGF5LiBFbmFibGluZyB0aGlzIGxpbnQgY2hlY2tzIHRoYXQgdGhlcmUgaXMgYSBjb21tYSBiZWZvcmUgYGFuZGAsIGBvcmAsIG9yIGBub3JgIHdoZW4gbGlzdGluZyBvdXQgbW9yZSB0aGFuIHR3byBpZGVhcy5DaG9vc2luZyB3aGVuIHRvIGNvbnRyYWN0IHByb25vdW5zIGlzIGEgY2hhbGxlbmdpbmcgYXJ0LiBUaGlzIHJ1bGUgbG9va3MgZm9yIGZhdWx0cy5UaGUgbG9jYXRpb24gb2YgY3VycmVuY3kgc3ltYm9scyB2YXJpZXMgYnkgY291bnRyeS4gVGhlIHJ1bGUgbG9va3MgZm9yIGFuZCBjb3JyZWN0cyBpbXByb3BlciBwb3NpdGlvbmluZy5XaGVuIGRlc2NyaWJpbmcgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBub3VuLCB1c2UgYHNvbWV0aGluZ2AgcmF0aGVyIHRoYW4gYHNvbWV3aGF0YC5JdCdzIG9mdGVuIGhhcmQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZSBzdWJqZWN0IHNob3VsZCBnbyB3aXRoIHRoZSB3b3JkIGBsZXRgLiBUaGlzIHJ1bGUgYXR0ZW1wdHMgdG8gZmluZCBjb21tb24gZXJyb3JzIHdpdGggcmVkdW5kYW5jeSBhbmQgY29udHJhY3Rpb25zIHRoYXQgbWF5IGxlYWQgdG8gY29uZnVzaW9uIGZvciByZWFkZXJzLkNvcnJlY3RzIHRoZSBtaXN1c2Ugb2YgYGRlc3BpdGUgb2ZgIGFuZCBzdWdnZXN0cyB0aGUgcHJvcGVyIGFsdGVybmF0aXZlcyBgZGVzcGl0ZWAgb3IgYGluIHNwaXRlIG9mYC5Mb29rcyBmb3Igc2xpZ2h0IGltcHJvcGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHBocmFzZSBgYW5kIHRoaXNgLkxvb2tzIGZvciBzbGlnaHQgaW1wcm9wZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcGhyYXNlIGBtYWtlIGEgZGVjaXNpb25gLkxvb2tzIGZvciBzbGlnaHQgaW1wcm9wZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcGhyYXNlIGBodW1hbiBsaWZlYC5Mb29rcyBmb3Igc2xpZ2h0IGltcHJvcGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHBocmFzZSBgbmVlZCBoZWxwYC5Mb29rcyBmb3Igc2xpZ2h0IGltcHJvcGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHBocmFzZSBgbm8gbG9uZ2VyYC5Mb29rcyBmb3Igc2xpZ2h0IGltcHJvcGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHBocmFzZSBgdGhhdCBjaGFsbGVuZ2VkYC5Mb29rcyBmb3Igc2xpZ2h0IGltcHJvcGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHBocmFzZSBgdHVybiBpdCBvZmZgLkxvb2tzIGZvciBzbGlnaHQgaW1wcm9wZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcGhyYXNlIGBvZiBjb3Vyc2VgLkxvb2tzIGFuZCBwcm92aWRlcyBjb3JyZWN0aW9ucyBmb3IgbWlzc3BlbGxlZCB3b3Jkcy4AJBUQABYAAABnAAAARAAAACQVEAAWAAAAawAAADgAAAAqAAAABAAAAAQAAAArAAAAJBUQABYAAAB1AAAASwAAACQVEAAWAAAAfAAAADcAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkAAAAJBUQABYAAACmAAAANAAAAGlubmVyc3RydWN0IFN1Z2dlc3Rpb25zdHJ1Y3QgU3VnZ2VzdGlvbiB3aXRoIDEgZWxlbWVudAAAQigQACAAAABzb3VyY2VsYW5ndWFnZXN0cnVjdCBMaW50c3RydWN0IExpbnQgd2l0aCAzIGVsZW1lbnRzhSgQABsAAAAkFRAAFgAAAEMBAAAkAAAAJBUQABYAAABOAQAAIwAAAHN0cnVjdCBTcGFuAAAAAAACAAAAAQAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAADgKBAASgAAAJ8AAAAZAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAADwpEAAOAAAASikQAAsAAAD//////////2gpEABBgNPAAAvLFQEAAAAAAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAAACIKRAAZQAAADUAAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzACoQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzrioQAFoAAAD7GAAAAQAAAFVuYWJsZSB0byBhbGxvY2F0ZSBhbm90aGVyIHNwYW4vaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLXN1YnNjcmliZXItMC4zLjE5L3NyYy9yZWdpc3RyeS9zaGFyZGVkLnJzAAA3KxAAcwAAAAsBAAAOAAAAc2hhcmRlZF9zbGFiOjpjZmc6OkRlZmF1bHRDb25maWf/AAAAY3JlYXRpbmcgYSBuZXcgdGhyZWFkIElEICgpIHdvdWxkIGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkIElEIGJpdHMgc3BlY2lmaWVkIGluICAoKQAA4CsQABoAAAD6KxAAQQAAADssEAACAAAAPSwQAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGFyZGVkLXNsYWItMC4xLjcvc3JjL3RpZC5ycwBgLBAAXwAAAKMAAAAVAAAAPHVubmFtZWQ+dGhyZWFkICcnIGF0dGVtcHRlZCB0byBwYW5pYyBhdCAnY3JlYXRpbmcgYSBuZXcgdGhyZWFkIElEICgpJywgL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy90aWQucnM6MTYzOjIxCm5vdGU6IHdlIHdlcmUgYWxyZWFkeSB1bndpbmRpbmcgZHVlIHRvIGEgcHJldmlvdXMgcGFuaWMuCtksEAAIAAAA4SwQADMAAAD6KxAAQQAAADssEAACAAAAFC0QAKQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGFyZGVkLXNsYWItMC4xLjcvc3JjL3BhZ2UvbW9kLnJz4C0QAGQAAAApAQAAGAAAAOAtEABkAAAAKwEAAA4AAADgLRAAZAAAADEBAAAgAAAAcGFnZSBtdXN0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgdG8gaW5zZXJ0IeAtEABkAAAAGAEAABIAAADgLRAAZAAAABkBAAAZAAAAgAAAAFRocmVhZCBjb3VudCBvdmVyZmxvd2VkIHRoZSBjb25maWd1cmVkIG1heCBjb3VudC4gVGhyZWFkIGluZGV4ID0gLCBtYXggdGhyZWFkcyA9IC4AAMAuEABBAAAAAS8QABAAAAARLxAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NoYXJkZWQtc2xhYi0wLjEuNy9zcmMvc2hhcmQucnMAAAAsLxAAYQAAACcBAAAJAAAALC8QAGEAAAAzAQAADQAAAAAAAAAEAAAABAAAAEQAAABhIHNoYXJkIGNhbiBvbmx5IGJlIGluc2VydGVkIGJ5IHRoZSB0aHJlYWQgdGhhdCBvd25zIGl0LCB0aGlzIGlzIGEgYnVnIQAsLxAAYQAAAJUBAAAOAAAALC8QAGEAAAD8AAAACgAAAEUAAACgAAAABAAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAAAAAAAACAAAAAgAAABWAAAAAAAAAAgAAAAIAAAAVwAAAAAAAAAIAAAABAAAAFgAAAAAAAAACAAAAAgAAABZAAAAAAAAAAEAAAABAAAAWgAAAAAAAAAQAAAACAAAAFsAAAAAAAAAEAAAAAgAAABcAAAAAAAAAAgAAAAEAAAAXQAAAAAAAAAIAAAABAAAAF4AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLnJlcGxhY2UodmFsKS5pc19ub25lKCkvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLXN1YnNjcmliZXItMC4zLjE5L3NyYy9yZWdpc3RyeS9leHRlbnNpb25zLnJzADExEAB2AAAAWAAAAAkAAABfAAAAEAAAAAQAAABgAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXjIMRAAIAAAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAAAPExEABcAAAAFAAAAAkAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzYDIQAFgAAACzBwAACQAAAAAAAAAEAAAABAAAAGEAAAAAAAAABAAAAAQAAABiAAAARXJyb3IvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnPtMhAASwAAAI0FAAAbAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc0gzEABMAAAAKwIAABEAAABjAAAADAAAAAQAAABkAAAAZQAAAGYAAAAsLxAAYQAAAFEBAAAiAAAA/////y9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAAANAzEABdAAAAPwAAAAkAAAD//////////0A0EABB2OjAAAvhBWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHdlaXJkIGxpZmVjeWNsZSAAAFg0EAA6AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy9wYWdlL3Nsb3QucnMAAACcNBAAZQAAAJQCAAAYAAAAdAAAABQ1EAABAAAAXwAAABAAAAAEAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAACAAAAABAAAAAAAAAFQ1EAABAAAAAQAAAAAAAABUNRAAAQAAACVjJWMgAAAAeDUQAAIAAAB6NRAAAwAAAAEAAAAAAAAAeDUQAAIAAABjb2xvcjogZG9kZ2VyYmx1ZTsgYmFja2dyb3VuZDogIzQ0NGNvbG9yOiBsYXduZ3JlZW47IGJhY2tncm91bmQ6ICM0NDRjb2xvcjogd2hpdGVzbW9rZTsgYmFja2dyb3VuZDogIzQ0NGNvbG9yOiBvcmFuZ2U7IGJhY2tncm91bmQ6ICM0NDRjb2xvcjogcmVkOyBiYWNrZ3JvdW5kOiAjNDQ0Y29sb3I6IGdyYXk7IGZvbnQtc3R5bGU6IGl0YWxpY2NvbG9yOiBpbmhlcml0YwAAAHA2EAABAAAALi4uOgEAAAAAAAAAfzYQAAEAAAAiAAAAkDYQAAEAAACQNhAAAQAAAFQ1EAABAAAAVDUQAAEAAACQNhAAAQAAAJA2EAABAAAAVDUQAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLXdhc20tMC4yLjEvc3JjL2xpYi5yc21lc3NhZ2UAAFQ1EAABAEHE7sAAC6oLAQAAAHEAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlCiA9IDsBAAAAAAAAAHg3EAADAAAAezcQAAEAAADMNhAAXwAAAMMBAABFAAAAAQAAAAAAAAABAAAAAAAAAHc3EAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzvDcQAGwAAAAkAQAADgAAAKA1EADDNRAA5TUQAAg2EAAnNhAAIwAAACIAAAAjAAAAHwAAABwAAABzaGFyZGVkX3NsYWI6OmNmZzo6RGVmYXVsdENvbmZpZ/8AAABjcmVhdGluZyBhIG5ldyB0aHJlYWQgSUQgKCkgd291bGQgZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWQgSUQgYml0cyBzcGVjaWZpZWQgaW4gICgpAACEOBAAGgAAAJ44EABBAAAA3zgQAAIAAADhOBAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NoYXJkZWQtc2xhYi0wLjEuNy9zcmMvdGlkLnJzAAQ5EABfAAAAowAAABUAAAA8dW5uYW1lZD50aHJlYWQgJycgYXR0ZW1wdGVkIHRvIHBhbmljIGF0ICdjcmVhdGluZyBhIG5ldyB0aHJlYWQgSUQgKCknLCAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGFyZGVkLXNsYWItMC4xLjcvc3JjL3RpZC5yczoxNjM6MjEKbm90ZTogd2Ugd2VyZSBhbHJlYWR5IHVud2luZGluZyBkdWUgdG8gYSBwcmV2aW91cyBwYW5pYy4KfTkQAAgAAACFORAAMwAAAJ44EABBAAAA3zgQAAIAAAC4ORAApAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NoYXJkZWQtc2xhYi0wLjEuNy9zcmMvc2hhcmQucnMAAACEOhAAYQAAABEBAAAaAAAAhDoQAGEAAAAXAQAAHAAAAIQ6EABhAAAAFAEAABQAAACEOhAAYQAAAPwAAAAKAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1jb3JlLTAuMS4zMy9zcmMvZGlzcGF0Y2hlci5ycwAoOxAAZwAAAGkDAAAmAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXigOxAAIAAAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAAAMk7EABcAAAAFAAAAAkAAAAAAAAACAAAAAQAAAB1AAAAdgAAAHcAAAB4AAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5yc1Q8EABYAAAAswcAAAkAAAAAAAAABAAAAAQAAAB5AAAAAAAAAAQAAAAEAAAAegAAAAAAAAAEAAAABAAAAHsAAABJZABB+PnAAAuFCQgAAAAEAAAAfAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHdlaXJkIGxpZmVjeWNsZSAAAAQ9EAA6AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy9wYWdlL3Nsb3QucnMAAABIPRAAZQAAAJQCAAAYAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAADAPRAAKgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3RyYWNpbmctc3Vic2NyaWJlci0wLjMuMTkvc3JjL3JlZ2lzdHJ5L3NoYXJkZWQucnMA9D0QAHMAAAAlAQAADgAAAPQ9EABzAAAALgEAABYAAAB0cmllZCB0byBjbG9uZSAsIGJ1dCBubyBzcGFuIGV4aXN0cyB3aXRoIHRoYXQgSUQKVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IGNvbnN1bWluZyBhIHBhcmVudCBzcGFuIChgcGFyZW50OiBzcGFuYCkgcmF0aGVyIHRoYW4gYm9ycm93aW5nIGl0IChgcGFyZW50OiAmc3BhbmApLgCIPhAADwAAAJc+EACMAAAA9D0QAHMAAAA3AQAAIAAAAHRyaWVkIHRvIGNsb25lIGEgc3BhbiAoKSB0aGF0IGFscmVhZHkgY2xvc2VkRD8QABcAAABbPxAAFQAAAPQ9EABzAAAAQgEAAAkAAAD0PRAAcwAAAE4BAAAjAAAAdHJpZWQgdG8gZHJvcCBhIHJlZiB0byAsIGJ1dCBubyBzdWNoIHNwYW4gZXhpc3RzIQAAAKA/EAAXAAAAtz8QABoAAAD0PRAAcwAAAF4BAAAVAAAAcmVmZXJlbmNlIGNvdW50IG92ZXJmbG93IQAAAPQ9EABzAAAAYwEAAA0AAAAvIVwgVHJpZWQgdG8gcmVnaXN0ZXIgdGhlIG51bGwgY2FsbHNpdGUgLyFcCiBUaGlzIHNob3VsZCBuZXZlciBoYXZlIGhhcHBlbmVkIGFuZCBpcyBkZWZpbml0ZWx5IGEgYnVnLiBBIGB0cmFjaW5nYCBidWcgcmVwb3J0IHdvdWxkIGJlIGFwcHJlY2lhdGVkLgAAIEAQAJIAAAD0PRAAcwAAAMkBAAARAAAALyFcIFRyaWVkIHRvIGFjY2VzcyB0aGUgbnVsbCBjYWxsc2l0ZSdzIG1ldGFkYXRhIC8hXAogVGhpcyBzaG91bGQgbmV2ZXIgaGF2ZSBoYXBwZW5lZCBhbmQgaXMgZGVmaW5pdGVseSBhIGJ1Zy4gQSBgdHJhY2luZ2AgYnVnIHJlcG9ydCB3b3VsZCBiZSBhcHByZWNpYXRlZC4AzEAQAJsAAAD0PRAAcwAAANEBAAARAEGIg8EAC+EPAQAAAH0AAAB+AAAAfwAAAHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OnNoYXJkZWQAAAABAAAA2gEAAAAAAAABAAAAAAAAAAEAAAAAAAAABAAAAAAAAACAQRAAgEEQAJhBEAAlAAAA9D0QAHMAAAACAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1zdWJzY3JpYmVyLTAuMy4xOS9zcmMvcmVnaXN0cnkvc3RhY2sucnMAAAAAQhAAcQAAABYAAAAUAAAAAEIQAHEAAAAjAAAAPQAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4lEIQACAAAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMAAAC9QhAAXAAAABQAAAAJAAAAAAAAAAQAAAAEAAAAgAAAAAAAAAAMAAAABAAAAIEAAACCAAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAABQQxAAKgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIwLjIvc3JjL2xpYi5ycwAAAIRDEABdAAAAHwUAABkAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAPRDEAAqAAAAb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWF5IG5vdCBiZSBwZXJmb3JtZWQgcmVjdXJzaXZlbHkoRBAAOAAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnNoRBAATAAAAJ4AAAAyAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXjERBAAIAAAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAAAO1EEABcAAAAFAAAAAkAAAAAAAAABAAAAAQAAACEAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy90aWQucnMAbEUQAF8AAADAAAAAFwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2xhenlfc3RhdGljLTEuNS4wL3NyYy9pbmxpbmVfbGF6eS5ycwAA3EUQAGYAAAAeAAAAEAAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4VEYQACAAAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMAAAB9RhAAXAAAABQAAAAJAAAAAAAAAAQAAAAEAAAAhwAAAAAAAAAEAAAABAAAAIgAAABBcmMgY291bnRlciBvdmVyZmxvdwxHEAAUAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAChHEABJAAAAqAYAAA0AAAABAAAAAAAAAChHEABJAAAAsAsAAA0AAAD/////L3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL3J3bG9jay9ub190aHJlYWRzLnJzAAAAoEcQAF0AAAA/AAAACQAAAAAAAAAMAAAABAAAAIkAAACKAAAAAAAAAAwAAAAEAAAAiwAAAIwAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAADhIEAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvb25jZV9jZWxsLTEuMjAuMi9zcmMvbGliLnJzAAAAbEgQAF0AAAAfBQAAGQAAAAAAAAAMAAAABAAAAI4AAACPAAAAkAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3RyYWNpbmctY29yZS0wLjEuMzMvc3JjL2NhbGxzaXRlLnJzAAAA9EgQAGUAAAAqAgAAGQBB9JLBAAvCBQEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACaAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAAAAAAMRJEABsSRAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1jb3JlLTAuMS4zMy9zcmMvZGlzcGF0Y2hlci5ycwDESRAAZwAAAGkDAAAmAAAAIAAAADxKEAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1jb3JlLTAuMS4zMy9zcmMvZmllbGQucnMAAEhKEABiAAAAJQMAAAkAAABUUkFDRURFQlVHSU5GT1dBUk5FUlJPUnNwYW4gSURzIG11c3QgYmUgPiAwL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1jb3JlLTAuMS4zMy9zcmMvc3Bhbi5yc+dKEABhAAAARgAAAB8AAABFcnJvci9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc11LEABLAAAAjQUAABsAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzuEsQAEwAAAArAgAAEQAAAKAAAAAMAAAABAAAAKEAAACiAAAAowAAAAoKU3RhY2s6CgoAQcCYwQAL2woBAAAApAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAXUsQAEsAAACACgAADgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jb252ZXJ0L3NsaWNlcy5yc5BMEABsAAAAJAEAAA4AAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAAxNEAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvb25jZV9jZWxsLTEuMjAuMi9zcmMvbGliLnJzAAAAQE0QAF0AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AACwTRAADgAAAEBNEABdAAAAegIAAA0AAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0SnNWYWx1ZSgpAEJOEAAIAAAASk4QAAEAAAAAAAAABAAAAAQAAACnAAAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIwLjIvc3JjL2ltcF9zdGQucnMAAABwThAAYQAAAKEAAAA2AAAAcE4QAGEAAACbAAAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3B1bGxkb3duLWNtYXJrLTAuMTIuMi9zcmMvcGFyc2UucnP0ThAAZAAAAAcIAAA/AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcHVsbGRvd24tY21hcmstMC4xMi4yL3NyYy90cmVlLnJzAGhPEABjAAAArwAAABgAAAD0ThAAZAAAAA4IAAAjAAAA9E4QAGQAAAASCAAAKwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NtYWxsdmVjLTEuMTMuMi9zcmMvbGliLnJzL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTM3L3NyYy9kZS5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAAFhQEABeAAAAmgQAACIAAABYUBAAXgAAAJAEAAAmAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZnJvbV9pdGVyX25lc3RlZC5ycwAAAFEQAF4AAAA0AAAABQAAAGNhcGFjaXR5IG92ZXJmbG93AAAAcFEQABEAAAAAAAAA//////////+QURAAQaijwQAL5SYvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi91bmljb2RlLXdpZHRoLTAuMi4wL3NyYy90YWJsZXMucnMAqFEQAGMAAACRAAAAFQAAAKhREABjAAAAlwAAABkAAABoTxAAYwAAAGQAAAAUAAAAaE8QAGMAAABvAAAAHwAAAGhPEABjAAAAcAAAABQAAABoTxAAYwAAAHEAAAAYAAAA9E4QAGQAAACtBAAAIwAAAPROEABkAAAArgQAACEAAAD0ThAAZAAAAM8EAAAoAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAPROEABkAAAA0gQAABsAAAD0ThAAZAAAAOMEAAAaAAAA9E4QAGQAAADoBAAAFgAAAPROEABkAAAA9AQAABYAAAD0ThAAZAAAAPUEAAAxAAAA9E4QAGQAAAD1BAAAFgAAAPROEABkAAAA9gQAAC0AAAD0ThAAZAAA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L3N5bmMvb25jZS5yc7RkEABMAAAAngAAADIAQZjKwQALjQoBAAAAswAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAAZmUQAE8AAAAEAQAAGgAAAGZlEABPAAAA1wEAACIAAABmZRAATwAAAPgBAAAmAAAAAAAAAAgAAAAEAAAAtAAAALUAAAC2AAAAtwAAAAAAAAAEAAAABAAAALgAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnNtaWQgPiBsZW7LZhAACQAAAGxmEABfAAAATAAAAB8AAABsZhAAXwAAAEYAAAAXAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAPxmEABKAAAAnwAAABkAAAD8ZhAASgAAAIgAAAAbAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5yc0Vycm9yAAAAAAQAAAAEAAAAuQAAAEZzdAAAAAAABAAAAAQAAAC6AAAASW8AAPxmEABKAAAAkwMAAAkAAACcUhAASwAAAI0FAAAbAAAAY2Fubm90IHJlbW92ZSBhIGNoYXIgZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nAAAABGgQAC0AAACcUhAASwAAAPgFAAAVAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdk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EAA3AAAAGAAAABsAAABUaGlzIG51bWJlciBuZWVkcyBhIGRpZmZlcmVudCBzdWZmaXggdG8gc291bmQgcmlnaHQuaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvY29ycmVjdF9udW1iZXJfc3VmZml4LnJzsHMQADAAAAAVAAAAIAAAAFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVuY3kgc3ltYm9sIG1hdHRlcnMu2QAAAAwAAAAEAAAA3QAAAGRlc3BpdGVvZmhhcnBlci1jb3JlL3NyYy9saW50aW5nL2Rlc3BpdGVfb2YucnMAADV0EAAlAAAAHgAAACMAAABpbiBzcGl0ZSBvZlRoZSBwaHJhc2Ug4oCcZGVzcGl0ZSBvZuKAnSBpcyBpbmNvcnJlY3QuIFBsZWFzZSB1c2UgZWl0aGVyIOKAnGRlc3BpdGXigJ0gb3Ig4oCcaW4gc3BpdGUgb2bigJ0gaW5zdGVhZC5pZWkuZS5lZ2UuZy5oYXJwZXItY29yZS9zcmMvbGludGluZy9kb3RfaW5pdGlhbGlzbXMucnPqdBAAKgAAACkAAAA1AAAA6nQQACoAAAAsAAAARAAAAEluaXRpYWxpc21zIHNob3VsZCBoYXZlIGRvdC1zZXBhcmF0ZWQgbGV0dGVycy5Ib3Jpem9udGFsIGVsbGlwc2lzIG11c3QgaGF2ZSAzIGRvdHMuaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvZWxsaXBzaXNfbGVuZ3RoLnJzAAAAh3UQACoAAAAaAAAAFwAAAGxldCdzaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvbGV0c19jb25mdXNpb24vbGV0X3VzX3JlZHVuZGFuY3kucnPJdRAAOwAAAB4AAAAuAAAAbGV0cyAAAAAUdhAABQAAAGBsZXQnc2Agc3RhbmRzIGZvciBgbGV0IHVzYCwgc28gaW5jbHVkaW5nIGFub3RoZXIgcHJvbm91biBpcyByZWR1bmRhbnQubGV0c2xldGhhcnBlci1jb3JlL3NyYy9saW50aW5nL2xldHNfY29uZnVzaW9uL25vX2NvbnRyYWN0aW9uX3dpdGhfdmVyYi5yc3J2EABCAAAAIAAAADMAAABsZXQgdXNJdCBzZWVtcyB5b3UgZm9yZ290IHRvIGluY2x1ZGUgYSBzdWJqZWN0IGhlcmUuaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvbGlua2luZ192ZXJicy5yc0xpbmtpbmcgdmVyYnMgbGlrZSDigJzigJ0gbXVzdCBiZSBwcmVjZWRlZCBieSBhIG5vdW4uAAAAIHcQABYAAAA2dxAAHwAAAPh2EAAoAAAAFQAAACAAAABTcGVsbGluZ0NhcGl0YWxpemF0aW9uU3R5bGVGb3JtYXR0aW5nUmVwZXRpdGlvbkVuaGFuY2VtZW50UmVhZGFiaWxpdHlXb3JkQ2hvaWNlTWlzY2VsbGFuZW91c1dvcmQgQ2hvaWNlaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvbG9uZ19zZW50ZW5jZXMucnNUaGlzIHNlbnRlbmNlIGlzICB3b3JkcyBsb25nLgAAAAh4EAARAAAAGXgQAAwAAADfdxAAKQAAABEAAAAYAAAAc3BhY2lhbGF0dGVudGlvbnNwZWNpYWwgYXR0ZW50aW9ud2VsbGJlaW5nd2VsbC1iZWluZ2hhc2h0YWJsZWhhc2ggdGFibGVoYXNobWFwaGFzaCBtYXBkZXBkZXBlbmRlbmN5ZGVwc2RlcGVuZGVuY2llc29mZnRoZWN1ZmZvZmYtdGhlLWN1ZmZhbmluYW5kIGlubXlzZWxmbXlzZWxmZWlnaHRncmFkZWVpZ2h0aCBncmFkZWFuZGFsc290b2RvdG8tZG9Uby1Eb1RvLWRvcGVyZm9ybWluZ3RoaXNwZXJmb3JtIHRoaXNtaW5zbWludXRlc21pbm1pbnV0ZW1pbmltdW1zZWNzc2Vjb25kc3NlY3NlY29uZGhyc2hvdXJzaHJob3Vydy9vd2l0aG91dHcvd2l0aHdvcmRsaXN0d29yZCBsaXN0Y2hhbGxlbmdlZHRoYXQgY2hhbGxlbmdlZHN0ZGluc3RhbmRhcmQgaW5wdXRzdGRvdXRzdGFuZGFyZCBvdXRwdXRub3Rvbm90IHRvTm9uZ3JhbW4tZ3JhbWdyYW1tZXJncmFtbWFyVGhlcmVmb3JlVGhlcmVmb3JlZmF0YWxvdXRjb21lZGVhdGhnZWlnZXJjb3VudGVyR2VpZ2VyIGNvdW50ZXJ3b3JsZHdhcjJXb3JsZCBXYXIgSUlXb3JsZGlpV2FySWlpSWJsYWNrc2VhQmxhY2sgU2VhSWFtSSBhbVdlcmVXZSBhcmVUaGVmcmVuY2hteSBGcmVuY2hJdGNhbUl0IGNhbmNhbmJlc2VlbWNhbiBiZSBzZWVubXVob3VzZW15IGhvdXNla2lkcmVnYXJkc2tpbmQgcmVnYXJkc21pc3N1bmRlcnN0YW5kbWlzdW5kZXJzdGFuZHVzZW1pc3VzZXVzZWRtaXN1c2VkYmVldGhlcmViZWVuIHRoZXJld2FudHdvbid0IGJlbW9yZXRoZW5tb3JlIHRoYW5nb25nZ29pbmcgdG9vdGhlcnN0aGFuIG90aGVyc1RoZW5iZWZvcmV0aGFuIGJlZm9yZWxhc3R3ZWVrdGhhbiBsYXN0IHdlZWtoZXJ0aGFuIGhlcmhlcnN0aGFuIGhlcnNoaW10aGFuIGhpbWhpc3RoYW4gaGlzc2ltcGx5Z3JhbW1hdGljYWxzaW1wbGUgZ3JhbW1hdGljYWx5b3VyeW91cnlvdSdyZXRoYXRzdGhhdCdzVGhhdFRoYXQnc3RoYXQgaXNtc21pbGxpc2Vjb25kc2Nhc2VzZW5zaXRpdmVjYXNlLXNlbnNpdGl2ZVRyZWVzaXR0ZXJUcmVlLXNpdHRlcmFsbGFsbCB0aGV0b3dhcmRzdGhvdWdocHJvY2Vzc3Rob3VnaHQgcHJvY2Vzc3RoYXQgdGhpc3NhbWV0aGFuc2FtZSBhc1NhbWVMTWxhcmdlIGxhbmd1YWdlIG1vZGVsaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvbWF0Y2hlci5ycwAAjHwQACIAAAC9AAAAEgAAAIx8EAAiAAAAwgAAABIAAACMfBAAIgAAAO0AAAAiAAAARGlkIHlvdSBtZWFuIOKAnOKAnT/gfBAAEAAAAPB8EAAEAAAAjHwQACIAAAD2AAAAGwAAAEl0IHNlZW1zIHRoZXNlIHdvcmRzIHdvdWxkIGdvIGJldHRlciB0b2dldGhlci5oYXJwZXItY29yZS9zcmMvbGludGluZy9tZXJnZV93b3Jkcy5yc0J9EAAmAAAANQAAABcAAABtZXdlaGVzaGVpdHRoZXloYXJwZXItY29yZS9zcmMvbGludGluZy9tdWx0aXBsZV9zZXF1ZW50aWFsX3Byb25vdW5zLnJzAACHfRAANwAAADAAAAAZAAAAh30QADcAAAAzAAAAGQAAAId9EAA3AAAAOQAAACkAAABUaGVyZSBhcmUgdG9vIG1hbnkgcGVyc29uYWwgcHJvbm91bnMgaW4gc2VxdWVuY2UgaGVyZS5UaGlzIHN1ZmZpeCBzaG91bGQgYmUgbG93ZXJjYXNlaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvbnVtYmVyX3N1ZmZpeF9jYXBpdGFsaXphdGlvbi5yc0V+EAA3AAAAGAAAABgAAABFfhAANwAAABQAAAASAAAAb3Jub3IAAADeAAAA6AAAAAQAAADfAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvb3hmb3JkX2NvbW1hLnJzALR+EAAnAAAAHwAAAEAAAAC0fhAAJwAAACAAAAAYAAAAQW4gT3hmb3JkIGNvbW1hIGlzIG5lY2Vzc2FyeSBoZXJlLgAAtH4QACcAAABEAAAAIgAAALR+EAAnAAAASAAAABsAAABoYXJwZXItY29yZS9zcmMvbGludGluZy9wYXR0ZXJuX2xpbnRlci5ycwAAAEB/EAApAAAAOQAAADIAAABAfxAAKQAAADsAAAAbAAAAaXMAQZj/wQALvRcBAAAA4AAAAGFyZWhhcnBlci1jb3JlL3NyYy9saW50aW5nL3BsdXJhbF9jb25qdWdhdGUucnMAAKN/EAArAAAAKAAAADcAAABVc2UgdGhlIGFsdGVybmF0aXZlIGNvbmp1Z2F0aW9uIG9mIHRoaXMgdmVyYiB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIG5vdW4ncyBwbHVyYWwgbmF0dXJlLmhhcnBlci1jb3JlL3NyYy9saW50aW5nL3Byb25vdW5fY29udHJhY3Rpb24vYXZvaWRfY29udHJhY3Rpb24ucnM8gBAAQAAAABwAAAAUAAAASXQgYXBwZWFycyB5b3UgaW50ZW5kZWQgdG8gdXNlIHRoZSBwb3NzZXNzaXZlIHZlcnNpb24gb2YgdGhpcyB3b3Jkd2VyZVRoZSBwYXR0ZXJuIGluIHRoaXMgbGludGVyIHNob3VsZCBtYWtlIGEgZmFsbC10aHJvdWdoIGltcG9zc2libGUuANKAEABBAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvcHJvbm91bl9jb250cmFjdGlvbi9zaG91bGRfY29udHJhY3QucnMAAByBEAA+AAAAIQAAABIAAAB3ZSBhcmV3ZSdyZXlvdSBhcmUAAByBEAA+AAAALgAAABcAAABVc2UgdGhlIGNvbnRyYWN0aW9uIG9yIHNlcGFyYXRlIHRoZSB3b3JkcyBpbnN0ZWFkLmhhcnBlci1jb3JlL3NyYy9saW50aW5nL3JlcGVhdGVkX3dvcmRzLnJzAMKBEAApAAAANQAAADQAAABEaWQgeW91IG1lYW4gdG8gcmVwZWF0IHRoaXMgd29yZD8AAADCgRAAKQAAADsAAAAbAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvc2VudGVuY2VfY2FwaXRhbGl6YXRpb24ucnMAADCCEAAyAAAAFAAAAEcAAABUaGlzIHNlbnRlbmNlIGRvZXMgbm90IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcgAAMIIQADIAAAAtAAAAIwAAAHNvbWV3aGF0aGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvc29tZXdoYXRfc29tZXRoaW5nLnJzAAAAwIIQAC0AAAAgAAAAKwAAAHNvbWV0aGluZ1VzZSB0aGUgdHJhZGl0aW9uYWwgZm9ybS5oYXJwZXItY29yZS9zcmMvbGludGluZy9zcGFjZXMucnNVbm5lY2Vzc2FyeSBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBzZW50ZW5jZS4igxAAIQAAADIAAAAYAAAAVGhlcmUgYXJlICBzcGFjZXMgd2hlcmUgdGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lLgAAAICDEAAKAAAAioMQACcAAAAigxAAIQAAABMAAAAcAAAAVGhlIHNwYWNlIGl0ZXJhdG9yIHNob3VsZCBvbmx5IHJldHVybiBzcGFjZXMuAAAA1IMQAC0AAAAigxAAIQAAAA8AAAAVAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvc3BlbGxlZF9udW1iZXJzLnJzAAAchBAAKgAAABYAAAA5AAAAVHJ5IHRvIHNwZWxsIG91dCBudW1iZXJzIGxlc3MgdGhhbiB0ZW4uAByEEAAqAAAAEgAAABcAAAAchBAAKgAAAA4AAAA+AAAAemVyb29uZXR3b3RocmVlZm91cmZpdmVzaXhzZXZlbm5pbmV0ZW5lbGV2ZW50d2VsdmV0aGlydGVlbmZvdXJ0ZWVuZmlmdGVlbnNpeHRlZW5zZXZlbnRlZW5laWdodGVlbm5pbmV0ZWVudHdlbnR5dGhpcnR5Zm9ydHlmaWZ0eXNpeHR5c2V2ZW50eWVpZ2h0eW5pbmV0eQAchBAAKgAAAE4AAABDAAAAIGh1bmRyZWQBAAAAAAAAAEiFEAAIAAAAHIQQACoAAABSAAAAGgAAAByEEAAqAAAAVwAAACoAAAAchBAAKgAAAFkAAAApAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvc3VnZ2VzdGlvbi5ycwAAAKiFEAAlAAAANgAAACkAAACohRAAJQAAADMAAAAfAAAAqIUQACUAAABEAAAAJQAAAKiFEAAlAAAAPgAAABsAAABhbHRob3VnaGFzYmVjYXVzZWlmbGVzdG9uY2Vvbmx5c2luY2VzdXBwb3Npbmd0aWxsdW5sZXNzdW50aWx3aGVud2hlbmV2ZXJ3aGVyZXdoZXJlYXN3aGVyZXZlcndoZXRoZXJub3R3aGlsZQDhAAAACAAAAAQAAADiAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvdGVybWluYXRpbmdfY29uanVuY3Rpb25zLnJzAIyGEAAzAAAANQAAABkAAABTdWJvcmRpbmF0aW5nIGNvbmp1bmN0aW9ucyBsaWtlIOKAnOKAnSBzaG91bGQgbm90IGFwcGVhciBhdCB0aGUgZW5kIG9mIGEgY2xhdXNlLtCGEAAjAAAA84YQAC0AAADjAAAABAAAAAQAAADkAAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvdGhhdF93aGljaC5ycwAAAECHEAAlAAAAKgAAAA0AAAAgd2hpY2gAAAEAAAAAAAAAeIcQAAYAAADigJx0aGF0IHRoYXTigJ0gc29tZXRpbWVzIG1lYW5zIOKAnHRoYXQgd2hpY2jigJ0sIHdoaWNoIGlzIGNsZWFyZXIuVGhpcyBxdW90ZSBoYXMgbm8gdGVybWluYXRpb24uaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvdW5jbG9zZWRfcXVvdGVzLnJzAPGHEAAqAAAAEAAAABcAAAB0aGV5J3JlSXNXZXJlAAAA4QAAAAgAAAAEAAAA5QAAAGhhcnBlci1jb3JlL3NyYy9saW50aW5nL3VzZV9nZW5pdGl2ZS5ycwBMiBAAJwAAAD8AAAATAAAAVXNl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AAAAGgAAAGhhcnBlci1jb3JlL3NyYy9zcGVsbC9odW5zcGVsbC9tYXRjaGVyLnJzAAAAnI8QACkAAAAaAAAAKwAAAJyPEAApAAAAHgAAADMAAACcjxAAKQAAACUAAAAjAAAAnI8QACkAAAApAAAAIwAAAJyPEAApAAAALAAAACIAAACcjxAAKQAAAC0AAAAgAAAAaGFycGVyLWNvcmUvc3JjL3NwZWxsL2h1bnNwZWxsL3dvcmRfbGlzdC5ycwAokBAAKwAAABYAAAAVAAAAKJAQACsAAAAaAAAAEwAAACiQEAArAAAAHwAAABMAAAA1MDAwMApBQS8xMjU0TQpBQUEvMTIKQUIvMjE1TQpBQkEvMjEKQUJDLzEyNVNNCkFCTS8yMVNNCkFCUy8xMgpBQy8xNTJNCkFDTFUvMk0KQUNULzIxCkFDVEgvMU0KQUQvMTUyTQpBREMvMQpBREQvMQpBRE0vMTIKQURQLzFNCkFGLzE1CkFGQUlLLwpBRkIvMQpBRkMvMjFNCkFGREMvMgpBRk4vMjEKQUZULzIKQUkvMTJTTQpBSURTLzE1TQpBSy8yMQpBTC8xMgpBTS8yNTFNCkFNQS8yMQpBTUQvMTJNCkFOU0kvMlMKQU5aVVMvMk0KQU9MLzJNCkFQLzEyNU0KQVBCLzEKQVBDLzEyNQpBUEkvMTJTTQpBUE8vMQpBUFIvMQpBUi81MTIKQVJDLzEyNQpBU0FQLwpBU0NJSS8yU00KQVNMLzJNCkFTUENBLzIKQVRNLzFNCkFUUC8yMU0KQVRWLzIxCkFWLzUxMgpBVkkvMgpBV0FDUy8xTQpBV09MLzUxTQpBV1MvMjFNCkFaLzJNCkFaVC8xTQpBYWNoZW4vMk0KQWFsaXlhaC8yTQpBYXJvbi8yMU0KQWJiYXMvMk0KQWJiYXNpZC8xNU0KQWJib3R0LzJNCkFiYnkvMjFNCkFiZHVsLzJNCkFiZS8yMU0KQWJlbC8yTQpBYmVsYXJkLzJNCkFiZWxzb24vMk0KQWJlcmRlZW4vMjFNCkFiZXJuYXRoeS8yTQpBYmlkamFuLzJNCkFiaWdhaWwvMk0KQWJpbGVuZS8yNU0KQWJuZXIvMk0KQWJvcmlnaW5lLzFNUwpBYnJhaGFtLzIxTQpBYnJhbS8yMTVNUwpBYnJhbXMvMk0KQWJzYWxvbS8yTQpBYnVqYS8yTQpBYnlzc2luaWEvMjVNCkFieXNzaW5pYW4vNTEyTQpBYy8xTQpBY2FkaWEvMk0KQWNhcHVsY28vMk0KQWNjZW50dXJlL00KQWNjcmEvMk0KQWNldmVkby8yTQpBY2hhZWFuLzE1TQpBY2hlYmUvMk0KQWNoZXJuYXIvMk0KQWNoZXNvbi8yTQpBY2hpbGxlcy8yTQpBY29uY2FndWEvMk0KQWNvc3RhLzJNCkFjcm9wb2xpcy8yCkFjcnV4LzJNCkFjdGFlb24vMjE0TQpBY3Rvbi8yTQpBY3RzLzIxTQpBY3VmZi8yTQpBZGEvMlNNCkFkYW0vMlNNCkFkYW1zLzIxTQpBZGFuL00KQWRhbmEvMk0KQWRhci8yTQpBZGRhbXMvMk0KQWRkZXJsZXkvMk0KQWRkaWUvMjFNCkFkZGlzb24vMk0KQWRlbGEvMk0KQWRlbGFpZGUvMk0KQWRlbGUvMk0KQWRlbGluZS8yTQpBZGVuLzJNCkFkZW5hdWVyL00KQWRoYXJhLzJNCkFkaWRhcy8yMU0KQWRpcm9uZGFjay8xMlNNCkFkaXJvbmRhY2tzLzEyTQpBZGtpbnMvMk0KQWRsZXIvMk0KQWRtLzEKQWRtaXJhbHR5LzIKQWRvbGYvMk0KQWRvbGZvL00KQWRvbHBoLzJNCkFkb25pcy8yMU1TCkFkcmVuYWxpbi9NUwpBZHJpYW4vMjVNCkFkcmlhbmEvMk0KQWRyaWF0aWMvNTJNCkFkcmllbm5lLzJNCkFkdmVudC8yTVMKQWR2ZW50aXN0LzE1TVMKQWR2aWwvMk0KQWVnZWFuLzUyTQpBZWxmcmljL00KQWVuZWFzLzJNCkFlbmVpZC8yTQpBZW9sdXMvMk0KQWVyb2Zsb3QvMk0KQWVzY2h5bHVzLzJNCkFlc2N1bGFwaXVzLzJNCkFlc29wLzJNCkFmZ2hhbi8xMjVTTQpBZmdoYW5pLzE1TQpBZmdoYW5pc3Rhbi8yTQpBZnIKQWZyaWNhLzJNCkFmcmljYW4vNTFTTQpBZnJpa2FhbnMvMjE1TQpBZnJpa2FuZXIvMVNNCkFmcm8vMVNNCkFmcm9jZW50cmljLzUKQWZyb2NlbnRyaXNtLzFNCkFnLzFNCkFnYW1lbW5vbi8yTQpBZ2FuYS8yCkFnYXNzaS8yTQpBZ2Fzc2l6LzJNCkFnYXRoYS8yTQpBZ2dpZS8yMU0KQWdsYWlhLzJNCkFnbmVzLzJNCkFnbmV3LzJNCkFnbmkvMk0KQWdyYS8yTQpBZ3JpY29sYS9NCkFncmlwcGEvMk0KQWdyaXBwaW5hLzJNCkFndWFkaWxsYS8yTQpBZ3Vhc2NhbGllbnRlcy8yCkFndWlsYXIvMk0KQWd1aW5hbGRvL00KQWd1aXJyZS8yTQpBZ3VzdGluLzJNCkFoYWIvMk0KQWhtYWQvMk0KQWhtYWRhYmFkLzJNCkFobWFkaW5lamFkLzJNCkFobWVkLzJNCkFocmltYW4vMk0KQWlkYS8yTQpBaWtlbi8yTQpBaWxlZW4vMk0KQWltZWUvMk0KQWludS8xNTJNCkFpcmVkYWxlLzIxTVMKQWlyZXMvTQpBaXNoYS8yTQpBamF4LzJNCkFrYmFyLzJNCkFraG1hdG92YS9NCkFraWhpdG8vTQpBa2l0YS8yMU0KQWtpdmEvMk0KQWtrYWQvMk0KQWtyb24vMk0KQWwvMTJNCkFsYS8xMlMKQWxhYmFtYS8xMk0KQWxhYmFtYW4vNTFNUwpBbGFiYW1pYW4vNTFTTQpBbGFkZGluLzJNCkFsYW1vLzJNCkFsYW1vZ29yZG8vMk0KQWxhbi8yMU0KQWxhbmEvMk0KQWxhci8xTQpBbGFyaWMvMk0KQWxhc2thLzIxTQpBbGFza2FuLzUxTVMKQWxiYS8yTQpBbGJhbmlhLzJNCkFsYmFuaWFuLzUxMk1TCkFsYmFueS8yTQpBbGJlZS8yTQpBbGJlcmlvL00KQWxiZXJ0LzIxTQpBbGJlcnRhLzJNCkFsYmVydGFuLzUxMgpBbGJlcnRvL00KQWxiaWdlbnNpYW4vNTFNCkFsYmlvbi8yTQpBbGJpcmVvLzJNCkFsYnVxdWVycXVlLzJNCkFsY2F0cmF6LzJNCkFsY2VzdGlzL00KQWxjaWJpYWRlcy8yTQpBbGNpbmRvci8yTQpBbGNtZW5hLzJNCkFsY29hL00KQWxjb3R0LzJNCkFsY3Vpbi8yTQpBbGN5b25lLzJNCkFsZGFuL00KQWxkZWJhcmFuLzJNCkFsZGVuLzJNCkFsZGVyYW1pbi8yTQpBbGRvLzJNCkFsZHJpbi8yTQpBbGVjLzJNCkFsZWljaGVtL00KQWxlamFuZHJhL00KQWxlamFuZHJvLzJNCkFsZW1iZXJ0L00KQWxlcHBvLzJNCkFsZXV0LzUxMk1TCkFsZXV0aWFuLzUxU00KQWxleC8yTQpBbGV4YW5kZXIvMjFNUwpBbGV4YW5kcmEvMk0KQWxleGFuZHJpYS8yTQpBbGV4YW5kcmlhbi81MQpBbGV4ZWkvMk0KQWxleGlzLzJNCkFsZm9uc28vMk0KQWxmb256by8yTQpBbGZvcmQvMk0KQWxmcmVkLzJNCkFsZnJlZGEvMk0KQWxmcmVkby8xTQpBbGdlbmliLzJNCkFsZ2VyLzJNCkFsZ2VyaWEvMk0KQWxnZXJpYW4vMTVTTQpBbGdpZWJhLzJNCkFsZ2llcnMvMk0KQWxnb2wvMk0KQWxnb25xdWlhbi81MVNNCkFsZ29ucXVpbi8xMk1TCkFsaGFtYnJhLzIxTQpBbGhlbmEvMk0KQWxpLzJNCkFsaWNlLzJNCkFsaWNpYS8yTQpBbGlnaGllcmkvTQpBbGluZS8yTQpBbGlvdGgvMk0KQWxpc2EvMk0KQWxpc2hhLzJNCkFsaXNvbi8yTQpBbGlzc2EvMk0KQWxpc3RhaXIvMk0KQWxrYWlkLzJNCkFsbGFoLzJNCkFsbGFoYWJhZC8yTQpBbGxhbi8yTQpBbGxlZ2hlbmllcy8yTQpBbGxlZ2hlbnkvMlNNCkFsbGVncmEvMk0KQWxsZW4vMjFNCkFsbGVuZGUvMk0KQWxsZW50b3duLzJNCkFsbGhhbGxvd3MvMk0KQWxsaWUvMk1TCkFsbGlzb24vMk0KQWxsc3RhdGUvTQpBbGx5c29uLzJNCkFsbWEvMk0KQWxtYWNoLzJNCkFsbWF0eS8yTQpBbG1pZ2h0eS8yTQpBbG1vaGFkLzVNCkFsbW9yYXZpZC8xTQpBbG5pbGFtLzJNCkFsbml0YWsvMk0KQWxvbnpvLzJNCkFscGVydC8yTQpBbHBoYXJkLzJNCkFscGhlY2NhLzJNCkFscGhlcmF0ei8yTQpBbHBob25zZS8yTQpBbHBob25zby8yMU0KQWxwaW5lLzUyTQpBbHBvL00KQWxwcy8yTQpBbHNhY2UvMk0KQWxzYXRpYW4vNTEyU00KQWxzb3AvMk0KQWxzdG9uLzJNCkFsdGEvMk0KQWx0YWJhL00KQWx0YWkvMjFNCkFsdGFpYy81TQpBbHRhaXIvMk0KQWx0YW1pcmEvMk0KQWx0aGVhLzJNCkFsdGlwbGFuby8yTQpBbHRtYW4vMk0KQWx0b2lkcy9NCkFsdG9uLzJNCkFsdG9vbmEvMk0KQWx1ZHJhLzJNCkFsdmEvMk0KQWx2YXJhZG8vMk0KQWx2YXJlei8yTQpBbHZhcm8vTQpBbHZpbi8yTQpBbHljZS9NCkFseXNvbi8yTQpBbHlzc2EvMk0KQWx6aGVpbWVyLzFNCkFtLzVNTlIKQW1hZGV1cy8yTQpBbWFkby8yTQpBbWFsaWEvMk0KQW1hbmRhLzJNCkFtYXJpbGxvLzJNCkFtYXJ1LzJNCkFtYXRlcmFzdS8yTQpBbWF0aS8xTQpBbWF6b24vMTI0U00KQW1hem9uaWFuLzUyMQpBbWJlci8yTQpBbWVsaWEvMk0KQW1lbi8yTQpBbWVuaG90ZXAvTQpBbWVyYXNpYW4vMTVNCkFtZXJpY2EvMlNNCkFtZXJpY2FuLzE1Mk1TCkFtZXJpY2FuYS8xTQpBbWVyaWNhbmlzbS8xTVMKQW1lcmljYW5pemF0aW9uLzFNUwpBbWVyaWNhbml6ZS80R0RTCkFtZXJpbmQvMTVTTQpBbWVyaW5kaWFuLzUxTVMKQW1lcy8yTQpBbWVzbGFuLzJNCkFtZ2VuL00KQW1oYXJpYy8yTQpBbWhlcnN0LzIxTQpBbWllLzJNCkFtaWdhL00KQW1pc2gvMTVNCkFtbWFuLzJNCkFtb2NvL00KQW1vcy8yTQpBbXBhcm8vTQpBbXBlcmUvTQpBbXJpdHNhci8yTQpBbXN0ZXJkYW0vMk0KQW10cmFrLzJNCkFtdW5kc2VuLzJNCkFtdXIvMk0KQW13YXkvTQpBbXkvMk0KQW5hLzIxTQpBbmFiYXB0aXN0LzE1TQpBbmFiZWwvMk0KQW5hY2luL00KQW5hY3Jlb24vMk0KQW5haGVpbS8yMU0KQW5hbGVjdHMvMk0KQW5hbmlhcy8yTQpBbmFzYXppLzFNCkFuYXN0YXNpYS8yTQpBbmF0b2xlLzJNCkFuYXRvbGlhLzJNCkFuYXRvbGlhbi81MTJNCkFuYXhhZ29yYXMvMk0KQW5jaG9yYWdlLzJNCkFuZGFsdXNpYS8yTQpBbmRhbHVzaWFuLzUxMk0KQW5kYW1hbi81TQpBbmRlYW4vNTFNCkFuZGVyc2VuLzJNCkFuZGVyc29uLzJNCkFuZGVzLzJNCkFuZG9ycmEvMk0KQW5kb3JyYW4vMTVTTQpBbmRyZS8yTVMKQW5kcmVhLzJNCkFuZHJlaS8yTQpBbmRyZXMvMk0KQW5kcmV0dGkvMjFNCkFuZHJldy8yU00KQW5kcmV3cy8yTQpBbmRyaWFuYW1wb2luaW1lcmluYS9NCkFuZHJvaWQvMjFNCkFuZHJvbWFjaGUvMk0KQW5kcm9tZWRhLzJNCkFuZHJvcG92L00KQW5keS8yMU0KQW5nYXJhLzJNCkFuZ2VsLzEyTQpBbmdlbGEvMk0KQW5nZWxlcy8yTQpBbmdlbGlhL00KQW5nZWxpY2EvMk0KQW5nZWxpY28vTQpBbmdlbGluYS8yMU0KQW5nZWxpbmUvMk0KQW5nZWxpcXVlLzJNCkFuZ2VsaXRhL00KQW5nZWxvLzJNCkFuZ2Vsb3UvTQpBbmdldmluLzUxTQpBbmdpZS8yTQpBbmdrb3IvMk0KQW5nbGUvMU1TCkFuZ2xldG9uLzJNCkFuZ2xpYS8yTQpBbmdsaWNhbi81MVNNCkFuZ2xpY2FuaXNtLzFNUwpBbmdsaWNpc20vMU1TCkFuZ2xpY2l6YXRpb24vMQpBbmdsaWNpemUKQW5nbG8vMU0KQW5nbG9waGlsZS8xNU0KQW5nbG9waG9iZS8xCkFuZ29sYS8yMU0KQW5nb2xhbi81MU1TCkFuZ29yYS8xMlNNCkFuZ3N0cm9tLzFNCkFuZ3VpbGxhLzJNCkFuZ3VzLzJNCkFuaHVpLzJNCkFuaWFrY2hhay9NCkFuaWJhbC9NCkFuaXRhLzJNCkFua2FyYS8yMU0KQW5uLzIxNU0KQW5uYS8yTQpBbm5hYmVsLzJNCkFubmFiZWxsZS8yTQpBbm5hbS8yTQpBbm5hcG9saXMvMk0KQW5uYXB1cm5hLzJNCkFubmUvMk0KQW5uZXR0ZS8yTQpBbm5pZS8yTQpBbm5pc3Rvbi8yTQpBbm5tYXJpZS9NCkFubnVuY2lhdGlvbi8yU00KQW5vdWlsaC9NCkFuc2VsbS8yTQpBbnNlbG1vLzJNCkFuc2hhbi8yTQpBbnRhZXVzLzJNCkFudGFuYW5hcml2by8yTQpBbnRhcmN0aWMvNTJNCkFudGFyY3RpY2EvMk0KQW50YXJlcy8yTQpBbnRob255LzJNCkFudGhyb3BvY2VuZS8yCkFudGljaHJpc3QvMlNNCkFudGlldGFtLzJNCkFudGlmYS8yMU0KQW50aWdvbmUvMk0KQW50aWd1YS8yTQpBbnRpbGxlYW4vNTEKQW50aWxsZXMvMk0KQW50aW9jaC8yTQpBbnRpcGFzLzJNCkFudGlwb2Rlcy8yCkFudG9mYWdhc3RhLzJNCkFudG9pbmUvMk0KQW50b2luZXR0ZS8yTQpBbnRvbi8yTQpBbnRvbmUvMk0KQW50b25pYS8yTQpBbnRvbmludXMvTQpBbnRvbmlvLzJNCkFudG9uaXVzLzJNCkFudG9ueS8yTQpBbnR3YW4vMk0KQW50d2VycC8yTQpBbnViaXMvMk0KQW56YWMvMjFNCkFwYWNoZS8yMVNNCkFwYWxhY2hpY29sYS8yTQpBcGF0b3NhdXJ1cy8yCkFwZW5uaW5lcy8yTQpBcGhyb2RpdGUvMk0KQXBpYS8yTQpBcG9jYWx5cHNlLzJNCkFwb2NyeXBoYS8yTQpBcG9sbGluYWlyZS9NCkFwb2xsby8yMVNNCkFwb2xsb25pYW4vNTFNCkFwb3N0bGUvMTJNCkFwcGFsYWNoaWEvMk0KQXBwYWxhY2hpYW4vNTEyU00KQXBwYWxhY2hpYW5zLzIxTQpBcHBhbG9vc2EvMVNNCkFwcGxlLzIxTQpBcHBsZXNlZWQvTQpBcHBsZXRvbi8yTQpBcHBvbWF0dG94LzJNCkFwci8yTQpBcHJpbC8yTVMKQXB1bGVpdXMvMk0KQXF1YWZyZXNoL00KQXF1YXJpYW4vNTEKQXF1YXJpdXMvMjFNUwpBcXVpbGEvMk0KQXF1aW5hcy8yTQpBcXVpbm8vMk0KQXF1aXRhaW5lLzJNCkFyLzFNCkFyYS8yTQpBcmFiLzUxU00KQXJhYmlhLzJNCkFyYWJpYW4vNTFNUwpBcmFiaWMvNTIxTQpBcmFiaXN0LzE1TVMKQXJhYnkvMk0KQXJhY2VsaS8yTQpBcmFmYXQvMk0KQXJhZ29uLzIKQXJhZ3VheWEvTQpBcmFsLzJNCkFyYW1haWMvMjUxTQpBcmFtY28vTQpBcmFwYWhvLzEyTVMKQXJhcGFob2VzLzEKQXJhcmF0LzJNCkFyYXVjYW5pYW4vMTUyTQpBcmF3YWsvMTI1TQpBcmF3YWthbi81TQpBcmJpdHJvbi9NCkFyY2FkaWEvMjFNCkFyY2FkaWFuLzE1TQpBcmNoZWFuLzUyTQpBcmNoaWJhbGQvMk0KQXJjaGllLzIxTQpBcmNoaW1lZGVzLzJNCkFyY3RpYy81MjFNCkFyY3R1cnVzLzJNCkFyZGFiaWwvMgpBcmRlbi8yTQpBcmR1aW5vL00KQXJlY2liby8yTQpBcmVxdWlwYS8yTQpBcmVzLzJNCkFyZ2VudGluYS8yTQpBcmdlbnRpbmUvNTEyTQpBcmdlbnRpbmVhbi81MQpBcmdlbnRpbmlhbi8xNU1TCkFyZ28vMlNNCkFyZ29uYXV0LzIxTVMKQXJnb25uZS8yTQpBcmdvcy8yTQpBcmd1cy8yMU0KQXJpYWRuZS8yTQpBcmlhbmlzbS8xTQpBcmllbC8yTQpBcmllcy8yMU1TCkFyaW9zdG8vTQpBcmlzdGFyY2h1cy8yTQpBcmlzdGlkZXMvMk0KQXJpc3RvcGhhbmVzLzJNCkFyaXN0b3RlbGlhbi8xNU0KQXJpc3RvdGxlLzJNCkFyaXVzLzJNCkFyaXovMgpBcml6b25hLzJNCkFyaXpvbmFuLzUxU00KQXJpem9uaWFuLzUxTVMKQXJqdW5hLzJNCkFyay8yTQpBcmthbnNhbi81MU1TCkFya2Fuc2FzLzJNCkFya2hhbmdlbHNrLzJNCkFya3dyaWdodC8yTQpBcmxlbmUvMk0KQXJsaW5lLzJNCkFybGluZ3Rvbi8yTQpBcm1hZ2VkZG9uLzJTTQpBcm1hZ25hYy8yMU0KQXJtYW5kLzJNCkFybWFuZG8vMk0KQXJtYW5pLzIxTQpBcm1lbmlhLzJNCkFybWVuaWFuLzUxMlNNCkFybWluaXVzLzJNCkFybW9uay9NCkFybW91ci8yTQpBcm1zdHJvbmcvMjFNCkFybmViLzJNCkFybmhlbS8yTQpBcm5vLzJNCkFybm9sZC8yTQpBcm51bGZvL00KQXJvbi8yTQpBcnJoZW5pdXMvMk0KQXJyb24vMk0KQXJ0LzJNCkFydGF4ZXJ4ZXMvMk0KQXJ0ZW1pcy8yTQpBcnRodXIvMjFNCkFydGh1cmlhbi81TQpBcnRpZS8yTQpBcnR1cm8vTQpBcnViYS8yTQpBcnlhbi8xNTJNUwpBcy8xTQpBc2FtYS9NCkFzY2VsbGEvMk0KQXNjZW5zaW9uLzJNCkFzZ2FyZC8yTQpBc2hhbnRpLzEyTQpBc2hjcm9mdC8yTQpBc2hlLzJNCkFzaGV2aWxsZS8yTQpBc2hnYWJhdC8yCkFzaGlrYWdhLzJNCkFzaGtlbmF6aW0vMU0KQXNoa2hhYmFkLzJNCkFzaGxlZS8yTQpBc2hsZXkvMk0KQXNobW9sZWFuLzUyTQpBc2h1cmJhbmlwYWwvTQpBc2lhLzJNCkFzaWFnby8yCkFzaWFuLzE1TVMKQXNpYXRpYy81MVNNCkFzaW1vdi8yTQpBc21hcmEvMk0KQXNva2EvMk0KQXNwZWxsL00KQXNwZW4vMk0KQXNwZXJnZXIvMjFNCkFzcGlkaXNrZS8yTQpBc3F1aXRoLzJNCkFzc2FkLzJNCkFzc2FtLzIxTQpBc3NhbWVzZS81MjFNCkFzc2VtYmx5LzIKQXNzaXNpLzJNCkFzc3lyaWEvMk0KQXNzeXJpYW4vMTUyU00KQXN0YWlyZS8yTQpBc3RhbmEvMk0KQXN0YXJ0ZS8yTQpBc3Rvbi8yMU0KQXN0b3IvMk0KQXN0b3JpYS8yTQpBc3RyYWtoYW4vMjFNCkFzdHJvVHVyZi8xTQpBc3R1cmlhcy8yTQpBc3VuY2lvbi9NCkFzd2FuLzJNCkF0L1NNCkF0YWNhbWEvMk0KQXRhaHVhbHBhL00KQXRhbGFudGEvMk0KQXRhcmkvMU0KQXRhc2NhZGVyby8yTQpBdGF0dXJrL00KQXRoYWJhc2NhLzJNCkF0aGFiYXNrYW4vNTIxU00KQXRoYW5hc2l1cy8yCkF0aGVuYS8yMU0KQXRoZW5lLzJNCkF0aGVuaWFuLzE1U00KQXRoZW5zLzJNCkF0a2lucy8yTQpBdGtpbnNvbi8yTQpBdGxhbnRhLzJNCkF0bGFudGVzCkF0bGFudGljLzI1MU0KQXRsYW50aXMvMk0KQXRsYXMvMjFNUwpBdG1hbi8xTQpBdG9uZW1lbnQKQXRyZXVzLzJNCkF0cmlhL00KQXRyb3Bvcy8yTQpBdHRpYy81Mk0KQXR0aWNhLzJNCkF0dGlsYS8yTQpBdHRsZWUvMk0KQXR0bgpBdHR1Y2tzL00KQXR3b29kLzJNCkF1LzJNCkF1YnJleS8yTQpBdWJ1cm4vMk0KQXVja2xhbmQvMk0KQXVkZW4vMk0KQXVkaS8yMU0KQXVkaW9uL00KQXVkcmEvMk0KQXVkcmV5LzJNCkF1ZHVib24vMk0KQXVnLzJNCkF1Z2Vhbi81TQpBdWdzYnVyZy8yTQpBdWd1c3QvMk1TCkF1Z3VzdGEvMk0KQXVndXN0YW4vNU0KQXVndXN0aW5lLzIxTQpBdWd1c3Rpbmlhbi81MU1TCkF1Z3VzdHVzLzJNCkF1cmFuZ3plYi8yTQpBdXJlbGlhLzJNCkF1cmVsaW8vTQpBdXJlbGl1cy8yTQpBdXJlb215Y2luL00KQXVyaWdhLzJNCkF1cm9yYS8yTQpBdXNjaHdpdHovMk0KQXVzc2llLzEyNU1TCkF1c3Rlbi8yTQpBdXN0ZXJsaXR6LzJNCkF1c3Rpbi8yNU1TCkF1c3RyYWxhc2lhLzJNCkF1c3RyYWxhc2lhbi81MQpBdXN0cmFsaWEvMk0KQXVzdHJhbGlhbi8xNTJTTQpBdXN0cmFsb2lkLzFNCkF1c3RyYWxvcGl0aGVjdXMvMjFNCkF1c3RyaWEvMk0KQXVzdHJpYW4vNTFTTQpBdXN0cm9uZXNpYW4vNTFNCkF1dHVtbi8yTQpBdi8yTQpBdmEvMk0KQXZhbG9uLzJNCkF2ZS8xTQpBdmVudGluZS81MTJNCkF2ZXJudXMvMk0KQXZlcnJvZXMvMk0KQXZlcnkvMk0KQXZlc3RhLzI1TQpBdmljZW5uYS8yTQpBdmlnbm9uLzJNCkF2aWxhLzJNCkF2aW9yL00KQXZpcy8yTQpBdm9nYWRyby8yTQpBdm9uLzJNCkF2b25kYWxlLzJNCkF4aXMvMgpBeHVtLzJNCkF5YWxhLzJNCkF5ZXJzLzJNCkF5bWFyYS8xMk0KQXlyc2hpcmUvMjFNCkF5dXJ2ZWRhLzFNCkF5eXViaWQvNTFNCkF6YW5hL00KQXphbmlhLzJNCkF6YXplbC8yTQpBemVyYmFpamFuLzJNCkF6ZXJiYWlqYW5pLzEyNU1TCkF6b3Jlcy8yTQpBem92LzJNCkF6dGVjLzEyNVNNCkF6dGVjYW4vNTFNCkF6dGxhbi8yTQpCLzEyTU5UCkJBLzEyNU0KQkFTSUMvMlNNCkJCLzEyTQpCQkIvMjFNCkJCQy8yMU0KQkJRLzE0CkJCUy8xCkJCU2VzLzEKQkMvMjE1TQpCRkYvMQpCSUEvMgpCSU9TLzEKQklUTkVULzIKQkxULzFTTQpCTS8xMjRNCkJNVy8yMTRNCkJPLzEyNApCUC8yMTVNCkJQT0UvMgpCUi8xMgpCUy8yMTRNCkJTQS8xMgpCU0QvMjFTTQpCVFUvMQpCVFcvCkJZT0IvCkJhLzIxTQpCYWFsLzJTTQpCYWF0aC8yTQpCYWF0aGlzdC81MU0KQmFiYmFnZS8yTQpCYWJiaXR0LzIxTQpCYWJlbC8yMU1TCkJhYnlsb24vMk1TCkJhYnlsb25pYS8yTQpCYWJ5bG9uaWFuLzUxMlNNCkJhY2FsbC8yTQpCYWNhcmRpL00KQmFjY2hhbmFsaWEvMU0KQmFjY2hpYy81CkJhY2NodXMvMk0KQmFjaC8yTQpCYWNrdXMvMk0KQmFjb24vMk0KQmFjdHJpYS8yTQpCYWRlbi8yTQpCYWRsYW5kcy8yTQpCYWVkZWtlci8yMU1TCkJhZXovMk0KQmFmZmluLzJNCkJhZ2dpZXMvMTJNCkJhZ2hkYWQvMk0KQmFndWlvLzJNCkJhaGEnaS8xNU0KQmFoYSd1bGxhaC8yTQpCYWhhbWEvNTFTTQpCYWhhbWFuaWFuCkJhaGFtYXMvMk0KQmFoYW1pYW4vNTFNUwpCYWhpYS8yTQpCYWhyYWluLzJNCkJhaWR1LzI0TQpCYWlrYWwvMk0KQmFpbGV5LzIxTQpCYWlyZC8yTQpCYWtlbGl0ZS8xTQpCYWtlci8yMU0KQmFrZXJzZmllbGQvMk0KQmFrdS8yTQpCYWt1bmluL00KQmFsYW5jaGluZS9NCkJhbGF0b24vMk0KQmFsYm9hLzJNCkJhbGRlci8yTQpCYWxkd2luLzIxU00KQmFsZWFyaWMvNTJNCkJhbGZvdXIvMk0KQmFsaS8yTQpCYWxpbmVzZS81MU0KQmFsa2FuLzUyTVMKQmFsa2Fucy8yTQpCYWxraGFzaC9NCkJhbGwvMk0KQmFsbGFyZC8yTQpCYWx0aGF6YXIvMjFNCkJhbHRpYy81Mk0KQmFsdGltb3JlLzIxTQpCYWx1Y2hpc3Rhbi8yTQpCYWx6YWMvMk0KQmFtYWtvLzJNCkJhbWJpLzJNCkJhbmFjaC81Mk0KQmFuY3JvZnQvMk0KQmFuZHVuZy8yTQpCYW5nYWxvcmUvMjE0TQpCYW5na29rLzJNCkJhbmdsYWRlc2gvMk0KQmFuZ2xhZGVzaGkvMTVTTQpCYW5nb3IvMk0KQmFuZ3VpLzJNCkJhbmphcm1hc2luLzJNCkJhbmp1bC8yTQpCYW5rcy8yTQpCYW5uZWtlci9NCkJhbm5pc3Rlci8yTQpCYW50aW5nLzJNCkJhbnR1LzFNUwpCYW90b3UvMk0KQmFwdGlzdC8xNVNNCkJhcHRpc3RlLzJNCkJhcmFiYmFzLzJNCkJhcmFjay8yNU0KQmFyYmFkaWFuLzE1U00KQmFyYmFkb3MvMjRNCkJhcmJhcmEvMk0KQmFyYmFyZWxsYS9NCkJhcmJhcm9zc2EvMk0KQmFyYmFyeS8yTQpCYXJiZXIvMk0KQmFyYmllLzIxTQpCYXJib3VyLzJNCkJhcmJyYS8yTQpCYXJidWRhLzJNCkJhcmNlbG9uYS8yTQpCYXJjZWxvbmV0YS9NCkJhcmNsYXkvMlNNCkJhcmNsYXlzLzJNCkJhcmRlZW4vMk0KQmFyZW50cy8yTQpCYXJrZXIvMk0KQmFya2xleS8yTQpCYXJsb3cvMjFNCkJhcm5hYmFzLzJNCkJhcm5hYnkvMTJNCkJhcm5hcmQvMk0KQmFybmF1bC8yTQpCYXJuZXMvMk0KQmFybmV0dC8yTQpCYXJuZXkvMk0KQmFybnVtLzJNCkJhcm9kYS8yTQpCYXJxdWlzaW1ldG8vTQpCYXJyLzJNCkJhcnJhbnF1aWxsYS8yTQpCYXJyZXJhLzJNCkJhcnJldHQvMk0KQmFycmllLzJNCkJhcnJvbi8yTQpCYXJyeS8yTQpCYXJyeW1vcmUvMk0KQmFydC8xMk0KQmFydGgvMk1TCkJhcnRob2xkaS9NCkJhcnRob2xvbWV3LzJNCkJhcnRsZXR0LzIxTQpCYXJ0b2svMk0KQmFydG9uLzJNCkJhcnVjaC8yTQpCYXJ5c2huaWtvdi9NCkJhc2VsLzJNCkJhc2hvL00KQmFzaWUvTQpCYXNpbC8yTQpCYXNxdWUvMTI1TVMKQmFzcmEvMk0KQmFzcy8yTQpCYXNzZXRlcnJlLzJNCkJhc3RpbGxlLzJNCkJhc3V0b2xhbmQvMk0KQmF0YWFuLzJNCkJhdGVzLzJNCkJhdGhzaGViYS8yTQpCYXRpc3RhLzJNCkJhdG1hbi8yNE0KQmF0dGxlLzJNCkJhdHUvMk0KQmF1ZGVsYWlyZS9NCkJhdWRvdWluL00KQmF1ZHJpbGxhcmQvTQpCYXVlci8yTQpCYXVoYXVzLzJNCkJhdW0vMk0KQmF2YXJpYS8yTQpCYXZhcmlhbi81MTJNCkJheHRlci8yTQpCYXlhbW9uCkJheWVyLzJNCkJheWVzLzJNCkJheWVzaWFuLzUxTQpCYXlldXgvMk0KQmF5bG9yLzJNCkJheW9ubmUvMk0KQmF5cmV1dGgvMk0KQmF5d2F0Y2gvTQpCZS9NSApCZWFjaC8yTQpCZWFkbGUvMk0KQmVhbi8yTQpCZWFyZC8yTQpCZWFyZG1vcmUvMk0KQmVhcmRzbGV5LzJNCkJlYXJuYWlzZS9NCkJlYXNsZXkvMk0KQmVhdGxlbWFuaWEvMU0KQmVhdGxlcy8yMU0KQmVhdHJpY2UvMk0KQmVhdHJpeC8yTQpCZWF0cml6L00KQmVhdHR5LzJNCkJlYXUvMk0KQmVhdWZvcnQvMjFNCkJlYXVqb2xhaXMvMU0KQmVhdW1hcmNoYWlzL00KQmVhdW1vbnQvMk0KQmVhdXJlZ2FyZC8yMU0KQmVhdXZvaXIvTQpCZWNodGVsLzJNCkJlY2svMk1SCkJlY2tlci8yTQpCZWNrZXQvTQpCZWNrZXR0LzJNCkJlY2tsZXkvMk0KQmVja21hbi8yCkJlY2t5LzIxTQpCZWNxdWVyZWwvTQpCZWRlLzJNCkJlZG91aW4vMVNNCkJlZWJlLzJNCkJlZWNoZXIvMk0KQmVlZmFyb25pL00KQmVlbHplYnViLzJNCkJlZXJib2htL00KQmVldGhvdmVuLzJNCkJlZXRvbi8yTQpCZWdpbi9NCkJlaGFuLzJNCkJlaHJpbmcvTQpCZWlkZXJiZWNrZS9NCkJlaWppbmcvMk0KQmVpcnV0LzJNCkJla2VzeS9NCkJlbGEvMk0KQmVsYXJ1cy8yTQpCZWxhcnVzaWFuLzUxCkJlbGF1L00KQmVsZW0vMk0KQmVsZmFzdC8yTQpCZWxnCkJlbGdpYW4vMTUyU00KQmVsZ2l1bS8yTQpCZWxncmFkZS8yTQpCZWxpbmRhLzJNCkJlbGl6ZS8yTQpCZWxsLzIxTQpCZWxsYS8yTQpCZWxsYW15LzJNCkJlbGxhdHJpeC8yTQpCZWxsZWVrLzIxTQpCZWxsaW5naGFtLzJNCkJlbGxpbmkvMjFNCkJlbGxvdy8yTQpCZWxtb250LzJNCkJlbG1vcGFuLzJNCkJlbG9pdC8yTQpCZWxvcnVzc2lhbi81MTJNUwpCZWxzaGF6emFyLzIxTQpCZWx0YW5lLzJNCkJlbHVzaGkvTQpCZW4vMjFNCkJlbmFjZXJyYWYvTQpCZW5jaGxleS9NCkJlbmQvMk1SCkJlbmRlci8yTQpCZW5kaWN0dXMKQmVuZGl4L00KQmVuZWRpY3QvMk0KQmVuZWRpY3RpbmUvMTVNUwpCZW5lbHV4LzJNCkJlbmV0L00KQmVuZXR0b24vTQpCZW5nYWwvMjFTTQpCZW5nYWxpLzUxTQpCZW5naGF6aS8yTQpCZW5pbi8yTQpCZW5pbmVzZS81MU0KQmVuaXRhL00KQmVuaXRvLzJNCkJlbmphbWluLzIxTQpCZW5uZXR0LzJNCkJlbm5pZS8yTQpCZW5ueS8yMU0KQmVuc29uLzJNCkJlbnRoYW0vMk0KQmVudGxleS8yMU0KQmVudG9uLzJNCkJlbnovMjFNCkJlbnplZHJpbmUvTQpCZW93dWxmLzJNCkJlcmJlci8xMjVTTQpCZXJlbmljZS8yTQpCZXJldHRhLzFNCkJlcmcvMk1OUgpCZXJnZW4vMk0KQmVyZ2VyLzJNCkJlcmdlcmFjLzJNCkJlcmdtYW4vMk0KQmVyZ3Nvbi8yTQpCZXJpYS8yTQpCZXJpbmcvMk0KQmVya2VsZXkvMk0KQmVya3NoaXJlLzIxU00KQmVya3NoaXJlcy8xMk0KQmVybGUvTQpCZXJsaW4vMjFTWk1SCkJlcmxpbmVyLzFNCkJlcmxpb3ovMk0KQmVybGl0ei8yTQpCZXJtdWRhLzIxU00KQmVybXVkYW4vMTVTTQpCZXJtdWRpYW4vNTFTTQpCZXJuLzJNCkJlcm5hZGV0dGUvMk0KQmVybmFkaW5lLzJNCkJlcm5hbmtlL00KQmVybmFyZC8yTQpCZXJuYXJkby9NCkJlcm5heXMvMk0KQmVybmJhY2gvTQpCZXJuZXNlLzUxCkJlcm5oYXJkdC8yTQpCZXJuaWNlLzJNCkJlcm5pZS8yTQpCZXJuaW5pL00KQmVybm91bGxpLzJNCkJlcm5zdGVpbi8yTQpCZXJyYS8yTQpCZXJyeS8yTQpCZXJ0LzJNCkJlcnRhLzI1TQpCZXJ0ZWxzbWFubi9NCkJlcnRoYS8yTQpCZXJ0aWUvMk0KQmVydGlsbG9uL00KQmVydHJhbS8yTQpCZXJ0cmFuZC8yTQpCZXJ3aWNrLzJNCkJlcnlsLzJNCkJlcnplbGl1cy9NCkJlc3MvMk0KQmVzc2VsLzJNCkJlc3NlbWVyLzIxTQpCZXNzaWUvMk0KQmVzdC8yTQpCZXRlbGdldXNlLzJNCkJldGgvMk0KQmV0aGFueS8yTQpCZXRoZS8yTQpCZXRoZXNkYS8yMU0KQmV0aGxlaGVtLzIxTQpCZXRodW5lLzJNCkJldHN5LzJNCkJldHRlLzJNCkJldHRpZS8yTQpCZXR0eS8yMU0KQmV0dHllL00KQmV1bGFoLzJNCkJldmVyaWRnZS8yCkJldmVybGV5LzJNCkJldmVybHkvMk0KQmV5ZXIvMk0KQmhhcmF0LzJNCkJob3BhbC8yTQpCaHV0YW4vMk0KQmh1dGFuZXNlLzUyMU0KQmh1dHRvLzJNCkJpL00KQmlhbHlzdG9rLzJNCkJpYW5jYS8yTQpCaWIKQmlibGUvMjFNUwpCaWMvMjFNCkJpZGRsZS8yTQpCaWRlbi8yTQpCaWVyY2UvMk0KQmlnUXVlcnkvTQpCaWdmb290LzIxNE0KQmlnZ2xlcy9NCkJpa28vMk0KQmlsYmFvLzJNCkJpbGJvLzJNCkJpbGwvMk1KCkJpbGxpZS8yTQpCaWxsaW5ncy8yTQpCaWxseS8yTQpCaW1pbmkvMk0KQmluZ2hhbXRvbi8yTQpCaW9nZW4vTQpCaW9rby8yTQpCaXJkLzJNCkJpcmRzZXllL00KQmlya2Vuc3RvY2svTQpCaXJtaW5naGFtLzJNCkJpcm8vMk0KQmlzY2F5LzJNCkJpc2NheW5lLzUyTQpCaXNoa2VrLzJNCkJpc2hvcC8yMU0KQmlzbWFyY2svMjFNCkJpc21hcmsvTQpCaXNxdWljay8xTQpCaXNzYXUvMk0KQml0VG9ycmVudC8yTQpCaXpldC8xTQpCamVya25lcy9NCkJqb3JrLzJNCkJrL00KQmxhY2tCZXJyeS8xNE0KQmxhY2tiZWFyZC8yTQpCbGFja2J1cm4vMk0KQmxhY2tmZWV0LzFNCkJsYWNrZm9vdC8xMk0KQmxhY2twb29sLzJNCkJsYWNrc2J1cmcvMk0KQmxhY2tzaGlydC8xTQpCbGFja3N0b25lLzJNCkJsYWNrd2VsbC8yTQpCbGFpbmUvMk0KQmxhaXIvMk0KQmxha2UvMk0KQmxhbmNhL00KQmxhbmNoYXJkLzJNCkJsYW5jaGUvMk0KQmxhbmtlbnNoaXAvMk0KQmxhbnR5cmUvMk0KQmxhdHovMk0KQmxhdmF0c2t5LzJNCkJsZW5oZWltLzIxTQpCbGV2aW5zLzJNCkJsaWdoLzJNCkJsb2NoLzJNCkJsb2NrYnVzdGVyL00KQmxvZW1mb250ZWluLzJNCkJsb25kZWwvTQpCbG9uZGllL00KQmxvb20vMk1SCkJsb29tZXIvMk0KQmxvb21maWVsZC8yTQpCbG9vbWluZ2RhbGUvMk0KQmxvb21pbmd0b24vMk0KQmxvb21zYnVyZy8yTQpCbG9vbXNidXJ5LzJNCkJsdQpCbHVjaGVyLzIxTQpCbHVlYmVhcmQvMjFNCkJsdWV0b290aC8yNE0KQmx2ZApCbHl0aGUvMk0KQm9hZGljZWEvMgpCb2FzLzIxTQpCb2IvMjFNCkJvYmJpLzJNCkJvYmJpZS8yTQpCb2JiaXR0LzJNCkJvYmJ5LzJNCkJvY2NhY2Npby8yTQpCb2RoaWRoYXJtYS9NCkJvZGhpc2F0dHZhL00KQm9kbGVpYW4vNTIKQm9laW5nLzIxTQpCb2VvdGlhLzJNCkJvZW90aWFuLzUxMk0KQm9lci8xMlNNCkJvZXRoaXVzLzJNCkJvZ2FydC8yTQpCb2dvdGEvMk0KQm9oZW1pYS8yMU0KQm9oZW1pYW4vMTUyU00KQm9oci8yTQpCb2lzZS8yTQpCb2phbmdsZXMvTQpCb2xleW4vMk0KQm9saXZhci8yMU0KQm9saXZpYS8yTQpCb2xpdmlhbi8xNU1TCkJvbGx5d29vZC8yTQpCb2xvZ25hLzJNCkJvbHNoZXZpay8xU00KQm9sc2hldmlraS8xCkJvbHNoZXZpc20vMU0KQm9sc2hldmlzdC8xTQpCb2xzaG9pL00KQm9sdG9uLzJNCkJvbHR6bWFubi8yTQpCb21iYXkvMjFNCkJvbmFwYXJ0ZS8yTQpCb25hdmVudHVyZS8yTQpCb25kLzJNCkJvbmhvZWZmZXIvTQpCb25pZmFjZS8yTQpCb25pdGEvMk0KQm9ubi8yTVIKQm9ubmVyLzIxTQpCb25uZXZpbGxlLzJNCkJvbm5pZS8yTQpCb25vLzJNCkJvb2tlci8yTQpCb29sZS8yTQpCb29sZWFuLzUxTQpCb29uZS8yTQpCb290ZXMvTQpCb290aC8yTQpCb3JkZWF1eC8yMU0KQm9yZGVuLzIxTQpCb3Jkb24vMk0KQm9yZWFzLzJNCkJvcmcvMjE0U00KQm9yZ2VzLzJNCkJvcmdpYS8yTQpCb3JnbHVtL00KQm9yaXMvMk0KQm9yay8yNE0KQm9ybGF1Zy9NCkJvcm4vMk0KQm9ybmVvLzJNCkJvcm9idWR1ci8yTQpCb3JvZGluL00KQm9ydS9NCkJvc2NoLzJNCkJvc2UvMk0KQm9zbmlhLzJNCkJvc25pYW4vNTEKQm9zcG9ydXMvMk0KQm9zdG9uLzIxTVMKQm9zdG9uaWFuLzE1TQpCb3N3ZWxsLzIxTQpCb3RoYS8yCkJvdG94LzI0CkJvdHN3YW5hLzJNCkJvdHRpY2VsbGkvMk0KQm91bGRlci8yTQpCb3VsZXovTQpCb3VyYmFraS9NCkJvdXJib24vMlNNCkJvdXJuZW1vdXRoLzJNCkJvdmFyeS9NCkJvd2RpdGNoLzJNCkJvd2VsbC8yTQpCb3dlbi8yTQpCb3dlcnMvMk0KQm93ZXJ5LzI1TQpCb3dpZS8yMU0KQm93bWFuLzJNCkJveWQvMk0KQm95ZXIvMk0KQm95bGUvMk0KQnIvMTVNVApCcmFkLzJNWQpCcmFkYnVyeS8yMU0KQnJhZGRvY2svMk0KQnJhZGVudG9uLzJNCkJyYWRmb3JkLzIxTQpCcmFkbGV5LzJNCkJyYWRseS8yTQpCcmFkc2hhdy8yMU0KQnJhZHN0cmVldC8yTQpCcmFkeS8yTQpCcmFnZy8yTQpCcmFoZS8yTQpCcmFobWEvMjFNUwpCcmFobWFndXB0YS8yTQpCcmFobWFuLzEyTVMKQnJhaG1hbmkvMQpCcmFobWFuaXNtLzJTTQpCcmFobWFwdXRyYS8yMU0KQnJhaG1zLzVNCkJyYWlsbGUvMjE1TVMKQnJhaW4vMk0KQnJhbXB0b24vMk0KQnJhbi8yTQpCcmFuY2gvMk0KQnJhbmRlaXMvMk0KQnJhbmRlbi8yTQpCcmFuZGVuYnVyZy8yMU0KQnJhbmRpLzJNCkJyYW5kaWUvMk0KQnJhbmRvL00KQnJhbmRvbi8yTQpCcmFuZHQvMk0KQnJhbmR5LzJNCkJyYW50LzJNCkJyYXF1ZS9NCkJyYXNpbGlhLzJNCkJyYXRpc2xhdmEvMk0KQnJhdHRhaW4vMk0KQnJheS8yTQpCcmF6aWwvMk0KQnJhemlsaWFuLzE1TVMKQnJhem9zLzJNCkJyYXp6YXZpbGxlLzJNCkJyZWFrc3BlYXIvTQpCcmVhdGhhbHl6ZXIKQnJlY2h0L00KQnJlY2tlbnJpZGdlLzJNCkJyZW1lbi8yTQpCcmVtZXJ0b24vMk0KQnJlbmRhLzJNCkJyZW5kYW4vMk0KQnJlbm5hbi8yTQpCcmVubmVyLzJNCkJyZW50LzJNCkJyZW50b24vMk0KQnJlc3QvMk0KQnJldC8yTQpCcmV0b24vMTI1TQpCcmV0dC8yMU0KQnJld2VyLzEyTQpCcmV3c3Rlci8yTQpCcmV4aXQvMjQKQnJlemhuZXYvMk0KQnJpYW4vMk0KQnJpYW5hLzJNCkJyaWFubmEvMk0KQnJpY2UvMk0KQnJpZGFsdmVpbC9NCkJyaWRnZXBvcnQvMk0KQnJpZGdlci8yTQpCcmlkZ2VzLzJNCkJyaWRnZXQvMjFNCkJyaWRnZXRvd24vMk0KQnJpZGdldHQvMk0KQnJpZGdldHRlL00KQnJpZGdtYW4vMk0KQnJpZS8yU00KQnJpZ2Fkb29uLzFNCkJyaWdncy8yTQpCcmlnaGFtLzJNCkJyaWdodC8yTQpCcmlnaHRvbi8yTQpCcmlnaWQvMk0KQnJpZ2l0dGUvTQpCcmlsbG8vTQpCcmlsbG91aW4KQnJpbmtsZXkvMk0KQnJpc2JhbmUvMk0KQnJpc3RvbC8yMU0KQnJpdC8xNTJTTQpCcml0YWluLzIxNU0KQnJpdGFubmlhLzJNCkJyaXRhbm5pYy81TQpCcml0YW5uaWNhLzJNCkJyaXRpY2lzbS8xU00KQnJpdGlzaC8xMjVNUloKQnJpdGlzaGVyLzE1TQpCcml0bmV5LzIxTQpCcml0b24vMU1TCkJyaXR0LzJNTgpCcml0dGFueS8yMVNNCkJyaXR0ZW4vMk0KQnJpdHRuZXkvMk0KQnJuby8yTQpCcm9hZHdheS8yMTVTTQpCcm9iZGluZ25hZy8yTQpCcm9iZGluZ25hZ2lhbi81MU0KQnJvY2svMk0KQnJva2F3LzJNCkJyb25zb24vMk0KQnJvbnRlLzJNCkJyb250b3NhdXJ1cy8yCkJyb254LzIxTQpCcm9va2UvMk1TCkJyb29rbHluLzJNCkJyb29rcy8yTQpCcm9zLzIKQnJvd24vMjE1TUcKQnJvd25lLzJNCkJyb3duaWFuLzVNCkJyb3duaWUvMTJTCkJyb3duaW5nLzIxTQpCcm93bnNoaXJ0LzFNCkJyb3duc3ZpbGxlLzJNCkJydWJlY2svTQpCcnVjZS8yTQpCcnVja25lci8yTQpCcnVlZ2VsCkJydW1tZWwvMk0KQnJ1bmVpLzJNCkJydW5laWFuLzE1TVMKQnJ1bmVsbGVzY2hpL00KQnJ1bmhpbGRlLzJNCkJydW5vLzJNCkJydW5zd2ljay8yTQpCcnVzc2Vscy8yMU0KQnJ1dC9NCkJydXR1cy8yMU0KQnJ5YW4vMk0KQnJ5YW50LzJNCkJyeWNlLzJNCkJyeW5uZXIvTQpCcnlvbi8yTQpCcnplemluc2tpLzJNCkJ0dS9NCkJ1YmVyL00KQnVjaGFuYW4vMk0KQnVjaGFyZXN0LzJNCkJ1Y2hlbndhbGQvMk0KQnVjaHdhbGQvMk0KQnVjay8yTQpCdWNraW5naGFtLzJNCkJ1Y2tsZXkvMk0KQnVja25lci8yTQpCdWQvMk0KQnVkYXBlc3QvMk0KQnVkZGhhLzIxU00KQnVkZGhpc20vMVNNCkJ1ZGRoaXN0LzUxU00KQnVkZHkvMk0KQnVkd2Vpc2VyLzIxTQpCdWZmYWxvLzJNCkJ1ZmZ5LzJNCkJ1Zm9yZC8yTQpCdWdhdHRpLzIxTQpCdWd6aWxsYS9NCkJ1aWNrLzIxTQpCdWp1bWJ1cmEvMk0KQnVraGFyYS8yTQpCdWtoYXJpbi8yTQpCdWxhd2F5by8yTQpCdWxmaW5jaC9NCkJ1bGdhbmluL00KQnVsZ2FyLzE1Mk0KQnVsZ2FyaS9NCkJ1bGdhcmlhLzJNCkJ1bGdhcmlhbi81MVNNCkJ1bGxvY2svMk0KQnVsbHdpbmtsZS9NCkJ1bHRtYW5uL00KQnVtcHBvL00KQnVuY2hlL00KQnVuZGVzYmFuay9NCkJ1bmRlc3RhZy8yTQpCdW5pbi9NCkJ1bmtlci8yTQpCdW5zZW4vMjFNCkJ1bnVlbC9NCkJ1bnlhbi8yTQpCdXJiYW5rLzIxTQpCdXJiZXJyeS8yTQpCdXJjaC8yTQpCdXJnZXIvMU0KQnVyZ2Vzcy8yTQpCdXJnb3luZS8yTQpCdXJndW5kaWFuLzEyNU0KQnVyZ3VuZHkvMjFTTQpCdXJrZS8yTQpCdXJrcy8yTQpCdXJsLzJNCkJ1cmxpbmd0b24vMk0KQnVybWEvMk0KQnVybWVzZS81MTJNCkJ1cm5ldHQvMk0KQnVybnMvMk0KQnVybnNpZGUvMk0KQnVyci8yTQpCdXJyaXMvMk0KQnVycm91Z2hzLzJNCkJ1cnNhLzJNCkJ1cnQvMk0KQnVydG9uLzJNCkJ1cnVuZGkvMk0KQnVydW5kaWFuLzE1TVMKQnVzY2gvMk0KQnVzaC8yTQpCdXNoaWRvL00KQnVzaG5lbGwvMk0KQnV0bGVyLzJNCkJ1dHRlcmZpbmdlcnMvTQpCdXh0ZWh1ZGUvTQpCeWJsb3MvMk0KQnllcnMvMk0KQnlyZC8yTQpCeXJvbi8yTQpCeXJvbmljLzVNCkJ5emFudGluZS81MU1TCkJ5emFudGl1bS8yMU0KQy8xMjQ1U00KQ0EvMjEKQ0FELzFNCkNBSS8xMgpDQU0vMTIKQ0FQLzEyCkNBUkUKQ0FUVi8xCkNCLzE1MgpDQkMvMjE1TQpDQlMvMjFNCkNDVFYvMTIKQ0NVLzEKQ0QvMTRTTQpDREMvMjEKQ0RULzEKQ0VPLzE0TQpDRi8xMjUKQ0ZDLzIxTQpDRk8vMTIKQ0dJLzEyNApDSUEvMjE1TQpDSUQvMTIKQ05OLzIxTQpDTlMvMU0KQ08vMjE0TQpDT0JPTC8yU00KQ09ELzIxCkNPTC8yMQpDT0xBLzEyCkNPVklELzEKQ1BBLzFNCkNQSS8xMk0KQ1BPLzEKQ1BSLzEyTQpDUFUvMU0KQ1JULzFTTQpDU1MvMTJNCkNTVC8yMU0KQ1QvMjE0NU0KQ1YvMTI1CkNWUy8xMk0KQ1ovMQpDYS9NCkNhYmVybmV0L00KQ2Fib3QvMk0KQ2FicmFsL00KQ2FicmVyYS8yTQpDYWJyaW5pL00KQ2FkZXR0ZQpDYWRpbGxhYy8yNTFNCkNhZGl6LzJNCkNhZWRtb24vMk0KQ2FlcnBoaWxseS8yTQpDYWVzYXIvMjFTTQpDYWdlLzJNCkNhZ25leS8yTQpDYWhva2lhLzJNCkNhaWFwaGFzLzJNCkNhaW4vMlNNCkNhaXJvLzJNCkNhaXRsaW4vMk0KQ2FqdW4vMTVNUwpDYWwvMk0KQ2FsYWlzLzJNCkNhbGN1dHRhLzJNCkNhbGRlci8yTQpDYWxkZXJvbi8yTQpDYWxkd2VsbC8yTQpDYWxlYi8yTQpDYWxlZG9uaWEvMk0KQ2FsZXhpY28vMk0KQ2FsZ2FyeS8yTQpDYWxob3VuLzJNCkNhbGkvMk0KQ2FsaWJhbi8yMU0KQ2FsaWYvMgpDYWxpZm9ybmlhLzJNCkNhbGlmb3JuaWFuLzUxU00KQ2FsaWd1bGEvMk0KQ2FsbGFnaGFuLzJNCkNhbGxhaGFuLzJNCkNhbGxhby8yTQpDYWxsYXMvTQpDYWxsaWUvMk0KQ2FsbGlvcGUvMk0KQ2FsbGlzdG8vMk0KQ2Fsb29jYW4vMk0KQ2FsdmFyeS8yTQpDYWx2ZXJ0LzJNCkNhbHZpbi8yTQpDYWx2aW5pc20vMU1TCkNhbHZpbmlzdC8xNU1TCkNhbHZpbmlzdGljLzUKQ2FtYWNoby8yTQpDYW1hcmlsbG8vMk0KQ2FtYm9kaWEvMk0KQ2FtYm9kaWFuLzUxU00KQ2FtYnJpYW4vNTEyU00KQ2FtYnJpZGdlLzJNCkNhbWRlbi8yTQpDYW1lbC8yMU0KQ2FtZWxvcGFyZGFsaXMvMk0KQ2FtZWxvdC8yTVMKQ2FtZW1iZXJ0LzJNUwpDYW1lcm9uLzJNCkNhbWVyb29uLzIxU00KQ2FtZXJvb25pYW4vNTFNUwpDYW1pbGxhLzJNCkNhbWlsbGUvMk0KQ2Ftb2Vucy8yTQpDYW1wYW5lbGxhL00KQ2FtcGJlbGwvMjFNCkNhbXBpbmFzLzJNCkNhbXBvcy9NCkNhbXJ5L00KQ2FtdXMvMk0KQ2FuLzJNCkNhbmFhbi8yTQpDYW5hYW5pdGUvMjE1TVMKQ2FuYWQKQ2FuYWRhLzIxTQpDYW5hZGlhbi81MTJTTQpDYW5hZGlhbmlzbS8xCkNhbmFsZXR0by9NCkNhbmFyaWVzLzJNCkNhbmF2ZXJhbC8yTQpDYW5iZXJyYS8yTQpDYW5jZXIvMjFTTQpDYW5jdW4vMk0KQ2FuZGFjZS8yMU0KQ2FuZGljZS8yTQpDYW5kaWRlLzJNCkNhbmR5LzJNCkNhbm5lcy8yTQpDYW5ub24vMk0KQ2Fub24vMjFNCkNhbm9wdXMvMjFNCkNhbnRhYnJpZ2lhbi81MU0KQ2FudGVyYnVyeS8yTQpDYW50b24vMk0KQ2FudG9uZXNlLzUxTQpDYW50b3IvMk0KQ2FudHJlbGwvMk0KQ2FudHUvMk0KQ2FudXRlLzJNCkNhcGFibGFuY2EvTQpDYXBlay8yTQpDYXBlbGxhLzJNCkNhcGV0L00KQ2FwZXRpYW4vNTFNCkNhcGV0b3duLzJNCkNhcGgvMk0KQ2FwaXN0cmFuby8yTQpDYXBpdG9sLzJTTQpDYXBpdG9saW5lLzI1TQpDYXBvbmUvMk0KQ2Fwb3RlLzJNCkNhcHJhLzJNCkNhcHJpLzJNCkNhcHJpY29ybi8yMU1TCkNhcHQvMQpDYXB1Y2hpbi8xTQpDYXB1bGV0LzFNCkNhcmEvMk0KQ2FyYWNhbGxhLzJNCkNhcmFjYXMvMk0KQ2FyYXZhZ2dpby8yTQpDYXJib2xveS8xTQpDYXJib25kYWxlLzJNCkNhcmJvbmlmZXJvdXMvNTJNCkNhcmJvcnVuZHVtLzFNCkNhcmRlbmFzLzJNCkNhcmRpZmYvMk0KQ2FyZGluLzJNCkNhcmRvem8vMk0KQ2FyZXkvMk0KQ2FyaWIvMTJNUwpDYXJpYmJlYW4vNTEyTVMKQ2FyaW5hLzJNCkNhcmlzc2EvMk0KQ2FybC8yMU0KQ2FybGEvMk0KQ2FybGVuZS8yTQpDYXJsaW4vMk0KQ2FybG8vMk1TCkNhcmxvcy8yTQpDYXJsc2JhZC8yTQpDYXJsc29uLzJNCkNhcmx0b24vMk0KQ2FybHkvMk0KQ2FybHlsZS8yTQpDYXJtZWxhL00KQ2FybWVsbGEvTQpDYXJtZWxvL00KQ2FybWVuLzJNCkNhcm1pY2hhZWwvMk0KQ2FybWluZS8yTQpDYXJuYXAvMk0KQ2FybmF0aW9uL00KQ2FybmVnaWUvMk0KQ2FybmV5LzIxTQpDYXJub3QvMk0KQ2Fyb2wvMk0KQ2Fyb2xlLzJNCkNhcm9saW5hLzJNCkNhcm9saW5lLzUxMk0KQ2Fyb2xpbmdpYW4vNTFNCkNhcm9saW5pYW4vNTEyTQpDYXJvbHluLzJNCkNhcnBhdGhpYW4vNTFTTQpDYXJwYXRoaWFucy8yTQpDYXJwZW50ZXIvMk0KQ2Fyci8yTQpDYXJyYW56YS8yTQpDYXJyaWUvMlJNCkNhcnJpZXIvMk0KQ2FycmlsbG8vMk0KQ2Fycm9sbC8yMU0KQ2Fyc29uLzJNCkNhcnRlci8yTQpDYXJ0ZXJzdmlsbGUvMk0KQ2FydGVzaWFuLzUxTQpDYXJ0aGFnZS8yTQpDYXJ0aGFnaW5pYW4vNTFNUwpDYXJ0aWVyLzJNCkNhcnR3cmlnaHQvMk0KQ2FydXNvLzJNCkNhcnZlci8yTQpDYXJ5LzJNCkNhc2FibGFuY2EvMk0KQ2FzYWxzLzJNCkNhc2FuZHJhL00KQ2FzYW5vdmEvMTJTTQpDYXNjYWRlcy8yTQpDYXNlLzEyTQpDYXNleS8yTQpDYXNoLzJNCkNhc2lvL00KQ2FzcGFyLzJNCkNhc3Blci8yMU0KQ2FzcGlhbi81MU0KQ2Fzc2FuZHJhLzIxU00KQ2Fzc2F0dC9NCkNhc3NpZHkvMk0KQ2Fzc2llLzJNCkNhc3Npb3BlaWEvMk0KQ2Fzc2l1cy8yTQpDYXN0YW5lZGEvMk0KQ2FzdGlsaWFuLzIxNQpDYXN0aWxsby8yTQpDYXN0bGVyZWFnaC9NCkNhc3Rvci8yTQpDYXN0cmllcy8yTQpDYXN0cm8vMk0KQ2F0YWxhbi8xMjVTTQpDYXRhbGluYS8yMU0KQ2F0YWxvbmlhLzJNCkNhdGF3YmEvMTJNCkNhdGVycGlsbGFyL00KQ2F0aGF5LzJNCkNhdGhlci8yTQpDYXRoZXJpbmUvMk0KQ2F0aGxlZW4vMk0KQ2F0aG9saWMvNTFNUwpDYXRob2xpY2lzbS8xTVMKQ2F0aHJ5bi8yTQpDYXRoeS8yTQpDYXRpbGluZS8yMU0KQ2F0by8yTQpDYXRza2lsbC8yNVNNCkNhdHNraWxscy8yTQpDYXR0LzJNCkNhdHVsbHVzLzJNCkNhdWNhc2lhbi81MU1TCkNhdWNhc29pZC81MQpDYXVjYXN1cy8yTQpDYXVjaHkvMjVNCkNhdmVuZGlzaC8yMU0KQ2F2b3VyL00KQ2F4dG9uLzIxTQpDYXllbm5lLzJNCkNheW1hbi81Mk0KQ2F5dWdhLzEyU00KQ2F5dXNlLzEKQ2IvCkNkL00KQ2UvMk0KQ2VhdXNlc2N1L00KQ2VidS8yTQpDZWJ1YW5vLzI1TQpDZWNlbGlhLzJNCkNlY2lsLzJNCkNlY2lsZS8yTQpDZWNpbGlhLzJNCkNlY2lseS8yTQpDZWRyaWMvMk0KQ2VsZXN0ZS8yTQpDZWxnZW5lL00KQ2VsaWEvMk0KQ2VsaW5hLzJNCkNlbGxpbmkvMk0KQ2Vsc2l1cy81TQpDZWx0LzE1U00KQ2VsdGljLzI1U00KQ2Vub3pvaWMvNTJNCkNlbnRhdXJ1cy8yTQpDZW50aWdyYWRlCkNlbnRyYWwvMgpDZXBoZWlkLzFNCkNlcGhldXMvMk0KQ2VyYmVydXMvMk0KQ2VyZW5rb3YvTQpDZXJlcy8yTQpDZXJmLzJNCkNlcnZhbnRlcy8yTQpDZXNhci8yTQpDZXNhcmVhbi81MU0KQ2Vzc25hLzJNCkNldHVzLzJNCkNleWxvbi8yMU0KQ2V5bG9uZXNlLzUxCkNlemFubmUvTQpDZi9NCkNoJ2luLzJNCkNoL04KQ2hhYmxpcy8yMU0KQ2hhZC8yMU0KQ2hhZGlhbi81MU1TCkNoYWR3aWNrLzJNCkNoYWdhbGwvMTJNCkNoYWl0YW55YS9NCkNoYWl0aW4vTQpDaGFsZGVhLzIKQ2hhbGRlYW4vNTEyTQpDaGFsbGVuZ2VyLzIxTQpDaGFsbWVycy8yCkNoYW1iZXJsYWluLzJNCkNoYW1iZXJzLzJNCkNoYW1iZXJzYnVyZy8yTQpDaGFtcGFpZ24vMk0KQ2hhbXBsYWluLzJNCkNoYW1wb2xsaW9uL00KQ2hhbi8yMU0KQ2hhbmNlLzJNCkNoYW5jZWxsb3JzdmlsbGUvMk0KQ2hhbmRpZ2FyaC8yTQpDaGFuZGxlci8yMU0KQ2hhbmRvbi9NCkNoYW5kcmEvMk0KQ2hhbmRyYWd1cHRhL00KQ2hhbmRyYXNla2hhci9NCkNoYW5lbC8yMU0KQ2hhbmV5LzJNCkNoYW5nLzJNCkNoYW5nY2h1bi8yTQpDaGFuZ3NoYS8yTQpDaGFudGlsbHkvMjFNCkNoYXBsaW4vMk0KQ2hhcGxpbmVzcXVlLzUKQ2hhcG1hbi8yTQpDaGFwcGFxdWlkZGljay8yTQpDaGFwdWx0ZXBlYy9NCkNoYXJicmF5L00KQ2hhcmRvbm5heS8xTQpDaGFyaXR5LzJNCkNoYXJsZW1hZ25lLzJNCkNoYXJsZW5lLzJNCkNoYXJsZXMvMk0KQ2hhcmxlc3Rvbi8yMU1TCkNoYXJsZXkvMjFNCkNoYXJsaWUvMTJNCkNoYXJsb3R0ZS8yMU0KQ2hhcmxvdHRlc3ZpbGxlLzJNCkNoYXJsb3R0ZXRvd24vMk0KQ2hhcm1haW5lLzJNCkNoYXJtaW4vMk0KQ2hhcm9sYWlzLzFNCkNoYXJvbi8yMU0KQ2hhcnRpc20vMk0KQ2hhcnRyZXMvMk0KQ2hhcnliZGlzLzJNCkNoYXNlLzJNCkNoYXNpdHkvTQpDaGF0ZWF1YnJpYW5kL00KQ2hhdHRhaG9vY2hlZS8yTQpDaGF0dGFub29nYS8yTQpDaGF0dGVybGV5LzJNCkNoYXR0ZXJ0b24vMk0KQ2hhdWNlci8yTQpDaGF1bmNleS8yTQpDaGF1dGF1cXVhLzIxTQpDaGF2ZXovMk0KQ2hheWVmc2t5L00KQ2hlL00KQ2hlY2hlbi8xMjVNCkNoZWNobnlhLzJNCkNoZWRkYXIvMjFNCkNoZWVyL00KQ2hlZXJpb3MvMjFNCkNoZWV0b3MvMU0KQ2hlZXZlci8yTQpDaGVraG92LzJNCkNoZWtob3ZpYW4vNQpDaGVsc2VhLzJNCkNoZWx5YWJpbnNrLzJNCkNoZW4vMjFNCkNoZW5leS8yTQpDaGVuZ2R1LzJNCkNoZW5uYWkvMk0KQ2hlb3BzLzJNCkNoZXJpLzJNCkNoZXJpZS8yTQpDaGVybmVua28vTQpDaGVybm9ieWwvMjFNCkNoZXJub215cmRpbi9NCkNoZXJva2VlLzEyTVMKQ2hlcnJ5LzIxTQpDaGVyeWwvMk0KQ2hlc2FwZWFrZS8xMk0KQ2hlc2hpcmUvMk0KQ2hlc3Rlci8yMU0KQ2hlc3RlcmZpZWxkLzIxTQpDaGVzdGVydG9uLzJNCkNoZXZhbGllci9NCkNoZXZpb3QvMU0KQ2hldnJvbGV0LzJNCkNoZXZyb24vMk0KQ2hldnkvMjFNCkNoZXllbm5lLzEyU00KQ2hpLzIxTQpDaGlhbnRpLzFNUwpDaGliYS8yTQpDaGliY2hhLzFNCkNoaWNhZ28vMk0KQ2hpY2Fnb2FuLzUxTQpDaGljYW5hLzFNCkNoaWNhbm8vNTFNCkNoaWNrYXNhdy8xMk1TCkNoaWNsZXRzL00KQ2hpY28vMk0KQ2hpaHVhaHVhLzIxTVMKQ2hpbGUvMk0KQ2hpbGVhbi81MU1TCkNoaW1ib3Jhem8vMk0KQ2hpbWVyYS8yTVMKQ2hpbXUvTQpDaGluLzJNCkNoaW5hLzIxTQpDaGluYXRvd24vMTJNCkNoaW5lc2UvNTIxTQpDaGlub29rLzIxTVMKQ2hpcGV3eWFuLzEyTQpDaGlwcGVuZGFsZS8yTQpDaGlwcGV3YS8xMlNNCkNoaXF1aXRhL00KQ2hpcmljby8yTQpDaGlzaG9sbS8yTQpDaGlzaW5hdS8yTQpDaGl0dGFnb25nLzJNCkNoaXZhcy9NCkNobG9lLzJNCkNob2N0YXcvMjUxU00KQ2hvbXNreS8yTQpDaG9uZ3FpbmcvMk0KQ2hvcGluLzJNCkNob3ByYS8yTQpDaG91LzJNCkNocmV0aWVuLzJNCkNocmlzLzJNCkNocmlzdC8yMU1TCkNocmlzdGEvMk0KQ2hyaXN0Y2h1cmNoLzJNCkNocmlzdGVuZG9tLzFNUwpDaHJpc3RlbnNlbi8yTQpDaHJpc3RpL00KQ2hyaXN0aWFuLzEyNVNNCkNocmlzdGlhbml0eS8yU00KQ2hyaXN0aWFuaXplLzQKQ2hyaXN0aWUvMk0KQ2hyaXN0aW5hLzJNCkNocmlzdGluZS8yTQpDaHJpc3RsaWtlLzUKQ2hyaXN0bWFzLzIxNTRNUwpDaHJpc3RtYXN0aWRlLzFNUwpDaHJpc3RtYXN0aW1lLzFNUwpDaHJpc3RvcGVyL00KQ2hyaXN0b3BoZXIvMk0KQ2hyb21lYm9vay8xTVMKQ2hyb25pY2xlcy8yCkNocnlzbGVyLzIxTQpDaHJ5c29zdG9tLzJNCkNocnlzdGFsLzJNCkNodWNrLzIxTQpDaHVrY2hpLzUxMk0KQ2h1bWFzaC8yMU0KQ2h1bmcvMk0KQ2h1cmNoLzJNCkNodXJjaGlsbC8yTQpDaHVycmlndWVyYS9NCkNodXZhc2gvNTEyTQpDaS9NCkNpY2Vyby8yTQpDaWQvTQpDaW1hYnVlL00KQ2luY2lubmF0aS8yMU0KQ2luZGVyZWxsYS8yMU1TCkNpbmR5LzJNCkNpbmVtYVNjb3BlLzFNCkNpbmVyYW1hLzFNCkNpcHJvL00KQ2lyY2UvMk0KQ2lzY28vMk0KQ2l0aWJhbmsvMk0KQ2l0aWdyb3VwL00KQ2l0cm9lbi8yTQpDbC8xTVYKQ2xhaWJvcm5lLzJNCkNsYWlyLzJNCkNsYWlyZS8yTQpDbGFpcm9sL00KQ2xhbmN5LzJNCkNsYXBleXJvbi9NCkNsYXB0b24vMk0KQ2xhcmEvMk0KQ2xhcmUvMjFNCkNsYXJlbmNlLzJNCkNsYXJlbmRvbi8yTQpDbGFyaWNlLzJNCkNsYXJpc3NhLzIxTQpDbGFyay8yTQpDbGFya2UvMk0KQ2xhcmtzdmlsbGUvMk0KQ2xhdWRlLzJNCkNsYXVkZXR0ZS9NCkNsYXVkaWEvMk0KQ2xhdWRpbmUvTQpDbGF1ZGlvL00KQ2xhdWRpdXMvMk0KQ2xhdXMvMk0KQ2xhdXNld2l0ei8yTQpDbGF1c2l1cy9NCkNsYXkvMk0KQ2xheXRvbi8yTQpDbGVhcmFzaWwvTQpDbGVtLzJYTQpDbGVtZW5jZWF1LzJNCkNsZW1lbnMvMk0KQ2xlbWVudC8yTVMKQ2xlbWVudGluZS81Mk0KQ2xlbWVudHMvMk0KQ2xlbW9ucy8yTQpDbGVtc29uLzI0TQpDbGVvLzJNCkNsZW9wYXRyYS8yMU0KQ2xldmVsYW5kLzJNCkNsaWJ1cm4vMk0KQ2xpZmYvMk0KQ2xpZmZvcmQvMk0KQ2xpZnRvbi8yTQpDbGluZS8yTQpDbGludC8yTQpDbGludG9uLzJNCkNsaW8vMk0KQ2xpdmUvMk0KQ2xvanVyZS8yTQpDbG9yZXRzL00KQ2xvcm94LzE0TQpDbG9zdXJlL00KQ2xvdGhvLzJNCkNsb3VzZWF1LzJNCkNsb3Zpcy8yTQpDbHlkZS8yTQpDbHlkZXNkYWxlLzEyTQpDbHl0ZW1uZXN0cmEvMk0KQ20vTQpDbWRyLzEKQ28vMU0KQ29iYWluLzJNCkNvYmIvMk0KQ29jaGFiYW1iYS8yTQpDb2NoaW4vMTJNCkNvY2hpc2UvTQpDb2NocmFuLzJNCkNvY2tuZXkvNTEyTQpDb2N0ZWF1L00KQ29kCkNvZHkvMk0KQ29mZmV5LzJNCkNvZ25hYy8yTQpDb2hhbi8yTQpDb2hlbi8yTQpDb2ltYmF0b3JlLzJNCkNvaW50cmVhdS8yMU0KQ29rZS8xMlNNCkNvbC8yTQpDb2xiZXJ0LzJNCkNvbGJ5LzIxTQpDb2xlLzJNCkNvbGVlbi8yTQpDb2xlbWFuLzJNCkNvbGVyaWRnZS8yTQpDb2xldHRlL00KQ29sZmF4LzJNCkNvbGdhdGUvMjFNCkNvbGluLzJNCkNvbGxlZW4vMk0KQ29sbGllci8yTQpDb2xsaW4vMlNNCkNvbGxpbnMvMjFNCkNvbG8vMgpDb2xvZ25lLzJNCkNvbG9tYmlhLzJNCkNvbG9tYmlhbi8xNU1TCkNvbG9tYm8vMk0KQ29sb24vMk0KQ29sb3JhZGFuLzE1U00KQ29sb3JhZG8vMk0KQ29sb3JhZG9hbi8xNQpDb2xvc3NldW0vMk0KQ29sdC8yMU0KQ29sdHJhbmUvMk0KQ29sdW1iaWEvMk0KQ29sdW1iaW5lLzIxTQpDb2x1bWJ1cy8yMTRNCkNvbQpDb21hbmNoZS8xNTJNUwpDb21icy8yTQpDb21kcgpDb21pbnRlcm4vMk0KQ29tbWFuZG1lbnQvMQpDb21tb25zLzJNCkNvbW1vbndlYWx0aC8yCkNvbW11bmlvbi8yU00KQ29tbXVuaXNtLzEKQ29tbXVuaXN0LzE1U00KQ29tby8yTQpDb21vcmFuLzUxCkNvbW9yb3MvMk0KQ29tcGFxL00KQ29tcHRvbi8yTQpDb21wdVNlcnZlL00KQ29tdGUvTQpDb25ha3J5LzJNCkNvbmFuLzJNCkNvbmNlcGNpb24vMk0KQ29uY2V0dGEvTQpDb25jb3JkLzJTTQpDb25jb3JkZS8yTQpDb25kaWxsYWMvTQpDb25kb3JjZXQvTQpDb25lc3RvZ2EvMjFNCkNvbmZlZGVyYWN5LzJNCkNvbmZlZGVyYXRlLzUxTVMKQ29uZnVjaWFuLzUxU00KQ29uZnVjaWFuaXNtLzFNUwpDb25mdWNpdXMvMk0KQ29uZy8yTQpDb25nby8yMU0KQ29uZ29sZXNlLzE1TQpDb25ncmVnYXRpb25hbC81CkNvbmdyZWdhdGlvbmFsaXN0LzFNUwpDb25ncmVzcy8yMU1TCkNvbmdyZXNzaW9uYWwvNQpDb25ncmV2ZS8yMU0KQ29ubGV5LzJNCkNvbm4vTVIKQ29ubmVjdGljdXQvMk0KQ29ubmVsbHN2aWxsZS8yTQpDb25uZW1hcmEvMjFNCkNvbm5lci8yTQpDb25uZXJ5LzJNCkNvbm5pZS8yMU0KQ29ubm9sbHkvMk0KQ29ubm9ycy8yTQpDb25yYWQvMk0KQ29ucmFpbC9NCkNvbnJvZS8yTQpDb25zZXJ2YXRpdmUvMQpDb25zdGFibGUvMk0KQ29uc3RhbmNlLzJNCkNvbnN0YW50aW5lLzJNCkNvbnN0YW50aW5vcGxlLzJNCkNvbnN0aXR1dGlvbi8yCkNvbnN1ZWxvL00KQ29udGluZW50LzIxTQpDb250aW5lbnRhbC81MU0KQ29udHJlcmFzL00KQ29ud2F5LzJNCkNvb2svMk0KQ29va2UvMk0KQ29vbGV5LzJNCkNvb2xpZGdlLzJNCkNvb3Blci8yTQpDb29wZXJzdG93bi8yTQpDb29ycy8yTQpDb3BhY2FiYW5hLzJNCkNvcGVsYW5kLzJNCkNvcGVuaGFnZW4vMjFNCkNvcGVybmljYW4vNTEyTQpDb3Blcm5pY3VzLzJNCkNvcGxhbmQvMk0KQ29wbGV5LzJNCkNvcHBlcmZpZWxkLzJNCkNvcHBlcnRvbmUvTQpDb3Bwb2xhLzJNCkNvcHRpYy81MU0KQ29yYS8yMU0KQ29yZGVsaWEvMk0KQ29yZGlsbGVyYXMvTQpDb3Jkb2JhLzJNCkNvcmV5LzJNCkNvcmZ1LzJNCkNvcmluYS8yTQpDb3JpbmUvTQpDb3Jpbm5lLzJNCkNvcmludGgvMk0KQ29yaW50aGlhbi81MU1TCkNvcmludGhpYW5zLzIxTQpDb3Jpb2xhbnVzL00KQ29yaW9saXMvTQpDb3JrLzIKQ29ybGVvbmUvTQpDb3JtYWNrLzJNCkNvcm5laWxsZS9NCkNvcm5lbGlhLzJNCkNvcm5lbGl1cy8yTQpDb3JuZWxsLzJNCkNvcm5pbmcvMk0KQ29ybmlzaC81MTJNUwpDb3Jud2FsbC8yTQpDb3Jud2FsbGlzLzJNCkNvcm9uYWRvLzJNCkNvcm90L00KQ29ycC8yCkNvcnJlZ2dpby9NCkNvcnJpbmUvMk0KQ29yc2ljYS8yTQpDb3JzaWNhbi81MTJNCkNvcnRlcy8yTVMKQ29ydGxhbmQvMk0KQ29ydmFsbGlzLzJNCkNvcnZldHRlLzFNCkNvcnZ1cy8yTQpDb3J5LzJNCkNvc2J5LzJNCkNvc21vc0RCL00KQ29zc2Fjay8xTQpDb3N0Y28vTQpDb3N0ZWxsby8yTQpDb3N0bmVyLzJNCkNvdGUvMk0KQ290b25vdS8yTQpDb3RvcGF4aS9NCkNvdHN3b2xkLzUxMk0KQ290dG9uLzJNCkNvdWxvbWIvMk0KQ291bHRlci8yTQpDb3VwZXJpbi9NCkNvdXJiZXQvTQpDb3VydG5leS8yTQpDb3VzdGVhdS9NCkNvdmVudHJ5LzJTTQpDb3Zpbmd0b24vMk0KQ293YXJkLzJNCkNvd2VsbC8yTQpDb3dsZXkvMk0KQ293cGVyLzJNCkNveC8yTQpDb3kvMk0KQ295bGUvMk0KQ296dW1lbC8yTQpDcGwvMQpDci8xTVQKQ3JhYmJlLzJNCkNyYWZ0LzJNCkNyYWlnLzJNCkNyYW5hY2gvTQpDcmFuZS8yTQpDcmFubWVyLzJNCkNyYXRlci8yTQpDcmF3Zm9yZC8yTQpDcmF5LzJNCkNyYXlvbGEvMk0KQ3JlYXRpb24vTQpDcmVhdG9yLzJNCkNyZWN5LzJNCkNyZWUvMjFEU00KQ3JlZWsvMTI1U00KQ3JlaWdodG9uLzJNCkNyZW9sZS8xNTJTTQpDcmVvbi8yTQpDcmVzc2lkYS8yTQpDcmVzdC8yTQpDcmV0YWNlb3VzLzJNCkNyZXRhbi81MTJTTQpDcmV0ZS8yMU0KQ3JpY2h0b24vMk0KQ3JpY2svMk0KQ3JpbWVhLzJNCkNyaW1lYW4vNTEyTQpDcmlvbGxvLzIxTQpDcmlzY28vMk0KQ3Jpc3RpbmEvTQpDcm9hdC8xNVNNCkNyb2F0aWEvMk0KQ3JvYXRpYW4vNTEyTVMKQ3JvY2UvMk0KQ3JvY2tldHQvMk0KQ3JvZXN1cy8yMU0KQ3JvbXdlbGwvMk0KQ3JvbXdlbGxpYW4vNTFNCkNyb25pbi8yTQpDcm9ua2l0ZS8yTQpDcm9udXMvMk0KQ3Jvb2tlcy8yTQpDcm9zYnkvMk0KQ3Jvc3MvMk0KQ3Jvdy8xMlNNCkNyb3dsZXkvMk0KQ3J1Y2lmaXhpb24vMk1TCkNydWlrc2hhbmsvMk0KQ3J1aXNlLzJNCkNydXNhZGVzJ3MKQ3J1c29lLzJNCkNydXgvMk0KQ3J1ei8yTQpDcnlwdG96b2ljLzJNCkNyeXN0YWwvMk0KQ3NvbmthL00KQ3QvMQpDdGVzaXBob24vMk0KQ3RodWxodS8yTQpDdS8xTQpDdWJhLzJNCkN1YmFuLzE1U00KQ3VjaHVsYWluL00KQ3Vpc2luYXJ0L00KQ3VsYmVydHNvbi8yTQpDdWxsZW4vMk0KQ3VtYmVybGFuZC8yTQpDdW1taW5ncy8yTQpDdW5hcmQvMk0KQ3VubmluZ2hhbS8yTQpDdXBpZC8yTQpDdXJhY2FvLzJNCkN1cmllLzJNCkN1cml0aWJhLzJNCkN1cnJpZXIvMk0KQ3VycnkvMlJNCkN1cnQvMk0KQ3VydGlzLzJNCkN1c3Rlci8yTQpDdXZpZXIvTQpDdXpjby8yTQpDeWJlbGUvMk0KQ3ljbGFkZXMvMk0KQ3ljbG9wZXMvMk0KQ3ljbG9wcy8yTQpDeWdudXMvMk0KQ3ltYmVsaW5lLzJNCkN5bnRoaWEvMk0KQ3lwcmlhbi8xNU0KQ3lwcmlvdC8yMTVNUwpDeXBydXMvMjFNCkN5cmFuby9NCkN5cmlsLzJNCkN5cmlsbGljLzUyTQpDeXJ1cy8yTQpDemVjaC81MTJNCkN6ZWNoaWEvMk0KQ3plY2hvc2xvdmFrLzE1CkN6ZWNob3Nsb3Zha2lhLzJNCkN6ZWNob3Nsb3Zha2lhbi81MVNNCkN6ZWNocy8xCkN6ZXJueS9NCkQvMTUyTQpEQS8xMjU0TQpEQVIvMgpEQVQvMU0KREJNUy8xTQpEQy8yMTU0TQpERC8xMjVNCkREUy8xTQpERFQvMVMKREUvMjEKREVBLzIxCkRFQy8xMlNECkRILzEyCkRIUy8yCkRJLzEKREovMTQyCkRNQ0EvMjQKRE1ELzFNCkRNWi8xCkROQS8xNDJNCkRPQS81CkRPQi8xMgpET0QvMQpET0UvMTQyCkRPUy8xMk0KRE9ULzIxCkRQLzE0MlNNCkRQVC8xCkRTVC8xCkRUUC8xCkRVSS8xClVJLzFTTQpEVkQvMVMKRFZSLzE0U00KRFdJLzE0CkRhY2hhdS8yTQpEYWNyb24vMVNNCkRhZGEvMU0KRGFkYWlzbS8xTQpEYWVkYWx1cy8yTQpEYWd1ZXJyZS9NCkRhZ3dvb2QvMU0KRGFob21leS8yTQpEYWltbGVyLzIxTQpEYWlzeS8yMU0KRGFrYXIvMk0KRGFrb3RhLzIxU00KRGFrb3Rhbi81MTJNCkRhbGFpCkRhbGUvMk0KRGFsZXkvMjFNCkRhbGkvMk0KRGFsaWFuLzI1TQpEYWxsYXMvMk0KRGFsbWF0aWEvMk0KRGFsbWF0aWFuLzUxMlNNCkRhbHRvbi8yMU0KRGFtYXNjdXMvMk0KRGFtZS8xTU4KRGFtaWFuLzJNCkRhbWllbi8yTQpEYW1pb24vTQpEYW1vY2xlcy8yTQpEYW1vbi8yTQpEYW4vMjFNCkRhbmEvMk0KRGFuYWUvMk0KRGFuYnVyeS8yTQpEYW5lLzEyU00KRGFuZWxhdy8yTQpEYW5nZXJmaWVsZC8yTQpEYW5pYWwvMk0KRGFuaWVsLzIxU00KRGFuaWVsbGUvMk0KRGFuaWVscy8yTQpEYW5pc2gvMjUxTQpEYW5uaWUvMk0KRGFubnkvMk0KRGFub25lL00KRGFudGUvMk0KRGFudG9uL00KRGFudWJlLzJNCkRhbnViaWFuLzUxTQpEYW52aWxsZS8yTQpEYXBobmUvMk0KRGFyYnkvMk0KRGFyY3kvMk0KRGFyZGFuZWxsZXMvMk0KRGFyZS8yTQpEYXJlbi8yTQpEYXJmdXIvMk0KRGFyaW4vMk0KRGFyaW8vMk0KRGFyaXVzLzJNCkRhcmplZWxpbmcvMjFNCkRhcmxhLzJNCkRhcmxlbmUvMk0KRGFybGluZy8yTQpEYXJuZWxsLzJNCkRhcnJlbC9NCkRhcnJlbGwvMk0KRGFycmVuLzIxTQpEYXJyaW4vMk0KRGFycm93LzJNCkRhcnJ5bC8yTQpEYXJ0aC8yTQpEYXJ0bW9vci8yMU0KRGFydG1vdXRoLzJNCkRhcnZvbi9NCkRhcndpbi8yTQpEYXJ3aW5pYW4vNTFNCkRhcndpbmlzbS8xU00KRGFyd2luaXN0LzEKRGFyeWwvMk0KRGF0YW1hdGlvbgpEYXVnaGVydHkvMk0KRGF1bWllci9NCkRhdmFvLzJNCkRhdmUvMk0KRGF2ZW5wb3J0LzJNCkRhdmlkLzJNUwpEYXZpZHNvbi8yTQpEYXZpZXMvMjFNCkRhdmlzLzJNCkRhdnkvMjFTTQpEYXdlcy8yTQpEYXdraW5zLzIKRGF3bi8yTQpEYXdzb24vMk0KRGF5LzJNCkRheWFuLzIKRGF5dG9uLzJNCkRlR2VuZXJlcy8yTQpEZUthbGIvMk0KRGVhZGhlYWQvMU0KRGVhbi8yTQpEZWFuYS9NCkRlYW5kcmUvMk0KRGVhbm4vTQpEZWFubmEvMk0KRGVhbm5lL00KRGVhdGgvMk0KRGViYmllLzJNCkRlYmJ5LzJNCkRlYmlhbi9NCkRlYm9yYS8yTQpEZWJvcmFoLzJNCkRlYm91aWxsZXQvTQpEZWJyYS8yTQpEZWJzLzJNCkRlYnVzc3kvTQpEZWMvMk0KRGVjYWxvZ3VlLzIxTQpEZWNhdHVyLzJNCkRlY2NhLzJNCkRlY2Nhbi8yTQpEZWNlbWJlci8yU00KRGVja2VyLzJNCkRlZGVraW5kLzJNCkRlZS8yMU0KRGVlbmEvMk0KRGVlcmUvMjFNCkRlZm9lLzJNCkRlZ2FzL00KRGVpZHJlL00KRGVpbW9zLzJNCkRlaXJkcmUvMk0KRGVpdHkKRGVqZXN1cy8yTQpEZWwvMjFNCkRlbGFjcm9peC9NCkRlbGFjcnV6LzJNCkRlbGFuZXkvMk0KRGVsYW5vLzJNCkRlbGF3YXJlLzIxTVMKRGVsYXdhcmVhbi81MVNNCkRlbGJlcnQvTQpEZWxlb24vMk0KRGVsZ2Fkby8yTQpEZWxoaS8yTQpEZWxpYS8yTQpEZWxpYmVzL00KRGVsaWNpb3VzL00KRGVsaWxhaC8yMU0KRGVsaWxhaHMvMQpEZWxpdXMvTQpEZWxsLzJNCkRlbGxhLzJNCkRlbG1hci8yTQpEZWxtYXJ2YS8yTQpEZWxtZXIvTQpEZWxtb25pY28vMU0KRGVsb3Jlcy8yTQpEZWxvcmlzL00KRGVscGhpLzJNCkRlbHBoaWMvNU0KRGVscGhpbnVzLzJNCkRlbHRhLzEyTQpEZWx0b25hLzJNCkRlbS8xRwpEZW1hdmVuZC9NCkRlbWVyb2wvMk0KRGVtZXRlci8yTQpEZW1ldHJpdXMvMk0KRGVtaW5nLzJNCkRlbW9jcmF0LzE1U00KRGVtb2NyYXRpYy81CkRlbW9jcml0dXMvMk0KRGVtb3N0aGVuZXMvMk0KRGVtcHNleS8yTQpEZW5hLzJNCkRlbmFsaS8yCkRlbmViLzJNCkRlbmVib2xhLzJNCkRlbmcvMk0KRGVuaXMvMk0KRGVuaXNlLzJNCkRlbm1hcmsvMk0KRGVubmlzLzJNCkRlbm55LzJNCkRlbnRvbi8yTQpEZW52ZXIvMk0KRGVvbi8yTQpEZXBwLzJNCkRlcmJ5LzIxTQpEZXJlay8yTQpEZXJpY2svMk0KRGVybW90LzJNCkRlcnJpY2svMk0KRGVycmlkYS8yTQpEZXNjYXJ0ZXMvMk0KRGVzZGVtb25hLzJNCkRlc2lyZWUvMk0KRGVzbW9uZC8yTQpEZXRyb2l0LzJNCkRldXRlcm9ub215LzJNCkRldmFuYWdhcmkvNTJNCkRldmkvMk0KRGV2aW4vMk0KRGV2b24vMjFNCkRldm9uaWFuLzUxMk0KRGV3YXIvMjFNCkRld2F5bmUvTQpEZXdleS8yTQpEZXdpdHQvMjRNCkRleGVkcmluZS9NCkRleHRlci8yMU0KRGhha2EvMk0KRGhhdWxhZ2lyaS9NCkRpLzJTTQpEaUNhcHJpby8yTQpEaU1hZ2dpby9NCkRpYWdoaWxldi9NCkRpYWwvMk0KRGlhbmEvMjFNCkRpYW5lLzJNCkRpYW5uLzJNCkRpYW5uYS8yTQpEaWFubmUvMk0KRGlhcwpEaWFzcG9yYS8yTVMKRGljay8yWE0KRGlja2Vucy8yTQpEaWNrZW5zaWFuLzUxCkRpY2tlcnNvbi8yTQpEaWNraW5zb24vMk0KRGlja3Nvbi8yTQpEaWN0YXBob25lL1NNCkRpZGVyb3QvTQpEaWRvLzJNCkRpZHJpa3Nvbi9NCkRpZWZlbmJha2VyL00KRGllZ28vMjFNCkRpZW0vMk0KRGlldHJpY2gvMk0KRGlqa3N0cmEvTQpEaWpvbi8yTQpEaWxiZXJ0L01TCkRpbGxhcmQvMk0KRGlsbGluZ2VyLzJNCkRpbGxvbi8yTQpEaW5hLzJNCkRpbmFoLzJNCkRpbm8vMk0KRGlvY2xldGlhbi8yNU0KRGlvZ2VuZXMvMk0KRGlvbi8yTQpEaW9ubmUvMk0KRGlvbnlzaWFuLzUxTQpEaW9ueXN1cy8yTQpEaW9waGFudGluZS81TQpEaW9yL00KRGlwcGVyLzIxTQpEaXIKRGlyYWMvMk0KRGlyaWNobGV0LzJNCkRpcmsvMk0KRGlzLzJNCkRpc25leS8yTQpEaXNuZXlsYW5kLzIxTQpEaXNyYWVsaS8yTQpEaXZpbmUvMjVNCkRpd2FsaS8yTQpEaXgvMk0KRGl4aWUvMk0KRGl4aWVjcmF0LzFNCkRpeGllbGFuZC8yMVNNCkRpeG9uLzJNCkRqYW5nby9NCkRqaWJvdXRpLzJNCkRtaXRyaS8yTQpEbmVwcm9wZXRyb3Zzay8yTQpEbmllc3Rlci8yTQpEb2JiaW4vMk0KRG9iZXJtYW4vMU0KRG9icm8vMU0KRG9jdG9yLzEKRG9jdG9yb3cvTQpEb2RnZS8yTQpEb2Rnc29uLzJNCkRvZG9tYS8yTQpEb2Rzb24vMk0KRG9lLzJNCkRvaGEvMk0KRG9sYnkvMk0KRG9sZS8yTQpEb2xsaWUvTQpEb2xseS8yMU0KRG9sb3Jlcy8yTQpEb21lc2RheS8yTQpEb21pbmdvL00KRG9taW5ndWV6LzJNCkRvbWluaWMvMk0KRG9taW5pY2EvMk0KRG9taW5pY2FuLzE1TVMKRG9taW5pY2svMk0KRG9taW5pb24vMgpEb21pbmlxdWUvMTJNCkRvbWl0aWFuL00KRG9uLzJTTQpEb25hLzJNCkRvbmFodWUvMk0KRG9uYWxkLzJNCkRvbmFsZHNvbi8yTQpEb25hdGVsbG8vMk0KRG9uZXRzay8yTQpEb25pemV0dGkvTQpEb25uLzJNUgpEb25uYS8yTQpEb25uZS8yTQpEb25uZWxsLzJNCkRvbm5lci8yTQpEb25uaWUvMk0KRG9ubnkvMk0KRG9ub3Zhbi8yMU0KRG9vbGV5LzJNCkRvb2xpdHRsZS8yTQpEb29uZXNidXJ5L00KRG9wcGxlci8yMU0KRG9yYS8yTQpEb3JjYXMvMjE0TQpEb3JlZW4vMk0KRG9yaWFuLzUxMk0KRG9yaWMvNTJNCkRvcmlzLzIxNU0KRG9yaXRvcy8xTQpEb3JvdGhlYS8yTQpEb3JvdGh5LzJNCkRvcnNldC8yTQpEb3JzZXkvMk0KRG9ydGh5L00KRG9ydG11bmQvMk0KRG9zdG9ldnNreS8yTQpEb3QvMk0KRG90aGFuLzJNCkRvdHNvbi8yTQpEb3VhbGEvMk0KRG91YXkvMk0KRG91YmxlZGF5LzJNCkRvdWcvMk0KRG91Z2xhcy8yTQpEb3VnbGFzcy8yTQpEb3Vyby8yTQpEb3Zlci8yTQpEb3cvMk0KRG93bnMvMk0KRG93bnkvTQpEb3lsZS8yMU0KRHIvMQpEcmFjby8yTQpEcmFjb25pYW4vNU0KRHJhY3VsYS8yMU0KRHJha2UvMk0KRHJhbWFtaW5lL1NNCkRyYW1idWllLzFNCkRyYW5vL00KRHJhdmlkaWFuLzIxNU0KRHJlaXNlci8yTQpEcmVzZGVuLzIxTQpEcmV3LzJNCkRyZXlmdXMvMk0KRHJpc3Rhbi9NCkRyb3Bib3gvTQpEcnVkZ2UvTQpEcnVwYWwvTQpEcnlkZW4vMk0KRHNjaHViYmEvMk0KRHUKRHVQb250LzJNCkR1YW5lLzJNCkR1YmFpLzJNCkR1YmNlay9NCkR1YmhlLzJNCkR1Ymxpbi8yTQpEdWJyb3ZuaWsvMk0KRHVidXF1ZS8yTQpEdWNoYW1wLzJNCkR1ZGxleS8yMU0KRHVmZnkvMk0KRHVpc2J1cmcvMk0KRHVrZS8xMk0KRHVsbGVzLzJNCkR1bHV0aC8yTQpEdW1hcy8yTQpEdW1ibGVkb3JlL00KRHVtYm8vMk0KRHVuYW50L00KRHVuYmFyLzJNCkR1bmNhbi8yTQpEdW5kZWUvMgpEdW5lZGluLzJNCkR1bmtpcmsvMk0KRHVubGFwLzJNCkR1bm4vMk0KRHVubmUvMk0KRHVyYWNlbGwvMTJNCkR1cmFuLzJNCkR1cmFudC8yTQpEdXJhbnRlL00KRHVyYmFuLzJNCkR1cmVyL00KRHVyZXgvMjFNCkR1cmhhbS8yMU1TCkR1cmtoZWltL00KRHVyb2MvMU0KRHVyb2NoZXIvMk0KRHVzZS9NCkR1c2hhbmJlLzJNCkR1c3NlbGRvcmYvMk0KRHVzdGJ1c3Rlci9NCkR1c3Rpbi8yTQpEdXN0eS8yTQpEdXRjaC81MjE0TQpEdXRjaG1hbi8xMk0KRHV0Y2htZW4vMU0KRHV0Y2h3b21hbi8xCkR1dmFsaWVyL00KRHZpbmEvTQpEdm9yYWsvMjVNCkR3YXluZS8yTQpEd2lnaHQvMk0KRHkvMk0KRHllci8yTQpEeWxhbi8yTQpEeW5hbW9EQi9NCkR5c29uLzIxTQpEemVyemhpbnNreS8yTQpEenVuZ2FyaWEvMk0KRS8xMlNNCkVDLzEyCkVDRy8xMk0KRUNNQVNjcmlwdC8yTQpFRFAvMTJNCkVEVC8yMQpFRUMvMjFNCkVFRy8xTQpFRU8vMQpFRU9DLzIKRUZMLzEyCkVGVC8xMgpFS0cvMU0KRUxGLzEyTQpFTS8xNQpFTVQvMQpFTkUvMTVNCkVPRS8xCkVQQS8yMU0KRVIvMjEKRVJBLzEyCkVTRS8xNU0KRVNMLzEKRVNQLzFNCkVTUE4vMk0KRVNSLzEKRVNULzIxTQpFVC8xCkVUQS8yMTQKRVRELzEKRVUvMjEKRVVMQS8xUwpFYWtpbnMvMk0KRWFyaGFydC8yTQpFYXJsLzEyTQpFYXJsZS8yTQpFYXJsZW5lLzJNCkVhcmxpbmUvMk0KRWFybmVzdC8yTQpFYXJuZXN0aW5lL00KRWFybmhhcmR0LzJNCkVhcnAvMk0KRWFzdC8yU1pNUgpFYXN0ZXIvMTI0TQpFYXN0ZXJuLzVSCkVhc3RtYW4vMk0KRWFzdHdvb2QvMjE0TQpFYXRvbi8yTQpFYmVuLzJNCkViZW5lZXplci9NCkViZXJ0LzJNCkVib2xhLzIxTQpFYm9uaWNzLzJNCkVib255LzJNCkVicm8vMk0KRWNjbGVzaWFzdGVzLzJNCkVjby9NCkVjc3Rhc3kvMQpFY3VhZG9yLzJNCkVjdWFkb3Jhbi8xNVNNCkVjdWFkb3JlYW4vMTUKRWN1YWRvcmlhbi8xNVNNCkVkLzJNTlgKRWRhbS8yU00KRWRkYS8yTQpFZGRpZS8yMU0KRWRkaW5ndG9uLzJNCkVkZHkvMk0KRWRlbi8yMU0KRWRnYXIvMjFNCkVkZ2FyZG8vTQpFZGluYnVyZ2gvMk0KRWRpc29uLzJNCkVkaXRoLzJNCkVkbW9uZC8yTQpFZG1vbnRvbi8yTQpFZG11bmQvMk0KRWRuYS8yTQpFZHNlbC8yMU0KRWR1YXJkby9NCkVkd2FyZC8yMVNNCkVkd2FyZGlhbi81MU0KRWR3YXJkby9NCkVkd2FyZHMvMjFNCkVkd2luLzJNCkVkd2luYS8yTQpFZXlvcmUvMU0KRWZmaWUvMjFNCkVmcmFpbi8yTQpFZnJlbi8yTQpFZ2dvL00KRWd5cHQvMk0KRWd5cHRpYW4vNTEyTVMKRWd5cHRvbG9neS8xTQpFaHJlbmJlcmcvMk0KRWhybGljaC8yTQpFaWNobWFubi8xTQpFaWZmZWwvMk0KRWlsZWVuLzJNCkVpbnN0ZWluLzIxTVMKRWlyZS8yTQpFaXNlbmhvd2VyLzJNCkVpc2Vuc3RlaW4vMk0KRWlzbmVyLzJNCkVsYWluZS8yTQpFbGFtLzJNCkVsYW5vci9NCkVsYXN0aWNzZWFyY2gvTQpFbGFzdG9wbGFzdC8yTQpFbGJhLzJNCkVsYmUvMk0KRWxiZXJ0LzJNCkVsYnJ1cy8yTQpFbGRlcnNidXJnL00KRWxkb24vMk0KRWxlYW5vci8yTQpFbGVhemFyLzJNCkVsZWN0cmEvMk0KRWxlbmEvMk0KRWxnYXIvMk0KRWxpLzIxTQpFbGlhcy8yTQpFbGlqYWgvMk0KRWxpbm9yLzJNCkVsaW90LzJNCkVsaXNhL00KRWxpc2FiZXRoLzJNCkVsaXNlLzJNCkVsaXNlby9NCkVsaXNoYS8yTQpFbGl6YS8yTQpFbGl6YWJldGgvMk0KRWxpemFiZXRoYW4vNTFTTQpFbGl6YWJldGh0b3duLzJNCkVsa2hhcnQvMk0KRWxsYS8yTQpFbGxlbi8yTQpFbGxlc21lcmUvMk0KRWxsaWUvMk0KRWxsaW5ndG9uLzJNCkVsbGlvdC8yTQpFbGxpb3R0LzJNCkVsbGlzLzJNCkVsbGlzb24vMk0KRWxtYS8yTQpFbG1lci8yMU0KRWxtaXJhLzJNCkVsbW8vMk0KRWxuYXRoLzJNCkVsbm9yYS9NCkVsb2hpbS8yTQpFbG9pc2UvMk0KRWxveS8yTQpFbHJveS8yTQpFbHNhLzJNCkVsc2llLzJNCkVsc2lub3JlLzJNCkVsdGFuaW4vMk0KRWx0b24vMk0KRWx1bC8yTQpFbHZhL00KRWx2aWEvTQpFbHZpbi8yTQpFbHZpcmEvMk0KRWx2aXMvMjFNCkVsd2F5L00KRWx3b29kLzJNCkVseXJpYS8yTQpFbHlzZWUvTQpFbHlzaWFuLzI1MU0KRWx5c2l1bS8yNVNNCkVtYWNzLzJNCkVtYW51ZWwvMk0KRW1lcnNvbi8yTQpFbWVyeS8yTQpFbWlsLzJNCkVtaWxlLzJNCkVtaWxpYS8yTQpFbWlsaW8vTQpFbWlseS8yTQpFbWluZW0vMU0KRW1pbmVuY2UvMgpFbW1hLzJNCkVtbWFudWVsLzJNCkVtbWV0dC8yTQpFbW15LzIxTQpFbW9yeS8yTQpFbmNhcnRhL00KRW5keW1pb24vMk0KRW5nL00KRW5nZWxzLzJNCkVuZ2xhbmQvMk0KRW5nbGlzaC81MTI0TVJTCkVuZ2xpc2htYW4vMU0KRW5nbGlzaG1lbi8xTQpFbmdsaXNod29tYW4vMU0KRW5nbGlzaHdvbWVuLzFNCkVuaWQvMk0KRW5pZi8yTQpFbml3ZXRvay8yTQpFbmtpZHUvMk0KRW5vY2gvMk0KRW5vcy8yTQpFbnJpY28vMk0KRW5yaXF1ZS9NCkVucm9uLzFNCkVudGVycHJpc2UvMk0KRW9jZW5lLzUyTQpFcGNvdC8yTQpFcGhlc2lhbi81MU1TCkVwaGVzdXMvMk0KRXBocmFpbS8yTQpFcGljdGV0dXMvMk0KRXBpY3VyZWFuLzUxTQpFcGljdXJ1cy8yTQpFcGltZXRoaXVzL00KRXBpcGhhbnkvMTJTTQpFcGlzY29wYWwvNTEKRXBpc2NvcGFsaWFuLzE1TVMKRXBpc3RsZS8xCkVwc29tLzJNCkVwc29uL00KRXBzdGVpbi8yNE0KRXF1dWxldXMvMk0KRXIvTQpFcmFzbXVzLzIxTQpFcmF0by8yTQpFcmF0b3N0aGVuZXMvMk0KRXJlYnVzLzJNCkVyZWN0b3IvTQpFcmV3aG9uL00KRXJoYXJkL00KRXJpYy8yTQpFcmljYS8yTQpFcmljaC8yTQpFcmljay8yTQpFcmlja2EvMk0KRXJpY2tzb24vMk0KRXJpZGFudXMvMk0KRXJpZS8xMk0KRXJpay8yTQpFcmlrYS8yTQpFcmluLzJNCkVyaXMvMk1TCkVyaXRyZWEvMk0KRXJpdHJlYW4vNTFTTQpFcmxhbmcvMk0KRXJsZW5tZXllci8yTQpFcm1hLzJNCkVybmEvTQpFcm5lc3QvMk0KRXJuZXN0aW5lLzI1TQpFcm5lc3RvLzJNCkVybmllLzJNCkVybnN0LzJNCkVyb3MvMk1TCkVycm9sLzJNCkVyc2UvMTVNCkVydkluL00KRXJ3aW4vMk0KRXNhdS8yTQpFc2NoZXIvMk0KRXNjaGVyaWNoaWEvMk0KRXNjb25kaWRvLzIKRXNraW1vLzIxNU1TCkVzbWVyYWxkYS8yTQpFc3BlcmFudG8vMk0KRXNwZXJhbnphLzJNCkVzcGlub3phL00KRXNxLzFNCkVzcXVpcmUvTVMKRXNzZW4vMk0KRXNzZW5lLzFNCkVzc2VxdWliby8yTQpFc3NleC8yTQpFc3NpZS8yTQpFc3RhYmxpc2htZW50LzEKRXN0ZWJhbi8yTQpFc3RlbGEvTQpFc3RlbGxhLzJNCkVzdGVsbGUvMk0KRXN0ZXIvMk0KRXN0ZXJoYXp5LzVNCkVzdGVzLzJNCkVzdGhlci8yTQpFc3RvbmlhLzJNCkVzdG9uaWFuLzUxU00KRXN0cmFkYS8yTQpFdGhhbi8yTQpFdGhlbC8yTQpFdGhlbHJlZC8yTQpFdGhlcm5ldC8yMU0KRXRoaW9waWEvMk0KRXRoaW9waWFuLzE1U00KRXRuYS8yTQpFdG9uLzJNCkV0cnVyaWEvMk0KRXRydXNjYW4vNTEyTQpFdHRhLzJNCkV1L00KRXVjaGFyaXN0LzFNUwpFdWNoYXJpc3RpYy81CkV1Y2xpZC8yTQpFdWdlbmUvMk0KRXVnZW5pYS8yTQpFdWdlbmllLzJNCkV1Z2VuaW8vTQpFdWxhLzJNCkV1bGVyLzJNCkV1bWVuaWRlcy8xTQpFdW5pY2UvMk0KRXVwaHJhdGVzLzJNCkV1ci81MgpFdXJhc2lhLzJNCkV1cmFzaWFuLzUxTVMKRXVyaXBpZGVzLzJNCkV1cm9kb2xsYXIvMVNNCkV1cm9wYS8yTQpFdXJvcGUvMk0KRXVyb3BlYW4vNTFNUwpFdXJ5ZGljZS8yTQpFdXN0YWNoaWFuLzVNCkV1c3Rpcy8yTQpFdXRlcnBlLzJNCkV2YS8yTQpFdmFuLzJTTQpFdmFuZ2VsaWNhbC81CkV2YW5nZWxpbmEvMk0KRXZhbmdlbGluZS8yTQpFdmFuZ2VsaXN0LzFNCkV2YW5zLzJNCkV2YW5zdmlsbGUvMk0KRXZlLzJNCkV2ZWx5bi8yTQpFdmVua2kvMjFNCkV2ZXJSZWFkeS9NCkV2ZXJlc3QvMjRNCkV2ZXJldHQvMk0KRXZlcmV0dGUvMk0KRXZlcmdsYWRlcy8yTQpFdmVydC8yTQpFdmlhbi9NCkV2aXRhLzJNCkV3aW5nLzJNCkV4Y2FsaWJ1ci8yTQpFeGNlZHJpbi9NCkV4Y2VsbGVuY3kvMVNNCkV4Y2hlcXVlci8yCkV4ZXJjeWNsZS9NCkV4b2NldC8xTQpFeG9kdXMvMk0KRXh4b24vMk0KRXljay9NCkV5cmUvMk0KRXlzZW5jay9NCkV6ZWtpZWwvMk0KRXpyYS8yTQpGLzUxMjRNRApGQUEvMgpGQVEvMVNNCkZCSS8yMU0KRkNDLzIxNQpGRC8xCkZEQS8yCkZESUMvMk0KRkRSLzIxTQpGSEEvMk0KRklDQS8yTQpGSUZPLzEKRkwvMTIKRk0vMVNNCkZOTUEvMk0KRk9GTApGT1JUUkFOLzJNCkZQTy8xCkZTRi8yTQpGU0xJQy8yCkZUQy8yCkZVRC8xUwpGV0QvMQpGV0lXLwpGWS8xCkZZSS8KRmFiZXJnZS9NCkZhYmlhbi81MTJNUwpGYWNlYm9vay8yMTRNCkZhZXJvZS8yTQpGYWZuaXIvMk0KRmFnaW4vMU0KRmFoZC9NCkZhaHJlbmhlaXQvNU0KRmFpcmJhbmtzLzJNCkZhaXJmaWVsZC8yTQpGYWlyaG9wZS9NCkZhaXNhbC8yTQpGYWlzYWxhYmFkLzJNCkZhaXRoLzJNCkZhamFyZG8vMk0KRmFsYXNoYS8yTQpGYWxrbGFuZC8yU00KRmFsa2xhbmRzLzJNCkZhbGxvcGlhbi81TQpGYWxzdGFmZi8xTQpGYWx3ZWxsLzJNCkZhbm5pZS8yTQpGYW5ueS8yTQpGYXJhZGF5LzJNCkZhcmdvLzJNCkZhcmxleS8yTQpGYXJtZXIvMk0KRmFybWluZ3Rvbi8yTQpGYXJyYWd1dC9NCkZhcnJha2hhbi9NCkZhcnJlbGwvMk0KRmFycm93LzJNCkZhcnNpLzE1TQpGYXNzYmluZGVyL00KRmF0YWgvMk0KRmF0ZXMvMk0KRmF0aGVyLzIxU00KRmF0aW1hLzJNCkZhdGltaWQvMU0KRmF1bGtuZXIvMk0KRmF1bGtuZXJpYW4vNU0KRmF1bnRsZXJveS8yTQpGYXVzdC8yTQpGYXVzdGlhbi81TQpGYXVzdGluby9NCkZhdXN0dXMvTQpGYXdrZXMvMk0KRmF5LzJNCkZheWUvMk0KRmF5ZXR0ZXZpbGxlLzJNCkZlLzFNCkZlYi8yTQpGZWJydWFyeS8yU00KRmVkLzJTTQpGZWRFeC8yNE0KRmVkZXJhbC8xTVMKRmVkZXJhbGlzdC9NCkZlZGVyaWNvLzJNCkZlZHMvTQpGZWxlY2lhL00KRmVsaWNlL00KRmVsaWNpYS8yTQpGZWxpY2l0eS8yTQpGZWxpcGUvTQpGZWxpeC8yTQpGZWxsaW5pL00KRmVuaWFuLzFNCkZlcmJlci8yTQpGZXJkaW5hbmQvMk0KRmVyZ3VzLzJNCkZlcmd1c29uLzJNCkZlcmxpbmdoZXR0aS8yTQpGZXJtYXQvMk0KRmVybWkvMk0KRmVybi8yTQpGZXJuYW5kZXovMk0KRmVybmFuZG8vMk0KRmVycmFyaS8yMU0KRmVycmFyby9NCkZlcnJlbGwvMk0KRmVycmlzLzJNCkZleW5tYW4vMk0KRmV6LzJNCkZpYXQvMU0KRmliZXJnbGFzL00KRmlib25hY2NpLzJNCkZpY2h0ZS9NCkZpZGVsLzJNCkZpZG8vMk0KRmllbGRpbmcvMk0KRmllbGRzLzJNCkZpZ2Fyby8yMU0KRmlndWVyb2EvMk0KRmlqaS8yTQpGaWppYW4vMTUyTVMKRmlsaXBpbm8vMTI1TVMKRmlsbG1vcmUvMk0KRmlsb2ZheC8xTQpGaW5jaC8yTQpGaW5sYW5kLzJNCkZpbmxheS8yTQpGaW5sZXkvMk0KRmlubi8xMlNNCkZpbm5ib2dhZG90dGlyL00KRmlubmVnYW4vMk0KRmlubmlzaC81MU0KRmlvbmEvMk0KRmlyZWJhc2UvTQpGaXJlZm94LzJNCkZpcmVzdG9uZS8yTQpGaXNjaGVyLzJNCkZpc2hlci8yTQpGaXNrLzJNCkZpdGNoLzJNCkZpdGNoYnVyZy8yTQpGaXR6Z2VyYWxkLzJNCkZpdHpwYXRyaWNrLzJNCkZpdHpyb3kvMk0KRml6ZWF1L00KRmxhLzIKRmxhZ3N0YWZmLzJNCkZsYW5hZ2FuLzJNCkZsYW5kZXJzLzJNCkZsYXRoZWFkLzEyCkZsYXR0LzJNCkZsYXViZXJ0LzJNCkZsZWlzY2hlci8yTQpGbGVtaW5nLzEyTQpGbGVtaXNoLzUyTQpGbGV0Y2hlci8yTQpGbGludC8yTQpGbGludHN0b25lcy9NCkZsby8yTQpGbG9yYS8yTQpGbG9yZW5jZS8yMU0KRmxvcmVudGluZS81MU0KRmxvcmVzLzJNCkZsb3JpZGEvMk0KRmxvcmlkYW4vNTFNCkZsb3JpZGlhbi81MVNNCkZsb3JpbmUvTQpGbG9yc2hlaW0vTQpGbG9yeS8yTQpGbG9zc2llLzJNCkZsb3dlcnMvMk0KRmxveWQvMk0KRmx5bm4vMk0KRm0vTQpGb2NoLzIxTQpGb2trZXIvMjFNCkZvbGV5LzJNCkZvbGdlcnMvTQpGb2xzb20vMk0KRm9tYWxoYXV0LzJNCkZvbmRhLzJNCkZvb3NiYWxsL00KRm9yYmVzLzJNCkZvcmQvMjFNCkZvcmVtYW4vMk0KRm9yZXN0LzJNUgpGb3Jlc3Rlci8yTQpGb3JtaWNhLzJNUwpGb3Jtb3NhLzJNCkZvcm1vc2FuLzUxTQpGb3JyZXN0LzJNCkZvcnN0ZXIvMk0KRm9ydGFsZXphLzJNCkZvc3NlLzJNCkZvc3Rlci8yTQpGb3RvbWF0L00KRm91Y2F1bHQvMk0KRm91cmllci8yTQpGb3VybmV5cm9uL00KRm91cnRoLzIKRm93bGVyLzJNCkZveC8xMk1TCkZyLzFNRApGcmFnb25hcmQvTQpGcmFuLzJNCkZyYW5jZS8yU00KRnJhbmNlcy8yTQpGcmFuY2VzY2EvMk0KRnJhbmNpbmUvMk0KRnJhbmNpcy8yTQpGcmFuY2lzY2EvTQpGcmFuY2lzY2FuLzE1TVMKRnJhbmNpc2NvLzJNCkZyYW5jay9NCkZyYW5jby8yMU0KRnJhbmNvaXMvMk0KRnJhbmNvaXNlL00KRnJhbmNvcGhpbGUvMTUKRnJhbmdsYWlzLzJNCkZyYW5rLzEyU00KRnJhbmtlbC8yTQpGcmFua2Vuc3RlaW4vMjE0TQpGcmFua2ZvcnQvMk0KRnJhbmtmdXJ0LzJNUgpGcmFua2Z1cnRlci8xTQpGcmFua2llLzJNCkZyYW5raXNoLzUyCkZyYW5rbGluLzIxTQpGcmFua3MvMTJNCkZyYW5ueS8yTQpGcmFuei8yTQpGcmFzZXIvMk0KRnJhdS8xTU4KRnJhdWxlaW4vMQpGcmF6aWVyLzJNCkZyZWQvMjFNCkZyZWRhLzJNCkZyZWRkaWUvMjFNCkZyZWRkeS8yTQpGcmVkZXJpYy8yTQpGcmVkZXJpY2svMk0KRnJlZGVyaWNrc2J1cmcvMk0KRnJlZGVyaWN0b24vMk0KRnJlZHJpYy9NCkZyZWRyaWNrLzJNCkZyZWVtYW4vMk0KRnJlZW1hc29uLzFTTQpGcmVlbWFzb25yeS8yU00KRnJlZXRvd24vMk0KRnJlaWRhL00KRnJlbW9udC8yTQpGcmVuY2gvMjE1NE1TCkZyZW5jaG1hbi8xTQpGcmVuY2htZW4vMU0KRnJlbmNod29tYW4vMU0KRnJlbmNod29tZW4vMU0KRnJlb24vMU0KRnJlc25lbC8yTQpGcmVzbm8vMk0KRnJldWQvMk0KRnJldWRpYW4vNTFNCkZyZXkvMk0KRnJleWEvMk0KRnJpLzFNCkZyaWRheS8xU00KRnJpZWRhLzJNCkZyaWVkYW4vTQpGcmllZG1hbi8yTQpGcmllZG1hbm4vMk0KRnJpZW5kLzEyU00KRnJpZ2dhLzJNCkZyaWdpZGFpcmUvTQpGcmlzYmVlLzIxNE0KRnJpc2NvLzJNCkZyaXNpYW4vMjE1TVMKRnJpdG8vMU0KRnJpdHovMTJNCkZyb2Jpc2hlci8yTQpGcm9kby8yTQpGcm9pc3NhcnQvTQpGcm9tbS8yTQpGcm9uZGUvTQpGcm9udGVuYWMvMk0KRnJvc3QvMk0KRnJvc3RiZWx0L00KRnJ1bnplLzJNCkZyeS8yTQpGcnllLzJNCkZ1Y2hzLzJNCkZ1ZW50ZXMvMk0KRnVnZ2VyL00KRnVqaS8yTQpGdWppYW4vMjVNCkZ1aml0c3UvTQpGdWppd2FyYS8yTQpGdWppeWFtYS8yTQpGdWt1b2thLzJNCkZ1a3V5YW1hLzJNCkZ1bGFuaS8yTQpGdWxicmlnaHQvMk0KRnVsbGVyLzJNCkZ1bGxlcnRvbi8yTQpGdWx0b24vMk0KRnVuYWZ1dGkvMk0KRnVuZHkvMk0KRnVyaWVzLzJNCkZ1cm1hbi8yTQpGdXJ0d2FuZ2xlci9NCkZ1c2h1bi8yTQpGdXpob3UvMk0KRnV6emJ1c3Rlci9NCkcvMU1OUkIKR0EvMjEKR0FPLzIKR0FUVC8yTQpHQi8xMk0KR0NDLzJNCkdEUC8xTQpHRS8yMTVNCkdFRC8xCkdIUS8xTQpHSHovCkdJLzUxNApHSUYvMTQKR0lHTy8KR00vMTI0NU0KR01BVC8yCkdNTy8xNQpHTVQvMjFNCkdOUC8xTQpHTlUvMk0KR09QLzIxTQpHUC8xNTJNCkdQQS8xCkdQTy8yMQpHUFMvMjE0CkdQVS8xMgpHU0EvMjEKR1RFLzJNCkdVLzEKR1VJLzIxTQpHYS8yMU0KR2FibGUvMk0KR2Fib24vMk0KR2Fib25lc2UvMTVNCkdhYm9yb25lLzJNCkdhYnJpZWwvMk0KR2FicmllbGEvMk0KR2FicmllbGxlLzJNCkdhY3J1eC8yTQpHYWRzZGVuLzJNCkdhZWEvMk0KR2FlbC8xMlNNCkdhZWxpYy8yNTFNCkdhZ2FyaW4vMk0KR2FnZS8yTQpHYWlhLzJNCkdhaWwvMk0KR2FpbWFuLzJNCkdhaW5lcy8yTQpHYWluZXN2aWxsZS8yTQpHYWluc2Jvcm91Z2gvMjFNCkdhbGFoYWQvMjFTTQpHYWxhcGFnb3MvMk0KR2FsYXRlYS8yTQpHYWxhdGlhLzJNCkdhbGF0aWFucy8yMU0KR2FsYXh5LzIKR2FsYnJhaXRoLzJNCkdhbGUvMk0KR2FsZW4vMk0KR2FsaWJpLzJNCkdhbGlsZWFuLzUxMlNNCkdhbGlsZWUvMk0KR2FsaWxlby8yTQpHYWxsLzJNCkdhbGxhZ2hlci8yTQpHYWxsZWdvcy8yTQpHYWxsaWMvNU0KR2FsbGljaXNtLzFTTQpHYWxsby8yTQpHYWxsb3dheS8yMU0KR2FsbHVwLzJNCkdhbG9pcy8yTQpHYWxzd29ydGh5LzJNCkdhbHZhbmkvMk0KR2FsdmVzdG9uLzJNCkdhbWEvMgpHYW1heS8xTQpHYW1iaWEvMk0KR2FtYmlhbi81MVNNCkdhbWJsZS8yTQpHYW1vdy9NCkdhbmRhbGYvMk0KR2FuZGhpLzIxTQpHYW5kaGlhbi81TQpHYW5lc2hhLzIxTQpHYW5nZXMvMk0KR2FuZ3Rvay8yTQpHYW5zdS8yTQpHYW50cnkvTQpHYW55bWVkZS8yMU0KR2FwLzJNCkdhcmJvL00KR2FyY2lhLzJNCkdhcmRuZXIvMk0KR2FyZXRoLzIxTQpHYXJmaWVsZC8yTQpHYXJmdW5rZWwvMk0KR2FyZ2FudHVhL00KR2FyaWJhbGRpLzJNCkdhcmxhbmQvMk0KR2FybmVyLzJNCkdhcnJldHQvMk0KR2Fycmljay8yTQpHYXJyaXNvbi8yTQpHYXJyeS8yTQpHYXJ0aC8yTQpHYXJ2ZXkvMk0KR2FyeS8yMU0KR2FyemEvMk0KR2FzY29ueS8yTQpHYXNzZXIvMk0KR2FzdG9uaWEvMk0KR2FzdHJvZW50ZXJvbG9neQpHYXRlcy8yTQpHYXRsaW5nLzFNCkdhdG9yYWRlLzIxNE0KR2F0c2J5LzJNCkdhdHVuLzJNCkdhdWd1aW4vMk0KR2F1bC8yMVNNCkdhdWxpc2gvNTIKR2F1c3MvMk0KR2F1c3NpYW4vNTFNCkdhdXRhbWEvMk0KR2F1dGllci9NCkdhdmluLzJNCkdhd2Fpbi8yTQpHYXkvMk0KR2F5bGUvMk0KR2F6YS8yTQpHYXppYW50ZXAvMk0KR2QvTQpHZGFuc2svMk0KR2UvMk0KR2VmZmVuLzJNCkdlaGVubmEvMk0KR2VocmlnLzJNCkdlaWdlci8yTQpHZWxidmllaC8xTQpHZWxsZXIvMk0KR2VtaW5pLzIxTVMKR2VuLzIxTQpHZW5hLzJNCkdlbmFyby9NCkdlbmUvMk0KR2VuZXNpcy8yTQpHZW5ldC8yTQpHZW5ldmEvMjFNCkdlbmV2aWV2ZS8yTQpHZW5naGlzLzJNCkdlbm9hLzIxU00KR2VudG9vLzEyTQpHZW50cnkvMk0KR2VvL00KR2VvZmZyZXkvMk0KR2VvcmdlLzEyTVMKR2VvcmdldG93bi8yTQpHZW9yZ2V0dGUvMk0KR2VvcmdpYS8yTQpHZW9yZ2lhbi8xNU1TCkdlb3JnaW5hLzJNCkdlci8xTQpHZXJhbGQvMk0KR2VyYWxkaW5lLzI1TQpHZXJhcmQvMk0KR2VyYXJkby9NCkdlcmJlci8yTQpHZXJlLzJNCkdlcml0b2wvTQpHZXJtYW4vMTI1TVMKR2VybWFuaWMvMjUxTQpHZXJtYW55LzJNCkdlcm9uaW1vLzJNCkdlcnJ5LzJNCkdlcnNod2luLzJNCkdlcnRydWRlLzJNCkdlc3RhcG8vMlNNCkdldGhzZW1hbmUvMk0KR2V0dHkvMk0KR2V0dHlzYnVyZy8yTQpHZXd1cnp0cmFtaW5lci9NCkdoYW5hLzJNCkdoYW5haWFuLzUxCkdoYXRzLzJNCkdoYXp2YW5pZC9NCkdoZW50LzJNCkdoaWJlbGxpbmUvMU0KR2lhY29tZXR0aS9NCkdpYW5uaW5pLzJNCkdpYXVxdWUvTQpHaWJib24vMk0KR2liYnMvMk0KR2licmFsdGFyLzIxTVMKR2lic29uLzIxTQpHaWRlL00KR2lkZW9uLzIxTQpHaWVsZ3VkLzJNCkdpZW5haC8yTQpHaWwvMk0KR2lsYS8yMU0KR2lsYmVydC8yTQpHaWxiZXJ0by9NCkdpbGNocmlzdC8yTQpHaWxkYS8yTQpHaWxlYWQvMk0KR2lsZXMvMk0KR2lsZ2FtZXNoLzJNCkdpbGwvMjFNCkdpbGxlc3BpZS8yTQpHaWxsZXR0ZS8yTQpHaWxsaWFtLzJNCkdpbGxpYW4vMk0KR2lsbGlnYW4vMk0KR2lsbWFuLzIKR2lsbW9yZS8yTQpHaWxyb3kvMk0KR2luYS8yTQpHaW5nZXIvMk0KR2luZ3JpY2gvMk0KR2lubnkvMk0KR2luby9NCkdpbnNiZXJnLzJNCkdpbnNidXJnLzJNCkdpbnN1LzFNCkdpb3JnaW9uZS9NCkdpb3R0by9NCkdpb3Zhbm5pLzJNCkdpcmF1ZG91eC9NCkdpc2VsbGUvMk0KR2lzaC8yTQpHaXRIdWIvTQpHaXVsaWFuaS8yTQpHaXVzZXBwZS9NCkdpemEvMk0KR2svMgpHbGFkc3RvbmUvMjFNUwpHbGFkeXMvMk0KR2xhc2VyLzJNCkdsYXNnb3cvMk0KR2xhc3MvMk0KR2xhc3RvbmJ1cnkvMk0KR2xhc3dlZ2lhbi81MVNNCkdsYXhvL00KR2xlYXNvbi8yTQpHbGVuLzIxTQpHbGVuZGEvMk0KR2xlbmRhbGUvMgpHbGVubGl2ZXQvMU0KR2xlbm4vMk0KR2xlbm5hLzJNCkdsb3JpYS8yTQpHbG91Y2VzdGVyLzIxTQpHbG92ZXIvMTJNCkdub3N0aWMvNTFNCkdub3N0aWNpc20vMU0KR251UEcKR29hLzIxTQpHb2JpLzJNCkdvZC8yMU0KR29kYXJkLzJNCkdvZGRhcmQvMk0KR29kZWwvMk0KR29kaGVhZC8yTQpHb2RpdmEvMk0KR29kb3QvMk0KR29kc3BlZWQvMVNNCkdvZHRoYWFiL00KR29kdW5vdi9NCkdvZHppbGxhLzIxTQpHb2ViYmVscy8yTQpHb2VyaW5nLzJNCkdvZXRoYWxzL00KR29ldGhlLzJNCkdvZmYvMk0KR29nLzIxTQpHb2dvbC8yTQpHb2lhbmlhL00KR29sYW4vMk0KR29sY29uZGEvMjFNCkdvbGRhLzJNCkdvbGRiZXJnLzJNCkdvbGRlbi8yMU0KR29sZGllLzJNCkdvbGRpbG9ja3MvMk0KR29sZGluZy8yTQpHb2xkbWFuLzJNCkdvbGRzYm9yby8yTQpHb2xkc21pdGgvMk0KR29sZHdhdGVyLzJNCkdvbGR3eW4vMk0KR29sZ2kvMU0KR29sZ290aGEvMjFNCkdvbGlhdGgvMjFNCkdvbWV6LzJNCkdvbW9ycmFoLzJNCkdvbXBlcnMvMk0KR29tdWxrYS9NCkdvbmR3YW5hbGFuZC8yTQpHb256YWxlcy8yTQpHb256YWxlei8yTQpHb256YWxvLzJNCkdvb2QvMk0KR29vZGFsbC8yTQpHb29kZS8yTQpHb29kbWFuLzJNCkdvb2RyaWNoLzJNCkdvb2R3aWxsLzEyTQpHb29kd2luLzJNCkdvb2R5ZWFyLzJNCkdvb2dsZS8yNE0KR29vbGFnb25nL00KR29waGVyLzIKR29yYmFjaGV2LzJNCkdvcmRpYW4vNTJNCkdvcmRpbWVyL00KR29yZG9uLzIxTQpHb3JlLzJNCkdvcmVuLzJNCkdvcmV5LzJNCkdvcmdhcy8yTQpHb3Jnb24vMk0KR29yZ29uem9sYS8yTQpHb3JreS8yTQpHb3NwZWwvMU1TCkdvdGVib3JnL00KR290aC8xNTJNCkdvdGhhbS8yTQpHb3RoaWMvMjUxTVMKR290aHMvMQpHb3VkYS8yMVNNCkdvdWxkLzJNCkdvdW5vZC9NCkdvdmVybm9yLzEKR295YS8yTQpHci9CCkdyYWJsZS8yTQpHcmFjY2h1cy8yTQpHcmFjZS8yTQpHcmFjZWxhbmQvTQpHcmFjaWUvMk0KR3JhY2llbGEvTQpHcmFkeS8yTQpHcmFmZmlhcy8yTQpHcmFmdG9uLzJNCkdyYWhhbS8yTQpHcmFoYW1lLzJNCkdyYWlsL00KR3JhbW15LzFNCkdyYW1waWFucy8yTQpHcmFuYWRhLzJNCkdyYW50LzIxTQpHcmFzcy8yTQpHcmF2ZXMvMk0KR3JheS8yTQpHcmF5c2xha2UvTQpHcmVjaWFuLzUxTQpHcmVlY2UvMk0KR3JlZWsvNTIxNFNNCkdyZWVsZXkvMk0KR3JlZW4vMjUxU00KR3JlZW5lLzJNCkdyZWVubGFuZC8yTQpHcmVlbmxhbmRpYy81MgpHcmVlbnBlYWNlLzJNCkdyZWVuc2Jvcm8vMk0KR3JlZW5zbGVldmVzL00KR3JlZW5zcGFuLzJNCkdyZWVudmlsbGUvMk0KR3JlZW53aWNoLzJNCkdyZWVyLzJNCkdyZWcvMk0KR3JlZ2cvMk0KR3JlZ29yaWFuLzUxTQpHcmVnb3Jpby8yTQpHcmVnb3J5LzIxTQpHcmVuYWRhLzJNCkdyZW5hZGlhbi8xNU1TCkdyZW5hZGluZXMvMk0KR3JlbmRlbC8yTQpHcmVub2JsZS8yTQpHcmVzaGFtLzJNCkdyZXRhLzJNCkdyZXRjaGVuLzJNCkdyZXRlbC8yTQpHcmV0emt5LzIxTQpHcmV5LzIxTQpHcmllZy9NCkdyaWZmaW4vMk0KR3JpZmZpdGgvMk0KR3JpbWVzLzJNCkdyaW1tLzJNCkdyaW5jaC9NCkdyaXMvTQpHcm9teWtvL00KR3JvcGl1cy9NCkdyb3NzLzJNCkdyb3N6LzJNCkdyb3RpdXMvTQpHcm92ZXIvMk0KR3Jvem55LzIKR3J1bW1hbi9NCkdydW5keS8yTQpHcnVuZXdhbGQvMk0KR3J1cy8yTQpHcnV5ZXJlL1NNCkd1YWRhbGFqYXJhLzJNCkd1YWRhbGNhbmFsLzJNCkd1YWRhbHF1aXZpci8yTQpHdWFkYWx1cGUvMk0KR3VhZGVsb3VwZS8yTQpHdWFsbGF0aXJpL00KR3VhbS8yTQpHdWFtYW5pYW4vMTUKR3Vhbmdkb25nLzJNCkd1YW5nemhvdS8yTQpHdWFudGFuYW1vLzJNCkd1YXJhbmkvMk0KR3Vhcm5pZXJpLzJNCkd1YXRlbWFsYS8yTQpHdWF0ZW1hbGFuLzE1TVMKR3VheWFtYS8yTQpHdWF5YXF1aWwvMk0KR3VjY2kvNTIxTQpHdWVscGgvMTJNCkd1ZXJuc2V5LzIxTVMKR3VlcnJhLzJNCkd1ZXJyZXJvLzJNCkd1ZXZhcmEvMk0KR3VnZ2VuaGVpbS8yTQpHdWlhbmEvMk0KR3VpZG8vMjEKR3VpbGxlcm1vL00KR3VpbmVhLzJNCkd1aW5lYW4vNTFNUwpHdWluZXZlcmUvMk0KR3Vpbm5lc3MvMjFNCkd1aXlhbmcvMk0KR3VpemhvdS8yTQpHdWl6b3QvTQpHdWphcmF0LzJNCkd1amFyYXRpLzIxNU0KR3VqcmFud2FsYS8yTQpHdWxmcG9ydC8yTQpHdWxsYWgvMjE1TQpHdWxsaXZlci8yTQpHdW1iZWwvTQpHdW50aGVyLzJNCkd1b2ZlbmcvTQpHdXB0YS8yTQpHdXJraGEvMTVNCkd1cy8yTQpHdXN0YXYvMk0KR3VzdGF2by9NCkd1c3RhdnVzLzJNCkd1dGVuYmVyZy8yTQpHdXRocmllLzJNCkd1dGllcnJlei8yTQpHdXkvMjFNCkd1eWFuYS8yTQpHdXlhbmVzZS8xNU0KR3V6bWFuLzJNCkd3YWxpb3IvMk0KR3dlbi8yTQpHd2VuZG9saW5lLzJNCkd3ZW5kb2x5bi8yTQpHd3luLzJNCkd5cHN5LzEyNVNNCkgvMTUyTQpIQk8vMk0KSEJhc2UvTQpIREQvMQpIRE1JLzIKSERUVi8xCkhGLzE1TQpISFMvMjEKSEkvMjEKSElWLzFNCkhNLzEyCkhNTy8xTQpITVMvMQpIT1YvMQpIUC8yMU0KSFBWLzEKSFEvMTUyTQpIUi8xCkhSSC8xCkhTLzE1MgpIU0JDLzJNCkhTVC8xMgpIVC8xMgpIVE1MLzJNCkhUVFAvMgpIVUQvMTJNCkhhLzEyTQpIYWFzLzJNCkhhYmFra3VrLzJNCkhhYmVyLzJNCkhhZGFyLzJNCkhhZGVzLzJNCkhhZG9vcC9NCkhhZHJpYW4vMk0KSGFmaXovMk0KSGFnYXIvMk0KSGFnZXJzdG93bi8yTQpIYWdnYWkvMk0KSGFnaW9ncmFwaGEvMk0KSGFndWUvMk0KSGFobi8yTQpIYWlkYS8xMlNNCkhhaWZhLzJNCkhhaW5hbi8yTQpIYWlwaG9uZy8yTQpIYWl0aS8yTQpIYWl0aWFuLzEyNU1TCkhha2thLzUxMk0KSGFrbHV5dC8yTQpIYWwvMlNNCkhhbGRhbmUvMk0KSGFsZS8yTQpIYWxlYWthbGEvMk0KSGFsZXkvMk0KSGFsaWZheC8yTQpIYWxsLzIxTQpIYWxsZXkvMk0KSGFsbGlidXJ0b24vMk0KSGFsbGllLzJNCkhhbGxtYXJrLzJNCkhhbGxvd2Vlbi8yTVMKSGFsbHN0YXR0LzJNCkhhbG9uL00KSGFscy8yTQpIYWxzZXkvMk0KSGFtLzJNCkhhbWFuLzJNCkhhbWJ1cmcvMjFNUwpIYW1odW5nLzJNCkhhbWlsY2FyLzJNCkhhbWlsbC8yTQpIYW1pbHRvbi8yMU0KSGFtaWx0b25pYW4vNTFNCkhhbWl0aWMvNTJNCkhhbWxldC8yTQpIYW1saW4vMk0KSGFtbWFyc2tqb2xkL00KSGFtbWVyc3RlaW4vTQpIYW1tZXR0LzJNCkhhbW1vbmQvMjFNCkhhbW11cmFiaS8yTQpIYW1wc2hpcmUvMjFNCkhhbXB0b24vMk0KSGFtc3VuLzJNCkhhbi8yU00KSGFuY29jay8yTQpIYW5kZWwvMk0KSGFuZHkvMk0KSGFuZXkvMk0KSGFuZm9yZC8yTQpIYW5ndWwvMU0KSGFuZ3pob3UvMk0KSGFuay8yTQpIYW5uYS8yTQpIYW5uYWgvMjFNCkhhbm5pYmFsLzJNCkhhbm9pLzJNCkhhbm92ZXIvMk0KSGFub3Zlcmlhbi81MU0KSGFucy8yMU1OCkhhbnNlbC8yTQpIYW5zZW4vMk0KSGFuc29uLzJNCkhhbnVrYS8yCkhhbnVra2FoLzJNCkhhbnVra2Focy8yCkhhcHNidXJnLzIxTQpIYXJhcmUvMk0KSGFyYmluLzJNCkhhcmRpbi8yTQpIYXJkaW5nLzJNCkhhcmR5LzJNCkhhcmdyZWF2ZXMvMk0KSGFybGFuLzJNCkhhcmxlbS8yTQpIYXJsZXF1aW4vMk0KSGFybGV5LzIxTQpIYXJsaW5nZW4vMk0KSGFybG93LzJNCkhhcm1vbi8yTQpIYXJvbGQvMk0KSGFycGVyLzJNCkhhcnB5L1NNCkhhcnJlbGwvMk0KSGFycmlldC8yTQpIYXJyaWV0dC9NCkhhcnJpbmd0b24vMjFNCkhhcnJpcy8yTQpIYXJyaXNidXJnLzJNCkhhcnJpc29uLzJNCkhhcnJpc29uYnVyZy8yTQpIYXJyb2RzLzJNCkhhcnJ5LzJNCkhhcnQvMk0KSGFydGUvMk0KSGFydGZvcmQvMk0KSGFydGxpbmUvMk0KSGFydG1hbi8yTQpIYXJ2YXJkLzJNCkhhcnZleS8yTQpIYXNicm8vTQpIYXNpZGltLzFNCkhhc2tlbGwvMk0KSGFzdGluZ3MvMk0KSGF0ZmllbGQvMk0KSGF0aGF3YXkvMk0KSGF0c2hlcHV0L00KSGF0dGVyYXMvMk0KSGF0dGllLzJNCkhhdHRpZXNidXJnLzJNCkhhdXB0bWFubi9NCkhhdXNhLzEyTQpIYXVzZG9yZmYvNU0KSGF2YW5hLzIxTVMKSGF2YXJ0aS8xTQpIYXZlbC8yTQpIYXZvbGluZS9NCkhhdy8yCkhhd2FpaS8yTQpIYXdhaWlhbi81MTJTTQpIYXdraW5nLzJNCkhhd2tpbnMvMk0KSGF3a3MvMgpIYXd0aG9ybmUvMk0KSGF5LzJTTQpIYXlkZW4vMk0KSGF5ZG4vMk0KSGF5ZWsvMk0KSGF5ZXMvMk0KSGF5bmVzLzJNCkhheXMvMk0KSGF5d2FyZC8yMU0KSGF5d29vZC8yTQpIYXl3b3J0aC8yTQpIYXplbC8yTQpIYXpsZXRvbi8yTQpIYXpsaXR0L00KSGUvODJNCkhlYWQvMk0KSGVhcnN0LzJNCkhlYXRoLzJNUgpIZWF0aGVyLzJNCkhlYXZpc2lkZS8yTQpIZWIKSGViZS8yMU0KSGViZWkvMk0KSGViZXJ0LzJNCkhlYnJhaWMvNU0KSGVicmFpc20vMVNNCkhlYnJldy81MU1TCkhlYnJld3MvMjFNCkhlYnJpZGVzLzJNCkhlY2F0ZS8yTQpIZWN0b3IvMk0KSGVjdWJhLzJNCkhlZXAvMk0KSGVmbmVyLzJNCkhlZ2VsLzJNCkhlZ2VsaWFuLzUxTQpIZWdpcmEvMk0KSGVpZGVnZ2VyLzJNCkhlaWRlbGJlcmcvMk0KSGVpZGkvMk0KSGVpZmV0ei9NCkhlaWxvbmdqaWFuZy8yTQpIZWltbGljaC8yMTRNCkhlaW5lLzJNCkhlaW5la2VuLzIxTQpIZWlubGVpbi8yTQpIZWlucmljaC8yTQpIZWluei8yMU0KSGVpc2VuYmVyZy8yTQpIZWlzbWFuL00KSGVsZW4vMjFNCkhlbGVuYS8yTQpIZWxlbmUvMk0KSGVsZ2EvMk0KSGVsaWNvYmFjdGVyLzIKSGVsaWNvbi8yTQpIZWxpb3BvbGlzLzJNCkhlbGlvcy8yTQpIZWxsZW5lLzFTTQpIZWxsZW5pYy81Mk0KSGVsbGVuaXNtLzFNUwpIZWxsZW5pc3QvMQpIZWxsZW5pc3RpYy81TQpIZWxsZW5pemF0aW9uLzFNCkhlbGxlbml6ZS80TQpIZWxsZXIvMk0KSGVsbGVzcG9udC8yTQpIZWxsbWFuLzJNCkhlbG1ob2x0ei8yTQpIZWxvaXNlLzJNCkhlbHNpbmtpLzJNCkhlbHZldGlhbi81MQpIZWx2ZXRpdXMvTQpIZW1ldC8yTQpIZW1pbmd3YXkvMjRNCkhlbmFuLzJNCkhlbmNoLzJNCkhlbmRlcnNvbi8yTQpIZW5kcmljay8yTVMKSGVuZHJpY2tzLzJNCkhlbmRyaXgvMk0KSGVubGV5LzJNCkhlbm5lc3N5LzJNCkhlbnJpLzJNCkhlbnJpZXR0YS8yTQpIZW5yaWsvTQpIZW5yeS8yMU0KSGVuc2xleS8yTQpIZW5zb24vMk0KSGVwYnVybi8yTQpIZXBoYWVzdHVzLzJNCkhlcHBsZXdoaXRlLzJNCkhlcmEvMk0KSGVyYWNsZXMvMk0KSGVyYWNsaXR1cy8yTQpIZXJha2xlcy8yTQpIZXJiYXJ0LzJNCkhlcmJlcnQvMk0KSGVyY3VsYW5ldW0vMk0KSGVyY3VsZWFuLzUKSGVyY3VsZXMvMjFNCkhlcmRlci9NCkhlcmVmb3JkLzIxU00KSGVyZXJvLzEyTQpIZXJpYmVydG8vTQpIZXJtYW4vMk0KSGVybWFwaHJvZGl0dXMvMk0KSGVybWVzLzIxTQpIZXJtaW5pYS9NCkhlcm1pdGFnZS8yMU0KSGVybWl0ZS9NCkhlcm1vc2lsbG8vMk0KSGVybmFuZGV6LzJNCkhlcm9kLzJNCkhlcm9kb3R1cy8yTQpIZXJva3UvTQpIZXJyLzIxTUcKSGVycmVyYS8yTQpIZXJyaWNrLzJNCkhlcnJpbmcvMk0KSGVyc2NoZWwvMjFNCkhlcnNleS8yTQpIZXJzaGVsLzJNCkhlcnNoZXkvMk0KSGVydHovMjFNCkhlcnR6c3BydW5nLzJNCkhlcnplZ292aW5hLzJNCkhlcnpsLzJNCkhlc2h2YW4vMk0KSGVzaW9kLzJNCkhlc3BlcmlhLzJNCkhlc3BlcnVzLzJNCkhlc3MvMk0KSGVzc2UvMk0KSGVzc2lhbi81MTJNCkhlc3Rlci8yTQpIZXN0b24vMk0KSGV0dGllLzJNCkhld2l0dC8yTQpIZXdsZXR0LzJNCkhleWVyZGFobC9NCkhleXdvb2QvMk0KSGV6Ym9sbGFoLzJNCkhlemVraWFoLzJNCkhmL00KSGcvTQpIaWFsZWFoLzJNCkhpYXdhdGhhLzJNCkhpYmVybmlhLzJNCkhpYmVybmlhbi81MQpIaWNrbWFuLzIxTQpIaWNrb2svMk0KSGlja29yeS9NCkhpY2tzLzJNCkhpZXJvbnltdXMvMk0KSGlnYXNoaW9zYWthLzIKSGlnZ2lucy8yTQpIaWdobGFuZGVyLzEyU00KSGlnaGxhbmRzLzIKSGlnaG5lc3MvMU0KSGlnaHRzdG93bi9NCkhpbGFyaW8vMk0KSGlsYXJ5LzIxTQpIaWxiZXJ0LzJNCkhpbGRhLzJNCkhpbGRlYnJhbmQvMk0KSGlsZmlnZXIvTQpIaWxsLzJNCkhpbGxhcnkvMk0KSGlsbGVsLzJNCkhpbHRvbi8yTQpIaW1hbGF5YS8yU00KSGltYWxheWFuLzUxCkhpbWFsYXlhcy8yTQpIaW1tbGVyL00KSGluYXlhbmEvMk0KSGluZGVtaXRoL00KSGluZGVuYnVyZy8yTQpIaW5kaS8yNU0KSGluZHUvNTFTTQpIaW5kdWlzbS8yU00KSGluZHVzdGFuLzJNCkhpbmR1c3RhbmkvNTEyU00KSGluZXMvMk0KSGluZXN2aWxsZS8yTQpIaW50b24vMk0KSGlwcGFyY2h1cy8yTQpIaXBwb2NyYXRlcy8yTQpIaXBwb2NyYXRpYy81TQpIaXJhbS8yTQpIaXJvYnVtaS9NCkhpcm9oaXRvL00KSGlyb3NoaW1hLzIxTQpIaXNwYW5pYy81MVNNCkhpc3BhbmlvbGEvMk0KSGlzcy9NCkhpdGFjaGkvMjFNCkhpdGNoY29jay8yTQpIaXRsZXIvMjFNUwpIaXR0aXRlLzEyNVNNCkhtb25nLzEyNU0KSG8vMTJNCkhvYmFydC8yTQpIb2JiZXMvMk0KSG9iYnMvMk0KSG9ja25leS8yTQpIb2RnZS8yU00KSG9kZ2VzLzJNCkhvZGdraW4vMk0KSG9mZi8yTQpIb2ZmYS8yTQpIb2ZmbWFuLzJNCkhvZnN0YWR0ZXIvMk0KSG9nYW4vMk0KSG9nYXJ0aC8yMU0KSG9nd2FydHMvMk0KSG9oZW5sb2hlL00KSG9oZW5zdGF1ZmVuLzJNCkhvaGVuem9sbGVybi8yMTVNCkhvaGhvdC8yTQpIb2hva2FtLzJNCkhva2thaWRvLzIxTQpIb2t1c2FpL00KSG9sYmVpbi9NCkhvbGNvbWIvMk0KSG9sZGVuLzIxTQpIb2xkZXIvMk0KSG9saWRheS8yTQpIb2xpbmVzcy8xCkhvbGxhbmQvMlpTTVIKSG9sbGFuZGVyLzEyTQpIb2xsZXJpdGgvMk0KSG9sbGV5LzJNCkhvbGxpZS8yTQpIb2xsaXMvMk0KSG9sbG93YXkvMk0KSG9sbHkvMk0KSG9sbHl3b29kLzI1MTRNCkhvbG1hbi8yTQpIb2xtZXMvMk0KSG9sb2NhdXN0LzI0TQpIb2xvY2VuZS81Mk0KSG9sc3QvTQpIb2xzdGVpbi8yMVNNCkhvbHQvMk0KSG9tZXIvMk0KSG9tZXJpYy81TQpIb24vNQpIb25kYS8yTQpIb25kdXJhbi8xNU1TCkhvbmR1cmFzLzJNCkhvbmVja2VyL00KSG9uZXl3ZWxsLzJNCkhvbmcvMgpIb25pYXJhLzJNCkhvbm9sdWx1LzJNCkhvbm9yYWJsZS81CkhvbnNodS8yTQpIb29kLzJNCkhvb2tlLzJSTQpIb29rZXIvMk0KSG9vcGVyLzJNCkhvb3NpZXIvMTVNUwpIb290ZXJzL00KSG9vdmVyLzIxNE1TCkhvcGUvMk0KSG9wZXdlbGwvMk0KSG9waS8xMlNNCkhvcGtpbnMvMk0KSG9wcGVyLzJNCkhvcmFjZS8yTQpIb3JhY2lvL00KSG9yYXRpby8yTQpIb3JtZWwvTQpIb3JtdXovMk0KSG9ybi8yTQpIb3JuYmxvd2VyLzJNCkhvcm5lLzJNCkhvcm93aXR6LzIxTQpIb3J0aHkvTQpIb3J0b24vMk0KSG9ydXMvMk0KSG9zZWEvMk0KSG9zdC9TTQpIb3Rwb2ludC9NCkhvdHRlbnRvdC8xMlNNCkhvdWRpbmkvMjE0TQpIb3VtYS8xMk0KSG91c2UvMk0KSG91c21hbi8yTQpIb3VzdG9uLzJNCkhvdXlobmhubS8xTQpIb3ZoYW5lc3MvTQpIb3dhcmQvMk0KSG93ZS8yTQpIb3dlbGwvMk1TCkhvd2VsbHMvMk0KSG93cmFoLzIKSG95bGUvMk0KSHJvdGhnYXIvMk0KSHRzLzEKSHVhbmcvMk0KSHViYmFyZC8yTQpIdWJibGUvMjFNCkh1YmVpLzJNCkh1YmVyLzJNCkh1YmVydC8yTQpIdWNrLzJNCkh1ZGRlcnNmaWVsZC8yCkh1ZHNvbi8yMU0KSHVlcnRhLzJNCkh1ZXkvMjFNCkh1ZmYvMk0KSHVmZm1hbi8yTQpIdWdnaW5zLzJNCkh1Z2gvMk1TCkh1Z2hlcy8yTQpIdWdvLzIxTQpIdWd1ZW5vdC8xNU1TCkh1aS8xMk0KSHVpdHppbG9wb3RjaGxpL00KSHVsbC8yTQpIdW1iZXJ0by9NCkh1bWJvbGR0LzJNCkh1bWUvMk0KSHVtbWVsL00KSHVtbWVyLzEyTQpIdW1waHJleS8yU00KSHVtdmVlLzFNCkh1bi8xMlNNCkh1bmFuLzJNCkh1bmcvMk0KSHVuZ2FyaWFuLzUxU00KSHVuZ2FyeS8yTQpIdW5zcGVsbC9NCkh1bnQvMk1SCkh1bnRlci8yTQpIdW50aW5ndG9uLzJNCkh1bnRsZXkvMk0KSHVudHN2aWxsZS8yTQpIdXJkLzJNCkh1cmxleS8yTQpIdXJvbi8xMk0KSHVyc3QvMk0KSHVzLzJNCkh1c3NlaW4vMk0KSHVzc2VybC9NCkh1c3NpdGUvMU0KSHVzdG9uLzJNCkh1dGNoaW5zb24vMk0KSHV0dG9uLzJNCkh1dHUvMU0KSHV4bGV5LzJNCkh1eWdlbnMvMk0KSHlhZGVzLzJNCkh5ZGUvMk0KSHlkZXJhYmFkLzJNCkh5ZHJhLzJNCkh5bWVuLzJNCkh5cGVyaW9uLzJNCkh5dW5kYWkvMU0KSHovTQpJJ2QvfgpJJ2xsL34KSSdtL34KSSd2ZS9+CkkvODFNfgpJQS8yMQpJQk0vMjFNCklDQk0vMVNNCklDQy8yCklDVS8xMgpJRC8xMjQ1U00KSURFLzEKSUUvMjE1CklFRC8xCklFRUUvMgpJS0VBLzJNCklMLzEyCklNRi8yTQpJTUhPLwpJTU5TSE8vCklNTy8xMgpJTi8yMQpJTkcvTQpJTlJJCklOUy8xMgpJT1UvMU0KSVAvNTEyCklQQS8yMQpJUE8vMTQKSVEvMTVNCklSQS8yMVNNCklSQy8yMTQKSVJTLzIxTQpJU0JOLzEKSVNJUy8yCklTTy8yMStNCklTUC8xCklTUy8xMgpJVC8xNQpJVUQvMQpJVi81MVNNCklWRi8xCklhLzIKSWFjY29jYS9NCklhZ28vMk0KSWFuLzJNCklhcGV0dXMvMk0KSWJhZGFuLzJNCkliZXJpYS8yTQpJYmVyaWFuLzUxMk0KSWJpemEvMk0KSWJsaXMvMk0KSWJvLzIxTQpJYnNlbi8yTQpJY2Fobi9NCkljYXJ1cy8yTQpJY2UvMgpJY2VsYW5kLzJNUloKSWNlbGFuZGVyLzFNCkljZWxhbmRpYy8yMTVNCklkYS8yTQpJZGFoby8yMVNNCklkYWhvYW4vNTFNUwpJZGFob2VzCklleWFzdS9NCklnbmFjaW8vMk0KSWduYXRpdXMvMk0KSWdvci8yMU0KSWd1YXNzdS9NCklqc3NlbG1lZXIvTQpJa2UvMjFNCklraG5hdG9uL00KSWxhL00KSWxlbmUvMk0KSWxpYWQvMjFTTQpJbGwKSWxsaW5vaXMvMjFNCklsbGlub2lzYW4vNTFNUwpJbGx1bWluYXRpLzFNCklseXVzaGluL00KSW1lbGRhLzJNCkltaG90ZXAvMk0KSW1vZGl1bS9NCkltb2dlbmUvMk0KSW11cy8yTQpJbi9NCkluYS8yTQpJbmMvNQpJbmNhLzFTTQpJbmNob24vMk0KSW5jb3Jwb3JhdGVkCkluZC8yCkluZGVwZW5kZW5jZS8yTQpJbmRpYS8xMk0KSW5kaWFuLzUxMk1TCkluZGlhbmEvMk0KSW5kaWFuYW4vMTVTTQpJbmRpYW5hcG9saXMvMk0KSW5kaWFuaWFuLzEKSW5kaWVzLzJNCkluZGlvLzJNCkluZGlyYS8yTQpJbmRvY2hpbmEvMk0KSW5kb2NoaW5lc2UvNU0KSW5kb25lc2lhLzJNCkluZG9uZXNpYW4vNTFTTQpJbmRvcmUvMk0KSW5kcmEvMk0KSW5kdXMvMk0KSW5keS8yU00KSW5lcy9NCkluZXovMk0KSW5nZS8yTQpJbmdsZXdvb2QvMgpJbmdyYW0vMk0KSW5ncmVzL00KSW5ncmlkLzJNCklubm9jZW50LzJNCklubnNicnVjay8yCklub251L00KSW5xdWlzaXRpb24vMk0KSW5zdApJbnN0YWdyYW0vMjE0TQpJbnN0YW1hdGljLzFNCkludGVsLzJNCkludGVsc2F0L00KSW50ZXJuYXRpb25hbGUvMk0KSW50ZXJuZXQvMlNNCkludGVycG9sLzJNCkludWl0LzEyNU1TCkludWt0aXR1dC8yTQpJbnZhci9NCklvLzJNCklvbmVzY28vTQpJb25pYW4vNTEyTVMKSW9uaWMvNTIxU00KSW93YS8yMVNNCklvd2FuLzUxTVMKSXBoaWdlbmlhLzJNCklwc3dpY2gvMgpJcWFsdWl0LzJNCklxYmFsLzJNCklxdWl0b3MvMk0KSXIvTQpJcmEvMk0KSXJhbi8yTQpJcmFuaWFuLzE1MlNNCklyYXEvMk0KSXJhcWkvMTVNUwpJcmVsYW5kLzJNCklyZW5lLzJNCklyaXMvMk0KSXJpc2gvMjE1TVIKSXJpc2htYW4vMU0KSXJpc2htZW4vMU0KSXJpc2h3b21hbi8xTQpJcmlzaHdvbWVuLzFNCklya3V0c2svMk0KSXJtYS8yTQpJcm9xdW9pYW4vNTFTTQpJcm9xdW9pcy8xMk0KSXJyYXdhZGR5LzJNCklydGlzaC9NCklydmluLzJNCklydmluZS8yTQpJcnZpbmcvMk0KSXJ3aW4vMk0KSXNhYWMvMk0KSXNhYmVsLzJNCklzYWJlbGEvMk0KSXNhYmVsbGEvMjFNCklzYWJlbGxlLzJNCklzYWlhaC8yTQpJc2NhcmlvdC8yMU0KSXNmYWhhbi8yTQpJc2hlcndvb2QvMk0KSXNoaW0vMTJNCklzaG1hZWwvMjFNCklzaHRhci8yTQpJc2lhaC8yTQpJc2lkcm8vTQpJc2lzLzJNCklzbGFtLzJNUwpJc2xhbWFiYWQvMk0KSXNsYW1pYy81MU0KSXNsYW1pc20vMU0KSXNsYW1pc3QvMTVNCklzbGFtb3Bob2JpYS8xCklzbGFtb3Bob2JpYy81CklzbWFlbC8yTQpJc21haWwvMk0KSXNvbGRlLzJNCklzcGVsbC9NCklzcmFlbC8yU00KSXNyYWVsaS8xNTJTTQpJc3JhZWxpdGUvMTVNCklzc2FjLzJNCklzc2FjaGFyLzJNCklzdGFuYnVsLzJNCklzdXp1LzIxTQpJdC8yMQpJdGFpcHUvMk0KSXRhbC8xCkl0YWxpYW4vNTFTTQpJdGFsaWFuYXRlLzU0Ckl0YWx5LzJNCkl0YXNjYS8yTQpJdGhhY2EvMk0KSXRoYWNhbi81MU0KSXRvLzJNCkl2YS8yTQpJdmFuLzJNCkl2YW5ob2UvMk0KSXZlcy8yTQpJdm9yaWFuLzE1Ckl2b3J5LzJNCkl2eS8yMU0KSXlhci8yTQpJemFhay9NCkl6YW5hZ2kvMk0KSXphbmFtaS8yTQpJemhldnNrLzJNCkl6bWlyLzJNCkl6b2QvTQpJenZlc3RpYS9NCkovMTJNRApKQ1MvMgpKRC8xMgpKRksvMjE0TQpKUC8xMgpKUEVHLzIxNApKVi8xCkphY2svMjFNCkphY2tpZS8yTQpKYWNrbHluLzJNCkphY2tzb24vMjFNCkphY2tzb25pYW4vMTVNCkphY2tzb252aWxsZS8yTQpKYWNreS8yMU0KSmFjbHluLzJNCkphY29iLzIxU00KSmFjb2JlYW4vNTFNCkphY29iaS8yTQpKYWNvYmluLzE1TQpKYWNvYml0ZS8xTQpKYWNvYnMvMjFNCkphY29ic29uLzJNCkphY3F1YXJkLzJNCkphY3F1ZWxpbmUvMk0KSmFjcXVlbHluLzJNCkphY3F1ZXMvMk0KSmFjdXp6aS8xMjRNCkphZ2dlci8yTQpKYWdpZWxsb24vTQpKYWd1YXIvMjFNCkphaGFuZ2lyL00KSmFpbWUvMk0KSmFpbi81MTJNCkphaW5pc20vMk0KSmFpcHVyLzJNCkpha2FydGEvMk0KSmFrZS8yTQpKYW1hYWwvTQpKYW1haWNhLzJNCkphbWFpY2FuLzE1U00KSmFtYWwvMk0KSmFtYXIvMk0KSmFtZS9TTQpKYW1lbC9NCkphbWVzLzJNCkphbWVzdG93bi8yTQpKYW1pL00KSmFtaWUvMk0KSmFuLzJNCkphbmEvMk0KSmFuYWNlay9NCkphbmUvMjFNCkphbmVsbC9NCkphbmVsbGUvMk0KSmFuZXN2aWxsZS8yTQpKYW5ldC8yTQpKYW5ldHRlLzJNCkphbmljZS8yTQpKYW5pZS8yTQpKYW5pbmUvMk0KSmFuaXMvMk0KSmFuaXNzYXJ5L00KSmFuamF3ZWVkLzJNCkphbm5hLzJNCkphbm5pZS9NCkphbnNlbi8yTQpKYW5zZW5pc3QvNTFNCkphbnVhcnkvMlNNCkphbnVzLzJNCkphcC8yMTU0U00KSmFwYW4vMk0KSmFwYW5lc2UvNTEyTVMKSmFwdXJhL00KSmFyZWQvMk0KSmFybHNiZXJnLzIxTQpKYXJyZWQvMk0KSmFycmV0dC8yTQpKYXJyb2QvMk0KSmFydmlzLzJNCkphc21pbmUvMk0KSmFzb24vMk0KSmFzcGVyLzJNCkphdGFrYS9NCkphdmEvMjFTTQpKYXZhbmVzZS8xMk0KSmF2aWVyL00KSmF4YXJ0ZXMvMk0KSmF5LzIxTQpKYXlhcHVyYS8yTQpKYXlhd2FyZGVuZS9NCkpheWNlZS8xTVMKSmF5Y2Vlcy8xTQpKYXluZS8yTQpKYXlzb24vMk0KSmVhbi8yTQpKZWFuZXR0ZS8yTQpKZWFuaWUvMk0KSmVhbmluZS9NCkplYW5uZS8yTQpKZWFubmV0dGUvMk0KSmVhbm5pZS8yTQpKZWFubmluZS8yTQpKZWQvMk0KSmVkaS8xTQpKZWVwLzFNCkplZXZlcy8yTQpKZWZmLzJNCkplZmZlcmV5LzJNCkplZmZlcnNvbi8yMU0KSmVmZmVyc29uaWFuLzUxTQpKZWZmZXJ5LzJNCkplZmZyZXkvMk0KSmVmZnJ5LzJNCkplaG9zaGFwaGF0LzJNCkplaG92YWgvMjFNCkpla3lsbC8yTQpKZW5pZmVyLzJNCkplbmtpbnMvMjFNCkplbm5hLzJNCkplbm5lci8yTQpKZW5uaWUvMk0KSmVubmlmZXIvMk0KSmVubmluZ3MvMk0KSmVubnkvMjFNCkplbnNlbi8yTQpKZXBodGhhaC8yTQpKZXJhbGQvMk0KSmVyZW1pYWgvMjFNCkplcmVtaWFocy8xCkplcmVteS8yTQpKZXJpLzJNCkplcmljaG8vMjFNCkplcm1haW5lLzJNCkplcm9ib2FtLzIxTQpKZXJvbGQvTQpKZXJvbWUvMk0KSmVycmkvMk0KSmVycm9kL00KSmVycm9sZC8yTQpKZXJyeS8yMU0KSmVyc2V5LzIxTVMKSmVydXNhbGVtLzJNCkplc3MvMk0KSmVzc2UvMjFNCkplc3NpY2EvMk0KSmVzc2llLzIxTQpKZXN1aXQvMTVNUwpKZXN1cy8yMTRNCkpldHdheS9NCkpldy8xMjU0U00KSmV3ZWwvMk0KSmV3ZWxsLzJNCkpld2Vzcy8xTVMKSmV3aXNoLzUxMlBNCkpld3J5LzFNCkplemViZWwvMjFTTQpKaWFuZ3N1LzJNCkppYW5neGkvMk0KSmlkZGEvMk0KSmlsaW4vMk0KSmlsbC8yMU0KSmlsbGlhbi8yTQpKaW0vMk0KSmltZW5lei8yTQpKaW1taWUvMk0KSmltbXkvMjFNCkppbmFuLzJNCkppbm5haC8yTQpKaW5ueS8yTQpKaXZhcm8vMU0KSm8vMk0KSm9hbi8yMU0KSm9hbm4vMk0KSm9hbm5hLzJNCkpvYW5uZS8yTQpKb2FxdWluLzJNCkpvYi8yMVNNCkpvYnMvMjFNCkpvY2FzdGEvMk0KSm9jZWx5bi8yTQpKb2NrLzIxTQpKb2NrZXkvTQpKb2RpLzJNCkpvZGllLzJNCkpvZHkvMjFNCkpvZS8yMU0KSm9lbC8yTQpKb2V5LzJNCkpvZ2pha2FydGEvTQpKb2hhbm4vMk0KSm9oYW5uYS8yTQpKb2hhbm5lcy8xMk0KSm9oYW5uZXNidXJnLzJNCkpvaG4vMjFTTQpKb2huYXRoYW4vMk0KSm9obmF0aG9uLzJNCkpvaG5pZS9NCkpvaG5uaWUvMk0KSm9obm55LzIxTQpKb2hucy8yMU0KSm9obnNvbi8yMU0KSm9obnN0b24vMk0KSm9obnN0b3duLzJNCkpvbGVuZS8yTQpKb2xzb24vMk0KSm9uLzJNCkpvbmFoLzIxTQpKb25haHMvMQpKb25hcy8yTQpKb25hdGhhbi8yMU0KSm9uYXRob24vMk0KSm9uZXMvMk0KSm9uZXNib3JvLzJNCkpvbmkvMk0KSm9uc29uLzJNCkpvcGxpbi8yTQpKb3JkYW4vMk0KSm9yZGFuaWFuLzE1TVMKSm9yZ2UvMk0KSm9zZS8yTQpKb3NlZi9NCkpvc2VmYS9NCkpvc2VmaW5hL00KSm9zZXBoLzIxTQpKb3NlcGhpbmUvMjVNCkpvc2VwaHMvMQpKb3NlcGhzb24vMk0KSm9zZXBodXMvMk0KSm9zaC8yTQpKb3NodWEvMjFNCkpvc2lhaC8yTQpKb3NpZS8yTQpKb3N1ZS8yTQpKb3VsZS8yTQpKb3ZlLzJNCkpvdmlhbi81MTJNCkpveS8yTQpKb3ljZS8yTQpKb3ljZWFuLzUxTQpKb3luZXIvMk0KSnBuCkpyLzVNCkp1YW4vMk0KSnVhbmEvMk0KSnVhbml0YS8yTQpKdWFyZXovMk0KSnViYWwvMk0KSnVkYWVvCkp1ZGFoLzJNCkp1ZGFpYy81Ckp1ZGFpY2FsLzUKSnVkYWlzbS8yTVMKSnVkYXMvMjFNUwpKdWRkLzJNCkp1ZGUvMk0KSnVkZWEvMk0KSnVkZ2VzLzIKSnVkaXRoLzJNCkp1ZHNvbi8yTQpKdWR5LzIxTQpKdWdnZXJuYXV0LzJNCkp1bC8yCkp1bGVzLzJNCkp1bGlhLzJNCkp1bGlhbi8yNU0KSnVsaWFuYS8yTQpKdWxpYW5uZS8yTQpKdWxpZS8yTQpKdWxpZXQvMTJNCkp1bGlldHRlLzJNCkp1bGlvL00KSnVsaXVzLzJNCkp1bGxpYXJkLzJNCkp1bHkvMlNNCkp1bi8yTQpKdW5lLzJTTQpKdW5lYXUvMk0KSnVuZy8yTQpKdW5nZnJhdS8yTQpKdW5naWFuLzUxTQpKdW5pb3IvMlNNCkp1bmtlci8xU00KSnVuby8yTQpKdXBpdGVyLzIxTQpKdXJhc3NpYy81Mk0KSnVydWEvTQpKdXN0aWNlLzEyTQpKdXN0aW4vMk0KSnVzdGluZS8yTQpKdXN0aW5pYW4vMjVNCkp1dGxhbmQvMk0KSnV2ZW5hbC8yTQpLLzFTTU5HSgpLQi8xMk0KS0MvMjEKS0ZDLzJNCktHQi8yMU0KS0lBLzE1CktLSy8yTQpLTy8xNE0KS1AvMQpLUy8yNDEKS1kvMgpLYWFiYS8yTQpLYWJ1bC8yTQpLYWZrYS8yTQpLYWZrYWVzcXVlLzVNCkthZ29zaGltYS8yTQpLYWhsdWEvMU0KS2FodWx1aS8yTQpLYWlmZW5nLzJNCkthaWx1YS9NCkthaXNlci8xMk1TCkthaXRsaW4vMk0KS2FsYWhhcmkvMk0KS2FsYW1hem9vLzIxTQpLYWxhc2huaWtvdi8yTQpLYWxiL00KS2FsZXZhbGEvMk0KS2FsZ29vcmxpZS8yTQpLYWxpLzJNCkthbG15ay81MTJNCkthbWEvMk0KS2FtY2hhdGthLzJNCkthbWVoYW1laGEvMk0KS2FtcGFsYS8yTQpLYW1wdWNoZWEvMk0KS2FuLzJTTQpLYW5jaGVuanVuZ2EvMk0KS2FuZGFoYXIvMk0KS2FuZGluc2t5L00KS2FuZS8yTQpLYW5lb2hlLzJNCkthbmtha2VlLzJNCkthbm5hZGEvMU0KS2Fuby8yTQpLYW5wdXIvMk0KS2Fuc2FuLzUxTVMKS2Fuc2FzLzJNCkthbnQvMk0KS2FudGlhbi81MU0KS2FvaHNpdW5nLzJNCkthcG9zaS8yTQpLYXJhLzJNCkthcmFjaGkvMk0KS2FyYWdhbmRhLzJNCkthcmFrb3J1bS8yTQpLYXJhbWF6b3YvTQpLYXJlZW0vMk0KS2FyZW4vMjFNCkthcmVuaW5hL00KS2FyaS8yTQpLYXJpbi8yTQpLYXJpbmEvMk0KS2FybC8yTQpLYXJsYS8yTQpLYXJsb2ZmL00KS2Fyby8xMk0KS2Fyb2wvTQpLYXJyb28vMk0KS2FyeW4vMk0KS2FzYWkvTQpLYXNleS8yTQpLYXNobWlyLzIxU00KS2FzcGFyb3YvMk0KS2F0ZS8yTQpLYXRlbHluLzJNCkthdGhhcmluZS8yTQpLYXRoZXJpbmUvMk0KS2F0aGVyeW4vMk0KS2F0aGlhd2FyLzJNCkthdGhpZS8yTQpLYXRobGVlbi8yTQpLYXRobWFuZHUvMk0KS2F0aHJpbmUvTQpLYXRocnluLzJNCkthdGh5LzJNCkthdGllLzJNCkthdGluYS9NCkthdG1haS9NCkthdG93aWNlLzJNCkthdHJpbmEvMk0KS2F0eS8yMU0KS2F1YWkvMk0KS2F1Zm1hbi8yTQpLYXVuYXMvMk0KS2F1bmRhL00KS2F3YWJhdGEvTQpLYXdhc2FraS8yTQpLYXkvMjFNCktheWUvMk0KS2F5bGEvMk0KS2F6YWtoLzE1Mk0KS2F6YWtocy8xCkthemFraHN0YW4vMk0KS2F6YW4vMk0KS2F6YW50emFraXMvTQpLYi8xTQpLZWF0b24vMk0KS2VhdHMvMk0KS2Vjay8yTQpLZWVuYW4vMk0KS2Vld2F0aW4vTQpLZWlsbG9yLzJNCktlaXNoYS8yTQpLZWl0aC8yTQpLZWxsZXIvMk0KS2VsbGV5LzJNCktlbGxpLzJNCktlbGxpZS8yTQpLZWxsb2dnLzJNCktlbGx5LzJNCktlbHNleS8yTQpLZWx2aW4vMjFNCktlbWVyb3ZvLzJNCktlbXAvMk0KS2VtcGlzL00KS2VuLzJNCktlbmRhbGwvMk0KS2VuZHJhLzJNCktlbmRyaWNrLzJNCktlbm1vcmUvTQpLZW5uYW4vMk0KS2VubmVkeS8yTQpLZW5uZXRoLzJNCktlbm5ld2ljay8yTQpLZW5uaXRoL00KS2VubnkvMk0KS2Vub3NoYS8yTQpLZW50LzJNCktlbnRvbi8yTQpLZW50dWNraWFuLzUxTVMKS2VudHVja3kvMk0KS2VueWEvMk0KS2VueWFuLzE1U00KS2VueWF0dGEvTQpLZW55b24vMk0KS2VvZ2gvMk0KS2Vva3VrLzJNCktlcGxlci8yTQpLZXJlbnNreS9NCktlcmkvMk0KS2VybWl0LzJNCktlcm4vMk0KS2Vyb3VhYy8yTQpLZXJyLzJNCktlcnJpLzJNCktlcnJ5LzIxTQpLZXR0ZXJpbmcvMk0KS2V2ZW4vTQpLZXZpbi8yTQpLZXZsYXIvMU0KS2V2b3JraWFuLzJNCktld3BpZS9NCktleS8yTQpLZXluZXMvMk0KS2V5bmVzaWFuLzUxTQpLaGFiYXJvdnNrLzJNCktoYWNoYXR1cmlhbi8yTQpLaGFsaWQvMk0KS2hhbi8yTQpLaGFya292LzJNCktoYXJ0b3VtLzJNCktoYXl5YW0vTQpLaGF6YXIvMTUyTQpLaG1lci8yMTVNCktob2lraG9pLzEyTQpLaG9pc2FuLzIxTQpLaG9tZWluaS8yTQpLaG9yYW5hL00KS2hydXNoY2hldi8yTQpLaHVmdS8yTQpLaHVsbmEvMk0KS2h3YXJpem1pL00KS2h5YmVyLzJNCktpY2thcG9vLzEyTQpLaWRkLzJNCktpZWwvMk0KS2llcmtlZ2FhcmQvMk0KS2lldGgvTQpLaWV2LzIxTQpLaWdhbGkvMk0KS2lrdXl1LzEyTQpLaWxhdWVhLzJNCktpbGltYW5qYXJvLzJNCktpbGxlZW4vMk0KS2lscm95LzJNCktpbS8yTQpLaW1iZXJsZXkvMk0KS2ltYmVybHkvMk0KS2luZy8xMk0KS2luZ3Nwb3J0LzJNCktpbmdzdG9uLzJNCktpbmdzdG93bi8yTQpLaW5rbydzCktpbm5leS8yTQpLaW5zZXkvMjFNCktpbnNoYXNhLzJNCktpb3dhLzEyTVMKS2lwLzJNCktpcGxpbmcvMk0KS2lyYnkvMk0KS2lyY2hob2ZmLzJNCktpcmNobmVyLzJNCktpcmdoaXN0YW4vTQpLaXJnaGl6LzEyNU0KS2lyZ2hpemlhL00KS2lyaWJhdGkvMk0KS2lyaW55YWdhL00KS2lyay8yTQpLaXJrbGFuZC8yTQpLaXJrcGF0cmljay8yTQpLaXJvdi8yTQpLaXJzdGVuLzJNCktpc2FuZ2FuaS8yTQpLaXNoaW5ldi8yTQpLaXNsZXYvMk0KS2lzc2ltbWVlLzJNCktpc3Npbmdlci8yTQpLaXQvMk0KS2l0YWt5dXNodS8yTQpLaXRjaGVuZXIvMk0KS2l0dHkvMk0KS2l3YW5pcy8xTQpLbGFuLzJNCktsYW5zbWFuLzFNCktsYXVzLzJNCktsZWUvTQpLbGVlbmV4LzFNUwpLbGVpbi8yTQpLbGltdC9NCktsaW5lLzJNCktsaW5nb24vMjFNCktsb25kaWtlLzIxTVMKS21hcnQvTQpLbmFwcC8yTQpLbmVzc2V0LzJNCktuZ3dhcnJleWUvTQpLbmlja2VyYm9ja2VyLzFNCktuaWV2ZWwvTQpLbmlnaHQvMk0KS25vcGYvMk0KS25vc3Nvcy8yTQpLbm93bGVzLzJNCktub3gvMjFNCktub3h2aWxsZS8yTQpLbnVkc2VuLzJNCktudXRoLzJNCktudXRocy8yCktvYmUvMk0KS29jaC8yTQpLb2NoYWIvMk0KS29kYWNocm9tZS8yTQpLb2Rhay9NCktvZGFseS9NCktvZGlhay8xMk0KS29lc3RsZXIvMk0KS29oaW5vb3IvMk0KS29obC8yTQpLb2l6dW1pLzJNCktvamFrL00KS29rb21vLzJNCktvbHltYS8yTQpLb21tdW5pem1hL00KS29uZy8yTQpLb25nby8yNU0KS29ucmFkL00KS29vbnR6LzJNCktvcHBlbC9NCktvcmVhLzJNCktvcmVhbi81MjFTTQpLb3JuYmVyZy9NCktvcnkvMk0KS29yenlic2tpL00KS29zY2l1c2tvLzJNCktvc3N1dGgvMk0KS29zeWdpbi9NCktvdGxpbi8yTQpLb3VmYXgvTQpLb3dsb29uLzJNCktyLzJNCktyYWZ0LzJNCktyYWthdG9hLzJNCktyYWtvdy8yTQpLcmFtZXIvMjRNCktyYXNub2Rhci8yTQpLcmFzbm95YXJzay8yTQpLcmVicy8yTQpLcmVtbGluLzJNCktyZW1saW5vbG9naXN0LzEKS3JlbWxpbm9sb2d5LzEKS3Jlc2dlLzJNCktyaW5nbGUvTQpLcmlzLzJNCktyaXNobmEvMk0KS3Jpc2huYW11cnRpLzJNCktyaXN0YS8yTQpLcmlzdGVuLzJNCktyaXN0aS8yTQpLcmlzdGllLzJNCktyaXN0aW4vMk0KS3Jpc3RpbmEvMk0KS3Jpc3RpbmUvMk0KS3Jpc3RvcGhlci8yTQpLcmlzdHkvMk0KS3JvYy8yTQpLcm9nZXIvMk0KS3JvbmVja2VyLzJNCktyb3BvdGtpbi9NCktydWdlci8yTQpLcnVnZXJyYW5kLzFNCktydXBwLzJNCktyeXN0YWwvMk0KS3NoYXRyaXlhLzFNCkt1YmxhaS9NCkt1YnJpY2svMk0KS3Vobi8yTQpLdWlieXNoZXYvTQpLdWx0aHVtbS9NCkt1bm1pbmcvMk0KS3VvbWludGFuZy8yTQpLdXJkLzFNCkt1cmRpc2gvNTFNCkt1cmRpc3Rhbi8yTQpLdXJvc2F3YS8yTQpLdXJ0LzJNCkt1cnRpcy8yTQpLdXNjaC9NCkt1dHV6b3YvMk0KS3V3YWl0LzJNCkt1d2FpdGkvMTVTTQpLdXpuZXRzLzJNCkt1em5ldHNrLzJNCkt3YWtpdXRsLzFNCkt3YW4vMk0KS3dhbmdqdS8yTQpLd2FuemFhLzJNUwpLeS8xMk1ICkt5bGUvMk0KS3lvdG8vMk0KS3lyZ3l6c3Rhbi8yTQpLeXVzaHUvMk0KTCdBbW91ci9NCkwnRW5mYW50CkwnT3JlYWwvTQpMJ091dmVydHVyZS9NCkwvMTVNTgpMQS8xMgpMQU4vMU0KTEJKLzEyTQpMQy8xNQpMQ0QvMU0KTENNCkxEQy8xCkxFRC8xTQpMRy8xMk0KTEdCVC81MQpMSUZPLzUKTEwvMTUKTExCLzFNCkxMRC9NCkxORy8xCkxPR08KTFAvMTJNCkxQRy8xCkxQTi8xU00KTFNBVApMU0QvMU0KTFZOLzEKTGEvMjFTTQpMYWIvMTIKTGFiYW4vMk0KTGFicmFkb3IvMjFTTQpMYWJyYWRvcmVhbi81MQpMYWNleS8yTQpMYWNoZXNpcy8yMU0KTGFjdG9iYWNpbGx1cy8yCkxhY3kvMk0KTGFkb2dhLzJNCkxhZG9ubmEvTQpMYWR5LzEyTQpMYWR5c2hpcC9NUwpMYWZheWV0dGUvMk0KTGFmaXR0ZS8yTQpMYWdvcy8yTQpMYWdyYW5nZS8yTQpMYWdyYW5naWFuLzUxTQpMYWhvcmUvMk0KTGFpdXMvMk0KTGFqb3MvTQpMYWtlaXNoYS8yTQpMYWtlbGFuZC8yTQpMYWtld29vZC8yCkxha2lzaGEvMk0KTGFrb3RhLzEyTQpMYWtzaG1pLzJNCkxhbWFpc20vMVNNCkxhbWFyLzJNCkxhbWFyY2svMk0KTGFtYXplLzFNCkxhbWIvMjFNCkxhbWJlcnQvMk0KTGFtYm9yZ2hpbmkvMjFNCkxhbWJydXNjby8xTQpMYW1lbnRhdGlvbnMvMgpMYW1vbnQvMk0KTGFuYS8yTQpMYW5haS8yTQpMYW5jYXNoaXJlLzIxTQpMYW5jYXN0ZXIvMk0KTGFuY2UvMk0KTGFuY2Vsb3QvMk0KTGFuZC8yTQpMYW5kb24vMk0KTGFuZHJ5LzJNCkxhbmRzYXQvMU0KTGFuZHN0ZWluZXIvTQpMYW5lLzJNCkxhbmcvMk0KTGFuZ2VyaGFucy9NCkxhbmdsYW5kLzJNCkxhbmdsZXkvMk0KTGFuZ211aXIvMk0KTGFua2EvMk0KTGFua2FuLzUxTQpMYW5ueS8yTQpMYW5zaW5nLzJNCkxhbnpob3UvMk0KTGFvLzE1MlNNCkxhb2Nvb24vTQpMYW9zLzIxTQpMYW90aWFuLzEyNVNNCkxhcGxhY2UvMk0KTGFwbGFjaWFuLzUxCkxhcGxhbmQvMk1SCkxhcHAvMTI1U00KTGFyYS8yTQpMYXJhbWllLzJNCkxhcmRuZXIvMk0KTGFyZWRvLzJNCkxhcm91c3NlL00KTGFycnkvMk0KTGFycy8yTU4KTGFyc2VuLzJNCkxhcnNvbi8yTQpMYXNjYXV4LzJNCkxhc3NhLzJNCkxhc3Nlbi8yTQpMYXNzaWUvMk0KTGF0L00KTGF0YXNoYS9NCkxhdGVyYW4vMk0KTGF0aGFtLzJNCkxhdGluLzUyMU1SUwpMYXRpbmEvMTUyCkxhdGluby81MVNNCkxhdGlueC81MQpMYXRpc2hhLzJNCkxhdG9ueWEvMk0KTGF0b3lhLzJNCkxhdHJvYmUvMk0KTGF0dmlhLzJNCkxhdHZpYW4vNTFNUwpMYXVkLzJNUgpMYXVkZXIvMk0KTGF1ZS8yTQpMYXVuZHJvbWF0L00KTGF1cmEvMk0KTGF1cmFzaWEvMk0KTGF1cmVsLzEyTQpMYXVyZW4vMk0KTGF1cmVuY2UvMk0KTGF1cmVudC8yTQpMYXVyaS8yTQpMYXVyaWUvMk0KTGF2YWwvMk0KTGF2ZXJuLzJNCkxhdmVybmUvMk0KTGF2b2lzaWVyL00KTGF2b25uZS9NCkxhd2FuZGEvMk0KTGF3cmVuY2UvMk0KTGF3c29uLzJNCkxhd3Rvbi8yTQpMYXlhbW9uL00KTGF5bGEvMk0KTGF5dG9uLzJNCkxhemFyby9NCkxhemFydXMvMjE0TQpMZS8yU00KTGVhLzJNCkxlYWNoLzJNCkxlYWRiZWxseS9NCkxlYWgvMk0KTGVha2V5LzJNCkxlYW4vMk0KTGVhbmRlci8yTQpMZWFubi8yTQpMZWFubmEvMk0KTGVhbm5lLzJNCkxlYXIvMk0KTGVhcmpldC9NCkxlYXJ5LzJNCkxlYXZlbndvcnRoLzJNCkxlYmFuZXNlLzUxTQpMZWJhbm9uLzJNCkxlYmVzZ3VlL00KTGVibGFuYy8yTQpMZWRhLzJNCkxlZGVyYmVyZy9NCkxlZS8yTQpMZWVkcy8yTQpMZWVzYnVyZy8yTQpMZWV1d2VuaG9lay9NCkxlZXdhcmQvTQpMZWZ0LzIKTGVnZW5kcmUvMk0KTGVnZXIvMk0KTGVnaG9ybi8yMU0KTGVnby8xTQpMZWdyZWUvMk0KTGVobWFuLzJNCkxlaWJuaXovMk0KTGVpY2VzdGVyLzIxU00KTGVpZGVuLzJNCkxlaWYvTQpMZWlnaC8yTQpMZWlsYS8yTQpMZWlwemlnLzJNCkxlbGEvMk0KTGVsYW5kLzJNCkxlbGlhLzJNCkxlbWFpdHJlLzJNCkxlbXVlbC8yTQpMZW11cmlhLzJNCkxlbi8yTQpMZW5hLzJNCkxlbmFyZC8yTQpMZW5pbi8yTQpMZW5pbmdyYWQvMk0KTGVuaW5pc20vMU0KTGVuaW5pc3QvNTFNCkxlbm5vbi8yTQpMZW5ueS8yTQpMZW5vLzJNCkxlbm9pci8yTQpMZW5vcmEvMk0KTGVub3JlLzJNCkxlbnQvMTJTTU4KTGVudGVuLzVNCkxlby8yMVNNCkxlb2xhLzJNCkxlb21pbnN0ZXIvMk0KTGVvbi8yTQpMZW9uYS8yTQpMZW9uYXJkLzJNCkxlb25hcmRvLzIxTQpMZW9uY2F2YWxsby9NCkxlb25lbC9NCkxlb25pZC8xMk0KTGVvbmlkYXMvMk0KTGVvbm9yL00KTGVvcG9sZC8yTQpMZW9wb2xkby9NCkxlcGlkdXMvTQpMZXBrZS9NCkxlcHVzLzJNCkxlcm5lci9NCkxlcm95LzJNCkxlcy8yTQpMZXNhL00KTGVzbGV5LzJNCkxlc2xpZS8yTQpMZXNvdGhvLzJNCkxlc3NlcHMvMk0KTGVzc2llL00KTGVzdGVyLzJNCkxlc3RyYWRlL00KTGV0YS9NCkxldGhhL00KTGV0aGUvMk0KTGV0aWNpYS9NCkxldGl0aWEvMk0KTGV0dGVybWFuLzJNCkxldmFudC8yMU0KTGV2ZXNxdWUvMk0KTGV2aS8yU00KTGV2aWF0aGFuLzFNCkxldmluZS8yTQpMZXZpdGljdXMvMk0KTGV2aXR0LzJNCkxldnkvMk0KTGV3LzJNCkxld2luc2t5LzIxNE0KTGV3aXMvMk0KTGV3aXN0b24vMk0KTGV3aXN2aWxsZS8yTQpMZXhpbmd0b24vMk0KTGV4dXMvMjFNCkxoYXNhLzJNUwpMaG90c2UvMk0KTGkvMk1ZCkxpYW9uaW5nLzJNCkxpYmJ5LzJNCkxpYmVyYWNlL00KTGliZXJhbC8xNTIKTGliZXJpYS8yTQpMaWJlcmlhbi8xNVNNCkxpYnJhLzIxTVMKTGlicmVPZmZpY2UvTQpMaWJyZXZpbGxlLzJNCkxpYnJpdW0vMU0KTGlieWEvMk0KTGlieWFuLzUxMlNNCkxpY2h0ZW5zdGVpbi8yTQpMaWRpYS8yTQpMaWUvMk0KTGllYmVybWFuLzJNCkxpZWJmcmF1bWlsY2gvMU0KTGllY2h0ZW5zdGVpbi8yNVpNUgpMaWVjaHRlbnN0ZWluZXIvMU0KTGllZ2UvMk0KTGlldXQvMQpMaWxhLzJNCkxpbGlhLzJNCkxpbGlhbi8yTQpMaWxpYW5hLzJNCkxpbGl0aC8yTQpMaWxpdW9rYWxhbmkvTQpMaWxsZS8yTQpMaWxsaWFuLzJNCkxpbGxpZS8yTQpMaWxsaXB1dC8yTQpMaWxsaXB1dGlhbi8xNU1TCkxpbGx5LzIxTQpMaWxvbmd3ZS8yTQpMaWx5LzJNCkxpbWEvMTJNCkxpbWJhdWdoLzJNCkxpbWJvLzEKTGltYnVyZ2VyLzFNCkxpbW9nZXMvMk0KTGltb3VzaW4vMjFNCkxpbXBvcG8vMk0KTGluLzJNCkxpbmEvMk0KTGluY29sbi8yMU1TCkxpbmQvMk0KTGluZGEvMk0KTGluZGJlcmdoLzJNCkxpbmRzYXkvMk0KTGluZHNleS8yTQpMaW5keS8yMU0KTGlubmFldXMvMk0KTGlub3R5cGUvTQpMaW50b24vMk0KTGludXMvMk0KTGludXgvMk1TCkxpbndvb2QvMk0KTGlvbmVsLzJNCkxpcGl6emFuZXIvMU0KTGlwcGkvTQpMaXBwbWFubi8yTQpMaXBzY29tYi8yTQpMaXB0b24vMk0KTGlzYS8yMU0KTGlzYm9uLzIxTQpMaXNzYWpvdXMvMk0KTGlzdGVyLzJNCkxpc3RlcmluZS8yTQpMaXN0b24vMk0KTGlzenQvMk0KTGl0aHVhbmlhLzJNCkxpdGh1YW5pYW4vNTFNUwpMaXR0bGUvMk0KTGl0dG9uLzJNCkxpdmVybW9yZS8yTQpMaXZlcnBvb2wvMjFNCkxpdmVycHVkbGlhbi81MVNNCkxpdmlhLzJNCkxpdmluZ3N0b24vMk0KTGl2aW5nc3RvbmUvMk0KTGl2b25pYS8yTQpMaXZ5LzJNCkxpei8yTQpMaXphLzJNCkxpenppZS8yTQpMaXp6eS8yTQpManVibGphbmEvMk0KTGxld2VsbHluLzJNCkxsb3lkLzJNCkxuLzEKTG9hZmVyL1NNCkxvYmFjaGV2c2t5L00KTG9jaGludmFyLzJNCkxvY2tlLzJNCkxvY2tlYW4vNTFNCkxvY2toZWVkL00KTG9ja3dvb2QvMk0KTG9kZ2UvMk0KTG9kaS8yTQpMb2R6LzJNCkxvZXdlLzJNCkxvZXdpL00KTG9ld3MvTQpMb2dhbi8yTQpMb2hlbmdyaW4vTQpMb2lyZS8yTQpMb2lzLzJNCkxva2kvMk0KTG9sYS8yTQpMb2xpdGEvMjFNCkxvbGxhcmQvMU0KTG9sbG9icmlnaWRhLzJNCkxvbWJhcmQvMTI1TQpMb21iYXJkaS8yTQpMb21iYXJkeS8yTQpMb21lL00KTG9tcG9jLzJNCkxvbi8yTQpMb25kb24vMk1SWgpMb25kb25lci8xTQpMb25nLzJNCkxvbmdmZWxsb3cvMk0KTG9uZ21vbnQvMk0KTG9uZ3N0cmVldC8yTQpMb25ndWV1aWwvMgpMb25ndmlldy8yTQpMb25uaWUvMk0KTG9wZXovMk0KTG9yYS8yTQpMb3JhaW4vMk0KTG9yYWluZS9NCkxvcmQvMjFTTQpMb3Jkc2hpcC9TTQpMb3JlbGVpLzJNCkxvcmVuLzJNCkxvcmVuYS8yTQpMb3JlbmUvMk0KTG9yZW50ei8yTQpMb3JlbnR6aWFuLzUKTG9yZW56LzIxTQpMb3JlbnpvLzJNCkxvcmV0dGEvMk0KTG9yaS8yTQpMb3JpZS8yTQpMb3JuYS8yTQpMb3JyYWluZS8yTQpMb3JyZS9NCkxvcnJpZS9NCkxvcwpMb3QvMk0KTG90aGFyaW8vMVNNCkxvdHQvMk0KTG90dGllLzJNCkxvdS8yTQpMb3VlbGxhLzJNCkxvdWllLzJNCkxvdWlzLzIxTQpMb3Vpc2EvMk0KTG91aXNlLzJNCkxvdWlzaWFuYS8yTQpMb3Vpc2lhbmFuLzUxTVMKTG91aXNpYW5pYW4vNTFNUwpMb3Vpc3ZpbGxlLzJNCkxvdXJkZXMvMk0KTG91dnJlLzJNCkxvdmUvMTJNCkxvdmVjcmFmdC8yTQpMb3ZlbGFjZS8yMU0KTG93ZS8yNE0KTG93ZWxsLzJNCkxvd2VuYnJhdS9NCkxvd2VyeS8yTQpMb3dsYW5kcy8yCkxveWFuZy8yTQpMb3lkLzJNCkxveW9sYS8yTQpMci8KTHQvMQpMdGQvNTEKTHUvMk0KTHVhbmRhLzJNCkx1YW5uLzJNCkx1YmF2aXRjaGVyLzE1TQpMdWJib2NrLzJNCkx1YnVtYmFzaGkvMk0KTHVjYXMvMjRNCkx1Y2UvMk0KTHVjaWEvMk0KTHVjaWFuLzJNCkx1Y2lhbm8vMk0KTHVjaWVuL00KTHVjaWZlci8yTQpMdWNpbGUvMk0KTHVjaWxsZS8yTQpMdWNpbmRhLzJNCkx1Y2lvL00KTHVjaXRlLzJTTQpMdWNpdXMvMk0KTHVja25vdy8yTQpMdWNyZXRpYS8yTQpMdWNyZXRpdXMvMk0KTHVjeS8yTQpMdWRkaXRlLzFNUwpMdWRoaWFuYS8yTQpMdWR3aWcvMk0KTHVlbGxhLzJNCkx1ZnRoYW5zYS8yTQpMdWZ0d2FmZmUvMk0KTHVnZXIvMjFNCkx1Z29zaS9NCkx1aWdpLzJNCkx1aXMvMk0KTHVpc2EvTQpMdWtlLzJNCkx1bGEvMk0KTHVsbHkvTQpMdWx1LzJNCkx1bWllcmUvTQpMdW5hLzIxTQpMdXBlLzJNCkx1cGVyY2FsaWEvMk0KTHVwdXMvMk0KTHVyaWEvMk0KTHVzYWthLzJNCkx1c2l0YW5pYS8yTQpMdXRoZXIvMk0KTHV0aGVyYW4vNTFTTQpMdXRoZXJhbmlzbS8xTVMKTHV2cy9NCkx1eGVtYm91cmcvMlpNUgpMdXhlbWJvdXJnZXIvMU0KTHV4ZW1ib3VyZ2lhbi8xNQpMdXovMk0KTHV6b24vMk0KTHZvdi8yTQpMeVgvTQpMeWFsbHB1ci8yCkx5Y3JhLzFNCkx5Y3VyZ3VzLzJNCkx5ZGlhLzJNCkx5ZGlhbi8xMjVTTQpMeWVsbC8yTQpMeWxlLzJNCkx5bHkvTQpMeW1hbi8yTQpMeW1lLzIxTQpMeW5jaC8yTQpMeW5jaGJ1cmcvMk0KTHluZGEvMk0KTHluZG9uLzJNCkx5bmV0dGUvMk0KTHlubi8yTQpMeW5uZS8yTQpMeW5uZXR0ZS8yTQpMeW9uLzJTTQpMeW9ucy8yTQpMeXJhLzJNCkx5c2Vua28vMk0KTHlzaXN0cmF0YS8yMU0KTHlzb2wvMk0KTS8xMjVTTUdCCk1BLzUxMk0KTUFTSC8xCk1CLzEyNE0KTUJBLzFNCk1DLzE0MgpNQ0kvMjFNCk1ELzIxNU0KTURULzEyCk1FLzIxCk1FR08vUwpNRkEvMjFNCk1HTS8yMU0KTUh6LwpNSS8yMU0KTUlBLzUxMgpNSURJLzIxTQpNSVBTLzEyCk1JUlYvMQpNSVQvMjFNCk1NLzEyCk1OLzIxCk1PLzIxNQpNT09DLzEKTVAvMTI1TQpNUEVHLzIxCk1SSS8xNE0KTVMvMTJNCk1TRy8xMk0KTVNULzIxNE0KTVNXLzEKTVQvNTEyTQpNVFYvMk0KTVZQLzFNCk1XLzEyCk1hYWxveC9NCk1hYmVsLzJNCk1hYmxlLzJNCk1hYy8xMk0KTWFjQXJ0aHVyLzJNCk1hY0JyaWRlL00KTWFjRG9uYWxkLzJNCk1hY0xlaXNoL00KTWFjYW8vMk0KTWFjYXVsYXkvMk0KTWFjYmV0aC8yTQpNYWNjYWJlZXMvMjEKTWFjY2FiZXVzL00KTWFjZS8yTQpNYWNlZG9uLzJNCk1hY2Vkb25pYS8yTQpNYWNlZG9uaWFuLzUxU00KTWFjaC8yMU0KTWFjaGlhdmVsbGkvMjFNCk1hY2hpYXZlbGxpYW4vNTFNCk1hY2lhcy9NCk1hY2ludG9zaC8yMU0KTWFjay8yMU0KTWFja2VuemllLzIxTQpNYWNraW5hYy9NCk1hY2tpbmF3L00KTWFjbWlsbGFuLzIxTQpNYWNvbi8yMU0KTWFjdW1iYS9NCk1hY3kvMk0KTWFkYWdhc2Nhbi8xNVNNCk1hZGFnYXNjYXIvMjFNCk1hZGFtLzEKTWFkZGVuLzJNCk1hZGRveC8yTQpNYWRlaXJhLzIxU00KTWFkZWxlaW5lLzJNCk1hZGVsaW5lLzJNCk1hZGVseW4vMk0KTWFkZXJhLzJNCk1hZGdlLzJNCk1hZGlzb24vMjFNCk1hZG9ubmEvMjFTTQpNYWRyYXMvMjFNCk1hZHJpZC8yTQpNYWR1cmFpLzJNCk1hZS8yTQpNYWV0ZXJsaW5jay9NCk1hZmlhLzJNUwpNYWZpb3NvLzFNCk1hZ2RhbGVuYS8yTQpNYWdkYWxlbmUvMjFNCk1hZ2VsbGFuLzJNCk1hZ2VsbGFuaWMvNU0KTWFnZ2llLzJNCk1hZ2hyZWIvMk0KTWFnaS8yCk1hZ2lub3QvTQpNYWduaWZpY2F0LzIKTWFnbml0b2dvcnNrLzJNCk1hZ29nLzJNCk1hZ29vL00KTWFncml0dGUvTQpNYWdzYXlzYXkvMk0KTWFndXMKTWFneWFyLzIxNVNNCk1haGFiaGFyYXRhLzJNCk1haGFyYXNodHJhLzJNCk1haGF2aXJhL00KTWFoYXlhbmEvMk0KTWFoYXlhbmlzdC8xTQpNYWhkaS8yTQpNYWhmb3V6L00KTWFoaWNhbi8xU00KTWFobGVyLzJNCk1haS8yTQpNYWlkZW5mb3JtL00KTWFpZ3JldC9NCk1haWxlci8yTQpNYWlsbG9sL00KTWFpbWFuL00KTWFpbW9uaWRlcy8yTQpNYWluZS8yTVpSCk1haW5lci8xMk0KTWFpc2llLzJNCk1haXRyZXlhLzJNCk1hai8xCk1hamVzdHkvOApNYWpvci8yMU0KTWFqb3JjYS8yTQpNYWp1cm8vMk0KTWFrYXJpb3MvTQpNYWtlci8yTQpNYWxhYmFyLzIxTQpNYWxhYm8vMk0KTWFsYWNjYS8yMU0KTWFsYWNoaS8yTQpNYWxhZ2FzeS8xNU0KTWFsYW11ZC8yTQpNYWxhcHJvcC9NCk1hbGF3aS8yTQpNYWxhd2lhbi8xNVNNCk1hbGF5LzUxMk1TCk1hbGF5YS8yTQpNYWxheWFsYW0vMk0KTWFsYXlhbi8xNTJNUwpNYWxheXNpYS8yTQpNYWxheXNpYW4vNTEyTVMKTWFsY29sbS8yTQpNYWxkaXZlL01TCk1hbGRpdmVzLzJNCk1hbGRpdmlhbi8xNU1TCk1hbGRvbmFkby8yTQpNYWxlLzJNCk1hbGkvMjFNCk1hbGlhbi8xNVNNCk1hbGlidS8yTQpNYWxpbmRhLzJNCk1hbGlub3dza2kvMk0KTWFsbGFybWUvTQpNYWxsb21hcnMvTQpNYWxsb3J5LzJNCk1hbG9uZS8yTQpNYWxvcnkvTQpNYWxwbGFxdWV0L00KTWFscmF1eC9NCk1hbHRhLzJNCk1hbHRlc2UvNTEyTQpNYWx0aHVzLzJNCk1hbHRodXNpYW4vNTFTTQpNYW1lbHVrZS8xTQpNYW1ldC8yTQpNYW1pZS8yTQpNYW1vcmUvTQpNYW4vMk0KTWFuYWd1YS8yTQpNYW5hbWEvMk0KTWFuYXNzZWgvMk0KTWFuY2hlc3Rlci8yTQpNYW5jaHUvMTI1U00KTWFuY2h1cmlhLzJNCk1hbmNodXJpYW4vNTFNCk1hbmNpbmkvMk0KTWFuY3VuaWFuLzUxMk1TCk1hbmRhbGF5LzJNCk1hbmRhcmluLzFNCk1hbmRlbGEvMk0KTWFuZGVsYnJvdC8yMU0KTWFuZGV2aWxsZS8yTQpNYW5kaW5nby8yMU0KTWFuZHJlbGwvMk0KTWFuZHkvMk0KTWFuZXQvMk0KTWFuZnJlZC8yTQpNYW5oYXR0YW4vMjFTTQpNYW5pLzIxTQpNYW5pY2hlYW4vMTVNCk1hbmlsYS8yMVNNCk1hbml0b2JhLzJNCk1hbml0b3VsaW4vTQpNYW5rYXRvLzJNCk1hbmxleS8yTQpNYW5uLzIxR00KTWFubmhlaW0vMk0KTWFubmluZy8yTQpNYW5zZmllbGQvMk0KTWFuc29uLzJNCk1hbnRlY2EvMk0KTWFudGVnbmEvTQpNYW50bGUvMk0KTWFudWVsLzJNCk1hbnVlbGEvMk0KTWFueC81MTJNCk1hby8yTQpNYW9pc20vMVNNCk1hb2lzdC81MVNNCk1hb3JpLzEyNU1TCk1hcHBsZXRob3JwZS9NCk1hcHV0by8yTQpNYXIvMjFTTQpNYXJhLzIxTQpNYXJhY2FpYm8vMk0KTWFyYXQvTQpNYXJhdGhhLzEyTQpNYXJhdGhpLzIxNU0KTWFyYXRob24vMTJNCk1hcmMvMk0KTWFyY2VhdS8yTQpNYXJjZWwvMk0KTWFyY2VsaW5vL00KTWFyY2VsbGEvMk0KTWFyY2Vsby9NCk1hcmNoLzJNUwpNYXJjaS8yTQpNYXJjaWEvMk0KTWFyY2lhbm8vMk0KTWFyY2llLzJNCk1hcmNvLzJNUwpNYXJjb25pLzJNCk1hcmNvcy8yTQpNYXJjdXMvMk0KTWFyY3VzZQpNYXJjeS8yTQpNYXJkdWsvMk0KTWFyZ2FyZXQvMk0KTWFyZ2FyaXRhLzJNCk1hcmdhcml0by8yTQpNYXJnZS8yTQpNYXJnZXJ5LzJNCk1hcmdpZS8yTQpNYXJnby8yTQpNYXJnb3QvMgpNYXJncmV0L00KTWFyZ3JldGhlL00KTWFyZ3Vlcml0ZS8yTQpNYXJpLzIxU00KTWFyaWEvMk0KTWFyaWFEQi9NCk1hcmlhbi8yNTFNCk1hcmlhbmEvMlNNCk1hcmlhbmFzLzJNCk1hcmlhbm5lLzJNCk1hcmlhbm8vTQpNYXJpYmVsL00KTWFyaWNlbGEvTQpNYXJpZS8yTQpNYXJpZXR0YS8yTQpNYXJpbHluLzIxTQpNYXJpbi8yTQpNYXJpbmEvMk0KTWFyaW5lLzUxU00KTWFyaW8vMjFNCk1hcmlvbi8yTQpNYXJpcy8yTQpNYXJpc2EvMk0KTWFyaXNvbC9NCk1hcmlzc2EvMk0KTWFyaXRhaW4vTQpNYXJpdHphLzJNCk1hcml1cG9sLzIKTWFyaXVzLzJNCk1hcmpvcmllLzJNCk1hcmpvcnkvMk0KTWFyay8yMVNNCk1hcmthYi8yTQpNYXJraGFtLzJNCk1hcmtvdi8yTQpNYXJrcy8yTQpNYXJsYS8yTQpNYXJsYm9yby8yMU0KTWFybGJvcm91Z2gvMk0KTWFybGVuZS8yTQpNYXJsZXkvMk0KTWFybGluLzJNCk1hcmxvbi8yTQpNYXJsb3dlLzJNCk1hcm1hcmEvMk0KTWFybmUvMk0KTWFyb25pdGUvNTFNCk1hcnBsZS8yTQpNYXJxdWVzYXMvMU0KTWFycXVldHRlLzJNCk1hcnF1ZXovMk0KTWFycXVpcy8yTQpNYXJxdWl0YS9NCk1hcnJha2VzaC8yTQpNYXJyaW90dC8yTQpNYXJzLzIxTVMKTWFyc2FsYS8yMU0KTWFyc2VpbGxhaXNlLzJNUwpNYXJzZWlsbGVzLzIxTQpNYXJzaC8yTQpNYXJzaGEvMk0KTWFyc2hhbGwvMk0KTWFydGEvMk0KTWFydGVsLzJNCk1hcnRoYS8yMU0KTWFydGlhbC8yNTFNCk1hcnRpYW4vNTEyU00KTWFydGluLzJNCk1hcnRpbmEvMk0KTWFydGluZXovMk0KTWFydGluaXF1ZS8yTQpNYXJ0eS8yTQpNYXJ2YS9NCk1hcnZlbGwvTQpNYXJ2aW4vMk0KTWFyeC8yTQpNYXJ4aWFuLzUxCk1hcnhpc20vMVNNCk1hcnhpc3QvNTFTTQpNYXJ5LzJNCk1hcnlhbm4vMk0KTWFyeWFubmUvMk0KTWFyeWVsbGVuL00KTWFyeWxhbmQvMk1SCk1hcnlsYW5kZXIvMU0KTWFyeWxvdS8yTQpNYXJ5c3ZpbGxlLzJNCk1hc2FkYS9NCk1hc2FpLzEyTQpNYXNhcnlrL00KTWFzY2FnbmkvTQpNYXNlZmllbGQvMk0KTWFzZXJhdGkvMjFNCk1hc2VydS8yTQpNYXNoaGFkLzJNCk1hc29uLzIxTVMKTWFzb25pYy81TQpNYXNvbml0ZS8xTQpNYXNzLzEyTVMKTWFzc2FjaHVzZXR0cy8yTQpNYXNzYXNvaXQvTQpNYXNzZW5ldC9NCk1hc3NleS8yTQpNYXN0ZXIvMTJTCk1hc3RlckNhcmQvMU0KTWFzdGVycy8xMk0KTWF0aGVyLzJNCk1hdGhlc29uLzJNCk1hdGhldy8yU00KTWF0aGV3cy8yTQpNYXRoZXdzb24vMk0KTWF0aGlhcy8yTQpNYXRoaXMvMk0KTWF0aWxkYS8yMU0KTWF0aXNzZS9NCk1hdGxhYi9NCk1hdHQvMk0KTWF0dGVsLzJNCk1hdHRlcmhvcm4vMk0KTWF0dGhldy8yU00KTWF0dGhld3MvMk0KTWF0dGhpYXMvMk0KTWF0dGllLzJNCk1hdWQvMk0KTWF1ZGUvMk0KTWF1Z2hhbS8yTQpNYXVpLzJNCk1hdWxkaW4vMk0KTWF1cGFzc2FudC9NCk1hdXJhLzJNCk1hdXJlZW4vMk0KTWF1cmlhYy8yTQpNYXVyaWNlLzJNCk1hdXJpY2lvL00KTWF1cmluZS9NCk1hdXJpdGFuaWEvMk0KTWF1cml0YW5pYW4vMTVTTQpNYXVyaXRpYW4vNTEyU00KTWF1cml0aXVzLzJNCk1hdXJvL00KTWF1cm9pcy9NCk1hdXJ5YW4vNTFNCk1hdXNlci8xTQpNYXZpcy8yTQpNYXgvMk0KTWF4aW1pbGlhbi8yTQpNYXhpbmUvMk0KTWF4d2VsbC8yTQpNYXkvMlNNUgpNYXlhLzEyU00KTWF5YW4vNTEyTVMKTWF5ZXIvMk0KTWF5ZmFpci8yTQpNYXlmbG93ZXIvMk0KTWF5bmFyZC8yTQpNYXlvLzIxTQpNYXlwb2xlCk1heXJhL00KTWF5cy8xMk0KTWF5dGFnLzIxTQpNYXphbWEvTQpNYXphcmluLzJNCk1hemF0bGFuL00KTWF6ZGEvMjFNCk1hem9sYS9NCk1henppbmkvTQpNYi9NCk1iYWJhbmUvMk0KTWJpbmkvMk0KTWNBZGFtLzJNCk1jQWxsZW4vMk0KTWNCcmlkZS8yTQpNY0NhaW4vMk0KTWNDYWxsLzJNCk1jQ2FydGh5LzJNCk1jQ2FydGh5aXNtLzEyTQpNY0NhcnRuZXkvMk0KTWNDYXJ0eS8yTQpNY0NsYWluLzJNCk1jQ2xlbGxhbi8yTQpNY0NsdXJlLzJNCk1jQ29ubmVsbC8yTQpNY0Nvcm1pY2svMk0KTWNDb3kvMjFNCk1jQ3JheS8yTQpNY0N1bGxvdWdoLzJNCk1jRGFuaWVsLzJNCk1jRG9uYWxkLzJNCk1jRG9ubmVsbC8yTQpNY0Rvd2VsbC8yTQpNY0Vucm9lLzJNCk1jRmFkZGVuLzJNCk1jRmFybGFuZC8yTQpNY0dlZS8yTQpNY0dvdmVybi8yTQpNY0dvd2FuLzJNCk1jR3VmZmV5LzJNCk1jR3VpcmUvMk0KTWNIZW5yeS8yTQpNY0ludG9zaC8yMU0KTWNJbnR5cmUvMk0KTWNKb2IvMQpNY0theS8yTQpNY0tlZS8yTQpNY0tlbnppZS8yMU0KTWNLaW5sZXkvMk0KTWNLaW5uZXkvMk0KTWNLbmlnaHQvMk0KTWNMYXVnaGxpbi8yTQpNY0xlYW4vMk0KTWNMZW9kLzIxTQpNY0x1aGFuLzJNCk1jTWFob24vMk0KTWNNaWxsYW4vMk0KTWNOYW1hcmEvMk0KTWNOYXVnaHRvbi8yTQpNY05laWwvMk0KTWNQaGVyc29uLzJNCk1jUXVlZW4vMk0KTWNWZWlnaC8yTQpNZC8yTQpNZS8xMjgKTWVhZC8yTQpNZWFkZS8yTQpNZWFkb3dzLzJNCk1lYWdhbi8yTQpNZWFueS8yTQpNZWNjYS8yMU1TCk1lZGFuLzJNCk1lZGVhLzJNCk1lZGVsbGluLzJNCk1lZGZvcmQvMk0KTWVkaWEvMk0KTWVkaWNhaWQvMlNNCk1lZGljYXJlLzJTTQpNZWRpY2kvMk0KTWVkaW5hLzJNCk1lZGl0ZXJyYW5lYW4vNTIxTVMKTWVkdXNhLzJNCk1lZy8yMU0KTWVnYW4vMk0KTWVnaGFuLzJNCk1laWVyLzJNCk1laWdoZW4vTQpNZWlqaS81TQpNZWlyLzJNCk1lamlhLzJNCk1la29uZy8yTQpNZWwvMk0KTWVsYW5lc2lhLzJNCk1lbGFuZXNpYW4vNTFNCk1lbGFuaWUvMk0KTWVsYmEvMk0KTWVsYm91cm5lLzJNCk1lbGNoaW9yLzEyTQpNZWxjaGl6ZWRlay8yMU0KTWVsZW5kZXovMk0KTWVsaW5kYS8yTQpNZWxpc2EvTQpNZWxpc2FuZGUvTQpNZWxpc3NhLzJNCk1lbGxvbi8yTQpNZWxvZHkvMk0KTWVscG9tZW5lLzJNCk1lbHRvbi8yTQpNZWx2YS8yTQpNZWx2aWxsZS8yTQpNZWx2aW4vMk0KTWVtY2FjaGVkL00KTWVtbGluZy9NCk1lbXBoaXMvMk0KTWVuYW5kZXIvTQpNZW5jaXVzLzJNCk1lbmNrZW4vMk0KTWVuZGVsLzJNCk1lbmRlbGVldi8yTQpNZW5kZWxpYW4vNU0KTWVuZGVsc3NvaG4vMk0KTWVuZGV6LzJNCk1lbmRvY2luby8yTQpNZW5kb3phLzJNCk1lbmVsYXVzLzJNCk1lbmVsaWsvTQpNZW5lcy8yTQpNZW5nemkvMgpNZW5pZmVlLzJNCk1lbmthbGluYW4vMk0KTWVua2FyLzJNCk1lbmtlbnQvTQpNZW5uZW4vTQpNZW5ub25pdGUvMTVNUwpNZW5vbWluZWUvMTJNCk1lbm90dGkvTQpNZW5zYS8yTQpNZW50aG9sYXR1bS9NCk1lbnVoaW4vTQpNZW56aWVzLzJNCk1lcGhpc3RvLzIKTWVwaGlzdG9waGVsZXMvMjFNCk1lcmFrLzJNCk1lcmNhZG8vMk0KTWVyY2F0b3IvMU0KTWVyY2VkLzJNCk1lcmNlZGVzLzIxTQpNZXJjZXIvMk0KTWVyY2lhLzJNCk1lcmNrLzJNCk1lcmN1cm9jaHJvbWUvTQpNZXJjdXJ5LzIxU00KTWVyZWRpdGgvMk0KTWVyaW5vLzEyTQpNZXJsZS8yTQpNZXJsaW4vMk0KTWVybG90LzFNCk1lcm92aW5naWFuLzE1TQpNZXJyaWFtLzJNCk1lcnJpY2svMk0KTWVycmlsbC8yTQpNZXJyaW1hY2svMk0KTWVycml0dC8yTQpNZXJ0aGlvbGF0ZS9NCk1lcnRvbi8yTQpNZXJ2aW4vMk0KTWVzYS8yTQpNZXNhYmkvTQpNZXNtZXIvMk0KTWVzb2xpdGhpYy81MU0KTWVzb3BvdGFtaWEvMk0KTWVzb3BvdGFtaWFuLzE1Ck1lc296b2ljLzUyTQpNZXNzZXJzY2htaWR0LzJNCk1lc3NpYWVuL00KTWVzc2lhaC8yTQpNZXNzaWFocwpNZXNzaWFuaWMvNTEKTWVzc2lldXJzLzEKTWV0YWxsaWNhL00KTWV0YW11Y2lsL00KTWV0aG9kaXNtLzFTTQpNZXRob2Rpc3QvMTVTTQpNZXRodXNlbGFoLzIxTQpNZXR0ZXJuaWNoL00KTWV1c2UvMk0KTWV4LzIxCk1leGljYWxpLzJNCk1leGljYW4vMTVNUwpNZXhpY28vMk0KTWV5ZXIvMk1TCk1leWVyYmVlci9NCk1leWVycy8yTQpNZnVtZS9NCk1nLzFNCk1ncgpNaUcvMU0KTWlhLzJNCk1pYW1pLzIxTVMKTWlhcGxhY2lkdXMvMk0KTWljYWgvMk0KTWljYXdiZXIvMTRNCk1pY2gvMk0KTWljaGFlbC8yTQpNaWNoYWVsbWFzLzJNUwpNaWNoZWFsLzJNCk1pY2hlbC8yTQpNaWNoZWxhbmdlbG8vMk0KTWljaGVsZS8yTQpNaWNoZWxpbi8yTQpNaWNoZWxsZS8yTQpNaWNoZWxvYi8yTQpNaWNoZWxzb24vMk0KTWljaGlnYW4vMjFNCk1pY2hpZ2FuZGVyLzFNUwpNaWNoaWdhbml0ZS8xCk1pY2svMjFNCk1pY2tleS8xMk0KTWlja2llLzJNCk1pY2t5LzIxTQpNaWNtYWMvMVNNCk1pY3JvbmVzaWEvMk0KTWljcm9uZXNpYW4vMTVNCk1pY3Jvc29mdC8yMTRNCk1pZGFzLzIxTQpNaWRkbGV0b24vMk0KTWlkZGxldG93bi8yTQpNaWRlYXN0LzIKTWlkZWFzdGVybi81Ck1pZGxhbmQvMjVNUwpNaWR3YXkvMk0KTWlkd2VzdC8yTQpNaWR3ZXN0ZXJuLzVNUgpNaWd1ZWwvMk0KTWlrZS8xMk0KTWlraGFpbC8yTQpNaWtveWFuLzJNCk1pbGFncm9zL00KTWlsYW4vMk0KTWlsYW5lc2UvNTEyCk1pbGRyZWQvMk0KTWlsZXMvMk0KTWlsZm9yZC8yTQpNaWxrZW4vTQpNaWxsLzJTTVIKTWlsbGFyZC8yTQpNaWxsYXkvMk0KTWlsbGVyLzJNCk1pbGxldC8yTQpNaWxsaWNlbnQvMk0KTWlsbGllLzJNCk1pbGxpa2FuLzJNCk1pbGxzLzJNCk1pbG5lLzJNCk1pbG8vMk0KTWlsb3NldmljLzJNCk1pbHF1ZXRvYXN0LzUxTQpNaWx0aWFkZXMvMk0KTWlsdG9uLzJNCk1pbHRvbmlhbi81Ck1pbHRvbmljLzVNCk1pbHRvd24vMjFNCk1pbHdhdWtlZS8yTQpNaW1pLzJNCk1pbW9zYS8yTQpNaW4vMk0KTWluYW1vdG8vTQpNaW5kYW5hby8yTQpNaW5kb3JvLzJNCk1pbmR5LzJNCk1pbmVydmEvMk0KTWluZy8yMU0KTWluZ3VzLzJNCk1pbm4KTWlubmVhcG9saXMvMk0KTWlubmVsbGkvTQpNaW5uZXNvdGEvMk0KTWlubmVzb3Rhbi81MVNNCk1pbm5pZS8yTQpNaW5vYW4vNTEyTVMKTWlub2x0YS9NCk1pbm9zLzJNCk1pbm90LzJNCk1pbm90YXVyLzJNCk1pbnNrLzJNCk1pbnNreS8yTQpNaW50YWthLzJNCk1pbnVpdC9NCk1pbnV0ZW1hbi9NCk1pb2NlbmUvNTJNCk1pci8yTQpNaXJhLzJNCk1pcmFiZWF1L00KTWlyYWNoLzJNCk1pcmFuZGEvMjRNCk1pcmZhay8yTQpNaXJpYW0vMk0KTWlyby9NCk1pcnphbS8yTQpNaXNraXRvLzUxMk0KTWlzcy8xCk1pc3Npc3NhdWdhLzEyTQpNaXNzaXNzaXBwaS8yMU0KTWlzc2lzc2lwcGlhbi81MjFTTQpNaXNzb3VsYS8yTQpNaXNzb3VyaS8yTQpNaXNzb3VyaWFuLzUxTVMKTWlzc3kvMk0KTWlzdGFzc2luaS8xMk0KTWlzdGVyLzEKTWlzdHJlc3MvMQpNaXN0eS8yTQpNaXRjaC8yTQpNaXRjaGVsLzJNCk1pdGNoZWxsLzJNCk1pdGZvcmQvMk0KTWl0aHJhLzJNCk1pdGhyaWRhdGVzLzJNCk1pdHN1YmlzaGkvMU0KTWl0dGVycmFuZC9NCk1pdHR5L00KTWl0emkvMk0KTWl4dGVjLzE1Mk0KTWl6YXIvMk0KTWsvMQpNbGxlLzEKTW1lLzFTCk1uLzFNCk1uZW1vc3luZS8yTQpNby8yTQpNb2JpbC8yTQpNb2JpbGUvMk0KTW9idXR1L00KTW9kZXN0by8yTQpNb2RpZ2xpYW5pL00KTW9lLzJNCk1vZXQvTQpNb2dhZGlzaHUvMk0KTW9ndWwvMTJNUwpNb2hhY3MvTQpNb2hhbWVkLzJNCk1vaGFtbWFkLzJNCk1vaGFtbWVkYW4vMTVTTQpNb2hhbW1lZGFuaXNtLzJTTQpNb2hhdmUvMTJTTQpNb2hhd2svMTJTTQpNb2hlZ2FuLzEyCk1vaG8vMk0KTW9ob3JvdmljaWMvMk0KTW9pcmEvMk0KTW9pc2VzLzJNCk1vaXNleWV2L00KTW9qYXZlLzEyU00KTW9sZGF2aWEvMk0KTW9sZGF2aWFuLzEyNQpNb2xkb3ZhLzJNCk1vbGRvdmFuLzEyNQpNb2xpZXJlL00KTW9saW5hLzJNCk1vbGwvMk0KTW9sbGllLzJNCk1vbGx5LzIxTQpNb2xuYXIvMk0KTW9sb2NoLzJNCk1vbG9rYWkvMk0KTW9sb3Rvdi8yMTRNCk1vbHVjY2FzLzJNCk1vbWJhc2EvMk0KTW9uLzEyU00KTW9uYS8yTQpNb25hY2FuLzUxCk1vbmFjby8yTQpNb25kYWxlL00KTW9uZGF5LzFTTQpNb25kcmlhbi9NCk1vbmVnYXNxdWUvMTVTTQpNb25lcmEvMk0KTW9uZXNzZW4vMk0KTW9uZXQvMk0KTW9uZ29EQi9NCk1vbmdvbC8xNTJTTQpNb25nb2xpYS8yTQpNb25nb2xpYW4vNTFTTQpNb25nb2xpYy8yNU0KTW9uZ29sb2lkLzEKTW9uaWNhLzJNCk1vbmlxdWUvMk0KTW9uay8yTQpNb25tb3V0aC8yTQpNb25vbmdhaGVsYS8yMU0KTW9ucm9lLzJNCk1vbnJvdmlhLzJNCk1vbnNhbnRvLzJNCk1vbnNpZXVyLzFNCk1vbnNpZ25vci8xU00KTW9udC8yTQpNb250YWd1ZS8yTQpNb250YWlnbmUvMk0KTW9udGFuYS8yTQpNb250YW5hbi81MVNNCk1vbnRjYWxtLzJNCk1vbnRlLzJNCk1vbnRlbmVncmluLzUxTQpNb250ZW5lZ3JvLzJNCk1vbnRlcmV5LzI1TQpNb250ZXJyZXkvMk0KTW9udGVzcXVpZXUvTQpNb250ZXNzb3JpLzVNCk1vbnRldmVyZGkvTQpNb250ZXZpZGVvLzJNCk1vbnRlenVtYS8yTQpNb250Z29sZmllci8yMU0KTW9udGdvbWVyeS8yTQpNb250aWNlbGxvLzJNCk1vbnRveWEvMk0KTW9udHBlbGllci8yTQpNb250cmFjaGV0LzFNCk1vbnRyZWFsLzJNCk1vbnRzZXJyYXQvMk0KTW9udHkvMk0KTW9vZHkvMk0KTW9vZy8yMU0KTW9vbi8yTQpNb29uZXkvMk0KTW9vci8xMlNNCk1vb3JlLzJNCk1vb3Jpc2gvNU0KTW9yYWxlcy8yTQpNb3Jhbi8yTQpNb3JhdmlhLzJNCk1vcmF2aWFuLzUxTQpNb3JkcmVkLzJNCk1vcmUvMk0KTW9yZW5vLzJNCk1vcmdhbi8yMVNNCk1vcmdhbnRvd24vMk0KTW9yaWFydHkvMk0KTW9yaW4vMk0KTW9yaXNvbi8yTQpNb3JpdGEvMk0KTW9ybGV5LzJNCk1vcm1vbi8yMTVTTQpNb3Jtb25pc20vMlNNCk1vcm8vMjFNCk1vcm9jY2FuLzE1U00KTW9yb2Njby8yTQpNb3JvbmkvMk0KTW9ycGhldXMvMk0KTW9ycGh5L00KTW9ycmlzLzJNCk1vcnJpc29uLzJNCk1vcnJpc3Rvd24vMk0KTW9ycm93LzJNCk1vcnNlLzIxNE0KTW9ydC8yTQpNb3J0aW1lci8yTQpNb3J0b24vMk0KTW9zYWljLzVNCk1vc2Nvdy8yTQpNb3NlbGV5LzJNCk1vc2VsbGUvMjFNCk1vc2VzLzJNCk1vc2xleS8yTQpNb3NzLzJNCk1vc3VsLzJNCk1vdG9yb2xhLzFNCk1vdG93bi8yMU0KTW90cmluL00KTW90dC8yTQpNb3VsdG9uLzJNCk1vdW50LzJNCk1vdW50YmF0dGVuLzJNCk1vdW50aWUvMU1TCk1vdXNzb3Jnc2t5L00KTW91dGhlL00KTW91dG9uLzJNCk1vd2dsaS9NCk1vemFtYmljYW4vNTFTTQpNb3phbWJpcXVlLzIxTQpNb3phcnQvMTJNCk1vemlsbGEvTQpNci8xU00KTXMvMVMKTXNncgpNdC8xCk11YXdpeWEvTQpNdWJhcmFrLzJNCk11ZWxsZXIvMk0KTXVlbnN0ZXIvTVMKTXVnYWJlLzJNCk11aGFtbWFkLzJNCk11aGFtbWFkYW4vMTVNUwpNdWhhbW1hZGFuaXNtLzJTTQpNdWlyLzJNCk11amliLzJNCk11bGRlci8yTQpNdWxsZW4vMk0KTXVsbGVyLzJNCk11bGxpZ2FuLzJNCk11bGxpa2FuL00KTXVsbGlucy8yTQpNdWxyb25leS8yTQpNdWx0YW4vMk0KTXVsdGljcy8yCk11bWJhaS8yTQpNdW1mb3JkLzJNCk11bmNoLzJNCk11bmNoaGF1c2VuL00KTXVuY2llLzJNCk11bmljaC8yTQpNdW5vei8yTQpNdW5yby8yMU0KTXVuc3Rlci8yTQpNdXBwZXQvMU0KTXVyYXNha2kvMk0KTXVyYXQvMk0KTXVyY2hpc29uLzJNCk11cmNpYS8yCk11cmRvY2gvMk0KTXVyZnJlZXNib3JvLzJNCk11cmllbC8yTQpNdXJpbGxvL00KTXVyaW5lL00KTXVybWFuc2svMk0KTXVycGh5LzIxNE0KTXVycmF5LzJNCk11cnJpZXRhLzJNCk11cnJvdy8yTQpNdXJydW1iaWRnZWUvMk0KTXVzY2F0LzJNCk11c2Nvdml0ZS8xNU0KTXVzY292eS8yTQpNdXNlLzEyTQpNdXNoYXJyYWYvMk0KTXVzaWFsLzJNCk11c2tlZ29uLzJNCk11c2tvZ2VlLzEyTQpNdXNsaW0vMTVNUwpNdXNzb2xpbmkvMjVNCk11c3Nvcmdza3kvTQpNdXRzdWhpdG8vTQpNdXphay8yMTRNCk15U1FML00KTXlTcGFjZS8xTQpNeWFubWFyLzJNCk15Y2VuYWUvMk0KTXljZW5hZWFuLzUxMk0KTXllcnMvMk0KTXlsYXIvMk1TCk15bGVzLzJNCk15cmEvMk0KTXlyZGFsLzJNCk15cm5hLzJNCk15cm9uLzJNCk15cnRsZS8yTQpNeXNvcmUvMk0KTXlzdC9NCk4nRGphbWVuYS8yCk4vMU1ECk5BQUNQLzJNCk5BRlRBLzJNCk5BU0EvMk0KTkFTQ0FSLzJNCk5BU0RBUS8yTQpOQVRPLzJNCk5CLzUxMgpOQkEvMk0KTkJDLzIxNU0KTkJTCk5DLzIxNQpOQ0FBLzJNCk5DTy8xCk5ELzIxNQpORS8yMTVNCk5FSC8yCk5GLzI1MQpORkMvMjEKTkZMLzIxTQpOSC8yMTQ1Ck5ITC8xMk0KTklILzI1Ck5JTUJZLzE1Ck5KLzI1Ck5MUkIvMgpOTS8yNTE0Ck5PUkFELzJNCk5PVy8yMQpOUC8yMQpOUFIvMjFNCk5SLzUxMgpOUkEvMgpOUkMvMjE1Ck5TLzIxNQpOU0EvNTIxTQpOU0MvMjEKTlNGLzIxCk5TRlcvNQpOVC8yMQpOVi8yMTUKTlZJRElBL00KTlcvMjFNCk5XVC8yCk5ZLzIKTllDLzIKTllTRS8yCk5aLzEyCk5hLzJNCk5hYmlzY28vTQpOYWJva292L00KTmFkZXIvMk0KTmFkaWEvMk0KTmFkaW5lLzJNCk5hZ2FzYWtpLzJNCk5hZ295YS8yTQpOYWdwdXIvMk0KTmFneS8yTQpOYWh1YXRsLzEyTVMKTmFodW0vMk0KTmFpcGF1bC8yTQpOYWlyLzEyTQpOYWlyb2JpLzJNCk5haXNtaXRoLzJNCk5hbS8yTQpOYW1hdGgvTQpOYW1pYmlhLzJNCk5hbWliaWFuLzUxTVMKTmFtcGEvMk0KTmFuLzEyTQpOYW5hay9NCk5hbmNoYW5nLzJNCk5hbmN5LzJNCk5hbmV0dGUvMk0KTmFuamluZy8yTQpOYW5uaWUvMk0KTmFub29rL00KTmFuc2VuLzJNCk5hbnRlcy8yTQpOYW50dWNrZXQvMk0KTmFvbWkvMk0KTmFwYS8yTQpOYXBodGFsaS8yTQpOYXBpZXIvMk0KTmFwbGVzLzJNCk5hcG9sZW9uLzIxTVMKTmFwb2xlb25pYy81TQpOYXBzdGVyLzFNCk5hcmNpc3N1cy8yTQpOYXJtYWRhLzJNCk5hcm5pYS8yTQpOYXJyYWdhbnNldC8xCk5hcnJhZ2Fuc2V0dC8xMk0KTmFzaC8yMU0KTmFzaHVhLzEyTQpOYXNodmlsbGUvMjFNCk5hc3NhdS8yMU0KTmFzc2VyLzJNCk5hdC8yMU0KTmF0YWxpYS8yTQpOYXRhbGllLzJNCk5hdGFzaGEvMk0KTmF0Y2hlei8xMk0KTmF0ZS8yTU4KTmF0aGFuLzIxU00KTmF0aGFuaWVsLzJNCk5hdGhhbnMvMk0KTmF0aW9uLzJNCk5hdGlvbndpZGUvTQpOYXRpdml0eS8yTQpOYXVnYWh5ZGUvMU0KTmF1cnUvMk0KTmF1dGlsdXMvTQpOYXZham8vMTJTTQpOYXZham9lcy8xCk5hdmFycmUvMk0KTmF2YXJyby8yTQpOYXZyYXRpbG92YS9NCk5hdnkKTmF6YXJlbmUvNTEyTQpOYXphcmV0aC8yTQpOYXpjYS8yTQpOYXppLzE1MlNNCk5hemlzbS8xTVMKTmIvTQpOZC9NCk5kamFtZW5hL00KTmUvTQpOZVdTCk5lV1NlcwpOZWFsLzJNCk5lYW5kZXJ0aGFsLzUxU00KTmVhcG9saXRhbi81MTJNCk5lYi8yCk5lYnIvMgpOZWJyYXNrYS8yTQpOZWJyYXNrYW4vNTFNUwpOZWJ1Y2hhZG5lenphci8yMU0KTmVkLzJNCk5lZmVydGl0aS8yTQpOZWdldi8yTQpOZWdyZXNzLzFNUwpOZWdyaXR1ZGUKTmVncm8vMU1TCk5lZ3JvZXMvMQpOZWdyb2lkLzFTTQpOZWdyb3MvMk0KTmVoZW1pYWgvMk0KTmVocnUvMk0KTmVpbC8yTQpOZWxkYS8yTQpOZWxsLzJNCk5lbGxpZS8yTQpOZWxseS8yTQpOZWxzZW4vMk0KTmVsc29uLzJNCk5lbWJ1dGFsL00KTmVtZXNpcy8yTQpOZW8vMk0KTmVvZ2VuZS81Mk0KTmVvbGl0aGljLzI1MQpOZXBhbC8yTQpOZXBhbGVzZS81MjFNCk5lcGFsaS81MTJNUwpOZXB0dW5lLzJNCk5lcmVpZC8yTQpOZXJmL00KTmVyby8yMU0KTmVydWRhL00KTmVzY2FmZS8yTQpOZXNzZWxyb2RlLzJNCk5lc3RsZS8yTQpOZXN0b3IvMjFNCk5lc3Rvcml1cy9NCk5ldGZsaXgvNE0KTmV0aGVybGFuZGVyLzFTTQpOZXRoZXJsYW5kcy8yNTFNCk5ldHNjYXBlL00KTmV0dGllLzJNCk5ldHphaHVhbGNveW90bC9NCk5ldi8yTQpOZXZhLzJNCk5ldmFkYS8yTQpOZXZhZGFuLzE1U00KTmV2YWRpYW4vNTEKTmV2aXMvMk0KTmV2c2t5L00KTmV3YXJrLzJNCk5ld2J1cmdoLzJNCk5ld2Nhc3RsZS8yTQpOZXdmb3VuZGxhbmQvMjFNUlMKTmV3bWFuLzJNCk5ld3BvcnQvMk0KTmV3c3dlZWsvTQpOZXd0b24vMk0KTmV3dG9uaWFuLzUxTQpOZXhpcy9NCk5nYWxpZW1hL00KTmd1eWVuLzJNCk5pLzJNCk5pYWdhcmEvMjFNCk5pYW1leS8yTQpOaWJlbHVuZy8xTQpOaWNhZWEvMk0KTmljYXJhZ3VhLzJNCk5pY2FyYWd1YW4vNTFTTQpOaWNjb2xvL00KTmljZS8yTQpOaWNlbmUvNTFNCk5pY2hpcmVuLzJNCk5pY2hvbGFzLzJNCk5pY2hvbGUvMk0KTmljaG9scy8yTQpOaWNob2xzb24vMk0KTmljay8yTQpOaWNrZWxvZGVvbi8xTQpOaWNrbGF1cy9NCk5pY2tvbGFzLzJNCk5pY29iYXIvNTFNCk5pY29kZW11cy8yNE0KTmljb2xhLzJTTQpOaWNvbGFzLzJNCk5pY29sZS8yTQpOaWNvc2lhLzJNCk5pZWJ1aHIvMk0KTmllbHNlbi8yTQpOaWV0enNjaGUvMk0KTmlldmVzLzJNCk5pZ2VsLzIxTQpOaWdlci8yTQpOaWdlcmlhLzJNCk5pZ2VyaWFuLzE1TVMKTmlnZXJpZW4vMTVNCk5pZ2h0aW5nYWxlLzJNCk5pamluc2t5L00KTmlrZS8yMU0KTmlraXRhLzJNCk5pa2tlaS8xNU0KTmlra2kvMk0KTmlrb2xhaS8yTQpOaWtvbi9NCk5pbGUvMk0KTmltaXR6LzJNCk5pbXJvZC8yMU0KTmluYS8yMU0KTmluZXZlaC8yTQpOaW50ZW5kby8yMU0KTmlvYmUvMjFNCk5pcHBvbi8yTQpOaXBwb25lc2UvNTIxTQpOaXJlbmJlcmcvTQpOaXJ2YW5hL00KTmlzYW4vMk0KTmlzZWkvMU0KTmlzc2FuLzEyTQpOaXRhL00KTml2ZWEvTQpOaXhvbi8yMU0KTmtydW1haC9NCk5vLzEyU00KTm9Eb3ovTQpOb2FoLzIxTQpOb2JlbC8yMU0KTm9iZWxpc3QvMU1TCk5vYmxlLzJNCk5vZS8yTQpOb2VsLzJTTQpOb2VsbGUvMk0KTm9lbWkvMk0KTm9raWEvMjFNCk5vbGEvMk0KTm9sYW4vMk0KTm9tZS8yTQpOb25hLzJNCk5vb3RrYS8xMk0KTm9yYS8yTQpOb3JiZXJ0LzJNCk5vcmJlcnRvLzJNCk5vcmRpYy81MU1TCk5vcmVlbi8yTQpOb3Jmb2xrLzIxTQpOb3JpZWdhLzJNCk5vcm1hLzJNCk5vcm1hbC9NCk5vcm1hbi8xMjVNUwpOb3JtYW5kLzFNCk5vcm1hbmR5LzJNCk5vcnBsYW50LzFNCk5vcnJpcy8yTQpOb3JzZS81MTJNCk5vcnNlbWFuLzEyTQpOb3JzZW1lbi8xTQpOb3J0aC8yTQpOb3J0aGFtcHRvbi8yTQpOb3J0aGVhc3QvMk1TCk5vcnRoZXJuZXIvMU0KTm9ydGhyb3AvMk0KTm9ydGhydXAvMk0KTm9ydGhzLzIKTm9ydGh3ZXN0L1NNCk5vcnRvbi8yMU0KTm9ydwpOb3J3YXkvMjFNCk5vcndlZ2lhbi8xNVNNCk5vcndpY2gvMk0KTm9zZmVyYXR1LzFNCk5vc3RyYWRhbXVzLzIxTQpOb3R0aW5naGFtLzJNCk5vdWFrY2hvdHQvMk0KTm91bWVhL00KTm92LzJNCk5vdmEvMjFNCk5vdmFydGlzL00KTm92ZW1iZXIvMTJNUwpOb3Znb3JvZC8yTQpOb3ZvY2Fpbi8xTVMKTm92b2NhaW5lLzIKTm92b2t1em5ldHNrLzJNCk5vdm9zaWJpcnNrLzJNCk5veHplbWEvTQpOb3ljZS8yTQpOb3llcy8yTQpOcC9NCk51YmlhLzJNCk51Ymlhbi8xNU0KTnVrdWFsb2ZhLzJNCk51bWJlcnMvMk0KTnVuYXZ1dC8yTQpOdW5lei8yTQpOdW5raS8yTQpOdXJlbWJlcmcvMk0KTnVyZXlldi8yTQpOdXRyYVN3ZWV0L00KTnlRdWlsL00KTnlhc2EvTQpOeWVyZXJlLzJNCk8nQnJpZW4vMk0KTydDYXNleS8yTQpPJ0Nvbm5lbGwvMk0KTydDb25ub3IvMk0KTydEb25uZWxsLzJNCk8nSGFyYS8yTQpPJ0hpZ2dpbnMvMk0KTydLZWVmZmUvMk0KTydOZWlsLzJNCk8nTmVpbGwvMk0KTydSb3Vya2UvMk0KTydUb29sZS8yTQpPLzErNTJTTQpPQVMvMTJNCk9CLzE1Ck9DUi8yMTQKT0QvMTRTTQpPRS8yMTU0Ck9FRC8yCk9ILzIxCk9IU0EvTQpPSi8xNQpPSy8xNDUyU01ERwpPTUIvMk0KT04vMgpPUEVDLzJNCk9SLzcxMgpPUy8yNTFNCk9TSEEvMk0KT1Nlcy8xCk9ULzEyNQpPVEIvNQpPVEMvNTEyCk9UT0gvCk9haHUvMk0KT2FrbGFuZC8yTQpPYWtsZXkvMk0KT2F0ZXMvMk0KT2F4YWNhLzIxTQpPYi8yTQpPYmFkaWFoLzJNCk9iYW1hLzJNCk9iYW1hY2FyZS8yCk9iZXJsaW4vMk0KT2Jlcm9uLzJNCk9jYWxhLzJNCk9jYW1sL00KT2NjYW0vMk0KT2NjaWRlbnQvMgpPY2NpZGVudGFsLzI1TVMKT2NlYW5pYS8yTQpPY2VhbnNpZGUvMgpPY2VhbnVzLzJNCk9jaG9hLzJNCk9jdC8yTQpPY3RhdmlhLzJNCk9jdGF2aWFuLzJNCk9jdGF2aW8vTQpPY3RvYmVyLzIxNFNNCk9kZWxsLzJNCk9kZXIvMk0KT2Rlc3NhLzJNCk9kZXRzL00KT2Rpbi8yTQpPZGlzL00KT2RvbS8yTQpPZHlzc2V1cy8yTQpPZHlzc2V5LzJNCk9lZGlwYWwvNU0KT2VkaXB1cy8yTQpPZXJzdGVkL00KT2ZlbGlhL00KT2ZmZW5iYWNoL00KT2ZmaWNlTWF4L00KT2dib21vc2hvLzJNCk9nZGVuLzJNCk9naWx2eS8yTQpPZ2xldGhvcnBlLzJNCk9oaW8vMjVNCk9oaW9hbi8xNVNNCk9pc2UvMk0KT2ppYndhLzJTTQpPa2F5YW1hLzIKT2tlZWNob2JlZS8yTQpPa2VmZW5va2VlLzJNCk9raG90c2svMk0KT2tpbmF3YS8yTQpPa2luYXdhbi81MTIKT2tsYS8yCk9rbGFob21hLzJNCk9rbGFob21hbi8xNU0KT2t0b2JlcmZlc3QvMU0KT2xhLzJNCk9sYWYvMk0KT2xhanV3b24vTQpPbGF2L00KT2xkZW5idXJnLzIxTQpPbGRmaWVsZC8yTQpPbGRzbW9iaWxlLzIxTQpPbGR1dmFpLzJNCk9sZW4vTQpPbGVuZWsvMk0KT2xnYS8yTQpPbGlnb2NlbmUvNTJNCk9saW4vMk0KT2xpdmUvMk1SCk9saXZlci8yNU0KT2xpdmV0dGkvTQpPbGl2aWEvMk0KT2xpdmllci9NCk9sbGllLzJNCk9sbWVjLzFNCk9sbXN0ZWQvMk0KT2xzZW4vMk0KT2xzb24vMk0KT2x5bXBpYS8yU00KT2x5bXBpYWQvMU1TCk9seW1waWFuLzUxTVMKT2x5bXBpYy81MVNNCk9seW1waWNzLzIxTQpPbHltcHVzLzJNCk9tYWhhLzEyTVMKT21hbi8yTQpPbWFuaS8xNU1TCk9tYXIvMk0KT21heXlhZC81MU0KT21kdXJtYW4vMk0KT21uaXBvdGVudC8yCk9tc2svMk0KT25hc3Npcy9NCk9uZWFsL00KT25lZ2EvMk0KT25lZ2luL00KT25laWRhLzEyTVMKT25pb24vMU0KT25vLzJNCk9ub25kYWdhLzEyTVMKT25zYWdlci9NCk9udC8yCk9udGFyaWFuLzUxCk9udGFyaW8vMk0KT29ydC8yTQpPcGFsLzJNCk9wZWwvTQpPcGVuT2ZmaWNlL00KT3BoZWxpYS8yTQpPcGhpdWNodXMvMk0KT3BwZW5oZWltZXIvMjFNCk9wcG9zaXRpb24KT3ByYWgvMjRNCk9yYS8yTQpPcmFjbGUvMk0KT3Jhbi8yTQpPcmFuZ2UvMjVNCk9yYW5qZXN0YWQvMk0KT3JiaXNvbi8yTQpPcmRvdmljaWFuLzUyTQpPcmUvMk4KT3JlZy8yCk9yZWdvbi8yTQpPcmVnb25pYW4vMTVTTQpPcmVtLzJNCk9yZW8vMU0KT3Jlc3Rlcy8yTQpPcmllbnQvMjFNCk9yaWVudGFsLzUxTVMKT3JpZW50YWxpc20vMQpPcmluLzIxTQpPcmlub2NvLzJNCk9yaW9uLzJNCk9yaXlhLzIxTQpPcml6YWJhLzJNCk9ya25leS8yTQpPcmxhbmRvLzJNCk9ybGVhbnMvMjFNCk9ybG9uLzFNUwpPcmx5LzJNCk9ycGhldXMvMk0KT3JwaGljLzUxTQpPcnIvMk0KT3J0ZWdhLzJNCk9ydGhvZG94LzUxCk9ydGl6LzJNCk9ydmFsL00KT3J2aWxsZS8yTQpPcndlbGwvMk0KT3J3ZWxsaWFuLzVNCk9zLzFNCk9zYWdlLzJNUwpPc2FrYS8yTQpPc2JlcnQvTQpPc2Jvcm4vMk0KT3Nib3JuZS8yTQpPc2Nhci8xMk1TCk9zY2VvbGEvMk0KT3Nnb29kLzJNCk9zaGF3YS8yTQpPc2hrb3NoLzJNCk9zaXJpcy8yTQpPc2xvLzJNCk9zbWFuLzJNCk9zdHJvZ290aC8xTQpPc3R3YWxkL00KT3N2YWxkby9NCk9zd2FsZC8yTQpPdGhlbGxvLzJNCk90aXMvMk0KT3R0YXdhLzIxU00KT3R0by8yTQpPdHRvbWFuLzE1TQpPdWFnYWRvdWdvdS8yTQpPdWlqYS8xTVMKT3ZpZC8yTQpPd2VuLzJTTQpPd2Vucy8yTQpPd2Vuc2Jvcm8vMk0KT3hmb3JkLzIxU00KT3huYXJkLzJNCk94b25pYW4vNTFNCk94dXMvMk0KT3h5Y29udGluL00KT3ovMjFNCk96YXJrLzIxTVMKT3phcmtzLzEyTQpPenltYW5kaWFzLzFNCk96emllLzIxNU0KUC8xNTJNTgpQQS8yMTVNClBBQy8xMk0KUEFSQy9TClBBU0NBTApQQlMvMTJNClBCWC8xClBDLzUxMjRTTQpQQ0IvMQpQQ01DSUEvMgpQQ1AvMU0KUEQvMTIKUERGLzIxNApQRFEvClBEVC8yMQpQRS8yMQpQRVQvMTJNClBGQy8xClBHLzUxMgpQR1AvMTIKUEhQLzEyTQpQSU4vMQpQSidzClBMTy8yMU0KUE0vMTRTTURHClBNUy8xMjQ1TQpQTy8xNQpQT1cvMU0KUFAvMTIKUFBTLzEKUFIvMjEKUFJDLzIxTQpQUk8vMQpQUy8yMTVNClBTVC8yMU0KUFQvMTI1ClBUQS8xNE0KUFRPLzIxClBWQy8xTQpQVy8yMQpQWC8xClBhLzFNClBhYXIvMk0KUGFibG8vMk0KUGFibHVtLzJNClBhYnN0LzJNClBhY2UvMk0KUGFjaGVjby8yTQpQYWNpZmljLzIxNU0KUGFjaW5vLzJNClBhY2thcmQvMk0KUGFkYW5nLzIKUGFkZXJld3NraS8yTQpQYWRpbGxhLzJNClBhZ2FuaW5pLzFNClBhZ2UvMk0KUGFnbGlhL00KUGFobGF2aS8yTQpQYWlnZS8yTQpQYWluZS8yTQpQYWl1dGUvMVNNClBha2lzdGFuLzJNClBha2lzdGFuaS8xNVNNClBhbGVtYmFuZy8yTQpQYWxlb2NlbmUvNTJNClBhbGVvZ2VuZS81Mk0KUGFsZW9saXRoaWMvMjVNClBhbGVvem9pYy81Mk0KUGFsZXJtby8yTQpQYWxlc3RpbmUvMk0KUGFsZXN0aW5pYW4vNTFTTQpQYWxlc3RyaW5hL00KUGFsZXkvMk0KUGFsaWtpci8yTQpQYWxpc2FkZXMvMk0KUGFsbGFkaW8vTQpQYWxtZGFsZS8yTQpQYWxtZXIvMk0KUGFsbWVyc3Rvbi8yTQpQYWxtb2xpdmUvTQpQYWxteXJhLzJNClBhbG9tYXIvMk0KUGFtLzJNClBhbWVsYS8yTQpQYW1pcnMvMU0KUGFtcGVycy8xTQpQYW4vMjFNClBhbmFtYS8yMVNNClBhbmFtYW5pYW4vMTVNUwpQYW5hc29uaWMvMk0KUGFuZG9yYS8yTQpQYW5nYWVhLzJNClBhbmtodXJzdC8yTQpQYW5tdW5qb20vMk0KUGFuc3kvMk0KUGFudGFncnVlbC9NClBhbnRhbG9vbi9NClBhbnRoZW9uLzJNClBhbnphLzJNClBhcmFjZWxzdXMvMk0KUGFyYWNsZXRlLzJNClBhcmFkaXNlLzIKUGFyYWd1YXkvMk0KUGFyYWd1YXlhbi8xNU1TClBhcmFseW1waWMvNVMKUGFyYW1hcmliby8yTQpQYXJhbW91bnQvMk0KUGFyYW5hL00KUGFyY2hlZXNpL00KUGFyZXRvLzJNClBhcmlzLzJNClBhcmlzaWFuLzE1TVMKUGFyay8yU01SClBhcmtlci8yMU0KUGFya2Vyc2J1cmcvMk0KUGFya2luc29uLzJNClBhcmtpbnNvbmlzbS8xClBhcmttYW4vMk0KUGFya3MvMk0KUGFybGlhbWVudC8yTQpQYXJtZW5pZGVzLzIKUGFybWVzYW4vNTFNUwpQYXJuYXNzdXMvMk1TClBhcm5lbGwvMk0KUGFyci8yTQpQYXJyaXNoLzJNClBhcnNpZmFsL00KUGFyc29ucy8yTQpQYXJ0aGVub24vMk0KUGFydGhpYS8yTQpQYXNhZGVuYS8yTQpQYXNjYWdvdWxhLzJNClBhc2NhbC8yU00KUGFzY28vMk0KUGFzcXVhbGUvMk0KUGFzc2lvbi8yU00KUGFzc292ZXIvMk1TClBhc3Rlcm5hay8yTQpQYXN0ZXVyLzJNClBhdC8yMU0KUGF0YWdvbmlhLzJNClBhdGFnb25pYW4vNTFNClBhdGUvMk0KUGF0ZWwvMk0KUGF0ZXJzb24vMk0KUGF0bmEvMk0KUGF0cmljYS9NClBhdHJpY2UvMk0KUGF0cmljaWEvMk0KUGF0cmljay8yTQpQYXRzeS8yTQpQYXR0ZXJzb24vMk0KUGF0dGkvMk0KUGF0dG9uLzJNClBhdHR5LzJNClBhdWwvMkdNClBhdWxhLzJNClBhdWxldHRlLzJNClBhdWxpLzJNClBhdWxpbmUvMjVNClBhdWxpbmcvMjFNClBhdmFyb3R0aS9NClBhdmxvdi8yNE0KUGF2bG92YS8yMU0KUGF2bG92aWFuLzVNClBhd25lZS8yNTFTTQpQYXlQYWwvMjE0TQpQYXluZS8yTQpQYi9NClBkL00KUGVhYm9keS8yTQpQZWFjZS8yMU0KUGVhbGUvMk0KUGVhcmwvMk0KUGVhcmxpZS9NClBlYXJzb24vMk0KUGVhcnkvMk0KUGVjaG9yYS8yTQpQZWNrLzJNClBlY2tpbnBhaC8yTQpQZWNvcy8yTQpQZWRyby8xMk0KUGVlbC8yTQpQZWcvMk0KUGVnYXN1cy8yMU1TClBlZ2d5LzJNClBlaS8yTQpQZWlwaW5nLzJNClBla2luZy8yU00KUGVraW5nZXNlLzIxNVNNClBlbGUvMk0KUGVsZWUvMk0KUGVsb3Bvbm5lc2UvMk0KUGVtYnJva2UvMk0KUGVuLzJNClBlbmEvMk0KUGVuZGVyZWNraS9NClBlbmVsb3BlLzJNClBlbm4vMk0KUGVubmEvMgpQZW5uZXkvMk0KUGVubmluZ3Rvbi8yTQpQZW5uc3lsdmFuaWEvMk0KUGVubnN5bHZhbmlhbi8xNU1TClBlbm55LzJNClBlbm56b2lsL00KUGVuc2Fjb2xhLzIxTQpQZW50YWdvbi8yTQpQZW50YXRldWNoLzJNClBlbnRheC9NClBlbnRlY29zdC8yU00KUGVudGVjb3N0YWwvNTFNUwpQZW50ZWNvc3RhbGlzbS8xClBlbnRpdW0vMVNNClBlb3JpYS8yMU0KUGVwaW4vMk0KUGVwc2kvMjFNClBlcHlzLzJNClBlcXVvdC8xMk0KUGVyY2hlcm9uLzFNClBlcmNpdmFsLzJNClBlcmN5LzJNClBlcmVsbWFuLzJNClBlcmV6LzJNClBlcmljbGVhbi81TQpQZXJpY2xlcy8yTQpQZXJraW5zLzJNClBlcmwvMlNNClBlcm0vMk0KUGVybWFsbG95L00KUGVybWlhbi8xNTJNClBlcm5vZC8xTQpQZXJvbi8yTQpQZXJvdC8yTQpQZXJyaWVyLzJNClBlcnJ5LzJSTQpQZXJzZWlkLzFNClBlcnNlcGhvbmUvMk0KUGVyc2Vwb2xpcy8yTQpQZXJzZXVzLzJNClBlcnNoaW5nLzJNClBlcnNpYS8yTQpQZXJzaWFuLzE1U00KUGVydGgvMk0KUGVydS8yTQpQZXJ1dmlhbi8xNU1TClBlc2hhd2FyLzJNClBldGFpbi9NClBldGFsdW1hLzJNClBldGUvMlJNWgpQZXRlci8xMk0KUGV0ZXJzLzJNTgpQZXRlcnNlbi8yTQpQZXRlcnNvbi8yTQpQZXRyYS8yTQpQZXRyYXJjaC8yTQpQZXR0eS8yTQpQZXVnZW90LzIxTQpQZmMKUGZpemVyLzJNClBoRC8xTQpQaGFlZHJhLzJNClBoYWV0aG9uLzJNClBoYW5lcm96b2ljLzUyTQpQaGFyYW9oLzIxTQpQaGFyYW9ocy8xMgpQaGFyaXNhaWMvNQpQaGFyaXNhaWNhbApQaGFyaXNlZS8xTVMKUGhla2RhL00KUGhlbHBzLzJNClBoaWRpYXMvTQpQaGlsLzIxNU1ZClBoaWxhZGVscGhpYS8yTQpQaGlsYnkvTQpQaGlsZW1vbi8yTQpQaGlsaXAvMk1TClBoaWxpcHBlL00KUGhpbGlwcGlhbnMvMjFNClBoaWxpcHBpbmUvNVNNClBoaWxpcHBpbmVzLzJNClBoaWxpcHMvMk0KUGhpbGlzdGluZS8xNU0KUGhpbGxpcC8yU00KUGhpbGxpcGEvMk0KUGhpbGxpcHMvMjFNClBoaWxseS8yTQpQaGlwcHMvMk0KUGhvYm9zLzJNClBob2ViZS8yTQpQaG9lbmljaWEvMk0KUGhvZW5pY2lhbi81MjFTTQpQaG9lbml4LzJNClBob3Rvc3RhdC9NUwpQaG90b3N0YXR0ZWQKUGhvdG9zdGF0dGluZwpQaHJ5Z2lhLzJNClBoeWxsaXMvMk0KUGlhZi8yTQpQaWFnZXQvMk0KUGlhbm9sYS9NClBpY2Fzc28vMk0KUGljY2FkaWxseS8yTQpQaWNrZXJpbmcvMk0KUGlja2V0dC8yTQpQaWNrZm9yZC8yTQpQaWNrd2ljay8yTQpQaWN0LzFNClBpZWRtb250LzJNClBpZXJjZS8yTQpQaWVycmUvMk0KUGllcnJvdC8yTQpQaWtlLzIxTQpQaWxhdGUvMk1TClBpbGF0ZXMvMU0KUGlsY29tYXlvLzJNClBpbGdyaW0vMTJTTQpQaWxsc2J1cnkvMk0KUGluYXR1Ym8vTQpQaW5jdXMvMk0KUGluZGFyLzJNClBpbmtlcnRvbi8yMU0KUGlub2NjaGlvLzIxTQpQaW5vY2hldC8yTQpQaW50ZXIvMk0KUGludGVyZXN0LzIxTQpQaW55aW4vMjEKUGlwcGluLzJNClBpcmFldXMvMk0KUGlyYW5kZWxsby9NClBpc2EvMk0KUGlzY2VzLzIxTQpQaXNpc3RyYXR1cy8yTQpQaXNzYXJvL00KUGl0Y2Fpcm4vMk0KUGl0dC8yU00KUGl0dG1hbi8yTQpQaXR0cy8yTQpQaXR0c2J1cmdoLzJNClBpdHRzZmllbGQvMk0KUGl1cy9NClBpemFycm8vMk0KUGt3eS8xClBsLwpQbGFuY2svMjFNClBsYW5vLzIKUGxhbnRhZ2VuZXQvMTJNClBsYXN0aWNpbmUvMU0KUGxhdGFlYS8yTQpQbGF0aC8yTQpQbGF0by8yTQpQbGF0b25pYy81MQpQbGF0b25pc20vMk0KUGxhdG9uaXN0LzFNClBsYXR0ZS8yTQpQbGF1dHVzLzJNClBsYXlTdGF0aW9uLzE0TQpQbGF5Ym95LzIxNU0KUGxheXRleC9NClBsZWlhZGVzLzJNClBsZWlzdG9jZW5lLzUyTQpQbGV4aWdsYXMvMk1TClBsaW55LzJNClBsaW9jZW5lLzUyU00KUGx1dGFyY2gvMjFNClBsdXRvLzJNClBseW1vdXRoLzIxTQpQbS9NClBvLzJNClBvY2Fob250YXMvMjFNClBvY2F0ZWxsby8yTQpQb2Nvbm8vU00KUG9jb25vcy8yTQpQb2Rnb3JpY2EvMk0KUG9kaG9yZXR6L00KUG9kdW5rLzJNClBvZS8yTQpQb2dvL00KUG9pbmNhcmUvMk0KUG9pcmV0L00KUG9pcm90LzJNClBvaXNzb24vMU0KUG9pdGllci8yTQpQb2tlbW9uLzFNClBvbC9NWQpQb2xhbmQvMk0KUG9sYW5za2kvMk0KUG9sYXJpcy8yTQpQb2xhcm9pZC8xTVMKUG9sZS8xMlNNClBvbGlzaC81MU0KUG9saXRidXJvLzJNClBvbGsvMk0KUG9sbGFyZC8yTQpQb2xsb2NrLzIxTQpQb2xsdXgvMk0KUG9sbHkvMk0KUG9sbHlhbm5hLzIxTQpQb2xvLzJNClBvbHRhdmEvMk0KUG9seWh5bW5pYS8yTQpQb2x5bmVzaWEvMk0KUG9seW5lc2lhbi81MTJNUwpQb2x5cGhlbXVzLzJNClBvbWVyYW5pYS8yTQpQb21lcmFuaWFuLzUxMk0KUG9tb25hLzJNClBvbXBhZG91ci9NClBvbXBlaWFuLzUxClBvbXBlaWkvMk0KUG9tcGV5LzJNClBvbmNlLzJNClBvbnRjaGFydHJhaW4vTQpQb250aWFjLzIxTQpQb250aWFuYWsvMk0KUG9vaC8yTQpQb29sZS8yTQpQb29uYS8yTQpQb3BlLzIxTQpQb3BleWUvMk0KUG9wb2NhdGVwZXRsLzJNClBvcHBlci8yTQpQb3BwaW5zL00KUG9wc2ljbGUvMU0KUG9yZmlyaW8vTQpQb3JyaW1hLzJNClBvcnNjaGUvMjFNClBvcnQvMk1SClBvcnRlci8yTQpQb3J0ZXJ2aWxsZS8yTQpQb3J0aWEvMk0KUG9ydGxhbmQvMk0KUG9ydG8vMjFNClBvcnRzbW91dGgvMk0KUG9ydHVnYWwvMjFNClBvcnR1Z3Vlc2UvNTEyTQpQb3NlaWRvbi8yTQpQb3N0LzJNClBvc3RncmVTUUwvTQpQb3RlbWtpbi8yTQpQb3RvbWFjLzJNClBvdHNkYW0vMk0KUG90dGF3YXRvbWllLzJNClBvdHRlci8xMk0KUG90dHMvMk0KUG90dHN0b3duL00KUG91Z2hrZWVwc2llLzJNClBvdW5kLzJNClBvdXNzaW4vTQpQb3dlbGwvMk0KUG93ZXJQQy9NClBvd2VyUG9pbnQvMjE0TQpQb3dlcnMvMTJNClBvd2hhdGFuLzEyTQpQb3puYW4vMk0KUHIvMU0KUHJhZGEvTQpQcmFkby8yTQpQcmFldG9yaWFuLzFNClByYWd1ZS8yTQpQcmFpYS8yTQpQcmFrcml0LzJNClByYXRjaGV0dC8yTQpQcmF0dC8yTQpQcmF2ZGEvMjFNClByYXhpdGVsZXMvMk0KUHJlYWtuZXNzL00KUHJlY2FtYnJpYW4vNTJNClByZW1pbmdlci9NClByZW15c2xpZC8xTQpQcmVuc2EvTQpQcmVudGljZS8yTQpQcmVzLzUxClByZXNieXRlcmlhbi81MVNNClByZXNieXRlcmlhbmlzbS8xTVMKUHJlc2NvdHQvMk0KUHJlc2xleS8yTQpQcmVzdG9uLzJNClByZXRvcmlhLzJNClByaWFtLzJNClByaWJpbG9mL00KUHJpY2UvMk0KUHJpY2VsaW5lL00KUHJpZXN0bGV5LzJNClByaW5jZS8xMk0KUHJpbmNldG9uLzJNClByaW5jaXBlLzJNClByaXNjaWxsYS8yTQpQcml1cy9NClByaXZhdGUvMQpQcm9jcnVzdGVhbi81TQpQcm9jcnVzdGVzLzJNClByb2N0ZXIvMk0KUHJvY3lvbi8yTQpQcm9mLzEKUHJvaGliaXRpb24vMgpQcm9rb2ZpZXYvMk0KUHJvbWV0aGVhbi81MU0KUHJvbWV0aGV1cy8yTQpQcm9waGV0cy8yClByb3NlcnBpbmEvMk0KUHJvc2VycGluZS8yTQpQcm90YWdvcmFzLzJNClByb3Rlcm96b2ljLzUyTQpQcm90ZXN0YW50LzE1TVMKUHJvdGVzdGFudGlzbS8xU00KUHJvdGV1cy8yTQpQcm91ZGhvbi9NClByb3VzdC8yTQpQcm92ZW5jYWwvMk1TClByb3ZlbmNlLzJNClByb3ZlcmJzLzIKUHJvdmlkZW5jZS8yU00KUHJvdm8vMjFNClByb3phYy8yTVMKUHJ1ZGVuY2UvMk0KUHJ1ZGVudGlhbC9NClBydWl0dC8yTQpQcnVzc2lhLzJNClBydXNzaWFuLzUyMU1TClBydXQvTQpQcnlvci8yTQpQc2FsbXMvMk0KUHNhbHRlci9NUwpQc3ljaGUvMk0KUHQvTQpQdGFoLzJNClB0b2xlbWFpYy81TQpQdG9sZW15LzJTTQpQdS8yTQpQdWNjaW5pLzJNClB1Y2svMk0KUHVja2V0dC8yTQpQdWVibGEvMk0KUHVlYmxvLzJNClB1ZXJ0by8yClB1Z2V0LzJNClB1Z2gvMk0KUHVsYXNraS8yTQpQdWxpdHplci8xMk0KUHVsbG1hbi8xMk1TClB1bmNoLzIxTQpQdW5pYy81MTJNClB1bmphYi8yTQpQdW5qYWJpLzUxTQpQdXJhbmEvMk0KUHVyY2VsbC8yTQpQdXJkdWUvMk0KUHVyaW0vMk1TClB1cmluYS9NClB1cml0YW4vMTVNClB1cml0YW5pc20vMU1TClB1cnVzL00KUHVzYW4vMk0KUHVzZXkvMk0KUHVzaGtpbi8yTQpQdXNodHUvMk0KUHV0aW4vMk0KUHV0bmFtLzJNClB1em8vTQpQdnQKUHlUb3JjaC9NClB5Z21hbGlvbi8yMU0KUHlnbXkvU00KUHlsZS8yTQpQeW0vMk0KUHluY2hvbi8yTQpQeW9uZ3lhbmcvMk0KUHlvdHIvMk0KUHlyZW5lZXMvMk0KUHlyZXgvMjFNUwpQeXJyaGljLzVNClB5dGhhZ29yYXMvMk0KUHl0aGFnb3JlYW4vMTVNClB5dGhpYXMvMU0KUHl0aG9uLzIxTQpRLzEyClFBLzEKUUIvMTIKUUMvMjEKUUVELzEKUU0vMQpRV0VSVFkvMTUKUWFkZGFmaS8yTQpRYW50YXMvMk0KUWF0YXIvMk0KUWF0YXJpLzE1TVMKUWluZ2Rhby8yTQpRaW5naGFpLzJNClFpcWloYXIvMk0KUW9tLzJNClF1YWFsdWRlLzIxTQpRdWFrZXIvMU1TClF1YWtlcmlzbS8xU00KUXVhbGNvbW0vTQpRdWFvYXIvMk0KUXVhc2ltb2RvLzFNClF1YXRlcm5hcnkvMk0KUXVheWxlLzJNClF1ZS8yClF1ZWJlYy8xMk0KUXVlYmVjb2lzLzUxMk0KUXVlY2h1YS8xMk0KUXVlZW4vMTJNUwpRdWVlbnMvMjFNClF1ZWVuc2xhbmQvMk0KUXVlbnRpbi8yTQpRdWV0emFsY29hdGwvMk0KUXVlem9uLzJNClF1aW5jeS8yMU0KUXVpbm4vMk0KUXVpbnRpbGlhbi8yTQpRdWludG9uLzJNClF1aXJpbmFsLzUyTQpRdWlzbGluZy8xTQpRdWl0by8yTQpRdWl4b3RlLzFNClF1aXhvdGlzbS8xTQpRdW1yYW4vMk0KUXVvbnNldC8xTQpRdXJhbi8yClF1cmFuaWMvNQpSLzE1Mk0KUkFGLzJNClJBTS8xMlNNClJCSS8xMgpSQy8yMTQ1ClJDQS8xMk0KUkNNUC8yClJELzEKUkRBLzIxClJEUy8xTQpSRUlULzEKUkVNLzFTTQpSRi8xMgpSRkMvMjFTClJGRC81MTIKUkkvMjEKUklGLzE0ClJJUC8yMQpSSVNDLzEKUk4vMTJNClJOQS8xTQpST0ZMLzQKUk9NLzIxTQpST1RDLzJNClJQLzEyNApSUi8xMjQKUlNGU1IvMgpSU0kvMQpSU1YvMjEKUlNWUC8xNDIKUlRGTS8KUlYvMjE0U00KUmEvMjFNClJhYmF0LzJNClJhYmVsYWlzLzJNClJhYmVsYWlzaWFuLzVNClJhYmluLzJNClJhY2hhZWwvMk0KUmFjaGVsLzJNClJhY2hlbGxlLzJNClJhY2htYW5pbm9mZi8yTQpSYWNpbmUvMk0KUmFkY2xpZmYvMk0KUmFkY2xpZmZlLzJNClJhZS8yTQpSYWZhZWwvMk0KUmFmZmxlcy8yTQpSYWduYXJvay8yTQpSYWluaWVyLzIxTQpSYWxlaWdoLzJNClJhbHBoLzJNClJhbWEvMk0KUmFtYWRhL00KUmFtYWRhbi8yTVMKUmFtYWtyaXNobmEvTQpSYW1hbnVqYW4vMk0KUmFtYXlhbmEvMk0KUmFtYm8vMjFNClJhbWlyZXovMk0KUmFtaXJvL00KUmFtb24vTQpSYW1vbmEvMk0KUmFtb3MvMk0KUmFtc2F5LzJNClJhbXNlcy8yTQpSYW1zZXkvMk0KUmFuZC8xMk0KUmFuZGFsLzJNClJhbmRhbGwvMk0KUmFuZGVsbC8yTQpSYW5kaS9NClJhbmRvbHBoLzJNClJhbmR5LzJNClJhbmdvb24vMk0KUmFua2luLzJNClJhbmtpbmUvMk0KUmFvdWwvTQpSYXBoYWVsLzJNClJhcHBhcG9ydC8yTQpSYXB1bnplbC8yTQpSYXF1ZWwvMk0KUmFzYWxnZXRoaS8yTQpSYXNhbGhhZ3VlLzJNClJhc211c3Nlbi8yTQpSYXNwdXRpbi8yTQpSYXN0YS8yMQpSYXN0YWJhbi8yTQpSYXN0YWZhcmlhbi8xNU1TClJhc3RhZmFyaWFuaXNtLzIKUmF0aGVyLzJNClJhdGxpZmYvMk0KUmF1bC8yTQpSYXZlbC8yTQpSYXdhbHBpbmRpLzJNClJheS8yTQpSYXlCYW4vTQpSYXlidXJuLzIxTQpSYXlsZWlnaC8yTQpSYXltb25kLzJNClJheW11bmRvL00KUmIvTQpSZApSZS8yTQpSZWFkaW5nLzJNClJlYWdhbi8yTQpSZWFnYW5vbWljcy8xTQpSZWFsdG9yL00KUmVhc29uZXIvMk0KUmViYS8yTQpSZWJla2FoLzJNClJlY2lmZS8yTQpSZWNvbnN0cnVjdGlvbi8yTQpSZWRkaW5nLzJNClJlZGVlbWVyLzJNClJlZGZvcmQvMk0KUmVkZ3JhdmUvMk0KUmVkaXMvTQpSZWRtb25kLzJNClJlZHNoaWZ0L00KUmVlYm9rL00KUmVlZC8yTQpSZWVzZS8yTQpSZWV2ZXMvMk0KUmVmb3JtYXRpb24vMk1TClJlZnVnaW8vMk0KUmVnZ2llLzJNClJlZ2luYS8yTQpSZWdpbmFlL00KUmVnaW5hbGQvMk0KUmVnb3IvTQpSZWd1bHVzLzJNClJlaG5xdWlzdC8yTQpSZWljaC8xMk0KUmVpY2hzdGFnJ3MKUmVpZC8yTQpSZWlsbHkvMk0KUmVpbmFsZG8vTQpSZWluaGFyZHQvMk0KUmVpbmhvbGQvTQpSZW1hcnF1ZS9NClJlbWJyYW5kdC8yMU0KUmVtaW5ndG9uLzIxTQpSZW11cy8yTQpSZW5hLzJNClJlbmFpc3NhbmNlLzIxNVNNClJlbmFzY2VuY2UvMgpSZW5hdWx0LzJNClJlbmUvMk0KUmVuZWUvMk0KUmVuby8yTQpSZW5vaXIvMTJNClJlcC8xClJlcHJlc2VudGF0aXZlClJlcHVibGljYW4vNTFTTQpSZXB1YmxpY2FuaXNtLzEKUmVxdWllbS9NUwpSZXNpc3RhbmNlClJlc3RvcmF0aW9uLzJNClJlc3VycmVjdGlvbi8yClJldWJlbi8yMU0KUmV1bmlvbi8yTQpSZXV0ZXJzLzJNClJldXRoZXIvMk0KUmV2LzIKUmV2YS9NClJldmVsYXRpb24vMlNNClJldmVsYXRpb25zLzJNClJldmVyZS8yTQpSZXZlcmVuZC8xTQpSZXZsb24vMk0KUmV4LzJNClJleWVzLzJNClJleWtqYXZpay8yTQpSZXluYS9NClJleW5hbGRvL00KUmV5bm9sZHMvMk0KUmYvTQpSaC8xTQpSaGVhLzJNClJoZWUvMk0KUmhlaW5nYXUvTQpSaGVuaXNoLzUxTQpSaGlhbm5vbi8yTQpSaGluZS8yTQpSaGluZWxhbmQvMk0KUmhvZGEvMk0KUmhvZGUvMlMKUmhvZGVzLzJNClJob2Rlc2lhLzJNClJob2Rlc2lhbi81MQpSaG9uZGEvMk0KUmhvbmUvMk0KUmliYmVudHJvcC9NClJpY2FyZG8vMk0KUmljZS8yTQpSaWNoLzJNClJpY2hhcmQvMk1TClJpY2hhcmRzLzJNClJpY2hhcmRzb24vMk0KUmljaGVsaWV1LzJNClJpY2hpZS8yTQpSaWNobW9uZC8yTQpSaWNodGVyLzIxTQpSaWNodGhvZmVuL00KUmljay8yTQpSaWNrZW5iYWNrZXIvMk0KUmlja2V5LzIxTQpSaWNraWUvMk0KUmlja292ZXIvMk0KUmlja3kvMk0KUmljby8yTQpSaWRkbGUvMk0KUmlkZS9NClJpZWZlbnN0YWhsL00KUmllbC8yTQpSaWVtYW5uLzVNClJpZXNsaW5nLzFNUwpSaWdhLzJNClJpZ2VsLzJNClJpZ2dzLzJNClJpZ2h0LzIKUmlnb2JlcnRvL00KUmlnb2xldHRvL00KUmlsZXkvMk0KUmlsa2UvMk0KUmltYmF1ZC8yTQpSaW5nbGluZy8yTQpSaW5nby8yTQpSaW8vMlNNClJpb3MvMk0KUmlwbGV5LzJNClJpc29yZ2ltZW50by8yTQpSaXRhLzJNClJpdGFsaW4vMk0KUml0ei8yTQpSaXZhcy8yTQpSaXZlcmEvMk0KUml2ZXJzLzJNClJpdmVyc2lkZS8yTQpSaXZpZXJhLzJNUwpSaXlhZGgvMk0KUml6YWwvMk0KUm4vTQpSb2FjaC8yTQpSb2Fub2tlLzJNClJvYi8yTQpSb2JiaWUvMk0KUm9iYmluLzJNUwpSb2JiaW5zLzJNClJvYmJ5LzJNClJvYmVyc29uLzJNClJvYmVydC8yTVMKUm9iZXJ0YS8yTQpSb2JlcnRvL00KUm9iZXJ0cy8yTQpSb2JlcnRzb24vMk0KUm9iZXNvbi8yTQpSb2Jlc3BpZXJyZS8yTQpSb2Jpbi8yMU0KUm9iaW5zb24vMk0KUm9iaXR1c3Npbi8yTQpSb2JsZXMvMk0KUm9ic29uLzJNClJvYnQvTQpSb2J5bi8yTQpSb2Njby8yTQpSb2NoYS8yTQpSb2NoYW1iZWF1L00KUm9jaGUvMk0KUm9jaGVsbGUvMk0KUm9jaGVzdGVyLzJNClJvY2svMk0KUm9ja2VmZWxsZXIvMjFNClJvY2tmb3JkLzJNClJvY2tpZXMvMjFNClJvY2tuZS9NClJvY2t3ZWxsLzJNClJvY2t5LzJTTQpSb2QvMk0KUm9kZGVuYmVycnkvMk0KUm9kZXJpY2svMk0KUm9kZ2VyLzJNUwpSb2RnZXJzLzJNClJvZGluL00KUm9kbmV5LzJNClJvZG9sZm8vTQpSb2RyaWNrLzJNClJvZHJpZ28vTQpSb2RyaWd1ZXovMk0KUm9kcmlxdWV6LzJNClJvZWcvTQpSb2VudGdlbi8yClJvZ2VsaW8vTQpSb2dlci8xMk1TClJvZ2Vycy8yTQpSb2dldC8yNE0KUm9qYXMvMk0KUm9rdS9NClJvbGFpZHMvTQpSb2xhbmQvMk0KUm9sYW5kby9NClJvbGV4LzFNClJvbGxhbmQvMk0KUm9sbGVyYmxhZGUvTQpSb2xsaW5zLzJNClJvbG9kZXgvMTRNClJvbHZhYWcvTQpSb20vMjE1ClJvbWFuLzUxMk1TClJvbWFuZXNxdWUvNU1TClJvbWFuaWEvMk0KUm9tYW5pYW4vNTFNUwpSb21hbm8vTQpSb21hbm92LzJNClJvbWFucy8yMU0KUm9tYW5zaC8yTQpSb21hbnRpY2lzbS8yClJvbWFueS8xMjVTTQpSb21lLzJTTQpSb21lby8xMk0KUm9tZXJvLzJNClJvbW1lbC8yTQpSb21uZXkvMjFNClJvbXVsdXMvMk0KUm9uLzJNClJvbmFsZC8yTQpSb25kYS8yTQpSb25uaWUvMk0KUm9ubnkvMk0KUm9uc3RhZHQvMk0KUm9udGdlbgpSb29uZXkvMk0KUm9vc2V2ZWx0LzJNClJvb3QvMk0KUm9xdWVmb3J0LzFTTQpSb3JzY2hhY2gvMU0KUm9yeS8yTQpSb3NhLzJNClJvc2FsZXMvMk0KUm9zYWxpZS8yTQpSb3NhbGluZC8yTQpSb3NhbGluZGEvTQpSb3NhbHluLzJNClJvc2FubmEvMk0KUm9zYW5uZS8yTQpSb3NhcmlvLzJNClJvc2NvZS8yTQpSb3NlLzIxTQpSb3NlYW5uL00KUm9zZWF1LzJNClJvc2VjcmFucy8yTQpSb3NlbGxhL00KUm9zZW1hcmllLzJNClJvc2VtYXJ5LzJNClJvc2VuYmVyZy8yTQpSb3NlbmRvLzJNClJvc2VuendlaWcvMk0KUm9zZXR0YS8yTQpSb3NpY3J1Y2lhbi8xNU0KUm9zaWUvMjFNClJvc2x5bi8yTQpSb3NzLzJNClJvc3NldHRpL00KUm9zc2luaS9NClJvc3RhbmQvTQpSb3N0b3YvMk0KUm9zdHJvcG92aWNoL00KUm9zd2VsbC8yTQpSb3Rhcmlhbi8xTQpSb3RoLzJNClJvdGhrby9NClJvdGhzY2hpbGQvMjFNClJvdHRlcmRhbS8yTQpSb3R0d2VpbGVyLzFNClJvdWF1bHQvTQpSb3Vya2UvMk0KUm91c3NlYXUvMk0KUm92ZS9STQpSb3Zlci8xMk0KUm93ZS8yTQpSb3dlbmEvMk0KUm93bGFuZC8yTQpSb3dsaW5nLzJNClJveGFubmUvMk0KUm94aWUvMk0KUm94eS8yMU0KUm95LzJNClJveWFsLzIxNU0KUm95Y2UvMk0KUm96ZWxsZS8yTQpSdGUKUnUvTUgKUnViYWl5YXQvTQpSdWJiZXJtYWlkL00KUnViZW4vMlNNClJ1YmVucy8yTQpSdWJpY29uLzIxTVMKUnViaWsvMk0KUnViaW4vMk0KUnViaW5zdGVpbi8yTQpSdWJ5LzIxTQpSdWNoYmFoLzJNClJ1ZG9sZi8yTQpSdWRvbHBoLzJNClJ1ZHkvMjFNClJ1ZHlhcmQvMk0KUnVmdXMvMk0KUnVoci8yTQpSdWl6LzJNClJ1a2V5c2VyL00KUnVtcGVsc3RpbHRza2luLzJNClJ1bXNmZWxkLzJNClJ1bm55bWVkZS8yTQpSdW55b24vMk0KUnVwZXJ0LzIxTQpSdXNoLzJNClJ1c2hkaWUvMk0KUnVzaG1vcmUvMk0KUnVza2luLzJNClJ1c3MvMjUxTQpSdXNzZWwvMk0KUnVzc2VsbC8yTQpSdXNzaWEvMjFNClJ1c3NpYW4vNTE0U00KUnVzc28vMk0KUnVzdGJlbHQvMk0KUnVzdHkvMk0KUnV0YW4vMk0KUnV0Z2Vycy8yTQpSdXRoLzJNClJ1dGhlcmZvcmQvMk0KUnV0aGllLzJNClJ1dGxlZGdlLzJNClJ3YW5kYS8yTVMKUndhbmRhbi8xNTJTTQpSd3kKUngvMQpSeQpSeWFuLzJNClJ5ZGJlcmcvMk0KUnlkZXIvMk0KUnl1a3l1LzJNClMvMTUyTU4KU0EvNTEyNApTQUMvMTIKU0FMVC8yTQpTQU0vMjFNClNBUC8yMU0KU0FSUy8xMk0KU0FTRS8xClNBVC8xClNCQS8xMgpTQy81MTJNClNDU0kvMk0KU0QvMjEKU0RJLzEyClNFLzEyNU0KU0VBVE8vMgpTRUMvMjFNClNGLzEyNQpTR01MLzJNClNJRFMvMTJNClNKLzIxClNKVy8xClNLLzQxMgpTTFIvMQpTTy8xOFMKU09CLzFNClNPUC8yMU0KU09TLzFNClNPU2VzLzEKU1BDQS8yClNQRi8xNTIKU1FMLzEKU1FMaXRlL00KU1JPLzEKU1MvMTI1ClNTQS8yMTUKU1NFLzE1Mk0KU1NTLzIxClNTVC8xMgpTU1cvMTVNClNULzEyNApTVEQvNTEKU1RPTC8xClNVU0UvTQpTVVYvMQpTVk4vMk0KU1cvMjE1NE0KU1dBSy8KU1dBVC8xClNhYWIvMjFNClNhYXIvMk0KU2FhcmluZW4vTQpTYWF0Y2hpLzJNClNhYmJhdGgvMU0KU2FiYmF0aHMvMQpTYWJpay8yTQpTYWJpbi8yTQpTYWJpbmEvMk0KU2FiaW5lLzEyTQpTYWJyZS9NClNhYnJpbmEvMk0KU2FjYWphd2VhLzJNClNhY2NvL00KU2FjaHMvMk0KU2FjcmFtZW50by8yTQpTYWRhdC8yTQpTYWRkYW0vMk0KU2FkZHVjZWUvMU0KU2FkZS9NClNhZGllLzJNClNhZHIvMk0KU2FmYXZpZC81MU0KU2FmZXdheS9NClNhZ2FuLzIxTQpTYWdpbmF3LzJNClNhZ2l0dGFyaXVzLzIxTVMKU2FoYXJhLzJNClNhaGFyYW4vNTFNClNhaGVsLzJNClNhaWdvbi8yTQpTYWlwaC8yTQpTYWthaS8xMk0KU2FraGEvMTJNClNha2hhbGluLzJNClNha2hhcm92LzJNClNha2kvMk0KU2Frcy9NClNhbC8yTVkKU2FsYWRpbi8yTQpTYWxhZG8vMU0KU2FsYW1pcy8yTQpTYWxhcy8yTQpTYWxhemFyLzJNClNhbGVtLzJNClNhbGVybm8vMk0KU2FsZXNmb3JjZS9NClNhbGluYXMvMk0KU2FsaW5nZXIvMk0KU2FsaXNidXJ5LzJNClNhbGlzaC8xMjVNClNhbGsvMk0KU2FsbGllLzJNClNhbGx1c3QvTQpTYWxseS8yMU0KU2Fsb21lLzJNClNhbG9uaWthLzJNClNhbHRvbi9NClNhbHZhZG9yLzJNClNhbHZhZG9yYW4vMTVTTQpTYWx2YWRvcmVhbi81MU1TClNhbHZhZG9yaWFuLzE1TVMKU2FsdmF0b3JlLzJNClNhbHdlZW4vMk0KU2FseXV0LzFNCnNhbS8xNDVtCnNhbWFudGhhL20Kc2FtYXIvbQpzYW1hcmEvMW0KU2FtYXJpdGFuLzE1Mk1TClNhbWFya2FuZC8yTQpTYW1taWUvMTJNClNhbW15LzEyTQpTYW1vYS8yMU0KU2Ftb2FuLzE1U00KU2Ftb3NldC9NClNhbW95ZWQvMU0KU2FtcHNvbi8yTQpTYW1zb24vMk0KU2Ftc29uaXRlL00KU2Ftc3VuZy8yMU0KU2FtdWVsLzJNClNhbXVlbHNvbi8yTQpTYW4nYQpTYW4vMTJNClNhbmEvMk0KU2FuY2hlei8yTQpTYW5jaG8vMk0KU2FuZC9aTQpTYW5kYnVyZy9NClNhbmRlcnMvMk0KU2FuZGluaXN0YS8xTQpTYW5kb3ZhbC8yTQpTYW5kcmEvMk0KU2FuZHkvMjFNClNhbmZvcmQvMk0KU2FuZm9yaXplZC9NClNhbmcvMk1SClNhbmdlci8yTQpTYW5oZWRyaW4vMU0KU2Fua2EvMU0KU2Fua2FyYS8yTQpTYW5za3JpdC8xNU0KU2FudGEvMjFNClNhbnRhbmEvMk0KU2FudGF5YW5hL00KU2FudGVyaWEvTQpTYW50aWFnby8yTQpTYW50b3MvMk0KU2FwcGhvLzJNClNhcHBvcm8vMk0KU2FyYS8yTQpTYXJhY2VuLzFNUwpTYXJhZ29zc2EvMk0KU2FyYWgvMk0KU2FyYWpldm8vMk0KU2FyYW4vMk0KU2FyYXNvdGEvMk0KU2FyYXRvdi8yTQpTYXJhd2FrLzJNClNhcmRpbmlhLzJNClNhcmdhc3NvLzIxTQpTYXJnZW50LzJNClNhcmdvbi8yTQpTYXJub2ZmL00KU2Fyb3lhbi8yTQpTYXJ0by9NClNhcnRyZS9NClNhc2hhLzJNClNhc2svMgpTYXNrYXRjaGV3YW4vMk0KU2Fza2F0b29uLzJNClNhc3F1YXRjaC8xTVMKU2Fzc2FuaWFuLzUxTQpTYXNzb29uLzJNClNhdC8xTQpTYXRhbi8yMU0KU2F0YW5pc20vMU0KU2F0YW5pc3QvMU0KU2F0dXJkYXkvMTRNUwpTYXR1cm4vMjFNClNhdHVybmFsaWEvMk0KU2F1ZGkvMTUyTVMKU2F1bC8yTQpTYXVuZGVycy8yTQpTYXVuZHJhL00KU2F1c3N1cmUvMk0KU2F1dGVybmVzLzIxClNhdmFnZS8yTQpTYXZhbm5haC8yMU0KU2F2aW9yLzJNClNhdm9uYXJvbGEvTQpTYXZveS8yMU0KU2F2b3lhcmQvMTJNClNhd3llci8yTQpTYXhvbi8xMjVNUwpTYXhvbnkvMjFNClNheWVycy8yTQpTYi9NClNjLzFNClNjYWxhLzJNClNjYW4KU2NhbmRpbmF2aWEvMk0KU2NhbmRpbmF2aWFuLzE1TVMKU2NhcmFtb3VjaC8yMU0KU2NhcmJvcm91Z2gvMk0KU2NhcmxhdHRpL00KU2NoZWF0LzJNClNjaGVkYXIvMk0KU2NoZWhlcmF6YWRlLzJNClNjaGVsbGluZy8yTQpTY2hlbmVjdGFkeS8yTQpTY2hpYXBhcmVsbGkvMk0KU2NoaWNrLzJNClNjaGlsbGVyLzJNClNjaGluZGxlci8yTQpTY2hsZXNpbmdlci8yTQpTY2hsaWVtYW5uL00KU2NobGl0ei8yMU0KU2NobG9zcy8yTQpTY2htaWR0LzIxTQpTY2huYWJlbC8xMk0KU2NobmF1emVyL00KU2NobmVpZGVyLzJNClNjaG9lbmJlcmcvMk0KU2Nob3BlbmhhdWVyLzJNClNjaHJpZWZmZXIvTQpTY2hyb2Rpbmdlci8yTQpTY2hyb2VkZXIvMk0KU2NodWJlcnQvMk0KU2NodWx0ei8yTQpTY2h1bHovMk0KU2NodW1hbm4vMk0KU2NodW1wZXRlci8yTQpTY2h1eWxlci8yTQpTY2h1eWxraWxsLzJNClNjaHdhcnR6LzJNClNjaHdhcnplbmVnZ2VyLzIxTQpTY2h3YXJ6a29wZi8yTQpTY2h3ZWl0emVyLzJNClNjaHdlcHBlcy8yTQpTY2h3aW5nZXIvTQpTY2h3aW5uLzJNClNjaWVudG9sb2dpc3QvMVNNClNjaWVudG9sb2d5LzJNClNjaXBpby8yTQpTY29wZXMvTQpTY29ycGlvLzIxU00KU2NvcnBpdXMvMk0KU2NvcnNlc2UvTQpTY290LzEyU00KU2NvdGNoLzIxNU1TClNjb3RjaG1hbi8xMk0KU2NvdGNobWVuLzFNClNjb3RjaHdvbWFuLzFNClNjb3RjaHdvbWVuLzFNClNjb3RpYS8yTQpTY290bGFuZC8yTQpTY290c21hbi8xTQpTY290c21lbi8xTQpTY290c3dvbWFuLzFNClNjb3Rzd29tZW4vMU0KU2NvdHQvMjFNClNjb3R0aWUvMjFTTQpTY290dGlzaC81MU0KU2NvdHRzZGFsZS8yTQpTY3JhYmJsZS8yTVMKU2NyYW50b24vMk0KU2NyaWFiaW4vTQpTY3JpYm5lci8yTQpTY3JpcHR1cmUvMVNNClNjcm9vZ2UvMk0KU2NydWdncy8yTQpTY3VkLzJNClNjdWxsZXkvMk0KU2N5bGxhLzJNClNjeXRoaWEvMk0KU2N5dGhpYW4vNTEyTQpTZS9NSApTZWFib3JnLzJNClNlYWdyYW0vMk0KU2Vhbi8yTQpTZWFycy8yTQpTZWFzaWRlLzJNClNlYXR0bGUvMk0KU2ViYXN0aWFuLzJNClNlYnJpbmcvMk0KU2VjClNlY29uYWwvMU0KU2VjcmV0YXJpYXQvTQpTZWNyZXRhcnkvMgpTZWRlci8yTVMKU2VkbmEvMk0KU2VlYmVjay8yTQpTZWVnZXIvMk0KU2VnYS8yMU0KU2Vnb3ZpYS8yTQpTZWdyZS9NClNlZ3VuZG8vMk0KU2Vnd2F5LzE0UwpTZWlrby8yTQpTZWluZS8yTQpTZWluZmVsZC9NClNlam9uZy8yTQpTZWxhc3NpZS9NClNlbGVjdHJpYy9NClNlbGVuYS8yTQpTZWxldWNpZC81MU0KU2VsZXVjdXMvMk0KU2VsaW0vMk0KU2VsanVrLzI1MU0KU2Vsa2lyay8yTQpTZWxsZXJzLzJNClNlbG1hLzIxTQpTZWx6bmljay9NClNlbWFyYW5nLzJNClNlbWlub2xlLzEyTVMKU2VtaXJhbWlzLzJNClNlbWl0ZS8xTVMKU2VtaXRpYy81MlNNClNlbXRleC9NClNlbmF0ZS8yTVMKU2VuZGFpLzJNClNlbmVjYS8yMU1TClNlbmVnYWwvMk0KU2VuZWdhbGVzZS81MU0KU2VuZ2hvci9NClNlbmlvci8yTQpTZW5uYWNoZXJpYi8yTQpTZW5uZXR0LzJNClNlbnN1cnJvdW5kLzJNClNlb3VsLzJNClNlcC8yClNlcGhhcmRpLzFNClNlcG95L00KU2VwdC8yTQpTZXB0ZW1iZXIvMk1TClNlcHR1YWdpbnQvMk1TClNlcXVveWEvTQpTZXJiLzE1U00KU2VyYmlhLzJNClNlcmJpYW4vNTFNUwpTZXJlbmEvMk0KU2VyZW5nZXRpLzJNClNlcmdlaS8yTQpTZXJnaW8vTQpTZXJwZW5zLzJNClNlcnJhLzJNClNlcnJhbm8vMk0KU2V0LzJNClNldGgvMk0KU2V0b24vMk0KU2V1cmF0L00KU2V1c3MvMk0KU2V2YXN0b3BvbC8yTQpTZXZlcm4vMk0KU2V2ZXJ1cy8yTQpTZXZpbGxlLzJNClNldnJlcy9NClNld2FyZC8yTQpTZXh0YW5zLzJNClNleHRvbi8yTQpTZXljaGVsbGVzLzJNClNleWZlcnQvMk0KU2V5bW91ci8yTQpTZ3QvMQpTaGFhbnhpLzJNClNoYWNrbGV0b24vMk0KU2hhZmZlci8yTQpTaGFoLzJNClNoYWthL00KU2hha2VyLzE1MgpTaGFrZXNwZWFyZS8yMTRNClNoYWtlc3BlYXJlYW4vNTFNClNoYW5hLzJNClNoYW5kb25nLzJNClNoYW5lLzJNClNoYW5nLzJTTQpTaGFuZ2hhaS8yMU0KU2hhbmthcmEvTQpTaGFubmEvMk0KU2hhbm5vbi8yTQpTaGFudHVuZy8yTQpTaGFueGkvMk0KU2hhcGlyby8yTQpTaGFyZVBvaW50L00KU2hhcmknYS8xTQpTaGFyaS8yTQpTaGFyaWYvMk0KU2hhcmxlbmUvMk0KU2hhcm9uLzIxTQpTaGFycC8yTQpTaGFycGUvMk0KU2hhcnJvbi8yTQpTaGFzdGEvMjFNClNoYXVsYS8yTQpTaGF1bi8yTQpTaGF1bmEvMk0KU2hhdmlhbi81MU0KU2hhdnVvdC8yTQpTaGF3LzJNClNoYXduLzJNClNoYXduYS8yTQpTaGF3bmVlLzE1MlNNClNoY2hhcmFuc2t5L00KU2hlYS8yTQpTaGViYS8yMU0KU2hlYmVsaS9NClNoZWJveWdhbi8yTQpTaGVlbmEvMk0KU2hlZXRyb2NrLzE0TQpTaGVmZmllbGQvMk0KU2hlaWxhLzJNClNoZWxieS8yTQpTaGVsZG9uLzJNClNoZWxpYS9NClNoZWxsLzJNClNoZWxsZXkvMk0KU2hlbGx5LzJNClNoZWx0b24vMk0KU2hlbmFuZG9haC8yTQpTaGVueWFuZy8yTQpTaGVvbC8yTQpTaGVwYXJkLzJNClNoZXBoZXJkLzJNClNoZXBwYXJkLzJNClNoZXJhdGFuLzJNClNoZXJhdG9uLzJNClNoZXJlZS8yTQpTaGVyaS8yTQpTaGVyaWRhbi8yTQpTaGVybG9jay8yNE0KU2hlcm1hbi8yMU0KU2hlcnBhLzEyTQpTaGVycmkvMk0KU2hlcnJpZS9NClNoZXJyeS8yTQpTaGVyd29vZC8yTQpTaGVyeWwvMk0KU2hldGxhbmQvMjFTTQpTaGV0bGFuZHMvMjFNClNoZXZhcmRuYWR6ZS8yTQpTaGV2YXQvMk0KU2hpJ2l0ZS81MU0KU2hpZWxkcy8yTQpTaGlpdGUvNTFNUwpTaGlqaWF6aHVhbmcvMk0KU2hpa29rdS8yMU0KU2hpbGxvbmcvMk0KU2hpbG9oLzJNClNoaW50by8yNU1TClNoaW50b2lzbS8yTVMKU2hpbnRvaXN0LzE1TVMKU2hpcmF6LzIxTQpTaGlybGV5LzJNClNoaXZhLzJNClNob2NrbGV5LzJNClNob3J0LzJNClNob3J0aG9ybi9NClNob3Nob25lLzIxU00KU2hvc3Rha292aXRjaC9NClNocmVrLzFNClNocmV2ZXBvcnQvMk0KU2hyaW5lci8xTQpTaHJvcHNoaXJlLzIxTQpTaHVsYS8yTQpTaHlsb2NrLzIxTQpTaHlsb2NraWFuL00KU2kvMk0KU2lhbS8yTQpTaWFtZXNlLzUyMU0KU2liZWxpdXMvTQpTaWJlcmlhLzIxTQpTaWJlcmlhbi81MU1TClNpYnlsLzJNClNpY2h1YW4vMk0KU2ljaWxpYW4vNTIxU00KU2ljaWx5LzJNClNpZC8yTQpTaWRkaGFydGhhLzJNClNpZG5leS8yTQpTaWVnZnJpZWQvMk0KU2llbWVucy8yTQpTaWVycGluc2tpLzJNClNpZXJyYXMKU2lnaXNtdW5kL00KU2lnbXVuZC8yTQpTaWd1cmQvMk0KU2loYW5vdWsvTQpTaWtoLzE1TQpTaWtoaXNtLzIKU2lraHMvMQpTaWtraW0vMk0KU2lra2ltZXNlLzUyMU0KU2lrb3Jza3kvTQpTaWxhcy8yTQpTaWxlc2lhLzJNClNpbHVyaWFuLzUxMlNNClNpbHZhLzJNClNpbHZpYS8yTQpTaW1lbm9uL00KU2ltbWVudGFsLzIxTQpTaW1tb25zLzJNClNpbW9uLzIxTQpTaW1vbmUvMk0KU2ltcHNvbi8yU00KU2ltcHNvbnMvMk0KU2ltcHNvbnZpbGxlLzJNClNpbXMvMjFNClNpbmFpLzJNClNpbmF0cmEvMk0KU2luYmFkLzJNClNpbmNsYWlyLzJNClNpbmRiYWQvMk0KU2luZGhpLzUxMk0KU2luZ2Fwb3JlLzJNClNpbmdhcG9yZWFuLzUxU00KU2luZ2VyLzIxTQpTaW5naC8yTQpTaW5nbGV0b24vMk0KU2luaGFsZXNlLzUxTQpTaW5raWFuZy8yTQpTaW91eC8yTQpTaXIvMTJTTQpTaXJpdXMvMk0KU2lzdGluZS81TQpTaXN5cGhlYW4vNU0KU2lzeXBodXMvMk0KU2l2YS8yTQpTaXZhbi8yTQpTamFlbGxhbmQvTQpTa2lubmVyLzJNClNraXBweS8yTQpTa29wamUvMk0KU2t5ZS8yMU0KU2t5bGFiLzJNClNreXBlLzI0TQpTbGFja3dhcmUvTQpTbGFzaGRvdC9NClNsYXRlci8yTQpTbGF2LzE1U00KU2xhdmljLzUxTQpTbGF2b25pYy8yNU0KU2xpZGVsbC8yTQpTbGlua3kvMU0KU2xvYW4vMk0KU2xvYW5lLzIxTQpTbG9jdW0vMk0KU2xvdmFrLzUxU00KU2xvdmFraWEvMk0KU2xvdmFraWFuLzUxClNsb3ZlbmUvNTEyU00KU2xvdmVuaWEvMk0KU2xvdmVuaWFuLzUxTVMKU2x1cnBlZS8xTQpTbS81MU0KU21hbGwvMk0KU21ldGFuYS8yTQpTbWlybm9mZi8yMU0KU21pdGgvMk0KU21pdGhzb24vMk0KU21pdGhzb25pYW4vNTJNClNtb2tleS8yMU0KU21vbGVuc2svMk0KU21vbGxldHQvMk0KU211dHMvTQpTbXlybmEvMgpTbi8xNU0KU25ha2UvMk0KU25hcHBsZS9NClNuZWFkLzJNClNuZWxsLzJNClNuaWNrZXJzLzFNClNuaWRlci8yMU0KU25vb3B5LzJNClNub3cvMk0KU25vd2JlbHQvTQpTbnlkZXIvMk0KU29hdmUvMk0KU29jLzEKU29jYXN0ZWUvTQpTb2NvcnJvLzJNClNvY3JhdGVzLzJNClNvY3JhdGljLzUxTQpTb2RkeS8yTQpTb2RvbS8yMU0KU29maWEvMk0KU29oby8yTQpTb2wvMjFNClNvbGlzLzJNClNvbG9tb24vMjFNClNvbG9uLzJNClNvbHpoZW5pdHN5bi9NClNvbWFsaS8xNVNNClNvbWFsaWEvMk0KU29tYWxpYW4vNTFNUwpTb21tZS8yTQpTb21vemEvMk0KU29uLzJNClNvbmRoZWltLzJNClNvbmRyYS8yTQpTb25naGFpLzIxTQpTb25naHVhLzJNClNvbmlhLzJNClNvbmphLzJNClNvbm55LzJNClNvbm9yYS8yTQpTb250YWcvMk0KU29ueS8yMU0KU29ueWEvMk0KU29waGlhLzIxTQpTb3BoaWUvMjFNClNvcGhvY2xlYW4vNU0KU29waG9jbGVzLzJNClNvcHdpdGgvMk0KU29yYm9ubmUvMk0KU29zYS8yTQpTb3RvLzJNClNvdXBoYW5vdXZvbmcvTQpTb3VyY2Vmb3JnZS9NClNvdXNhLzJNClNvdXRoLzJNClNvdXRoYW1wdG9uLzJNClNvdXRoZWFzdC9NUwpTb3V0aGVybmVyLzFTTQpTb3V0aGV5LzJNClNvdXRocy8yClNvdXRod2VzdC8yTVMKU292aWV0LzE1TQpTb3dldG8vMk0KU295aW5rYS8yTQpTb3l1ei8xTQpTcC8xClNwYWF0ei9NClNwYWNrbGUvMk0KU3BhaG4vMk0KU3BhaW4vMk0KU3BhbS8yTQpTcGFuLzIKU3BhbmdsaXNoLzIKU3BhbmlhcmQvMVNNClNwYW5pc2gvNTIxTQpTcGFya3MvMk0KU3BhcnRhLzJNClNwYXJ0YWN1cy8yTQpTcGFydGFuLzE1TVMKU3BhcnRhbmJ1cmcvMk0KU3BlYXJzLzJNClNwZWVyLzJNClNwZW5jZS8yUk0KU3BlbmNlci8yTQpTcGVuY2VyaWFuLzVNClNwZW5nbGVyLzJNClNwZW5nbGVyaWFuLzVNClNwZW5zZXIvMk0KU3BlbnNlcmlhbi81MU0KU3BlcnJ5LzJNClNwaGlueC8yTQpTcGljYS8yTQpTcGllbGJlcmcvMk0KU3BpbGxhbmUvMk0KU3Bpbm96YS8yTQpTcGlueC9NClNwaXJvLzJNClNwaXJvZ3JhcGgvMU0KU3BpdHNiZXJnZW4vMk0KU3BpdHovTQpTcG9jay8yMTRNClNwb2thbmUvMTJNClNwcmluZ2RhbGUvMk0KU3ByaW5nZmllbGQvMk0KU3ByaW5nc3RlZW4vMk0KU3ByaW50L00KU3ByaXRlLzJNClNwdXRuaWsvMTJNClNxClNxdWFudG8vTQpTcXVpYmIvMk0KU3IvNTFNClNyaW5hZ2FyLzJNClNyaXZpamF5YS9NClN0LzEKU3RhLzEyClN0YWNleS8yTQpTdGFjaS8yTQpTdGFjaWUvMk0KU3RhY3kvMjFNClN0YWVsL00KU3RhZmZvcmQvMjFNClN0YWlyTWFzdGVyL00KU3RhbGluLzJNClN0YWxpbmdyYWQvMk0KU3RhbGluaXN0LzUxTQpTdGFsbG9uZS8yTQpTdGFtZm9yZC8yTQpTdGFuLzIxTQpTdGFuZGlzaC8yTQpTdGFuZm9yZC8yTQpTdGFuaXNsYXZza3kvTQpTdGFubGV5LzJNClN0YW50b24vMk0KU3RhcGxlcy8yTQpTdGFyYnVja3MvMjFNClN0YXJrLzIxTQpTdGFya2V5LzJNClN0YXJyLzJNClN0YXRlbi8yTQpTdGF0ZXMvMjEKU3RhdWJhY2gvMk0KU3RhdW50b24vMk0KU3RlLzEKU3RlYWRpY2FtLzFNClN0ZWVsZS8yTQpTdGVmYW4vMk0KU3RlZmFuaWUvMk0KU3RlaW4vMk1SClN0ZWluYmVjay8yTQpTdGVpbmVtL00KU3RlaW5lci8yTQpTdGVpbm1ldHovMk0KU3RlaW53YXkvMU0KU3RlbGxhLzIxTQpTdGVuZGhhbC9NClN0ZW5nZWwvMk0KU3RlcGhhbi8yTQpTdGVwaGFuaWUvMk0KU3RlcGhlbi8yTVMKU3RlcGhlbnMvMk0KU3RlcGhlbnNvbi8yTQpTdGVybGluZy8yTQpTdGVybi8yTQpTdGVybmUvMk0KU3Rlcm5vLzFNClN0ZXRzb24vMjFNClN0ZXViZW4vMk0KU3RldWJlbnZpbGxlLzJNClN0ZXZlLzIxTQpTdGV2ZW4vMk1TClN0ZXZlbnMvMk0KU3RldmVuc29uLzJNClN0ZXZpZS8yTQpTdGV3YXJ0LzJNClN0aWVnbGl0ei8yTQpTdGlsdG9uLzIxU00KU3RpbXNvbi8yTQpTdGluZS9NClN0aXJsaW5nLzJNClN0b2NraGF1c2VuLzJNClN0b2NraG9sbS8yNE0KU3RvY2t0b24vMk0KU3RvaWMvNTFTTQpTdG9pY2lzbS9NUwpTdG9rZXMvMk0KU3RvbGljaG5heWEvMU0KU3RvbHlwaW4vTQpTdG9uZS8yTQpTdG9uZWhlbmdlLzJNClN0b3BwYXJkLzJNClN0b3V0LzJNClN0b3dlLzJNClN0cmFiby8yTQpTdHJhZGl2YXJpClN0cmFkaXZhcml1cy8xTQpTdHJhc2JvdXJnLzJNClN0cmF1c3MvMk0KU3RyYXZpbnNreS8yTQpTdHJlaXNhbmQvTQpTdHJpY2tsYW5kLzJNClN0cmluZGJlcmcvTQpTdHJvbWJvbGkvMk0KU3Ryb25nLzJNClN0dS8yTQpTdHVhcnQvMk1TClN0dWRlYmFrZXIvMk0KU3R1dHRnYXJ0LzIxTQpTdHV5dmVzYW50L00KU3R5Z2lhbi81MU0KU3R5cm9mb2FtL1NNClN0eXJvbi8yTQpTdHl4LzJNClN1YXJlei8yTQpTdWJhcnUvMk0KU3VjcmUvMk0KU3VjcmV0cy9NClN1ZGFuLzJNClN1ZGFuZXNlLzUxTQpTdWRldGVubGFuZC8yTQpTdWRva3UvTQpTdWRyYS8xTQpTdWUvMjFNClN1ZXRvbml1cy9NClN1ZXovMk0KU3VmZm9say8yTQpTdWZpLzFNClN1ZmlzbS8xTQpTdWhhcnRvL00KU3VpLzIxNU0KU3VrYXJuby9NClN1a2tvdC8yClN1bGF3ZXNpLzJNClN1bGVpbWFuLzJNClN1bGxhL00KU3VsbGl2YW4vMk0KU3VtYXRyYS8yMU0KU3VtYXRyYW4vNTFTTQpTdW1lcmlhLzJNClN1bWVyaWFuLzUxMlNNClN1bW1lci8yTVMKU3VtbWVycy8yTQpTdW1uZXIvMk0KU3VtdGVyLzJNClN1bi8yMVNNClN1bmJlYW0vMk0KU3VuYmVsdC8xTQpTdW5kYW5lc2UvMTI1TQpTdW5kYXMvMk0KU3VuZGF5LzE0TVMKU3VuZy8yTQpTdW5raXN0L00KU3VubmkvNTEyU00KU3Vubml0ZS81MU1TClN1bm55dmFsZS8yTQpTdXBlcmJvd2wvMk0KU3VwZXJmdW5kLzFNClN1cGVyZ2x1ZS9NClN1cGVyaW9yLzJNClN1cGVybWFuLzIxTQpTdXB0ClN1cmFiYXlhLzJNClN1cmF0LzIxTQpTdXJpbmFtZS8yTQpTdXJpbmFtZXNlLzE1ClN1cnlhLzJNClN1c2FuLzI1MU0KU3VzYW5hL00KU3VzYW5uYS8yTQpTdXNhbm5lLzJNClN1c2llLzJNClN1c3F1ZWhhbm5hLzJNClN1c3NleC8yMU0KU3V0aGVybGFuZC8yTQpTdXR0b24vMk0KU3V2YS8yTQpTdXdhbmVlL00KU3V6YW5uZS8yTQpTdXpldHRlL00KU3V6aG91LzJNClN1enVraS8yTQpTdXp5LzJNClN2YWxiYXJkLzJNClN2ZW4vTQpTdmVuZ2FsaS8xTQpTdmVyZGxvdnNrLzIKU3dhaGlsaS8yMVNNClN3YW1tZXJkYW0vTQpTd2FuZWUvTQpTd2Fuc2VhLzJNClN3YW5zb24vMk0KU3dhemkvMTI1U00KU3dhemlsYW5kLzJNClN3ZWQvMk4KU3dlZGUvMVNNClN3ZWRlbi8yTQpTd2VkZW5ib3JnLzJNClN3ZWRpc2gvMjVNClN3ZWVuZXkvMk0KU3dlZXQvMk0KU3dpZnQvMk0KU3dpbmJ1cm5lLzJNClN3aXNzLzUxMk1TClN3aXNzYWlyL00KU3dpdHovMgpTd2l0emVybGFuZC8yMU0KU3liaWwvMTJNClN5ZG5leS8yTQpTeWtlcy8yTQpTeWx2ZXN0ZXIvMk0KU3lsdmlhLzJNClN5bHZpZS8yTQpTeW5nZS8yTQpTeXJhY3VzZS8yMU0KU3lyaWEvMk0KU3lyaWFjLzIxNU0KU3lyaWFuLzUxTVMKU3ppbGFyZC8yTQpTenltYm9yc2thL00KVCdhbmcvMk0KVC81MTJNREcKVEEvMjE0NQpUQVJQLzIKVEIvMjFNClRCQS8xClRELzEKVERELzEKVEVGTC8xClRFTE5FVC9TClRFTE5FVFRlZApURUxORVRUaW5nClRFU0wvMQpURVNPTC8xClRHSUYvMQpUSEMvMQpUS08vMjFNClRMQy8xMk0KVE0vMQpUTi8yMQpUTlQvMTJNClRPRUZMLzEKVFFNLzEKVFYvMVNNClRWQS8yClRXQS8yMU0KVFdYLzIKVFgvMjQxClRhL00KVGFiYXNjby8yMVNNClRhYmF0aGEvMk0KVGFiZXJuYWNsZS9NUwpUYWJpdGhhLzJNClRhYnJpei8yTVMKVGFjaXR1cy8yTQpUYWNvbWEvMk0KVGFkLzJNClRhZHpoaWsvNTEyTQpUYWVndS8yTQpUYWVqb24vTQpUYWZ0LzJNClRhZ2Fsb2cvMjE1U00KVGFnb3JlLzJNClRhZ3VzLzJNClRhaGl0aS8yTQpUYWhpdGlhbi8xMjVNUwpUYWhvZS8yTQpUYWljaHVuZy8yTQpUYWluYW4vMgpUYWluZS9NClRhaXBlaS8yTQpUYWlwaW5nLzIxTQpUYWl3YW4vMk0KVGFpd2FuZXNlLzUxMk0KVGFpeXVhbi8yTQpUYWppa2lzdGFuLzJNClRha2xhbWFrYW4vMk0KVGFsYm90LzJNClRhbGliYW4vMjFNClRhbGllc2luLzJNClRhbGxhaGFzc2VlLzJNClRhbGxjaGllZi9NClRhbGxleS8yTQpUYWxsZXlyYW5kL00KVGFsbGlubi8yTQpUYWxtdWQvMk1TClRhbG11ZGljLzUKVGFsbXVkaXN0LzEKVGFtYXJhLzJNClRhbWVrYS8yTQpUYW1lcmEvMk0KVGFtZXJsYW5lLzJNClRhbWkvMk0KVGFtaWthLzJNClRhbWlsLzUxTVMKVGFtbWFueS8yTQpUYW1taS8yTQpUYW1taWUvMk0KVGFtbXV6LzJNClRhbW15LzJNClRhbXBhLzJNClRhbXBheC9NClRhbXJhLzJNClRhbXdvcnRoLzIxTQpUYW5jcmVkLzJNClRhbmV5LzJNClRhbmdhbnlpa2EvMk0KVGFuZ2llci8yTVMKVGFuZ3NoYW4vMk0KVGFuaWEvMk0KVGFuaXNoYS8yTQpUYW5uZXIvMk0KVGFubmhhdXNlci9NClRhbnRhbHVzLzJNClRhbnlhLzJNClRhbnphbmlhLzJNClRhbnphbmlhbi8xNVNNClRhby8yMU0KVGFvaXNtLzJNUwpUYW9pc3QvNTFNUwpUYXJhLzJNClRhcmFudGluby8xMk0KVGFyYXdhLzJNClRhcmF6ZWQvMk0KVGFyYmVsbC8yTQpUYXJnZXQvTQpUYXJpbS8yTQpUYXJrZW50b24vTQpUYXJraW5ndG9uLzJNClRhcnRhcnkvMk0KVGFydHVmZmUvTQpUYXJ6YW4vMjFNClRhc2hhLzJNClRhc2hrZW50LzJNClRhc21hbi8yTQpUYXNtYW5pYS8yTQpUYXNtYW5pYW4vNTFNClRhc3MvMk0KVGF0YXIvMjE1TVMKVGF0ZS8yTQpUYXR1bS8yTQpUYXVydXMvMjFNUwpUYXZhcmVzLzJNClRhd25leS8yTQpUYXlsb3IvMk0KVGIvTQpUYmlsaXNpLzJNClRjL00KVGNoYWlrb3Zza3kvMk0KVGUvMk0KVGVYLzIKVGVYZXMKVGVhc2RhbGUvMk0KVGVjaG5pY29sb3IvMTVNClRlY3Vtc2VoLzJNClRlZC8yMU0KVGVkZHkvMk0KVGVmbG9uLzIxNU1TClRlZ3VjaWdhbHBhLzJNClRlaHJhbi8yClRlbGVQcm9tcFRlcgpUZWxlUHJvbXB0ZXIvTQpUZWxlbWFjaHVzLzJNClRlbGVtYW5uL00KVGVsZXR5cGUKVGVsbC8yTVIKVGVsbGVyLzJNClRlbHVndS8yMU0KVGVtZWN1bGEvMk0KVGVtcGUvMgpUZW1wbGFyLzFNClRlbXBsZS8yTQpUZW5uL00KVGVubmVzc2Vhbi81MVNNClRlbm5lc3NlZS8yMU0KVGVubnlzb24vMk0KVGVubnlzb25pYW4vNQpUZW5vY2h0aXRsYW4vMk0KVGVuc29yRmxvdy9NClRlb3RpaHVhY2FuLzJNClRlcmVuY2UvMk0KVGVyZXNhLzJNClRlcmVzaGtvdmEvTQpUZXJpLzJNClRlcmtlbC8yTQpUZXJwc2ljaG9yZS8yTQpUZXJyL00KVGVycmEvMk0KVGVycmFuLzUxMk0KVGVycmFuY2UvMk0KVGVycmVsbC8yTQpUZXJyZW5jZS8yTQpUZXJyaS8yTQpUZXJyaWUvMk0KVGVycnkvMk0KVGVydGlhcnkvNTJNClRlc2xhLzIxTQpUZXNzLzJNClRlc3NhLzJNClRlc3NpZS8yTQpUZXQvMjFNClRldGh5cy8yTQpUZXRvbnMvMTJNClRldXRvbi8xNU1TClRldXRvbmljLzUxTQpUZXZldC8yTQpUZXgvMk0KVGV4YWNvL00KVGV4YW4vNTFNUwpUZXhhcmthbmEvMk0KVGV4YXMvMk0KVGgvMTJNClRoYWNrZXJheS8yTQpUaGFkLzJNClRoYWRkZXVzLzJNClRoYWkvNTFTTQpUaGFpbGFuZC8yTQpUaGFsZXMvMk0KVGhhbGlhLzJNClRoYW1lcy8yTQpUaGFuaC9NClRoYW5rc2dpdmluZy8yTVMKVGhhbnQvTQpUaGFyLzJNClRoYXJwLzJNClRoYXRjaGVyLzJNClRoZWEvMk0KVGhlYmVzLzJNClRoZWlsZXIvMk0KVGhlbG1hLzJNClRoZW1pc3RvY2xlcy9NClRoZW9jcml0dXMvTQpUaGVvZG9yYS8yTQpUaGVvZG9yZS8yMU0KVGhlb2RvcmljLzJNClRoZW9kb3NpdXMvMk0KVGhlb3NvcGh5LzFNClRoZXJhdmFkYS8yMU0KVGhlcmVzYS8yTQpUaGVyZXNlL00KVGhlcm1vcHlsYWUvMk0KVGhlcm1vcy8yClRoZXJvbi8yTQpUaGVzZXVzLzJNClRoZXNwaWFuLzE1TQpUaGVzcGlzL00KVGhlc3NhbG9uaWFuLzUxU00KVGhlc3NhbG9uaWtpLzJNClRoZXNzYWx5LzJNClRoaWV1L00KVGhpbWJ1LzIxTQpUaGltcGh1LzIKVGhvbWFzLzEyTQpUaG9taXNtLzFNClRob21pc3RpYy81TQpUaG9tcHNvbi8yMU0KVGhvbXNvbi8yTQpUaG9yLzJNClRob3JhemluZS8xTQpUaG9yZWF1LzJNClRob3JudG9uLzJNClRob3JvdWdoYnJlZC8xTQpUaG9ycGUvMk0KVGhvdGgvMk0KVGhyYWNlLzJNClRocmFjaWFuLzUxMk0KVGh1LzEyClRodWN5ZGlkZXMvMk0KVGh1bGUvMk0KVGh1bmRlcmJpcmQvMTJNClRodXIvMVMKVGh1cmJlci8yTQpUaHVybWFuLzJNClRodXJtb25kLzJNClRodXJzZGF5LzFTTQpUaHV0bW9zZS8yTQpUaS9NClRpYS8yTQpUaWFuamluLzJNClRpYmVyLzJNClRpYmVyaXVzLzJNClRpYmV0LzJNClRpYmV0YW4vNTFNUwpUaWNrZXRtYXN0ZXIvTQpUaWNvbmRlcm9nYS8yTQpUaWRlL00KVGllbmFubWVuLzJNClRpZmZhbnkvMjFNClRpZ3Jpcy8yTQpUaWp1YW5hLzJNClRpbGxpY2gvTQpUaWxsbWFuLzJNClRpbHNpdC8xTQpUaW0vMjFNClRpbWJ1a3R1LzJNClRpbWV4L00KVGltbXkvMk0KVGltb24vMk0KVGltb3IvMk0KVGltb3RoeS8yTQpUaW11ci8yTQpUaW11cmlkLzE1TQpUaW5hLzIxTQpUaW5nLzJNClRpbmtlcmJlbGwvMU0KVGlua2VydG95L00KVGluc2VsdG93bi8yMU0KVGludG9yZXR0by9NClRpcHBlY2Fub2UvMk0KVGlwcGVyYXJ5LzJNClRpcmFuZQpUaXJlc2lhcy8yTQpUaXJvbC8yTQpUaXJvbGVhbi81MQpUaXNoYS8yTQpUaXNocmkvMk0KVGl0YW4vMTJTTQpUaXRhbmlhLzJNClRpdGFuaWMvNTIxTQpUaXRpYW4vMk0KVGl0aWNhY2EvMk0KVGl0by8yTQpUaXR1cy8yTQpUaXR1c3ZpbGxlLzJNClRsL00KVGxhbG9jLzJNClRsaW5naXQvMTI1TQpUbS8xTQpUb2JhZ28vMk0KVG9iaXQvMjFNClRvYnkvMjFNClRvY2FudGlucy8yTQpUb2NxdWV2aWxsZS8yTQpUb2QvMk0KVG9kZC8yTQpUb2dvLzJNClRvZ29sZXNlLzUxTQpUb2pvLzIxTQpUb2theS9NClRva3VnYXdhLzJNClRva3lvLzJNClRva3lvaXRlLzUxClRvbGVkby8yTVMKVG9sa2llbi8yTQpUb2xzdG95LzJNClRvbHRlYy8xTQpUb2x5YXR0aS8yTQpUb20vMjFNClRvbWFzL00KVG9tYmF1Z2gvTQpUb21saW4vMk0KVG9tbWllLzIxTQpUb21teS8yMU0KVG9tcGtpbnMvMk0KVG9tc2svMk0KVG9uZ2EvMk0KVG9uZ2FuLzE1TVMKVG9uaS8yTQpUb25pYS8yTQpUb250by8yMU0KVG9ueS8yMU0KVG9ueWEvMk0KVG9wZWthLzJNClRvcHN5LzFNClRvcmFoLzIxTQpUb3JhaHMvMQpUb3JvbnRvLzJNClRvcnF1ZW1hZGEvTQpUb3JyYW5jZS8yTQpUb3JyZW5zLzJNClRvcnJlcy8yTQpUb3JyaWNlbGxpLzJNClRvcnRvbGEvMk0KVG9ydHVnYS8yTQpUb3J2YWxkcy8yTQpUb3J5LzE1MlNNClRvc2NhLzFNClRvc2NhbmluaS9NClRvc2hpYmEvMU0KVG90by8xMk0KVG91bG91c2UvMk0KVG93bmVzLzJNClRvd25zZW5kLzJNClRveW5iZWUvTQpUb3lvZGEvMk0KVG95b3RhLzIxTQpUcmFjZXkvMk0KVHJhY2kvMk0KVHJhY2llLzJNClRyYWN5LzJNClRyYWZhbGdhci8yTQpUcmFpbHdheXMvTQpUcmFqYW4vMk0KVHJhbi8yTQpUcmFuc2NhdWNhc2lhLzJNClRyYW5zdmFhbC8yTQpUcmFuc3lsdmFuaWEvMk0KVHJhbnN5bHZhbmlhbi81MU0KVHJhcHBpc3QvMTVTTQpUcmF2aXMvMk0KVHJhdm9sdGEvMk0KVHJlYXN1cnkvMjFTTQpUcmVibGlua2EvMk0KVHJla2tpZS8xTQpUcmVudC8yTQpUcmVudG9uLzJNClRyZXZlbHlhbi8yTQpUcmV2aW5vLzJNClRyZXZvci8yTQpUcmV5LzJNClRyaWFuZ3VsdW0vMk0KVHJpYXNzaWMvNTJNClRyaWNpYS8yTQpUcmlkZW50LzJNClRyaWVzdGUvMk0KVHJpbXVydGkvMk0KVHJpbmEvMk0KVHJpbmlkYWQvMk0KVHJpbmlkYWRpYW4vMTVNUwpUcmluaXR5LzJTTQpUcmlwaXRha2EvMU0KVHJpcG9saS8yTQpUcmlwcGUvMk0KVHJpc2hhLzJNClRyaXN0YW4vMk0KVHJpdG9uLzJNClRyb2JyaWFuZC81TQpUcm9pbHVzLzJNClRyb2phbi8xNU1TClRyb2xsb3BlLzJNClRyb25kaGVpbS8yTQpUcm9waWNhbmEvTQpUcm90c2t5LzJNClRyb3kvMk0KVHJveWVzLzIKVHJ1Y2tlZS8yTQpUcnVkZWF1LzJNClRydWR5LzJNClRydWZmYXV0L00KVHJ1amlsbG8vMk0KVHJ1bWFuLzJNClRydW1idWxsLzJNClRydW1wLzJNClRydXRoL00KVHNpbXNoaWFuLzEyTQpUc2lvbGtvdnNreS8yTQpUc2l0c2loYXIvMk0KVHNvbmdraGFwYS9NClRzd2FuYS8xMk0KVHUvMTJNClR1YW1vdHUvNU0KVHVhcmVnLzEyTQpUdWJtYW4vMk0KVHVja2VyLzJNClR1Y3Nvbi8yTQpUdWN1bWFuL00KVHVkb3IvMTVTTQpUdWUvMTJTClR1ZXMvMU0KVHVlc2RheS8xTVMKVHVsYW5lL00KVHVsbC8yTQpUdWxzYS8yTQpUdWxzaWRhcy9NClR1bXMvTQpUdW5ndXMvMTJNClR1bmd1c2thL00KVHVuaXMvMk0KVHVuaXNpYS8yTQpUdW5pc2lhbi8xNU1TClR1bm5leS8yTQpUdXBpLzEyTQpUdXBwZXJ3YXJlLzFNClR1cHVuZ2F0by8yTQpUdXJnZW5ldi9NClR1cmluLzJNClR1cmluZy8yTQpUdXJrLzE1MlNNClR1cmtlc3Rhbi8yTQpUdXJrZXkvMjE1TQpUdXJraWMvNTJNUwpUdXJraXNoLzI1TQpUdXJrbWVuaXN0YW4vMk0KVHVybG9jay8yTQpUdXJuZXIvMjFNClR1cnBpbi8yTQpUdXNjYWxvb3NhLzJNClR1c2Nhbi81MU0KVHVzY2FueS8yTQpUdXNjYXJvcmEvMTJNUwpUdXNjb24vTQpUdXNrZWdlZS8yMU0KVHVzc2F1ZC9NClR1dC8yTQpUdXRhbmtoYW1lbi8yTQpUdXRzaS8xTQpUdXR1LzJNClR1dmFsdS8yTQpUdXZhbHVhbi8xNTIKVHdhaW4vMk0KVHdlZWQvMk0KVHdlZWRsZWRlZS9NClR3ZWVkbGVkdW0vTQpUd2lsYS8yTQpUd2lua2llcy8xTQpUd2l0dGVyLzIxNE0KVHdpenpsZXJzLzFNClR3cApUeS8yTQpUeWNoby8yTQpUeWxlbm9sLzIxTQpUeWxlci8yTQpUeW5kYWxlLzJNClR5bmRhbGwvMk0KVHlyZS8yTQpUeXJlZS8yTQpUeXJvbGVhbi81MQpUeXJvbmUvMjFNClR5c29uLzJNClUvMTUrMk0KVUFSLzIKVUFXLzIKVUJTLzJNClVDTEEvMk0KVUZPLzFTTQpVSEYvMTUyTQpVSy8yTQpVTC8xNDUyClVOLzJNClVORVNDTy8yTQpVTklDRUYvMk0KVU5JWC8yTQpVUEMvMQpVUEkvMjFNClVQUy8xNDJNClVSTC8xUwpVUy8yMTVNClVTQS8yMU0KVVNBRi8yClVTQi8yMQpVU0NHLzIKVVNEQS8yTQpVU0lBLzIKVVNNQy8yClVTTi8yMQpVU08vMTIKVVNQLzI1MQpVU1BTLzIKVVNTLzEyClVTU1IvMk0KVVQvMjFNClVUQy8yClVWLzUxTQpVYmFuZ2kvMk0KVWJ1bnR1L00KVWNheWFsaS8yTQpVY2NlbGxvL00KVWRhbGwvMk0KVWZhLzJNClVnYW5kYS8yTQpVZ2FuZGFuLzE1TVMKVWlnaHVyLzIxNU0KVWp1bmdwYW5kYW5nL00KVWtyYWluZS8yTQpVa3JhaW5pYW4vNTEyU00KVWxzdGVyLzIxTQpVbHRyYXN1ZWRlLzFNClVseWFub3Zzay8yTQpVbHlzc2VzLzJNClVtYnJpZWwvMk0KVW5kZXJ3b29kLzEyTQpVbmdhdmEvMk0KVW5pY29kZS8yMU0KVW5pbGV2ZXIvTQpVbmlvbi8xMlNNClVuaW9uaXN0ClVuaW9udG93bi8yTQpVbmlyb3lhbC9NClVuaXRhcmlhbi8xNU1TClVuaXRhcmlhbmlzbS8xMk1TClVuaXRhcy9NClVuaXgvMjFTClVudWthbGhhaS9NClVwYW5pc2hhZHMvMU0KVXBkaWtlLzJNClVwam9obi8yTQpVcHRvbi8yTQpVci8yTQpVcmFsLzJTTQpVcmFscy8yTQpVcmFuaWEvMk0KVXJhbnVzLzJNClVyYmFuLzJNClVyZHUvMjVNClVyZXkvMk0KVXJpYWgvMk0KVXJpZWwvMk0KVXJpcy9NClVycXVoYXJ0LzJNClVyc2EvMk0KVXJzdWxhLzJNClVyc3VsaW5lLzFNClVydWd1YXkvMk0KVXJ1Z3VheWFuLzE1TVMKVXJ1bXFpLzJNClVzZW5ldC8yTVMKVXN0aW5vdi8yTQpVdApVdGFoLzJNClV0YWhhbi8xNU1TClV0ZS8yMVNNClV0aWNhLzJNClV0b3BpYS8xU00KVXRvcGlhbi8xMlNNClV0cmVjaHQvMk0KVXRyaWxsby9NClV6YmVrLzE1Mk0KVXpiZWtpc3Rhbi8yTQpVemkvMVNNClYvMStNClZBLzIxNQpWQVQvMU0KVkFYClZBWGVzClZCQS8yTQpWQ1IvMU0KVkQvMU0KVkRULzEKVkRVLzEKVkYvMTUKVkZXLzJNClZHLzUxClZHQS8yMQpWSEYvNTFNClZIUy8xClZJLzEyTQpWSVAvMVNNClZJU1RBClZKLzE0MgpWTEYvMU0KVk9BLzIxClZQLzEyClZULzIxNTQKVlRPTC8xClZhLzJNClZhY2F2aWxsZS8yTQpWYWRlci9NClZhZHV6LzJNClZhbC8xMk0KVmFsYXJpZS8yTQpWYWxkZXovMk0KVmFsZG9zdGEvMk0KVmFsZW5jaWEvMjFTTQpWYWxlbnRpLzJNClZhbGVudGluL00KVmFsZW50aW5lLzIxTQpWYWxlbnRpbm8vMjFNClZhbGVuenVlbGEvMk0KVmFsZXJpYS8yTQpWYWxlcmlhbi8yTQpWYWxlcmllLzIxTQpWYWxlcnkvMk0KVmFsaGFsbGEvMjFNClZhbGl1bS8xTVMKVmFsa3lyaWUvMVNNClZhbGxlam8vMk0KVmFsbGV0dGEvMk0KVmFsb2lzLzJNClZhbHBhcmFpc28vMk0KVmFsdm9saW5lL00KVmFuLzIxTQpWYW5jZS8yTQpWYW5jb3V2ZXIvMk0KVmFuZGFsLzE1Mk1TClZhbmRlcmJpbHQvMk0KVmFuZHlrZS8xTQpWYW5lc3NhLzJNClZhbmcvMk0KVmFudWF0dS8yTQpWYW56ZXR0aS9NClZhcmFuYXNpLzJNClZhcmVzZS8yTQpWYXJnYXMvMk0KVmFzZWxpbmUvMVNNClZhc3F1ZXovMk0KVmFzc2FyLzJNClZhdGljYW4vMjVNClZhdWJhbi9NClZhdWdoYW4vMk0KVmF1Z2huLzJNClZhenF1ZXovMk0KVmVibGVuLzJNClZlZGEvMlNNClZlZGFudGEvMk0KVmVnYS8yMVNNClZlZ2FzLzIxTQpWZWdlbWl0ZS8yTQpWZWxhLzJNClZlbGFzcXVlei8yTQpWZWxhenF1ZXovMk0KVmVsY3JvLzI0TVMKVmVsZXovMk0KVmVsbWEvMk0KVmVsdmVldGEvTQpWZW5ldGlhbi81MTJTTQpWZW5lenVlbGEvMk0KVmVuZXp1ZWxhbi8xNVNNClZlbmljZS8yTQpWZW5uLzJNClZlbnRvbGluL00KVmVudXMvMjFNUwpWZW51c2lhbi8xNTJNClZlcmEvMk0KVmVyYWNydXovMk0KVmVyZGUvMjVNClZlcmRpLzJNClZlcmR1bi8yTQpWZXJpem9uL00KVmVybGFpbmUvTQpWZXJtZWVyLzJNClZlcm1vbnQvMlpNUgpWZXJtb250ZXIvMU0KVmVybi8yTQpWZXJuYS8yTQpWZXJuZS8yTQpWZXJub24vMk0KVmVyb25hLzJNClZlcm9uZXNlLzUxTQpWZXJvbmljYS8yTQpWZXJzYWlsbGVzLzJNClZlc2FsaXVzL00KVmVzcGFzaWFuLzJNClZlc3B1Y2NpL00KVmVzdGEvMk0KVmVzdXZpdXMvMjFNClZpYWNvbS8yTQpWaWFncmEvMk0KVmljLzIxTQpWaWNlbnRlL00KVmljaHkvMjFNClZpY2tpLzJNClZpY2tpZS8yTQpWaWNrc2J1cmcvMk0KVmlja3kvMk0KVmljdG9yLzEyTQpWaWN0b3JpYS8yMU0KVmljdG9yaWFuLzUxTVMKVmljdG9yaWFuaXNtLzEKVmljdG9ydmlsbGUvMk0KVmljdHJvbGEvMU0KVmlkYWwvMk0KVmllbm5hLzJNClZpZW5uZXNlLzUxTQpWaWVudGlhbmUvMk0KVmlldGNvbmcvMjFNClZpZXRtaW5oLzJNClZpZXRuYW0vMjFNClZpZXRuYW1lc2UvNTEyTQpWaWpheWFuYWdhci8yTQpWaWpheWF3YWRhLzJNClZpa2luZy8xMk1TClZpbGEvMk0KVmlsbGEvMlNNClZpbGxhcnJlYWwvMk0KVmlsbGFzL00KVmlsbG9uLzJNClZpbG1hL00KVmlsbml1cy8yTQpWaWx5dWkvMk0KVmluY2UvMk0KVmluY2VudC8yTQpWaW5kZW1pYXRyaXgvMk0KVmluZWxhbmQvTQpWaW5zb24vMk0KVmlvbGEvMk0KVmlvbGV0LzJNClZpcmdpZS8yTQpWaXJnaWwvMk0KVmlyZ2luaWEvMk0KVmlyZ2luaWFuLzUxU00KVmlyZ28vMjFTTQpWaXNhLzIxTQpWaXNhbGlhLzJNClZpc2F5YW5zLzFNClZpc2hudS8yTQpWaXNpZ290aC8xTQpWaXNpZ290aHMvMQpWaXN0dWxhLzJNClZpdGltLzJNClZpdG8vTQpWaXR1cy8yTQpWaXZhbGRpLzJNClZpdmVrYW5hbmRhL00KVml2aWFuLzJNClZpdmllbm5lLzJNClZsYWQvMk0KVmxhZGltaXIvMk0KVmxhZGl2b3N0b2svMk0KVmxhbWluY2svTQpWbGFzaWMvTQpWb0lQLzIKVm9ndWUvMk0KVm9sY2tlci9NClZvbGRlbW9ydC8xNE0KVm9sZ2EvMjFNClZvbGdvZ3JhZC8yTQpWb2xrc3dhZ2VuLzIxTQpWb2xzdGVhZC8yTQpWb2x0YS8yTQpWb2x0YWlyZS8yTQpWb2x2by8yMU0KVm9uZGEvMk0KVm9ubmVndXQvMk0KVm9yb25lemgvMk0KVm9yc3Rlci8yTQpWb3lhZ2VyL00KVnVpdHRvbi8yTQpWdWxjYW4vMjFNClZ1bGcKVnVsZ2F0ZS8yU00KV0EvMjEKV0FDLzIxCldBU1AvMU0KV0FUUy8xTQpXQy8xCldITy8yTQpXSS8yCldNRC8xCldOVy8xNU0KV1AvMjEKV1NXLzE1TQpXVE8vMgpXVi8yCldXLzEyCldXSS8yCldXSUkvMgpXV1cvMk0KV1kvMgpXWVNJV1lHLzEKV2FiYXNoLzJNCldhYy8xCldhY28vMjFNCldhZGUvMk0KV2FnbmVyLzJNCldhZ25lcmlhbi81MU0KV2FoaGFiaS8xNU0KV2Fpa2lraS8yTQpXYWl0ZS8yTQpXYWtlLzJNCldha3NtYW4vTQpXYWxkL01OCldhbGRlbWFyLzJNCldhbGRlbi8yTQpXYWxkZW5zaWFuLzUxTQpXYWxkaGVpbS8yTQpXYWxkby8yTQpXYWxkb3JmLzEyTQpXYWxlcy8yTQpXYWxlc2EvTQpXYWxncmVlbi9TTQpXYWxncmVlbnMvTQpXYWxrZXIvMjFNCldhbGttYW4vMjFNCldhbGwvMlNNUgpXYWxsYWNlLzJNCldhbGxlbnN0ZWluL00KV2FsbGVyLzJNCldhbGxpcy8yTQpXYWxsb29uLzIxNU0KV2FsbHMvMk0KV2FsbWFydC80TQpXYWxwb2xlLzJNCldhbHB1cmdpc25hY2h0LzFNCldhbHNoLzJNCldhbHQvMjFNUloKV2FsdGVyLzJNCldhbHRlcnMvMk0KV2FsdG9uLzJNCldhbmFtYWtlci8yTQpXYW5kYS8yTQpXYW5nLzJNCldhbmtlbC9NCldhcmQvMk0KV2FyZS8yTUcKV2FyaG9sLzFNCldhcmluZy8yTQpXYXJuZXIvMk0KV2FycmVuLzJNCldhcnNhdy8yTQpXYXJ3aWNrLzJNCldhc2F0Y2gvMk0KV2FzaC8yTQpXYXNoaW5ndG9uLzIxTQpXYXNoaW5ndG9uaWFuLzUxTVMKV2Fzc2VybWFubi8yTQpXYXRlcmJ1cnkvMk0KV2F0ZXJmb3JkLzJNCldhdGVyZ2F0ZS8yNE0KV2F0ZXJsb28vMjFNUwpXYXRlcnMvMk0KV2F0ZXJ0b3duLzJNCldhdGtpbnMvMk0KV2F0c29uLzJNCldhdHNvbnZpbGxlLzJNCldhdHQvMlNNCldhdHRlYXUvMk0KV2F0dHMvMk0KV2F0dXNpLzFNCldhdWdoLzJNCldhdXNhdS8yTQpXYXZlCldheW5lLzJNCldheW5lc2Jvcm8vMk0KV2VhdmVyLzJNCldlYi8yTVIKV2ViYi8yTQpXZWJlci8yTQpXZWJlcm4vTQpXZWJzdGVyLzJNUwpXZWQvMU0KV2VkZGVsbC8yTQpXZWRnd29vZC8yTQpXZWRuZXNkYXkvMTJNUwpXZWVrcy8yTQpXZWhybWFjaHQvMk0KV2VpLzJNCldlaWVyc3RyYXNzLzJNCldlaWxsL00KV2VpbmJlcmcvMk0KV2VpcnRvbi8yTQpXZWlzcy8yTQpXZWlzc211bGxlci9NCldlaXptYW5uL00KV2VsZG9uLzJNCldlbGxhbmQvMk0KV2VsbGVyLzJNCldlbGxlcy8yTQpXZWxsaW5ndG9uLzIxU00KV2VsbHMvMk0KV2Vsc2gvNTEyTQpXZWxzaG1hbi8xTQpXZWxzaG1lbi8xTQpXZWxzaHdvbWFuLzEKV2VuYXRjaGVlLzJNCldlbmRlbGwvMk0KV2VuZGkvMk0KV2VuZHkvMk0KV2VzYWsvMk0KV2VzbGV5LzJNCldlc2xleWFuLzUxMk0KV2Vzc2V4LzJNCldlc3Nvbi8yTQpXZXN0LzJTTQpXZXN0ZXJuLzUxMk1SUwpXZXN0aW5naG91c2UvMk0KV2VzdG1pbnN0ZXIvMk0KV2VzdG9uLzJNCldlc3RwaGFsaWEvMk0KV2V5ZGVuL00KV2V6ZW4vMk0KV2hhcnRvbi8yTQpXaGVhdGllcy8yTQpXaGVhdHN0b25lLzJNCldoZWVsZXIvMk0KV2hlZWxpbmcvMk0KV2hpZy8xU00KV2hpcHBsZS8yMU0KV2hpcmxwb29sL00KV2hpc3RsZXIvMk0KV2hpdGFrZXIvMk0KV2hpdGUvMjUxU00KV2hpdGVmaWVsZC8yTQpXaGl0ZWhhbGwvMk0KV2hpdGVoZWFkLzIxTQpXaGl0ZWhvcnNlLzJNCldoaXRlbGV5LzJNCldoaXRmaWVsZC8yTQpXaGl0bGV5LzJNCldoaXRtYW4vMk0KV2hpdG5leS8yTQpXaGl0c3VuZGF5LzEyTVMKV2hpdHRpZXIvMk0KV2lGaS8xNApXaWNjYS8yTQpXaWNoaXRhLzEyTQpXaWVtYXIvTQpXaWVzZWwvMk0KV2llc2VudGhhbC9NCldpZ2dpbnMvMk0KV2lnbmVyLzJNCldpaS8xTQpXaWtpbGVha3MKV2lraXBlZGlhLzIxNE0KV2lsYmVyZm9yY2UvMk0KV2lsYmVydC8yTQpXaWxidXIvMk0KV2lsYnVybi8yTQpXaWxjb3gvMk0KV2lsZGEvTQpXaWxkZS8yTVIKV2lsZGVyLzJNCldpbGVzLzJNCldpbGV5LzJNCldpbGZvcmQvMk0KV2lsZnJlZC8yTQpXaWxmcmVkby9NCldpbGhlbG0vMk0KV2lsaGVsbWluYS8yTQpXaWxrZXJzb24vMk0KV2lsa2VzLzJNCldpbGtpbnMvMk0KV2lsa2luc29uLzJNCldpbGwvMjFNCldpbGxhLzJNCldpbGxhbWV0dGUvMk0KV2lsbGFyZC8yTQpXaWxsZW1zdGFkLzJNCldpbGxpYW0vMTJTTQpXaWxsaWFtcy8yTQpXaWxsaWFtc2J1cmcvMk0KV2lsbGlhbXNvbi8yTQpXaWxsaWFtc3BvcnQvMk0KV2lsbGllLzJNCldpbGxpcy8yTQpXaWxseS8yTQpXaWxtYS8yTQpXaWxtZXIvMk0KV2lsbWluZ3Rvbi8yTQpXaWxzb24vMk0KV2lsc29uaWFuLzVNCldpbHRvbi8yMU0KV2ltYmxlZG9uLzJNCldpbXNleS9NCldpbmNoZWxsLzJNCldpbmNoZXN0ZXIvMjFNUwpXaW5kYnJlYWtlci9NCldpbmRleC8xNE0KV2luZGhvZWsvMk0KV2luZG93cy8yTQpXaW5kc29yLzJTTQpXaW5kd2FyZC9NCldpbmVzYXAvMU0KV2luZnJlZC8yTQpXaW5mcmV5LzJNCldpbmlmcmVkLzJNCldpbmtsZS8yTQpXaW5uZWJhZ28vMTJNCldpbm5pZS8yTQpXaW5uaXBlZy8yTQpXaW5zdG9uLzJNCldpbnRlcnMvMk0KV2ludGhyb3AvMk0KV2lzLzIKV2lzYy8yCldpc2NvbnNpbi8yTQpXaXNjb25zaW5pdGUvNTFNUwpXaXNlLzJNCldpdHQvMk0KV2l0dGdlbnN0ZWluLzJNCldpdHdhdGVyc3JhbmQvMk0KV20vTQpXb2JlZ29uL00KV29kZWhvdXNlLzJNCldvbGYvMk0KV29sZmUvMk0KV29sZmYvMk0KV29sZmdhbmcvMk0KV29sbG9uZ29uZy8yTQpXb2xsc3RvbmVjcmFmdC9NCldvbHNleS8yTQpXb2x2ZXJoYW1wdG9uLzIKV29uZGVyLzFNCldvbmRlcmJyYS8xTQpXb25nLzJNCldvb2QvMlNNCldvb2RhcmQvMk0KV29vZGh1bGwvMk0KV29vZGxhbmQvMk0KV29vZHJvdy8yTQpXb29kcy8yTQpXb29kc3RvY2svMk0KV29vZHdhcmQvMk0KV29vbGYvMk0KV29vbGl0ZS9NCldvb2xvbmdvbmcvTQpXb29sd29ydGgvTQpXb29zdGVyLzJNCldvb3Rlbi8yTQpXb3JjZXN0ZXIvMjFTTQpXb3JjZXN0ZXJzaGlyZS8yMU0KV29yZFByZXNzLzIxTQpXb3Jkc3dvcnRoLzJNCldvcmttYW4vMk0KV29ybXMvMk0KV290YW4vMk0KV292b2thLzJNCldvem5pYWsvMk0KV296emVjay9NCldyYW5nZWxsLzJNCldyZW4vMjFNCldyaWdodC8yTQpXcmlnbGV5LzJNCldyb2NsYXcvMk0KV3UvMk0KV3VoYW4vMk0KV3VybGl0emVyLzIxTQpXeWF0dC8yTQpXeWNoZXJsZXkvMk0KV3ljbGlmZmUvMk0KV3lldGgvMk0KV3lsaWUvMk0KV3lubi8yTQpXeW8KV3lvbWluZy8yTQpXeW9taW5naXRlLzUxU00KWC8yMTVNClhFbWFjcy9NClhMLzE1TQpYTUwvMgpYUy8xNQpYWEwvMTUKWGFtYXJpbi9NClhhbmFkdS8yMU0KWGFudGhpcHBlLzFNClhhdmllci8yTQpYZS9TTQpYZW5ha2lzLzJNClhlbmlhLzJNClhlbm9waG9uLzJNClhlcm94LzE0TVMKWGVyeGVzLzJNClhob3NhLzFNClhpJ2FuLzJNClhpYW4vMjE1U00KWGlhb3BpbmcvTQpYaW1lbmVzL00KWGluZ3UvMjFNClhpbmppYW5nLzJNClhpb25nbnUvMU0KWGl6YW5nLzJNClhtYXMvMjRNUwpYb2NoaXBpbGxpL00KWHV6aG91LzJNClkvMTJNCllNQ0EvMjFNCllNSEEvMgpZTU1WLwpZVC8yMQpZV0NBLzJNCllXSEEvMgpZYWNjL00KWWFob28vMTRNCllhaHR6ZWUvMjFNCllhaHdlaC8yTQpZYWtpbWEvMTJNCllha3V0LzEyTQpZYWt1dHNrLzJNCllhbGUvMk0KWWFsb3cvTQpZYWx0YS8yTQpZYWx1LzJNCllhbWFnYXRhLzJNCllhbWFoYS8yMU0KWWFtb3Vzc291a3JvLzJNCllhbmcvMk0KWWFuZ29uLzJNCllhbmd0emUvMk0KWWFuay8xU00KWWFua2VlLzE0U00KWWFvYmFuZy9NCllhb3VuZGUvMk0KWWFxdWkvMTJNCllhcmVuLzIKWWFyb3NsYXZsLzJNCllhdGFyby9NCllhdGVzLzJNCllhdWNvLzJNClliL00KWWVhZ2VyLzJNClllYXRzLzJNCllla2F0ZXJpbmJ1cmcvMk0KWWVsbG93a25pZmUvMk0KWWVsbG93c3RvbmUvMk0KWWVsdHNpbi8yTQpZZW1lbi8yTQpZZW1lbmkvNTFTTQpZZW1lbml0ZS8xClllbmlzZWkvMk0KWWVyZXZhbi8yTQpZZXJrZXMvMk0KWWVzZW5pYS9NCllldnR1c2hlbmtvL00KWWdnZHJhc2lsLzJNCllpZGRpc2gvNTJNClltaXIvMk0KWW9kYS8yTQpZb2tuYXBhdGF3cGhhL00KWW9rby8yTQpZb2tvaGFtYS8yTQpZb2xhbmRhLzJNCllvbmcvMk0KWW9ua2Vycy8yTQpZb3JrLzJNCllvcmtpZS8xTQpZb3Jrc2hpcmUvMjFNUwpZb3JrdG93bi8yTQpZb3J1YmEvMTJNCllvc2VtaXRlLzJNCllvc3Nhcmlhbi9NCllvdVR1YmUvMjE0TQpZb3VuZy8yTQpZb3VuZ3N0b3duLzJNCllwcmVzLzJNCllwc2lsYW50aS8yTQpZdWFuLzJNCll1Y2F0YW4vMk0KWXVnby8yTQpZdWdvc2xhdi81MTJNUwpZdWdvc2xhdmlhLzJNCll1Z29zbGF2aWFuLzUxU00KWXVrb24vMjFNCll1bGUvMlNNCll1bGV0aWRlLzFNUwpZdW1hLzIxU00KWXVubmFuLzJNCll1cmkvMk0KWXZlcy9NCll2ZXR0ZS8yMU0KWXZvbm5lLzJNClovMVNNTlhUClphY2hhcmlhaC8yTQpaYWNoYXJ5LzJNClphY2hlcnkvMk0KWmFncmViLzJNClphaXJlLzJNClphaXJpYW4vMQpaYW1iZXppLzJNClphbWJpYS8yTQpaYW1iaWFuLzE1U00KWmFtYm9uaS8xTQpaYW1lbmhvZi8yTQpaYW1vcmEvMk0KWmFuZS8yTQpaYW51Y2svTQpaYW56aWJhci8yTQpaYXBhdGEvMk0KWmFwb3Jvemh5ZS8yTQpaYXBvdGVjLzEyNU0KWmFwcGEvMk0KWmFyYS8yTQpaYXJhdGh1c3RyYS8yTQpaZWFsYW5kLzJNClplYmVkZWUvMk0KWmVjaGFyaWFoLzJNClplZGVraWFoLzJNClplZG9uZy9NClplZmZpcmVsbGkvTQpaZWtlLzJNClplbGlnLzFNClplbG1hLzJNClplbi8yMTVNClplbmdlci8yTQpaZW5vLzI1TQpaZXBoYW5pYWgvMk0KWmVwaHlyaGlsbHMvTQpaZXBoeXJ1cy8yTQpaZXN0L00KWmV1cy8yTQpNYWlhLzJNClNlbWVsZS8yTQpDaGlyb24vMk0KS2F0bmlzcy9NCkNsb3VkZmxhcmUvTQpUTFMvMTIKRXZlcmRlZW4vTQpwc2V1ZG9yYW5kb20vNVAKY291bnRlcmludHVpdGl2ZWx5LwpMZXRvLzJNCk91cmFub3MvTQpIZWNhdG9uY2hlaXJlcy8xTQpUaGVpYS8yTQpaaGRhbm92LzIKWmhlamlhbmcvMk0KWmhlbmd6aG91LzJNClpoaXZhZ28vMk0KWmh1a292LzJNClppYm8vMk0KWmllZ2ZlbGQvTQpaaWVnbGVyLzJNClppZ2d5LzJNClppa2EvMjEKWmltYmFid2UvMk0KWmltYmFid2Vhbi8xNVNNClppbW1lcm1hbi8yTQpaaW5mYW5kZWwvTQpaaW9uLzJTTQpaaW9uaXNtLzFTTQpaaW9uaXN0LzE1U00KWmlwbG9jLzFNClpuL00KWm9lLzJNClpvbGEvMk0KWm9sbHZlcmVpbi8xTQpab2xvZnQvMk0KWm9tYmEvTQpab3JuLzJNClpvcm9hc3Rlci8yTQpab3JvYXN0cmlhbi8xNU1TClpvcm9hc3RyaWFuaXNtLzJTTQpab3Jyby8yMU0KWm9zbWEvMk0KWnIvTQpac2lnbW9uZHkvTQpadWJlbmVsZ2VudWJpLzJNClp1YmVuZXNjaGFtYWxpLzJNClp1a29yLzJNClp1bHUvMTI1U00KWnVsdWxhbmQvMgpadW5pLzUxMk0KWnVyaWNoLzJNClp3aW5nbGkvMk0KWndvcnlraW4vTQpaeXJ0ZWMvTQpaeXVnYW5vdi9NClp6egphLy0rNDU3U34KYWFoLzE0CmFhcmR2YXJrLzFTTQphYi8xNCtTRFkKYWJhY2svMQphYmFjdXMvMU1TCmFiYWZ0LysKYWJhbG9uZS8xU00KYWJhbmRvbi80MUxTREcKYWJhbmRvbm1lbnQvMU0KYWJhc2UvNExHRFMKYWJhc2VtZW50LzFNCmFiYXNoLzRHTERTCmFiYXNoZWQvNTRVWQphYmFzaG1lbnQvMU0KYWJhdGUvNDFMR0RTCmFiYXRlZC80NVUKYWJhdGVtZW50LzFNCmFiYXR0b2lyLzFNUwphYmJlLzFTTQphYmJlc3MvMU1TCmFiYmV5LzFNUwphYmJvdC8xTVMKYWJici8xCmFiYnJldi8xUwphYmJyZXZpYXRlLzQ1MURTR05YCmFiYnJldmlhdGlvbi8xTQphYmRpY2F0ZS80R05EU1gKYWJkaWNhdGlvbi8xTQphYmRvbWVuLzFTTQphYmRvbWluYWwvNTEKYWJkdWN0LzREU0cKYWJkdWN0ZWUvMU1TCmFiZHVjdGlvbi8xU00KYWJkdWN0b3IvMU1TCmFiZWFtLzUrCmFiZXJyYW50LzUxCmFiZXJyYXRpb24vMU1TCmFiZXJyYXRpb25hbC81CmFiZXQvNDFTCmFiZXR0ZWQvNAphYmV0dGluZy80MQphYmV0dG9yLzFTTQphYmV5YW5jZS8xTQphYmhvci80UwphYmhvcnJlZC80NQphYmhvcnJlbmNlLzFNCmFiaG9ycmVudC81WQphYmhvcnJpbmcvMTQKYWJpZGFuY2UvMU0KYWJpZGUvNEdTCmFiaWRpbmcvNTQxWQphYmlsaXR5LzFJRU1TCmFiamVjdC81MTRZUAphYmplY3Rpb24vMU0KYWJqZWN0bmVzcy8xTQphYmp1cmF0aW9uLzFTTQphYmp1cmF0b3J5LzUKYWJqdXJlLzRaR0RSUwphYmp1cmVyLzFNCmFibGF0ZS80WEdOVkRTCmFibGF0aW9uLzFNCmFibGF0aXZlLzUxTVMKYWJsYXplLzUKYWJsZS81NDFVVAphYmxlci81CmFibG9vbS81CmFibHV0aW9uLzFTTQphYm5lZ2F0ZS80R05EUwphYm5lZ2F0aW9uLzFNCmFibm9ybWFsLzUxWQphYm5vcm1hbGl0eS8xU00KYWJvYXJkLysKYWJvZGUvMTRNUwphYm9saXNoLzRHRFMKYWJvbGl0aW9uLzFNCmFib2xpdGlvbmlzbS8xTQphYm9saXRpb25pc3QvNTFTTQphYm9taW5hYmxlLzUKYWJvbWluYWJseS8KYWJvbWluYXRlLzU0RFNHTlgKYWJvbWluYXRpb24vMU0KYWJvcmlnaW5hbC81MU1TCmFib3JpZ2luZS8xU00KYWJvcm5pbmcvNQphYm9ydC8xNEdWRFMKYWJvcnRpb24vMU1TCmFib3J0aW9uaXN0LzFNUwphYm9ydGl2ZS81MTRZCmFib3VuZC80RFNHCmFib3V0Lys1fgphYm92ZS8rNTFNCmFib3ZlYm9hcmQvNQphYnJhY2FkYWJyYS8xTQphYnJhZGUvNEdEUwphYnJhc2lvbi8xTVMKYWJyYXNpdmUvNTFNWVBTCmFicmFzaXZlbmVzcy8xTQphYnJlYXN0LzUrCmFicmlkZ2UvNERTRwphYnJpZGdtZW50LzFNUwphYnJvYWQvMSs1CmFicm9nYXRlLzQ1WEdORFMKYWJyb2dhdGlvbi8xTQphYnJvZ2F0b3IvMU1TCmFicnVwdC81NDFUUFJZCmFicnVwdG5lc3MvMU0KYWJzLzUxNE0KYWJzY2Vzcy8xNE1EU0cKYWJzY2lzc2EvMVNNCmFic2Npc3Npb24vMU0KYWJzY29uZC80WkdTRFIKYWJzY29uZGVyLzFNCmFic2VpbC80MU1EU0cKYWJzZW5jZS8xU00KYWJzZW50LzUxKzREWVNHCmFic2VudGVlLzE1TVMKYWJzZW50ZWVpc20vMU0KYWJzZW50bWluZGVkLzVZUAphYnNlbnRtaW5kZWRuZXNzLzFNCmFic2ludGhlLzFNCmFic29sdXRlLzUxUE1ZVE5TCmFic29sdXRlbmVzcy8xTQphYnNvbHV0aW9uLzFNCmFic29sdXRpc20vMU0KYWJzb2x1dGlzdC8xNU1TCmFic29sdmUvNERTRwphYnNvcmIvNEFHRFMKYWJzb3JiYW5jZS8xCmFic29yYmVuY3kvMU0KYWJzb3JiZW50LzUxU00KYWJzb3JiaW5nLzU0WQphYnNvcnB0aW9uLzFNCmFic29ycHRpdmUvNTEKYWJzdGFpbi80RFJaR1MKYWJzdGFpbmVyLzFNCmFic3RlbWlvdXMvNVBZCmFic3RlbWlvdXNuZXNzLzFNCmFic3RlbnRpb24vMU1TCmFic3RpbmVuY2UvMU0KYWJzdGluZW50LzUxCmFic3RyYWN0LzE1NEdTUE1EWQphYnN0cmFjdGVkLzU0WVAKYWJzdHJhY3RlZG5lc3MvMU0KYWJzdHJhY3Rpb24vMVNNCmFic3RyYWN0bmVzcy8xTVMKYWJzdHJ1c2UvNVlQCmFic3RydXNlbmVzcy8xTQphYnN1cmQvNTFUUFJZCmFic3VyZGlzdC8xNU1TCmFic3VyZGl0eS8xU00KYWJzdXJkbmVzcy8xTQphYnVuZGFuY2UvMVNNCmFidW5kYW50LzVZCmFidXNlJ3MKYWJ1c2UvMTRFR1ZEUwphYnVzZXIvMU1TCmFidXNpdmUvNVlQCmFidXNpdmVuZXNzLzFNCmFidXQvNFNMCmFidXRtZW50LzFNUwphYnV0dGVkLzQKYWJ1dHRpbmcvNTQxCmFidXp6LzUKYWJ5c21hbC81WQphYnlzcy8xTVMKYWJ5c3NhbC81CmFjLzE1CmFjYWNpYS8xTVMKYWNhZGVtZS8xTQphY2FkZW1pYS8xTQphY2FkZW1pYy81MVNNCmFjYWRlbWljYWwvNTFZCmFjYWRlbWljaWFuLzFNUwphY2FkZW15LzFTTQphY2FudGh1cy8xTVMKYWNjZWRlLzRHRFMKYWNjZWxlcmF0ZS80NUdOWERTCmFjY2VsZXJhdGlvbi8xTQphY2NlbGVyYXRvci8xU00KYWNjZW50LzE0TURTRwphY2NlbnRlZC80NVUKYWNjZW50dWFsLzUKYWNjZW50dWF0ZS80R05EUwphY2NlbnR1YXRpb24vMU0KYWNjZXB0LzQ1MURTQkcKYWNjZXB0YWJpbGl0eS8xTQphY2NlcHRhYmxlbmVzcy8xTQphY2NlcHRhYmx5L1UKYWNjZXB0YW5jZS8xU00KYWNjZXB0YXRpb24vMU1TCmFjY2VwdGVkLzQ1VQphY2Nlc3MvMTRNRFNHCmFjY2Vzc2liaWxpdHkvMUlNCmFjY2Vzc2libGUvNUkKYWNjZXNzaWJseS9JCmFjY2Vzc2lvbi8xNE1ER1MKYWNjZXNzb3JpemUvNERTRwphY2Nlc3NvcnkvNTFTTQphY2NpZGVudC8xNU1TCmFjY2lkZW50YWwvNTFTTVkKYWNjbGFpbS80MU1ER1MKYWNjbGFtYXRpb24vMU0KYWNjbGltYXRlLzREU0dOCmFjY2xpbWF0aW9uLzFNCmFjY2xpbWF0aXphdGlvbi8xTQphY2NsaW1hdGl6ZS80RFNHCmFjY2xpdml0eS8xU00KYWNjb2xhZGUvMTRTTQphY2NvbW1vZGF0ZS80NVhHTkRTCmFjY29tbW9kYXRpbmcvNTRZCmFjY29tbW9kYXRpb24vMU0KYWNjb21wYW5pZWQvNDVVCmFjY29tcGFuaW1lbnQvMU1TCmFjY29tcGFuaXN0LzFTTQphY2NvbXBhbnkvNERTRwphY2NvbXBsaWNlLzFTTQphY2NvbXBsaXNoLzREU0xHCmFjY29tcGxpc2hlZC81NFUKYWNjb21wbGlzaG1lbnQvMU1TCmFjY29yZC8xNEdNRFMKYWNjb3JkYW5jZS8xTQphY2NvcmRhbnQvNQphY2NvcmRpbmcvNDVZCmFjY29yZGlvbi8xNE1TCmFjY29yZGlvbmlzdC8xTVMKYWNjb3N0LzQxR01EUwphY2NvdW50LzE0TURTQkcKYWNjb3VudGFiaWxpdHkvMU0KYWNjb3VudGFibGUvNVUKYWNjb3VudGFuY3kvMU0KYWNjb3VudGFudC8xNU1TCmFjY291bnRlZC80VQphY2NvdW50aW5nLzQxTQphY2NvdXRlci80U0dECmFjY291dGVybWVudHMvMU0KYWNjcmVkaXQvNFNHRAphY2NyZWRpdGF0aW9uLzFNCmFjY3JlZGl0ZWQvNDVVCmFjY3JldGlvbi8xTVMKYWNjcnVhbC8xTVMKYWNjcnVlLzQxR0RTCmFjY3QvMQphY2N1bHR1cmF0ZS80RFNHTgphY2N1bHR1cmF0aW9uLzFNCmFjY3VtdWxhdGUvNDVYR05WRFMKYWNjdW11bGF0aW9uLzFNCmFjY3VtdWxhdG9yLzFNUwphY2N1cmFjeS8xSU0KYWNjdXJhdGUvNUlZCmFjY3VyYXRlbmVzcy8xTQphY2N1cnNlZC81NFAKYWNjdXJzZWRuZXNzLzFNCmFjY3VzYXRpb24vMU1TCmFjY3VzYXRpdmUvNTFNUwphY2N1c2F0b3J5LzUKYWNjdXNlLzQxWkdEUlMKYWNjdXNlci8xTQphY2N1c2luZy80NTFZCmFjY3VzdG9tLzQxRFNHCmFjY3VzdG9tZWQvNTRVCmFjZS8xNDVEU01HCmFjZXJiYXRlLzU0RFNHCmFjZXJiaWMvNQphY2VyYmljYWxseS8KYWNlcmJpdHkvMU0KYWNldGFtaW5vcGhlbi8xTQphY2V0YXRlLzFNUwphY2V0aWMvNQphY2V0b25lLzFNCmFjZXRvbmljLzUKYWNldHlsLzEKYWNldHlsZW5lLzFNCmFjaGUvNDFEU01HCmFjaGVuZS8xTVMKYWNoaWV2YWJsZS81VQphY2hpZXZlLzRCTFpHRFJTCmFjaGlldmVtZW50LzFTTQphY2hpZXZlci8xTQphY2hpbmcvNDUxWQphY2hvby8xNE0KYWNocm9tYXRpYy81CmFjaHkvNVRSCmFjaWQvNTFTTVkKYWNpZGljLzUKYWNpZGlmeS80R0RTCmFjaWRpdHkvMU0KYWNpZG9zaXMvMU0KYWNpZHVsb3VzLzUKYWNrbm93bGVkZ2UvNERTRwphY2tub3dsZWRnZWQvNTRVCmFja25vd2xlZGdtZW50LzFTTQphY21lLzFTTQphY25lLzFNCmFjb2x5dGUvMU1TCmFjb25pdGUvMU1TCmFjb3JuLzFNUwphY291c3RpYy81MVMKYWNvdXN0aWNhbC81WQphY291c3RpY3MvMU0KYWNxdWFpbnQvNDVBR1NECmFjcXVhaW50YW5jZS8xU00KYWNxdWFpbnRhbmNlc2hpcC8xTQphY3F1YWludGVkLzU0VQphY3F1aWVzY2UvNERTRwphY3F1aWVzY2VuY2UvMU0KYWNxdWllc2NlbnQvNVkKYWNxdWlyZS80WkdCRFJTTAphY3F1aXJlbWVudC8xTQphY3F1aXNpdGlvbi8xTVMKYWNxdWlzaXRpdmUvNVlQCmFjcXVpc2l0aXZlbmVzcy8xTQphY3F1aXQvNFMKYWNxdWl0dGFsLzFNUwphY3F1aXR0ZWQvNDUKYWNxdWl0dGluZy80CmFjcmUvMVNNCmFjcmVhZ2UvMU1TCmFjcmlkLzVQVFJZCmFjcmlkaXR5LzFNCmFjcmlkbmVzcy8xTQphY3JpbW9uaW91cy81WVAKYWNyaW1vbmlvdXNuZXNzLzFNCmFjcmltb255LzFNCmFjcm9iYXQvMTRNUwphY3JvYmF0aWMvNVMKYWNyb2JhdGljYWxseS8KYWNyb2JhdGljcy8xTQphY3JvbnltLzE0TVMKYWNyb3Bob2JpYS8xTQphY3JvcG9saXMvMU1TCmFjcm9zcy8rMQphY3Jvc3RpYy8xNVNNCmFjcnlsYW1pZGUvMQphY3J5bGljLzUxTVMKYWN0J3MKYWN0LzE0QVNER1YKYWN0aW5nLzU0MU0KYWN0aW5pdW0vMU0KYWN0aW9uLzE1NEFTTQphY3Rpb25hYmxlLzUxCmFjdGl2YXRlLzRJQ0FOR1NECmFjdGl2YXRpb24vMUlDQU0KYWN0aXZhdG9yLzFNUwphY3RpdmUncwphY3RpdmUvNTFJS1kKYWN0aXZlbmVzcy8xTQphY3RpdmVzLzEKYWN0aXZpc20vMU0KYWN0aXZpc3QvMTVNUwphY3Rpdml0aWVzLzEKYWN0aXZpdHkvMUlNCmFjdG9yLzFBTVMKYWN0cmVzcy8xTVMKYWN0dWFsLzUxWQphY3R1YWxpdHkvMVNNCmFjdHVhbGl6YXRpb24vMU0KYWN0dWFsaXplLzRHRFMKYWN0dWFyaWFsLzUKYWN0dWFyeS8xU00KYWN0dWF0ZS80R05EUwphY3R1YXRpb24vMU0KYWN0dWF0b3IvMVNNCmFjdWl0eS8xTQphY3VtZW4vMU0KYWN1cHJlc3N1cmUvMU0KYWN1cHVuY3R1cmUvMTRNCmFjdXB1bmN0dXJpc3QvMVNNCmFjdXRlLzUxNFBNWVRSUwphY3V0ZW5lc3MvMU0KYWN5Y2xvdmlyLzFNCmFjeWwvMQphZC8xK1NNCmFkYWdlLzFNUwphZGFnaW8vMTVNUwphZGFtYW50LzUxTVkKYWRhcHQvNDVCWkdWRFJTCmFkYXB0YWJpbGl0eS8xTQphZGFwdGF0aW9uLzFNUwphZGFwdGVyLzFNCmFkYXB0aW9uLzFTCmFkZC80MVNEUkJaRwphZGRlbmQvMTRNUwphZGRlbmRhLzEKYWRkZW5kdW0vMU0KYWRkZXIvMU0KYWRkaWN0LzE0R1ZNRFMKYWRkaWN0aW9uLzFTTQphZGRpdGlvbi8xU00KYWRkaXRpb25hbC81MVkKYWRkaXRpdmUvNTFTTQphZGRsZS80NTFHRFMKYWRkcmVzcydzCmFkZHJlc3MvMTRBR0RTCmFkZHJlc3NhYmxlLzUKYWRkcmVzc2VkLzU0VQphZGRyZXNzZWUvMVNNCmFkZHVjZS80R0RTCmFkZW5pbmUvMU0KYWRlbm9jYXJjaW5vbWEvMQphZGVub2lkLzUxU00KYWRlbm9pZGFsLzUKYWRlcHQvNTFNWVBTCmFkZXB0bmVzcy8xTQphZGVxdWFjeS8xSU0KYWRlcXVhdGUvNTRJWQphZGVxdWF0ZW5lc3MvMU0KYWRoZXJlLzRHRFMKYWRoZXJlbmNlLzFNCmFkaGVyZW50LzUxU00KYWRoZXNpb24vMU0KYWRoZXNpdmUvNTFQU00KYWRoZXNpdmVuZXNzLzFNCmFkaWFiYXRpYy81MQphZGlldS8xTVMKYWRpb3MvMTQKYWRpcG9zZS81MQphZGovMQphZGphY2VuY3kvMU0KYWRqYWNlbnQvNTErWQphZGplY3RpdmFsLzUxWQphZGplY3RpdmUvMTU0TVMKYWRqb2luLzRHRFMKYWRqb3Vybi80REdMUwphZGpvdXJubWVudC8xU00KYWRqdWRnZS80R0RTCmFkanVkaWNhdGUvNEdOVlhEUwphZGp1ZGljYXRpb24vMU0KYWRqdWRpY2F0b3IvMVNNCmFkanVkaWNhdG9yeS81CmFkanVuY3QvMTU0TVMKYWRqdXJhdGlvbi8xTVMKYWRqdXJlLzRHRFMKYWRqdXN0LzRBR0RTTAphZGp1c3RhYmxlLzUxCmFkanVzdGVyLzFTTQphZGp1c3RtZW50LzFBTVMKYWRqdXRhbnQvMTVTTQphZG1hbi8xTQphZG1lbi8xCmFkbWluLzE0UwphZG1pbmlzdGVyLzRER1MKYWRtaW5pc3RyYXRlLzRYRFNHTlYKYWRtaW5pc3RyYXRpb24vMU0KYWRtaW5pc3RyYXRpdmUvNVkKYWRtaW5pc3RyYXRvci8xTVMKYWRtaXJhYmx5LwphZG1pcmFsLzFNUwphZG1pcmFsdHkvMU0KYWRtaXJhdGlvbi8xTQphZG1pcmUvNEJaR0RSUwphZG1pcmVyLzFNCmFkbWlyaW5nLzU0MVkKYWRtaXNzaWJpbGl0eS8xSU0KYWRtaXNzaWJsZS81SQphZG1pc3NpYmx5LwphZG1pc3Npb24vMUFNCmFkbWlzc2lvbnMvMQphZG1pdC80QVMKYWRtaXR0YW5jZS8xTQphZG1pdHRlZC80WQphZG1pdHRpbmcvNDFBCmFkbWl4LzQxR0RTCmFkbWl4dHVyZS8xU00KYWRtb25pc2gvNExEU0cKYWRtb25pc2htZW50LzFNUwphZG1vbml0aW9uLzFNUwphZG1vbml0b3J5LzUKYWRvLzFNCmFkb2JlLzFNUwphZG9sZXNjZW5jZS8xU00KYWRvbGVzY2VudC81MVNNCmFkb3B0LzRBR1ZEUwphZG9wdGFibGUvNTEKYWRvcHRlci8xTVMKYWRvcHRpb24vMVNNCmFkb3JhYmxlbmVzcy8xTQphZG9yYWJseS8KYWRvcmF0aW9uLzFNCmFkb3JlLzRCWkdEUlMKYWRvcmVyLzFNCmFkb3JpbmcvNDUxWQphZG9ybi80MTVMR0RTCmFkb3JuZWQvNDVVCmFkb3JubWVudC8xTVMKYWRyZW5hbC81MU1TCmFkcmVuYWxpbidzCmFkcmVuYWxpbmUvMU0KYWRyZW5lcmdpYy81MQphZHJpZnQvNQphZHJvaXQvNVBZCmFkcm9pdG5lc3MvMU0KYWRzb3JiLzRTREcKYWRzb3JiZW50LzUxTVMKYWRzb3JwdGlvbi8xU00KYWR1bGF0ZS80RFNHTgphZHVsYXRpb24vMU0KYWR1bGF0b3IvMU1TCmFkdWxhdG9yeS81CmFkdWx0LzE1NE1TCmFkdWx0ZXJhbnQvMU1TCmFkdWx0ZXJhdGUvNTRHTkRTCmFkdWx0ZXJhdGVkLzU0VQphZHVsdGVyYXRpb24vMU0KYWR1bHRlcmVyLzFTTQphZHVsdGVyZXNzLzFNUwphZHVsdGVyb3VzLzUKYWR1bHRlcnkvMVNNCmFkdWx0aG9vZC8xTQphZHVtYnJhdGUvNEdORFMKYWR1bWJyYXRpb24vMU0KYWR2LzEKYWR2YW5jZS80MTVMRFNNRwphZHZhbmNlbWVudC8xU00KYWR2YW50YWdlLzE0RURTTUcKYWR2YW50YWdlb3VzLzVFWQphZHZlbnQvMTRTTQphZHZlbnRpdGlvdXMvNVkKYWR2ZW50dXJlLzE0RFJTTVpHCmFkdmVudHVyZXIvMU0KYWR2ZW50dXJlc29tZS81CmFkdmVudHVyZXNzLzFNUwphZHZlbnR1cmlzbS8xCmFkdmVudHVyaXN0LzFTCmFkdmVudHVyb3VzLzVZUAphZHZlbnR1cm91c25lc3MvMU0KYWR2ZXJiLzE0U00KYWR2ZXJiaWFsLzUxU01ZCmFkdmVyc2FyaWFsLzUKYWR2ZXJzYXJ5LzFTTQphZHZlcnNlLzVQUllUCmFkdmVyc2VuZXNzLzFNCmFkdmVyc2l0eS8xU00KYWR2ZXJzaXZlLzUKYWR2ZXJ0LzE0U01ERwphZHZlcnRpc2UvNExaR0RSUwphZHZlcnRpc2VkLzRVCmFkdmVydGlzZW1lbnQvMU1TCmFkdmVydGlzZXIvMU0KYWR2ZXJ0aXNpbmcvMTRNCmFkdmVydG9yaWFsLzFTTQphZHZpY2UvMTRNCmFkdmlzYWJpbGl0eS8xSU0KYWR2aXNhYmxlLzVJCmFkdmlzYWJseS8KYWR2aXNlLzQxTERSU1pHQgphZHZpc2VkLzU0VVkKYWR2aXNlbWVudC8xTQphZHZpc2VyLzFNCmFkdmlzb3IvMVNNCmFkdmlzb3J5LzUxU00KYWR2b2NhY3kvMU0KYWR2b2NhdGUvMTRNR0RTCmFkdnQvMQphZHdhcmUvMQphZHplLzE0U00KYWVnaXMvMU0KYWVyYXRlLzREU0dOCmFlcmF0aW9uLzFNCmFlcmF0b3IvMVNNCmFlcmlhbC81MVNNWQphZXJpYWxpc3QvMU1TCmFlcmllLzFNUwphZXJvYmF0aWMvNVMKYWVyb2JhdGljcy8xTQphZXJvYmljLzVTCmFlcm9iaWNhbGx5LwphZXJvYmljcy8xTQphZXJvZHJvbWUvMU1TCmFlcm9keW5hbWljLzVTCmFlcm9keW5hbWljYWxseS8KYWVyb2R5bmFtaWNzLzFNCmFlcm9ncmFtLzFTCmFlcm9uYXV0aWMvNVMKYWVyb25hdXRpY2FsLzUKYWVyb25hdXRpY3MvMU0KYWVyb3NvbC8xNE1TCmFlcm9zcGFjZS8xNU0KYWVyeS8xNQphZXN0aGV0ZS8xTVMKYWVzdGhldGljLzUxUwphZXN0aGV0aWNhbGx5LwphZXN0aGV0aWNpc20vMU0KYWVzdGhldGljcy8xTQphZmFyLwphZmZhYmlsaXR5LzFNCmFmZmFibGUvNQphZmZhYmx5LwphZmZhaXIvMU1TCmFmZmVjdCdzCmFmZmVjdC80MUVHRFMKYWZmZWN0YXRpb24vMVNNCmFmZmVjdGVkLzUxNFVZCmFmZmVjdGluZy81NFkKYWZmZWN0aW9uLzE0RU0KYWZmZWN0aW9uYXRlLzU0WQphZmZlY3Rpb25zLzE0CmFmZmVyZW50LzUxCmFmZmlhbmNlLzQxR0RTCmFmZmlkYXZpdC8xNFNNCmFmZmlsaWF0ZSdzCmFmZmlsaWF0ZS8xNEVHTkRTCmFmZmlsaWF0ZWQvNTRVCmFmZmlsaWF0aW9uLzFFTQphZmZpbGlhdGlvbnMvMQphZmZpbmUvNTE0CmFmZmluaXR5LzFTTQphZmZpcm0vNEFHRFMKYWZmaXJtYXRpb24vMUFNUwphZmZpcm1hdGl2ZS81MU1ZUwphZmZpeC8xNEdNRFMKYWZmbGF0dXMvMU0KYWZmbGljdC80R0RTCmFmZmxpY3Rpb24vMVNNCmFmZmx1ZW5jZS8xTQphZmZsdWVudC8xNVkKYWZmb3JkLzRHRFNCCmFmZm9yZGFiaWxpdHkvMQphZmZvcmRhYmx5LwphZmZvcmVzdC80RUdTRAphZmZvcmVzdGF0aW9uLzFNCmFmZnJheS80MU1TCmFmZnJvbnQvNDFHTURTCmFmZ2hhbi8xTVMKYWZpY2lvbmFkby8xTVMKYWZpZWxkLwphZmlyZS81CmFmbGFtZS81CmFmbG9hdC81KwphZmx1dHRlci81CmFmb290LzUKYWZvcmVtZW50aW9uZWQvNTEKYWZvcmVzYWlkLzUKYWZvcmV0aG91Z2h0LzUKYWZvdWwvCmFmcmFpZC81VQphZnJlc2gvCmFmdC8xNVJaCmFmdGVyYmlydGgvMU0KYWZ0ZXJiaXJ0aHMvMQphZnRlcmJ1cm5lci8xTVMKYWZ0ZXJjYXJlLzFNCmFmdGVyZWZmZWN0LzFNUwphZnRlcmdsb3cvMVNNCmFmdGVyaW1hZ2UvMU1TCmFmdGVybGlmZS8xTQphZnRlcmxpdmVzLzEKYWZ0ZXJtYXJrZXQvMTRNUwphZnRlcm1hdGgvMU0KYWZ0ZXJtYXRocy8xCmFmdGVybm9vbi8xTVMKYWZ0ZXJzaGF2ZS8xU00KYWZ0ZXJzaG9jay8xU00KYWZ0ZXJ0YXN0ZS8xU00KYWZ0ZXJ0aG91Z2h0LzE0U00KYWZ0ZXJ3YXJkL1MKYWZ0ZXJ3b3JkLzFNUwphZ2Fpbi8rCmFnYWluc3QvKzcKYWdhcGUvNTFNCmFnYXIvMU0KYWdhdGUvMU1TCmFnYXZlLzFNCmFnZS8xNERTTUdKCmFnZWlzbS8xTQphZ2Vpc3QvNTFTTQphZ2VsZXNzLzVZUAphZ2VsZXNzbmVzcy8xTQphZ2VuY3kvMVNNCmFnZW5kYS8xU00KYWdlbmVzaXMvMQphZ2VudC8xQU1TCmFnZXJhdHVtLzFNCmFnZ2xvbWVyYXRlLzUxNERTTUdOWAphZ2dsb21lcmF0aW9uLzFNCmFnZ2x1dGluYXRlLzU0MURTWEdOCmFnZ2x1dGluYXRpb24vMU0KYWdncmFuZGl6ZS80R0xEUwphZ2dyYW5kaXplbWVudC8xTQphZ2dyYXZhdGUvNEdOWERTCmFnZ3JhdmF0aW5nLzQ1WQphZ2dyYXZhdGlvbi8xTQphZ2dyZWdhdGUvMTU0TUdORFNYCmFnZ3JlZ2F0aW9uLzFNCmFnZ3JlZ2F0b3IvMVNNCmFnZ3Jlc3Npb24vMU0KYWdncmVzc2l2ZS81MVBZCmFnZ3Jlc3NpdmVuZXNzLzFNCmFnZ3Jlc3Nvci8xU00KYWdncmlldmUvNERTRwphZ2dyby8xNTQKYWdoYXN0LzUKYWdpbGUvNTFZCmFnaWxpdHkvMU0KYWdpbmcvNDE1TQphZ2l0YXRlLzRYR05EUwphZ2l0YXRpb24vMU0KYWdpdGF0b3IvMU1TCmFnaXRwcm9wLzE0TQphZ2xlYW0vNQphZ2xpdHRlci81CmFnbG93LzUKYWdub3N0aWMvNTFNUwphZ25vc3RpY2lzbS8xTQphZ28vNSsKYWdvZy81CmFnb25pc3QvMVMKYWdvbml6ZS80R0RTCmFnb25pemluZy81NDFZCmFnb255LzFTTQphZ29yYXBob2JpYS8xTQphZ29yYXBob2JpYy8xNU1TCmFncmFyaWFuLzUxTVMKYWdyYXJpYW5pc20vMU0KYWdyZWUvNEVCTERTCmFncmVlYWJsZW5lc3MvMUVNCmFncmVlYWJseS9FCmFncmVlaW5nLzQxRQphZ3JlZW1lbnQvMUVTTQphZ3JpYnVzaW5lc3MvMU1TCmFncmljdWx0dXJhbC81MVkKYWdyaWN1bHR1cmFsaXN0LzFNUwphZ3JpY3VsdHVyZS8xTQphZ3JpY3VsdHVyaXN0LzE1TVMKYWdyb25vbWljLzUKYWdyb25vbWlzdC8xTVMKYWdyb25vbXkvMU0KYWdyb3VuZC81CmFndWUvMTRNCmFoLzE0OAphaGEvCmFoY2hvby8KYWhlYWQvCmFoZW0vNAphaG95LzQxCmFpZC8xNFNNREcKYWlkZS8xU00KYWlkZWQvNFUKYWlncmV0dGUvMU1TCmFpbC80MTVTRExHCmFpbGVyb24vMVNNCmFpbG1lbnQvMVNNCmFpbS8xNFNNREcKYWltbGVzcy81WVAKYWltbGVzc25lc3MvMU0KYWluJ3QvNAphaXIvMTRTTURKRwphaXJiYWcvMU1TCmFpcmJhc2UvMVNNCmFpcmJlZC8xUwphaXJib3JuZS81MQphaXJicnVzaC8xNE1EU0cKYWlyYnVzLzFNUwphaXJjcmFmdC8xTQphaXJjcmFmdG1hbi8xCmFpcmNyYWZ0bWVuLzEKYWlyY3Jldy8xUwphaXJkcm9tZS8xUwphaXJkcm9wLzE0U00KYWlyZHJvcHBlZC80NQphaXJkcm9wcGluZy80CmFpcmZhcmUvMVNNCmFpcmZpZWxkLzFTTQphaXJmbG93LzFNCmFpcmZvaWwvMVNNCmFpcmZyZWlnaHQvMTRNCmFpcmd1bnMvMQphaXJoZWFkLzFTTQphaXJpbHkvCmFpcmluZXNzLzFNCmFpcmluZy80MU0KYWlybGVzcy81UAphaXJsZXNzbmVzcy8xTQphaXJsZXR0ZXJzLzEKYWlybGlmdC8xNFNHTUQKYWlybGluZS8xUlNNWgphaXJsaW5lci8xTQphaXJsb2NrLzFTTQphaXJtYWlsLzE0R1NNRAphaXJtYW4vMU0KYWlybWVuLzEKYWlycGxhbmUvMTRNUwphaXJwbGF5LzFNCmFpcnBvcnQvMVNNCmFpcnNoaXAvMTRTTQphaXJzaG93LzFTCmFpcnNpY2svNVAKYWlyc2lja25lc3MvMU0KYWlyc3BhY2UvMU0KYWlyc3BlZWQvMQphaXJzdHJpa2UvMTRNUwphaXJzdHJpcC8xU00KYWlydGlnaHQvNQphaXJ0aW1lLzFNCmFpcndhdmVzLzFNCmFpcndheS8xTVMKYWlyd29tYW4vMQphaXJ3b21lbi8xCmFpcndvcnRoaW5lc3MvMU0KYWlyd29ydGh5LzVQCmFpcnkvNVBUUgphaXNsZS8xTVMKYWl0Y2gvMU1TCmFqYXIvNTQKYWthLzErCmFraW1iby81CmFraW4vNQphbGFiYXN0ZXIvMTVNCmFsYWNrLwphbGFjcml0eS8xTQphbGFybS8xNEdNRFMKYWxhcm1pbmcvNDVZCmFsYXJtaXN0LzE1U00KYWxhcy8xCmFsYi8xU00KYWxiYWNvcmUvMVNNCmFsYmF0cm9zcy8xTVMKYWxiZWl0LzcKYWxiaW5pc20vMU0KYWxiaW5vLzUxTVMKYWxidW0vMU1OUwphbGJ1bWVuLzFNCmFsYnVtaW4vMU0KYWxidW1pbm91cy81CmFsY2hlbWlzdC8xU00KYWxjaGVteS8xTQphbGNvaG9sLzFTTQphbGNvaG9saWMvMTVNUwphbGNvaG9saWNhbGx5LwphbGNvaG9saXNtLzFNCmFsY292ZS8xTVMKYWxkZXIvMU1TCmFsZGVybWFuLzFNCmFsZGVybWVuLzEKYWxkZXJ3b21hbi8xTQphbGRlcndvbWVuLzEKYWxlLzFTTVYKYWxlYXRvcnkvNQphbGVob3VzZS8xU00KYWxlbWJpYy8xU00KYWxlcnQvNTE0R01EWVBTCmFsZXJ0bmVzcy8xTQphbGV3aWZlLzFNCmFsZXdpdmVzLzEKYWxmYWxmYS8xTQphbGZyZXNjby81CmFsZ2EvMU0KYWxnYWUvMQphbGdhbC81MQphbGdlYnJhLzFTTQphbGdlYnJhaWMvNQphbGdlYnJhaWNhbGx5LwphbGdvcml0aG0vMVNNCmFsZ29yaXRobWljLzVRCmFsaWFzLzE0R01EUwphbGliaS8xNEdNRFMKYWxpZW4vMTU0QkdNRFMKYWxpZW5hYmxlLzVJVQphbGllbmF0ZS81MTREU0dOCmFsaWVuYXRpb24vMU0KYWxpZW5pc3QvMVNNCmFsaWdodC80NUdEUwphbGlnbi80QUxHRFMKYWxpZ25lZC80NVUKYWxpZ25lci8xTVMKYWxpZ25tZW50LzFBTVMKYWxpa2UvNVUKYWxpbWVudC8xNE1EU0cKYWxpbWVudGFyeS81CmFsaW1vbnkvMU0KYWxpdmVuZXNzLzFNCmFsaXlhaC8xNE0KYWxpeWFocy8xCmFsa2FsaS8xTQphbGthbGllcy8xCmFsa2FsaW5lLzUxCmFsa2FsaW5pdHkvMU0KYWxrYWxpemUvNERTRwphbGthbG9pZC8xNVNNCmFsa3lkLzFNUwphbGwvODE3NU1+CmFsbGF5LzQxR0RTCmFsbGVnYXRpb24vMU1TCmFsbGVnZS80R0RTCmFsbGVnZWQvNDVZCmFsbGVnaWFuY2UvMU1TCmFsbGVnb3JpYy81CmFsbGVnb3JpY2FsLzVZCmFsbGVnb3Jpc3QvMU1TCmFsbGVnb3J5LzFTTQphbGxlZ3JldHRvLzFNUwphbGxlZ3JvLzE1TVMKYWxsZWxlLzFNUwphbGxlbHVpYS8xNFNNCmFsbGVyZ2VuLzFTTQphbGxlcmdlbmljLzUKYWxsZXJnaWMvNTEKYWxsZXJnaWNhbGx5LwphbGxlcmdpc3QvMVNNCmFsbGVyZ3kvMVNNCmFsbGV2aWF0ZS80RFNHTgphbGxldmlhdGlvbi8xTQphbGxleS8xTVMKYWxsZXl3YXkvMVNNCmFsbGlhbmNlLzE0U00KYWxsaWdhdG9yLzE0TVMKYWxsaXRlcmF0ZS80RFNYR05WCmFsbGl0ZXJhdGlvbi8xTQphbGxpdGVyYXRpdmUvNVkKYWxsb2NhdGUvNEFEU0dOWUMKYWxsb2NhdG9yLzFDCmFsbG9jYXRpb24vMUFNCmFsbG9jYXRpb25zLzEKYWxsb3QvNDFMUwphbGxvdG1lbnQvMVNNCmFsbG90dGVkLzQKYWxsb3R0aW5nLzQKYWxsb3Zlci81MQphbGxvdy80RUdEUwphbGxvd2FibGUvNTFVCmFsbG93YWJseS8KYWxsb3dhbmNlLzE0U00KYWxsb3kvMTRHTURTCmFsbG95ZWQvNTRVCmFsbHNwaWNlLzFNCmFsbHVkZS80R0RTCmFsbHVyZS8xNE1HTERTCmFsbHVyZW1lbnQvMU1TCmFsbHVyaW5nLzUxNFkKYWxsdXNpb24vMVNNCmFsbHVzaXZlLzVQWQphbGx1c2l2ZW5lc3MvMU0KYWxsdXZpYWwvNTFNCmFsbHV2aXVtLzFTTQphbGx5LzQxR0RTTQphbG1hbmFjLzFTTQphbG1pZ2h0eS81CmFsbW9uZC8xNU1TCmFsbW9uZXIvMVNNCmFsbW9zdC8xCmFsbXMvMU0KYWxtc2hvdXNlLzFNUwphbG9lLzFTTQphbG9mdC8KYWxvaGEvMU1TCmFsb25lLzUKYWxvbmcvKwphbG9uZ3Nob3JlLzUKYWxvbmdzaWRlLysKYWxvb2YvNStQWQphbG9vZm5lc3MvMU0KYWxvdWQvNQphbHAvMVNNCmFscGFjYS8xTVMKYWxwaGEvMTVNUwphbHBoYWJldC8xNFNNCmFscGhhYmV0aWMvNTEKYWxwaGFiZXRpY2FsLzVZCmFscGhhYmV0aXphdGlvbi8xU00KYWxwaGFiZXRpemUvNFpHRFJTCmFscGhhYmV0aXplci8xTQphbHBoYW51bWVyaWMvNTEKYWxwaGFudW1lcmljYWwvNTFZCmFscGluZS81MVMKYWxyZWFkeS8KYWxyaWdodC81CmFsc28vfgphbHQvMTVTCmFsdGFyLzFNUwphbHRhcnBpZWNlLzFTTQphbHRlci80MUdEQlMKYWx0ZXJhYmxlLzUxVQphbHRlcmF0aW9uLzFNUwphbHRlcmNhdGlvbi8xU00KYWx0ZXJlZC80MTVVCmFsdGVybmF0ZS81MTREU01ZR05WWAphbHRlcm5hdGlvbi8xTQphbHRlcm5hdGl2ZS81MU1ZUwphbHRlcm5hdG9yLzFTTQphbHRob3VnaC83CmFsdGltZXRlci8xTVMKYWx0aXR1ZGUvMU1TCmFsdG8vMVNNCmFsdG9nZXRoZXIvMQphbHRydWlzbS8xTQphbHRydWlzdC8xU00KYWx0cnVpc3RpYy81CmFsdHJ1aXN0aWNhbGx5LwphbHVtLzE0U00KYWx1bWluYS8xTQphbHVtaW51bS8xTQphbHVtbmEvMU0KYWx1bW5hZS8xCmFsdW1uaS8xCmFsdW1udXMvMU0KYWx2ZW9sYXIvNTFTCmFsd2F5cy8KYW0vNE4KYW1hbGdhbS8xNFNNCmFtYWxnYW1hdGUvNDUxWEdORFMKYW1hbGdhbWF0aW9uLzFNCmFtYW51ZW5zZXMvMQphbWFudWVuc2lzLzFNCmFtYXJhbnRoLzFNCmFtYXJhbnRocy8xCmFtYXJldHRvLzFNCmFtYXJ5bGxpcy8xTVMKYW1hc3MvNDFHRFMKYW1hdGV1ci8xNVNNCmFtYXRldXJpc2gvNVlQCmFtYXRldXJpc2huZXNzLzFNCmFtYXRldXJpc20vMU0KYW1hdG9yeS81CmFtYXplLzQxTE1HRFMKYW1hemVtZW50LzFNCmFtYXppbmcvNDVZCmFtYXpvbi8xTVMKYW1hem9uaWFuLzUKYW1iYXNzYWRvci8xU00KYW1iYXNzYWRvcmlhbC81CmFtYmFzc2Fkb3JzaGlwLzFNUwphbWJhc3NhZHJlc3MvMU1TCmFtYmVyLzE1NE0KYW1iZXJncmlzLzFNCmFtYmlhbmNlLzFNUwphbWJpZGV4dGVyaXR5LzFNCmFtYmlkZXh0cm91cy81WQphbWJpZW50LzUxCmFtYmlndWl0eS8xU00KYW1iaWd1b3VzLzVVWQphbWJpdC8xCmFtYml0aW9uLzE0TVMKYW1iaXRpb3VzLzVZUAphbWJpdGlvdXNuZXNzLzFNCmFtYml2YWxlbmNlLzFNCmFtYml2YWxlbnQvNVkKYW1ibGUvMTRNWkdEUlMKYW1ibGVyLzFNCmFtYnJvc2lhLzFNCmFtYnJvc2lhbC81CmFtYnVsYW5jZS8xNE1TCmFtYnVsYW5jZW1hbi8xCmFtYnVsYW5jZW1lbi8xCmFtYnVsYW5jZXdvbWFuLzEKYW1idWxhbmNld29tZW4vMQphbWJ1bGFudC81MQphbWJ1bGF0ZS80RFNYR04KYW1idWxhdGlvbi8xTQphbWJ1bGF0b3J5LzUxU00KYW1idXNjYWRlLzE0TUdEUwphbWJ1c2gvMTRHTURTCmFtZWxpb3JhdGUvNEdOVkRTCmFtZWxpb3JhdGlvbi8xTQphbWVuLzE0QgphbWVuYWJpbGl0eS8xTQphbWVuYWJseS8KYW1lbmQvNDFCTEdEUwphbWVuZG1lbnQvMVNNCmFtZW5pdHkvMVNNCmFtZXJjZS80R0xEUwphbWVyY2VtZW50LzFTTQphbWVyaWNpdW0vMU0KYW1ldGh5c3QvMTVTTQphbWlhYmlsaXR5LzFNCmFtaWFibGUvNQphbWlhYmx5LwphbWljYWJpbGl0eS8xTQphbWljYWJsZS81CmFtaWNhYmx5LwphbWlkLysxCmFtaWRlLzFNUwphbWlkc2hpcC9TCmFtaWdvLzFNUwphbWluZS8xUwphbWluby81MQphbWlzcy81MQphbWl0cmlwdHlsaW5lLzEKYW1pdHkvMU0KYW1tZXRlci8xU00KYW1tby8xNE0KYW1tb25pYS8xTQphbW1vbml1bS8xCmFtbXVuaXRpb24vMTRNCmFtbmVzaWEvMU0KYW1uZXNpYWMvMU1TCmFtbmVzaWMvNTFTTQphbW5lc3R5LzE0R0RTTQphbW5pb2NlbnRlc2VzLzEKYW1uaW9jZW50ZXNpcy8xTQphbW5pb24vMU1TCmFtbmlvdGljLzUKYW1vZWJhLzFNUwphbW9lYmFlLzEKYW1vZWJpYy81CmFtb2svMTQKYW1vbmcvKwphbW9udGlsbGFkby8xU00KYW1vcmFsLzVZCmFtb3JhbGl0eS8xTQphbW9yb3VzLzVZUAphbW9yb3VzbmVzcy8xTQphbW9ycGhvdXMvNVBZCmFtb3JwaG91c25lc3MvMU0KYW1vcnRpemF0aW9uLzFTTQphbW9ydGl6ZS80RFNHQgphbW91bnQvMTRHTURTCmFtb3VyLzFNUwphbW94aWNpbGxpbi8xCmFtcC8xNFNNWQphbXBlcmFnZS8xTQphbXBlcmUvMU1TCmFtcGVyc2FuZC8xNE1TCmFtcGhldGFtaW5lLzFTTQphbXBoaWJpYW4vNTFNUwphbXBoaWJpb3VzLzVZCmFtcGhpdGhlYXRlci8xU00KYW1waG9yYS8xTQphbXBob3JhZS8xCmFtcGljaWxsaW4vMQphbXBsZS81VFIKYW1wbGlmaWNhdGlvbi8xTQphbXBsaWZpZXIvMU0KYW1wbGlmeS80TkRSU1haRwphbXBsaXR1ZGUvMVNNCmFtcHVsZS8xTVMKYW1wdXRhdGUvNEdORFNYCmFtcHV0YXRpb24vMU0KYW1wdXRlZS8xTVMKYW10LzEKYW11bGV0LzFNUwphbXVzZS80TEdEUwphbXVzZW1lbnQvMU1TCmFtdXNpbmcvNDVZCmFteWdkYWxhLzEKYW15bGFzZS8xTQphbXlsb2lkLzE1CmFuLy03K0NTfgphbmFib2xpc20vMU0KYW5hY2hyb25pc20vMVNNCmFuYWNocm9uaXN0aWMvNQphbmFjaHJvbmlzdGljYWxseS8KYW5hY29uZGEvMTJTTQphbmFlcm9iZS8xU00KYW5hZXJvYmljLzUKYW5hZXJvYmljYWxseS8KYW5hZ3JhbS8xNE1TCmFuYWwvNTE0WQphbmFsZ2VzaWEvMU0KYW5hbGdlc2ljLzE1U00KYW5hbG9nLzUxTVMKYW5hbG9naWNhbC81WQphbmFsb2dpemUvNEdEUwphbmFsb2dvdXMvNVlQCmFuYWxvZ291c25lc3MvMU0KYW5hbG9ndWUvNTFTTQphbmFsb2d5LzFTTQphbmFseXNhbmQvMU1TCmFuYWx5c2VzLzE0QQphbmFseXNpcy8xQU0KYW5hbHlzdC8xU00KYW5hbHl0aWMvNVMKYW5hbHl0aWNhbC81WQphbmFseXphYmxlLzUKYW5hbHl6ZS80QURTRwphbmFseXplci8xU00KYW5hcGVzdC8xU00KYW5hcGVzdGljLzUxTVMKYW5hcmNoaWMvNQphbmFyY2hpY2FsbHkvCmFuYXJjaGlzbS8xTQphbmFyY2hpc3QvMTVNUwphbmFyY2hpc3RpYy81CmFuYXJjaHkvMU0KYW5hdGhlbWEvMVNNCmFuYXRoZW1hdGl6ZS80RFNHCmFuYXRvbWljLzUKYW5hdG9taWNhbC81WQphbmF0b21pc3QvMVNNCmFuYXRvbWl6ZS80RFNHCmFuYXRvbXkvMVNNCmFuY2VzdG9yLzE0U00KYW5jZXN0cmFsLzUxWQphbmNlc3RyZXNzLzFNUwphbmNlc3RyeS8xU00KYW5jaG9yLzE0TURHUwphbmNob3JhZ2UvMU1TCmFuY2hvcml0ZS8xTVMKYW5jaG9ybWFuLzFNCmFuY2hvcm1lbi8xCmFuY2hvcnBlb3BsZS8xCmFuY2hvcnBlcnNvbi8xU00KYW5jaG9yd29tYW4vMU0KYW5jaG9yd29tZW4vMQphbmNob3Z5LzFTTQphbmNpZW50LzUxU1BNUllUCmFuY2llbnRuZXNzLzFNCmFuY2lsbGFyeS81MVNNCmFuZC83NH4KYW5kYW50ZS8xNVNNCmFuZGlyb24vMVNNCmFuZHJvZ2VuLzFNCmFuZHJvZ2VuaWMvNQphbmRyb2d5bm91cy81CmFuZHJvZ3lueS8xTQphbmRyb2lkLzE1U00KYW5lY2RvdGFsLzVZCmFuZWNkb3RlLzE0TVMKYW5lbWlhLzFNCmFuZW1pYy81MQphbmVtaWNhbGx5LwphbmVtb21ldGVyLzFTTQphbmVtb25lLzFTTQphbmVudC8rCmFuZXN0aGVzaWEvMU0KYW5lc3RoZXNpb2xvZ2lzdC8xU00KYW5lc3RoZXNpb2xvZ3kvMU0KYW5lc3RoZXRpYy81MVNNCmFuZXN0aGV0aXN0LzFNUwphbmVzdGhldGl6YXRpb24vMU0KYW5lc3RoZXRpemUvNEdEUwphbmV1cnlzbS8xU00KYW5ldy8KYW5nZWwvMTRNUwphbmdlbGZpc2gvMU1TCmFuZ2VsaWMvNQphbmdlbGljYS8xTQphbmdlbGljYWwvNVkKYW5nZXIvMTRHTURTCmFuZ2luYS8xTQphbmdpb3BsYXN0eS8xU00KYW5naW9zcGVybS8xU00KYW5nbGUvMTRNWkdEUlMKYW5nbGVyLzFNCmFuZ2xld29ybS8xTVMKYW5nbGljaXNtLzFTCmFuZ2xpY2l6ZS80R0RTCmFuZ2xpbmcvNDFNCmFuZ2xvcGhpbGUvMVMKYW5nbG9waG9uZS81MVMKYW5nb3JhLzFNUwphbmdvc3R1cmEvMQphbmdyaWx5LwphbmdyeS81NFRSCmFuZ3N0LzE0TQphbmdzdHJvbS8xTVMKYW5ndWlzaC8xNEdNRFMKYW5ndWxhci81MQphbmd1bGFyaXR5LzFTTQphbmd1bGF0aW9uLzEKYW5oeWRyb3VzLzUKYW5pbGluZS8xTQphbmlsaW5ndXMvMQphbmltYWR2ZXJzaW9uLzFNUwphbmltYWR2ZXJ0LzRHU0QKYW5pbWFsLzE1TVMKYW5pbWFsY3VsZS8xU00KYW5pbWF0ZS81NEFEU0dOCmFuaW1hdGVkLzU0WQphbmltYXRpb24vMUFNCmFuaW1hdGlvbnMvMQphbmltYXRvci8xTVMKYW5pbWUvMU0KYW5pbWlzbS8xTQphbmltaXN0LzFTTQphbmltaXN0aWMvNQphbmltb3NpdHkvMVNNCmFuaW11cy8xTQphbmlvbi8xTVMKYW5pb25pYy81MQphbmlzZS8xTQphbmlzZWVkLzFNCmFuaXNldHRlLzFNCmFua2gvMU0KYW5raHMvMQphbmtsZS8xNE1TCmFua2xlYm9uZS8xTVMKYW5rbGV0LzFNUwphbm5hbGlzdC8xU00KYW5uYWxzLzFNCmFubmVhbC80MUdEUwphbm5lbGlkLzE1TVMKYW5uZXgvMTRHTURTCmFubmV4YXRpb24vMU1TCmFubmloaWxhdGUvNERTR04KYW5uaWhpbGF0aW9uLzFNCmFubmloaWxhdG9yLzFTTQphbm5pdmVyc2FyeS8xU00KYW5ub3RhdGUvNERTWEdOVgphbm5vdGF0aW9uLzFNCmFubm90YXRvci8xTVMKYW5ub3VuY2UvNERSU0xaRwphbm5vdW5jZWQvNTRVCmFubm91bmNlbWVudC8xTVMKYW5ub3VuY2VyLzFNCmFubm95LzQxR0RTCmFubm95YW5jZS8xTVMKYW5ub3lpbmcvNTQxWQphbm51YWwvNTFNWVMKYW5udWFsaXplZC81NAphbm51aXRhbnQvMVNNCmFubnVpdHkvMVNNCmFubnVsLzRMUwphbm51bGFyLzUKYW5udWxsZWQvNTQKYW5udWxsaW5nLzQxCmFubnVsbWVudC8xU00KYW5udWx1cy8xCmFubnVuY2lhdGlvbi8xU00KYW5vZGUvMU1TCmFub2RpemUvNEdEUwphbm9keW5lLzUxTVMKYW5vaW50LzRHRExTCmFub2ludG1lbnQvMU0KYW5vbWFsb3VzLzVZCmFub21hbHkvMVNNCmFub24vMTVTCmFub255bWl0eS8xTQphbm9ueW1pemUvNEQKYW5vbnltb3VzLzVZCmFub3BoZWxlcy8xTQphbm9yYWsvMU1TCmFub3JlY3RpYy81MVNNCmFub3JleGlhLzFNCmFub3JleGljLzUxTVMKYW5vdGhlci84CmFuc3dlci8xNEJNREdTCmFuc3dlcmFibGUvNVUKYW5zd2VyZWQvNTRVCmFuc3dlcnBob25lLzFTCmFudC8xNFNNRAphbnRhY2lkLzE1U00KYW50YWdvbmlzbS8xU00KYW50YWdvbmlzdC8xU00KYW50YWdvbmlzdGljLzUKYW50YWdvbmlzdGljYWxseS8KYW50YWdvbml6ZS80RFNHCmFudGFyY3RpYy81CmFudGUvMTRTTQphbnRlYXRlci8xTVMKYW50ZWJlbGx1bS81CmFudGVjZWRlbmNlLzFNCmFudGVjZWRlbnQvNTFTTQphbnRlY2hhbWJlci8xU00KYW50ZWRhdGUvNDFHRFMKYW50ZWRpbHV2aWFuLzUxCmFudGVpbmcvNAphbnRlbG9wZS8xTVMKYW50ZW5hdGFsLzUKYW50ZW5uYS8xU00KYW50ZW5uYWUvMQphbnRlcmlvci81CmFudGVyb29tLzFNUwphbnRoZW0vMTRNUwphbnRoZXIvMU1TCmFudGhpbGwvMVNNCmFudGhvbG9naXN0LzFTTQphbnRob2xvZ2l6ZS80RFNHCmFudGhvbG9neS8xU00KYW50aHJhY2l0ZS8xTQphbnRocmF4LzFNCmFudGhyb3BvY2VudHJpYy81CmFudGhyb3BvaWQvNTFNUwphbnRocm9wb2xvZ2ljYWwvNVkKYW50aHJvcG9sb2dpc3QvMVNNCmFudGhyb3BvbG9neS8xTQphbnRocm9wb21vcnBoaWMvNQphbnRocm9wb21vcnBoaWNhbGx5LwphbnRocm9wb21vcnBoaXNtLzFNCmFudGhyb3BvbW9ycGhpemUvNAphbnRocm9wb21vcnBob3VzLzUKYW50aS81MStTTQphbnRpYWJvcnRpb24vNQphbnRpYWJvcnRpb25pc3QvMU1TCmFudGlhaXJjcmFmdC81MQphbnRpYmFjdGVyaWFsLzUxTVMKYW50aWJpb3RpYy8xNU1TCmFudGlib2R5LzFTTQphbnRpYy81MTRNUwphbnRpY2FuY2VyLzUKYW50aWNpcGF0ZS80R05YRFMKYW50aWNpcGF0ZWQvNTRVCmFudGljaXBhdGlvbi8xTQphbnRpY2lwYXRvcnkvNQphbnRpY2tlZC80CmFudGlja2luZy80CmFudGljbGVyaWNhbC81MQphbnRpY2xpbWFjdGljLzUKYW50aWNsaW1hY3RpY2FsbHkvCmFudGljbGltYXgvMU1TCmFudGljbGluZS8xU00KYW50aWNsb2Nrd2lzZS81CmFudGljb2FndWxhbnQvMTVNUwphbnRpY29tbXVuaXNtLzFNCmFudGljb21tdW5pc3QvNTFTTQphbnRpY3ljbG9uZS8xU00KYW50aWN5Y2xvbmljLzUKYW50aWRlbW9jcmF0aWMvNQphbnRpZGVwcmVzc2FudC8xNU1TCmFudGlkb3RlLzE0TVMKYW50aWZhc2Npc3QvNTFNUwphbnRpZmVycm9tYWduZXRpYy81CmFudGlmcmVlemUvMU0KYW50aWdlbi8xU00KYW50aWdlbmljLzUKYW50aWdlbmljaXR5LzFNCmFudGloZXJvLzFNCmFudGloZXJvZXMvMQphbnRpaGlzdGFtaW5lLzFTTQphbnRpa25vY2svNTFNCmFudGlsYWJvci81CmFudGlsb2dhcml0aG0vMVNNCmFudGltYWNhc3Nhci8xTVMKYW50aW1hbGFyaWFsLzE1CmFudGltYXR0ZXIvMU0KYW50aW1pY3JvYmlhbC81MQphbnRpbWlzc2lsZS81MQphbnRpbW9ueS8xTQphbnRpbmV1dHJpbm8vMVNNCmFudGluZXV0cm9uLzFNUwphbnRpbnVjbGVhci81CmFudGlveGlkYW50LzE1TVMKYW50aXBhcnRpY2xlLzFTTQphbnRpcGFzdGkvMQphbnRpcGFzdG8vMU1TCmFudGlwYXRoZXRpYy81CmFudGlwYXRoeS8xU00KYW50aXBlcnNvbm5lbC81CmFudGlwZXJzcGlyYW50LzFTTQphbnRpcGhvbi8xU00KYW50aXBob25hbC8xNU1ZUwphbnRpcG9kYWwvNTFTCmFudGlwb2RlYW4vNTFNUwphbnRpcG9kZXMvMU0KYW50aXBvbGx1dGlvbi8xNQphbnRpcG92ZXJ0eS81CmFudGlwcm90b24vMU1TCmFudGlxdWFyaWFuLzUxU00KYW50aXF1YXJpYW5pc20vMU0KYW50aXF1YXJ5LzE1U00KYW50aXF1YXRlLzRHRFMKYW50aXF1ZS81MTREU01HCmFudGlxdWl0eS8xU00KYW50aXJyaGludW0vMVMKYW50aXNjaWVuY2UvNTEKYW50aXNlbWl0aWMvNQphbnRpc2VtaXRpc20vMU0KYW50aXNlcHNpcy8xTQphbnRpc2VwdGljLzUxU00KYW50aXNlcHRpY2FsbHkvCmFudGlzZXJ1bS8xTVMKYW50aXNsYXZlcnkvNQphbnRpc29jaWFsLzUxWQphbnRpc3Bhc21vZGljLzUxTVMKYW50aXN1Ym1hcmluZS81CmFudGl0YW5rLzUKYW50aXRoZXNlcy8xCmFudGl0aGVzaXMvMU0KYW50aXRoZXRpYy81MQphbnRpdGhldGljYWwvNVkKYW50aXRveGluLzFNUwphbnRpdHJ1c3QvNQphbnRpdmVuaW4vMU1TCmFudGl2ZW5vbS8xCmFudGl2aXJhbC81MU1TCmFudGl2aXJ1cy8xCmFudGl2aXZpc2VjdGlvbmlzdC8xNU1TCmFudGl3YXIvNQphbnRsZXIvMU1EUwphbnRvbnltLzFTTQphbnRvbnltb3VzLzUKYW50cnVtLzEKYW50c3kvNVRSCmFudXMvMU1TCmFudmlsLzE0TVMKYW54aWV0eS8xU00KYW54aW91cy81WVAKYW54aW91c25lc3MvMU0KYW55Lzh+CmFueWJvZHkvOFNNCmFueWhvdy81CmFueW1vcmUvCmFueW9uZS84TQphbnlwbGFjZS8KYW55dGhpbmcvODE0U00KYW55dGltZS81CmFueXdheS9TCmFueXdoZXJlLzgxCmFueXdpc2UvCmFvcnRhLzFNUwphb3J0aWMvNQphcGFjZS8KYXBhcnQvNTEKYXBhcnRoZWlkLzE0TQphcGFydG1lbnQvMU1TCmFwYXRoZXRpYy81CmFwYXRoZXRpY2FsbHkvCmFwYXRoeS8xTQphcGF0aXRlLzFNCmFwZS8xNDVEU01HCmFwZWxpa2UvNQphcGVyaXRpZi8xTVMKYXBlcnR1cmUvMVNNCmFwZXgvMU1TCmFwaGFzaWEvMU0KYXBoYXNpYy81MU1TCmFwaGVsaWEvMQphcGhlbGlvbi8xU00KYXBoaWQvMU1TCmFwaG9yaXNtLzE0TVMKYXBob3Jpc3RpYy81CmFwaG9yaXN0aWNhbGx5LwphcGhyb2Rpc2lhYy81MVNNCmFwaWFyaXN0LzFTTQphcGlhcnkvMVNNCmFwaWNhbC81MVkKYXBpZWNlLwphcGlzaC81WQphcGxlbnR5LzUKYXBsb21iLzFNCmFwb2NhbHlwc2UvMVNNCmFwb2NhbHlwdGljLzUxCmFwb2NyeXBoYS8xTQphcG9jcnlwaGFsLzVZCmFwb2dlZS8xTVMKYXBvbGl0aWNhbC81MVkKYXBvbG9nZXRpYy81VQphcG9sb2dldGljYWxseS8KYXBvbG9naWEvMVNNCmFwb2xvZ2lzdC8xTVMKYXBvbG9naXplLzRHRFMKYXBvbG9neS8xU00KYXBvcGxlY3RpYy81MQphcG9wbGV4eS8xU00KYXBvcHRvc2lzLzEKYXBvcHRvdGljLzUKYXBvc3Rhc3kvMVNNCmFwb3N0YXRlLzUxU00KYXBvc3RhdGl6ZS80R0RTCmFwb3N0bGUvMU1TCmFwb3N0bGVzaGlwLzFNCmFwb3N0b2xpYy81CmFwb3N0cm9waGUvMU1TCmFwb3RoZWNhcnkvMVNNCmFwb3RoZWdtLzFTTQphcG90aGVvc2VzLzE0CmFwb3RoZW9zaXMvMU0KYXBwLzFTTQphcHBhbGwvNEdEUwphcHBhbGxpbmcvNDVZCmFwcGFsb29zYS8xTVMKYXBwYXJhdGNoaWsvMVMKYXBwYXJhdHVzLzFNUwphcHBhcmVsLzE0TURHUwphcHBhcmVudC81WQphcHBhcml0aW9uLzFTTQphcHBlYWwvMTRHTURTCmFwcGVhbGluZy81NDFVWQphcHBlYXIvNEFFU0RHCmFwcGVhcmFuY2UvMUVBTVMKYXBwZWFzZS80TFpHRFJTCmFwcGVhc2VtZW50LzFTTQphcHBlYXNlci8xTQphcHBlbGxhbnQvNTFTTQphcHBlbGxhdGUvNVhOCmFwcGVsbGF0aW9uLzFNCmFwcGVuZC80MUdEUwphcHBlbmRhZ2UvMVNNCmFwcGVuZGVjdG9teS8xU00KYXBwZW5kaWNlcy8xCmFwcGVuZGljaXRpcy8xTQphcHBlbmRpeC8xTVMKYXBwZXJ0YWluLzRHRFMKYXBwZXRpdGUvMVNNCmFwcGV0aXplci8xTVMKYXBwZXRpemluZy81MTRZCmFwcGxhdWQvMTRaR0RSUwphcHBsYXVkZXIvMU0KYXBwbGF1c2UvMU0KYXBwbGUvMTRNUwphcHBsZWphY2svMU0KYXBwbGVzYXVjZS8xTQphcHBsZXQvMU1TCmFwcGxpYW5jZS8xU00KYXBwbGljYWJpbGl0eS8xTQphcHBsaWNhYmxlLzVJCmFwcGxpY2FibHkvCmFwcGxpY2FudC8xU00KYXBwbGljYXRpb24vMUFNCmFwcGxpY2F0b3IvMVNNCmFwcGxpZXIvMU1TCmFwcGxpcXVlLzE0RFNNCmFwcGxpcXVlaW5nLzQKYXBwbHkvNDVBTlhHRFMKYXBwb2ludC80QUVMU1ZHRAphcHBvaW50ZWUvMVNNCmFwcG9pbnRtZW50J3MvQQphcHBvaW50bWVudC8xRVNNCmFwcG9ydGlvbi80QUdETFMKYXBwb3J0aW9ubWVudC8xQU0KYXBwb3NlLzRHRFMKYXBwb3NpdGUvNTFZTlZQCmFwcG9zaXRlbmVzcy8xTQphcHBvc2l0aW9uLzFNCmFwcG9zaXRpdmUvNTFTTQphcHByYWlzYWwvMUFNUwphcHByYWlzZS80QURTRwphcHByYWlzZXIvMU1TCmFwcHJlY2lhYmxlLzVJCmFwcHJlY2lhYmx5L0kKYXBwcmVjaWF0ZS80RFNYR05WCmFwcHJlY2lhdGVkLzQ1VQphcHByZWNpYXRpb24vMU0KYXBwcmVjaWF0aXZlLzVZCmFwcHJlY2lhdG9yLzFNUwphcHByZWNpYXRvcnkvNQphcHByZWhlbmQvNEdEUwphcHByZWhlbnNpb24vMU1TCmFwcHJlaGVuc2l2ZS81MVlQCmFwcHJlaGVuc2l2ZW5lc3MvMU0KYXBwcmVudGljZS8xNERTTUcKYXBwcmVudGljZXNoaXAvMU1TCmFwcHJpc2UvNEdEUwphcHByaXplLzRHRFMKYXBwcm9hY2gvNDFHQk1EUwphcHByb2FjaGFibGUvNVVJCmFwcHJvYmF0aW9uLzFFTQphcHByb2JhdGlvbnMvMQphcHByb3ByaWF0ZS81NFBZR05YRFMKYXBwcm9wcmlhdGVkLzQ1VQphcHByb3ByaWF0ZW5lc3MvMUlNCmFwcHJvcHJpYXRpb24vMU0KYXBwcm9wcmlhdG9yLzFTTQphcHByb3ZhbC8xRU0KYXBwcm92YWxzLzEKYXBwcm92ZS80RUdEUwphcHByb3ZlZC81NFUKYXBwcm92aW5nLzU0RVkKYXBwcm94LzUKYXBwcm94aW1hdGUvNTREU1hZR04KYXBwcm94aW1hdGlvbi8xTQphcHB1cnRlbmFuY2UvMVNNCmFwcHVydGVuYW50LzUxCmFwcmljb3QvMTVNUwphcHJvbi8xNE1TCmFwcm9wb3MvNSsxCmFwc2UvMVNNCmFwdC81MUlZUFQKYXB0ZXIvNQphcHRpdHVkZS8xU00KYXB0bmVzcy8xSU0KYXF1YS8xNVNNCmFxdWFjdWx0dXJlLzFNCmFxdWFsdW5nLzE0TVMKYXF1YW1hcmluZS8xNVNNCmFxdWFuYXV0LzFNUwphcXVhcGxhbmUvMTRNR0RTCmFxdWFyaXVtLzFNUwphcXVhdGljLzUxU00KYXF1YXRpY2FsbHkvCmFxdWF0aWNzLzFNCmFxdWF0aW50LzE0UwphcXVhdml0LzFNCmFxdWVkdWN0LzFNUwphcXVlb3VzLzUKYXF1aWZlci8xU00KYXF1aWxpbmUvNQphcmFiZXNxdWUvMU1TCmFyYWJpbGl0eS8xTQphcmFjaG5pZC8xTVMKYXJhY2hub3Bob2JpYS8xCmFyYml0ZXIvMTRTTQphcmJpdHJhZ2UvMTRNWkdEUlMKYXJiaXRyYWdlci8xTQphcmJpdHJhZ2V1ci8xU00KYXJiaXRyYW1lbnQvMVNNCmFyYml0cmFyaWx5LwphcmJpdHJhcmluZXNzLzFNCmFyYml0cmFyeS81MVAKYXJiaXRyYXRlLzRHTkRTCmFyYml0cmF0aW9uLzFNCmFyYml0cmF0b3IvMU1TCmFyYm9yLzFNUwphcmJvcmVhbC81MQphcmJvcmV0dW0vMVNNCmFyYm9ydml0YWUvMVNNCmFyYnV0dXMvMU1TCmFyYy8xNFNNREcKYXJjYWRlLzE0TVMKYXJjYW5lLzUKYXJjaC8xNDVQWlRHVk1EUlNZCmFyY2hhZW9sb2dpY2FsLzVZCmFyY2hhZW9sb2dpc3QvMVNNCmFyY2hhZW9sb2d5LzFNCmFyY2hhaWMvMTUKYXJjaGFpY2FsbHkvCmFyY2hhaXNtLzFNUwphcmNoYWlzdC8xTVMKYXJjaGFuZ2VsLzFNUwphcmNoYmlzaG9wLzFTTQphcmNoYmlzaG9wcmljLzFTTQphcmNoZGVhY29uLzFTTQphcmNoZGlvY2VzYW4vNQphcmNoZGlvY2VzZS8xTVMKYXJjaGR1Y2hlc3MvMU1TCmFyY2hkdWtlLzFNUwphcmNoZW5lbXkvMVNNCmFyY2hlci8xNU0KYXJjaGVyeS8xTQphcmNoZXR5cGFsLzUKYXJjaGV0eXBlLzE0TVMKYXJjaGZpZW5kLzFNUwphcmNoaWVwaXNjb3BhbC81CmFyY2hpcGVsYWdvLzE0TVMKYXJjaGl0ZWN0LzE0U00KYXJjaGl0ZWN0b25pYy81MVMKYXJjaGl0ZWN0b25pY3MvMU0KYXJjaGl0ZWN0dXJhbC81WQphcmNoaXRlY3R1cmUvMU1TCmFyY2hpdHJhdmUvMVNNCmFyY2hpdmFsLzUxCmFyY2hpdmUvMTREU01HCmFyY2hpdmlzdC8xTVMKYXJjaG5lc3MvMU0KYXJjaHdheS8xU00KYXJjdGljLzUxTVMKYXJkZW50LzVZCmFyZG9yLzFNUwphcmR1b3VzLzVZUAphcmR1b3VzbmVzcy8xTQphcmUvNFNCCmFyZWEvMVNNCmFyZWFsLzUKYXJlbid0LzQKYXJlbmEvMU1TCmFyZ2VudC8xNU0KYXJnaW5pbmUvMQphcmdvbi8xTQphcmdvc3kvMVNNCmFyZ290LzFNUwphcmd1YWJsZS81SVUKYXJndWFibHkvVQphcmd1ZS80WkdEUlMKYXJndWVyLzFNCmFyZ3VtZW50LzE0TVN+CmFyZ3VtZW50YXRpb24vMU0KYXJndW1lbnRhdGl2ZS81UFkKYXJndW1lbnRhdGl2ZW5lc3MvMU0KYXJneWxlLzFNUwphcmlhLzFTTQphcmlkLzVZCmFyaWRpdHkvMU0KYXJpZ2h0LzQKYXJpc2UvNDFHUwphcmlzZW4vNAphcmlzdG9jcmFjeS8xU00KYXJpc3RvY3JhdC8xU00KYXJpc3RvY3JhdGljLzUKYXJpc3RvY3JhdGljYWxseS8KYXJpdGhtZXRpYy8xNU0KYXJpdGhtZXRpY2FsLzUxWQphcml0aG1ldGljaWFuLzFNUwphcmsvMVNNCmFybSdzCmFybS8xNDVFQUdEUwphcm1hZGEvMU1TCmFybWFkaWxsby8xU00KYXJtYW1lbnQvMUFFTQphcm1hbWVudHMvMQphcm1hdHVyZS8xNE1TCmFybWJhbmQvMU1TCmFybWNoYWlyLzE1NE1TCmFybWVkLzU0VQphcm1mdWwvMU1TCmFybWhvbGUvMVNNCmFybWlzdGljZS8xMlNNCmFybWxldC8xTVMKYXJtbG9hZC8xUwphcm1vci8xNFpHTURSUwphcm1vcmVkLzU0VQphcm1vcmVyLzFNCmFybW9yaWFsLzUxCmFybW9yeS8xU00KYXJtcGl0LzFNUwphcm1yZXN0LzFTTQphcm15LzFTTQphcm9tYS8xTVMKYXJvbWF0aGVyYXBpc3QvMU1TCmFyb21hdGhlcmFweS8xTQphcm9tYXRpYy81MU1TCmFyb21hdGljYWxseS8KYXJvc2UvNAphcm91bmQvKzUKYXJvdXNhbC8xTQphcm91c2UvNEdEUwphcnBlZ2dpby8xNE1TCmFyci8xNAphcnJhaWduLzQxREdTTAphcnJhaWdubWVudC8xU00KYXJyYW5nZS80MUFFU0RMRwphcnJhbmdlbWVudCdzL0UKYXJyYW5nZW1lbnQvMUFTTQphcnJhbmdlci8xU00KYXJyYW50LzUKYXJyYXMvMU1TCmFycmF5LzE0RUdNRFMKYXJyZWFycy8xTQphcnJlc3QvMTRBR01EUwphcnJoeXRobWlhLzFNCmFycmh5dGhtaWMvNQphcnJoeXRobWljYWwvNQphcnJpdmFsLzFNUwphcnJpdmUvNEdEUwphcnJvZ2FuY2UvMU0KYXJyb2dhbnQvNVkKYXJyb2dhdGUvNEdORFMKYXJyb2dhdGlvbi8xTQphcnJvdy8xNE1TCmFycm93aGVhZC8xTVMKYXJyb3dyb290LzFNCmFycm95by8xTVMKYXJzZWQvNDUKYXJzZW5hbC8xTVMKYXJzZW5pYy8xNU0KYXJzaW5nLzQKYXJzb24vMTRNCmFyc29uaXN0LzFTTQphcnQvMTRTTQphcnRlcmlhbC81MQphcnRlcmlvbGUvMU1TCmFydGVyaW9zY2xlcm9zaXMvMU0KYXJ0ZXJ5LzFTTQphcnRmdWwvNVBZCmFydGZ1bG5lc3MvMU0KYXJ0aHJpdGljLzUxTVMKYXJ0aHJpdGlzLzFNCmFydGhyb3BvZC8xTVMKYXJ0aHJvc2NvcGUvMVNNCmFydGhyb3Njb3BpYy81CmFydGhyb3Njb3B5LzEKYXJ0aWNob2tlLzFTTQphcnRpY2xlLzE0TURTCmFydGljdWxhY3kvMUkKYXJ0aWN1bGFyLzUKYXJ0aWN1bGF0ZS81MTRZR05QRFNYCmFydGljdWxhdGVuZXNzLzFJTQphcnRpY3VsYXRpb24vMU0KYXJ0aWZhY3QvMVNNCmFydGlmaWNlLzE0UlNNWgphcnRpZmljZXIvMU0KYXJ0aWZpY2lhbC81WQphcnRpZmljaWFsaXR5LzFNCmFydGlsbGVyeS8xTQphcnRpbGxlcnltYW4vMU0KYXJ0aWxsZXJ5bWVuLzEKYXJ0aW5lc3MvMU0KYXJ0aXNhbi8xNU1TCmFydGlzdC8xNU1TCmFydGlzdGUvMU1TCmFydGlzdGljLzVJCmFydGlzdGljYWxseS8KYXJ0aXN0cnkvMU0KYXJ0bGVzcy81UFkKYXJ0bGVzc25lc3MvMU0KYXJ0c3kvNTFUUgphcnR3b3JrLzFNUwphcnR5LzUxUFRSCmFydWd1bGEvMQphcnVtLzFTTQphc2FwLwphc2Jlc3Rvcy8xNE0KYXNjZW5kLzRBR0RTCmFzY2VuZGFuY2UvMU0KYXNjZW5kYW5jeS8xTQphc2NlbmRhbnQvNTFTTQphc2NlbnNpb24vMU1TCmFzY2VudC8xTVMKYXNjZXJ0YWluLzRHRFNCTAphc2NlcnRhaW5tZW50LzFNCmFzY2V0aWMvNTFNUwphc2NldGljYWxseS8KYXNjZXRpY2lzbS8xTQphc2NvdC8xTVMKYXNjcmliZS80R0JEUwphc2NyaXB0aW9uLzFNCmFzZXB0aWMvNTEKYXNlcHRpY2FsbHkvCmFzZXh1YWwvNTFZCmFzZXh1YWxpdHkvMU0KYXNoLzE0TUROU0cKYXNoYW1lZC81NFVZCmFzaGNhbi8xNDVNUwphc2hsYXIvMU1TCmFzaG9yZS8KYXNocmFtLzFNUwphc2h0cmF5LzE0U00KYXNoeS81VFIKYXNpZGUvNTFNUwphc2luaW5lLzVZCmFzaW5pbml0eS8xU00KYXNrLzQxU0RHCmFza2FuY2UvNTQKYXNrZWQvNDVVCmFza2V3LzUKYXNsYW50LzUrCmFzbGVlcC81CmFzb2NpYWwvNTEKYXNwLzFTTU5YCmFzcGFyYWd1cy8xTQphc3BhcnRhbWUvMU0KYXNwZWN0LzE0TVMKYXNwZW4vNTFNCmFzcGVyaXR5LzFTTQphc3BlcnNpb24vMU1TCmFzcGhhbHQvMTRNREdTCmFzcGhvZGVsLzFTTQphc3BoeXhpYS8xTQphc3BoeXhpYXRlLzREU1hHTgphc3BoeXhpYXRpb24vMU0KYXNwaWMvMTVNUwphc3BpZGlzdHJhLzFNUwphc3BpcmFudC8xNU1TCmFzcGlyYXRlLzE0NU1HTkRTWAphc3BpcmF0aW9uLzFNCmFzcGlyYXRvci8xU00KYXNwaXJlLzRHRFMKYXNwaXJpbi8xTVMKYXNzLzE1TVM2CmFzc2FpbC80R0JEUwphc3NhaWxhYmxlLzVVCmFzc2FpbGFudC8xNVNNCmFzc2Fzc2luLzE0U00KYXNzYXNzaW5hdGUvNDFHTlhEUwphc3Nhc3NpbmF0aW9uLzFNCmFzc2F1bHQvMTRNRFJHUwphc3NheS8xNFpHTURSUwphc3NheWVyLzFNCmFzc2VtYmxhZ2UvMVNNCmFzc2VtYmxlLzRBRUdTRAphc3NlbWJsZXIvMU1TCmFzc2VtYmxpZXMvMQphc3NlbWJseS8xQU0KYXNzZW1ibHltYW4vMU0KYXNzZW1ibHltZW4vMQphc3NlbWJseXdvbWFuLzFNCmFzc2VtYmx5d29tZW4vMQphc3NlbnQvNDFHTURTCmFzc2VydC80MUFHVkRTCmFzc2VydGlvbi8xQU0KYXNzZXJ0aW9ucy8xCmFzc2VydGl2ZS81WVAKYXNzZXJ0aXZlbmVzcy8xTQphc3Nlc3MvNEFMR0RTCmFzc2Vzc21lbnQvMUFTTQphc3Nlc3Nvci8xTVMKYXNzZXQvMU1TCmFzc2V2ZXJhdGUvNERTR04KYXNzZXZlcmF0aW9uLzFNCmFzc2hvbGUvMU1TITYKYXNzaWR1aXR5LzFNCmFzc2lkdW91cy81UFkKYXNzaWR1b3VzbmVzcy8xTQphc3NpZ24ncwphc3NpZ24vNDFBTEdEUwphc3NpZ25hYmxlLzUKYXNzaWduYXRpb24vMU1TCmFzc2lnbmVkLzU0VQphc3NpZ25lZS8xTQphc3NpZ25lci8xTVMKYXNzaWdubWVudC8xQU1TCmFzc2lnbm9yLzFNUwphc3NpbWlsYXRlLzQxRFNHTgphc3NpbWlsYXRlZC80VQphc3NpbWlsYXRpb24vMU0KYXNzaXN0LzQxR1ZNRFMKYXNzaXN0YW5jZS8xTQphc3Npc3RhbnQvNTFTTQphc3Npc3RlZC80VQphc3NpemUvMTRNUwphc3NuLzEKYXNzb2MvMQphc3NvY2lhdGUncy8xCmFzc29jaWF0ZS81MTRFRFNHTlYKYXNzb2NpYXRpb24vMUVNCmFzc29jaWF0aW9ucy8xCmFzc29jaWF0aXZpdHkvMQphc3NvbmFuY2UvMU0KYXNzb25hbnQvNTFNUwphc3NvcnQvNEdMRFMKYXNzb3J0YXRpdmUvNQphc3NvcnRtZW50LzFNUwphc3N0LzEKYXNzdWFnZS80R0RTCmFzc3VtZS80QkdEUwphc3N1bXB0aW9uLzFTTQphc3N1bXB0aXZlLzUKYXNzdXJhbmNlLzFBU00KYXNzdXJlLzRBR0RTCmFzc3VyZWQvNDUxTVlTCmFzdGF0aW5lLzFNCmFzdGVyLzFFTVMKYXN0ZXJpc2svMTRHTURTCmFzdGVybi81CmFzdGVyb2lkLzFNUwphc3RobWEvMU0KYXN0aG1hdGljLzUxU00KYXN0aG1hdGljYWxseS8KYXN0aWdtYXRpYy81MQphc3RpZ21hdGlzbS8xU00KYXN0aXIvNQphc3RvbmlzaC80RFNMRwphc3RvbmlzaGluZy81NFkKYXN0b25pc2htZW50LzFNCmFzdG91bmQvNDVHRFMKYXN0b3VuZGluZy80NVkKYXN0cmFkZGxlLysKYXN0cmFraGFuLzFNCmFzdHJhbC81MQphc3RyYXkvCmFzdHJpZGUvKwphc3RyaW5nZW5jeS8xTQphc3RyaW5nZW50LzE1U01ZCmFzdHJvbGFiZS8xU00KYXN0cm9sb2dlci8xU00KYXN0cm9sb2dpY2FsLzVZCmFzdHJvbG9naXN0LzFNUwphc3Ryb2xvZ3kvMU0KYXN0cm9uYXV0LzFNUwphc3Ryb25hdXRpYy81Uwphc3Ryb25hdXRpY2FsLzUKYXN0cm9uYXV0aWNzLzFNCmFzdHJvbm9tZXIvMVNNCmFzdHJvbm9taWMvNQphc3Ryb25vbWljYWwvNVkKYXN0cm9ub215LzFNCmFzdHJvcGh5c2ljYWwvNQphc3Ryb3BoeXNpY2lzdC8xTVMKYXN0cm9waHlzaWNzLzFNCmFzdHV0ZS81UFlUUgphc3R1dGVuZXNzLzFNCmFzdW5kZXIvCmFzeWx1bS8xU00KYXN5bW1ldHJpYy81CmFzeW1tZXRyaWNhbC81WQphc3ltbWV0cnkvMVNNCmFzeW1wdG9tYXRpYy81MQphc3ltcHRvdGljLzUKYXN5bXB0b3RpY2FsbHkvCmFzeW5jaHJvbm91cy81WQphdC8rMTQ4fgphdGF2aXNtLzFNCmF0YXZpc3QvMVNNCmF0YXZpc3RpYy81CmF0YXhpYS8xTQphdGF4aWMvNTFNUwphdGUvNDEKYXRlbGllci8xU00KYXRoZWlzbS8xTQphdGhlaXN0LzE1NE1TCmF0aGVpc3RpYy81CmF0aGVyb3NjbGVyb3Npcy8xTQphdGhlcm9zY2xlcm90aWMvNQphdGhpcnN0LzUKYXRobGV0ZS8xTVMKYXRobGV0aWMvNTFTCmF0aGxldGljYWxseS8KYXRobGV0aWNpc20vMQphdGhsZXRpY3MvMU0KYXRod2FydC8rCmF0aWx0LzUrCmF0aXNob28vMQphdGxhcy8xTVMKYXRtb3NwaGVyZS8xTVMKYXRtb3NwaGVyaWMvNVMKYXRtb3NwaGVyaWNhbGx5LwphdG1vc3BoZXJpY3MvMU0KYXRvbGwvMU1TCmF0b20vMVNNCmF0b21pYy81MQphdG9taWNhbGx5LwphdG9taXplLzRaR0RSUwphdG9taXplci8xTQphdG9uYWwvNVkKYXRvbmFsaXR5LzFNCmF0b25lLzRMR0RTCmF0b25lbWVudC8xTQphdG9wLysKYXRyaWEvMQphdHJpYWwvNQphdHJpb3ZlbnRyaWN1bGFyLzUKYXRyaXVtLzFNCmF0cm9jaW91cy81UFkKYXRyb2Npb3VzbmVzcy8xTQphdHJvY2l0eS8xU00KYXRyb3BoeS8xNERTTUcKYXRyb3BpbmUvMU0KYXR0YWNoLzRBTEdEUwphdHRhY2hlLzFCTQphdHRhY2hlZC80NVUKYXR0YWNobWVudC8xQU0KYXR0YWNobWVudHMvMQphdHRhY2svMTQ1WkdNRFJTCmF0dGFja2VyLzFNCmF0dGFpbi80QUdEUwphdHRhaW5hYmlsaXR5LzFNCmF0dGFpbmFibGUvNTFVCmF0dGFpbmRlci8xTQphdHRhaW5tZW50LzFTTQphdHRhci8xTQphdHRlbXB0J3MKYXR0ZW1wdC80MUFTREcKYXR0ZW5kLzRTRFJaRwphdHRlbmRhbmNlLzFTTQphdHRlbmRhbnQvMTVTTQphdHRlbmRlZC80NVUKYXR0ZW5kZWUvMVNNCmF0dGVudGlvbi8xSU0KYXR0ZW50aW9uYWwvNQphdHRlbnRpb25zLzEKYXR0ZW50aXZlLzVJUFkKYXR0ZW50aXZlbmVzcy8xSU0KYXR0ZW51YXRlLzQ1RFNHTgphdHRlbnVhdGlvbi8xTQphdHRlc3QvNFNERwphdHRlc3RhdGlvbi8xU00KYXR0ZXN0ZWQvNDVVCmF0dGljLzFTTQphdHRpcmUvMTREU01HCmF0dGl0dWRlLzE0U00KYXR0aXR1ZGluYWwvNTEKYXR0aXR1ZGluaXplLzRHRFMKYXR0bi8xCmF0dG9ybmV5LzE0TVMKYXR0cmFjdC80U0dWREIKYXR0cmFjdGFudC8xTVMKYXR0cmFjdGlvbi8xTVMKYXR0cmFjdGl2ZS81VVkKYXR0cmFjdGl2ZW5lc3MvMU0KYXR0cmlidXRlLzE0RFNNR05WQlgKYXR0cmlidXRlZC80NVUKYXR0cmlidXRpb24vMU0KYXR0cmlidXRpdmUvNTFNWVMKYXR0cml0aW9uLzE0TQphdHR1bmUvNERTRwphdHR5LzEKYXR3aXR0ZXIvNQphdHlwaWNhbC81MVkKYXViZXJnaW5lLzFTCmF1YnVybi8xNU0KYXVjdGlvbi8xNE1ER1MKYXVjdGlvbmVlci8xNFNNCmF1ZGFjaW91cy81WVAKYXVkYWNpb3VzbmVzcy8xTQphdWRhY2l0eS8xTQphdWRpYmlsaXR5LzFJTQphdWRpYmxlLzU0MU1TCmF1ZGlibHkvSQphdWRpZW5jZS8xTVMKYXVkaW8vNTFNUwphdWRpb2xvZ2ljYWwvNQphdWRpb2xvZ2lzdC8xU00KYXVkaW9sb2d5LzFNCmF1ZGlvbWV0ZXIvMVNNCmF1ZGlvcGhpbGUvMTVTTQphdWRpb3RhcGUvMTRTTQphdWRpb3Zpc3VhbC81UwphdWRpb3Zpc3VhbHMvMU0KYXVkaXQvMTRHTURTCmF1ZGl0aW9uLzE0U01ERwphdWRpdG9yLzFNUwphdWRpdG9yaXVtLzFTTQphdWRpdG9yeS81MQphdWdlci8xNE1TCmF1Z2h0LzgxNE1TCmF1Z21lbnQvNDFEUlpHUwphdWdtZW50YXRpb24vMU1TCmF1Z21lbnRhdGl2ZS81MQphdWdtZW50ZXIvMU0KYXVndXIvMTRHTURTCmF1Z3VyeS8xU00KYXVndXN0LzU0MVBUUlkKYXVndXN0bmVzcy8xTQphdWsvMVNNCmF1bnQvMVNNCmF1bnRpZS8xNFNNCmF1cmEvMU1TCmF1cmFsLzVZCmF1cmVvbGUvMTRTTQphdXJldXMvMQphdXJpY2xlLzFTTQphdXJpY3VsYXIvNTEKYXVyb3JhLzFTTQphdXNjdWx0YXRlLzRHTkRTWAphdXNjdWx0YXRpb24vMU0KYXVzcGljZS8xNFNNCmF1c3BpY2lvdXMvNUlZCmF1c3BpY2lvdXNuZXNzLzFNCmF1c3RlcmUvNVJZVAphdXN0ZXJpdHkvMVNNCmF1c3RyYWwvNTEKYXV0aGVudGljLzVJVQphdXRoLzE0CmF1dGhlbnRpY2FsbHkvCmF1dGhlbnRpY2F0ZS80NVhHTkRTCmF1dGhlbnRpY2F0ZWQvNFUKYXV0aGVudGljYXRpb24vMU0KYXV0aGVudGljaXR5LzFNCmF1dGhvci8xNFNNREcKYXV0aG9yZXNzLzFNUwphdXRob3JpYWwvNQphdXRob3JpdGFyaWFuLzUxTVMKYXV0aG9yaXRhcmlhbmlzbS8xTQphdXRob3JpdGF0aXZlLzVZUAphdXRob3JpdGF0aXZlbmVzcy8xTQphdXRob3JpdHkvMVNNCmF1dGhvcml6YXRpb24vMU1TCmF1dGhvcml6ZS80QUdEUwphdXRob3JpemVkLzU0VQphdXRob3JzaGlwLzFNCmF1dGlzbS8xTQphdXRpc3RpYy81MQphdXRvLzUxNE1TCmF1dG9iYWhuLzFTTQphdXRvYmlvZ3JhcGhlci8xU00KYXV0b2Jpb2dyYXBoaWMvNQphdXRvYmlvZ3JhcGhpY2FsLzVZCmF1dG9iaW9ncmFwaHkvMVNNCmF1dG9jbGF2ZS8xNDVNUwphdXRvY3JhY3kvMVNNCmF1dG9jcmF0LzFTTQphdXRvY3JhdGljLzUKYXV0b2NyYXRpY2FsbHkvCmF1dG9jcm9zcy8xNAphdXRvZGlkYWN0LzFTTQphdXRvZ3JhcGgvMTU0TURHCmF1dG9ncmFwaHMvMTQKYXV0b2ltbXVuZS81CmF1dG9pbW11bml0eS8xTQphdXRvbWFrZXIvMVNNCmF1dG9tYXRlLzRHTkRTCmF1dG9tYXRpYy81MVNNCmF1dG9tYXRpY2FsbHkvCmF1dG9tYXRpb24vMU0KYXV0b21hdGlzbS8xTQphdXRvbWF0aXplLzRHRFMKYXV0b21hdG9uLzFTTQphdXRvbW9iaWxlLzE0NURTTUcKYXV0b21vdGl2ZS81MQphdXRvbm9taWMvNQphdXRvbm9tb3VzLzVZCmF1dG9ub215LzFNCmF1dG9waWxvdC8xNFNNCmF1dG9wc3kvMTRHRFNNCmF1dG9zdWdnZXN0aW9uLzEKYXV0b3dvcmtlci8xTVMKYXV0dW1uLzE0U00KYXV0dW1uYWwvNQphdXgvNQphdXhpbGlhcnkvNTFTTQphdXhpbi8xTQphdi81MTRSWgphdmFpbC80MTVCR01EUwphdmFpbGFiaWxpdHkvMVVNCmF2YWlsYWJsZS81VQphdmFsYW5jaGUvMTRTTQphdmFyaWNlLzFNCmF2YXJpY2lvdXMvNVkKYXZhc3QvCmF2YXRhci8xTVMKYXZhdW50LzE0CmF2ZHAvMQphdmUvMQphdmVuZ2UvNDFaR0RSUwphdmVuZ2VyLzFNCmF2ZW51ZS8xTVMKYXZlcmFnZS8xNTRNWUdEUwphdmVycmVkLzQKYXZlcnJpbmcvNAphdmVyc2UvNTRYTgphdmVyc2lvbi8xTQphdmVydC80R0RTCmF2Zy8xCmF2aWFuLzUxCmF2aWFyeS8xU00KYXZpYXRpb24vMU0KYXZpYXRvci8xTVMKYXZpYXRyaWNlcy8xCmF2aWF0cml4LzFNUwphdmlkLzVZCmF2aWRpdHkvMU0KYXZpb25pYy81Uwphdmlvbmljcy8xTQphdml0YW1pbm9zaXMvMU0KYXZvY2Fkby8xNVNNCmF2b2NhdGlvbi8xTVMKYXZvY2F0aW9uYWwvNQphdm9pZC80U0RHQgphdm9pZGFibGUvNTFVCmF2b2lkYWJseS9VCmF2b2lkYW5jZS8xTQphdm9pZGFudC81MQphdm9pcmR1cG9pcy8xTQphdm91Y2gvNDFEU0cKYXZvdy80MUVER1MKYXZvd2FsLzFFU00KYXZvd2VkLzQ1WQphdnVuY3VsYXIvNVkKYXcvMQphd2FpdC80MUdEUwphd2FrZS81NEdTCmF3YWtlbi80QUdEUwphd2FrZW5pbmcvNTE0U00KYXdhcmQvMTRHTURTCmF3YXJkZWUvMVMKYXdhcmUvNTRVUAphd2FyZW5lc3MvMVVNCmF3YXNoLzUKYXdheS81NAphd2UvMTREU01HCmF3ZWlnaC81CmF3ZXNvbWUvNTFZUAphd2Vzb21lbmVzcy8xTQphd2VzdHJ1Y2svNQphd2Z1bC81WVAKYXdmdWxsZXIvNQphd2Z1bGxlc3QvNQphd2Z1bG5lc3MvMU0KYXdoaWxlLwphd2t3YXJkLzUxUllQVAphd2t3YXJkbmVzcy8xTQphd2wvMVNNCmF3bi8xR0pTTQphd25pbmcvMU0KYXdva2UvNAphd29rZW4vNAphd3J5LzUKYXgvMTRNRFNHCmF4aWFsLzUxWQpheGlvbS8xU00KYXhpb21hdGljLzUKYXhpb21hdGljYWxseS8KYXhpcy8xTQpheGxlLzFNUwpheGxldHJlZS8xU00KYXhvbG90bC8xU00KYXhvbi8xTVMKYXlhaC8xTQpheWFocy8xCmF5YXRvbGxhaC8xTQpheWF0b2xsYWhzLzEKYXllLzFTTQphemFsZWEvMVNNCmF6aW11dGgvMU0KYXppbXV0aHMvMQphenVyZS8xNTRTTQpiLzU0S0RUCmJhYS8xNFNNREcKYmFiYmxlLzQxTVpHRFJTCmJhYmJsZXIvMU0KYmFiZS8xU00KYmFiZWwvMU1TCmJhYm9vbi8xTVMKYmFidXNoa2EvMVNNCmJhYnkvMTU0VEdEUlNNCmJhYnlob29kLzFNCmJhYnlpc2gvNQpiYWJ5c2F0LzQKYmFieXNpdC80UwpiYWJ5c2l0dGVyLzFNUwpiYWJ5c2l0dGluZy80MU0KYmFjY2FsYXVyZWF0ZS8xU00KYmFjY2FyYXQvMU0KYmFjY2hhbmFsLzUxTVMKYmFjY2hhbmFsaWEvMU0KYmFjY2hhbmFsaWFuLzUxTVMKYmFjY3kvMQpiYWNoZWxvci8xU00KYmFjaGVsb3Job29kLzFNCmJhY2lsbGFyeS81CmJhY2lsbGkvMQpiYWNpbGx1cy8xTQpiYWNrLzUxNFNKWkdNRFJ+CmJhY2thY2hlLzFNUwpiYWNrYmVuY2gvNTFTCmJhY2tiaXQvNApiYWNrYml0ZS80MVpHUlMKYmFja2JpdGVyLzFNCmJhY2tiaXR0ZW4vNApiYWNrYm9hcmQvMTRTTQpiYWNrYm9uZS8xTVMKYmFja2JyZWFraW5nLzUKYmFja2NoYXQvMTQKYmFja2Nsb3RoLzEKYmFja2Nsb3Rocy8xCmJhY2tjb21iLzQxRFNHCmJhY2tkYXRlLzQxR0RTCmJhY2tkb29yLzE0CmJhY2tkcm9wLzE0TVMKYmFja2VyLzE1TQpiYWNrZmllbGQvMVNNCmJhY2tmaXJlLzQxTUdEUwpiYWNrZ2FtbW9uLzE0TQpiYWNrZ3JvdW5kLzUxNE1SWlMKYmFja2dyb3VuZGVyLzFNCmJhY2toYW5kLzE0NU1EUlNaRwpiYWNraGFuZGVkLzU0WQpiYWNraGFuZGVyLzFNCmJhY2tob2UvMTRNUwpiYWNraW5nLzE1NE0KYmFja2xhc2gvMTRNUwpiYWNrbGVzcy81CmJhY2tsb2cvMTRNUwpiYWNrbG9nZ2VkLzQ1CmJhY2tsb2dnaW5nLzQKYmFja3BhY2svMTRaR01EUlMKYmFja3BhY2tlci8xTQpiYWNrcGFja2luZy80MU0KYmFja3BlZGFsLzQxU0RHCmJhY2tyZXN0LzFTTQpiYWNrcm9vbS8xNVMKYmFja3NjcmF0Y2hpbmcvNDFNCmJhY2tzZWF0LzE0U00KYmFja3NpZGUvMTVTTQpiYWNrc2xhcHBlci8xU00KYmFja3NsYXBwaW5nLzQxTQpiYWNrc2xhc2gvMTRNUwpiYWNrc2xpZC80CmJhY2tzbGlkZS80MVJTWkcKYmFja3NsaWRlci8xTQpiYWNrc3BhY2UvMTREU01HCmJhY2tzcGluLzE0TQpiYWNrc3RhYmJlci8xTVMKYmFja3N0YWJiaW5nLzQxCmJhY2tzdGFnZS81MU0KYmFja3N0YWlyLzUxUwpiYWNrc3RvcC8xNFNNCmJhY2tzdG9wcGVkLzQKYmFja3N0b3BwaW5nLzQKYmFja3N0b3J5LzFTCmJhY2tzdHJlZXQvNTFTCmJhY2tzdHJldGNoLzFNUwpiYWNrc3Ryb2tlLzE0TUdEUwpiYWNrdGFsay8xNE0KYmFja3RyYWNrLzE0U0RHCmJhY2t1cC8xNTRNUwpiYWNrd2FyZC81MVBTWQpiYWNrd2FyZG5lc3MvMU0KYmFja3dhc2gvMTRNCmJhY2t3YXRlci8xNFNNCmJhY2t3b29kcy8xNU0KYmFja3dvb2RzbWFuLzFNCmJhY2t3b29kc21lbi8xCmJhY2t5YXJkLzFTTQpiYWNvbi8xTQpiYWN0ZXJpYS8xTQpiYWN0ZXJpYWwvNQpiYWN0ZXJpY2lkYWwvNTEKYmFjdGVyaWNpZGUvMVNNCmJhY3RlcmlvbG9naWMvNQpiYWN0ZXJpb2xvZ2ljYWwvNQpiYWN0ZXJpb2xvZ2lzdC8xU00KYmFjdGVyaW9sb2d5LzFNCmJhY3Rlcml1bS8xTQpiYWQvNTE0TVlQCmJhZGRlci81CmJhZGRlc3QvNQpiYWRkaWUvMU1TCmJhZGUvNApiYWRnZS8xNE1aUlMKYmFkZ2VyLzE0R01ECmJhZGluYWdlLzE0TQpiYWRsYW5kcy8xTQpiYWRtYW4vMU0KYmFkbWVuLzEKYmFkbWludG9uLzFNCmJhZG1vdXRoLzRHRApiYWRtb3V0aHMvNApiYWRuZXNzLzFNCmJhZmZsZS80MU1aR0RSU0wKYmFmZmxlbWVudC8xTQpiYWZmbGVyLzFNCmJhZy8xNFNNCmJhZ2F0ZWxsZS8xNFNNCmJhZ2VsLzE0TVMKYmFnZnVsLzFNUwpiYWdnYWdlLzFNCmJhZ2dlZC80NQpiYWdnaWUvMU0KYmFnZ2lseS8KYmFnZ2luZXNzLzFNCmJhZ2dpbmcvNDEKYmFnZ3kvNTFQVFJTCmJhZ3BpcGUvMTRNWlJTCmJhZ3BpcGVyLzFNCmJhZ3VldHRlLzFNUwpiYWgvMQpiYWh0LzErU00KYmFpbC8xNFNCR01ECmJhaWxleS8xUwpiYWlsaWZmLzFTCmJhaWxpd2ljay8xTVMKYmFpbG91dC8xU00KYmFpbHNtYW4vMU0KYmFpbHNtZW4vMQpiYWlybi8xNE1TCmJhaXQvMTQ1U0dNRApiYWl6ZS8xNE0KYmFrZS80MURSU01aRwpiYWtlZC80NVUKYmFrZXIvMU0KYmFrZXJ5LzFTTQpiYWtlc2hvcC8xTVMKYmFrbGF2YS8xTQpiYWtzaGVlc2gvMTRNCmJhbGFjbGF2YS8xTVMKYmFsYWxhaWthLzFNUwpiYWxhbmNlJ3MKYmFsYW5jZS8xNFVEU0cKYmFsYm9hLzFTTQpiYWxjb255LzFTTQpiYWxkLzUxNFNUR1BEUlkKYmFsZGVyZGFzaC8xNE0KYmFsZGZhY2VkLzUKYmFsZG5lc3MvMU0KYmFsZHJpYy8xU00KYmFsZHkvMVMKYmFsZS8xNERSU01aRwpiYWxlZW4vMU0KYmFsZWZ1bC81UFkKYmFsZWZ1bG5lc3MvMU0KYmFsZXIvMU0KYmFsay8xNFNHTUQKYmFsa3kvNVJUCmJhbGwvMTRTR01ECmJhbGxhZC8xNFNNCmJhbGxhZGVlci8xNE1TCmJhbGxhZHJ5LzFNCmJhbGxhc3QvMTRHU01ECmJhbGxjb2NrLzFNUwpiYWxsZXJpbmEvMVNNCmJhbGxldC8xNFNNCmJhbGxldGljLzUKYmFsbGdhbWUvMU1TCmJhbGxnaXJsLzFTCmJhbGxnb3duLzE0UwpiYWxsaXN0aWMvNVMKYmFsbGlzdGljcy8xTQpiYWxsb29uLzE0U0dNRApiYWxsb29uaXN0LzFNUwpiYWxsb3QvMTRTTURHCmJhbGxwYXJrLzE1NE1TCmJhbGxwbGF5ZXIvMU1TCmJhbGxwb2ludC8xTVMKYmFsbHJvb20vMTRNUwpiYWxscy8xNERTRwpiYWxsc3kvNVJUCmJhbGx5LzUxCmJhbGx5aG9vLzE0U01ERwpiYWxtLzE0U00KYmFsbWluZXNzLzFNCmJhbG15LzVSVFAKYmFsb25leS8xTQpiYWxzYS8xTVMKYmFsc2FtLzE0U00KYmFsc2FtaWMvNTEKYmFsdXN0ZXIvMVNNCmJhbHVzdHJhZGUvMU1TCmJhbWJvby8xNTRTTQpiYW1ib296bGUvNDFEU0cKYmFuLzQxU00KYmFuYWwvNVkKYmFuYWxpdHkvMVNNCmJhbmFuYS8xU00KYmFuZCdzCmJhbmQvMTRFU0dECmJhbmRhZ2UvMTREU01HCmJhbmRhbm5hLzFNUwpiYW5kYm94LzFNUwpiYW5kZWF1LzFNCmJhbmRlYXV4LzEKYmFuZGl0LzE0U00KYmFuZGl0cnkvMU0KYmFuZGxlYWRlci8xUwpiYW5kbWFzdGVyLzFTTQpiYW5kb2xlZXIvMVNNCmJhbmRzbWFuLzFNCmJhbmRzbWVuLzEKYmFuZHN0YW5kLzFTTQpiYW5kd2Fnb24vMVNNCmJhbmR3aWR0aC8xCmJhbmR3aWR0aHMvMQpiYW5keS80NTFEUlNURwpiYW5lLzE0U00KYmFuZWZ1bC81CmJhbmcvMTRTR01EUgpiYW5nbGUvMTRTTQpiYW5pLzEKYmFuaXNoLzRHTERTCmJhbmlzaG1lbnQvMU0KYmFuaXN0ZXIvMTRTTQpiYW5qby8xNE1TCmJhbmpvaXN0LzFTTQpiYW5rLzE0U1pHQk1EUgpiYW5rYm9vay8xU00KYmFua2NhcmQvMVNNCmJhbmtlci8xTQpiYW5raW5nLzE0TQpiYW5rbm90ZS8xU00KYmFua3JvbGwvMTRTR01ECmJhbmtydXB0LzU0MVNHTUQKYmFua3J1cHRjeS8xU00KYmFubmVkLzQ1CmJhbm5lci8xNTRTTQpiYW5uaW5nLzQxCmJhbm5vY2svMU1TCmJhbm5zLzFNCmJhbnF1ZXQvMTRaR01EUlMKYmFucXVldGVyLzFNCmJhbnF1ZXR0ZS8xU00KYmFuc2hlZS8xTVMKYmFudGFtLzE1U00KYmFudGFtd2VpZ2h0LzFTTQpiYW50ZXIvMTRHU01ECmJhbnRlcmluZy8xNDVZCmJhbnlhbi8xU00KYmFuemFpLzUxNFNNCmJhb2JhYi8xU00KYmFwLzE0UwpiYXB0aXNtLzFNUwpiYXB0aXNtYWwvNTEKYmFwdGlzdC8xUwpiYXB0aXN0ZXJ5LzFTTQpiYXB0aXplLzRaR0RSUwpiYXB0aXplZC80NVUKYmFwdGl6ZXIvMU0KYmFyJ3MKYmFyLzE0K0VDVVRTCmJhcmIvMTRTWkdNRFIKYmFyYmFjb2EvMQpiYXJiYXJpYW4vNTFTTQpiYXJiYXJpYW5pc20vMU1TCmJhcmJhcmljLzUKYmFyYmFyaWNhbGx5LwpiYXJiYXJpc20vMVNNCmJhcmJhcml0eS8xU00KYmFyYmFyaXplLzREU0cKYmFyYmFyb3VzLzVZCmJhcmJlY3VlLzE0RFNNRwpiYXJiZWwvMVNNCmJhcmJlbGwvMU1TCmJhcmJlci8xNEdNRApiYXJiZXJyeS8xU00KYmFyYmVyc2hvcC8xNE1TCmJhcmJpZS8xUwpiYXJiaXR1cmF0ZS8xU00KYmFyYndpcmUvMU0KYmFyY2Fyb2xlLzFTTQpiYXJkLzE0U00KYmFyZGljLzUxCmJhcmUvNTE0RFJTUFlHCmJhcmViYWNrLzU0MUQKYmFyZWZhY2VkLzVZCmJhcmVmb290LzVECmJhcmVoYW5kZWQvNQpiYXJlaGVhZGVkLzUKYmFyZWxlZ2dlZC81CmJhcmVuZXNzLzFNCmJhcmYvMTRTR01EWQpiYXJmbHkvMVNNCmJhcmdhaW4vMTRNRFJaR1MKYmFyZ2FpbmVyLzFNCmJhcmdlLzE0TUdEUwpiYXJnZW1hbi8xTQpiYXJnZW1lbi8xCmJhcmhvcC80UwpiYXJob3BwZWQvNApiYXJob3BwaW5nLzQxCmJhcmlzdGEvMTRNUwpiYXJpdG9uZS8xTVMKYmFyaXVtLzFNCmJhcmsncwpiYXJrLzQxQ1NHRApiYXJrZWVwLzE0Wk1SUwpiYXJrZWVwZXIvMU0KYmFya2VyLzFTTQpiYXJsZXkvMU0KYmFybWFpZC8xTVMKYmFybWFuLzFNCmJhcm1lbi8xCmJhcm15LzUxUlQKYmFybi8xNFNNCmJhcm5hY2xlLzE0TURTCmJhcm5leS8xNTRTCmJhcm5zdG9ybS80MVNEUlpHCmJhcm5zdG9ybWVyLzFNCmJhcm55YXJkLzE1U00KYmFyb21ldGVyLzFNUwpiYXJvbWV0cmljLzUKYmFyb21ldHJpY2FsbHkvCmJhcm9uLzFNUwpiYXJvbmFnZS8xTVMKYmFyb25lc3MvMU1TCmJhcm9uZXQvMU1TCmJhcm9uZXRjeS8xU00KYmFyb25pYWwvNQpiYXJvbnkvMVNNCmJhcm9xdWUvNTFNCmJhcnJhY2svMTRNREdTCmJhcnJhY3VkYS8xU00KYmFycmFnZS8xNE1HRFMKYmFycmUvMTRNR0pEUwpiYXJyZWQvNDVVRUMKYmFycmVsLzE0R1NNRApiYXJyZW4vNTFUUFNNUgpiYXJyZW5uZXNzLzFNCmJhcnJldHRlLzE0U00KYmFycmljYWRlLzE0TUdEUwpiYXJyaWVyLzE0TVMKYmFycmluZy80MStFQ1UKYmFycmlvLzFTTQpiYXJyaXN0ZXIvMU1TCmJhcnJvb20vMU1TCmJhcnJvdy8xU00KYmFydGVuZGVyLzFTTQpiYXJ0ZXIvMTRaR1NNRFIKYmFydGVyZXIvMU0KYmFyeW9uLzFTTQpiYXNhbC81MVkKYmFzYWx0LzFNCmJhc2FsdGljLzUKYmFzZSdzCmJhc2UvMTQ1Q0RTTFRHCmJhc2ViYWxsLzFTTQpiYXNlYm9hcmQvMU1TCmJhc2VsZXNzLzUKYmFzZWxpbmUvMTRNUwpiYXNlbHkvCmJhc2VtYW4vMU0KYmFzZW1lbi8xCmJhc2VtZW50LzFDTVMKYmFzZW5lc3MvMU0KYmFzZXIvNQpiYXNoLzQxR01EUwpiYXNoZnVsLzVQWQpiYXNoZnVsbmVzcy8xTQpiYXNoaW5nLzQxTQpiYXNpYy81MU1TCmJhc2ljYWxseS8KYmFzaWwvMTRNCmJhc2lsaWNhLzFNUwpiYXNpbGlzay8xNU1TCmJhc2luLzE0TVMKYmFzaW5mdWwvMU1TCmJhc2lzLzFNCmJhc2svNDFTR0QKYmFza2V0LzE0U00KYmFza2V0YmFsbC8xNE1TCmJhc2tldHJ5LzFNCmJhc2tldHdvcmsvMU0KYmFzcXVlLzFTCmJhc3MvNTE0TVMKYmFzc2V0LzE0U00KYmFzc2luZXQvMU1TCmJhc3Npc3QvMU1TCmJhc3NvLzFNUwpiYXNzb29uLzE0TVMKYmFzc29vbmlzdC8xU00KYmFzc3dvb2QvMU1TCmJhc3QvMTVNCmJhc3RhcmQvMTU0TVMKYmFzdGFyZGl6YXRpb24vMU1TCmJhc3RhcmRpemUvNEdEUwpiYXN0YXJkeS8xTQpiYXN0ZS80MVpHTlhEUlMKYmFzdGVyLzFNCmJhc3Rpb24vMTRNCmJhdC8xNFNNCmJhdGNoLzE0NU1EU0cKYmF0ZS80MUtBQ0dTRApiYXRoLzE0WkdNRFJTCmJhdGhlLzQxTQpiYXRoZXIvMU0KYmF0aGV0aWMvNQpiYXRoaG91c2UvMU1TCmJhdGhpbmcvMTRNCmJhdGhtYXQvMU1TCmJhdGhvcy8xTQpiYXRocm9iZS8xU00KYmF0aHJvb20vMTRTTQpiYXRocy8xNApiYXRodHViLzFNUwpiYXRod2F0ZXIvMQpiYXRoeXNjYXBoZS8xU00KYmF0aHlzcGhlcmUvMU1TCmJhdGlrLzE0TVMKYmF0aXN0ZS8xTQpiYXRtYW4vMTRNCmJhdG1lbi8xCmJhdG9uLzE0TVMKYmF0c21hbi8xTQpiYXRzbWVuLzEKYmF0dGFsaW9uLzE0U00KYmF0dGVkLzU0CmJhdHRlbi80NTFHU01ECmJhdHRlci80MUpaR1NNRFIKYmF0dGVyZXIvMU0KYmF0dGVyeS8xU00KYmF0dGluZy8xNE0KYmF0dGxlLzE0NUxEUlNNWkcKYmF0dGxlYXhlLzFNUwpiYXR0bGVkb3JlLzFTTQpiYXR0bGVkcmVzcy8xCmJhdHRsZWZpZWxkLzFNUwpiYXR0bGVmcm9udC8xTVMKYmF0dGxlZ3JvdW5kLzFNUwpiYXR0bGVtZW50LzFTTQpiYXR0bGVyLzFNCmJhdHRsZXNoaXAvMVNNCmJhdHR5LzUxUlQKYmF1YmxlLzFTTQpiYXVkLzFTTQpiYXV4aXRlLzFNCmJhd2QvMTU0U00KYmF3ZGlseS8KYmF3ZGluZXNzLzFNCmJhd2R5LzVQUlQKYmF3bC80MVNHTUQKYmF5LzE0NVNNREcKYmF5YmVycnkvMVNNCmJheW9uZXQvMTRTTURHCmJheW91LzFNUwpiYXphYXIvMVNNCmJhemlsbGlvbi8xUwpiYXpvb2thLzE0U00KYmJsLzEKYmRybS8xCmJlLzQxfgpiZWFjaC8xNE1EU0cKYmVhY2hjb21iZXIvMVNNCmJlYWNoZnJvbnQvNTEKYmVhY2hoZWFkLzFNUwpiZWFjaHdlYXIvMU0KYmVhY29uLzE0U00KYmVhZC8xNFNHTUQKYmVhZGluZy80MU0KYmVhZGxlLzFTTQpiZWFkeS81UlQKYmVhZ2xlLzE0U00KYmVhay8xNFNaTURSCmJlYWtlci8xTQpiZWFtLzE0U0dNRApiZWFuLzE0U0dNRApiZWFuYmFnLzFNUwpiZWFuZmVhc3QvMVMKYmVhbmllLzFTTQpiZWFucG9sZS8xTVMKYmVhbnNwcm91dC8xUwpiZWFuc3RhbGsvMU1TCmJlYXIvMTQ1U1pHQkpNUgpiZWFyYWJsZS81VQpiZWFyYWJseS9VCmJlYXJkLzE0TURHUwpiZWFyZGxlc3MvNQpiZWFyZXIvMU0KYmVhcmluZy80NTFNCmJlYXJpc2gvNVBZCmJlYXJpc2huZXNzLzFNCmJlYXJsaWtlLzUKYmVhcnNraW4vMU1TCmJlYXN0LzE0NU1TCmJlYXN0bGluZXNzLzFNCmJlYXN0bHkvNVRQUk0KYmVhdC8xNDVTWkdCTU5SSgpiZWF0YWJsZS81VQpiZWF0ZW4vNTRVCmJlYXRlci8xTQpiZWF0aWZpYy81CmJlYXRpZmljYWxseS8KYmVhdGlmaWNhdGlvbi8xTQpiZWF0aWZ5LzRHWE5EUwpiZWF0aW5nLzE0TQpiZWF0aXR1ZGUvMVNNCmJlYXRuaWsvMU1TCmJlYXUvMTRTTQpiZWF1dC8xNU1TCmJlYXV0ZW91cy81WQpiZWF1dGljaWFuLzFTTQpiZWF1dGlmaWNhdGlvbi8xTQpiZWF1dGlmaWVyLzFNCmJlYXV0aWZ1bC81MVkKYmVhdXRpZnkvNE5EUlNaRwpiZWF1dHkvMTU0U00KYmVhdmVyLzE0U0dNRApiZWJvcC8xNE1TCmJlY2FsbS80R1NECmJlY2FtZS80CmJlY2F1c2UvNyt+CmJlY2svMTRTTQpiZWNrb24vNDFTR0QKYmVjbG91ZC80R0RTCmJlY29tZS80UwpiZWNvbWluZy80MTVVWQpiZWNxdWVyZWwvMVMKYmVkLzE0U00KYmVkYXViLzRHU0QKYmVkYXp6bGUvNEdEU0wKYmVkYXp6bGVtZW50LzFNCmJlZGJ1Zy8xU00KYmVkY2hhbWJlci8xUwpiZWRjbG90aGVzLzFNCmJlZGRlZC81NApiZWRkZXIvMQpiZWRkaW5nLzE0TQpiZWRlY2svNEdTRApiZWRldmlsLzRMR0RTCmJlZGV2aWxtZW50LzFNCmJlZGZlbGxvdy8xU00KYmVkaGVhZC8xUwpiZWRpbS80UwpiZWRpbW1lZC80CmJlZGltbWluZy80CmJlZGl6ZW4vNEdEUwpiZWRsYW0vMVNNCmJlZHBhbi8xU00KYmVkcG9zdC8xU00KYmVkcmFnZ2xlLzRHRFMKYmVkcmlkZGVuLzUKYmVkcm9jay8xNFNNCmJlZHJvbGwvMVNNCmJlZHJvb20vMVNNCmJlZHNpZGUvMVNNCmJlZHNpdC8xUwpiZWRzaXR0ZXIvMVMKYmVkc29yZS8xU00KYmVkc3ByZWFkLzFTTQpiZWRzdGVhZC8xU00KYmVkdGltZS8xU00KYmVlLzE0UlNNWkdKCmJlZWJyZWFkLzFNCmJlZWNoLzFNUwpiZWVjaG51dC8xTVMKYmVlZi8xNDVTR01ECmJlZWZidXJnZXIvMVNNCmJlZWZjYWtlLzFNUwpiZWVmaW5lc3MvMU0KYmVlZnN0ZWFrLzFNUwpiZWVmeS81UlBUCmJlZWhpdmUvMTRNUwpiZWVrZWVwZXIvMU1TCmJlZWtlZXBpbmcvMU0KYmVlbGluZS8xNE1TCmJlZW4vNDEKYmVlcC8xNFNaR01EUgpiZWVwZXIvMU0KYmVlci8xNE0KYmVlcnkvNVRSCmJlZXN3YXgvMTRNCmJlZXQvMTRTTQpiZWV0bGUvMTQ1TUdEUwpiZWV0cm9vdC8xNFMKYmVldmVzLzEKYmVmYWxsLzQxU0dOCmJlZmVsbC80CmJlZml0LzRTCmJlZml0dGVkLzQKYmVmaXR0aW5nLzQ1WQpiZWZvZy80UwpiZWZvZ2dlZC81NApiZWZvZ2dpbmcvNApiZWZvcmUvKzcKYmVmb3JlaGFuZC81CmJlZm91bC80REdTCmJlZnJpZW5kLzRTR0QKYmVmdWRkbGUvNEdMRFMKYmVmdWRkbGVtZW50LzFNCmJlZy80MVMKYmVnYW4vNApiZWdhdC80MQpiZWdldC80UwpiZWdldHRlci8xUwpiZWdldHRpbmcvNDEKYmVnZ2FyLzE0TURZR1MKYmVnZ2FyeS8xNU0KYmVnZ2VkLzQKYmVnZ2luZy8xNApiZWdpbi80MVMKYmVnaW5uZXIvMVNNCmJlZ2lubmluZy8xNDVNUwpiZWdvbmUvNApiZWdvbmlhLzFTTQpiZWdvdC80CmJlZ290dGVuLzQ1CmJlZ3JpbWUvNERTRwpiZWdydWRnZS80RFNHCmJlZ3J1ZGdpbmcvNDVZCmJlZ3VpbGUvNERSU1pHTApiZWd1aWxlbWVudC8xTQpiZWd1aWxlci8xTQpiZWd1aWxpbmcvNDE1WQpiZWd1aW5lLzFTTQpiZWd1bS80MU1TCmJlZ3VuLzQKYmVoYWxmLzFNCmJlaGFsdmVzLzEKYmVoYXZlLzRHRFMKYmVoYXZpb3IvMVNNCmJlaGF2aW9yYWwvNVkKYmVoYXZpb3Jpc20vMU0KYmVoYXZpb3Jpc3QvMU1TCmJlaGVhZC80REdTCmJlaGVsZC80CmJlaGVtb3RoLzFNCmJlaGVtb3Rocy8xCmJlaGVzdC8xNE1TCmJlaGluZC8rNTFNUwpiZWhpbmRoYW5kLzUKYmVob2xkLzROUlpHUwpiZWhvbGRlci8xTQpiZWhvb3ZlLzREU0cKYmVpZ2UvMTVNCmJlaW5nLzQxN00KYmVqZXdlbC80U0RHCmJlbGFib3IvNFNERwpiZWxhdGVkLzQ1WQpiZWxheS80MUdEUwpiZWxjaC80MUdNRFMKYmVsZWFndWVyLzRHU0QKYmVsZnJ5LzFTTQpiZWxpZS80RFMKYmVsaWVmLzFFVU0KYmVsaWVmcy8xCmJlbGlldmFibGUvNVUKYmVsaWV2YWJseS9VCmJlbGlldmUvNEVEUlNaRwpiZWxpZXZlci8xRVVNUwpiZWxpZXZpbmcvNDFVCmJlbGl0dGxlLzRMRFNHCmJlbGl0dGxlbWVudC8xTQpiZWxsLzE0U0dNRApiZWxsYWRvbm5hLzFNCmJlbGxib3kvMVNNCmJlbGxlLzFNUwpiZWxsZWQvNTRBCmJlbGxldHJpc3QvMU1TCmJlbGxldHJpc3RpYy81CmJlbGxob3AvMTRTTQpiZWxsaWNvc2UvNQpiZWxsaWNvc2l0eS8xTQpiZWxsaWdlcmVuY2UvMU0KYmVsbGlnZXJlbmN5LzFNCmJlbGxpZ2VyZW50LzUxTVlTCmJlbGxpbmcvMTRBCmJlbGxtYW4vMU0KYmVsbG1lbi8xCmJlbGxvdy8xNE1ER1MKYmVsbHdldGhlci8xTVMKYmVsbHkvMTRHRFNNCmJlbGx5YWNoZS8xNE1HRFMKYmVsbHlidXR0b24vMVNNCmJlbGx5ZnVsLzFNUwpiZWxvbmcvNCtKREdTCmJlbG9uZ2luZy8xNE0KYmVsb3ZlZC81MTRTTQpiZWxvdy8rCmJlbHQvMTRTR01ECmJlbHR3YXkvMVNNCmJlbHVnYS8xTVMKYmVseWluZy80CmJlbWlyZS80R0RTCmJlbW9hbi80REdTCmJlbXVzZS80TEdEUwpiZW11c2VkLzQ1WQpiZW11c2VtZW50LzFNCmJlbmNoLzE0R01EUwpiZW5jaG1hcmsvMTRNUwpiZW5kLzQxQlNaR01SCmJlbmRlci8xTQpiZW5keS81MVRSCmJlbmVhdGgvKwpiZW5lZGljdGluZQpiZW5lZGljdGlvbi8xU00KYmVuZWRpY3RvcnkvNQpiZW5lZmFjdGlvbi8xU00KYmVuZWZhY3Rvci8xTVMKYmVuZWZhY3RyZXNzLzFNUwpiZW5lZmljZS8xNFNNCmJlbmVmaWNlbmNlLzFNCmJlbmVmaWNlbnQvNVkKYmVuZWZpY2lhbC81MVkKYmVuZWZpY2lhcnkvMTVTTQpiZW5lZml0LzE0U01ERwpiZW5ldm9sZW5jZS8xU00KYmVuZXZvbGVudC81WQpiZW5pZ2h0ZWQvNTRZCmJlbmlnbi81WQpiZW5pZ25hbnQvNQpiZW5pZ25pdHkvMU0KYmVudC80NTFTTQpiZW50b25pdGUvMQpiZW50d29vZC8xTQpiZW51bWIvNERTRwpiZW56ZW5lLzFNCmJlbnppbmUvMU0KYmVuenlsLzEKYmVxdWVhdGgvNERHCmJlcXVlYXRocy80CmJlcXVlc3QvMTRNUwpiZXJhdGUvNEdEUwpiZXJlYXZlLzREU0xHCmJlcmVhdmVtZW50LzFNUwpiZXJlZnQvNDUKYmVyZXQvMU1TCmJlcmcvMVNNCmJlcmliZXJpLzFNCmJlcmsvMVMKYmVya2VsaXVtLzFNCmJlcm0vMTRTTQpiZXJyeS8xNEdEU00KYmVycnlsaWtlLzUKYmVyc2Vyay8xNTQKYmVydGgvMTRHTUQKYmVydGhzLzE0CmJlcnlsLzE1TVMKYmVyeWxsaXVtLzFNCmJlc2VlY2gvNDFaR1JTCmJlc2VlY2hlci8xTQpiZXNlZWNoaW5nLzQxWQpiZXNlZW0vNERTRwpiZXNldC80UwpiZXNldHRpbmcvNDE1CmJlc2lkZS8rUwpiZXNpZWdlLzRaR0RSUwpiZXNpZWdlci8xTQpiZXNtZWFyLzREU0cKYmVzbWlyY2gvNEdEUwpiZXNvbS8xNE1TCmJlc290LzRTCmJlc290dGVkLzQ1CmJlc290dGluZy80CmJlc291Z2h0LzQKYmVzcGFuZ2xlLzREU0cKYmVzcGF0dGVyLzRHU0QKYmVzcGVhay80MVNHCmJlc3BlY3RhY2xlZC81CmJlc3Bva2UvNTQKYmVzcG9rZW4vNDUKYmVzdC81MTRTR01ECmJlc3RpYWwvNTFZCmJlc3RpYWxpdHkvMU0KYmVzdGlhcnkvMVNNCmJlc3Rpci80UwpiZXN0aXJyZWQvNApiZXN0aXJyaW5nLzQKYmVzdG93LzQxREdTCmJlc3Rvd2FsLzFTTQpiZXN0cmV3LzRTREcKYmVzdHJld24vNApiZXN0cmlkZGVuLzQKYmVzdHJpZGUvNFNHCmJlc3Ryb2RlLzQKYmVzdHNlbGxlci8xTVMKYmVzdHNlbGxpbmcvNQpiZXQvMTQrU00KYmV0YS8xNTRTTQpiZXRha2UvNEdTCmJldGFrZW4vNApiZXRjaGEvCmJldGVsLzFNCmJldGhpbmsvNFNHCmJldGhvdWdodC81NApiZXRpZGUvNEdEUwpiZXRpbWVzLwpiZXRva2VuLzRHRFMKYmV0b29rLzQKYmV0cmF5LzREUlpHUwpiZXRyYXlhbC8xU00KYmV0cmF5ZXIvMU0KYmV0cm90aC80REcKYmV0cm90aGFsLzFTTQpiZXRyb3RoZWQvNDUxTQpiZXRyb3Rocy80CmJldHRlci81MTRNREdMUwpiZXR0ZXJtZW50LzFNCmJldHRpbmcvNTQxCmJldHRvci8xTVMKYmV0d2Vlbi8rMQpiZXR3aXh0LysKYmV2ZWwvMTQ1R01EUwpiZXZlcmFnZS8xU00KYmV2dnkvMTRTCmJldnkvMVNNCmJld2FpbC80REdTCmJld2FyZS80R0RTCmJld2hpc2tlcmVkLzUKYmV3aWdnZWQvNQpiZXdpbGRlci80TFNHRApiZXdpbGRlcmluZy81MTRZCmJld2lsZGVybWVudC8xTQpiZXdpdGNoLzRHTERTCmJld2l0Y2hpbmcvMTVZCmJld2l0Y2htZW50LzFNCmJleS8xU00KYmV5b25kLysxCmJlemVsLzFNUwpiZi8xCmJoYWppLzEKYmkvNTFTTVJaCmJpYW5udWFsLzUxWQpiaWFzLzE0NUdNRFMKYmlhc2VkLzU0VQpiaWF0aGxvbi8xU00KYmliLzE0U00KYmlibGUvMU1TCmJpYmxpY2FsLzUKYmlibGlvZ3JhcGhlci8xTVMKYmlibGlvZ3JhcGhpYy81CmJpYmxpb2dyYXBoaWNhbC81WQpiaWJsaW9ncmFwaHkvMVNNCmJpYmxpb3BoaWxlLzFTTQpiaWJ1bG91cy81CmJpY2FtZXJhbC81CmJpY2FtZXJhbGlzbS8xTQpiaWNhcmIvMU1TCmJpY2FyYm9uYXRlLzFNUwpiaWNlbnRlbmFyeS8xU00KYmljZW50ZW5uaWFsLzUxU00KYmljZXAvMU1TCmJpY2Vwcy8xTQpiaWNrZXIvNDFNRFJaR1MKYmlja2VyZXIvMU0KYmljb25jYXZlLzUKYmljb252ZXgvNQpiaWN1c3BpZC81MU1TCmJpY3ljbGUvMTREUlNNWkcKYmljeWNsZXIvMU0KYmljeWNsaXN0LzFTTQpiaWQvNDFTTUcKYmlkZGFibGUvNQpiaWRkZW4vNFUKYmlkZGVyLzFNUwpiaWRkaW5nLzQxTQpiaWRkeS8xU00KYmlkZS80UwpiaWRldC8xTVMKYmlkaXJlY3Rpb25hbC81MVkKYmllbm5pYWwvNTFNWVMKYmllbm5pdW0vMU1TCmJpZXIvMU0KYmlmZi8xNFNHRApiaWZvY2FsLzVTCmJpZm9jYWxzLzFNCmJpZnVyY2F0ZS80NVhEU0dOCmJpZnVyY2F0aW9uLzFNCmJpZy81MTRQCmJpZ2FtaXN0LzFTTQpiaWdhbW91cy81CmJpZ2FteS8xTQpiaWdnZXIvNTQKYmlnZ2VzdC81CmJpZ2dpZS8xTVMKYmlnZ2lzaC81CmJpZ2hlYWQvMVNNCmJpZ2hlYXJ0ZWQvNVAKYmlnaGVhcnRlZG5lc3MvMU0KYmlnaG9ybi8xU00KYmlnaHQvMTRNUwpiaWdtb3V0aC8xNU0KYmlnbW91dGhzLzEKYmlnbmVzcy8xTQpiaWdvdC8xTURTCmJpZ290cnkvMVNNCmJpZ3dpZy8xTVMKYmlqb3UvMTVNCmJpam91eC8xCmJpa2UvMTREUlNNWkcKYmlrZXIvMU0KYmlraW5pLzFNUwpiaWxhYmlhbC81MU1TCmJpbGF0ZXJhbC81MVkKYmlsYmVycnkvMVMKYmlsZS8xNE0KYmlsZ2UvMTRNUwpiaWxpbmd1YWwvNTFTTVkKYmlsaW5ndWFsaXNtLzFNCmJpbGlvdXMvNVAKYmlsaW91c25lc3MvMU0KYmlsaXJ1YmluLzEKYmlsay8xNFNaR0RSCmJpbGtlci8xTQpiaWxsLzE0U0JKR01ECmJpbGxib2FyZC8xNE1TCmJpbGxldC8xNEdNRFMKYmlsbGZvbGQvMVNNCmJpbGxob29rLzE0UwpiaWxsaWFyZC8xUwpiaWxsaWFyZHMvMU0KYmlsbGluZy80MU0KYmlsbGluZ3NnYXRlLzE0TQpiaWxsaW9uL01IUwpiaWxsaW9uYWlyZS8xU00KYmlsbGlvbnRoLzUxTQpiaWxsaW9udGhzLzEKYmlsbG93LzE0R01EUwpiaWxsb3d5LzUKYmlsbHkvMVNNCmJpbGx5Y2FuLzFTCmJpbWJvLzFNUwpiaW1ldGFsbGljLzUxU00KYmltZXRhbGxpc20vMU0KYmltb2RhbC81CmJpbW9udGhseS81MVNNCmJpbi8xNFNNCmJpbmFyeS81MVNNCmJpbmF1cmFsLzUKYmluZCdzCmJpbmQvNDFBVUdTCmJpbmRlci8xTVMKYmluZGVyeS8xU00KYmluZGluZy81MTRNUwpiaW5kd2VlZC8xTQpiaW5nZS8xNE1EUwpiaW5nby8xNTRNCmJpbm1hbi8xCmJpbm1lbi8xCmJpbm5hY2xlLzFTTQpiaW5uZWQvNDUKYmlubmluZy80MQpiaW5vY3VsYXIvNTFNUwpiaW5vbWlhbC81MVNNCmJpby8xNVNNCmJpb2NoZW1pY2FsLzUxU01ZCmJpb2NoZW1pc3QvMU1TCmJpb2NoZW1pc3RyeS8xTQpiaW9kZWdyYWRhYmlsaXR5LzFNCmJpb2RlZ3JhZGUvNERTR0IKYmlvZGl2ZXJzaXR5LzFNCmJpb2V0aGljcy8xTQpiaW9mZWVkYmFjay8xTQpiaW9maWxtLzFNUwpiaW9nLzEKYmlvZ3JhcGhlci8xU00KYmlvZ3JhcGhpYy81CmJpb2dyYXBoaWNhbC81WQpiaW9ncmFwaHkvMTRTTQpiaW9sLzEKYmlvbG9naWMvNTEKYmlvbG9naWNhbC81MVkKYmlvbG9naXN0LzFNUwpiaW9sb2d5LzFNCmJpb21hcmtlci8xTVMKYmlvbWFzcy8xTQpiaW9tZWRpY2FsLzUxCmJpb25pYy81UwpiaW9uaWNhbGx5LwpiaW9uaWNzLzFNCmJpb3BoeXNpY2FsLzUKYmlvcGh5c2ljaXN0LzFNUwpiaW9waHlzaWNzLzFNCmJpb3BpYy8xTVMKYmlvcHN5LzE0R0RTTQpiaW9yZWFjdG9yLzFTCmJpb3JoeXRobS8xTVMKYmlvc2Vuc29yLzFTCmJpb3NwaGVyZS8xU00KYmlvc3ludGhlc2lzLzEKYmlvdGVjaC8xCmJpb3RlY2hub2xvZ2ljYWwvNQpiaW90ZWNobm9sb2d5LzFNCmJpb3Rpbi8xTQpiaXBhcnRpc2FuLzUKYmlwYXJ0aXNhbnNoaXAvMU0KYmlwYXJ0aXRlLzUKYmlwZWQvMU1TCmJpcGVkYWwvNQpiaXBsYW5lLzUxNE1TCmJpcG9sYXIvNTEKYmlwb2xhcml0eS8xTQpiaXJhY2lhbC81MQpiaXJjaC8xNEdNRFMKYmlyZC8xNDVTWkdNRFIKYmlyZGJhdGgvMU0KYmlyZGJhdGhzLzEKYmlyZGJyYWluLzFTTUQKYmlyZGNhZ2UvMVMKYmlyZGVyLzFNCmJpcmRob3VzZS8xTVMKYmlyZGllLzE0TURTCmJpcmRpZWluZy80CmJpcmRsaWtlLzUKYmlyZGxpbWUvMTRNCmJpcmRzZWVkLzFNCmJpcmRzb25nLzEKYmlyZHdhdGNoZXIvMVNNCmJpcmR5aW5nLzQKYmlyZXR0YS8xU00KYmlydGgvMTU0WkdNRFIKYmlydGhkYXkvMTRNUwpiaXJ0aGVyLzE0TQpiaXJ0aG1hcmsvMU1TCmJpcnRocGxhY2UvMU1TCmJpcnRocmF0ZS8xTVMKYmlydGhyaWdodC8xTVMKYmlydGhzLzFBCmJpcnRoc3RvbmUvMVNNCmJpc2N1aXQvMVNNCmJpc2VjdC80MURHUwpiaXNlY3Rpb24vMU1TCmJpc2VjdG9yLzFTTQpiaXNleHVhbC81MU1ZUwpiaXNleHVhbGl0eS8xTQpiaXNob3AvMTRNUwpiaXNob3ByaWMvMVNNCmJpc211dGgvMU0KYmlzb24vMU0KYmlzcXVlLzE1NE0KYmlzdHJvLzE0TVMKYml0LzE0NUNTTUcKYml0Y2gvMTRHTURTCmJpdGNoaWx5LwpiaXRjaGluZXNzLzFNCmJpdGNoeS81UFJUCmJpdGNvaW4vMjFTTQpiaXRlLzQxUlNNWgpiaXRlci8xTQpiaXRpbmcvNDE1WQpiaXRtYXAvMVMKYml0dGVuLzQKYml0dGVyLzUxNFBNUllUUwpiaXR0ZXJuLzFTTQpiaXR0ZXJuZXNzLzFNCmJpdHRlcnMvMTRNCmJpdHRlcnN3ZWV0LzUxTVMKYml0dHkvNTFUUgpiaXR1bWVuLzE0TQpiaXR1bWlub3VzLzUxCmJpdmFsZW50LzUxCmJpdmFsdmUvMVNNCmJpdm91YWMvMTRNUwpiaXZvdWFja2VkLzQKYml2b3VhY2tpbmcvNApiaXdlZWtseS81MVNNCmJpeWVhcmx5LzUKYml6LzFNCmJpemFycmUvNVkKYmsvMQpibC9ERwpibGFiLzQxU00KYmxhYmJlZC80CmJsYWJiZXIvNDFER1MKYmxhYmJlcm1vdXRoLzFNCmJsYWJiZXJtb3V0aHMvMQpibGFiYmluZy80MQpibGFjay81MTRQWFRHTUROUllTCmJsYWNrYW1vb3IvMU1TCmJsYWNrYmFsbC8xNFNHTUQKYmxhY2tiZXJyeS8xNEdTTQpibGFja2JpcmQvMTRTTQpibGFja2JvYXJkLzE0TVMKYmxhY2tjdXJyYW50LzFTCmJsYWNrZW4vNERHCmJsYWNrZmFjZS8xCmJsYWNrZ3VhcmQvMTRTTQpibGFja2hlYWQvMU1TCmJsYWNraW5nLzQxTQpibGFja2lzaC81CmJsYWNramFjay8xNE1ER1MKYmxhY2tsZWcvMTRTCmJsYWNrbGlzdC8xNE1EU0cKYmxhY2ttYWlsLzE0TURSU1pHCmJsYWNrbWFpbGVyLzFNCmJsYWNrbmVzcy8xTQpibGFja291dC8xNFNNCmJsYWNrc21pdGgvMTRNCmJsYWNrc21pdGhzLzEKYmxhY2tzbmFrZS8xNFNNCmJsYWNrdGhvcm4vMVNNCmJsYWNrdG9wLzE0U00KYmxhY2t0b3BwZWQvNApibGFja3RvcHBpbmcvNApibGFkZGVyLzE0TVMKYmxhZGUvMTRNRFMKYmxhZy8xNDVTCmJsYWdnZWQvNApibGFnZ2luZy8xNApibGFoLzE1NE0KYmxhaHMvMTRNCmJsYW1lLzE0NUJNR0RSUwpibGFtZWxlc3MvNVlQCmJsYW1lbGVzc25lc3MvMU0KYmxhbWV3b3J0aGluZXNzLzFNCmJsYW1ld29ydGh5LzVQCmJsYW1tby8KYmxhbmNoLzRHRFMKYmxhbmNtYW5nZS8xTVMKYmxhbmQvNTQxUFRSWQpibGFuZGlzaC80RFNMRwpibGFuZGlzaG1lbnQvMVNNCmJsYW5kbmVzcy8xTQpibGFuay81MTRUR1BNRFJZUwpibGFua2V0LzE1NEdNRFMKYmxhbmtuZXNzLzFNCmJsYXJlLzQxTUdEUwpibGFybmV5LzE0U01ERwpibGFzZS81CmJsYXNwaGVtZS80MVpHRFJTCmJsYXNwaGVtZXIvMU0KYmxhc3BoZW1vdXMvNVkKYmxhc3BoZW15LzFTTQpibGFzdC8xNFpHTURSUwpibGFzdGVyLzFNCmJsYXN0b2ZmLzFNUwpibGF0LzQxUwpibGF0YW5jeS8xU00KYmxhdGFudC81WQpibGF0aGVyLzQxU01ERwpibGF6ZS8xNE1aR0RSUwpibGF6ZXIvMU0KYmxhem9uLzE0TURHUwpibGRnLzEKYmxlYWNoLzU0MU1EUlNaRwpibGVhY2hlZC81NFUKYmxlYWNoZXIvMU0KYmxlYWsvNTFUUFJZCmJsZWFrbmVzcy8xTQpibGVhci81NApibGVhcmlseS8KYmxlYXJpbmVzcy8xTQpibGVhcnkvNVBSVApibGVhdC8xNEdNRFMKYmxlZWQvNDFaR1JTCmJsZWVkZXIvMU0KYmxlZWRpbmcvNDUxTQpibGVlcC8xNFpHTURSUwpibGVlcGVyLzFNCmJsZW1pc2gvMTRHTURTCmJsZW1pc2hlZC80NVUKYmxlbmNoLzQxRFNHCmJsZW5kLzE0WkdNRFJTCmJsZW5kZXIvMTRNCmJsZXNzLzRHRFNKCmJsZXNzZWQvNTRZUApibGVzc2VkbmVzcy8xTQpibGVzc2luZy8xNE0KYmxldGNoLzQxCmJsZXcvNDE1CmJsaWdodC8xNFpHTURSUwpibGltZXkvCmJsaW1wLzE0TVMKYmxpbXBpc2gvNQpibGluZC81MTRQWlRHTURSWVMKYmxpbmRlci81MTRNCmJsaW5kZm9sZC8xNTRTTURHCmJsaW5kaW5nLzQ1MVkKYmxpbmRuZXNzLzFNCmJsaW5kc2lkZS8xNERTRwpibGluaS8xTVMKYmxpbmsvNDFaR01EUlMKYmxpbmtlci8xNE1ERwpibGludHovMU1TCmJsaW50emUvMU0KYmxpcC8xNFNNCmJsaXNzLzFNCmJsaXNzZnVsLzVZUApibGlzc2Z1bG5lc3MvMU0KYmxpc3Rlci8xNEdNRFMKYmxpc3RlcmluZy80NTFZCmJsaXN0ZXJ5LzUKYmxpdGhlLzVQWVRSCmJsaXRoZW5lc3MvMU0KYmxpdGhlci80MTVHCmJsaXRoZXNvbWUvNQpibGl0ei8xNEdNRFMKYmxpdHprcmllZy8xTVMKYmxpdmV0LzFTCmJsaXp6YXJkLzE0U00KYmxvYXQvNDE1WkdEUlMKYmxvYXR3YXJlLzEKYmxvYi8xNFNNCmJsb2JiZWQvNApibG9iYmluZy80MQpibG9jLzFTTQpibG9jaydzCmJsb2NrLzE0VUdEUwpibG9ja2FkZS8xNE1aR0RSUwpibG9ja2FkZXIvMU0KYmxvY2thZ2UvMU1TCmJsb2NrYnVzdGVyLzFTTQpibG9ja2J1c3RpbmcvMTVNCmJsb2NrY2hhaW4vMU1TCmJsb2NrZXIvMU1TCmJsb2NraGVhZC8xNFNNCmJsb2NraG91c2UvMU1TCmJsb2cvMTRTTQpibG9nZ2VkLzQKYmxvZ2dlci8xTVMKYmxvZ2dpbmcvMTQKYmxva2UvMU1TCmJsb2tpc2gvNQpibG9uZC81MTRQVE1SUwpibG9uZGUvMTU0TVMKYmxvbmRpc2gvNQpibG9uZG5lc3MvMU0KYmxvb2QvMTRHTURTCmJsb29kYmF0aC8xTQpibG9vZGJhdGhzLzEKYmxvb2RjdXJkbGluZy81CmJsb29kaG91bmQvMVNNCmJsb29kaWx5LwpibG9vZGluZXNzLzFNCmJsb29kbGVzcy81WVAKYmxvb2RsZXNzbmVzcy8xTQpibG9vZGxldHRpbmcvMTRNCmJsb29kbGluZS8xU00KYmxvb2Rtb2JpbGUvMU1TCmJsb29kc2hlZC8xTQpibG9vZHNob3QvNQpibG9vZHN0YWluLzFTTUQKYmxvb2RzdG9jay8xTQpibG9vZHN0cmVhbS8xU00KYmxvb2RzdWNrZXIvMVNNCmJsb29kc3Vja2luZy81MQpibG9vZHRoaXJzdGlseS8KYmxvb2R0aGlyc3RpbmVzcy8xTQpibG9vZHRoaXJzdHkvNVJQVApibG9vZHkvNTQxUFRHRFJTCmJsb29tLzE0WkdNRFJTCmJsb29tZXIvMU0KYmxvb3AvNDFaR01EUlMKYmxvb3Blci8xTQpibG9zc29tLzE0R01EUwpibG9zc29teS81CmJsb3QvMTRTTQpibG90Y2gvMTRHTURTCmJsb3RjaHkvNVRSCmJsb3R0ZWQvNTQKYmxvdHRlci8xTVMKYmxvdHRpbmcvNDEKYmxvdHRvLzUxNApibG91c2UvMTRNR0RTCmJsb3cvNDE1U1pHTVIKYmxvd2VyLzFNCmJsb3dmbHkvMVNNCmJsb3dndW4vMU1TCmJsb3doYXJkLzFNUwpibG93aG9sZS8xNFMKYmxvd2pvYi8xU00KYmxvd2xhbXAvMVMKYmxvd24vNTQKYmxvd291dC8xU00KYmxvd3BpcGUvMTRTTQpibG93dG9yY2gvMTRNUwpibG93dXAvMU1TCmJsb3d5LzUxVFIKYmxvd3p5LzVSVApibHViYmVyLzE0R1NNRApibHViYmVyeS81CmJsdWRnZW9uLzE0TURHUwpibHVlLzUxNERSU1BNVEcKYmx1ZWJlbGwvMU1TCmJsdWViZXJyeS8xNTRTTQpibHVlYmlyZC8xTVMKYmx1ZWJvbm5ldC8xU00KYmx1ZWJvdHRsZS8xU00KYmx1ZWZpc2gvMU1TCmJsdWVnaWxsLzFNUwpibHVlZ3Jhc3MvMU0KYmx1ZWlzaC81CmJsdWVqYWNrZXQvMVNNCmJsdWVqZWFucy8xTQpibHVlbmVzcy8xTQpibHVlbm9zZS8xTVMKYmx1ZXBvaW50LzFNUwpibHVlcHJpbnQvMTRNREdTCmJsdWVzdG9ja2luZy8xU00KYmx1ZXN5LzVSVApibHVldC8xTVMKYmx1ZmYvMTQ1WlRHUE1EUllTCmJsdWZmZXIvMTVNCmJsdWZmbmVzcy8xTQpibHVpbmcvNDFNCmJsdWlzaC81CmJsdW5kZXIvMTRNRFJaR1MKYmx1bmRlcmJ1c3MvMTRNUwpibHVuZGVyZXIvMU0KYmx1bnQvNTE0UFRHRFJZUwpibHVudG5lc3MvMU0KYmx1ci80MTVTTQpibHVyYi8xNE1TCmJsdXJyZWQvNTQKYmx1cnJpbmVzcy8xTQpibHVycmluZy80MQpibHVycnkvNVRSUApibHVydC80MUdEUwpibHVzaC8xNFpHTURSUwpibHVzaGVyLzFNCmJsdXN0ZXIvMTRNRFJTWkcKYmx1c3RlcmVyLzFNCmJsdXN0ZXJvdXMvNQpibHVzdGVyeS81CmJsdmQvMQpib2EvMVNNCmJvYXIvMVNNCmJvYXJkLzE0WkdNRFJTCmJvYXJkZXIvMU0KYm9hcmRpbmcvNDFNCmJvYXJkaW5naG91c2UvMU1TCmJvYXJkcm9vbS8xTVMKYm9hcmR3YWxrLzE0TVMKYm9hc3QvMTRaR01EUlMKYm9hc3Rlci8xTQpib2FzdGZ1bC81UFkKYm9hc3RmdWxuZXNzLzFNCmJvYXQvMTRTWkdNRFIKYm9hdGVyLzFNCmJvYXRob3VzZS8xTVMKYm9hdGluZy8xNE0KYm9hdGxvYWQvMVMKYm9hdG1hbi8xTQpib2F0bWVuLzEKYm9hdHN3YWluLzFTTQpib2F0eWFyZC8xUwpib2IvNDFTTQpib2JiZWQvNTQKYm9iYmluLzFNUwpib2JiaW5nLzQxCmJvYmJsZS8xNE1HRFMKYm9iYnkvMVNNCmJvYmJ5c294ZXIvMVNNCmJvYmNhdC8xTVMKYm9ib2xpbmsvMVNNCmJvYnNsZWQvMTRTTQpib2JzbGVkZGVkLzQKYm9ic2xlZGRlci8xTVMKYm9ic2xlZGRpbmcvMTQKYm9ic2xlaWdoLzE0TQpib2JzbGVpZ2hzLzEKYm9idGFpbC8xNFNNCmJvYndoaXRlLzFNUwpib2NjaWUvMU0KYm9jay8xTQpib2QvMVNNREcKYm9kYWNpb3VzLzUKYm9kZS80MVMKYm9kZWdhLzFNUwpib2RnZS80MTVHRFMKYm9kaWNlLzFNUwpib2RpbHkvNQpib2RraW4vMU1TCmJvZHkvMTREU00KYm9keWJ1aWxkZXIvMVNNCmJvZHlidWlsZGluZy8xTQpib2R5Z3VhcmQvMTRNUwpib2R5c3VpdC8xU00KYm9keXdvcmsvMU0KYm9mZmluLzFTCmJvZmZvLzUxCmJvZy8xNDVTTQpib2dhLzEKYm9nZXkvMTRHTURTCmJvZ2V5bWFuLzFNCmJvZ2V5bWVuLzEKYm9nZ2VkLzQ1CmJvZ2dpbmcvNDUKYm9nZ2xlLzQxR0RTCmJvZ2d5LzVUUgpib2dpZS8xTVMKYm9nb24vMQpib2dvc2l0eS8xCmJvZ3VzLzUxCmJvZ3ltYW4vMU0KYm9neW1lbi8xCmJvaGVtaWFuLzE1U00KYm9oZW1pYW5pc20vMU0KYm9pbC8xNFNKWkdNRFIKYm9pbGVyLzFNCmJvaWxlcm1ha2VyLzFTTQpib2lsZXJwbGF0ZS8xNTRNCmJvaW5rLzQxR0RTCmJvaXN0ZXJvdXMvNVlQCmJvaXN0ZXJvdXNuZXNzLzFNCmJvbGEvMVNNCmJvbGQvNTQxUFRSWQpib2xkZmFjZS8xNDVETQpib2xkbmVzcy8xTQpib2xlLzFTTQpib2xlcm8vMTRNUwpib2xpdmFyLzFNUwpib2xpdmFyZXMvMQpib2xsLzE0U00KYm9sbGFyZC8xUwpib2xsaXgvNDFHTURTCmJvbGxvY2tpbmcvMVMKYm9sbG9ja3MvMTQKYm9sb2duYS8xTQpib2xzaGllLzE1CmJvbHN0ZXIvMTRHTURTCmJvbHQncwpib2x0LzE0VVNHRApib2x0aG9sZS8xUwpib2x1cy8xNE1TCmJvbWIvMTQ1U0paR01EUgpib21iYXJkLzE0R0RMUwpib21iYXJkaWVyLzFNUwpib21iYXJkbWVudC8xU00KYm9tYmFzdC8xNDVNCmJvbWJhc3RpYy81CmJvbWJhc3RpY2FsbHkvCmJvbWJlci8xNU0KYm9tYnByb29mLzUxNApib21ic2hlbGwvMVNNCmJvbWJzaXRlLzFTCmJvbmFuemEvMU1TCmJvbmJvbi8xTVMKYm9uY2UvMVMKYm9uZC8xNDVTR01ECmJvbmRhZ2UvMU0KYm9uZGhvbGRlci8xTVMKYm9uZGluZy80MU0KYm9uZG1hbi8xTQpib25kbWVuLzEKYm9uZHNtYW4vMU0KYm9uZHNtZW4vMQpib25kd29tYW4vMU0KYm9uZHdvbWVuLzEKYm9uZS8xNTREUlNNWkcKYm9uZWhlYWQvMVNNRApib25lbGVzcy81CmJvbmVyLzFNCmJvbmVzaGFrZXIvMVMKYm9uZXlhcmQvMQpib25maXJlLzE0TVMKYm9uZy8xNFNHTUQKYm9uZ28vMTRNUwpib25ob21pZS8xTQpib25pbmVzcy8xTQpib25pdG8vMU1TCmJvbmsvNDFTWkdECmJvbm5ldC8xNE1TCmJvbm55LzUxVFIKYm9ub2JvLzFNUwpib25zYWkvMTRNCmJvbnVzLzE0TVMKYm9ueS81UFRSCmJvby8xNFNNREhHCmJvb2IvMTRTR01ECmJvb2J5LzE0NVNNCmJvb2RsZS8xNE1TCmJvb2dlci8xUwpib29nZXltYW4vMU0KYm9vZ2V5bWVuLzEKYm9vZ2llLzE0TURTCmJvb2dpZWluZy80CmJvb2dpZW1hbi8xTQpib29ob28vNDFHTURTCmJvb2svMTRTQkpHTUQKYm9va2JpbmRlci8xU00KYm9va2JpbmRlcnkvMVNNCmJvb2tiaW5kaW5nLzFNCmJvb2tjYXNlLzFNUwpib29rZW5kLzE0TVMKYm9va2llLzFNUwpib29raW5nLzQxTQpib29raXNoLzUKYm9va2tlZXBlci8xTVMKYm9va2tlZXBpbmcvMTRNCmJvb2tsZXQvMU1TCmJvb2ttYWtlci8xU00KYm9va21ha2luZy8xTQpib29rbWFyay8xNFNNREcKYm9va21vYmlsZS8xU00KYm9va3BsYXRlLzE0TVMKYm9va3NlbGxlci8xTVMKYm9va3NoZWxmLzFNCmJvb2tzaGVsdmVzLzE0CmJvb2tzaG9wLzFTTQpib29rc3RhbGwvMVMKYm9va3N0b3JlLzFNUwpib29rd29ybS8xU00KYm9vbGVhbi81MQpib29tLzQxU1pHTURSCmJvb21ib3gvMU1TCmJvb21lcmFuZy8xNE1ER1MKYm9vbi8xNVNNCmJvb25kb2Nrcy8xTQpib29uZG9nZ2xlLzE0TVpHRFJTCmJvb25kb2dnbGVyLzFNCmJvb25pZXMvMU0KYm9vci8xU00KYm9vcmlzaC81UFkKYm9vcmlzaG5lc3MvMU1TCmJvb3N0LzE0WkdNRFJTCmJvb3N0ZXIvMTRNCmJvb3Qncwpib290LzE0QVNHRApib290YmxhY2svMTRTTQpib290ZWUvMU1TCmJvb3RoLzFNCmJvb3Rocy8xCmJvb3RsYWNlLzFTCmJvb3RsZWcvNDE1TVMKYm9vdGxlZ2dlZC80CmJvb3RsZWdnZXIvMU1TCmJvb3RsZWdnaW5nLzE0TQpib290bGVzcy81CmJvb3RzdHJhcC8xNE1TCmJvb3RzdHJhcHBlZC80CmJvb3RzdHJhcHBpbmcvNDEKYm9vdHkvMVNNCmJvb3plLzE0TVpHRFJTCmJvb3plci8xTQpib296eS81VFIKYm9wLzE0U00KYm9wcGVkLzQKYm9wcGluZy80CmJvcmF4LzE0TQpib3JkZWxsby8xTVMKYm9yZGVyLzE0R01EUwpib3JkZXJsYW5kLzFNUwpib3JkZXJsaW5lLzUxNE1TCmJvcmUvNDFEUlNNWkcKYm9yZWRvbS8xTQpib3JlaG9sZS8xNFMKYm9yZXIvMU0KYm9yaW5nLzE0NVkKYm9ybi80NTFJQVUKYm9ybmUvNDUKYm9yb24vMU0KYm9yb3VnaC8xTQpib3JvdWdocy8xCmJvcnJvdy80MVNEUlpHSgpib3Jyb3dlci8xTQpib3Jyb3dpbmcvNDFNCmJvcnNjaHQvMU0KYm9yc3RhbC8xUwpib3J6b2kvMVNNCmJvc2gvMTRNCmJvc29tJ3MKYm9zb20vMTU0VVMKYm9zb215LzUKYm9zcy8xNDVEU0dNCmJvc3NpbHkvCmJvc3NpbmVzcy8xTQpib3NzaXNtLzFNCmJvc3N5LzUxUlRQCmJvdC8xNFMKYm90YW5pYy81MQpib3RhbmljYWwvNTFZCmJvdGFuaXN0LzFTTQpib3RhbnkvMU0KYm90Y2gvNDFEUlNaR00KYm90Y2hlci8xTQpib3RoLzg3CmJvdGhlci80MVNNREcKYm90aGVyYXRpb24vMQpib3RoZXJlZC81NFUKYm90aGVyc29tZS81CmJvdG5ldC8xU00KYm90dGxlLzE0RFJTTVpHCmJvdHRsZW5lY2svMTRNUwpib3R0bGVyLzFNCmJvdHRvbS8xNDVTTURHCmJvdHRvbWxlc3MvNQpib3R1bGludW0vMQpib3R1bGlzbS8xTQpib3Vkb2lyLzFTTQpib3VmZmFudC81MVNNCmJvdWdhaW52aWxsZWEvMU1TCmJvdWdoLzFNCmJvdWdocy8xCmJvdWdodC80MQpib3VpbGxhYmFpc3NlLzFTTQpib3VpbGxvbi8xTVMKYm91bGRlci8xNFNNCmJvdWxlcy8xCmJvdWxldmFyZC8xU00KYm91bmNlLzQxRFJTTVpHCmJvdW5jZXIvMU0KYm91bmNpbHkvCmJvdW5jaW5lc3MvMU0KYm91bmN5LzVSVFAKYm91bmQvNDUxQVNNR0QKYm91bmRhcnkvMVNNCmJvdW5kZW4vNTQKYm91bmRlci8xU00KYm91bmRsZXNzLzVQWQpib3VuZGxlc3NuZXNzLzFNCmJvdW50ZW91cy81WVAKYm91bnRlb3VzbmVzcy8xTQpib3VudGlmdWwvNVlQCmJvdW50aWZ1bG5lc3MvMU0KYm91bnR5LzE0U00KYm91cXVldC8xU00KYm91cmJvbi8xU00KYm91cmdlb2lzLzUxNE0KYm91cmdlb2lzaWUvMU0KYm91c3Ryb3BoZWRvbi81MQpib3V0LzE0K01TCmJvdXRpcXVlLzFTTQpib3V0b25uaWVyZS8xTVMKYm91em91a2kvMU1TCmJvdmluZS81MVNNCmJvdnZlci8xNApib3cvMTRaR1NNRFIKYm93ZGxlcml6YXRpb24vMU1TCmJvd2RsZXJpemUvNERTRwpib3dlZC80NVUKYm93ZWwvMTRTTQpib3dlci8xNE0KYm93bC8xNE1EUlpHUwpib3dsZWcvMVNNCmJvd2xlZ2dlZC81CmJvd2xlci8xTQpib3dsZnVsLzFTTQpib3dsaW5lLzFTTQpib3dsaW5nLzQxTQpib3dtYW4vMU0KYm93bWVuLzEKYm93c3ByaXQvMVNNCmJvd3N0cmluZy8xNFNNCmJvd3dvdy8xNFNNCmJveC8xNFpHTUROUlMKYm94Y2FyLzE0U00KYm94ZXIvMU0KYm94aW5nLzQxTQpib3hsaWtlLzUKYm94cm9vbS8xUwpib3h3b29kLzFNCmJveHkvNVJUCmJveS8xNFNNCmJveWNvdHQvNDFTR01ECmJveWZyaWVuZC8xTVMKYm95aG9vZC8xU00KYm95aXNoLzVZUApib3lpc2huZXNzLzFNCmJveXNlbmJlcnJ5LzE1U00KYm96by8xTVMKYnBtLzEKYnBzLzEKYnJhLzFTTQpicmFjZS8xNE1aR0RSUwpicmFjZWxldC8xNE1TCmJyYWNlci8xTQpicmFjZXJvLzFNUwpicmFja2VuLzFNCmJyYWNrZXQvMTRHTURTCmJyYWNraXNoLzVQCmJyYWNraXNobmVzcy8xTQpicmFjdC8xTVMKYnJhZC8xNFNNCmJyYWRhd2wvMVMKYnJhZHljYXJkaWEvMQpicmFlLzFTTQpicmFnLzE0NVNNCmJyYWdnYWRvY2lvLzFTTQpicmFnZ2FydC8xNVNNCmJyYWdnZWQvNApicmFnZ2VyLzE1TVMKYnJhZ2dpbmcvMTQKYnJhaWQvNDE1R01EUwpicmFpZGluZy80MU0KYnJhaWxsZS8xNDVNCmJyYWluLzE0R01EUwpicmFpbmNoaWxkLzE0TQpicmFpbmNoaWxkcmVuLzFNCmJyYWluaW5lc3MvMU0KYnJhaW5sZXNzLzVZCmJyYWlucG93ZXIvMQpicmFpbnN0b3JtLzQxU01ERwpicmFpbnN0b3JtaW5nLzE0TQpicmFpbnRlYXNlci8xU00KYnJhaW53YXNoLzE0RFNHCmJyYWlud2FzaGluZy8xNE0KYnJhaW53YXZlLzFTCmJyYWlueS81UFRSCmJyYWlzZS8xNEdEUwpicmFrZS8xNE1HRFMKYnJha2VtYW4vMU0KYnJha2VtZW4vMQpicmFtYmxlLzE0TVMKYnJhbWJseS81CmJyYW4vMU0KYnJhbmNoLzE0R01EUwpicmFuY2hsaWtlLzUKYnJhbmQvMTRaR01EUlMKYnJhbmRlZC81NFUKYnJhbmRlci8xNE0KYnJhbmRpc2gvNDFEU0cKYnJhbmR5LzE0R0RTTQpicmFzaC81MTRQVFJZCmJyYXNobmVzcy8xTQpicmFzcy8xNTRNUwpicmFzc2VyaWUvMU1TCmJyYXNzaWVyZS8xTVMKYnJhc3NpbHkvCmJyYXNzaW5lc3MvMU0KYnJhc3N5LzUxUFRSCmJyYXQvMTQ1U00KYnJhdHR5LzUxUlQKYnJhdHd1cnN0LzFTTQpicmF2YWRvLzE0TQpicmF2ZS81MTRHUE1ZRFRSUwpicmF2ZW5lc3MvMU0KYnJhdmVyeS8xTQpicmF2by8xNFNNCmJyYXZ1cmEvMTVTTQpicmF3bC8xNFNEUlpHTQpicmF3bGVyLzFNCmJyYXduLzE0TQpicmF3bmluZXNzLzFNCmJyYXdueS81UlRQCmJyYXkvNDFER1NNCmJyYXplLzQxRFJTWkcKYnJhemVuLzU0U0RZR1AKYnJhemVubmVzcy8xTQpicmF6ZXIvMU0KYnJhemllci8xU00KYnJlYWNoLzE0R01EUwpicmVhZC8xNEdNREhTCmJyZWFkYmFza2V0LzFTTQpicmVhZGJvYXJkLzE0U00KYnJlYWRib3gvMU1TCmJyZWFkY3J1bWIvMTRNUwpicmVhZGZydWl0LzFTTQpicmVhZGxpbmUvMU1TCmJyZWFkdGgvMU0KYnJlYWR0aHMvMQpicmVhZHdpbm5lci8xU00KYnJlYWsvNDFCTVpHUlMKYnJlYWthYmxlLzUxTVMKYnJlYWthZ2UvMU1TCmJyZWFrYXdheS81MU1TCmJyZWFrZG93bi8xTVMKYnJlYWtlci8xTQpicmVha2Zhc3QvMTRNREdTCmJyZWFrZnJvbnQvMU1TCmJyZWFrbmVjay81MQpicmVha291dC8xNU1TCmJyZWFrcG9pbnRzLzEKYnJlYWt0aHJvdWdoLzUxTQpicmVha3Rocm91Z2hzLzEKYnJlYWt1cC8xU00KYnJlYWt3YXRlci8xU00KYnJlYW0vMTRNUwpicmVhc3QvMTRTTURHCmJyZWFzdGJvbmUvMU1TCmJyZWFzdGZlZC80CmJyZWFzdGZlZWQvNDFHUwpicmVhc3RwbGF0ZS8xU00KYnJlYXN0c3Ryb2tlLzE0U00KYnJlYXN0d29yay8xTVMKYnJlYXRoLzE1NE1EUlNaR0IKYnJlYXRoYWx5emUvNFpHRFJTCmJyZWF0aGUvNApicmVhdGhlci8xTQpicmVhdGhpbmcvMTRNCmJyZWF0aGxlc3MvNVBZCmJyZWF0aGxlc3NuZXNzLzFNCmJyZWF0aHMvMQpicmVhdGh0YWtpbmcvNVkKYnJlYXRoeS81UlQKYnJlZC80MUkKYnJlZWNoLzE1NE1TCmJyZWVkLzQxU1JaR00KYnJlZWRlci8xTQpicmVlZGluZy8xNTRJTQpicmVlemUvMTREU01HCmJyZWV6ZXdheS8xU00KYnJlZXppbHkvCmJyZWV6aW5lc3MvMU0KYnJlZXp5LzUxUlRQCmJyZXRocmVuLzE1CmJyZXZlLzFTTQpicmV2ZXQvMTRTTQpicmV2ZXR0ZWQvNTQKYnJldmV0dGluZy80CmJyZXZpYXJ5LzFTTQpicmV2aXR5LzFNCmJyZXcvNDFNRFJaR1MKYnJld2VyLzFNCmJyZXdlcnkvMVNNCmJyZXdwdWIvMVNNCmJyaWJlLzE0RFJTTVpHCmJyaWJlci8xTQpicmliZXJ5LzFNCmJyaWNrLzE1NFNNREcKYnJpY2tiYXQvMTRTTQpicmlja2llLzFTCmJyaWNrbGF5ZXIvMU1TCmJyaWNrbGF5aW5nLzFNCmJyaWNrd29yay8xTQpicmlja3lhcmQvMVMKYnJpZGFsLzE1U00KYnJpZGUvMTRTTQpicmlkZWdyb29tLzFTTQpicmlkZXNtYWlkLzE0TVMKYnJpZGdlLzE0RFNNRwpicmlkZ2VhYmxlLzVVCmJyaWRnZWhlYWQvMVNNCmJyaWRnZXdvcmsvMU0KYnJpZGxlLzE0RFNNRwpicmlkbGVkLzQ1VQpicmlkbGV3YXkvMVMKYnJpZS8xTVpSCmJyaWVmJ3MKYnJpZWYvNTE0Q1NEVEdKCmJyaWVmY2FzZS8xU00KYnJpZWZlci8xNQpicmllZmluZy8xNENNCmJyaWVmbHkvCmJyaWVmbmVzcy8xTQpicmllci8xTQpicmlnLzE0TVMKYnJpZ2FkZS8xNFNNCmJyaWdhZGllci8xTVMKYnJpZ2FuZC8xU00KYnJpZ2FuZGFnZS8xTQpicmlnYW50aW5lLzFNUwpicmlnaHQvNTE0U1BOUllYVApicmlnaHRlbi80RFJaRwpicmlnaHRlbmVyLzFNCmJyaWdodG5lc3MvMU0KYnJpZ2h0cy8xTQpicmlsbC8xNQpicmlsbGlhbmNlLzFNCmJyaWxsaWFuY3kvMU0KYnJpbGxpYW50LzUxTVlTCmJyaWxsaWFudGluZS8xNE0KYnJpbS8xNDVNUwpicmltZnVsLzUxCmJyaW1sZXNzLzUKYnJpbW1lZC81NApicmltbWluZy80NQpicmltc3RvbmUvMU0KYnJpbmRsZS8xNTRETQpicmluZS8xNE0KYnJpbmcvNFNSWkcKYnJpbmdlci8xTQpicmluaW5lc3MvMU0KYnJpbmsvMVNNCmJyaW5rbWFuc2hpcC8xTQpicmlueS81MVJUUApicmlvY2hlLzFTTQpicmlxdWV0dGUvMTRNUwpicmlzay81NFNEUllUR1AKYnJpc2tldC8xU00KYnJpc2tuZXNzLzFNCmJyaXN0bGUvMTREU01HCmJyaXN0bHkvNVRSCmJyaXRjaGVzLzFNCmJyaXR0bGUvNTE0UFJNVApicml0dGxlbmVzcy8xTQpicm8vMThTTUgKYnJvYWNoLzE0TURTRwpicm9hZC81MVNNTlJZWFRQCmJyb2FkYmFuZC8xNU0KYnJvYWRjYXN0LzUxNEFNR1MKYnJvYWRjYXN0ZXIvMU1TCmJyb2FkY2FzdGluZy81MTRNCmJyb2FkY2xvdGgvMU0KYnJvYWRlbi80REcKYnJvYWRsb29tLzE1TQpicm9hZG1pbmRlZC81CmJyb2FkbmVzcy8xTQpicm9hZHNoZWV0LzE1U00KYnJvYWRzaWRlLzE0TUdEUwpicm9hZHN3b3JkLzE0U00KYnJvY2FkZS8xNERTTUcKYnJvY2NvbGkvMU0KYnJvY2hldHRlLzFTTQpicm9jaHVyZS8xTVMKYnJvZ2FuLzFTTQpicm9ndWUvMTRTTQpicm9pbC80MVNNRFJaRwpicm9pbGVyLzFNCmJyb2tlLzQ1MQpicm9rZW4vNDVZUApicm9rZW5oZWFydGVkLzVZCmJyb2tlbm5lc3MvMU0KYnJva2VyLzUxNFNNREcKYnJva2VyYWdlLzFNUwpicm9sbHkvMVMKYnJvbWlkZS8xU00KYnJvbWlkaWMvNQpicm9taW5lLzFNCmJyb25jLzFTTQpicm9uY2hpLzEKYnJvbmNoaWFsLzUKYnJvbmNoaXRpYy81MQpicm9uY2hpdGlzLzFNCmJyb25jaHVzLzFNCmJyb25jby8xU00KYnJvbmNvYnVzdGVyLzFTTQpicm9udG9zYXVyLzFNUwpicm9udG9zYXVydXMvMU1TCmJyb256ZS8xNTREU01HCmJyb29jaC8xNE1TCmJyb29kLzE1NFNNRFJaRwpicm9vZGVyLzFNCmJyb29kaWx5Lwpicm9vZGluZy81NDFNWQpicm9vZG1hcmUvMU1TCmJyb29keS8xNVJNUFQKYnJvb2svNDFTTURHCmJyb29rbGV0LzFTTQpicm9vbS8xNFNNCmJyb29tc3RpY2svMTRNUwpicm90aC8xTVJaCmJyb3RoZWwvMU1TCmJyb3RoZXIvMTRNWQpicm90aGVyaG9vZC8xTVMKYnJvdGhlcmxpbmVzcy8xTQpicm90aHMvMQpicm91Z2hhbS8xU00KYnJvdWdodC80CmJyb3VoYWhhLzFTTQpicm93LzE0TVMKYnJvd2JlYXQvNFNORwpicm93bi8xNTRTTURSUFRHCmJyb3duZmllbGQvMTUKYnJvd25pZS8xTVMKYnJvd25pc2gvNQpicm93bm5lc3MvMU0KYnJvd25vdXQvMVNNCmJyb3duc3RvbmUvMU1TCmJyb3dzZS80MURSU01aRwpicm93c2VyLzFNCmJyci8KYnJ1aW4vMVNNCmJydWlzZS80MURSU01aRwpicnVpc2VyLzFNCmJydWlzaW5nLzQ1MU0KYnJ1aXQvMTRTREcKYnJ1bmNoLzE0TURTRwpicnVuZXQvNTFTTQpicnVuZXR0ZS81MU1TCmJydW50LzE0TQpicnVzaC8xNE1EU0cKYnJ1c2hvZmYvMVNNCmJydXNoc3Ryb2tlLzFTCmJydXNod29vZC8xTQpicnVzaHdvcmsvMU0KYnJ1c3F1ZS81NFJQWVQKYnJ1c3F1ZW5lc3MvMU0KYnJ1dGFsLzVZCmJydXRhbGl0eS8xU00KYnJ1dGFsaXphdGlvbi8xTQpicnV0YWxpemUvNEdEUwpicnV0ZS81MTRTTQpicnV0aXNoLzVQWQpicnV0aXNobmVzcy8xTQpidS8xCmJ1Yi8xNFNNCmJ1YmJsZS8xNERTTUcKYnViYmxlZ3VtLzE1TQpidWJibHkvNTFSTVQKYnViby8xTQpidWJvZXMvMQpidWNjYW5lZXIvMTRTR01ECmJ1Y2svMTRNREdTCmJ1Y2thcm9vLzFTTQpidWNrYm9hcmQvMU1TCmJ1Y2tldC8xNFNHTUQKYnVja2V0ZnVsLzFNUwpidWNrZXllLzFNUwpidWNrbGUncwpidWNrbGUvMTRVRFNHCmJ1Y2tsZXIvMTRNUwpidWNrcmFtLzE0TQpidWNrc2F3LzFNUwpidWNrc2hvdC8xTQpidWNrc2tpbi8xNU1TCmJ1Y2t0ZWV0aC8xCmJ1Y2t0b290aC8xTUQKYnVja3doZWF0LzFNCmJ1Y2t5YmFsbC8xU00KYnVjb2xpYy81MU1TCmJ1Y29saWNhbGx5LwpidWQvMTRTTQpidWRkZWQvNDUKYnVkZGluZy81MTRTCmJ1ZGR5LzE4NDVTTQpidWRnZS80MTVEU0cKYnVkZ2VyaWdhci8xTVMKYnVkZ2V0LzE1NFNHTUQKYnVkZ2V0YXJ5LzUKYnVkZ2llLzFTTQpidWZmLzE1NEFNREdTCmJ1ZmZhbG8vMTRNREcKYnVmZmFsb2VzLzE0CmJ1ZmZlci8xNTRTTURHCmJ1ZmZldC8xNFNNREdKCmJ1ZmZvb24vMTRTTQpidWZmb29uZXJ5LzFNCmJ1ZmZvb25pc2gvNQpidWcncwpidWcvMTRDUwpidWdhYm9vLzFTTQpidWdiZWFyLzE0U00KYnVnZ2VkLzQ1QwpidWdnZXIvMTRTTURHCmJ1Z2dlcnkvMQpidWdnaW5nLzQxQwpidWdneS8xNVJTTVQKYnVnbGUvMTQ1RFJTTVpHCmJ1Z2xlci8xTQpidWlsZC80MVNNUlpHSgpidWlsZGVyLzFNCmJ1aWxkaW5nLzE0TQpidWlsZHVwLzFTTQpidWlsdC81MTRBSQpidWlsdGluLzUxCmJ1bGIvMTRNUwpidWxib3VzLzUKYnVsZ2UvMTREU01HCmJ1bGd5LzVSVApidWxpbWFyZXhpYS8xTQpidWxpbWlhLzFNCmJ1bGltaWMvNTFTTQpidWxrLzE1NE1ER1MKYnVsa2hlYWQvMU1TCmJ1bGtpbmVzcy8xTQpidWxreS81UlRQCmJ1bGwvMTU0TURHUwpidWxsZG9nLzE0U00KYnVsbGRvZ2dlZC80CmJ1bGxkb2dnaW5nLzQKYnVsbGRvemUvNFpHRFJTCmJ1bGxkb3plci8xNE0KYnVsbGV0LzE0U01ECmJ1bGxldGluLzE0TURHUwpidWxsZXRwcm9vZi81NFNERwpidWxsZmlnaHQvMVNNUlpHCmJ1bGxmaWdodGVyLzFNCmJ1bGxmaWdodGluZy8xTQpidWxsZmluY2gvMU1TCmJ1bGxmcm9nLzFNUwpidWxsaGVhZC8xTURTCmJ1bGxoZWFkZWQvNVBZCmJ1bGxoZWFkZWRuZXNzLzFNCmJ1bGxob3JuLzFNUwpidWxsaW9uLzFNCmJ1bGxpc2gvNVlQCmJ1bGxpc2huZXNzLzFNCmJ1bGxvY2svMTRTTQpidWxscGVuLzFTTQpidWxscmluZy8xTVMKYnVsbHNleWUvMQpidWxsc2hpdC8xNTRNUyEKYnVsbHNoaXR0ZWQvNCEKYnVsbHNoaXR0ZXIvMVNNIQpidWxsc2hpdHRpbmcvNCEKYnVsbHdoaXAvMTRTCmJ1bGx5LzE0NURTTUcKYnVscnVzaC8xTVMKYnVsd2Fyay8xNE1TCmJ1bS8xNDVTTQpidW1iYWcvMVMKYnVtYmxlLzE0RFJTWkcKYnVtYmxlYmVlLzFTTQpidW1ibGVyLzFNCmJ1bWYvMQpidW1tZWQvNDUKYnVtbWVyLzE1U00KYnVtbWVzdC81CmJ1bW1pbmcvNApidW1wLzE0TURSWkdTCmJ1bXBlci8xNTRNCmJ1bXBoLzEKYnVtcGluZXNzLzFNCmJ1bXBraW4vMU1TCmJ1bXB0aW91cy81UFkKYnVtcHRpb3VzbmVzcy8xTQpidW1weS81UFJUCmJ1bi8xNFNNCmJ1bmNoLzE0TURTRwpidW5jaHkvNVJUCmJ1bmNvLzE0U01ERwpidW5kbGUvMTREU01HCmJ1bmcvMTQ1TURHUwpidW5nYWxvdy8xTVMKYnVuZ2VlLzE0U00KYnVuZ2hvbGUvMTRNUwpidW5nbGUvNDFEUlNNWkcKYnVuZ2xlci8xTQpidW5pb24vMVNNCmJ1bmsncwpidW5rLzE0NUNER1MKYnVua2VyLzE0U00KYnVua2hvdXNlLzFTTQpidW5rdW0vMU0KYnVubnkvMTVTTQpidW50LzE0TURHU0oKYnVudGluZy8xNE0KYnVveS8xNE1ER1MKYnVveWFuY3kvMU0KYnVveWFudC81WQpidXIvMVNNWQpidXJibGUvMTREU01HCmJ1cmJzLzFNCmJ1cmRlbidzCmJ1cmRlbi8xNFVTR0QKYnVyZGVuc29tZS81CmJ1cmRvY2svMU0KYnVyZWF1LzFTTQpidXJlYXVjcmFjeS8xU00KYnVyZWF1Y3JhdC8xTVMKYnVyZWF1Y3JhdGljLzUKYnVyZWF1Y3JhdGljYWxseS8KYnVyZWF1Y3JhdGl6YXRpb24vMU0KYnVyZWF1Y3JhdGl6ZS80R0RTCmJ1cmcvMU1SWlMKYnVyZ2Vvbi8xNERTRwpidXJnZXIvMU1TCmJ1cmdoLzFNUloKYnVyZ2hlci8xTQpidXJnaHMvMQpidXJnbGFyLzE0TVMKYnVyZ2xhcml6ZS80R0RTCmJ1cmdsYXJwcm9vZi81CmJ1cmdsYXJ5LzFTTQpidXJnbGUvNERTRwpidXJnb21hc3Rlci8xU00KYnVyZ3VuZHkvMTVTTQpidXJpYWwvMUFTTQpidXJrYS8xU00KYnVybC8xNE1EUwpidXJsYXAvMTRNCmJ1cmxlc3F1ZS81MTRNR0RTCmJ1cmxpbmVzcy8xTQpidXJseS81UlBUCmJ1cm4vMTRNRFJaR1NCCmJ1cm5hYmxlLzUxU00KYnVybmVyLzFNCmJ1cm5pc2gvNDFaR01EUlMKYnVybmlzaGVyLzFNCmJ1cm5vb3NlLzFNUwpidXJub3V0LzFNUwpidXJudC80NQpidXJwLzE0TURHUwpidXJyLzE0TURHUwpidXJyaXRvLzE0TVMKYnVycm8vMVNNCmJ1cnJvdy8xNFNNRFJaRwpidXJyb3dlci8xTQpidXJzYS8xTQpidXJzYWUvMQpidXJzYXIvMVNNCmJ1cnNhcnkvMVNNCmJ1cnNpdGlzLzFNCmJ1cnN0LzQxU01HCmJ1cnkvNDFBRFNHCmJ1cy8xNEFNUwpidXNib3kvMVNNCmJ1c2J5LzFTTQpidXNlZC80CmJ1c2dpcmwvMU1TCmJ1c2gvMTQ1TURTR0oKYnVzaGVsLzE0U0dNRApidXNoaW5lc3MvMU0KYnVzaGluZy8xNE0KYnVzaG1hbi8xTQpidXNobWFzdGVyLzFTTQpidXNobWVuLzEKYnVzaHdoYWNrLzREUlNaRwpidXNod2hhY2tlci8xTQpidXNoeS81MVJQVApidXNpbHkvCmJ1c2luZXNzLzE1TVMKYnVzaW5lc3NsaWtlLzUKYnVzaW5lc3NtYW4vMU0KYnVzaW5lc3NtZW4vMQpidXNpbmVzc3BlcnNvbi8xU00KYnVzaW5lc3N3b21hbi8xTQpidXNpbmVzc3dvbWVuLzEKYnVzaW5nLzQxTQpidXNrLzQxRFJaR1MKYnVza2luLzFTTQpidXNsb2FkLzFTCmJ1c3MvMTRNRFNHCmJ1c3QvNDE1TURSWkdTCmJ1c3Rlci8xTQpidXN0bGUvMTREU01HCmJ1c3R5LzVSWlQKYnVzeS81MTREUlNUR1AKYnVzeWJvZHkvMTRTTQpidXN5bmVzcy8xTQpidXN5d29yay8xTQpidXQvKzcxNEFDU34KYnV0YW5lLzFNCmJ1dGNoLzUxNE1SU1oKYnV0Y2hlci8xNDVNREcKYnV0Y2hlcnkvMVNNCmJ1dGxlci8xNFNNCmJ1dHQvMTRNRFJaR1MKYnV0dGUvMVNNCmJ1dHRlZC80NUEKYnV0dGVyLzE0TURHCmJ1dHRlcmJhbGwvMU1TCmJ1dHRlcmNyZWFtLzEKYnV0dGVyY3VwLzFTTQpidXR0ZXJmYXQvMU0KYnV0dGVyZmluZ2VyZWQvNQpidXR0ZXJmaW5nZXJzLzFNCmJ1dHRlcmZseS8xNEdEU00KYnV0dGVybWlsay8xTQpidXR0ZXJudXQvMVNNCmJ1dHRlcnNjb3RjaC8xNU0KYnV0dGVyeS81MVRSU00KYnV0dGluZy80MUEKYnV0dG9jay8xU00KYnV0dG9uJ3MKYnV0dG9uLzE0VVNERwpidXR0b25ob2xlLzE0RFNNRwpidXR0b253b29kLzFNUwpidXR0cmVzcy8xNE1EU0cKYnV0dHkvMTQ1UwpidXhvbS81CmJ1eS80MVpHU01SCmJ1eWJhY2svMVNNCmJ1eWVyLzFNCmJ1eW91dC8xU00KYnV6ei8xNE1EUlNaRwpidXp6YXJkLzFNUwpidXp6ZXIvMU0KYnV6emtpbGwvMVNNCmJ1enp3b3JkLzFTTQpieC8xCmJ4cy8xCmJ5Lys1MU1+CmJ5ZS8xNStTTQpieWdvbmUvNTFTTQpieWxhdy8xU00KYnlsaW5lLzE0U00KYnlwYXNzLzE0R01EUwpieXBhdGgvMU0KYnlwYXRocy8xCmJ5cGxheS8xTQpieXByb2R1Y3QvMU1TCmJ5cmUvMVMKYnlyb2FkLzFTTQpieXN0YW5kZXIvMU1TCmJ5dGUvMU1TCmJ5d2F5LzFTTQpieXdvcmQvMVNNCmJ5emFudGluZS81MQpjLzE0SUVTCmNhLysKY2FiLzE0U01SWgpjYWJhbC8xNE1TCmNhYmFsYSdzCmNhYmFsbGVyby8xTVMKY2FiYW5hLzFTTQpjYWJhcmV0LzFTTQpjYWJiYWdlLzE0TVMKY2FiYmVkLzQKY2FiYmluZy80MQpjYWJieS8xU00KY2FiZHJpdmVyLzFTTQpjYWJpbi8xNE1TCmNhYmluZXQvMVNNCmNhYmluZXRtYWtlci8xTVMKY2FiaW5ldG1ha2luZy8xTQpjYWJpbmV0cnkvMU0KY2FiaW5ldHdvcmsvMU0KY2FibGUvMTRNR0RTCmNhYmxlY2FzdC8xNDVHTVMKY2FibGVncmFtLzE0TVMKY2Fib2Nob24vMVNNCmNhYm9vZGxlLzFNCmNhYm9vc2UvMVNNCmNhYnJpb2xldC8xU00KY2Fic3RhbmQvMVNNCmNhY2FvLzFNUwpjYWNoZS8xNE1HRFMKY2FjaGVwb3QvMVNNCmNhY2hldC8xNE1TCmNhY2tsZS8xNE1aR0RSUwpjYWNrbGVyLzFNCmNhY29waG9ub3VzLzUKY2Fjb3Bob255LzFTTQpjYWN0aS8xCmNhY3R1cy8xNU0KY2FkLzFTTQpjYWRhdmVyLzFTTQpjYWRhdmVyb3VzLzUKY2FkZGllLzE0TURTCmNhZGRpc2gvNVlQCmNhZGRpc2huZXNzLzFNCmNhZGR5aW5nLzQKY2FkZW5jZS8xNERTTQpjYWRlbnphLzFTTQpjYWRldC8xTVMKY2FkZ2UvMTRaR0RSUwpjYWRnZXIvMU0KY2FkbWl1bS8xTQpjYWRyZS8xTVMKY2FkdWNlaS8xCmNhZHVjZXVzLzFNCmNhZXN1cmEvMVNNCmNhZmUvMVNNCmNhZmV0ZXJpYS8xTVMKY2FmZXRpZXJlLzFTCmNhZmYvMUNTCmNhZmZlaW5hdGVkLzU0CmNhZmZlaW5lLzFNCmNhZnRhbi8xTVMKY2FnZS8xNERTTUcKY2FnZXkvNQpjYWdpZXIvNQpjYWdpZXN0LzUKY2FnaWx5LwpjYWdpbmVzcy8xTQpjYWdvdWxlLzFTCmNhaG9vdC8xNE1TCmNhaW1hbi8xTVMKY2Fpcm4vMU1TCmNhaXNzb24vMVNNCmNhaXRpZmYvMTVTTQpjYWpvbGUvNDFaR0xEUlMKY2Fqb2xlbWVudC8xTQpjYWpvbGVyLzFNCmNham9sZXJ5LzFNCmNha2UvMTREU01HCmNha2V3YWxrLzE0U00KY2FsLzEKY2FsYWJhc2gvMU1TCmNhbGFib29zZS8xU00KY2FsYW1hcmkvMVNNCmNhbGFtaW5lLzE0TQpjYWxhbWl0b3VzLzVZCmNhbGFtaXR5LzFTTQpjYWxjYXJlb3VzLzUKY2FsY2lmZXJvdXMvNQpjYWxjaWZpY2F0aW9uLzFNCmNhbGNpZnkvNEdORFMKY2FsY2ltaW5lLzE0RFNNRwpjYWxjaW5lLzQxRFNHCmNhbGNpdGUvMU0KY2FsY2l1bS8xTQpjYWxjdWxhYmxlLzVJCmNhbGN1bGF0ZS80QUdOVkRTWApjYWxjdWxhdGVkLzQ1WQpjYWxjdWxhdGluZy80NVkKY2FsY3VsYXRpb24vMUFNCmNhbGN1bGF0b3IvMVNNCmNhbGN1bGkvMQpjYWxjdWx1cy8xTQpjYWxkZXJhLzFTTQpjYWxlbmRhci8xNE1ER1MKY2FsZi8xTQpjYWxmc2tpbi8xTQpjYWxpYmVyLzFTTQpjYWxpYnJhdGUvNEdORFNYCmNhbGlicmF0aW9uLzFNCmNhbGlicmF0b3IvMVNNCmNhbGljby8xNU0KY2FsaWNvZXMvMQpjYWxpZm9ybml1bS8xTQpjYWxpcGVyLzE0U0dNRApjYWxpcGgvMU0KY2FsaXBoYXRlLzFNUwpjYWxpcGhzLzEKY2FsaXN0aGVuaWMvNVMKY2FsaXN0aGVuaWNzLzFNCmNhbGsvMTRTR01ECmNhbGwvNDFBU0dNRApjYWxsYS8xTVMKY2FsbGFibGUvNTEKY2FsbGJhY2svMU1TCmNhbGxlZC80NVUKY2FsbGVyLzFNUwpjYWxsaWdyYXBoZXIvMVNNCmNhbGxpZ3JhcGhpYy81CmNhbGxpZ3JhcGhpc3QvMU1TCmNhbGxpZ3JhcGh5LzFNCmNhbGxpbmcvNDFTTQpjYWxsaW9wZS8xTVMKY2FsbG9zaXR5LzFTTQpjYWxsb3VzLzUxNFBHRFNZCmNhbGxvdXNuZXNzLzFNCmNhbGxvdy81MVJQVApjYWxsb3duZXNzLzFNCmNhbGx1cy8xNE1EU0cKY2FsbS81MTRQU1RHTURSWQpjYWxtbmVzcy8xTQpjYWxvcmljLzUxCmNhbG9yaWUvMU1TCmNhbG9yaWZpYy81CmNhbHVtZXQvMU1TCmNhbHVtbmlhdGUvNEdORFMKY2FsdW1uaWF0aW9uLzFNCmNhbHVtbmlhdG9yLzFNUwpjYWx1bW5pb3VzLzUKY2FsdW1ueS8xNFNNCmNhbHZlLzRHRFMKY2FseXBzby8xNE1TCmNhbHl4LzFNUwpjYW0vMTRTTQpjYW1hcmFkZXJpZS8xTQpjYW1iZXIvMTRNRFNHCmNhbWJpYWwvNQpjYW1iaXVtLzFTTQpjYW1icmljLzFNCmNhbWNvcmRlci8xNFNNCmNhbWUvNCsxCmNhbWVsLzE1TVMKY2FtZWxoYWlyLzEKY2FtZWxsaWEvMU1TCmNhbWVvLzE0TVMKY2FtZXJhLzFNUwpjYW1lcmFtYW4vMU0KY2FtZXJhbWVuLzEKY2FtZXJhcGVvcGxlLzEKY2FtZXJhcGVyc29uLzEKY2FtZXJhd29tYW4vMU0KY2FtZXJhd29tZW4vMQpjYW1lcmF3b3JrLzEKY2FtaWtuaWNrZXJzLzEKY2FtaXNvbGUvMTRTTQpjYW1vdWZsYWdlLzE0TVpHRFJTCmNhbW91ZmxhZ2VyLzFNCmNhbXAncwpjYW1wLzE0NUNTR0QKY2FtcGFpZ24vMTRTTURSWkcKY2FtcGFpZ25lci8xTQpjYW1wYW5pbGUvMVNNCmNhbXBhbm9sb2dpc3QvMU1TCmNhbXBhbm9sb2d5LzFNCmNhbXBlci8xNU1TCmNhbXBmaXJlLzFTTQpjYW1wZ3JvdW5kLzFTTQpjYW1waG9yLzFNCmNhbXBpbmcvNDFNCmNhbXBzaXRlLzFTTQpjYW1wdXMvMTRNUwpjYW1weS81VFIKY2Ftc2hhZnQvMVNNCmNhbid0LzQKY2FuLzQxU01EUlpHCmNhbmFsLzE0TVMKY2FuYWxpemF0aW9uLzFNCmNhbmFsaXplLzRHRFMKY2FuYXBlLzFNUwpjYW5hcmQvMU1TCmNhbmFyeS8xNTRTTQpjYW5hc3RhLzFNCmNhbmNhbi8xNE1TCmNhbmNlbC80MURSU1pHCmNhbmNlbGVyLzFNCmNhbmNlbGxhdGlvbi8xU00KY2FuY2Vsb3VzCmNhbmNlci8xNU1TCmNhbmNlcm91cy81CmNhbmRlbGFicmEvMVNNCmNhbmRlbGFicnVtLzFNCmNhbmRpZC81MVlQCmNhbmRpZGEvMQpjYW5kaWRhY3kvMVNNCmNhbmRpZGF0ZS8xNE1TCmNhbmRpZGF0dXJlLzFTTQpjYW5kaWRuZXNzLzFNCmNhbmRsZS8xNE1aR0RSUwpjYW5kbGVsaWdodC8xTQpjYW5kbGVsaXQvNQpjYW5kbGVwb3dlci8xTQpjYW5kbGVyLzFNCmNhbmRsZXN0aWNrLzE0TVMKY2FuZGxld2ljay8xU00KY2FuZG9yLzFNCmNhbmR5LzE0R0RTTQpjYW5keWZsb3NzLzEKY2FuZS8xNFNNCmNhbmVicmFrZS8xTVMKY2FuZXIvMU0KY2FuaW5lLzUxTVMKY2FuaXN0ZXIvMTRTTQpjYW5rZXIvMTRHTURTCmNhbmtlcm91cy81CmNhbm5hYmlzLzFNUwpjYW5uZWQvNTQKY2FubmVsbG9uaS8xTQpjYW5uZXJ5LzFTTQpjYW5uaWJhbC8xU00KY2FubmliYWxpc20vMU0KY2FubmliYWxpc3RpYy81CmNhbm5pYmFsaXphdGlvbi8xTQpjYW5uaWJhbGl6ZS80R0RTCmNhbm5pbHkvVQpjYW5uaW5lc3MvMU0KY2FubmluZy80MQpjYW5ub24vMTQ1R01EUwpjYW5ub25hZGUvMTRNR0RTCmNhbm5vbmJhbGwvMTRTTQpjYW5ub3QvNDEKY2FubnkvNVVUUgpjYW5vZS8xNE1EUwpjYW5vZWluZy8xNApjYW5vZWlzdC8xU00KY2Fub2xhLzFNCmNhbm9uLzE1TVMKY2Fub25pY2FsLzUxWQpjYW5vbml6YXRpb24vMVNNCmNhbm9uaXplLzREU0cKY2Fub29kbGUvNDFEU0cKY2Fub3B5LzE0R0RTTQpjYW5zdC80CmNhbnQncwpjYW50LzE0NUNaUkRHUwpjYW50YWJpbGUvMTUKY2FudGFsb3VwZS8xU00KY2FudGFua2Vyb3VzLzVQWQpjYW50YW5rZXJvdXNuZXNzLzFNCmNhbnRhdGEvMU1TCmNhbnRlZW4vMU1TCmNhbnRlci8xNENNCmNhbnRlcmVkLzQKY2FudGVyaW5nLzQxCmNhbnRpY2xlLzFNUwpjYW50aWxldmVyLzE0TURHUwpjYW50by8xTVMKY2FudG9uLzE0TUxTCmNhbnRvbmFsLzUKY2FudG9ubWVudC8xTVMKY2FudG9yLzFNUwpjYW52YXMvMTRNR0RTCmNhbnZhc2JhY2svMVNNCmNhbnZhc3MvNDFNRFJTWkcKY2FudmFzc2VyLzFNCmNhbnlvbi8xNE1HUwpjYXAvMTRTTURSQloKY2FwYWJpbGl0aWVzLzEKY2FwYWJpbGl0eS8xSU0KY2FwYWJsZS81SQpjYXBhYmx5L0kKY2FwYWNpb3VzLzVQWQpjYXBhY2lvdXNuZXNzLzFNCmNhcGFjaXRhbmNlLzFNCmNhcGFjaXRpZXMvMQpjYXBhY2l0b3IvMVNNCmNhcGFjaXR5LzE1SU0KY2FwYXJpc29uLzE0TURHUwpjYXBlLzE0U00KY2FwZXIvMTRHTUQKY2FwZXNraW4vMU0KY2FwaWxsYXJpdHkvMU0KY2FwaWxsYXJ5LzUxU00KY2FwaXRhbC8xNU1TWQpjYXBpdGFsaXNtLzFNCmNhcGl0YWxpc3QvNTFTTQpjYXBpdGFsaXN0aWMvNQpjYXBpdGFsaXN0aWNhbGx5LwpjYXBpdGFsaXphdGlvbi8xTQpjYXBpdGFsaXplLzRBRFNHCmNhcGl0YXRpb24vMUNTTQpjYXBpdG9sLzFTTQpjYXBpdHVsYXRlLzRBRFNYR04KY2FwaXR1bGF0aW9uLzFBTQpjYXBsZXQvMU1TCmNhcG8vMVNNCmNhcG9uLzE0TVMKY2FwcGVkLzU0VUEKY2FwcGluZy80MVVBCmNhcHB1Y2Npbm8vMVNNCmNhcHJpY2UvMVNNCmNhcHJpY2lvdXMvNVBZCmNhcHJpY2lvdXNuZXNzLzFNCmNhcHNpY3VtLzFTTQpjYXBzaXplLzQxRFNHCmNhcHN0YW4vMVNNCmNhcHN0b25lLzE0TVMKY2Fwc3VsYXIvNQpjYXBzdWxlLzE0RFNNRwpjYXBzdWxpemUvNERTRwpjYXB0LzE0CmNhcHRhaW4vMTRTTURHCmNhcHRhaW5jeS8xU00KY2FwdGlvbi8xNFNNREcKY2FwdGlvdXMvNVlQCmNhcHRpb3VzbmVzcy8xTQpjYXB0aXZhdGUvNDVEU0dOCmNhcHRpdmF0aW9uLzFNCmNhcHRpdmF0b3IvMVNNCmNhcHRpdmUvMTU0U00KY2FwdGl2aXR5LzFTTQpjYXB0b3IvMU1TCmNhcHR1cmUvMTRBRFNNRwpjYXIvMVNNRFJaRwpjYXJhZmUvMU1TCmNhcmFtZWwvMTU0U00KY2FyYW1lbGl6ZS80RFNHCmNhcmFwYWNlLzFTTQpjYXJhdC8xTVMKY2FyYXZhbi8xNFNNCmNhcmF2YW5zYXJ5LzFTTQpjYXJhdmVsLzFTTQpjYXJhd2F5LzFTTQpjYXJiaWRlLzFTTQpjYXJiaW5lLzFTTQpjYXJib2h5ZHJhdGUvMVNNCmNhcmJvbGljLzUxCmNhcmJvbi8xNE1TCmNhcmJvbmFjZW91cy81CmNhcmJvbmF0ZS8xNE1HTkRTCmNhcmJvbmF0aW9uLzFNCmNhcmJvbmlmZXJvdXMvNQpjYXJib25pemUvNEdEUwpjYXJib3J1bmR1bS8xTQpjYXJib3kvMTRNUwpjYXJicy8xCmNhcmJ1bmNsZS8xU00KY2FyYnVuY3VsYXIvNQpjYXJidXJldG9yLzFTTQpjYXJjYXNzLzFNUwpjYXJjaW5vZ2VuLzFTTQpjYXJjaW5vZ2VuaWMvNTFNUwpjYXJjaW5vZ2VuaWNpdHkvMU0KY2FyY2lub21hLzFNUwpjYXJkLzE0RVNHTUQKY2FyZGFtb20vMVNNCmNhcmRhbW9uLzFTCmNhcmRib2FyZC8xNU0KY2FyZGVyLzFNUwpjYXJkaG9sZGVyLzFTCmNhcmRpYWMvNTEKY2FyZGllLzFTCmNhcmRpZ2FuLzFTTQpjYXJkaW5hbC81MVNNWQpjYXJkaW5hbGl0eS8xCmNhcmRpby81MQpjYXJkaW9ncmFtLzFTTQpjYXJkaW9ncmFwaC8xTQpjYXJkaW9ncmFwaHMvMQpjYXJkaW9sb2dpc3QvMU1TCmNhcmRpb2xvZ3kvMU0KY2FyZGlvbXlvcGF0aHkvMQpjYXJkaW9wdWxtb25hcnkvNQpjYXJkaW92YXNjdWxhci81CmNhcmRzaGFycC8xTVJaUwpjYXJkc2hhcnBlci8xTQpjYXJlLzE0U00KY2FyZWVuLzQxREdTCmNhcmVlci8xNDVNREdTCmNhcmVlcmlzbS8xCmNhcmVlcmlzdC8xNVNNCmNhcmVmcmVlLzUKY2FyZWZ1bC81WVAKY2FyZWZ1bGxlci81CmNhcmVmdWxsZXN0LzUKY2FyZWZ1bG5lc3MvMU0KY2FyZWdpdmVyLzFTTQpjYXJlbGVzcy81UFkKY2FyZWxlc3NuZXNzLzFNCmNhcmVyLzFNCmNhcmVzcy8xNE1EU0cKY2FyZXQvMU1TCmNhcmV0YWtlci8xNU1TCmNhcmV3b3JuLzUKY2FyZmFyZS8xTQpjYXJnby8xNE0KY2FyZ29lcy8xCmNhcmhvcC8xNE1TCmNhcmlib3UvMVNNCmNhcmljYXR1cmUvMTU0TUdEUwpjYXJpY2F0dXJpc3QvMVNNCmNhcmllcy8xNE0KY2FyaWxsb24vMTRTTQpjYXJpbmcvNTQxTQpjYXJpb3VzLzUKY2FyamFjay80SlNEUlpHCmNhcmphY2tlci8xTQpjYXJqYWNraW5nLzQxTQpjYXJsb2FkLzFTTQpjYXJtYWtlci8xUwpjYXJtaW5lLzE1U00KY2FybmFnZS8xTQpjYXJuYWwvNVkKY2FybmFsaXR5LzFNCmNhcm5hdGlvbi8xNUlNUwpjYXJuZWxpYW4vMU1TCmNhcm5pdmFsLzE0TVMKY2Fybml2b3JhCmNhcm5pdm9yZS8xU00KY2Fybml2b3JvdXMvNVBZCmNhcm5pdm9yb3VzbmVzcy8xTQpjYXJueS8xNFNNCmNhcm9iLzFNUwpjYXJvbC8xNFpHTURSUwpjYXJvbGVyLzFNCmNhcm9tLzE0R01EUwpjYXJvdGVuZS8xTQpjYXJvdGlkLzE1U00KY2Fyb3VzYWwvMVNNCmNhcm91c2UvNDFEUlNNWkcKY2Fyb3VzZWwvMTRTTQpjYXJvdXNlci8xTQpjYXJwLzE0U1pHTURSCmNhcnBhbC8xNU1TCmNhcnBlbC8xTVMKY2FycGVudGVyLzE0TURHUwpjYXJwZW50cnkvMU0KY2FycGVyLzFNCmNhcnBldC8xNE1ER1MKY2FycGV0YmFnLzE0NU1TCmNhcnBldGJhZ2dlZC80CmNhcnBldGJhZ2dlci8xTVMKY2FycGV0YmFnZ2luZy80CmNhcnBldGluZy8xNE0KY2FycGkvMQpjYXJwb29sLzE0U01ERwpjYXJwb3J0LzFTTQpjYXJwdXMvMU0KY2FycmVsLzFNUwpjYXJyaWFnZS8xU00KY2FycmlhZ2V3YXkvMVMKY2Fycmllci8xTQpjYXJyaW9uLzE1TQpjYXJyb3QvMTRNUwpjYXJyb3R5LzUKY2FycnkvNDFaR0RSU00KY2FycnlhbGwvMVNNCmNhcnJ5Y290LzFTCmNhcnJ5b3V0LzEKY2FycnlvdmVyLzFNUwpjYXJzaWNrLzVQCmNhcnNpY2tuZXNzLzFNCmNhcnQvMTRTWkdNRFIKY2FydGFnZS8xTQpjYXJ0ZWwvMU1TCmNhcnRlci8xTQpjYXJ0aG9yc2UvMVNNCmNhcnRpbGFnZS8xU00KY2FydGlsYWdpbm91cy81CmNhcnRsb2FkLzFTTQpjYXJ0b2dyYXBoZXIvMVNNCmNhcnRvZ3JhcGhpYy81CmNhcnRvZ3JhcGh5LzFNCmNhcnRvbi8xNE1TCmNhcnRvb24vMTRTTURHCmNhcnRvb25pc3QvMU1TCmNhcnRyaWRnZS8xTVMKY2FydHdoZWVsLzE0R01EUwpjYXJ2ZS80MUpaR0RSUwpjYXJ2ZXIvMU0KY2FydmVyeS8xUwpjYXJ2aW5nLzE0TQpjYXJ5YXRpZC8xTVMKY2FzYWJhLzFNUwpjYXNjYWRlLzE0RFNNRwpjYXNjYXJhLzFTTQpjYXNlLzE0NUxEU0pNRwpjYXNlYm9vay8xNVMKY2FzZWQvNDVVCmNhc2VoYXJkZW4vNERHUwpjYXNlaW4vMU0KY2FzZWxvYWQvMU1TCmNhc2VtZW50LzFNUwpjYXNld29yay8xWk1SCmNhc2V3b3JrZXIvMU0KY2FzaC8xNDVHTURTCmNhc2hiYWNrLzFNCmNhc2hib29rLzFNUwpjYXNoZXcvMU1TCmNhc2hpZXIvNDFHU01ECmNhc2hsZXNzLzUKY2FzaG1lcmUvMU0KY2FzaW5nLzE0TQpjYXNpbm8vMU1TCmNhc2svMTRTTQpjYXNrZXQvMTRNUwpjYXNzYXZhLzFTTQpjYXNzZXJvbGUvMTREU01HCmNhc3NldHRlLzE0TVMKY2Fzc2lhLzFNUwpjYXNzb2NrLzFTTQpjYXNzb3dhcnkvMVNNCmNhc3QvNDE1QVNHTQpjYXN0YW5ldC8xTVMKY2FzdGF3YXkvNTFNUwpjYXN0ZS8xSk1aUlMKY2FzdGVsbGF0ZWQvNQpjYXN0ZXIvMTRNCmNhc3RpZ2F0ZS80RFNHTgpjYXN0aWdhdGlvbi8xTQpjYXN0aWdhdG9yLzFTTQpjYXN0aW5nLzQxQU0KY2FzdGxlLzE0TUdEUwpjYXN0b2ZmLzE1U00KY2FzdG9yLzFNUwpjYXN0cmF0ZS8xNEdOWERTCmNhc3RyYXRpb24vMU0KY2FzdWFsLzUxUE1ZUwpjYXN1YWxuZXNzLzFNCmNhc3VhbHR5LzFTTQpjYXN1aXN0LzFTTQpjYXN1aXN0aWMvNQpjYXN1aXN0cnkvMU0KY2F0LzE0NVNNCmNhdGFjbHlzbS8xTVMKY2F0YWNseXNtYWwvNQpjYXRhY2x5c21pYy81CmNhdGFjb21iLzFTTQpjYXRhZmFscXVlLzFNUwpjYXRhbGVwc3kvMU0KY2F0YWxlcHRpYy81MU1TCmNhdGFsb2cvMTRaR1NNRFIKY2F0YWxvZ2VyLzFNCmNhdGFscGEvMVNNCmNhdGFseXNlcy8xNApjYXRhbHlzaXMvMU0KY2F0YWx5c3QvMU1TCmNhdGFseXRpYy81TQpjYXRhbHl6ZS80R0RTCmNhdGFtYXJhbi8xU00KY2F0YXB1bHQvMTRHTURTCmNhdGFyYWN0LzFNUwpjYXRhcnJoLzFNCmNhdGFzdHJvcGhlLzFNUwpjYXRhc3Ryb3BoaWMvNQpjYXRhc3Ryb3BoaWNhbGx5LwpjYXRhdG9uaWEvMU0KY2F0YXRvbmljLzUxU00KY2F0YmlyZC8xU00KY2F0Ym9hdC8xU00KY2F0Y2FsbC8xNEdTTUQKY2F0Y2gvMTRaR0pMTVJTCmNhdGNoYWxsLzFNUwpjYXRjaGVyLzFNCmNhdGNobWVudC8xNE1TCmNhdGNocGVubnkvMQpjYXRjaHBocmFzZS8xU00KY2F0Y2h3b3JkLzFNUwpjYXRjaHkvNVJUCmNhdGVjaGlzbS8xU00KY2F0ZWNoaXN0LzFTTQpjYXRlY2hpemUvNERTRwpjYXRlZ29yaWNhbC81MVkKY2F0ZWdvcml6YXRpb24vMU1TCmNhdGVnb3JpemUvNEdEUwpjYXRlZ29yeS8xU00KY2F0ZXIvNDFaR0pEUlMKY2F0ZXJjb3JuZXIvNQpjYXRlcmVyLzFNCmNhdGVycGlsbGFyLzE0TVMKY2F0ZXJ3YXVsLzQxU01ERwpjYXRmaXNoLzE0TVMKY2F0Z3V0LzFNCmNhdGhhcnNlcy8xCmNhdGhhcnNpcy8xTQpjYXRoYXJ0aWMvNTFTTQpjYXRoZWRyYWwvNTEyU00KY2F0aGV0ZXIvMVNNCmNhdGhldGVyaXplLzREU0cKY2F0aG9kZS8xU00KY2F0aG9kaWMvNQpjYXRob2xpYy81CmNhdGhvbGljaXR5LzFNCmNhdGlvbi8xTVMKY2F0a2luLzFNUwpjYXRsaWtlLzUKY2F0bmFwLzE0TVMKY2F0bmFwcGVkLzQKY2F0bmFwcGluZy8xNApjYXRuaXAvMU0KY2F0c3VpdC8xUwpjYXR0YWlsLzFTTQpjYXR0ZWQvNApjYXR0ZXJ5LzFTCmNhdHRpbHkvCmNhdHRpbmVzcy8xTQpjYXR0aW5nLzQKY2F0dGxlLzE0TQpjYXR0bGVtYW4vMU0KY2F0dGxlbWVuLzEKY2F0dHkvNTFUUFIKY2F0d2Fsay8xU00KY2F1Y3VzLzE0TURTRwpjYXVkYWwvNTFZCmNhdWdodC81NFUKY2F1bGRyb24vMU1TCmNhdWxpZmxvd2VyLzE0U00KY2F1bGsvMTRaR01EUlMKY2F1bGtlci8xTQpjYXVzYWwvNTFZCmNhdXNhbGl0eS8xU00KY2F1c2F0aW9uLzFNCmNhdXNhdGl2ZS81MQpjYXVzZS8xNDdNWkdEUlMKY2F1c2VsZXNzLzUKY2F1c2VyLzFNCmNhdXNlcmllLzFTTQpjYXVzZXdheS8xNFNNCmNhdXN0aWMvNTFTTQpjYXVzdGljYWxseS8KY2F1c3RpY2l0eS8xTQpjYXV0ZXJpemF0aW9uLzFNCmNhdXRlcml6ZS80R0RTCmNhdXRpb24vMTRTTURHCmNhdXRpb25hcnkvNQpjYXV0aW91cy81SVkKY2F1dGlvdXNuZXNzLzFNCmNhdmFsY2FkZS8xNE1TCmNhdmFsaWVyLzUxNFNNWQpjYXZhbHJ5LzFTTQpjYXZhbHJ5bWFuLzFNCmNhdmFscnltZW4vMQpjYXZlLzE0RFJTTVpHCmNhdmVhdC8xNE1TCmNhdmVtYW4vMU0KY2F2ZW1lbi8xCmNhdmVybi8xNE1TCmNhdmVybm91cy81WQpjYXZpYXIvMU0KY2F2aWwvNDFaR0pNRFJTCmNhdmlsZXIvMU0KY2F2aW5nLzE0TQpjYXZpdGF0aW9uLzEKY2F2aXR5LzFGU00KY2F2b3J0LzRER1MKY2F3LzE0U01ERwpjYXkvMUNTTQpjYXllbm5lLzFNCmNheXVzZS8xTVMKY2MvMTQKY2Vhc2UvNDFDTUdEUwpjZWFzZWZpcmUvMU1TCmNlYXNlbGVzcy81WVAKY2Vhc2VsZXNzbmVzcy8xTQpjZWNhLzEKY2VjYWwvNQpjZWN1bS8xTQpjZWRhci8xTVMKY2VkZS80RkFHU0QKY2VkZXIvMU1TCmNlZGlsbGEvMVNNCmNlaWxpZGgvMTQKY2VpbGlkaHMvMTQKY2VpbGluZy8xNE1TCmNlbGFuZGluZS8xTQpjZWxlYi8xUwpjZWxlYnJhbnQvMVNNCmNlbGVicmF0ZS80RFNHTlgKY2VsZWJyYXRpb24vMU0KY2VsZWJyYXRvci8xU00KY2VsZWJyYXRvcnkvNQpjZWxlYnJpdHkvMVNNCmNlbGVyaWFjLzEKY2VsZXJpdHkvMU0KY2VsZXJ5LzFNCmNlbGVzdGEvMU1TCmNlbGVzdGlhbC81MVkKY2VsaWJhY3kvMU0KY2VsaWJhdGUvNTE0TVMKY2VsbC8xNFNNRApjZWxsYXIvMTRNUwpjZWxsaXN0LzFTTQpjZWxsbWF0ZS8xU00KY2VsbG8vMU1TCmNlbGxvcGhhbmUvMTRNCmNlbGxwaG9uZS8xNE1TCmNlbGx1bGFyLzUxU00KY2VsbHVsaXRlLzFNCmNlbGx1bGl0aXMvMQpjZWxsdWxvaWQvMU0KY2VsbHVsb3NlLzE1TQpjZW1lbnQvMTRNRFJaR1MKY2VtZW50ZXIvMU0KY2VtZW50dW0vMU0KY2VtZXRlcnkvMVNNCmNlbm9iaXRlLzFNUwpjZW5vYml0aWMvNQpjZW5vdGFwaC8xTQpjZW5vdGFwaHMvMQpjZW5zZXIvMU1TCmNlbnNvci8xNE1ER1MKY2Vuc29yZWQvNTRVCmNlbnNvcmlhbC81CmNlbnNvcmlvdXMvNVBZCmNlbnNvcmlvdXNuZXNzLzFNCmNlbnNvcnNoaXAvMU0KY2Vuc3VyZS8xNEJEUlNNWkcKY2Vuc3VyZXIvMU0KY2Vuc3VzLzE0TURTRwpjZW50LzFTWk1SCmNlbnRhdXIvMVNNCmNlbnRhdm8vMVNNCmNlbnRlbmFyaWFuLzE1TVMKY2VudGVuYXJ5LzUxNFNNCmNlbnRlbm5pYWwvNTFNWVMKY2VudGVyLzE1NE1ERwpjZW50ZXJib2FyZC8xU00KY2VudGVyZm9sZC8xTVMKY2VudGVycGllY2UvMU1TCmNlbnRpZ3JhZGUvNTEKY2VudGlncmFtLzFTTQpjZW50aWxpdGVyLzFNUwpjZW50aW1lLzFTTQpjZW50aW1ldGVyLzFNUwpjZW50aXBlZGUvMVNNCmNlbnRyYWwvNTFTTVkKY2VudHJhbGlzbS8xCmNlbnRyYWxpc3QvMTUKY2VudHJhbGl0eS8xTQpjZW50cmFsaXphdGlvbi8xQ00KY2VudHJhbGl6ZS80Q0dEUwpjZW50cmFsaXplci8xTVMKY2VudHJpZnVnYWwvNTFZCmNlbnRyaWZ1Z2UvMTREU01HCmNlbnRyaXBldGFsLzVZCmNlbnRyaXNtLzFNCmNlbnRyaXN0LzUxTVMKY2VudHVyaW9uLzFTTQpjZW50dXJ5LzFTTQpjZXBoYWxpYy81CmNlcmFtaWMvNTFTTQpjZXJhbWljaXN0LzFTTQpjZXJhbWljcy8xTQpjZXJhbWlzdC8xTVMKY2VyZWFsLzFNUwpjZXJlYmVsbGFyLzUKY2VyZWJlbGx1bS8xU00KY2VyZWJyYS8xCmNlcmVicmFsLzUKY2VyZWJyYXRlLzRHTkRTCmNlcmVicmF0aW9uLzFNCmNlcmVicm92YXNjdWxhci81CmNlcmVicnVtLzFNUwpjZXJlbWVudC8xTVMKY2VyZW1vbmlhbC81MVNNWQpjZXJlbW9uaW91cy81VVkKY2VyZW1vbmlvdXNuZXNzLzFNCmNlcmVtb255LzFTTQpjZXJpc2UvMTVNCmNlcml1bS8xTQpjZXJtZXQvMU0KY2VydC81MVMKY2VydGFpbi81OFVZCmNlcnRhaW50eS8xVVNNCmNlcnRpZmlhYmxlLzUxCmNlcnRpZmlhYmx5LwpjZXJ0aWZpY2F0ZS8xNE1HTlhEUwpjZXJ0aWZpY2F0aW9uLzFNCmNlcnRpZnkvNERTRwpjZXJ0aXR1ZGUvMUlNCmNlcnRpdHVkZXMvMQpjZXJ1bGVhbi8xNU0KY2VydmljYWwvNTEKY2VydmljZXMvMQpjZXJ2aXgvMU0KY2VzYXJlYW4vNTFNUwpjZXNpdW0vMU0KY2Vzc2F0aW9uLzFNUwpjZXNzaW9uLzFLQUZTTQpjZXNzcGl0LzFTCmNlc3Nwb29sLzFNUwpjZXRhY2Vhbi81MU1TCmNldGVyaXMKY2YvNApjZy8KY2gvMThJRlZUCmNoYWQvMVMKY2hhZmUvMTRHRFMKY2hhZmYvMTRHTURTCmNoYWZmaW5jaC8xTVMKY2hhZ3Jpbi8xNDVHU01ECmNoYWluJ3MKY2hhaW4vMTRVR0RTCmNoYWluc2F3LzE0TURHUwpjaGFpci8xNEdNRFMKY2hhaXJsaWZ0LzFNUwpjaGFpcm1hbi8xNE0KY2hhaXJtYW5zaGlwLzFTTQpjaGFpcm1lbi8xCmNoYWlycGVyc29uLzFTTQpjaGFpcndvbWFuLzFNCmNoYWlyd29tZW4vMQpjaGFpc2UvMU1TCmNoYWxjZWRvbnkvMU0KY2hhbGV0LzFNUwpjaGFsaWNlLzFTTQpjaGFsay8xNEdNRFMKY2hhbGtib2FyZC8xNFNNCmNoYWxraW5lc3MvMU0KY2hhbGt5LzVQUlQKY2hhbGxlbmdlLzE0RFJTTVpHCmNoYWxsZW5nZWQvNTRVCmNoYWxsZW5nZXIvMU0KY2hhbGxpcy8xTQpjaGFtYmVyLzE0U01ECmNoYW1iZXJsYWluLzFNUwpjaGFtYmVybWFpZC8xTVMKY2hhbWJyYXkvMU0KY2hhbWVsZW9uLzE1U00KY2hhbW9pcy8xNTRNCmNoYW1vbWlsZS8xTVMKY2hhbXAvMTRaR01EUwpjaGFtcGFnbmUvMTU0TVMKY2hhbXBpb24vMTU0R01EUwpjaGFtcGlvbnNoaXAvMU1TCmNoYW5jZS8xNTRNR0RTCmNoYW5jZWwvMVNNCmNoYW5jZWxsZXJ5LzFTTQpjaGFuY2VsbG9yLzFNUwpjaGFuY2VsbG9yc2hpcC8xTQpjaGFuY2VyeS8xU00KY2hhbmNpbmVzcy8xTQpjaGFuY3JlLzFTTQpjaGFuY3kvNVBSVApjaGFuZGVsaWVyLzFTTQpjaGFuZGxlci8xTVMKY2hhbmdlLzQxTVpHRFJTCmNoYW5nZWFiaWxpdHkvMU0KY2hhbmdlYWJsZS81UApjaGFuZ2VhYmxlbmVzcy8xTQpjaGFuZ2VhYmx5LwpjaGFuZ2VkLzU0VQpjaGFuZ2VsZXNzLzVZCmNoYW5nZWxpbmcvMTVTTQpjaGFuZ2VvdmVyLzFTTQpjaGFuZ2VyLzFNCmNoYW5naW5nLzQxVQpjaGFubmVsLzE0R1NNRApjaGFubmVsaXphdGlvbi8xTQpjaGFubmVsaXplLzREU0cKY2hhbnNvbi8xU00KY2hhbnQvNDFaR01EUlMKY2hhbnRlci8xTQpjaGFudGV1c2UvMU1TCmNoYW50ZXkvMVNNCmNoYW50aWNsZWVyLzE0TVMKY2hhb3MvMU0KY2hhb3RpYy81MQpjaGFvdGljYWxseS8KY2hhcC8xNFNNCmNoYXBhcnJhbC8xU00KY2hhcGF0aS8xUwpjaGFwYXR0aS8xUwpjaGFwYm9vay8xTVMKY2hhcGVhdS8xU00KY2hhcGVsLzE1NE1TCmNoYXBlcm9uLzE0TURHUwpjaGFwZXJvbmFnZS8xTQpjaGFwZXJvbmVkLzU0VQpjaGFwbGFpbi8xTVMKY2hhcGxhaW5jeS8xU00KY2hhcGxldC8xU00KY2hhcHBlZC81NApjaGFwcGluZy80CmNoYXBweS8xNVMKY2hhcHRlci8xNFNNCmNoYXIvNDFTTQpjaGFyYWJhbmMvMTRNUwpjaGFyYWN0ZXIvMTRNUwpjaGFyYWN0ZXJmdWwvNQpjaGFyYWN0ZXJpc3RpYy81MVNNCmNoYXJhY3RlcmlzdGljYWxseS9VCmNoYXJhY3Rlcml6YXRpb24vMU1TCmNoYXJhY3Rlcml6ZS80RFNHCmNoYXJhY3Rlcmxlc3MvNQpjaGFyYWRlLzE0U00KY2hhcmJyb2lsLzRHRFMKY2hhcmNvYWwvMTU0TVMKY2hhcmQvMU0KY2hhcmRvbm5heS8xU00KY2hhcmdlLzE0QUVTREdNCmNoYXJnZWFibGUvNUEKY2hhcmdlZC80NVUKY2hhcmdlci8xU00KY2hhcmlseS8KY2hhcmluZXNzLzFNCmNoYXJpb3QvMTRTTQpjaGFyaW90ZWVyLzE0TVMKY2hhcmlzbWEvMU0KY2hhcmlzbWF0aWMvNTFNUwpjaGFyaXRhYmxlLzVQCmNoYXJpdGFibGVuZXNzLzFNCmNoYXJpdGFibHkvVQpjaGFyaXR5LzFTTQpjaGFybGFkeS8xUwpjaGFybGF0YW4vMVNNCmNoYXJsYXRhbmlzbS8xTQpjaGFybGF0YW5yeS8xTQpjaGFybGllLzFTCmNoYXJtLzE0WkdNRFJTCmNoYXJtZXIvMU0KY2hhcm1pbmcvNTQxWQpjaGFybWxlc3MvNQpjaGFycmVkLzQ1CmNoYXJyaW5nLzQxCmNoYXJ0LzE0R01EUwpjaGFydGVkLzU0VQpjaGFydGVyJ3MKY2hhcnRlci8xNTRBU0dECmNoYXJ0ZXJlci8xTVMKY2hhcnRyZXVzZS8xNU0KY2hhcndvbWFuLzFNCmNoYXJ3b21lbi8xCmNoYXJ5LzVUUlAKY2hhc2UvMTRNWkdEUlMKY2hhc2VyLzFNCmNoYXNtLzFNUwpjaGFzc2lzLzFNCmNoYXN0ZS81UFlUUgpjaGFzdGVuLzRER1MKY2hhc3RlbmVzcy8xTQpjaGFzdGlzZS80RFJTWkdMCmNoYXN0aXNlbWVudC8xU00KY2hhc3Rpc2VyLzFNCmNoYXN0aXR5LzFNCmNoYXN1YmxlLzFTTQpjaGF0LzQxU00KY2hhdGVhdS8xU00KY2hhdGVhdXgvMQpjaGF0ZWxhaW5lLzFTTQpjaGF0bGluZS8xUwpjaGF0cm9vbS8xTQpjaGF0dGVkLzQKY2hhdHRlbC8xTVMKY2hhdHRlci8xNE1EUlpHUwpjaGF0dGVyYm94LzFNUwpjaGF0dGVyZXIvMU0KY2hhdHRpbHkvCmNoYXR0aW5lc3MvMU0KY2hhdHRpbmcvNDEKY2hhdHR5LzUxVFBSCmNoYXVmZmV1ci8xNEdNRFMKY2hhdXZpbmlzbS8xTQpjaGF1dmluaXN0LzUxU00KY2hhdXZpbmlzdGljLzUKY2hhdXZpbmlzdGljYWxseS8KY2hlYXAvMTU0UFhUTlJZCmNoZWFwZW4vNERHCmNoZWFwbmVzcy8xTQpjaGVhcG8vNTEKY2hlYXBza2F0ZS8xTVMKY2hlYXQvNDFaR01EUlMKY2hlYXRlci8xTQpjaGVjay8xNDVBR01EUwpjaGVja2Jvb2svMVNNCmNoZWNrYm94LzFTCmNoZWNrZWQvNTRVCmNoZWNrZXIvMTRNREdTCmNoZWNrZXJib2FyZC8xNFNNCmNoZWNrZXJzLzE0TQpjaGVja2xpc3QvMTRNUwpjaGVja21hdGUvMTRNR0RTCmNoZWNrb2ZmLzFTTQpjaGVja291dC8xU00KY2hlY2twb2ludC8xNFNNCmNoZWNrcm9vbS8xTVMKY2hlY2tzdW0vMTQKY2hlY2t1cC8xTVMKY2hlZGRhci8xNE0KY2hlZWsvMTRHTURTCmNoZWVrYm9uZS8xU00KY2hlZWtpbHkvCmNoZWVraW5lc3MvMU0KY2hlZWt5LzVUUFIKY2hlZXAvNDFHTURTCmNoZWVyLzE0WkdNRFJTCmNoZWVyZXIvMU0KY2hlZXJmdWwvNVlQCmNoZWVyZnVsbGVyLzUKY2hlZXJmdWxsZXN0LzUKY2hlZXJmdWxuZXNzLzFNCmNoZWVyaWx5LwpjaGVlcmluZXNzLzFNCmNoZWVyaW8vMU1TCmNoZWVybGVhZGVyLzFTTQpjaGVlcmxlc3MvNVBZCmNoZWVybGVzc25lc3MvMU0KY2hlZXJ5LzVUUFIKY2hlZXNlLzE0TUdEUwpjaGVlc2Vib2FyZC8xUwpjaGVlc2VidXJnZXIvMVNNCmNoZWVzZWNha2UvMVNNCmNoZWVzZWNsb3RoLzFNCmNoZWVzZXBhcmluZy80NTFNCmNoZWVzaW5lc3MvMU0KY2hlZXN5LzVUUFIKY2hlZXRhaC8xTQpjaGVldGFocy8xCmNoZWYvMTRTTQpjaGVtLzE1CmNoZW1pY2FsLzUxU01ZCmNoZW1pc2UvMU1TCmNoZW1pc3QvMU1TCmNoZW1pc3RyeS8xTQpjaGVtby8xNE0KY2hlbW90aGVyYXBldXRpYy81MQpjaGVtb3RoZXJhcHkvMU0KY2hlbXVyZ3kvMU0KY2hlbmlsbGUvMU0KY2hlcmlzaC80RFNHCmNoZXJvb3QvMU1TCmNoZXJyeS8xNVNNCmNoZXJ0LzFNCmNoZXJ1Yi8xTVMKY2hlcnViaWMvNQpjaGVydWJpbS8xCmNoZXJ2aWwvMU0KY2hlc3MvMU0KY2hlc3Nib2FyZC8xTVMKY2hlc3NtYW4vMU0KY2hlc3NtZW4vMQpjaGVzdC8xNE1EUwpjaGVzdGVyZmllbGQvMVNNCmNoZXN0ZnVsLzFTTQpjaGVzdG51dC8xNVNNCmNoZXN0eS81VFIKY2hldmFsaWVyLzFTTQpjaGV2aW90LzFNCmNoZXZyb24vMTRNUwpjaGV3LzQxU1pHTURSCmNoZXdlci8xTQpjaGV3aW5lc3MvMU0KY2hld3kvNTFQVFIKY2hnLzEKY2hnZS8xCmNoaS8xU00KY2hpYXJvc2N1cm8vMTVNCmNoaWMvNTFQVE1SCmNoaWNhbmUvMTRNUwpjaGljYW5lcnkvMVNNCmNoaWNoaS81MU1TCmNoaWNrLzE0WE1OUwpjaGlja2FkZWUvMVNNCmNoaWNrZW4vMTU0TURHCmNoaWNrZW5mZWVkLzFNCmNoaWNrZW5oZWFydGVkLzUKY2hpY2tlbnBveC8xTQpjaGlja2Vuc2hpdC81MVMhCmNoaWNrcGVhLzFTTQpjaGlja3dlZWQvMU0KY2hpY2xlLzFNCmNoaWNuZXNzLzFNCmNoaWNvcnkvMVNNCmNoaWRlLzRHRFMKY2hpZGluZy80MTVZCmNoaWVmLzE1NFRNUllTCmNoaWVmZG9tLzFNCmNoaWVmdGFpbi8xTVMKY2hpZWZ0YWluc2hpcC8xU00KY2hpZmZvbi8xTQpjaGlmZm9uaWVyLzFNUwpjaGlnZ2VyLzFNUwpjaGlnbm9uLzFNUwpjaGlodWFodWEvMVNNCmNoaWxibGFpbi8xU00KY2hpbGQvMTRNCmNoaWxkYmVhcmluZy8xNU0KY2hpbGRiaXJ0aC8xTQpjaGlsZGJpcnRocy8xCmNoaWxkY2FyZS8xTQpjaGlsZGhvb2QvMVNNCmNoaWxkaXNoLzVZUApjaGlsZGlzaG5lc3MvMU0KY2hpbGRsZXNzLzVQCmNoaWxkbGVzc25lc3MvMU0KY2hpbGRsaWtlLzUKY2hpbGRtaW5kZXIvMVMKY2hpbGRtaW5kaW5nLzE0CmNoaWxkcHJvb2YvNTRHU0QKY2hpbGRyZW4vMU0KY2hpbGkvMU0KY2hpbGllcy8xCmNoaWxsLzE1NEpQWlRHTURSUwpjaGlsbGVyLzE1TQpjaGlsbGluZXNzLzFNCmNoaWxsaW5nLzU0MVkKY2hpbGxuZXNzLzFNCmNoaWxseS81MVRQUgpjaGltZS8xNE1aR0RSUwpjaGltZXIvMU0KY2hpbWVyYS8xTVMKY2hpbWVyaWMvNQpjaGltZXJpY2FsLzUKY2hpbW5leS8xNE1TCmNoaW1wLzE0TVMKY2hpbXBhbnplZS8xU00KY2hpbi8xNFNNCmNoaW5hLzFNCmNoaW5hd2FyZS8xTQpjaGluY2hpbGxhLzFNUwpjaGluZS8xNE1TCmNoaW5rLzE0R01EUwpjaGlubGVzcy81CmNoaW5uZWQvNDUKY2hpbm5pbmcvNApjaGluby8xTVMKY2hpbnN0cmFwLzFNUwpjaGludHovMU0KY2hpbnR6eS81UlQKY2hpbndhZy8xNFMKY2hpcC8xNFNNCmNoaXBib2FyZC8xCmNoaXBtdW5rLzE0U00KY2hpcG9sYXRhLzFTCmNoaXBwZWQvNDUKY2hpcHBlci81MTRNUwpjaGlwcGllLzEKY2hpcHBpbmcvNDFTCmNoaXBweS8xNTRTCmNoaXJvZ3JhcGh5LzFNCmNoaXJvcG9kaXN0LzFNUwpjaGlyb3BvZHkvMU0KY2hpcm9wcmFjdGljLzE1U00KY2hpcm9wcmFjdG9yLzFTTQpjaGlycC8xNEdNRFMKY2hpcnBpbHkvCmNoaXJweS81MVBUUgpjaGlycnVwLzQxR01EUwpjaGlzZWwvMTRaR01EUlMKY2hpc2VsZXIvMU0KY2hpdC8xNFNNCmNoaXRjaGF0LzE0U00KY2hpdGNoYXR0ZWQvNApjaGl0Y2hhdHRpbmcvNApjaGl0aW4vMU0KY2hpdGlub3VzLzUKY2hpdG9zYW4vMQpjaGl0dGVybGluZ3MvMU0KY2hpdmFscm91cy81UFkKY2hpdmFscm91c25lc3MvMU0KY2hpdmFscnkvMU0KY2hpdmUvMTRNUwpjaGl2eS8xNEdEUwpjaGxhbXlkaWEvMU1TCmNobGFteWRpYWUvMQpjaGxvcmFsLzFNCmNobG9yZGFuZS8xTQpjaGxvcmlkZS8xTVMKY2hsb3JpbmF0ZS80R05EUwpjaGxvcmluYXRpb24vMU0KY2hsb3JpbmUvMU0KY2hsb3JvZmx1b3JvY2FyYm9uLzFTTQpjaGxvcm9mb3JtLzE0U0dNRApjaGxvcm9waHlsbC8xTQpjaGxvcm9wbGFzdC8xTVMKY2htLwpjaG9jLzFTCmNob2NrLzE0R01EUwpjaG9ja2FibG9jay81CmNob2NvaG9saWMvMTVTTQpjaG9jb2xhdGUvMTU0TVMKY2hvY29sYXR5LzUKY2hvaWNlLzE1TVRSUwpjaG9pci8xNE1TCmNob2lyYm95LzFNUwpjaG9pcm1hc3Rlci8xU00KY2hva2UvNDFNWkdEUlMKY2hva2VjaGVycnkvMVNNCmNob2tlci8xTQpjaG9sZWN5c3RlY3RvbXkvMQpjaG9sZWN5c3RpdGlzLzEKY2hvbGVyLzFNCmNob2xlcmEvMU0KY2hvbGVyaWMvNTEKY2hvbGVzdGVyb2wvMU0KY2hvbXAvMTRaR01EUlMKY2hvb3NlLzQ3MVpHUlMKY2hvb3Nlci8xTQpjaG9vc2luZXNzLzFNCmNob29zeS81VFBSCmNob3AvMTRTTQpjaG9waG91c2UvMVNNCmNob3BwZWQvNTQKY2hvcHBlci8xNE1ER1MKY2hvcHBpbHkvCmNob3BwaW5lc3MvMU0KY2hvcHBpbmcvNDE1CmNob3BweS81VFBSCmNob3BzdGljay8xNFNNCmNob3JhbC81MU1ZUwpjaG9yYWxlLzFNUwpjaG9yZC8xNE1TCmNob3JkYWwvNQpjaG9yZGF0ZS8xNVNNCmNob3JlLzE0TVMKY2hvcmVhLzFNCmNob3Jlb2dyYXBoLzREUlpHCmNob3Jlb2dyYXBoZXIvMU0KY2hvcmVvZ3JhcGhpYy81CmNob3Jlb2dyYXBoaWNhbGx5LwpjaG9yZW9ncmFwaHMvNApjaG9yZW9ncmFwaHkvMU0KY2hvcmlzdGVyLzFTTQpjaG9yb2lkLzUxTVMKY2hvcnRsZS8xNE1aR0RSUwpjaG9ydGxlci8xTQpjaG9ydXMvMTRHTURTCmNob3NlLzQxCmNob3Nlbi80NQpjaG93LzE0U0dNRApjaG93ZGVyLzE0TVMKY2hyaXNtLzFNCmNocmlzdGVuLzRBU0dECmNocmlzdGVuaW5nLzE0TVMKY2hyaXN0aWFuLzE1VQpjaHJpc3RvbG9neQpjaHJvbWF0aWMvNQpjaHJvbWF0aWNhbGx5LwpjaHJvbWF0aW4vMU0KY2hyb21hdG9ncmFwaHkvMQpjaHJvbWUvMTRNR0RTCmNocm9taXVtLzFNCmNocm9tb3NvbWFsLzUKY2hyb21vc29tZS8xTVMKY2hyb25pYy81MQpjaHJvbmljYWxseS8KY2hyb25pY2xlLzE0RFJTTVpHCmNocm9uaWNsZXIvMU0KY2hyb25vZ3JhcGgvMTRNCmNocm9ub2dyYXBocy8xCmNocm9ub2xvZ2ljYWwvNVkKY2hyb25vbG9naXN0LzFNUwpjaHJvbm9sb2d5LzFTTQpjaHJvbm9tZXRlci8xU00KY2hyeXNhbGlzLzE0TVMKY2hyeXNhbnRoZW11bS8xTVMKY2h1Yi8xNFNNCmNodWJiaW5lc3MvMU0KY2h1YmJ5LzUxVFBSCmNodWNrLzE0R01EUwpjaHVja2hvbGUvMVNNCmNodWNrbGUvMTQ1TUdEUwpjaHVmZmVkLzQ1CmNodWcvMTRTTQpjaHVnZ2VkLzQKY2h1Z2dpbmcvNDEKY2h1a2thLzFNUwpjaHVtLzE0U00KY2h1bW1lZC80CmNodW1taWx5LwpjaHVtbWluZXNzLzFNCmNodW1taW5nLzQxCmNodW1teS81MVBUUgpjaHVtcC8xNE1TCmNodW5kZXIvMTRHRFMKY2h1bmsvMTRHTURTCmNodW5raW5lc3MvMU0KY2h1bmt5LzUxUFRSCmNodW50ZXIvNERHUwpjaHVyY2gvMTRNUwpjaHVyY2hnb2VyLzFTTQpjaHVyY2hnb2luZy81MU0KY2h1cmNobWFuLzFNCmNodXJjaG1lbi8xCmNodXJjaHdhcmRlbi8xTVMKY2h1cmNod29tYW4vMQpjaHVyY2h3b21lbi8xCmNodXJjaHlhcmQvMVNNCmNodXJsLzFNUwpjaHVybGlzaC81UFkKY2h1cmxpc2huZXNzLzFNCmNodXJuLzQxWkdNRFJTCmNodXJuZXIvMU0KY2h1dGUvMTRNUwpjaHV0bmV5LzFNUwpjaHV0enBhaC8xTQpjaHltZS8xTQpjaHlyb24vMTRNUwpjaWFiYXR0YS8xU00KY2lhby8xUwpjaWNhZGEvMU1TCmNpY2F0cmljZXMvMQpjaWNhdHJpeC8xTQpjaWNlcm9uZS8xNFNNCmNpY2Vyb25pLzEKY2lkZXIncwpjaWRlci8xUwpjaWdhci8xTVMKY2lnYXJldHRlLzE0TVMKY2lnYXJpbGxvLzFNUwpjaWxhbnRyby8xTQpjaWxpYS8xCmNpbGl1bS8xTQpjaW5jaC8xNEdNRFMKY2luY2hvbmEvMVNNCmNpbmN0dXJlLzE0U00KY2luZGVyLzE0R01EUwpjaW5lLzEKY2luZW1hLzFNUwpjaW5lbWF0aWMvNTEKY2luZW1hdG9ncmFwaGVyLzFNUwpjaW5lbWF0b2dyYXBoaWMvNQpjaW5lbWF0b2dyYXBoeS8xTQpjaW5uYWJhci8xNU0KY2lubmFtb24vMTVNCmNpcGhlcidzCmNpcGhlci8xNENHRFMKY2lyCmNpcmNhLysKY2lyY2FkaWFuLzUKY2lyY2xlLzE0TUdEUwpjaXJjbGV0LzFNUwpjaXJjdWl0LzE0TURHUwpjaXJjdWl0YWwvNQpjaXJjdWl0b3VzLzVZUApjaXJjdWl0b3VzbmVzcy8xTQpjaXJjdWl0cnkvMU0KY2lyY3VpdHkvMU0KY2lyY3VsYXIvNTE0U01ZCmNpcmN1bGFyaXR5LzFNCmNpcmN1bGFyaXplLzREU0cKY2lyY3VsYXRlLzRBRFNHCmNpcmN1bGF0aW9uLzFTTQpjaXJjdWxhdG9yeS81MQpjaXJjdW1jaXNlLzRYRFNHTgpjaXJjdW1jaXNlZC81NDFVCmNpcmN1bWNpc2lvbi8xTQpjaXJjdW1mZXJlbmNlLzE0TVMKY2lyY3VtZmVyZW50aWFsLzUKY2lyY3VtZmxleC8xNTRNUwpjaXJjdW1sb2N1dGlvbi8xTVMKY2lyY3VtbG9jdXRvcnkvNQpjaXJjdW1uYXZpZ2F0ZS80WEdORFMKY2lyY3VtbmF2aWdhdGlvbi8xTQpjaXJjdW1wb2xhci81CmNpcmN1bXNjcmliZS80R0RTCmNpcmN1bXNjcmlwdGlvbi8xTVMKY2lyY3Vtc3BlY3QvNVkKY2lyY3Vtc3BlY3Rpb24vMU0KY2lyY3Vtc3RhbmNlLzE0TUdEUwpjaXJjdW1zdGFudGlhbC81MVkKY2lyY3VtdmVudC80RFNHCmNpcmN1bXZlbnRpb24vMU0KY2lyY3VzLzE0TVMKY2lycXVlLzFNUwpjaXJyaG9zaXMvMU0KY2lycmhvdGljLzUxU00KY2lycmkvMQpjaXJydXMvMU0KY2lzLzUKY2lzZ2VuZGVyLzUxCmNpc3Rlcm4vMU1TCmNpdC8xCmNpdGFkZWwvMU1TCmNpdGF0aW9uLzFBTVMKY2l0ZSdzCmNpdGUvNDFJQUdTRApjaXRpZmllZC80NQpjaXRpemVuLzFNUwpjaXRpemVucnkvMU0KY2l0aXplbnNoaXAvMU0KY2l0cmljLzUKY2l0cm9uLzE1TVMKY2l0cm9uZWxsYS8xTQpjaXRydXMvMTVNUwpjaXR5LzFTTQpjaXR5d2lkZS81MQpjaXZldC8xTVMKY2l2aWMvNVMKY2l2aWNhbGx5LwpjaXZpY3MvMU0KY2l2aWwvNVVZCmNpdmlsaWFuLzE1TVMKY2l2aWxpdHkvMUlTTQpjaXZpbGl6YXRpb24vMTJNUwpjaXZpbGl6ZS80R0RTCmNpdmlsaXplZC81NFUKY2l2dmllcy8xTQpjawpjbC8KY2xhY2svMTRHTURTCmNsYWQvNDVVCmNsYWRkaW5nLzE0TQpjbGFkZS8xNApjbGFpbSdzCmNsYWltLzE0Q0tFQUdEUwpjbGFpbWFibGUvNTFBCmNsYWltYW50LzFNUwpjbGFpbWVkLzRVCmNsYWltZXIvMUVDU00KY2xhaXJ2b3lhbmNlLzFNCmNsYWlydm95YW50LzUxTVMKY2xhbS8xNDVTTQpjbGFtYmFrZS8xNTRNUwpjbGFtYmVyLzQxWkdNRFJTCmNsYW1iZXJlci8xTQpjbGFtbWVkLzQKY2xhbW1pbHkvCmNsYW1taW5lc3MvMU0KY2xhbW1pbmcvNDUKY2xhbW15LzVQVFIKY2xhbW9yLzE0R01EUwpjbGFtb3JvdXMvNQpjbGFtcC8xNEdNRFMKY2xhbXBkb3duLzFNUwpjbGFuLzFTTQpjbGFuZGVzdGluZS81WQpjbGFuZy8xNFpHTURSUwpjbGFuZ29yLzE0TQpjbGFuZ29yb3VzLzVZCmNsYW5rLzE0R01EUwpjbGFubmlzaC81UApjbGFubmlzaG5lc3MvMU0KY2xhbnNtYW4vMU0KY2xhbnNtZW4vMQpjbGFuc3dvbWFuLzEKY2xhbnN3b21lbi8xCmNsYXAvMTRTTQpjbGFwYm9hcmQvMTRNREdTCmNsYXBwZWQvNDUKY2xhcHBlci8xNE1TCmNsYXBwZXJib2FyZC8xNFMKY2xhcHBpbmcvNDFNCmNsYXB0cmFwLzFNCmNsYXF1ZS8xTVMKY2xhcmV0LzE1NE1TCmNsYXJpZmljYXRpb24vMU0KY2xhcmlmeS80WERTTkcKY2xhcmluZXQvMVNNCmNsYXJpbmV0aXN0LzFTTQpjbGFyaW9uLzE1NE1ER1MKY2xhcml0eS8xTQpjbGFzaC8xNEdNRFMKY2xhc3AncwpjbGFzcC8xNFVHRFMKY2xhc3MvMTQ1R01EUwpjbGFzc2ljLzUxTVMKY2xhc3NpY2FsLzUxTVkKY2xhc3NpY2lzbS8xTQpjbGFzc2ljaXN0LzFNUwpjbGFzc2lmaWFibGUvNQpjbGFzc2lmaWNhdGlvbi8xQ0FNCmNsYXNzaWZpY2F0aW9ucy8xCmNsYXNzaWZpZWQncwpjbGFzc2lmaWVkLzQ1MVUKY2xhc3NpZmllZHMvMQpjbGFzc2lmaWVyLzFNUwpjbGFzc2lmeS80QUNTREdOCmNsYXNzaW5lc3MvMU0KY2xhc3Npc20vMQpjbGFzc2xlc3MvNVAKY2xhc3NtYXRlLzFNUwpjbGFzc3Jvb20vMU1TCmNsYXNzd29yay8xTQpjbGFzc3kvNVRSUApjbGF0dGVyLzQxR01EUwpjbGF1c2FsLzUKY2xhdXNlLzE0TVMKY2xhdXN0cm9waG9iaWEvMU0KY2xhdXN0cm9waG9iaWMvNTEKY2xhdmljaG9yZC8xU00KY2xhdmljbGUvMU1TCmNsYXZpZXIvMU1TCmNsYXcncwpjbGF3LzE0Q1NHRApjbGF5LzE0TQpjbGF5ZXkvNQpjbGF5aWVyLzUKY2xheWllc3QvNQpjbGVhbi81MTRCSlBaVEdEUllTCmNsZWFuZXIvMTVNCmNsZWFuaW5nLzQxTQpjbGVhbmxpbmVzcy8xVU0KY2xlYW5seS81VVRQUgpjbGVhbm5lc3MvMVVNCmNsZWFuc2UvNDFaR0RSUwpjbGVhbnNlci8xTQpjbGVhbnVwLzE0TVMKY2xlYXIvNTQxSlBUR01EUllTCmNsZWFyYW5jZS8xU00KY2xlYXJoZWFkZWQvNQpjbGVhcmluZy80MU0KY2xlYXJpbmdob3VzZS8xU00KY2xlYXJuZXNzLzFNCmNsZWFyd2F5LzFTCmNsZWF0LzE0TVMKY2xlYXZhZ2UvMU1TCmNsZWF2ZS80MVpHRFJTCmNsZWF2ZXIvMU0KY2xlZi8xU00KY2xlZnQvMTQ1TVMKY2xlbWF0aXMvMU1TCmNsZW1lbmN5LzFJTQpjbGVtZW50LzVZCmNsZW1lbnRpbmUvMVMKY2xlbmNoLzQxR01EUwpjbGVyZXN0b3J5LzFTTQpjbGVyZ3kvMVNNCmNsZXJneW1hbi8xTQpjbGVyZ3ltZW4vMQpjbGVyZ3l3b21hbi8xTQpjbGVyZ3l3b21lbi8xCmNsZXJpYy8xNU1TCmNsZXJpY2FsLzUxWQpjbGVyaWNhbGlzbS8xTQpjbGVyay8xNEdNRFMKY2xlcmtzaGlwLzFNCmNsZXZlci81UFRSWQpjbGV2ZXJuZXNzLzFNCmNsZXZpcy8xTVMKY2xldy8xNFNHTUQKY2xpY2hlLzE0TURTCmNsaWNrLzE0QlpHTURSUwpjbGlja2JhaXQvMTQKY2xpY2tlci8xTQpjbGllbnQvMU1TCmNsaWVudGVsZS8xTVMKY2xpZmYvMU1TCmNsaWZmaGFuZ2VyLzFTTQpjbGlmZmhhbmdpbmcvNDUKY2xpZmZ0b3AvMVMKY2xpaQpjbGltYWN0ZXJpYy81MU0KY2xpbWFjdGljLzUKY2xpbWF0ZS8xNFNNCmNsaW1hdGljLzUKY2xpbWF0aWNhbGx5LwpjbGltYXRvbG9naXN0LzFTTQpjbGltYXRvbG9neS8xTQpjbGltYXgvMTRNRFNHCmNsaW1iLzQxU01EUlpHQgpjbGltYmVyLzE0TQpjbGltYmluZy8xNDVNCmNsaW1lLzE0U00KY2xpbmNoLzQxTURSU1pHCmNsaW5jaGVyLzFNCmNsaW5nLzE0U01SWkcKY2xpbmdlci8xTQpjbGluZ2ZpbG0vMQpjbGluZ3kvNVJUCmNsaW5pYy8xU00KY2xpbmljYWwvNTFZCmNsaW5pY2lhbi8xU00KY2xpbmsvMTRTTURSWkcKY2xpbmtlci8xNE0KY2xpb21ldHJpYy81UwpjbGlvbWV0cmljaWFuLzFNUwpjbGlvbWV0cmljcy8xTQpjbGlwLzQxU00KY2xpcGJvYXJkLzE0TVMKY2xpcHBlZC80NQpjbGlwcGVyLzE0U00KY2xpcHBpbmcvNDE1U00KY2xpcXVlLzE0U00KY2xpcXVleS81CmNsaXF1aXNoLzVZUApjbGlxdWlzaG5lc3MvMU0KY2xpdC8xNFNNCmNsaXRvcmFsLzUKY2xpdG9yaWRlcy8xCmNsaXRvcmlzLzFNUwpjbGl4CmNsb2FjYS8xTQpjbG9hY2FlLzEKY2xvYWsncwpjbG9hay8xNFVTREcKY2xvYWtyb29tLzFNUwpjbG9iYmVyLzQxU01ERwpjbG9jaGUvMVNNCmNsb2NrLzE0U01ERwpjbG9ja3dpc2UvNQpjbG9ja3dvcmsvMTVTTQpjbG9kLzE0TVMKY2xvZGRpc2gvNQpjbG9kaG9wcGVyLzFNUwpjbG9nJ3MKY2xvZy8xNFVTCmNsb2dnZWQvNDVVCmNsb2dnaW5nLzQxVQpjbG9pc29ubmUvMU0KY2xvaXN0ZXIvMTRTTURHCmNsb2lzdHJhbC81CmNsb21wLzE0U0RHCmNsb25hbC81CmNsb25lLzE0RFNNRwpjbG9uaWRpbmUvMQpjbG9uay8xNFNNREcKY2xvcC8xNE1TCmNsb3BwZWQvNApjbG9wcGluZy80MQpjbG9zZS80MTVEUlNNWVRHSlAKY2xvc2VyLzUxUwpjbG9zZWZpc3RlZC81CmNsb3NlbW91dGhlZC81CmNsb3NlbmVzcy8xTQpjbG9zZW91dC8xTVMKY2xvc2V0LzE1NFNNREcKY2xvc2V1cC8xU00KY2xvc2luZy8xNTRNCmNsb3N1cmUvMTRFU00KY2xvdC8xNE1TCmNsb3RoLzFNCmNsb3RoZS80VURTRwpjbG90aGVzaG9yc2UvMU1TCmNsb3RoZXNsaW5lLzE0U00KY2xvdGhlc3Bpbi8xNFNNCmNsb3RoaWVyLzFNUwpjbG90aGluZy80MU0KY2xvdGhzLzEKY2xvdHRlZC80NQpjbG90dGluZy80MQpjbG90dXJlLzE0U00KY2xvdWQvMTRTTURHCmNsb3VkYnVyc3QvMVNNCmNsb3VkZWQvNTRVCmNsb3VkaW5lc3MvMU0KY2xvdWRsZXNzLzUKY2xvdWR5LzVSUFQKY2xvdXQvMTRTTURHCmNsb3ZlLzE0UlNNWgpjbG92ZW4vNDUKY2xvdmVyLzFNCmNsb3ZlcmxlYWYvNTE0U00KY2xvdmVybGVhdmVzLzEKY2xvd24vMTRTTURHCmNsb3duaXNoLzVZUApjbG93bmlzaG5lc3MvMU0KY2xveS80REdTCmNsb3lpbmcvNDVZCmNsdWIvMTRNUwpjbHViYmFibGUvNQpjbHViYmVkLzQ1CmNsdWJiZXIvMVMKY2x1YmJpbmcvNDEKY2x1YmZlZXQvMQpjbHViZm9vdC8xTUQKY2x1YmhvdXNlLzFTTQpjbHVibGFuZC8xCmNsdWNrLzE0U01ERwpjbHVlLzE0TUdEUwpjbHVlbGVzcy81CmNsdW1wLzE0U01ERwpjbHVtcHkvNVRSCmNsdW1zaWx5LwpjbHVtc2luZXNzLzFNCmNsdW1zeS81MVRSUApjbHVuZy80NQpjbHVuay8xNFNNRFJaRwpjbHVua2VyLzFNCmNsdW5reS81VFIKY2x1c3Rlci8xNE1EU0cKY2x1dGNoLzQxNUdNRFMKY2x1dHRlcidzCmNsdXR0ZXIvMTRVRFNHCmNsdmkKY2x2aWkKY2x4aQpjbHhpaQpjbHhpdgpjbHhpeApjbHh2aQpjbHh2aWkKY20vCmNuaWRhcmlhbi8xTVMKY28vMThFU0QKY29hY2gvMTRNRFNHCmNvYWNobG9hZC8xUwpjb2FjaG1hbi8xTQpjb2FjaG1lbi8xCmNvYWNod29yay8xCmNvYWRqdXRvci8xTVMKY29hZ3VsYW50LzUxTVMKY29hZ3VsYXRlLzQ1MUdORFMKY29hZ3VsYXRpb24vMU0KY29hZ3VsYXRvci8xTVMKY29hbC8xNDVNREdTCmNvYWxlc2NlLzRHRFMKY29hbGVzY2VuY2UvMU0KY29hbGVzY2VudC81MQpjb2FsZmFjZS8xTVMKY29hbGZpZWxkLzFTCmNvYWxpdGlvbi8xTVMKY29hbGl0aW9uaXN0LzE1TVMKY29hbG1pbmUvMVMKY29hcnNlLzVSWVRQCmNvYXJzZW4vNFNERwpjb2Fyc2VuZXNzLzFNCmNvYXN0LzE0U01EUlpHCmNvYXN0YWwvNQpjb2FzdGVyLzFNCmNvYXN0Z3VhcmQvMVMKY29hc3RsaW5lLzFNUwpjb2F0LzE0TURHSlMKY29hdGluZy8xNE0KY29hdHJvb20vMVMKY29hdHRhaWwvMTRTTQpjb2F1dGhvci8xNE1ER1MKY29heC80MTVEUlNaRwpjb2F4ZXIvMU0KY29heGlhbC81MQpjb2F4aW5nLzQxNVkKY29iLzE0U00KY29iYWx0LzFNCmNvYmJlci8xUwpjb2JibGUvMTREUlNNWkcKY29iYmxlci8xTQpjb2JibGVzdG9uZS8xU00KY29ibnV0LzFTCmNvYnJhLzFTTQpjb2J3ZWIvMVNNCmNvYndlYmJlZC81CmNvYndlYmJ5LzVSVApjb2NhLzFNCmNvY2FpbmUvMU0KY29jY2kvMVMKY29jY3VzLzFNCmNvY2N5Z2VzLzEKY29jY3l4LzFNCmNvY2hpbmVhbC8xNU0KY29jaGxlYS8xU00KY29jaGxlYWUvMQpjb2NobGVhci81CmNvY2svMTQyTURHUwpjb2NrYWRlLzFTTQpjb2NrYW1hbWllLzE1CmNvY2thdGllbC8xTVMKY29ja2F0b28vMVNNCmNvY2thdHJpY2UvMVNNCmNvY2tjaGFmZXIvMVMKY29ja2Nyb3cvMVNNCmNvY2tlcmVsLzFTTQpjb2NrZXllZC81CmNvY2tmaWdodC8xNE1HUwpjb2NrZmlnaHRpbmcvMTRNCmNvY2tpbHkvCmNvY2tpbmVzcy8xTQpjb2NrbGUvMTRTTQpjb2NrbGVzaGVsbC8xU00KY29ja25leS8xNTJTTQpjb2NrcGl0LzFTTQpjb2Nrcm9hY2gvMU1TCmNvY2tzY29tYi8xU00KY29ja3N1Y2tlci8xTVMhNgpjb2Nrc3VyZS81CmNvY2t0YWlsLzE1NE1TCmNvY2t5LzUxNFJUUApjb2NvLzFNUwpjb2NvYS8xNVNNCmNvY29udXQvMVNNCmNvY29vbi8xNFNNREcKY29kLzE1NFNNCmNvZGEvMU1TCmNvZGRlZC80CmNvZGRpbmcvNDUKY29kZGxlLzQxRFNHCmNvZGUncwpjb2RlLzE0Q1pHRFJTCmNvZGVpbmUvMU0KY29kZXBlbmRlbmN5LzFNCmNvZGVwZW5kZW50LzUxU00KY29kZXIvMUNNCmNvZGV4LzFNCmNvZGZpc2gvMU1TCmNvZGdlci8xU00KY29kaWNlcy8xCmNvZGljaWwvMTRTTQpjb2RpZmljYXRpb24vMU0KY29kaWZpZXIvMU0KY29kaWZ5LzRYRFJTTlpHCmNvZG9uLzFTCmNvZHBpZWNlLzFNUwpjb2Rzd2FsbG9wLzEKY29lZC81MU1TCmNvZWR1Y2F0aW9uLzFNCmNvZWR1Y2F0aW9uYWwvNQpjb2VmZmljaWVudC81MU1TCmNvZWxlbnRlcmF0ZS8xTVMKY29lbnp5bWUvMQpjb2VxdWFsLzUxTVlTCmNvZXJjZS80RFJTWkdOVgpjb2VyY2VyLzFNCmNvZXJjaW9uLzFNCmNvZXZhbC81MVNNWQpjb2V4aXN0LzREU0cKY29leGlzdGVuY2UvMU0KY29leGlzdGVudC81MQpjb2V4dGVuc2l2ZS81CmNvZmZlZS8xNTRTTQpjb2ZmZWVjYWtlLzFTTQpjb2ZmZWVob3VzZS8xTVMKY29mZmVlbWFrZXIvMVNNCmNvZmZlZXBvdC8xTVMKY29mZmVyLzE0U00KY29mZmVyZGFtLzFNUwpjb2ZmaW4vMTRTTURHCmNvZy8xNFNNCmNvZ2VuY3kvMU0KY29nZW50LzVZCmNvZ2l0YXRlLzREU1hHTlYKY29naXRhdGlvbi8xTQpjb2dpdGF0b3IvMU1TCmNvZ25hYy8xU00KY29nbmF0ZS81MU1TCmNvZ25pdGlvbi8xQU0KY29nbml0aW9uYWwvNQpjb2duaXRpdmUvNTFZCnN1YmNvZ25pdGl2ZS81MVkKY29nbml6YWJsZS81CmNvZ25pemFuY2UvMUFNCmNvZ25pemFudC81CmNvZ25vbWVuLzFTTQpjb2dub3NjZW50ZS8xTQpjb2dub3NjZW50aS8xCmNvZ3doZWVsLzFTTQpjb2hhYml0LzRTR0QKY29oYWJpdGFudC8xTVMKY29oYWJpdGF0aW9uLzFNCmNvaGVpci8xU00KY29oZXJlLzREU0cKY29oZXJlbmNlLzFJTQpjb2hlcmVuY3kvMU0KY29oZXJlbnQvNUlZCmNvaGVzaW9uLzFNCmNvaGVzaXZlLzUxWVAKY29oZXNpdmVuZXNzLzFNCmNvaG8vMU1TCmNvaG9ydC8xNFNNCmNvaWYvMTRNUwpjb2lmZmVkLzQKY29pZmZpbmcvNApjb2lmZnVyZS8xNERTTUcKY29pbCdzL0EKY29pbC8xNFVBREdTCmNvaW4vMTRNRFJaR1MKY29pbmFnZS8xU00KY29pbmNpZGUvNERTRwpjb2luY2lkZW5jZS8xTVMKY29pbmNpZGVudC81MQpjb2luY2lkZW50YWwvNVkKY29pbmVyLzFNCmNvaW5zdXJhbmNlLzFNCmNvaXIvMQpjb2l0YWwvNQpjb2l0dXMvMU0KY29rZS8xNE1HRFMKY29sLzFTCmNvbGEvMU1TCmNvbGFuZGVyLzFTTQpjb2xkLzUxTVJZVFBTCmNvbGRibG9vZGVkLzUKY29sZG5lc3MvMU0KY29sZXNsYXcvMU0KY29sZXVzLzFNUwpjb2xleS8xUwpjb2xpYy8xNU0KY29saWNreS81CmNvbGlzZXVtLzFNUwpjb2xpdGlzLzFNCmNvbGwvNApjb2xsYWJvcmF0ZS80RFNYR05WCmNvbGxhYm9yYXRpb24vMU0KY29sbGFib3JhdGlvbmlzdC8xCmNvbGxhYm9yYXRpdmUvNTFZCmNvbGxhYm9yYXRvci8xTVMKY29sbGFnZS8xNFNNCmNvbGxhZ2VuLzEKY29sbGFwc2UvNDFNR0RTCmNvbGxhcHNpYmxlLzUxCmNvbGxhci8xNFNNREcKY29sbGFyYm9uZS8xU00KY29sbGFyZC8xU00KY29sbGFybGVzcy81CmNvbGxhdGUvNERTWEdOCmNvbGxhdGVyYWwvNTFNWQpjb2xsYXRlcmFsaXplLzQKY29sbGF0aW9uLzE0TQpjb2xsYXRvci8xTVMKY29sbGVhZ3VlLzE0TVMKY29sbGVjdCdzCmNvbGxlY3QvNDUxQVNHVkQKY29sbGVjdGVkLzU0VQpjb2xsZWN0ZWRseS8KY29sbGVjdGlibGUvNTFTTQpjb2xsZWN0aW9uLzFBTVMKY29sbGVjdGl2ZS81MU1ZUwpjb2xsZWN0aXZpc20vMU0KY29sbGVjdGl2aXN0LzUxU00KY29sbGVjdGl2aXphdGlvbi8xTQpjb2xsZWN0aXZpemUvNERTRwpjb2xsZWN0b3IvMU1TCmNvbGxlZW4vMVNNCmNvbGxlZ2UvMVNNCmNvbGxlZ2lhbGl0eS8xTQpjb2xsZWdpYW4vMTVNUwpjb2xsZWdpYXRlLzUxCmNvbGxpZGUvNERSU1pHCmNvbGxpZS8xUlNNWgpjb2xsaWVyLzFNCmNvbGxpZXJ5LzFTTQpjb2xsaXNpb24vMVNNCmNvbGxvY2F0ZS80MTVNR05EU1gKY29sbG9jYXRpb24vMU0KY29sbG9pZC81MVNNCmNvbGxvaWRhbC81CmNvbGxvcS8xNQpjb2xsb3F1aWFsLzUxWQpjb2xsb3F1aWFsaXNtLzFTTQpjb2xsb3F1aWVzLzE0CmNvbGxvcXVpdW0vMU1TCmNvbGxvcXV5LzE0TQpjb2xsdWRlLzREU0cKY29sbHVzaW9uLzFNCmNvbGx1c2l2ZS81CmNvbG9nbmUvMVNNCmNvbG9uLzFTTQpjb2xvbmVsLzE0U00KY29sb25lbGN5LzFNCmNvbG9uZXMvMQpjb2xvbmlhbC81MVNNWQpjb2xvbmlhbGlzbS8xTQpjb2xvbmlhbGlzdC81MU1TCmNvbG9uaXN0LzFTTQpjb2xvbml6YXRpb24vMUFDTQpjb2xvbml6ZS80Q0FHU0QKY29sb25pemVyLzFNUwpjb2xvbm5hZGUvMU1EUwpjb2xvbm9zY29weS8xU00KY29sb255LzE0U00KY29sb3Bob24vMVNNCmNvbG9yJ3MKY29sb3IvMTU0QUVHRFMKY29sb3JhbnQvMVNNCmNvbG9yYXRpb24vMUVNCmNvbG9yYXR1cmEvMTVNUwpjb2xvcmJsaW5kLzVQCmNvbG9yYmxpbmRuZXNzLzFNCmNvbG9yZWQncwpjb2xvcmVkLzUxNFUKY29sb3JlZHMvMQpjb2xvcmZhc3QvNVAKY29sb3JmYXN0bmVzcy8xTQpjb2xvcmZ1bC81UFkKY29sb3JmdWxuZXNzLzFNCmNvbG9yaW5nJ3MKY29sb3Jpc3QvMVMKY29sb3JpemF0aW9uLzFNCmNvbG9yaXplLzREU0cKY29sb3JsZXNzLzVQWQpjb2xvcmxlc3NuZXNzLzFNCmNvbG9yd2F5LzFTCmNvbG9zc2FsLzVZCmNvbG9zc2kvMQpjb2xvc3N1cy8xTQpjb2xvc3RvbXkvMVNNCmNvbG9zdHJ1bS8xTQpjb2x0LzE0TVMKY29sdGlzaC81CmNvbHVtYmluZS8xNVNNCmNvbHVtbi8xU01ECmNvbHVtbmFyLzUKY29sdW1uaXN0LzFTTQpjb20vMTVKTApjb21hLzFNUwpjb21ha2VyLzFTTQpjb21hdG9zZS81NApjb21iLzE0TURSWkdKUwpjb21iYXQvMTRTTURHVgpjb21iYXRhbnQvMTVTTQpjb21iYXRpdmVuZXNzLzFNCmNvbWJlZC81NFUKY29tYmVyLzFNCmNvbWJpbmF0aW9uLzFTTQpjb21iaW5lJ3MKY29tYmluZS80MUFEU0cKY29tYmluZWQvNTQxVQpjb21iaW5lci8xTVMKY29tYmluZ3MvMU0KY29tYm8vMTRTTQpjb21idXN0LzQ1MVNHVkQKY29tYnVzdGliaWxpdHkvMU0KY29tYnVzdGlibGUvNTFNUwpjb21idXN0aW9uLzFNCmNvbWUvNDErSU1aR1JTfgpjb21lYmFjay8xNE1TCmNvbWVkaWFuLzFNUwpjb21lZGljLzUKY29tZWRpZW5uZS8xTVMKY29tZWRvd24vMU1TCmNvbWVkeS8xU00KY29tZWxpbmVzcy8xTQpjb21lbHkvNTRSUFQKY29tZXIncwpjb21lc3RpYmxlLzUxU00KY29tZXQvMVNNCmNvbWV1cHBhbmNlLzFTTQpjb21maXQncwpjb21maXQvMTRFUwpjb21mb3J0LzE0RVNNREcKY29tZm9ydGFibGUvNTFQCmNvbWZvcnRhYmxlbmVzcy8xTQpjb21mb3J0YWJseS9VCmNvbWZvcnRlci8xTVMKY29tZm9ydGluZy81NDFZCmNvbWZvcnRsZXNzLzUKY29tZnkvNVJUCmNvbWljLzUxU00KY29taWNhbC81WQpjb21pY2FsaXR5LzFNCmNvbWluZy80MTVNCmNvbWl0eS8xTQpjb21tLzEKY29tbWEvMTRTTQpjb21tYW5kLzE0U01EUkxaRwpjb21tYW5kYW50LzFNUwpjb21tYW5kZWVyLzRHRFMKY29tbWFuZGVyLzFNCmNvbW1hbmRtZW50LzFNUwpjb21tYW5kby8xU00KY29tbWVtb3JhdGUvNFhHTlZEUwpjb21tZW1vcmF0aW9uLzFNCmNvbW1lbW9yYXRvci8xTVMKY29tbWVuY2UvNEFEU0xHCmNvbW1lbmNlbWVudC8xQU0KY29tbWVuY2VtZW50cy8xCmNvbW1lbmQvNDFBU0RCRwpjb21tZW5kYWJseS8KY29tbWVuZGF0aW9uLzFBTVMKY29tbWVuZGF0b3J5LzUxCmNvbW1lbnN1cmFibGUvNQpjb21tZW5zdXJhdGUvNTRJWQpjb21tZW50LzE0R1NNRApjb21tZW50YXJ5LzFTTQpjb21tZW50YXRlLzREU0cKY29tbWVudGF0b3IvMVNNCmNvbW1lcmNlLzE0TQpjb21tZXJjaWFsLzE1U01ZCmNvbW1lcmNpYWxpc20vMU0KY29tbWVyY2lhbGl6YXRpb24vMU0KY29tbWVyY2lhbGl6ZS80R0RTCmNvbW1pZS8xNVNNCmNvbW1pbmdsZS80RFNHCmNvbW1pc2VyYXRlLzU0R05WRFNYCmNvbW1pc2VyYXRpb24vMU0KY29tbWlzc2FyLzFTTQpjb21taXNzYXJpYXQvMVNNCmNvbW1pc3NhcnkvMVNNCmNvbW1pc3Npb24ncwpjb21taXNzaW9uLzE0QUNTR0QKY29tbWlzc2lvbmFpcmUvMVMKY29tbWlzc2lvbmVyLzFTTQpjb21taXQvNDFBUwpjb21taXRtZW50LzFNUwpjb21taXR0YWwvMTVTTQpjb21taXR0ZWQvNDVBVQpjb21taXR0ZWUvMVNNCmNvbW1pdHRlZW1hbi8xTQpjb21taXR0ZWVtZW4vMQpjb21taXR0ZWV3b21hbi8xTQpjb21taXR0ZWV3b21lbi8xCmNvbW1pdHRlci8xUwpjb21taXR0aW5nLzQxQQpjb21tb2RlJ3MKY29tbW9kZS8xRUlTCmNvbW1vZGlmaWNhdGlvbi8xCmNvbW1vZGlvdXMvNVkKY29tbW9kaXR5LzFTTQpjb21tb2RvcmUvMVNNCmNvbW1vbidzCmNvbW1vbi81MTRVUFJZVApjb21tb25hbGl0eS8xUwpjb21tb25hbHR5LzFNCmNvbW1vbmVyLzUxTVMKY29tbW9ubmVzcy8xVU0KY29tbW9ucGxhY2UvNTE0TVMKY29tbW9ucy8xNApjb21tb25zZW5zZS81MQpjb21tb253ZWFsLzFNSApjb21tb253ZWFsdGgvMU0KY29tbW9ud2VhbHRocy8xCmNvbW1vdGlvbi8xU00KY29tbXVuYWwvNVkKY29tbXVuZS8xNFhEU01HTgpjb21tdW5pY2FiaWxpdHkvMU0KY29tbXVuaWNhYmxlLzVJCmNvbW11bmljYWJseS8KY29tbXVuaWNhbnQvMTVNUwpjb21tdW5pY2F0ZS80R05WRFNYCmNvbW11bmljYXRpb24vMU0KY29tbXVuaWNhdGl2ZS81VQpjb21tdW5pY2F0b3IvMVNNCmNvbW11bmlvbi8xTQpjb21tdW5pcXVlLzFTTQpjb21tdW5pc20vMU0KY29tbXVuaXN0LzUxU00KY29tbXVuaXN0aWMvNQpjb21tdW5pdHkvMVNNCmNvbW11dGF0aW9uLzFNUwpjb21tdXRhdGl2ZS81CmNvbW11dGF0aXZpdHkvMQpjb21tdXRhdG9yLzFTTQpjb21tdXRlLzQxQkRSU01aRwpjb21tdXRlci8xTQpjb21vcmJpZGl0eS8xCmNvbXAvNTE0TURZR1MKY29tcGFjdC8xNDVUR1NNRFJZUApjb21wYWN0aW9uLzEKY29tcGFjdG5lc3MvMU0KY29tcGFjdG9yLzFTTQpjb21wYW5pb24vMTRTQk0KY29tcGFuaW9uYWJseS8KY29tcGFuaW9uc2hpcC8xTQpjb21wYW5pb253YXkvMU1TCmNvbXBhbnkvMTRTTQpjb21wYXJhYmlsaXR5LzFNCmNvbXBhcmFibGUvNTFJCmNvbXBhcmFibHkvSQpjb21wYXJhdGl2ZS81MU1ZUwpjb21wYXJlLzQxQkRTRwpjb21wYXJpc29uLzFNUwpjb21wYXJ0bWVudC8xNFNNCmNvbXBhcnRtZW50YWwvNQpjb21wYXJ0bWVudGFsaXphdGlvbi8xTQpjb21wYXJ0bWVudGFsaXplLzREU0cKY29tcGFzcy8xNEdNRFMKY29tcGFzc2lvbi8xNE0KY29tcGFzc2lvbmF0ZS81NFkKY29tcGF0aWJpbGl0eS8xSU0KY29tcGF0aWJsZS81MUlNUwpjb21wYXRpYmx5L0kKY29tcGF0cmlvdC8xNU1TCmNvbXBlZXIvMTRTTQpjb21wZWwvNFMKY29tcGVsbGVkLzU0CmNvbXBlbGxpbmcvNDUxWQpjb21wZW5kaW91cy81CmNvbXBlbmRpdW0vMVNNCmNvbXBlbnNhdGUvNERTWEdOCmNvbXBlbnNhdGVkLzU0VQpjb21wZW5zYXRpb24vMU0KY29tcGVuc2F0b3J5LzUKY29tcGVyZS8xNERTRwpjb21wZXRlLzREU0cKY29tcGV0ZW5jZS8xSU0KY29tcGV0ZW5jZXMvMQpjb21wZXRlbmNpZXMvMQpjb21wZXRlbmN5LzFJTQpjb21wZXRlbnQvNUlZCmNvbXBldGl0aW9uLzFTTQpjb21wZXRpdGl2ZS81UFkKY29tcGV0aXRpdmVuZXNzLzFNCmNvbXBldGl0b3IvMVNNCmNvbXBpbGF0aW9uLzFTTQpjb21waWxlLzQxRFJTWkcKY29tcGlsZXIvMU0KY29tcGxhY2VuY2UvMU0KY29tcGxhY2VuY3kvMU0KY29tcGxhY2VudC81WQpjb21wbGFpbi80RFJaR1MKY29tcGxhaW5hbnQvMU1TCmNvbXBsYWluZXIvMU0KY29tcGxhaW50LzFTTQpjb21wbGFpc2FuY2UvMU0KY29tcGxhaXNhbnQvNVkKY29tcGxlY3RlZC80NQpjb21wbGVtZW50LzE0U0dNRApjb21wbGVtZW50YXJ5LzUxCmNvbXBsZXRlLzQ1MVBZVEdOWERSUwpjb21wbGV0ZWQvNDVVCmNvbXBsZXRlbmVzcy8xSU0KY29tcGxldGlvbi8xTQpjb21wbGV4LzUxNE1TWQpjb21wbGV4aW9uLzE0TURTCmNvbXBsZXhpb25hbC81CmNvbXBsZXhpdHkvMVNNCmNvbXBsaWFuY2UvMU0KY29tcGxpYW50LzVZCmNvbXBsaWNhdGUvNDVHRFMKY29tcGxpY2F0ZWQvNTRZCmNvbXBsaWNhdGlvbi8xTQpjb21wbGljaXQvNQpjb21wbGljaXR5LzFNCmNvbXBsaW1lbnQvMTRNREdTCmNvbXBsaW1lbnRhcnkvNVUKY29tcGx5LzRORFNYRwpjb21wby8xUwpjb21wb25lbnQvMTVTTQpjb21wb3J0LzQxTFNHRApjb21wb3J0bWVudC8xTQpjb21wb3NlLzRBRUNHU0QKY29tcG9zZWRseS8KY29tcG9zZXIvMU1TCmNvbXBvc2l0ZS81MTRNWUdOWERTCmNvbXBvc2l0aW9uLzFDTQpjb21wb3NpdGlvbmFsLzUKY29tcG9zaXRvci8xU00KY29tcG9zdC8xNFNHTUQKY29tcG9zdXJlLzFFTQpjb21wb3RlLzFTTQpjb21wb3VuZC8xNTRHTURCUwpjb21wb3VuZGVkLzU0VQpjb21wcmVoZW5kLzRTREcKY29tcHJlaGVuc2liaWxpdHkvMUlNCmNvbXByZWhlbnNpYmxlLzVJCmNvbXByZWhlbnNpYmx5L0kKY29tcHJlaGVuc2lvbi8xSU0KY29tcHJlaGVuc2lvbnMvMQpjb21wcmVoZW5zaXZlLzUxUE1ZUwpjb21wcmVoZW5zaXZlbmVzcy8xTQpjb21wcmVzcydzCmNvbXByZXNzLzQxQ0dWRFMKY29tcHJlc3NlZC81NFUKY29tcHJlc3NpYmxlLzUKY29tcHJlc3Npb24vMUNNCmNvbXByZXNzb3IvMVNNCmNvbXByaXNlLzRHRFMKY29tcHJvbWlzZS8xNE1HRFMKY29tcHRyb2xsZXIvMU1TCmNvbXB1bHNpb24vMU1TCmNvbXB1bHNpdmUvNTFZUApjb21wdWxzaXZlbmVzcy8xTQpjb21wdWxzb3JpbHkvCmNvbXB1bHNvcnkvNTFTTQpjb21wdW5jdGlvbi8xU00KY29tcHV0YXRpb24vMVNNCmNvbXB1dGF0aW9uYWwvNVkKY29tcHV0ZS80MUFEU0cKY29tcHV0ZXIvMTRNUwpjb21wdXRlcmF0ZS81CmNvbXB1dGVyaXphdGlvbi8xTQpjb21wdXRlcml6ZS80R0RTCmNvbXB1dGluZy8xNE0KY29tcmFkZS8xNFNNWQpjb21yYWRlc2hpcC8xTQpjb24vNDE1R1NNCmNvbmNhdGVuYXRlLzQ1WERTR04KY29uY2F0ZW5hdGlvbi8xTQpjb25jYXZlLzUxNFlQCmNvbmNhdmVuZXNzLzFNCmNvbmNlYWwvNFNEUlpHQkwKY29uY2VhbGVkLzQ1VQpjb25jZWFsZXIvMU0KY29uY2VhbG1lbnQvMU0KY29uY2VpdC8xNFNNRApjb25jZWl0ZWQvNTRQWQpjb25jZWl0ZWRuZXNzLzFNCmNvbmNlaXZhYmxlLzVJCmNvbmNlaXZhYmx5L0kKY29uY2VpdmUvNERTR0IKY29uY2VudHJhdGUvNDFEU01HTlgKY29uY2VudHJhdGlvbi8xTQpjb25jZW50cmljLzUKY29uY2VudHJpY2FsbHkvCmNvbmNlcHQvMTRTTQpjb25jZXB0aW9uLzFTTQpjb25jZXB0aW9uYWwvNQpjb25jZXB0dWFsLzVZCmNvbmNlcHR1YWxpemF0aW9uLzFNUwpjb25jZXB0dWFsaXplLzREU0cKY29uY2Vybi8xNFVNRApjb25jZXJuZWQvNTRVWQpjb25jZXJuaW5nLzUrNDEKY29uY2VybnMvMTQKY29uY2VydCdzCmNvbmNlcnQvNDFFU0RHCmNvbmNlcnRlZC80NVkKY29uY2VydGdvZXIvMVMKY29uY2VydGluYS8xNFNHTUQKY29uY2VydGl6ZS80RFNHCmNvbmNlcnRtYXN0ZXIvMU1TCmNvbmNlcnRvLzFTTQpjb25jZXNzaW9uYWlyZS8xTVMKY29uY2Vzc2lvbmFsLzUKY29uY2Vzc2lvbmFyeS8xNQpjb25jaC8xNE0KY29uY2hpZS8xUwpjb25jaHMvMQpjb25jaWVyZ2UvMU1TCmNvbmNpbGlhdGUvNERTR04KY29uY2lsaWF0aW9uLzFBTQpjb25jaWxpYXRvci8xU00KY29uY2lsaWF0b3J5LzUKY29uY2lzZS81NFJQWVROCmNvbmNpc2VuZXNzLzFNCmNvbmNpc2lvbi8xTQpjb25jbGF2ZS8xU00KY29uY2x1ZGUvNERTRwpjb25jbHVzaW9uLzFNUwpjb25jbHVzaXZlLzVJWVAKY29uY2x1c2l2ZW5lc3MvMUlNCmNvbmNvY3QvNDE1U0RHCmNvbmNvY3Rpb24vMU1TCmNvbmNvbWl0YW50LzUxTVlTCmNvbmNvcmQvMTRNCmNvbmNvcmRhbmNlLzE0U00KY29uY29yZGFudC81CmNvbmNvcmRhdC8xU00KY29uY291cnNlLzFTTQpjb25jcmV0ZS81MTREU1BNWUdOWApjb25jcmV0ZW5lc3MvMU0KY29uY3JldGlvbi8xTQpjb25jdWJpbmFnZS8xTQpjb25jdWJpbmUvMU1TCmNvbmN1cGlzY2VuY2UvMU0KY29uY3VwaXNjZW50LzUKY29uY3VyLzRTCmNvbmN1cnJlZC80CmNvbmN1cnJlbmNlLzFTTQpjb25jdXJyZW5jeS8xCmNvbmN1cnJpbmcvNApjb25jdXNzLzRWCmNvbmN1c3Npb24vMVNNCmNvbmRlbW4vNFNEUlpHCmNvbmRlbW5hdGlvbi8xTVMKY29uZGVtbmF0b3J5LzUKY29uZGVtbmVyLzFNCmNvbmRlbnNhdGUvMTQ1TU5YUwpjb25kZW5zYXRpb24vMU0KY29uZGVuc2UvNDVEUlNaRwpjb25kZW5zZXIvMU0KY29uZGVzY2VuZGluZy81NFkKY29uZGVzY2Vuc2lvbi8xTQpjb25kaWduLzUKY29uZGltZW50LzE0TVMKY29uZGl0aW9uJ3MKY29uZGl0aW9uLzE0QUdTRApjb25kaXRpb25hbC81MVNNWQpjb25kaXRpb25hbGl0eS8xCmNvbmRpdGlvbmVkLzQ1VQpjb25kaXRpb25lci8xU00KY29uZGl0aW9uaW5nLzE0TQpjb25kby8xU00KY29uZG9sZW5jZS8xU00KY29uZG9tLzFTTQpjb25kb21pbml1bS8xTVMKY29uZG9uZS80RFNHCmNvbmRvci8xU00KY29uZHVjZS80RFNHVgpjb25kdWN0LzE0TURHVgpjb25kdWN0YW5jZS8xTQpjb25kdWN0aWJpbGl0eS8xTQpjb25kdWN0aWJsZS81CmNvbmR1Y3Rpb24vMU0KY29uZHVjdGl2aXR5LzFNCmNvbmR1Y3Rvci8xTVMKY29uZHVjdHJlc3MvMU1TCmNvbmR1aXQvMVNNCmNvbmUvMTRNCmNvbmV5cy8xCmNvbmZhYi8xNFNNCmNvbmZhYmJlZC80CmNvbmZhYmJpbmcvNApjb25mYWJ1bGF0ZS80WERTR04KY29uZmFidWxhdGlvbi8xTQpjb25mZWN0aW9uLzE0U1pNUgpjb25mZWN0aW9uZXIvMU0KY29uZmVjdGlvbmVyeS8xU00KY29uZmVkZXJhY3kvMVNNCmNvbmZlZGVyYXRlLzE1NE0KY29uZmVyLzRTCmNvbmZlcmVlLzFTTQpjb25mZXJlbmNlLzE0TUdTCmNvbmZlcnJhYmxlLzUKY29uZmVycmFsLzFNCmNvbmZlcnJlZC80CmNvbmZlcnJlci8xTVMKY29uZmVycmluZy80MQpjb25mZXNzZWQvNDVZCmNvbmZlc3Npb24vMVNNCmNvbmZlc3Npb25hbC81MVNNCmNvbmZlc3Nvci8xTVMKY29uZmV0dGkvMTRNCmNvbmZpZGFudC8xTVMKY29uZmlkYW50ZS8xU00KY29uZmlkZS80RFJTWkcKY29uZmlkZW5jZS8xU00KY29uZmlkZW50LzUxWQpjb25maWRlbnRpYWwvNVkKY29uZmlkZW50aWFsaXR5LzFNCmNvbmZpZGVyLzFNCmNvbmZpZGluZy80NTFZCmNvbmZpZ3VyYXRpb24vMVMKY29uZmlndXJlLzRCCmNvbmZpbmVkLzQ1VQpjb25maW5lbWVudC8xTVMKY29uZmlybS80QVNERwpjb25maXJtYXRpb24vMUFTTQpjb25maXJtYXRvcnkvNQpjb25maXJtZWQvNDVVCmNvbmZpc2NhdGUvNDVEU0dOWApjb25maXNjYXRpb24vMU0KY29uZmlzY2F0b3IvMVNNCmNvbmZpc2NhdG9yeS81CmNvbmZsYWdyYXRpb24vMU1TCmNvbmZsYXRlLzQ1MVhEU0dOCmNvbmZsYXRpb24vMU0KY29uZmxpY3QvMTRTR01ECmNvbmZsdWVuY2UvMU1TCmNvbmZsdWVudC81MQpjb25mb3JtLzRaQgpjb25mb3JtYWJsZS81VQpjb25mb3JtYWwvNQpjb25mb3JtYW5jZS8xTQpjb25mb3JtaXNtLzFNCmNvbmZvcm1pc3QvMTVTTQpjb25mb3JtaXR5LzFNCmNvbmZyZXJlLzFNUwpjb25mcm9udGF0aW9uLzFTTQpjb25mcm9udGF0aW9uYWwvNQpjb25mdXNlLzRSWgpjb25mdXNlZC80NVkKY29uZnVzaW5nLzU0WQpjb25mdXRhdGlvbi8xTQpjb25mdXRlLzREU0cKY29uZ2EvMTRTTURHCmNvbmdlYWwvNFNMREcKY29uZ2VhbG1lbnQvMU0KY29uZ2VyLzFTTQpjb25nZXJpZXMvMU0KY29uZ2VzdC8xNFNER1YKY29uZ2VzdGlvbi8xTQpjb25nbG9tZXJhdGUvMTU0RFNYTUdOCmNvbmdsb21lcmF0aW9uLzFNCmNvbmdyYXRzLzFNCmNvbmdyYXR1bGF0ZS80WEdORFMKY29uZ3JhdHVsYXRpb24vMU0KY29uZ3JhdHVsYXRvcnkvNQpjb25ncmVnYW50LzFNUwpjb25ncmVnYXRlLzU0R05EU1gKY29uZ3JlZ2F0aW9uLzFNCmNvbmdyZWdhdGlvbmFsLzUKY29uZ3JlZ2F0aW9uYWxpc20vMU0KY29uZ3JlZ2F0aW9uYWxpc3QvNTFNUwpjb25ncmVzcy8xNE1TCmNvbmdyZXNzaW9uYWwvNQpjb25ncmVzc21hbi8xTQpjb25ncmVzc21lbi8xCmNvbmdyZXNzcGVvcGxlLzEKY29uZ3Jlc3NwZXJzb24vMU1TCmNvbmdyZXNzd29tYW4vMU0KY29uZ3Jlc3N3b21lbi8xCmNvbmdydWVuY2UvMU0KY29uZ3J1ZW50LzVZCmNvbmdydWl0eS8xSVNNCmNvbmdydW91cy81CmNvbmljLzUxU00KY29uaWNhbC81MVkKY29uaWZlci8xU00KY29uaWZlcm91cy81CmNvbmplY3R1cmFsLzUxCmNvbmplY3R1cmUvMTRNR0RTCmNvbmpvaW50LzUKY29uanVnYWwvNVkKY29uanVnYXRlLzQxNURTWEdOCmNvbmp1Z2F0aW9uLzFNCmNvbmp1bmN0LzE1Vk1TCmNvbmp1bmN0aXZhLzFTTQpjb25qdW5jdGl2ZS81MVNNCmNvbmp1bmN0aXZpdGlzLzFNCmNvbmp1cmF0aW9uLzFNUwpjb25qdXJlLzQxRFJTWkcKY29uanVyZXIvMU0KY29uay8xNE1EUloKY29ubWFuLzEKY29ubmVjdC80MUFFRFZHUwpjb25uZWN0YWJsZS81CmNvbm5lY3RlZC81NFUKY29ubmVjdGlvbi8xRU1TCmNvbm5lY3RpdmUvNTFNUwpjb25uZWN0aXZpdHkvMU0KY29ubmVjdG9yLzFNUwpjb25uZWQvNApjb25uaW5nLzQxCmNvbm5pcHRpb24vMU1TCmNvbm5pdmFuY2UvMU0KY29ubml2ZS80RFJTWkcKY29ubml2ZXIvMU0KY29ubm9pc3NldXIvMVNNCmNvbm5vdGF0aXZlLzUKY29ubnViaWFsLzUKY29ucXVlci80QVNERwpjb25xdWVyYWJsZS81VQpjb25xdWVyZWQvNFUKY29ucXVlcm9yLzFNUwpjb25xdWVzdC8xNEFNCmNvbnF1aXN0YWRvci8xU00KY29ucy8xNERTRwpjb25zYW5ndWluZW91cy81CmNvbnNhbmd1aW5pdHkvMU0KY29uc2NpZW5jZWxlc3MvNQpjb25zY2llbnRpb3VzLzVQWQpjb25zY2llbnRpb3VzbmVzcy8xTQpjb25zY2lvdXMvNTFVWVAKY29uc2Npb3VzbmVzcy8xVU0KY29uc2Npb3VzbmVzc2VzLzEKY29uc2NyaXB0aW9uLzFNCmNvbnNlY3JhdGUvNDVBRFNHTgpjb25zZWNyYXRlZC80VQpjb25zZWNyYXRpb24vMUFNCmNvbnNlY3JhdGlvbnMvMQpjb25zZWN1dGl2ZS81MVkKY29uc2Vuc3VhbC81CmNvbnNlbnN1cy8xNE1TCmNvbnNlbnQvNDFTTURHCmNvbnNlcXVlbmNlLzE0U00KY29uc2VxdWVudC81MVkKY29uc2VxdWVudGlhbC81SVkKY29uc2VydmFuY3kvMVNNCmNvbnNlcnZhdGlvbi8xTQpjb25zZXJ2YXRpb25pc20vMU0KY29uc2VydmF0aW9uaXN0LzFTTQpjb25zZXJ2YXRpc20vMU0KY29uc2VydmF0aXZlLzE1TVlTCmNvbnNlcnZhdG9pcmUvMVMKY29uc2VydmF0b3IvMVNNCmNvbnNlcnZhdG9yeS81MVNNCmNvbnNpZGVyLzRBR1NECmNvbnNpZGVyYWJsZS81MUkKY29uc2lkZXJhYmx5Lwpjb25zaWRlcmF0ZS81NElQWU4KY29uc2lkZXJhdGVuZXNzLzFJTQpjb25zaWRlcmF0aW9uLzFBSU0KY29uc2lkZXJhdGlvbnMvMQpjb25zaWRlcmVkLzQ1VQpjb25zaWduLzRBU0RHCmNvbnNpZ25lZS8xTVMKY29uc2lnbm1lbnQvMU1TCmNvbnNpc3QvNDFTREcKY29uc2lzdGVuY2UvMU1TCmNvbnNpc3RlbmN5LzFJU00KY29uc2lzdGVudC81MUlZCmNvbnNpc3RvcnkvMVNNCmNvbnNvbGFibGUvNUkKY29uc29sYXRpb24vMU1TCmNvbnNvbGF0b3J5LzUxCmNvbnNvbGlkYXRlLzQ1WERTR04KY29uc29saWRhdGVkLzU0VQpjb25zb2xpZGF0aW9uLzFNCmNvbnNvbGlkYXRvci8xTVMKY29uc29saW5nLzU0MVkKY29uc29tbWUvMU0KY29uc29uYW5jZS8xU00KY29uc29uYW50LzE1U01ZCmNvbnNvcnRpYS8xCmNvbnNvcnRpdW0vMU0KY29uc3BlY3R1cy8xTVMKY29uc3BpY3VvdXMvNUlQWQpjb25zcGljdW91c25lc3MvMUlNCmNvbnNwaXJhY3kvMTRTTQpjb25zcGlyYXRvci8xTVMKY29uc3BpcmF0b3JpYWwvNVkKY29uc3BpcmUvNEdECmNvbnN0YWJsZS8xNFNNCmNvbnN0YWJ1bGFyeS81MVNNCmNvbnN0YW5jeS8xSU0KY29uc3RhbnQvNTFNWVMKY29uc3RlbGxhdGlvbi8xU00KY29uc3Rlcm5hdGlvbi8xTQpjb25zdGlwYXRlLzRHTkRTCmNvbnN0aXBhdGlvbi8xTQpjb25zdGl0dWVuY3kvMVNNCmNvbnN0aXR1ZW50LzUxU00KY29uc3RpdHV0ZS80MUFEU0dOVgpjb25zdGl0dXRpb24vMUFNCmNvbnN0aXR1dGlvbmFsLzUxTVlTCmNvbnN0aXR1dGlvbmFsaXNtLzEKY29uc3RpdHV0aW9uYWxpdHkvMVVNCmNvbnN0aXR1dGlvbnMvMQpjb25zdHJhaW5lZC80NVUKY29uc3RyYWludC8xU00KY29uc3RyaWN0LzRHVlNECmNvbnN0cmljdGlvbi8xU00KY29uc3RyaWN0b3IvMVNNCmNvbnN0cnVhYmxlLzUKY29uc3RydWN0J3MKY29uc3RydWN0LzE0Q0FEVkdTCmNvbnN0cnVjdGlvbi8xQ0FNUwpjb25zdHJ1Y3Rpb25hbC81CmNvbnN0cnVjdGlvbmlzdCdzCmNvbnN0cnVjdGlvbmlzdC81MUNTCmNvbnN0cnVjdGl2ZS81WVAKY29uc3RydWN0aXZlbmVzcy8xTQpjb25zdHJ1Y3Rvci8xTVMKY29uc3RydWUvMTRHRFMKY29uc3VsLzFLU00KY29uc3VsYXIvNTFLCmNvbnN1bGF0ZS8xU00KY29uc3Vsc2hpcC8xTQpjb25zdWx0LzE0R1NECmNvbnN1bHRhbmN5LzFTTQpjb25zdWx0YW50LzFNUwpjb25zdWx0YXRpb24vMU1TCmNvbnN1bHRhdGl2ZS81CmNvbnN1bWFibGUvNTFTTQpjb25zdW1lLzRCRFJTWkcKY29uc3VtZWQvNTRVCmNvbnN1bWVyLzFNCmNvbnN1bWVyaXNtLzFNCmNvbnN1bWVyaXN0LzUxTVMKY29uc3VtbWF0ZS81NFlHTlhEUwpjb25zdW1tYXRlZC80VQpjb25zdW1wdGlvbi8xTQpjb25zdW1wdGl2ZS81MVNNCmNvbnQvNTQKY29udGFjdC8xNEFTREcKY29udGFjdGFibGUvNQpjb250YWN0bGVzcy81MQpjb250YWdpb24vMU1TCmNvbnRhZ2lvdXMvNVBZCmNvbnRhZ2lvdXNuZXNzLzFNCmNvbnRhaW4vNFNCTERSWkcKY29udGFpbmVyLzFNCmNvbnRhaW5lcml6YXRpb24vMU0KY29udGFpbmVyaXplLzREU0cKY29udGFpbm1lbnQvMU0KY29udGFtaW5hbnQvMVNNCmNvbnRhbWluYXRlLzRBQ0RTRwpjb250YW1pbmF0ZWQvNDVVCmNvbnRhbWluYXRpb24vMUNNCmNvbnRhbWluYXRvci8xU00KY29udGQvNQpjb250ZW1uLzRTREcKY29udGVtcGxhdGUvNERTR05WCmNvbnRlbXBsYXRpb24vMU0KY29udGVtcGxhdGl2ZS81MVNNWQpjb250ZW1wb3JhbmVpdHkvMU0KY29udGVtcG9yYW5lb3VzLzVZCmNvbnRlbXB0LzFNCmNvbnRlbXB0aWJsZS81CmNvbnRlbXB0aWJseS8KY29udGVtcHR1b3VzLzVZUApjb250ZW1wdHVvdXNuZXNzLzFNCmNvbnRlbmRlci8xTVMKY29udGVudC81MTRFU0xNREcKY29udGVudGVkLzQ1RVkKY29udGVudGVkbmVzcy8xTQpjb250ZW50aW9uLzFTTQpjb250ZW50aW91cy81WVAKY29udGVudGlvdXNuZXNzLzFNCmNvbnRlbnRseS8KY29udGVudG1lbnQvMUVNCmNvbnRlcm1pbm91cy81WQpjb250ZXN0YWJsZS81SQpjb250ZXN0YW50LzFNUwpjb250ZXN0ZWQvNTRVCmNvbnRleHR1YWxpemF0aW9uLzEKY29udGV4dHVhbGl6ZS80RFNHCmNvbnRpZ3VpdHkvMU0KY29udGlndW91cy81WQpjb250aW5lbmNlLzFJTQpjb250aW5lbnQvMTVTTQpjb250aW5lbnRhbC81MVNNCmNvbnRpbmdlbmN5LzFTTQpjb250aW5nZW50LzE1U01ZCmNvbnRpbnVhLzEKY29udGludWFsLzVZCmNvbnRpbnVhbmNlLzFFTVMKY29udGludWF0aW9uLzFFTVMKY29udGludWUvNDFFR0RTCmNvbnRpbnVpdHkvMUVTTQpjb250aW51b3VzLzVFWQpjb250aW51dW0vMU0KY29udG9ydC80R0QKY29udG9ydGlvbi8xTVMKY29udG9ydGlvbmlzdC8xU00KY29udHJhLysxNApjb250cmFiYW5kLzE1NE0KY29udHJhYmFzc29vbi8xUwpjb250cmFjZXB0aW9uLzFNCmNvbnRyYWNlcHRpdmUvNTFTTQpjb250cmFjdC8xNTRNREcKY29udHJhY3RpYmxlLzUKY29udHJhY3RpbGUvNQpjb250cmFjdGlsaXR5LzEKY29udHJhY3Rpb24vMVMKY29udHJhY3R1YWwvNTFZCmNvbnRyYWRpY3QvNFNERwpjb250cmFkaWN0aW9uLzFTTQpjb250cmFkaWN0b3J5LzUxCmNvbnRyYWRpc3RpbmN0aW9uLzFNUwpjb250cmFmbG93LzFTCmNvbnRyYWlsLzE0TVMKY29udHJhaW5kaWNhdGUvNEdOWERTCmNvbnRyYWluZGljYXRpb24vMU0KY29udHJhbHRvLzFTTQpjb250cmFwdGlvbi8xU00KY29udHJhcHVudGFsLzVZCmNvbnRyYXJpYW4vMTVTTQpjb250cmFyaWFuaXNtLzEKY29udHJhcmlldHkvMU0KY29udHJhcmlseS8KY29udHJhcmluZXNzLzFNCmNvbnRyYXJpd2lzZS8KY29udHJhcnkvNTE0UFNNCmNvbnRyYXN0LzE0TURHUwpjb250cmF2ZW5lLzRHRFMKY29udHJhdmVudGlvbi8xU00KY29udHJldGVtcHMvMU0KY29udHJpYnV0ZS80WEdORApjb250cmlidXRpb24vMU0KY29udHJpYnV0b3IvMU1TCmNvbnRyaWJ1dG9yeS81MQpjb250cml0aW9uLzFNCmNvbnRyaXZhbmNlLzFNUwpjb250cml2ZS80WkdEUlMKY29udHJpdmVyLzFNCmNvbnRyb2wncwpjb250cm9sLzQxQ1MKY29udHJvbGxhYmxlLzUxVQpjb250cm9sbGVkLzU0VUMKY29udHJvbGxlci8xTVMKY29udHJvbGxpbmcvNTQxQwpjb250cm92ZXJzaWFsLzUxWQpjb250cm92ZXJzeS8xU00KY29udHJvdmVydC80RFNHCmNvbnRyb3ZlcnRpYmxlLzVJCmNvbnR1bWFjaW91cy81WQpjb250dW1hY3kvMU0KY29udHVtZWxpb3VzLzUKY29udHVtZWx5LzFTTQpjb250dXNlLzRYRFNHTgpjb250dXNpb24vMU0KY29udW5kcnVtLzFTTQpjb251cmJhdGlvbi8xTVMKY29udmFsZXNjZS80RFNHCmNvbnZhbGVzY2VuY2UvMU1TCmNvbnZhbGVzY2VudC81MVNNCmNvbnZlY3Rpb24vMU0KY29udmVjdGlvbmFsLzUKY29udmVjdGl2ZS81CmNvbnZlY3Rvci8xUwpjb252ZW5lLzRBRFNHCmNvbnZlbmVyLzFNUwpjb252ZW5pZW5jZS8xNElNUwpjb252ZW5pZW50LzVJWQpjb252ZW50LzE0U00KY29udmVudGljbGUvMTRNUwpjb252ZW50aW9uLzFTTQpjb252ZW50aW9uYWwvNTFVWQpjb252ZW50aW9uYWxpdHkvMVVNCmNvbnZlbnRpb25hbGl6ZS80R0RTCmNvbnZlbnRpb25lZXIvMVMKY29udmVyZ2VuY2UvMU1TCmNvbnZlcmdlbnQvNTEKY29udmVyc2FudC81MQpjb252ZXJzYXRpb24vMTRNUwpjb252ZXJzYXRpb25hbC81WQpjb252ZXJzYXRpb25hbGlzdC8xU00KY29udmVyc2UvNDE1WQpjb252ZXJ0J3MKY29udmVydC80MUFHU0QKY29udmVydGVkLzU0VQpjb252ZXJ0ZXIvMVNNCmNvbnZlcnRpYmlsaXR5LzFNCmNvbnZlcnRpYmxlLzUxU00KY29udmV4LzUxNFkKY29udmV4aXR5LzFNCmNvbnZleS80U0JERwpjb252ZXlhbmNlLzE0TUdTCmNvbnZleW9yLzFNUwpjb252aWN0LzQxR1NNRApjb252aWN0aW9uLzFNUwpjb252aW5jZS80R0RTCmNvbnZpbmNlZC81NFUKY29udmluY2luZy81NDFVWQpjb252aXZpYWwvNVkKY29udml2aWFsaXR5LzFNCmNvbnZva2UvNERTRwpjb252b2x1dGVkLzU0CmNvbnZvbHV0aW9uLzFNUwpjb252b3kvMTRTTURHCmNvbnZ1bHNlLzRHTlZYRFMKY29udnVsc2lvbi8xTQpjb252dWxzaXZlLzVZCmNvbnkvMU0KY29vLzE0NUdTTUQKY29vaydzCmNvb2svMTRBREdTCmNvb2tib29rLzFNUwpjb29rZWQvNTRVCmNvb2tlci8xU00KY29va2VyeS8xU00KY29va2hvdXNlLzFTCmNvb2tpZS8xNFNNCmNvb2tpbmcvMTU0TQpjb29rb3V0LzFTTQpjb29rd2FyZS8xU00KY29vbC81MTRNRFJZWlRHUFMKY29vbGFudC8xU00KY29vbGVyLzE1TQpjb29saWUvMVNNCmNvb2xuZXNzLzFNCmNvb24vMTRNUyEKY29vbnNraW4vMU1TCmNvb3AvMTRNRFJaR1MKY29vcGVyLzE0TURHCmNvb3BlcmFnZS8xTQpjb29wZXJhdGUvNERTR05WCmNvb3BlcmF0aW9uLzFNCmNvb3BlcmF0aXZlLzUxUE1ZUwpjb29wZXJhdGl2ZW5lc3MvMU0KY29vcGVyYXRvci8xU00KY29vcmRpbmF0ZS81MTREU01ZR04KY29vcmRpbmF0ZWQvNTRVCmNvb3JkaW5hdGlvbi8xTQpjb29yZGluYXRvci8xTVMKY29vdC8xTVMKY29vdGllLzFTTQpjb3AvNDFHSlNNRApjb3BhY2V0aWMvNQpjb3BheS80MU0KY29wZS80MU1TCmNvcGllci8xU00KY29waWxvdC8xNFNNCmNvcGluZy8xNE0KY29waW91cy81UFkKY29waW91c25lc3MvMU0KY29wcGVkLzQ1CmNvcHBlci8xNTRTTQpjb3BwZXJoZWFkLzFTTQpjb3BwZXJwbGF0ZS8xNE0KY29wcGVyeS81CmNvcHBpbmcvNApjb3ByYS8xTQpjb3BzZS8xNFNNCmNvcHRlci8xNFNNCmNvcHVsYS8xU00KY29wdWxhdGUvNDVHTlZEUwpjb3B1bGF0aW9uLzFNCmNvcHVsYXRpdmUvNTFTTQpjb3B5J3MKY29weS8xNEFEU0cKY29weWJvb2svMVNNCmNvcHljYXQvMTU0TVMKY29weWNhdHRlZC80CmNvcHljYXR0aW5nLzQKY29weWlzdC8xTVMKY29weWxlZnQvMTQKY29weXJpZ2h0LzE0R1NNRApjb3B5d3JpdGVyLzFNUwpjb3F1ZXRyeS8xU00KY29xdWV0dGUvMTQ1RFNNRwpjb3F1ZXR0aXNoLzVZCmNvci8xCmNvcmFjbGUvMVNNCmNvcmFsLzE1U00KY29yYmVsLzE0U00KY29yZC8xNEVBU0dETQpjb3JkYWdlLzFNCmNvcmRpYWwvNTFTTVkKY29yZGlhbGl0eS8xTQpjb3JkaWxsZXJhLzFNUwpjb3JkaXRlLzFNCmNvcmRsZXNzLzUxCmNvcmRvbi8xNFNNREcKY29yZG92YW4vMTVNCmNvcmR1cm95LzE1NE1TCmNvcmR1cm95cy8xTQpjb3JlLzE1NE1aR0RSUwpjb3JlbGlnaW9uaXN0LzFTCmNvcmVyLzFNCmNvcmVzcG9uZGVudC8xTVMKY29yZ2kvMVNNCmNvcmlhbmRlci8xTQpjb3JrJ3MKY29yay8xNDVVREdTCmNvcmthZ2UvMQpjb3JrZXIvMVNNCmNvcmtzY3Jldy8xNTRTTURHCmNvcm0vMU1TCmNvcm1vcmFudC8xNVNNCmNvcm4vMTRNRFJaR1MKY29ybmJhbGwvMTVNUwpjb3JuYnJlYWQvMU0KY29ybmNvYi8xNE1TCmNvcm5jcmFrZS8xUwpjb3JuZWEvMVNNCmNvcm5lYWwvNQpjb3JuZXIvMTRHTUQKY29ybmVyc3RvbmUvMVNNCmNvcm5ldC8xU00KY29ybmZpZWxkLzFTCmNvcm5mbGFrZXMvMU0KY29ybmZsb3VyLzEKY29ybmZsb3dlci8xNVNNCmNvcm5pY2UvMTRNUwpjb3JuaWx5Lwpjb3JuaW5lc3MvMU0KY29ybm1lYWwvMU0KY29ybnJvdy8xNE1ER1MKY29ybnN0YWxrLzFTTQpjb3Juc3RhcmNoLzFNCmNvcm51Y29waWEvMU1TCmNvcm55LzVQUlQKY29yb2xsYS8xTVMKY29yb2xsYXJ5LzE1U00KY29yb25hLzE0U00KY29yb25hbC81MU1TCmNvcm9uYXJ5LzUxU00KY29yb25hdGlvbi8xU00KY29yb25hdmlydXMvMU1TCmNvcm9uZXIvMU1TCmNvcm9uZXQvMU1TCmNvcnAvMQpjb3Jwb3JhLzEKY29ycG9yYWwvNTFTTQpjb3Jwb3JhdGUvNTE0WFlOCmNvcnBvcmF0aW9uLzFJTQpjb3Jwb3JhdGlzbS8xCmNvcnBvcmVhbC81WQpjb3Jwb3JlYWxpdHkvMU0KY29ycHMvMU1TCmNvcnBzZS8xNE0KY29ycHNtYW4vMU0KY29ycHNtZW4vMQpjb3JwdWxlbmNlLzFNCmNvcnB1bGVudC81CmNvcnB1cy8xTQpjb3JwdXNjbGUvMU1TCmNvcnB1c2N1bGFyLzUKY29yci8xCmNvcnJhbC8xNFNNCmNvcnJhbGxlZC80CmNvcnJhbGxpbmcvNApjb3JyZWN0LzUxNERSWVRHVlNCUApjb3JyZWN0ZWQvNFUKY29ycmVjdGlvbi8xU00KY29ycmVjdGlvbmFsLzUKY29ycmVjdGl2ZS81MVNNCmNvcnJlY3RuZXNzLzFJTQpjb3JyZWN0b3IvMQpjb3JyZWxhdGUvNDFYRFNNR05WCmNvcnJlbGF0ZWQvNDVVCmNvcnJlbGF0aW9uLzFNCmNvcnJlbGF0aW9uYWwvNQpjb3JyZWxhdGl2ZS81MU1TCmNvcnJlc3BvbmQvNFNERwpjb3JyZXNwb25kZW5jZS8xU00KY29ycmVzcG9uZGVudC81MVNNCmNvcnJlc3BvbmRpbmcvNDE1WQpjb3JyaWRvci8xU00KY29ycmllLzFTCmNvcnJvYm9yYXRlLzRHTlZEU1gKY29ycm9ib3JhdGVkLzU0VQpjb3Jyb2JvcmF0aW9uLzFNCmNvcnJvYm9yYXRvci8xU00KY29ycm9ib3JhdG9yeS81CmNvcnJvZGUvNEdEUwpjb3Jyb3Npb24vMU0KY29ycm9zaXZlLzUxU01ZCmNvcnJ1Z2F0ZS80NUdOWERTCmNvcnJ1Z2F0aW9uLzFNCmNvcnJ1cHQvNTREUllQU1RHCmNvcnJ1cHRpYmlsaXR5LzFJTQpjb3JydXB0aWJsZS81MUkKY29ycnVwdGlvbi8xTVMKY29ycnVwdG5lc3MvMU0KY29yc2FnZS8xTVMKY29yc2Fpci8xTVMKY29yc2V0LzE0U0dNRApjb3J0ZWdlLzFNUwpjb3J0ZXgvMU0KY29ydGljYWwvNQpjb3J0aWNlcy8xCmNvcnRpc29sLzEKY29ydGlzb25lLzFNCmNvcnVuZHVtLzFNCmNvcnVzY2F0ZS80R05EUwpjb3J1c2NhdGlvbi8xTQpjb3J2ZXR0ZS8xU00KY29zLzE3OE0KY29zaC8xNDVEU0cKY29zaWduLzQxWkdTRFIKY29zaWduYXRvcnkvMTVTTQpjb3NpZ25lci8xTQpjb3NpbmUvMVNNCmNvc21ldGljLzUxU00KY29zbWV0aWNhbGx5Lwpjb3NtZXRpY2lhbi8xTVMKY29zbWV0b2xvZ2lzdC8xTVMKY29zbWV0b2xvZ3kvMU0KY29zbWljLzUKY29zbWljYWxseS8KY29zbW9nb25pc3QvMVNNCmNvc21vZ29ueS8xU00KY29zbW9sb2dpY2FsLzUKY29zbW9sb2dpc3QvMVNNCmNvc21vbG9neS8xU00KY29zbW9uYXV0LzFTTQpjb3Ntb3BvbGl0YW4vNTFNUwpjb3Ntb3BvbGl0YW5pc20vMU0KY29zbW9zLzFNUwpjb3NwbGF5LzE0CmNvc3BvbnNvci8xNEdTTUQKY29zc2V0LzQxU0dECmNvc3NldHRlZC80CmNvc3NldHRpbmcvNApjb3N0LzQxTURZR1NKCmNvc3Rhci8xNFNNCmNvc3RhcnJlZC80CmNvc3RhcnJpbmcvNApjb3N0bGluZXNzLzFNCmNvc3RseS81UFRSCmNvc3R1bWUvMTRNWkdEUlMKY29zdHVtZXIvMU0KY29zdHVtaWVyLzFTCmNvdC8xU00KY290YW5nZW50LzFNUwpjb3RlLzE0TVMKY290ZXJpZS8xTVMKY290ZXJtaW5vdXMvNQpjb3RpbGxpb24vMTRTTQpjb3R0YWdlLzE0TVpHUlMKY290dGFnZXIvMU0KY290dGFyLzFTTQpjb3R0ZXIvMTRTTQpjb3R0b24vMTU0U0dNRApjb3R0b25tb3V0aC8xTQpjb3R0b25tb3V0aHMvMQpjb3R0b25zZWVkLzFNUwpjb3R0b250YWlsLzFNUwpjb3R0b253b29kLzFTTQpjb3R0b255LzUKY290eWxlZG9uLzFNUwpjb3VjaC8xNE1EU0cKY291Y2hldHRlLzFTCmNvdWdhci8xU00KY291Z2gvNDFNREcKY291Z2hzLzE0CmNvdWxkLzQxfgpjb3VsZCd2ZS80CmNvdWxkbid0LzQKY291bGVlLzFTTQpjb3VsaXMvMQpjb3Vsb21iLzFNUwpjb3VuY2lsLzFNUwpjb3VuY2lsbWFuLzFNCmNvdW5jaWxtZW4vMQpjb3VuY2lsb3IvMU1TCmNvdW5jaWxwZXJzb24vMVNNCmNvdW5jaWx3b21hbi8xTQpjb3VuY2lsd29tZW4vMQpjb3Vuc2VsLzE0Sk1ER1MKY291bnNlbG9yLzFNUwpjb3VudC80MTVFQVNNREcKY291bnRhYmxlLzUxVQpjb3VudGFibHkvCmNvdW50ZG93bi8xNE1TCmNvdW50ZWQvNFUKY291bnRlbmFuY2Uncwpjb3VudGVuYW5jZS8xNEVHRFMKY291bnRlci8xNDVFTVMKY291bnRlcmFjdC8xNFNHVkQKY291bnRlcmFjdGlvbi8xTVMKY291bnRlcmFyZ3VtZW50LzFTCmNvdW50ZXJhdHRhY2svMTRHTURTCmNvdW50ZXJiYWxhbmNlLzE0TUdEUwpjb3VudGVyYmxhc3QvMVMKY291bnRlcmNsYWltLzE0R1NNRApjb3VudGVyY2xvY2t3aXNlLzUKY291bnRlcmN1bHR1cmUvMVNNCmNvdW50ZXJlZC80CmNvdW50ZXJlc3Bpb25hZ2UvMU0KY291bnRlcmV4YW1wbGUvMVMKY291bnRlcmZhY3R1YWwvNTEKY291bnRlcmZlaXQvNTE0WkdNRFJTCmNvdW50ZXJmZWl0ZXIvMU0KY291bnRlcmZvaWwvMU1TCmNvdW50ZXJpbmcvNApjb3VudGVyaW5zdXJnZW5jeS8xU00KY291bnRlcmludGVsbGlnZW5jZS8xTQpjb3VudGVybWFuLzFNCmNvdW50ZXJtYW5kLzQxR01EUwpjb3VudGVybWVhc3VyZS8xU00KY291bnRlcm1lbG9keS8xUwpjb3VudGVybWVuLzEKY291bnRlcm1vdmUvMTRTCmNvdW50ZXJvZmZlbnNpdmUvMTVTTQpjb3VudGVyb2ZmZXIvMTRTTQpjb3VudGVycGFuZS8xU00KY291bnRlcnBhcnQvMTRTTQpjb3VudGVycGV0aXRpb24vMTQKY291bnRlcnBvaW50LzE0TURHUwpjb3VudGVycG9pc2UvMTRNR0RTCmNvdW50ZXJwcm9kdWN0aXZlLzUKY291bnRlcnJldm9sdXRpb24vMVNNCmNvdW50ZXJyZXZvbHV0aW9uYXJ5LzUxU00KY291bnRlcnNpZ24vMTRHU01ECmNvdW50ZXJzaWduYXR1cmUvMU1TCmNvdW50ZXJzaW5rLzE0R1NNCmNvdW50ZXJzcHkvMTRTTQpjb3VudGVyc3Ryb2tlLzFTTQpjb3VudGVyc3Vuay80NQpjb3VudGVydGVub3IvMU1TCmNvdW50ZXJ2YWlsLzRHU0QKY291bnRlcndlaWdodC8xNE1TCmNvdW50ZXNzLzFNUwpjb3VudGxlc3MvNQpjb3VudHJpZmllZC81NApjb3VudHJ5LzE1U00KY291bnRyeW1hbi8xTQpjb3VudHJ5bWVuLzEKY291bnRyeXNpZGUvMU1TCmNvdW50cnl3aWRlLzUKY291bnRyeXdvbWFuLzFNCmNvdW50cnl3b21lbi8xCmNvdW50eS8xNVNNCmNvdW50eXdpZGUvNQpjb3VwJ3MKY291cC8xNEFTCmNvdXBlLzFTTQpjb3VwbGUncwpjb3VwbGUvMTU0VUNHU0QKY291cGxldC8xTVMKY291cGxpbmcvMTRTTQpjb3Vwb24vMTRTTQpjb3VyYWdlLzE0TQpjb3VyYWdlb3VzLzVZUApjb3VyYWdlb3VzbmVzcy8xTQpjb3VyZ2V0dGUvMVMKY291cmllci8xNE1EU0cKY291cnNlLzE0RURHTVMKY291cnNlYm9vay8xUwpjb3Vyc2VyLzFNUwpjb3Vyc2V3b3JrLzEKY291cnQvMTRTTURZRwpjb3VydGVvdXMvNUVZCmNvdXJ0ZW91c25lc3MvMU0KY291cnRlc2FuLzFTTQpjb3VydGVzeS8xNDVFU00KY291cnRob3VzZS8xTVMKY291cnRpZXIvMVNNCmNvdXJ0bGluZXNzLzFNCmNvdXJ0bHkvNVBSVApjb3VydHJvb20vMU1TCmNvdXJ0c2hpcC8xTVMKY291cnR5YXJkLzFNUwpjb3VzY291cy8xTQpjb3VzaW4vMTRTTQpjb3V0dXJlLzFNCmNvdXR1cmllci8xTVMKY292YWxlbnQvNQpjb3ZhcmlhbmNlLzEKY292YXJpYW50LzUxCmNvdmUvMTRNUwpjb3Zlbi8xU00KY292ZW5hbnQvMTRNRFNHCmNvdmVyJ3MKY292ZXIvMTU0QUVVR0RTCmNvdmVyYWdlLzFNCmNvdmVyYWxsLzFNUwpjb3ZlcmluZydzCmNvdmVyaW5ncy8xCmNvdmVybGV0LzFNUwpjb3ZlcnQvNTFTUE1ZCmNvdmVydG5lc3MvMU0KY292ZXQvNFNERwpjb3ZldG91cy81WVAKY292ZXRvdXNuZXNzLzFNCmNvdmV5LzE0U00KY293LzE0WkdTTURSCmNvd2FyZC8xNTRTTVkKY293YXJkaWNlLzFNCmNvd2FyZGxpbmVzcy8xTQpjb3diZWxsLzFNUwpjb3diaXJkLzFNUwpjb3dib3kvMTRTTQpjb3djYXRjaGVyLzFNUwpjb3dlci80REcKY293Z2lybC8xNE1TCmNvd2hhbmQvMU1TCmNvd2hlcmQvMU1TCmNvd2hpZGUvMTRNUwpjb3dsLzE0NU1HU0oKY293bGljay8xTVMKY293bGluZy8xNE0KY293bWFuLzFNCmNvd21lbi8xCmNvd29ya2VyLzFNUwpjb3dwYXQvMVMKY293cG9rZS8xTVMKY293cG94LzFNCmNvd3B1bmNoZXIvMVNNCmNvd3JpZS8xU00KY293c2hlZC8xUwpjb3dzbGlwLzFTTQpjb3gvMTRHRFMKY294Y29tYi8xTVMKY294c3dhaW4vMTRNUwpjb3kvNTQxVFBSWQpjb3luZXNzLzFNCmNveW90ZS8xNFNNCmNveXB1LzFTTQpjb3plbi80U0RHCmNvemVuYWdlLzFNCmNvemlseS8KY296aW5lc3MvMU0KY296eS81MTRSU01UUApjcGQvMQpjcGwvMQpjcHMvMQpjcmFiLzE0TVMKY3JhYmJlZC81NApjcmFiYmVyLzFTTQpjcmFiYmlseS8KY3JhYmJpbmVzcy8xTQpjcmFiYmluZy80MQpjcmFiYnkvNVBSVApjcmFiZ3Jhc3MvMU0KY3JhYmxpa2UvNQpjcmFid2lzZS81CmNyYWNrLzQxNVNNRFJZWkdKCmNyYWNrZG93bi8xTVMKY3JhY2tlci8xTQpjcmFja2VyamFjay81MU1TCmNyYWNraGVhZC8xTVMKY3JhY2tsZS8xNERTSk1HCmNyYWNrbGluZy8xNTRNCmNyYWNrcG90LzE1TVMKY3JhY2t1cC8xU00KY3JhZGxlLzE0RFNNRwpjcmFmdC8xNFNNREcKY3JhZnRpbHkvCmNyYWZ0aW5lc3MvMU0KY3JhZnRzbWFuLzFNCmNyYWZ0c21hbnNoaXAvMU0KY3JhZnRzbWVuLzEKY3JhZnRzcGVvcGxlLzEKY3JhZnRzd29tYW4vMU0KY3JhZnRzd29tZW4vMQpjcmFmdHkvNVJUUApjcmFnLzFNUwpjcmFnZ2luZXNzLzFNCmNyYWdneS81UlBUCmNyYW0vNDFTCmNyYW1tZWQvNApjcmFtbWVyLzFTCmNyYW1taW5nLzQxCmNyYW1wLzE0NVNNREcKY3JhbXBpbmcvNDFNCmNyYW1wb24vMTRTTQpjcmFuYmVycnkvMTVTTQpjcmFuZS8xNERTTUcKY3JhbmlhbC81CmNyYW5pdW0vMVNNCmNyYW5rLzUxNFNNREcKY3JhbmtjYXNlLzFTTQpjcmFua2lseS8KY3JhbmtpbmVzcy8xTQpjcmFua3NoYWZ0LzE0TVMKY3Jhbmt5LzVQUlQKY3Jhbm55LzE0RFNNCmNyYXAvMTQ1TVMKY3JhcGUvMTRTTQpjcmFwcGVkLzQKY3JhcHBlci8xNVMKY3JhcHBpZS8xUlNNVApjcmFwcGluZy80CmNyYXBweS81CmNyYXBzLzE0TQpjcmFwc2hvb3Rlci8xTVMKY3Jhc2gvMTU0TURTRwpjcmFzcy81UllUUApjcmFzc25lc3MvMU0KY3JhdGUvMTREUlNNWkcKY3JhdGVyLzE0TURHCmNyYXZhdC8xNFNNCmNyYXZlLzQxRFNHSgpjcmF2ZW4vNTE0U01ZUApjcmF2ZW5uZXNzLzFNCmNyYXZpbmcvMTRNCmNyYXcvMTRNUwpjcmF3ZGFkLzFTTQpjcmF3bC80MVNNRFJaRwpjcmF3bGVyLzFNCmNyYXdsc3BhY2UvMVNNCmNyYXdseS81VFJTTQpjcmF5LzE1UwpjcmF5ZmlzaC8xNE1TCmNyYXlvbGEvUwpjcmF5b24vMTRHU01ECmNyYXplLzE0RFNNRwpjcmF6aWx5LwpjcmF6aW5lc3MvMU0KY3JhenkvNTFQUlNNVApjcmVhay8xNFNNREcKY3JlYWtpbHkvCmNyZWFraW5lc3MvMU0KY3JlYWt5LzVSUFQKY3JlYW0vMTU0U01EUlpHCmNyZWFtZXIvMU0KY3JlYW1lcnkvMVNNCmNyZWFtaWx5LwpjcmVhbWluZXNzLzFNCmNyZWFteS81MVJQVApjcmVhc2UvMTRJQ0dNU0QKY3JlYXRlLzQ1S0FEU0dOVgpjcmVhdGlvbidzL0sKY3JlYXRpb24vMUFTTQpjcmVhdGlvbmlzbS8xU00KY3JlYXRpb25pc3QvMTVTTQpjcmVhdGl2ZS81MVNNWVAKY3JlYXRpdmVuZXNzLzFNCmNyZWF0aXZpdHkvMU0KY3JlYXRvci8xTVMKY3JlYXR1cmUvMVNNCmNyZWNoZS8xU00KY3JlZC8xCmNyZWRlbmNlLzE0TQpjcmVkZW50aWFsLzUxNFNHTUQKY3JlZGVuemEvMVNNCmNyZWRpYmlsaXR5LzFJTQpjcmVkaWJsZS81SQpjcmVkaWJseS9JCmNyZWRpdC80MUVHU0JNRApjcmVkaXRhYmx5L0UKY3JlZGl0b3IvMVNNCmNyZWRpdHdvcnRoeS81UApjcmVkby8xU00KY3JlZHVsaXR5LzFJTQpjcmVkdWxvdXMvNUlZCmNyZWR1bG91c25lc3MvMU0KY3JlZWQvMTRTTQpjcmVlay8xU00KY3JlZWwvMTRTTQpjcmVlcC80MVNNUlpHCmNyZWVwZXIvMU0KY3JlZXBpbHkvCmNyZWVwaW5lc3MvMU0KY3JlZXB5LzVUUFIKY3JlbWFpbnMvMU0KY3JlbWF0ZS80R05EU1gKY3JlbWF0aW9uLzFNCmNyZW1hdG9yaWEvMQpjcmVtYXRvcml1bS8xTVMKY3JlbWF0b3J5LzUxU00KY3JlbWUvNTE0U00KY3JlbmVsYXRlLzRYR05EUwpjcmVuZWxhdGlvbi8xTQpjcmVvbGUvMVNNCmNyZW9zb3RlLzE0TUdEUwpjcmVwZS8xNFNNCmNyZXB0LzQKY3JlcHVzY3VsYXIvNQpjcmVzY2VuZG8vMTRDU00KY3Jlc2NlbnQvMTU0TVMKY3Jlc3MvMU0KY3Jlc3QvMTRTTURHCmNyZXN0ZmFsbGVuLzUKY3Jlc3RsZXNzLzUKY3JldGFjZW91cy81CmNyZXRpbi8xU00KY3JldGluaXNtLzFNCmNyZXRpbm91cy81CmNyZXRvbm5lLzFNCmNyZXZhc3NlLzE0U00KY3JldmljZS8xNE1TCmNyZXcvMTRNREdTCmNyZXdlbC8xNE0KY3Jld2Vsd29yay8xTQpjcmV3bWFuLzFNCmNyZXdtZW4vMQpjcmliLzE0TVMKY3JpYmJhZ2UvMU0KY3JpYmJlZC80NQpjcmliYmVyLzFNUwpjcmliYmluZy80MQpjcmljay8xNFNNREcKY3JpY2tldC8xNE1SU1pHCmNyaWNrZXRlci8xTQpjcmllci8xTQpjcmlrZXkvCmNyaW1lLzE0U00KY3JpbWluYWwvNTFNWVMKY3JpbWluYWxpdHkvMU0KY3JpbWluYWxpemUvNENHRFMKY3JpbWlub2xvZ2lzdC8xTVMKY3JpbWlub2xvZ3kvMU0KY3JpbXAvNTE0U01ERwpjcmltc29uLzE1NFNNREcKY3JpbmdlLzQxNURTTUcKY3JpbmtsZS80MURTTUcKY3JpbmtseS81MVJUCmNyaW5vbGluZS8xU00KY3JpcGVzLwpjcmlwcGxlLzUxNERSU01aRwpjcmlwcGxlci8xTQpjcmlwcGxld2FyZS8xCmNyaXBwbGluZy80NTFZCmNyaXNlcy8xCmNyaXNpcy8xTQpjcmlzcC81MTRTTURSWVRHUApjcmlzcGJyZWFkLzFTCmNyaXNwaW5lc3MvMU0KY3Jpc3BuZXNzLzFNCmNyaXNweS81MVBSVApjcmlzc2Nyb3NzLzQxNUdNRFMKY3JpdGVyaWEvMQpjcml0ZXJpb24vMU0KY3JpdGljLzE0U00KY3JpdGljYWwvNTFVWQpjcml0aWNhbGl0eS8xCmNyaXRpY2lzbS8xTVMKY3JpdGljaXplLzRaR0RSUwpjcml0aWNpemVyLzFNCmNyaXRpcXVlLzE0TUdEUwpjcml0dGVyLzFTTQpjcm9hay8xNFNNREcKY3JvYWt5LzVSVApjcm9jaGV0LzE0U01EUlpHCmNyb2NoZXRlci8xTQpjcm9jaGV0aW5nLzQxTQpjcm9jay8xNFNNRApjcm9ja2VyeS8xTQpjcm9jb2RpbGUvMTRTTQpjcm9jdXMvMU1TCmNyb2Z0LzE0U1JaRwpjcm9pc3NhbnQvMU1TCmNyb25lLzFTTQpjcm9ueS8xU00KY3Jvbnlpc20vMU0KY3Jvb2svMTQ1U01ERwpjcm9va2VkLzQ1UFRSWQpjcm9va2VkbmVzcy8xTQpjcm9va25lY2svMVNNCmNyb29uLzQxU01EUlpHCmNyb29uZXIvMU0KY3JvcC8xNE1TCmNyb3BsYW5kLzFTTQpjcm9wcGVkLzQ1CmNyb3BwZXIvMU1TCmNyb3BwaW5nLzQxCmNyb3F1ZXQvMTRNCmNyb3F1ZXR0ZS8xU00KY3Jvc2llci8xTVMKY3Jvc3Mncwpjcm9zcy8xNSs0QVVHVFNECmNyb3NzYmFyLzE0U00KY3Jvc3NiZWFtLzFNUwpjcm9zc2JvbmVzLzFNCmNyb3NzYm93LzFTTQpjcm9zc2Jvd21hbi8xTQpjcm9zc2Jvd21lbi8xCmNyb3NzYnJlZC81MTQKY3Jvc3NicmVlZC80MVNHTQpjcm9zc2NoZWNrLzE0U01ERwpjcm9zc2N1cnJlbnQvMU1TCmNyb3NzY3V0LzE0U00KY3Jvc3NjdXR0aW5nLzQxCmNyb3NzZXIvMTUKY3Jvc3NmaXJlLzFNUwpjcm9zc2hhdGNoLzE0R0RTCmNyb3NzaW5nLzE1NFNNCmNyb3NzbHkvCmNyb3NzbmVzcy8xTQpjcm9zc292ZXIvMTVNUwpjcm9zc3BhdGNoLzFNUwpjcm9zc3BpZWNlLzFTTQpjcm9zc3JvYWQvMU1TCmNyb3Nzcm9hZHMvMU0KY3Jvc3N0b3duLzUKY3Jvc3N3YWxrLzE0TVMKY3Jvc3N3aW5kLzFNUwpjcm9zc3dpc2UvNQpjcm9zc3dvcmQvMU1TCmNyb3RjaC8xNE1TCmNyb3RjaGV0LzE0U00KY3JvdGNoZXR5LzUKY3JvdWNoLzQxR01EUwpjcm91cC8xNE0KY3JvdXBpZXIvMU0KY3JvdXB5LzVaVFIKY3JvdXRvbi8xTVMKY3Jvdy8xNTRNREdTCmNyb3diYXIvMTRNUwpjcm93ZC80MVNNREcKY3Jvd2RlZC81NFUKY3Jvd2RmdW5kLzRTREcKY3Jvd2ZlZXQvMQpjcm93Zm9vdC8xU00KY3Jvd24vMTU0U01ERwpjcm93bmVkLzQ1VQpjcnVjaWFsLzVZCmNydWNpYmxlLzFTTQpjcnVjaWZpeC8xTVMKY3J1Y2lmaXhpb24vMVNNCmNydWNpZm9ybS81MVNNCmNydWNpZnkvNERTRwpjcnVkLzE0TQpjcnVkZHkvNVRSCmNydWRlLzUxUk1ZVFAKY3J1ZGVuZXNzLzFNCmNydWRpdGVzLzFNCmNydWRpdHkvMVNNCmNydWVsLzU0MVJZUFQKY3J1ZWxuZXNzLzFNCmNydWVsdHkvMVNNCmNydWV0LzFTTQpjcnVmdC8xNFNECmNydWZ0eS81CmNydWlzZS8xNERSU01aRwpjcnVpc2VyLzFNCmNydWxsZXIvMU1TCmNydW1iLzE0U01EWUcKY3J1bWJsZS80MU1HRFMKY3J1bWJsaW5lc3MvMU0KY3J1bWJseS81MVRQUgpjcnVtYnkvNVRSCmNydW1taW5lc3MvMU0KY3J1bW15LzUxUFRSCmNydW1wZXQvMU1TCmNydW1wbGUvMTRNR0RTCmNydW5jaC80MUdNRFJTCmNydW5jaGluZXNzLzFNCmNydW5jaHkvNTFUUlAKY3J1cHBlci8xNE1TCmNydXNhZGUvMTRNWkdEUlMKY3J1c2FkZXIvMU0KY3J1c2UvMVNNCmNydXNoLzE0TURSU1pHCmNydXNoZXIvMU0KY3J1c2hpbmcvNDUxWQpjcnVzdC8xNFNNREcKY3J1c3RhY2Vhbi8xU00KY3J1c3RhbC81CmNydXN0aWx5LwpjcnVzdGluZXNzLzFNCmNydXN0eS81MVRSUApjcnV0Y2gvMTRNUwpjcnV4LzFNUwpjcnkvNDFaR0pEUlNNCmNyeWJhYnkvMTRTTQpjcnlvZ2VuaWMvNVMKY3J5b2dlbmljcy8xTQpjcnlvbmljcy8xCmNyeW9zdXJnZXJ5LzFNCmNyeXB0LzFTTQpjcnlwdGFuYWx5c2lzLzEKY3J5cHRpYy81MQpjcnlwdGljYWxseS8KY3J5cHRvY3VycmVuY3kvMVNNCmNyeXB0b2dyYW0vMVNNCmNyeXB0b2dyYXBoZXIvMVNNCmNyeXB0b2dyYXBoeS8xTQpjcnlzdGFsLzE1U00KY3J5c3RhbGxpbmUvNTEKY3J5c3RhbGxpemF0aW9uLzFNCmNyeXN0YWxsaXplLzRBRFNHCmNyeXN0YWxsb2dyYXBoaWMvNQpjcnlzdGFsbG9ncmFwaHkvMQpjdC8xCmN0bi8xCmN0ci8xCmN1LwpjdWIvMTRaR1NNRFIKY3ViYnlob2xlLzE0TVMKY3ViZS8xNDVNUwpjdWJlci8xTQpjdWJpYy81MQpjdWJpY2FsLzUKY3ViaWNsZS8xTVMKY3ViaXNtLzFNCmN1YmlzdC81MVNNCmN1Yml0LzFTTQpjdWJvaWQvNTFTCmN1Y2tvbGQvMTRNRFNHCmN1Y2tvbGRyeS8xTQpjdWNrb28vMTQ1U00KY3VjdW1iZXIvMVNNCmN1ZC8xNFNNCmN1ZGRsZS8xNERTTUcKY3VkZGx5LzVUUgpjdWRnZWwvMTRTR01ESgpjdWUvMTREU01HCmN1ZmYvMTRNREdTCmN1aXNpbmUvMVNNCmN1bGluYXJ5LzUKY3VsbC80MU1ER1MKY3VsbWluYXRlLzQ1WERTR04KY3VsbWluYXRpb24vMU0KY3Vsb3R0ZS8xU00KY3VscGFiaWxpdHkvMU0KY3VscGFibGUvNUkKY3VscGFibHkvCmN1bHByaXQvMVNNCmN1bHQvMTVNUwpjdWx0aXNtLzFNCmN1bHRpc3QvMU1TCmN1bHRpdmFibGUvNQpjdWx0aXZhci8xU00KY3VsdGl2YXRlLzRCRFNHTgpjdWx0aXZhdGVkLzQ1VQpjdWx0aXZhdGlvbi8xTQpjdWx0aXZhdG9yLzFNUwpjdWx0dXJhbC81WQpjdWx0dXJlLzE0TUdEUwpjdWx0dXJlZC81NFUKY3VsdmVydC8xNE1TCmN1bS8rMTQ1U00KY3VtYmVyLzQxU0RHCmN1bWJlcnNvbWUvNVAKY3VtYmVyc29tZW5lc3MvMU0KY3VtYnJvdXMvNQpjdW1pbi8xTQpjdW1tZXJidW5kLzFNUwpjdW1taW5nLzQKY3VtdWxhdGl2ZS81WQpjdW11bGkvMQpjdW11bG9uaW1iaS8xCmN1bXVsb25pbWJ1cy8xTQpjdW11bHVzLzFNCmN1bmVpZm9ybS81MU0KY3VubmlsaW5ndXMvMU0KY3VubmluZy81MU1SWVQKY3VudC8xNDVNUyE2CmN1cC8xNFNNCmN1cGJvYXJkLzE0U00KY3VwY2FrZS8xNE1TCmN1cGZ1bC8xU00KY3VwaWQvMVNNCmN1cGlkaXR5LzFNCmN1cG9sYS8xU01ECmN1cHBhLzFTCmN1cHBlZC81NApjdXBwaW5nLzE0CmN1cHJpYy81CmN1ci8xU01ZCmN1cmFiaWxpdHkvMU0KY3VyYWNhby8xCmN1cmFjeS8xU00KY3VyYXJlLzFNCmN1cmF0ZS8xNERTTUdWCmN1cmF0aXZlLzUxTVMKY3VyYXRvci8xS01TCmN1cmF0b3JpYWwvNQpjdXJiLzE0TURHUwpjdXJiaW5nLzQxTQpjdXJic2lkZS81MQpjdXJic3RvbmUvMVNNCmN1cmQvMTRNUwpjdXJkbGUvNERTRwpjdXJlJ3MKY3VyZS8xNEtaR0JEUlMKY3VyZWQvNFUKY3VyZXIvMUtNCmN1cmV0dGFnZS8xTQpjdXJmZXcvMVNNCmN1cmlhLzFNCmN1cmlhZS8xCmN1cmllLzFTTQpjdXJpby8xU00KY3VyaW9zaXR5LzFTTQpjdXJpb3VzLzVZUApjdXJpb3VzbmVzcy8xTQpjdXJpdW0vMU0KY3VybCdzCmN1cmwvMTRVREdTCmN1cmxlci8xU00KY3VybGV3LzFTTQpjdXJsaWN1ZS8xNERTTUcKY3VybGluZXNzLzFNCmN1cmxpbmcvMTRNCmN1cmx5LzUxUlBUCmN1cm11ZGdlb24vMU1ZUwpjdXJyYW50LzFNUwpjdXJyZW5jeS8xU00KY3VycmVudCdzCmN1cnJlbnQvMTVGQVkKY3VycmVudHMvMQpjdXJyaWN1bGEvMQpjdXJyaWN1bGFyLzUKY3VycmljdWx1bS8xTQpjdXJyeS8xNERTTUcKY3Vycnljb21iLzE0U0dNRApjdXJzZS8xNERTTUdWCmN1cnNlZC81NFkKY3Vyc2l2ZSdzCmN1cnNpdmUvNTFFQVkKY3Vyc29yLzE0U00KY3Vyc29yaWx5LwpjdXJzb3JpbmVzcy8xTQpjdXJzb3J5LzVQCmN1cnQvNTRSWVRQCmN1cnRhaWwvNDFHRFNMCmN1cnRhaWxtZW50LzFTTQpjdXJ0YWluLzE0R01EUwpjdXJ0bmVzcy8xTQpjdXJ0c3kvMTRHRFNNCmN1cnZhY2VvdXMvNVAKY3VydmFjZW91c25lc3MvMU0KY3VydmF0dXJlLzFTTQpjdXJ2ZS81MTREU01HCmN1cnZ5LzVSVApjdXNoaW9uLzE0TURTRwpjdXNoeS81UlQKY3VzcC8xNE1TCmN1c3BpZC8xU00KY3VzcGlkb3IvMVNNCmN1c3MncwpjdXNzLzQxRkVHU0QKY3Vzc2VkLzQ1UFkKY3VzdGFyZC8xTVMKY3VzdG9kaWFsLzUKY3VzdG9kaWFuLzFNUwpjdXN0b2RpYW5zaGlwLzFNCmN1c3RvZHkvMU0KY3VzdG9tLzE1NFNaTVIKY3VzdG9tYXJpbHkvCmN1c3RvbWFyeS81MVUKY3VzdG9tZXIvMU0KY3VzdG9taG91c2UvMVNNCmN1c3RvbWl6YXRpb24vMU0KY3VzdG9taXplLzREU0cKY3V0LzQ1MVRTTVIKY3V0YW5lb3VzLzUKY3V0YXdheS81MU1TCmN1dGJhY2svMU1TCmN1dGUvNVlQCmN1dGVuZXNzLzFNCmN1dGVzeS81VFIKY3V0ZXkvMVMKY3V0aWNsZS8xTVMKY3V0aWUvMVNNCmN1dGxhc3MvMTRNUwpjdXRsZXIvMVNNCmN1dGxlcnkvMU0KY3V0bGV0LzFTTQpjdXRvZmYvMTVTTQpjdXRvdXQvMVNNCmN1dHRlci8xU00KY3V0dGhyb2F0LzE1U00KY3V0dGluZy8xNTRNWVMKY3V0dGxlZmlzaC8xTVMKY3V0dXAvMVNNCmN1dHdvcm0vMU1TCmN3CmN3dC8xCmN5YW4vMTVNCmN5YW5pZGUvMTRNCmN5YW5vYmFjdGVyaWEvMQpjeWJlcmJ1bGx5LzE0U00KY3liZXJjYWZlLzFTCmN5YmVybmV0aWMvNVMKY3liZXJuZXRpY3MvMU0KY3liZXJwdW5rLzFTTQpjeWJlcnNleC8xNApjeWJlcnNwYWNlLzFNUwpjeWJvcmcvMTRTTQpjeWNsYW1lbi8xTVMKY3ljbGUvMTRBRFNNRwpjeWNsaWMvNTEKY3ljbGljYWwvNTFZCmN5Y2xpc3QvMU1TCmN5Y2xvbWV0ZXIvMU1TCmN5Y2xvbmUvMTRNUwpjeWNsb25pYy81CmN5Y2xvcGVkaWEvMU1TCmN5Y2xvcGVzLzEKY3ljbG9wcy8xTQpjeWNsb3Ryb24vMU1TCmN5Z25ldC8xTVMKY3lsaW5kZXIvMTRNUwpjeWxpbmRyaWNhbC81CmN5bWJhbC8xTVMKY3ltYmFsaXN0LzFNUwpjeW5pYy8xNVNNCmN5bmljYWwvNVkKY3luaWNpc20vMU0KY3lub3N1cmUvMU1TCmN5cHJlc3MvMU1TCmN5c3QvMU1TCmN5c3RpYy81CmN5c3RpdGlzLzEKY3l0b2tpbmVzLzEKY3l0b2xvZ2lzdC8xU00KY3l0b2xvZ3kvMU0KY3l0b3BsYXNtLzFNCmN5dG9wbGFzbWljLzUKY3l0b3NpbmUvMU0KY3phci8xTVMKY3phcmluYS8xU00KY3phcmlzbS8xCmN6YXJpc3QvMVNNCmQnQXJlenpvL00KZCdFc3RhaW5nL00KZC81TlhHSgpkQi8KZGFiLzQxNVNNCmRhYmJlZC80CmRhYmJlci8xTVMKZGFiYmluZy80MQpkYWJibGUvNDFaR0RSUwpkYWJibGVyLzFNCmRhY2UvMVNNCmRhY2hhLzFNUwpkYWNoc2h1bmQvMU1TCmRhY3R5bC8xTVMKZGFjdHlsaWMvNTFNUwpkYWQvMTRTTQpkYWRhaXNtLzFNCmRhZGFpc3QvMTVNUwpkYWRkeS8xNDVTTQpkYWRvLzE0TQpkYWRvZXMvMTQKZGFlbW9uLzFNUwpkYWVtb25pYy81CmRhZmZpbmVzcy8xTQpkYWZmb2RpbC8xNVNNCmRhZmZ5LzUxUFRSCmRhZnQvNVBUUlkKZGFmdG5lc3MvMU0KZGFnLzE0UwpkYWdnZXIvMTRNUwpkYWdvLzFTCmRhZ29lcy8xCmRhZ3VlcnJlb3R5cGUvMTREU01HCmRhaGxpYS8xTVMKZGFpbGluZXNzLzFNCmRhaWx5LzUxNFBTTQpkYWludGlseS8KZGFpbnRpbmVzcy8xTQpkYWludHkvNTFSU01UUApkYWlxdWlyaS8xTVMKZGFpcnkvMTVHU00KZGFpcnlpbmcvMU0KZGFpcnltYWlkLzFNUwpkYWlyeW1hbi8xTQpkYWlyeW1lbi8xCmRhaXJ5d29tYW4vMU0KZGFpcnl3b21lbi8xCmRhaXMvMU1TCmRhaXN5LzFTTQpkYWxlLzFTTQpkYWxsaWFuY2UvMU1TCmRhbGxpZXIvMU0KZGFsbHkvNDFaR0RSUwpkYWxtYXRpYW4vMU1TCmRhbS8xNDVTTQpkYW1hZ2UvMTRNR0RTCmRhbWFnZWFibGUvNQpkYW1hZ2VkLzQ1VQpkYW1hZ2VzLzQxTQpkYW1hc2svMTU0TURHUwpkYW1lLzE0U00KZGFtbWVkLzQKZGFtbWluZy80MQpkYW1taXQvMQpkYW1uLzQ1MVNCR01ECmRhbW5hYmx5LwpkYW1uYXRpb24vMU0KZGFtbmVkLzU0VApkYW1wLzUxNFNQWFpUR01ETlJZCmRhbXBlbi80WkdEUgpkYW1wZW5lci8xTQpkYW1wZXIvMTVNCmRhbXBuZXNzLzFNCmRhbXNlbC8xTVMKZGFtc2VsZmx5LzFTTQpkYW1zb24vMTVNUwpkYW5jZS8xNE1aR0RSUwpkYW5jZXIvMU0KZGFuY2luZy8xNE0KZGFuZGVsaW9uLzE1U00KZGFuZGVyLzE0TQpkYW5kaWZ5LzRHRFMKZGFuZGxlLzQxR0RTCmRhbmRydWZmLzE0TQpkYW5keS8xNVRSU00KZGFuZy80NTFTWkdEUgpkYW5nZXIvMTRNCmRhbmdlcm91cy81WQpkYW5nbGUvNDFaR0RSUwpkYW5nbGVyLzFNCmRhbmlzaC8xTVMKZGFuay81MTRQVFJZCmRhbmtuZXNzLzFNCmRhbnNldXNlLzFNUwpkYXBwZXIvNVRSCmRhcHBsZS8xNTRNR0RTCmRhcmUvNDFEUlNNWkcKZGFyZWRldmlsLzE1NE1TCmRhcmVkZXZpbHJ5LzFNCmRhcmVyLzFNCmRhcmVzYXkvNApkYXJpbmcvNDUxTVkKZGFyay81MTRQWFRNTlJZCmRhcmtlbi80WkdEUgpkYXJrZW5lci8xTQpkYXJraWUvMVMKZGFya25lc3MvMU0KZGFya3Jvb20vMU1TCmRhcmxpbmcvMTVNUwpkYXJuLzU0MVNaR01EUgpkYXJuZWQvNDVUUgpkYXJuZXIvMU0KZGFydC8xNFNaR01EUgpkYXJ0Ym9hcmQvMU1TCmRhcnRlci8xTQpkYXNoLzE0WkdNRFJTCmRhc2hib2FyZC8xNFNNCmRhc2hlci8xTQpkYXNoaWtpLzFNUwpkYXNoaW5nLzU0MVkKZGFzdGFyZC8xNTRNWVMKZGFzdGFyZGxpbmVzcy8xTQpkYXRhLzEKZGF0YWJhc2UvMTRTTQpkYXRhc2V0LzFNUwpkYXRhdHlwZS8xCmRhdGUvMTREUlNNWkdWCmRhdGVib29rLzFTCmRhdGVkLzU0VQpkYXRlbGVzcy81CmRhdGVsaW5lLzE0TUdEUwpkYXRlci8xTQpkYXRlc2V0CmRhdGl2ZS81MU1TCmRhdHVtLzE0TQpkYXViLzE0U1pHTURSCmRhdWJlci8xTQpkYXVnaHRlci8xU01ZCmRhdW50LzRHRFMKZGF1bnRpbmcvNTE0WQpkYXVudGxlc3MvNVlQCmRhdW50bGVzc25lc3MvMU0KZGF1cGhpbi8xTVMKZGF2ZW5wb3J0LzFNUwpkYXZpdC8xTVMKZGF3ZGxlLzQxWkdEUlMKZGF3ZGxlci8xTQpkYXduLzQxU0dNRApkYXkvMTRTTX4KZGF5YmVkLzFNUwpkYXlicmVhay8xTQpkYXljYXJlLzFNCmRheWRyZWFtLzE0TURSWkdTCmRheWRyZWFtZXIvMU0KZGF5bGlnaHQvMTRNUwpkYXlsaWdodHMvMU0KZGF5bG9uZy81CmRheXRpbWUvMTVNCmRhemUvMTREU01HCmRhemVkLzU0WQpkYXp6bGUvNDFNWkdEUlMKZGF6emxlci8xTQpkYXp6bGluZy80NTFZCmRiCmRibC8xCmRjLzEKZGQvMVNERwpkZGVkL0sKZGRpbmcvSwpkZWFjb24vMTRNUwpkZWFjb25lc3MvMU1TCmRlYWQvNTE0WFRNTlJZCmRlYWRiZWF0LzE1TVMKZGVhZGJvbHQvMTRTTQpkZWFkZW4vNEdECmRlYWRoZWFkLzE0U0RHCmRlYWRsaW5lLzE0U00KZGVhZGxpbmVzcy8xTQpkZWFkbG9jay8xNEdTTUQKZGVhZGx5LzVUUFIKZGVhZHBhbi81MTRNUwpkZWFkcGFubmVkLzQKZGVhZHBhbm5pbmcvNApkZWFkd29vZC8xTQpkZWFmLzUxNFBYVE5SCmRlYWZlbi80R0QKZGVhZmVuaW5nLzU0MVkKZGVhZm5lc3MvMU0KZGVhbC8xNDVTSlpHTVIKZGVhbGVyLzFNCmRlYWxlcnNoaXAvMVNNCmRlYWxpbmcvMTRNCmRlYWx0LzQKZGVhbi8xNE0KZGVhbmVyeS8xU00KZGVhbnNoaXAvMU0KZGVhci81MTRTUFRNUllICmRlYXJlc3QvNTFTCmRlYXJuZXNzLzFNCmRlYXJ0aC8xNE0KZGVhcnRocy8xCmRlYXJ5LzFTTQpkZWF0aC8xTVkKZGVhdGhiZWQvMVNNCmRlYXRoYmxvdy8xTVMKZGVhdGhsZXNzLzVZCmRlYXRobGlrZS81CmRlYXRocy8xCmRlYXRodHJhcC8xTVMKZGVhdGh3YXRjaC8xTVMKZGVhdmVzCmRlYi8xU00KZGViYWNsZS8xTVMKZGViYXJrYXRpb24vMU0KZGViYXJtZW50LzFNCmRlYmF0ZS8xNEJNWlIKZGViYXRlci8xTQpkZWJhdGluZy80MU0KZGViYXVjaC8xNE1EU0cKZGViYXVjaGVlLzFNUwpkZWJhdWNoZXJ5LzFTTQpkZWJlbnR1cmUvMU1TCmRlYmlsaXRhdGUvNERTR04KZGViaWxpdGF0aW9uLzFNCmRlYmlsaXR5LzFTTQpkZWJpdC8xNDVECmRlYm9uYWlyLzUxUFkKZGVib25haXJuZXNzLzFNCmRlYm91Y2gvMTRHRFMKZGVicmlkZW1lbnQvMQpkZWJyaXMvMU0KZGVidC8xU00KZGVidG9yLzFNUwpkZWJ1Z2dlci8xUwpkZWJ1dC8xNEdNRApkZWJ1dGFudGUvMVNNCmRlY2FkZS8xTVMKZGVjYWRlbmNlLzFNCmRlY2FkZW5jeS8xTQpkZWNhZGVudC81MU1ZUwpkZWNhZi81MU1TCmRlY2FmZmVpbmF0ZS80RFNHCmRlY2Fnb24vMU1TCmRlY2FsLzE0TVMKZGVjYW1wbWVudC8xTQpkZWNhcGl0YXRlLzRYR05EUwpkZWNhcGl0YXRvci8xTVMKZGVjYXRobGV0ZS8xUwpkZWNhdGhsb24vMVNNCmRlY2F5LzE0R0QKZGVjZWFzZWQvNTFNCmRlY2VkZW50LzE1TVMKZGVjZWl0LzFNUwpkZWNlaXRmdWwvNVlQCmRlY2VpdGZ1bG5lc3MvMU0KZGVjZWl2ZS80VUdEUwpkZWNlaXZlci8xTVMKZGVjZWl2aW5nLzQxWQpkZWNlbGVyYXRlLzRHTkRTCmRlY2VsZXJhdGlvbi8xTQpkZWNlbGVyYXRvci8xU00KZGVjZW5jeS8xSVNNCmRlY2VubmlhbC8xNVNNCmRlY2VudC81SVkKZGVjZXB0aW9uLzFNUwpkZWNlcHRpdmUvNVlQCmRlY2VwdGl2ZW5lc3MvMU0KZGVjaWJlbC8xTVMKZGVjaWRhYmxlLzVVCmRlY2lkZS80QlpHRFJTCmRlY2lkZWQvNDUxWQpkZWNpZHVvdXMvNQpkZWNpbGl0ZXIvMU1TCmRlY2ltYWwvMTU0U00KZGVjaW1hbGl6YXRpb24vMQpkZWNpbWF0ZS80MURTR04KZGVjaW1hdGlvbi8xTQpkZWNpbWV0ZXIvMU1TCmRlY2lwaGVyYWJsZS81VUkKZGVjaXNpb24vMTRJTQpkZWNpc2lvbnMvMTQKZGVjaXNpdmUvNUlQWQpkZWNpc2l2ZW5lc3MvMUlNCmRlY2svMTRTR01ECmRlY2tjaGFpci8xUwpkZWNraGFuZC8xNFNNCmRlY2tsZS8xNFMKZGVjbGFtYXRpb24vMU1TCmRlY2xhbWF0b3J5LzUKZGVjbGFyYXRpb24vMU1TCmRlY2xhcmF0aXZlLzUxCmRlY2xhcmF0b3J5LzUKZGVjbGFyZS80RFJTWkdCCmRlY2xhcmVkLzQ1VQpkZWNsYXJlci8xTQpkZWNsZW5zaW9uLzFTTQpkZWNsaW5hdGlvbi8xTQpkZWNsaW5lLzE0RFJTTVpHCmRlY2xpbmVyLzFNCmRlY2xpdml0eS8xU00KZGVjb2hlcmVuY2UvMQpkZWNvbGxldGFnZS8xU00KZGVjb2xsZXRlLzUKZGVjb25nZXN0YW50LzFNUwpkZWNvbnN0cnVjdGlvbmlzbS8xCmRlY29yLzFNUwpkZWNvcmF0ZS80QUdOVkRTCmRlY29yYXRpbmcvNDFNCmRlY29yYXRpb24vMUFNCmRlY29yYXRpb25zLzEKZGVjb3JhdGl2ZS81MVkKZGVjb3JhdG9yLzFNUwpkZWNvcm91cy81SVkKZGVjb3JvdXNuZXNzLzFNCmRlY29ydW0vMU0KZGVjb3VwYWdlLzE0RFNNRwpkZWNveS8xNEdNRFMKZGVjcmVhc2luZy80MVkKZGVjcmVlLzE0TURTCmRlY3JlZWluZy80MQpkZWNyZW1lbnQvMTRHRFMKZGVjcmVwaXQvNQpkZWNyZXBpdHVkZS8xTQpkZWNyaW1pbmFsaXphdGlvbi8xTQpkZWNyeS80R0RTCmRlY3J5cHRpb24vMQpkZWRpY2F0ZS80NTFBR0RTCmRlZGljYXRpb24vMVNNCmRlZGljYXRvci8xU00KZGVkaWNhdG9yeS81MQpkZWR1Y2UvNEdEUwpkZWR1Y2libGUvNQpkZWR1Y3QvNEdWRApkZWR1Y3RpYmxlLzUxU00KZGVkdWN0aW9uLzFTTQpkZWR1Y3RpdmUvNVkKZGVlZC8xNEdECmRlZWpheS8xNE1TCmRlZW0vNDFBU0dECmRlZXAvNTFTUFhUTU5SWQpkZWVwZW4vNEdECmRlZXBmYWtlLzE0U00KZGVlcG5lc3MvMU0KZGVlci8xTQpkZWVyc2tpbi8xTQpkZWVyc3RhbGtlci8xUwpkZWYvMTVaCmRlZmFjZW1lbnQvMU0KZGVmYWNlci8xU00KZGVmYWxjYXRlLzREU1hHTgpkZWZhbGNhdGlvbi8xTQpkZWZhbWF0aW9uLzFNCmRlZmFtYXRvcnkvNQpkZWZhbWUvNDE1WkdEUlMKZGVmYW1lci8xTQpkZWZhdWx0ZXIvMVNNCmRlZmVhdC80MU1EUlpHUwpkZWZlYXRlZC81NFUKZGVmZWF0ZXIvMU0KZGVmZWF0aXNtLzFNCmRlZmVhdGlzdC81MU1TCmRlZmVjYXRlLzQ1R05EUwpkZWZlY2F0aW9uLzFNCmRlZmVjdC8xNE1ER1ZTCmRlZmVjdGlvbi8xTVMKZGVmZWN0aXZlLzUxTVBZUwpkZWZlY3RpdmVuZXNzLzFNCmRlZmVjdG9yLzFNUwpkZWZlbmRhbnQvNTFTTQpkZWZlbmRlZC81NFUKZGVmZW5lc3RyYXRpb24vMVMKZGVmZW5zZS8xNERTTUdWCmRlZmVuc2VsZXNzLzVZUApkZWZlbnNlbGVzc25lc3MvMU0KZGVmZW5zaWJsZS81SQpkZWZlbnNpYmx5L0kKZGVmZW5zaXZlLzUxTVlQCmRlZmVuc2l2ZW5lc3MvMU0KZGVmZXJlbmNlLzFNCmRlZmVyZW50aWFsLzVZCmRlZmVycmFsLzFNUwpkZWZlcnJlZC80NTEKZGVmZXJyaW5nLzQxCmRlZmZlci81CmRlZmZlc3QvNQpkZWZpYW50LzUxWQpkZWZpYnJpbGxhdGlvbi8xCmRlZmlicmlsbGF0b3IvMVMKZGVmaWNpZW5jeS8xU00KZGVmaWNpZW50LzUxCmRlZmljaXQvMVNNCmRlZmlsZW1lbnQvMU0KZGVmaW5hYmxlLzVJVQpkZWZpbmUvNDFBR0RTCmRlZmluZWQvNTRVCmRlZmluZXIvMU1TCmRlZmluaXRlLzUxSVlWUApkZWZpbml0ZW5lc3MvMUlNCmRlZmluaXRpb24vMUFNCmRlZmluaXRpb25zLzEKZGVmaW5pdGl2ZS81MVkKZGVmbGF0ZS80R05EUwpkZWZsYXRpb24vMU0KZGVmbGF0aW9uYXJ5LzUKZGVmbGVjdC80REdWUwpkZWZsZWN0aW9uLzFNUwpkZWZsZWN0b3IvMVNNCmRlZm9nZ2VyLzFTTQpkZWZvbGlhbnQvMVNNCmRlZm9saWF0ZS80NURTR04KZGVmb2xpYXRpb24vMU0KZGVmb2xpYXRvci8xTVMKZGVmb3JtaXR5LzFTTQpkZWZyYXVkLzREUlpHUwpkZWZyYXVkZXIvMU0KZGVmcmF5YWwvMU0KZGVmcm9jay80REcKZGVmcm9zdGVyLzFNUwpkZWZ0LzVQVFJZCmRlZnRuZXNzLzFNCmRlZnVuY3QvNTQxCmRlZnkvNDFHRFMKZGVnLzE0CmRlZ2VuZXJhY3kvMU0KZGVnZW5lcmF0ZS81MTRNVgpkZWdyYWRlLzRCCmRlZ3JlZS8xTVMKZGVoeWRyYXRvci8xU00KZGVoeWRyb2dlbmFzZS8xCmRlaWNlci8xTVMKZGVpZmljYXRpb24vMU0KZGVpZnkvNE5HRFMKZGVpZ24vNEdEUwpkZWlzdC81MU1TCmRlaXN0aWMvNQpkZWl0eS8xU00KZGVqZWN0LzQxR0RTCmRlamVjdGVkLzU0WQpkZWplY3Rpb24vMU0KZGVsYXkvMTRaRFIKZGVsZWN0YWJsZS81MQpkZWxlY3RhYmx5LwpkZWxlY3RhdGlvbi8xTQpkZWxlZ2F0ZS8xNEdECmRlbGV0ZS80MVhHTkRTCmRlbGV0ZXJpb3VzLzUKZGVsZXRpb24vMU0KZGVsZnQvMU0KZGVsZnR3YXJlLzFNCmRlbGkvMVNNCmRlbGliZXJhdGUvNTRYWVZQCmRlbGliZXJhdGVuZXNzLzFNCmRlbGljYWN5LzFJU00KZGVsaWNhdGUvNTFJWQpkZWxpY2F0ZW5lc3MvMU0KZGVsaWNhdGVzc2VuLzFTTQpkZWxpY2lvdXMvNVBZCmRlbGljaW91c25lc3MvMU0KZGVsaWdodGVkLzU0WQpkZWxpZ2h0ZnVsLzVZCmRlbGltaW5hdG9yCmRlbGluZWF0ZS80R05YRFMKZGVsaW5lYXRpb24vMU0KZGVsaW5xdWVuY3kvMVNNCmRlbGlucXVlbnQvNTFTTVkKZGVsaXF1ZXNjZS80RFNHCmRlbGlxdWVzY2VudC81CmRlbGlyaW91cy81WVAKZGVsaXJpb3VzbmVzcy8xTQpkZWxpcml1bS8xU00KZGVsaXZlci80NUFER1MKZGVsaXZlcmFibGUvNTFTCmRlbGl2ZXJhbmNlLzFNCmRlbGl2ZXJlZC80NVUKZGVsaXZlcmVyLzFTTQpkZWxsLzFTTQpkZWxwaGluaXVtLzFNUwpkZWx0YS8xNE1TCmRlbHVkZS80R0RTCmRlbHVnZS8xNE1HRFMKZGVsdXNpb24vMU1TCmRlbHVzaW9uYWwvNTEKZGVsdXNpdmUvNVkKZGVsdXhlLzUxCmRlbHZlLzQxWkdEUlMKZGVsdmVyLzFNCmRlbWFnb2dpYy81CmRlbWFnb2dpY2FsbHkvCmRlbWFnb2d1ZS8xNFNNCmRlbWFnb2d1ZXJ5LzFNCmRlbWFnb2d5LzFNCmRlbWFuZC8xNEdNRFMKZGVtYW5kaW5nLzU0VQpkZW1hcmNhdGUvNERTR05YCmRlbWFyY2F0aW9uLzFNCmRlbWVhbi80MUdEUwpkZW1lYW5vci8xTQpkZW1lbnRlZC81NFkKZGVtZW50aWEvMU0KZGVtZXNuZS8xTVMKZGVtaWdvZC8xTVMKZGVtaWdvZGRlc3MvMU1TCmRlbWlqb2huLzFTTQpkZW1pbW9uZGFpbmUvMVNNCmRlbWltb25kZS8xTQpkZW1pc2UvMTRNR0RTCmRlbWl0YXNzZS8xTVMKZGVtby8xNTRHTUQKZGVtb2NyYWN5LzFTTQpkZW1vY3JhdC8xTVMKZGVtb2NyYXRpYy81MVUKZGVtb2NyYXRpY2FsbHkvCmRlbW9jcmF0aXphdGlvbi8xTQpkZW1vY3JhdGl6ZS80R0RTCmRlbW9kZQpkZW1vZ3JhcGhlci8xU00KZGVtb2dyYXBoaWMvNTFTTQpkZW1vZ3JhcGhpY2FsbHkvCmRlbW9ncmFwaGljcy8xTQpkZW1vZ3JhcGh5LzFNCmRlbW9saXNoLzREU0cKZGVtb2xpdGlvbi8xTVMKZGVtb24vMU1TCmRlbW9uZXRpemF0aW9uLzFNCmRlbW9uaWFjLzUxCmRlbW9uaWFjYWwvNVkKZGVtb25pYy81CmRlbW9uaWNhbGx5LwpkZW1vbml6ZS80R0RTCmRlbW9ub2xvZ3kvMVNNCmRlbW9uc3RyYWJpbGl0eS8xCmRlbW9uc3RyYWJsZS81MUkKZGVtb25zdHJhYmx5LwpkZW1vbnN0cmF0ZS80WEdOVkRTCmRlbW9uc3RyYXRpb24vMU0KZGVtb25zdHJhdGl2ZS81MU1ZU1AKZGVtb25zdHJhdGl2ZW5lc3MvMU0KZGVtb25zdHJhdG9yLzFNUwpkZW1vdGUvNEdECmRlbW90aWMvNTEKZGVtb3VudC80CmRlbXVsY2VudC81MVNNCmRlbXVyLzQxVE1SUwpkZW11cmUvNTRQWQpkZW11cmVuZXNzLzFNCmRlbXVycmFsLzFTTQpkZW11cnJlZC80CmRlbXVycmVyLzFTTQpkZW11cnJpbmcvNDUxCmRlbi8xNE0KZGVuYXRpb25hbGl6YXRpb24vMQpkZW5hdHVyYXRpb24vMQpkZW5hdHVyZS80REcKZGVuZHJpdGUvMVNNCmRlbmd1ZS8xTQpkZW5pYWJpbGl0eS8xCmRlbmlhYmxlLzVVCmRlbmlhbC8xTVMKZGVuaWVyLzFNCmRlbmlncmF0ZS80RFNHTgpkZW5pZ3JhdGlvbi8xTQpkZW5pbS8xTVMKZGVuaXRyaWZpY2F0aW9uLzEKZGVuaXplbi8xNE1TCmRlbm9taW5hdGlvbmFsLzUKZGVub3RhdGl2ZS81CmRlbm91ZW1lbnQvMU1TCmRlbm91bmNlLzRMRFNHCmRlbm91bmNlbWVudC8xU00KZGVuc2UvNTFQWVRSCmRlbnNlbmVzcy8xTQpkZW5zaXR5LzFTTQpkZW50LzE0SVNHTUQKZGVudGFsLzUxWQpkZW50aWZyaWNlLzFTTQpkZW50aW4vMU0KZGVudGlzdC8xTVMKZGVudGlzdHJ5LzFNCmRlbnRpdGlvbi8xTQpkZW50dXJlLzFJTVMKZGVudWNsZWFyaXplLzRHRFMKZGVudWRhdGlvbi8xTQpkZW51ZGUvNEdEUwpkZW51bmNpYXRpb24vMVNNCmRlbnkvNFpHRFJTCmRlb2RvcmFudC8xNVNNCmRlb2Rvcml6YXRpb24vMU0KZGVvZG9yaXplLzREUlNaRwpkZW9kb3JpemVyLzFNCmRlcGFydGVkLzQ1MU0KZGVwYXJ0bWVudC8xTVMKZGVwYXJ0bWVudGFsLzVZCmRlcGFydG1lbnRhbGl6YXRpb24vMU0KZGVwYXJ0bWVudGFsaXplLzRHRFMKZGVwYXJ0dXJlLzFTTQpkZXBlbmRhYmlsaXR5LzFNCmRlcGVuZGFibGUvNTFVCmRlcGVuZGFibHkvCmRlcGVuZGVuY2UvMUlNCmRlcGVuZGVuY3kvMVNNCmRlcGVuZGVudC81MUlNWVMKZGVwaWN0LzQ1R0RTCmRlcGljdGlvbi8xTVMKZGVwaWxhdG9yeS81MVNNCmRlcGxldGUvNEdORFMKZGVwbGV0aW9uLzFNCmRlcGxvcmFibHkvCmRlcGxvcmUvNEJHRFMKZGVwbG95LzQxQUxHRFMKZGVwbG95bWVudC8xQU0KZGVwbG95bWVudHMvMQpkZXBvbmVudC81MU1TCmRlcG9ydGF0aW9uLzFNUwpkZXBvcnRlZS8xTVMKZGVwb3J0bWVudC8xTQpkZXBvc2l0LzE0QUdNRFMKZGVwb3NpdG9yLzFNUwpkZXBvc2l0b3J5LzFTTQpkZXByYXZlLzRHRFMKZGVwcmF2aXR5LzFTTQpkZXByZWNhdGUvNEdORFMKZGVwcmVjYXRpbmcvNDVZCmRlcHJlY2F0aW9uLzFNCmRlcHJlY2F0b3J5LzUKZGVwcmVjaWF0ZS80RFNHTgpkZXByZWNpYXRpb24vMU0KZGVwcmVkYXRpb24vMVNNCmRlcHJlc3NhbnQvMTVTTQpkZXByZXNzaW5nLzU0WQpkZXByZXNzaW9uLzFTTQpkZXByZXNzaXZlLzUxU00KZGVwcmVzc29yLzFNUwpkZXByZXNzdXJpemF0aW9uLzEKZGVwcml2ZS80R0RTCmRlcHJvZ3JhbW1pbmcvNDEKZGVwdGgvMU0KZGVwdGhzLzEKZGVwdXRhdGlvbi8xTVMKZGVwdXRlLzQxRFNHCmRlcHV0aXplLzREU0cKZGVwdXR5LzE0U00KZGVyYWlsbGV1ci8xU00KZGVyYWlsbWVudC8xU00KZGVyYW5nZW1lbnQvMU0KZGVyYnkvMVNNCmRlcmVsaWN0LzUxNE1TCmRlcmVsaWN0aW9uLzFNCmRlcmlkZS80R0RTCmRlcmlzaW9uLzFNCmRlcmlzaXZlLzUxUFkKZGVyaXNpdmVuZXNzLzFNCmRlcmlzb3J5LzUKZGVyaXZhdGlvbi8xTVMKZGVyaXZhdGl2ZS81MU1TCmRlcml2ZS80QgpkZXJtYWwvNTEKZGVybWF0aXRpcy8xTQpkZXJtYXRvbG9naWNhbC81MQpkZXJtYXRvbG9naXN0LzFTTQpkZXJtYXRvbG9neS8xTQpkZXJtaXMvMU0KZGVyb2dhdGUvNDVEU0dOCmRlcm9nYXRpb24vMU0KZGVyb2dhdG9yaWx5LwpkZXJvZ2F0b3J5LzUxCmRlcnJpY2svMTRTTQpkZXJyaWVyZS8xU00KZGVycmluZ2VyLzFTTQpkZXJ2LzEKZGVydmlzaC8xTVMKZGVzYWxpbmF0ZS80R05EUwpkZXNhbGluYXRpb24vMU0KZGVzYWxpbml6YXRpb24vMU0KZGVzYWxpbml6ZS80R0RTCmRlc2NhbnQvMTRNCmRlc2NlbmQvNDFGR0RTCmRlc2NlbmRhbnQvNTFNUwpkZXNjZW5kZXIvMQpkZXNjcmliYWJsZS81SQpkZXNjcmliZS80QlpHRFIKZGVzY3JpYmVyLzFNCmRlc2NyaXB0aW9uLzFTTQpkZXNjcmlwdGl2ZS81MVBZCmRlc2NyaXB0aXZlbmVzcy8xTQpkZXNjcmlwdG9yLzFTCmRlc2NyeS80R0RTCmRlc2VjcmF0ZS80NURTR04KZGVzZWNyYXRpb24vMU0KZGVzZWxlY3Rpb24vMQpkZXNlcnQvMTU0U0RSWkdNCmRlc2VydGVyLzFNCmRlc2VydGlmaWNhdGlvbi8xCmRlc2VydGlvbi8xU00KZGVzZXJ2ZWQvNTRVWQpkZXNlcnZpbmcvNTE0VQpkZXNpY2NhbnQvMTVTTQpkZXNpY2NhdGUvNDUxRFNHTgpkZXNpY2NhdGlvbi8xTQpkZXNpY2NhdG9yLzFTTQpkZXNpZGVyYXRhLzEKZGVzaWRlcmF0dW0vMU0KZGVzaWduLzE0QVNERwpkZXNpZ25hdGUvNTREU0dOWApkZXNpZ25hdGlvbi8xTQpkZXNpcmFiaWxpdHkvMVVNCmRlc2lyYWJsZW5lc3MvMU0KZGVzaXJhYmx5L1UKZGVzaXJlLzQxQgpkZXNpcmVkLzQ1VQpkZXNpcm91cy81CmRlc2lzdC80U0RHCmRlc2svMTRTTQpkZXNraWxsLzRHCmRlc2t0b3AvMTVTTQpkZXNvbGF0ZS81NFBEU1lHTgpkZXNvbGF0ZW5lc3MvMU0KZGVzb2xhdGlvbi8xTQpkZXNwYWlyLzQxU01ERwpkZXNwYWlyaW5nLzU0MVkKZGVzcGVyYWRvLzFNCmRlc3BlcmFkb2VzLzEKZGVzcGVyYXRlLzUxWU5QCmRlc3BlcmF0ZW5lc3MvMU0KZGVzcGVyYXRpb24vMU0KZGVzcGljYWJsZS81MQpkZXNwaWNhYmx5LwpkZXNwaXNlLzREU0cKZGVzcGl0ZS8rMTQKZGVzcG9pbG1lbnQvMU0KZGVzcG9uZGVuY2UvMU0KZGVzcG9uZGVuY3kvMU0KZGVzcG9uZGVudC81WQpkZXNwb3RpYy81CmRlc3BvdGljYWxseS8KZGVzcG90aXNtLzFNCmRlc3NlcnQvMVNNCmRlc3NlcnRzcG9vbi8xUwpkZXNzZXJ0c3Bvb25mdWwvMVMKZGVzdGluYXRpb24vMVNNCmRlc3RpbmUvNERTRwpkZXN0aW55LzFTTQpkZXN0aXR1dGUvNTROCmRlc3RpdHV0aW9uLzFNCmRlc3Ryb3kvNFNaR0RSCmRlc3Ryb3llci8xTQpkZXN0cnVjdC80R1ZNRFMKZGVzdHJ1Y3RpYmlsaXR5LzFJTQpkZXN0cnVjdGlibGUvNUkKZGVzdHJ1Y3Rpb24vMU0KZGVzdHJ1Y3RpdmUvNVBZCmRlc3RydWN0aXZlbmVzcy8xTQpkZXN1ZXR1ZGUvMU0KZGVzdWx0b3JpbHkvCmRlc3VsdG9yeS81CmRldGFjaC80QkxHRFMKZGV0YWNobWVudC8xTVMKZGV0YWluLzRMR0RTCmRldGFpbmVlLzFNUwpkZXRhaW5tZW50LzFNCmRldGVjdC80NVNER1ZCCmRldGVjdGFibGUvNVUKZGV0ZWN0ZWQvNTRVCmRldGVjdGlvbi8xTQpkZXRlY3RpdmUvMTVTTQpkZXRlY3Rvci8xU00KZGV0ZW50ZS8xU01OWApkZXRlbnRpb24vMU0KZGV0ZXIvNFNMCmRldGVyZ2VudC8xNVNNCmRldGVyaW9yYXRlLzREU0dOCmRldGVyaW9yYXRpb24vMU0KZGV0ZXJtZW50LzFNCmRldGVybWluYWJsZS81MUkKZGV0ZXJtaW5hbnQvMTVTTQpkZXRlcm1pbmF0ZS81MTQKZGV0ZXJtaW5lLzRBR0RTCmRldGVybWluZWQvNTRVCmRldGVybWluZWRseS8KZGV0ZXJtaW5lci8xU00KZGV0ZXJtaW5pc20vMU0KZGV0ZXJtaW5pc3RpYy81CmRldGVybWluaXN0aWNhbGx5LwpkZXRlcnJlZC80VQpkZXRlcnJlbmNlLzFNCmRldGVycmVudC81MU1TCmRldGVycmluZy80CmRldGVzdGFibHkvCmRldGVzdGF0aW9uLzFNCmRldGhyb25lLzREU0xHCmRldGhyb25lbWVudC8xTQpkZXRvbmF0ZS80R05EU1gKZGV0b25hdGlvbi8xTQpkZXRvbmF0b3IvMVNNCmRldG94LzE0TURTRwpkZXRveGlmaWNhdGlvbi8xTQpkZXRveGlmeS80RFNHTgpkZXRyYWN0LzRHRApkZXRyaW1lbnQvMTRTTQpkZXRyaW1lbnRhbC81MVkKZGV0cml0dXMvMU0KZGV1Y2UvMVNNCmRldXRlcml1bS8xTQpkZXZhc3RhdGUvNEdORFMKZGV2YXN0YXRpbmcvNTRZCmRldmFzdGF0aW9uLzFNCmRldmFzdGF0b3IvMU1TCmRldmVsb3AvNEFTR0RMCmRldmVsb3BlZC81NFUKZGV2ZWxvcGVyLzFTTQpkZXZlbG9wbWVudC8xQVNNCmRldmVsb3BtZW50YWwvNTFZCmRldmlhbmNlLzFNCmRldmlhbmN5LzFNCmRldmlhbnQvNTFTTQpkZXZpYXRlLzQxNURTTUdOWApkZXZpYXRpbmcvNFUKZGV2aWF0aW9uLzFNCmRldmlsLzIxNFNNREdMCmRldmlsaXNoLzVZUApkZXZpbGlzaG5lc3MvMU0KZGV2aWxtZW50LzFNCmRldmlscnkvMVNNCmRldmlsdHJ5LzFTTQpkZXZpb3VzLzVZUApkZXZpb3VzbmVzcy8xTQpkZXZvaWQvNTQKZGV2b2x1dGlvbi8xTQpkZXZvbHZlLzREU0cKZGV2b3RlZC80NVkKZGV2b3RlZS8xU00KZGV2b3Rpb24vMU1TCmRldm90aW9uYWwvMTVTTQpkZXZvdXIvNFNERwpkZXZvdXQvNTFQUllUCmRldm91dG5lc3MvMU0KZGV3LzE0TQpkZXdiZXJyeS8xU00KZGV3Y2xhdy8xU00KZGV3ZHJvcC8xU00KZGV3aW5lc3MvMU0KZGV3bGFwLzFTTQpkZXd5LzVSVFAKZGV4dGVyaXR5LzFNCmRleHRlcm91cy81WVAKZGV4dGVyb3VzbmVzcy8xTQpkZXh0cm9zZS8xTQpkaGFybWEvMQpkaG90aS8xU00KZGhvdy8xTVMKZGlhYmV0ZXMvMU0KZGlhYmV0aWMvNTFTTQpkaWFib2xpYy81CmRpYWJvbGljYWwvNVkKZGlhY3JpdGljLzUxTVMKZGlhY3JpdGljYWwvNTEKZGlhZGVtLzE0U00KZGlhZXJlc2VzLzEKZGlhZXJlc2lzLzFNCmRpYWdub3NlLzREU0cKZGlhZ25vc2lzLzE0TQpkaWFnbm9zdGljLzUxUwpkaWFnbm9zdGljYWxseS8KZGlhZ25vc3RpY2lhbi8xU00KZGlhZ25vc3RpY3MvMU0KZGlhZ29uYWwvNTFTTVkKZGlhZ3JhbS8xNFNNCmRpYWdyYW1tYXRpYy81CmRpYWdyYW1tYXRpY2FsbHkvCmRpYWdyYW1tZWQvNApkaWFncmFtbWluZy80CmRpYWwvMTRBTURHUwpkaWFsZWN0LzFTTQpkaWFsZWN0YWwvNQpkaWFsZWN0aWMvMTVTTQpkaWFsZWN0aWNhbC81CmRpYWxlY3RpY3MvMU0KZGlhbGluZy80MVMKZGlhbG9nLzE0CmRpYWxvZ3VlLzE0U00KZGlhbHlzZXMvMQpkaWFseXNpcy8xTQpkaWFseXplcy80CmRpYW0vMQpkaWFtYWduZXRpYy81MQpkaWFtYWduZXRpc20vMQpkaWFtYW50ZS8xNQpkaWFtZXRlci8xU00KZGlhbWV0cmljLzUKZGlhbWV0cmljYWwvNVkKZGlhbW9uZC8xNTRTTQpkaWFtb25kYmFjay8xTVMKZGlhcGFzb24vMVNNCmRpYXBlci8xNFNNREcKZGlhcGhhbm91cy81CmRpYXBocmFnbS8xNFNNCmRpYXBocmFnbWF0aWMvNQpkaWFyaXN0LzFTTQpkaWFycmhlYS8xTQpkaWFyeS8xNDVTTQpkaWFzcG9yYS8xU00KZGlhc3Rhc2UvMU0KZGlhc3RvbGUvMU0KZGlhc3RvbGljLzUxCmRpYXRoZXJteS8xTQpkaWF0b20vMVNNCmRpYXRvbWljLzUxCmRpYXRvbmljLzUKZGlhdHJpYmUvMVNNCmRpYXplcGFtLzEKZGliYmxlLzE0RFNNRwpkaWJzLzE0TQpkaWNlLzE0R0RTCmRpY2VzLzQxSQpkaWNleS81CmRpY2hvdG9tb3VzLzUKZGljaG90b215LzFTTQpkaWNpZXIvNQpkaWNpZXN0LzUKZGljay8xNE1SWFpTNgpkaWNrZXIvNDFERwpkaWNrZXkvMTVTTQpkaWNraGVhZC8xUwpkaWNreWJpcmQvUwpkaWNvdHlsZWRvbi8xTVMKZGljb3R5bGVkb25vdXMvNQpkaWN0LzEKZGljdGEvMQpkaWN0YXRlLzE0RFNNR05YCmRpY3RhdGlvbi8xTQpkaWN0YXRvci8xU00KZGljdGF0b3JpYWwvNVkKZGljdGF0b3JzaGlwLzFTTQpkaWN0aW9uLzFNCmRpY3Rpb25hcnkvMTRTTQpkaWN0dW0vMU0KZGlkLzRBVQpkaWRhY3RpYy81MQpkaWRhY3RpY2FsbHkvCmRpZGRsZS8xNERSU1pHCmRpZGRsZXIvMU0KZGlkZGx5LzEKZGlkZGx5c3F1YXQvMQpkaWRkdW1zLwpkaWRnZXJpZG9vLzE0UwpkaWRuJ3QvNApkaWRvLzFNCmRpZG9lcy8xCmRpZHN0LzQKZGllLzQxRFNNCmRpZWxlY3RyaWMvMTVNUwpkaWVyZXNlcy8xCmRpZXJlc2lzLzFNCmRpZXNlbC8xNFNNREcKZGlldC8xNTRNRFJaR1MKZGlldGFyeS81MVNNCmRpZXRlci8xTQpkaWV0ZXRpYy81UwpkaWV0ZXRpY3MvMU0KZGlldGl0aWFuLzFNUwpkaWZmLzE0NTJEUlpHUwpkaWZmZXIvNDFERwpkaWZmZXJlbmNlLzE0SU0KZGlmZmVyZW5jZXMvMTQKZGlmZmVyZW50LzUxSVkKZGlmZmVyZW50aWFibGUvNQpkaWZmZXJlbnRpYWwvNTFTTQpkaWZmZXJlbnRpYXRlLzQxRFNHTgpkaWZmZXJlbnRpYXRlZC80NVUKZGlmZmVyZW50aWF0aW9uLzFNCmRpZmZpY3VsdC81NFkKZGlmZmljdWx0eS8xU00KZGlmZmlkZW5jZS8xTQpkaWZmaWRlbnQvNVkKZGlmZnJhY3QvNEdTRApkaWZmcmFjdGlvbi8xTQpkaWZmdXNlLzQ1RFNZR05WUApkaWZmdXNlbmVzcy8xTQpkaWZmdXNpb24vMU0KZGlmZnVzaXZpdHkvMQpkaWcvNDFTTQpkaWdlcmF0aS8xTQpkaWdlc3QvNDFTTURHVgpkaWdlc3RlZC80VQpkaWdlc3RpYmlsaXR5LzFNCmRpZ2VzdGlibGUvNUkKZGlnZXN0aW9uLzFJTQpkaWdlc3Rpb25zLzEKZGlnZXN0aXZlLzUxUwpkaWdnZXIvMVNNCmRpZ2dpbmcvMTRTCmRpZ2dpbmdzLzFNCmRpZ2ljYW0vMVMKZGlnaXQvMTRTTQpkaWdpdGFsLzUxWQpkaWdpdGFsaXMvMU0KZGlnaXRpemF0aW9uLzEKZGlnaXRpemUvNEdEUwpkaWduaWZpZWQvNTRVCmRpZ25pZnkvNERTRwpkaWduaXRhcnkvMTVTTQpkaWduaXR5LzFJU00KZGlncmFwaC8xTQpkaWdyYXBocy8xCmRpZ3Jlc3MvNEdWRFMKZGlncmVzc2lvbi8xTVMKZGlrZS8xNE1HRFMKZGlrdGF0LzFTCmRpbGFwaWRhdGVkLzQ1CmRpbGFwaWRhdGlvbi8xTQpkaWxhdGF0aW9uLzFNCmRpbGF0ZS80RFNHTgpkaWxhdGlvbi8xTQpkaWxhdG9yLzFTTQpkaWxhdG9yeS81CmRpbGRvLzE0UwpkaWxlbW1hLzFNUwpkaWxldHRhbnRlLzE1U00KZGlsZXR0YW50aXNoLzUKZGlsZXR0YW50aXNtLzFNCmRpbGlnZW5jZS8xTQpkaWxpZ2VudC81WQpkaWxsLzE0TVMKZGlsbHkvNTFTTQpkaWxseWRhbGx5LzREU0cKZGlsdWVudC8xNQpkaWx1dGUvNDUxRFNHTlgKZGlsdXRlZC80NVUKZGlsdXRpb24vMU0KZGltLzUxNFBTUlkKZGltZS8xNE1TCmRpbWVuc2lvbi8xNFNNCmRpbWVuc2lvbmFsLzUKZGltZW5zaW9ubGVzcy81CmRpbWluaXNoLzRHRFMKZGltaW5pc2hlZC80NVUKZGltaW51ZW5kby8xNVNNCmRpbWludXRpb24vMVNNCmRpbWludXRpdmUvNTFTTQpkaW1pdHkvMU0KZGltbWVkLzRVCmRpbW1lci8xNVNNCmRpbW1lc3QvNQpkaW1taW5nLzQxCmRpbW5lc3MvMU0KZGltcGxlLzE0RFNNRwpkaW1wbHkvNQpkaW13aXQvMVNNCmRpbXdpdHRlZC81CmRpbi8xNFpHU01EUgpkaW5hci8xU00KZGluZS80MVMKZGluZXIvMU0KZGluZXR0ZS8xTVMKZGluZy8xNE1ERwpkaW5nYmF0LzFNUwpkaW5naHkvMTRTTQpkaW5naWx5LwpkaW5naW5lc3MvMU0KZGluZ2xlLzE1U00KZGluZ28vMTRNCmRpbmdvZXMvMTQKZGluZ3VzLzFNUwpkaW5neS81MTRSUFQKZGluay8xNDVSCmRpbmt5LzUxUlNNVApkaW5uZWQvNApkaW5uZXIvMTRTTURHCmRpbm5lcnRpbWUvMU0KZGlubmVyd2FyZS8xTQpkaW5uaW5nLzQxCmRpbm9zYXVyLzFTTQpkaW50LzE0TQpkaW9jZXNhbi81MU1TCmRpb2Nlc2UvMU1TCmRpb2RlLzFTTQpkaW9yYW1hLzFTTQpkaW94aWRlLzFTTQpkaW94aW4vMVNNCmRpcC8xNFNNCmRpcGh0aGVyaWEvMU0KZGlwaHRob25nLzFTTQpkaXBsb2lkLzUxU00KZGlwbG9tYS8xU00KZGlwbG9tYWN5LzFNCmRpcGxvbWF0LzFNUwpkaXBsb21hdGEvMQpkaXBsb21hdGljLzUxVQpkaXBsb21hdGljYWxseS8KZGlwbG9tYXRpc3QvMU1TCmRpcGxvcGlhLzEKZGlwb2xlLzFTTQpkaXBwZWQvNDUKZGlwcGVyLzFTTQpkaXBwaW5nLzQxCmRpcHB5LzVSVApkaXBzby8xUwpkaXBzb21hbmlhLzFNCmRpcHNvbWFuaWFjLzFNUwpkaXBzdGljay8xNFNNCmRpcHRlcm91cy81CmRpcHR5Y2gvMU0KZGlwdHljaHMvMQpkaXJlLzVZVFIKZGlyZWN0LzU0QVNER1ZUCmRpcmVjdGVyLzUxCmRpcmVjdGlvbi8xSU0KZGlyZWN0aW9uYWwvNTEKZGlyZWN0aW9ubGVzcy81CmRpcmVjdGlvbnMvMQpkaXJlY3RpdmUvNTFTTQpkaXJlY3RseS83CmRpcmVjdG5lc3MvMUlNCmRpcmVjdG9yLzFNUwpkaXJlY3RvcmF0ZS8xU00KZGlyZWN0b3JpYWwvNQpkaXJlY3RvcnNoaXAvMVNNCmRpcmVjdG9yeS8xNVNNCmRpcmVmdWwvNQpkaXJnZS8xNFNNCmRpcmlnaWJsZS8xNU1TCmRpcmsvMTRNUwpkaXJuZGwvMVNNCmRpcnQvMTRNCmRpcnRiYWxsLzFTCmRpcnRpbHkvCmRpcnRpbmVzcy8xTQpkaXJ0eS81NERSU1RHUApkaXMvNDE4TQpkaXNhYmxlLzQ1RFNHTApkaXNhYmxlbWVudC8xTQpkaXNhbWJpZ3VhdGUvNE4KZGlzYXBwb2ludGluZy81NFkKZGlzYXJtaW5nLzU0WQpkaXNhc3NlbWJseS8xCmRpc2FzdHJvdXMvNVkKZGlzYmFuZG1lbnQvMU0KZGlzYmFybWVudC8xTQpkaXNiZWxpZXZpbmcvNDVZCmRpc2J1cnNhbC8xTQpkaXNidXJzZS80RFNHTApkaXNidXJzZW1lbnQvMU1TCmRpc2MvMTRNCmRpc2Nlcm4vNExTREcKZGlzY2VybmlibGUvNUkKZGlzY2VybmlibHkvCmRpc2Nlcm5pbmcvNDUxWQpkaXNjZXJubWVudC8xTQpkaXNjaGFyZ2VkLzRVCmRpc2NpcGxlLzE0U00KZGlzY2lwbGVzaGlwLzFNCmRpc2NpcGxpbmFyaWFuLzE1U00KZGlzY2lwbGluYXJ5LzUxCmRpc2NpcGxpbmUvMTREU01HCmRpc2NpcGxpbmVkLzU0VQpkaXNjbG9zZS80MURTRwpkaXNjbG9zZWQvNDVVCmRpc2NvLzE0TUcKZGlzY29ncmFwaHkvMVNNCmRpc2NvbG9yYXRpb24vMVMKZGlzY29tYm9idWxhdGUvNERTR04KZGlzY29tYm9idWxhdGlvbi8xTQpkaXNjb21maXQvNDVERwpkaXNjb21maXR1cmUvMU0KZGlzY29tbW9kZS80REcKZGlzY29uY2VydGluZy81WQpkaXNjb25uZWN0ZWQvNDVQWQpkaXNjb25uZWN0ZWRuZXNzLzFNCmRpc2NvbnNvbGF0ZS81MVkKZGlzY29yZGFuY2UvMU0KZGlzY29yZGFudC81WQpkaXNjb3RoZXF1ZS8xU00KZGlzY291cmFnZS80MUxHRFMKZGlzY291cmFnZW1lbnQvMVNNCmRpc2NvdXJhZ2luZy80NTFZCmRpc2NvdmVyLzRBU0RHCmRpc2NvdmVyZWQvNFUKZGlzY292ZXJlci8xTVMKZGlzY292ZXJ5LzFBU00KZGlzY3JlZXQvNVBSWVQKZGlzY3JlZXRuZXNzLzFNCmRpc2NyZXBhbmN5LzFTTQpkaXNjcmVwYW50LzUxCmRpc2NyZXRlLzVQWU4KZGlzY3JldGVuZXNzLzFNCmRpc2NyZXRpb24vMUlNCmRpc2NyZXRpb25hcnkvNQpkaXNjcmltaW5hbnQvMTUKZGlzY3JpbWluYXRlLzQ1R05EUwpkaXNjcmltaW5hdGluZy81NFUKZGlzY3JpbWluYXRpb24vMU0KZGlzY3JpbWluYXRvci8xTVMKZGlzY3JpbWluYXRvcnkvNQpkaXNjdXJzaXZlbmVzcy8xTQpkaXNjdXMvMU1TCmRpc2N1c3NhbnQvMVNNCmRpc2N1c3Npb24vMVNNCmRpc2RhaW4vMTRTTURHCmRpc2RhaW5mdWwvNVkKZGlzZW1ib3dlbC80U0RMRwpkaXNlbWJvd2VsbWVudC8xTQpkaXNmaWd1cmVtZW50LzFTTQpkaXNmcmFuY2hpc2VtZW50LzFNCmRpc2dvcmdlbWVudC8xTQpkaXNncnVudGxlLzRMR0RTCmRpc2dydW50bGVtZW50LzFNCmRpc2d1aXNlLzE0R0QKZGlzZ3Vpc2VkLzQ1VQpkaXNndXN0ZWQvNTRZCmRpc2d1c3RpbmcvNTRZCmRpc2gvMTRNRFNHCmRpc2hhYmlsbGUvMU0KZGlzaGFybW9uaW91cy81CmRpc2hjbG90aC8xTQpkaXNoY2xvdGhzLzEKZGlzaGVhcnRlbmluZy81NFkKZGlzaGV2ZWwvNERHTFMKZGlzaGV2ZWxtZW50LzFNCmRpc2hwYW4vMVNNCmRpc2hyYWcvMVNNCmRpc2h0b3dlbC8xTVMKZGlzaHdhcmUvMU0KZGlzaHdhc2hlci8xTVMKZGlzaHdhdGVyLzFNCmRpc2h5LzUxCmRpc2lsbHVzaW9uLzQxR0xECmRpc2lsbHVzaW9ubWVudC8xTQpkaXNpbmZlY3RhbnQvNTFNUwpkaXNpbmZlY3Rpb24vMU0KZGlzaW50ZXJlc3RlZC81UFkKZGlzaW50ZXJlc3RlZG5lc3MvMU0KZGlzam9pbnRlZC81WVAKZGlzam9pbnRlZG5lc3MvMU0KZGlzanVuY3RpdmUvNTEKZGlzanVuY3R1cmUvMQpkaXNrLzE0TVMKZGlza2V0dGUvMU1TCmRpc2xvZGdlLzRHRFMKZGlzbWFsLzUxWQpkaXNtYW50bGVtZW50LzFNCmRpc21heS80MVNNREcKZGlzbWF5ZWQvNDVVCmRpc21lbWJlci80TEdECmRpc21lbWJlcm1lbnQvMU0KZGlzbWlzc2l2ZS81WQpkaXNvcmRlci8xNFkKZGlzb3JnYW5pemF0aW9uLzFNCmRpc3BhcmFnZS8xNERTR0wKZGlzcGFyYWdlbWVudC8xTQpkaXNwYXJhZ2luZy81NDFZCmRpc3BhcmF0ZS81MVkKZGlzcGF0Y2hlci8xTVMKZGlzcGVsLzQxUwpkaXNwZWxsZWQvNApkaXNwZWxsaW5nLzQKZGlzcGVuc2FyeS8xU00KZGlzcGVuc2F0aW9uLzFNUwpkaXNwZW5zZS80MUJaR0RSUwpkaXNwZW5zZXIvMU0KZGlzcGVyc2FsLzFNCmRpc3BlcnNlLzQ1R05EUwpkaXNwZXJzaW9uLzFNCmRpc3Bpcml0LzRHRFMKZGlzcGxlYXN1cmUvMTRNCmRpc3Bvc2FibGUvMTVTTQpkaXNwb3NhbC8xU00KZGlzcG9zZWQvNDVJCmRpc3Bvc2l0aW9uLzE0SVNNCmRpc3Bvc3Nlc3Npb24vMU0KZGlzcHJvb2YvMVNNCmRpc3Byb3BvcnRpb25hbC81CmRpc3Byb3ZlLzRCCmRpc3B1dGFibGUvNUkKZGlzcHV0YWJseS9JCmRpc3B1dGFudC8xNU1TCmRpc3B1dGF0aW9uLzFTTQpkaXNwdXRhdGlvdXMvNVkKZGlzcHV0ZS8xNERSU01aR0IKZGlzcHV0ZWQvNTRVCmRpc3B1dGVyLzFNCmRpc3F1aWV0LzE1NEdTTUQKZGlzcXVpc2l0aW9uLzFNUwpkaXNyZWdhcmRmdWwvNQpkaXNyZXBhaXIvMTRNCmRpc3JlcHV0ZS8xNE1CCmRpc3J1cHQvNDVHVlNECmRpc3J1cHRpb24vMVNNCmRpc3J1cHRpdmUvNVkKZGlzc2VjdC80U0RHCmRpc3NlZC80CmRpc3NlbWJsYW5jZS8xTQpkaXNzZW1ibGUvNFpHRFJTCmRpc3NlbWJsZXIvMU0KZGlzc2VtaW5hdGUvNEdORFMKZGlzc2VtaW5hdGlvbi8xTQpkaXNzZW5zaW9uLzFTTQpkaXNzZW50LzQxU01EUlpHCmRpc3NlbnRlci8xTQpkaXNzZXJ0YXRpb24vMVNNCmRpc3Nlcy8xNApkaXNzaWRlbmNlLzFNCmRpc3NpZGVudC81MU1TCmRpc3NpbWlsYXIvNTEKZGlzc2ltaWxpdHVkZS8xUwpkaXNzaW5nLzQxCmRpc3NpcGF0ZS80R05EUwpkaXNzaXBhdGlvbi8xTQpkaXNzb2NpYXRlLzRHTlZEUwpkaXNzb2NpYXRpb24vMU0KZGlzc29sdWJsZS81SQpkaXNzb2x1dGUvNTFZTlAKZGlzc29sdXRlbmVzcy8xTQpkaXNzb2x2ZS80MUFHRFMKZGlzc29sdmVkLzU0VQpkaXNzb25hbmNlLzFTTQpkaXNzb25hbnQvNQpkaXNzdWFkZS80R0RTCmRpc3N1YXNpdmUvNTEKZGlzdC8xCmRpc3RhZmYvMTVTTQpkaXN0YWwvNVkKZGlzdGFuY2UvMTREU01HCmRpc3RhbnQvNVkKZGlzdGFzdGUvMTRTTQpkaXN0ZW1wZXIvMTRNCmRpc3RlbnRpb24vMVNNCmRpc3RpbGxhdGUvMVNNTlgKZGlzdGlsbGF0aW9uLzFNCmRpc3RpbGxlcnkvMVNNCmRpc3RpbmN0LzU0SVlUVlAKZGlzdGluY3Rlci81CmRpc3RpbmN0aW9uLzFTTQpkaXN0aW5jdGl2ZS81MVlQCmRpc3RpbmN0aXZlbmVzcy8xTQpkaXN0aW5jdG5lc3MvMUlNCmRpc3Rpbmd1aXNoLzRHRFNCCmRpc3Rpbmd1aXNoYWJsZS81SQpkaXN0aW5ndWlzaGVkLzU0VQpkaXN0b3J0LzQ1R0RSCmRpc3RvcnRpb24vMU1TCmRpc3RyYWN0LzQ1REcKZGlzdHJhY3RlZC81NFkKZGlzdHJhY3Rpb24vMVMKZGlzdHJhaXQvNQpkaXN0cmF1Z2h0LzUKZGlzdHJlc3MvMTRERwpkaXN0cmVzc2Z1bC81CmRpc3RyZXNzaW5nLzU0WQpkaXN0cmlidXRlLzRBR05WRFMKZGlzdHJpYnV0ZWQvNDVVCmRpc3RyaWJ1dGlvbi8xQU0KZGlzdHJpYnV0aW9uYWwvNQpkaXN0cmlidXRpb25zLzEKZGlzdHJpYnV0aXZlLzUxWQpkaXN0cmlidXRvcidzCmRpc3RyaWJ1dG9yLzFBUwpkaXN0cmlidXRvcnNoaXAvMVMKZGlzdHJpY3QncwpkaXN0cmljdC8xNDVBUwpkaXN0dXJiLzQxWkdTRFIKZGlzdHVyYmFuY2UvMVNNCmRpc3R1cmJlZC81NFUKZGlzdHVyYmVyLzFNCmRpc3R1cmJpbmcvNTRZCmRpc3VuaW9uLzFNCmRpc3lsbGFiaWMvNTEKZGl0Y2gvMTRNRFNHCmRpdGhlci80MVNNRFJaRwpkaXRoZXJlci8xTQpkaXRyYW5zaXRpdmUvNTEKZGl0c3kvNQpkaXR0by8xNFNNREcKZGl0dHkvMTRTTQpkaXR6LzFNUwpkaXVyZXRpYy81MU1TCmRpdXJuYWwvNTFZCmRpdi8xNApkaXZhLzFNUwpkaXZhbGVudC81MQpkaXZhbi8xU00KZGl2ZS80MU1aVEdEUlMKZGl2ZXIvMU0KZGl2ZXJnZS80RFNHCmRpdmVyZ2VuY2UvMU1TCmRpdmVyZ2VudC81CmRpdmVyc2UvNVhZTlAKZGl2ZXJzZW5lc3MvMU0KZGl2ZXJzaWZpY2F0aW9uLzFNCmRpdmVyc2lmeS80R05EUwpkaXZlcnNpb24vMU0KZGl2ZXJzaW9uYXJ5LzUKZGl2ZXJzaXR5LzFTTQpkaXZlcnQvNFNERwpkaXZlcnRpY3VsaXRpcy8xTQpkaXZlc3QvNFNMREcKZGl2ZXN0aXR1cmUvMU1TCmRpdmVzdG1lbnQvMU0KZGl2aWRlLzQxRFJTTVpHQgpkaXZpZGVkLzQ1VQpkaXZpZGVuZC8xNE1TCmRpdmlkZXIvMU0KZGl2aW5hdGlvbi8xTQpkaXZpbmUvNTE0RFJTTVlaVEcKZGl2aW5lci8xNU0KZGl2aW5nLzQxNU0KZGl2aW5pdHkvMVNNCmRpdmlzaWJpbGl0eS8xSU0KZGl2aXNpYmxlLzUxSQpkaXZpc2lvbi8xTVMKZGl2aXNpb25hbC81MQpkaXZpc2l2ZS81UFkKZGl2aXNpdmVuZXNzLzFNCmRpdmlzb3IvMVNNCmRpdm9yY2UvMTREU0xNRwpkaXZvcmNlZS8xTVMKZGl2b3JjZW1lbnQvMU1TCmRpdm90LzE0U00KZGl2dWxnZS80R0RTCmRpdnZ5LzE0NURTTUcKZGl4aWVsYW5kL00KZGl6emlseS8KZGl6emluZXNzLzFNCmRpenp5LzU0MURSU1BURwpkamVsbGFiYS8xTVMKZG8vNDFTSk1SSFpHfgpkb2FibGUvNTEKZG9iLzQxUwpkb2JiZWQvNApkb2JiaW4vMVNNCmRvYmJpbmcvNApkb2Jlcm1hbi9NUwpkb2Jyby8xCmRvYy8xU00KZG9jZW50LzUxU00KZG9jaWxlLzVZCmRvY2lsaXR5LzFNCmRvY2svMTRNRFJaR1MKZG9ja2V0LzE0U01ERwpkb2NrbGFuZC8xUwpkb2Nrc2lkZS8xCmRvY2t3b3JrZXIvMU1TCmRvY2t5YXJkLzFNUwpkb2N0b3IvMTRTTURHCmRvY3RvcmFsLzUKZG9jdG9yYXRlLzE0TVMKZG9jdHJpbmFpcmUvMTVNUwpkb2N0cmluYWwvNTEKZG9jdHJpbmUvMU1TCmRvY3VkcmFtYS8xU00KZG9jdW1lbnQvMTRHTURTCmRvY3VtZW50YXJ5LzUxU00KZG9jdW1lbnRhdGlvbi8xU00KZG9jdW1lbnRlZC80VQpkb2RkZXIvNDFTTURHCmRvZGRlcnkvNQpkb2RkbGUvMTQKZG9kZ2UvNDE1RFJTTVpHCmRvZGdlbS8xUwpkb2RnZXIvMU0KZG9kZ3kvNVJUCmRvZG8vMU1TCmRvZS8xNFNNCmRvZXIvMU0KZG9lcy80MUFVCmRvZXNraW4vMU1TCmRvZXNuJ3QvNApkb2ZmLzRER1MKZG9nLzE0NVNNCmRvZ2NhcnQvMVNNCmRvZ2NhdGNoZXIvMVNNCmRvZ2UvMU1TCmRvZ2VhcmVkLzU0CmRvZ2ZpZ2h0LzE0U00KZG9nZmlzaC8xTVMKZG9nZ2VkLzQ1UFkKZG9nZ2VkbmVzcy8xTQpkb2dnZXJlbC81MU0KZG9nZ2luZy8xNApkb2dnb25lLzU0VEdSUwpkb2dneS8xNVJTTVQKZG9naG91c2UvMVNNCmRvZ2llLzFTTQpkb2dsZWcvMTRTTQpkb2dsZWdnZWQvNApkb2dsZWdnaW5nLzQKZG9nbGlrZS81CmRvZ21hLzFTTQpkb2dtYXRpYy81MQpkb2dtYXRpY2FsbHkvCmRvZ21hdGlzbS8xTQpkb2dtYXRpc3QvMVNNCmRvZ25hcHBlci8xCmRvZ3Nib2R5LzE0Uwpkb2dzbGVkLzE0Uwpkb2d0cm90LzE0NU1TCmRvZ3Ryb3R0ZWQvNApkb2d0cm90dGluZy80CmRvZ3dvb2QvMU1TCmRvaWx5LzFTTQpkb2luZy80MVVTTQpkb2xkcnVtcy8xTQpkb2xlJ3MKZG9sZS80MUZHRFMKZG9sZWZ1bC81WVAKZG9sZWZ1bG5lc3MvMU0KZG9sbC8xTURHUwpkb2xsYXIvMVNNCmRvbGxob3VzZS8xU00KZG9sbG9wLzE0U0dNRApkb2xseS8xNDVTTQpkb2xtZW4vMVNNCmRvbG9taXRlLzFNCmRvbG9yLzFNCmRvbG9yb3VzLzVZCmRvbHBoaW4vMU1TCmRvbHQvMTRNUwpkb2x0aXNoLzVZUApkb2x0aXNobmVzcy8xTQpkb21haW4vMVNNCmRvbWUvMTRNR0RTCmRvbWVzdGljLzUxU00KZG9tZXN0aWNhbGx5Lwpkb21lc3RpY2F0ZS80MURTR04KZG9tZXN0aWNhdGVkLzQ1VQpkb21lc3RpY2F0aW9uLzFNCmRvbWVzdGljaXR5LzFNCmRvbWljaWxlLzE0RFNNRwpkb21pY2lsaWFyeS8xNQpkb21pbmFuY2UvMU0KZG9taW5hbnQvMTVTTVkKZG9taW5hdGUvNDUxRFNHTgpkb21pbmF0aW9uLzFNCmRvbWluYXRyaWNlcy8xCmRvbWluYXRyaXgvMTRNCmRvbWluZWVyLzRTR0QKZG9taW5lZXJpbmcvNDUxWQpkb21pbmlvbi8xU00KZG9taW5vLzE0TQpkb21pbm9lcy8xCmRvbid0LzQxCmRvbi8xNFNNCmRvbmEvTVMKZG9uYXRlLzREU1hHTgpkb25hdGlvbi8xTQpkb25lLzU0MUZBVQpkb25nLzE0TURHUwpkb25nbGUvMVNNCmRvbmtleS8xU00KZG9ubmVkLzQKZG9ubmluZy80CmRvbm5pc2gvNQpkb25ueWJyb29rLzE1TVMKZG9ub3IvMVNNCmRvbnV0cy8xCmRvb2RhZC8xU00KZG9vZGFoLzEKZG9vZGFocy8xCmRvb2RsZS8xNERSU01aRwpkb29kbGVidWcvMVNNCmRvb2RsZXIvMU0KZG9vaGlja2V5LzFTTQpkb29sYWxseS81CmRvb20vMTRNREdTCmRvb21zYXllci8xTVMKZG9vbXNkYXkvMTVNCmRvb21zdGVyLzFTCmRvb3Incwpkb29yLzE0SVMKZG9vcmJlbGwvMTRNUwpkb29yamFtYi8xUwpkb29ya2VlcGVyLzFNUwpkb29ya25vYi8xTVMKZG9vcmtub2NrZXIvMVMKZG9vcm1hbi8xTQpkb29ybWF0LzFTTQpkb29ybWVuLzEKZG9vcnBsYXRlLzFTTQpkb29ycG9zdC8xUwpkb29yc3RlcC8xNE1TCmRvb3JzdGVwcGVkLzQKZG9vcnN0ZXBwaW5nLzQxCmRvb3JzdG9wLzFNUwpkb29yd2F5LzFTTQpkb29yeWFyZC8xTVMKZG9wYS8xTQpkb3BhbWluZS8xCmRvcGUvMTQ1TVpHRFJTCmRvcGVyLzE1TQpkb3BleS81CmRvcGllci81CmRvcGllc3QvNQpkb3BpbmVzcy8xTQpkb3BpbmcvNDFNCmRvcHBlbGdhbmdlci8xUwpkb3JrLzE0TVMKZG9ya3kvNVJUCmRvcm0vMTRNUlpTCmRvcm1hbmN5LzFNCmRvcm1hbnQvNTEKZG9ybWVyLzFNCmRvcm1pY2UvMQpkb3JtaXRvcnkvMVNNCmRvcm1vdXNlLzFNCmRvcnNhbC81MVkKZG9yeS8xNVNNCmRvc2FnZS8xU00KZG9zZS8xNE1HRFMKZG9zaC8xCmRvc2ltZXRlci8xU00KZG9zcy80MTVEUlNaRwpkb3NzaG91c2UvMVMKZG9zc2llci8xTVMKZG9zdC80CmRvdC8xNCtaR1NNRFIKZG90YWdlLzFNCmRvdGFyZC8xU00KZG90Y29tLzE0U00KZG90ZS80MVMKZG90ZXIvMU0KZG90aW5nLzQ1MVkKZG90dGVkLzQ1CmRvdHRpbmcvNDEKZG90dHkvNTFSVApkb3VibGUncwpkb3VibGUvNTE0QURTRwpkb3VibGVoZWFkZXIvMU1TCmRvdWJsZXNwZWFrLzFNCmRvdWJsZXQvMU1TCmRvdWJsb29uLzFTTQpkb3VibHkvCmRvdWJ0LzQxU01EUlpHCmRvdWJ0ZXIvMU0KZG91YnRmdWwvNTFQWQpkb3VidGZ1bG5lc3MvMU0KZG91YnRpbmcvNDE1WQpkb3VidGxlc3MvNVkKZG91Y2hlLzE0RFNNRwpkb3VnaC8xNE0KZG91Z2hudXQvMTRTTQpkb3VnaHR5LzUxUlQKZG91Z2h5LzUxVFIKZG91ci81UllUUApkb3VybmVzcy8xTQpkb3VzZS80MURTRwpkb3ZlLzE0TVMKZG92ZWNvdC8xUwpkb3ZlY290ZS8xU00KZG92ZXRhaWwvMTRNRFNHCmRvdmlzaC81CmRvd2FnZXIvMU1TCmRvd2RpbHkvCmRvd2RpbmVzcy8xTQpkb3dkeS81MTRSU1BUCmRvd2VsLzE0U01ERwpkb3dlci8xNFNNREcKZG93bi8rNTQxTURSWkdTCmRvd25iZWF0LzE1U00KZG93bmNhc3QvNTE0CmRvd25kcmFmdC8xTVMKZG93bmVyLzFNCmRvd25mYWxsLzE0U01OCmRvd25maWVsZC81CmRvd25ncmFkZS8xNERTTUcKZG93bmhlYXJ0ZWQvNVBZCmRvd25oZWFydGVkbmVzcy8xTQpkb3duaGlsbC81MTRNUwpkb3dubG9hZC8xNE1EQlNHCmRvd25tYXJrZXQvNTQKZG93bnBsYXkvNERTRwpkb3ducG91ci8xNE1TCmRvd25yYW5nZS81CmRvd25yaWdodC81CmRvd25yaXZlci81CmRvd25zY2FsZS81NApkb3duc2hpZnQvMTRTR0QKZG93bnNpZGUvMU1TCmRvd25zaXplLzRHRFMKZG93bnNpemluZy80MU0KZG93bnNwb3V0LzFNUwpkb3duc3RhZ2UvNTE0CmRvd25zdGFpcnMvNTFNCmRvd25zdGF0ZS8xNU0KZG93bnN0cmVhbS81NApkb3duc3dpbmcvMU1TCmRvd250ZW1wby8xNQpkb3dudGltZS8xTQpkb3dudG93bi81MU0KZG93bnRyZW5kLzE0TVMKZG93bnRyb2RkZW4vNTQKZG93bnR1cm4vMTRNUwpkb3dud2FyZC81Uwpkb3dud2luZC8KZG93bnkvNTFSVApkb3dyeS8xNFNNCmRvd3NlLzQxRFJTWkcKZG93c2VyLzFNCmRveG9sb2d5LzFTTQpkb3llbi8xU00KZG95ZW5uZS8xTVMKZG96LzFYR0ROUwpkb3plLzQxTQpkb3plbi8xTUgKZG96aWx5Lwpkb3p5LzVSVFAKZHBpLzEKZHB0CmRyYWIvMTU0TVlTUApkcmFiYmVyLzE1CmRyYWJiZXN0LzUKZHJhYm5lc3MvMU0KZHJhY2htYS8xTVMKZHJhY29uaWFuLzUKZHJhZnQncwpkcmFmdC8xNDVBU0RHCmRyYWZ0ZWUvMVNNCmRyYWZ0ZXIvMVNNCmRyYWZ0aWx5LwpkcmFmdGluZXNzLzFNCmRyYWZ0aW5nLzQxTQpkcmFmdHNtYW4vMU0KZHJhZnRzbWFuc2hpcC8xTQpkcmFmdHNtZW4vMQpkcmFmdHN3b21hbi8xTQpkcmFmdHN3b21lbi8xCmRyYWZ0eS81UlRQCmRyYWcvMTRNUwpkcmFnZ2VkLzQKZHJhZ2dpbmcvNTE0CmRyYWdneS81MVRSCmRyYWduZXQvMTRTTQpkcmFnb24vMVNNCmRyYWdvbmZseS8xU00KZHJhZ29vbi8xNFNNREcKZHJhZ3N0ZXIvMVMKZHJhaW4vMTRTTURSWkcKZHJhaW5hZ2UvMU0KZHJhaW5ib2FyZC8xU00KZHJhaW5lci8xTQpkcmFpbnBpcGUvMU1TCmRyYWtlLzFTTQpkcmFtLzE0TVMKZHJhbWEvMVNNCmRyYW1hdGljLzVTCmRyYW1hdGljYWxseS8KZHJhbWF0aWNzLzFNCmRyYW1hdGlzdC8xU00KZHJhbWF0aXphdGlvbi8xU00KZHJhbWF0aXplLzREU0cKZHJhbmsvMTQKZHJhcGUvMTREUlNNWkcKZHJhcGVyLzFNCmRyYXBlcnkvMVNNCmRyYXN0aWMvNTEKZHJhc3RpY2FsbHkvCmRyYXQvNApkcmF0dGVkLzQ1CmRyYXVnaHRib2FyZC8xUwpkcmF3LzQxTVJaR1NKCmRyYXdiYWNrLzFNUwpkcmF3YnJpZGdlLzFNUwpkcmF3ZXIvMU0KZHJhd2luZy80MU0KZHJhd2wvNDFTTURHCmRyYXduLzQ1QQpkcmF3c3RyaW5nLzFNUwpkcmF5LzFNUwpkcmVhZC80MTVTTURHCmRyZWFkZnVsLzUxUFkKZHJlYWRmdWxuZXNzLzFNCmRyZWFkbG9ja3MvMTRNCmRyZWFkbm91Z2h0LzFNUwpkcmVhbS8xNDVTTURSWkcKZHJlYW1ib2F0LzFNUwpkcmVhbWVkLzRVCmRyZWFtZXIvMU0KZHJlYW1pbHkvCmRyZWFtaW5lc3MvMU0KZHJlYW1sYW5kLzFNCmRyZWFtbGVzcy81CmRyZWFtbGlrZS81CmRyZWFtd29ybGQvMVNNCmRyZWFteS81UlBUCmRyZWFyLzUxCmRyZWFyaWx5LwpkcmVhcmluZXNzLzFNCmRyZWFyeS81UlBUCmRyZWRnZS8xNERSU01aRwpkcmVkZ2VyLzFNCmRyZWdzLzFNCmRyZW5jaC8xNEdEUwpkcmVzcy80MUFVR1NETQpkcmVzc2FnZS8xTQpkcmVzc2VyLzFNUwpkcmVzc2luZXNzLzFNCmRyZXNzaW5nLzE0U00KZHJlc3NtYWtlci8xU00KZHJlc3NtYWtpbmcvMU0KZHJlc3N5LzVUUFIKZHJldy80QQpkcmliYmxlLzQxTVpHRFJTCmRyaWJibGVyLzFNCmRyaWJsZXQvMU1TCmRyaWVyLzE1TQpkcmlmdC8xNFNNRFJaRwpkcmlmdGVyLzFNCmRyaWZ0bmV0LzE0UwpkcmlmdHdvb2QvMU0KZHJpbGwvNDFTTURSWkcKZHJpbGxlci8xTQpkcmlsbG1hc3Rlci8xU00KZHJpbmsvNDFTTVJCSlpHCmRyaW5rYWJsZS81MVUKZHJpbmtlci8xTQpkcmlwLzQxTVMKZHJpcHBlZC80CmRyaXBwaW5nLzE0U00KZHJpcHB5LzVUUgpkcml2ZS80MVJTTVpHSgpkcml2ZWwvMTRTWkdNRFIKZHJpdmVsZXIvMU0KZHJpdmVuLzQ1CmRyaXZlci8xTQpkcml2ZXNoYWZ0LzFTTQpkcml2ZXdheS8xTVMKZHJpenpsZS80MU1HRFMKZHJpenpseS81CmRyb2d1ZS8xNFNNCmRyb2lkLzFTCmRyb2xsLzUxNFJQVApkcm9sbGVyeS8xU00KZHJvbGxuZXNzLzFNCmRyb2xseS8KZHJvbWVkYXJ5LzFTTQpkcm9uZS8xNERTTUcKZHJvb2wvNDFTTURHCmRyb29wLzQxNUdTTUQKZHJvb3BpbmVzcy8xTQpkcm9vcHkvNVRQUgpkcm9wLzE0TVMKZHJvcGtpY2svMTRNUwpkcm9wbGV0LzFTTQpkcm9wb3V0LzFTTQpkcm9wcGVkLzQ1CmRyb3BwZXIvMVNNCmRyb3BwaW5nLzQxUwpkcm9wcGluZ3MvMU0KZHJvcHNpY2FsLzUKZHJvcHN5LzFNCmRyb3NzLzE0TQpkcm91Z2h0LzFTTQpkcm92ZS8xNFJTTVoKZHJvdmVyLzFNCmRyb3duLzRHU0pECmRyb3duaW5nLzQxTQpkcm93c2UvNDFNR0RTCmRyb3dzaWx5Lwpkcm93c2luZXNzLzFNCmRyb3dzeS81UlRQCmRydWIvMTRTCmRydWJiZWQvNApkcnViYmVyLzFTTQpkcnViYmluZy80MU1TCmRydWRnZS8xNE1HRFMKZHJ1ZGdlcnkvMU0KZHJ1Zy8xNE1TCmRydWdnZWQvNDUKZHJ1Z2dpZS8xU00KZHJ1Z2dpbmcvNDEKZHJ1Z2dpc3QvMVNNCmRydWdneS8xNQpkcnVnc3RvcmUvMU1TCmRydWlkLzFTTQpkcnVpZGlzbS8xTQpkcnVtLzE0TVMKZHJ1bWJlYXQvMVNNCmRydW1saW4vMVNNCmRydW1tZWQvNApkcnVtbWVyLzFTTQpkcnVtbWluZy8xNApkcnVtc3RpY2svMVNNCmRydW5rLzUxNFNUTU5SCmRydW5rYXJkLzFNUwpkcnVua2VuLzQ1UFkKZHJ1bmtlbm5lc3MvMU0KZHJ1cGUvMVNNCmRydXRoZXJzLzFNCmRyeS81MTRaVEdEUlNNWQpkcnlhZC8xU00KZHJ5ZXIvMTVTTQpkcnluZXNzLzFNCmRyeXMvMQpkcnl3YWxsLzE0TQpkdWFsLzUxNApkdWFsaXNtLzFNCmR1YWxpdHkvMU0KZHViLzQxU00KZHViYmVkLzU0CmR1YmJlci8xU00KZHViYmluLzE0TQpkdWJiaW5nLzE0CmR1YmlldHkvMU0KZHViaW91cy81WVAKZHViaW91c25lc3MvMU0KZHVjYWwvNQpkdWNhdC8xU00KZHVjaGVzcy8xNE1TCmR1Y2h5LzFTTQpkdWNrLzQxTURHUwpkdWNrYmlsbC8xU00KZHVja2JvYXJkcy8xCmR1Y2tsaW5nLzFTTQpkdWNrcGlucy8xTQpkdWNrd2VlZC8xTQpkdWNreS81MVRSU00KZHVjdCdzL0sKZHVjdC8xNENLSUZTCmR1Y3RpbGUvNQpkdWN0aWxpdHkvMU0KZHVjdGluZy80MQpkdWN0bGVzcy81CmR1ZC8xNUdTTUQKZHVkZS8xNE1TCmR1ZGdlb24vMU0KZHVlLzUxU00KZHVlbC8xNE1EUkpaR1MKZHVlbGVyLzFNCmR1ZWxpc3QvMVNNCmR1ZW5uYS8xTVMKZHVldC8xNE1TCmR1ZmYvMTU0TURSWkdTCmR1ZmZlci81MU0KZHVnLzQxCmR1Z291dC8xTVMKZHVoLwpkdWtlLzE0TVMKZHVrZWRvbS8xU00KZHVsY2V0LzUKZHVsY2ltZXIvMU1TCmR1bGwvNTREUlBUR1MKZHVsbGFyZC8xU00KZHVsbG5lc3MvMU0KZHVsbHkvCmR1bHkvVQpkdW1iLzU0UllQVApkdW1iYmVsbC8xU00KZHVtYmZvdW5kLzRTREcKZHVtYm5lc3MvMU0KZHVtYm8vMVMKZHVtYnN0cnVjay81CmR1bWJ3YWl0ZXIvMVNNCmR1bWR1bS8xTVMKZHVtbXkvMTRTTQpkdW1wLzE0TURSWkdTCmR1bXBpbmVzcy8xTQpkdW1wbGluZy8xU00KZHVtcHNpdGUvMVMKZHVtcHN0ZXIvMVNNCmR1bXB5LzUxUFRSCmR1bi8xNTRTTQpkdW5jZS8xU00KZHVuZGVyaGVhZC8xTVMKZHVuZS8xTVMKZHVuZy8xNE1ER1MKZHVuZ2FyZWUvMU1TCmR1bmdlb24vMTRTTQpkdW5naGlsbC8xTVMKZHVuay80MU1ER1MKZHVubmVkLzQKZHVubmVyLzEKZHVubmVzdC81CmR1bm5pbmcvNDEKZHVubm8vMQpkdW8vMVNNCmR1b2RlY2ltYWwvNTEKZHVvZGVuYS8xCmR1b2RlbmFsLzUKZHVvZGVudW0vMU0KZHVvcG9seS8xUwpkdXBlLzE0TVpHRFJTCmR1cGVyLzFNCmR1cGxlLzUKZHVwbGV4LzUxNE1TCmR1cGxpY2F0ZSdzCmR1cGxpY2F0ZS81NDFBR05EUwpkdXBsaWNhdGlvbi8xQU0KZHVwbGljYXRvci8xTVMKZHVwbGljaXRvdXMvNQpkdXBsaWNpdHkvMU0KZHVyYWJpbGl0eS8xTQpkdXJhYmxlLzUxCmR1cmFibHkvCmR1cmFuY2UvMU0KZHVyYXRpb24vMU0KZHVyZXNzLzE0TQpkdXJpbmcvKzQKZHVyc3QvNApkdXJ1bS8xTQpkdXNrLzUxNE0KZHVza2luZXNzLzFNCmR1c2t5LzUxUlRQCmR1c3QvMTRNRFJaR1MKZHVzdGJpbi8xU00KZHVzdGNhcnQvMVMKZHVzdGVyLzFNCmR1c3RpbmVzcy8xTQpkdXN0bGVzcy81CmR1c3RtYW4vMQpkdXN0bWVuLzEKZHVzdHBhbi8xU00KZHVzdHNoZWV0LzFTCmR1c3R5LzUxUlRQCmR1dGNoLzE0CmR1dGVvdXMvNVkKZHV0aWFibGUvNTEKZHV0aWZ1bC81WVAKZHV0aWZ1bG5lc3MvMU0KZHV0eS8xU00KZHV2ZXQvMVNNCmR3YXJmLzE1NFNHTUQKZHdhcmZpc2gvNQpkd2FyZmlzbS8xTQpkd2VlYi8xU00KZHdlbGwvMTRTSlpHUgpkd2VsbGVyLzFNCmR3ZWxsaW5nLzE0TQpkd2VsdC80SQpkd2luZGxlLzREU0cKZHlhZGljLzUxCmR5YmJ1ay8xU00KZHliYnVraW0vMQpkeWUvMTREUlNNWkcKZHllaW5nLzQxQQpkeWVyLzFNCmR5ZXN0dWZmLzFNCmR5aW5nLzUxNE0KZHlrZS8xNE1TCmR5bmFtaWMvNTFNUwpkeW5hbWljYWwvNVkKZHluYW1pY3MvMU0KZHluYW1pc20vMU0KZHluYW1pdGUvMTRNWkdEUlMKZHluYW1pdGVyLzFNCmR5bmFtby8xU00KZHluYXN0aWMvNQpkeW5hc3R5LzFTTQpkeXNlbnRlcnkvMU0KZHlzZnVuY3Rpb24vMTRNUwpkeXNmdW5jdGlvbmFsLzUKZHlzbGVjdGljLzUxU00KZHlzbGV4aWEvMU0KZHlzbGV4aWMvNTFTTQpkeXNwZXBzaWEvMU0KZHlzcGVwdGljLzUxTVMKZHlzcGhhZ2lhLzEKZHlzcGhvcmlhLzEKZHlzcGhvcmljLzUxCmR5c3Byb3NpdW0vMU0KZHlzdG9uaWEvMQpkeXN0b3BpCmR5c3RvcGlhLzEKZHlzdG9waWFuLzUKZHovMTQKZSdlbi8KZSdlci8KZS8xOEZEU1QKZUJheS8yNE0KZU11c2ljL00KZWEvMQplYWNoLzgxCmVhZ2VyLzU0MVBUUlkKZWFnZXJuZXNzLzFNCmVhZ2xlLzE0TVMKZWFnbGV0LzFNUwplYXIvMTRTTURZCmVhcmFjaGUvMVNNCmVhcmJ1ZC8xU00KZWFyZHJ1bS8xU00KZWFyZnVsLzFTTQplYXJsLzFNUwplYXJsZG9tLzFTTQplYXJsaW5lc3MvMU0KZWFybG9iZS8xU00KZWFybHkvNTFSVFAKZWFybWFyay80MVNNREcKZWFybXVmZi8xU00KZWFybi80MURSWlRHSlMKZWFybmVkLzRVCmVhcm5lci8xTQplYXJuZXN0LzE0NVNNWVAKZWFybmVzdG5lc3MvMU0KZWFybmluZ3MvMU0KZWFycGhvbmUvMU1TCmVhcnBpZWNlLzFTCmVhcnBsdWcvMTRTTQplYXJyaW5nLzFTTQplYXJzaG90LzFNCmVhcnNwbGl0dGluZy81CmVhcnRoJ3MKZWFydGgvMjE0VURZRwplYXJ0aGJvdW5kLzUKZWFydGhlbi81NAplYXJ0aGVud2FyZS8xTQplYXJ0aGluZXNzLzFNCmVhcnRobGluZy8xTVMKZWFydGhseS81MVJUCmVhcnRocXVha2UvMTRTTQplYXJ0aHMvMTRVCmVhcnRoc2hha2luZy81CmVhcnRod2FyZC81UwplYXJ0aHdvcmsvMU1TCmVhcnRod29ybS8xTVMKZWFydGh5LzVSVFAKZWFyd2F4LzFNCmVhcndpZy8xNFNNCmVhc2UvMTRFRFNNCmVhc2VsLzFTTQplYXNlbWVudC8xU00KZWFzaWx5L1UKZWFzaW5lc3MvMVVNCmVhc2luZy80MQplYXN0LzE1TQplYXN0Ym91bmQvNQplYXN0ZXJseS8xNVNNCmVhc3Rlcm4vNVpSCmVhc3Rlcm5lci8xTQplYXN0ZXJubW9zdC81CmVhc3R3YXJkLzE1UwplYXN5LzUxNFVSVFAKZWFzeWdvaW5nLzUKZWF0LzQxWkdCU05SCmVhdGFibGUvNTFTTQplYXRlbi80NVUKZWF0ZXIvMU0KZWF0ZXJ5LzFTTQplYXZlLzFNUwplYXZlc2Ryb3AvNDFTCmVhdmVzZHJvcHBlZC80CmVhdmVzZHJvcHBlci8xU00KZWF2ZXNkcm9wcGluZy8xNAplYmIvMTU0U01ERwplYm9ueS8xNVNNCmVidWxsaWVuY2UvMU0KZWJ1bGxpZW50LzVZCmVidWxsaXRpb24vMU0KZWNjZW50cmljLzUxU00KZWNjZW50cmljYWxseS8KZWNjZW50cmljaXR5LzFTTQplY2NsCmVjY2xlc2lhbC81CmVjY2xlc2lhc3RpYy81MVNNCmVjY2xlc2lhc3RpY2FsLzVZCmVjaGVsb24vMTQ1U00KZWNoaWRuYS8xCmVjaGlub2Rlcm0vMVNNCmVjaG8ncwplY2hvLzE0QURHCmVjaG9lcy8xNEEKZWNob2ljLzUKZWNob2xvY2F0aW9uLzFNCmVjaG9zLzEKZWNsYWlyLzFTTQplY2xhdC8xTQplY2xlY3RpYy81MVNNCmVjbGVjdGljYWxseS8KZWNsZWN0aWNpc20vMU0KZWNsaXBzZS8xNERTTUcKZWNsaXB0aWMvMTVNCmVjbG9ndWUvMVNNCmVjb2NpZGUvMU0KZWNvbC8xCmVjb2xvZ2ljLzUKZWNvbG9naWNhbC81WQplY29sb2dpc3QvMU1TCmVjb2xvZ3kvMU0KZWNvbi8xNQplY29ub21ldHJpYy81UwplY29ub21pYy81UwplY29ub21pY2FsLzVVWQplY29ub21pY3MvMU0KZWNvbm9taXN0LzFTTQplY29ub21pemUvNERSU1pHCmVjb25vbWl6ZXIvMU0KZWNvbm9teS8xNVNNCmVjb3N5c3RlbS8xTVMKZWNvdG91cmlzbS8xTQplY290b3VyaXN0LzFNUwplY3J1LzE1TQplY3N0YXN5LzE0U00KZWNzdGF0aWMvNTEKZWNzdGF0aWNhbGx5LwplY3UvMVMKZWN1bWVuaWNhbC81WQplY3VtZW5pY2lzbS8xTQplY3VtZW5pc20vMU0KZWN6ZW1hLzFNCmVkLzFBQ1NNCmVkYW1hbWUvMQplZGR5LzE0RFNNRwplZGVsd2Vpc3MvMU0KZWRlbWEvMVNNCmVkZ2UvMTRNWkdKRFJTCmVkZ2VyLzFNCmVkZ2V3aXNlLzUKZWRnaWx5LwplZGdpbmVzcy8xTQplZGdpbmcvNDFNCmVkZ3kvNVJUUAplZGliaWxpdHkvMU0KZWRpYmxlLzUxU01QCmVkaWJsZW5lc3MvMU0KZWRpY3QvMVNNCmVkaWZpY2F0aW9uLzFNCmVkaWZpY2UvMVNNCmVkaWZpZXIvMU0KZWRpZnkvNERSU1pHTgplZGlmeWluZy81NDFVCmVkaXQncwplZGl0LzE0QURHUwplZGl0YWJsZS81CmVkaXRlZC80NVUKZWRpdGlvbi8xTVMKZWRpdG9yLzFTTQplZGl0b3JpYWwvNTFTTVkKZWRpdG9yaWFsaXplLzREU0cKZWRpdG9yc2hpcC8xTQplZHVjCmVkdWNhYmlsaXR5LzFNCmVkdWNhYmxlLzUxSQplZHVjYXRlLzRBRFNHTlYKZWR1Y2F0ZWQvNTRVCmVkdWNhdGlvbi8xQU0KZWR1Y2F0aW9uYWwvNTFZCmVkdWNhdGlvbmFsaXN0LzFTCmVkdWNhdGlvbmlzdC8xUwplZHVjYXRpb25zLzEKZWR1Y2F0b3IvMU1TCmVkdWNlLzQxRFNHQgplZHV0YWlubWVudC8xTQplZWsvNDEKZWVsLzE0U00KZWVyaWUvNTFSVAplZXJpbHkvCmVlcmluZXNzLzFNCmVmZi80MUdTRAplZmZhY2UvNERTTEcKZWZmYWNlbWVudC8xTQplZmZlY3QvMTRTTURHVgplZmZlY3RpdmUvNTFJUFkKZWZmZWN0aXZlbmVzcy8xSU0KZWZmZWN0dWFsLzVJWQplZmZlY3R1YXRlLzREU0cKZWZmZW1pbmFjeS8xTQplZmZlbWluYXRlLzU0MVkKZWZmZW5kaS8xU00KZWZmZXJlbnQvNTEKZWZmZXJ2ZXNjZS80R0RTCmVmZmVydmVzY2VuY2UvMU0KZWZmZXJ2ZXNjZW50LzVZCmVmZmV0ZS81WVAKZWZmZXRlbmVzcy8xTQplZmZpY2FjaW91cy81WQplZmZpY2FjeS8xSU0KZWZmaWNpZW5jeS8xSVNNCmVmZmljaWVudC81MUlZCmVmZmlneS8xU00KZWZmbG9yZXNjZW5jZS8xTQplZmZsb3Jlc2NlbnQvNQplZmZsdWVuY2UvMU0KZWZmbHVlbnQvNTFNUwplZmZsdXZpYS8xCmVmZmx1dml1bS8xTQplZmZsdXgvMTQKZWZmb3J0LzE0U00KZWZmb3J0ZnVsLzUKZWZmb3J0bGVzcy81WVAKZWZmb3J0bGVzc25lc3MvMU0KZWZmcm9udGVyeS8xTQplZmZ1bGdlbmNlLzFNCmVmZnVsZ2VudC81CmVmZnVzZS81NDFEU0dOVlgKZWZmdXNpb24vMU0KZWZmdXNpdmUvNVlQCmVmZnVzaXZlbmVzcy8xTQplZ2FkLwplZ2FsaXRhcmlhbi81MVNNCmVnYWxpdGFyaWFuaXNtLzFNCmVnZy8xNEdTTUQKZWdnYmVhdGVyLzFNUwplZ2djdXAvMVNNCmVnZ2hlYWQvMVNNCmVnZ25vZy8xTQplZ2dwbGFudC8xTVMKZWdnc2hlbGwvMTVTTQplZ2xhbnRpbmUvMVNNCmVnby8xU00KZWdvY2VudHJpYy81MU1TCmVnb2NlbnRyaWNhbGx5LwplZ29jZW50cmljaXR5LzFNCmVnb2lzbS8xTQplZ29pc3QvMVNNCmVnb2lzdGljLzUKZWdvaXN0aWNhbC81WQplZ29tYW5pYS8xTQplZ29tYW5pYWMvMU1TCmVnb3Rpc20vMU0KZWdvdGlzdC8xU00KZWdvdGlzdGljLzUKZWdvdGlzdGljYWwvNVkKZWdyZWdpb3VzLzVQWQplZ3JlZ2lvdXNuZXNzLzFNCmVncmVzcy8xNE1TCmVncmV0LzFTTQplaC80NQplaWRlci8xU00KZWlkZXJkb3duLzFNUwplaWdlbnZhbHVlLzFTCmVpZ2VudmVjdG9yLzFTCmVpZ2h0LzE1U00KZWlnaHRlZW4vTUhTCmVpZ2h0ZWVudGgvNTFNCmVpZ2h0ZWVudGhzLzEKZWlnaHRoLzUxNE0KZWlnaHRocy8xNAplaWdodGlldGgvNTFNCmVpZ2h0aWV0aHMvMQplaWdodHkvU01ICmVpbnN0ZWluaXVtLzFNCmVpc3RlZGRmb2QvMVMKZWl0aGVyLzg3CmVqYWN1bGF0ZS80MUdOWERTCmVqYWN1bGF0aW9uLzFNCmVqYWN1bGF0b3J5LzUKZWplY3QvNDFTREcKZWplY3Rpb24vMU1TCmVqZWN0b3IvMVNNCmVrZS8xNERTRwplbGFib3JhdGUvNTRZR05EU1BYCmVsYWJvcmF0ZW5lc3MvMU0KZWxhYm9yYXRpb24vMU0KZWxhbi8xTQplbGFuZC8xU00KZWxhcHNlLzREU0cKZWxhc3RpYy81MU1TCmVsYXN0aWNhbGx5LwplbGFzdGljYXRlZC81CmVsYXN0aWNpdHkvMU0KZWxhc3RpY2l6ZS80RFNHCmVsYXRlLzQ1RFNHTgplbGF0ZWQvNTRZCmVsYXRpb24vMU0KZWxib3cvMTRTTURHCmVsYm93cm9vbS8xTQplbGRlci81MTRTTVkKZWxkZXJiZXJyeS8xU00KZWxkZXJjYXJlLzFNCmVsZGVzdC81MQplbGRyaXRjaC81CmVsZWN0J3MKZWxlY3QvMTQ1QVNER1YKZWxlY3RhYmxlLzUxCmVsZWN0aW9uLzFBTVMKZWxlY3Rpb25lZXIvNERHUwplbGVjdGl2ZS81MU1TCmVsZWN0b3IvMU1TCmVsZWN0b3JhbC81WQplbGVjdG9yYXRlLzFNUwplbGVjdHJpYy81MVMKZWxlY3RyaWNhbC81MVkKZWxlY3RyaWNpYW4vMU1TCmVsZWN0cmljaXR5LzFNCmVsZWN0cmlmaWNhdGlvbi8xTQplbGVjdHJpZmllci8xTQplbGVjdHJpZnkvNFpHTkRSUwplbGVjdHJvY2FyZGlvZ3JhbS8xTVMKZWxlY3Ryb2NhcmRpb2dyYXBoLzFNCmVsZWN0cm9jYXJkaW9ncmFwaHMvMQplbGVjdHJvY2FyZGlvZ3JhcGh5LzFNCmVsZWN0cm9jdXRlLzREU1hHTgplbGVjdHJvY3V0aW9uLzFNCmVsZWN0cm9kZS8xU00KZWxlY3Ryb2R5bmFtaWNzLzEKZWxlY3Ryb2VuY2VwaGFsb2dyYW0vMU1TCmVsZWN0cm9lbmNlcGhhbG9ncmFwaC8xTQplbGVjdHJvZW5jZXBoYWxvZ3JhcGhpYy81CmVsZWN0cm9lbmNlcGhhbG9ncmFwaHMvMQplbGVjdHJvZW5jZXBoYWxvZ3JhcGh5LzFNCmVsZWN0cm9sb2dpc3QvMVNNCmVsZWN0cm9seXNpcy8xTQplbGVjdHJvbHl0ZS8xTVMKZWxlY3Ryb2x5dGljLzUxCmVsZWN0cm9tYWduZXQvMU1TCmVsZWN0cm9tYWduZXRpYy81CmVsZWN0cm9tYWduZXRpY2FsbHkvCmVsZWN0cm9tYWduZXRpc20vMU0KZWxlY3Ryb21vdGl2ZS81CmVsZWN0cm9uLzFNUwplbGVjdHJvbmljLzVTCmVsZWN0cm9uaWNhLzFNCmVsZWN0cm9uaWNhbGx5LwplbGVjdHJvbmljcy8xTQplbGVjdHJvcGxhdGUvNDFEU0cKZWxlY3Ryb3Njb3BlLzFTTQplbGVjdHJvc2NvcGljLzUKZWxlY3Ryb3Nob2NrLzE0TQplbGVjdHJvc3RhdGljLzVTCmVsZWN0cm9zdGF0aWNzLzFNCmVsZWN0cm90eXBlLzE0TVMKZWxlY3Ryb3dlYWsvNQplbGVlbW9zeW5hcnkvNTEKZWxlZ2FuY2UvMUlNCmVsZWdhbnQvNTFJWQplbGVnaWFjLzUxTVMKZWxlZ2lhY2FsLzUKZWxlZ3kvMVNNCmVsZW0vMQplbGVtZW50LzE0TVMKZWxlbWVudGFsLzUxWQplbGVtZW50YXJ5LzUxCmVsZXBoYW50LzFTTQplbGVwaGFudGlhc2lzLzFNCmVsZXBoYW50aW5lLzUKZWxldgplbGV2YXRlLzQ1WERTR04KZWxldmF0aW9uLzFNCmVsZXZhdG9yLzE0TVMKZWxldmVuLzFTTUgKZWxldmVucy8xUwplbGV2ZW50aC81MU0KZWxldmVudGhzLzEKZWxmLzE0TQplbGZpbi8xNQplbGZpc2gvNQplbGljaXQvNDVTREcKZWxpY2l0YXRpb24vMU0KZWxpZGUvNERTRwplbGlnaWJpbGl0eS8xSU0KZWxpZ2libGUvNTEKZWxpbWluYXRlLzRYRFNHTgplbGltaW5hdGlvbi8xTQplbGltaW5hdG9yLzFTCmVsaXNpb24vMU1TCmVsaXRlLzUxU00KZWxpdGlzbS8xTQplbGl0aXN0LzUxTVMKZWxpeGlyLzFTTQplbGsvMVNNCmVsbC8xU00KZWxsaXBzZS8xNE1TCmVsbGlwc2lzLzFNCmVsbGlwc29pZC8xNVNNCmVsbGlwc29pZGFsLzUKZWxsaXB0aWMvNTEKZWxsaXB0aWNhbC81MVkKZWxtLzFTTQplbG9jdXRpb24vMU0KZWxvY3V0aW9uYXJ5LzUKZWxvY3V0aW9uaXN0LzFTTQplbG9kZWEvMVNNCmVsb25nYXRlLzU0RFNHTlgKZWxvbmdhdGlvbi8xTQplbG9wZS80RFNHTAplbG9wZW1lbnQvMU1TCmVsb3F1ZW5jZS8xTQplbG9xdWVudC81WQplbHNlLzU3CmVsc2V3aGVyZS8xCmVsdWNpZGF0ZS80NURTR05YCmVsdWNpZGF0aW9uLzFNCmVsdWRlLzREU0cKZWx1c2l2ZS81WVAKZWx1c2l2ZW5lc3MvMU0KZWx2ZXIvMVNNCmVsdmVzLzEKZWx2aXNoLzUKZW0ncwplbS8xOFMKZW1hY2lhdGUvNDVHTkRTCmVtYWNpYXRpb24vMU0KZW1haWwvMTRTTURHCmVtYW5hdGUvNFhEU0dOCmVtYW5hdGlvbi8xTQplbWFuY2lwYXRlLzQ1RFNHTgplbWFuY2lwYXRpb24vMU0KZW1hbmNpcGF0b3IvMU1TCmVtYXNjdWxhdGUvNDVHTkRTCmVtYXNjdWxhdGlvbi8xTQplbWJhbG0vNFNaR0RSCmVtYmFsbWVyLzFNCmVtYmFuay80U0xHRAplbWJhbmttZW50LzFTTQplbWJhcmdvLzE0TURHCmVtYmFyZ29lcy8xNAplbWJhcmsvNEFFR0RTCmVtYmFya2F0aW9uLzFFTQplbWJhcmthdGlvbnMvMQplbWJhcnJhc3MvNEdMRFMKZW1iYXJyYXNzZWQvNTRVCmVtYmFycmFzc2luZy80MTVZCmVtYmFycmFzc21lbnQvMVNNCmVtYmFzc3kvMVNNCmVtYmF0dGxlZC81NAplbWJlZC80MVMKZW1iZWRkZWQvNDUKZW1iZWRkaW5nLzE0CmVtYmVsbGlzaC80TEdEUwplbWJlbGxpc2htZW50LzFTTQplbWJlci8xNVNNCmVtYmV6emxlLzRaR0xEUlMKZW1iZXp6bGVtZW50LzFNCmVtYmV6emxlci8xTQplbWJpdHRlci80R0xEUwplbWJpdHRlcm1lbnQvMU0KZW1ibGF6b24vNEdETFMKZW1ibGF6b25tZW50LzFNCmVtYmxlbS8xNFNNCmVtYmxlbWF0aWMvNQplbWJsZW1hdGljYWxseS8KZW1ib2RpbWVudC8xRU0KZW1ib2R5LzRBRUdTRAplbWJvbGRlbi80REdTCmVtYm9saXNtLzFNUwplbWJvbGl6YXRpb24vMQplbWJvc3MvNDFEUlNaRwplbWJvc3Nlci8xTQplbWJvdWNodXJlLzFNCmVtYm93ZXIvNFNHRAplbWJyYWNlLzQxRFNNRwplbWJyYWNlYWJsZS81CmVtYnJhc3VyZS8xTVMKZW1icm9jYXRpb24vMU1TCmVtYnJvaWRlci80U0RSWkcKZW1icm9pZGVyZXIvMU0KZW1icm9pZGVyeS8xU00KZW1icm9pbC80MURHTFMKZW1icm9pbG1lbnQvMU0KZW1icnlvLzFTTQplbWJyeW9sb2dpY2FsLzUKZW1icnlvbG9naXN0LzFNUwplbWJyeW9sb2d5LzFNCmVtYnJ5b25pYy81CmVtY2VlLzE0RFNNCmVtY2VlaW5nLzQKZW1lbmQvNFNERwplbWVuZGF0aW9uLzFNUwplbWVyYWxkLzE1NE1TCmVtZXJnZS80MUFEU0cKZW1lcmdlbmNlLzFBTQplbWVyZ2VuY3kvMVNNCmVtZXJnZW50LzUxCmVtZXJpdGEvNTEKZW1lcml0dXMvNTEKZW1lcnkvMTRNCmVtZXRpYy81MVNNCmVtZi8xUwplbWlncmFudC8xU00KZW1pZ3JhdGUvNERTWEdOCmVtaWdyYXRpb24vMU0KZW1pZ3JlLzFTTQplbWluZW5jZS8xTVMKZW1pbmVudC81WQplbWlyLzFNUwplbWlyYXRlLzFNUwplbWlzc2FyeS8xU00KZW1pc3Npb24vMVNNCmVtaXQvNFMKZW1pdHRlZC80CmVtaXR0ZXIvMU1TCmVtaXR0aW5nLzQKZW1vLzE1U00KZW1vamkvMVNNCmVtb2xsaWVudC8xNU1TCmVtb2x1bWVudC8xTVMKZW1vdGUvNDFYRFNHTlYKZW1vdGljb24vMVNNCmVtb3Rpb24vMU0KZW1vdGlvbmFsLzUxVVkKZW1vdGlvbmFsaXNtLzFNCmVtb3Rpb25hbGl6ZS80R0RTCmVtb3Rpb25sZXNzLzUKZW1vdGl2ZS81MVkKZW1wYXRoZXRpYy81CmVtcGF0aGljYWxseS8KZW1wYXRoaXplLzREU0cKZW1wYXRoeS8xTQplbXBlcm9yLzFNUwplbXBoYXNlcy8xCmVtcGhhc2lzLzFNCmVtcGhhc2l6ZS80QUdEUwplbXBoYXRpYy81MVUKZW1waGF0aWNhbGx5LwplbXBoeXNlbWEvMU0KZW1waXJlLzE1U00KZW1waXJpYy81MQplbXBpcmljYWwvNTFZCmVtcGlyaWNpc20vMU0KZW1waXJpY2lzdC8xU00KZW1wbGFjZW1lbnQvMVNNCmVtcGxveSdzCmVtcGxveS80MUFER0xTCmVtcGxveWFibGUvNTFVCmVtcGxveWVlLzFTTQplbXBsb3llci8xU00KZW1wbG95bWVudC8xVUFNCmVtcGxveW1lbnRzLzEKZW1wb3JpdW0vMVNNCmVtcG93ZXIvNFNER0wKZW1wb3dlcm1lbnQvMU0KZW1wcmVzcy8xNE1TCmVtcHRpbHkvCmVtcHRpbmVzcy8xTQplbXB0eS81NDFUR1BEUlNNCmVtcHlyZWFuLzE1TQplbXUvMVNNCmVtdWxhdGUvNDVEU0dOVlgKZW11bGF0aW9uLzFNCmVtdWxhdG9yLzFTTQplbXVsc2lmaWNhdGlvbi8xTQplbXVsc2lmaWVyLzFNCmVtdWxzaWZ5LzRORFJTWkcKZW11bHNpb24vMTRNUwplbi8xKzhTTQplbmFibGUvNERSU1pHCmVuYWJsZXIvMU0KZW5hY3QvNEFTTERHCmVuYWN0bWVudC8xQVNNCmVuYW1lbC8xNEpTWkdNRFIKZW5hbWVsZXIvMU0KZW5hbWVsd2FyZS8xTQplbmFtb3IvNFNHRAplbmMvMQplbmNhbXAvNExTR0QKZW5jYW1wbWVudC8xTVMKZW5jYXBzdWxhdGUvNFhHTkRTCmVuY2Fwc3VsYXRpb24vMU0KZW5jYXNlLzRMRFNHCmVuY2FzZW1lbnQvMU0KZW5jZXBoYWxpdGljLzUKZW5jZXBoYWxpdGlzLzFNCmVuY2hhaW4vNERHUwplbmNoYW50LzQxRUxER1MKZW5jaGFudGVyLzFNUwplbmNoYW50aW5nLzQ1MVkKZW5jaGFudG1lbnQvMUVNCmVuY2hhbnRtZW50cy8xCmVuY2hhbnRyZXNzLzFNUwplbmNoaWxhZGEvMVNNCmVuY2lwaGVyLzRTR0QKZW5jaXJjbGUvNERTR0wKZW5jaXJjbGVtZW50LzFNCmVuY2wvMQplbmNsYXZlLzE0TVMKZW5jbG9zZS80R0RTCmVuY2xvc2VkLzU0VQplbmNsb3N1cmUvMVNNCmVuY29kZS80MURSU1pHCmVuY29kZXIvMU0KZW5jb21pdW0vMU1TCmVuY29tcGFzcy80R0RTCmVuY29yZS8xNERTTUcKZW5jb3VudGVyLzQxR1NNRAplbmNvdXJhZ2UvNERTTEcKZW5jb3VyYWdlbWVudC8xU00KZW5jb3VyYWdpbmcvNTQxWQplbmNyb2FjaC80MUdMRFMKZW5jcm9hY2htZW50LzFTTQplbmNydXN0LzRER1MKZW5jcnVzdGF0aW9uLzFTTQplbmNyeXB0LzRER1MKZW5jcnlwdGlvbi8xCmVuY3VtYmVyLzRFR1NECmVuY3VtYmVyZWQvNTRVCmVuY3VtYnJhbmNlLzE0TVMKZW5jeQplbmN5Y2xpY2FsLzE1U00KZW5jeWNsb3BlZGlhLzFNUwplbmN5Y2xvcGVkaWMvNQplbmN5c3QvNExTR0QKZW5jeXN0bWVudC8xTQplbmQvMTRHVlNKTUQKZW5kYW5nZXIvNFNHREwKZW5kYW5nZXJtZW50LzFNCmVuZGVhci80U0dMRAplbmRlYXJpbmcvNTE0WQplbmRlYXJtZW50LzFTTQplbmRlYXZvci8xNEdTTUQKZW5kZW1pYy81MU1TCmVuZGVtaWNhbGx5LwplbmRnYW1lLzE1UwplbmRpbmcvMTRNCmVuZGl2ZS8xU00KZW5kbGVzcy81UFkKZW5kbGVzc25lc3MvMU0KZW5kbW9zdC81CmVuZG9jYXJkaXRpcy8xCmVuZG9jcmluZS81MU1TCmVuZG9jcmlub2xvZ2lzdC8xTVMKZW5kb2NyaW5vbG9neS8xTQplbmRvZ2Vub3VzLzVZCmVuZG9tZXRyaWFsLzUKZW5kb21ldHJpb3Npcy8xCmVuZG9tZXRyaXVtLzEKZW5kb3JwaGluLzFNUwplbmRvcnNlLzQxTFpHRFJTCmVuZG9yc2VtZW50LzFNUwplbmRvcnNlci8xTQplbmRvc2NvcGUvMU1TCmVuZG9zY29waWMvNQplbmRvc2NvcHkvMU0KZW5kb3RoZWxpYWwvNQplbmRvdGhlcm1pYy81CmVuZG90cmFjaGVhbC81CmVuZG93LzRTRExHCmVuZG93bWVudC8xTVMKZW5kcG9pbnQvMTRTTQplbmR1ZS80RFNHCmVuZHVyYWJsZS81VQplbmR1cmFuY2UvMU0KZW5kdXJlLzREU0JHCmVuZHdheXMvCmVuZW1hLzFTTQplbmVteS8xNFNNCmVuZXJnZXRpYy81MQplbmVyZ2V0aWNhbGx5LwplbmVyZ2l6ZS80WkdEUlMKZW5lcmdpemVyLzFNCmVuZXJneS8xU00KZW5lcnZhdGUvNDVHTkRTCmVuZXJ2YXRpb24vMU0KZW5mZWVibGUvNEdEU0wKZW5mZWVibGVtZW50LzFNCmVuZmlsYWRlLzE0RFNNRwplbmZvbGQvNFNHRAplbmZvcmNlLzRMWkdEUlMKZW5mb3JjZWFibGUvNVUKZW5mb3JjZWQvNFUKZW5mb3JjZW1lbnQvMU0KZW5mb3JjZXIvMU0KZW5mcmFuY2hpc2UvNEVHRFNMCmVuZnJhbmNoaXNlbWVudC8xRU0KZW5nYWdlLzRFQURTRwplbmdhZ2VtZW50LzFFTVMKZW5nYWdpbmdseS8KZW5nZW5kZXIvNFNHRAplbmdpbmUvMTRTTQplbmdpbmVlci8xNE1ER1MKZW5naW5lZXJpbmcvNDFNCmVuZ29yZ2UvNExHRFMKZW5nb3JnZW1lbnQvMU0KZW5ncmFtLzFTTQplbmdyYXZlLzRaR0pEUlMKZW5ncmF2ZXIvMU0KZW5ncmF2aW5nLzE0TQplbmdyb3NzLzRHTERTCmVuZ3Jvc3NtZW50LzFNCmVuZ3VsZi80U0xHRAplbmd1bGZtZW50LzFNCmVuaGFuY2UvNExaR0RSUwplbmhhbmNlbWVudC8xU00KZW5pZ21hLzFTTQplbmlnbWF0aWMvNQplbmlnbWF0aWNhbGx5LwplbmphbWJtZW50LzFTTQplbmpvaW4vNFNHRAplbmpveS80R0JMU0QKZW5qb3lhYmx5LwplbmpveW1lbnQvMVNNCmVubGFyZ2UvNExaR0RSUwplbmxhcmdlYWJsZS81CmVubGFyZ2VtZW50LzFNUwplbmxhcmdlci8xTQplbmxpZ2h0ZW4vNFNHTEQKZW5saWdodGVuZWQvNTE0VQplbmxpZ2h0ZW5tZW50LzFNCmVubGlzdC80MUFER1NMCmVubGlzdGVlLzFTTQplbmxpc3RtZW50LzFBTQplbmxpc3RtZW50cy8xCmVubGl2ZW4vNFNMREcKZW5saXZlbm1lbnQvMU0KZW5tZXNoLzREU0dMCmVubWVzaG1lbnQvMU0KZW5taXR5LzFTTQplbm5vYmxlLzREU0dMCmVubm9ibGVtZW50LzFNCmVubnVpLzE0TQplbm9ybWl0eS8xU00KZW5vcm1vdXMvNVBZCmVub3Jtb3VzbmVzcy8xTQplbm91Z2gvODFNCmVucGxhbmUvNERTRwplbnF1ZXVlLzREUwplbnF1aXJlci8xUwplbnF1aXJpbmdseS8KZW5yYWdlLzRHRFMKZW5yYXB0dXJlLzREU0cKZW5yaWNoLzREU0xHCmVucmljaG1lbnQvMU0KZW5yb2xsLzRETFNHCmVucm9sbG1lbnQvMU1TCmVuc2NvbmNlLzREU0cKZW5zZW1ibGUvMTRTTQplbnNocmluZS80R0xEUwplbnNocmluZW1lbnQvMU0KZW5zaHJvdWQvNERHUwplbnNpZ24vMTRNUwplbnNpbGFnZS8xNE0KZW5zbGF2ZS80RFNHTAplbnNsYXZlbWVudC8xTQplbnNuYXJlLzREU0xHCmVuc25hcmVtZW50LzFNCmVuc3VlLzREU0cKZW5zdXJlLzRaR0RSUwplbnN1cmVyLzFNCmVudGFpbC80MURTR0wKZW50YWlsbWVudC8xTQplbnRhbmdsZS80RURTTEcKZW50YW5nbGVtZW50LzFFTQplbnRhbmdsZW1lbnRzLzEKZW50ZW50ZS8xU00KZW50ZXIvNDFBU0dECmVudGVyYWwvNQplbnRlcmljLzUKZW50ZXJpdGlzLzFNCmVudGVycHJpc2UvMTRNR1MKZW50ZXJwcmlzaW5nLzU0MVkKZW50ZXJ0YWluLzQxWkdEUlNMCmVudGVydGFpbmVyLzFNCmVudGVydGFpbmluZy81NDFNWQplbnRlcnRhaW5tZW50LzFNUwplbnRocmFsbC80R0RTTAplbnRocmFsbG1lbnQvMU0KZW50aHJvbmUvNEdEU0wKZW50aHJvbmVtZW50LzFTTQplbnRodXNlLzREU0cKZW50aHVzaWFzbS8xTVMKZW50aHVzaWFzdC8xTVMKZW50aHVzaWFzdGljLzVVCmVudGh1c2lhc3RpY2FsbHkvCmVudGljZS80R0RTTAplbnRpY2VtZW50LzFNUwplbnRpY2luZy81NDFZCmVudGlyZS81MVkKZW50aXJldHkvMU0KZW50aXRsZS80RFNHTAplbnRpdGxlbWVudC8xU00KZW50aXR5LzFTTQplbnRvbWIvNERTR0wKZW50b21ibWVudC8xTQplbnRvbW9sb2dpY2FsLzUKZW50b21vbG9naXN0LzFNUwplbnRvbW9sb2d5LzFNCmVudG91cmFnZS8xU00KZW50cidhY3RlLzEKZW50cmFpbHMvMU0KZW50cmFpbmVkLzQKZW50cmFuY2UvMTRMRFNNRwplbnRyYW5jZW1lbnQvMU0KZW50cmFuY2luZy80NVkKZW50cmFudC8xU00KZW50cmFwLzRMUwplbnRyYXBtZW50LzFNCmVudHJhcHBlZC80CmVudHJhcHBpbmcvNAplbnRyZWF0LzQxR1NECmVudHJlYXRpbmcvNDFZCmVudHJlYXR5LzFTTQplbnRyZWUvMU1TCmVudHJlbmNoLzREU0dMCmVudHJlbmNobWVudC8xTVMKZW50cmVwcmVuZXVyLzFTTQplbnRyZXByZW5ldXJpYWwvNQplbnRyZXByZW5ldXJzaGlwLzEKZW50cm9weS8xTQplbnRydXN0LzRTR0QKZW50cnkvMUFTTQplbnRyeXBob25lLzFTCmVudHJ5d2F5LzFNUwplbnR3aW5lLzREU0cKZW51bWVyYWJsZS81CmVudW0vMVNNCmVudW1lcmF0ZS80RFNHTlgKZW51bWVyYXRpb24vMU0KZW51bWVyYXRvci8xU00KZW51bmNpYXRlLzREU0dOCmVudW5jaWF0aW9uLzFNCmVudXJlc2lzLzFNCmVudmVsb3AvNFNMRFJaRwplbnZlbG9wZS8xNFNNCmVudmVsb3Blci8xTQplbnZlbG9wbWVudC8xTQplbnZlbm9tLzRTREcKZW52aWFibGUvNVUKZW52aWFibHkvCmVudmlvdXMvNVBZCmVudmlvdXNuZXNzLzFNCmVudmlyb25tZW50LzFNUwplbnZpcm9ubWVudGFsLzUxWQplbnZpcm9ubWVudGFsaXNtLzFNCmVudmlyb25tZW50YWxpc3QvMTVTTQplbnZpcm9ucy8xNE0KZW52aXNhZ2UvNEdEUwplbnZpc2lvbi80REdTCmVudm95LzFTTQplbnZ5LzE0RFNNRwplbnZ5aW5nLzQxWQplbnp5bWF0aWMvNQplbnp5bWUvMVNNCmVvbGlhbi81CmVvbi8xU00KZW9zaW5vcGhpbC8xNVMKZW9zaW5vcGhpbGljLzUKZXBhdWxldC8xU00KZXBlZS8xTVMKZXBoZWRyaW5lLzFNCmVwaGVtZXJhLzFNCmVwaGVtZXJhbC8xNVkKZXBpYy8xNU1TCmVwaWNlbnRlci8xNE1TCmVwaWN1cmUvMVNNCmVwaWN1cmVhbi81MU1TCmVwaWRlbWljLzE1U00KZXBpZGVtaWNhbGx5LwplcGlkZW1pb2xvZ2ljYWwvNQplcGlkZW1pb2xvZ2lzdC8xU00KZXBpZGVtaW9sb2d5LzFNCmVwaWRlcm1hbC81CmVwaWRlcm1pYy81CmVwaWRlcm1pcy8xTVMKZXBpZHVyYWwvNTFTCmVwaWdsb3R0aXMvMU1TCmVwaWdyYW0vMVNNCmVwaWdyYW1tYXRpYy81CmVwaWdyYXBoLzE0TQplcGlncmFwaHMvMQplcGlncmFwaHkvMU0KZXBpbGVwc3kvMU0KZXBpbGVwdGljLzUxU00KZXBpbG9ndWUvMTRNUwplcGluZXBocmluZS8xTQplcGlwaGFueS8xU00KZXBpc2NvcGFjeS8xTQplcGlzY29wYWwvNQplcGlzY29wYXRlLzE0TQplcGlzb2RlLzFTTQplcGlzb2RpYy81CmVwaXNvZGljYWxseS8KZXBpc3RlbWljLzUKZXBpc3RlbW9sb2dpY2FsLzUKZXBpc3RlbW9sb2d5LzEKZXBpc3RsZS8xNFNNCmVwaXN0b2xhcnkvNTEKZXBpdGFwaC8xNE0KZXBpdGFwaHMvMTQKZXBpdGhlbGlhbC81CmVwaXRoZWxpdW0vMU0KZXBpdGhldC8xNFNNCmVwaXRvbWUvMVNNCmVwaXRvbWl6ZS80R0RTCmVwb2NoLzE0TQplcG9jaGFsLzUKZXBvY2hzLzEKZXBvbnltb3VzLzUKZXBveHkvNTE0RFNNRwplcHNpbG9uLzFTTQplcXVhYmlsaXR5LzFNCmVxdWFibGUvNQplcXVhYmx5LwplcXVhbC81NDFTTURZRwplcXVhbGl0eS8xSU0KZXF1YWxpemF0aW9uLzFNCmVxdWFsaXplLzRaR0RSUwplcXVhbGl6ZXIvMU0KZXF1YW5pbWl0eS8xTQplcXVhdGUvNDFEU0dOQlgKZXF1YXRpb24vMU0KZXF1YXRvci8xU00KZXF1YXRvcmlhbC81MQplcXVlcnJ5LzFTTQplcXVlc3RyaWFuLzUxU00KZXF1ZXN0cmlhbmlzbS8xTQplcXVlc3RyaWVubmUvMVNNCmVxdWlkaXN0YW50LzVZCmVxdWlsYXRlcmFsLzUxU00KZXF1aWxpYnJpdW0vMUVNCmVxdWluZS81MVNNCmVxdWlub2N0aWFsLzUxCmVxdWlub3gvMU1TCmVxdWlwLzQxQVMKZXF1aXBhZ2UvMTRNUwplcXVpcG1lbnQvMU0KZXF1aXBvaXNlLzE0TQplcXVpcHBlZC81NFVBCmVxdWlwcGluZy80MUEKZXF1aXRhYmxlLzVJCmVxdWl0YWJseS9JCmVxdWl0YXRpb24vMU0KZXF1aXR5LzFJU00KZXF1aXYvMQplcXVpdmFsZW5jZS8xNE1TCmVxdWl2YWxlbmN5LzFTTQplcXVpdmFsZW50LzUxNE1ZUwplcXVpdm9jYWwvNTFVWQplcXVpdm9jYWxuZXNzLzFNCmVxdWl2b2NhdGUvNEdOWERTCmVxdWl2b2NhdGlvbi8xTQplcXVpdm9jYXRvci8xU00KZXIvNDFDCmVyYS8xU00KZXJhZGljYWJsZS81SQplcmFkaWNhdGUvNERTR04KZXJhZGljYXRpb24vMU0KZXJhZGljYXRvci8xTVMKZXJhc2UvNDFEUlNCWkcKZXJhc2VyLzFNCmVyYXN1cmUvMVNNCmVyYml1bS8xTQplcmUvKzcxCmVyZWN0LzU0UFNHRFkKZXJlY3RpbGUvNQplcmVjdGlvbi8xU00KZXJlY3RuZXNzLzFNCmVyZWN0b3IvMU1TCmVyZWxvbmcvCmVyZW1pdGUvMU1TCmVyZy8xNFNNCmVyZ28vNzEKZXJnb25vbWljLzVTCmVyZ29ub21pY2FsbHkvCmVyZ29ub21pY3MvMU0KZXJnb3N0ZXJvbC8xTQplcmdvdC8xTQplcm1pbmUvMTU0U00KZXJvZGUvNERTRwplcm9kaWJsZS81CmVyb2dlbm91cy81CmVyb3Npb24vMU0KZXJvc2l2ZS81CmVyb3RpYy81MVMKZXJvdGljYS8xTQplcm90aWNhbGx5Lwplcm90aWNpc20vMU0KZXJyLzRHU0QKZXJyYW5kLzE0U00KZXJyYW50LzUxSQplcnJhdGEvMVNNCmVycmF0aWMvNTEKZXJyYXRpY2FsbHkvCmVycmF0dW0vMU0KZXJyb25lb3VzLzVZCmVycm9yLzE0U00KZXJzYXR6LzUxTVMKZXJzdC81CmVyc3R3aGlsZS81CmVydWN0LzRTREcKZXJ1Y3RhdGlvbi8xU00KZXJ1ZGl0ZS81MVlOCmVydWRpdGlvbi8xTQplcnVwdC80U0RHVgplcnVwdGlvbi8xTVMKZXJ5c2lwZWxhcy8xTQplcnl0aHJvY3l0ZS8xU00KZXJ5dGhyb215Y2luLzEKZXNjYWxhdGUvNENEU0dOCmVzY2FsYXRpb24vMUNNCmVzY2FsYXRpb25zLzEKZXNjYWxhdG9yLzE0TVMKZXNjYWxsb3AvMTRTR01ECmVzY2Fsb3BlLzFTCmVzY2FwYWRlLzFNUwplc2NhcGUvNDFMTUdEUwplc2NhcGVlLzFNUwplc2NhcGVtZW50LzFTTQplc2NhcGlzbS8xTQplc2NhcGlzdC81MU1TCmVzY2Fwb2xvZ2lzdC8xUwplc2NhcG9sb2d5LzEKZXNjYXJnb3QvMU1TCmVzY2Fyb2xlLzFNUwplc2NhcnBtZW50LzFNUwplc2NoYXRvbG9naWNhbC81CmVzY2hhdG9sb2d5LzEKZXNjaGV3LzRTREcKZXNjb3J0LzE0U01ERwplc2NyaXRvaXJlLzFNUwplc2Nyb3cvMTRTTQplc2N1ZG8vMVNNCmVzY3V0Y2hlb24vMVNNCmVzb3BoYWdlYWwvNQplc29waGFnaS8xCmVzb3BoYWd1cy8xTQplc290ZXJpYy81MQplc290ZXJpY2FsbHkvCmVzcC8KZXNwYWRyaWxsZS8xTVMKZXNwYWxpZXIvMTRNRFNHCmVzcGVjaWFsLzVZCmVzcGlvbmFnZS8xTQplc3BsYW5hZGUvMU1TCmVzcG91c2FsLzFNCmVzcG91c2UvNEdEUwplc3ByZXNzby8xTVMKZXNwcml0LzFNCmVzcHkvNDFEU0cKZXNxdWlyZS8xNFNNCmVzc2F5LzE0U01EUlpHCmVzc2F5ZXIvMU0KZXNzYXlpc3QvMVNNCmVzc2VuY2UvMVNNCmVzc2VudGlhbC81MUlNUwplc3NlbnRpYWxseS8KZXN0YWJsaXNoLzRBRVNER0wKZXN0YWJsaXNobWVudC8xQUVNCmVzdGFibGlzaG1lbnRzLzEKZXN0YXRlLzE1NFNNCmVzdGVlbS8xNEVTTURHCmVzdGVyLzFTTQplc3RpbWFibGUvNUkKZXN0aW1hdGUvMTRNR05EU1gKZXN0aW1hdGlvbi8xTQplc3RpbWF0b3IvMVNNCmVzdG9wcGVsLzEKZXN0cmFkaW9sLzEKZXN0cmFuZ2UvNExEU0cKZXN0cmFuZ2VtZW50LzFNUwplc3Ryb2dlbi8xTVMKZXN0cm91cy81CmVzdHJ1cy8xTVMKZXN0dWFyeS8xU00KZXRhLzFTTQpldGMvCmV0Y2gvNDFEUlNaR0oKZXRjaGVyLzFNCmV0Y2hpbmcvMTRNCmV0ZXJuYWwvNTFZUApldGVybmFsbmVzcy8xTQpldGVybml0eS8xU00KZXRoYW5lLzFNCmV0aGFub2wvMU0KZXRoZXIvMTRNCmV0aGVyZWFsLzUxWQpldGhpYy81MVNNCmV0aGljYWwvNTFVWQpldGhpY3MvMU0KZXRobW9pZC8xNQpldGhuaWMvNTFTTQpldGhuaWNhbGx5LwpldGhuaWNpdHkvMU0KZXRobm9jZW50cmljLzUKZXRobm9jZW50cmlzbS8xTQpldGhub2dyYXBoZXIvMVMKZXRobm9ncmFwaGljLzUKZXRobm9ncmFwaGljYWxseS8KZXRobm9ncmFwaHkvMQpldGhub2xvZ2ljYWwvNVkKZXRobm9sb2dpc3QvMVNNCmV0aG5vbG9neS8xTQpldGhvbG9naWNhbC81CmV0aG9sb2dpc3QvMU1TCmV0aG9sb2d5LzFNCmV0aG9zLzFNCmV0aHlsLzFNCmV0aHlsZW5lLzFNCmV0aW9sYXRlZC81NApldGlvbG9naWMvNQpldGlvbG9naWNhbC81CmV0aW9sb2d5LzFTTQpldGlxdWV0dGUvMU0KZXR1ZGUvMVNNCmV0eW1vbG9naWNhbC81WQpldHltb2xvZ2lzdC8xU00KZXR5bW9sb2d5LzFTTQpldWNhbHlwdGkvMQpldWNhbHlwdHVzLzFNUwpldWNocmUvMTREU01HCmV1Y2xpZGVhbi81CmV1Z2VuaWMvNVMKZXVnZW5pY2FsbHkvCmV1Z2VuaWNpc3QvMU1TCmV1Z2VuaWNzLzFNCmV1a2FyeW90ZS8xU00KZXVrYXJ5b3RpYy81MQpldWxvZ2lzdC8xTVMKZXVsb2dpc3RpYy81CmV1bG9naXplLzRaR0RSUwpldWxvZ2l6ZXIvMU0KZXVsb2d5LzFTTQpldW51Y2gvMTRNCmV1bnVjaHMvMQpldXBoZW1pc20vMVNNCmV1cGhlbWlzdGljLzUKZXVwaGVtaXN0aWNhbGx5LwpldXBob25pb3VzLzVZCmV1cGhvbnkvMU0KZXVwaG9yaWEvMU0KZXVwaG9yaWMvNTEKZXVwaG9yaWNhbGx5LwpldXJla2EvMQpldXJvLzFNUwpldXJvcGl1bS8xTQpldXRlY3RpYy81MQpldXRoYW5hc2lhLzFNCmV1dGhhbml6ZS80RFNHCmV1dGhlbmljcy8xTQpldXRyb3BoaWNhdGlvbi8xCmV2YWN1YXRlLzRYRFNHTgpldmFjdWF0aW9uLzFNCmV2YWN1ZWUvMU1TCmV2YWRlLzREUlNaRwpldmFkZXIvMU0KZXZhbHVhdGUvNEFHTlZEU1gKZXZhbHVhdGlvbi8xQU0KZXZhbHVhdG9yLzFTCmV2YW5lc2NlbmNlLzFNCmV2YW5lc2NlbnQvNQpldmFuZ2VsaWMvNTEKZXZhbmdlbGljYWwvNTFTTVkKZXZhbmdlbGljYWxpc20vMU0KZXZhbmdlbGlzbS8xTQpldmFuZ2VsaXN0LzFNUwpldmFuZ2VsaXN0aWMvNQpldmFuZ2VsaXplLzRHRFMKZXZhcG9yYXRlLzRHTkRTCmV2YXBvcmF0aW9uLzFNCmV2YXBvcmF0b3IvMVNNCmV2YXNpb24vMVNNCmV2YXNpdmUvNVlQCmV2YXNpdmVuZXNzLzFNCmV2ZS8xQVNNCmV2ZW4vNTQxTURSWVRHU0pQfgpldmVuaGFuZGVkLzVZCmV2ZW5pbmcvMTRNCmV2ZW5uZXNzLzFVTQpldmVuc29uZy8xTQpldmVudC8xNFNNCmV2ZW50ZnVsLzVVWQpldmVudGZ1bG5lc3MvMU0KZXZlbnRpZGUvMU0KZXZlbnR1YWwvNVkKZXZlbnR1YWxpdHkvMVNNCmV2ZW50dWF0ZS80R0RTCmV2ZXIvNQpldmVyZ2xhZGUvMVNNCmV2ZXJncmVlbi81MTRTTQpldmVybGFzdGluZy81MU1ZUwpldmVybW9yZS8KZXZlcnkvCmV2ZXJ5Ym9keS84TQpldmVyeWRheS81MQpldmVyeW9uZS84TQpldmVyeXBsYWNlLwpldmVyeXRoaW5nLzg0TQpldmVyeXdoZXJlLwpldmljdC80U0RHCmV2aWN0aW9uLzFNUwpldmlkZW5jZS8xNE1HRFMKZXZpZGVudC81WQpldmlsLzUxTVJZVFNQCmV2aWxkb2VyLzFTTQpldmlsZG9pbmcvMU0KZXZpbGxlci81CmV2aWxsZXN0LzUKZXZpbG5lc3MvMU0KZXZpbmNlLzREU0cKZXZpc2NlcmF0ZS80RFNHTgpldmlzY2VyYXRpb24vMU0KZXZvY2F0aW9uLzFNUwpldm9jYXRpdmUvNVkKZXZva2UvNERTRwpldm9sdXRpb24vMU1TCmV2b2x1dGlvbmFyeS81CmV2b2x1dGlvbmlzdC8xU00KZXZvbHZlLzREU0cKZXdlLzFSU01aCmV3ZXIvMU0KZXgvMTQ1TVMKZXhhYnl0ZS8xTVMKZXhhY2VyYmF0ZS80R05EUwpleGFjZXJiYXRpb24vMU0KZXhhY3QvNTRTUERSWVRHCmV4YWN0aW5nLzU0WQpleGFjdGlvbi8xTQpleGFjdGl0dWRlLzFNCmV4YWN0bmVzcy8xSU0KZXhhZ2dlcmF0ZS80NVhEU0dOCmV4YWdnZXJhdGVkLzU0WQpleGFnZ2VyYXRpb24vMU0KZXhhZ2dlcmF0b3IvMU1TCmV4YWpvdWxlLzFTCmV4YWx0LzRTREcKZXhhbHRhdGlvbi8xTQpleGFtLzE0TVMKZXhhbWluYXRpb24vMUFNUwpleGFtaW5lLzQxQUdEUwpleGFtaW5lci8xTVMKZXhhbXBsZS8xNE1HRFMKZXhhbXBsZWQvNFUKZXhhc3BlcmF0ZS80NURTR04KZXhhc3BlcmF0ZWQvNDVZCmV4YXNwZXJhdGluZy80NVkKZXhhc3BlcmF0aW9uLzFNCmV4Y2F2YXRlLzQxR05EU1gKZXhjYXZhdGlvbi8xTQpleGNhdmF0b3IvMVNNCmV4Y2VlZC80R1NECmV4Y2VlZGluZy80NTFZCmV4Y2VsLzRTCmV4Y2VsbGVkLzQKZXhjZWxsZW5jZS8xTQpleGNlbGxlbmN5LzFTTQpleGNlbGxlbnQvNVkKZXhjZWxsaW5nLzQKZXhjZWxzaW9yLzUxTQpleGNlcHQvNCs3R1NECmV4Y2VwdGlvbi8xQlNNCmV4Y2VwdGlvbmFibGUvNVUKZXhjZXB0aW9uYWwvNTFVWQpleGNlcHRpb25hbGlzbS8xCmV4Y2VycHQvMTRNREdTCmV4Y2Vzcy8xNTRWTVMKZXhjZXNzaXZlLzVZCmV4Y2hhbmdlLzE0RFNNRwpleGNoYW5nZWFibGUvNTEKZXhjaGVxdWVyLzE0U00KZXhjaXNlLzE0WERTTUdOCmV4Y2lzaW9uLzFNCmV4Y2l0YWJpbGl0eS8xTQpleGNpdGFibHkvCmV4Y2l0YXRpb24vMU0KZXhjaXRlLzRCRFJTTFpHCmV4Y2l0ZWQvNTRZCmV4Y2l0ZW1lbnQvMVNNCmV4Y2l0ZXIvMU0KZXhjaXRpbmcvNDUxWQpleGNpdG9uLzEKZXhjbC8rCmV4Y2xhaW0vNDFER1MKZXhjbGFtYXRpb24vMVNNCmV4Y2xhbWF0b3J5LzUKZXhjbHVkZS80R0RTCmV4Y2x1c2lvbi8xTVMKZXhjbHVzaW9uYXJ5LzUKZXhjbHVzaXZlLzUxUE1ZUwpleGNsdXNpdmVuZXNzLzFNCmV4Y2x1c2l2aXR5LzFNCmV4Y29tbXVuaWNhdGUvNTE0R05EU1gKZXhjb21tdW5pY2F0aW9uLzFNCmV4Y29yaWF0ZS80RFNHTlgKZXhjb3JpYXRpb24vMU0KZXhjcmVtZW50LzFNCmV4Y3JlbWVudGFsLzUKZXhjcmVzY2VuY2UvMU1TCmV4Y3Jlc2NlbnQvMTUKZXhjcmV0YS8xTQpleGNyZXRlLzRYR05EUwpleGNyZXRpb24vMU0KZXhjcmV0b3J5LzUxCmV4Y3J1Y2lhdGluZy81WQpleGN1bHBhdGUvNERTR04KZXhjdWxwYXRpb24vMU0KZXhjdWxwYXRvcnkvNQpleGN1cnNpb24vMTRNUwpleGN1cnNpb25pc3QvMU1TCmV4Y3Vyc2l2ZS81WVAKZXhjdXJzaXZlbmVzcy8xTQpleGN1c2FibGUvNUkKZXhjdXNhYmx5L0kKZXhjdXNlLzQxRFNCTUcKZXhjdXNlZC80VQpleGVjLzE0TVMKZXhlY3JhYmxlLzUKZXhlY3JhYmx5LwpleGVjcmF0ZS80RFNHTgpleGVjcmF0aW9uLzFNCmV4ZWN1dGUvNEJYR05WRFMKZXhlY3V0aW9uLzFaTVIKZXhlY3V0aW9uZXIvMU0KZXhlY3V0aXZlLzUxU00KZXhlY3V0b3IvMU1TCmV4ZWN1dHJpY2VzLzEKZXhlY3V0cml4LzFNCmV4ZWN1dGFibGUvNTFNUwpleGVnZXNlcy8xCmV4ZWdlc2lzLzFNCmV4ZWdldGljLzUKZXhlZ2V0aWNhbC81CmV4ZW1wbGFyLzE1U00KZXhlbXBsYXJ5LzUxCmV4ZW1wbGlmaWNhdGlvbi8xTQpleGVtcGxpZnkvNEdEU1hOCmV4ZW1wdC81MTRTR0QKZXhlbXB0aW9uLzFTTQpleGVyY2lzZS8xNERSU01aRwpleGVyY2lzZXIvMU0KZXhlcnQvNFNERwpleGVydGlvbi8xTVMKZXhldW50LzE0CmV4Zm9saWF0ZS80R05EUwpleGhhbGF0aW9uLzFNUwpleGhhbGUvNDFEU0cKZXhoYXVzdC80MTVHVk1EUwpleGhhdXN0aWJsZS81SQpleGhhdXN0aW9uLzFNCmV4aGF1c3RpdmUvNVlQCmV4aGF1c3RpdmVuZXNzLzFNCmV4aGliaXQvNDFHTURTCmV4aGliaXRpb24vMU1TCmV4aGliaXRpb25pc20vMU0KZXhoaWJpdGlvbmlzdC8xNU1TCmV4aGliaXRvci8xU00KZXhoaWxhcmF0ZS80RFNHTgpleGhpbGFyYXRpb24vMU0KZXhob3J0LzRTREcKZXhob3J0YXRpb24vMU1TCmV4aHVtYXRpb24vMU1TCmV4aHVtZS80RFNHCmV4aWdlbmNlLzFNUwpleGlnZW5jeS8xU00KZXhpZ2VudC81MQpleGlndWl0eS8xTQpleGlndW91cy81CmV4aWxlLzE0RFNNRwpleGlsaWMvNQpleGlzdC80U0RHCmV4aXN0ZW5jZS8xTVMKZXhpc3RlbnQvNTEKZXhpc3RlbnRpYWwvNTFZCmV4aXN0ZW50aWFsaXNtLzFNCmV4aXN0ZW50aWFsaXN0LzE1TVMKZXhpdC8xNE1ER1MKZXhvYmlvbG9neS8xTQpleG9kdXMvMTRNUwpleG9nZW5vdXMvNQpleG9uLzFNUwpleG9uZXJhdGUvNDVHTkRTCmV4b25lcmF0aW9uLzFNCmV4b3BsYW5ldC8xTVMKZXhvcmJpdGFuY2UvMU0KZXhvcmJpdGFudC81WQpleG9yY2lzZS80RFNHCmV4b3JjaXNtLzFTTQpleG9yY2lzdC8xU00KZXhvc2tlbGV0b24vMVNNCmV4b3NwaGVyZS8xU00KZXhvdGhlcm1pYy81CmV4b3RpYy81MVNNCmV4b3RpY2EvMQpleG90aWNhbGx5LwpleG90aWNpc20vMU0KZXhwLwpleHBhbmQvNEJHU0QKZXhwYW5zZS8xWE1OVlMKZXhwYW5zaWJsZS81CmV4cGFuc2lvbi8xTQpleHBhbnNpb25hcnkvNQpleHBhbnNpb25pc20vMU0KZXhwYW5zaW9uaXN0LzUxTVMKZXhwYW5zaXZlLzVZUApleHBhbnNpdmVuZXNzLzFNCmV4cGF0LzFTCmV4cGF0aWF0ZS80R05EUwpleHBhdGlhdGlvbi8xTQpleHBhdHJpYXRlLzUxNERTTUdOCmV4cGF0cmlhdGlvbi8xTQpleHBlY3QvNEdTRApleHBlY3RhbmN5LzFNCmV4cGVjdGFudC81MVkKZXhwZWN0YXRpb24vMVNNCmV4cGVjdG9yYW50LzE1U00KZXhwZWN0b3JhdGUvNERTR04KZXhwZWN0b3JhdGlvbi8xTQpleHBlZGllbmNlLzFJTQpleHBlZGllbmNlcy8xCmV4cGVkaWVuY2llcy8xCmV4cGVkaWVuY3kvMUlNCmV4cGVkaWVudC81MVNNWQpleHBlZGl0ZS80NURSU1pHTlgKZXhwZWRpdGVyLzFNCmV4cGVkaXRpb24vMTRNCmV4cGVkaXRpb25hcnkvNTEKZXhwZWRpdGlvdXMvNVBZCmV4cGVkaXRpb3VzbmVzcy8xTQpleHBlbC80UwpleHBlbGxlZC80CmV4cGVsbGluZy80MQpleHBlbmQvNEdTQkQKZXhwZW5kYWJsZS81MVNNCmV4cGVuZGl0dXJlLzFTTQpleHBlbnNlLzE0TVMKZXhwZW5zaXZlLzVJWVAKZXhwZW5zaXZlbmVzcy8xSU0KZXhwZXJpZW5jZS8xNElNRApleHBlcmllbmNlcy8xNApleHBlcmllbmNpbmcvNDEKZXhwZXJpZW50aWFsLzUKZXhwZXJpbWVudC8xNE1EUlNaRwpleHBlcmltZW50YWwvNTFZCmV4cGVyaW1lbnRhdGlvbi8xTQpleHBlcmltZW50ZXIvMU0KZXhwZXJ0LzUxU1BNWQpleHBlcnRpc2UvMTRNCmV4cGVydG5lc3MvMU0KZXhwaWF0ZS80R05EUwpleHBpYXRpb24vMU0KZXhwaWF0b3J5LzUKZXhwaXJhdGlvbi8xTQpleHBpcmUvNERTRwpleHBpcmVkLzQ1VQpleHBpcnkvMU0KZXhwbGFpbi80QURHUwpleHBsYWluYWJsZS81CmV4cGxhaW5lZC80VQpleHBsYW5hdGlvbi8xTVMKZXhwbGFuYXRvcnkvNQpleHBsZXRpdmUvNTFNUwpleHBsaWNhYmxlLzVJCmV4cGxpY2F0ZS80NVhHTkRTCmV4cGxpY2F0aW9uLzFNCmV4cGxpY2l0LzUxUFkKZXhwbGljaXRuZXNzLzFNCmV4cGxvZGUvNEdEUwpleHBsb2l0LzE0WkdCTURSUwpleHBsb2l0YXRpb24vMU0KZXhwbG9pdGF0aXZlLzUKZXhwbG9pdGVkLzRVCmV4cGxvaXRlci8xNE0KZXhwbG9yYXRpb24vMU1TCmV4cGxvcmF0b3J5LzUxCmV4cGxvcmUvNDFaR0RSUwpleHBsb3JlZC80VQpleHBsb3Jlci8xTQpleHBsb3Npb24vMVNNCmV4cGxvc2l2ZS81MVNQTVkKZXhwbG9zaXZlbmVzcy8xTQpleHBvLzFNUwpleHBvbmVudC8xTVMKZXhwb25lbnRpYWwvNTFZCmV4cG9uZW50aWF0aW9uLzEKZXhwb3J0LzUxNEJTWkdNRFIKZXhwb3J0YXRpb24vMU0KZXhwb3J0ZXIvMU0KZXhwb3NlLzREU01HCmV4cG9zZWQvNTRVCmV4cG9zaXRpb24vMVNNCmV4cG9zaXRvci8xU00KZXhwb3NpdG9yeS81CmV4cG9zdHVsYXRlLzRHTlhEUwpleHBvc3R1bGF0aW9uLzFNCmV4cG9zdXJlLzFNUwpleHBvdW5kLzRaR0RSUwpleHBvdW5kZXIvMU0KZXhwcmVzcy81MTRHVk1EU1kKZXhwcmVzc2VkLzQ1VQpleHByZXNzaWJsZS81SQpleHByZXNzaW9uLzFTTQpleHByZXNzaW9uaXNtLzFNCmV4cHJlc3Npb25pc3QvNTFTTQpleHByZXNzaW9uaXN0aWMvNQpleHByZXNzaW9ubGVzcy81WQpleHByZXNzaXZlLzUxUFkKZXhwcmVzc2l2ZW5lc3MvMU0KZXhwcmVzc3dheS8xU00KZXhwcm9wcmlhdGUvNEdOWERTCmV4cHJvcHJpYXRpb24vMU0KZXhwcm9wcmlhdG9yLzFTTQpleHB1bHNpb24vMU1TCmV4cHVuZ2UvNEdEUwpleHB1cmdhdGUvNERTR05YCmV4cHVyZ2F0ZWQvNDVVCmV4cHVyZ2F0aW9uLzFNCmV4cXVpc2l0ZS81MVlQCmV4cXVpc2l0ZW5lc3MvMU0KZXh0LzEKZXh0YW50LzUKZXh0ZW1wb3JhbmVvdXMvNVBZCmV4dGVtcG9yYW5lb3VzbmVzcy8xTQpleHRlbXBvcmUvNTEKZXh0ZW1wb3JpemF0aW9uLzFNCmV4dGVtcG9yaXplLzRHRFMKZXh0ZW5kLzQxU1pHRFJCCmV4dGVuZGVyLzFNCmV4dGVuc2liaWxpdHkvMQpleHRlbnNpYmxlLzUKZXh0ZW5zaW9uLzFTTQpleHRlbnNpb25hbC81CmV4dGVuc2l2ZS81WVAKZXh0ZW5zaXZlbmVzcy8xTQpleHRlbnQvMTVTTQpleHRlbnVhdGUvNDVEU0dOCmV4dGVudWF0aW9uLzFNCmV4dGVyaW9yLzUxTVMKZXh0ZXJtaW5hdGUvNERTWEdOCmV4dGVybWluYXRpb24vMU0KZXh0ZXJtaW5hdG9yLzFNUwpleHRlcm5hbC81MU1ZUwpleHRlcm5hbGl6YXRpb24vMVNNCmV4dGVybmFsaXplLzREU0cKZXh0aW5jdC81NDFHRFMKZXh0aW5jdGlvbi8xTVMKZXh0aW5ndWlzaC80WkdCRFJTCmV4dGluZ3Vpc2hhYmxlLzVJCmV4dGluZ3Vpc2hlci8xTQpleHRpcnBhdGUvNEdORFMKZXh0aXJwYXRpb24vMU0KZXh0b2wvNFMKZXh0b2xsZWQvNApleHRvbGxpbmcvNApleHRvcnQvNDVTR0QKZXh0b3J0aW9uLzFNUloKZXh0b3J0aW9uYXRlLzVZCmV4dG9ydGlvbmVyLzFNCmV4dG9ydGlvbmlzdC8xTVMKZXh0cmEvNTFTTQpleHRyYWNlbGx1bGFyLzUKZXh0cmFjdC8xNE1ER1ZTCmV4dHJhY3Rpb24vMVNNCmV4dHJhY3Rvci8xTVMKZXh0cmFjdXJyaWN1bGFyLzUxCmV4dHJhZGl0ZS80R05CWERTCmV4dHJhZGl0aW9uLzFNCmV4dHJhanVkaWNpYWwvNQpleHRyYWxlZ2FsLzUKZXh0cmFtYXJpdGFsLzUKZXh0cmFtdXJhbC81CmV4dHJhbmVvdXMvNVkKZXh0cmFvcmRpbmFpcmUvNTEKZXh0cmFvcmRpbmFyaWx5LwpleHRyYW9yZGluYXJ5LzUxCmV4dHJhcG9sYXRlLzRYR05EUwpleHRyYXBvbGF0aW9uLzFNCmV4dHJhc2Vuc29yeS81CmV4dHJhdGVycmVzdHJpYWwvNTFNUwpleHRyYXRlcnJpdG9yaWFsLzUKZXh0cmF0ZXJyaXRvcmlhbGl0eS8xTQpleHRyYXZhZ2FuY2UvMU1TCmV4dHJhdmFnYW50LzVZCmV4dHJhdmFnYW56YS8xTVMKZXh0cmF2ZWhpY3VsYXIvNQpleHRyZW1lLzUxUE1ZVFJTCmV4dHJlbWVuZXNzLzFNCmV4dHJlbWlzbS8xTQpleHRyZW1pc3QvMTVNUwpleHRyZW1pdHkvMVNNCmV4dHJpY2FibGUvNUkKZXh0cmljYXRlLzRHTkRTCmV4dHJpY2F0aW9uLzFNCmV4dHJpbnNpYy81MQpleHRyaW5zaWNhbGx5LwpleHRyb3ZlcnNpb24vMU0KZXh0cm92ZXJ0LzE1NFNNRApleHRydWRlLzRHRFMKZXh0cnVzaW9uLzFTTQpleHRydXNpdmUvNTEKZXh1YmVyYW5jZS8xTQpleHViZXJhbnQvNVkKZXh1ZGF0aW9uLzFNCmV4dWRlLzREU0cKZXh1bHQvNFNERwpleHVsdGFudC81WQpleHVsdGF0aW9uLzFNCmV4dXJiLzFTTQpleHVyYmFuLzUKZXh1cmJhbml0ZS8xU00KZXh1cmJpYS8xTQpleWUvMTREU00KZXllYmFsbC8xNEdNRFMKZXllYnJvdy8xNFNNCmV5ZWRyb3BwZXIvMVNNCmV5ZWZ1bC8xNVNNCmV5ZWdsYXNzLzFNUwpleWVpbmcvNApleWVsYXNoLzFNUwpleWVsZXNzLzUKZXllbGV0LzE0U00KZXllbGlkLzFTTQpleWVsaW5lci8xTVMKZXllb3BlbmVyLzFNUwpleWVvcGVuaW5nLzUKZXllcGllY2UvMU1TCmV5ZXNpZ2h0LzFNCmV5ZXNvcmUvMU1TCmV5ZXN0cmFpbi8xTQpleWV0ZWV0aC8xCmV5ZXRvb3RoLzFNCmV5ZXdhc2gvMTRNCmV5ZXdpdG5lc3MvMTRNUwpmLzFDSUFWVFIKZk1SSS8xCmZhLzErTQpmYWIvNTE0CmZhYmxlLzE0RFNNCmZhYnJpYy8xNFNNCmZhYnJpY2F0ZS80RFNHTlgKZmFicmljYXRpb24vMU0KZmFicmljYXRvci8xU00KZmFidWxvdXMvNVkKZmFjYWRlLzFTTQpmYWNlJ3MKZmFjZS8xNEFDU0RHCmZhY2VjbG90aC8xTQpmYWNlY2xvdGhzLzEKZmFjZWxlc3MvNQpmYWNlcGFsbS8xNFNERwpmYWNldC8xNFNNREcKZmFjZXRpb3VzLzVZUApmYWNldGlvdXNuZXNzLzFNCmZhY2lhbC81MVNNWQpmYWNpbGUvNVkKZmFjaWxpdGF0ZS80R05EUwpmYWNpbGl0YXRpb24vMU0KZmFjaWxpdGF0b3IvMU1TCmZhY2lsaXR5LzFTTQpmYWNpbmcvNTE0U00KZmFjc2ltaWxlLzE0RFNNCmZhY3NpbWlsZWluZy80CmZhY3QvMU1TCmZhY3Rpb24vMVNNCmZhY3Rpb25hbC81CmZhY3Rpb25hbGlzbS8xTQpmYWN0aW91cy81CmZhY3RpdGlvdXMvNQpmYWN0b2lkLzFTTQpmYWN0b3IncwpmYWN0b3IvMTRBU0RHCmZhY3RvcmlhbC8xNU1TCmZhY3Rvcml6YXRpb24vMQpmYWN0b3JpemUvNEdEUwpmYWN0b3J5LzE1U00KZmFjdG90dW0vMVNNCmZhY3R1YWwvNTFZCmZhY3VsdHkvMVNNCmZhZC8xR1NNRApmYWRkaXNoLzVQCmZhZGRpc3QvMU1TCmZhZGR5LzVQCmZhZGUvNTE0TVMKZmFkaW5nLzQxVQpmYWVyaWUvMVNNCmZhZmYvMTRER1MKZmFnLzE0U00KZmFnZ2VkLzQKZmFnZ2luZy80MQpmYWdnb3QvMTRTTQpmYWdvdC8xNFNNRwpmYWllbmNlLzFNCmZhaWwvNDE1REdKUwpmYWlsaW5nLzQxK00KZmFpbGxlLzFNCmZhaWx1cmUvMVNNCmZhaW4vNTRSVApmYWludC81MTRTTURSWVRHUApmYWludGhlYXJ0ZWQvNQpmYWludG5lc3MvMU0KZmFpci81MTRNUllUR0pQUwpmYWlyZ3JvdW5kLzFNUwpmYWlyaW5nLzE0TQpmYWlybmVzcy8xVU0KZmFpcndheS8xU00KZmFpcnkvMTVTTQpmYWlyeWxhbmQvMTVTTQpmYWl0aC8xTQpmYWl0aGZ1bCdzCmZhaXRoZnVsLzUxVVBZCmZhaXRoZnVsbmVzcy8xVU0KZmFpdGhmdWxzLzEKZmFpdGhsZXNzLzVQWQpmYWl0aGxlc3NuZXNzLzFNCmZhaXRocy8xCmZhaml0YS8xU00KZmFqaXRhcy8xTQpmYWtlLzUxNE1aR0RSUwpmYWtlci8xNU0KZmFraXIvMVNNCmZhbGNvbi8xNFNNUloKZmFsY29uZXIvMU0KZmFsY29ucnkvMU0KZmFsbC80MU1OR1MKZmFsbGFjaW91cy81WQpmYWxsYWN5LzFTTQpmYWxsYmFjay8xNTQKZmFsbGliaWxpdHkvMUlNCmZhbGxpYmxlLzVQCmZhbGxpYmxlbmVzcy8xTQpmYWxsaWJseS9JCmZhbGxvZmYvMVNNCmZhbGxvdXQvMU0KZmFsbG93LzE1NFNNREcKZmFsc2UvNTQxUFJZVApmYWxzZWhvb2QvMVNNCmZhbHNlbmVzcy8xTQpmYWxzZXR0by8xNFNNCmZhbHNpZS8xU00KZmFsc2lmaWFibGUvNQpmYWxzaWZpY2F0aW9uLzFNCmZhbHNpZmllci8xTQpmYWxzaWZ5LzREUlNaR05YCmZhbHNpdHkvMVNNCmZhbHRlci8xNEdTSk1ECmZhbHRlcmluZy81NDFZCmZhbWUncwpmYW1lLzE0RApmYW1pbGlhbC81CmZhbWlsaWFyLzUxTVlTCmZhbWlsaWFyaXR5LzFVTQpmYW1pbGlhcml6YXRpb24vMU0KZmFtaWxpYXJpemUvNEdEUwpmYW1pbHkvMTVTTQpmYW1pbmUvMVNNCmZhbWlzaC80RFNHCmZhbW91cy81NElZCmZhbi8xNFNNCmZhbmF0aWMvNTFTTQpmYW5hdGljYWwvNVkKZmFuYXRpY2lzbS8xTQpmYW5ib3kvMTRTTQpmYW5jaWFibGUvNQpmYW5jaWVyLzE1TQpmYW5jaWZ1bC81WVAKZmFuY2lmdWxuZXNzLzFNCmZhbmNpbHkvCmZhbmNpbmVzcy8xTQpmYW5jeS8xNTREUlNNWlRHUApmYW5jeXdvcmsvMU0KZmFuZGFuZ28vMTRNUwpmYW5kb20vMQpmYW5mYXJlLzE0U00KZmFuZy8xNE1EUwpmYW5saWdodC8xU00KZmFubmVkLzQKZmFubmluZy80MQpmYW5ueS8xU00KZmFudGFpbC8xTVMKZmFudGFzaWEvMVNNCmZhbnRhc2lzdC8xUwpmYW50YXNpemUvNEdEUwpmYW50YXN0aWMvNTEKZmFudGFzdGljYWwvNTFZCmZhbnRhc3kvMTREU01HCmZhbnppbmUvMU1TCmZhci81NDEKZmFyYWQvMVNNCmZhcmFkaXplLzRERwpmYXJhd2F5LzUxCmZhcmNlLzE0U00KZmFyY2ljYWwvNVkKZmFyZS8xNE1HRFMKZmFyZXdlbGwvMTU0U00KZmFyaW5hLzFNCmZhcmluYWNlb3VzLzUKZmFybS8xNE1EUlpHU0oKZmFybWVyLzFNCmZhcm1oYW5kLzFTTQpmYXJtaG91c2UvMVNNCmZhcm1pbmcvMTU0TQpmYXJtbGFuZC8xTVMKZmFybXN0ZWFkLzFNUwpmYXJteWFyZC8xTVMKZmFyby8xTQpmYXJyYWdvLzFNCmZhcnJhZ29lcy8xCmZhcnJpZXIvMTRNUwpmYXJyb3cvMTQ1U01ERwpmYXJzZWVpbmcvNQpmYXJzaWdodGVkLzVQCmZhcnNpZ2h0ZWRuZXNzLzFNCmZhcnQvNDFNREdTNgpmYXJ0aGVyLzU0CmZhcnRoZXJtb3N0LzUKZmFydGhlc3QvNQpmYXJ0aGluZy8xU00KZmFzY2lhLzFTTQpmYXNjaWNsZS8xU00KZmFzY2luYXRlLzRHTkRTWApmYXNjaW5hdGluZy81NFkKZmFzY2luYXRpb24vMU0KZmFzY2lzbS8xTQpmYXNjaXN0LzUxTVMKZmFzY2lzdGljLzUKZmFzaGlvbi8xNFpHQk1EUlMKZmFzaGlvbmFibGUvNTFVCmZhc2hpb25hYmx5L1UKZmFzaGlvbmVyLzFNCmZhc2hpb25pc3RhLzFNUwpmYXN0LzUxNE1EUlRHU1AKZmFzdGJhY2svMVNNCmZhc3RiYWxsLzFTTQpmYXN0ZW4vNFVBR0RTCmZhc3RlbmVyLzFTTQpmYXN0ZW5pbmcvNDFNUwpmYXN0aWRpb3VzLzVQWQpmYXN0aWRpb3VzbmVzcy8xTQpmYXN0bmVzcy8xTVMKZmF0LzUxNEdTUE1ECmZhdGFsLzUxWQpmYXRhbGlzbS8xTQpmYXRhbGlzdC8xU00KZmF0YWxpc3RpYy81CmZhdGFsaXN0aWNhbGx5LwpmYXRhbGl0eS8xU00KZmF0YmFjay8xTQpmYXRlLzE0TVMKZmF0ZWZ1bC81WVAKZmF0ZWZ1bG5lc3MvMU0KZmF0aGVhZC8xTURTCmZhdGhlci8xNFNHTURZCmZhdGhlcmhvb2QvMU0KZmF0aGVybGFuZC8xTVMKZmF0aGVybGVzcy81CmZhdGhvbS8xNFNNREdCCmZhdGhvbWFibGUvNVUKZmF0aG9tbGVzcy81CmZhdGlndWUvMTRNRFNHCmZhdGlndWVzLzE0TQpmYXRuZXNzLzFNCmZhdHNvLzFTCmZhdHRlbi80U0RHCmZhdHRlci81CmZhdHRlc3QvNQpmYXR0aW5lc3MvMU0KZmF0dHkvNTFSU01UUApmYXR1aXR5LzFNCmZhdHVvdXMvNVlQCmZhdHVvdXNuZXNzLzFNCmZhdHdhLzE0U00KZmF1Y2V0LzFTTQpmYXVsdC8xNENTTURHCmZhdWx0ZmluZGVyLzFTTQpmYXVsdGZpbmRpbmcvMTVNCmZhdWx0aWx5LwpmYXVsdGluZXNzLzFNCmZhdWx0bGVzcy81UFkKZmF1bHRsZXNzbmVzcy8xTQpmYXVsdHkvNVBSVApmYXVuLzFNUwpmYXVuYS8xU00KZmF1dmlzbS8xTQpmYXV2aXN0LzUxU00KZmF1eC81CmZhdmUvNTE0UwpmYXZvci8xNEVTTURHCmZhdm9yYWJsZS81VQpmYXZvcmFibHkvVQpmYXZvcml0ZS81MTRTTQpmYXZvcml0aXNtLzFNCmZhd24vMTU0TURSWkdTCmZhd25lci8xTQpmYXgvMTRHTURTCmZheS80NTFUU01SCmZhemUvNEdEUwpmYXplZC81NFUKZmVhbHR5LzFNCmZlYXIvMTQ1TURHUwpmZWFyZnVsLzVZUApmZWFyZnVsbmVzcy8xTQpmZWFybGVzcy81UFkKZmVhcmxlc3NuZXNzLzFNCmZlYXJzb21lLzUKZmVhc2liaWxpdHkvMU0KZmVhc2libGUvNUlVCmZlYXNpYmx5LwpmZWFzdC8xNFNNRFJaRwpmZWFzdGVyLzFNCmZlYXQvMTU0TVMKZmVhdGhlci8xNFNHTUQKZmVhdGhlcmJlZGRpbmcvNDFNCmZlYXRoZXJicmFpbmVkLzUKZmVhdGhlcmxlc3MvNQpmZWF0aGVyd2VpZ2h0LzFNUwpmZWF0aGVyeS81MVRSCmZlYXR1cmUvMTREU01HCmZlYXR1cmVsZXNzLzUKZmVicmlsZS81CmZlY2FsLzUKZmVjZXMvMU0KZmVja2xlc3MvNVBZCmZlY3VuZC81CmZlY3VuZGF0ZS80R05EUwpmZWN1bmRhdGlvbi8xTQpmZWN1bmRpdHkvMU0KZmVkLzE0U00KZmVkZXJhbC81MVNNWQpmZWRlcmFsaXNtLzFNCmZlZGVyYWxpc3QvMTVNUwpmZWRlcmFsaXphdGlvbi8xTQpmZWRlcmFsaXplLzRHRFMKZmVkZXJhdGUvNTE0RlhEU0dOCmZlZGVyYXRpb24vMTVGTQpmZWRvcmEvMVNNCmZlZS8xNFNNCmZlZWJsZS81NFJUUApmZWVibGVuZXNzLzFNCmZlZWJseS8KZmVlZC80MU1SWkdTSgpmZWVkYmFjay8xNE0KZmVlZGJhZy8xU00KZmVlZGVyLzFNCmZlZWRpbmcvNDFNCmZlZWRsb3QvMVNNCmZlZWwvNDE4NU1SWkdTSgpmZWVsZXIvMU0KZmVlbGdvb2QvNQpmZWVsaW5nLzUxNE1ZCmZlZXQvMQpmZWlnbi80U0RHCmZlaWduZWQvNTRVCmZlaW50LzE0NVNNREcKZmVpc3R5LzVUUgpmZWxkc3Bhci8xTQpmZWxpY2l0YXRlLzQ1R05YRFMKZmVsaWNpdGF0aW9uLzFNCmZlbGljaXRvdXMvNVkKZmVsaWNpdHkvMUlTTQpmZWxpbmUvNTFTTQpmZWxsLzQxNU1EUlpUR1MKZmVsbGEvMVMKZmVsbGF0aW8vMU0KZmVsbG93LzE0U00KZmVsbG93bWFuLzFNCmZlbGxvd21lbi8xCmZlbGxvd3NoaXAvMTRNUwpmZWxvbi81MVNNCmZlbG9uaW91cy81CmZlbG9ueS8xU00KZmVsdC8xNDVNREdTCmZlbS8xNQpmZW1hbGUvNTFQU00KZmVtYWxlbmVzcy8xTQpmZW1pbmluZS81MVNNWQpmZW1pbmluaXR5LzFNCmZlbWluaXNtLzFNCmZlbWluaXN0LzUxU00KZmVtaW5pemUvNERTRwpmZW1vcmFsLzUKZmVtdXIvMVNNCmZlbi8xU00KZmVuY2UvMTREUlNNWkcKZmVuY2VyLzFNCmZlbmNpbmcvNDFNCmZlbmQvNDFDRFJaR1MKZmVuZGVyLzE0Q00KZmVuZXN0cmF0aW9uLzFNCmZlbm5lbC8xTQpmZW50YW55bC8xTQpmZXJhbC81MQpmZXJtZW50LzQxRkNNUwpmZXJtZW50YXRpb24vMU0KZmVybWVudGVkLzQ1CmZlcm1lbnRpbmcvNApmZXJtaXVtLzFNCmZlcm4vMU1TCmZlcm55LzVSVApmZXJvY2lvdXMvNVBZCmZlcm9jaW91c25lc3MvMU0KZmVyb2NpdHkvMU0KZmVycmV0LzE0R1NNRApmZXJyaWMvNQpmZXJyb21hZ25ldGljLzUKZmVycm9tYWduZXRpc20vMQpmZXJyb3VzLzUKZmVycnVsZS8xNE1TCmZlcnJ5LzQxRFNNRwpmZXJyeWJvYXQvMVNNCmZlcnJ5bWFuLzFNCmZlcnJ5bWVuLzEKZmVydGlsZS81SQpmZXJ0aWxpdHkvMUlNCmZlcnRpbGl6YXRpb24vMU0KZmVydGlsaXplLzREUlNaRwpmZXJ0aWxpemVkLzRVCmZlcnRpbGl6ZXIvMU0KZmVydWxlLzE0U00KZmVydmVuY3kvMU0KZmVydmVudC81WQpmZXJ2aWQvNVkKZmVydm9yLzFNCmZlc3MvNDE1RktHU0QKZmVzdC8xTVJaVlMKZmVzdGFsLzUKZmVzdGVyLzE0R01ECmZlc3RpdmFsLzUxU00KZmVzdGl2ZS81WVAKZmVzdGl2ZW5lc3MvMU0KZmVzdGl2aXR5LzFTTQpmZXN0b29uLzE0R01EUwpmZXRhLzFNCmZldGFsLzUKZmV0Y2gvNDFEUlNaRwpmZXRjaGVyLzFNCmZldGNoaW5nLzU0MVkKZmV0ZS8xNE1HRFMKZmV0aWQvNTFQCmZldGlkbmVzcy8xTQpmZXRpc2gvMU1TCmZldGlzaGlzbS8xTQpmZXRpc2hpc3QvMVNNCmZldGlzaGlzdGljLzUKZmV0bG9jay8xTVMKZmV0dGVyJ3MKZmV0dGVyLzE0VVNHRApmZXR0bGUvMTRNCmZldHR1Y2NpbmUvMU0KZmV0dXMvMU1TCmZldWQvMTRNREdTCmZldWRhbC81CmZldWRhbGlzbS8xTQpmZXVkYWxpc3RpYy81CmZldmVyLzE0U01ECmZldmVyaXNoLzVZUApmZXZlcmlzaG5lc3MvMU0KZmV3LzhUUE1SCmZld25lc3MvMU0KZmV5LzUxCmZlei8xTQpmZXp6ZXMvMQpmZi80CmZpYW5jZS8xNENNCmZpYW5jZWUvMU1TCmZpYW5jZXMvMQpmaWFzY28vMU0KZmlhc2NvZXMvMQpmaWF0LzE0TVMKZmliLzE0WlNNUgpmaWJiZWQvNApmaWJiZXIvMVNNCmZpYmJpbmcvNDEKZmliZXIvMU0KZmliZXJib2FyZC8xTQpmaWJlcmZpbGwvMU0KZmliZXJnbGFzcy8xNE0KZmlicmlsLzFTTQpmaWJyaWxsYXRlLzRHTkRTCmZpYnJpbGxhdGlvbi8xTQpmaWJyaW4vMTRNCmZpYnJvaWQvMQpmaWJyb3Npcy8xTQpmaWJyb3VzLzUKZmlidWxhLzFNCmZpYnVsYWUvMQpmaWJ1bGFyLzUKZmljaGUvMVNNCmZpY2h1LzFTTQpmaWNrbGUvNTRSUFQKZmlja2xlbmVzcy8xTQpmaWN0aW9uLzFNUwpmaWN0aW9uYWwvNVkKZmljdGlvbmFsaXphdGlvbi8xU00KZmljdGlvbmFsaXplLzREU0cKZmljdGl0aW91cy81WQpmaWN0aXZlLzUxCmZpY3VzLzFNCmZpZGRsZS8xNERSU01aRwpmaWRkbGVyLzFNCmZpZGRsZXN0aWNrcy8xCmZpZGRseS81VFIKZmlkZWxpdHkvMUlNCmZpZGdldC80MVNHTUQKZmlkZ2V0eS81CmZpZHVjaWFyeS81MVNNCmZpZS8KZmllZi8xTVMKZmllZmRvbS8xTVMKZmllbGQvMTRJU01SWgpmaWVsZGVkLzQKZmllbGRlci8xSU0KZmllbGRpbmcvNDEKZmllbGRzbWFuLzEKZmllbGRzbWVuLzEKZmllbGR3b3JrLzFNUloKZmllbGR3b3JrZXIvMU0KZmllbmQvMTRTTQpmaWVuZGlzaC81WQpmaWVyY2UvNVBSWVQKZmllcmNlbmVzcy8xTQpmaWVyaW5lc3MvMU0KZmllcnkvNVJQVApmaWVzdGEvMTRTTQpmaWZlLzE0TVpSUwpmaWZlci8xTQpmaWZ0ZWVuLzFNSFMKZmlmdGVlbnRoLzUxTQpmaWZ0ZWVudGhzLzEKZmlmdGgvNTE0TVkKZmlmdGhzLzEKZmlmdGlldGgvNTFNCmZpZnRpZXRocy8xCmZpZnR5LzFTTUgKZmlnLzE0U0xNCmZpZ2h0LzQxU01SWkcKZmlnaHRiYWNrLzEKZmlnaHRlci8xSU1TCmZpZ2h0aW5nLzU0MUlNCmZpZ21lbnQvMU1TCmZpZ3VyYXRpb24vMUZNCmZpZ3VyYXRpdmUvNVkKZmlndXJlJ3MKZmlndXJlLzE0RkVHU0QKZmlndXJlaGVhZC8xU00KZmlndXJpbmUvMU1TCmZpbGFtZW50LzFNUwpmaWxhbWVudG91cy81CmZpbGJlcnQvMU1TCmZpbGNoLzQxRFNHCmZpbGUncy9LQwpmaWxlLzE0Q0FLR0RTCmZpbGVuYW1lLzFTCmZpbGVyLzFDU00KZmlsZXQvMTQKZmlsaWFsLzUKZmlsaWJ1c3Rlci8xNE1EUlNaRwpmaWxpYnVzdGVyZXIvMU0KZmlsaWdyZWUvMTREU00KZmlsaWdyZWVpbmcvNApmaWxpbmcncwpmaWxpbmdzLzEKZmlsbCdzCmZpbGwvNDFBSURHUwpmaWxsZWQvNTRVCmZpbGxlci8xTVMKZmlsbGV0LzE0TURHUwpmaWxsaW5nLzQ1MVNNCmZpbGxpcC8xNE1ER1MKZmlsbHkvMVNNCmZpbG0vMTRNREdTCmZpbG1pbmVzcy8xTQpmaWxtbWFrZXIvMVNNCmZpbG1zdHJpcC8xTVMKZmlsbXkvNVRQUgpmaWxvLzEKZmlsdGVyLzE0TURSQlNaRwpmaWx0ZXJlZC81NFUKZmlsdGVyZXIvMU0KZmlsdGgvMU0KZmlsdGhpbHkvCmZpbHRoaW5lc3MvMU0KZmlsdGh5LzU0UlBUCmZpbHRyYXRlJ3MKZmlsdHJhdGUvMTRJR05EUwpmaWx0cmF0aW9uLzFJTQpmaW4vMTRTTVIKZmluYWdsZS80RFJTWkcKZmluYWdsZXIvMU0KZmluYWwvMTU0U01ZCmZpbmFsZS8xTVMKZmluYWxpc3QvMVNNCmZpbmFsaXR5LzFNCmZpbmFsaXphdGlvbi8xTQpmaW5hbGl6ZS80RFNHCmZpbmFuY2UncwpmaW5hbmNlLzE0QURTRwpmaW5hbmNpYWwvNVkKZmluYW5jaWVyLzE0TVMKZmluYW5jaW5nLzE0TQpmaW5jaC8xNE1TCmZpbmQvNDFKTVJaR1MKZmluZGVyLzFNCmZpbmRpbmcvMTRNCmZpbmRpbmdzLzFNCmZpbmUncy9GCmZpbmUvNTE0Q0FGVEdEUwpmaW5lbHkvCmZpbmVuZXNzLzFNCmZpbmVyeS8xQU0KZmluZXNwdW4vNQpmaW5lc3NlLzE0RFNNRwpmaW5nZXIvMTRNREdTSgpmaW5nZXJib2FyZC8xU00KZmluZ2VyaW5nLzE0TQpmaW5nZXJsaW5nLzFTTQpmaW5nZXJtYXJrLzFTCmZpbmdlcm5haWwvMVNNCmZpbmdlcnByaW50LzE0U0dNRApmaW5nZXJ0aXAvMTRNUwpmaW5pYWwvMU1TCmZpbmljYWwvNQpmaW5pY2tpbmVzcy8xTQpmaW5pY2t5LzVSUFQKZmluaXMvMU1TCmZpbmlzaCdzCmZpbmlzaC8xNEFEU0cKZmluaXNoZWQvNTRVCmZpbmlzaGVyLzFNUwpmaW5pdGUvNTFJWQpmaW5rLzE0TURHUwpmaW5uZWQvNTQKZmlubnkvNQpmaXIvMVpHU0pNRFJICmZpcmUvMTU0TVMKZmlyZWFybS8xU00KZmlyZWJhbGwvMTU0TVMKZmlyZWJvbWIvMTRNRFNKRwpmaXJlYm94LzFNUwpmaXJlYnJhbmQvMVNNCmZpcmVicmVhay8xU00KZmlyZWJyaWNrLzFTTQpmaXJlYnVnLzFTTQpmaXJlY3JhY2tlci8xU00KZmlyZWRhbXAvMU0KZmlyZWZpZ2h0LzE0TVJTWkcKZmlyZWZpZ2h0ZXIvMU0KZmlyZWZpZ2h0aW5nLzFNCmZpcmVmbHkvMVNNCmZpcmVndWFyZC8xUwpmaXJlaG91c2UvMVNNCmZpcmVsaWdodC8xWk1SCmZpcmVtYW4vMU0KZmlyZW1lbi8xCmZpcmVwbGFjZS8xU00KZmlyZXBsdWcvMU1TCmZpcmVwb3dlci8xTQpmaXJlcHJvb2YvNTREU0cKZmlyZXIvMU0KZmlyZXNjcmVlbi8xUwpmaXJlc2lkZS8xTVMKZmlyZXN0b3JtLzFNUwpmaXJldHJhcC8xTVMKZmlyZXRydWNrLzFNUwpmaXJld2FsbC8xNE1TCmZpcmV3YXRlci8xTQpmaXJld29vZC8xTQpmaXJld29yay8xU00KZmlybS8xNTRNRFJZUFRHUwpmaXJtYW1lbnQvMVNNCmZpcm1uZXNzLzFNCmZpcm13YXJlLzFNCmZpcnN0LzUxNFNNWX4KZmlyc3Rib3JuLzE1U00KZmlyc3RoYW5kLzUKZmlydGgvMU0KZmlydGhzLzEKZmlzY2FsLzUxTVlTCmZpc2gvMTRNRFJTWkcKZmlzaGJvd2wvMVNNCmZpc2hjYWtlLzFTTQpmaXNoZXIvMU0KZmlzaGVybWFuLzFNCmZpc2hlcm1lbi8xCmZpc2hlcnkvMVNNCmZpc2hob29rLzE0U00KZmlzaGlseS8KZmlzaGluZXNzLzFNCmZpc2hpbmcvMTRNCmZpc2htb25nZXIvMU1TCmZpc2huZXQvMVNNCmZpc2hwb25kLzFNUwpmaXNodGFpbC8xNERHUwpmaXNod2lmZS8xTQpmaXNod2l2ZXMvMQpmaXNoeS81MVRSUApmaXNzaWxlLzUKZmlzc2lvbi8xNEJNCmZpc3N1cmUvMTRTTQpmaXN0LzE0TVMKZmlzdGZpZ2h0LzE0TVMKZmlzdGZ1bC8xU00KZmlzdGljdWZmcy8xTQpmaXN0dWxhLzFTTQpmaXN0dWxvdXMvNU0KZml0LzU0MUtBTVMKZml0ZnVsLzVZUApmaXRmdWxuZXNzLzFNCmZpdGx5LwpmaXRtZW50LzFTCmZpdG5lc3MvMVVNCmZpdHRlZC80NTFVQQpmaXR0ZXIvMTVNUwpmaXR0ZXN0LzU0CmZpdHRpbmcvNDUxU01ZCmZpdmUvMU1aUlMKZml4LzQxWkdCSk1EUlMKZml4YXRlLzRHTlZEU1gKZml4YXRpb24vMU0KZml4YXRpdmUvMTVNUwpmaXhlZC80NVkKZml4ZXIvMU0KZml4aW5ncy8xTQpmaXhpdHkvMU0KZml4dHVyZS8xNE1TCmZpenovMTRNRFNHCmZpenpsZS80MURTTUcKZml6enkvNTFSVApmam9yZC8xU00KZmwvNUpERwpmbGFiLzFNCmZsYWJiZXJnYXN0LzQxU0dECmZsYWJiaWx5LwpmbGFiYmluZXNzLzFNCmZsYWJieS81UlBUCmZsYWNjaWQvNVkKZmxhY2NpZGl0eS8xTQpmbGFjay80MVNNCmZsYWcvMTRNUwpmbGFnZWxsYS8xCmZsYWdlbGxhbnQvMTVTCmZsYWdlbGxhdGUvNDUxR05EUwpmbGFnZWxsYXRpb24vMU0KZmxhZ2VsbHVtLzFNCmZsYWdnZWQvNDUKZmxhZ2dpbmcvNDUxVQpmbGFnbWFuLzFNCmZsYWdtZW4vMQpmbGFnb24vMU1TCmZsYWdwb2xlLzE0U00KZmxhZ3JhbmNlLzFNCmZsYWdyYW5jeS8xTQpmbGFncmFudC81WQpmbGFnc2hpcC8xNFNNCmZsYWdzdGFmZi8xTVMKZmxhZ3N0b25lLzFNUwpmbGFpbC8xNFNHTUQKZmxhaXIvMTRTTQpmbGFrLzFNCmZsYWtlLzE0RFNNRwpmbGFraW5lc3MvMU0KZmxha3kvNVRSUApmbGFtYWdlLzEKZmxhbWJlLzUxNE1TCmZsYW1iZWVkLzQKZmxhbWJlaW5nLzQKZmxhbWJveWFuY2UvMU0KZmxhbWJveWFuY3kvMU0KZmxhbWJveWFudC81MVkKZmxhbWUvMTU0RFJTSk1aRwpmbGFtZW5jby8xNE1TCmZsYW1lcHJvb2YvNTRER1MKZmxhbWV0aHJvd2VyLzFTTQpmbGFtaW5nby8xNU1TCmZsYW1tYWJpbGl0eS8xSU0KZmxhbW1hYmxlLzUxU00KZmxhbi8xNE1TCmZsYW5nZS8xNE1TCmZsYW5rLzQxNVNaR01EUgpmbGFua2VyLzE0TQpmbGFubmVsLzE1NFNHTUQKZmxhbm5lbGV0dGUvMU0KZmxhcC8xNE1TCmZsYXBqYWNrLzFNUwpmbGFwcGVkLzQ1CmZsYXBwZXIvMVNNCmZsYXBwaW5nLzUxNApmbGFyZS8xNERTTUcKZmxhcmV1cC8xU00KZmxhc2gvNDE1WlRHTURSUwpmbGFzaGJhY2svMTRTTQpmbGFzaGJ1bGIvMVNNCmZsYXNoY2FyZC8xU00KZmxhc2hjdWJlLzFTTQpmbGFzaGVyLzFNCmZsYXNoZ3VuLzFTTQpmbGFzaGlseS8KZmxhc2hpbmVzcy8xTQpmbGFzaGluZy8xNE0KZmxhc2hsaWdodC8xNE1TCmZsYXNoeS81UlRQCmZsYXNrLzE0U00KZmxhdC81MTRNWVBTCmZsYXRiZWQvMTU0U00KZmxhdGJvYXQvMVNNCmZsYXRicmVhZC8xCmZsYXRjYXIvMVNNCmZsYXRmZWV0LzEKZmxhdGZpc2gvMU1TCmZsYXRmb290LzE0U01ECmZsYXRpcm9uLzE1U00KZmxhdGxhbmQvMU0KZmxhdGxldC8xUwpmbGF0bWF0ZS8xUwpmbGF0bmVzcy8xTQpmbGF0dGVkLzQKZmxhdHRlbi80U0RHCmZsYXR0ZXIvNTQxU0RSWkcKZmxhdHRlcmVyLzFNCmZsYXR0ZXJpbmcvNTQxWQpmbGF0dGVyeS8xTQpmbGF0dGVzdC81CmZsYXR0aW5nLzE0CmZsYXR0aXNoLzUKZmxhdHRvcC8xU00KZmxhdHVsZW5jZS8xTQpmbGF0dWxlbnQvNQpmbGF0dXMvMU0KZmxhdHdhcmUvMU0KZmxhdHdvcm0vMVNNCmZsYXVudC80MU1EU0cKZmxhdW50aW5nLzQ1MVkKZmxhdm9yLzE0TURTR0oKZmxhdm9yZWQvNTRVCmZsYXZvcmZ1bC81CmZsYXZvcmluZy8xNE0KZmxhdm9ybGVzcy81CmZsYXZvcnNvbWUvNQpmbGF3LzE0TURHUwpmbGF3bGVzcy81UFkKZmxhd2xlc3NuZXNzLzFNCmZsYXgvMU1OCmZsYXkvNDFER1MKZmxlYS8xNE1TCmZsZWFiYWcvMVNNCmZsZWFiaXRlLzFTCmZsZWFwaXQvMVMKZmxlY2svMTRTR01ECmZsZWRnZWQvNTRVCmZsZWRnbGluZy81MU1TCmZsZWUvNFMKZmxlZWNlLzE0TVpHRFJTCmZsZWVjZXIvMU0KZmxlZWNpbmVzcy8xTQpmbGVlY3kvNVJUUApmbGVlaW5nLzQxCmZsZWV0LzE0NVNUR01EUllQCmZsZWV0aW5nbHkvTQpmbGVldGluZ25lc3MvMU0KZmxlZXRuZXNzLzFNCmZsZXNoLzE0R01EU1kKZmxlc2hseS81VFIKZmxlc2hwb3QvMU1TCmZsZXNoeS81UlQKZmxldy80MTUKZmxleC8xNEFNUwpmbGV4ZWQvNApmbGV4aWJpbGl0eS8xSU0KZmxleGlibGUvNTFJCmZsZXhpYmx5L0kKZmxleGluZy80MQpmbGV4aW9uLzEKZmxleHRpbWUvMU0KZmxpYmJlcnRpZ2liYmV0LzFTTQpmbGljay8xNFNaR01EUgpmbGlja2VyLzE0R01ECmZsaWVyLzUxNE0KZmxpZ2h0LzE1NE1TCmZsaWdodGluZXNzLzFNCmZsaWdodGxlc3MvNQpmbGlnaHR5LzVQVFIKZmxpbWZsYW0vMTRTTQpmbGltZmxhbW1lZC80CmZsaW1mbGFtbWluZy80CmZsaW1zaWx5LwpmbGltc2luZXNzLzFNCmZsaW1zeS81MVRSUApmbGluY2gvMTRHTURTCmZsaW5nLzE0R00KZmxpbnQvMTRTTQpmbGludGxvY2svMVNNCmZsaW50eS81VFIKZmxpcC8xNDVNUwpmbGlwcGFuY3kvMU0KZmxpcHBhbnQvNVkKZmxpcHBlZC80CmZsaXBwZXIvMTRNUwpmbGlwcGVzdC81CmZsaXBwaW5nLzQ1MQpmbGlwcHkvNTFTCmZsaXJ0LzE0NVNHTUQKZmxpcnRhdGlvbi8xTVMKZmxpcnRhdGlvdXMvNVlQCmZsaXJ0YXRpb3VzbmVzcy8xTQpmbGlydHkvNQpmbGl0LzE0NU1TCmZsaXR0ZWQvNApmbGl0dGluZy8xNDUKZmxvYXQvNDFTTURSWkcKZmxvYXRlci8xTQpmbG9jay8xNFNNREcKZmxvY2tpbmcvNDFNCmZsb2UvMU1TCmZsb2cvNDFTCmZsb2dnZWQvNApmbG9nZ2VyLzFTTQpmbG9nZ2luZy8xNE1TCmZsb29kLzE0U01EUkcKZmxvb2RnYXRlLzFNUwpmbG9vZGxpZ2h0LzE0TURTRwpmbG9vZGxpdC81NApmbG9vZHBsYWluLzFNUwpmbG9vZHdhdGVyLzFNUwpmbG9vci8xNFNNREcKZmxvb3Jib2FyZC8xNE1TCmZsb29yaW5nLzE0TQpmbG9vcndhbGtlci8xU00KZmxvb3p5LzFTTQpmbG9wLzQxTVMKZmxvcGhvdXNlLzE0TVMKZmxvcHBlZC80CmZsb3BwaWx5LwpmbG9wcGluZXNzLzFNCmZsb3BwaW5nLzQxCmZsb3BweS81MVBSU01UCmZsb3JhLzFTTQpmbG9yYWwvNTEKZmxvcmVzY2VuY2UvMUlNCmZsb3Jlc2NlbnQvNUkKZmxvcmV0LzFTTQpmbG9yaWQvNVBZCmZsb3JpZG5lc3MvMU0KZmxvcmluLzFTTQpmbG9yaXN0LzFTTQpmbG9zcy8xNE1EU0cKZmxvc3N5LzVSVApmbG90YXRpb24vMVNNCmZsb3RpbGxhLzFNUwpmbG90c2FtLzFNCmZsb3VuY2UvNDFEU01HCmZsb3VuY3kvNQpmbG91bmRlci8xNE1EU0cKZmxvdXIvMTRTTURHCmZsb3VyaXNoLzQxR01EUwpmbG91cnkvNQpmbG91dC80MVNNRFJaRwpmbG91dGVyLzFNCmZsb3cvMTRNREdTCmZsb3djaGFydC8xU00KZmxvd2VyJ3MKZmxvd2VyLzE0Q1NERwpmbG93ZXJiZWQvMU1TCmZsb3dlcmluZXNzLzFNCmZsb3dlcmluZy80MTVTCmZsb3dlcmxlc3MvNQpmbG93ZXJwb3QvMU1TCmZsb3dlcnkvNVBUUgpmbG93bi80NQpmbHQvMQpmbHUvMU0KZmx1Yi8xNE1TCmZsdWJiZWQvNApmbHViYmluZy80CmZsdWN0dWF0ZS80R05EU1gKZmx1Y3R1YXRpb24vMU0KZmx1ZS8xNU1TCmZsdWVuY3kvMU0KZmx1ZW50LzUxWQpmbHVmZi8xNFNNREcKZmx1ZmZpbmVzcy8xTQpmbHVmZnkvNTFSUFQKZmx1aWQvMTVTTVkKZmx1aWRpdHkvMU0KZmx1a2UvMTRTTQpmbHVreS81UlQKZmx1bWUvMTRTTQpmbHVtbW94LzREU0cKZmx1bmcvNApmbHVuay80U01ERwpmbHVua3kvMVNNCmZsdW9yZXNjZS80RFNHCmZsdW9yZXNjZW5jZS8xTQpmbHVvcmVzY2VudC81MQpmbHVvcmlkYXRlLzRHTkRTCmZsdW9yaWRhdGlvbi8xTQpmbHVvcmlkZS8xU00KZmx1b3JpbmUvMU0KZmx1b3JpdGUvMU0KZmx1b3JvY2FyYm9uLzFNUwpmbHVvcm9zY29wZS8xNFNNCmZsdW9yb3Njb3BpYy81CmZsdW94ZXRpbmUvMQpmbHVycnkvMTRHRFNNCmZsdXNoLzE0NU1EUlNURwpmbHVzdGVyLzQxTURTRwpmbHV0ZS8xNERTTUcKZmx1dGluZy80NTFNCmZsdXRpc3QvMU1TCmZsdXR0ZXIvNDFNRFNHCmZsdXR0ZXJ5LzUKZmx1dmlhbC81CmZsdXgvMTQ1SU1TCmZsdXhlZC80CmZsdXhpbmcvNApmbHkvMTQ1WlRHQkRSU00KZmx5YXdheS81MQpmbHlibG93bi81CmZseWJ5LzFNCmZseWJ5cy8xCmZseWNhdGNoZXIvMU1TCmZseWluZy81NDFNCmZseWxlYWYvMU0KZmx5bGVhdmVzLzEKZmx5b3Zlci8xTVMKZmx5cGFwZXIvMTRTTQpmbHlwYXN0LzFTCmZseXNoZWV0LzFTCmZseXNwZWNrLzE0R01EUwpmbHlzd2F0dGVyLzFNUwpmbHl0cmFwLzFTCmZseXdheS8xU00KZmx5d2VpZ2h0LzFTTQpmbHl3aGVlbC8xTVMKZm9hbC8xNE1ER1MKZm9hbS8xNE1ER1MKZm9hbWluZXNzLzFNCmZvYW15LzUxUlRQCmZvYi8xNDVTTQpmb2JiZWQvNApmb2JiaW5nLzQKZm9jYWwvNTFZCmZvY3VzJ3MKZm9jdXMvMTRBRFNHCmZvY3VzZWQvNTRVCmZvZGRlci8xNFNNCmZvZS81MVNNCmZvZydzCmZvZy8xNENTCmZvZ2JvdW5kLzUKZm9nZ2VkLzRDCmZvZ2dpbHkvCmZvZ2dpbmVzcy8xTQpmb2dnaW5nLzQxQwpmb2dneS81UlRQCmZvZ2hvcm4vMTRNUwpmb2d5LzFTTQpmb2d5aXNoLzUKZm9pYmxlLzE1U00KZm9pbC8xNE1ER1MKZm9pc3QvNDE1U0RHCmZvbApmb2xkJ3MKZm9sZC80MUFVU0dECmZvbGRhd2F5LzUxCmZvbGRlci8xU00KZm9sZG91dC8xNU1TCmZvbGlhZ2UvMU0KZm9saWMvNQpmb2xpby8xNFNNCmZvbGsvMTVNUwpmb2xrbG9yZS8xTQpmb2xrbG9yaWMvNQpmb2xrbG9yaXN0LzFNUwpmb2xrc2luZXNzLzFNCmZvbGtzaW5nZXIvMVNNCmZvbGtzaW5naW5nLzFNCmZvbGtzeS81UFRSCmZvbGt0YWxlLzFNUwpmb2xrd2F5LzFNUwpmb2xsLzUKZm9sbGljbGUvMU1TCmZvbGxvdy80MVNEUlpHSgpmb2xsb3dlci8xTQpmb2xsb3dpbmcvNSsxNE0KZm9sbG93dXAvMVMKZm9sbHkvMTRTTQpmb21lbnQvNDFTR0QKZm9tZW50YXRpb24vMU0KZm9uZC81NDFSWVRQCmZvbmRhbnQvMU1TCmZvbmRsZS80MURTRwpmb25kbmVzcy8xTQpmb25kdWUvMTRTTQpmb250LzE0TVMKZm9udGFuZWwvMU1TCmZvby8xCmZvb2Jhci8xCmZvb2QvMU1TCmZvb2RpZS8xU00KZm9vZHN0dWZmLzFTTQpmb29sLzE0NU1ER1MKZm9vbGVyeS8xU00KZm9vbGhhcmRpbHkvCmZvb2xoYXJkaW5lc3MvMU0KZm9vbGhhcmR5LzUxVFBSCmZvb2xpc2gvNVlQCmZvb2xpc2huZXNzLzFNCmZvb2xwcm9vZi81NApmb29sc2NhcC8xTQpmb290LzE0TURSWkdTSgpmb290YWdlLzFNCmZvb3RiYWxsLzE0TVJaR1MKZm9vdGJhbGxlci8xTQpmb290YnJpZGdlLzFTTQpmb290ZmFsbC8xTVMKZm9vdGhpbGwvMU1TCmZvb3Rob2xkLzFNUwpmb290aWUvMQpmb290aW5nLzE0TQpmb290bGVzcy81CmZvb3RsaWdodHMvMU0KZm9vdGxpbmcvNTQxTVMKZm9vdGxvY2tlci8xU00KZm9vdGxvb3NlLzUKZm9vdG1hbi8xTQpmb290bWVuLzEKZm9vdG5vdGUvMTRNR0RTCmZvb3RwYXRoLzFNCmZvb3RwYXRocy8xCmZvb3RwbGF0ZS8xNFMKZm9vdHByaW50LzFTTQpmb290cmFjZS8xTVMKZm9vdHJlc3QvMU1TCmZvb3RzaWUvMVNNCmZvb3RzbG9nZ2luZy80CmZvb3Rzb3JlLzUKZm9vdHN0ZXAvMU1TCmZvb3RzdG9vbC8xU00KZm9vdHdlYXIvMU0KZm9vdHdvcmsvMU0KZm9vdHkvMTUKZm9wLzFTTQpmb3BwZXJ5LzFNCmZvcHBpc2gvNVAKZm9wcGlzaG5lc3MvMU0KZm9yLzcrSH4KZm9yYS8xCmZvcmFnZS8xNERSU01aRwpmb3JhZ2VyLzFNCmZvcmF5LzE0U01ERwpmb3JiYWRlLzQKZm9yYmVhci80MVNNRwpmb3JiZWFyYW5jZS8xTQpmb3JiaWQvNFMKZm9yYmlkZGVuLzU0CmZvcmJpZGRpbmcvNTQxWVMKZm9yYm9yZS80CmZvcmJvcm5lLzQKZm9yY2UvMTREU01HCmZvcmNlZC80NVUKZm9yY2VmdWwvNVBZCmZvcmNlZnVsbmVzcy8xTQpmb3JjZXBzLzFNCmZvcmNpYmxlLzUKZm9yY2libHkvCmZvcmQvMTRNREdTQgpmb3JlLzUxTVMKZm9yZWFybS8xNEdTTUQKZm9yZWJlYXIvMTRNUwpmb3JlYm9kZS80MUdKRFMKZm9yZWJvZGluZy8xNTRNCmZvcmVjYXN0LzQxTVJaR1MKZm9yZWNhc3Rlci8xTQpmb3JlY2FzdGxlLzFNUwpmb3JlY2xvc2UvNERTRwpmb3JlY2xvc3VyZS8xTVMKZm9yZWNvdXJ0LzFTTQpmb3JlZG9vbS8xNERHUwpmb3JlZmF0aGVyLzFNUwpmb3JlZmVldC8xCmZvcmVmaW5nZXIvMVNNCmZvcmVmb290LzE0TQpmb3JlZnJvbnQvMTRTTQpmb3JlZ28vNEcKZm9yZWdvZXMvNApmb3JlZ29uZS80NQpmb3JlZ3JvdW5kLzE0R01EUwpmb3JlaGFuZC8xNTRNUwpmb3JlaGVhZC8xTVMKZm9yZWlnbi81MVpSUApmb3JlaWduZXIvMU0KZm9yZWlnbm5lc3MvMU0KZm9yZWtuZXcvNApmb3Jla25vdy80R1MKZm9yZWtub3dsZWRnZS8xTQpmb3Jla25vd24vNDUKZm9yZWxlZy8xU00KZm9yZWxpbWIvMU1TCmZvcmVsb2NrLzE0TVMKZm9yZW1hbi8xTQpmb3JlbWFzdC8xTVMKZm9yZW1lbi8xCmZvcmVtb3N0LzUKZm9yZW5hbWUvMTRNRFMKZm9yZW5vb24vMU1TCmZvcmVuc2ljLzVNUwpmb3JlbnNpY2FsbHkvCmZvcmVuc2ljcy8xTQpmb3Jlb3JkYWluLzRHU0QKZm9yZXBhcnQvMU1TCmZvcmVwZXJzb24vMVNNCmZvcmVwbGF5LzE0TQpmb3JlcXVhcnRlci8xTVMKZm9yZXJ1bm5lci8xTVMKZm9yZXNhaWwvMU1TCmZvcmVzYXcvNApmb3Jlc2VlLzRSU0JaCmZvcmVzZWVhYmxlLzVVCmZvcmVzZWVpbmcvNDEKZm9yZXNlZW4vNFUKZm9yZXNlZXIvMU0KZm9yZXNoYWRvdy80R0RTCmZvcmVzaG9yZS8xUwpmb3Jlc2hvcnRlbi80RFNHCmZvcmVzaWdodC8xTUQKZm9yZXNpZ2h0ZWRuZXNzLzFNCmZvcmVza2luLzE0TVMKZm9yZXN0J3MKZm9yZXN0LzE0QUNHRFMKZm9yZXN0YWxsLzQxU0dECmZvcmVzdGF0aW9uLzFBQ00KZm9yZXN0ZXIvMU1TCmZvcmVzdGxhbmQvMU0KZm9yZXN0cnkvMU0KZm9yZXRhc3RlLzE0RFNNRwpmb3JldGVsbC80R1MKZm9yZXRob3VnaHQvMTU0TQpmb3JldG9sZC80CmZvcmV2ZXIvMTVNCmZvcmV2ZXJtb3JlLwpmb3Jld2Fybi80RFNHCmZvcmV3ZW50LzQKZm9yZXdvbWFuLzFNCmZvcmV3b21lbi8xCmZvcmV3b3JkLzFNUwpmb3JmZWl0LzE0NUdTTUQKZm9yZmVpdHVyZS8xU00KZm9yZ2F0aGVyLzRTREcKZm9yZ2F2ZS80CmZvcmdlLzE0RFJTTVpHVkoKZm9yZ2VyLzFNCmZvcmdlcnkvMVNNCmZvcmdldC80Uwpmb3JnZXRmdWwvNVlQCmZvcmdldGZ1bG5lc3MvMU0KZm9yZ2V0dGFibGUvNVUKZm9yZ2V0dGluZy80MQpmb3JnaW5nLzQxTQpmb3JnaXZhYmxlLzVVCmZvcmdpdmUvNEJSU1pHUApmb3JnaXZlbi80CmZvcmdpdmVuZXNzLzFNCmZvcmdpdmVyLzFNCmZvcmdpdmluZy81NDFVCmZvcmdvLzRSWkcKZm9yZ29lci8xTQpmb3Jnb2VzLzQKZm9yZ29uZS80CmZvcmdvdC80CmZvcmdvdHRlbi81NDFVCmZvcmsvMTRNREdTCmZvcmtmdWwvMVNNCmZvcmtsaWZ0LzE0TVMKZm9ybG9ybi81MTRZCmZvcm0ncwpmb3JtLzE0Q0FJRkRHUwpmb3JtYWwvNTFTTVkKZm9ybWFsZGVoeWRlLzFNCmZvcm1hbGluLzEKZm9ybWFsaXNtLzFNCmZvcm1hbGlzdC8xNU1TCmZvcm1hbGl0aWVzLzEKZm9ybWFsaXR5LzFJTQpmb3JtYWxpemF0aW9uLzFNCmZvcm1hbGl6ZS80R0RTCmZvcm1hdC8xNFNNVgpmb3JtYXRpb24vMUNGQVNNCmZvcm1hdHRlZC80NUEKZm9ybWF0dGluZy8xNE0KZm9ybWVkLzRVCmZvcm1lci81MUZJQU0KZm9ybWVybHkvCmZvcm1maXR0aW5nLzUKZm9ybWljLzUKZm9ybWlkYWJsZS81CmZvcm1pZGFibHkvCmZvcm1sZXNzLzVQWQpmb3JtbGVzc25lc3MvMU0KZm9ybXVsYS8xTVMKZm9ybXVsYWUvMQpmb3JtdWxhaWMvNQpmb3JtdWxhdGUvNEFEU0dOWApmb3JtdWxhdGVkLzRVCmZvcm11bGF0aW9uLzFBTQpmb3JtdWxhdG9yLzFTTQpmb3JuaWNhdGUvNTRHTkRTCmZvcm5pY2F0aW9uLzFNCmZvcm5pY2F0b3IvMU1TCmZvcnNha2UvNEdTCmZvcnNha2VuLzU0CmZvcnNvb2svNApmb3Jzb290aC8KZm9yc3dlYXIvNFNHCmZvcnN3b3JlLzQKZm9yc3dvcm4vNTQKZm9yc3l0aGlhLzFTTQpmb3J0LzE0TVMKZm9ydGUvMTVTTQpmb3J0aGNvbWluZy81MTRNCmZvcnRocmlnaHQvNTFZUApmb3J0aHJpZ2h0bmVzcy8xTQpmb3J0aHdpdGgvCmZvcnRpZXRoLzUxTQpmb3J0aWV0aHMvMQpmb3J0aWZpY2F0aW9uLzFNCmZvcnRpZmllZC80MTVVCmZvcnRpZmllci8xTQpmb3J0aWZ5LzREUlNOWkdYCmZvcnRpc3NpbW8vMQpmb3J0aXR1ZGUvMU0KZm9ydG5pZ2h0LzFNWVMKZm9ydHJlc3MvMTRNUwpmb3J0dWl0b3VzLzVZUApmb3J0dWl0b3VzbmVzcy8xTQpmb3J0dWl0eS8xTQpmb3J0dW5hdGUvNVVZCmZvcnR1bmUvMTRNUwpmb3J0dW5ldGVsbGVyLzFTTQpmb3J0dW5ldGVsbGluZy8xNE0KZm9ydHkvMTVTTUgKZm9ydW0vMVNNCmZvcndhcmQvNTQxTURSWVpUR1NQCmZvcndhcmRlci8xNU0KZm9yd2FyZG5lc3MvMU0KZm9yd2VudC80CmZvc3NhLzEKZm9zc2lsLzFTTQpmb3NzaWxpemF0aW9uLzFNCmZvc3NpbGl6ZS80R0RTCmZvc3Rlci81MTRHU0QKZm91Z2h0LzQKZm91bC81NDFNRFJZVEdTUApmb3VsYXJkLzFNCmZvdWxtb3V0aGVkLzUKZm91bG5lc3MvMU0KZm91bmQvNDFGU0RHCmZvdW5kYXRpb24vMVNNCmZvdW5kYXRpb25hbC81CmZvdW5kZWQvNDVVCmZvdW5kZXIvMTRHTURTCmZvdW5kbGluZy8xU00KZm91bmRyeS8xU00KZm91bnQvMVNNCmZvdW50YWluLzE0U00KZm91bnRhaW5oZWFkLzFNUwpmb3VyLzFNSFMKZm91cmZvbGQvNTQxCmZvdXJwb3N0ZXIvMVNNCmZvdXJzY29yZS8xTQpmb3Vyc29tZS8xU00KZm91cnNxdWFyZS81MQpmb3VydGVlbi9TTUgKZm91cnRlZW50aC81MU0KZm91cnRlZW50aHMvMQpmb3VydGgvNTE0TVkKZm91cnRocy8xCmZvd2wvMTQ1TURHUwpmb3gvMTRHTURTCmZveGZpcmUvMU0KZm94Z2xvdmUvMVNNCmZveGhvbGUvMTRNUwpmb3hob3VuZC8xU00KZm94aHVudC8xNEdTCmZveGlseS8KZm94aW5lc3MvMU0KZm94dHJvdC8xNE1TCmZveHRyb3R0ZWQvNApmb3h0cm90dGluZy80CmZveHkvMTVSVFAKZm95ZXIvMVNNCmZwcy8xCmZyLzUxNApmcmFjYXMvMU1TCmZyYWNrLzQ1U0RHCmZyYWN0YWwvMTVTTQpmcmFjdGlvbi8xNElTTQpmcmFjdGlvbmFsLzUxWQpmcmFjdGlvdXMvNVlQCmZyYWN0aW91c25lc3MvMU0KZnJhY3R1cmUvMTRNR0RTCmZyYWcvMTRTCmZyYWdpbGUvNTFSVApmcmFnaWxpdHkvMU0KZnJhZ21lbnQvMTRHTURTCmZyYWdtZW50YXJ5LzVNCmZyYWdtZW50YXRpb24vMU0KZnJhZ3JhbmNlLzE0TVMKZnJhZ3JhbnQvNVkKZnJhaWwvNTE0UllUUApmcmFpbG5lc3MvMU0KZnJhaWx0eS8xU00KZnJhbWUvNDFEUlNNWkcKZnJhbWVkLzRVCmZyYW1lci8xTQpmcmFtZXdvcmsvMVNNCmZyYW5jLzFTTQpmcmFuY2hpc2UncwpmcmFuY2hpc2UvMTRFRFNHCmZyYW5jaGlzZWUvMVNNCmZyYW5jaGlzZXIvMVNNCmZyYW5jaXVtLzFNCmZyYW5jb3Bob25lLzUxCmZyYW5naWJpbGl0eS8xTQpmcmFuZ2libGUvNTEKZnJhbmsvNTE0U01EUllUR1AKZnJhbmtmdXJ0ZXIvMU1TCmZyYW5raW5jZW5zZS8xTQpmcmFua25lc3MvMU0KZnJhbnRpYy81MQpmcmFudGljYWxseS8KZnJhcHBlLzFTTQpmcmF0LzFNUwpmcmF0ZXJuYWwvNTFZCmZyYXRlcm5pdHkvMUZTTQpmcmF0ZXJuaXphdGlvbi8xTQpmcmF0ZXJuaXplLzRaR0RSUwpmcmF0ZXJuaXplci8xTQpmcmF0cmljaWRhbC81CmZyYXRyaWNpZGUvMU1TCmZyYXVkJ3MKZnJhdWQvMTRTCmZyYXVkc3Rlci8xUwpmcmF1ZHVsZW5jZS8xTQpmcmF1ZHVsZW50LzVZCmZyYXVnaHQvMTQ1CmZyYXkncwpmcmF5LzQxQ0RHUwpmcmF6emxlLzQxTUdEUwpmcmVhay8xNDVTTURHCmZyZWFraXNoLzVZUApmcmVha2lzaG5lc3MvMU0KZnJlYWt5LzVSVApmcmVja2xlLzE0RFNNRwpmcmVja2x5LzUKZnJlZS81NDFZVERSUwpmcmVlYmFzZS8xNE1HRFMKZnJlZWJpZS8xU00KZnJlZWJvb3Rlci8xU00KZnJlZWJvcm4vNQpmcmVlZG1hbi8xTQpmcmVlZG1lbi8xCmZyZWVkb20vMVNNCmZyZWVoYW5kLzU0CmZyZWVob2xkLzUxNFpNUlMKZnJlZWhvbGRlci8xTQpmcmVlaW5nLzQxNQpmcmVlbGFuY2UvMTU0RFJTTVpHCmZyZWVsYW5jZXIvMU0KZnJlZWxvYWQvNFNEUlpHCmZyZWVsb2FkZXIvMU0KZnJlZW1hbi8xTQpmcmVlbWFzb25yeS8xCmZyZWVtZW4vMQpmcmVlcGhvbmUvMTQKZnJlZXNpYS8xUwpmcmVlc3RhbmRpbmcvNQpmcmVlc3RvbmUvMVNNCmZyZWVzdHlsZS8xNFNNCmZyZWV0aGlua2VyLzFTTQpmcmVldGhpbmtpbmcvMU0KZnJlZXdhcmUvMU0KZnJlZXdheS8xTVMKZnJlZXdoZWVsLzE0REdTCmZyZWV3aWxsLzUxCmZyZWV6YWJsZS81MQpmcmVlemUncwpmcmVlemUvNDFVQUdTCmZyZWV6ZXIvMU1TCmZyZWV6aW5nJ3MKZnJlaWdodC8xNDVNRFJaR1MKZnJlaWdodGVyLzFNCmZyZW5jaC80CmZyZW5lbXkvMVMKZnJlbmV0aWMvNTEKZnJlbmV0aWNhbGx5LwpmcmVuemllZC81WQpmcmVuenkvMTU0RFNNCmZyZXEvMQpmcmVxdWVuY2llcy8xCmZyZXF1ZW5jeS8xSU0KZnJlcXVlbnQvNTREUllTWlRHCmZyZXF1ZW50ZWQvNFUKZnJlcXVlbnRlci8xNU0KZnJlc2NvLzE0TQpmcmVzY29lcy8xCmZyZXNoLzUxNFBOUllYWlQKZnJlc2hlbi80WkdEUgpmcmVzaGVuZXIvMU0KZnJlc2hldC8xTVMKZnJlc2htYW4vMU0KZnJlc2htZW4vMQpmcmVzaG5lc3MvMU0KZnJlc2h3YXRlci81MU0KZnJldC80MU1TCmZyZXRmdWwvNVlQCmZyZXRmdWxuZXNzLzFNCmZyZXRzYXcvMTRNUwpmcmV0dGVkLzQ1CmZyZXR0aW5nLzQxCmZyZXR3b3JrLzFNCmZyaWFibGUvNQpmcmlhci8xU00KZnJpYXJ5LzE1U00KZnJpY2Fzc2VlLzE0RFNNCmZyaWNhc3NlZWluZy80CmZyaWNhdGl2ZS8xNVNNCmZyaWN0aW9uLzFTTQpmcmljdGlvbmFsLzUKZnJpZGdlLzE0U00KZnJpZWRjYWtlLzFNUwpmcmllbmQncwpmcmllbmQvMTRVR1NEWQpmcmllbmRsZXNzLzUKZnJpZW5kbGllcy8xCmZyaWVuZGxpbmVzcy8xVU0KZnJpZW5kbHkncwpmcmllbmRseS81MVVQVFIKZnJpZW5kc2hpcC8xTVMKZnJpZXplLzE0U00KZnJpZy80MVMKZnJpZ2F0ZS8xTVMKZnJpZ2dlZC80CmZyaWdnaW5nLzQxNQpmcmlnaHQvMTQ1U1hHTUROCmZyaWdodGVuLzRERwpmcmlnaHRlbmluZy81NFkKZnJpZ2h0ZnVsLzVQWQpmcmlnaHRmdWxuZXNzLzFNCmZyaWdpZC81WVAKZnJpZ2lkaXR5LzFNCmZyaWdpZG5lc3MvMU0KZnJpbGwvMTRTTUQKZnJpbGx5LzVUUgpmcmluZ2UncwpmcmluZ2UvMTU0SURTRwpmcmlwcGVyeS8xU00KZnJpc2svNTE0U0RHCmZyaXNraWx5Lwpmcmlza2luZXNzLzFNCmZyaXNreS81VFJQCmZyaXNzb24vMVMKZnJpdHRlci8xNE1EU0cKZnJpdHovMTRNCmZyaXZvbGl0eS8xU00KZnJpdm9sb3VzLzVQWQpmcml2b2xvdXNuZXNzLzFNCmZyaXp6LzQxTURTWUcKZnJpenpsZS80MU1HRFMKZnJpenp5LzUxVFIKZnJvLysxCmZyb2NrJ3MKZnJvY2svMTRDVVMKZnJvZy8xNE1TCmZyb2dnaW5nLzE0Uwpmcm9nbWFuLzFNCmZyb2dtYXJjaC80MUdEUwpmcm9nbWVuLzEKZnJvZ3NwYXduLzEKZnJvbGljLzU0MVNNCmZyb2xpY2tlZC80CmZyb2xpY2tlci8xU00KZnJvbGlja2luZy80MQpmcm9saWNzb21lLzUKZnJvbS8rfgpmcm9uZC8xU00KZnJvbnQncwpmcm9udC8xNTRGU0RHCmZyb250YWdlLzFNUwpmcm9udGFsLzUxWQpmcm9udGJlbmNoLzFaUlMKZnJvbnRpZXIvMTRNUwpmcm9udGllcnNtYW4vMU0KZnJvbnRpZXJzbWVuLzEKZnJvbnRpZXJzd29tYW4vMQpmcm9udGllcnN3b21lbi8xCmZyb250aXNwaWVjZS8xNE1TCmZyb250d2FyZC81Uwpmcm9zaC8xNE0KZnJvc3Qncwpmcm9zdC8xNENTREcKZnJvc3RiaXQvNApmcm9zdGJpdGUvMTRNR1MKZnJvc3RiaXR0ZW4vNQpmcm9zdGlseS8KZnJvc3RpbmVzcy8xTQpmcm9zdGluZy8xNFNNCmZyb3N0eS81VFBSCmZyb3RoLzE0TURHCmZyb3RoaW5lc3MvMU0KZnJvdGhzLzQKZnJvdGh5LzUxVFBSCmZyb3Vmcm91LzE1TQpmcm93bi8xNFNNREcKZnJvd3ppbHkvCmZyb3d6aW5lc3MvMU0KZnJvd3p5LzVUUFIKZnJvemUvNEFVCmZyb3plbi81NFVBCmZydWN0aWZ5LzREU0cKZnJ1Y3Rvc2UvMU0KZnJ1Z2FsLzVZCmZydWdhbGl0eS8xTQpmcnVpdC8xNFNNREcKZnJ1aXRjYWtlLzFNUwpmcnVpdGVyZXIvMVMKZnJ1aXRmdWwvNVlQCmZydWl0ZnVsbmVzcy8xTQpmcnVpdGluZXNzLzFNCmZydWl0aW9uLzFNCmZydWl0bGVzcy81UFkKZnJ1aXRsZXNzbmVzcy8xTQpmcnVpdHkvNTFUUFIKZnJ1bXAvMTRTTQpmcnVtcGlzaC81CmZydW1weS81VFIKZnJ1c3RyYXRlLzQ1R05YRFMKZnJ1c3RyYXRpbmcvNTRZCmZydXN0cmF0aW9uLzFNCmZydXN0dW0vMU1TCmZyeS80MUdEU00KZnJ5ZXIvMVNNCmZ0LzE0CmZ0cC81MTI0WkdTCmZ1Y2hzaWEvMTVNUwpmdWNrLzQxU01HRFJaITYKZnVja2VyLzFNITYKZnVja2hlYWQvMVMhNgpmdWRkbGUvNDFEU01HCmZ1ZGdlLzE0RFNNRwpmdWVocmVyLzFNUwpmdWVsJ3MKZnVlbC8xNEFER1MKZnVnLzE0CmZ1Z2FsLzUKZnVnZ3kvNQpmdWdpdGl2ZS8xNTRNUwpmdWd1ZS8xNFNNCmZ1aHJlci8xU00KZnVsY3J1bS8xTVMKZnVsZmlsbC80TERHUwpmdWxmaWxsZWQvNDVVCmZ1bGZpbGxpbmcvNTQxVQpmdWxmaWxsbWVudC8xTQpmdWxsLzUxNE1EUlpUR1NQCmZ1bGxiYWNrLzFNUwpmdWxsZXIvNTE0TQpmdWxsbmVzcy8xTQpmdWxseS80CmZ1bG1pbmF0ZS80MURTWEdOCmZ1bG1pbmF0aW9uLzFNCmZ1bHNvbWUvNVBZCmZ1bHNvbWVuZXNzLzFNCmZ1bS80MVMKZnVtYmxlLzQxRFJTTVpHCmZ1bWJsZXIvMU0KZnVtYmxpbmcvNDFZCmZ1bWUvMTRNR0RTCmZ1bWlnYW50LzFNUwpmdW1pZ2F0ZS80R05EUwpmdW1pZ2F0aW9uLzFNCmZ1bWlnYXRvci8xU00KZnVteS81UlQKZnVuLzE1NE0KZnVuY3Rpb24vMTRNREdTCmZ1bmN0aW9uYWwvNTFZCmZ1bmN0aW9uYWxpc20vMQpmdW5jdGlvbmFsaXN0LzE1UwpmdW5jdGlvbmFsaXR5LzFTCmZ1bmN0aW9uYXJ5LzFTTQpmdW5jdG9yLzEKZnVuZC8xNEFNREdTCmZ1bmRhbWVudGFsLzE1U01ZCmZ1bmRhbWVudGFsaXNtLzFNCmZ1bmRhbWVudGFsaXN0LzFTTQpmdW5kZWQvNDVVCmZ1bmRpbmcvNDFNCmZ1bmRyYWlzZXIvMU1TCmZ1bmRyYWlzaW5nLzE1CmZ1bmVyYWwvMTVNUwpmdW5lcmFyeS81CmZ1bmVyZWFsLzVZCmZ1bmZhaXIvMVMKZnVuZ2FsLzUKZnVuZ2kvMQpmdW5naWJsZS81MU1TCmZ1bmdpY2lkYWwvNTEKZnVuZ2ljaWRlLzFNUwpmdW5nb2lkLzUxCmZ1bmdvdXMvNQpmdW5ndXMvMU0KZnVuaWN1bGFyLzUxU00KZnVuay8xNE1ER1MKZnVua2luZXNzLzFNCmZ1bmt5LzVQUlQKZnVubmVsLzE0TURHUwpmdW5uZXIvNQpmdW5uZXN0LzUKZnVubmlseS8KZnVubmluZXNzLzFNCmZ1bm55LzUxVFBSU00KZnVubnltYW4vMU0KZnVubnltZW4vMQpmdXIvMTQ3K1NNCmZ1cmJlbG93LzE0TQpmdXJiaXNoLzRBRFNHCmZ1cmlvdXMvNVkKZnVybCdzCmZ1cmwvNFVER1MKZnVybG9uZy8xU00KZnVybG91Z2gvMTRHTUQKZnVybG91Z2hzLzE0CmZ1cm4vMTUKZnVybmFjZS8xNFNNCmZ1cm5pc2gvMTRBRFNHCmZ1cm5pc2hlZC80NVUKZnVybmlzaGluZ3MvMU0KZnVybml0dXJlLzFNCmZ1cm9yLzFTTQpmdXJvc2VtaWRlLzEKZnVycmVkLzQ1CmZ1cnJpZXIvMTVNCmZ1cnJpbmVzcy8xTQpmdXJyaW5nLzQxTQpmdXJyb3cvMTRNRFNHCmZ1cnJ5LzUxWlRSUApmdXJ0aGVyLzQ1U0dECmZ1cnRoZXJhbmNlLzFNCmZ1cnRoZXJtb3JlLzUKZnVydGhlcm1vc3QvNQpmdXJ0aGVzdC81CmZ1cnRpdmUvNVlQCmZ1cnRpdmVuZXNzLzFNCmZ1cnkvMVNNCmZ1cnplLzFNCmZ1c2Uncy9BCmZ1c2UvMTRDQUlGR0RTCmZ1c2VlLzFTTQpmdXNlbGFnZS8xU00KZnVzaWJpbGl0eS8xTQpmdXNpYmxlLzUxCmZ1c2lsaWVyLzFTTQpmdXNpbGxhZGUvMTRNUwpmdXNpb24vMTRJRktTTQpmdXNzLzE0TURTRwpmdXNzYnVkZ2V0LzFNUwpmdXNzaWx5LwpmdXNzaW5lc3MvMU0KZnVzc3BvdC8xNFNNCmZ1c3N5LzVUUlAKZnVzdGlhbi8xNU0KZnVzdGluZXNzLzFNCmZ1c3R5LzVUUlAKZnV0LzEKZnV0aWxlLzVZCmZ1dGlsaXR5LzFNCmZ1dG9uLzFTTQpmdXR1cmUvMTVNUwpmdXR1cmlzbS8xTQpmdXR1cmlzdC8xNU1TCmZ1dHVyaXN0aWMvNQpmdXR1cml0eS8xU00KZnV0dXJvbG9naXN0LzFNUwpmdXR1cm9sb2d5LzFNCmZ1dHovMTREU0cKZnV6ei8xNE1EU0cKZnV6emJhbGwvMVMKZnV6emlseS8KZnV6emluZXNzLzFNCmZ1enp5LzUxUFRSCmZ3ZC81MTQKZnd5LzEKZy8xU05YVkIKZ2FiLzE0U00KZ2FiYXJkaW5lLzFTTQpnYWJiZWQvNApnYWJiaW5lc3MvMU0KZ2FiYmluZy80CmdhYmJsZS80MURTTUcKZ2FiYnkvNVJUUApnYWJlcmRpbmUvMVNNCmdhYmZlc3QvMU1TCmdhYmxlLzFEU00KZ2FkLzQxUwpnYWRhYm91dC8xU00KZ2FkZGVkLzQKZ2FkZGVyLzFTTQpnYWRkaW5nLzQxCmdhZGZseS8xU00KZ2FkZ2V0LzFTTQpnYWRnZXRyeS8xTQpnYWRvbGluaXVtLzFNCmdhZmYvMTRNRFJaR1MKZ2FmZmUvMVNNCmdhZmZlci8xTQpnYWcvMTRTTQpnYWdhLzUxCmdhZ2dlZC80CmdhZ2dpbmcvNDEKZ2FnZ2xlLzE0U00KZ2FpZXR5LzFNCmdhaWx5LwpnYWluJ3MKZ2Fpbi80MSs1QURHUwpnYWluZXIvMVNNCmdhaW5mdWwvNVkKZ2FpbnNhaWQvNApnYWluc2F5LzRaR1JTCmdhaW5zYXllci8xTQpnYWl0LzE0TVJaUwpnYWl0ZXIvMTRNCmdhbC8xU00KZ2FsYS81MU1TCmdhbGFjdGljLzUKZ2FsYXh5LzE0U00KZ2FsZSdzCmdhbGUvNDFBUwpnYWxlbmEvMU0KZ2FsbC8xNE1ER1MKZ2FsbGFudC81MTRTTVkKZ2FsbGFudHJ5LzFNCmdhbGxibGFkZGVyLzFNUwpnYWxsZW9uLzFTTQpnYWxsZXJpYS8xTVMKZ2FsbGVyeS8xNFNNCmdhbGxleS8xU00KZ2FsbGltYXVmcnkvMVNNCmdhbGxpdW0vMU0KZ2FsbGl2YW50LzRHU0QKZ2FsbG9uLzFTTQpnYWxsb3AvMTRTTURHCmdhbGxvd3MvMTRNCmdhbGxzdG9uZS8xTVMKZ2Fsb290LzFTTQpnYWxvcmUvNTEKZ2Fsb3NoLzE0TVMKZ2FsdW1waC80REcKZ2FsdW1waHMvNApnYWx2YW5pYy81CmdhbHZhbmlzbS8xTQpnYWx2YW5pemF0aW9uLzFNCmdhbHZhbml6ZS80RFNHCmdhbHZhbm9tZXRlci8xTVMKZ2FtYml0LzE0U00KZ2FtYmxlLzE0RFJTTVpHCmdhbWJsZXIvMU0KZ2FtYmxpbmcvNDFNCmdhbWJvbC80MVNNREcKZ2FtZS8xNTRNWVRHRFJTUApnYW1lY29jay8xTVMKZ2FtZWtlZXBlci8xTVMKZ2FtZW5lc3MvMU0KZ2FtZXNtYW5zaGlwLzFNCmdhbWVzdGVyLzFNUwpnYW1ldGUvMVNNCmdhbWV0aWMvNQpnYW1pbi8xU00KZ2FtaW5lLzE1U00KZ2FtaW5lc3MvMU0KZ2FtaW5nLzQxTQpnYW1tYS8xU00KZ2FtbW9uLzE0NU0KZ2FtbXkvNTEKZ2FtdXQvMVNNCmdhbXkvNVJUUApnYW5kZXIvMTRTTQpnYW5nLzQxTURHUwpnYW5nYnVzdGVycy8xNU0KZ2FuZ2xhbmQvMU0KZ2FuZ2xpYS8xCmdhbmdsaW5nLzUxCmdhbmdsaW9uLzFNCmdhbmdsaW9uaWMvNQpnYW5ncGxhbmsvMVNNCmdhbmdyZW5lLzE0RFNNRwpnYW5ncmVub3VzLzUKZ2FuZ3N0YS8xNVMKZ2FuZ3N0ZXIvMTQ1U00KZ2FuZ3dheS8xNE1TCmdhbmphLzEKZ2FubmV0LzE0U00KZ2FudGxldC8xTVMKZ2FudHJ5LzFTTQpnYXAvMTRHU01ECmdhcGUvNDFNUwpnYXIvMTRTTE0KZ2FyYWdlLzE0RFNNRwpnYXJiLzE0TURHUwpnYXJiYWdlLzE0NU0KZ2FyYmFnZW1hbi8xCmdhcmJhbnpvLzFTTQpnYXJibGUvNDFEU0cKZ2FyY29uLzFTTQpnYXJkZW4vMTQ1U1pHTURSCmdhcmRlbmVyLzFNCmdhcmRlbmlhLzFNUwpnYXJkZW5pbmcvMTRNCmdhcmZpc2gvMU1TCmdhcmdhbnR1YW4vNQpnYXJnbGUvNDFEU01HCmdhcmdveWxlLzFTTQpnYXJpc2gvNVBZCmdhcmlzaG5lc3MvMU0KZ2FybGFuZC8xNE1ER1MKZ2FybGljLzE0TQpnYXJsaWNreS81Cmdhcm1lbnQvMTRNUwpnYXJuZXIvMTRTR0QKZ2FybmV0LzE1NFNNCmdhcm5pc2gvNDFHTE1EUwpnYXJuaXNoZWUvMTREU00KZ2FybmlzaGVlaW5nLzQKZ2FybmlzaG1lbnQvMVNNCmdhcnJldC8xU00KZ2Fycmlzb24vMTRNRFNHCmdhcnJvdGUvMTRNWkdEUlMKZ2Fycm90ZXIvMU0KZ2FycnVsaXR5LzFNCmdhcnJ1bG91cy81UFkKZ2FycnVsb3VzbmVzcy8xTQpnYXJ0ZXIvMTRTTQpnYXMncwpnYXMvMTQ1Q1MKZ2FzYmFnLzE0U00KZ2FzZW91cy81Cmdhc2gvMTU0TURTRwpnYXNob2xkZXIvMVMKZ2Fza2V0LzE0U00KZ2FzbGlnaHQvMTRNUwpnYXNtYW4vMQpnYXNtZW4vMQpnYXNvaG9sLzFNCmdhc29saW5lLzE1TQpnYXNvbWV0ZXIvMVMKZ2FzcC80MU1ER1MKZ2Fzc2VkLzU0QwpnYXNzZXMvMTQKZ2Fzc2luZy80MUMKZ2Fzc3kvNVJUCmdhc3RyaWMvNQpnYXN0cml0aXMvMU0KZ2FzdHJvZW50ZXJpdGlzLzFNCmdhc3Ryb2ludGVzdGluYWwvNQpnYXN0cm9ub21lLzFTCmdhc3Ryb25vbWljLzUKZ2FzdHJvbm9taWNhbC81WQpnYXN0cm9ub215LzFNCmdhc3Ryb3BvZC8xU00KZ2Fzd29ya3MvMU0KZ2F0ZS8xNE1HRFMKZ2F0ZWF1LzEKZ2F0ZWF1eC8xCmdhdGVjcmFzaC80MURSU1pHCmdhdGVjcmFzaGVyLzFNCmdhdGVob3VzZS8xU00KZ2F0ZWtlZXBlci8xTVMKZ2F0ZXBvc3QvMU1TCmdhdGV3YXkvMTRNUwpnYXRoZXIvNDFTSlpHTURSCmdhdGhlcmVyLzFNCmdhdGhlcmluZy8xNDVNCmdhdG9yLzFTTQpnYXVjaGUvNVJQWVQKZ2F1Y2hlbmVzcy8xTQpnYXVjaGVyaWUvMU0KZ2F1Y2hvLzFTTQpnYXVkaWx5LwpnYXVkaW5lc3MvMU0KZ2F1ZHkvNTFSUFQKZ2F1Z2UvMTREU01HCmdhdW50LzVSUFQKZ2F1bnRsZXQvMU1TCmdhdW50bmVzcy8xTQpnYXV6ZS8xNE0KZ2F1emluZXNzLzFNCmdhdXp5LzVSUFQKZ2F2ZS80CmdhdmVsLzE0U00KZ2F2b3R0ZS8xNE1TCmdhd2QvMQpnYXdrLzE0REdTCmdhd2tpbHkvCmdhd2tpbmVzcy8xTQpnYXdreS81MVJQVApnYXdwLzQxREdTCmdheS81MTRUU1BNUgpnYXluZXNzLzFNCmdhemUvNDFNWkdEUlMKZ2F6ZWJvLzFTTQpnYXplbGxlLzFNUwpnYXplci8xTQpnYXpldHRlLzE0TUdEUwpnYXpldHRlZXIvMTRNUwpnYXppbGxpb24vMVMKZ2F6cGFjaG8vMU0KZ2F6dW1wLzQxREdTCmdlYXIvMTQ1TURHUwpnZWFyYm94LzFNUwpnZWFyaW5nLzE0TQpnZWFyc2hpZnQvMTRNUwpnZWFyd2hlZWwvMVNNCmdlY2tvLzE0U00KZ2VkZGl0LwpnZWUvNDFEUwpnZWVpbmcvNApnZWVrLzE0TVMKZ2Vla3kvNVJUCmdlZXNlLzEKZ2VlemVyLzFNUwpnZWlzaGEvMU0KZ2VsLzE0U00KZ2VsYXRpbi8xTQpnZWxhdGlub3VzLzUKZ2VsY2FwLzFNCmdlbGQvMTRESkdTCmdlbGRpbmcvMTRNCmdlbGlkLzUKZ2VsaWduaXRlLzFNCmdlbGxlZC80NQpnZWxsaW5nLzQKZ2VtLzE0U00KZ2Vtb2xvZ2ljYWwvNQpnZW1vbG9naXN0LzFNUwpnZW1vbG9neS8xTQpnZW1zdG9uZS8xTVMKZ2VuZGFybWUvMU1TCmdlbmRlci8xNDVNRFMKZ2VuZS8xTVMKZ2VuZWFsb2dpY2FsLzVZCmdlbmVhbG9naXN0LzFNUwpnZW5lYWxvZ3kvMVNNCmdlbmVyYS8xCmdlbmVyYWwvNTE0U01ZCmdlbmVyYWxpc3NpbW8vMU1TCmdlbmVyYWxpc3QvMU1TCmdlbmVyYWxpdHkvMVNNCmdlbmVyYWxpemF0aW9uLzFNUwpnZW5lcmFsaXplLzRHRFMKZ2VuZXJhbHNoaXAvMU0KZ2VuZXJhdGUvNENBVk5HU0QKZ2VuZXJhdGlvbi8xQUNNCmdlbmVyYXRpb25hbC81CmdlbmVyYXRpb25zLzEKZ2VuZXJhdG9yLzFTTQpnZW5lcmljLzUxU00KZ2VuZXJpY2FsbHkvCmdlbmVyb3NpdHkvMVNNCmdlbmVyb3VzLzVQWQpnZW5lcm91c25lc3MvMU0KZ2VuZXMvMVMKZ2VuZXNpcy8xTQpnZW5ldGljLzVTCmdlbmV0aWNhbGx5LwpnZW5ldGljaXN0LzFNUwpnZW5ldGljcy8xTQpnZW5pYWwvNUZZCmdlbmlhbGl0eS8xRk0KZ2VuaWN1bGF0ZS81NApnZW5pZS8xU00KZ2VuaWkvMQpnZW5pdGFsLzUxRlkKZ2VuaXRhbGlhLzFNCmdlbml0YWxzLzFNCmdlbml0aXZlLzUxTVMKZ2VuaXRvdXJpbmFyeS81Cmdlbml1cy8xNU1TCmdlbm5lZC80Cmdlbm5pbmcvNApnZW5vY2lkYWwvNQpnZW5vY2lkZS8xNE1TCmdlbm9tZS8xTVMKZ2Vub21pY3MvMQpnZW5yZS8xNFNNCmdlbnQvMTVBTVMKZ2VudGVlbC81WVAKZ2VudGVlbG5lc3MvMU0KZ2VudGlhbi8xU00KZ2VudGlsZS81MVNNCmdlbnRpbGl0eS8xTQpnZW50bGUvNTQxVEdEUlNQCmdlbnRsZWZvbGsvMU1TCmdlbnRsZWZvbGtzLzFNCmdlbnRsZW1hbi8xTVkKZ2VudGxlbWFubHkvNVUKZ2VudGxlbWVuLzEKZ2VudGxlbmVzcy8xTQpnZW50bGV3b21hbi8xTQpnZW50bGV3b21lbi8xCmdlbnRseS8KZ2VudHJpZmljYXRpb24vMU0KZ2VudHJpZnkvNERTR04KZ2VudHJ5LzFTTQpnZW51ZmxlY3QvNERHUwpnZW51ZmxlY3Rpb24vMU1TCmdlbnVpbmUvNVBZCmdlbnVpbmVuZXNzLzFNCmdlbnVzLzFNCmdlb2NhY2hlLzE0RFNHCmdlb2NlbnRyaWMvNQpnZW9jZW50cmljYWxseS8KZ2VvY2hlbWlzdHJ5LzFNCmdlb2RlLzFTTQpnZW9kZXNpYy8xNVNNCmdlb2Rlc3kvMU0KZ2VvZGV0aWMvNQpnZW9lbmdpbmVlcmluZy8xCmdlb2cvMQpnZW9ncmFwaGVyLzFTTQpnZW9ncmFwaGljLzUKZ2VvZ3JhcGhpY2FsLzUxWQpnZW9ncmFwaHkvMVNNCmdlb2xvZ2ljLzUKZ2VvbG9naWNhbC81WQpnZW9sb2dpc3QvMU1TCmdlb2xvZ3kvMVNNCmdlb20vMQpnZW9tYWduZXRpYy81Cmdlb21hZ25ldGlzbS8xTQpnZW9tZXRlci8xCmdlb21ldHJpYy81Cmdlb21ldHJpY2FsLzVZCmdlb21ldHJ5LzFTTQpnZW9waHlzaWNhbC81Cmdlb3BoeXNpY2lzdC8xU00KZ2VvcGh5c2ljcy8xTQpnZW9wb2xpdGljYWwvNQpnZW9wb2xpdGljcy8xTQpnZW9zdGF0aW9uYXJ5LzUKZ2Vvc3luY2hyb25vdXMvNQpnZW9zeW5jbGluZS8xTVMKZ2VvdGhlcm1hbC81Cmdlb3RoZXJtaWMvNQpnZXJhbml1bS8xNU1TCmdlcmJpbC8xNE1TCmdlcmlhdHJpYy81MVMKZ2VyaWF0cmljaWFuLzFTCmdlcmlhdHJpY3MvMU0KZ2VybS8xNE1TCmdlcm1hbmUvNTEKZ2VybWFuaXVtLzFNCmdlcm1pY2lkYWwvNQpnZXJtaWNpZGUvMU1TCmdlcm1pbmFsLzVNCmdlcm1pbmF0ZS80R05EUwpnZXJtaW5hdGlvbi8xTQpnZXJvbnRvbG9naWNhbC81Cmdlcm9udG9sb2dpc3QvMU1TCmdlcm9udG9sb2d5LzFNCmdlcnJ5bWFuZGVyLzQxR01EUwpnZXJyeW1hbmRlcmluZy8xNE0KZ2VydW5kLzFNUwpnZXN0YWx0LzFTCmdlc3RhcG8vTVMKZ2VzdGF0ZS80R05EUwpnZXN0YXRpb24vMU0KZ2VzdGF0aW9uYWwvNQpnZXN0aWN1bGF0ZS80RFNHTlgKZ2VzdGljdWxhdGlvbi8xTQpnZXN0dXJhbC81Cmdlc3R1cmUvMTRNR0RTCmdlc3VuZGhlaXQvCmdldC80MVN+CmdldGF3YXkvMTVTTQpnZXR0aW5nLzQxCmdldHVwLzFNCmdld2dhdy8xNVNNCmdleXNlci8xNFNNCmdoYXN0bGluZXNzLzFNCmdoYXN0bHkvNVRQUgpnaGF0LzFNUwpnaGVlLzEKZ2hlcmtpbi8xTVMKZ2hldHRvLzE1NFNNCmdoZXR0b2l6ZS80R0RTCmdob3N0LzE0U01EWUcKZ2hvc3RsaW5lc3MvMU0KZ2hvc3RseS81UlRQCmdob3N0d3JpdGUvNFpHUlMKZ2hvc3R3cml0ZXIvMU0KZ2hvc3R3cml0dGVuLzUKZ2hvc3R3cm90ZS80Cmdob3VsLzFTTQpnaG91bGlzaC81WVAKZ2hvdWxpc2huZXNzLzFNCmdpYW50LzE1U00KZ2lhbnRlc3MvMU1TCmdpYmJlci8xNEdEUwpnaWJiZXJpc2gvMTVNCmdpYmJldC8xNEdNRFMKZ2liYm9uLzFNUwpnaWJib3VzLzUKZ2liZS8xNE1HRFMKZ2libGV0LzFTTQpnaWRkaWx5LwpnaWRkaW5lc3MvMU0KZ2lkZHkvNTE0UlRQCmdpZnQvMTRNREdTCmdpZy8xNFNNCmdpZ2FiaXQvMVNNCmdpZ2FieXRlLzFNUwpnaWdhZ3JhbS8xUwpnaWdhaGVydHovMU0KZ2lnYWpvdWxlLzFTCmdpZ2FtZXRlci8xUwpnaWdhbnRpYy81CmdpZ2FudGljYWxseS8KZ2lnYXBhc2NhbC8xUwpnaWdhcGl4ZWwvMU1TCmdpZ2F3YXR0LzFTTQpnaWdnZWQvNApnaWdnaW5nLzE0CmdpZ2dsZS80MURSU01aRwpnaWdnbGVyLzFNCmdpZ2dseS81UlQKZ2lnb2xvLzFTTQpnaWxkLzQxTURSWkdTCmdpbGRlci8xTQpnaWxkaW5nLzQxTQpnaWxsLzE0TVMKZ2lsbGllLzE0UwpnaWxsaW9uLzFTCmdpbHQvMTU0TVMKZ2ltYmFscy8xTQpnaW1jcmFjay81MTRTTQpnaW1jcmFja2VyeS8xTQpnaW1sZXQvMTRHU01ECmdpbW1lLzFTTQpnaW1taWNrLzE0TVMKZ2ltbWlja3J5LzFNCmdpbW1pY2t5LzUKZ2ltcC8xNDVNREdTCmdpbXB5LzUKZ2luLzE0N1NNCmdpbmdlci8xNTRHU01EWQpnaW5nZXJicmVhZC8xTQpnaW5nZXJzbmFwLzFTTQpnaW5nZXJ5LzUKZ2luZ2hhbS8xTQpnaW5naXZpdGlzLzFNCmdpbmtnby8xTQpnaW5rZ29lcy8xCmdpbm5lZC80NQpnaW5uaW5nLzQxCmdpbm9ybW91cy81CmdpbnNlbmcvMU0KZ2lyYWZmZS8xTVMKZ2lyZC80MURSWkdTCmdpcmRlci8xTQpnaXJkbGUvMTREU01HCmdpcmwvMTRNUwpnaXJsZnJpZW5kLzFNUwpnaXJsaG9vZC8xU00KZ2lybGlzaC81WVAKZ2lybGlzaG5lc3MvMU0KZ2lybHkvNTEKZ2lyby8xNFMKZ2lydC8xNDVNREdTCmdpcnRoLzE0TQpnaXJ0aHMvMQpnaXN0LzE0TQpnaXQvMTQyUwpnaXRlLzFTCmdpdmUvNDFaR0pSU34KZ2l2ZWF3YXkvMTVNUwpnaXZlYmFjay8xTVMKZ2l2ZW4vNCsxNVNNCmdpdmVyLzFNCmdpem1vLzFTTQpnaXp6YXJkLzFNUwpnbGFjZS9TCmdsYWNlZWQKZ2xhY2VpbmcKZ2xhY2lhbC81MVkKZ2xhY2lhdGUvNFhHTkRTCmdsYWNpYXRpb24vMU0KZ2xhY2llci8xTVMKZ2xhZC81NDFNWVNQCmdsYWRkZW4vNEdEUwpnbGFkZGVyLzU0CmdsYWRkZXN0LzUKZ2xhZGUvMVNNCmdsYWRpYXRvci8xNFNNCmdsYWRpYXRvcmlhbC81CmdsYWRpb2xhLzFTTQpnbGFkaW9saS8xCmdsYWRpb2x1cy8xTQpnbGFkbmVzcy8xTQpnbGFkc29tZS81CmdsYW0vMTU0CmdsYW1vcml6YXRpb24vMU0KZ2xhbW9yaXplLzREU0cKZ2xhbW9yb3VzLzVZCmdsYW1vdXIvMTRHTURTCmdsYW5jZS80MURTTUcKZ2xhbmQvMVNNCmdsYW5kZXMvMQpnbGFuZHVsYXIvNTEKZ2xhbnMvMU0KZ2xhcmUvMTQ1RFNNRwpnbGFyaW5nLzU0MVkKZ2xhc25vc3QvMU0KZ2xhc3MvMTRNRFNHCmdsYXNzYmxvd2VyLzFNUwpnbGFzc2Jsb3dpbmcvMU0KZ2xhc3NmdWwvMVNNCmdsYXNzaG91c2UvMVMKZ2xhc3NpbHkvCmdsYXNzaW5lc3MvMU0KZ2xhc3N3YXJlLzFNCmdsYXNzeS81MVJUUApnbGF1Y29tYS8xTQpnbGF6ZS8xNERTTUcKZ2xhemllci8xNVNNCmdsYXppbmcvNDFNCmdsZWFtLzE0U01ER0oKZ2xlYW4vNDFTRFJaR0oKZ2xlYW5lci8xTQpnbGVhbmluZ3MvMU0KZ2xlZS8xNE0KZ2xlZWZ1bC81WVAKZ2xlZWZ1bG5lc3MvMU0KZ2xlbi8xTVMKZ2xlbm9odW1lcmFsLzUKZ2xlbm9pZC8xNQpnbGliLzU0MVlQCmdsaWJiZXIvNQpnbGliYmVzdC81CmdsaWJuZXNzLzFNCmdsaWRlLzQxRFJTTVpHCmdsaWRlci8xTQpnbGlkaW5nLzE0NU0KZ2xpbW1lci8xNE1ER0pTCmdsaW1tZXJpbmcvNDFNCmdsaW1wc2UvNDFNR0RTCmdsaW50LzE1NFNNREcKZ2xpc3NhbmRpLzEKZ2xpc3NhbmRvLzE0TQpnbGlzdGVuLzQxTURTRwpnbGlzdGVyLzQxRFNHCmdsaXRjaC8xNEdNRFMKZ2xpdHRlci8xNE1EU0cKZ2xpdHRlcmF0aS8xCmdsaXR0ZXJ5LzUKZ2xpdHovMU0KZ2xpdHp5LzVUUgpnbG9hbWluZy8xNFNNCmdsb2F0LzQxU01ERwpnbG9hdGluZy80MVkKZ2xvYi8xNE1ER1MKZ2xvYmFsLzUxWQpnbG9iYWxpc20vMU0KZ2xvYmFsaXN0LzUxTVMKZ2xvYmFsaXphdGlvbi8xTQpnbG9iYWxpemUvNEdEUwpnbG9iZS8xNFNNCmdsb2JldHJvdHRlci8xTVMKZ2xvYmV0cm90dGluZy80MQpnbG9idWxhci81MQpnbG9idWxlLzFNUwpnbG9idWxpbi8xTQpnbG9ja2Vuc3BpZWwvMVNNCmdsb29tLzE0TQpnbG9vbWlseS8KZ2xvb21pbmVzcy8xTQpnbG9vbXkvNTFUUlAKZ2xvcC80MU0KZ2xvcHB5LzUKZ2xvcmlmaWNhdGlvbi8xTQpnbG9yaWZ5LzRHRFNOCmdsb3Jpb3VzLzVJWQpnbG9yeS8xNERTTUcKZ2xvc3MvMTRNRFNHCmdsb3NzYXJ5LzFTTQpnbG9zc2lseS8KZ2xvc3NpbmVzcy8xTQpnbG9zc29sYWxpYS8xTQpnbG9zc3kvNTFQVFJTTQpnbG90dGFsLzUxCmdsb3R0aXMvMU1TCmdsb3ZlLzE0RFNNRwpnbG93LzQxTURSWkdTCmdsb3dlci80MUdNRApnbG93aW5nLzQxNVkKZ2xvd3dvcm0vMU1TCmdsdWNhZ29uLzEKZ2x1Y29zZS8xTQpnbHVlLzE0TUdEUwpnbHVlZC80VQpnbHVleS81CmdsdWllci81CmdsdWllc3QvNQpnbHVtLzU0MVlQCmdsdW1tZXIvNQpnbHVtbWVzdC81CmdsdW1uZXNzLzFNCmdsdW9uLzFTCmdsdXQvMTRNTlMKZ2x1dGVuLzFNCmdsdXRlbm91cy81CmdsdXRpbm91cy81WQpnbHV0dGVkLzQKZ2x1dHRpbmcvNDEKZ2x1dHRvbi81MTRNUwpnbHV0dG9ub3VzLzVZCmdsdXR0b255LzFNCmdseWNlcmluLzFNCmdseWNlcm9sLzFNCmdseWNvZ2VuLzFNCmdseWNvbC8xCmdseXBoLzEKZ20vMQpnbmFybC8xNDVTTURHCmduYXJseS81VFIKZ25hc2gvNDFNRFNHCmduYXQvMU1TCmduYXcvNDFER1MKZ25laXNzLzFNCmdub2NjaGkvMQpnbm9tZS8xU00KZ25vbWljLzUKZ25vbWlzaC81CmdudS8xU00KZ28vNDE1Sk1SSFpHfgpnb2FkLzE0TURHUwpnb2FsLzE0TVMKZ29hbGllLzE0U00KZ29hbGtlZXBlci8xTVMKZ29hbGtlZXBpbmcvMTRNCmdvYWxsZXNzLzUKZ29hbG1vdXRoLzEKZ29hbG1vdXRocy8xCmdvYWxwb3N0LzFNUwpnb2Fsc2NvcmVyLzFTCmdvYWx0ZW5kZXIvMU1TCmdvYXQvMTRNUwpnb2F0ZWUvMVNNCmdvYXRoZXJkLzFNUwpnb2F0c2tpbi8xTVMKZ29iLzE0U00KZ29iYmVkLzQKZ29iYmV0LzE0U00KZ29iYmluZy80MQpnb2JibGUvNDFEUlNNWkcKZ29iYmxlZHlnb29rLzFNCmdvYmJsZXIvMU0KZ29ibGV0LzFTTQpnb2JsaW4vMVNNCmdvYnNtYWNrZWQvNQpnb2JzdG9wcGVyLzFTCmdvZC8xMjRTTQpnb2Rhd2Z1bC81CmdvZGNoaWxkLzFNCmdvZGNoaWxkcmVuLzFNCmdvZGRhbW1pdC8KZ29kZGFtbi81MUQKZ29kZGF1Z2h0ZXIvMU1TCmdvZGRlc3MvMU1TCmdvZGZhdGhlci8xNFNNCmdvZGZvcnNha2VuLzUKZ29kaGVhZC8xTQpnb2Rob29kLzFNCmdvZGxlc3MvNVBZCmdvZGxlc3NuZXNzLzFNCmdvZGxpa2UvNQpnb2RsaW5lc3MvMVVNCmdvZGx5LzVVUlRQCmdvZG1vdGhlci8xNFNNCmdvZHBhcmVudC8xU00KZ29kc2VuZC8xU00KZ29kc29uLzFTTQpnb2RzcGVlZC8xCmdvZXIvMU0KZ29lcy80MQpnb2Zlci8xU00KZ29nZ2xlLzQxRFNNRwpnb2dnbGVzLzE0TQpnb2luZy80MTVNCmdvaXRlci8xU00KZ29sZC8xNTRNTlMKZ29sZGJyaWNrLzE0WkdTTURSCmdvbGRicmlja2VyLzFNCmdvbGRlbi81MTRUUgpnb2xkZW5yb2QvMTVNCmdvbGRmaWVsZC8xUwpnb2xkZmluY2gvMU1TCmdvbGRmaXNoLzFNUwpnb2xkbWluZS8xU00KZ29sZHNtaXRoLzFNCmdvbGRzbWl0aHMvMQpnb2xmLzE0TURSWkdTCmdvbGZlci8xTQpnb2xsaXdvZy8xUwpnb2xseS8xNFNNCmdvbmFkLzFTTQpnb25hZGFsLzUKZ29uZG9sYS8xNE1TCmdvbmRvbGllci8xU00KZ29uZS80NStaUgpnb25lci8xTQpnb25nLzE0TURHUwpnb25rLzE0Uwpnb25uYS80Cmdvbm9ycmhlYS8xTQpnb25vcnJoZWFsLzUKZ29uem8vNTEKZ29vLzE0TQpnb29iZXIvMTRTTQpnb29kLzUxNE1ZU1B+Cmdvb2RieWUvMTRNUwpnb29kaGVhcnRlZC81Cmdvb2Rpc2gvNQpnb29kbHkvNVRSCmdvb2RuZXNzLzFNCmdvb2RuaWdodC8xNApnb29kcy8xNE0KZ29vZHdpbGwvMU0KZ29vZHkvMTVTTQpnb29leS81Cmdvb2YvMTRNREdTCmdvb2ZiYWxsLzE1U00KZ29vZmluZXNzLzFNCmdvb2Z5LzUxUlBUCmdvb2dsZS80MURTTUcKZ29vZ2x5LzE1Uwpnb29pZXIvNQpnb29pZXN0LzUKZ29vay8xTVMKZ29vbi8xNE1TCmdvb3AvMTRNCmdvb3NlLzE0RFNNRwpnb29zZWJlcnJ5LzFTTQpnb29zZWJ1bXBzLzFNCmdvb3Nlc3RlcC80Uwpnb29zZXN0ZXBwZWQvNApnb29zZXN0ZXBwaW5nLzQKZ29waGVyLzFTTQpnb3JlLzE0TUdEUwpnb3JnZSdzCmdvcmdlLzE0NUVEU0cKZ29yZ2VvdXMvNVlQCmdvcmdlb3VzbmVzcy8xTQpnb3Jnb24vMTVTTQpnb3JpbGxhLzFNUwpnb3JpbHkvCmdvcmluZXNzLzFNCmdvcm1hbmRpemUvNERSU1pHCmdvcm1hbmRpemVyLzFNCmdvcm1sZXNzLzUKZ29ycC8xTVMKZ29yc2UvMU0KZ29yeS81UlRQCmdvc2gvCmdvc2hhd2svMU1TCmdvc2xpbmcvMVNNCmdvc3BlbC8xNE1TCmdvc3NhbWVyLzE1TQpnb3NzaXAvMTRNRFJaR1MKZ29zc2lwZXIvMU0KZ29zc2lweS81CmdvdC80CmdvdGNoYS8xUwpnb3Rocy8xCmdvdHRhLzQKZ290dGVuLzQ1CmdvdWFjaGUvMTRTCmdvdWdlLzE0RFJTTVpHCmdvdWdlci8xTQpnb3VsYXNoLzFNUwpnb3VyZC8xU00KZ291cmRlLzFNUwpnb3VybWFuZC8xU00KZ291cm1ldC81MVNNCmdvdXQvMTRNCmdvdXR5LzVUUgpnb3YvMQpnb3Zlcm4vNDFER1NCTApnb3Zlcm5hYmxlLzVVCmdvdmVybmFuY2UvMU0KZ292ZXJuZWQvNFUKZ292ZXJuZXNzLzE0TVMKZ292ZXJubWVudC8xTVMKZ292ZXJubWVudGFsLzUKZ292ZXJub3IvMVNNCmdvdmVybm9yc2hpcC8xTQpnb3Z0LzEKZ293bi8xNE1ER1MKZ3IvMQpncmFiLzQxTVMKZ3JhYmJlZC80CmdyYWJiZXIvMU1TCmdyYWJiaW5nLzQxCmdyYWJieS81MVRSCmdyYWNlLzE0RURTTUcKZ3JhY2VmdWwvNUVQWQpncmFjZWZ1bG5lc3MvMUVNCmdyYWNlbGVzcy81UFkKZ3JhY2VsZXNzbmVzcy8xTQpncmFjaW91cy81VVkKZ3JhY2lvdXNuZXNzLzFNCmdyYWNrbGUvMU1TCmdyYWQvMU1SWlNCCmdyYWRhdGUvNFhHTkRTCmdyYWRhdGlvbi8xNENNCmdyYWRlJ3MKZ3JhZGUvMTRDQURTRwpncmFkZWQvNDVVCmdyYWRlci8xTQpncmFkaWVudC8xNU1TCmdyYWR1YWwvNTFQWQpncmFkdWFsaXNtLzFNCmdyYWR1YWxuZXNzLzFNCmdyYWR1YXRlLzE1NFhNR05EUwpncmFkdWF0aW9uLzFNCmdyYWZmaXRpLzE0CmdyYWZmaXRvLzFNCmdyYWZ0LzE0U01EUlpHCmdyYWZ0ZXIvMU0KZ3JhaGFtLzFTCmdyYWlsLzEKZ3JhaW4vMTRJU01ECmdyYWluaW5lc3MvMU0KZ3JhaW55LzVQVFIKZ3JhbS8xMjRLTVMKZ3JhbW1hci8xNE1TCmdyYW1tYXJpYW4vMVNNCmdyYW1tYXRpY2FsLzVVWQpncmFtb3Bob25lLzFNUwpncmFtcHVzLzFNUwpncmFuLzFTCmdyYW5hcnkvMVNNCmdyYW5kLzUxU01SWVBUCmdyYW5kYW0vMU1TCmdyYW5kYXVudC8xTVMKZ3JhbmRjaGlsZC8xTQpncmFuZGNoaWxkcmVuLzFNCmdyYW5kZGFkLzFTTQpncmFuZGRhZGR5LzFTTQpncmFuZGRhdWdodGVyLzFTTQpncmFuZGVlLzFNUwpncmFuZGV1ci8xTQpncmFuZGZhdGhlci8xNEdNRFlTCmdyYW5kaWxvcXVlbmNlLzFNCmdyYW5kaWxvcXVlbnQvNQpncmFuZGlvc2UvNVkKZ3JhbmRpb3NpdHkvMU0KZ3JhbmRtYS8xNE1TCmdyYW5kbW90aGVyLzFNWVMKZ3JhbmRuZXBoZXcvMU1TCmdyYW5kbmVzcy8xTQpncmFuZG5pZWNlLzFNUwpncmFuZHBhLzFNUwpncmFuZHBhcmVudC8xNE1TCmdyYW5kc29uLzFNUwpncmFuZHN0YW5kLzE0U0dNRApncmFuZHVuY2xlLzFTTQpncmFuZ2UvMVNNCmdyYW5pdGUvMU0KZ3Jhbml0aWMvNQpncmFubnkvMTU0U00KZ3Jhbm9sYS8xNU0KZ3JhbnQvNDFTTURSWkcKZ3JhbnRlZS8xTVMKZ3JhbnRlci8xTQpncmFudHNtYW5zaGlwLzFNCmdyYW51bGFyLzUKZ3JhbnVsYXJpdHkvMU0KZ3JhbnVsYXRlLzQ1R05EUwpncmFudWxhdGlvbi8xTQpncmFudWxlLzFNUwpncmFwZS8xNTRTTQpncmFwZWZydWl0LzFNUwpncmFwZXNob3QvMU0KZ3JhcGV2aW5lLzE0U00KZ3JhcGgvMTRNREcKZ3JhcGhpYy81MU1TCmdyYXBoaWNhbC81WQpncmFwaGl0ZS8xNE0KZ3JhcGhvbG9naXN0LzFNUwpncmFwaG9sb2d5LzFNCmdyYXBocy8xNApncmFwbmVsLzE0TVMKZ3JhcHBsZS80MU1HRFMKZ3Jhc3AvNDFTTURCRwpncmFzcy8xNE1EU0cKZ3Jhc3Nob3BwZXIvMTRNUwpncmFzc2xhbmQvMU1TCmdyYXNzcm9vdHMvNQpncmFzc3kvNTFUUgpncmF0ZS8xNDVEUlNNWkdKCmdyYXRlZnVsLzVVWVAKZ3JhdGVmdWxuZXNzLzFVTQpncmF0ZXIvMU0KZ3JhdGlmaWNhdGlvbi8xTQpncmF0aWZ5LzRHTlhEUwpncmF0aWZ5aW5nLzQ1WQpncmF0aW4vMVMKZ3JhdGluZy81MTRNWQpncmF0aXMvNQpncmF0aXR1ZGUvMUlNCmdyYXR1aXRvdXMvNVlQCmdyYXR1aXRvdXNuZXNzLzFNCmdyYXR1aXR5LzFTTQpncmF2YW1lbi8xTVMKZ3JhdmUvMTQ1RFJTTVlUR1AKZ3JhdmVkaWdnZXIvMVNNCmdyYXZlbC8xNFNHTURZCmdyYXZlbi80NQpncmF2ZW5lc3MvMU0KZ3JhdmVzaWRlLzFNUwpncmF2ZXN0b25lLzFTTQpncmF2ZXlhcmQvMU1TCmdyYXZpZC81CmdyYXZpbWV0ZXIvMU1TCmdyYXZpdGFzLzEKZ3Jhdml0YXRlLzRHTkRTCmdyYXZpdGF0aW9uLzFNCmdyYXZpdGF0aW9uYWwvNQpncmF2aXR5LzFNCmdyYXZ5LzE0U00KZ3JheS81NDFNRFJUR1NQCmdyYXliZWFyZC8xU00KZ3JheWlzaC81CmdyYXluZXNzLzFNCmdyYXplLzE0RFJTTVpHCmdyYXplci8xTQpncmVhc2UvMTREUlNNWkcKZ3JlYXNlcGFpbnQvMU0KZ3JlYXNpbHkvCmdyZWFzaW5lc3MvMU0KZ3JlYXN5LzVQVFIKZ3JlYXQvNTFTTVJZUFQKZ3JlYXRjb2F0LzFTTQpncmVhdGhlYXJ0ZWQvNQpncmVhdG5lc3MvMU0KZ3JlYmUvMVNNCmdyZWVkLzE0TQpncmVlZGlseS8KZ3JlZWRpbmVzcy8xTQpncmVlZHkvNVBUUgpncmVlbi81MTRHUFNNRFJZVApncmVlbmJhY2svMU1TCmdyZWVuYmVsdC8xTVMKZ3JlZW5lcnkvMU0KZ3JlZW5maWVsZC8xNQpncmVlbmZseS8xUwpncmVlbmdhZ2UvMU1TCmdyZWVuZ3JvY2VyLzFTTQpncmVlbmhvcm4vMVNNCmdyZWVuaG91c2UvMTRTTQpncmVlbmlzaC81CmdyZWVubWFpbC8xNE0KZ3JlZW5uZXNzLzFNCmdyZWVucm9vbS8xU00KZ3JlZW5zdG9uZS8xCmdyZWVuc3dhcmQvMU0KZ3JlZW53b29kLzFNCmdyZWV0LzQ1MVpHSlNEUgpncmVldGVyLzFNCmdyZWV0aW5nLzE0TQpncmVnYXJpb3VzLzVQWQpncmVnYXJpb3VzbmVzcy8xTQpncmVtbGluLzFTTQpncmVuYWRlLzE0U00KZ3JlbmFkaWVyLzFNUwpncmVuYWRpbmUvMU0KZ3JlcC8yNFMKZ3JlcHBlZC80CmdyZXBwaW5nLzQKZ3Jldy80QQpncmV5aG91bmQvMTRTTQpncmliYmxlLzE1UwpncmlkLzE0TVMKZ3JpZGRsZS8xNFNNCmdyaWRkbGVjYWtlLzFTTQpncmlkaXJvbi8xNFNNCmdyaWRsb2NrLzE0U01ECmdyaWVmLzE0U00KZ3JpZXZhbmNlLzFNUwpncmlldmUvNDFaR0RSUwpncmlldmVyLzFNCmdyaWV2b3VzLzVQWQpncmlldm91c25lc3MvMU0KZ3JpZmZpbi8xU00KZ3JpZmZvbi8xU00KZ3JpbGwvMTQ1U0dNREoKZ3JpbGxlLzFNUwpncmltLzU0MURZUEcKZ3JpbWFjZS8xNERTTUcKZ3JpbWUvMTRTTQpncmltaW5lc3MvMU0KZ3JpbW1lci81CmdyaW1tZXN0LzUKZ3JpbW5lc3MvMU0KZ3JpbXkvNVRSUApncmluLzE0TVMKZ3JpbmQvNDFTWkdNUkoKZ3JpbmRlci8xTQpncmluZHN0b25lLzFNUwpncmluZ28vMU1TCmdyaW5uZWQvNApncmlubmluZy80MQpncmlwLzQxTURSU1pHCmdyaXBlLzQxU00KZ3JpcGVyLzFNCmdyaXBwZS8xTVpHRFIKZ3JpcHBlci8xTQpncmlzbGluZXNzLzFNCmdyaXNseS81MVJUUApncmlzdC8xNE1ZCmdyaXN0bGUvMU0KZ3Jpc3RtaWxsLzFNUwpncml0LzE0TVMKZ3JpdHMvMTRNCmdyaXR0ZWQvNApncml0dGVyLzFTTQpncml0dGluZXNzLzFNCmdyaXR0aW5nLzQxCmdyaXR0eS81UlRQCmdyaXp6bGUvMTU0RFNHCmdyaXp6bHkvNTFUUlNNCmdyb2FuLzE0U0dNRApncm9hdC8xU00KZ3JvY2VyLzE0TVMKZ3JvY2VyeS8xNFNNCmdyb2cvMTRNCmdyb2dnaWx5Lwpncm9nZ2luZXNzLzFNCmdyb2dneS81UFJUCmdyb2luLzE0U00KZ3Jvay80Uwpncm9ra2VkLzQKZ3Jva2tpbmcvNApncm9tbWV0LzE0U00KZ3Jvb20vMTRTWkdNRFIKZ3Jvb21lci8xTQpncm9vbWluZy80MU0KZ3Jvb21zbWFuLzFNCmdyb29tc21lbi8xCmdyb292ZS8xNE1HRFMKZ3Jvb3Z5LzUxUlQKZ3JvcGUvNDFEUlNNWkcKZ3JvcGVyLzFNCmdyb3NiZWFrLzFNUwpncm9zZ3JhaW4vMU0KZ3Jvc3MvNTE0UFRHTURSU1kKZ3Jvc3NuZXNzLzFNCmdyb3Rlc3F1ZS81MVNQTVkKZ3JvdGVzcXVlbmVzcy8xTQpncm90dG8vMU0KZ3JvdHRvZXMvMQpncm90dHkvNVRSCmdyb3VjaC8xNEdNRFMKZ3JvdWNoaWx5Lwpncm91Y2hpbmVzcy8xTQpncm91Y2h5LzVSVFAKZ3JvdW5kLzE0NVpHTURSSlMKZ3JvdW5kYnJlYWtpbmcvNTFNUwpncm91bmRjbG90aC8xCmdyb3VuZGNsb3Rocy8xCmdyb3VuZGVyLzFNCmdyb3VuZGhvZy8xTVMKZ3JvdW5kaW5nLzE0TQpncm91bmRsZXNzLzVZCmdyb3VuZG51dC8xTVMKZ3JvdW5kc2hlZXQvMVMKZ3JvdW5kc2tlZXBlci8xUwpncm91bmRzbWFuLzEKZ3JvdW5kc21lbi8xCmdyb3VuZHN3ZWxsLzFTTQpncm91bmR3YXRlci8xTQpncm91bmR3b3JrLzFNCmdyb3VwLzE0SlNaR01EUgpncm91cGVyLzFNCmdyb3VwaWUvMU1TCmdyb3VwaW5nLzQxTQpncm91cHdhcmUvMU0KZ3JvdXNlLzE0NU1aR0RSUwpncm91c2VyLzFNCmdyb3V0LzE0U0dNRApncm92ZS8xNFNNCmdyb3ZlbC80WkdEUlMKZ3JvdmVsZXIvMU0KZ3JvdmVsbGVkLzQKZ3JvdmVsbGluZy80MQpncm93LzRBSFNHCmdyb3dlci8xTVMKZ3Jvd2luZy80MUkKZ3Jvd2wvMTRTWkdNRFIKZ3Jvd2xlci8xTQpncm93bi80NUFJCmdyb3dudXAvMTVNUwpncm93dGgvMUFNCmdyb3d0aHMvMQpncnViLzE0TVMKZ3J1YmJlZC80CmdydWJiZXIvMU1TCmdydWJiaWx5LwpncnViYmluZXNzLzFNCmdydWJiaW5nLzQxCmdydWJieS81MVRSUApncnVic3Rha2UvMTRNCmdydWRnZS8xNE1HRFMKZ3J1ZGdpbmcvNTQxWQpncnVlLzQxNVMKZ3J1ZWwvMTRHSk0KZ3J1ZWxpbmcvNTE0WQpncnVlc29tZS81UllUUApncnVlc29tZW5lc3MvMU0KZ3J1ZmYvNTQxVFBSWQpncnVmZm5lc3MvMU0KZ3J1bWJsZS8xNERSU01aR0oKZ3J1bWJsZXIvMU0KZ3J1bXAvMTRTTQpncnVtcGlseS8KZ3J1bXBpbmVzcy8xTQpncnVtcHkvNTFQUlQKZ3J1bmdlLzFNUwpncnVuZ3kvNVJUCmdydW5pb24vMVNNCmdydW50LzE0U0dNRApndC8xCmd1YWNhbW9sZS8xTQpndWFuaW5lLzFNCmd1YW5vLzFNCmd1YXJhbmkvMU1TCmd1YXJhbnRlZS8xNE1EUwpndWFyYW50ZWVpbmcvNApndWFyYW50b3IvMU1TCmd1YXJhbnR5LzE0R0RTTQpndWFyZC8xNFNaR01EUgpndWFyZGVkLzQ1WQpndWFyZGVyLzFNCmd1YXJkaG91c2UvMVNNCmd1YXJkaWFuLzFTTQpndWFyZGlhbnNoaXAvMU0KZ3VhcmRyYWlsLzFTTQpndWFyZHJvb20vMVNNCmd1YXJkc21hbi8xTQpndWFyZHNtZW4vMQpndWF2YS8xU00KZ3ViZXJuYXRvcmlhbC81Cmd1ZXJyaWxsYS8xNVNNCmd1ZXNzLzQxWkdCTURSUwpndWVzc2VyLzFNCmd1ZXNzdGltYXRlLzE0RFNNRwpndWVzc3dvcmsvMU0KZ3Vlc3QvMTRTR01ECmd1ZXN0Ym9vay8xU00KZ3Vlc3Rob3VzZS8xUwpndWVzdHJvb20vMVMKZ3VmZi8xNE0KZ3VmZmF3LzE0TURHUwpndWlkYW5jZS8xTQpndWlkZS8xNERSU01aRwpndWlkZWJvb2svMVNNCmd1aWRlZC80NVUKZ3VpZGVsaW5lLzFTTQpndWlkZXBvc3QvMVNNCmd1aWRlci8xTQpndWlsZC8xU1pNUgpndWlsZGVyLzFNCmd1aWxkaGFsbC8xTVMKZ3VpbGUvMTRNCmd1aWxlZnVsLzUKZ3VpbGVsZXNzLzVZUApndWlsZWxlc3NuZXNzLzFNCmd1aWxsZW1vdC8xUwpndWlsbG90aW5lLzE0RFNNRwpndWlsdC8xNE0KZ3VpbHRpbHkvCmd1aWx0aW5lc3MvMU0KZ3VpbHRsZXNzLzUKZ3VpbHR5LzUxUFJUCmd1aW5lYS8xTVMKZ3Vpc2UvMTRFU00KZ3VpdGFyLzE0TVMKZ3VpdGFyaXN0LzFTTQpndWxhZy8xNFNNCmd1bGNoLzQxTVMKZ3VsZGVuLzFNUwpndWxmLzE0TVMKZ3VsbC8xNE1EU0cKZ3VsbGV0LzFNUwpndWxsaWJpbGl0eS8xTQpndWxsaWJsZS81MQpndWxseS8xNFNNCmd1bHAvMTRNRFJTWkcKZ3VscGVyLzFNCmd1bS8xNFNNCmd1bWJhbGwvMVMKZ3VtYm8vMVNNCmd1bWJvaWwvMVNNCmd1bWJvb3QvMVMKZ3VtZHJvcC8xU00KZ3VtbWVkLzQKZ3VtbWluZy80MQpndW1teS81MVRSCmd1bXB0aW9uLzFNCmd1bXNob2UvMTRNRFMKZ3Vtc2hvZWluZy80Cmd1bi8xNFNNCmd1bmJvYXQvMVNNCmd1bmZpZ2h0LzE0TVJaUwpndW5maWdodGVyLzFNCmd1bmZpcmUvMU0KZ3VuZ2UvMTQKZ3VuZ3kvNQpndW5rLzE0TQpndW5reS81Cmd1bm1hbi8xTQpndW5tZW4vMQpndW5tZXRhbC8xTQpndW5uZWQvNDUKZ3VubmVsLzFNUwpndW5uZXIvMU1TCmd1bm5lcnkvMU0KZ3VubmluZy80MQpndW5ueS8xTQpndW5ueXNhY2svMU1TCmd1bnBvaW50LzFNCmd1bnBvd2Rlci8xNE0KZ3VucnVubmVyLzFNUwpndW5ydW5uaW5nLzFNCmd1bnNoaXAvMU1TCmd1bnNob3QvMU1TCmd1bnNsaW5nZXIvMVNNCmd1bnNtaXRoLzFNCmd1bnNtaXRocy8xCmd1bndhbGUvMU1TCmd1cHB5LzFTTQpndXJnbGUvNDFNR0RTCmd1cm5leS8xTVMKZ3VydS8xNE1TCmd1c2gvMTRNRFJTWkcKZ3VzaGVyLzFNCmd1c2hpbmcvNTE0WQpndXNoeS81VFIKZ3Vzc2V0LzE0TVNERwpndXNzeS80MURTRwpndXN0LzE0RU1EU0cKZ3VzdGF0b3J5LzUKZ3VzdGlseS8KZ3VzdG8vMU0KZ3VzdHkvNVJUCmd1dC8xNDVTTQpndXRsZXNzLzVQCmd1dGxlc3NuZXNzLzFNCmd1dHN5LzVSVApndXR0ZWQvNTQKZ3V0dGVyLzE0U01ERwpndXR0ZXJzbmlwZS8xTVMKZ3V0dGluZy80MTUKZ3V0dHVyYWwvNTFNUwpndXR0eS81MVJUCmd1di8xUwpndXZub3IvMVMKZ3V5LzE0U0dNRApndXp6bGUvNDFEUlNaRwpndXp6bGVyLzFNCmd5bS8xNFNNCmd5bWtoYW5hLzFNUwpneW1uYXNpdW0vMU1TCmd5bW5hc3QvMU1TCmd5bW5hc3RpYy81MVMKZ3ltbmFzdGljYWxseS8KZ3ltbmFzdGljcy8xTQpneW1ub3NwZXJtLzFTTQpneW1zbGlwLzFTCmd5bmVjb2xvZ2ljLzUKZ3luZWNvbG9naWNhbC81Cmd5bmVjb2xvZ2lzdC8xU00KZ3luZWNvbG9neS8xTQpneXAvMTRTTQpneXBwZWQvNApneXBwZXIvMVNNCmd5cHBpbmcvNApneXBzdGVyLzFTTQpneXBzdW0vMU0KZ3lwc3kvMTU0U00KZ3lyYXRlLzQ1RFNHTlgKZ3lyYXRpb24vMU0KZ3lyYXRvci8xU00KZ3lyZmFsY29uLzFNUwpneXJvLzFNUwpneXJvc2NvcGUvMU1TCmd5cm9zY29waWMvNQpneXZlLzE0TUdEUwpoJ20vCmgvMTQ1TlJTWFpHVkoKaGEvNEgKaGFzLzQKaGFiZXJkYXNoZXIvMVNNCmhhYmVyZGFzaGVyeS8xU00KaGFiaWxpbWVudC8xU00KaGFiaXQncwpoYWJpdC8xNElTQgpoYWJpdGFiaWxpdHkvMU0KaGFiaXRhdC8xU00KaGFiaXRhdGlvbi8xTVMKaGFiaXR1YWwvNTFZUApoYWJpdHVhbG5lc3MvMU0KaGFiaXR1YXRlLzRHTkRTCmhhYml0dWF0aW9uLzFNCmhhYml0dWUvMVNNCmhhY2llbmRhLzFTTQpoYWNrLzQxTURSWkdTCmhhY2tlci8xNE0KaGFja2luZy81NDFNCmhhY2tpc2gvNQpoYWNrbGUvMTRNUwpoYWNrbmV5LzE1NFNNREcKaGFja3Nhdy8xNFNNCmhhY2t0aXZpc3QvMU1TCmhhY2t3b3JrLzFNCmhhZC80CmhhZGRvY2svMVNNCmhhZGl0aC8xCmhhZG4ndC80CmhhZHN0LzQKaGFmbml1bS8xTQpoYWZ0LzE0TVMKaGFnLzE0U00KaGFnZ2FyZC81MVlQCmhhZ2dhcmRuZXNzLzFNCmhhZ2dpcy8xTVMKaGFnZ2lzaC81CmhhZ2dsZS80TVpHRFJTCmhhZ2dsZXIvMU0KaGFnaW9ncmFwaGVyLzFTTQpoYWdpb2dyYXBoeS8xU00KaGFobml1bS8xTQpoYWlrdS8xTQpoYWlsLzE0NU1ER1MKaGFpbHN0b25lLzFNUwpoYWlsc3Rvcm0vMU1TCmhhaXIvMTRNRFMKaGFpcmJhbGwvMU1TCmhhaXJiYW5kLzFTCmhhaXJicmVhZHRoLzFNCmhhaXJicmVhZHRocy8xCmhhaXJicnVzaC8xNE1TCmhhaXJjbG90aC8xTQpoYWlyY3V0LzE0U00KaGFpcmRvLzFNUwpoYWlyZHJlc3Nlci8xU00KaGFpcmRyZXNzaW5nLzE0TQpoYWlyZHJ5ZXIvMU1TCmhhaXJncmlwLzFTCmhhaXJpbmVzcy8xTQpoYWlybGVzcy81MQpoYWlybGlrZS81CmhhaXJsaW5lLzE1U00KaGFpcm5ldC8xU00KaGFpcnBpZWNlLzFNUwpoYWlycGluLzFTTQpoYWlyc2JyZWFkdGgvMU0KaGFpcnNicmVhZHRocy8xCmhhaXJzcGxpdHRlci8xU00KaGFpcnNwbGl0dGluZy8xNE0KaGFpcnNwcmF5LzE0UwpoYWlyc3ByaW5nLzFNUwpoYWlyc3R5bGUvMU1TCmhhaXJzdHlsaXN0LzFTTQpoYWlyeS81VFJQCmhhai8xCmhhamovMU0KaGFqamVzLzEKaGFqamkvMVNNCmhha2UvMTRNUwpoYWxhbC81NE0KaGFsYmVyZC8xU00KaGFsY3lvbi8xNQpoYWxlLzUxNElUR0RSUwpoYWxmLzE1NCtNCmhhbGZiYWNrLzE0U00KaGFsZmhlYXJ0ZWQvNVBZCmhhbGZoZWFydGVkbmVzcy8xTQpoYWxmcGVuY2UvMQpoYWxmcGVubnkvMTVTTQpoYWxmdGltZS8xNU1TCmhhbGZ0b25lLzE0TVMKaGFsZndheS81CmhhbGZ3aXQvMVNNCmhhbGlidXQvMVNNCmhhbGl0ZS8xTQpoYWxpdG9zaXMvMU0KaGFsbC8xTVMKaGFsbGVsdWphaC8xNE0KaGFsbGVsdWphaHMvMTQKaGFsbG1hcmsvMTRHTURTCmhhbGxvby8xNE1TRwpoYWxsb3cvMTQ1RFNHCmhhbGxvd2VkLzU0VQpoYWxsdWNpbmF0ZS80R05YRFMKaGFsbHVjaW5hdGlvbi8xTQpoYWxsdWNpbmF0b3J5LzUKaGFsbHVjaW5vZ2VuLzFTTQpoYWxsdWNpbm9nZW5pYy81MVNNCmhhbGx3YXkvMVNNCmhhbG8vMTRNREdTCmhhbG9nZW4vMVNNCmhhbG9uLzEKaGFsdC80MTVNRFJaR1MKaGFsdGVyLzE0R01ECmhhbHRlcm5lY2svMVMKaGFsdGluZy81NDFZCmhhbHZlLzREU0cKaGFseWFyZC8xTVMKaGFtLzE0U00KaGFtYnVyZy8xNFNaTVIKaGFtYnVyZ2VyLzE0TQpoYW1sZXQvMU1TCmhhbW1lZC80NQpoYW1tZXIvMTRNRFJTSlpHCmhhbW1lcmVyLzFNCmhhbW1lcmhlYWQvMVNNCmhhbW1lcmxvY2svMVNNCmhhbW1lcnRvZS8xTVMKaGFtbWluZy80CmhhbW1vY2svMTRTTQpoYW1teS81MVRSCmhhbXBlci8xNEdNRFMKaGFtcGVyZWQvNDVVCmhhbXN0ZXIvMTRNUwpoYW1zdHJpbmcvMTRHU00KaGFtc3RydW5nLzU0CmhhbmQncwpoYW5kLzE0VURHUwpoYW5kYmFnLzE0U00KaGFuZGJhbGwvMTRNUwpoYW5kYmFycm93LzFTTQpoYW5kYmlsbC8xTVMKaGFuZGJvb2svMU1TCmhhbmRicmFrZS8xNFMKaGFuZGNhci8xU00KaGFuZGNhcnQvMTRNUwpoYW5kY2xhc3AvMU1TCmhhbmRjcmFmdC8xNFNNREcKaGFuZGN1ZmYvMTRNREdTCmhhbmRlZC81NFAKaGFuZGZ1bC8xU00KaGFuZGd1bi8xU00KaGFuZGhlbGQvNTFNUwpoYW5kaG9sZC8xNE1TCmhhbmRpY2FwLzE0TVMKaGFuZGljYXBwZWQvNDUxCmhhbmRpY2FwcGVyLzFNUwpoYW5kaWNhcHBpbmcvNDEKaGFuZGljcmFmdC8xTVMKaGFuZGlseS8KaGFuZGluZXNzLzFNCmhhbmRpd29yay8xTQpoYW5ka2VyY2hpZWYvMU1TCmhhbmRsZS8xNE1aR0RSUwpoYW5kbGViYXIvMU1TCmhhbmRsZXIvMU0KaGFuZG1hZGUvNTEKaGFuZG1haWQvMVhNTlMKaGFuZG1haWRlbi8xTQpoYW5kb3V0LzE1U00KaGFuZG92ZXIvMVMKaGFuZHBpY2svNEdEUwpoYW5kcmFpbC8xTVMKaGFuZHNhdy8xU00KaGFuZHNldC8xNFNNCmhhbmRzaGFrZS8xNEpNR1MKaGFuZHNvbWUvNTRQWVRSCmhhbmRzb21lbmVzcy8xTQpoYW5kc3ByaW5nLzFNUwpoYW5kc3RhbmQvMTRTTQpoYW5kd29yay8xNE0KaGFuZHdvdmVuLzUKaGFuZHdyaXRpbmcvMTRNCmhhbmR3cml0dGVuLzU0CmhhbmR5LzUxVVRSCmhhbmR5bWFuLzE0TQpoYW5keW1lbi8xCmhhbmcvNDFNRFJKWkdTCmhhbmdhci8xNE1TCmhhbmdkb2cvMTU0Cmhhbmdlci8xTQpoYW5naW5nLzQ1MU0KaGFuZ21hbi8xTQpoYW5nbWVuLzEKaGFuZ25haWwvMU1TCmhhbmdvdXQvMVNNCmhhbmdvdmVyLzFNUwpoYW5ndXAvMU1TCmhhbmsvMTRNUlpTCmhhbmtlci80R0pECmhhbmtlcmluZy80MU0KaGFua2llLzFNUwpoYW5zb20vMU1TCmhhcC8xNE1ZCmhhcGhhemFyZC81MVlQCmhhcGhhemFyZG5lc3MvMU0KaGFwbGVzcy81WVAKaGFwbGVzc25lc3MvMU0KaGFwbG9pZC81MU1TCmhhcHBlbi80U0RHSgpoYXBwZW5pbmcvNDUxTQpoYXBwZW5zdGFuY2UvMVNNCmhhcHBpbHkvVQpoYXBwaW5lc3MvMVVNCmhhcHB5LzUxNFVSVFAKaGFwdGljLzUKaGFyYW5ndWUvMTRNR0RTCmhhcmFzcy80MUxaR0RSUwpoYXJhc3Nlci8xTQpoYXJhc3NtZW50LzFNCmhhcmJpbmdlci8xNFNNCmhhcmJvci8xNEdNRFMKaGFyYm9ybWFzdGVyLzFTCmhhcmQvNTE0TlJZWFRQCmhhcmRiYWNrLzE1TVMKaGFyZGJhbGwvMTU0TQpoYXJkYm9hcmQvMTRNCmhhcmRib3VuZC81CmhhcmRjb3JlLzUxCmhhcmRjb3Zlci8xNVNNCmhhcmRlbi80MVpHRFIKaGFyZGVuZWQvNDVVCmhhcmRlbmVyLzFNCmhhcmRoYXQvMU1TCmhhcmRoZWFkZWQvNVBZCmhhcmRoZWFkZWRuZXNzLzFNCmhhcmRoZWFydGVkLzVQWQpoYXJkaGVhcnRlZG5lc3MvMU0KaGFyZGlob29kLzFNCmhhcmRpbHkvCmhhcmRpbmVzcy8xTQpoYXJkbGluZXIvMU1TCmhhcmRuZXNzLzFNCmhhcmRzY3JhYmJsZS81CmhhcmRzaGlwLzE0U00KaGFyZHN0YW5kLzFTTQpoYXJkdGFjay8xTQpoYXJkdG9wLzFTTQpoYXJkd2FyZS8xTQpoYXJkd2lyZWQvNTQKaGFyZHdvb2QvMTVTTQpoYXJkd29ya2luZy81CmhhcmR5LzUxUFRSCmhhcmUvMTQ1TUdEUwpoYXJlYmVsbC8xTVMKaGFyZWJyYWluZWQvNQpoYXJlbGlwLzE0U00KaGFyZWxpcHBlZC81CmhhcmVtLzFTTQpoYXJpY290LzFTCmhhcmsvNDFER1MKaGFybGVxdWluLzE1NFNNCmhhcmxvdC8xNDVTTQpoYXJsb3RyeS8xTQpoYXJtLzE0TURHUwpoYXJtZWQvNFUKaGFybWZ1bC81WVAKaGFybWZ1bG5lc3MvMU0KaGFybWxlc3MvNVBZCmhhcm1sZXNzbmVzcy8xTQpoYXJtb25pYy81MVNNCmhhcm1vbmljYS8xTVMKaGFybW9uaWNhbGx5LwpoYXJtb25pZXMvMQpoYXJtb25pb3VzLzVQWQpoYXJtb25pb3VzbmVzcy8xTQpoYXJtb25pdW0vMU1TCmhhcm1vbml6YXRpb24vMU0KaGFybW9uaXplLzRaR0RSUwpoYXJtb25pemVyLzFNCmhhcm1vbnkvMUVNCmhhcm5lc3MncwpoYXJuZXNzLzE0VURTRwpoYXJwLzE0TURHUwpoYXJwaXN0LzFTTQpoYXJwb29uLzE0WkdTTURSCmhhcnBvb25lci8xTQpoYXJwc2ljaG9yZC8xTVMKaGFycHNpY2hvcmRpc3QvMVNNCmhhcnB5LzFTTQpoYXJyaWRhbi8xTVMKaGFycmllci8xTQpoYXJyb3cvMTRTTURHCmhhcnJ1bXBoLzE0R0QKaGFycnVtcGhzLzE0CmhhcnJ5LzQxRFJTWkcKaGFyc2gvNTRSWVRQCmhhcnNobmVzcy8xTQpoYXJ0LzFNUwpoYXJ2ZXN0LzE0U01EUlpHCmhhcnZlc3RlZC80VQpoYXJ2ZXN0ZXIvMU0KaGFzaC8xNEFNRFNHCmhhc2hpc2gvMU0KaGFzaHRhZy8xNFNNCmhhc24ndC80Cmhhc3AvMTRNUwpoYXNzbGUvMTQ1RFNNRwpoYXNzb2NrLzFTTQpoYXN0LzRETlhHCmhhc3RlLzE0U00KaGFzdGVuLzRERwpoYXN0aWx5LwpoYXN0aW5lc3MvMU0KaGFzdHkvNVJUUApoYXQvMTRaR1NNRFIKaGF0YmFuZC8xUwpoYXRib3gvMU1TCmhhdGNoLzE0TURTRwpoYXRjaGJhY2svMU1TCmhhdGNoZWNrLzFTTQpoYXRjaGVkLzRVCmhhdGNoZXJ5LzFTTQpoYXRjaGV0LzE0U00KaGF0Y2hpbmcvMTRNCmhhdGNod2F5LzFTTQpoYXRlLzE0TVMKaGF0ZWZ1bC81UFkKaGF0ZWZ1bG5lc3MvMU0KaGF0ZW1vbmdlci8xTVMKaGF0ZXIvMU0KaGF0cGluLzFTCmhhdHJlZC8xU00KaGF0c3RhbmQvMTVTCmhhdHRlZC81NApoYXR0ZXIvMTRTTQpoYXR0aW5nLzE0CmhhdWJlcmsvMVNNCmhhdWdodGlseS8KaGF1Z2h0aW5lc3MvMU0KaGF1Z2h0eS81UFJUCmhhdWwvNDFNRFJaR1MKaGF1bGFnZS8xTQpoYXVsZXIvMU0KaGF1bGllci8xUwpoYXVuY2gvMTRNUwpoYXVudC80MVNNRFJaRwpoYXVudGVyLzFNCmhhdW50aW5nLzQ1MVkKaGF1dGV1ci8xTQpoYXZlLzQxTUdTfgpoYXZlbid0LzQKaGF2ZW4vMTRTTQpoYXZlcnNhY2svMVNNCmhhdm9jLzE0TQpoYXcvNDFHU01ECmhhd2svMTRNRFJaR1MKaGF3a2VyLzFNCmhhd2tpc2gvNVAKaGF3a2lzaG5lc3MvMU0KaGF3c2VyLzFTTQpoYXd0aG9ybi8xTVMKaGF5LzE0R1NNRApoYXljb2NrLzFTTQpoYXlsb2Z0LzFTTQpoYXltYWtlci8xUwpoYXltYWtpbmcvMQpoYXltb3cvMVNNCmhheXJpY2svMU1TCmhheXJpZGUvMU1TCmhheXNlZWQvMTVNUwpoYXlzdGFjay8xU00KaGF5d2lyZS8xNQpoYXphcmQvMTRTTURHCmhhemFyZG91cy81WQpoYXplLzE0TVpHSkRSUwpoYXplbC8xNVNNCmhhemVsbnV0LzFNUwpoYXplci8xTQpoYXppbHkvCmhhemluZXNzLzFNCmhhemluZy8xNE0KaGF6bWF0LzEKaGF6eS81MVJUUApoZHFycy8xCmhlJ2QvCmhlJ2xsLwpoZS84MU1+CmhlYWQvMTU0TURSWkdKUwpoZWFkYWNoZS8xTVMKaGVhZGJhbmQvMU1TCmhlYWRiYW5nZXIvMVMKaGVhZGJhbmdpbmcvMTQ1CmhlYWRib2FyZC8xU00KaGVhZGJ1dHQvMTREU0cKaGVhZGNhc2UvMVMKaGVhZGNoZWVzZS8xCmhlYWRjb3VudC8xUwpoZWFkZHJlc3MvMU1TCmhlYWRlci8xNE0KaGVhZGZpcnN0LzUKaGVhZGdlYXIvMU0KaGVhZGh1bnQvNERSU1pHCmhlYWRodW50ZXIvMU0KaGVhZGh1bnRpbmcvMTRNCmhlYWRpbHkvCmhlYWRpbmVzcy8xTQpoZWFkaW5nLzQxTQpoZWFkbGFtcC8xTVMKaGVhZGxhbmQvMU1TCmhlYWRsZXNzLzUKaGVhZGxpZ2h0LzFNUwpoZWFkbGluZS8xNE1aR0RSUwpoZWFkbGluZXIvMU0KaGVhZGxvY2svMTRNUwpoZWFkbG9uZy81NApoZWFkbWFuLzFNCmhlYWRtYXN0ZXIvMVNNCmhlYWRtZW4vMQpoZWFkbWlzdHJlc3MvMU1TCmhlYWRwaG9uZS8xTVMKaGVhZHBpZWNlLzFNUwpoZWFkcGluLzFTTQpoZWFkcXVhcnRlci80U0RHCmhlYWRxdWFydGVycy8xTQpoZWFkcmVzdC8xTVMKaGVhZHJvb20vMU0KaGVhZHNjYXJmLzEKaGVhZHNjYXJ2ZXMvMQpoZWFkc2V0LzFTTQpoZWFkc2hpcC8xU00KaGVhZHNocmlua2VyLzFTTQpoZWFkc21hbi8xTQpoZWFkc21lbi8xCmhlYWRzdGFsbC8xU00KaGVhZHN0YW5kLzFTTQpoZWFkc3RvbmUvMVNNCmhlYWRzdHJvbmcvNQpoZWFkdGVhY2hlci8xUwpoZWFkd2FpdGVyLzFTTQpoZWFkd2F0ZXJzLzFNCmhlYWR3YXkvMU0KaGVhZHdpbmQvMTRTTQpoZWFkd29yZC8xU00KaGVhZHkvNVJUUApoZWFsLzQxRFJIWkdTCmhlYWxlZC80VQpoZWFsZXIvMU0KaGVhbHRoLzFNCmhlYWx0aGNhcmUvMQpoZWFsdGhmdWwvNVBZCmhlYWx0aGZ1bG5lc3MvMU0KaGVhbHRoaWx5L1UKaGVhbHRoaW5lc3MvMVVNCmhlYWx0aHkvNVVUUlAKaGVhcC8xNE1ER1MKaGVhci80QUhHSlMKaGVhcmQvNDVBVQpoZWFyZXIvMVNNCmhlYXJpbmcvNTE0QU0KaGVhcmtlbi80U0dECmhlYXJzYXkvMU0KaGVhcnNlJ3MKaGVhcnNlLzE0QVMKaGVhcnQvMTRTTQpoZWFydGFjaGUvMU1TCmhlYXJ0YmVhdC8xTVMKaGVhcnRicmVhay8xU01HCmhlYXJ0YnJva2VuLzUKaGVhcnRidXJuLzFNCmhlYXJ0ZW4vNEVTR0QKaGVhcnRmZWx0LzUKaGVhcnRoLzFNCmhlYXJ0aHJ1Zy8xUwpoZWFydGhzLzEKaGVhcnRoc3RvbmUvMTRTTQpoZWFydGlseS8KaGVhcnRpbmVzcy8xTQpoZWFydGxhbmQvMU1TCmhlYXJ0bGVzcy81UFkKaGVhcnRsZXNzbmVzcy8xTQpoZWFydHJlbmRpbmcvNVkKaGVhcnRzaWNrLzVQCmhlYXJ0c2lja25lc3MvMU0KaGVhcnRzdHJpbmdzLzFNCmhlYXJ0dGhyb2IvMU1TCmhlYXJ0d2FybWluZy81CmhlYXJ0d29vZC8xTQpoZWFydHkvNTFSU01QVApoZWF0J3MKaGVhdC8xNEFER1MKaGVhdGVkLzQ1VQpoZWF0ZWRseS8KaGVhdGVyLzFTTQpoZWF0aC8xTU5SWApoZWF0aGVuLzUxTQpoZWF0aGVuZG9tLzFNCmhlYXRoZW5pc2gvNQpoZWF0aGVuaXNtLzFNCmhlYXRoZXIvMTVNCmhlYXRocy8xCmhlYXRpbmcvMTU0TQpoZWF0cHJvb2YvNTQKaGVhdHN0cm9rZS8xTQpoZWF0d2F2ZS8xUwpoZWF2ZS80MURSU01aRwpoZWF2ZW4vMTRTTVkKaGVhdmVubHkvNVRSCmhlYXZlbnMvMTRNCmhlYXZlbndhcmQvNVMKaGVhdmVyLzFNCmhlYXZpbHkvCmhlYXZpbmVzcy8xTQpoZWF2eS81MTRSU01UUApoZWF2eWhlYXJ0ZWQvNQpoZWF2eXNldC81CmhlYXZ5d2VpZ2h0LzE1TVMKaGVjay8xNE0KaGVja2xlLzQxRFJTTVpHCmhlY2tsZXIvMU0KaGVja2xpbmcvNDFNCmhlY3RhcmUvMVNNCmhlY3RpYy81MQpoZWN0aWNhbGx5LwpoZWN0b2dyYW0vMVNNCmhlY3RvbWV0ZXIvMU1TCmhlY3Rvci8xNFNNREcKaGVkZ2UvMTREUlNNWkcKaGVkZ2Vob2cvMTRNUwpoZWRnZWhvcC80UwpoZWRnZWhvcHBlZC80CmhlZGdlaG9wcGluZy80MQpoZWRnZXIvMU0KaGVkZ2Vyb3cvMVNNCmhlZG9uaXNtLzFNCmhlZG9uaXN0LzFNUwpoZWRvbmlzdGljLzUKaGVlZC8xNE1ER1MKaGVlZGVkLzRVCmhlZWRmdWwvNVkKaGVlZGxlc3MvNVBZCmhlZWRsZXNzbmVzcy8xTQpoZWVoYXcvMTRTTURHCmhlZWwvMTRNREdTCmhlZWxsZXNzLzUKaGVmdC8xNE1ER1MKaGVmdGlseS8KaGVmdGluZXNzLzFNCmhlZnR5LzVQUlQKaGVnZW1vbmljLzUKaGVnZW1vbnkvMU0KaGVnaXJhLzFTTQpoZWlmZXIvMVNNCmhlaWdodC8xWFNNTgpoZWlnaHRlbi80REcKaGVpbm91cy81WVAKaGVpbm91c25lc3MvMU0KaGVpci8xNE1TCmhlaXJlc3MvMU1TCmhlaXJsb29tLzFTTQpoZWlzdC8xNFNNREcKaGVsZC80CmhlbGljYWwvNQpoZWxpY2VzLzEKaGVsaWNvcHRlci8xNFNHTUQKaGVsaW9jZW50cmljLzUKaGVsaW90cm9wZS8xNVNNCmhlbGlwYWQvMVMKaGVsaXBvcnQvMU1TCmhlbGl1bS8xTQpoZWxpeC8xNE0KaGVsbC8yMTRNCmhlbGxiZW50LzUKaGVsbGNhdC8xTVMKaGVsbGVib3JlLzFNCmhlbGxmaXJlLzE1CmhlbGxob2xlLzFNUwpoZWxsaW9uLzE1TVMKaGVsbGlzaC81WVAKaGVsbGlzaG5lc3MvMU0KaGVsbG8vMTRTTQpoZWxsdXZhLzUKaGVsbS8xNE1TCmhlbG1ldC8xNFNNRApoZWxtc21hbi8xTQpoZWxtc21lbi8xCmhlbG90LzFTTQpoZWxwLzE0TURSWkdTSgpoZWxwZXIvMU0KaGVscGZ1bC81VVkKaGVscGZ1bG5lc3MvMU0KaGVscGluZy8xNE0KaGVscGxlc3MvNVBZCmhlbHBsZXNzbmVzcy8xTQpoZWxwbGluZS8xU00KaGVscG1hdGUvMVNNCmhlbHZlLzE0U00KaGVtLzE0OFNNCmhlbWF0aXRlLzFNCmhlbWF0b2xvZ2ljLzUKaGVtYXRvbG9naWNhbC81CmhlbWF0b2xvZ2lzdC8xTVMKaGVtYXRvbG9neS8xTQpoZW1lLzFNCmhlbWlwbGVnaWEvMQpoZW1pc3BoZXJlLzFTTQpoZW1pc3BoZXJpYy81CmhlbWlzcGhlcmljYWwvNQpoZW1saW5lLzFTTQpoZW1sb2NrLzFTTQpoZW1tZWQvNApoZW1tZXIvMVNNCmhlbW1pbmcvNDEKaGVtb2dsb2Jpbi8xTQpoZW1vcGhpbGlhLzFNCmhlbW9waGlsaWFjLzFNUwpoZW1vcnJoYWdlLzE0TUdEUwpoZW1vcnJoYWdpYy81CmhlbW9ycmhvaWQvMU1TCmhlbW9zdGF0LzFNUwpoZW1wLzFNTgpoZW1zdGl0Y2gvMTRNRFNHCmhlbi8xNE0KaGVuY2UvNApoZW5jZWZvcnRoLwpoZW5jZWZvcndhcmQvCmhlbmNobWFuLzFNCmhlbmNobWVuLzEKaGVubmEvMTU0U01ERwpoZW5wZWNrLzQxR1NECmhlcC8xNTQKaGVwYXJpbi8xTQpoZXBhdGljLzUxCmhlcGF0aXRpcy8xTQpoZXBhdG9jeXRlLzFTCmhlcHBlci8xCmhlcHBlc3QvNQpoZXB0YWdvbi8xTVMKaGVwdGFnb25hbC81CmhlcHRhdGhsb24vMVNNCmhlcmFsZC8xNFNNREcKaGVyYWxkZWQvNFUKaGVyYWxkaWMvNQpoZXJhbGRyeS8xTQpoZXJiLzFNUwpoZXJiYWNlb3VzLzUKaGVyYmFnZS8xTQpoZXJiYWwvNTFTCmhlcmJhbGlzdC8xTVMKaGVyYmljaWRhbC81CmhlcmJpY2lkZS8xTVMKaGVyYml2b3JlLzFTTQpoZXJiaXZvcm91cy81CmhlcmN1bGVhbi81CmhlcmQvMTRNRFJaR1MKaGVyZGVyLzFNCmhlcmRzbWFuLzFNCmhlcmRzbWVuLzEKaGVyZS8xNU0KaGVyZWFib3V0L1MKaGVyZWFmdGVyLzE1U00KaGVyZWJ5LwpoZXJlZGl0YXJ5LzUxCmhlcmVkaXR5LzFNCmhlcmVpbi8KaGVyZWluYWZ0ZXIvCmhlcmVvZi8KaGVyZW9uLwpoZXJlc3kvMVNNCmhlcmV0aWMvMTVTTQpoZXJldGljYWwvNQpoZXJldG8vCmhlcmV0b2ZvcmUvCmhlcmV1bmRlci8KaGVyZXVudG8vCmhlcmV1cG9uLwpoZXJld2l0aC8KaGVyaXRhYmxlLzVJCmhlcml0YWdlLzFNUwpoZXJtYXBocm9kaXRlLzE1U00KaGVybWFwaHJvZGl0aWMvNQpoZXJtZXRpYy81Cmhlcm1ldGljYWwvNVkKaGVybWl0LzFTTQpoZXJtaXRhZ2UvMU1TCmhlcm1pdGlhbi81Cmhlcm5pYS8xU00KaGVybmlhbC81Cmhlcm5pYXRlLzRHTkRTCmhlcm5pYXRpb24vMU0KaGVyby8xTQpoZXJvZXMvMQpoZXJvaWMvNTFTCmhlcm9pY2FsbHkvCmhlcm9pY3MvMU0KaGVyb2luLzFTTQpoZXJvaW5lLzE1U00KaGVyb2lzbS8xTQpoZXJvbi8xU00KaGVycGVzLzFNCmhlcnBldG9sb2dpc3QvMVNNCmhlcnBldG9sb2d5LzFNCmhlcnJpbmcvMU1TCmhlcnJpbmdib25lLzE0TQpoZXJzZWxmLzgKaGVydHovMU0KaGVzaXRhbmNlLzFNCmhlc2l0YW5jeS8xTQpoZXNpdGFudC81WQpoZXNpdGF0ZS80RFNHTlgKaGVzaXRhdGluZy80MVVZCmhlc2l0YXRpb24vMU0KaGVzc2lhbi8xCmhldGVyby81MVNNCmhldGVyb2RveC81CmhldGVyb2RveHkvMU0KaGV0ZXJvZ2VuZWl0eS8xTQpoZXRlcm9nZW5lb3VzLzVZCmhldGVyb3NleHVhbC81MU1ZUwpoZXRlcm9zZXh1YWxpdHkvMU0KaGV1cmlzdGljLzUxTVMKaGV1cmlzdGljYWxseS8KaGV1cmlzdGljcy8xTQpoZXcvNDFaR1NEUgpoZXdlci8xTQpoZXgvNDFHTURTCmhleGFkZWNpbWFsLzE1UwpoZXhhZ29uLzFNUwpoZXhhZ29uYWwvNQpoZXhhZ3JhbS8xU00KaGV4YW1ldGVyLzFTTQpoZXkvMQpoZXlkYXkvMVNNCmhmLwpoZ3QvMQpoZ3d5LzEKaGkvMTVTRApoaWF0dXMvMU1TCmhpYmFjaGkvMU1TCmhpYmVybmF0ZS80R05EUwpoaWJlcm5hdGlvbi8xTQpoaWJlcm5hdG9yLzFNUwpoaWJpc2N1cy8xTVMKaGljY291Z2gvMTRERwpoaWNjb3VnaHMvMQpoaWNjdXAvMTRHU01ECmhpY2svMTRNUwpoaWNrZXkvMVNNCmhpY2tvcnkvMTVTTQpoaWQvNApoaWRkZW4vNDUKaGlkZS80MU1aR0pEUlMKaGlkZWF3YXkvMTVTTQpoaWRlYm91bmQvNQpoaWRlb3VzLzVZUApoaWRlb3VzbmVzcy8xTQpoaWRlb3V0LzFNUwpoaWRlci8xTQpoaWRpbmcvNDFNCmhpZS80UwpoaWVpbmcvNApoaWVyYXJjaGljLzUKaGllcmFyY2hpY2FsLzVZCmhpZXJhcmNoeS8xU00KaGllcm9nbHlwaC8xNE0KaGllcm9nbHlwaGljLzE1TVMKaGllcm9nbHlwaHMvMTQKaGlnaC81MTRNUllaVFAKaGlnaGJhbGwvMTRTTQpoaWdoYm9ybi81CmhpZ2hib3kvMU1TCmhpZ2hicm93LzUxU00KaGlnaGNoYWlyLzFNUwpoaWdoZmFsdXRpbi81MQpoaWdoaGFuZGVkLzVQWQpoaWdoaGFuZGVkbmVzcy8xTQpoaWdobGFuZC8xTVJaUwpoaWdobGFuZGVyLzFNCmhpZ2hsaWdodC8xNFNNRFJaRwpoaWdobGlnaHRlci8xTQpoaWdobmVzcy8xTQpoaWdocm9hZC8xTVMKaGlnaHMvMTQKaGlnaHRhaWwvNERTRwpoaWdod2F5LzE0TVMKaGlnaHdheW1hbi8xTQpoaWdod2F5bWVuLzEKaGlqYWIvMVNNCmhpamFjay80MVNKWkdNRFIKaGlqYWNrZXIvMU0KaGlqYWNraW5nLzQxTQpoaWtlLzE0TVpHRFJTCmhpa2VyLzFNCmhpa2luZy80MU0KaGlsYXJpb3VzLzVQWQpoaWxhcmlvdXNuZXNzLzFNCmhpbGFyaXR5LzFNCmhpbGwvMTRNUwpoaWxsYmlsbHkvMTRTTQpoaWxsaW5lc3MvMU0KaGlsbG9jay8xTVMKaGlsbHNpZGUvMVNNCmhpbGx0b3AvMU1TCmhpbGx5LzVQUlQKaGlsdC8xNE1TCmhpbS84MVMKaGltc2VsZi84CmhpbmQvNTFNUlpTCmhpbmRlci80NTFHRApoaW5kZXJlZC80VQpoaW5kbW9zdC81CmhpbmRxdWFydGVyLzFNUwpoaW5kcmFuY2UvMVNNCmhpbmRzaWdodC8xTQpoaW5nZSdzCmhpbmdlLzE0VURTRwpoaW50LzE0TURSWkdTCmhpbnRlci8xTQpoaW50ZXJsYW5kLzFTTQpoaXAvMTQ1U1BNCmhpcGJhdGgKaGlwYmF0aHMKaGlwYm9uZS8xTVMKaGlwaHVnZ2Vycy8xCmhpcG5lc3MvMU0KaGlwcGVkLzU0CmhpcHBlci8xNQpoaXBwZXN0LzUKaGlwcGllLzE1U00KaGlwcGluZy80CmhpcHBvLzFTTQpoaXBwb2NhbXB1cy8xCmhpcHBvZHJvbWUvMTRTTQpoaXBwb3BvdGFtdXMvMU1TCmhpcHB5LzE1CmhpcHN0ZXIvMTRNUwpoaXJhZ2FuYS8xCmhpcmUncwpoaXJlLzE0QUdEUwpoaXJlbGluZy8xTVMKaGlyc3V0ZS81MVAKaGlyc3V0ZW5lc3MvMU0KaGlzcy8xNE1EU0cKaGlzdC8xNApoaXN0YW1pbmUvMU1TCmhpc3RvZ3JhbS8xNE1TCmhpc3RvbG9naXN0LzFTTQpoaXN0b2xvZ3kvMU0KaGlzdG9wYXRob2xvZ3kvMQpoaXN0b3JpYW4vMU1TCmhpc3RvcmljLzUxCmhpc3RvcmljYWwvNTFZCmhpc3RvcmljaXR5LzFNCmhpc3RvcmlvZ3JhcGhlci8xTVMKaGlzdG9yaW9ncmFwaHkvMU0KaGlzdG9yeS8xNFNNCmhpc3RyaW9uaWMvNVMKaGlzdHJpb25pY2FsbHkvCmhpc3RyaW9uaWNzLzFNCmhpdC80MTU4U00KaGl0Y2gncwpoaXRjaC8xNFVEU0cKaGl0Y2hlci8xTVMKaGl0Y2hoaWtlLzQxRFJTTVpHCmhpdGNoaGlrZXIvMU0KaGl0aGVyLzUKaGl0aGVydG8vCmhpdHRlci8xU00KaGl0dGluZy8xNApoaXZlLzE0TUdEUwpoaXZlbWluZC8xU00KaGl5YS8KaG1tLzQKaG8vMTRTTURSWVoKaG9hZ2llLzFNUwpob2FyZC8xNFNaR01EUkoKaG9hcmRlci8xTQpob2FyZGluZy8xNE0KaG9hcmZyb3N0LzFNCmhvYXJpbmVzcy8xTQpob2Fyc2UvNTQxWVRSUApob2Fyc2VuZXNzLzFNCmhvYXJ5LzVUUlAKaG9heC80MU1EUlNaRwpob2F4ZXIvMU0KaG9iLzE0U00KaG9iYml0LzFTCmhvYmJsZS8xNE1aR0RSUwpob2JibGVyLzFNCmhvYmJ5LzFTTQpob2JieWhvcnNlLzFNUwpob2JieWlzdC8xU00KaG9iZ29ibGluLzFNUwpob2JuYWlsLzE0U0dNRApob2Jub2IvMTQ1Uwpob2Jub2JiZWQvNApob2Jub2JiaW5nLzQxCmhvYm8vMTRNUwpob2MKaG9jay8xNE1EU0cKaG9ja2V5LzFNCmhvY2tzaG9wLzFNUwpob2QvNDFTTQpob2RnZXBvZGdlLzE0U00KaG9lLzE0U00KaG9lY2FrZS8xU00KaG9lZG93bi8xNFNNCmhvZWluZy80MQpob2VyLzFNCmhvZy8xNFNNCmhvZ2FuLzFTTQpob2diYWNrLzFTTQpob2dnZWQvNDUKaG9nZ2luZy80MTUKaG9nZ2lzaC81WQpob2dzaGVhZC8xU00KaG9ndGllLzQxRFMKaG9ndHlpbmcvNApob2d3YXNoLzFNCmhvaWNrLzE0U0dECmhvaXN0LzQxU0dNRApob2tlLzE0R0RTCmhva2V5LzUKaG9raWVyLzUKaG9raWVzdC81Cmhva3VtLzFNCmhvbGQvNDE1TVJKU1pHCmhvbGRhbGwvMVMKaG9sZGVyLzFNCmhvbGRpbmcvMTRNCmhvbGRvdXQvMVNNCmhvbGRvdmVyLzFTTQpob2xkdXAvMU1TCmhvbGUvMTQ1TUdEUwpob2xleS81CmhvbGlkYXkvMTRTTURHCmhvbGlkYXltYWtlci8xUwpob2xpbmVzcy8xVU0KaG9saXNtLzEKaG9saXN0aWMvNQpob2xpc3RpY2FsbHkvCmhvbGxlci8xNDVNREdTCmhvbGxvdy8xNDVNRFJZUFNURwpob2xsb3duZXNzLzFNCmhvbGx5LzFTTQpob2xseWhvY2svMU1TCmhvbG1pdW0vMU0KaG9sb2NhdXN0LzE0U00KaG9sb2dyYW0vMU1TCmhvbG9ncmFwaC8xNE0KaG9sb2dyYXBoaWMvNQpob2xvZ3JhcGhzLzEKaG9sb2dyYXBoeS8xTQpob2xzLzEKaG9sc3Rlci8xNFNNREcKaG9seS81MVVSUFQKaG9tYWdlLzE0TVMKaG9tYnJlLzFNUwpob21idXJnLzFTTQpob21lLzE0NU1ZWkdEUlMKaG9tZWJvZHkvMVNNCmhvbWVib3kvMThTTQpob21lY29taW5nLzFTTQpob21lZ3Jvd24vNQpob21lbGFuZC8xTVMKaG9tZWxlc3MvNTFNUApob21lbGVzc25lc3MvMU0KaG9tZWxpa2UvNQpob21lbGluZXNzLzFNCmhvbWVseS81UFJUCmhvbWVtYWRlLzUKaG9tZW1ha2VyLzFTTQpob21lbWFraW5nLzFNCmhvbWVvcGF0aC8xTQpob21lb3BhdGhpYy81MQpob21lb3BhdGhzLzEKaG9tZW9wYXRoeS8xTQpob21lb3N0YXNpcy8xTQpob21lb3N0YXRpYy81CmhvbWVvd25lci8xTVMKaG9tZXBhZ2UvMU1TCmhvbWVyLzE0R01ECmhvbWVyb29tLzFNUwpob21lc2Nob29saW5nLzFNCmhvbWVzaWNrLzVQCmhvbWVzaWNrbmVzcy8xTQpob21lc3B1bi81MU0KaG9tZXN0ZWFkLzE0U01EUlpHCmhvbWVzdGVhZGVyLzFNCmhvbWVzdHJldGNoLzFNUwpob21ldG93bi8xTVMKaG9tZXdhcmQvNVMKaG9tZXdvcmsvMU1SWkcKaG9tZXdyZWNrZXIvMVNNCmhvbWV5LzE1U01QCmhvbWV5bmVzcy8xTQpob21pY2lkYWwvNQpob21pY2lkZS8xTVMKaG9taWVyLzUKaG9taWVzdC81CmhvbWlsZXRpYy81CmhvbWlseS8xU00KaG9taW5pZC8xNVNNCmhvbWlub2lkLzFTCmhvbWlueS8xTQpob21vLzE1TVMKaG9tb2Vyb3RpYy81CmhvbW9nZW5laXR5LzFNCmhvbW9nZW5lb3VzLzVZCmhvbW9nZW5pemF0aW9uLzFNCmhvbW9nZW5pemUvNERTRwpob21vZ3JhcGgvMU0KaG9tb2dyYXBocy8xCmhvbW9sb2dvdXMvNQpob21vbG9neS8xCmhvbW9ueW0vMVNNCmhvbW9waG9iaWEvMU0KaG9tb3Bob2JpYy81MQpob21vcGhvbmUvMU1TCmhvbW9zZXh1YWwvNTFTTQpob21vc2V4dWFsaXR5LzFNCmhvbi8xU1pUR01EUgpob25jaG8vMTRNUwpob25lLzE0TVMKaG9uZXIvMTRNCmhvbmVzdC81NEVZVApob25lc3Rlci81CmhvbmVzdHkvMUVNCmhvbmV5LzE1NFNHTUQKaG9uZXliZWUvMVNNCmhvbmV5Y29tYi8xNE1EU0cKaG9uZXlkZXcvMTVTTQpob25leWxvY3VzdC8xTQpob25leW1vb24vMTRaR01EUlMKaG9uZXltb29uZXIvMU0KaG9uZXlwb3QvMVMKaG9uZXlzdWNrbGUvMVNNCmhvbmsvNDFNRFJTWkcKaG9ua2VyLzFNCmhvbmt5LzFTTQpob25vci8xNEVTR01EQgpob25vcmFibGVuZXNzLzFNCmhvbm9yYWJseS9FCmhvbm9yYXJpbHkvCmhvbm9yYXJpdW0vMU1TCmhvbm9yYXJ5LzUxCmhvbm9yZWUvMVNNCmhvbm9yZXIvMVNNCmhvbm9yaWZpYy8xNU1TCmhvb2NoLzFNCmhvb2QvMTQ1TURTRwpob29kaWUvMU1TCmhvb2RsdW0vMVNNCmhvb2Rvby8xNE1EU0cKaG9vZHdpbmsvNDFER1MKaG9vZXkvMU0KaG9vZi8xNE1EUlNaRwpob29rJ3MKaG9vay8xNFVEU0cKaG9va2FoLzFNCmhvb2thaHMvMQpob29rZXIvMU1TCmhvb2t1cC8xTVMKaG9va3dvcm0vMU1TCmhvb2t5LzE1TQpob29saWdhbi8xTVMKaG9vbGlnYW5pc20vMU0KaG9vcC8xNE1EU0cKaG9vcGxhLzFNCmhvb3JheS8xNApob29zZWdvdy8xU00KaG9vdC8xNE1EUlNaRwpob290ZW5hbm55LzFTTQpob290ZXIvMU0KaG9vdmVyLzE0RFNHCmhvb3Zlcy8xNApob3AvMTRTR01ECmhvcGUvNDFNUwpob3BlZnVsLzUxUFNNWQpob3BlZnVsbmVzcy8xTQpob3BlbGVzcy81WVAKaG9wZWxlc3NuZXNzLzFNCmhvcHBlZC80NQpob3BwZXIvMU1TCmhvcHBpbmcvMTQ1CmhvcHNjb3RjaC8xNE1EU0cKaG9yYS8xTVMKaG9yZGUvMTREU01HCmhvcmVob3VuZC8xU00KaG9yaXpvbi8xU00KaG9yaXpvbnRhbC81MVNNWQpob3Jtb25hbC81Cmhvcm1vbmUvMTRTTQpob3JuLzE0TURTCmhvcm5iZWFtLzEKaG9ybmJsZW5kZS8xTQpob3JuZXQvMU1TCmhvcm5sZXNzLzUKaG9ybmxpa2UvNQpob3JucGlwZS8xNE1TCmhvcm55LzVUUgpob3JvbG9naWMvNQpob3JvbG9naWNhbC81Cmhvcm9sb2dpc3QvMU1TCmhvcm9sb2d5LzFNCmhvcm9zY29wZS8xU00KaG9ycmVuZG91cy81WQpob3JyaWJsZS8xNVAKaG9ycmlibGVuZXNzLzFNCmhvcnJpYmx5Lwpob3JyaWQvNVkKaG9ycmlmaWMvNQpob3JyaWZpY2FsbHkvCmhvcnJpZnkvNERTRwpob3JyaWZ5aW5nLzQ1WQpob3Jyb3IvMU1TCmhvcnNlJ3MKaG9yc2UvMTRVRFNHCmhvcnNlYmFjay8xTQpob3JzZWJveC8xUwpob3JzZWZsZXNoLzE1TQpob3JzZWZseS8xU00KaG9yc2VoYWlyLzFNCmhvcnNlaGlkZS8xTQpob3JzZWxhdWdoLzFNCmhvcnNlbGF1Z2hzLzEKaG9yc2VsZXNzLzUKaG9yc2VtYW4vMU0KaG9yc2VtYW5zaGlwLzFNCmhvcnNlbWVuLzEKaG9yc2VwbGF5LzE0TQpob3JzZXBvd2VyLzFNCmhvcnNlcmFkaXNoLzFNUwpob3JzZXNoaXQvMSE2CmhvcnNlc2hvZS8xNERTTQpob3JzZXNob2VpbmcvNApob3JzZXRhaWwvMVNNCmhvcnNldHJhZGluZy8xNApob3JzZXdoaXAvMTRTTQpob3JzZXdoaXBwZWQvNApob3JzZXdoaXBwaW5nLzQxCmhvcnNld29tYW4vMU0KaG9yc2V3b21lbi8xCmhvcnNleS81MQpob3JzaWVyLzUKaG9yc2llc3QvNQpob3J0YXRvcnkvNTEKaG9ydGljdWx0dXJhbC81CmhvcnRpY3VsdHVyYWxpc3QvMVMKaG9ydGljdWx0dXJlLzFNCmhvcnRpY3VsdHVyaXN0LzFNUwpob3Nhbm5hLzE0U00KaG9zZS8xNE1HRFMKaG9zZXBpcGUvMTRTCmhvc2llci8xTVMKaG9zaWVyeS8xTQpob3NwLzEKaG9zcGhvbGlwYXNlCmhvc3BpY2UvMU1TCmhvc3BpdGFibGUvNUkKaG9zcGl0YWJseS9JCmhvc3BpdGFsLzE1U00KaG9zcGl0YWxpdHkvMU0KaG9zcGl0YWxpemF0aW9uLzFTTQpob3NwaXRhbGl6ZS80RFNHCmhvc3QvMTRNRFNHCmhvc3RhZ2UvMTRNUwpob3N0ZWwvMTRaR01EUlMKaG9zdGVsZXIvMU0KaG9zdGVscnkvMVNNCmhvc3Rlc3MvMTRNRFNHCmhvc3RpbGUvNTFNWVMKaG9zdGlsaXRpZXMvMU0KaG9zdGlsaXR5LzFTTQpob3N0bGVyLzFNUwpob3QvNTQxU1lQCmhvdGJlZC8xTVMKaG90Ymxvb2RlZC81CmhvdGJveC8xNE1TCmhvdGNha2UvMVNNCmhvdGVsLzFTTQpob3RlbGllci8xTVMKaG90Zm9vdC8xNTRNREdTCmhvdGhlYWQvMURTTQpob3RoZWFkZWQvNVlQCmhvdGhlYWRlZG5lc3MvMU0KaG90aG91c2UvMTRTTQpob3RrZXkvMTRTCmhvdGxpbmsvMVMKaG90bmVzcy8xTQpob3RwbGF0ZS8xU00KaG90cG90LzFTCmhvdHMvMTRNCmhvdHNob3QvNTE0TVMKaG90dGVkLzQKaG90dGVyLzUxNApob3R0ZXN0LzUKaG90dGllLzFTCmhvdHRpbmcvMTQKaG91bmQvMTRTR01ECmhvdXIvMU1ZUwpob3VyZ2xhc3MvMU1TCmhvdXJpLzFTTQpob3VzZSdzCmhvdXNlLzE0QURTRwpob3VzZWJvYXQvMVNNCmhvdXNlYm91bmQvNQpob3VzZWJveS8xU00KaG91c2VicmVhay80UlNaRwpob3VzZWJyZWFrZXIvMU0KaG91c2VicmVha2luZy8xNE0KaG91c2Vicm9rZS80CmhvdXNlYnJva2VuLzUKaG91c2VjbGVhbi80RFNHCmhvdXNlY2xlYW5pbmcvMTRNCmhvdXNlY29hdC8xU00KaG91c2VmbHkvMVNNCmhvdXNlZnVsLzFTTQpob3VzZWhvbGQvMTVTTVJaCmhvdXNlaG9sZGVyLzFNCmhvdXNlaHVzYmFuZC8xU00KaG91c2VrZWVwZXIvMU1TCmhvdXNla2VlcGluZy8xTQpob3VzZWxpZ2h0cy8xTQpob3VzZW1haWQvMTRTTQpob3VzZW1hbi8xTQpob3VzZW1hc3Rlci8xUwpob3VzZW1hdGUvMVMKaG91c2VtZW4vMQpob3VzZW1pc3RyZXNzLzFTCmhvdXNlbW90aGVyLzFTTQpob3VzZXBhcmVudC8xU00KaG91c2VwbGFudC8xTVMKaG91c2Vwcm91ZC81CmhvdXNlcm9vbS8xCmhvdXNldG9wLzFTTQpob3VzZXdhcmVzLzFNCmhvdXNld2FybWluZy8xU00KaG91c2V3aWZlLzE0TVkKaG91c2V3aXZlcy8xCmhvdXNld29yay8xTQpob3VzaW5nLzE0TVMKaG92ZS80CmhvdmVsLzE0U00KaG92ZXIvNDFTR0QKaG92ZXJib2FyZC8xNE1TCmhvdmVyY3JhZnQvMU1TCmhvdydkLwpob3cncmUvCmhvdy83MVNNfgpob3diZWl0LzcKaG93ZGFoLzFNCmhvd2RhaHMvMQpob3dkeS80MQpob3dldmVyLzcKaG93aXR6ZXIvMTRTTQpob3dsLzE0TURSU1pHCmhvd2xlci8xTQpob3dzb2V2ZXIvCmhveWRlbi8xNTRNUwpob3lkZW5pc2gvNQpocC8xCmhyLzFTCmh0LzEKaHVhcmFjaGUvMVNNCmh1Yi8xMlNNCmh1YmJ1Yi8xNFNNCmh1YmJ5LzE1U00KaHViY2FwLzFTTQpodWJyaXMvMU0KaHVja2xlYmVycnkvMTRTTQpodWNrc3Rlci8xNFNHTUQKaHVja3N0ZXJpc20vMU0KaHVkZGxlLzE0NURTTUcKaHVlLzFEU00KaHVmZi8xNE1EU0cKaHVmZmlseS8KaHVmZmluZXNzLzFNCmh1ZmZ5LzVQUlQKaHVnLzE0U1RNUgpodWdlLzVZUApodWdlbmVzcy8xTQpodWdnZWQvNApodWdnaW5nLzQxCmh1aC8KaHVsYS8xNE1TCmh1bGsvMTRNU0cKaHVsbC8xNE1EUlNaRwpodWxsYWJhbG9vLzE0U00KaHVsbGVyLzFNCmh1bS8xNFNNCmh1bWFuLzUxNFNNUllUUApodW1hbmUvNVBZCmh1bWFuZW5lc3MvMU0KaHVtYW5pc20vMU0KaHVtYW5pc3QvMTVTTQpodW1hbmlzdGljLzUKaHVtYW5pdGFyaWFuLzUxTVMKaHVtYW5pdGFyaWFuaXNtLzFNCmh1bWFuaXRpZXMvMU0KaHVtYW5pdHkvMUlTTQpodW1hbml6YXRpb24vMUNNCmh1bWFuaXplLzRDRFNHCmh1bWFuaXplci8xU00KaHVtYW5raW5kLzFNCmh1bWFubmVzcy8xTQpodW1hbm9pZC81MVNNCmh1bWJsZS81MTREUlNaVEdKUApodW1ibGVuZXNzLzFNCmh1bWJsZXIvMTVNCmh1bWJseS8KaHVtYnVnLzE0U00KaHVtYnVnZ2VkLzQKaHVtYnVnZ2luZy8xNApodW1kaW5nZXIvMU1TCmh1bWRydW0vNTFNCmh1bWVyYWwvNTEKaHVtZXJpLzEKaHVtZXJ1cy8xTQpodW1pZC81WQpodW1pZGlmaWNhdGlvbi8xTQpodW1pZGlmaWVyLzFDTQpodW1pZGlmeS80Q1pHRFJTCmh1bWlkaXR5LzFNCmh1bWlkb3IvMVNNCmh1bWlsaWF0ZS80RFNHTlgKaHVtaWxpYXRpbmcvNTQxWQpodW1pbGlhdGlvbi8xTQpodW1pbGl0eS8xTQpodW1tZWQvNApodW1tZXIvMVNNCmh1bW1pbmcvNDUxCmh1bW1pbmdiaXJkLzFTTQpodW1tb2NrLzFTTQpodW1tb2NreS81Cmh1bW11cy8xTQpodW1vbmdvdXMvNQpodW1vci8xNFNNREcKaHVtb3Jlc3F1ZS8xCmh1bW9yaXN0LzFNUwpodW1vcmxlc3MvNVlQCmh1bW9ybGVzc25lc3MvMU0KaHVtb3JvdXMvNVBZCmh1bW9yb3VzbmVzcy8xTQpodW1wLzE0TURTRwpodW1wYmFjay8xNE1EUwpodW1waC80REcKaHVtcGhzLzQKaHVtdXMvMU0KaHVuY2gvMTRNRFNHCmh1bmNoYmFjay8xU01ECmh1bmRyZWQvMVNNSApodW5kcmVkZm9sZC81NApodW5kcmVkdGgvNTFNCmh1bmRyZWR0aHMvMQpodW5kcmVkd2VpZ2h0LzFTTQpodW5nLzQ1Cmh1bmdlci8xNFNNREcKaHVuZ292ZXIvNQpodW5ncmlseS8KaHVuZ3JpbmVzcy8xTQpodW5ncnkvNVBSVApodW5rLzFNUlNaCmh1bmtlci80MURHCmh1bmt5LzUxUlQKaHVudC80MU1EUlNaRwpodW50ZXIvMU0KaHVudGluZy8xNE0KaHVudHJlc3MvMU1TCmh1bnRzbWFuLzFNCmh1bnRzbWVuLzEKaHVyZGxlLzE0RFJTTVpHCmh1cmRsZXIvMU0KaHVyZGxpbmcvMTRNCmh1cmwvNDFNRFJTWkcKaHVybGVyLzFNCmh1cmxpbmcvMTRNCmh1cnJhaC8xNEdNRApodXJyYWhzLzE0Cmh1cnJpY2FuZS8xNE1TCmh1cnJpZWQvNTRVWQpodXJyeS8xNERTTUcKaHVydC80NTFNU0cKaHVydGZ1bC81WVAKaHVydGZ1bG5lc3MvMU0KaHVydGxlLzQxRFNHCmh1c2JhbmQvMTRHTURTCmh1c2JhbmRtYW4vMU0KaHVzYmFuZG1lbi8xCmh1c2JhbmRyeS8xTQpodXNoLzQxTURTRwpodXNrLzE0TURSU1pHCmh1c2tlci8xTQpodXNraWx5LwpodXNraW5lc3MvMU0KaHVza3kvNTFQUlNNVApodXNzYXIvMVNNCmh1c3N5LzFTTQpodXN0aW5ncy8xTQpodXN0bGUvNDFEUlNNWkcKaHVzdGxlci8xTQpodXQvMTRTTQpodXRjaC8xNE1TCmh1enphaC8xNE1ERwpodXp6YWhzLzEKaHd5LzEKaHlhY2ludGgvMU0KaHlhY2ludGhzLzEKaHlicmlkLzE1U00KaHlicmlkaXNtLzFNCmh5YnJpZGl6YXRpb24vMU0KaHlicmlkaXplLzREU0cKaHlkcmEvMVNNCmh5ZHJhbmdlYS8xU00KaHlkcmFudC8xTVMKaHlkcmF0ZSdzCmh5ZHJhdGUvMTRDR05EUwpoeWRyYXRpb24vMUNNCmh5ZHJhdWxpYy81NFMKaHlkcmF1bGljYWxseS8KaHlkcmF1bGljcy8xTQpoeWRyby81MU0KaHlkcm9jYXJib24vMU1TCmh5ZHJvY2VwaGFsdXMvMU0KaHlkcm9jaGxvcmlkZS8xCmh5ZHJvY29ydGlzb25lLzEKaHlkcm9keW5hbWljLzVTCmh5ZHJvZHluYW1pY3MvMU0KaHlkcm9lbGVjdHJpYy81Cmh5ZHJvZWxlY3RyaWNhbGx5LwpoeWRyb2VsZWN0cmljaXR5LzFNCmh5ZHJvZm9pbC8xNE1TCmh5ZHJvZ2VuLzFNCmh5ZHJvZ2VuYXRlLzRDR0RTCmh5ZHJvZ2VuYXRpb24vMU0KaHlkcm9nZW5vdXMvNQpoeWRyb2xvZ2lzdC8xTVMKaHlkcm9sb2d5LzFNCmh5ZHJvbHlzZXMvMTQKaHlkcm9seXNpcy8xTQpoeWRyb2x5emUvNERTRwpoeWRyb21ldGVyLzFTTQpoeWRyb21ldHJ5LzFNCmh5ZHJvcGhpbGljLzUKaHlkcm9waG9iaWEvMU0KaHlkcm9waG9iaWMvNQpoeWRyb3Bob25lLzFTTQpoeWRyb3BsYW5lLzQxR0RTTQpoeWRyb3BvbmljLzVTCmh5ZHJvcG9uaWNhbGx5LwpoeWRyb3Bvbmljcy8xTQpoeWRyb3NwaGVyZS8xTQpoeWRyb3RoZXJhcHkvMU0KaHlkcm90aGVybWFsLzUKaHlkcm91cy81Cmh5ZHJveGlkZS8xU00KaHllbmEvMVNNCmh5Z2llbmUvMU0KaHlnaWVuaWMvNVUKaHlnaWVuaWNhbGx5LwpoeWdpZW5pc3QvMU1TCmh5Z3JvbWV0ZXIvMVNNCmh5aW5nLzQxCmh5bWVuLzFTTQpoeW1lbmVhbC81MQpoeW1uLzE0TURTRwpoeW1uYWwvMTVNUwpoeW1uYm9vay8xU00KaHlwZS8xNDVNR0RSUwpoeXBlcmFjdGl2ZS81Cmh5cGVyYWN0aXZpdHkvMU0KaHlwZXJib2xhLzFTTQpoeXBlcmJvbGUvMU0KaHlwZXJib2xpYy81Cmh5cGVyY3JpdGljYWwvNVkKaHlwZXJjdWJlLzEKaHlwZXJnbHljZW1pYS8xTQpoeXBlcmluZmxhdGlvbi8xCmh5cGVybGluay8xNEdTTUQKaHlwZXJtYXJrZXQvMVMKaHlwZXJtZWRpYS8xTQpoeXBlcnBhcmF0aHlyb2lkaXNtLzEKaHlwZXJwbGFuZS8xCmh5cGVyc2Vuc2l0aXZlLzVQCmh5cGVyc2Vuc2l0aXZlbmVzcy8xTQpoeXBlcnNlbnNpdGl2aXR5LzFTTQpoeXBlcnNwYWNlLzE0UwpoeXBlcnRlbnNpb24vMU0KaHlwZXJ0ZW5zaXZlLzUxU00KaHlwZXJ0ZXh0LzFNCmh5cGVydGh5cm9pZC81TQpoeXBlcnRoeXJvaWRpc20vMU0KaHlwZXJ0cm9waHkvMTREU01HCmh5cGVydmVudGlsYXRlLzRHTkRTCmh5cGVydmVudGlsYXRpb24vMU0KaHlwZXJ2aXNvci8xTVMKaHlwaGVuLzE0N01EU0cKaHlwaGVuYXRlLzQxWERTTUdOCmh5cGhlbmF0aW9uLzFNCmh5cG5vc2VzLzEKaHlwbm9zaXMvMU0KaHlwbm90aGVyYXBpc3QvMVMKaHlwbm90aGVyYXB5LzFNCmh5cG5vdGljLzUxU00KaHlwbm90aWNhbGx5LwpoeXBub3Rpc20vMU0KaHlwbm90aXN0LzFNUwpoeXBub3RpemUvNEdEUwpoeXBvLzE0TVMKaHlwb2FsbGVyZ2VuaWMvNQpoeXBvY2hvbmRyaWEvMU0KaHlwb2Nob25kcmlhYy81MVNNCmh5cG9jcmlzeS8xU00KaHlwb2NyaXRlLzFNUwpoeXBvY3JpdGljYWwvNVkKaHlwb2Rlcm1pYy81MU1TCmh5cG9nbHljZW1pYS8xTQpoeXBvZ2x5Y2VtaWMvNTFTTQpoeXBvdGVudXNlLzFNUwpoeXBvdGhhbGFtaS8xCmh5cG90aGFsYW11cy8xTQpoeXBvdGhlcm1pYS8xTQpoeXBvdGhlc2VzLzEKaHlwb3RoZXNpcy8xTQpoeXBvdGhlc2l6ZS80RFNHCmh5cG90aGV0aWNhbC81MVkKaHlwb3RoeXJvaWQvNU0KaHlwb3RoeXJvaWRpc20vMU0KaHlzc29wLzFNCmh5c3RlcmVjdG9teS8xU00KaHlzdGVyZXNpcy8xCmh5c3RlcmlhLzFNCmh5c3RlcmljLzUxU00KaHlzdGVyaWNhbC81WQpoeXN0ZXJpY3MvMU0KaS8xOFVTCmlzLzQ4MTMKaU9TLzJNCmlQYWQvMU0KaVBob25lLzFNCmlQb2QvMU0KaVR1bmVzL00KaWFtYi8xTVMKaWFtYmkvMQppYW1iaWMvNTFTTQppYW1idXMvMU1TCmliZXgvMU1TCmliaWQvCmliaWRlbQppYmlzLzFNUwppYnVwcm9mZW4vMTRNCmljZSdzCmljZS8xNENEU0cKaWNlYmVyZy8xU00KaWNlYm9hdC8xNFNNCmljZWJvdW5kLzUKaWNlYm94LzE1TVMKaWNlYnJlYWtlci8xU00KaWNlY2FwLzFTTQppY2VtYW4vMU0KaWNlbWVuLzEKaWNodGh5b2xvZ2lzdC8xTVMKaWNodGh5b2xvZ3kvMU0KaWNpY2xlLzFTTQppY2lseS8KaWNpbmVzcy8xTQppY2luZy8xNFNNCmlja3kvNVJUCmljb24vMU1TCmljb25pYy81Cmljb25vY2xhc20vMU0KaWNvbm9jbGFzdC8xU00KaWNvbm9jbGFzdGljLzUKaWNvbm9ncmFwaHkvMU0KaWN0dXMvMU0KaWN5LzVUUFIKaWQvMThTTVkKaWRlYS8xTVMKaWRlYWwvNTFTTVkKaWRlYWxpc20vMU0KaWRlYWxpc3QvMVNNCmlkZWFsaXN0aWMvNQppZGVhbGlzdGljYWxseS8KaWRlYWxpemF0aW9uLzFNUwppZGVhbGl6ZS80RFNHCmlkZW0vOAppZGVtcG90ZW50LzUxCmlkZW50aWNhbC81MVkKaWRlbnRpZmlhYmxlLzVVCmlkZW50aWZpY2F0aW9uLzFNCmlkZW50aWZpZWQvNFUKaWRlbnRpZnkvNFpHTkRSU1gKaWRlbnRpa2l0LzE1UwppZGVudGl0eS8xU00KaWRlb2dyYW0vMVNNCmlkZW9ncmFwaC8xTQppZGVvZ3JhcGhzLzEKaWRlb2xvZ2ljYWwvNVkKaWRlb2xvZ2lzdC8xU00KaWRlb2xvZ3VlLzFNUwppZGVvbG9neS8xU00KaWRlcy8xTQppZGlvY3kvMVNNCmlkaW9tLzFTTQppZGlvbWF0aWMvNTFVCmlkaW9tYXRpY2FsbHkvCmlkaW9wYXRoaWMvNQppZGlvc3luY3Jhc3kvMVNNCmlkaW9zeW5jcmF0aWMvNQppZGlvc3luY3JhdGljYWxseS8KaWRpb3QvMTVTTQppZGlvdGljLzUKaWRpb3RpY2FsbHkvCmlkbGUvNTQxTVpUR0RSU1AKaWRsZW5lc3MvMU0KaWRsZXIvMTVNCmlkb2wvMU1TCmlkb2xhdGVyLzFTTQppZG9sYXRyZXNzLzFNUwppZG9sYXRyb3VzLzUKaWRvbGF0cnkvMU0KaWRvbGl6YXRpb24vMU0KaWRvbGl6ZS80R0RTCmlkeWxsLzFTTQppZHlsbGljLzUxCmlkeWxsaWNhbGx5LwppZi83MVNNCmlmZmluZXNzLzFNCmlmZnkvNVJUUAppZ2xvby8xU00KaWduZW91cy81Cmlnbml0YWJsZS81Cmlnbml0ZS80QUdEUwppZ25pdGlvbi8xTVMKaWdub2JsZS81NAppZ25vYmx5LwppZ25vbWluaW91cy81WQppZ25vbWlueS8xU00KaWdub3JhbXVzLzE0TVMKaWdub3JhbmNlLzFNCmlnbm9yYW50LzUxWQppZ25vcmUvNEdEUwppZ3VhbmEvMU1TCmlpLwppaWkvCmlsZWEvMQppbGVpdGlzLzFNCmlsZXVtLzFNCmlsaWEvMQppbGl1bS8xTQppbGsvNTFTTQppbGwvNTE0U01QCmlsbGVnYWwvNTFNWVMKaWxsZWdhbGl0eS8xU00KaWxsZWdpYmlsaXR5LzFNCmlsbGVnaWJsZS81CmlsbGVnaWJseS8KaWxsZWdpdGltYWN5LzFNCmlsbGVnaXRpbWF0ZS81MTRZCmlsbGliZXJhbC81MVkKaWxsaWJlcmFsaXR5LzFNCmlsbGljaXQvNTFZUAppbGxpY2l0bmVzcy8xTQppbGxpbWl0YWJsZS81CmlsbGl0ZXJhY3kvMU0KaWxsaXRlcmF0ZS81MU1ZUwppbGxuZXNzLzFNUwppbGxvZ2ljYWwvNVkKaWxsb2dpY2FsaXR5LzFNCmlsbHVtaW5hdGUvNDE1R05YRFMKaWxsdW1pbmF0aW5nLzU0WQppbGx1bWluYXRpb24vMU0KaWxsdW1pbmUvNERTQkcKaWxsdXMvVgppbGx1c2lvbi8xRU1TCmlsbHVzaW9uaXN0LzFTTQppbGx1c29yeS81CmlsbHVzdHJhdGUvNEdOVlhEUwppbGx1c3RyYXRpb24vMU0KaWxsdXN0cmF0aXZlLzVZCmlsbHVzdHJhdG9yLzFTTQppbGx1c3RyaW91cy81UFkKaWxsdXN0cmlvdXNuZXNzLzFNCmltYWdlLzE0RFNNRwppbWFnZXJ5LzFNCmltYWdpbmFibGUvNVUKaW1hZ2luYWJseS9VCmltYWdpbmFsLzUKaW1hZ2luYXJ5LzUxCmltYWdpbmF0aW9uLzFNUwppbWFnaW5hdGl2ZS81VVkKaW1hZ2luZS80MURTQkpHCmltYWdvLzFNCmltYWdvZXMvMQppbWFtLzFNUwppbWJhbGFuY2UvMURTTQppbWJlY2lsZS8xNU1TCmltYmVjaWxpYy81CmltYmVjaWxpdHkvMVNNCmltYmliZS80WkdEUlMKaW1iaWJlci8xTQppbWJyaWNhdGlvbi8xTQppbWJyb2dsaW8vMVNNCmltYnVlLzREU0cKaW1pdGFibGUvNUkKaW1pdGF0ZS80RFNHTlZYCmltaXRhdGlvbi8xTQppbWl0YXRpdmUvNVBZCmltaXRhdGl2ZW5lc3MvMU0KaW1pdGF0b3IvMVNNCmltbWFjdWxhdGUvNVBZCmltbWFjdWxhdGVuZXNzLzFNCmltbWFuZW5jZS8xTQppbW1hbmVuY3kvMU0KaW1tYW5lbnQvNVkKaW1tYXRlcmlhbC81MVlQCmltbWF0ZXJpYWxpdHkvMU0KaW1tYXRlcmlhbG5lc3MvMU0KaW1tYXR1cmUvNTFZCmltbWF0dXJpdHkvMU0KaW1tZWFzdXJhYmxlLzUxCmltbWVhc3VyYWJseS8KaW1tZWRpYWNpZXMvMU0KaW1tZWRpYWN5LzFTTQppbW1lZGlhdGUvNVBZCmltbWVkaWF0ZW5lc3MvMU0KaW1tZW1vcmlhbC81WQppbW1lbnNlLzUxWQppbW1lbnNpdHkvMVNNCmltbWVyc2UvNDVYRFNHTlYKaW1tZXJzaWJsZS81CmltbWVyc2lvbi8xTQppbW1pZ3JhbnQvMTVTTQppbW1pZ3JhdGUvNERTR04KaW1taWdyYXRpb24vMU0KaW1taW5lbmNlLzFNCmltbWluZW50LzVZCmltbW9iaWxlLzUxCmltbW9iaWxpdHkvMU0KaW1tb2JpbGl6YXRpb24vMU0KaW1tb2JpbGl6ZS80WkdEUlMKaW1tb2RlcmF0ZS81WQppbW1vZGVzdC81WQppbW1vZGVzdHkvMU0KaW1tb2xhdGUvNERTR04KaW1tb2xhdGlvbi8xTQppbW1vcmFsLzVZCmltbW9yYWxpdHkvMVNNCmltbW9ydGFsLzUxTVlTCmltbW9ydGFsaXR5LzFNCmltbW9ydGFsaXplLzREU0cKaW1tb3ZhYmlsaXR5LzFNCmltbW92YWJsZS81MQppbW1vdmFibHkvCmltbXVuZS81MTQKaW1tdW5pdHkvMU0KaW1tdW5pemF0aW9uLzFTTQppbW11bml6ZS80R0RTCmltbXVub2RlZmljaWVuY3kvMU0KaW1tdW5vZGVmaWNpZW50LzUKaW1tdW5vZ2xvYnVsaW4vMVMKaW1tdW5vbG9naWMvNQppbW11bm9sb2dpY2FsLzUxCmltbXVub2xvZ2lzdC8xTVMKaW1tdW5vbG9neS8xTQppbW11cmUvNDFEU0cKaW1tdXRhYmlsaXR5LzFNCmltbXV0YWJsZS81MQppbW11dGFibHkvCmltcC80MVNNUgppbXBhY3QvMTRTTURHTwppbXBhaXIvNDUxU0RHTAppbXBhaXJlZC81NDFVCmltcGFpcm1lbnQvMU1TCmltcGFsYS8xU00KaW1wYWxlLzREU0dMCmltcGFsZW1lbnQvMU0KaW1wYWxwYWJsZS81CmltcGFscGFibHkvCmltcGFuZWwvNFNERwppbXBhcnQvNFNERwppbXBhcnRpYWwvNVkKaW1wYXJ0aWFsaXR5LzFNCmltcGFzc2FibHkvCmltcGFzc2UvMUJTTVYKaW1wYXNzaWJpbGl0eS8xTQppbXBhc3NpYmxlLzUKaW1wYXNzaWJseS8KaW1wYXNzaW9uZWQvNQppbXBhc3NpdmUvNVlQCmltcGFzc2l2ZW5lc3MvMU0KaW1wYXNzaXZpdHkvMU0KaW1wYXN0by8xNE0KaW1wYXRpZW5jZS8xTVMKaW1wYXRpZW5zLzFNCmltcGF0aWVudC81WQppbXBlYWNoLzRaR0JMRFJTCmltcGVhY2hhYmxlLzVVCmltcGVhY2hlci8xTQppbXBlYWNobWVudC8xU00KaW1wZWNjYWJpbGl0eS8xTQppbXBlY2NhYmxlLzUKaW1wZWNjYWJseS8KaW1wZWN1bmlvdXMvNVBZCmltcGVjdW5pb3VzbmVzcy8xTQppbXBlZGFuY2UvMU0KaW1wZWRlLzREU0cKaW1wZWRlZC80VQppbXBlZGltZW50LzFTTQppbXBlZGltZW50YS8xTQppbXBlbC80UwppbXBlbGxlZC80CmltcGVsbGVyLzFNUwppbXBlbGxpbmcvNAppbXBlbmQvNFNERwppbXBlbmV0cmFiaWxpdHkvMU0KaW1wZW5ldHJhYmxlLzUxCmltcGVuZXRyYWJseS8KaW1wZW5pdGVuY2UvMU0KaW1wZW5pdGVudC81MVkKaW1wZXJhdGl2ZS81MVNNWQppbXBlcmNlcHRpYmlsaXR5LzFNCmltcGVyY2VwdGlibGUvNQppbXBlcmNlcHRpYmx5LwppbXBlcmNlcHRpdmUvNQppbXBlcmYvNTEKaW1wZXJmZWN0LzUxNFNNWVAKaW1wZXJmZWN0aW9uLzFNUwppbXBlcmZlY3RuZXNzLzFNCmltcGVyaWFsLzUxTVlTCmltcGVyaWFsaXNtLzFNCmltcGVyaWFsaXN0LzUxU00KaW1wZXJpYWxpc3RpYy81CmltcGVyaWFsaXN0aWNhbGx5LwppbXBlcmlsLzRHU0xECmltcGVyaWxtZW50LzFNCmltcGVyaW91cy81UFkKaW1wZXJpb3VzbmVzcy8xTQppbXBlcmlzaGFibGUvNTEKaW1wZXJpc2hhYmx5LwppbXBlcm1hbmVuY2UvMU0KaW1wZXJtYW5lbnQvNVkKaW1wZXJtZWFiaWxpdHkvMU0KaW1wZXJtZWFibGUvNQppbXBlcm1lYWJseS8KaW1wZXJtaXNzaWJsZS81CmltcGVyc29uYWwvNTFZCmltcGVyc29uYXRlLzRHTlhEUwppbXBlcnNvbmF0aW9uLzFNCmltcGVyc29uYXRvci8xU00KaW1wZXJ0aW5lbmNlLzFNUwppbXBlcnRpbmVudC81MVkKaW1wZXJ0dXJiYWJpbGl0eS8xTQppbXBlcnR1cmJhYmxlLzUKaW1wZXJ0dXJiYWJseS8KaW1wZXJ2aW91cy81WQppbXBldGlnby8xTQppbXBldHVvc2l0eS8xTQppbXBldHVvdXMvNVlQCmltcGV0dW91c25lc3MvMU0KaW1wZXR1cy8xTVMKaW1waWV0eS8xU00KaW1waW5nZS80TERTRwppbXBpbmdlbWVudC8xTQppbXBpb3VzLzVQWQppbXBpb3VzbmVzcy8xTQppbXBpc2gvNVlQCmltcGlzaG5lc3MvMU0KaW1wbGFjYWJpbGl0eS8xTQppbXBsYWNhYmxlLzUKaW1wbGFjYWJseS8KaW1wbGFudC80MUJTR01ECmltcGxhbnRhdGlvbi8xTQppbXBsYXVzaWJpbGl0eS8xU00KaW1wbGF1c2libGUvNQppbXBsYXVzaWJseS8KaW1wbGVtZW50LzQxR0JNRFJTCmltcGxlbWVudGFibGUvNVUKaW1wbGVtZW50YXRpb24vMVNNCmltcGxlbWVudGVkLzRVCmltcGxpY2F0ZS80MURTRwppbXBsaWNhdGlvbi8xTQppbXBsaWNpdC81UFkKaW1wbGljaXRuZXNzLzFNCmltcGxvZGUvNERTRwppbXBsb3JlLzQxRFNHCmltcGxvcmluZy80MVkKaW1wbG9zaW9uLzFNUwppbXBsb3NpdmUvNTEKaW1wbHkvNFhEU0dOCmltcG9saXRlLzVZUAppbXBvbGl0ZW5lc3MvMU1TCmltcG9saXRpYy81CmltcG9uZGVyYWJsZS81MU1TCmltcG9ydC8xNFpHQlNNRFIKaW1wb3J0YW5jZS8xTQppbXBvcnRhbnQvNVkKaW1wb3J0YXRpb24vMU1TCmltcG9ydGVyLzFNCmltcG9ydHVuYXRlLzU0WQppbXBvcnR1bmUvNDVHRFMKaW1wb3J0dW5pdHkvMU0KaW1wb3NlLzQxQURTRwppbXBvc2VyLzFNUwppbXBvc2luZy80NVUKaW1wb3NpbmdseS8KaW1wb3NpdGlvbi8xTVMKaW1wb3NzaWJpbGl0eS8xU00KaW1wb3NzaWJsZS81MVMKaW1wb3NzaWJseS8KaW1wb3N0LzFTTQppbXBvc3Rvci8xU00KaW1wb3N0dXJlLzFNUwppbXBvdGVuY2UvMU0KaW1wb3RlbmN5LzFNCmltcG90ZW50LzUxWQppbXBvdW5kLzQxREdTCmltcG92ZXJpc2gvNERTTEcKaW1wb3ZlcmlzaG1lbnQvMU0KaW1wcmFjdGljYWJpbGl0eS8xCmltcHJhY3RpY2FibGUvNTEKaW1wcmFjdGljYWJseS8KaW1wcmFjdGljYWwvNVkKaW1wcmFjdGljYWxpdHkvMU0KaW1wcmVjYXRlLzREU1hHTgppbXByZWNhdGlvbi8xTQppbXByZWNpc2UvNVBZTgppbXByZWNpc2VuZXNzLzFNCmltcHJlY2lzaW9uLzFNCmltcHJlZ25hYmlsaXR5LzFNCmltcHJlZ25hYmxlLzUKaW1wcmVnbmFibHkvCmltcHJlZ25hdGUvNEdORFMKaW1wcmVnbmF0aW9uLzFNCmltcHJlc2FyaW8vMVNNCmltcHJlc3MvNDFNRFNHVgppbXByZXNzZWQvNTRVCmltcHJlc3NpYmlsaXR5LzFNCmltcHJlc3NpYmxlLzUKaW1wcmVzc2lvbi8xNEJTTQppbXByZXNzaW9uYWJpbGl0eS8xTQppbXByZXNzaW9uaXNtLzFNCmltcHJlc3Npb25pc3QvMVNNCmltcHJlc3Npb25pc3RpYy81CmltcHJlc3NpdmUvNVBZCmltcHJlc3NpdmVuZXNzLzFNCmltcHJpbWF0dXIvMVNNCmltcHJpbnQvMTRNRFJaR1MKaW1wcmludGVyLzFNCmltcHJpc29uLzRTRExHCmltcHJpc29ubWVudC8xU00KaW1wcm9iYWJpbGl0eS8xU00KaW1wcm9iYWJsZS81CmltcHJvYmFibHkvCmltcHJvbXB0dS81MVNNCmltcHJvcGVyLzU0WQppbXByb3ByaWV0eS8xU00KaW1wcm92ZS80R0JEU0wKaW1wcm92ZWQvNTRVCmltcHJvdmVtZW50LzFNUwppbXByb3ZpZGVuY2UvMU0KaW1wcm92aWRlbnQvNVkKaW1wcm92aXNhdGlvbi8xU00KaW1wcm92aXNhdGlvbmFsLzUKaW1wcm92aXNlLzRaR0RSUwppbXByb3Zpc2VyLzFNCmltcHJ1ZGVuY2UvMU0KaW1wcnVkZW50LzVZCmltcHVkZW5jZS8xTQppbXB1ZGVudC81WQppbXB1Z24vNFpHU0RSCmltcHVnbmVyLzFNCmltcHVsc2UvMTRNR05WRFMKaW1wdWxzaW9uLzFNCmltcHVsc2l2ZS81MVBZCmltcHVsc2l2ZW5lc3MvMU0KaW1wdWxzaXZpdHkvMQppbXB1bml0eS8xTQppbXB1cmUvNTRSWVQKaW1wdXJpdHkvMVNNCmltcHV0YXRpb24vMVNNCmltcHV0ZS80QkRTRwppbi8rNDE1QVNNfgppbmFjY3VyYWN5LzFTCmluYWN0aW9uLzFNCmluYWRlcXVhY3kvMVMKaW5hZHZlcnRlbmNlLzFNCmluYWR2ZXJ0ZW50LzVZCmluYWxpZW5hYmlsaXR5LzFNCmluYWxpZW5hYmx5LwppbmFtb3JhdGEvMVNNCmluYW5lLzUxUllUCmluYW5pbWF0ZS81MTRQWQppbmFuaW1hdGVuZXNzLzFNCmluYW5pdHkvMVNNCmluYXBwcm9wcmlhdGUvNVkKaW5hcnRpY3VsYXRlLzUxWQppbmFzbXVjaC8KaW5hdWRpYmxlLzUKaW5hdWd1cmFsLzUxU00KaW5hdWd1cmF0ZS80NVhHTkRTCmluYXVndXJhdGlvbi8xTQppbmJvYXJkLzUxNE1TCmluYm91bmQvNTQxCmluYm94LzE0TVMKaW5icmVlZC80UwppbmMvNTE0VEdECmluY2FsY3VsYWJseS8KaW5jYW5kZXNjZW5jZS8xTQppbmNhbmRlc2NlbnQvNTFZCmluY2FudGF0aW9uLzFTTQppbmNhcGFjaXRhdGUvNEdORFMKaW5jYXJjZXJhdGUvNDVYRFNHTgppbmNhcmNlcmF0aW9uLzFNCmluY2FybmFkaW5lLzUxNERTRwppbmNhcm5hdGUvNTRBWEdORFMKaW5jYXJuYXRpb24vMUFNCmluY2VuZGlhcnkvNTFTTQppbmNlbnNlLzE0TUdEUwppbmNlbnRpdmUncwppbmNlbnRpdmUvMTVFUwppbmNlcHRpb24vMVNNCmluY2Vzc2FudC81WQppbmNlc3QvMTRNCmluY2VzdHVvdXMvNVBZCmluY2VzdHVvdXNuZXNzLzFNCmluY2gvMTQ1TURTRwppbmNob2F0ZS81MTQKaW5jaHdvcm0vMTRTTQppbmNpZGVuY2UvMVNNCmluY2lkZW50LzE1U00KaW5jaWRlbnRhbC81MU1ZUwppbmNpbmVyYXRlLzQ1RFNHTgppbmNpbmVyYXRpb24vMU0KaW5jaW5lcmF0b3IvMU1TCmluY2lwaWVuY2UvMU0KaW5jaXBpZW50LzUxWQppbmNpc2UvNFhHTlZEUwppbmNpc2lvbi8xTQppbmNpc2l2ZS81UFkKaW5jaXNpdmVuZXNzLzFNCmluY2lzb3IvMU1TCmluY2l0ZW1lbnQvMU1TCmluY2l0ZXIvMU1TCmluY2wvKwppbmNsZW1lbnQvNQppbmNsaW5hdGlvbi8xRU0KaW5jbGluYXRpb25zLzEKaW5jbGluZSdzCmluY2xpbmUvNDFFR0RTCmluY2x1ZGUvNDFHRFMKaW5jbHVzaW9uLzFNUwppbmNsdXNpdmUvNVlQCmluY2x1c2l2ZW5lc3MvMU0KaW5jb2duaXRvLzUxTVMKaW5jb21idXN0aWJsZS81MQppbmNvbW1vZGUvNDUxR0QKaW5jb21tb2Rpb3VzLzUKaW5jb21tdW5pY2Fkby81CmluY29tcGF0aWJpbGl0eS8xUwppbmNvbXBldGVudC81MU1TCmluY29tcGxldGUvNTFZCmluY29uY2VpdmFiaWxpdHkvMU0KaW5jb25ncnVvdXMvNVBZCmluY29uZ3J1b3VzbmVzcy8xTQppbmNvbnNvbGFibHkvCmluY29uc3RhbnQvNVkKaW5jb250ZXN0YWJpbGl0eS8xTQppbmNvbnRlc3RhYmx5LwppbmNvbnRpbmVudC81MQppbmNvbnRyb3ZlcnRpYmx5LwppbmNvbnZlbmllbmNlLzE0R0QKaW5jb3Jwb3JhdGUvNDVBRFNHTgppbmNvcnBvcmF0ZWQvNTRVCmluY29ycG9yYXRpb24vMUFNCmluY29ycG9yZWFsLzUKaW5jb3JyZWN0LzUxWQppbmNvcnJpZ2liaWxpdHkvMU0KaW5jb3JyaWdpYmxlLzUxCmluY29ycmlnaWJseS8KaW5jb3JydXB0aWJseS8KaW5jcmVhc2luZy81NDFZCmluY3JlbWVudC8xNFNNREcKaW5jcmVtZW50YWwvNVkKaW5jcmVtZW50YWxpc20vMQppbmNyZW1lbnRhbGlzdC8xU00KaW5jcmltaW5hdGUvNEdORFMKaW5jcmltaW5hdGlvbi8xTQppbmNyaW1pbmF0b3J5LzUKaW5jcnVzdGF0aW9uLzFTTQppbmN1YmF0ZS80R05EUwppbmN1YmF0aW9uLzFNCmluY3ViYXRvci8xU00KaW5jdWJ1cy8xTVMKaW5jdWxjYXRlLzREU0dOCmluY3VsY2F0aW9uLzFNCmluY3VscGF0ZS80RFNHCmluY3VtYmVuY3kvMVNNCmluY3VtYmVudC81MVNNCmluY3VuYWJ1bGEvMQppbmN1bmFidWx1bS8xTQppbmN1ci80U0IKaW5jdXJhYmxlLzUxTVMKaW5jdXJhYmx5LwppbmN1cmlvdXMvNQppbmN1cnJlZC80CmluY3VycmluZy80CmluY3Vyc2lvbi8xTVMKaW5kLwppbmRlYnRlZC80NVAKaW5kZWJ0ZWRuZXNzLzFNCmluZGVlZC8KaW5kZWZhdGlnYWJsZS81CmluZGVmYXRpZ2FibHkvCmluZGVmZWFzaWJsZS81CmluZGVmZWFzaWJseS8KaW5kZWZpbmFibHkvCmluZGVsaWJsZS81CmluZGVsaWJseS8KaW5kZW1uaWZpY2F0aW9uLzFNCmluZGVtbmlmeS80R0RTWE4KaW5kZW1uaXR5LzFTTQppbmRlbnRhdGlvbi8xTVMKaW5kZW50aW9uLzFNCmluZGVudHVyZS8xNERHCmluZGVzY3JpYmFibHkvCmluZGVzdHJ1Y3RpYmx5LwppbmRldGVybWluYWJseS8KaW5kZXRlcm1pbmFjeS8xTQppbmRldGVybWluYXRlLzUxWQppbmRleC8xNFpHTURSUwppbmRleGF0aW9uLzFTTQppbmRleGVyLzFNCmluZGljYXRlLzRYRFNHTlYKaW5kaWNhdGlvbi8xTQppbmRpY2F0aXZlLzUxU01ZCmluZGljYXRvci8xTVMKaW5kaWN0LzRHRFNCTAppbmRpY3RtZW50LzFTTQppbmRpZS81MVMKaW5kaWdlbmNlLzFNCmluZGlnZW5vdXMvNQppbmRpZ2VudC81MVNNWQppbmRpZ25hbnQvNVkKaW5kaWduYXRpb24vMU0KaW5kaWdvLzE1TQppbmRpcmVjdC81MTRZCmluZGlzY2lwbGluZS8xCmluZGlzY3JlZXQvNVkKaW5kaXNjcmV0aW9uLzFTCmluZGlzY3JpbWluYXRlLzVZCmluZGlzcGVuc2FiaWxpdHkvMU0KaW5kaXNwZW5zYWJsZS81MU1TCmluZGlzcGVuc2FibHkvCmluZGlzc29sdWJpbGl0eS8xCmluZGlzc29sdWJseS8KaW5kaXN0aW5ndWlzaGFibHkvCmluZGl0ZS80MUdEUwppbmRpdW0vMU0KaW5kaXZpZHVhbC8xNU1ZUwppbmRpdmlkdWFsaXNtLzFNCmluZGl2aWR1YWxpc3QvMU1TCmluZGl2aWR1YWxpc3RpYy81CmluZGl2aWR1YWxpc3RpY2FsbHkvCmluZGl2aWR1YWxpdHkvMU0KaW5kaXZpZHVhbGl6YXRpb24vMU0KaW5kaXZpZHVhbGl6ZS80R0RTCmluZGl2aWR1YXRlLzQ1RFNHTgppbmRpdmlkdWF0aW9uLzFNCmluZGl2aXNpYmx5LwppbmRvY3RyaW5hdGUvNEdORFMKaW5kb2N0cmluYXRpb24vMU0KaW5kb2xlbmNlLzFNCmluZG9sZW50LzVZCmluZG9taXRhYmxlLzUKaW5kb21pdGFibHkvCmluZHViaXRhYmxlLzUxCmluZHViaXRhYmx5LwppbmR1Y2UvNERSU1pHTAppbmR1Y2VtZW50LzFTTQppbmR1Y2VyLzFNCmluZHVjdC80REdWCmluZHVjdGFuY2UvMU0KaW5kdWN0ZWUvMVNNCmluZHVjdGlvbi8xTVMKaW5kdWN0aXZlLzVZCmluZHVsZ2UvNERTRwppbmR1bGdlbmNlLzE0U00KaW5kdWxnZW50LzVZCmluZHVzdHJpYWwvNTFZCmluZHVzdHJpYWxpc20vMU0KaW5kdXN0cmlhbGlzdC8xU00KaW5kdXN0cmlhbGl6YXRpb24vMU0KaW5kdXN0cmlhbGl6ZS80RFNHCmluZHVzdHJpb3VzLzVZUAppbmR1c3RyaW91c25lc3MvMU0KaW5kdXN0cnkvMVNNCmluZHdlbGwvNFNHCmluZWJyaWF0ZS8xNDVNR05EUwppbmVicmlhdGlvbi8xTQppbmVkaWJsZS81MQppbmVmZmFiaWxpdHkvMU0KaW5lZmZhYmxlLzUKaW5lZmZhYmx5LwppbmVsYXN0aWMvNQppbmVsaWdpYmxlLzUxTVMKaW5lbGlnaWJseS8KaW5lbHVjdGFibGUvNQppbmVsdWN0YWJseS8KaW5lcHQvNVlQCmluZXB0aXR1ZGUvMU0KaW5lcHRuZXNzLzFNCmluZXF1YWxpdHkvMVMKaW5lcnQvNTE0WVAKaW5lcnRpYS8xTQppbmVydGlhbC81CmluZXJ0bmVzcy8xTQppbmVzY2FwYWJsZS81CmluZXNjYXBhYmx5LwppbmVzdGltYWJseS8KaW5ldml0YWJpbGl0eS8xTQppbmV2aXRhYmxlLzUxTQppbmV2aXRhYmx5LwppbmV4YWN0LzVZCmluZXhoYXVzdGlibHkvCmluZXhvcmFiaWxpdHkvMQppbmV4b3JhYmxlLzUKaW5leG9yYWJseS8KaW5leHBlZGllbnQvNQppbmV4cGVydC81MVkKaW5leHBpYWJsZS81CmluZXhwbGljYWJseS8KaW5leHByZXNzaWJseS8KaW5leHByZXNzaXZlLzUKaW5leHRyaWNhYmx5LwppbmYvWlQKaW5mYWxsaWJsZS8xNQppbmZhbXkvMVNNCmluZmFuY3kvMU0KaW5mYW50LzE0TVMKaW5mYW50aWNpZGUvMU1TCmluZmFudGlsZS81CmluZmFudHJ5LzFTTQppbmZhbnRyeW1hbi8xTQppbmZhbnRyeW1lbi8xCmluZmFyY3QvMU1TCmluZmFyY3Rpb24vMU0KaW5mYXR1YXRlLzQ1MURTWEdOCmluZmF0dWF0aW9uLzFNCmluZmVjdC80NUFFU0RHCmluZmVjdGVkLzQ1MVUKaW5mZWN0aW9uLzFBU00KaW5mZWN0aW91cy81UFkKaW5mZWN0aW91c25lc3MvMU0KaW5mZWxpY2l0b3VzLzUKaW5mZXJlbmNlLzFTTQppbmZlcmVudGlhbC81CmluZmVyaW9yLzUxTVMKaW5mZXJpb3JpdHkvMU0KaW5mZXJuYWwvNTFZCmluZmVybm8vMU1TCmluZmVycmVkLzQKaW5mZXJyaW5nLzQxCmluZmVzdC80NTFHRFMKaW5mZXN0YXRpb24vMU1TCmluZmlkZWwvNTFNUwppbmZpZGVsaXR5LzFTCmluZmlsdHJhdG9yLzFTTQppbmZpbml0ZS81MU1WCmluZmluaXRlc2ltYWwvNTFTTVkKaW5maW5pdGl2YWwvNQppbmZpbml0aXZlLzE1TVMKaW5maW5pdHVkZS8xTQppbmZpbml0eS8xU00KaW5maXJtLzU0CmluZmlybWFyeS8xU00KaW5maXJtaXR5LzFTTQppbmZpeC80MQppbmZsYW1lLzREU0cKaW5mbGFtbWFibGUvNTEKaW5mbGFtbWF0aW9uLzFTTQppbmZsYW1tYXRvcnkvNTEKaW5mbGF0YWJsZS81MVNNCmluZmxhdGUvNEFEU0cKaW5mbGF0aW9uLzFFTQppbmZsYXRpb25hcnkvNQppbmZsZWN0LzRTREcKaW5mbGVjdGlvbi8xTVMKaW5mbGVjdGlvbmFsLzUKaW5mbGljdC80U0RHVgppbmZsaWN0aW9uLzFNCmluZmxvdy8xNFNNCmluZmx1ZW5jZS8xNE1HRFMKaW5mbHVlbmNlZC80NVUKaW5mbHVlbnRpYWwvNTFZCmluZmx1ZW56YS8xTQppbmZvLzFNCmluZm9tZXJjaWFsLzFTTQppbmZvcm0vNDVaCmluZm9ybWFsLzVZCmluZm9ybWFudC8xU00KaW5mb3JtYXRpY3MvMQppbmZvcm1hdGlvbi8xRU0KaW5mb3JtYXRpb25hbC81CmluZm9ybWF0aXZlLzVQWQppbmZvcm1hdGl2ZW5lc3MvMU0KaW5mb3JtZWQvNDVVCmluZm90YWlubWVudC8xTQppbmZyYS8xCmluZnJhcmVkLzE1TQppbmZyYXNvbmljLzUKaW5mcmFzdHJ1Y3R1cmFsLzUKaW5mcmFzdHJ1Y3R1cmUvMVNNCmluZnJlcXVlbmNlLzFNCmluZnJlcXVlbnQvNVkKaW5mcmluZ2VtZW50LzFNUwppbmZ1cmlhdGUvNDVHRFMKaW5mdXJpYXRpbmcvNTRZCmluZnVzZXIvMVNNCmluZ2VuaW91cy81UFkKaW5nZW5pb3VzbmVzcy8xTQppbmdlbnVlLzFTTQppbmdlbnVpdHkvMU0KaW5nZW51b3VzLzVFWQppbmdlbnVvdXNuZXNzLzFNCmluZ2VzdC80MVNERwppbmdlc3Rpb24vMU0KaW5nbGVub29rLzFTTQppbmdvdC8xNFNNCmluZ3JhaW4vNDUxRwppbmdyYXRlLzUxU00KaW5ncmF0aWF0ZS80R05EUwppbmdyYXRpYXRpbmcvNTRZCmluZ3JhdGlhdGlvbi8xTQppbmdyZWRpZW50LzFNUwppbmdyZXNzLzE0TVMKaW5ndWluYWwvNQppbmhhYml0LzRERwppbmhhYml0YWJsZS81VQppbmhhYml0YW50LzE1U00KaW5oYWJpdGVkLzVVCmluaGFsYW50LzUxU00KaW5oYWxhdGlvbi8xTVMKaW5oYWxhdG9yLzFNUwppbmhhbGVyLzFTTQppbmhhcm1vbmlvdXMvNQppbmhlcmUvNERTRwppbmhlcmVudC81WQppbmhlcml0LzRFR1NECmluaGVyaXRhbmNlLzFFTQppbmhlcml0YW5jZXMvMQppbmhlcml0b3IvMVNNCmluaGliaXQvNEdTRAppbmhpYml0aW9uLzFTTQppbmhpYml0b3IvMVNNCmluaGliaXRvcnkvNQppbmh1bWFuLzVZCmluaHVtYW5lLzVZCmluaW1pY2FsLzVZCmluaW1pdGFibHkvCmluaXF1aXRvdXMvNVkKaW5pcXVpdHkvMVNNCmluaXRpYWwvNTE0U0dNRFkKaW5pdGlhbGlzbS8xTVMKaW5pdGlhbGl6YXRpb24vMQppbml0aWFsaXplLzREU0cKaW5pdGlhbGl6ZWQvNEFVCmluaXRpYXRlLzE0NVhNR05WRFMKaW5pdGlhdGVkLzRVCmluaXRpYXRpb24vMU0KaW5pdGlhdGl2ZS81MVNNCmluaXRpYXRvci8xTVMKaW5pdGlhdG9yeS81MQppbml0aW8KaW5qZWN0LzRTREcKaW5qZWN0aW9uLzFTTQppbmplY3Rvci8xU00KaW5qdW5jdGl2ZS8xNQppbmp1cmUvNERSU1pHCmluanVyZWQvNFUKaW5qdXJlci8xTQppbmp1cmlvdXMvNQppbmsvMTRNRAppbmtibG90LzFTTQppbmtpbmVzcy8xTQppbmtsaW5nLzE0U00KaW5rc3RhbmQvMVNNCmlua3dlbGwvMU1TCmlua3kvNVJUUAppbmxhbmQvNTFNCmlubGluZS81NDEKaW5tYXRlLzFTTQppbm1vc3QvNTEKaW5uLzE0U0dNUkoKaW5uYXJkcy8xTQppbm5hdGUvNTRQWQppbm5hdGVuZXNzLzFNCmlubmVybW9zdC81MQppbm5lcnNvbGUvMVNNCmlubmVyc3ByaW5nLzUKaW5uZXJ2YXRlLzRHTkRTCmlubmVydmF0aW9uLzFNCmlubmluZy8xNE0KaW5uaXQvCmlubmtlZXBlci8xTVMKaW5ub2NlbmNlLzFNCmlubm9jZW50LzUxTVlTCmlubm9jdW91cy81UFkKaW5ub2N1b3VzbmVzcy8xTQppbm5vdmF0ZS80WERTR05WCmlubm92YXRpb24vMU0KaW5ub3ZhdG9yLzFNUwppbm5vdmF0b3J5LzUKaW5udWVuZG8vMTRTTQppbm51bWVyYWJseS8KaW5udW1lcmF0ZS81MQppbm9jdWxhdGUvNDFBR0RTCmlub2N1bGF0aW9uLzFNUwppbm9wZXJhdGl2ZS81Cmlub3JkaW5hdGUvNVkKaW5vcmdhbmljLzUxCmlub3NpdG9sLzEKaW5xdWlyZS80WkdEUgppbnF1aXJlci8xTQppbnF1aXJpbmcvNDE1WQppbnF1aXJ5LzFTTQppbnF1aXNpdGlvbi8xNE1TCmlucXVpc2l0aW9uYWwvNQppbnF1aXNpdGl2ZS81WVAKaW5xdWlzaXRpdmVuZXNzLzFNCmlucXVpc2l0b3IvMVNNCmlucXVpc2l0b3JpYWwvNQppbnJ1c2gvMTRNUwppbnNhbmUvNVQKaW5zYXRpYWJpbGl0eS8xTQppbnNhdGlhYmx5LwppbnNjcmliZS80WkdEUgppbnNjcmliZXIvMU0KaW5zY3JpcHRpb24vMU1TCmluc2NydXRhYmlsaXR5LzFNCmluc2NydXRhYmxlLzUxUAppbnNjcnV0YWJsZW5lc3MvMU0KaW5zY3J1dGFibHkvCmluc2VhbS8xNFNNCmluc2VjdGljaWRhbC81Cmluc2VjdGljaWRlLzFNUwppbnNlY3Rpdm9yZS8xTVMKaW5zZWN0aXZvcm91cy81Cmluc2VjdXJlLzVZCmluc2VtaW5hdGUvNERTR04KaW5zZW1pbmF0aW9uLzFNCmluc2Vuc2F0ZS81MTQKaW5zZW5zaWJsZS81Cmluc2Vuc2l0aXZlLzVZCmluc2VwYXJhYmxlLzUxTVMKaW5zZXJ0J3MKaW5zZXJ0LzQxQUdTRAppbnNlcnRpb24vMUFNCmluc2VydGlvbnMvMQppbnNldHRpbmcvNAppbnNob3JlLzUKaW5zaWRlLzE1K1JTTVoKaW5zaWRlci8xTQppbnNpZGlvdXMvNVlQCmluc2lkaW91c25lc3MvMU0KaW5zaWdodC8xTVMKaW5zaWdodGZ1bC81Cmluc2lnbmlhLzFNCmluc2ludWF0ZS80R05WRFNYCmluc2ludWF0aW9uLzFNCmluc2ludWF0b3IvMVNNCmluc2lwaWQvNVBZCmluc2lwaWRpdHkvMU0KaW5zaXN0LzRTR0QKaW5zaXN0ZW5jZS8xTQppbnNpc3RlbnQvNVkKaW5zaXN0aW5nLzRZCmluc29mYXIvCmluc29sZS8xNFNNCmluc29sZW5jZS8xNE0KaW5zb2xlbnQvNTFZCmluc29sdWJsZS81MQppbnNvbHVibHkvCmluc29sdmVuY3kvMVMKaW5zb21uaWEvMU0KaW5zb21uaWFjLzE1U00KaW5zb211Y2gvCmluc291Y2lhbmNlLzFNCmluc291Y2lhbnQvNQppbnNwZWN0LzRBR0RTCmluc3BlY3Rpb24vMVNNCmluc3BlY3Rvci8xTVMKaW5zcGVjdG9yYXRlLzFNUwppbnNwaXJhdGlvbi8xTVMKaW5zcGlyYXRpb25hbC81MQppbnNwaXJhdG9yeS81Cmluc3BpcmVkLzU0VQppbnNwaXJpbmcvNTQxVQppbnN0LzEKaW5zdGFiaWxpdHkvMVMKaW5zdGFsbC80MVVCWlJTREcKaW5zdGFsbGF0aW9uLzFNUwppbnN0YWxsZXIvMVVNCmluc3RhbGxtZW50LzFTTQppbnN0YW5jZS8xNEdECmluc3RhbnQvMTU0TVJZUwppbnN0YW50YW5lb3VzLzVZCmluc3RhbnRpYXRlLzREU0cKaW5zdGFyLzE0Cmluc3RhdGUvNEFHRFMKaW5zdGVhZC8KaW5zdGlnYXRlLzREU0dOCmluc3RpZ2F0aW9uLzFNCmluc3RpZ2F0b3IvMU1TCmluc3RpbGxhdGlvbi8xTQppbnN0aW5jdC8xNVZNUwppbnN0aW5jdGl2ZS81WQppbnN0aW5jdHVhbC81Cmluc3RpdHV0ZS8xNDVYTVpHTkRSUwppbnN0aXR1dGVyLzFNCmluc3RpdHV0aW9uLzFNCmluc3RpdHV0aW9uYWwvNTFZCmluc3RpdHV0aW9uYWxpemF0aW9uLzFNCmluc3RpdHV0aW9uYWxpemUvNERTRwppbnN0ci8xCmluc3RydWN0LzQxNVNER1YKaW5zdHJ1Y3RlZC80VQppbnN0cnVjdGlvbi8xTVMKaW5zdHJ1Y3Rpb25hbC81MQppbnN0cnVjdGl2ZS81MVkKaW5zdHJ1Y3Rvci8xTVMKaW5zdHJ1bWVudC8xNE1EU0cKaW5zdHJ1bWVudGFsLzUxTVlTCmluc3RydW1lbnRhbGlzdC8xU00KaW5zdHJ1bWVudGFsaXR5LzFNCmluc3RydW1lbnRhdGlvbi8xTQppbnN1Ym9yZGluYXRlLzUxCmluc3VmZmVyYWJsZS81Cmluc3VmZmVyYWJseS8KaW5zdWxhLzEKaW5zdWxhci81MQppbnN1bGFyaXR5LzFNCmluc3VsYXRlLzRHTkRTCmluc3VsYXRpb24vMU0KaW5zdWxhdG9yLzFNUwppbnN1bGluLzFNCmluc3VsdC80MVNNREcKaW5zdWx0aW5nLzU0MVkKaW5zdXBlcmFibGUvNQppbnN1cGVyYWJseS8KaW5zdXJhbmNlLzFTTQppbnN1cmUvNERSU1pHQgppbnN1cmVkLzUxNFNNCmluc3VyZXIvMU0KaW5zdXJnZW5jZS8xU00KaW5zdXJnZW5jeS8xU00KaW5zdXJnZW50LzUxTVMKaW5zdXJtb3VudGFibHkvCmluc3VycmVjdGlvbi8xU00KaW5zdXJyZWN0aW9uaXN0LzE1U00KaW50LzUxNAppbnRhY3QvNQppbnRhZ2xpby8xNE1TCmludGVnZXIvMU1TCmludGVncmFsLzUxU01ZCmludGVncmF0ZS80QUVWTkdTRAppbnRlZ3JhdGlvbi8xRUFNCmludGVncmF0b3IvMVNNCmludGVncml0eS8xTQppbnRlZ3VtZW50LzFTTQppbnRlbC8xTQppbnRlbGxlY3QvMU1TCmludGVsbGVjdHVhbC81MU1ZUwppbnRlbGxlY3R1YWxpc20vMU0KaW50ZWxsZWN0dWFsaXplLzRHRFMKaW50ZWxsaWdlbmNlLzFNCmludGVsbGlnZW50LzUxWQppbnRlbGxpZ2VudHNpYS8xTQppbnRlbGxpZ2liaWxpdHkvMU0KaW50ZWxsaWdpYmxlLzVVCmludGVsbGlnaWJseS9VCmludGVuZGVkLzUxNFNNCmludGVuc2UvNVlUVlIKaW50ZW5zaWZpY2F0aW9uLzFNCmludGVuc2lmaWVyLzFNCmludGVuc2lmeS80RFJTWkdOCmludGVuc2l0eS8xUwppbnRlbnNpdmUvNTFNWVBTCmludGVuc2l2ZW5lc3MvMU0KaW50ZW50LzE1U01ZUAppbnRlbnRpb24vMTRNUwppbnRlbnRpb25hbC81MVVZCmludGVudG5lc3MvMU0KaW50ZXIvNEVTTAppbnRlcmFjdC80MVNHVkQKaW50ZXJhY3Rpb24vMVNNCmludGVyYWN0aXZlLzUxWQppbnRlcmFjdGl2aXR5LzEKaW50ZXJicmVkLzQKaW50ZXJicmVlZC80R1MKaW50ZXJjZWRlLzRHRFMKaW50ZXJjZXB0LzQxR01EUwppbnRlcmNlcHRpb24vMU1TCmludGVyY2VwdG9yLzFTTQppbnRlcmNlc3Npb24vMVNNCmludGVyY2Vzc29yLzFNUwppbnRlcmNlc3NvcnkvNQppbnRlcmNoYW5nZS80MURTTUcKaW50ZXJjaGFuZ2VhYmlsaXR5LzEKaW50ZXJjaGFuZ2VhYmxlLzUxCmludGVyY2hhbmdlYWJseS8KaW50ZXJjaXR5LzUxCmludGVyY29sbGVnaWF0ZS81MQppbnRlcmNvbS8xNFNNCmludGVyY29tbXVuaWNhdGUvNERTR04KaW50ZXJjb21tdW5pY2F0aW9uLzFNCmludGVyY29ubmVjdC80MUdEUwppbnRlcmNvbm5lY3Rpb24vMVNNCmludGVyY29udGluZW50YWwvNQppbnRlcmNvdXJzZS8xNE0KaW50ZXJjdWx0dXJhbC81CmludGVyZGVub21pbmF0aW9uYWwvNQppbnRlcmRlcGFydG1lbnRhbC81CmludGVyZGVwZW5kZW5jZS8xTQppbnRlcmRlcGVuZGVudC81WQppbnRlcmRpY3QvMTRHTURTCmludGVyZGljdGlvbi8xTQppbnRlcmRpc2NpcGxpbmFyeS81CmludGVyZXN0LzE0RVNNRAppbnRlcmVzdGVkLzU0VQppbnRlcmVzdGluZy81NFkKaW50ZXJmYWNlLzE0TUdEUwppbnRlcmZhaXRoLzUKaW50ZXJmZXJlLzRHRFMKaW50ZXJmZXJlbmNlLzE0TQppbnRlcmZlcm9uLzFNCmludGVyZmlsZS80R0RTCmludGVyZ2FsYWN0aWMvNQppbnRlcmdvdmVybm1lbnRhbC81CmludGVyaW0vNTFNCmludGVyaW9yLzUxU00KaW50ZXJqLzEKaW50ZXJqZWN0LzRHRFMKaW50ZXJqZWN0aW9uLzFTTQppbnRlcmxhY2UvMTRHRFMKaW50ZXJsYXJkLzRER1MKaW50ZXJsZWF2ZS80MURTRwppbnRlcmxldWtpbi8xTQppbnRlcmxpbmUvNTRHRFNKCmludGVybGluZWFyLzUxCmludGVybGluaW5nLzE0TQppbnRlcmxpbmsvNDFEU0cKaW50ZXJsb2NrLzQxR01EUwppbnRlcmxvY3V0b3IvMVNNCmludGVybG9jdXRvcnkvNTEKaW50ZXJsb3BlLzRaR0RSUwppbnRlcmxvcGVyLzFNCmludGVybHVkZS8xNE1HRFMKaW50ZXJtYXJyaWFnZS8xU00KaW50ZXJtYXJyeS80R0RTCmludGVybWVkaWFyeS81MVNNCmludGVybWVkaWF0ZS81MTRNWVMKaW50ZXJtZW50LzFFTQppbnRlcm1lbnRzLzEKaW50ZXJtZXp6aS8xCmludGVybWV6em8vMU1TCmludGVybWluYWJseS8KaW50ZXJtaW5nbGUvNERTRwppbnRlcm1pc3Npb24vMVNNCmludGVybWl0dGVuY2UvMQppbnRlcm1pdHRlbmN5LzEKaW50ZXJtaXR0ZW50LzUxWQppbnRlcm1peC80MUdEUwppbnRlcm4vMTQ1R0RMCmludGVybmFsLzVTWQppbnRlcm5hbGl6YXRpb24vMU0KaW50ZXJuYWxpemUvNEdEUwppbnRlcm5hdGlvbmFsLzUxU01ZCmludGVybmF0aW9uYWxpc20vMU0KaW50ZXJuYXRpb25hbGlzdC81MVNNCmludGVybmF0aW9uYWxpemF0aW9uLzEKaW50ZXJuYXRpb25hbGl6ZS80RFNHCmludGVybmVjaW5lLzUKaW50ZXJuZWUvMVNNCmludGVybmV0LzIxNAppbnRlcm5pc3QvMU1TCmludGVybm1lbnQvMU0KaW50ZXJuc2hpcC8xTVMKaW50ZXJvZmZpY2UvNTQKaW50ZXJvcGVyYWJpbGl0eS8xCmludGVyb3BlcmFibGUvNQppbnRlcm9wZXJhdGUvNFMKaW50ZXJwZW5ldHJhdGUvNERTR04KaW50ZXJwZXJzb25hbC81CmludGVycGxhbmV0YXJ5LzUKaW50ZXJwbGF5LzE0TQppbnRlcnBvbGF0ZS80WERTR04KaW50ZXJwb2xhdGlvbi8xTQppbnRlcnBvc2UvNEdEUwppbnRlcnBvc2l0aW9uLzFNCmludGVycHJldC80QUdWRFMKaW50ZXJwcmV0YXRpb24vMUFNUwppbnRlcnByZXRhdGl2ZS81CmludGVycHJldGVkLzQ1VQppbnRlcnByZXRlci8xTVMKaW50ZXJyYWNpYWwvNQppbnRlcnJlZC81NEUKaW50ZXJyZWdudW0vMVNNCmludGVycmVsYXRlLzRYRFNHTgppbnRlcnJlbGF0aW9uLzFNCmludGVycmVsYXRpb25zaGlwLzUxTVMKaW50ZXJyaW5nLzQxRQppbnRlcnJvZ2F0ZS80RFNHTlZYCmludGVycm9nYXRpb24vMU0KaW50ZXJyb2dhdGl2ZS81MU1ZUwppbnRlcnJvZ2F0b3IvMVNNCmludGVycm9nYXRvcnkvMTVTTQppbnRlcnJ1cHQvNDFaR01EUlMKaW50ZXJydXB0ZXIvMU0KaW50ZXJydXB0aW9uLzFNUwppbnRlcnNjaG9sYXN0aWMvNQppbnRlcnNlY3QvNEdEUwppbnRlcnNlY3Rpb24vMVNNCmludGVyc2VjdGlvbmFsLzUKaW50ZXJzZWN0aW9uYWxpdHkvMQppbnRlcnNlc3Npb24vNTFTTQppbnRlcnNleC81MTQKaW50ZXJzcGVyc2UvNEdORFMKaW50ZXJzcGVyc2lvbi8xTQppbnRlcnN0YXRlLzUxTVMKaW50ZXJzdGVsbGFyLzUKaW50ZXJzdGljZS8xTVMKaW50ZXJzdGl0aWFsLzUxCmludGVydHdpbmUvNEdEUwppbnRlcnVyYmFuLzUxCmludGVydmFsLzFTTQppbnRlcnZlbmUvNEdEUwppbnRlcnZlbnRpb24vMVNNCmludGVydmVudGlvbmlzbS8xTQppbnRlcnZlbnRpb25pc3QvNTFTTQppbnRlcnZpZXcvMTRaR01EUlMKaW50ZXJ2aWV3ZWUvMU1TCmludGVydmlld2VyLzFNCmludGVydm9jYWxpYy81CmludGVyd2FyLzUKaW50ZXJ3ZWF2ZS80R1MKaW50ZXJ3b3ZlLzQKaW50ZXJ3b3Zlbi80CmludGVzdGFjeS8xTQppbnRlc3RhdGUvNTEKaW50ZXN0aW5hbC81CmludGVzdGluZS8xNU1TCmludGlmYWRhLzEKaW50aW1hY3kvMVNNCmludGltYXRlLzUxNE1ZR05EU1gKaW50aW1hdGlvbi8xTQppbnRpbWlkYXRlLzRHTkRTCmludGltaWRhdGluZy80NVkKaW50aW1pZGF0aW9uLzFNCmludG9uYXRpb24vMVNNCmludG94aWNhbnQvMTVTTQppbnRveGljYXRlLzQ1RFNHTgppbnRveGljYXRpb24vMU0KaW50cmFjcmFuaWFsLzUKaW50cmFtdXJhbC81MQppbnRyYW11c2N1bGFyLzUKaW50cmFuZXQvMU1TCmludHJhbnNpZ2VuY2UvMU0KaW50cmFuc2lnZW50LzUxTVlTCmludHJhc3RhdGUvNTEKaW50cmF1dGVyaW5lLzUKaW50cmF2ZW5vdXMvNTFNU1kKaW50cmVwaWQvNVkKaW50cmVwaWRpdHkvMU0KaW50cmljYWN5LzFTTQppbnRyaWNhdGUvNTRZCmludHJpZ3VlLzE0RFJTTVpHCmludHJpZ3Vlci8xTQppbnRyaWd1aW5nLzU0MVkKaW50cmluc2ljLzUxCmludHJpbnNpY2FsbHkvCmludHJvLzE0U00KaW50cm9kdWNlLzRBR0RTCmludHJvZHVjdGlvbi8xQU0KaW50cm9kdWN0aW9ucy8xCmludHJvZHVjdG9yeS81CmludHJvaXQvMVNNCmludHJvc3BlY3QvNEdWRFMKaW50cm9zcGVjdGlvbi8xTQppbnRyb3NwZWN0aXZlLzVZCmludHJvdmVyc2lvbi8xTQppbnRyb3ZlcnQvMTU0TURTCmludHJ1ZGUvNERSU1pHCmludHJ1ZGVyLzFNCmludHJ1c2lvbi8xU00KaW50cnVzaXZlLzUxWVAKaW50cnVzaXZlbmVzcy8xTQppbnR1aXQvNFNER1YKaW50dWl0aW9uLzFTCmludHVpdGl2ZS81MVBZCmludHVpdGl2ZW5lc3MvMU0KaW51bmRhdGUvNFhEU0dOCmludW5kYXRpb24vMU0KaW51cmUvNERTRwppbnZhZGUvNERSU1pHCmludmFkZXIvMU0KaW52YWxpZC81MTRHTURZUwppbnZhbGlkaXNtLzFNCmludmFsdWFibGUvNQppbnZhbHVhYmx5LwppbnZhcmlhbnQvNTFTCmludmFzaW9uLzFNUwppbnZhc2l2ZS81MQppbnZlY3RpdmUvMTVNCmludmVpZ2gvNEdECmludmVpZ2hzLzQKaW52ZWlnbGUvNFpHRFJTCmludmVpZ2xlci8xTQppbnZlbnQvNEFTR1ZECmludmVudGlvbi8xQU1TCmludmVudGl2ZS81UFkKaW52ZW50aXZlbmVzcy8xTQppbnZlbnRvci8xTVMKaW52ZW50b3J5LzE0RFNNRwppbnZlcnNlLzUxNFNNWQppbnZlcnQvNDE1U01EUlpHCmludmVydGVyLzFNCmludmVzdC80MUFTREdMCmludmVzdGlnYXRlLzRHTlZEU1gKaW52ZXN0aWdhdGlvbi8xTQppbnZlc3RpZ2F0b3IvMVNNCmludmVzdGlnYXRvcnkvNQppbnZlc3RpdHVyZS8xTVMKaW52ZXN0bWVudC8xQUVNCmludmVzdG9yLzFTTQppbnZldGVyYWN5LzFNCmludmV0ZXJhdGUvNTQKaW52aWRpb3VzLzVZUAppbnZpZGlvdXNuZXNzLzFNCmludmlnaWxhdGUvNEdORFMKaW52aWdpbGF0b3IvMVMKaW52aWdvcmF0ZS80QURTRwppbnZpZ29yYXRpbmcvNDVZCmludmlnb3JhdGlvbi8xTQppbnZpbmNpYmlsaXR5LzFNCmludmluY2libHkvCmludmlvbGFiaWxpdHkvMU0KaW52aW9sYWJseS8KaW52aW9sYXRlLzUKaW52aXRhdGlvbi8xU00KaW52aXRhdGlvbmFsLzUxU00KaW52aXRlLzQxRFNNRwppbnZpdGVkLzQ1MVUKaW52aXRlZS8xU00KaW52aXRpbmcvNTQxWQppbnZva2UvNERTRwppbnZvbHVudGFyaW5lc3MvMU0KaW52b2x1bnRhcnkvNVAKaW52b2x1dGlvbi8xTQppbnZvbHZlLzRMRFNHCmludm9sdmVkLzU0VQppbnZvbHZlbWVudC8xU00KaW53YXJkLzUxU1kKaW9jdGwKaW9kaWRlLzFTTQppb2RpbmUvMTRNCmlvZGl6ZS80RFNHCmlvbi8xVVNNCmlvbmljLzUKaW9uaXphdGlvbi8xVU0KaW9uaXplLzRVRFNHCmlvbml6ZXIvMU1TCmlvbm9zcGhlcmUvMU1TCmlvbm9zcGhlcmljLzUKaW90YS8xTVMKaXBlY2FjLzFTTQppcmFzY2liaWxpdHkvMU0KaXJhc2NpYmxlLzUKaXJhc2NpYmx5LwppcmF0ZS81WVAKaXJhdGVuZXNzLzFNCmlyZS8xNE0KaXJlZnVsLzUKaXJlbmljLzUKaXJpZGVzLzEKaXJpZGVzY2VuY2UvMU0KaXJpZGVzY2VudC81WQppcmlkaXVtLzFNCmlyaXMvMTRNUwppcmsvNFNHRAppcmtzb21lLzVZUAppcmtzb21lbmVzcy8xTQppcm9uLzE1NE1EU0cKaXJvbmNsYWQvNTFNUwppcm9uaWMvNQppcm9uaWNhbC81WQppcm9uaW5nLzQxTQppcm9ubW9uZ2VyLzFTCmlyb25tb25nZXJ5LzEKaXJvbnN0b25lLzFNCmlyb253YXJlLzFNCmlyb253b29kLzFNUwppcm9ud29yay8xTQppcm9ueS8xNVNNCmlycmFkaWF0ZS81NERTR04KaXJyYWRpYXRpb24vMU0KaXJyYXRpb25hbC81MVNNWQppcnJhdGlvbmFsaXR5LzFNCmlycmVjbGFpbWFibGUvNQppcnJlY29uY2lsYWJpbGl0eS8xTQppcnJlY29uY2lsYWJsZS81MQppcnJlY29uY2lsYWJseS8KaXJyZWNvdmVyYWJsZS81CmlycmVjb3ZlcmFibHkvCmlycmVkZWVtYWJsZS81MQppcnJlZGVlbWFibHkvCmlycmVkdWNpYmxlLzUxCmlycmVkdWNpYmx5LwppcnJlZnV0YWJsZS81CmlycmVmdXRhYmx5LwppcnJlZ3VsYXIvNTFNWVMKaXJyZWd1bGFyaXR5LzFTTQppcnJlbGV2YW5jZS8xTVMKaXJyZWxldmFuY3kvMU1TCmlycmVsZXZhbnQvNVkKaXJyZWxpZ2lvbi8xCmlycmVsaWdpb3VzLzUKaXJyZW1lZGlhYmxlLzUKaXJyZW1lZGlhYmx5LwppcnJlbW92YWJsZS81CmlycmVwYXJhYmxlLzUKaXJyZXBhcmFibHkvCmlycmVwbGFjZWFibGUvNQppcnJlcHJlc3NpYmxlLzUKaXJyZXByZXNzaWJseS8KaXJyZXByb2FjaGFibGUvNQppcnJlcHJvYWNoYWJseS8KaXJyZXNpc3RpYmxlLzUKaXJyZXNpc3RpYmx5LwppcnJlc29sdXRlLzVQWU4KaXJyZXNvbHV0ZW5lc3MvMU0KaXJyZXNvbHV0aW9uLzFNCmlycmVzcGVjdGl2ZS81CmlycmVzcG9uc2liaWxpdHkvMU0KaXJyZXNwb25zaWJsZS81MQppcnJlc3BvbnNpYmx5LwppcnJldHJpZXZhYmxlLzUKaXJyZXRyaWV2YWJseS8KaXJyZXZlcmVuY2UvMU0KaXJyZXZlcmVudC81WQppcnJldmVyc2libGUvNQppcnJldmVyc2libHkvCmlycmV2b2NhYmxlLzUKaXJyZXZvY2FibHkvCmlycmlnYWJsZS81CmlycmlnYXRlLzREU0dOCmlycmlnYXRpb24vMU0KaXJyaXRhYmlsaXR5LzFNCmlycml0YWJsZS81Cmlycml0YWJseS8KaXJyaXRhbnQvNTFTTQppcnJpdGF0ZS80RFNYR04KaXJyaXRhdGluZy81NFkKaXJyaXRhdGlvbi8xTQppcnJ1cHQvNERHVlMKaXJydXB0aW9uLzFTTQppc2NoZW1pYS8xCmlzY2hlbWljLzUKaXNpbmdsYXNzLzFNCmlzbC8xCmlzbGFuZC8xNFNaTVIKaXNsYW5kZXIvMU0KaXNsZS8xTVMKaXNsZXQvMVNNCmlzbS8xQ00KaXNtcy8xCmlzbid0LzQxCmlzb2Jhci8xTVMKaXNvYmFyaWMvNQppc29sYXRlLzQxNURTTUdOCmlzb2xhdGlvbi8xTQppc29sYXRpb25pc20vMU0KaXNvbGF0aW9uaXN0LzUxU00KaXNvbWVyLzFNUwppc29tZXJpYy81Cmlzb21lcmlzbS8xTQppc29tZXRyaWMvNTFTCmlzb21ldHJpY2FsbHkvCmlzb21ldHJpY3MvMU0KaXNvbW9ycGhpYy81Cmlzb21vcnBoaXNtLzEKaXNvc2NlbGVzLzUKaXNvdGhlcm0vMVNNCmlzb3RvcGUvMTRTTQppc290b3BpYy81Cmlzb3Ryb3BpYy81Cmlzc3VhbmNlLzFNCmlzc3VlLzE0QURTTUcKaXNzdWVyLzFNUwppc3RobWlhbi81MQppc3RobXVzLzFNUwppdCdkLwppdCdsbC8KaXQvODE1VVNNfgppdGFsLzE1Cml0YWxpYy81MVNNCml0YWxpY2l6YXRpb24vMU0KaXRhbGljaXplLzRHRFMKaXRhbGljcy8xTQppdGNoLzE0TURTRwppdGNoaW5lc3MvMU0KaXRjaHkvNVJQVAppdGVtLzE0TVMKaXRlbWl6YXRpb24vMU0KaXRlbWl6ZS80R0RTCml0ZXJhdGUvNDE1QVhHTlZEUwppdGVyYXRpb24vMUFNCml0ZXJhdG9yLzFTCml0aW5lcmFudC81MVNNCml0aW5lcmFyeS8xNVNNCml0c2VsZi84Cml2L1UKaXZvcnkvMTVTTQppdnkvMURTTQppeC8Kai8xRgpqYWIvMTRTTQpqYWJiZWQvNDUKamFiYmVyLzQxU01EUlpHCmphYmJlcmVyLzFNCmphYmJpbmcvNDEKamFib3QvMVNNCmphY2FyYW5kYS8xTVMKamFjay8xNDVNREdTCmphY2thbC8xNFNNCmphY2thc3MvMTRNUwpqYWNrYm9vdC8xNFNNRApqYWNrZGF3LzFNUwpqYWNrZXQvMTRTTUQKamFja2hhbW1lci8xNE1TCmphY2trbmlmZS8xNE1HRFMKamFja2tuaXZlcy8xCmphY2twb3QvMTQyTVMKamFja3JhYmJpdC8xNE1TCmphY2tzdHJhdy8xNU1TCmphY3F1YXJkLzFNCmphZGUvMTU0TUdEUwpqYWRlZC81NFBZCmphZGVkbmVzcy8xTQpqYWRlaXRlLzFNCmphZy8xNFNNCmphZ2dlZC81NFRQUlkKamFnZ2VkbmVzcy8xTQpqYWdnaWVzLzEKamFndWFyLzFTTQpqYWlsLzE0TURSWkdTCmphaWxiaXJkLzFTTQpqYWlsYnJlYWsvMTRTTQpqYWlsZXIvMU0KamFpbGhvdXNlLzFTCmphbGFwZW5vLzFNUwpqYWxvcHkvMVNNCmphbG91c2llLzFNUwpqYW0vMTRTTQpqYW1iLzE0TVMKamFtYmFsYXlhLzFNCmphbWJvcmVlLzFNUwpqYW1tZWQvNTQKamFtbWluZy80MTUKamFtbXkvNTFSVApqYW5nbGUvNDFEUlNNWkcKamFuZ2xlci8xTQpqYW5pdG9yLzFTTQpqYW5pdG9yaWFsLzUKamFwYW4vMTRTTQpqYXBhbm5lZC80CmphcGFubmluZy8xCmphcGUvMTRNR0RTCmphci8xNFNNCmphcmRpbmllcmUvMVNNCmphcmZ1bC8xTVMKamFyZ29uLzE0TQpqYXJyZWQvNDUKamFycmluZy81MTRZCmphc21pbmUvMVNNCmphc3Blci8xNE0KamF0by8xTVMKamF1bmRpY2UvMTREU01HCmphdW50LzE0U0dNRApqYXVudGlseS8KamF1bnRpbmVzcy8xTQpqYXVudHkvNTFSUFQKamF2YS8xTQpqYXZlbGluLzE0U00KamF3LzE0NVNHTUQKamF3Ym9uZS8xNERTTUcKamF3YnJlYWtlci8xTVMKamF3bGluZS8xUwpqYXkvMVNNCmpheWJpcmQvMVNNCmpheXdhbGsvNERSU1pHCmpheXdhbGtlci8xTQpqYXl3YWxraW5nLzE0TQpqYXp6LzE0TURTRwpqYXp6eS81VFIKamN0LzEKamVhbG91cy81NFkKamVhbG91c3kvMVNNCmplYW4vMU1TCmplYW5zLzFNCmplZXAvNTE0TVMKamVlci8xNE1EU0cKamVlcmluZy80MU1ZCmplZXovCmplanVuYS8xCmplanVuZS81CmplanVudW0vMU0KamVsbC8xNERTRwpqZWxsby8xUwpqZWxseS8xNDVHRFNNCmplbGx5YmVhbi8xNU1TCmplbGx5ZmlzaC8xTVMKamVsbHlsaWtlLzUKamVsbHlyb2xsLzFTTQpqZW1teS8xNDVHRFMKamVubmV0LzFNUwpqZW5ueS8xNFNNCmplb3BhcmRpemUvNEdEUwpqZW9wYXJkeS8xNE0KamVyZW1pYWQvMU1TCmplcmsvMTRNRFNHCmplcmtpbHkvCmplcmtpbi8xTVMKamVya2luZXNzLzFNCmplcmt3YXRlci8xNQpqZXJreS81MTRUUk1QCmplcm9ib2FtLzFTCmplcnJ5YnVpbHQvNQpqZXJyeWNhbi8xUwpqZXJzZXkvMU1TCmplc3QvMTRNRFJTWkcKamVzdGVyLzFNCmplc3RpbmcvMTU0WQpqZXQvMTQ1U00KamV0bGluZXIvMVNNCmpldHBvcnQvMU1TCmpldHNhbS8xTQpqZXR0ZWQvNApqZXR0aW5nLzQxCmpldHRpc29uLzE0TURTRwpqZXR0eS8xNDVTTQpqZXdlbC8xNFNaR01EUgpqZXdlbGVyLzFNCmpld2VscnkvMTRTTQpqZwpqaWIvMTRTR01ECmppYmJlZC80CmppYmJpbmcvMQpqaWJlLzE0TVMKamlmZi8xNE1TCmppZmZ5LzFTTQpqaWcncwpqaWcvMTRBUwpqaWdnZWQvNEEKamlnZ2VyJ3MKamlnZ2VyLzE0QVNERwpqaWdnaW5nLzQxQQpqaWdnbGUvMTREU01HCmppZ2dseS81CmppZ3Nhdy8xNFNNREcKamloYWQvMTRTTQpqaWhhZGlzdC8xNVNNCmppbHQvMTRNRFNHCmppbW15LzE0RFNNRwpqaW1zb253ZWVkLzFNCmppbmdsZS8xNERTTUcKamluZ2x5LzUKamluZ29pc20vMU0KamluZ29pc3QvMTVTTQpqaW5nb2lzdGljLzUKamluay8xNERTRwpqaW5uLzEKamlubmkvMU0KamlucmlraXNoYS8xU00KamlueC8xNE1EU0cKaml0bmV5LzFTTQpqaXR0ZXJidWcvMTRNUwpqaXR0ZXJidWdnZWQvNApqaXR0ZXJidWdnZXIvMU0Kaml0dGVyYnVnZ2luZy80CmppdHRlcnMvMTRNCmppdHRlcnkvNVJUCmppdmUvNDFNR0RTCmpvYi8xNFNNCmpvYmJlZC80CmpvYmJlci8xU00Kam9iYmluZy80MTUKam9iaG9sZGVyLzFNUwpqb2JsZXNzLzVQCmpvYmxlc3NuZXNzLzFNCmpvYnNoYXJlLzE0Uwpqb2Jzd29ydGgvMQpqb2Jzd29ydGhzLzEKam9jay8xNE1TCmpvY2tleS8xNFNHTUQKam9ja3N0cmFwLzFNUwpqb2Nvc2UvNVBZCmpvY29zZW5lc3MvMU0Kam9jb3NpdHkvMU0Kam9jdWxhci81WQpqb2N1bGFyaXR5LzFNCmpvY3VuZC81WQpqb2N1bmRpdHkvMU0Kam9kaHB1cnMvMU0Kam9leS8xUwpqb2cvMTRTTQpqb2dnZWQvNApqb2dnZXIvNDFTTQpqb2dnaW5nLzE0TQpqb2dnbGUvNDFEU01HCmpvaG4vMU1TCmpvaG5ueS8xU00Kam9obm55Y2FrZS8xTVMKam9pbidzCmpvaW4vNDFBRkRTRwpqb2luZXIvMUZNUwpqb2luZXJ5LzFNCmpvaW50J3MKam9pbnQvNTE0RUdTRApqb2ludGx5L0YKam9pc3QvMTRTTQpqb2pvYmEvMQpqb2tlLzE0TVpHRFJTCmpva2VyLzFNCmpva2V5LzUKam9raWVyLzUKam9raWVzdC81Cmpva2luZy80MVkKam9sbGlmaWNhdGlvbi8xU00Kam9sbGlseS8Kam9sbGluZXNzLzFNCmpvbGxpdHkvMU0Kam9sbHkvNTE0VEdQRFJTTQpqb2x0LzQxTURSU1pHCmpvbHRlci8xTQpqb25xdWlsLzFTTQpqb3NoLzE0TURSU1pHCmpvc2hlci8xTQpqb3N0bGUvNDFNR0RTCmpvdC8xNFNNCmpvdHRlZC80CmpvdHRlci8xTVMKam90dGluZy80MU1TCmpvdWxlLzFTTQpqb3VuY2UvNDFNR0RTCmpvdW5jeS81CmpvdXJuYWwvMTQ1TVMKam91cm5hbGVzZS8xTQpqb3VybmFsaXNtLzFNCmpvdXJuYWxpc3QvMVNNCmpvdXJuYWxpc3RpYy81CmpvdXJuZXkvMTRaR01EUlMKam91cm5leWVyLzFNCmpvdXJuZXltYW4vMU0Kam91cm5leW1lbi8xCmpvdXJuby8xUwpqb3VzdC8xNFNaR01EUgpqb3VzdGVyLzFNCmpvdXN0aW5nLzE0TQpqb3ZpYWwvNVkKam92aWFsaXR5LzFNCmpvd2wvMTRNUwpqb3dseS81VFIKam95LzE0U0dNRApqb3lmdWwvNVlQCmpveWZ1bGxlci81CmpveWZ1bGxlc3QvNQpqb3lmdWxuZXNzLzFNCmpveWxlc3MvNVBZCmpveWxlc3NuZXNzLzFNCmpveW91cy81WVAKam95b3VzbmVzcy8xTQpqb3lyaWRkZW4vNApqb3lyaWRlLzE0UlNNWkcKam95cmlkZXIvMU0Kam95cmlkaW5nLzQxTQpqb3lyb2RlLzQKam95c3RpY2svMTRTTQpqci81Cmp1YmlsYW50LzVZCmp1YmlsYXRpb24vMU0KanViaWxlZS8xU00KanVkZGVyLzE0R0RTCmp1ZGdlJ3MKanVkZ2UvMTRBRFNHCmp1ZGdlc2hpcC8xTQpqdWRnbWVudC8xU00KanVkZ21lbnRhbC81WQpqdWRpY2F0b3J5LzUxU00KanVkaWNhdHVyZS8xTQpqdWRpY2lhbC81MVkKanVkaWNpYXJ5LzE1U00KanVkaWNpb3VzLzVJWVAKanVkaWNpb3VzbmVzcy8xSU0KanVkby8xTQpqdWcvMTRTTQpqdWdmdWwvMU1TCmp1Z2dlZC81NApqdWdnZXJuYXV0LzFTTQpqdWdnaW5nLzQxCmp1Z2dsZS80MU1aR0RSUwpqdWdnbGVyLzFNCmp1Z2dsZXJ5LzFNCmp1Z3VsYXIvNTFTTQpqdWljZS8xNDVEUlNNWkcKanVpY2VyLzFNCmp1aWNpbHkvCmp1aWNpbmVzcy8xTQpqdWljeS81UFRSCmp1aml0c3UvMTRNCmp1anViZS8xTVMKanVrZWJveC8xNE1TCmp1bGVwLzFTTQpqdWxpZW5uZS8xNApqdW1ibGUvNDFNR0RTCmp1bWJvLzUxU00KanVtcC80MTVNRFJTWkcKanVtcGVyLzE0TQpqdW1waWx5LwpqdW1waW5lc3MvMU0KanVtcHN1aXQvMU1TCmp1bXB5LzVUUlAKanVuLzEKanVuY28vMVNNCmp1bmN0aW9uLzE0RklTTQpqdW5jdHVyZS8xRk1TCmp1bmdsZS8xNU1TCmp1bmlvci81MTRNUwpqdW5pcGVyLzFTTQpqdW5rLzE0TURSU1pHCmp1bmtlci8xTQpqdW5rZXQvMTRNRFNHCmp1bmtldGVlci8xNE1TCmp1bmtpZS8xTVRSUwpqdW5reWFyZC8xTVMKanVudGEvMVNNCmp1cmlkaWMvNQpqdXJpZGljYWwvNVkKanVyaXNkaWN0aW9uLzFTTQpqdXJpc2RpY3Rpb25hbC81Cmp1cmlzcHJ1ZGVuY2UvMU0KanVyaXN0LzFNUwpqdXJpc3RpYy81Cmp1cm9yLzFTTQpqdXJ5LzE0NUlTTQpqdXJ5bWFuLzFNCmp1cnltZW4vMQpqdXJ5d29tYW4vMU0KanVyeXdvbWVuLzEKanVzdC81MTRSWVBUCmp1c3RpY2UvMUlNUwpqdXN0aWZpYWJsZS81VQpqdXN0aWZpYWJseS9VCmp1c3RpZmljYXRpb24vMU0KanVzdGlmaWVkLzU0VQpqdXN0aWZ5LzRYR0RTTgpqdXN0bmVzcy8xTQpqdXQvNDFTTQpqdXRlLzFNCmp1dHRlZC80Cmp1dHRpbmcvNDEKanV2ZW5pbGUvNTFTTQpqdXh0YXBvc2UvNERTRwpqdXh0YXBvc2l0aW9uLzE0U00Kay8xSUZHUwprSHovCmtXLwprV2gvCmthYmJhbGFoLzEKa2Fib29tLzEKa2FidWtpLzFNCmthZGRpc2gvMU1TCmthZmZlZWtsYXRjaC8xTVMKa2FmZmVla2xhdHNjaC8xTVMKa2FodW5hLzFTCmthaXNlci8xTVMKa2FsZS8xTQprYWxlaWRvc2NvcGUvMTRNUwprYWxlaWRvc2NvcGljLzUKa2FsZWlkb3Njb3BpY2FsbHkvCmthbWlrYXplLzE0NU1TCmthbmEvMTQKa2FuZ2Fyb28vMTQ1TVMKa2FuamkvMQprYW9saW4vMU0Ka2Fwb2svMU0Ka2FwcGEvMVNNCmthcHV0LzUKa2FyYWt1bC8xTQprYXJhb2tlLzE0TVMKa2FyYXQvMVNNCmthcmF0ZS8xNE0Ka2FybWEvMU0Ka2FybWljLzUKa2FydC8xNE1TCmthdGFrYW5hLzEKa2F0eWRpZC8xU00Ka2F5YWsvMTRTTURHCmtheWFraW5nLzE0TQprYXlvLzE0TURTRwprYXpvby8xNFNNCmtjLzEKa2ViYWIvMTRTTQprZWRnZXJlZS8xCmtlZWwvMTRNRFNHCmtlZWxoYXVsLzRER1MKa2Vlbi81NDFNRFJZU1RHUAprZWVubmVzcy8xTQprZWVwLzQxTVJTWkcKa2VlcGVyLzFNCmtlZXBpbmcvMTRNCmtlZXBzYWtlLzFNUwprZWcvMTRTTQprZWxwLzE0TQprZWx2aW4vMVNNCmtlbi80MVNNCmtlbm5lZC80Cmtlbm5lbC8xNFNHTUQKa2VubmluZy8xNAprZW5vLzFNCmtlcGkvMU1TCmtlcHQvNAprZXJhdGluLzFNCmtlcmF0aXRpcy8xCmtlcmJzaWRlLzEKa2VyY2hpZWYvMTRTTQprZXJmdWZmbGUvMTRTCmtlcm5lbC8xNFNNCmtlcm9zZW5lLzFNCmtlc3RyZWwvMU1TCmtldGNoLzE0TVMKa2V0Y2h1cC8xNE0Ka2V0by8xNQprZXRvZ2VuaWMvNQprZXRvbmUvMVMKa2V0dGxlLzE0U00Ka2V0dGxlZHJ1bS8xU00Ka2V5LzE1NFNHTUQKa2V5YmluZGluZy8xUwprZXlib2FyZC8xNFpHU01EUgprZXlib2FyZGVyLzFNCmtleWJvYXJkaXN0LzFTTQprZXlob2xlLzE0TVMKa2V5bm90ZS8xNE1aR0RSUwprZXlub3Rlci8xTQprZXlwYWQvMVNNCmtleXB1bmNoLzE0WkdNRFJTCmtleXB1bmNoZXIvMU0Ka2V5c3RvbmUvMTRNUwprZXlzdHJva2UvMTRTTQprZXl3b3JkLzE0TVMKa2cvCmtoYWtpLzE1U00Ka2hhbi8xTVMKa2liYmxlLzQxRFNNRwpraWJidXR6LzFNUwpraWJidXR6aW0vMQpraWJpdHovNFpHRFJTCmtpYml0emVyLzFNCmtpYm9zaC8xNE0Ka2ljay80MU1EUlNaRwpraWNrYmFjay8xU00Ka2lja2JhbGwvMU0Ka2lja2JveGluZy8xCmtpY2tlci8xTQpraWNrb2ZmLzFNUwpraWNrc3RhbmQvMU1TCmtpY2t5LzVSVApraWQvMTRTTQpraWRkZWQvNApraWRkZXIvMVNNCmtpZGRpZS8xU00Ka2lkZGluZy80MQpraWRkaXNoLzUxCmtpZGRvLzFTTQpraWRuYXAvNDFTCmtpZG5hcHBlZC80NQpraWRuYXBwZXIvMU1TCmtpZG5hcHBpbmcvNDFNUwpraWRuZXkvMVNNCmtpZHNraW4vMU0Ka2llbGJhc2EvMU1TCmtpZWxiYXNpLzEKa2lrZS8xNFMKa2lsbC80MUpNRFJTWkcKa2lsbGRlZXIvMVNNCmtpbGxlci8xNU0Ka2lsbGluZy81MTRNCmtpbGxqb3kvMVNNCmtpbG4vMTRNRFNHCmtpbG8vMU1TCmtpbG9ieXRlLzFTTQpraWxvY291bG9tYi9TCmtpbG9jeWNsZS8xU00Ka2lsb2dyYW0vMVNNCmtpbG9oZXJ0ei8xTQpraWxvam91bGUvMVMKa2lsb2xpdGVyLzFNUwpraWxvbWV0ZXIvMU1TCmtpbG9uZXd0b24vMVMKa2lsb3Bhc2NhbC8xUwpraWxvdG9uLzFTTQpraWxvdm9sdC8xUwpraWxvd2F0dC8xU00Ka2lsdC80MU1EUlMKa2lsdGVyLzFNCmtpbW9uby8xTVMKa2luLzE1NE0Ka2luYXNlLzEKa2luZCdzCmtpbmQvMTVVUFJZVApraW5kYS8xCmtpbmRlcmdhcnRlbi8xTVMKa2luZGVyZ2FydG5lci8xU00Ka2luZGhlYXJ0ZWQvNVBZCmtpbmRoZWFydGVkbmVzcy8xTQpraW5kbGUvNDE1QUdEUwpraW5kbGluZXNzLzFNCmtpbmRsaW5nLzE1NE0Ka2luZGx5LzVVUlQKa2luZG5lc3MvMVVNCmtpbmRuZXNzZXMvMQpraW5kcmVkLzE1TQpraW5kcy8xCmtpbmUvMVMKa2luZW1hdGljLzVTCmtpbmVtYXRpY3MvMU0Ka2luZXRpYy81UwpraW5ldGljYWxseS8Ka2luZXRpY3MvMU0Ka2luZm9say8xU00Ka2luZm9sa3MvMU0Ka2luZy8xNE1ZUwpraW5nZG9tLzFTTQpraW5nZmlzaGVyLzFTTQpraW5nbHkvNVJUCmtpbmdtYWtlci8xUwpraW5ncGluLzFTTQpraW5nc2hpcC8xTQpraW5rLzQxTURTRwpraW5raWx5LwpraW5raW5lc3MvMU0Ka2lua3kvNVRQUgpraW5zZm9say8xTQpraW5zaGlwLzFNCmtpbnNtYW4vMU0Ka2luc21lbi8xCmtpbnN3b21hbi8xTQpraW5zd29tZW4vMQpraW9zay8xU00Ka2lwLzE0U00Ka2lwcGVkLzQKa2lwcGVyLzE0NU1ER1MKa2lwcGluZy80CmtpcnNjaC8xTVMKa2lzbWV0LzFNCmtpc3MvNDFNRFJTQlpHCmtpc3Nlci8xTQpraXNzb2ZmLzFTTQpraXNzb2dyYW0vMVMKa2l0LzE0U0dNRApraXRjaGVuLzE0U00Ka2l0Y2hlbmV0dGUvMU1TCmtpdGNoZW53YXJlLzFNCmtpdGUvMTRNUwpraXRoLzFNCmtpdHNjaC8xNU0Ka2l0c2NoeS81CmtpdHRlZC80CmtpdHRlbi8xNE1TCmtpdHRlbmlzaC81CmtpdHRpbmcvMTQKa2l0dHkvMVNNCmtpd2kvMU1TCmtpd2lmcnVpdC8xTVMKa2wvCmtsYXhvbi8xNFMKa2xlcHRvY3JhY3kvMQprbGVwdG9tYW5pYS8xTQprbGVwdG9tYW5pYWMvMVNNCmtsdWRnZS8xNEdEUwprbHVnZS8xNERTCmtsdXR6LzFNUwprbHV0emluZXNzLzFNCmtsdXR6eS81VFJQCmttLwprbi8Ka25hY2svMTRTWk1SCmtuYWNrZXIvMTRHRAprbmFwc2Fjay8xNE1TCmtuYXZlLzFTTQprbmF2ZXJ5LzFNCmtuYXZpc2gvNVkKa25lYWQvNDFTWkdEUgprbmVhZGVyLzFNCmtuZWUvMTRNRFMKa25lZWNhcC8xNFNNCmtuZWVjYXBwZWQvNAprbmVlY2FwcGluZy8xNAprbmVlaW5nLzQxCmtuZWVsLzRTRwprbmVsbC80MVNHTUQKa25lbHQvNAprbmV3LzQKa25pY2tlci8xUwprbmlja2VyYm9ja2Vycy8xTQprbmlja2Vycy8xTQprbmlja2tuYWNrLzFNUwprbmlmZS8xNERTTUcKa25pZ2h0LzE0TURZU0cKa25pZ2h0aG9vZC8xTVMKa25pZ2h0bGluZXNzLzFNCmtuaXNoLzFNUwprbml0LzQxTVMKa25pdHRlZC81NAprbml0dGVyLzFTTQprbml0dGluZy80MU0Ka25pdHdlYXIvMU0Ka25pdmVzLzE0Cmtub2IvMTRNUwprbm9iYmx5LzUKa25vYmJ5LzVUUgprbm9jay8xNFNaR01EUgprbm9ja2Fib3V0LzUxCmtub2NrZG93bi8xNDVTTQprbm9ja2VyLzFNCmtub2Nrb2ZmLzFTTQprbm9ja291dC8xNVNNCmtub2Nrd3Vyc3QvMVNNCmtub2xsLzE0U00Ka25vdC8xNE1TCmtub3Rob2xlLzFTTQprbm90dGVkLzU0Cmtub3R0aW5nLzQxCmtub3R0eS81VFIKa25vdy80MVNCCmtub3dpbmcvNSs0MVVZUwprbm93bGVkZ2UvMTRNCmtub3dsZWRnZWFibGUvNTEKa25vd2xlZGdlYWJseS8Ka25vd24vNTE0CmtudWNrbGUvMTREU01HCmtudWNrbGVkdXN0ZXIvMVMKa251Y2tsZWhlYWQvMU1TCmtudXJsLzE0U0dNRAprb2FsYS8xU00Ka29hbi8xUwprb2hsLzE0CmtvaGxyYWJpLzFNCmtvaGxyYWJpZXMvMQprb2xhLzFNUwprb29rLzFNUwprb29rYWJ1cnJhLzFTTQprb29raW5lc3MvMU0Ka29va3kvNTFUUFIKa29wZWNrLzFNUwprb3JtYS8xCmtvc2hlci81NERTRwprb3d0b3cvNDFHTURTCmtwaC8xCmtyYWFsLzE0U00Ka3JhdXQvMTRTTSEKa3JpbGwvMU0Ka3JvbmEvMU0Ka3JvbmUvMVJNCmtyb25vci8xCmtyb251ci8xCmtyeXB0b24vMU0Ka3QvMQprdWNoZW4vMVNNCmt1ZG9zLzE0TQprdWR6dS8xU00Ka3VtcXVhdC8xTVMKa3ZldGNoLzQxWkdNRFJTCmt2ZXRjaGVyLzFNCmt3LwpsLzFTRFhUR0oKbGEvMTVNCmxhYi8xU00KbGFiZWwncwpsYWJlbC8xNEFTREcKbGFiZWxlZC81NFUKbGFiaWEvMQpsYWJpYWwvNTFTTQpsYWJpbGUvNQpsYWJpdW0vMU0KbGFib3IvMTRTTURSWkcKbGFib3JhdG9yeS8xU00KbGFib3Jlci8xTQpsYWJvcmlvdXMvNVBZCmxhYm9yaW91c25lc3MvMU0KbGFib3JzYXZpbmcvNQpsYWJ1cm51bS8xTVMKbGFieXJpbnRoLzE0TQpsYWJ5cmludGhpbmUvNQpsYWJ5cmludGhzLzE0CmxhYy8xTQpsYWNlJ3MKbGFjZS8xNFVHRFMKbGFjZXJhdGUvNDVEU0dOWApsYWNlcmF0aW9uLzFNCmxhY2V3aW5nLzFTTQpsYWNld29yay8xTQpsYWNocnltYWwvNTEKbGFjaHJ5bW9zZS81CmxhY2svMTRNRFNHCmxhY2thZGFpc2ljYWwvNVkKbGFja2V5LzE0U00KbGFja2x1c3Rlci81MQpsYWNvbmljLzUKbGFjb25pY2FsbHkvCmxhY3F1ZXIvMTRHTURTCmxhY3Jvc3NlLzFNCmxhY3RhdGUvNDFHTkRTCmxhY3RhdGlvbi8xTQpsYWN0ZWFsLzUxCmxhY3RpYy81CmxhY3Rvc2UvMU0KbGFjdW5hLzFNCmxhY3VuYWUvMQpsYWN5LzVSVApsYWQvMVNHTUROSgpsYWRkZXIvMTRHU01ECmxhZGRpZS8xU00KbGFkZGlzaC81UApsYWRlLzQxUwpsYWRlbi81NFUKbGFkaW5nLzE0TQpsYWRsZS8xNERTTUcKbGFkeS8xNFNNCmxhZHliaXJkLzFTTQpsYWR5YnVnLzFNUwpsYWR5ZmluZ2VyLzFNUwpsYWR5bGlrZS81VQpsYWR5bG92ZS8xTVMKbGFkeXNoaXAvMU1TCmxhZXRyaWxlLzFNCmxhZy81MTRTWk1SCmxhZ2VyLzE0TQpsYWdnYXJkLzUxTVlTCmxhZ2dlZC80CmxhZ2dpbmcvNTE0TQpsYWduaWFwcGUvMVNNCmxhZ29vbi8xU00KbGFpZC80NUlBCmxhaW4vNApsYWlyLzE0TVMKbGFpcmQvMTRTTQpsYWl0eS8xTQpsYWtlLzE0TVMKbGFrZWZyb250LzUxUwpsYWtlc2lkZS8xNQpsYW0vNDFTTQpsYW1hLzFNUwpsYW1hc2VyeS8xU00KbGFtYi8xNE1EU0cKbGFtYmFkYS8xTVMKbGFtYmFzdGUvNEdEUwpsYW1iZGEvMVNNCmxhbWJlbmN5LzFNCmxhbWJlbnQvNVkKbGFtYmtpbi8xU00KbGFtYnNraW4vMVNNCmxhbWJzd29vbC8xCmxhbWUvNTQxTVlaVEdEUlNQCmxhbWVicmFpbi8xTURTCmxhbWVuZXNzLzFNCmxhbWVudC8xNEJTTURHCmxhbWVudGFibHkvCmxhbWVudGF0aW9uLzFNUwpsYW1pbmEvMU0KbGFtaW5hZS8xCmxhbWluYXIvNQpsYW1pbmF0ZS80MTVNR05EUwpsYW1pbmF0aW9uLzFNCmxhbW1lZC80CmxhbW1pbmcvNDEKbGFtcC8xNE1TCmxhbXBibGFjay8xNE0KbGFtcGxpZ2h0LzFNUloKbGFtcGxpZ2h0ZXIvMU0KbGFtcG9vbi8xNFNHTUQKbGFtcHBvc3QvMVNNCmxhbXByZXkvMU1TCmxhbXBzaGFkZS8xNFNNCmxhbmFpLzFTTQpsYW5jZS8xNERSU01aRwpsYW5jZXIvMU0KbGFuY2V0LzE0U00KbGFuZC8xNE1EUlNHSgpsYW5kYXUvMVNNCmxhbmRmYWxsLzFNUwpsYW5kZmlsbC80MU1TCmxhbmRob2xkZXIvMVNNCmxhbmRob2xkaW5nLzFNUwpsYW5kaW5nLzE0TQpsYW5kbGFkeS8xU00KbGFuZGxlc3MvNU0KbGFuZGxpbmUvMU1TCmxhbmRsb2NrZWQvNQpsYW5kbG9yZC8xTVMKbGFuZGx1YmJlci8xTVMKbGFuZG1hcmsvMTRNUwpsYW5kbWFzcy8xTVMKbGFuZG1pbmUvMTRTCmxhbmRvd25lci8xTVMKbGFuZG93bmVyc2hpcC8xCmxhbmRvd25pbmcvNTFTTQpsYW5kc2NhcGUvMTRNWkdEUlMKbGFuZHNjYXBlci8xTQpsYW5kc2xpZC80CmxhbmRzbGlkZS8xNE1HUwpsYW5kc2xpcC8xUwpsYW5kc21hbi8xTQpsYW5kc21lbi8xCmxhbmR3YXJkLzUxUwpsYW5lLzFNUwpsYW5ndWFnZS8xNE1TCmxhbmd1aWQvNTFQWQpsYW5ndWlkbmVzcy8xTQpsYW5ndWlzaC80RFNHCmxhbmd1b3IvMTRTTQpsYW5ndW9yb3VzLzVZCmxhbmsvNTRSWVRQCmxhbmtpbmVzcy8xTQpsYW5rbmVzcy8xTQpsYW5reS81UlRQCmxhbm9saW4vMTRNCmxhbnRlcm4vMTQ1TVMKbGFudGhhbnVtLzFNCmxhbnlhcmQvMU1TCmxhcC8xNDVTTQpsYXBhcm9zY29waWMvNQpsYXBhcm9zY29weS8xCmxhcGFyb3RvbXkvMQpsYXBib2FyZC8xU00KbGFwZG9nLzFTTQpsYXBlbC8xU00KbGFwaWRhcnkvMTVTTQpsYXBpbi8xU00KbGFwcGVkLzQ1CmxhcHBldC8xNFNNCmxhcHBpbmcvNDEKbGFwc2UvMTRBS0dNU0QKbGFwdG9wLzE1U00KbGFwd2luZy8xTVMKbGFyYm9hcmQvMVNNCmxhcmNlbmlzdC8xU00KbGFyY2Vub3VzLzUKbGFyY2VueS8xU00KbGFyY2gvMU1TCmxhcmQvMTRNRFJTWkcKbGFyZGVyLzFNCmxhcmR5LzUxUlQKbGFyZ2UvNTFSU1BNWVQKbGFyZ2VoZWFydGVkLzUKbGFyZ2VuZXNzLzFNCmxhcmdlc3MvMU0KbGFyZ2lzaC81CmxhcmdvLzE1U00KbGFyaWF0LzE0U00KbGFyay8xNE1EU0cKbGFya3NwdXIvMVNNCmxhcnZhLzFNCmxhcnZhZS8xCmxhcnZhbC81CmxhcnluZ2VhbC81MQpsYXJ5bmdlcy8xCmxhcnluZ2l0aXMvMU0KbGFyeW54LzFNCmxhc2FnbmEvMU1TCmxhc2NpdmlvdXMvNVlQCmxhc2NpdmlvdXNuZXNzLzFNCmxhc2UvNFpHRFJTCmxhc2VyLzE0TQpsYXNoLzE0NU1EU0dKCmxhc2hpbmcvMTRNCmxhc3MvMU1TCmxhc3NpZS8xU00KbGFzc2l0dWRlLzFNCmxhc3NvLzE0U01ERwpsYXN0LzU0MU1EWVNHCmxhc3RpbmcvNTQxWQpsYXQvMVMKbGF0Y2gncwpsYXRjaC80MVVEU0cKbGF0Y2hrZXkvMTVTTQpsYXRlLzUxWVRSUApsYXRlY29tZXIvMU1TCmxhdGVuY3kvMU0KbGF0ZW5lc3MvMU0KbGF0ZW50LzUxCmxhdGVyYWwvNTE0TURZU0cKbGF0ZXN0LzUxTQpsYXRleC8xTQpsYXRoLzE0TURSU1pHCmxhdGhlLzQxTQpsYXRoZXIvMTRHTUQKbGF0aGVyeS81CmxhdGhzLzEKbGF0aWNlcy8xCmxhdGlzaC81CmxhdGl0dWRlLzFNUwpsYXRpdHVkaW5hbC81CmxhdGl0dWRpbmFyaWFuLzUxTVMKbGF0cmluZS8xTVMKbGF0dGUvMVJTTQpsYXR0ZXIvNU1ZCmxhdHRpY2UvMTRNRFMKbGF0dGljZXdvcmsvMVNNCmxhdWQvMTRNRFNHQgpsYXVkYWJseS8KbGF1ZGFudW0vMTRNCmxhdWRhdG9yeS81CmxhdWdoLzE0Qk1ERwpsYXVnaGFibHkvCmxhdWdoaW5nLzE0TVkKbGF1Z2hpbmdzdG9jay8xU00KbGF1Z2hzLzE0CmxhdWdodGVyLzFNCmxhdW5jaC80MUFHTURTCmxhdW5jaGVyLzFTTQpsYXVuY2hwYWQvMVNNCmxhdW5kZXIvMTREUlpHUwpsYXVuZGVyZXIvMU0KbGF1bmRlcmV0dGUvMVNNCmxhdW5kcmVzcy8xNE1TCmxhdW5kcm9tYXQvMU1TCmxhdW5kcnkvMVNNCmxhdW5kcnltYW4vMU0KbGF1bmRyeW1lbi8xCmxhdW5kcnl3b21hbi8xTQpsYXVuZHJ5d29tZW4vMQpsYXVyZWF0ZS81MTRNUwpsYXVyZWF0ZXNoaXAvMU0KbGF1cmVsLzE0U00KbGF2LzFTR0QKbGF2YS8xTQpsYXZhZ2UvMTRNCmxhdmFsaWVyZS8xNVNNCmxhdmF0b3JpYWwvNQpsYXZhdG9yeS8xNVNNCmxhdmUvNDE1UwpsYXZlbmRlci8xNTRTTQpsYXZpc2gvNTQxUFRHRFJTWQpsYXZpc2huZXNzLzFNCmxhdy8xNFNNCmxhd2JyZWFrZXIvMVNNCmxhd2JyZWFraW5nLzUxTQpsYXdmdWwvNTFVUFkKbGF3ZnVsbmVzcy8xVU0KbGF3Z2l2ZXIvMU1TCmxhd2xlc3MvNVBZCmxhd2xlc3NuZXNzLzFNCmxhd21ha2VyLzFNUwpsYXdtYWtpbmcvMU0KbGF3bWFuLzFNCmxhd21lbi8xCmxhd24vMTRNUwpsYXdubW93ZXIvMVNNCmxhd3JlbmNpdW0vMU0KbGF3c3VpdC8xTVMKbGF3eWVyLzE0U00KbGF4LzE1VFJZUApsYXhhdGl2ZS81MU1TCmxheGl0eS8xTQpsYXhuZXNzLzFNCmxheS80MTVBSUNTR00KbGF5YWJvdXQvMVMKbGF5YXdheS8xNE0KbGF5ZXIvMTRDU00KbGF5ZXJlZC81NApsYXllcmluZy8xNE0KbGF5ZXR0ZS8xTVMKbGF5bWFuLzFNCmxheW1lbi8xCmxheW9mZi8xU00KbGF5b3V0LzFTTQpsYXlvdmVyLzFNUwpsYXlwZW9wbGUvMQpsYXlwZXJzb24vMU1TCmxheXVwLzFTTQpsYXl3b21hbi8xTQpsYXl3b21lbi8xCmxhemUvNDFNR0RTCmxhemlseS8KbGF6aW5lc3MvMU0KbGF6eS81NDFEUlNUR1AKbGF6eWJvbmVzLzFNCmxiLzFTCmxidy8xCmxlYS8xU00KbGVhY2gvMTREU0cKbGVhZC8xNDVNRE5SU1pHCmxlYWRlci8xTQpsZWFkZXJsZXNzLzUKbGVhZGVyc2hpcC8xU00KbGVhZGluZy80NTFNCmxlYWYvMTRNRFNHCmxlYWZhZ2UvMU0KbGVhZmxlc3MvNQpsZWFmbGV0LzE0R01EUwpsZWFmc3RhbGsvMU1TCmxlYWZ5LzVSVApsZWFndWUvMTREU01HCmxlYWsvMTQ1TURTRwpsZWFrYWdlLzFNUwpsZWFraW5lc3MvMU0KbGVha3kvNVBSVApsZWFuLzQxNU1EUlNUR0pQCmxlYW5pbmcvMTRNCmxlYW5uZXNzLzFNCmxlYXAvNDE1TURSU1pHCmxlYXBlci8xTQpsZWFwZnJvZy8xNE1TCmxlYXBmcm9nZ2VkLzQKbGVhcGZyb2dnaW5nLzE0CmxlYXB0LzQKbGVhcm4vNDFBVUdEUwpsZWFybmFiaWxpdHkvMQpsZWFybmFibGUvNTEKbGVhcm5lZGx5LwpsZWFybmVyLzFNUwpsZWFybmluZydzCmxlYXNlLzE0QURTTUcKbGVhc2ViYWNrLzFTTQpsZWFzZWhvbGQvNTFNUlNaCmxlYXNlaG9sZGVyLzFNCmxlYXNlci8xU00KbGVhc2gncwpsZWFzaC8xNFVEU0cKbGVhc3QvMTVNCmxlYXN0d2lzZS8KbGVhdGhlci8xNTRNUwpsZWF0aGVyZXR0ZS8xTQpsZWF0aGVybmVjay8xTVMKbGVhdGhlcnkvNQpsZWF2ZS80MURSU01aR0oKbGVhdmVuLzE0U0dNRApsZWF2ZW5lZC80NVUKbGVhdmVuaW5nLzQxNU0KbGVhdmVyLzFNCmxlYXZpbmdzLzFNCmxlY2gvMTRNRFJTWkcKbGVjaGVyLzE0TQpsZWNoZXJvdXMvNVBZCmxlY2hlcm91c25lc3MvMU0KbGVjaGVyeS8xTQpsZWNpdGhpbi8xTQpsZWN0ZXJuLzFNUwpsZWN0dXJlLzE0TVpHRFJTCmxlY3R1cmVyLzFNCmxlY3R1cmVzaGlwLzFTTQpsZWRnZS8xNFJTTVoKbGVkZ2VyLzE0TQpsZWUvMTVSU01aCmxlZWNoLzE0TURTRwpsZWVrLzFNUwpsZWVyLzQxNU1ERwpsZWVyaW5lc3MvMU0KbGVlcnkvNVJQVApsZWV3YXJkLzVTTQpsZWV3YXkvMU0KbGVmdC81MTRNUlNUCmxlZnRpc20vMU0KbGVmdGlzdC8xNVNNCmxlZnRtb3N0LzUKbGVmdG92ZXIvNTFTTQpsZWZ0d2FyZC81UwpsZWZ0eS8xNVNNCmxlZy8xNDVTTQpsZWdhY3kvMTVTTQpsZWdhbC81MVNNWQpsZWdhbGVzZS8xTQpsZWdhbGlzbS8xTVMKbGVnYWxpc3QvNTFTCmxlZ2FsaXN0aWMvNQpsZWdhbGlzdGljYWxseS8KbGVnYWxpdHkvMVNNCmxlZ2FsaXphdGlvbi8xTQpsZWdhbGl6ZS80R0RTCmxlZ2F0ZS8xNENYTU5TCmxlZ2F0ZWUvMU1TCmxlZ2F0aW9uJ3MvQUMKbGVnYXRvLzFTTQpsZWdlbmQvMTRTTQpsZWdlbmRhcmlseS8KbGVnZW5kYXJ5LzUxCmxlZ2VyZGVtYWluLzFNCmxlZ2dlZC81MTQKbGVnZ2luZXNzLzFNCmxlZ2dpbmcvMTRNUwpsZWdneS81MVJQVApsZWdob3JuLzFNUwpsZWdpYmlsaXR5LzFNCmxlZ2libGUvNQpsZWdpYmx5LwpsZWdpb24vNTE0U00KbGVnaW9uYXJ5LzE1U00KbGVnaW9ubmFpcmUvMVNNCmxlZ2lzbGF0ZS80RFNHTlYKbGVnaXNsYXRpb24vMU0KbGVnaXNsYXRpdmUvNTFZCmxlZ2lzbGF0b3IvMU1TCmxlZ2lzbGF0dXJlLzFTTQpsZWdpdC8xNQpsZWdpdGltYWN5LzFNCmxlZ2l0aW1hdGUvNTE0RFNZRwpsZWdpdGltYXRpemUvNEdEUwpsZWdpdGltaXphdGlvbi8xTQpsZWdpdGltaXplLzREU0cKbGVnbGVzcy81CmxlZ21hbi8xTQpsZWdtZW4vMQpsZWdyb29tLzFTTQpsZWd1bWUvMU1TCmxlZ3VtaW5vdXMvNQpsZWd3YXJtZXIvMVMKbGVnd29yay8xTQpsZWkvMVNNCmxlaXN1cmUvMURNWQpsZWlzdXJlbGluZXNzLzFNCmxlaXN1cmV3ZWFyLzFNCmxlaXRtb3RpZi8xTVMKbGVpdG1vdGl2LzFNUwpsZW1tYS8xUwpsZW1tZS9KRwpsZW1taW5nLzFNCmxlbW9uLzE1NFNNCmxlbW9uYWRlLzFTTQpsZW1vbmdyYXNzLzEKbGVtb255LzUKbGVtdXIvMVNNCmxlbmQvNDFSU1pHCmxlbmRlci8xTQpsZW5ndGgvMTRNTlgKbGVuZ3RoZW4vNEdECmxlbmd0aGlseS8KbGVuZ3RoaW5lc3MvMU0KbGVuZ3Rocy8xNApsZW5ndGh3aXNlLzUKbGVuZ3RoeS81UFJUCmxlbmllbmNlLzFNCmxlbmllbmN5LzFNCmxlbmllbnQvNTFZCmxlbml0aXZlLzUxCmxlbnMvMTRNUwpsZW50LzE0CmxlbnRpbC8xTVMKbGVudG8vNTEKbGVvbmluZS81MQpsZW9wYXJkLzFTTQpsZW9wYXJkZXNzLzFNUwpsZW90YXJkLzFTTQpsZXBlci8xNFNNCmxlcHJlY2hhdW4vMU1TCmxlcHJvc3kvMU0KbGVwcm91cy81CmxlcHRhLzEKbGVwdG9uLzFNUwpsZXNiaWFuLzUxNFNNCmxlc2JpYW5pc20vMU0KbGVzaW9uLzE0TVMKbGVzcy8rNDUxN01OUlgKbGVzc2VlLzE0TVMKbGVzc2VuLzQ3R0QKbGVzc29uLzQxTVMKbGVzc29yLzFNUwpsZXQvNDFJU00KbGV0ZG93bi8xU00KbGV0aGFsLzUxWQpsZXRoYXJnaWMvNQpsZXRoYXJnaWNhbGx5LwpsZXRoYXJneS8xTQpsZXR0ZXIvMTRaR01EUlMKbGV0dGVyYm9tYi8xUwpsZXR0ZXJib3gvMTU0UwpsZXR0ZXJlZC81NFUKbGV0dGVyZXIvMU0KbGV0dGVyaGVhZC8xTVMKbGV0dGVyaW5nLzQxTQpsZXR0ZXJwcmVzcy8xTQpsZXR0aW5nLzQxUwpsZXR0dWNlLzFNUwpsZXR1cC8xU00KbGV1Y2luZS8xCmxldWNvdG9teS8xUwpsZXVrZW1pYS8xTQpsZXVrZW1pYy81MVNNCmxldWtvY3l0ZS8xTVMKbGV2ZWUvMTRTTQpsZXZlbC81MTRQU1pHTURSWQpsZXZlbGVyLzUxTQpsZXZlbGhlYWRlZC81UApsZXZlbGhlYWRlZG5lc3MvMU0KbGV2ZWxuZXNzLzFNCmxldmVyLzE0U0dNRApsZXZlcmFnZSdzCmxldmVyYWdlLzE0Q0RTRwpsZXZpYXRoYW4vMTVNUwpsZXZpZXIvMU0KbGV2aXRhdGUvNERTR04KbGV2aXRhdGlvbi8xTQpsZXZpdHkvMU0KbGV2eS80MURSU01aRwpsZXdkLzUxNFJZUFQKbGV3ZG5lc3MvMU0KbGV4ZXIvMVMKbGV4aWNhbC81CmxleGljb2dyYXBoZXIvMU1TCmxleGljb2dyYXBoaWMvNQpsZXhpY29ncmFwaGljYWwvNQpsZXhpY29ncmFwaHkvMU0KbGV4aWNvbi8xNFNNCmxleGlzLzEKbGcvMQpsaWFiaWxpdGllcy8xCmxpYWJpbGl0eS8xQU0KbGlhYmxlLzVBCmxpYWlzZS80R0RTCmxpYWlzb24vMTRNUwpsaWFyLzFNUwpsaWIvMTRNCmxpYmF0aW9uLzFTTQpsaWJiZXIvMU1TCmxpYmVsLzE0U1pHTURSCmxpYmVsZXIvMU0KbGliZWxvdXMvNQpsaWJlcmFsLzUxTVlQUwpsaWJlcmFsaXNtLzFNCmxpYmVyYWxpdHkvMU0KbGliZXJhbGl6YXRpb24vMVNNCmxpYmVyYWxpemUvNEdEUwpsaWJlcmFsbmVzcy8xTQpsaWJlcmF0ZS80Q0RTR04KbGliZXJhdGlvbi8xQ00KbGliZXJhdG9yLzFNUwpsaWJlcnRhcmlhbi8xNVNNCmxpYmVydGluZS8xNU1TCmxpYmVydHkvMVNNCmxpYmlkaW5hbC81CmxpYmlkaW5vdXMvNQpsaWJpZG8vMU1TCmxpYnJhcmlhbi8xTVMKbGlicmFyaWFuc2hpcC8xCmxpYnJhcnkvMVNNCmxpYnJldHRpc3QvMU1TCmxpYnJldHRvLzFTTQpsaWNlLzEKbGljZW5zZS8xNE1HRFMKbGljZW5zZWQvNTRVCmxpY2Vuc2VlLzFNUwpsaWNlbnRpYXRlLzFTTQpsaWNlbnRpb3VzLzVZUApsaWNlbnRpb3VzbmVzcy8xTQpsaWNoZW4vMTRNUwpsaWNpdC81WQpsaWNrLzQxTURKU0cKbGlja2luZy8xNE0KbGljb3JpY2UvMVNNCmxpZC8xNFNNCmxpZGRlZC80NQpsaWRsZXNzLzUKbGlkby8xTVMKbGllLzQxRFNNCmxpZWQvMTRNUgpsaWVmLzVSVApsaWVnZS8xNVNNCmxpZW4vMTRNUwpsaWV1LzFNCmxpZXV0ZW5hbmN5LzFNCmxpZXV0ZW5hbnQvMTVNUwpsaWZlLzE0TVpSCmxpZmViZWx0LzFTCmxpZmVibG9vZC8xTQpsaWZlYm9hdC8xNE1TCmxpZmVidW95LzFNUwpsaWZlZm9ybXMvMQpsaWZlZ3VhcmQvMVNNCmxpZmVsZXNzLzVZUApsaWZlbGVzc25lc3MvMU0KbGlmZWxpa2UvNQpsaWZlbGluZS8xTVMKbGlmZWxvbmcvNQpsaWZlci8xTQpsaWZlc2F2ZXIvMVNNCmxpZmVzYXZpbmcvNTFNCmxpZmVzcGFuLzFTCmxpZmVzdHlsZS8xU00KbGlmZXRpbWUvMU1TCmxpZmV3b3JrLzFNUwpsaWZ0LzQxTURSU1pHCmxpZnRlci8xTQpsaWZ0b2ZmLzFTTQpsaWdhbWVudC8xTVMKbGlnYXRlLzRHTkRTCmxpZ2F0aW9uLzFNCmxpZ2F0dXJlLzE0TUdEUwpsaWdodCdzL0MKbGlnaHQvMTQ1Q0FTVEdECmxpZ2h0ZWQvNDVVCmxpZ2h0ZW4vNFNEUlpHCmxpZ2h0ZW5lci8xTQpsaWdodGVyLzE0NVNNCmxpZ2h0ZmFjZS8xTUQKbGlnaHRoZWFkZWQvNQpsaWdodGhlYXJ0ZWQvNVlQCmxpZ2h0aGVhcnRlZG5lc3MvMU0KbGlnaHRob3VzZS8xTVMKbGlnaHRpbmcncwpsaWdodGx5LwpsaWdodG5lc3MvMU0KbGlnaHRuaW5nLzE1NE1EUwpsaWdodHByb29mLzUKbGlnaHRzaGlwLzFNUwpsaWdodHdlaWdodC8xNTRTTQpsaWduZW91cy81CmxpZ25pbi8xCmxpZ25pdGUvMU0KbGlpCmxpa2FiaWxpdHkvMU0KbGlrYWJsZS81UApsaWthYmxlbmVzcy8xTQpsaWtlLzQxNTcrRU1HRFNUCmxpa2VsaWhvb2QvMVVNCmxpa2VsaWhvb2RzLzEKbGlrZWxpbmVzcy8xVU0KbGlrZWx5LzUxVVBSVApsaWtlbi80U0dECmxpa2VuZXNzLzE0VU0KbGlrZW5lc3Nlcy8xCmxpa2VyLzE1Cmxpa2V3aXNlLwpsaWtpbmcvNDFNCmxpbGFjLzE1U00KbGlsbGlwdXRpYW4vMTUKbGlsby8xUwpsaWx0LzQxTURTRwpsaWx5LzE1U00KbGltYi8xNE1TCmxpbWJlci81NDFVRFNHCmxpbWJlcm5lc3MvMU0KbGltYmxlc3MvNQpsaW1iby8xNFNNCmxpbWUvMTQ1TUdEUwpsaW1lYWRlLzFTTQpsaW1lbGlnaHQvMTRNCmxpbWVyaWNrLzFTTQpsaW1lc2NhbGUvMQpsaW1lc3RvbmUvMU0KbGltZXkvNTFTCmxpbWl0J3MKbGltaXQvMTU0Q1NaR0RSCmxpbWl0YXRpb24vMUNNCmxpbWl0YXRpb25zLzEKbGltaXRlZC80NTFVCmxpbWl0ZXIncwpsaW1pdGluZy8xNFMKbGltaXRsZXNzLzVQCmxpbWl0bGVzc25lc3MvMU0KbGltbi80RFNHCmxpbW8vMU1TCmxpbW91c2luZS8xTVMKbGltcC80MTVNRFJZU1BURwpsaW1wZXQvMU1TCmxpbXBpZC81WVAKbGltcGlkaXR5LzFNCmxpbXBpZG5lc3MvMU0KbGltcG5lc3MvMU0KbGlteS81UlQKbGluYWdlLzFNCmxpbmNocGluLzE0U00KbGluZGVuLzUxTVMKbGluZS8xNE1aR0RSU0oKbGluZWFnZS8xTVMKbGluZWFsLzVZCmxpbmVhbWVudC8xU00KbGluZWFyLzUxWQpzdXBlcmxpbmVhci81WQpsaW5lYXJpdHkvMU0KbGluZWJhY2tlci8xTVMKbGluZWQvNTRVCmxpbmVmZWVkLzEKbGluZW1hbi8xTQpsaW5lbWVuLzEKbGluZW4vMTVTTQpsaW5lbnMvMU0KbGluZXIvMTRNCmxpbmVzbWFuLzFNCmxpbmVzbWVuLzEKbGluZXVwLzFNUwpsaW5nLzFNCmxpbmdlci80WkdKRFJTCmxpbmdlcmVyLzFNCmxpbmdlcmllLzFNCmxpbmdlcmluZy8xNFkKbGluZ28vMU0KbGluZ29lcy8xCmxpbmd1YWwvNTEKbGluZ3VpbmUvMU0KbGluZ3Vpc3QvMVNNCmxpbmd1aXN0aWMvNVMKbGluZ3Vpc3RpY2FsbHkvCmxpbmd1aXN0aWNzLzFNCmxpbmltZW50LzE0U00KbGluaW5nLzE0TQpsaW5rLzE0TURSU0cKbGlua2FnZS8xTVMKbGlua21hbi8xCmxpbmttZW4vMQpsaW5rdXAvMU1TCmxpbm5ldC8xTVMKbGluby8xCmxpbm9sZXVtLzFNCmxpbnNlZWQvMU0KbGludCdzCmxpbnQvMTRDREdSCmxpbnRlbC8xTVMKbGludHMvMTQKbGludHkvNVRSCmxpb24vMTVNUwpsaW9uZXNzLzFNUwpsaW9uaGVhcnRlZC81Cmxpb25pemF0aW9uLzFNCmxpb25pemUvNEdEUwpsaXAvMTRTTQpsaXBpZC8xU00KbGlwb3N1Y3Rpb24vMTRNCmxpcHBlZC81NApsaXBweS81MQpsaXByZWFkLzRHUlMKbGlwcmVhZGVyLzFNCmxpcHJlYWRpbmcvMTRNCmxpcHN0aWNrLzE0TURTRwpsaXEvCmxpcXVlZmFjdGlvbi8xTQpsaXF1ZWZ5LzREU0cKbGlxdWV1ci8xNFNNCmxpcXVpZC8xNU1TCmxpcXVpZGF0ZS80NVhHTkRTCmxpcXVpZGF0aW9uLzFNCmxpcXVpZGF0b3IvMU1TCmxpcXVpZGl0eS8xTQpsaXF1aWRpemUvNFpHRFJTCmxpcXVpZGl6ZXIvMU0KbGlxdW9yLzE0TURHUwpsaXJhLzFNCmxpcmUvMQpsaXNsZS8xTQpsaXNwLzE0TURSU1pHCmxpc3Blci8xTQpsaXNzb21lLzUKbGlzdC8xNE1ETlNKWEcKbGlzdGVkLzQ1VQpsaXN0ZW4vNDFCTURSWkcKbGlzdGVuZXIvMU0KbGlzdGVyaWEvMQpsaXN0aW5nLzU0MU0KbGlzdGxlc3MvNVlQCmxpc3RsZXNzbmVzcy8xTQpsaXQvNDUxWlIKbGl0YW55LzFTTQpsaXRjaGkvMU1TCmxpdGUvNTE0CmxpdGVyLzFNCmxpdGVyYWN5LzFNCmxpdGVyYWwvNTFTTVlQCmxpdGVyYWxuZXNzLzFNCmxpdGVyYXJpbmVzcy8xTQpsaXRlcmFyeS81UApsaXRlcmF0ZS81MVNNWQpsaXRlcmF0aS8xTQpsaXRlcmF0dXJlLzFNCmxpdGhlLzU0MVJQWVQKbGl0aGVuZXNzLzFNCmxpdGhlc29tZS81CmxpdGhpdW0vMU0KbGl0aG9ncmFwaC8xNE1EUlpHCmxpdGhvZ3JhcGhlci8xTQpsaXRob2dyYXBoaWMvNQpsaXRob2dyYXBoaWNhbGx5LwpsaXRob2dyYXBocy8xNApsaXRob2dyYXBoeS8xTQpsaXRob3NwaGVyZS8xU00KbGl0aWdhbnQvMTVTTQpsaXRpZ2F0ZS80RFNHTgpsaXRpZ2F0aW9uLzFNCmxpdGlnYXRvci8xTVMKbGl0aWdpb3VzLzVQCmxpdGlnaW91c25lc3MvMU0KbGl0bXVzLzFNCmxpdG90ZXMvMU0KbGl0dGVyLzE0NU1EUlNaRwpsaXR0ZXJhdGV1ci8xTVMKbGl0dGVyYnVnLzFNUwpsaXR0ZXJlci8xTQpsaXR0bGUvNTgxTVRSUApsaXR0bGVuZXNzLzFNCmxpdHRvcmFsLzUxU00KbGl0dXJnaWNhbC81WQpsaXR1cmdpc3QvMVNNCmxpdHVyZ3kvMVNNCmxpdmFiaWxpdHkvMU0KbGl2YWJsZS81VQpsaXZlLzQ1QVRHRFNCCmxpdmVsaWhvb2QvMVNNCmxpdmVsaW5lc3MvMU0KbGl2ZWxvbmcvNTFTCmxpdmVseS81MVBSVApsaXZlbi80U0dECmxpdmVyJ3MKbGl2ZXIvMTVTCmxpdmVyaWVkLzQ1CmxpdmVyaXNoLzUKbGl2ZXJ3b3J0LzFNUwpsaXZlcnd1cnN0LzFNCmxpdmVyeS8xNDVDU00KbGl2ZXJ5bWFuLzFDTQpsaXZlcnltZW4vMUMKbGl2ZXN0b2NrLzFNCmxpdmV3YXJlLzEKbGl2aWQvNVkKbGl2aW5nLzQ1MU1TCmxpeC9LCmxpemFyZC8xTVMKbGwvMQpsbGFtYS8xU00KbGxhbm8vMVNNCmxvLzUxCmxvYWQncwpsb2FkLzE0QVVHU0QKbG9hZGFibGUvNQpsb2FkZXIvMU1TCmxvYWRpbmcncwpsb2FmLzE0TURSU1pHCmxvYWZlci8xNE0KbG9hbS8xNDVNCmxvYW15LzVUUgpsb2FuLzE0TURSU1pHCmxvYW5lci8xTQpsb2Fuc2hhcmtpbmcvNDFNCmxvYW53b3JkLzFNUwpsb2F0aC81NEpaR0RSUwpsb2F0aGUvNApsb2F0aGVyLzFNCmxvYXRoaW5nLzE0TQpsb2F0aHNvbWUvNVBZCmxvYXRoc29tZW5lc3MvMU0KbG9hdmVzLzEKbG9iLzQxU01ECmxvYmFyLzUKbG9iYmVkLzQKbG9iYmVyLzFNUwpsb2JiaW5nLzQKbG9iYnkvMTRHRFNNCmxvYmJ5aXN0LzFNUwpsb2JlLzFNUwpsb2JvdG9taXplLzREU0cKbG9ib3RvbXkvMVNNCmxvYnN0ZXIvNTE0TVMKbG9jYWwvNTFTTVkKbG9jYWxlLzFNUwpsb2NhbGl0eS8xU00KbG9jYWxpemF0aW9uLzFNCmxvY2FsaXplLzREU0cKbG9jYXRlLzRFQUdORFMKbG9jYXRpb24ncy9BCmxvY2F0aW9uLzFFU00KbG9jYXRvci8xTVMKbG9jYXZvcmUvMVNNCmxvY2kvMQpsb2NrLzE0TURSU0JaRwpsb2NrZXIvMU0KbG9ja2V0LzFNUwpsb2NramF3LzFNCmxvY2tvdXQvMU1TCmxvY2tzbWl0aC8xTQpsb2Nrc21pdGhzLzEKbG9ja3N0ZXAvMU0KbG9ja3VwLzFNUwpsb2NvLzUxNFMKbG9jb21vdGlvbi8xTQpsb2NvbW90aXZlLzE1TVMKbG9jb3dlZWQvMVNNCmxvY3VtLzFTCmxvY3VzLzFNCmxvY3VzdC8xNFNNCmxvY3V0aW9uLzFNUwpsb2RlLzFNUwpsb2Rlc3Rhci8xTVMKbG9kZXN0b25lLzFNUwpsb2RnZS8xNERSU0pNWkcKbG9kZ2VyLzFNCmxvZGdpbmcvMTRNCmxvZGdpbmdzLzFNCmxvZnQvMTQ1TURTRwpsb2Z0aWx5Lwpsb2Z0aW5lc3MvMU0KbG9mdHkvNVBSVApsb2cvMTRTTQpsb2dhbmJlcnJ5LzFTTQpsb2dhcml0aG0vMVNNCmxvZ2FyaXRobWljLzUKbG9nYm9vay8xU00KbG9nZS8xTVMKbG9nZ2VkLzQKbG9nZ2VyLzFTTQpsb2dnZXJoZWFkLzFTTQpsb2dnaWEvMVNNCmxvZ2dpbmcvNDFNCmxvZ2ljLzUxNE0KbG9naWNhbC81WQpsb2dpY2FsaXR5LzFNCmxvZ2ljaWFuLzFNUwpsb2dpbi8xNFNNCmxvZ2lzdGljLzUxUwpsb2dpc3RpY2FsLzVZCmxvZ2lzdGljcy8xTQpsb2dqYW0vMTRTTQpsb2dvLzFNUwpsb2dvZmYvMVNNCmxvZ29uLzE0U00KbG9nb3R5cGUvMVNNCmxvZ291dC8xU00KbG9ncm9sbGluZy8xNE0KbG9neS81MVJUCmxvaW4vMU1TCmxvaW5jbG90aC8xTQpsb2luY2xvdGhzLzEKbG9pdGVyLzQxWkdTRFIKbG9pdGVyZXIvMU0KbG9pdGVyaW5nLzQxTQpsb2xjYXQvMVNNCmxvbGwvNERTRwpsb2xsaXBvcC8xU00KbG9sbG9wLzRHU0QKbG9sbHkvMTVTCmxvbGx5Z2FnLzQxUwpsb2xseWdhZ2dlZC80CmxvbGx5Z2FnZ2luZy80CmxvbmUvNVlaUgpsb25lbGluZXNzLzFNCmxvbmVseS81UFRSCmxvbmVyLzFNCmxvbmVzb21lLzUxWVAKbG9uZXNvbWVuZXNzLzFNCmxvbmcncwpsb25nLzUxNEtEU1RHCmxvbmdib2F0LzFNUwpsb25nYm93LzFNUwpsb25nZXIvNTEKbG9uZ2V2aXR5LzFNCmxvbmdoYWlyLzE1TVMKbG9uZ2hhbmQvMU0KbG9uZ2hvcm4vMU1TCmxvbmdob3VzZS8xUwpsb25naW5nLzQxTVlTCmxvbmdpc2gvNQpsb25naXR1ZGUvMU1TCmxvbmdpdHVkaW5hbC81MVkKbG9uZ3Nob3JlbWFuLzFNCmxvbmdzaG9yZW1lbi8xCmxvbmdzaWdodGVkLzUKbG9uZ3N0YW5kaW5nLzUKbG9uZ3RpbWUvNQpsb25ndWV1ci8xU00KbG9uZ3dheXMvCmxvby8xNApsb29mYWgvMTRNCmxvb2ZhaHMvMTQKbG9vay80MU1EUlNaR34KbG9va2FsaWtlLzFNUwpsb29rZXIvMU0KbG9va291dC8xTVMKbG9va3VwLzE0Uwpsb29tLzE0TURTRwpsb29uLzFNUwpsb29uaWUvMU0KbG9vbnkvNTFSU01UCmxvb3AvMTRNRFNHCmxvb3Bob2xlLzE0TVMKbG9vcHkvNVJUCmxvb3MvMU5SWApsb29zZS80NTFVRFNURwpsb29zZWx5Lwpsb29zZW4vNFVHU0QKbG9vc2VuZXNzLzFNCmxvb3QvMTRNRFJTWkcKbG9vdGVyLzFNCmxvb3RpbmcvMTRNCmxvcC80MVMKbG9wZS80MU1HRFMKbG9wcGVkLzQKbG9wcGluZy8xNApsb3BzaWRlZC81WVAKbG9wc2lkZWRuZXNzLzFNCmxvcXVhY2lvdXMvNVBZCmxvcXVhY2lvdXNuZXNzLzFNCmxvcXVhY2l0eS8xTQpsb3JkLzE0TURZU0cKbG9yZGxpbmVzcy8xTQpsb3JkbHkvNVRQUgpsb3Jkc2hpcC8xU00KbG9yZS8xNE0KbG9yZ25ldHRlLzFTTQpsb3Jpcy8xTVMKbG9ybi81NApsb3JyeS8xNFNNCmxvc2UvNDFaR1JTSgpsb3Nlci8xTQpsb3NpbmcvNDUxTQpsb3NzLzE0TVMKbG9zc2xlc3MvNQpsb3N0LzQ1CmxvdC8xNFNNCmxvdGlvbi8xNFNNCmxvdHRlcnkvMVNNCmxvdHRvLzFNCmxvdHVzLzFNUwpsb3VjaGUvNTE0CmxvdWQvNTFSWVRQCmxvdWRoYWlsZXIvMVNNCmxvdWRtb3V0aC8xTUQKbG91ZG1vdXRocy8xCmxvdWRuZXNzLzFNCmxvdWRzcGVha2VyLzFNUwpsb3VnaC8xCmxvdWdocy8xCmxvdW5nZS80MU1aR0RSUwpsb3VuZ2VyLzFNCmxvdXIvNDFEU0cKbG91c2Uncwpsb3VzZS8xNENEU0cKbG91c2lseS8KbG91c2luZXNzLzFNCmxvdXN5LzVUUFIKbG91dC8xNE1TCmxvdXRpc2gvNVBZCmxvdXZlci8xTURTCmxvdmFibGVuZXNzLzFNCmxvdmFibHkvCmxvdmUvMTRNWVpHRFJTQgpsb3ZlYmlyZC8xNFNNCmxvdmVjaGlsZC8xTQpsb3ZlZC80NVUKbG92ZWxlc3MvNQpsb3ZlbGluZXNzLzFNCmxvdmVsb3JuLzUxCmxvdmVseS81MVJTTVRQCmxvdmVtYWtpbmcvMU0KbG92ZXIvMU0KbG92ZXNpY2svNQpsb3ZleS8xUwpsb3ZpbmcvMTU0WQpsb3cvNTE0U1pUR01EUllQCmxvd2Jvcm4vNQpsb3dib3kvMU1TCmxvd2Jyb3cvNTFTTQpsb3dkb3duLzE1TQpsb3dlci81NEdECmxvd2VyY2FzZS8xNTRNCmxvd2VybW9zdC81Cmxvd2lzaC81Cmxvd2xhbmQvMVNaTVIKbG93bGFuZGVyLzFNCmxvd2xpZmUvNTFTTQpsb3dsaW5lc3MvMU0KbG93bHkvNVRQUgpsb3duZXNzLzFNCmxveC8xNE0KbG95YWwvNUVUWQpsb3lhbGVyLzUKbG95YWxpc20vMU0KbG95YWxpc3QvMVNNCmxveWFsdGllcy8xCmxveWFsdHkvMUVNCmxvemVuZ2UvMTRTTQpsdGQvNQpsdWF1LzFNUwpsdWJiZXIvMU1ZUwpsdWJlLzE0NU1HRFMKbHVicmljYW50LzFTTQpsdWJyaWNhdGUvNERTR04KbHVicmljYXRpb24vMU0KbHVicmljYXRvci8xTVMKbHVicmljaW91cy81WQpsdWJyaWNpdHkvMU0KbHVjaWQvNTFQWQpsdWNpZGl0eS8xTQpsdWNpZG5lc3MvMU0KbHVjay8xNE1EU0cKbHVja2lseS9VCmx1Y2tpbmVzcy8xVU0KbHVja2xlc3MvNQpsdWNreS81MVVQVFIKbHVjcmF0aXZlLzVZUApsdWNyYXRpdmVuZXNzLzFNCmx1Y3JlLzFNCmx1Y3VicmF0ZS80R05EUwpsdWN1YnJhdGlvbi8xTQpsdWRpY3JvdXMvNVlQCmx1ZGljcm91c25lc3MvMU0KbHVkby8xCmx1ZmYvMTREU0cKbHVnLzE0U00KbHVnZS8xNFMKbHVnZ2FnZS8xTQpsdWdnZWQvNDUKbHVnZ2VyLzFNUwpsdWdnaW5nLzQxCmx1Z2hvbGUvMVMKbHVnc2FpbC8xU00KbHVndWJyaW91cy81WVAKbHVndWJyaW91c25lc3MvMU0KbHVrZXdhcm0vNVlQCmx1a2V3YXJtbmVzcy8xTQpsdWxsLzE0TURTRwpsdWxsYWJ5LzE0U00KbHVsdS8xUwpsdW1iYWdvLzE0TQpsdW1iYXIvNTEKbHVtYmVyLzE0TURSWkdTCmx1bWJlcmVyLzFNCmx1bWJlcmluZy8xNU0KbHVtYmVyamFjay8xNFNNCmx1bWJlcm1hbi8xTQpsdW1iZXJtZW4vMQpsdW1iZXJ5YXJkLzFTTQpsdW1lbi8xCmx1bWluYXJ5LzFTTQpsdW1pbmVzY2VuY2UvMU0KbHVtaW5lc2NlbnQvNQpsdW1pbm9zaXR5LzFNCmx1bWlub3VzLzVZCmx1bW1veC8xTVMKbHVtcC8xNE1ETlNHCmx1bXBlY3RvbXkvMVMKbHVtcGVucHJvbGV0YXJpYXQvMQpsdW1waW5lc3MvMU0KbHVtcGlzaC81Cmx1bXB5LzVUUlAKbHVuYWN5LzFTTQpsdW5hci81MQpsdW5hdGljLzE1U00KbHVuY2gvMTRHTURTCmx1bmNoYm94LzFTCmx1bmNoZW9uLzE0U00KbHVuY2hlb25ldHRlLzFTTQpsdW5jaHJvb20vMU1TCmx1bmNodGltZS8xTVMKbHVuZy8xTURTRwpsdW5nZS8xNFNNCmx1bmdmaXNoLzFNUwpsdW5nZnVsLzFTCmx1bmtoZWFkLzFNUwpsdXBpbmUvNTFNUwpsdXB1cy8xTQpsdXJjaC8xNEdNRFMKbHVyZS8xNE1HRFMKbHVyZ3kvMQpsdXJpZC81UFkKbHVyaWRuZXNzLzFNCmx1cmsvNDFEUlNaRwpsdXNjaW91cy81UFkKbHVzY2lvdXNuZXNzLzFNCmx1c2gvNTE0TVJTWVBUCmx1c2huZXNzLzFNCmx1c3QvMTRNRFJTRwpsdXN0ZXIvMTRNCmx1c3Rlcmxlc3MvNQpsdXN0ZnVsLzVZCmx1c3RpbHkvCmx1c3RpbmVzcy8xTQpsdXN0cm91cy81WQpsdXN0eS81UFRSCmx1dGFuaXN0LzFTTQpsdXRlLzE0TVMKbHV0ZW5pc3QvMVNNCmx1dGV0aXVtLzFNCmx1eC8xNApsdXh1cmlhbmNlLzFNCmx1eHVyaWFudC81WQpsdXh1cmlhdGUvNERTR04KbHV4dXJpYXRpb24vMU0KbHV4dXJpb3VzLzVQWQpsdXh1cmlvdXNuZXNzLzFNCmx1eHVyeS8xNVNNCmx2aQpsdmlpCmx4aQpseGlpCmx4aXYKbHhpeApseHZpCmx4dmlpCmx5Y2V1bS8xTVMKbHljaGdhdGUvMVMKbHllLzE0TUcKbHlpbmcvNDE1TQpseW1waC8xTQpseW1waGF0aWMvNTFTTQpseW1waG9jeXRlLzFTTQpseW1waG9pZC81Cmx5bXBob21hLzFTTQpseW5jaC80MUpaR0RSUwpseW5jaGVyLzFNCmx5bmNoaW5nLzE0TQpseW54LzFNUwpseXJlLzE0TVMKbHlyZWJpcmQvMU1TCmx5cmljLzUxU00KbHlyaWNhbC81WQpseXJpY2lzbS8xTQpseXJpY2lzdC8xU00KbHlzb3NvbWFsLzUKbHlzb3NvbWVzLzEKbS81MTRLQVMKbWEnYW0vMTQKbWEvMVNNSAptYWMvMVNHTUQKbWFjYWJyZS81Cm1hY2FkYW0vMTRNCm1hY2FkYW1pYS8xU00KbWFjYWRhbWl6ZS80R0RTCm1hY2FxdWUvMU1TCm1hY2Fyb25pLzE1TVMKbWFjYXJvb24vMU1TCm1hY2F3LzFTTQptYWNlLzE0TVMKbWFjZXJhdGUvNDFEU0dOCm1hY2VyYXRpb24vMU0KbWFjaC9NCm1hY2hldGUvMTRTTQptYWNoaW5hdGUvNEdORFNYCm1hY2hpbmF0aW9uLzFNCm1hY2hpbmUvMTREU01HQgptYWNoaW5lcnkvMU0KbWFjaGluaXN0LzFNUwptYWNoaXNtby8xTQptYWNoby81MU0KbWFja2VyZWwvMVNNCm1hY2tpbmF3LzFTTQptYWNraW50b3NoLzFNUwptYWNyYW1lLzE0TQptYWNyby81MVNNCm1hY3JvYmlvdGljLzVTCm1hY3JvYmlvdGljcy8xTQptYWNyb2Nvc20vMVNNCm1hY3JvZWNvbm9taWMvNVMKbWFjcm9lY29ub21pY3MvMU0KbWFjcm9sb2d5LzFTCm1hY3Jvbi8xTVMKbWFjcm9waGFnZXMvMQptYWNyb3Njb3BpYy81Cm1hZC81NFNNWVAKbWFkYW0vMTRTTQptYWRhbWUvMU0KbWFkY2FwLzUxTVMKbWFkZGVuLzRER1MKbWFkZGVuaW5nLzU0WQptYWRkZXIvMTU0TVMKbWFkZGVzdC81Cm1hZGRpbmcvNTQKbWFkZS8xNEFVCm1hZGVtb2lzZWxsZS8xNE1TCm1hZGhvdXNlLzFTTQptYWRtYW4vMU0KbWFkbWVuLzEKbWFkbmVzcy8xTQptYWRyYXMvMU1TCm1hZHJhc2EvMVNNCm1hZHJhc2FoLzFNCm1hZHJhc2Focy8xCm1hZHJhc3NhLzFTTQptYWRyaWdhbC8xU00KbWFkd29tYW4vMU0KbWFkd29tZW4vMQptYWVsc3Ryb20vMVNNCm1hZXN0cm8vMVNNCm1hZmlhLzFTTQptYWZpb3NpLzEKbWFmaW9zby8xTQptYWcvMTRTTQptYWdhemluZS8xU00KbWFnZS8xTVMKbWFnZW50YS8xNU0KbWFnZ290LzE0NU1TCm1hZ2dvdHkvNQptYWdpLzFNCm1hZ2ljLzE1NFNNCm1hZ2ljYWwvNVkKbWFnaWNpYW4vMVNNCm1hZ2lja2VkLzQKbWFnaWNraW5nLzQKbWFnaXN0ZXJpYWwvNVkKbWFnaXN0cmFjeS8xTQptYWdpc3RyYXRlLzFTTQptYWdtYS8xTQptYWduYW5pbWl0eS8xTQptYWduYW5pbW91cy81WQptYWduYXRlLzFTTQptYWduZXNpYS8xTQptYWduZXNpdW0vMU0KbWFnbmV0LzFNUwptYWduZXRpYy81Cm1hZ25ldGljYWxseS8KbWFnbmV0aXNtLzFNCm1hZ25ldGl0ZS8xTQptYWduZXRpemFibGUvNQptYWduZXRpemF0aW9uLzFDTQptYWduZXRpemUvNENHRFMKbWFnbmV0by8xU00KbWFnbmV0b21ldGVyLzFTTQptYWduZXRvc3BoZXJlLzEKbWFnbmlmaWNhdGlvbi8xTQptYWduaWZpY2VuY2UvMU0KbWFnbmlmaWNlbnQvNVkKbWFnbmlmaWVyLzFNCm1hZ25pZnkvNFpHWERSU04KbWFnbmlsb3F1ZW5jZS8xTQptYWduaWxvcXVlbnQvNQptYWduaXR1ZGUvMVNNCm1hZ25vbGlhLzE1TVMKbWFnbm9uLzEKbWFnbnVtLzFNUwptYWdwaWUvMTRNUwptYWd1cy8xTQptYWhhcmFqYWgvMU0KbWFoYXJhamFocy8xCm1haGFyYW5pLzFTTQptYWhhcmlzaGkvMVNNCm1haGF0bWEvMVNNCm1haG9nYW55LzE1U00KbWFob3V0LzE0TVMKbWFpZC8xTU5TWAptYWlkZW4vMTVNWQptYWlkZW5oYWlyLzFNCm1haWRlbmhlYWQvMVNNCm1haWRlbmhvb2QvMU0KbWFpZHNlcnZhbnQvMVNNCm1haWwvMTRKTURSU1pHCm1haWxiYWcvMVNNCm1haWxib21iLzE0R1NECm1haWxib3gvMU1TCm1haWxlci8xTQptYWlsaW5nLzE0TQptYWlsbG90LzFTTQptYWlsbWFuLzFNCm1haWxtZW4vMQptYWlsc2hvdC8xNFMKbWFpbS80MURTRwptYWluLzU0MU1ZUwptYWluZnJhbWUvMVNNCm1haW5sYW5kLzFNUwptYWlubGluZS81NDFNR0RTCm1haW5tYXN0LzFNUwptYWluc2FpbC8xTVMKbWFpbnNwcmluZy8xTVMKbWFpbnN0YXkvMU1TCm1haW5zdHJlYW0vNTE0U01ERwptYWludGFpbi80WkdCRFJTCm1haW50YWluYWJpbGl0eS8xCm1haW50YWluYWJsZS81VQptYWludGFpbmVkLzU0VQptYWludGVuYW5jZS8xTQptYWludG9wLzFTTQptYWlzb25ldHRlLzFNUwptYWl6ZS8xU00KbWFqZXN0aWMvNQptYWplc3RpY2FsbHkvCm1hamVzdHkvMVNNCm1ham9saWNhLzFNCm1ham9yLzUxNFNHTURZCm1ham9yZG9tby8xTVMKbWFqb3JldHRlLzFNUwptYWpvcml0YXJpYW4vNTFTTQptYWpvcml0YXJpYW5pc20vMQptYWpvcml0eS8xU00KbWFrZSdzL0EKbWFrZS80MVVBR1MKbWFrZW92ZXIvMU1TCm1ha2VyLzFTTQptYWtlc2hpZnQvMTVTTQptYWtldXAvMTRNUwptYWtld2VpZ2h0LzFTCm1ha2luZy8xNE1TCm1ha2luZ3MvMU0KbWFsYWNoaXRlLzE1TQptYWxhZGp1c3RlZC80NQptYWxhZGp1c3RtZW50LzFNCm1hbGFkbWluaXN0cmF0aW9uLzEKbWFsYWRyb2l0LzUxUFkKbWFsYWRyb2l0bmVzcy8xTQptYWxhZHkvMVNNCm1hbGFpc2UvMU0KbWFsYW11dGUvMU1TCm1hbGFwcm9waXNtLzFTTQptYWxhcmlhLzFNCm1hbGFyaWFsLzUxCm1hbGFya2V5LzFNCm1hbGF0aGlvbi8xTQptYWxjb250ZW50LzUxNE1TCm1hbGUvNTFNUFMKbWFsZWRpY3Rpb24vMVNNCm1hbGVmYWN0aW9uLzFNCm1hbGVmYWN0b3IvMVNNCm1hbGVmaWMvNTEKbWFsZWZpY2VuY2UvMU0KbWFsZWZpY2VudC81Cm1hbGVuZXNzLzFNCm1hbGV2b2xlbmNlLzFNCm1hbGV2b2xlbnQvNVkKbWFsZmVhc2FuY2UvMU0KbWFsZm9ybWF0aW9uLzFTTQptYWxmb3JtZWQvNQptYWxmdW5jdGlvbi8xNE1EU0cKbWFsaWNlLzE0TQptYWxpY2lvdXMvNVBZCm1hbGljaW91c25lc3MvMU0KbWFsaWduLzU0RFNHCm1hbGlnbmFuY3kvMVNNCm1hbGlnbmFudC81MVkKbWFsaWduaXR5LzFNCm1hbGluZ2VyLzRaR1NEUgptYWxpbmdlcmVyLzFNCm1hbGwvMTRNUwptYWxsYXJkLzFTTQptYWxsZWFiaWxpdHkvMU0KbWFsbGVhYmxlLzUKbWFsbGV0LzE0TVMKbWFsbG93LzFNUwptYWxub3VyaXNoZWQvNTQKbWFsbnV0cml0aW9uLzFNCm1hbG9jY2x1c2lvbi8xTQptYWxvZG9yb3VzLzUKbWFscHJhY3RpY2UvMVNNCm1hbHQvMTRNRFNHCm1hbHRlZC81MTRNUwptYWx0b3NlLzFNCm1hbHRyZWF0LzRHTERTCm1hbHRyZWF0bWVudC8xTQptYWx0eS81VFIKbWFsd2FyZS8xTQptYW0vMVMKbWFtYS8xTVMKbWFtYmEvMVNNCm1hbWJvLzE0U0dNRAptYW1tYS8xTQptYW1tYWwvMU1TCm1hbW1hbGlhbi81MU1TCm1hbW1hcnkvNTEKbWFtbW9ncmFtLzFNUwptYW1tb2dyYXBoeS8xTQptYW1tb24vMk0KbWFtbW90aC8xNU0KbWFtbW90aHMvMQptYW1teS8xU00KbWFuJ3MvMTU4NDJGCm1hbi8xNTg0MlVTWQptYW5hY2xlLzE0RFNNRwptYW5hZ2UvNDFaR0RSU0wKbWFuYWdlYWJpbGl0eS8xTQptYW5hZ2VhYmxlLzVVCm1hbmFnZW1lbnQvMU1TCm1hbmFnZXIvMU0KbWFuYWdlcmVzcy8xUwptYW5hZ2VyaWFsLzUKbWFuYW5hL01TCm1hbmF0ZWUvMVNNCm1hbmRhbGEvMVNNCm1hbmRhbXVzLzE0TVMKbWFuZGFyaW4vMTVNUwptYW5kYXRlLzE0RFNNRwptYW5kYXRvcnkvNTEKbWFuZGlibGUvMU1TCm1hbmRpYnVsYXIvNQptYW5kb2xpbi8xNE1TCm1hbmRyYWtlLzFNUwptYW5kcmVsLzE0U00KbWFuZHJpbGwvMU1TCm1hbmUvMU1EUwptYW5lZ2UvMU0KbWFuZXV2ZXIvMTRNREdTQkoKbWFuZXV2ZXJhYmlsaXR5LzFNCm1hbmZ1bC81WQptYW5nYS8xTQptYW5nYW5lc2UvMU0KbWFuZ2UvMURSTVoKbWFuZ2VyLzFNCm1hbmdldG91dC8xUwptYW5naW5lc3MvMU0KbWFuZ2xlLzQxTVpHRFJTCm1hbmdvLzE0TQptYW5nb2VzLzE0Cm1hbmdyb3ZlLzFNUwptYW5neS81VFJQCm1hbmhhbmRsZS80R0RTCm1hbmhvbGUvMVNNCm1hbmhvb2QvMU0KbWFuaHVudC8xU00KbWFuaWEvMVNNCm1hbmlhYy8xTVMKbWFuaWFjYWwvNVkKbWFuaWMvNTFTTQptYW5pY2FsbHkvCm1hbmljdXJlLzE0TUdEUwptYW5pY3VyaXN0LzFNUwptYW5pZmVzdC81MTRNRFlTRwptYW5pZmVzdGF0aW9uLzFTTQptYW5pZmVzdG8vMTRTTQptYW5pZm9sZC81MTRHTURTCm1hbmlraW4vMVNNCm1hbmlsYS81MU0KbWFuaW9jLzFNUwptYW5pcHVsYWJsZS81Cm1hbmlwdWxhdGUvNFhHTlZEUwptYW5pcHVsYXRpb24vMU0KbWFuaXB1bGF0aXZlLzUxWQptYW5pcHVsYXRvci8xTVMKbWFua2luZC8xTQptYW5reS81Cm1hbmxpa2UvNQptYW5saW5lc3MvMU0KbWFubHkvNVVUUgptYW5uYS8xTQptYW5uZWQvNTRVCm1hbm5lcXVpbi8xU00KbWFubmVyLzFNRFlTCm1hbm5lcmlzbS8xU00KbWFubmVybHkvNVUKbWFubmluZy80VQptYW5uaXNoLzVZUAptYW5uaXNobmVzcy8xTQptYW5vbWV0ZXIvMVNNCm1hbm9yLzFTTQptYW5vcmlhbC81Cm1hbnBvd2VyLzFNCm1hbnF1ZS81Cm1hbnNhcmQvNTFNUwptYW5zZS80MVNYTU4KbWFuc2VydmFudC8xTQptYW5zaW9uLzFNCm1hbnNsYXVnaHRlci8xTQptYW50YS8xU00KbWFudGVsLzE0TVMKbWFudGVscGllY2UvMVNNCm1hbnRlbHNoZWxmLzEKbWFudGVsc2hlbHZlcy8xCm1hbnRlcy8xCm1hbnRpbGxhLzFTTQptYW50aXMvMU1TCm1hbnRpc3NhLzFTTQptYW50bGUncwptYW50bGUvMTRFR0RTCm1hbnRyYS8xTVMKbWFudWFsLzE1TVlTCm1hbnVmYWN0dXJlLzE0RFJTTVpHCm1hbnVmYWN0dXJlci8xTQptYW51ZmFjdHVyaW5nLzE1NE0KbWFudW1pc3Npb24vMVNNCm1hbnVtaXQvNFMKbWFudW1pdHRlZC80Cm1hbnVtaXR0aW5nLzQKbWFudXJlLzQxTUdEUwptYW51c2NyaXB0LzUxTVMKbWFueS84MTVNCm1hcCdzCm1hcC8xNEFTCm1hcGxlLzFTTQptYXBtYWtlci8xU00KbWFwcGVkLzRBCm1hcHBlci8xTVMKbWFwcGluZy8xNFMKbWFyLzQxUwptYXJhYm91LzFNUwptYXJhYm91dC8xU00KbWFyYWNhLzFNUwptYXJhc2NoaW5vLzFNUwptYXJhdGhvbi8xNFNNUloKbWFyYXRob25lci8xTQptYXJhdWQvNFpHRFJTCm1hcmF1ZGVyLzFNCm1hcmJsZS8xNDVNR0RTCm1hcmJsZWl6ZS80R0RTCm1hcmJsaW5nLzQxTQptYXJjaC8xNFpHTURSUwptYXJjaGVyLzFNCm1hcmNoaW9uZXNzLzFNUwptYXJlLzFNUwptYXJnYXJpbmUvMU0KbWFyZ2FyaXRhLzFNUwptYXJnZS8xCm1hcmdpbi8xNE1TCm1hcmdpbmFsLzUxWVMKbWFyZ2luYWxpYS8xTQptYXJnaW5hbGl6YXRpb24vMU0KbWFyZ2luYWxpemUvNEdEUwptYXJpYS8xTQptYXJpYWNoaS81MU1TCm1hcmlnb2xkLzE1TVMKbWFyaWp1YW5hLzFNCm1hcmltYmEvMVNNCm1hcmluYS8xTVMKbWFyaW5hZGUvMTREU01HCm1hcmluYXJhLzUxTQptYXJpbmF0ZS80RFNHTgptYXJpbmF0aW9uLzFNCm1hcmluZS81MTRNWlJTCm1hcmluZXIvMU0KbWFyaW9uZXR0ZS8xNE1TCm1hcml0YWwvNVkKbWFyaXRpbWUvNQptYXJqb3JhbS8xTQptYXJrLzE0QU1EU0cKTWFya2Rvd24vMTJTTQptYXJrZWQvNTRVCm1hcmtlZGx5LwptYXJrZXIvMTRNUwptYXJrZXQvMTRNRFJaR0JTCm1hcmtldGFiaWxpdHkvMU0KbWFya2V0YWJsZS81VQptYXJrZXRlZXIvMVNNCm1hcmtldGVyLzFNCm1hcmtldGluZy80MU0KbWFya2V0cGxhY2UvMVNNCm1hcmtpbmcvMTRTTQptYXJra2EvMU0KbWFya2thYS8xCm1hcmtzbWFuLzFNCm1hcmtzbWFuc2hpcC8xTQptYXJrc21lbi8xCm1hcmt1cC8xTVMKbWFybC8xNE0KbWFybGluLzFNUwptYXJsaW5lc3Bpa2UvMVNNCm1hcm1hbGFkZS8xNE0KbWFybW9yZWFsLzUKbWFybW9zZXQvMVNNCm1hcm1vdC8xTVMKbWFyb29uLzE1NE1ER1MKbWFycXVlLzFNUwptYXJxdWVlLzE1NFNNCm1hcnF1ZXNzLzFNUwptYXJxdWV0cnkvMU0KbWFycXVpcy8xTVMKbWFycXVpc2UvMU0KbWFycXVpc2V0dGUvMU0KbWFycmVkLzU0VQptYXJyaWFnZS8xQVNNCm1hcnJpYWdlYWJpbGl0eS8xTQptYXJyaWFnZWFibGUvNTEKbWFycmllZC81NDFTTQptYXJyaW5nLzQxCm1hcnJvdy8xTVMKbWFycnkvNEFHRFMKbWFyc2gvMU1TCm1hcnNoYWwvMTRTTURHCm1hcnNobGFuZC8xU00KbWFyc2htYWxsb3cvMTRTTQptYXJzaHkvNVJUCm1hcnN1cGlhbC8xNU1TCm1hcnQvMTRNTlNYCm1hcnRlbi8xTQptYXJ0ZW5zaXRlLzEKbWFydGlhbC81MVkKbWFydGlhbi81MVMKbWFydGluLzFNUwptYXJ0aW5ldC8xTVMKbWFydGluZ2FsZS8xNE1TCm1hcnRpbmkvMVNNCm1hcnR5ci8xNE1ER1MKbWFydHlyZG9tLzFNCm1hcnZlbC8xNE1ER1MKbWFydmVsb3VzLzVZCm1hcnppcGFuLzE0TQptYXNjLzUxCm1hc2NhcmEvMTRHTURTCm1hc2NvdC8xNE1TCm1hc2N1bGluZS81MVNNCm1hc2N1bGluaXR5LzFNCm1hc2VyLzFTTQptYXNoLzE0TURSU1pHCm1hc2hlci8xTQptYXNodXAvMU1TCm1hc2sncwptYXNrLzE0VURTRwptYXNrZXIvNDFNUwptYXNvY2hpc20vMU0KbWFzb2NoaXN0LzFTTQptYXNvY2hpc3RpYy81Cm1hc29jaGlzdGljYWxseS8KbWFzb24vMTRTTQptYXNvbmljLzUKbWFzb25yeS8xTQptYXNxdWUvMTRNUwptYXNxdWVyYWRlLzE0RFJTTVpHCm1hc3F1ZXJhZGVyLzFNCm1hc3MvMTQ1TURTR1YKbWFzc2FjcmUvMTRNR0RTCm1hc3NhZ2UvMTREU01HCm1hc3NldXIvMVNNCm1hc3NldXNlLzFNUwptYXNzaWYvMU1TCm1hc3NpdmUvNTFQWQptYXNzaXZlbmVzcy8xTQptYXN0LzE0TURTCm1hc3RlY3RvbXkvMVNNCm1hc3RlcidzLzEKbWFzdGVyLzE1NEFER1MKbWFzdGVyY2xhc3MvMVMKbWFzdGVyZnVsLzVZCm1hc3Rlcmx5LzUKbWFzdGVybWluZC8xNFNHTUQKbWFzdGVycGllY2UvMU1TCm1hc3RlcnN0cm9rZS8xU00KbWFzdGVyd29yay8xTVMKbWFzdGVyeS8xTQptYXN0aGVhZC8xNE1TCm1hc3RpYy8xTQptYXN0aWNhdGUvNEdORFMKbWFzdGljYXRpb24vMU0KbWFzdGlmZi8xU00KbWFzdGl0aXMvMQptYXN0b2Rvbi8xU00KbWFzdG9pZC81MVNNCm1hc3R1cmJhdGUvNEdORFMKbWFzdHVyYmF0aW9uLzFNCm1hc3R1cmJhdG9yeS81Cm1hdC8xNDVTWkdNRFIKbWF0YWRvci8xU00KbWF0Y2gvMTRBTVMKbWF0Y2hib29rLzFTTQptYXRjaGJveC8xTVMKbWF0Y2hlZC80MVUKbWF0Y2hpbmcvNDUxCm1hdGNobGVzcy81Cm1hdGNobG9jay8xU00KbWF0Y2htYWtlci8xTVMKbWF0Y2htYWtpbmcvMTRNCm1hdGNoc3RpY2svMU1TCm1hdGNod29vZC8xTQptYXRlLzE0TVMKbWF0ZXJpYWwvNTE0U01ZCm1hdGVyaWFsaXNtLzFNCm1hdGVyaWFsaXN0LzE1U00KbWF0ZXJpYWxpc3RpYy81Cm1hdGVyaWFsaXN0aWNhbGx5LwptYXRlcmlhbGl6YXRpb24vMU0KbWF0ZXJpYWxpemUvNERTRwptYXRlcmllbC8xTQptYXRlcm5hbC81MVkKbWF0ZXJuaXR5LzFNCm1hdGV5LzUxUwptYXRoZW1hdGljYWwvNVkKbWF0aGVtYXRpY2lhbi8xU00KbWF0aGVtYXRpY3MvMU0KbWF0aW5lZS8xNFNNCm1hdGluZy81MTRNCm1hdGlucy8xTQptYXRyaWFyY2gvMU0KbWF0cmlhcmNoYWwvNQptYXRyaWFyY2hzLzEKbWF0cmlhcmNoeS8xU00KbWF0cmljZXMvMQptYXRyaWNpZGFsLzUKbWF0cmljaWRlLzFNUwptYXRyaWN1bGF0ZS80MURTR04KbWF0cmljdWxhdGlvbi8xTQptYXRyaW1vbmlhbC81MQptYXRyaW1vbnkvMU0KbWF0cml4LzFNCm1hdHJvbi8xTVlTCm1hdHRlLzE1RFJTTVpHCm1hdHRlci8xNE1ERwptYXR0aW5nLzE0TQptYXR0b2NrLzE0U00KbWF0dHJlc3MvMTRNUwptYXR1cmF0ZS80R05EUwptYXR1cmF0aW9uLzFNCm1hdHVyZS81NFlUR0RSUwptYXR1cml0eS8xU00KbWF0em8vMVNNSAptYXR6b2gvMU0KbWF0em9ocy8xCm1hdHpvdC8xCm1hdWRsaW4vMTUKbWF1bC8xNE1EUlNaRwptYXVsZXIvMU0KbWF1bmRlci80MVNERwptYXVzb2xldW0vMVNNCm1hdXZlLzE1TQptYXZlbi8xU00KbWF2ZXJpY2svNTE0U00KbWF3LzFTTQptYXdraXNoLzVQWQptYXdraXNobmVzcy8xTQptYXgvNTE0R01EUwptYXhpLzUxTVMKbWF4aWxsYS8xTQptYXhpbGxhZS8xCm1heGlsbGFyeS81MQptYXhpbS8xU00KbWF4aW1hLzEKbWF4aW1hbC81MVkKbWF4aW1pemF0aW9uLzFNCm1heGltaXplLzRHRFMKbWF4aW11bS8xNVNNCm1heS80MU0KbWF5YmUvNTFTTQptYXlkYXkvMU1TCm1heWZsb3dlci8xTVMKbWF5Zmx5LzFTTQptYXloZW0vMTRNCm1heW4ndC80Cm1heW8vMU0KbWF5b25uYWlzZS8xNE0KbWF5b3IvMVNNCm1heW9yYWwvNTEKbWF5b3JhbHR5LzFNCm1heW9yZXNzLzFNUwptYXlwb2xlLzE0U00KbWF5c3QvNAptYXplLzE0TVMKbWF6dXJrYS8xTVMKbWRzZS8xCm1lLzgxRFNIfgptZWFkLzFNCm1lYWRvdy8xNE1TCm1lYWRvd2xhcmsvMU1TCm1lYWdlci81NFBZCm1lYWdlcm5lc3MvMU0KbWVhbC8xNE1TCm1lYWxpbmVzcy8xTQptZWFsdGltZS8xU00KbWVhbHkvNTFUUFIKbWVhbHlidWcvMVNNCm1lYWx5bW91dGhlZC81Cm1lYW4vNDUxTVJZSlBTVEcKbWVhbmRlci8xNFNNREpHCm1lYW5kZXJpbmdzLzFNCm1lYW5pZS8xTQptZWFuaW5nLzE0NU0KbWVhbmluZ2Z1bC81UFkKbWVhbmluZ2Z1bG5lc3MvMU0KbWVhbmluZ2xlc3MvNVlQCm1lYW5pbmdsZXNzbmVzcy8xTQptZWFubmVzcy8xTQptZWFudC80VQptZWFudGltZS8xTQptZWFud2hpbGUvMU0KbWVhbnkvMVNNCm1lYXMvNAptZWFzbGVzLzE0TQptZWFzbHkvNVJUCm1lYXN1cmFibGUvNTEKbWVhc3VyYWJseS8KbWVhc3VyZSdzCm1lYXN1cmUvMTRBRFNHCm1lYXN1cmVkLzU0VQptZWFzdXJlbGVzcy81Cm1lYXN1cmVtZW50LzFNUwptZWF0LzFNUwptZWF0YmFsbC8xTVMKbWVhdGhlYWQvMU1TCm1lYXRpbmVzcy8xTQptZWF0bGVzcy81Cm1lYXRsb2FmLzFNCm1lYXRsb2F2ZXMvMQptZWF0cGFja2luZy8xTQptZWF0eS81VFBSCm1lY2NhLzFTTQptZWNoYW5pYy81MU1TCm1lY2hhbmljYWwvNTFZCm1lY2hhbmljcy8xTQptZWNoYW5pc20vMVNNCm1lY2hhbmlzdGljLzUKbWVjaGFuaXN0aWNhbGx5LwptZWNoYW5pemF0aW9uLzFNCm1lY2hhbml6ZS80RFNHCm1lZGFsLzE0U00KbWVkYWxpc3QvMU1TCm1lZGFsbGlvbi8xNFNNCm1lZGRsZS80WkdEUlMKbWVkZGxlci8xTQptZWRkbGVzb21lLzUKbWVkaWEvMTVTTQptZWRpYWwvNTFBWQptZWRpYW4vMTVNUwptZWRpYXRlLzQ1QURTR04KbWVkaWF0ZWQvNFUKbWVkaWF0aW9uLzFBTQptZWRpYXRvci8xTVMKbWVkaWMvNTFTTQptZWRpY2FpZC9NCm1lZGljYWwvNTFTTVkKbWVkaWNhbWVudC8xTQptZWRpY2FyZS8xTQptZWRpY2F0ZS80R05YRFMKbWVkaWNhdGlvbi8xTQptZWRpY2luYWwvNTFZCm1lZGljaW5lLzE0TVMKbWVkaWNvLzFNUwptZWRpZXZhbC81MQptZWRpZXZhbGlzdC8xTVMKbWVkaW9jcmUvNTEKbWVkaW9jcml0eS8xU00KbWVkaXRhdGUvNERTR05WWAptZWRpdGF0aW9uLzFNCm1lZGl0YXRpdmUvNVkKbWVkaXVtLzE1TVMKbWVkbGV5LzE0TVMKbWVkdWxsYS8xU00KbWVkdXNhLzEKbWVkdXNhZS8xCm1lZWQvMTRNCm1lZWsvNTRSWVBUCm1lZWtuZXNzLzFNCm1lZXJzY2hhdW0vMVNNCm1lZXQvNDE1TUpTRwptZWV0aW5nLzE0TQptZWV0aW5naG91c2UvMVNNCm1lZXR1cC8xTVMKbWVnLzE0UwptZWdhLzUxCm1lZ2FiaXQvMVNNCm1lZ2FidWNrcy8xTQptZWdhYnl0ZS8xTVMKbWVnYWNodXJjaC8xTVMKbWVnYWN5Y2xlLzFTTQptZWdhZGVhdGgvMU0KbWVnYWRlYXRocy8xCm1lZ2FncmFtLzFTCm1lZ2FoZXJ0ei8xTQptZWdham91bGUvMVMKbWVnYWxpdGgvMU0KbWVnYWxpdGhpYy81Cm1lZ2FsaXRocy8xCm1lZ2Fsb21hbmlhLzFNCm1lZ2Fsb21hbmlhYy8xNVNNCm1lZ2Fsb3BvbGlzLzFNUwptZWdhbWV0ZXIvMVMKbWVnYXBhc2NhbC8xUwptZWdhcGhvbmUvMTREU01HCm1lZ2FwaXhlbC8xNVNNCm1lZ2FzdGFyLzFTCm1lZ2F0b24vMVNNCm1lZ2F3YXR0LzFNUwptZWgvNTEKbWVpb3Npcy8xTQptZWlvdGljLzUKbWVsYW1pbmUvMU0KbWVsYW5jaG9saWEvMU0KbWVsYW5jaG9saWMvNTFTCm1lbGFuY2hvbHkvMTVNCm1lbGFuZ2UvMU1TCm1lbGFuaW4vMU0KbWVsYW5vbWEvMVNNCm1lbGQvNDFNRFNHCm1lbGVlLzE0NVNNCm1lbGlvcmF0ZS80R05WRFMKbWVsaW9yYXRpb24vMU0KbWVsbGlmbHVvdXMvNVBZCm1lbGxpZmx1b3VzbmVzcy8xTQptZWxsb3cvNTE0UFRHRFJZUwptZWxsb3duZXNzLzFNCm1lbG9kaWMvNQptZWxvZGljYWxseS8KbWVsb2Rpb3VzLzVZUAptZWxvZGlvdXNuZXNzLzFNCm1lbG9kcmFtYS8xTVMKbWVsb2RyYW1hdGljLzVTCm1lbG9kcmFtYXRpY2FsbHkvCm1lbG9kcmFtYXRpY3MvMU0KbWVsb2R5LzFTTQptZWxvbi8xNVNNCm1lbHQncwptZWx0LzQxQURTRwptZWx0ZG93bi8xU00KbWVtYmVyJ3MKbWVtYmVyLzE0RUFTCm1lbWJlcnNoaXAvMTRTTQptZW1icmFuZS8xU00KbWVtYnJhbm91cy81Cm1lbWUvMTRNUwptZW1lbnRvLzFNUwptZW1vLzE0TVMKbWVtb2lyLzFNUwptZW1vcmFiaWxpYS8xTQptZW1vcmFiaWxpdHkvMU0KbWVtb3JhYmxlLzUxVQptZW1vcmFibHkvCm1lbW9yYW5kdW0vMU1TCm1lbW9yaWFsLzE1U00KbWVtb3JpYWxpemUvNERTRwptZW1vcml6YXRpb24vMU0KbWVtb3JpemUvNERTRwptZW1vcnkvMVNNCm1lbXNhaGliLzFTCm1lbi8xTQptZW5hY2UvMTRNR0RTCm1lbmFjaW5nLzU0MVkKbWVuYWdlLzFNUwptZW5hZ2VyaWUvMU1TCm1lbmQvNDFNRFJTWkcKbWVuZGFjaW91cy81WQptZW5kYWNpdHkvMU0KbWVuZGVsZXZpdW0vMU0KbWVuZGVyLzFNCm1lbmRpY2FuY3kvMU0KbWVuZGljYW50LzUxU00KbWVuZGluZy80MU0KbWVuZm9say8xTVMKbWVuZm9sa3MvMU0KbWVuaGFkZW4vMU0KbWVuaWFsLzUxTVlTCm1lbmluZ2VhbC81Cm1lbmluZ2VzLzEKbWVuaW5naXRpcy8xTQptZW5pbngvMU0KbWVuaXNjaS8xCm1lbmlzY3VzLzFNCm1lbm9wYXVzYWwvNQptZW5vcGF1c2UvMU0KbWVub3JhaC8xTQptZW5vcmFocy8xCm1lbnNjaC8xTVMKbWVuc2VydmFudHMvMQptZW5zZXMvMU0KbWVuc3RydWFsLzUxCm1lbnN0cnVhdGUvNDVHTkRTCm1lbnN0cnVhdGlvbi8xTQptZW5zdXJhYmxlLzUKbWVuc3VyYXRpb24vMU0KbWVuc3dlYXIvMU0KbWVudGFsLzUxWQptZW50YWxpc3QvNTFTTQptZW50YWxpdHkvMVNNCm1lbnRob2wvMU0KbWVudGhvbGF0ZWQvNQptZW50aW9uLzE0R1NNRAptZW50aW9uZWQvNFUKbWVudG9yLzE0TURTRwptZW50b3JzaGlwLzEKbWVudS8xNE1TCm1lb3cvMTRNRFNHCm1lcmNhbnRpbGUvNQptZXJjYW50aWxpc20vMU0KbWVyY2VuYXJ5LzE1U00KbWVyY2VyLzFNUwptZXJjZXJpemUvNEdEUwptZXJjaGFuZGlzZS8xNE1aR0RSUwptZXJjaGFuZGlzZXIvMU0KbWVyY2hhbmRpc2luZy8xNE0KbWVyY2hhbnQvMTRNQlMKbWVyY2hhbnRtYW4vMU0KbWVyY2hhbnRtZW4vMQptZXJjaWZ1bC81VVkKbWVyY2lsZXNzLzVQWQptZXJjaWxlc3NuZXNzLzFNCm1lcmN1cmlhbC8xNVkKbWVyY3VyaWMvNQptZXJjdXJ5LzFNCm1lcmN5LzE0U00KbWVyZS81MTRNWVRTCm1lcmV0cmljaW91cy81WVAKbWVyZXRyaWNpb3VzbmVzcy8xTQptZXJnYW5zZXIvMU1TCm1lcmdlLzQxRFJTWkcKbWVyZ2VyLzFNCm1lcmlkaWFuLzUxNE1TCm1lcmluZ3VlLzE0TVMKbWVyaW5vLzFNUwptZXJpdC8xNENTTQptZXJpdGVkLzU0VQptZXJpdGluZy80Cm1lcml0bGVzcy81Cm1lcml0b2NyYWN5LzFTTQptZXJpdG9jcmF0aWMvNQptZXJpdG9yaW91cy81UFkKbWVyaXRvcmlvdXNuZXNzLzFNCm1lcm1haWQvMVNNCm1lcm1hbi8xTQptZXJtZW4vMQptZXJyaWx5LwptZXJyaW1lbnQvMU0KbWVycmluZXNzLzFNCm1lcnJ5LzUxVFJQCm1lcnJ5bWFrZXIvMU1TCm1lcnJ5bWFraW5nLzE0TQptZXNhLzFNUwptZXNjYWwvMU1TCm1lc2NhbGluLzEKbWVzY2FsaW5lLzFNCm1lc2RhbWVzLzEKbWVzZGVtb2lzZWxsZXMvMQptZXNoLzE0TURTRwptZXNtZXJpYy81Cm1lc21lcmlzbS8xTQptZXNtZXJpemUvNFpHRFJTCm1lc21lcml6ZXIvMU0KbWVzb21vcnBoLzFNCm1lc29tb3JwaHMvMQptZXNvbi8xU00KbWVzb3NwaGVyZS8xU00KbWVzcXVpdGUvMVNNCm1lc3MvMTRNRFNHCm1lc3NhZ2UvMTRNR0RTCm1lc3NlaWduZXVycy8xCm1lc3Nlbmdlci8xNFNNCm1lc3NpYWgvMU0KbWVzc2lhaHMvMQptZXNzaWFuaWMvNQptZXNzaWV1cnMvMQptZXNzaWx5LwptZXNzaW5lc3MvMU0KbWVzc21hdGUvMVNNCm1lc3N5LzVQVFIKbWVzdGl6by8xTVMKbWV0LzQKbWV0YS81MQptZXRhYm9saWMvNTEKbWV0YWJvbGljYWxseS8KbWV0YWJvbGlzbS8xU00KbWV0YWJvbGl0ZS8xU00KbWV0YWJvbGl6ZS80RFNHCm1ldGFjYXJwYWwvNTFTTQptZXRhY2FycGkvMQptZXRhY2FycHVzLzFNCm1ldGFkYXRhLzEKbWV0YWwvMTU0U01ECm1ldGFsYW5ndWFnZS8xTVMKbWV0YWxsaWMvNTEKbWV0YWxsdXJnaWMvNQptZXRhbGx1cmdpY2FsLzUKbWV0YWxsdXJnaXN0LzFNUwptZXRhbGx1cmd5LzFNCm1ldGFsd29yay8xTVJaRwptZXRhbHdvcmtlci8xTQptZXRhbHdvcmtpbmcvMU0KbWV0YW1vcnBoaWMvNTEKbWV0YW1vcnBoaXNtLzFNCm1ldGFtb3JwaG9zZS80R0RTCm1ldGFtb3JwaG9zaXMvMU0KbWV0YXBob3IvMTRNUwptZXRhcGhvcmljLzUKbWV0YXBob3JpY2FsLzVZCm1ldGFwaHlzaWNhbC81WQptZXRhcGh5c2ljcy8xTQptZXRhc3Rhc2VzLzEKbWV0YXN0YXNpcy8xTQptZXRhc3Rhc2l6ZS80RFNHCm1ldGFzdGF0aWMvNQptZXRhdGFyc2FsLzUxTVMKbWV0YXRhcnNpLzEKbWV0YXRhcnN1cy8xTQptZXRhdGhlc2VzLzEKbWV0YXRoZXNpcy8xTQptZXRlLzQxNU1aR0RSUwptZXRlbXBzeWNob3Nlcy8xCm1ldGVtcHN5Y2hvc2lzLzFNCm1ldGVvci8xNE1TCm1ldGVvcmljLzUKbWV0ZW9yaWNhbGx5LwptZXRlb3JpdGUvMVNNCm1ldGVvcm9pZC8xU00KbWV0ZW9yb2xvZ2ljLzUKbWV0ZW9yb2xvZ2ljYWwvNQptZXRlb3JvbG9naXN0LzFTTQptZXRlb3JvbG9neS8xTQptZXRlci8xNEdNRAptZXRmb3JtaW4vMQptZXRoYWRvbmUvMU0KbWV0aGFtcGhldGFtaW5lLzFNCm1ldGhhbmUvMU0KbWV0aGFub2wvMU0KbWV0aGlua3MvCm1ldGhvZC8xNE1TCm1ldGhvZGljYWwvNVlQCm1ldGhvZGljYWxuZXNzLzFNCm1ldGhvZG9sb2dpY2FsLzVZCm1ldGhvZG9sb2d5LzFTTQptZXRob3RyZXhhdGUvMQptZXRob3VnaHQvNAptZXRocy8xCm1ldGh5bC8xTQptZXRpY3Vsb3VzLzVZUAptZXRpY3Vsb3VzbmVzcy8xTQptZXRpZXIvMU1TCm1ldHJpYy81MTRTCm1ldHJpY2FsLzVZCm1ldHJpY2F0ZS80R05EUwptZXRyaWNhdGlvbi8xTQptZXRyaWNpemUvNEdEUwptZXRyby8xNVNNCm1ldHJvbm9tZS8xTVMKbWV0cm9wb2xpcy8xTVMKbWV0cm9wb2xpdGFuLzE1Cm1ldHRsZS8xNU0KbWV0dGxlc29tZS81Cm1ldy8xNFNHTUQKbWV3bC80MURTRwptZXdzLzE0TQptZXp6YW5pbmUvMTU0TVMKbWV6em8vMVNNCm1mZy8xCm1mci8xUwptZy8KbWdyLzEKbWkvMU1OWAptaWFzbWEvMU1TCm1pYy8xNFMKbWljYS8xTQptaWNlLzE0Cm1pY2svMTVTCm1pY2tleS8xNE1TCm1pY3JvLzUxNFNNCm1pY3JvYWdncmVzc2lvbi8xU00KbWljcm9iZS8xTVMKbWljcm9iaWFsLzUxCm1pY3JvYmlvbG9naWNhbC81Cm1pY3JvYmlvbG9naXN0LzFNUwptaWNyb2Jpb2xvZ3kvMU0KbWljcm9icmV3ZXJ5LzFTTQptaWNyb2NoaXAvMTRNUwptaWNyb2NpcmN1aXQvMVNNCm1pY3JvY29kZS8xNAptaWNyb2NvbXB1dGVyLzFNUwptaWNyb2Nvc20vMU1TCm1pY3JvY29zbWljLzUKbWljcm9kb3QvMTRTTQptaWNyb2Vjb25vbWljcy8xTQptaWNyb2VsZWN0cm9uaWMvNTFTCm1pY3JvZWxlY3Ryb25pY3MvMU0KbWljcm9maWJlci8xTVMKbWljcm9maWNoZS8xNE0KbWljcm9maWxtLzE0R01EUwptaWNyb2ZpbmFuY2UvMQptaWNyb2Zsb3BwaWVzLzEKbWljcm9ncm9vdmUvMVNNCm1pY3JvbGlnaHQvMU1TCm1pY3JvbG9hbi8xTVMKbWljcm9tYW5hZ2UvNFpHRFJTTAptaWNyb21hbmFnZW1lbnQvMU0KbWljcm9tYW5hZ2VyLzFNCm1pY3JvbWV0ZW9yaXRlLzFTTQptaWNyb21ldGVyLzFNUwptaWNyb24vMU1TCm1pY3Jvb3JnYW5pc20vMU1TCm1pY3JvcGhvbmUvMTRTTQptaWNyb3BsYXN0aWNzLzEKbWljcm9wcm9jZXNzb3IvMU1TCm1pY3Jvc2NvcGUvMTRTTQptaWNyb3Njb3BpYy81Cm1pY3Jvc2NvcGljYWwvNVkKbWljcm9zY29weS8xTQptaWNyb3NlY29uZC8xTVMKbWljcm9zdXJnZXJ5LzUxTQptaWNyb3dhdmUvMTREU01HQgptaWNyb3dhdmVhYmxlLzUKbWlkLzUrMQptaWRhaXIvNTFNCm1pZGRheS8xTQptaWRkZW4vMU1TCm1pZGRsZS8xNTRNR1MKbWlkZGxlYnJvdy81MVNNCm1pZGRsZW1hbi8xNE0KbWlkZGxlbWVuLzEKbWlkZGxlbW9zdC81Cm1pZGRsZXdlaWdodC8xTVMKbWlkZHkvMVNNCm1pZGZpZWxkLzFSWgptaWRnZS8xU00KbWlkZ2V0LzFNUwptaWRpLzUxTVMKbWlkbGFuZC8xNU1TCm1pZGxpZmUvNTFNCm1pZG1vc3QvNQptaWRuaWdodC8xNU0KbWlkcG9pbnQvMU1TCm1pZHJpYi8xTVMKbWlkcmlmZi8xTVMKbWlkc2VjdGlvbi8xTVMKbWlkc2hpcG1hbi8xTQptaWRzaGlwbWVuLzEKbWlkc2hpcHMvCm1pZHNpemUvNTEKbWlkc3QvMStNCm1pZHN0cmVhbS8xTQptaWRzdW1tZXIvMTVNCm1pZHRlcm0vNTFNUwptaWR0b3duLzFNCm1pZHdheS8xNU1TCm1pZHdlZWsvMTVNUwptaWR3aWZlLzE0TUdEUwptaWR3aWZlcnkvMVNNCm1pZHdpbnRlci8xTQptaWR3aXZlcy8xNAptaWR5ZWFyLzFNUwptaWVuLzFNCm1pZmYvMTREU0cKbWlnaHQndmUvNAptaWdodC8xNTRNCm1pZ2h0aWx5LwptaWdodGluZXNzLzFNCm1pZ2h0bid0LzQKbWlnaHR5LzE1VFJQCm1pZ25vbmV0dGUvMTVTTQptaWdyYWluZS8xTVMKbWlncmFudC8xNU1TCm1pZ3JhdGUvNEFHRFMKbWlncmF0aW9uLzFTTQptaWdyYXRvcnkvNQptaWthZG8vMU1TCm1pa2UvMTRNR0RTCm1pbC8xNVNaTVIKbWlsYWR5LzE0U00KbWlsY2gvNQptaWxkLzUxTVJZVFAKbWlsZGV3LzE0U01ERwptaWxkbmVzcy8xTQptaWxlLzFNUwptaWxlYWdlLzFTTQptaWxlcG9zdC8xNE1TCm1pbGVyLzFNCm1pbGVzdG9uZS8xNE1TCm1pbGYvMU1TCm1pbGlldS8xU00KbWlsaXRhbmN5LzFNCm1pbGl0YW50LzUxTVlTCm1pbGl0YXJpbHkvCm1pbGl0YXJpc20vMU0KbWlsaXRhcmlzdC8xU00KbWlsaXRhcmlzdGljLzUKbWlsaXRhcml6YXRpb24vMUNNCm1pbGl0YXJpemUvNENEU0cKbWlsaXRhcnkvNTFNCm1pbGl0YXRlLzRHRFMKbWlsaXRpYS8xU00KbWlsaXRpYW1hbi8xTQptaWxpdGlhbWVuLzEKbWlsay8xNE1EUlNaRwptaWxrZXIvMU0KbWlsa2luZXNzLzFNCm1pbGttYWlkLzFNUwptaWxrbWFuLzFNCm1pbGttZW4vMQptaWxrc2hha2UvMTRTTQptaWxrc29wLzFNUwptaWxrd2VlZC8xU00KbWlsa3kvNVJUUAptaWxsLzE0TURSU1pHSgptaWxsYWdlLzFNCm1pbGxlbm5pYS8xCm1pbGxlbm5pYWwvNTFNCm1pbGxlbm5pdW0vMU1TCm1pbGxlci8xTQptaWxsZXQvMU0KbWlsbGlhcmQvTVMKbWlsbGliYXIvMU1TCm1pbGxpZ3JhbS8xTVMKbWlsbGlsaXRlci8xTVMKbWlsbGltZXRlci8xTVMKbWlsbGluZXIvMTRNUwptaWxsaW5lcnkvMU0KbWlsbGluZy8xNE0KbWlsbGlvbi9IU00KbWlsbGlvbmFpcmUvMVNNCm1pbGxpb25haXJlc3MvMVMKbWlsbGlvbnRoLzUxTQptaWxsaW9udGhzLzEKbWlsbGlwZWRlLzFTTQptaWxsaXNlY29uZC8xU00KbWlsbHBvbmQvMVNNCm1pbGxyYWNlLzFTTQptaWxsc3RvbmUvMVNNCm1pbGxzdHJlYW0vMU1TCm1pbGx3cmlnaHQvMVNNCm1pbG9tZXRlci8xUwptaWxxdWV0b2FzdC81MVNNCm1pbHQvMTRNRFNHCm1pbWUvMTRNR0RTCm1pbWVvZ3JhcGgvMTRHTUQKbWltZW9ncmFwaHMvMTQKbWltZXRpYy81MQptaW1pYy80MTVTTQptaW1pY2tlZC80Cm1pbWlja2VyLzFTTQptaW1pY2tpbmcvMTQKbWltaWNyeS8xU00KbWltb3NhLzFTTQptaW4vMTU0Cm1pbmFyZXQvMU1TCm1pbmF0b3J5LzUKbWluY2UvMTREUlNNWkcKbWluY2VtZWF0LzFNCm1pbmNlci8xTQptaW5kJ3MKbWluZC8xNEFEUlNaRwptaW5kYm9nZ2xpbmdseS8KbWluZGVkLzU0UAptaW5kZnVsLzUxWVAKbWluZGZ1bG5lc3MvMU0KbWluZGxlc3MvNVlQCm1pbmRsZXNzbmVzcy8xTQptaW5kc2V0LzFNUwptaW5lLzgxNE1aR05EUlNYCm1pbmVmaWVsZC8xU00KbWluZXIvMU0KbWluZXJhbC8xNU1TCm1pbmVyYWxvZ2ljYWwvNQptaW5lcmFsb2dpc3QvMU1TCm1pbmVyYWxvZ3kvMU0KbWluZXN0cm9uZS8xTQptaW5lc3dlZXBlci8xU00KbWluZ2xlLzQxRFNHCm1pbmd5LzUKbWluaS81MU1TCm1pbmlhdHVyZS8xNTRNUwptaW5pYXR1cmlzdC8xTVMKbWluaWF0dXJpemF0aW9uLzFNCm1pbmlhdHVyaXplLzRHRFMKbWluaWJhci8xUwptaW5pYmlrZS8xU00KbWluaWJ1cy8xTVMKbWluaWNhYi8xNFMKbWluaWNhbS8xTVMKbWluaWNvbXB1dGVyLzFTTQptaW5pZmxvcHBpZXMvMQptaW5pbS8xU00KbWluaW1hLzEKbWluaW1hbC81MVkKbWluaW1hbGlzbS8xTQptaW5pbWFsaXN0LzUxTVMKbWluaW1pemF0aW9uLzFNCm1pbmltaXplLzREU0cKbWluaW11bS8xNU1TCm1pbmluZy8xNE0KbWluaW9uLzE1TQptaW5pc2VyaWVzLzFNCm1pbmlza2lydC8xTVMKbWluaXN0ZXIvMTRTR01ECm1pbmlzdGVyaWFsLzUxCm1pbmlzdHJhbnQvMTVNUwptaW5pc3RyYXRpb24vMU1TCm1pbmlzdHJ5LzFTTQptaW5pdmFuLzE0TVMKbWluay8xTVMKbWlubmVzaW5nZXIvMU1TCm1pbm5vdy8xNTRTTQptaW5vci81MTRTTURHCm1pbm9yaXR5LzE1U00KbWlub3hpZGlsLzFNCm1pbnN0ZXIvMU1TCm1pbnN0cmVsLzE0U00KbWluc3RyZWxzeS8xTQptaW50LzE0NU1EUlNaRwptaW50YWdlLzFNCm1pbnRlci8xTQptaW50eS81UlQKbWludWVuZC8xTVMKbWludWV0LzE0U00KbWludXMvKzE1NE1TCm1pbnVzY3VsZS8xNU1TCm1pbnV0ZS8xNDVQRFJTTVlURwptaW51dGVtYW4vMU0KbWludXRlbWVuLzEKbWludXRlbmVzcy8xTQptaW51dGlhLzFNCm1pbnV0aWFlLzEKbWlueC8xNE1TCm1pcmFjbGUvMTRNUwptaXJhY3Vsb3VzLzVZCm1pcmFnZS8xNFNNCm1pcmUvMTRNR0RTCm1pcnJvci8xNEdTTUQKbWlydGgvMU0KbWlydGhmdWwvNVBZCm1pcnRoZnVsbmVzcy8xTQptaXJ0aGxlc3MvNVkKbWlyeS81UlQKbWlzYWRkcmVzcy80RFNHCm1pc2FkdmVudHVyZS8xTVMKbWlzYWxpZ25lZC81NAptaXNhbGlnbm1lbnQvMU0KbWlzYWxsaWFuY2UvMU1TCm1pc2FudGhyb3BlLzFTTQptaXNhbnRocm9waWMvNQptaXNhbnRocm9waWNhbGx5LwptaXNhbnRocm9waXN0LzFNUwptaXNhbnRocm9weS8xTQptaXNhcHBsaWNhdGlvbi8xTQptaXNhcHBseS80RFNHTlgKbWlzYXBwcmVoZW5kLzRHU0QKbWlzYXBwcmVoZW5zaW9uLzFNUwptaXNhcHByb3ByaWF0ZS80WERTR04KbWlzYXBwcm9wcmlhdGlvbi8xTQptaXNiZWdvdHRlbi81NDEKbWlzYmVoYXZlLzRHRFMKbWlzYmVoYXZpb3IvMU0KbWlzYy81Cm1pc2NhbGN1bGF0ZS80RFNYR04KbWlzY2FsY3VsYXRpb24vMU0KbWlzY2FsbC80MURTRwptaXNjYXJyaWFnZS8xTVMKbWlzY2FycnkvNEdEUwptaXNjYXN0LzQxNVNHCm1pc2NlZ2VuYXRpb24vMU0KbWlzY2VsbGFuZW91cy81WQptaXNjZWxsYW55LzFTTQptaXNjaGFuY2UvMTRTTQptaXNjaGllZi8xNE0KbWlzY2hpZXZvdXMvNVlQCm1pc2NoaWV2b3VzbmVzcy8xTQptaXNjaWJpbGl0eS8xTQptaXNjaWJsZS81Cm1pc2NsYXNzaWZpZWQvNAptaXNjb21tdW5pY2F0aW9uLzFTCm1pc2NvbmNlaXZlLzRHRFMKbWlzY29uY2VwdGlvbi8xU00KbWlzY29uZHVjdC8xNE1ER1MKbWlzY29uc3RydWN0aW9uLzFNUwptaXNjb25zdHJ1ZS80R0RTCm1pc2NvdW50LzQxTURTRwptaXNjcmVhbnQvNTFTTQptaXNjdWUvMTREU01HCm1pc2RlYWwvNDFHTVMKbWlzZGVhbHQvNAptaXNkZWVkLzFNUwptaXNkZW1lYW5vci8xTVMKbWlzZGlhZ25vc2UvNEdEUwptaXNkaWFnbm9zaXMvMU0KbWlzZGlkLzQKbWlzZGlyZWN0LzRTREcKbWlzZGlyZWN0aW9uLzFNCm1pc2RvLzRKRwptaXNkb2VzLzQKbWlzZG9pbmcvMTRNCm1pc2RvbmUvNAptaXNlci8xU0JNWQptaXNlcmFibGVuZXNzLzFNCm1pc2VyYWJseS8KbWlzZXJsaW5lc3MvMU0KbWlzZXJ5LzFTTQptaXNmZWFzYW5jZS8xTQptaXNmZWF0dXJlLzFTCm1pc2ZpbGUvNEdEUwptaXNmaXJlLzE0TUdEUwptaXNmaXQvMTRTTQptaXNmaXR0ZWQvNAptaXNmaXR0aW5nLzQKbWlzZm9ydHVuZS8xU00KbWlzZ2l2aW5nLzFNUwptaXNnb3Zlcm4vNFNER0wKbWlzZ292ZXJubWVudC8xTQptaXNndWlkYW5jZS8xTQptaXNndWlkZS80RFNHCm1pc2d1aWRlZC81NFkKbWlzaGFuZGxlLzQxRFNHCm1pc2hhcC8xNFNNCm1pc2hlYXIvNEdTCm1pc2hlYXJkLzQKbWlzaGl0LzE0UwptaXNoaXR0aW5nLzQKbWlzaG1hc2gvMTRNUwptaXNpZGVudGlmeS80R0RTCm1pc2luZm9ybS80REdTCm1pc2luZm9ybWF0aW9uLzFNCm1pc2ludGVycHJldC80U0dECm1pc2ludGVycHJldGF0aW9uLzFTTQptaXNqdWRnZS80RFNHCm1pc2p1ZGdtZW50LzFTTQptaXNsYWJlbC80R1NECm1pc2xhaWQvNTQKbWlzbGF5LzRHUwptaXNsZWFkLzQxR1MKbWlzbGVhZGluZy81NDFZCm1pc2xlZC80Cm1pc21hbmFnZS80TEdEUwptaXNtYW5hZ2VtZW50LzFNCm1pc21hdGNoLzQxR01EUwptaXNuYW1lLzE0R0RTCm1pc25vbWVyLzE0TVMKbWlzb2dhbWlzdC8xTVMKbWlzb2dhbXkvMU0KbWlzb2d5bmlzdC8xNVNNCm1pc29neW5pc3RpYy81Cm1pc29neW5vdXMvNQptaXNvZ3lueS8xTQptaXNwbGFjZS80R0xEUwptaXNwbGFjZW1lbnQvMU0KbWlzcGxheS80MUdNRFMKbWlzcHJpbnQvMTRHTURTCm1pc3ByaXNpb24vMU0KbWlzcHJvbm91bmNlLzREU0cKbWlzcHJvbnVuY2lhdGlvbi8xU00KbWlzcXVvdGF0aW9uLzFNUwptaXNxdW90ZS80MU1HRFMKbWlzcmVhZC80MUdKUwptaXNyZWFkaW5nLzQxTQptaXNyZW1lbWJlci80R0RTCm1pc3JlcG9ydC80MU1ER1MKbWlzcmVwcmVzZW50LzRHRFMKbWlzcmVwcmVzZW50YXRpb24vMU1TCm1pc3J1bGUvMTRNR0RTCm1pc3MncwptaXNzLzQxRURTR1YKbWlzc2FsLzFFU00KbWlzc2VkLzRVCm1pc3NoYXBlLzE0R0RTCm1pc3NoYXBlbi81NAptaXNzaWxlLzFNUwptaXNzaWxlcnkvMU0KbWlzc2lvbi8xNEFNUwptaXNzaW9uYXJ5LzE1U00KbWlzc2lvbmVyLzFTTQptaXNzaXZlLzE1TVMKbWlzc3BlYWsvNEdTCm1pc3NwZWxsLzRHREpTCm1pc3NwZWxsaW5nLzE0TQptaXNzcGVuZC80R1MKbWlzc3BlbnQvNTQKbWlzc3Bva2UvNAptaXNzcG9rZW4vNAptaXNzdGF0ZS80R0RTTAptaXNzdGF0ZW1lbnQvMVNNCm1pc3N0ZXAvMTRNUwptaXNzdXMvMU1TCm1pc3QncwptaXN0LzE0Q0RSU1pHCm1pc3Rha2FibGUvNVUKbWlzdGFrZS80MUJNR1MKbWlzdGFrZW4vNDVZCm1pc3RlcidzCm1pc3RpbHkvCm1pc3RpbWUvNEdEUwptaXN0aW5lc3MvMU0KbWlzdGxldG9lLzFNCm1pc3Rvb2svNAptaXN0cmFsLzFNUwptaXN0cmFuc2xhdGVkLzQKbWlzdHJlYXQvNExER1MKbWlzdHJlYXRtZW50LzFNCm1pc3RyZXNzLzE0TVMKbWlzdHJpYWwvMU1TCm1pc3RydXN0LzE0TURTRwptaXN0cnVzdGZ1bC81WQptaXN0eS81UFJUCm1pc3R5cGUvNEdTCm1pc3VuZGVyc3RhbmQvNFNHSgptaXN1bmRlcnN0YW5kaW5nLzE0TQptaXN1bmRlcnN0b29kLzQ1Cm1pc3VzZS8xNERTTUcKbWl0ZS8xNE1aUlMKbWl0ZXIvNDFNREcKbWl0aWdhdGUvNERTR04KbWl0aWdhdGVkLzU0VQptaXRpZ2F0aW9uLzFNCm1pdG9jaG9uZHJpYS8xCm1pdG9jaG9uZHJpYWwvNQptaXRvY2hvbmRyaW9uLzEKbWl0b3Nlcy8xCm1pdG9zaXMvMU0KbWl0b3RpYy81Cm1pdHJhbC81Cm1pdHQvMU1OU1gKbWl0dGVuLzE0TQptaXR6dmFoLzEKbWl4LzQxWkdNRFJTQgptaXhlZC80NVUKbWl4ZXIvMU0KbWl4dHVyZS8xU00KbWl6emVuLzE1TVMKbWl6emVubWFzdC8xU00KbWtheS8KbWtzLzEKbWwvCm1tLzEKbW5lbW9uaWMvNTFNUwptbmVtb25pY2FsbHkvCm1vLzUxQ0tIUwptb2FuLzE0TURSU1pHCm1vYW5lci8xTQptb2F0LzE0TURTCm1vYidzCm1vYi8xNENTCm1vYmJlZC80NUMKbW9iYmluZy80MUMKbW9iaWxlLzUxTVMKbW9iaWxpdHkvMU0KbW9iaWxpemF0aW9uLzFDTQptb2JpbGl6YXRpb25zLzEKbW9iaWxpemUvNENEU0cKbW9iaWxpemVyLzFTTQptb2JzdGVyLzFTTQptb2NjYXNpbi8xU00KbW9jaGEvMTVTTQptb2NrLzE0NURSU1pHCm1vY2tlci8xTQptb2NrZXJ5LzFTTQptb2NraW5nLzQxNVkKbW9ja2luZ2JpcmQvMVNNCm1vZC8xNDVTVE0KbW9kYWwvNTFTTQptb2RhbGl0eS8xUwptb2RkZWQvNAptb2RkaW5nLzQxCm1vZGUvMU1TCm1vZGVsLzE1NFpHU0pNRFIKbW9kZWxlci8xTQptb2RlbGluZy80MU0KbW9kZW0vMTRTTQptb2RlcmF0ZS81MTRNWUdOUERTCm1vZGVyYXRlbmVzcy8xTQptb2RlcmF0aW9uLzFNCm1vZGVyYXRvci8xU00KbW9kZXJuLzUxTVlQUwptb2Rlcm5pc20vMU0KbW9kZXJuaXN0LzUxU00KbW9kZXJuaXN0aWMvNQptb2Rlcm5pdHkvMU0KbW9kZXJuaXphdGlvbi8xTQptb2Rlcm5pemUvNERSU1pHCm1vZGVybml6ZXIvMU0KbW9kZXJubmVzcy8xTQptb2Rlc3QvNVkKbW9kZXN0eS8xTQptb2RpY3VtLzFTTQptb2RpZmlhYmxlLzUKbW9kaWZpY2F0aW9uLzFNCm1vZGlmaWVkLzU0MVUKbW9kaWZpZXIvMU0KbW9kaWZ5LzREUlNYWkdOCm1vZGlzaC81WVAKbW9kaXNobmVzcy8xTQptb2R1bGFyLzUKbW9kdWxhcml6YXRpb24vMQptb2R1bGF0ZS80Q0dORFMKbW9kdWxhdGlvbi8xQ00KbW9kdWxhdGlvbnMvMQptb2R1bGF0b3IvMU1TCm1vZHVsZS8xTVMKbW9kdWxvLysxCm1vZHVsdXMvMQptb2dneS8xCm1vZ3VsLzE0U00KbW9oYWlyLzFNCm1vaS84Cm1vaWV0eS8xU00KbW9pbC80MU1EU0cKbW9pcmUvMVNNCm1vaXN0LzUxNFhUUE5SWQptb2lzdGVuLzREUlpHCm1vaXN0ZW5lci8xTQptb2lzdG5lc3MvMU0KbW9pc3R1cmUvMU0KbW9pc3R1cml6ZS80WkdEUlMKbW9pc3R1cml6ZXIvMU0KbW9sYXIvMTVTTQptb2xhc3Nlcy8xNE0KbW9sZC8xNE1EUkpTWkcKbW9sZGJvYXJkLzFTTQptb2xkZXIvMTRHTUQKbW9sZGluZXNzLzFNCm1vbGRpbmcvNDFNCm1vbGR5LzVUUFIKbW9sZS8xTVMKbW9sZWN1bGFyLzUxCm1vbGVjdWxhcml0eS8xTQptb2xlY3VsZS8xU00KbW9sZWhpbGwvMVNNCm1vbGVza2luLzE0TQptb2xlc3QvNERSWkdTCm1vbGVzdGF0aW9uLzFNCm1vbGVzdGVkLzRVCm1vbGVzdGVyLzE0TQptb2xsLzE1TVMKbW9sbGlmaWNhdGlvbi8xTQptb2xsaWZ5LzREU05HCm1vbGx1c2Nhbi81MQptb2xsdXNrLzFTTQptb2xseS8xNFNNCm1vbGx5Y29kZGxlLzE0RFNNRwptb2x0LzQxTUROUlNaRwptb2x0ZXIvMU0KbW9seWJkZW51bS8xTQptb20vMTRTTQptb21lbnQvMU1TCm1vbWVudGEvMQptb21lbnRhcmlseS8KbW9tZW50YXJpbmVzcy8xTQptb21lbnRhcnkvNVAKbW9tZW50b3VzLzVQWQptb21lbnRvdXNuZXNzLzFNCm1vbWVudHVtLzFNCm1vbW15LzE0NVNNCm1vbmFkLzEKbW9uYXJjaC8xTQptb25hcmNoaWMvNQptb25hcmNoaWNhbC81Cm1vbmFyY2hpc20vMU0KbW9uYXJjaGlzdC8xTVMKbW9uYXJjaGlzdGljLzUKbW9uYXJjaHMvMQptb25hcmNoeS8xU00KbW9uYXN0ZXJ5LzFTTQptb25hc3RpYy81MU1TCm1vbmFzdGljYWwvNVkKbW9uYXN0aWNpc20vMU0KbW9uYXVyYWwvNQptb25ldGFyaWx5Lwptb25ldGFyaXNtLzFNCm1vbmV0YXJpc3QvNTFNUwptb25ldGFyeS81Cm1vbmV0aXphdGlvbi8xQwptb25ldGl6ZS80Q0dEUwptb25leS8xNVNNRAptb25leWJhZy8xTVMKbW9uZXlib3gvMVMKbW9uZXlsZW5kZXIvMVNNCm1vbmV5bWFrZXIvMVNNCm1vbmV5bWFraW5nLzUxTQptb25nZXIvMTRNREdTCm1vbmdvbC8xUwptb25nb2xpc20vMU0KbW9uZ29sb2lkLzFNUwptb25nb29zZS8xTVMKbW9uZ3JlbC8xNVNNCm1vbmllcy8xCm1vbmlrZXIvMVNNCm1vbmlzbS8xTQptb25pc3QvMU1TCm1vbml0aW9uLzFTTQptb25pdG9yLzE0U01ERwptb25pdG9yeS81MQptb25rLzE0TVMKbW9ua2V5LzE0TURHUwptb25rZXlzaGluZS8xU00KbW9ua2lzaC81Cm1vbmtzaG9vZC8xU00KbW9uby8xNU0KbW9ub2Nocm9tYXRpYy81Cm1vbm9jaHJvbWUvMTVNUwptb25vY2xlLzFEU00KbW9ub2Nsb25hbC81MQptb25vY290eWxlZG9uLzFTTQptb25vY290eWxlZG9ub3VzLzUKbW9ub2N1bGFyLzUxCm1vbm9kaWMvNQptb25vZGlzdC8xU00KbW9ub2R5LzFTTQptb25vZ2FtaXN0LzFNUwptb25vZ2Ftb3VzLzVZCm1vbm9nYW15LzFNCm1vbm9ncmFtLzE0U00KbW9ub2dyYW1tZWQvNAptb25vZ3JhbW1pbmcvNAptb25vZ3JhcGgvMTRNCm1vbm9ncmFwaHMvMQptb25vbGluZ3VhbC81MU1TCm1vbm9saXRoLzE0TQptb25vbGl0aGljLzUKbW9ub2xpdGhzLzEKbW9ub2xvZ2lzdC8xU00KbW9ub2xvZ3VlLzE0U00KbW9ub21hbmlhLzFNCm1vbm9tYW5pYWMvMTVNUwptb25vbWFuaWFjYWwvNQptb25vbWVyLzFTTQptb25vbnVjbGVvc2lzLzFNCm1vbm9waG9uaWMvNQptb25vcGxhbmUvNTE0U00KbW9ub3BvbGlzdC8xU00KbW9ub3BvbGlzdGljLzUKbW9ub3BvbGl6YXRpb24vMU0KbW9ub3BvbGl6ZS80RFJTWkcKbW9ub3BvbGl6ZXIvMU0KbW9ub3BvbHkvMVNNCm1vbm9yYWlsLzFNUwptb25vc3lsbGFiaWMvNTEKbW9ub3N5bGxhYmxlLzFNUwptb25vdGhlaXNtLzFNCm1vbm90aGVpc3QvMVNNCm1vbm90aGVpc3RpYy81Cm1vbm90b25lLzUxNE1TCm1vbm90b25pYy81Cm1vbm90b25pY2FsbHkvCm1vbm90b25vdXMvNVBZCm1vbm90b25vdXNuZXNzLzFNCm1vbm90b255LzFNCm1vbm91bnNhdHVyYXRlZC81Cm1vbm94aWRlLzFNUwptb25zZWlnbmV1ci8xTQptb25zaWV1ci8xTQptb25zaWdub3IvMVNNCm1vbnNvb24vMVNNCm1vbnNvb25hbC81Cm1vbnN0ZXIvMTU0U00KbW9uc3RyYW5jZS8xQVNNCm1vbnN0cm9zaXR5LzFTTQptb25zdHJvdXMvNVkKbW9udGFnZS8xNFNNCm1vbnRoLzFNWQptb250aGx5LzUxU00KbW9udGhzLzEKbW9udW1lbnQvMTRNUwptb251bWVudGFsLzVZCm1vby8xNFNHTUQKbW9vY2gvNDFaR01EUlMKbW9vY2hlci8xTQptb29kLzFNUwptb29kaWx5Lwptb29kaW5lc3MvMU0KbW9vZHkvNVRQUgptb29uLzIxNE1EU0cKbW9vbmJlYW0vMU1TCm1vb25sZXNzLzUKbW9vbmxpZ2h0LzE0U01EUlpHCm1vb25saWdodGVyLzFNCm1vb25saWdodGluZy80MU0KbW9vbmxpdC81Cm1vb25zY2FwZS8xU00KbW9vbnNoaW5lLzE0TVpSUwptb29uc2hpbmVyLzFNCm1vb25zaG90LzFNUwptb29uc3RvbmUvMU1TCm1vb25zdHJ1Y2svNQptb29ud2Fsay8xNE1TCm1vb3IvMTRNREpTRwptb29yaGVuLzFTCm1vb3JpbmcvNDFNCm1vb3JsYW5kLzFNUwptb29zZS8xTQptb290LzUxNERTRwptb3AvMTRTWkdNRFIKbW9wZS80MU1TCm1vcGVkLzQ1MVNNCm1vcGVyLzFNCm1vcGV5LzUKbW9waWVyLzUKbW9waWVzdC81Cm1vcGlzaC81Cm1vcHBlZC80NQptb3BwZXQvMU1TCm1vcHBpbmcvNDEKbW9yYWluZS8xU00KbW9yYWwvNTE0U01ZCm1vcmFsZS8xTQptb3JhbGlzbS8xCm1vcmFsaXN0LzFNUwptb3JhbGlzdGljLzUKbW9yYWxpc3RpY2FsbHkvCm1vcmFsaXRpZXMvMQptb3JhbGl0eS8xVU0KbW9yYWxpemF0aW9uLzFDTQptb3JhbGl6ZS80Q0dEUwptb3JhbGl6ZXIvMU1TCm1vcmFzcy8xTVMKbW9yYXRvcml1bS8xU00KbW9yYXkvMVNNCm1vcmJpZC81WVAKbW9yYmlkaXR5LzFNCm1vcmJpZG5lc3MvMU0KbW9yZGFuY3kvMU0KbW9yZGFudC81MTRTTVkKbW9yZS84NTE0TVMKbW9yZWlzaC81Cm1vcmVsLzFTTQptb3Jlb3Zlci8KbW9yZXMvMTRNCm1vcmd1ZS8xTVMKbW9yaWJ1bmQvNTEKbW9ybi8xTUpTRwptb3JuaW5nLzFNCm1vcm9jY28vMU0KbW9yb24vMVNNCm1vcm9uaWMvNQptb3JvbmljYWxseS8KbW9yb3NlLzVZUAptb3Jvc2VuZXNzLzFNCm1vcnBoLzE0R0QKbW9ycGhlbWUvMU1TCm1vcnBoZW1pYy81Cm1vcnBoaWEvMU0KbW9ycGhpbmUvMU0KbW9ycGhpbmcvNDFNCm1vcnBob2xvZ2ljYWwvNQptb3JwaG9sb2d5LzFNCm1vcnBocy8xNAptb3Jyb3cvMTRNUwptb3JzZWwvMTRNUwptb3J0YWwvNTFNWVMKbW9ydGFsaXR5LzFNCm1vcnRhci8xNE1EU0cKbW9ydGFyYm9hcmQvMVNNCm1vcnRnYWdlJ3MKbW9ydGdhZ2UvMTRBR0RTCm1vcnRnYWdlZS8xTVMKbW9ydGdhZ29yLzFNUwptb3J0aWNpYW4vMU1TCm1vcnRpZmljYXRpb24vMU0KbW9ydGlmeS80TkdEUwptb3J0aXNlLzE0RFNNRwptb3J0dWFyeS81MVNNCm1vc2FpYy8xNTRNUwptb3NleS80U0dECm1vc2gvNDFEU0cKbW9zcXVlLzFNUwptb3NxdWl0by8xNE0KbW9zcXVpdG9lcy8xCm1vc3MvMTRNUwptb3NzYmFjay8xU00KbW9zc3kvNTFUUgptb3N0LzU4MU1Zfgptb3QvMVNNCm1vdGUncwptb3RlLzE0S0NYU1ZOCm1vdGVsLzE0U00KbW90ZXQvMVNNCm1vdGgvMTRNCm1vdGhiYWxsLzE0R01EUwptb3RoZXIvMTRNRFlTRwptb3RoZXJib2FyZC8xU00KbW90aGVyZnVja2VyLzFNUyE2Cm1vdGhlcmZ1Y2tpbmcvNSEKbW90aGVyaG9vZC8xTQptb3RoZXJsYW5kLzFNUwptb3RoZXJsZXNzLzUKbW90aGVybGluZXNzLzFNCm1vdGhzLzE0Cm1vdGlmLzFTTQptb3RpbGUvNTFTCm1vdGlsaXR5LzFNCm1vdGlvbi8xNEtDTQptb3Rpb25lZC80Cm1vdGlvbmluZy80MQptb3Rpb25sZXNzLzVZUAptb3Rpb25sZXNzbmVzcy8xTQptb3RpdmF0ZS80Q0RTRwptb3RpdmF0ZWQvNDVVCm1vdGl2YXRpb24vMVNNCm1vdGl2YXRpb25hbC81Cm1vdGl2YXRvci8xU00KbW90aXZlLzE0NU1TCm1vdGl2ZWxlc3MvNQptb3RsZXkvNTFNUwptb3RsaWVyLzUKbW90bGllc3QvNQptb3RvY3Jvc3MvMU1TCm1vdG9yLzE1NFNHTUQKbW90b3JiaWtlLzE0TUdEUwptb3RvcmJvYXQvMTRNUwptb3RvcmNhZGUvMTRNUwptb3RvcmNhci8xU00KbW90b3JjeWNsZS8xNERTTUcKbW90b3JjeWNsaXN0LzFNUwptb3RvcmlzdC8xU00KbW90b3JpemF0aW9uLzFNCm1vdG9yaXplLzREU0cKbW90b3JtYW4vMU0KbW90b3JtZW4vMQptb3Rvcm1vdXRoLzE0TQptb3Rvcm1vdXRocy8xNAptb3RvcndheS8xU00KbW90dGxlLzQxR0RTCm1vdHRvLzE0TQptb3R0b2VzLzEKbW91ZS8xTVMKbW91bmQvMTRTR01ECm1vdW50LzE0RUFTR01ECm1vdW50YWJsZS81Cm1vdW50YWluLzFTTQptb3VudGFpbmVlci8xNFNNREcKbW91bnRhaW5lZXJpbmcvMU0KbW91bnRhaW5vdXMvNQptb3VudGFpbnNpZGUvMVNNCm1vdW50YWludG9wLzE1U00KbW91bnRlYmFuay8xNE1TCm1vdW50ZWQvNTRVCm1vdW50ZXIvMU1TCm1vdW50aW5nLzU0MVNNCm1vdXJuLzQxU1pHRFIKbW91cm5lZC80VQptb3VybmVyLzFNCm1vdXJuZnVsLzVZUAptb3VybmZ1bG5lc3MvMU0KbW91cm5pbmcvNDFNCm1vdXNlLzE0RFJTTVpHCm1vdXNlci8xTQptb3VzZXRyYXAvMTRTTQptb3VzZXRyYXBwZWQvNAptb3VzZXRyYXBwaW5nLzQKbW91c2luZXNzLzFNCm1vdXNzYWthLzFTCm1vdXNzZS8xNE1HRFMKbW91c3kvNTFQVFIKbW91dGgvMTRHTUQKbW91dGhmZWVsLzEKbW91dGhmdWwvMTVNUwptb3V0aGluZXNzLzFNCm1vdXRocGllY2UvMU1TCm1vdXRocy8xNAptb3V0aHdhc2gvMU1TCm1vdXRod2F0ZXJpbmcvNQptb3V0aHkvNVBUUgptb3V0b24vMU0KbW92YWJsZS81MVNNCm1vdmUvNDFBTVpHRFJTQgptb3ZlZC81NFUKbW92ZW1lbnQvMVNNCm1vdmVyLzFBTQptb3ZpZS8xU00KbW92aWVnb2VyLzFTTQptb3ZpbmcvNTQxWQptb3cvNDFTWkdNRFIKbW93ZXIvMU0KbW94aWUvMU0KbW96emFyZWxsYS8xTQptcC8xCm1wZy8KbXBoLwptdC81MQptdGcvMQptdGdlLzEKbXUvMVNNCm11Y2gvNThNCm11Y2lsYWdlLzFNCm11Y2lsYWdpbm91cy81Cm11Y2svMTRNRFNHCm11Y2tyYWtlLzE0RFJTWkcKbXVja3Jha2VyLzFNCm11Y2t5LzVUUgptdWNvdXMvNQptdWN1cy8xTQptdWQvMTRNCm11ZGRpbHkvCm11ZGRpbmVzcy8xTQptdWRkbGUvNDFNR0RTCm11ZGRsZWhlYWRlZC81Cm11ZGR5LzU0MVBUR0RSUwptdWRmbGFwLzFTCm11ZGZsYXQvMU1TCm11ZGd1YXJkLzFTTQptdWRwYWNrLzFTCm11ZHJvb20vMU1TCm11ZHNsaWRlLzFNUwptdWRzbGluZ2VyLzFTTQptdWRzbGluZ2luZy8xTQptdWVuc3Rlci8xTQptdWVzbGkvMQptdWV6emluLzFNUwptdWZmLzE0TURTRwptdWZmaW4vMTRNUwptdWZmbGUvMTRaR0RSUwptdWZmbGVyLzFNCm11ZnRpLzFTTQptdWcvMTQ1U00KbXVnZnVsLzFNUwptdWdnZWQvNAptdWdnZXIvMTVNUwptdWdnaW5lc3MvMU0KbXVnZ2luZy8xNE1TCm11Z2dpbnMvMQptdWdnbGUvMTRNUwptdWdneS81UFRSCm11Z3Nob3QvMU1TCm11Z3d1bXAvMTRNUwptdWphaGVkZGluLzEKbXVrbHVrLzFNUwptdWxhdHRvLzFNCm11bGF0dG9lcy8xCm11bGJlcnJ5LzE1U00KbXVsY2gvMTRHTURTCm11bGN0LzE0U0dNRAptdWxlLzE0TVMKbXVsZXNraW5uZXIvMU1TCm11bGV0ZWVyLzFNUwptdWxpc2gvNVBZCm11bGlzaG5lc3MvMU0KbXVsbC80MURTRwptdWxsYWgvMTRNCm11bGxhaHMvMQptdWxsZWluLzFNCm11bGxldC8xTVMKbXVsbGlnYW4vMVNNCm11bGxpZ2F0YXdueS8xTQptdWxsaW9uLzE0U01ECm11bHRpLzEKbXVsdGljZWxsdWxhci81MQptdWx0aWNoYW5uZWwvNQptdWx0aWNvbG9yZWQvNQptdWx0aWN1bHR1cmFsLzUKbXVsdGljdWx0dXJhbGlzbS8xTQptdWx0aWRpbWVuc2lvbmFsLzUxCm11bHRpZGlzY2lwbGluYXJ5LzUKbXVsdGlmYWNldGVkLzUKbXVsdGlmYW1pbHkvNTEKbXVsdGlmYXJpb3VzLzVQWQptdWx0aWZhcmlvdXNuZXNzLzFNCm11bHRpZm9ybS81MQptdWx0aWdyYWluLzUKbXVsdGlsYXRlcmFsLzUxWQptdWx0aWxheWVyZWQvNQptdWx0aWxldmVsLzUKbXVsdGlsaW5ndWFsLzUxCm11bHRpbGluZ3VhbGlzbS8xTQptdWx0aW1lZGlhLzE1TQptdWx0aW1pbGxpb25haXJlLzFTTQptdWx0aW5hdGlvbmFsLzUxU00KbXVsdGlwYXJ0LzUKbXVsdGlwYXJ0eS81Cm11bHRpcGxheWVyLzUxTQptdWx0aXBsZS81MU1TCm11bHRpcGxleC81MTRaR01EUlMKbXVsdGlwbGV4ZXIvMU0KbXVsdGlwbGljYW5kLzFNUwptdWx0aXBsaWNhdGlvbi8xTQptdWx0aXBsaWNhdGl2ZS81MQptdWx0aXBsaWNpdHkvMVNNCm11bHRpcGxpZXIvMU0KbXVsdGlwbHkvNDFOWkdEUlNYCm11bHRpcHJvY2Vzc2luZy8xCm11bHRpcHJvY2Vzc29yLzFTTQptdWx0aXB1cnBvc2UvNQptdWx0aXJhY2lhbC81MQptdWx0aXN0YWdlLzUKbXVsdGlzdG9yeS81MQptdWx0aXRhc2svNTRHUwptdWx0aXRhc2tpbmcvNDFNCm11bHRpdHVkZS8xU00KbXVsdGl0dWRpbm91cy81Cm11bHRpdmFyaWF0ZS81MQptdWx0aXZlcnNlLzFTTQptdWx0aXZpdGFtaW4vMTVNUwptdWx0aXllYXIvNQptdW0vMTU0Cm11bWJsZS80MU1aR0RSUwptdW1ibGVyLzFNCm11bWJsZXR5cGVnLzFNCm11bW1lci8xNE1TCm11bW1lcnkvMU0KbXVtbWlmaWNhdGlvbi8xTQptdW1taWZ5LzRHTkRTCm11bW15LzE0U00KbXVtcHMvMTRNCm11bi80MTgKbXVuY2gvNDFHRFMKbXVuY2hpZS8xUwptdW5jaGllcy8xTQptdW5jaGtpbi8xU00KbXVuZGFuZS81MVNZCm11bmcvMTREU0cKbXVuaWNpcGFsLzUxU01ZCm11bmljaXBhbGl0eS8xU00KbXVuaWZpY2VuY2UvMU0KbXVuaWZpY2VudC81WQptdW5pdGlvbi8xNE1ER1MKbXVyYWwvMTU0U00KbXVyYWxpc3QvMVNNCm11cmRlci8xNFpHTURSUwptdXJkZXJlci8xTQptdXJkZXJlc3MvMU1TCm11cmRlcm91cy81WQptdXJrLzUxNE1TCm11cmtpbHkvCm11cmtpbmVzcy8xTQptdXJreS81UFRSCm11cm11ci8xNFpHSk1EUlMKbXVybXVyZXIvMU0KbXVybXVyaW5nLzQxTQptdXJtdXJvdXMvNQptdXJyYWluLzE1TQptdXNjYXQvMU1TCm11c2NhdGVsLzFTTQptdXNjbGUvMTRNR0RTCm11c2NsZWJvdW5kLzUKbXVzY2xlbWFuLzEKbXVzY2xlbWVuLzEKbXVzY2x5LzUKbXVzY3VsYXIvNVkKbXVzY3VsYXJpdHkvMU0KbXVzY3VsYXR1cmUvMU0KbXVzY3Vsb3NrZWxldGFsLzUKbXVzZS8xNE1HRFNKCm11c2V0dGUvMU1TCm11c2V1bS8xNE1TCm11c2gvMTRNRFJTWkcKbXVzaGluZXNzLzFNCm11c2hyb29tLzE1NEdTTUQKbXVzaHkvNVBUUgptdXNpYy8xNDVTTQptdXNpY2FsLzUxTVlTCm11c2ljYWxlLzFNUwptdXNpY2FsaXR5LzFNCm11c2ljaWFuLzFTTVkKbXVzaWNpYW5zaGlwLzFNCm11c2ljb2xvZ2ljYWwvNQptdXNpY29sb2dpc3QvMU1TCm11c2ljb2xvZ3kvMU0KbXVzaW5nLzQ1MU1ZCm11c2svMTRNCm11c2tlZy8xTVMKbXVza2VsbHVuZ2UvMU1TCm11c2tldC8xTVMKbXVza2V0ZWVyLzFNUwptdXNrZXRyeS8xTQptdXNraWUvMU0KbXVza2luZXNzLzFNCm11c2ttZWxvbi8xU00KbXVza294LzFNTgptdXNrcmF0LzFNUwptdXNreS81MVBUUlMKbXVzbGluLzFNCm11c3MvNDFNRFNHCm11c3NlbC8xTVMKbXVzc3kvNTFUUgptdXN0J3ZlLwptdXN0LzQxTVJTWgptdXN0YWNoZS8xTURTCm11c3RhY2hpby8xNFNNRAptdXN0YW5nLzE0TVMKbXVzdGFyZC8xNU0KbXVzdGVyLzE0R01ECm11c3RpbHkvCm11c3RpbmVzcy8xTQptdXN0bid0LzQKbXVzdHkvNTE0UFRSCm11dGFiaWxpdHkvMU0KbXV0YWJseS8KbXV0YWdlbi8xTVMKbXV0YWdlbmljLzUKbXV0YW50LzE1TVMKbXV0YXRlLzRYR05WRFMKbXV0YXRpb24vMU0KbXV0YXRpb25hbC81Cm11dGUvNTE0TVlUR0RSU1BCCm11dGVuZXNzLzFNCm11dGlsYXRlLzQ1RFNHTlgKbXV0aWxhdGlvbi8xTQptdXRpbGF0b3IvMVNNCm11dGluZWVyLzE0U00KbXV0aW5vdXMvNVkKbXV0aW55LzE0R0RTTQptdXR0LzFNUwptdXR0ZXIvMTRaR0pNRFJTCm11dHRlcmVyLzFNCm11dHRlcmluZy80MU0KbXV0dG9uLzE1TQptdXR0b25jaG9wcy8xTQptdXR0b255LzUKbXV0dWFsLzUxWQptdXR1YWxpdHkvMU0KbXV1bXV1LzFNUwptdXphay8xNAptdXp6aWx5LwptdXp6bGUvMTREU01HCm11enp5LzUxUApteS9+Cm15Y29sb2dpc3QvMVNNCm15Y29sb2d5LzFNCm15ZWxpdGlzLzFNCm15bmEvMU1TCm15b2NhcmRpYWwvNQpteW9jYXJkaXVtLzEKbXlvcGlhLzFNCm15b3BpYy81MQpteW9waWNhbGx5LwpteXJpYWQvMTVTTQpteXJtaWRvbi8xTVMKbXlycmgvMU0KbXlydGxlLzFTTQpteXMvCm15c2VsZi84Cm15c3RlcmlvdXMvNVBZCm15c3RlcmlvdXNuZXNzLzFNCm15c3RlcnkvMVNNCm15c3RpYy81MVNNCm15c3RpY2FsLzVZCm15c3RpY2lzbS8xTQpteXN0aWZpY2F0aW9uLzFDTQpteXN0aWZ5LzRDRFNHTgpteXN0aXF1ZS8xTQpteXRoLzFNCm15dGhpYy81Cm15dGhpY2FsLzUKbXl0aG9sb2dpY2FsLzUKbXl0aG9sb2dpc3QvMVNNCm15dGhvbG9naXplLzREU0cKbXl0aG9sb2d5LzFTTQpteXRocy8xCm15eG9tYXRvc2lzLzEKbi8xNTdJS1RICm5hYW4vMVMKbmFiLzQxUwpuYWJiZWQvNApuYWJiaW5nLzQKbmFib2IvMVNNCm5hY2VsbGUvMVNNCm5hY2hvLzFTTQpuYWNyZS8xTQpuYWNyZW91cy81Cm5hZGlyLzE0U00KbmFlCm5hZmYvNVJUCm5hZy8xNFNNCm5hZ2dlZC80Cm5hZ2dlci8xTVMKbmFnZ2luZy80MTUKbmFnd2FyZS8xCm5haC8KbmFpYWQvMVNNCm5haWYvNTFNUwpuYWlsLzE0TURTRwpuYWlsYnJ1c2gvMTRNUwpuYWl2ZS81MVJZVApuYWl2ZXRlLzFNCm5haXZldHkvMU0KbmFrZWQvNTRQWQpuYWtlZG5lc3MvMU0KbmFtZSdzCm5hbWUvMTRBR0RTCm5hbWVhYmxlLzVVCm5hbWVkLzU0VQpuYW1lbGVzcy81MVkKbmFtZWx5LwpuYW1lcGxhdGUvMU1TCm5hbWVzYWtlLzE0U00KbmFubnkvMTRTTQpuYW5vYm90LzFTCm5hbm9tZXRlci8xUwpuYW5vc2Vjb25kLzFTTQpuYW5vdGVjaG5vbG9neS8xU00KbmFub3R1YmUvMQpuYXAvNDFTTQpuYXBhbG0vMTRNRFNHCm5hcGUvMTRNUwpuYXBodGhhLzFNCm5hcGh0aGFsZW5lLzFNCm5hcGtpbi8xTVMKbmFwbGVzcy81Cm5hcG9sZW9uLzFTTQpuYXBwZWQvNApuYXBwZXIvMU1TCm5hcHBpbmcvNDEKbmFwcHkvMTQ1VFJTTQpuYXJjLzE0TVMKbmFyY2lzc2lzbS8xTQpuYXJjaXNzaXN0LzFNUwpuYXJjaXNzaXN0aWMvNTEKbmFyY2lzc3VzLzFNCm5hcmNvbGVwc3kvMU0KbmFyY29sZXB0aWMvMTUKbmFyY29zZXMvMTQKbmFyY29zaXMvMU0KbmFyY290aWMvMTVTTQpuYXJjb3RpemF0aW9uLzFNCm5hcmNvdGl6ZS80R0RTCm5hcmsvMTQKbmFya3kvNQpuYXJyYXRlLzRHTlZEU1gKbmFycmF0aW9uLzFNCm5hcnJhdGl2ZS81MVNNCm5hcnJhdG9yLzFTTQpuYXJyb3cvNTE0UFRHTURSWVMKbmFycm93bmVzcy8xTQpuYXJ3aGFsLzFNUwpuYXJ5LzUKbmFzYWwvNTFTTVkKbmFzYWxpdHkvMU0KbmFzYWxpemF0aW9uLzFNCm5hc2FsaXplLzREU0cKbmFzY2VuY2UvMUFNCm5hc2NlbnQvNUEKbmFzdGlseS8KbmFzdGluZXNzLzFNCm5hc3R1cnRpdW0vMVNNCm5hc3R5LzUxUFRSCm5hdGFsLzUKbmF0Y2gvMQpuYXRpb24vMU1TCm5hdGlvbmFsLzUxTVlTCm5hdGlvbmFsaXNtLzFNCm5hdGlvbmFsaXN0LzUxU00KbmF0aW9uYWxpc3RpYy81Cm5hdGlvbmFsaXN0aWNhbGx5LwpuYXRpb25hbGl0eS8xU00KbmF0aW9uYWxpemF0aW9uLzFNUwpuYXRpb25hbGl6ZS80Q0RTRwpuYXRpb25ob29kLzFNCm5hdGlvbndpZGUvNQpuYXRpdmUvNTFNU1kKbmF0aXZpdHkvMVNNCm5hdGwvNQpuYXR0ZXIvNDFHTURTCm5hdHRpbHkvCm5hdHRpbmVzcy8xTQpuYXR0eS81MVBUUgpuYXR1cmFsJ3MKbmF0dXJhbC81MVVQWQpuYXR1cmFsaXNtLzFNCm5hdHVyYWxpc3QvMVNNCm5hdHVyYWxpc3RpYy81Cm5hdHVyYWxpemF0aW9uLzFNCm5hdHVyYWxpemUvNERTRwpuYXR1cmFsbmVzcy8xVU0KbmF0dXJhbHMvMQpuYXR1cmUncwpuYXR1cmUvMTRDUwpuYXR1cmlzbS8xCm5hdHVyaXN0LzE1UwpuYXVnaHQvODFNUwpuYXVnaHRpbHkvCm5hdWdodGluZXNzLzFNCm5hdWdodHkvNTRQVFIKbmF1c2VhLzFNCm5hdXNlYW0KbmF1c2VhdGUvNEdEUwpuYXVzZWF0aW5nLzU0WQpuYXVzZW91cy81UFkKbmF1c2VvdXNuZXNzLzFNCm5hdXRpY2FsLzVZCm5hdXRpbHVzLzFNUwpuYXZhbC81Cm5hdmUvMU1TCm5hdmVsLzE0U00KbmF2aWdhYmlsaXR5LzFNCm5hdmlnYWJsZS81Cm5hdmlnYXRlLzREU0dOCm5hdmlnYXRpb24vMU0KbmF2aWdhdGlvbmFsLzUKbmF2aWdhdG9yLzFNUwpuYXZ2eS8xNFMKbmF2eS8xNVNNCm5heS8xNDVTTQpuYXlzYXllci8xTVMKbmUnZXIvCm5lYW5kZXJ0aGFsLzUxTVMKbmVhcC8xNTRNUwpuZWFyLzUrNDFEUllTUFRHCm5lYXJieS81MQpuZWFybmVzcy8xTQpuZWFyc2hvcmUvMTQKbmVhcnNpZGUvMQpuZWFyc2lnaHRlZC81WVAKbmVhcnNpZ2h0ZWRuZXNzLzFNCm5lYXQvNTFOUllQWFQKbmVhdGVuLzRHRApuZWF0aC8rCm5lYXRuZXNzLzFNCm5lYnVsYS8xTQpuZWJ1bGFlLzEKbmVidWxhci81Cm5lYnVsb3VzLzVQWQpuZWJ1bG91c25lc3MvMU0KbmVjZXNzYXJpbHkvVQpuZWNlc3NhcnkvNTFTTQpuZWNlc3NpdGF0ZS80RFNHCm5lY2Vzc2l0b3VzLzUKbmVjZXNzaXR5LzFTTQpuZWNrLzE0TURTRwpuZWNrYmFuZC8xNFMKbmVja2VyY2hpZWYvMU1TCm5lY2tpbmcvNDFNCm5lY2tsYWNlLzE0TUdEU0oKbmVja2xpbmUvMU1TCm5lY2t0aWUvMU1TCm5lY3JvbG9neS8xTQpuZWNyb21hbmNlci8xU00KbmVjcm9tYW5jeS8xTQpuZWNyb3BoaWxpYS8xCm5lY3JvcGhpbGlhYy8xUwpuZWNyb3BvbGlzLzFNUwpuZWNyb3Nlcy8xNApuZWNyb3Npcy8xTQpuZWNyb3RpYy81Cm5lY3Rhci8xNE0KbmVjdGFyaW5lLzE1TVMKbmVlLzUKbmVlZC8xNE1EU0d+Cm5lZWRlZC81NFUKbmVlZGZ1bC81MVkKbmVlZGluZXNzLzFNCm5lZWRsZS8xNE1HRFMKbmVlZGxlcG9pbnQvMTRNCm5lZWRsZXNzLzVZUApuZWVkbGVzc25lc3MvMU0KbmVlZGxld29tYW4vMU0KbmVlZGxld29tZW4vMQpuZWVkbGV3b3JrLzFNCm5lZWRuJ3QvNApuZWVkeS81UFRSCm5lZmFyaW91cy81WVAKbmVmYXJpb3VzbmVzcy8xTQpuZWcvMTU0Cm5lZ2F0ZS80RFNHTlZYCm5lZ2F0aW9uLzFNCm5lZ2F0aXZlLzUxNE1ZR1BEUwpuZWdhdGl2ZW5lc3MvMU0KbmVnYXRpdmlzbS8xTQpuZWdhdGl2aXR5LzFNCm5lZ2xlY3QvNDFTR01ECm5lZ2xlY3RmdWwvNVlQCm5lZ2xlY3RmdWxuZXNzLzFNCm5lZ2xpZ2VlLzFNUwpuZWdsaWdlbmNlLzFNCm5lZ2xpZ2VudC81WQpuZWdsaWdpYmxlLzUKbmVnbGlnaWJseS8KbmVnb3RpYWJpbGl0eS8xTQpuZWdvdGlhYmxlLzUxQQpuZWdvdGlhdGUvNEFEU0dOCm5lZ290aWF0aW9uLzFBTQpuZWdvdGlhdGlvbnMvMQpuZWdvdGlhdG9yLzFNUwpuZWdyaXR1ZGUvMU0KbmVncm8vNTEKbmVncm9pZC81MQpuZWlnaC8xNE1ERwpuZWlnaGJvci8xNFNNRFlHCm5laWdoYm9yaG9vZC8xU00KbmVpZ2hib3JsaW5lc3MvMU0KbmVpZ2hzLzE0Cm5laXRoZXIvODcKbmVsc29uLzFTTQpuZW1hdG9kZS8xU00KbmVtZXNlcy8xCm5lbWVzaXMvMU0KbmVvY2xhc3NpYy81Cm5lb2NsYXNzaWNhbC81MQpuZW9jbGFzc2ljaXNtLzFNCm5lb2NvbG9uaWFsaXNtLzFNCm5lb2NvbG9uaWFsaXN0LzUxTVMKbmVvY29uLzE1U00KbmVvY29uc2VydmF0aXZlLzE1U00KbmVvY29ydGV4LzEKbmVvZHltaXVtLzFNCm5lb2xpdGhpYy81Cm5lb2xvZ2lzbS8xU00KbmVvbi8xNU0KbmVvbmF0YWwvNQpuZW9uYXRlLzFNUwpuZW9waGlsaWEvMQpuZW9waHl0ZS8xTVMKbmVvcGxhc20vMU1TCm5lb3BsYXN0aWMvNQpuZW9wcmVuZS8xTQpuZXBlbnRoZS8xTQpuZXBoZXcvMVNNCm5lcGhyaXRlLzFNCm5lcGhyaXRpYy81MQpuZXBocml0aXMvMU0KbmVwaHJvcGF0aHkvMQpuZXBvdGlzbS8xTQpuZXBvdGlzdC8xU00KbmVwb3Rpc3RpYy81Cm5lcHR1bml1bS8xTQpuZXJkLzFNUwpuZXJkeS81UlQKbmVydmUncwpuZXJ2ZS8xNFVEU0cKbmVydmVsZXNzLzVZUApuZXJ2ZWxlc3NuZXNzLzFNCm5lcnZpbmVzcy8xTQpuZXJ2b3VzLzVZUApuZXJ2b3VzbmVzcy8xTQpuZXJ2eS81VFBSCm5lc3QvMTRNRFNHCm5lc3RsZS80R0pEUwpuZXN0bGluZy8xNE0KbmV0LzE0NVNNCm5ldGJhbGwvMQpuZXRib29rLzFNUwpuZXRoZXIvNTQxCm5ldGhlcm1vc3QvNQpuZXRoZXJ3b3JsZC8xTQpuZXRpcXVldHRlLzFTCm5ldHRlZC80Cm5ldHRlci8xUwpuZXR0aW5nLzE0TQpuZXR0bGUvMTRNR0RTCm5ldHRsZXNvbWUvNQpuZXR3b3JrLzE0U0dNRApuZXR3b3JraW5nLzQxTQpuZXVyYWwvNVkKbmV1cmFsZ2lhLzFNCm5ldXJhbGdpYy81MQpuZXVyYXN0aGVuaWEvMU0KbmV1cmFzdGhlbmljLzUxTVMKbmV1cml0aWMvNTFNUwpuZXVyaXRpcy8xTQpuZXVyb2xvZ2ljYWwvNVkKbmV1cm9sb2dpc3QvMVNNCm5ldXJvbG9neS8xTQpuZXVyb24vMU1TCm5ldXJvbmFsLzUKbmV1cm9zY2llbmNlLzEKbmV1cm9zZXMvMQpuZXVyb3Npcy8xTQpuZXVyb3N1cmdlb24vMU1TCm5ldXJvc3VyZ2VyeS8xTQpuZXVyb3N1cmdpY2FsLzUKbmV1cm90aWMvNTFNUwpuZXVyb3RpY2FsbHkvCm5ldXJvdGljaXNtLzEKbmV1cm90cmFuc21pdHRlci8xU00KbmV1dC81Cm5ldXRlci81MTRNREdTCm5ldXRyYWwvNTFTTVkKbmV1dHJhbGlzbS8xTQpuZXV0cmFsaXN0LzUxU00KbmV1dHJhbGl0eS8xTQpuZXV0cmFsaXphdGlvbi8xTQpuZXV0cmFsaXplLzREUlNaRwpuZXV0cmFsaXplci8xTQpuZXV0cmluby8xU00KbmV1dHJvbi8xU00KbmV2ZXIvNApuZXZlcm1vcmUvCm5ldmVydGhlbGVzcy8KbmV2aS8xCm5ldnVzLzFNCm5ldy81MTRTVE1SWVB+Cm5ld2JpZS8xTVMKbmV3Ym9ybi81MVNNCm5ld2NvbWVyLzFTTQpuZXdlbC8xU00KbmV3ZmFuZ2xlZC81Cm5ld2ZvdW5kLzUKbmV3bGluZS8xUwpuZXdseXdlZC8xNVNNCm5ld25lc3MvMU0KbmV3cy8xNE0KbmV3c2FnZW50LzFTCm5ld3Nib3kvMVNNCm5ld3NjYXN0LzE0U01SWgpuZXdzY2FzdGVyLzFNCm5ld3NkZWFsZXIvMVNNCm5ld3NmbGFzaC8xUwpuZXdzZ2lybC8xU00KbmV3c2dyb3VwLzFNUwpuZXdzaG91bmQvMVMKbmV3c2xldHRlci8xTVMKbmV3c21hbi8xTQpuZXdzbWVuLzEKbmV3c3BhcGVyLzE0TVMKbmV3c3BhcGVybWFuLzFNCm5ld3NwYXBlcm1lbi8xCm5ld3NwYXBlcndvbWFuLzFNCm5ld3NwYXBlcndvbWVuLzEKbmV3c3BlYWsvMQpuZXdzcHJpbnQvMU0KbmV3c3JlYWRlci8xUwpuZXdzcmVlbC8xTVMKbmV3c3Jvb20vMU1TCm5ld3NzdGFuZC8xU00KbmV3c3dlZWtseS8xU00KbmV3c3dvbWFuLzFNCm5ld3N3b21lbi8xCm5ld3N3b3J0aGluZXNzLzFNCm5ld3N3b3J0aHkvNVAKbmV3c3kvNTFUUgpuZXd0LzFNUwpuZXd0b24vMU1TCm5leHQvNSsxTQpuZXh1cy8xTVMKbmlhY2luLzFNCm5pYi8xNFNNCm5pYmJsZS80MU1aR0RSUwpuaWJibGVyLzFNCm5pY2UvNTE0UFlUUgpuaWNlbmVzcy8xTQpuaWNldHkvMVNNCm5pY2hlLzE0NVNNCm5pY2svMTRNRFJTWkcKbmlja2VsLzE1NE1TCm5pY2tlbG9kZW9uLzFTTQpuaWNrZXIvMTRNREcKbmlja2xlLzFTCm5pY2tuYW1lLzE0RFNNRwpuaWNvdGluZS8xTQpuaWVjZS8xU00KbmlmZWRpcGluZS8xCm5pZmYvMTQKbmlmZnkvNQpuaWZ0eS81MVRSCm5pZ2dhLzFNUyEKbmlnZ2FyZC81MTRTTVkKbmlnZ2FyZGxpbmVzcy8xTQpuaWdnYXovMSEKbmlnZ2VyLzE0U00hCm5pZ2dsZS8xNE1aR0RSUwpuaWdnbGVyLzFNCm5pZ2gvNTQrUlQKbmlnaHQvMTRTTVkKbmlnaHRjYXAvMTRTTQpuaWdodGNsb3RoZXMvMU0KbmlnaHRjbHViLzE0U00KbmlnaHRjbHViYmVkLzQKbmlnaHRjbHViYmluZy80Cm5pZ2h0ZHJlc3MvMU1TCm5pZ2h0ZmFsbC8xTQpuaWdodGdvd24vMVNNCm5pZ2h0aGF3ay8xU00KbmlnaHRpZS8xU00KbmlnaHRpbmdhbGUvMVNNCm5pZ2h0bGlmZS8xTQpuaWdodGxpZ2h0LzFTCm5pZ2h0bG9uZy81Cm5pZ2h0bWFyZS8xNFNNCm5pZ2h0bWFyaXNoLzUKbmlnaHRzaGFkZS8xU00KbmlnaHRzaGlydC8xU00KbmlnaHRzcG90LzFNUwpuaWdodHN0YW5kLzFTTQpuaWdodHN0aWNrLzFTTQpuaWdodHRpbWUvMTVNCm5pZ2h0d2F0Y2htYW4vMQpuaWdodHdhdGNobWVuLzEKbmlnaHR3ZWFyLzFNCm5paGlsaXNtLzFNCm5paGlsaXN0LzFNUwpuaWhpbGlzdGljLzUKbmlsLzFNCm5pbWJpLzEKbmltYmxlLzU0VFBSCm5pbWJsZW5lc3MvMU0KbmltYmx5LwpuaW1idXMvMU0KbmltYnkvMTUKbmltcm9kLzFNUwpuaW5jb21wb29wLzFTTQpuaW5lLzFNUwpuaW5lcGluLzFNUwpuaW5lcGlucy8xTQpuaW5ldGVlbi9TTUgKbmluZXRlZW50aC81MU0KbmluZXRlZW50aHMvMQpuaW5ldGlldGgvNTFNCm5pbmV0aWV0aHMvMQpuaW5ldHkvSFNNCm5pbmphLzE1NFNNCm5pbm55LzFTTQpuaW50aC81MTRNCm5pbnRocy8xCm5pb2JpdW0vMU0KbmlwLzQxU00KbmlwcGVkLzQKbmlwcGVyLzE0TVMKbmlwcGluZXNzLzFNCm5pcHBpbmcvNDEKbmlwcGxlLzE0TVMKbmlwcHkvNVRQUgpuaXJ2YW5hLzFNCm5pc2VpLzFNCm5pdC8xNFNNUgpuaXRlci8xTQpuaXRwaWNrLzRTWkdEUgpuaXRwaWNrZXIvMU0Kbml0cGlja2luZy8xTQpuaXRyYXRlLzE0RFNNR04Kbml0cmF0aW9uLzFNCm5pdHJpYy81MQpuaXRyaWZpY2F0aW9uLzFNCm5pdHJpdGUvMVNNCm5pdHJvLzE1Cm5pdHJvY2VsbHVsb3NlLzFNCm5pdHJvZ2VuLzFNCm5pdHJvZ2Vub3VzLzUKbml0cm9nbHljZXJpbi8xTQpuaXR3aXQvMU1TCm5peC8xNEdNRFMKbm8vKzFTTQpub2IvMTRTWQpub2JibGUvNDFHRFMKbm9iZWxpdW0vMU0Kbm9iaWxpdHkvMU0Kbm9ibGUvMTVSU1BNVApub2JsZW1hbi8xTQpub2JsZW1lbi8xCm5vYmxlbmVzcy8xTQpub2JsZXdvbWFuLzFNCm5vYmxld29tZW4vMQpub2JvZHkvODFTTQpub2N0dXJuYWwvNTFZCm5vY3R1cm5lLzFNUwpub2QvNDFTTQpub2RhbC81Cm5vZGRlZC80Cm5vZGRpbmcvNDE1Cm5vZGRsZS8xNE1TCm5vZGR5LzEKbm9kZS8xTVMKbm9kdWxhci81Cm5vZHVsZS8xTVMKbm9lbC8xTVMKbm9lcy8xCm5vZ2dpbi8xTVMKbm9ob3cvCm5vaXNlLzE0RFNNRwpub2lzZWxlc3MvNVBZCm5vaXNlbGVzc25lc3MvMU0Kbm9pc2VtYWtlci8xTVMKbm9pc2lseS8Kbm9pc2luZXNzLzFNCm5vaXNvbWUvNQpub2lzeS81UFRSCm5vbWFkLzE1U00Kbm9tYWRpYy81Cm5vbWVuY2xhdHVyZS8xTVMKbm9taW5hbC81MVkKbm9taW5hdGUvNDVBQ0dOVkRTCm5vbWluYXRpb24ncy9BCm5vbWluYXRpb24vMUNTTQpub21pbmF0aXZlLzUxU00Kbm9taW5hdG9yLzFDU00Kbm9taW5lZS8xTVMKbm9uLzEKbm9uYWJyYXNpdmUvNTEKbm9uYWJzb3JiZW50LzVTTQpub25hY2FkZW1pYy81MQpub25hY2NlcHRhbmNlLzFNCm5vbmFjaWQvNTEKbm9uYWN0aXZlLzVNUwpub25hZGRpY3RpdmUvNQpub25hZGhlc2l2ZS81Cm5vbmFkamFjZW50LzUKbm9uYWRqdXN0YWJsZS81Cm5vbmFkbWluaXN0cmF0aXZlLzUKbm9uYWdlLzFNUwpub25hZ2VuYXJpYW4vMTVNUwpub25hZ2dyZXNzaW9uLzFNCm5vbmFsY29ob2xpYy81MQpub25hbGlnbmVkLzUKbm9uYWxpZ25tZW50LzFNCm5vbmFsbGVyZ2ljLzUKbm9uYXBwZWFyYW5jZS8xTVMKbm9uYXNzaWduYWJsZS81Cm5vbmF0aGxldGljLzUKbm9uYXR0ZW5kYW5jZS8xTQpub25hdXRvbW90aXZlLzUKbm9uYXZhaWxhYmlsaXR5LzFNCm5vbmJhc2ljLzUKbm9uYmVsaWV2ZXIvMU1TCm5vbmJlbGxpZ2VyZW50LzUxTVMKbm9uYmluZGluZy81Cm5vbmJyZWFrYWJsZS81MQpub25idXJuYWJsZS81Cm5vbmNhbG9yaWMvNQpub25jYW5jZXJvdXMvNQpub25jZS8xNU0Kbm9uY2hhbGFuY2UvMU0Kbm9uY2hhbGFudC81WQpub25jaGFyZ2VhYmxlLzUKbm9uY2xlcmljYWwvNU1TCm5vbmNsaW5pY2FsLzUKbm9uY29sbGVjdGFibGUvNQpub25jb20vMU1TCm5vbmNvbWJhdC81Cm5vbmNvbWJhdGFudC8xTVMKbm9uY29tYnVzdGlibGUvNTEKbm9uY29tbWVyY2lhbC81MU1TCm5vbmNvbW1pdHRhbC81MVkKbm9uY29tbXVuaWNhYmxlLzUKbm9uY29tcGV0aW5nLzUKbm9uY29tcGV0aXRpdmUvNQpub25jb21wbGlhbmNlLzFNCm5vbmNvbXBseWluZy81MQpub25jb21wcmVoZW5kaW5nLzUKbm9uY29uZHVjdGluZy81Cm5vbmNvbmR1Y3Rvci8xTVMKbm9uY29uZm9ybWluZy81Cm5vbmNvbmZvcm1pc20vMQpub25jb25mb3JtaXN0LzE1TVMKbm9uY29uZm9ybWl0eS8xTQpub25jb25zZWN1dGl2ZS81Cm5vbmNvbnN0cnVjdGl2ZS81Cm5vbmNvbnRhZ2lvdXMvNQpub25jb250aW51b3VzLzUKbm9uY29udHJpYnV0aW5nLzUKbm9uY29udHJpYnV0b3J5LzUKbm9uY29udHJvdmVyc2lhbC81Cm5vbmNvbnZlcnRpYmxlLzUKbm9uY29vcGVyYXRpb24vMU0Kbm9uY29ycm9kaW5nLzUKbm9uY29ycm9zaXZlLzUKbm9uY3JlZGl0LzUKbm9uY3JpbWluYWwvNTFTTQpub25jcml0aWNhbC81Cm5vbmNyeXN0YWxsaW5lLzUKbm9uY3VtdWxhdGl2ZS81Cm5vbmN1c3RvZGlhbC81Cm5vbmRhaXJ5LzUKbm9uZGVkdWN0aWJsZS81MU0Kbm9uZGVsaXZlcnkvMVNNCm5vbmRlbW9jcmF0aWMvNQpub25kZW5vbWluYXRpb25hbC81MQpub25kZXBhcnRtZW50YWwvNQpub25kZXByZWNpYXRpbmcvNQpub25kZXNjcmlwdC81MQpub25kZXN0cnVjdGl2ZS81Cm5vbmRldGFjaGFibGUvNQpub25kZXRlcm1pbmlzbS8xCm5vbmRldGVybWluaXN0aWMvNQpub25kaXNjaXBsaW5hcnkvNQpub25kaXNjbG9zdXJlLzFNCm5vbmRpc2NyaW1pbmF0aW9uLzFNCm5vbmRpc2NyaW1pbmF0b3J5LzUKbm9uZHJhbWF0aWMvNQpub25kcmlua2VyLzFNUwpub25kcnlpbmcvNQpub25lLzgxCm5vbmVkdWNhdGlvbmFsLzUKbm9uZWZmZWN0aXZlLzUxCm5vbmVsYXN0aWMvNQpub25lbGVjdHJpYy81MQpub25lbGVjdHJpY2FsLzUxCm5vbmVtcHR5LzUKbm9uZW5mb3JjZWFibGUvNQpub25lbnRpdHkvMVNNCm5vbmVxdWl2YWxlbnQvNU1TCm5vbmVzc2VudGlhbC81MQpub25lc3VjaC8xTVMKbm9uZXRoZWxlc3MvCm5vbmV2ZW50LzFNUwpub25leGNoYW5nZWFibGUvNQpub25leGNsdXNpdmUvNQpub25leGVtcHQvNTFNCm5vbmV4aXN0ZW5jZS8xTQpub25leGlzdGVudC81MQpub25leHBsb3NpdmUvNU1TCm5vbmZhY3R1YWwvNQpub25mYWRpbmcvNQpub25mYXQvNQpub25mYXRhbC81MQpub25mYXR0ZW5pbmcvNQpub25mZXJyb3VzLzUKbm9uZmljdGlvbi8xTQpub25maWN0aW9uYWwvNQpub25mbGFtbWFibGUvNTEKbm9uZmxvd2VyaW5nLzUKbm9uZmx1Y3R1YXRpbmcvNQpub25mbHlpbmcvNQpub25mb29kLzUxTQpub25mcmVlemluZy81Cm5vbmZ1bmN0aW9uYWwvNQpub25nb3Zlcm5tZW50YWwvNQpub25ncmFudWxhci81Cm5vbmhhemFyZG91cy81Cm5vbmhlcmVkaXRhcnkvNQpub25odW1hbi81MQpub25pZGVudGljYWwvNTEKbm9uaW5jbHVzaXZlLzUKbm9uaW5kZXBlbmRlbnQvNQpub25pbmR1c3RyaWFsLzUKbm9uaW5mZWN0aW91cy81Cm5vbmluZmxhbW1hdG9yeS81Cm5vbmluZmxhdGlvbmFyeS81Cm5vbmluZmxlY3RlZC81Cm5vbmludGVsbGVjdHVhbC81MU1TCm5vbmludGVyY2hhbmdlYWJsZS81Cm5vbmludGVyZmVyZW5jZS8xTQpub25pbnRlcnZlbnRpb24vMU0Kbm9uaW50b3hpY2F0aW5nLzUKbm9uaW52YXNpdmUvNQpub25pcnJpdGF0aW5nLzUKbm9uaXNzdWUvMQpub25qdWRnbWVudGFsLzUKbm9uanVkaWNpYWwvNQpub25sZWdhbC81Cm5vbmxldGhhbC81MQpub25saW5lYXIvNQpub25saXRlcmFyeS81Cm5vbmxpdmluZy81TQpub25tYWduZXRpYy81Cm5vbm1hbGlnbmFudC81Cm5vbm1lbWJlci8xTVMKbm9ubWV0YWwvMVNNCm5vbm1ldGFsbGljLzUKbm9ubWlncmF0b3J5LzUKbm9ubWlsaXRhbnQvNTEKbm9ubWlsaXRhcnkvNQpub25uYXJjb3RpYy81MVNNCm5vbm5hdGl2ZS81MU1TCm5vbm5lZ290aWFibGUvNTEKbm9ubnVjbGVhci81Cm5vbm51bWVyaWNhbC81Cm5vbm9iamVjdGl2ZS8xNQpub25vYmxpZ2F0b3J5LzUKbm9ub2JzZXJ2YW5jZS8xTQpub25vYnNlcnZhbnQvNQpub25vY2N1cGF0aW9uYWwvNQpub25vY2N1cmVuY2UvMQpub25vZmZpY2lhbC81MQpub25vcGVyYXRpb25hbC81Cm5vbm9wZXJhdGl2ZS81MQpub25wYXJhbGxlbC81TVMKbm9ucGFyZWlsLzUxTVMKbm9ucGFydGljaXBhbnQvNTFNUwpub25wYXJ0aWNpcGF0aW5nLzUKbm9ucGFydGlzYW4vNTFTTQpub25wYXlpbmcvNQpub25wYXltZW50LzFTTQpub25wZXJmb3JtYW5jZS8xTQpub25wZXJmb3JtaW5nLzUKbm9ucGVyaXNoYWJsZS81MQpub25wZXJzb24vMU1TCm5vbnBoeXNpY2FsLzVZCm5vbnBsdXMvMTRTCm5vbnBsdXNzZWQvNTQKbm9ucGx1c3NpbmcvNDUKbm9ucG9pc29ub3VzLzUKbm9ucG9saXRpY2FsLzUKbm9ucG9sbHV0aW5nLzUKbm9ucG9yb3VzLzUKbm9ucHJhY3RpY2luZy81Cm5vbnByZWp1ZGljaWFsLzUKbm9ucHJlc2NyaXB0aW9uLzUKbm9ucHJvZHVjdGl2ZS81Cm5vbnByb2Zlc3Npb25hbC81MVNNCm5vbnByb2ZpdC81MVNNQgpub25wcm9saWZlcmF0aW9uLzFNCm5vbnB1YmxpYy81Cm5vbnB1bmlzaGFibGUvNQpub25yYWNpYWwvNQpub25yYWRpb2FjdGl2ZS81Cm5vbnJhbmRvbS81Cm5vbnJlYWN0aXZlLzUKbm9ucmVjaXByb2NhbC81U00Kbm9ucmVjaXByb2NhdGluZy81Cm5vbnJlY29nbml0aW9uLzUxTQpub25yZWNvdmVyYWJsZS81Cm5vbnJlY3VycmluZy81Cm5vbnJlZGVlbWFibGUvNQpub25yZWZpbGxhYmxlLzUKbm9ucmVmdW5kYWJsZS81Cm5vbnJlbGlnaW91cy81Cm5vbnJlbmV3YWJsZS81MQpub25yZXByZXNlbnRhdGlvbmFsLzUKbm9ucmVzaWRlbnQvNTFNUwpub25yZXNpZGVudGlhbC81Cm5vbnJlc2lkdWFsLzVNCm5vbnJlc2lzdGFuY2UvMU0Kbm9ucmVzaXN0YW50LzUxCm5vbnJlc3RyaWN0aXZlLzUKbm9ucmV0dXJuYWJsZS81MU1TCm5vbnJoeXRobWljLzUKbm9ucmlnaWQvNTEKbm9uc2FsYXJpZWQvNQpub25zY2hlZHVsZWQvNQpub25zY2llbnRpZmljLzUKbm9uc2NvcmluZy81Cm5vbnNlYXNvbmFsLzUKbm9uc2VjdGFyaWFuLzUxCm5vbnNlY3VsYXIvNQpub25zZWdyZWdhdGVkLzUKbm9uc2Vuc2UvMTQ1TQpub25zZW5zaWNhbC81WQpub25zZW5zaXRpdmUvNQpub25zZXhpc3QvNTEKbm9uc2V4dWFsLzUKbm9uc2tpZC81Cm5vbnNsaXAvNQpub25zbW9rZXIvMVNNCm5vbnNtb2tpbmcvNQpub25zb2NpYWwvNQpub25zcGVha2luZy81Cm5vbnNwZWNpYWxpc3QvNTFNUwpub25zcGVjaWFsaXppbmcvNQpub25zcGVjaWZpYy81Cm5vbnNwaXJpdHVhbC81U00Kbm9uc3RhaW5pbmcvNQpub25zdGFuZGFyZC81MQpub25zdGFydGVyLzFNUwpub25zdGljay81Cm5vbnN0b3AvNTEKbm9uc3RyYXRlZ2ljLzUKbm9uc3RyaWtpbmcvNQpub25zdHJ1Y3R1cmFsLzUKbm9uc3VjY2Vzc2l2ZS81Cm5vbnN1cHBvcnQvMUdNCm5vbnN1cmdpY2FsLzUKbm9uc3VzdGFpbmluZy81Cm5vbnN5bXBhdGhpemVyLzFNCm5vbnRhcm5pc2hhYmxlLzUKbm9udGF4YWJsZS81MQpub250ZWNobmljYWwvNQpub250ZW51cmVkLzUKbm9udGhlYXRyaWNhbC81MQpub250aGlua2luZy81MQpub250aHJlYXRlbmluZy81Cm5vbnRveGljLzUxCm5vbnRyYWRpdGlvbmFsLzUKbm9udHJhbnNmZXJhYmxlLzUKbm9udHJhbnNwYXJlbnQvNQpub250cml2aWFsLzUKbm9udHJvcGljYWwvNQpub251bmlmb3JtLzUKbm9udW5pb24vNTEKbm9udXNlci8xTVMKbm9udmVub21vdXMvNQpub252ZXJiYWwvNTEKbm9udmlhYmxlLzUKbm9udmlvbGVuY2UvMU0Kbm9udmlvbGVudC81WQpub252aXJ1bGVudC81Cm5vbnZvY2FsLzUKbm9udm9jYXRpb25hbC81Cm5vbnZvbGF0aWxlLzUKbm9udm90ZXIvMU1TCm5vbnZvdGluZy81Cm5vbndoaXRlLzUxTVMKbm9ud29ya2luZy81Cm5vbnlpZWxkaW5nLzUKbm9uemVyby81MQpub29kbGUvMTRNR0RTCm5vb2svMTRNUwpub29raWUvMQpub29reS8xNQpub29uLzE0TQpub29uZGF5LzFNCm5vb250aWRlLzFNCm5vb250aW1lLzFNCm5vb3NlLzE0U00Kbm9wZS8xNApub3IvNzEKbm9yJ2Vhc3Rlci8xCm5vcm0vMTRNUwpub3JtYWwvNTFNWQpub3JtYWxjeS8xTQpub3JtYWxpdHkvMU0Kbm9ybWFsaXphdGlvbi8xMk0Kbm9ybWFsaXplLzREU0cKbm9ybWF0aXZlLzUxCm5vcnRoLzE1NFpNUgpub3J0aGJvdW5kLzUKbm9ydGhlYXN0LzE1TVJaCm5vcnRoZWFzdGVyLzFNWQpub3J0aGVhc3Rlcm4vNQpub3J0aGVhc3R3YXJkLzVTCm5vcnRoZXIvMTQ1TVkKbm9ydGhlcmx5LzE1U00Kbm9ydGhlcm4vNTFaUgpub3J0aGVybmVyLzFNCm5vcnRoZXJubW9zdC81Cm5vcnRod2FyZC8xNVMKbm9ydGh3ZXN0LzE1Wk1SCm5vcnRod2VzdGVyLzFNWQpub3J0aHdlc3Rlcm4vNTEKbm9ydGh3ZXN0d2FyZC81Uwpub3NlLzE0TUdEUwpub3NlYmFnLzFTCm5vc2VibGVlZC8xTVMKbm9zZWNvbmUvMVNNCm5vc2VkaXZlLzE0RFNNRwpub3NlZ2F5LzFTTQpub3NoLzE0TURSU1pHCm5vc2hlci8xTQpub3NpbHkvCm5vc2luZXNzLzFNCm5vc3RhbGdpYS8xTQpub3N0YWxnaWMvNTEKbm9zdGFsZ2ljYWxseS8Kbm9zdHJpbC8xTVMKbm9zdHJ1bS8xTVMKbm9zeS81MTRSUFQKbm90LzcxQn4Kbm90YWJpbGl0eS8xU00Kbm90YWJsZS81MVNNCm5vdGFibHkvCm5vdGFyaWFsLzUKbm90YXJpemF0aW9uLzFNCm5vdGFyaXplLzRHRFMKbm90YXJ5LzFTTQpub3RhdGUvNDVHRFMKbm90YXRpb24vMUZDU00Kbm90Y2gvMTRHTURTCm5vdGUncwpub3RlLzE0RkNTREcKbm90ZWJvb2svMU1TCm5vdGVsZXQvMVMKbm90ZXBhZC8xUwpub3RlcGFwZXIvMU0Kbm90ZXdvcnRoaW5lc3MvMU0Kbm90ZXdvcnRoeS81MVAKbm90aGluZy84MTVQU00Kbm90aGluZ25lc3MvMU0Kbm90aWNlLzE0TUdEUwpub3RpY2VhYmxlLzVVCm5vdGljZWFibHkvCm5vdGljZWJvYXJkLzFTCm5vdGljZWQvNFUKbm90aWZpYWJsZS81Cm5vdGlmaWNhdGlvbi8xTQpub3RpZmllci8xTQpub3RpZnkvNE5EUlNYWkcKbm90aW9uLzFNUwpub3Rpb25hbC81MVkKbm90b3JpZXR5LzFNCm5vdG9yaW91cy81WQpub3R3aXRoc3RhbmRpbmcvNysKbm90d29yay8xUwpub3VnYXQvMU1TCm5vdW4vMTRLTVMKbm91cmlzaC8xNERTTEcKbm91cmlzaG1lbnQvMU0Kbm91cy8xCm5vdmEvMU1TCm5vdmFlLzEKbm92ZWwvNTFTTQpub3ZlbGV0dGUvMVNNCm5vdmVsaXN0LzFTTQpub3ZlbGl6YXRpb24vMU1TCm5vdmVsaXplLzREU0cKbm92ZWxsYS8xTVMKbm92ZWx0eS8xNVNNCm5vdmVuYS8xTVMKbm92ZW5lLzUKbm92aWNlLzFNUwpub3ZpdGlhdGUvMU1TCm5vdy81NzE0TX4Kbm93YWRheXMvTQpub3dheS9TCm5vd2hlcmUvNTFNCm5vd2lzZS8Kbm93dC84MQpub3hpb3VzLzUKbm96emxlLzFNUwpudS8xNVNNCm51YW5jZS8xNE1EUwpudWIvMTRTTQpudWJiaW4vMU1TCm51YmJ5LzVUUgpudWJpbGUvNTEKbnVjbGVhci81MUsKbnVjbGVhdGUvNTQxRFNHTgpudWNsZWF0aW9uLzFNCm51Y2xlaS8xCm51Y2xlaWMvNQpudWNsZW9saS8xCm51Y2xlb2x1cy8xTQpudWNsZW9uLzFTTQpudWNsZW9zaWRlLzEKbnVjbGVvdGlkZS8xCm51Y2xldXMvMU0KbnVkZS81MU1UUlMKbnVkZ2UvMTRHRFNNCm51ZGlzbS8xTQpudWRpc3QvMTVTTQpudWRpdHkvMU0KbnVnYXRvcnkvNQpudWdnZXQvMTRTTQpudWlzYW5jZS8xTVMKbnVrZS8xNE1HRFMKbnVsbC8xNTRTCm51bGxpZmljYXRpb24vMU0KbnVsbGlmeS80TkRTRwpudWxsaXR5LzFNCm51bWIvNTRaVEdQRFJZUwpudW1iZXIncwpudW1iZXIvMTQ1QVNERwpudW1iZXJlZC80VQpudW1iZXJsZXNzLzUKbnVtYm5lc3MvMU0KbnVtZXJhYmxlLzVJCm51bWVyYWN5LzFJTQpudW1lcmFsLzE1U00KbnVtZXJhdGUvNDVYR05EUwpudW1lcmF0aW9uLzFNCm51bWVyYXRvci8xTVMKbnVtZXJpYy81MQpudW1lcmljYWwvNVkKbnVtZXJvbG9naXN0LzFNUwpudW1lcm9sb2d5LzFNCm51bWVyb3VzLzVZCm51bWlub3VzLzUKbnVtaXNtYXRpYy81UwpudW1pc21hdGljcy8xTQpudW1pc21hdGlzdC8xU00KbnVtc2t1bGwvMU1TCm51bi8xOFNNCm51bmNpby8xU00KbnVubmVyeS8xU00KbnVwdGlhbC81TVMKbnVyc2UvMTRNWkdEUlMKbnVyc2VsaW5ncy8xCm51cnNlbWFpZC8xNE1TCm51cnNlci8xTQpudXJzZXJ5LzFTTQpudXJzZXJ5bWFuLzFNCm51cnNlcnltZW4vMQpudXJzaW5nLzUxNE0KbnVyc2xpbmcvMVNNCm51cnR1cmUvMTREUlNNWkcKbnVydHVyZXIvMU0KbnV0LzE0U00KbnV0Y2FzZS8xUwpudXRjcmFja2VyLzFNUwpudXRoYXRjaC8xTVMKbnV0aG91c2UvMVMKbnV0bWVhdC8xU00KbnV0bWVnLzE0U00KbnV0cGljay8xNFNNCm51dHJpYS8xU00KbnV0cmllbnQvMTVNUwpudXRyaW1lbnQvMU1TCm51dHJpdGlvbi8xTQpudXRyaXRpb25hbC81WQpudXRyaXRpb25pc3QvMVNNCm51dHJpdGlvdXMvNVlQCm51dHJpdGlvdXNuZXNzLzFNCm51dHJpdGl2ZS81MQpudXRzaGVsbC8xNE1TCm51dHRlZC80Cm51dHRlci8xUwpudXR0aW5lc3MvMU0KbnV0dGluZy80MQpudXR0eS81UlRQCm51enpsZS80MURSU01aRwpudXp6bGVyLzFNCm55YmJsZS8xUwpueWxvbi8xTVMKbnlsb25zLzFNCm55bXBoLzE0TQpueW1waGV0LzFNUwpueW1waG8vMVMKbnltcGhvbWFuaWEvMU0KbnltcGhvbWFuaWFjLzE1U00KbnltcGhzLzE0Cm8vMTUrCm8nY2xvY2svCm8nZXIvKwpvYWYvMVNNCm9hZmlzaC81UFkKb2FmaXNobmVzcy8xTQpvYWsvMTU0U01OCm9ha3VtLzFNCm9hci8xNFNHTUQKb2FybG9jay8xU00Kb2Fyc21hbi8xTQpvYXJzbWVuLzEKb2Fyc3dvbWFuLzFNCm9hcnN3b21lbi8xCm9hc2VzLzEKb2FzaXMvMU0Kb2F0LzFTTU4Kb2F0Y2FrZS8xU00Kb2F0aC8xNE0Kb2F0aHMvMTQKb2F0bWVhbC8xNU0Kb2F0cy8xTQpvYi8xUwpvYmJsaWdhdG8vMU1TCm9iZHVyYWN5LzFNCm9iZHVyYXRlLzU0UFkKb2JkdXJhdGVuZXNzLzFNCm9iZWRpZW5jZS8xRU0Kb2JlZGllbnQvNTFFWQpvYmVpc2FuY2UvMVNNCm9iZWlzYW50LzUKb2JlbGlzay8xNE1TCm9iZXNlLzUxCm9iZXNpdHkvMU0Kb2JleS80RURTRwpvYmZ1c2NhdGUvNDVHTlhEUwpvYmZ1c2NhdGlvbi8xTQpvYmkvMVNNCm9iaXQvMU1TCm9iaXR1YXJ5LzFTTQpvYmovMQpvYmplY3QvMTRTR1ZNRApvYmplY3RpZnkvNE5HRFMKb2JqZWN0aW9uLzFTTUIKb2JqZWN0aW9uYWJsZS81VQpvYmplY3Rpb25hYmx5LwpvYmplY3RpdmUvNTFTTVlQCm9iamVjdGl2ZW5lc3MvMU0Kb2JqZWN0aXZpdHkvMU0Kb2JqZWN0b3IvMU1TCm9ianVyZ2F0ZS80WEdORFMKb2JqdXJnYXRpb24vMU0Kb2JsYXRlLzE1NE5YCm9ibGF0aW9uLzFNCm9ibGlnYXRlLzQ1RFNYR04Kb2JsaWdhdGlvbi8xTQpvYmxpZ2F0b3JpbHkvCm9ibGlnYXRvcnkvNQpvYmxpZ2UvNEVHRFMKb2JsaWdpbmcvNTQxWQpvYmxpcXVlLzUxNFNNWVAKb2JsaXF1ZW5lc3MvMU0Kb2JsaXF1aXR5LzFNCm9ibGl0ZXJhdGUvNDVEU0dOCm9ibGl0ZXJhdGlvbi8xTQpvYmxpdmlvbi8xNE0Kb2JsaXZpb3VzLzVZUApvYmxpdmlvdXNuZXNzLzFNCm9ibG9uZy81MTRNUwpvYmxvcXV5LzFNCm9ibm94aW91cy81WVAKb2Jub3hpb3VzbmVzcy8xTQpvYm9lLzFNUwpvYm9pc3QvMU1TCm9ic2NlbmUvNTRSWVQKb2JzY2VuaXR5LzFTTQpvYnNjdXJhbnRpc20vMU0Kb2JzY3VyYW50aXN0LzE1U00Kb2JzY3VyZS81NERSU1lURwpvYnNjdXJpdHkvMVNNCm9ic2VxdWllcy8xCm9ic2VxdWlvdXMvNVBZCm9ic2VxdWlvdXNuZXNzLzFNCm9ic2VxdXkvMU0Kb2JzZXJ2YWJseS8Kb2JzZXJ2YW5jZS8xTVMKb2JzZXJ2YW50LzVZCm9ic2VydmF0aW9uLzFTTQpvYnNlcnZhdGlvbmFsLzUKb2JzZXJ2YXRvcnkvMVNNCm9ic2VydmUvNDFEUlNCWkcKb2JzZXJ2ZWQvNFUKb2JzZXJ2ZXIvMU0Kb2JzZXNzLzREU0dWCm9ic2Vzc2lvbi8xU00Kb2JzZXNzaW9uYWwvNVkKb2JzZXNzaXZlLzUxUFNNWQpvYnNlc3NpdmVuZXNzLzFNCm9ic2lkaWFuLzE1TQpvYnNvbGVzY2UvNERTRwpvYnNvbGVzY2VuY2UvMU0Kb2Jzb2xlc2NlbnQvNQpvYnNvbGV0ZS81NEdEUwpvYnN0YWNsZS8xTVMKb2JzdGV0cmljLzVTCm9ic3RldHJpY2FsLzUKb2JzdGV0cmljaWFuLzFTTQpvYnN0ZXRyaWNzLzFNCm9ic3RpbmFjeS8xTQpvYnN0aW5hdGUvNVkKb2JzdHJlcGVyb3VzLzVZUApvYnN0cmVwZXJvdXNuZXNzLzFNCm9ic3RydWN0LzRER1ZTCm9ic3RydWN0ZWQvNFUKb2JzdHJ1Y3Rpb24vMVNNCm9ic3RydWN0aW9uaXNtLzFNCm9ic3RydWN0aW9uaXN0LzE1TVMKb2JzdHJ1Y3RpdmUvNTFZUApvYnN0cnVjdGl2ZW5lc3MvMU0Kb2J0YWluLzREQkxHUwpvYnRhaW5hYmxlLzVVCm9idGFpbm1lbnQvMU0Kb2J0cnVkZS80RFNHCm9idHJ1c2lvbi8xTQpvYnRydXNpdmUvNVVQWQpvYnRydXNpdmVuZXNzLzFVTQpvYnR1c2UvNTRZVFJQCm9idHVzZW5lc3MvMU0Kb2J2ZXJzZS81MVNNCm9idmlhdGUvNDE1RFNHTgpvYnZpYXRpb24vMU0Kb2J2aW91cy81UFkKb2J2aW91c25lc3MvMU0Kb2NhcmluYS8xTVMKb2NjYXNpb24vMTRHTURTCm9jY2FzaW9uYWwvNTFZCm9jY2lkZW50YWwvNTFTTQpvY2NsdWRlLzRHRFMKb2NjbHVzaW9uLzFTTQpvY2NsdXNpdmUvNTEKb2NjdWx0LzQ1MU0Kb2NjdWx0aXNtLzFNCm9jY3VsdGlzdC8xU00Kb2NjdXBhbmN5LzFNCm9jY3VwYW50LzFTTQpvY2N1cGF0aW9uLzFBTQpvY2N1cGF0aW9uYWwvNVkKb2NjdXBhdGlvbnMvMQpvY2N1cGllZC81NFUKb2NjdXBpZXIvMVNNCm9jY3VweS80QURTRwpvY2N1ci80QVMKb2NjdXJyZWQvNEEKb2NjdXJyZW5jZS8xU00Kb2NjdXJyaW5nLzQxNUEKb2NlYW4vMVNNCm9jZWFuZnJvbnQvNTFTTQpvY2VhbmdvaW5nLzUKb2NlYW5pYy81TQpvY2Vhbm9ncmFwaGVyLzFTTQpvY2Vhbm9ncmFwaGljLzUKb2NlYW5vZ3JhcGh5LzFNCm9jZWFub2xvZ3kvMU0Kb2NlbG90LzFNUwpvY2gvUgpvY2hlci8xNE0Kb2NrZXIvMTQ1UwpvY3RhZ29uLzFNUwpvY3RhZ29uYWwvNQpvY3RhbC8xNQpvY3RhbmUvMU1TCm9jdGF2ZS8xNDVNUwpvY3Rhdm8vMU1TCm9jdGV0LzFTTQpvY3RvZ2VuYXJpYW4vMTVTTQpvY3RvcHVzLzE0TVMKb2N1bGFyLzUxTVMKb2N1bGlzdC8xU00Kb2N1bG9tb3Rvci81Cm9kYWxpc3F1ZS8xU00Kb2RkLzUxU1RSWUxQCm9kZGJhbGwvMTVTTQpvZGRpdHkvMVNNCm9kZG1lbnQvMVNNCm9kZG5lc3MvMU0Kb2Rkcy8xTQpvZGUvMVNNCm9kaW91cy81WVAKb2Rpb3VzbmVzcy8xTQpvZGl1bS8xTQpvZG9tZXRlci8xTVMKb2Rvci8xTURTCm9kb3JpZmVyb3VzLzUKb2Rvcmxlc3MvNQpvZG9yb3VzLzUKb2R5c3NleS8xTVMKb2VkaXBhbC81Cm9lbm9sb2d5LzFNCm9lbm9waGlsZS8xU00Kb2V1dnJlLzFNUwpvZi8rNH4Kb2ZmLzUrNDFTWkdEUkoKb2ZmYWwvMU0Kb2ZmYmVhdC8xNU1TCm9mZmVuZC80WkdEUlMKb2ZmZW5kZXIvMU0Kb2ZmZW5zZS8xTVMKb2ZmZW5zaXZlJ3MKb2ZmZW5zaXZlLzUxSVBZCm9mZmVuc2l2ZW5lc3MvMUlNCm9mZmVuc2l2ZXMvMQpvZmZlci8xNEpHTUQKb2ZmZXJpbmcvMTRNCm9mZmVydG9yeS8xU00Kb2ZmaGFuZC81Cm9mZmhhbmRlZC81UFkKb2ZmaGFuZGVkbmVzcy8xTQpvZmZpY2UvMTRNWlJTCm9mZmljZWhvbGRlci8xU00Kb2ZmaWNlci8xNE0Kb2ZmaWNpYWwvNTFNWVMKb2ZmaWNpYWxkb20vMU0Kb2ZmaWNpYWxlc2UvMQpvZmZpY2lhbGlzbS8xTQpvZmZpY2lhbnQvMVNNCm9mZmljaWF0ZS80MURTRwpvZmZpY2lhdG9yLzFNUwpvZmZpY2lvdXMvNVBZCm9mZmljaW91c25lc3MvMU0Kb2ZmaW5nLzE0TQpvZmZpc2gvNQpvZmZsaW5lLzU0Cm9mZmxvYWQvNDFTREcKb2ZmcHJpbnQvMTRTTQpvZmZzZXQvMTQ1TVMKb2Zmc2V0dGluZy80MQpvZmZzaG9vdC8xTVMKb2Zmc2hvcmUvNTQxRwpvZmZzaWRlLzUxCm9mZnNpdGUvNTEKb2Zmc3ByaW5nLzFNCm9mZnN0YWdlLzU0UwpvZmZ0cmFjay81Cm9mdC8Kb2Z0ZW4vNVRSCm9mdGVudGltZXMvCm9mdHRpbWVzLwpvZ2xlLzQxTVpHRFJTCm9nbGVyLzFNCm9ncmUvMU1TCm9ncmVpc2gvNQpvZ3Jlc3MvMU1TCm9oLzE0TQpvaG0vMVNNCm9obW1ldGVyLzFNUwpvaG8vCm9ocy8xNApvaS8xOApvaWsvMVMKb2lsLzE0U0dNRApvaWxjYW4vMVMKb2lsY2xvdGgvMU0Kb2lsY2xvdGhzLzEKb2lsZmllbGQvMVMKb2lsaW5lc3MvMU0Kb2lsbWFuLzEKb2lsbWVuLzEKb2lsc2tpbi8xTVMKb2lsc2tpbnMvMU0Kb2lseS81MVJQVApvaW5rLzE0TURTRwpvaW50bWVudC8xU00Kb2thcGkvMVNNCm9rYXkvMTQ1TVNHCm9rcmEvMU1TCm9sZC81MVRNTlJQCm9sZGllLzFTTQpvbGRpc2gvNQpvbGRuZXNzLzFNCm9sZHN0ZXIvMU1TCm9sZS81U01WCm9sZWFnaW5vdXMvNQpvbGVhbmRlci8xTVMKb2xlby8xTQpvbGVvbWFyZ2FyaW5lLzFNCm9sZmFjdG9yeS81MVNNCm9saWdhcmNoLzFNCm9saWdhcmNoaWMvNQpvbGlnYXJjaGljYWwvNQpvbGlnYXJjaHMvMQpvbGlnYXJjaHkvMVNNCm9saWdvbnVjbGVvdGlkZS8xUwpvbGlnb3BvbHkvMVNNCm9saXZlLzE1U00Kb20vMTRTTU5YCm9tYnVkc21hbi8xTQpvbWJ1ZHNtZW4vMQpvbWVnYS8xNVNNCm9tZWxldC8xTVMKb21lbi8xNE0Kb21pY3Jvbi8xTVMKb21pbm91cy81WVAKb21pbm91c25lc3MvMU0Kb21pc3Npb24vMU1TCm9taXQvNFMKb21pdHRlZC80Cm9taXR0aW5nLzQxCm9tbmlidXMvMTU0TVMKb21uaXBvdGVuY2UvMU0Kb21uaXBvdGVudC81MQpvbW5pcHJlc2VuY2UvMU0Kb21uaXByZXNlbnQvNQpvbW5pc2NpZW5jZS8xTQpvbW5pc2NpZW50LzUxCm9tbml2b3JlLzFNUwpvbW5pdm9yb3VzLzVQWQpvbW5pdm9yb3VzbmVzcy8xTQpvbi81KzQxWX4Kb25ib2FyZC81NApvbmNlLzcxTQpvbmNvZ2VuZS8xU00Kb25jb2xvZ2lzdC8xU00Kb25jb2xvZ3kvMU0Kb25jb21pbmcvMTU0Cm9uZS8xODU0U1hNTlB+Cm9uZW5lc3MvMU0Kb25lcm91cy81UFkKb25lcm91c25lc3MvMU0Kb25lc2VsZi84Cm9uZXRpbWUvNQpvbmdvaW5nLzUxNApvbmlvbi8xTQpvbmlvbnNraW4vMU0Kb25saW5lLzU0Cm9ubG9va2VyLzFTTQpvbmxvb2tpbmcvNQpvbm9tYXRvcG9laWEvMU0Kb25vbWF0b3BvZWljLzUKb25vbWF0b3BvZXRpYy81Cm9ucnVzaC8xNE1TRwpvbnNjcmVlbi81Cm9uc2V0LzE0TVMKb25zaG9yZS81NApvbnNpZGUvNTEKb25zaXRlLzUKb25zbGF1Z2h0LzFNUwpvbnN0YWdlLzUKb250by8rNQpvbnRvZ2VueS8xTQpvbnRvbG9naWNhbC81Cm9udG9sb2d5LzFNCm9udXMvMU1TCm9ud2FyZC81NApvbnl4LzE1TVMKb29kbGVzLzFNCm9vaC8xNEdECm9vaHMvNDEKb29tcGgvMTQKb29wcy8xNApvb3plLzE0TUdEUwpvb3p5LzVUUgpvcC8xNDVTTURHCm9wYWNpdHkvMU0Kb3BhbC8xTVMKb3BhbGVzY2VuY2UvMU0Kb3BhbGVzY2VudC81Cm9wYXF1ZS81MTRQWVRHRFJTCm9wYXF1ZW5lc3MvMU0Kb3Bjb2RlLzFTCm9wZS81NDFTCm9wZW4vNTQxWlRHSlBNRFJZUwpvcGVuY2FzdC81Cm9wZW5lZC80NVUKb3BlbmVyLzFNCm9wZW5oYW5kZWQvNTRQCm9wZW5oYW5kZWRuZXNzLzFNCm9wZW5oZWFydGVkLzUKb3BlbmluZy80NTFNCm9wZW5uZXNzLzFNCm9wZW53b3JrLzFNCm9wZXJhLzFNUwpvcGVyYWJsZS81SQpvcGVyYW5kLzFTCm9wZXJhdGUvNERTR05WWApvcGVyYXRpYy81Cm9wZXJhdGljYWxseS8Kb3BlcmF0aW9uLzFNCm9wZXJhdGlvbmFsLzVZCm9wZXJhdGl2ZS81MVNNCm9wZXJhdG9yLzFTTQpvcGVyZXR0YS8xU00Kb3BodGhhbG1pYy81Cm9waHRoYWxtb2xvZ2lzdC8xU00Kb3BodGhhbG1vbG9neS8xTQpvcGlhdGUvNTE0U00Kb3BpbmUvNDFHTlhEUwpvcGluaW9uLzE0TQpvcGluaW9uYXRlZC80NQpvcGlvaWQvMVNNCm9waXVtLzFNCm9wb3NzdW0vMU1TCm9wcC8rMQpvcHBvbmVudC8xNVNNCm9wcG9ydHVuZS81SVkKb3Bwb3J0dW5pc20vMU0Kb3Bwb3J0dW5pc3QvMVNNCm9wcG9ydHVuaXN0aWMvNQpvcHBvcnR1bmlzdGljYWxseS8Kb3Bwb3J0dW5pdHkvMVNNCm9wcG9zZS80RFNHCm9wcG9zZWQvNTRVCm9wcG9zaXRlLzUxK1NNWU5YCm9wcG9zaXRpb24vMU0Kb3BwcmVzcy80RFNHVgpvcHByZXNzaW9uLzFNCm9wcHJlc3NpdmUvNVlQCm9wcHJlc3NpdmVuZXNzLzFNCm9wcHJlc3Nvci8xTVMKb3Bwcm9icmlvdXMvNVkKb3Bwcm9icml1bS8xTQpvcHQvNFNHRApvcHRpYy81MU1TCm9wdGljYWwvNTFZCm9wdGljaWFuLzFTTQpvcHRpY3MvMU0Kb3B0aW1hLzEKb3B0aW1hbC81MVkKb3B0aW1pc20vMVNNCm9wdGltaXN0LzFTTQpvcHRpbWlzdGljLzUKb3B0aW1pc3RpY2FsbHkvCm9wdGltaXphdGlvbi8xTVMKb3B0aW1pemUvNERSU0cKb3B0aW11bS8xNVNNCm9wdGlvbi8xNFNNREcKb3B0aW9uYWwvNTFZCm9wdG9tZXRyaXN0LzFNUwpvcHRvbWV0cnkvMU0Kb3B1bGVuY2UvMU0Kb3B1bGVudC81WQpvcHVzLzFNUwpvci83MTUrfgpvcmFjbGUvMTRTTQpvcmFjdWxhci81Cm9yYWwvNTFNWVMKb3JhbGl0eS8xCm9yYW5nZS8xNTRTTVAKb3JhbmdlYWRlLzFNUwpvcmFuZ2VyeS8xU00Kb3Jhbmd1dGFuLzFTTQpvcmF0ZS80NUdOWERTCm9yYXRpb24vMTRNCm9yYXRvci8xU00Kb3JhdG9yaWNhbC81WQpvcmF0b3Jpby8xTVMKb3JhdG9yeS8xU00Kb3JiLzE0U00Kb3JiaWN1bGFyLzUKb3JiaXQvMTRNRFJaR1MKb3JiaXRhbC81MVNNCm9yYml0ZXIvMU0Kb3JjLzFTTQpvcmNoYXJkLzFTTQpvcmNoZXN0cmEvMU1TCm9yY2hlc3RyYWwvNTEKb3JjaGVzdHJhdGUvNERTWEdOCm9yY2hlc3RyYXRpb24vMU0Kb3JjaGlkLzE1U00Kb3JkYWluLzRTRExHCm9yZGFpbm1lbnQvMU0Kb3JkZWFsLzFTTQpvcmRlci8xNEVBTURHUwpvcmRlcmVkLzU0VQpvcmRlcmluZ3MvMQpvcmRlcmxpbmVzcy8xRU0Kb3JkZXJseS81MVBTTQpvcmRpbmFsLzUxU00Kb3JkaW5hbmNlLzFTTQpvcmRpbmFyaWx5LwpvcmRpbmFyaW5lc3MvMU0Kb3JkaW5hcnkvMTVTTVAKb3JkaW5hdGUvMTQ1TU5TWApvcmRpbmF0aW9uLzFNCm9yZG5hbmNlLzFNCm9yZHVyZS8xTQpvcmUvMStTTQpvcmVnYW5vLzFNCm9yZy8xCm9yZ2FuLzE0TVMKb3JnYW5keS8xTQpvcmdhbmVsbGUvMU1TCm9yZ2FuaWMvNTFTTQpvcmdhbmljYWxseS9JCm9yZ2FuaXNtLzFNUwpvcmdhbmlzbWljLzUKb3JnYW5pc3QvMU1TCm9yZ2FuaXphdGlvbi8xQVNNCm9yZ2FuaXphdGlvbmFsLzVZCm9yZ2FuaXplLzRBRVNERwpvcmdhbml6ZWQvNTRVCm9yZ2FuaXplci8xTVMKb3JnYW56YS8xTQpvcmdhc20vMTRTTQpvcmdhc21pYy81Cm9yZ2lhc3RpYy81Cm9yZ3kvMVNNCm9yaWVsLzFNUwpvcmllbnQncwpvcmllbnQvMjE1NEFFREdTCm9yaWVudGFsLzUxTVMKb3JpZW50YWxpc3QvMVMKb3JpZW50YXRlLzRFRFNHTgpvcmllbnRhdGlvbi8xQUVNCm9yaWVudGF0aW9ucy8xCm9yaWVudGVlcmluZy8xCm9yaWZpY2UvMU1TCm9yaWcvMQpvcmlnYW1pLzE0TQpvcmlnaW4vMVNNCm9yaWdpbmFsLzUxTVlTCm9yaWdpbmFsaXR5LzFNCm9yaWdpbmF0ZS80RFNHTgpvcmlnaW5hdGlvbi8xTQpvcmlnaW5hdG9yLzFTTQpvcmlvbGUvMVNNCm9yaXNvbi8xU00Kb3Jtb2x1LzE1NE0Kb3JuYW1lbnQvMTRTR01ECm9ybmFtZW50YWwvNTEKb3JuYW1lbnRhdGlvbi8xTQpvcm5hdGUvNTRZUApvcm5hdGVuZXNzLzFNCm9ybmVyaW5lc3MvMU0Kb3JuZXJ5LzVQUlQKb3JuaXRob2xvZ2ljYWwvNQpvcm5pdGhvbG9naXN0LzFNUwpvcm5pdGhvbG9neS8xTQpvcm90dW5kLzUxCm9yb3R1bmRpdHkvMVNNCm9ycGhhbi8xNTRTTURHCm9ycGhhbmFnZS8xTVMKb3JyaXMvMU1TCm9ydGhvZG9udGlhLzFNCm9ydGhvZG9udGljLzVTCm9ydGhvZG9udGljcy8xTQpvcnRob2RvbnRpc3QvMVNNCm9ydGhvZG94LzVVCm9ydGhvZG94eS8xU00Kb3J0aG9nb25hbC81MQpvcnRob2dvbmFsaXR5LzEKb3J0aG9ncmFwaGljLzUKb3J0aG9ncmFwaGljYWxseS8Kb3J0aG9ncmFwaHkvMTRTTQpvcnRob3BlZGljLzVTCm9ydGhvcGVkaWNzLzFNCm9ydGhvcGVkaXN0LzFNUwpvcnpvLzFNCm9zY2lsbGF0ZS80R05EU1gKb3NjaWxsYXRpb24vMU0Kb3NjaWxsYXRvci8xU00Kb3NjaWxsYXRvcnkvNQpvc2NpbGxvc2NvcGUvMU1TCm9zY3VsYXRlLzQ1RFNYR04Kb3NjdWxhdGlvbi8xTQpvc2llci8xTVMKb3NtaXVtLzFNCm9zbW9zaXMvMU0Kb3Ntb3RpYy81Cm9zcHJleS8xU00Kb3NzaWNsZXMvMQpvc3NpZmljYXRpb24vMU0Kb3NzaWZ5LzROR0RTCm9zdGVuc2libGUvNQpvc3RlbnNpYmx5Lwpvc3RlbnRhdGlvbi8xTQpvc3RlbnRhdGlvdXMvNVkKb3N0ZW9hcnRocml0aXMvMU0Kb3N0ZW9wYXRoLzFNCm9zdGVvcGF0aGljLzUKb3N0ZW9wYXRocy8xCm9zdGVvcGF0aHkvMU0Kb3N0ZW9wb3Jvc2lzLzFNCm9zdGxlci8xUwpvc3RyYWNpc20vMU0Kb3N0cmFjaXplLzRHRFMKb3N0cmljaC8xTVMKb3RoZXIvNTE0TVNQfgpvdGhlcndpc2UvNQpvdGhlcndvcmxkbHkvNQpvdGlvc2UvNQpvdHRlci8xTVMKb3R0b21hbi8xTVMKb3VibGlldHRlLzFNUwpvdWNoLzE0Cm91Z2h0LzQ4MQpvdWdodG4ndC80Cm91bmNlLzFNUwpvdXIvNFN+Cm91cnNlbHZlcy84Cm91c3QvNFpHRFJTCm91c3Rlci8xNE0Kb3V0LysxNDVTSkdNRFJ+Cm91dGFnZS8xU00Kb3V0YXJndWUvNEdEUwpvdXRiYWNrLzE1NE1TCm91dGJhbGFuY2UvNERTRwpvdXRiaWQvNFMKb3V0YmlkZGluZy80Cm91dGJvYXJkLzUxTVMKb3V0Ym9hc3QvNERTRwpvdXRib3VuZC81MQpvdXRib3gvMTRNUwpvdXRicmVhay8xNE1TCm91dGJ1aWxkaW5nLzE0TVMKb3V0YnVyc3QvNDFTTQpvdXRjYXN0LzQ1MU1TCm91dGNsYXNzLzREU0cKb3V0Y29tZS8xTVMKb3V0Y3JvcC8xNE1TCm91dGNyb3BwZWQvNApvdXRjcm9wcGluZy8xU00Kb3V0Y3J5LzE0U00Kb3V0ZGF0ZWQvNQpvdXRkaWQvNApvdXRkaXN0YW5jZS80R0RTCm91dGRvLzRHCm91dGRvZXMvNApvdXRkb25lLzQKb3V0ZG9vci81NFMKb3V0ZG9vcnMvMTRNCm91dGRvb3JzeS81Cm91dGRyYXcvNEdTCm91dGRyYXduLzUKb3V0ZHJldy80Cm91dGVyY291cnNlLzEKb3V0ZXJtb3N0LzUxCm91dGVyd2Vhci8xTQpvdXRmYWNlLzRHRFMKb3V0ZmFsbC80MVMKb3V0ZmllbGQvMTRTTVJaCm91dGZpZWxkZXIvMU0Kb3V0ZmlnaHQvNFNHCm91dGZpdC8xNFNNCm91dGZpdHRlZC80Cm91dGZpdHRlci8xTVMKb3V0Zml0dGluZy80MQpvdXRmbGFuay80R1NECm91dGZsb3cvMTRNUwpvdXRmb3VnaHQvNApvdXRmb3gvNEdEUwpvdXRnby80MU1KRwpvdXRnb2VzLzQKb3V0Z3Jldy80Cm91dGdyb3cvNEhHUwpvdXRncm93bi80Cm91dGdyb3d0aC8xTQpvdXRncm93dGhzLzEKb3V0Z3Vlc3MvNEdEUwpvdXRndW4vNFMKb3V0Z3VubmVkLzQ1Cm91dGd1bm5pbmcvNApvdXRoaXQvNFMKb3V0aGl0dGluZy80Cm91dGhvdXNlLzE0U00Kb3V0aW5nLzE0TQpvdXRsYWlkLzQKb3V0bGFuZGlzaC81MVBZCm91dGxhbmRpc2huZXNzLzFNCm91dGxhc3QvNERTRwpvdXRsYXcvMTRTR01ECm91dGxheS8xNFNHTQpvdXRsZXQvMVNNCm91dGxpZXIvMVMKb3V0bGluZS8xNE1HRFMKb3V0bGl2ZS80R0RTCm91dGxvb2svMTRNUwpvdXRseWluZy81MQpvdXRtYW5ldXZlci80R0RTCm91dG1hdGNoLzRHRFMKb3V0bW9kZWQvNTQKb3V0bnVtYmVyLzREU0cKb3V0cGFjZS80R0RTCm91dHBhdGllbnQvMTVNUwpvdXRwZXJmb3JtLzRHU0QKb3V0cGxhY2UvNEwKb3V0cGxhY2VtZW50LzFNCm91dHBsYXkvNEdEUwpvdXRwb2ludC80MURHUwpvdXRwb3N0LzFNUwpvdXRwb3VyaW5nLzFNUwpvdXRwcm9kdWNlLzREU0cKb3V0cHV0LzE0U00Kb3V0cHV0dGVkLzQKb3V0cHV0dGluZy80Cm91dHJhY2UvNEdEUwpvdXRyYWdlLzE0TUdEUwpvdXRyYWdlb3VzLzVZCm91dHJhbi80Cm91dHJhbmsvNEdEUwpvdXRyZS81Cm91dHJlYWNoLzE0TURTRwpvdXRyaWRlci8xTVMKb3V0cmlnZ2VyLzFTTQpvdXRyaWdodC81NApvdXRydW4vNDFTCm91dHJ1bm5pbmcvNApvdXRzY29yZS80R0RTCm91dHNlbGwvNEdTCm91dHNldC8xNFNNCm91dHNoaW5lLzRHUwpvdXRzaG9uZS80Cm91dHNob3V0LzRHRFMKb3V0c2lkZS8xNSs0TVpSUwpvdXRzaWRlci8xTQpvdXRzaXplLzE1NE1TCm91dHNraXJ0LzE0TVMKb3V0c21hcnQvNEdEUwpvdXRzb2xkLzQKb3V0c291cmNlLzREU0cKb3V0c291cmNpbmcvNDFNCm91dHNwZW5kLzRTRwpvdXRzcGVudC80NQpvdXRzcG9rZW4vNTRZUApvdXRzcG9rZW5uZXNzLzFNCm91dHNwcmVhZC80NUdTCm91dHN0YW5kaW5nLzQ1WQpvdXRzdGF0aW9uLzE1TVMKb3V0c3RheS80REdTCm91dHN0cmV0Y2gvNERTRwpvdXRzdHJpcC80UwpvdXRzdHJpcHBlZC80Cm91dHN0cmlwcGluZy80MQpvdXR0YS8rCm91dHRha2UvMTQrTVMKb3V0dm90ZS80R0RTCm91dHdhcmQvNTQxWVMKb3V0d2Vhci80R1MKb3V0d2VpZ2gvNEdECm91dHdlaWdocy80Cm91dHdpdC80UwpvdXR3aXRoLysKb3V0d2l0dGVkLzQKb3V0d2l0dGluZy80Cm91dHdvcmUvNApvdXR3b3JrLzQxTURSU1pHCm91dHdvcm4vNDUKb3V6by8xTVMKb3ZhLzErCm92YWwvMTVNUwpvdmFyaWFuLzUKb3ZhcnkvMVNNCm92YXRlLzUxTlgKb3ZhdGlvbi8xNE0Kb3Zlbi8xNE1TCm92ZW5iaXJkLzFTTQpvdmVucHJvb2YvNQpvdmVud2FyZS8xCm92ZXIvNTErNE1ZU34Kb3ZlcmFidW5kYW5jZS8xTQpvdmVyYWJ1bmRhbnQvNQpvdmVyYWNoaWV2ZS80WkdEUlMKb3ZlcmFjaGlldmVyLzFNCm92ZXJhY3QvNEdWU0QKb3ZlcmFnZS81NDFTTQpvdmVyYWdncmVzc2l2ZS81Cm92ZXJhbGwvNTFTTQpvdmVyYWxscy8xTQpvdmVyYW1iaXRpb3VzLzUKb3ZlcmFueGlvdXMvNQpvdmVyYXJjaGluZy80NTEKb3ZlcmFybS81MTRHU0QKb3ZlcmF0ZS80Cm92ZXJhdHRlbnRpdmUvNQpvdmVyYXdlLzREU0cKb3ZlcmJhbGFuY2UvNDFNR0RTCm92ZXJiZWFyLzRHUwpvdmVyYmVhcmluZy80NVkKb3ZlcmJpZC80MVNNCm92ZXJiaWRkaW5nLzQxCm92ZXJiaXRlLzE0TVMKb3ZlcmJsb3duLzU0Cm92ZXJib2FyZC81NApvdmVyYm9sZC81Cm92ZXJib29rLzRER1MKb3ZlcmJvcmUvNTQKb3ZlcmJvcm5lLzQKb3ZlcmJvdWdodC81Cm92ZXJidWlsZC80U0cKb3ZlcmJ1aWx0LzQ1Cm92ZXJidXJkZW4vNDFHU0QKb3ZlcmJ1eS80R1MKb3ZlcmNhbWUvNApvdmVyY2FwYWNpdHkvMU0Kb3ZlcmNhcGl0YWxpemUvNERTRwpvdmVyY2FyZWZ1bC81Cm92ZXJjYXN0LzE1NE1HUwpvdmVyY2F1dGlvdXMvNQpvdmVyY2hhcmdlLzQxRFNNRwpvdmVyY2xvY2svNDFHRApvdmVyY2xvdWQvNFNHRApvdmVyY29hdC8xNE1TCm92ZXJjb21lLzQxR1MKb3ZlcmNvbXBlbnNhdGUvNERTR04Kb3ZlcmNvbXBlbnNhdGlvbi8xTQpvdmVyY29uZmlkZW5jZS8xTQpvdmVyY29uZmlkZW50LzUKb3ZlcmNvbnNjaWVudGlvdXMvNQpvdmVyY29vay80REdTCm92ZXJjcml0aWNhbC81Cm92ZXJjcm93ZC80U0RHCm92ZXJjcm93ZGluZy80MU0Kb3ZlcmRlY29yYXRlLzREU0cKb3ZlcmRlcGVuZGVudC81Cm92ZXJkZXZlbG9wLzRTREcKb3ZlcmRpZC80Cm92ZXJkby80RwpvdmVyZG9lcy80Cm92ZXJkb25lLzU0Cm92ZXJkb3NlLzE0TUdEUwpvdmVyZHJhZnQvMTRTTQpvdmVyZHJhdy80MUdTCm92ZXJkcmF3bi80Cm92ZXJkcmVzcy80MUdNRFMKb3ZlcmRyZXcvNApvdmVyZHJpdmUvNDFTTQpvdmVyZHViLzQxU00Kb3ZlcmR1YmJlZC80Cm92ZXJkdWJiaW5nLzQxCm92ZXJkdWUvNQpvdmVyZWFnZXIvNQpvdmVyZWF0LzRHU04Kb3ZlcmVtb3Rpb25hbC81Cm92ZXJlbXBoYXNpcy8xTQpvdmVyZW1waGFzaXplLzRHRFMKb3ZlcmVudGh1c2lhc3RpYy81Cm92ZXJlc3RpbWF0ZS80MU1HTkRTCm92ZXJlc3RpbWF0aW9uLzFNCm92ZXJleGNpdGUvNERTRwpvdmVyZXhlcmNpc2UvNDFHRFMKb3ZlcmV4ZXJ0LzRTREcKb3ZlcmV4ZXJ0aW9uLzFNCm92ZXJleHBvc2UvNEdEUwpvdmVyZXhwb3N1cmUvMU0Kb3ZlcmV4dGVuZC80REdTCm92ZXJmZWQvNTQKb3ZlcmZlZWQvNEdTCm92ZXJmaWxsLzQxREdTCm92ZXJmbGV3LzQKb3ZlcmZsaWdodC8xTVMKb3ZlcmZsb3cvMTRNRFNHCm92ZXJmbG93bi80Cm92ZXJmbHkvNEdTCm92ZXJmb25kLzUKb3ZlcmZ1bGwvNTEKb3ZlcmdlbmVyYWxpemUvNERTRwpvdmVyZ2VuZXJvdXMvNQpvdmVyZ3JhemUvNERTRwpvdmVyZ3Jldy80Cm92ZXJncm91bmQvNTE0Cm92ZXJncm93LzRIU0cKb3Zlcmdyb3duLzU0Cm92ZXJncm93dGgvMU0Kb3ZlcmhhbmQvNTE0TURTCm92ZXJoYW5nLzQxTVNHCm92ZXJoYXN0eS81Cm92ZXJoYXVsLzE0TURTRwpvdmVyaGVhZC81MStNUwpvdmVyaGVhci80U0cKb3ZlcmhlYXJkLzQKb3ZlcmhlYXQvNDFEU0cKb3Zlcmh1bmcvNDUKb3ZlcmluZHVsZ2UvNEdEUwpvdmVyaW5kdWxnZW5jZS8xTQpvdmVyaW5kdWxnZW50LzUKb3ZlcmluZmxhdGVkLzQ1Cm92ZXJqb3kvNDFHU0QKb3ZlcmtpbGwvMTRNCm92ZXJsYWRlbi81NApvdmVybGFpZC80Cm92ZXJsYWluLzQKb3ZlcmxhbmQvNTE0Cm92ZXJsYXAvNDFTTQpvdmVybGFwcGVkLzQKb3ZlcmxhcHBpbmcvNDUxCm92ZXJsYXJnZS81Cm92ZXJsYXkvNDFHU00Kb3ZlcmxlYWYvCm92ZXJsaWUvNApvdmVybG9hZC80MUdNRFMKb3ZlcmxvbmcvNQpvdmVybG9vay8xNEdNRFMKb3ZlcmxvcmQvMTRNUwpvdmVybHkvNVNHCm92ZXJtYW5uZWQvNDUKb3Zlcm1hbm5pbmcvNApvdmVybWFzdGVyLzRTREcKb3Zlcm1vZGVzdC81Cm92ZXJtdWNoLzUxUwpvdmVybmljZS81Cm92ZXJuaWdodC81NDFNUwpvdmVyb3B0aW1pc20vMU0Kb3Zlcm9wdGltaXN0aWMvNQpvdmVycGFpZC80Cm92ZXJwYXJ0aWN1bGFyLzUKb3ZlcnBhc3MvMTRNUwpvdmVycGF5LzRHUwpvdmVycGxheS80R0RTCm92ZXJwb3B1bGF0ZS80R05EUwpvdmVycG9wdWxhdGlvbi8xTQpvdmVycG93ZXIvNFNERwpvdmVycG93ZXJpbmcvNDUxWQpvdmVycHJhaXNlLzQxRFNHCm92ZXJwcmVjaXNlLzUKb3ZlcnByaWNlLzREU0cKb3ZlcnByaW50LzE0U01ERwpvdmVycHJvZHVjZS80R0RTCm92ZXJwcm9kdWN0aW9uLzFNCm92ZXJwcm90ZWN0LzRTREdWCm92ZXJxdWFsaWZpZWQvNQpvdmVycmFuLzQKb3ZlcnJhdGUvNDFHRFMKb3ZlcnJlYWNoLzQxR0RTCm92ZXJyZWFjdC80U0RHCm92ZXJyZWFjdGlvbi8xU00Kb3ZlcnJlZmluZWQvNDUKb3ZlcnJpZGRlbi80Cm92ZXJyaWRlLzQxTUdTCm92ZXJyaXBlLzVNCm92ZXJyb2RlLzQKb3ZlcnJ1bGUvNEdEUwpvdmVycnVuLzQxU00Kb3ZlcnJ1bm5pbmcvNApvdmVyc2FtcGxpbmcvNDEKb3ZlcnNhdy80Cm92ZXJzZWEvNVMKb3ZlcnNlZS80UlNaCm92ZXJzZWVpbmcvNApvdmVyc2Vlbi80Cm92ZXJzZWVyLzFNCm92ZXJzZWxsLzRHUwpvdmVyc2Vuc2l0aXZlLzVQCm92ZXJzZW5zaXRpdmVuZXNzLzFNCm92ZXJzZXhlZC81Cm92ZXJzaGFkb3cvNERTRwpvdmVyc2hhcmUvNDFEU0cKb3ZlcnNob2UvMU1TCm92ZXJzaG9vdC8xNEdTCm92ZXJzaG90LzQ1MQpvdmVyc2lnaHQvMTRTTQpvdmVyc2ltcGxlLzUKb3ZlcnNpbXBsaWZpY2F0aW9uLzFNCm92ZXJzaW1wbGlmeS80RFNOR1gKb3ZlcnNpemUvNTQxCm92ZXJzbGVlcC80R1MKb3ZlcnNsZXB0LzQKb3ZlcnNvbGQvNQpvdmVyc3BlY2lhbGl6YXRpb24vMU0Kb3ZlcnNwZWNpYWxpemUvNEdEUwpvdmVyc3BlbmQvNDFTRwpvdmVyc3BlbnQvNDUKb3ZlcnNwcmVhZC80R1MKb3ZlcnN0YWZmZWQvNApvdmVyc3RhdGUvNERTTEcKb3ZlcnN0YXRlbWVudC8xTVMKb3ZlcnN0YXkvNDFEU0cKb3ZlcnN0ZXAvNDFTCm92ZXJzdGVwcGVkLzQKb3ZlcnN0ZXBwaW5nLzQKb3ZlcnN0aW11bGF0ZS80RFNHCm92ZXJzdG9jay80MUdTRApvdmVyc3RyZXRjaC80MUdEUwpvdmVyc3RyaWN0LzUKb3ZlcnN0cnVuZy81Cm92ZXJzdHVmZmVkLzU0Cm92ZXJzdWJzY3JpYmUvNERTRwpvdmVyc3VidGxlLzUKb3ZlcnN1cHBseS80MUdEUwpvdmVyc3VzcGljaW91cy81Cm92ZXJ0LzUxWQpvdmVydGFrZS80MUdTCm92ZXJ0YWtlbi80NQpvdmVydGF4LzRHRFMKb3ZlcnRoaW5rLzRTRwpvdmVydGhvdWdodC80MQpvdmVydGhyZXcvNApvdmVydGhyb3cvNDFTTUcKb3ZlcnRocm93bi80Cm92ZXJ0aW1lLzE0TVMKb3ZlcnRpcmUvNEdEUwpvdmVydG9uZS8xNE1TCm92ZXJ0b29rLzQKb3ZlcnR1cmUvMTQ1TVMKb3ZlcnR1cm4vNDFEU0cKb3ZlcnVzZS80MURTTUcKb3ZlcnZhbHVhdGlvbi8xUwpvdmVydmFsdWUvNDFEU0cKb3ZlcnZpZXcvMTRNUwpvdmVyd2VlbmluZy81MTRZCm92ZXJ3ZWlnaHQvNTE0TQpvdmVyd2hlbG0vNDFTR0QKb3ZlcndoZWxtaW5nLzQ1MVkKb3ZlcndpbnRlci80NVNERwpvdmVyd29yay80MUdNRFMKb3ZlcndyaXRlLzQxR1MKb3ZlcndyaXR0ZW4vNApvdmVyd3JvdGUvNApvdmVyd3JvdWdodC80NQpvdmVyemVhbG91cy81Cm92aWR1Y3QvMVNNCm92aXBhcm91cy81Cm92b2lkLzUxTVMKb3Z1bGFyLzUxCm92dWxhdGUvNDVEU0dOCm92dWxhdGlvbi8xTQpvdnVsZS8xTVMKb3Z1bS8xTQpvdy8Kb3dlLzREU0cKb3dsLzE0U00Kb3dsZXQvMU1TCm93bGlzaC81WQpvd24vNTQxRVNHRApvd25lci8xTVMKb3duZXJzaGlwLzFNCm94LzFNTgpveGFsYXRlLzE0Cm94Ymxvb2QvMTVNCm94Ym93LzFNUwpveGNhcnQvMVNNCm94Zm9yZC8xU00Kb3hpZGFudC8xTVMKb3hpZGFzZS8xCm94aWRhdGlvbi8xTQpveGlkYXRpdmUvNQpveGlkZS8xTVMKb3hpZGl6YXRpb24vMU0Kb3hpZGl6ZS80WkdEUlMKb3hpZGl6ZXIvMU0Kb3h0YWlsLzFTCm94eWFjZXR5bGVuZS8xNU0Kb3h5Z2VuLzFNCm94eWdlbmF0ZS80RFNHTgpveHlnZW5hdGlvbi8xTQpveHltb3JhLzEKb3h5bW9yb24vMU0Kb3lzdGVyLzE1NFNNCm96LzEKb3pvbmUvMTRNCnAvKzE0TlJYVEdKCnBILwpwYS8xU01ICnBhYmx1bS8xTQpwYWJ1bHVtLzFNCnBhY2UvMTU0K01aR0RSUwpwYWNlbWFrZXIvMVNNCnBhY2VyLzFNCnBhY2VzZXR0ZXIvMVNNCnBhY2V5LzUKcGFjaHlkZXJtLzFNUwpwYWNoeXNhbmRyYS8xTVMKcGFjaWZpYy81CnBhY2lmaWNhbGx5LwpwYWNpZmljYXRpb24vMU0KcGFjaWZpZXIvMU0KcGFjaWZpc20vMU0KcGFjaWZpc3QvMTVTTQpwYWNpZmlzdGljLzUKcGFjaWZ5LzRaR0RSU04KcGFjaydzCnBhY2svMTRBVUdTRApwYWNrYWdlJ3MKcGFja2FnZS8xNEFHRFMKcGFja2FnZXIvMVNNCnBhY2thZ2luZy80MU0KcGFja2VyLzFNUwpwYWNrZXQvMTRNUwpwYWNraW5nJ3MKcGFja2luZ2hvdXNlLzFTTQpwYWNrc2FkZGxlLzFNUwpwYWN0LzE0TVMKcGFjeS81UlQKcGFkLzE0U00KcGFkZGVkLzU0CnBhZGRpbmcvNDFNCnBhZGRsZS8xNE1aR0RSUwpwYWRkbGVyLzFNCnBhZGRvY2svMTRNREdTCnBhZGR5LzE1U00KcGFkbG9jay8xNE1EU0cKcGFkcmUvMVNNCnBhZWFuLzE0U00KcGFlbGxhLzFNUwpwYWdhbi81MVNNCnBhZ2FuaXNtLzFNCnBhZ2UvMTRNWkdEUlMKcGFnZWFudC8xNE1TCnBhZ2VhbnRyeS8xTQpwYWdlYm95LzFTTQpwYWdlci8xTQpwYWdpbmF0ZS80RFNHTgpwYWdpbmF0aW9uLzFNCnBhZ29kYS8xTVMKcGFoLzEKcGFpZC80NUFVCnBhaWwvMU1TCnBhaWxmdWwvMVNNCnBhaW4vMTRNRFNHCnBhaW5mdWwvNVBZCnBhaW5mdWxsZXIvNQpwYWluZnVsbGVzdC81CnBhaW5mdWxuZXNzLzFNCnBhaW5raWxsZXIvMU1TCnBhaW5raWxsaW5nLzUKcGFpbmxlc3MvNVBZCnBhaW5sZXNzbmVzcy8xTQpwYWluc3Rha2luZy81MU1ZCnBhaW50LzE0U1pHSk1EUgpwYWludGJhbGwvMTQKcGFpbnRib3gvMU1TCnBhaW50YnJ1c2gvMU1TCnBhaW50ZWQvNDVVCnBhaW50ZXIvMU1ZCnBhaW50aW5nLzQxTQpwYWludHdvcmsvMQpwYWlyLzE0QU1EU0cKcGFpcmVkLzRVCnBhaXJpbmcvMTRTCnBhaXJ3aXNlLzUKcGFpc2xleS8xNVNNCnBhamFtYS8xUwpwYWphbWFzLzFNCnBhbC8xNFNNWQpwYWxhY2UvMTRNUwpwYWxhZGluLzFTTQpwYWxhbnF1aW4vMVNNCnBhbGF0YWJsZS81VQpwYWxhdGFsLzUxU00KcGFsYXRhbGl6YXRpb24vMU0KcGFsYXRhbGl6ZS80R0RTCnBhbGF0ZS8xNE1CUwpwYWxhdGlhbC81WQpwYWxhdGluYXRlLzE1TVMKcGFsYXRpbmUvNTFNUwpwYWxhdmVyLzE0R1NNRApwYWxhenppLzEKcGFsYXp6by8xCnBhbGUvNTQxTVlUR1BEUlNKCnBhbGVmYWNlLzFNUwpwYWxlbmVzcy8xTQpwYWxlby8xCnBhbGVvZ3JhcGhlci8xTVMKcGFsZW9ncmFwaHkvMU0KcGFsZW9saXRoaWMvNQpwYWxlb250b2xvZ2lzdC8xU00KcGFsZW9udG9sb2d5LzFNCnBhbGV0dGUvMVNNCnBhbGZyZXkvMVNNCnBhbGltb255LzFNCnBhbGltcHNlc3QvMTRNUwpwYWxpbmRyb21lLzFNUwpwYWxpbmRyb21pYy81MQpwYWxpbmcvNDFNCnBhbGlzYWRlLzE0U00KcGFsaXNoLzUKcGFsbC8xNE1EU0cKcGFsbGFkaXVtLzFNCnBhbGxiZWFyZXIvMU1TCnBhbGxldC8xNE1TCnBhbGxpYXRlLzQ1RFNHTlYKcGFsbGlhdGlvbi8xTQpwYWxsaWF0aXZlLzUxU00KcGFsbGlkLzVZUApwYWxsaWRuZXNzLzFNCnBhbGxvci8xTQpwYWxtLzE0TURTRwpwYWxtYXRlLzE1CnBhbG1ldHRvLzFTTQpwYWxtaXN0LzFTTQpwYWxtaXN0cnkvMU0KcGFsbXRvcC8xU00KcGFsbXkvNVRSCnBhbG9taW5vLzFNUwpwYWxwYWJsZS81CnBhbHBhYmx5LwpwYWxwYXRlLzQ1RFNHTgpwYWxwYXRpb24vMU0KcGFscGl0YXRlLzRYR05EUwpwYWxwaXRhdGlvbi8xTQpwYWxzeS8xNDVHRFNNCnBhbHRyaW5lc3MvMU0KcGFsdHJ5LzVSUFQKcGFtcGFzLzFNCnBhbXBlci80MURTRwpwYW1waGxldC8xNE1TCnBhbXBobGV0ZWVyLzE0TVMKcGFuLzE0NVNNCnBhbmFjZWEvMVNNCnBhbmFjaGUvMU0KcGFuYW1hLzFNUwpwYW5hdGVsbGEvMVMKcGFuY2FrZS8xNERTTUcKcGFuY2hyb21hdGljLzUKcGFuY3JlYXMvMU1TCnBhbmNyZWF0aWMvNQpwYW5jcmVhdGl0aXMvMQpwYW5kYS8xU00KcGFuZGVtaWMvNTFTTQpwYW5kZW1vbml1bS8xTQpwYW5kZXIvMTRNRFJaR1MKcGFuZGVyZXIvMU0KcGFuZS8xNEtNCnBhbmVneXJpYy8xNVNNCnBhbmVsLzE0U0dKTUQKcGFuZWxpbmcvNDFNCnBhbmVsaXN0LzFNUwpwYW5lcy8xCnBhbmcvMTRNUwpwYW5oYW5kbGUvMTREUlNNWkcKcGFuaGFuZGxlci8xTQpwYW5pYy81MTRTTQpwYW5pY2tlZC80NQpwYW5pY2tpbmcvNDEKcGFuaWNreS81CnBhbm5lZC80CnBhbm5pZXIvMVNNCnBhbm5pbmcvMTQKcGFub3BseS8xNFNNCnBhbm9yYW1hLzFTTQpwYW5vcmFtaWMvNTEKcGFucGlwZXMvMU0KcGFuc3kvMTU0U00KcGFudC8xNE1EU0cKcGFudGFsb29ucy8xTQpwYW50ZWNobmljb24vMVMKcGFudGhlaXNtLzFNCnBhbnRoZWlzdC8xNVNNCnBhbnRoZWlzdGljLzUKcGFudGhlb24vMVNNCnBhbnRoZXIvMU1TCnBhbnRpZS8xTVMKcGFudG8vMVMKcGFudG9taW1lLzE0TUdEUwpwYW50b21pbWljLzUKcGFudG9taW1pc3QvMVNNCnBhbnRyeS8xU00KcGFudHN1aXQvMVNNCnBhbnR5aG9zZS8xTQpwYW50eWxpbmVyLzFNCnBhbnR5d2Fpc3QvNTFTTQpwYXAvMTQ1U00KcGFwYS8xTVMKcGFwYWN5LzFTTQpwYXBhbC81CnBhcGFyYXp6aS8xTQpwYXBhcmF6em8vMQpwYXBheWEvMU1TCnBhcGVyLzE1NFNaR01EUgpwYXBlcmJhY2svMTU0U00KcGFwZXJiYXJrLzFTCnBhcGVyYm9hcmQvMU0KcGFwZXJib3kvMVNNCnBhcGVyY2xpcC8xNFMKcGFwZXJlci8xTQpwYXBlcmdpcmwvMVNNCnBhcGVyaGFuZ2VyLzFTTQpwYXBlcmhhbmdpbmcvMU0KcGFwZXJsZXNzLzUKcGFwZXJ3ZWlnaHQvMU1TCnBhcGVyd29yay8xTQpwYXBlcnkvNQpwYXBpbGxhLzFNCnBhcGlsbGFlLzEKcGFwaWxsYXJ5LzUKcGFwaXN0LzE1TVMKcGFwb29zZS8xTVMKcGFwcHkvNTFTTQpwYXByaWthLzE1TQpwYXB5cmkvMQpwYXB5cnVzLzFNCnBhci8xNSs0U1pHTURSQkoKcGFyYS8xNU1TCnBhcmFibGUvMTQ1TVMKcGFyYWJvbGEvMVNNCnBhcmFib2xpYy81MQpwYXJhY2V0YW1vbC8xUwpwYXJhY2h1dGUvMTREU01HCnBhcmFjaHV0aXN0LzFNUwpwYXJhZGUvMTRNWkdEUlMKcGFyYWRlci8xTQpwYXJhZGlnbS8xU00KcGFyYWRpZ21hdGljLzUxCnBhcmFkaXNhaWNhbC81CnBhcmFkaXNlLzE0U00KcGFyYWRveC8xTVMKcGFyYWRveGljYWwvNVkKcGFyYWZmaW4vMTRNCnBhcmFnbGlkaW5nLzE0CnBhcmFnb24vMTRNUwpwYXJhZ3JhcGgvMTRHTUQKcGFyYWdyYXBocy8xCnBhcmFrZWV0LzFTTQpwYXJhbGVnYWwvMU1TCnBhcmFsbGF4LzE0TVMKcGFyYWxsZWwvNTE0U0dNRApwYXJhbGxlbGVkLzRVCnBhcmFsbGVsaXNtLzFNUwpwYXJhbGxlbGl6YXRpb24vMQpwYXJhbGxlbGl6ZWQvNApwYXJhbGxlbG9ncmFtLzFTTQpwYXJhbHlzZXMvMTQKcGFyYWx5c2lzLzFNCnBhcmFseXRpYy8xNVNNCnBhcmFseXplLzREU0cKcGFyYWx5emluZy81NFkKcGFyYW1hZ25ldGljLzUKcGFyYW1lY2lhLzEKcGFyYW1lY2l1bS8xTQpwYXJhbWVkaWMvMU1TCnBhcmFtZWRpY2FsLzUxTVMKcGFyYW1ldGVyLzFNUwpwYXJhbWV0ZXJpemUvNEQKcGFyYW1ldHJpYy81MQpwYXJhbWlsaXRhcnkvMTVTTQpwYXJhbW91bnQvNTEKcGFyYW1vdW50Y3kvMQpwYXJhbW91ci8xNFNNCnBhcmFub2lhLzFNCnBhcmFub2lhYy81MU1TCnBhcmFub2lkLzUxU00KcGFyYW5vcm1hbC81MQpwYXJhcGV0LzFNUwpwYXJhcGhlcm5hbGlhLzFNCnBhcmFwaHJhc2UvMTREU01HCnBhcmFwbGVnaWEvMU0KcGFyYXBsZWdpYy81MVNNCnBhcmFwcm9mZXNzaW9uYWwvMTVNUwpwYXJhcHN5Y2hvbG9naXN0LzFNUwpwYXJhcHN5Y2hvbG9neS8xTQpwYXJhcXVhdC8xTQpwYXJhc2FpbGluZy8xNApwYXJhc2NlbmRpbmcvMQpwYXJhc2l0ZS8xNFNNCnBhcmFzaXRpYy81MQpwYXJhc2l0aWNhbC81WQpwYXJhc2l0aXNtLzFNCnBhcmFzb2wvMTRNUwpwYXJhc3ltcGF0aGV0aWMvNTFTCnBhcmF0aGlvbi8xTQpwYXJhdGh5cm9pZC81MU1TCnBhcmF0cm9vcC8xNFJaUwpwYXJhdHJvb3Blci8xTQpwYXJhdHJvb3BzLzE0TQpwYXJhdHlwaG9pZC81MU0KcGFyYm9pbC80RFNHCnBhcmNlbC8xNEdNRFMKcGFyY2gvNDFMR0RTCnBhcmNobWVudC8xU00KcGFyZG5lci8xUwpwYXJkb24vMTRaR01EUkJTCnBhcmRvbmFibGUvNVUKcGFyZG9uYWJseS9VCnBhcmRvbmVyLzFNCnBhcmUvNFMKcGFyZWdvcmljLzE1TQpwYXJlbnQvMTRHTURTCnBhcmVudGFnZS8xTQpwYXJlbnRhbC81MQpwYXJlbnRoZXNlcy8xCnBhcmVudGhlc2lzLzFNCnBhcmVudGhlc2l6ZS80RFNHCnBhcmVudGhldGljLzUKcGFyZW50aGV0aWNhbC81MVkKcGFyZW50aG9vZC8xTQpwYXJlbnRpbmcvMTRNCnBhcmVyLzFNCnBhcmVzLzRTCnBhcmVzaXMvMU0KcGFyZmFpdC8xTVMKcGFyaWFoLzFNCnBhcmlhaHMvMQpwYXJpYnVzCnBhcmlldGFsLzUxCnBhcmltdXR1ZWwvMU1TCnBhcmluZy80MU0KcGFyaXNoLzE0TVMKcGFyaXNoaW9uZXIvMU1TCnBhcml0eS8xRVNNCnBhcmsvMTRNRFNHCnBhcmthLzFTTQpwYXJraW5nLzQxTQpwYXJrbGFuZC8xCnBhcmtvdXIvMTQKcGFya3dheS8xTVMKcGFya3kvNTEKcGFybGFuY2UvMU0KcGFybGF5LzQxR01EUwpwYXJsZXkvMTRHTURTCnBhcmxpYW1lbnQvMVNNCnBhcmxpYW1lbnRhcmlhbi8xNVNNCnBhcmxpYW1lbnRhcnkvNTEKcGFybG9yLzFNUwpwYXJsb3VzLzUKcGFybWlnaWFuYS81MQpwYXJvY2hpYWwvNTFZCnBhcm9jaGlhbGlzbS8xTQpwYXJvZGlzdC8xU00KcGFyb2R5LzE0R0RTTQpwYXJvbGUvMTRNR0RTCnBhcm9sZWUvMU1TCnBhcm90aWQvNTEKcGFyb3h5c20vMVNNCnBhcm94eXNtYWwvNQpwYXJxdWV0LzE0TURTRwpwYXJxdWV0cnkvMU0KcGFycmVkLzQKcGFycmljaWRhbC81CnBhcnJpY2lkZS8xTVMKcGFycmluZy80CnBhcnJvdC8xNEdNRFMKcGFycnkvNDFHRFNNCnBhcnNlLzQxRFJTR1QKcGFyc2VyLzFTTQpwYXJzZWMvMU1TCnBhcnNpbW9uaW91cy81WQpwYXJzaW1vbnkvMU0KcGFyc2xleS8xNE0KcGFyc25pcC8xTVMKcGFyc29uLzFNUwpwYXJzb25hZ2UvMU1TCnBhcnQncwpwYXJ0LzE0NUNEU0cKcGFydGFrZS80WkdSUwpwYXJ0YWtlbi80CnBhcnRha2VyLzFNCnBhcnRlcnJlLzFTTQpwYXJ0aGVub2dlbmVzaXMvMU0KcGFydGlhbC81MTRNWVMKcGFydGlhbGl0eS8xTQpwYXJ0aWNpcGFudC8xNVNNCnBhcnRpY2lwYXRlLzQ1RFNHTgpwYXJ0aWNpcGF0aW9uLzFNCnBhcnRpY2lwYXRvci8xTVMKcGFydGljaXBhdG9yeS81CnBhcnRpY2lwaWFsLzUxTQpwYXJ0aWNpcGxlLzFNUwpwYXJ0aWNsZS8xU00KcGFydGljbGVib2FyZC8xTQpwYXJ0aWN1bGFyLzUxU01ZCnBhcnRpY3VsYXJpdHkvMVNNCnBhcnRpY3VsYXJpemF0aW9uLzFNCnBhcnRpY3VsYXJpemUvNERTRwpwYXJ0aWN1bGF0ZS81MVNNCnBhcnRpbmcvMTRNUwpwYXJ0aXNhbi8xNVNNCnBhcnRpc2Fuc2hpcC8xTQpwYXJ0aXRpb24vMTRHTURTCnBhcnRpdGl2ZS81MU1TCnBhcnRseS8KcGFydG5lci8xNE1EU0cKcGFydG5lcnNoaXAvMU1TCnBhcnRvb2svNApwYXJ0cmlkZ2UvMVNNCnBhcnR1cml0aW9uLzFNCnBhcnR3YXkvCnBhcnR5LzE0NUdEU00KcGFydmVudS8xNU1TCnBhc2NhbC8xTVMKcGFzY2hhbC81CnBhc2hhLzFTTQpwYXNzLzQxTQpwYXNzYWJseS8KcGFzc2FnZS8xNDVNUwpwYXNzYWdld2F5LzFNUwpwYXNzYm9vay8xTVMKcGFzc2UvNTREUlNCWFpHTlYKcGFzc2VsLzFNUwpwYXNzZW5nZXIvMTRTTQpwYXNzZXIvMU0KcGFzc2VyYnkvMU0KcGFzc2Vyc2J5LzEKcGFzc2ltLzUKcGFzc2luZy80NTFNWQpwYXNzaW9uLzE0RU0KcGFzc2lvbmF0ZS81MTRFWQpwYXNzaW9uZmxvd2VyLzFTTQpwYXNzaW9ubGVzcy81CnBhc3NpdmUvNTFQTVlTCnBhc3NpdmVuZXNzLzFNCnBhc3Npdml0eS8xTQpwYXNzaXZpemF0aW9uLzEKcGFzc2l2aXplLzREU0cKcGFzc2tleS8xTVMKcGFzc3BocmFzZS8xUwpwYXNzcG9ydC8xNE1TCnBhc3N3b3JkLzE0TVMKcGFzdC8xNSs0QU1TCnBhc3RhLzFTTQpwYXN0ZS8xNERTTUcKcGFzdGVib2FyZC8xNU0KcGFzdGVsLzFNUwpwYXN0ZXJuLzFNUwpwYXN0ZXVyaXphdGlvbi8xTQpwYXN0ZXVyaXplLzRaR0RSUwpwYXN0ZXVyaXplZC80VQpwYXN0ZXVyaXplci8xTQpwYXN0aWNoZS8xNE1TCnBhc3RpZS8xCnBhc3RpbGxlLzFNUwpwYXN0aW1lLzE0TVMKcGFzdGluZXNzLzFNCnBhc3Rvci8xNE1TCnBhc3RvcmFsLzUxTVMKcGFzdG9yYXRlLzFNUwpwYXN0cmFtaS8xTQpwYXN0cnkvMVNNCnBhc3R1cmFnZS8xTQpwYXN0dXJlLzE0RFNNRwpwYXN0dXJlbGFuZC8xTQpwYXN0eS81MVBUUlNNCnBhdC8xNDVTTQpwYXRjaC8xNEVHTURTCnBhdGNoaWx5LwpwYXRjaGluZXNzLzFNCnBhdGNob3VsaS8xCnBhdGNod29yay8xNFNNCnBhdGNoeS81VFBSCnBhdGUvMU1TCnBhdGVsbGEvMU1TCnBhdGVsbGFlLzEKcGF0ZW50LzE0NUdNRFlTCnBhdGVyZmFtaWxpYXMvMU1TCnBhdGVybmFsLzVZCnBhdGVybmFsaXNtLzFNCnBhdGVybmFsaXN0LzUxUwpwYXRlcm5hbGlzdGljLzUKcGF0ZXJuaXR5LzFNCnBhdGVybm9zdGVyLzE0TVMKcGF0aC8xNE0KcGF0aGV0aWMvNQpwYXRoZXRpY2FsbHkvCnBhdGhmaW5kZXIvMVNNCnBhdGhsZXNzLzUKcGF0aG9nZW4vMVNNCnBhdGhvZ2VuaWMvNQpwYXRob2xvZ2ljYWwvNVkKcGF0aG9sb2dpc3QvMVNNCnBhdGhvbG9neS8xTQpwYXRob3MvMU0KcGF0aHMvMTQKcGF0aHdheS8xTVMKcGF0aWVuY2UvMU0KcGF0aWVudC81MUlNU1QKcGF0aWVudGVyLzUKcGF0aWVudGx5LwpwYXRpbmEvMTVNUwpwYXRpbmUvMTQKcGF0aW8vMVNNCnBhdGlzc2VyaWUvMVMKcGF0b2lzLzFNCnBhdHJlc2ZhbWlsaWFzLzEKcGF0cmlhcmNoLzFNCnBhdHJpYXJjaGFsLzUKcGF0cmlhcmNoYXRlLzFNUwpwYXRyaWFyY2hzLzEKcGF0cmlhcmNoeS8xU00KcGF0cmljaWFuLzE1U00KcGF0cmljaWRhbC81CnBhdHJpY2lkZS8xU00KcGF0cmltb25pYWwvNQpwYXRyaW1vbnkvMVNNCnBhdHJpb3QvMVNNCnBhdHJpb3RpYy81MVUKcGF0cmlvdGljYWxseS8KcGF0cmlvdGlzbS8xTQpwYXRyb2wvMTRNUwpwYXRyb2xsZWQvNTQKcGF0cm9sbGluZy80MQpwYXRyb2xtYW4vMU0KcGF0cm9sbWVuLzEKcGF0cm9sd29tYW4vMU0KcGF0cm9sd29tZW4vMQpwYXRyb24vMTRNUwpwYXRyb25hZ2UvMTRNUwpwYXRyb25lc3MvMTRNUwpwYXRyb25pemUvNFpHRFJTCnBhdHJvbml6ZXIvMU0KcGF0cm9uaXppbmcvNTRZCnBhdHJvbnltaWMvNTFTTQpwYXRyb255bWljYWxseS8KcGF0cm9vbi8xU00KcGF0c3kvMVNNCnBhdHRlZC80CnBhdHRlci8xNE1ER1MKcGF0dGVybi8xNDVTTURHCnBhdHRpbmcvMTQKcGF0dHkvMTVTTQpwYXVjaXR5LzFNCnBhdW5jaC8xNE1TCnBhdW5jaHkvNVJUCnBhdXBlci8xNE1TCnBhdXBlcmlzbS8xTQpwYXVwZXJpemUvNERTRwpwYXVzZS80MURTTUcKcGF2ZS80QUdEUwpwYXZlZC81NFUKcGF2ZW1lbnQvMU1TCnBhdmlsaW9uLzE0U00KcGF2aW5nLzQxNU1TCnBhdmxvdmEvMVMKcGF3LzE0U0dNRApwYXdsLzE0TVMKcGF3bi8xNE1EU0cKcGF3bmJyb2tlci8xTVMKcGF3bmJyb2tpbmcvMU0KcGF3bnNob3AvMU1TCnBhd3Bhdy8xTVMKcGF5J3MKcGF5LzQxNUFTR0JMCnBheWJhY2svMTRTTQpwYXljaGVjay8xTVMKcGF5ZGF5LzFNUwpwYXllZC80CnBheWVlLzFTTQpwYXllci8xU00KcGF5bG9hZC8xU00KcGF5bWFzdGVyLzFTTQpwYXltZW50LzFBU00KcGF5b2ZmLzFNUwpwYXlvbGEvMU0KcGF5b3V0LzFNUwpwYXlwaG9uZS8xUwpwYXlyb2xsLzE0U00KcGF5c2xpcC8xU00KcGF5d2FsbC8xNFNNCnBheXdhcmUvMQpwY3QvMQpwZApwZWEvMVNNCnBlYWNlLzE0U00KcGVhY2VhYmxlLzUKcGVhY2VhYmx5LwpwZWFjZWZ1bC81MVBZCnBlYWNlZnVsbmVzcy8xTQpwZWFjZWtlZXBlci8xU00KcGVhY2VrZWVwaW5nLzFNCnBlYWNlbWFrZXIvMU1TCnBlYWNlbWFraW5nLzFNCnBlYWNldGltZS8xTQpwZWFjaC8xNTRNUwpwZWFjaHkvNVRSCnBlYWNvY2svMTRNUwpwZWFmb3dsLzFNUwpwZWFoZW4vMU1TCnBlYWsvMTQ1TURTRwpwZWFreS81CnBlYWwvMTRBTURTRwpwZWFudXQvMTRNUwpwZWFyLzFNWVMKcGVhcmwvMTRTR01ECnBlYXJseS8xNVJUCnBlYXNhbnQvMTVTTQpwZWFzYW50cnkvMU0KcGVhc2hvb3Rlci8xU00KcGVhdC8xTQpwZWF0eS81VFIKcGViYmxlLzE0TUdEUwpwZWJibHkvNQpwZWNhbi8xU00KcGVjY2FkaWxsby8xTQpwZWNjYWRpbGxvZXMvMQpwZWNjYXJ5LzFTTQpwZWNrLzQxTURSU1pHCnBlY2tpc2gvNQpwZWNzLzEKcGVjdGljLzUKcGVjdGluLzFNCnBlY3RvcmFsLzUxTVMKcGVjdG9yYWxpcy8xCnBlY3VsYXRlLzRHTkRTCnBlY3VsYXRpb24vMU0KcGVjdWxhdG9yLzFTTQpwZWN1bGlhci81MVkKcGVjdWxpYXJpdHkvMVNNCnBlY3VuaWFyeS81CnBlZGFnb2dpYy81CnBlZGFnb2dpY2FsLzVZCnBlZGFnb2d1ZS8xNFNNCnBlZGFnb2d5LzFNCnBlZGFsLzE0NVNHTUQKcGVkYWxvLzFTCnBlZGFudC8xNTRNUwpwZWRhbnRpYy81CnBlZGFudGljYWxseS8KcGVkYW50cnkvMU0KcGVkZGxlLzRaR0RSUwpwZWRkbGVyLzFNCnBlZGVyYXN0LzFNUwpwZWRlcmFzdHkvMU0KcGVkZXN0YWwvMTRNUwpwZWRlc3RyaWFuLzUxU00KcGVkZXN0cmlhbml6YXRpb24vMQpwZWRlc3RyaWFuaXplLzRHRFMKcGVkaWF0cmljLzVTCnBlZGlhdHJpY2lhbi8xTVMKcGVkaWF0cmljcy8xTQpwZWRpY2FiLzFTTQpwZWRpY3VyZS8xNE1HRFMKcGVkaWN1cmlzdC8xTVMKcGVkaWdyZWUvMTU0TURTCnBlZGltZW50LzFNUwpwZWRvbWV0ZXIvMU1TCnBlZG9waGlsZS8xUwpwZWRvcGhpbGlhLzEKcGVkdW5jbGUvMU1TCnBlZS8xNERSU01aCnBlZWluZy80CnBlZWsvNDFNRFNHCnBlZWthYm9vLzE1NE0KcGVlbC80MU1EUlNKWkcKcGVlbGVkLzU0VQpwZWVsZXIvMU0KcGVlbGluZy8xNE0KcGVlbi8xNE1TCnBlZXAvMTRNRFJTWkcKcGVlcGJvLzEKcGVlcGVyLzFNCnBlZXBob2xlLzFNUwpwZWVwc2hvdy8xTVMKcGVlci80MU1ERwpwZWVyYWdlLzFTTQpwZWVyZXNzLzFNUwpwZWVybGVzcy81CnBlZXZlLzE0RFNNRwpwZWV2aXNoLzVQWQpwZWV2aXNobmVzcy8xTQpwZWV3ZWUvMU1TCnBlZXdpdC8xUwpwZWcvMTRTTQpwZWdib2FyZC8xNE1TCnBlZ2dlZC80NQpwZWdnaW5nLzE0CnBlaWdub2lyLzFTTQpwZWpvcmF0aW9uLzFNCnBlam9yYXRpdmUvNTFTTVkKcGVrZS8xTVMKcGVraW5lc2VzCnBla2luZ2VzZS9TTQpwZWtvZS8xTQpwZWxhZ2ljLzUxCnBlbGYvMU0KcGVsaWNhbi8xTVMKcGVsbGFncmEvMU0KcGVsbGV0LzE0R01EUwpwZWxsdWNpZC81MQpwZWxtZXQvMVMKcGVsdC8xNE1EU0cKcGVsdmljLzUxCnBlbHZpcy8xTVMKcGVtbWljYW4vMU0KcGVuLzE0TQpwZW5hbC81CnBlbmFsaXphdGlvbi8xTQpwZW5hbGl6ZS80RFNHCnBlbmFsdHkvMVNNCnBlbmFuY2UvMTRNUwpwZW5jZS8xCnBlbmNoYW50LzFTTQpwZW5jaWwvMTRHTURKUwpwZW5kLzQxQ0RTRwpwZW5kYW50LzFNUwpwZW5kZW50LzUxTVMKcGVuZHVsb3VzLzUKcGVuZHVsdW0vMU1TCnBlbmV0cmFiaWxpdHkvMU0KcGVuZXRyYWJsZS81CnBlbmV0cmF0ZS80RFNHTlZYCnBlbmV0cmF0aW5nLzU0WQpwZW5ldHJhdGlvbi8xTQpwZW5mcmllbmQvMVMKcGVuZ3Vpbi8xTVMKcGVuaWNpbGxpbi8xTQpwZW5pbGUvNQpwZW5pbnN1bGEvMVNNCnBlbmluc3VsYXIvNTEKcGVuaXMvMU1TCnBlbml0ZW5jZS8xTQpwZW5pdGVudC81MVNNWQpwZW5pdGVudGlhbC81MQpwZW5pdGVudGlhcnkvMTVTTQpwZW5rbmlmZS8xNE0KcGVua25pdmVzLzEKcGVubGlnaHQvMVNNCnBlbm1hbi8xTQpwZW5tYW5zaGlwLzFNCnBlbm1lbi8xCnBlbm5hbnQvMU1TCnBlbm5lZC80NQpwZW5uaWxlc3MvNQpwZW5uaW5nLzQxCnBlbm5vbi8xTVMKcGVubnkvMTRTTQpwZW5ueXdlaWdodC8xTVMKcGVubnl3b3J0aC8xCnBlbm9sb2dpc3QvMU1TCnBlbm9sb2d5LzFNCnBlbnNpb24vMTRCWkdNRFJTCnBlbnNpb25lci8xTQpwZW5zaXZlLzVQWQpwZW5zaXZlbmVzcy8xTQpwZW50LzE1NApwZW50YWNsZS8xTVMKcGVudGFnb24vMU1TCnBlbnRhZ29uYWwvNTEKcGVudGFncmFtLzFTTQpwZW50YW1ldGVyLzFTTQpwZW50YXRobGV0ZS8xTVMKcGVudGF0aGxvbi8xTVMKcGVudGhvdXNlLzE0U00KcGVudWNoZS8xTQpwZW51bHRpbWF0ZS81MVNNCnBlbnVtYnJhLzFNUwpwZW51bWJyYWUvMQpwZW51cmlvdXMvNVBZCnBlbnVyaW91c25lc3MvMU0KcGVudXJ5LzFNCnBlb24vMU1TCnBlb25hZ2UvMU0KcGVvbnkvMVNNCnBlb3BsZS8xNE1HRFN+CnBlcC80MVNNCnBlcHBlZC80CnBlcHBlci8xNEdNRFMKcGVwcGVyY29ybi8xU00KcGVwcGVybWludC8xU00KcGVwcGVyb25pLzFNUwpwZXBwZXJ5LzUKcGVwcGluZXNzLzFNCnBlcHBpbmcvNApwZXBweS81MVRQUgpwZXBzaW4vMU0KcGVwdGljLzUxTVMKcGVwdGlkZS8xUwpwZXJhZHZlbnR1cmUvMU0KcGVyYW1idWxhdGUvNFhHTkRTCnBlcmFtYnVsYXRpb24vMU0KcGVyYW1idWxhdG9yLzFNUwpwZXJjYWxlLzFNUwpwZXJjZWl2ZS80QkdEUwpwZXJjZWl2ZWQvNTRVCnBlcmNlbnQvMU1TCnBlcmNlbnRhZ2UvMVNNCnBlcmNlbnRpbGUvMVNNCnBlcmNlcHRpYmxlLzUxCnBlcmNlcHRpYmx5LwpwZXJjZXB0aW9uLzFTTQpwZXJjZXB0aW9uYWwvNQpwZXJjZXB0aXZlLzVQWQpwZXJjZXB0aXZlbmVzcy8xTQpwZXJjZXB0dWFsLzVZCnBlcmNoLzE0R01EUwpwZXJjaGFuY2UvCnBlcmNpcGllbmNlLzFNCnBlcmNpcGllbnQvNTEKcGVyY29sYXRlLzQxR05EUwpwZXJjb2xhdGlvbi8xTQpwZXJjb2xhdG9yLzFTTQpwZXJjdXNzaW9uLzFBTQpwZXJjdXNzaW9uaXN0LzFNUwpwZXJjdXNzaXZlLzUxCnBlcmRpdGlvbi8xTQpwZXJkdXJhYmxlLzUKcGVyZWdyaW5hdGUvNDVEU1hHTgpwZXJlZ3JpbmF0aW9uLzFNCnBlcmVncmluZS81MU1TCnBlcmVtcHRvcmlseS8KcGVyZW1wdG9yeS81MQpwZXJlbm5pYWwvNTFTTVkKcGVyZXN0cm9pa2EvMU0KcGVyZmVjdC81MTRQVEdNRFJZUwpwZXJmZWN0YS8xTVMKcGVyZmVjdGliaWxpdHkvMU0KcGVyZmVjdGlibGUvNQpwZXJmZWN0aW9uLzE0U00KcGVyZmVjdGlvbmlzbS8xTQpwZXJmZWN0aW9uaXN0LzE1U00KcGVyZmVjdG5lc3MvMU0KcGVyZmlkaW91cy81WQpwZXJmaWR5LzFTTQpwZXJmb3JhdGUvNDVHTlhEUwpwZXJmb3JhdGlvbi8xTQpwZXJmb3JjZS80CnBlcmZvcm0vNFNEUlpHCnBlcmZvcm1hbmNlLzFTTQpwZXJmb3JtYXRpdmUvNTEKcGVyZm9ybWVkLzRVCnBlcmZvcm1lci8xTQpwZXJmdW1lLzE0RFJTTVpHCnBlcmZ1bWVyLzFNCnBlcmZ1bWVyeS8xU00KcGVyZnVuY3RvcmlseS8KcGVyZnVuY3RvcnkvNQpwZXJmdXNpb24vMQpwZXJnb2xhLzFTTQpwZXJoYXBzLzEKcGVyaWNhcmRpYS8xCnBlcmljYXJkaWFsLzUKcGVyaWNhcmRpdGlzLzEKcGVyaWNhcmRpdW0vMU0KcGVyaWdlZS8xU00KcGVyaWhlbGlhLzEKcGVyaWhlbGlvbi8xTQpwZXJpbC8xNFNHTUQKcGVyaWxvdXMvNVkKcGVyaW1ldGVyLzFTTQpwZXJpbmF0YWwvNQpwZXJpbmVhLzEKcGVyaW5ldW0vMU0KcGVyaW9kLzE1NE1TCnBlcmlvZGljLzUKcGVyaW9kaWNhbC8xNVNNWQpwZXJpb2RpY2l0eS8xTQpwZXJpb2RvbnRhbC81CnBlcmlvZG9udGljcy8xTQpwZXJpb2RvbnRpc3QvMVNNCnBlcmlwYXRldGljLzUxTVMKcGVyaXBoZXJhbC81MU1ZUwpwZXJpcGhlcnkvMVNNCnBlcmlwaHJhc2VzLzE0CnBlcmlwaHJhc2lzLzFNCnBlcmlwaHJhc3RpYy81CnBlcmlzY29wZS8xNFNNCnBlcmlzaC80QkRSU1pHCnBlcmlzaGFibGUvNTFNUwpwZXJpc3RhbHNlcy8xCnBlcmlzdGFsc2lzLzFNCnBlcmlzdGFsdGljLzUKcGVyaXN0eWxlLzFTTQpwZXJpdG9uZWFsLzUKcGVyaXRvbmV1bS8xTVMKcGVyaXRvbml0aXMvMU0KcGVyaXdpZy8xNFNNCnBlcml3aW5rbGUvMTVTTQpwZXJqdXJlLzQxRFJTWkcKcGVyanVyZXIvMU0KcGVyanVyeS8xU00KcGVyay8xNDVNRFNHCnBlcmtpbHkvCnBlcmtpbmVzcy8xTQpwZXJreS81MVRQUgpwZXJtLzE0TURTRwpwZXJtYWZyb3N0LzFNCnBlcm1hbmVuY2UvMU0KcGVybWFuZW5jeS8xTQpwZXJtYW5lbnQvNTE0U01ZCnBlcm1lYWJpbGl0eS8xTQpwZXJtZWFibGUvNQpwZXJtZWF0ZS80MUdORFMKcGVybWVhdGlvbi8xTQpwZXJtaXNzaWJsZS81CnBlcm1pc3NpYmx5LwpwZXJtaXNzaW9uLzE0TVMKcGVybWlzc2l2ZS81UFkKcGVybWlzc2l2ZW5lc3MvMU0KcGVybWl0LzQxTVMKcGVybWl0dGVkLzQ1CnBlcm1pdHRpbmcvNDEKcGVybWl0dGl2aXR5LzEKcGVybXV0YXRpb24vMVNNCnBlcm11dGUvNERTRwpwZXJuaWNpb3VzLzVZUApwZXJuaWNpb3VzbmVzcy8xTQpwZXJvcmF0aW9uLzFNUwpwZXJveGlkZS8xNE1HRFMKcGVycGVuZGljdWxhci81MVNNWQpwZXJwZW5kaWN1bGFyaXR5LzFNCnBlcnBldHJhdGUvNERTR04KcGVycGV0cmF0aW9uLzFNCnBlcnBldHJhdG9yLzFNUwpwZXJwZXR1YWwvNTFTTVkKcGVycGV0dWF0ZS80NURTR04KcGVycGV0dWF0aW9uLzFNCnBlcnBldHVpdHkvMU0KcGVycGxleC80NTFHRFMKcGVycGxleGVkLzU0WQpwZXJwbGV4aW5nLzU0WQpwZXJwbGV4aXR5LzFTTQpwZXJxdWlzaXRlLzFTTQpwZXJzZWN1dGUvNEdOWERTCnBlcnNlY3V0aW9uLzFNCnBlcnNlY3V0b3IvMVNNCnBlcnNldmVyYW5jZS8xTQpwZXJzZXZlcmUvNERTRwpwZXJzaWZsYWdlLzFNCnBlcnNpbW1vbi8xU00KcGVyc2lzdC80U0dECnBlcnNpc3RlbmNlLzFNCnBlcnNpc3RlbnQvNVkKcGVyc25pY2tldHkvNQpwZXJzb24vMTRVTVMKcGVyc29uYS8xU00KcGVyc29uYWJsZS81CnBlcnNvbmFlLzEKcGVyc29uYWdlLzFNUwpwZXJzb25hbC81MU1ZUwpwZXJzb25hbGl0eS8xU00KcGVyc29uYWxpemUvNENEU0cKcGVyc29uYWx0eS8xTQpwZXJzb25pZmljYXRpb24vMU0KcGVyc29uaWZ5LzRHRFNOWApwZXJzb25uZWwvMU0KcGVyc3BlY3RpdmUvMTVNUwpwZXJzcGV4LzEKcGVyc3BpY2FjaW91cy81WQpwZXJzcGljYWNpdHkvMU0KcGVyc3BpY3VpdHkvMU0KcGVyc3BpY3VvdXMvNQpwZXJzcGlyYXRpb24vMU0KcGVyc3BpcmUvNEdEUwpwZXJzdWFkZS80QlpHRFJTCnBlcnN1YWRlZC80VQpwZXJzdWFkZXIvMU0KcGVyc3Vhc2lvbi8xU00KcGVyc3Vhc2l2ZS81MVBZCnBlcnN1YXNpdmVuZXNzLzFNCnBlcnQvNTQxUllQVApwZXJ0YWluLzRHU0QKcGVydGluYWNpb3VzLzVZCnBlcnRpbmFjaXR5LzFNCnBlcnRpbmVuY2UvMU0KcGVydGluZW50LzE1WQpwZXJ0bmVzcy8xTQpwZXJ0dXJiLzRER1MKcGVydHVyYmF0aW9uLzFTTQpwZXJ0dXJiZWQvNDVVCnBlcnR1c3Npcy8xTQpwZXJ1a2UvMU1TCnBlcnVzYWwvMU1TCnBlcnVzZS80MUdEUwpwZXJ2LzE0UwpwZXJ2YWRlLzREU0cKcGVydmFzaXZlLzVQWQpwZXJ2YXNpdmVuZXNzLzFNCnBlcnZlcnNlLzUxNFBYWU4KcGVydmVyc2VuZXNzLzFNCnBlcnZlcnNpb24vMU0KcGVydmVyc2l0eS8xTQpwZXJ2ZXJ0LzE0U0dNRApwZXNldGEvMU1TCnBlc2tpbHkvCnBlc2tpbmVzcy8xTQpwZXNreS81VFBSCnBlc28vMU1TCnBlc3NhcnkvMVMKcGVzc2ltYWwvNQpwZXNzaW1pc20vMU0KcGVzc2ltaXN0LzFTTQpwZXNzaW1pc3RpYy81CnBlc3NpbWlzdGljYWxseS8KcGVzdC8xTVJTWgpwZXN0ZXIvNDFHRApwZXN0aWNpZGUvMU1TCnBlc3RpZmVyb3VzLzUKcGVzdGlsZW5jZS8xU00KcGVzdGlsZW50LzUKcGVzdGlsZW50aWFsLzUKcGVzdGxlLzE0TUdEUwpwZXN0by8xTQpwZXQvMTQ1U1pNUgpwZXRhYnl0ZS8xTVMKcGV0YWpvdWxlLzFTCnBldGFsLzE0U01ECnBldGFyZC8xNE1TCnBldGF3YXR0LzFTCnBldGNvY2svMVNNCnBldGVyLzE0R01ECnBldGlvbGUvMVNNCnBldGl0ZS81MU1TCnBldGl0aW9uLzE0WkdNRFJTCnBldGl0aW9uYXJ5LzUKcGV0aXRpb25lci8xTQpwZXRyZWwvMU1TCnBldHJpZmFjdGlvbi8xTQpwZXRyaWZ5LzREU0cKcGV0cm9jaGVtaWNhbC8xNVNNCnBldHJvZG9sbGFyLzFNUwpwZXRyb2wvMTRNCnBldHJvbGF0dW0vMU0KcGV0cm9sZXVtLzFNCnBldHJvbG9naXN0LzFTTQpwZXRyb2xvZ3kvMU0KcGV0dGVkLzQKcGV0dGljb2F0LzE0NU1TCnBldHRpZm9nLzRTCnBldHRpZm9nZ2VkLzQKcGV0dGlmb2dnZXIvMVNNCnBldHRpZm9nZ2VyeS8xTQpwZXR0aWZvZ2dpbmcvNDEKcGV0dGlseS8KcGV0dGluZXNzLzFNCnBldHRpbmcvNDFNCnBldHRpc2gvNVkKcGV0dHkvNTFQVFIKcGV0dWxhbmNlLzFNCnBldHVsYW50LzVZCnBldHVuaWEvMTVNUwpwZXcvMTRTTQpwZXdlZS8xU00KcGV3aXQvMVNNCnBld3Rlci8xNTRNUwpwZXlvdGUvMU0KcGYvMQpwZmVubmlnLzFNUwpwZy8KcGhhZXRvbi8xTVMKcGhhZ2UvMVMKcGhhZ29jeXRlLzE0U00KcGhhbGFuZ2VyLzFTTQpwaGFsYW5nZXMvMQpwaGFsYW54LzFNUwpwaGFsbGkvMQpwaGFsbGljLzUKcGhhbGxvY2VudHJpYy81CnBoYWxsb2NlbnRyaXNtLzEKcGhhbGx1cy8xTQpwaGFudGFzbS8xTVMKcGhhbnRhc21hZ29yaWEvMU1TCnBoYW50YXNtYWdvcmljYWwvNQpwaGFudGFzbWFsLzUKcGhhbnRvbS8xNVNNCnBoYXJhb2gvMU0KcGhhcmFvaHMvMQpwaGFyaXNhaWMvNQpwaGFyaXNlZS9TTQpwaGFybWFjZXV0aWMvNU1TCnBoYXJtYWNldXRpY2FsLzUxU00KcGhhcm1hY2V1dGljcy8xTQpwaGFybWFjaXN0LzFNUwpwaGFybWFjb2xvZ2ljLzUxCnBoYXJtYWNvbG9naWNhbC81CnBoYXJtYWNvbG9naXN0LzFTTQpwaGFybWFjb2xvZ3kvMU0KcGhhcm1hY29wb2VpYS8xTVMKcGhhcm1hY290aGVyYXB5LzEKcGhhcm1hY3kvMVNNCnBoYXJ5bmdlYWwvNTEKcGhhcnluZ2VzLzEKcGhhcnluZ2l0aXMvMU0KcGhhcnlueC8xTQpwaGFzZS8xNDJEU01HCnBoYXNlb3V0LzFTTQpwaGF0LzUKcGhlYXNhbnQvMU1TCnBoZW5hY2V0aW4vMU0KcGhlbm9iYXJiaXRhbC8xTQpwaGVub2wvMU0KcGhlbm9tLzFNUwpwaGVub21lbmEvMQpwaGVub21lbmFsLzVZCnBoZW5vbWVub2xvZ2ljYWwvNQpwaGVub21lbm9sb2d5LzEKcGhlbm9tZW5vbi8xTVMKcGhlbm90eXBlLzE0CnBoZW55dG9pbi8xCnBoZXJvbW9uZS8xTVMKcGhldy8KcGhpLzFTTQpwaGlhbC8xNFNNCnBoaWxhbmRlci8xNFpHRFJTCnBoaWxhbmRlcmVyLzFNCnBoaWxhbmRlcmluZy80MU0KcGhpbGFudGhyb3BpYy81CnBoaWxhbnRocm9waWNhbGx5LwpwaGlsYW50aHJvcGlzdC8xTVMKcGhpbGFudGhyb3B5LzFTTQpwaGlsYXRlbGljLzUKcGhpbGF0ZWxpc3QvMU1TCnBoaWxhdGVseS8xTQpwaGlsaGFybW9uaWMvNTFTTQpwaGlsaXBwaWMvMU1TCnBoaWxpc3RpbmUvMTVNUwpwaGlsaXN0aW5pc20vMU0KcGhpbG9kZW5kcm9uLzFTTQpwaGlsb2xvZ2ljYWwvNQpwaGlsb2xvZ2lzdC8xTVMKcGhpbG9sb2d5LzFNCnBoaWxvc29waGVyLzFNUwpwaGlsb3NvcGhpYy81CnBoaWxvc29waGljYWwvNVkKcGhpbG9zb3BoaXplLzREUlNaRwpwaGlsb3NvcGhpemVyLzFNCnBoaWxvc29waHkvMTRTTQpwaGlsdGVyLzE0TVMKcGhpc2gvNDFaR0RSCnBoaXNoZXIvMU0KcGhsZWJpdGlzLzFNCnBobGVnbS8xTQpwaGxlZ21hdGljLzUxCnBobGVnbWF0aWNhbGx5LwpwaGxvZW0vMU0KcGhsb3gvMU0KcGhvYmlhLzFNUwpwaG9iaWMvNTFNUwpwaG9lYmUvMU1TCnBob2VuaXgvMTRNUwpwaG9uZS8xNERTTUcKcGhvbmVjYXJkLzFTCnBob25lbWUvMU1TCnBob25lbWljLzUKcGhvbmVtaWNhbGx5LwpwaG9uZXRpYy81MVMKcGhvbmV0aWNhbGx5LwpwaG9uZXRpY2lhbi8xU00KcGhvbmV0aWNzLzFNCnBob25leWVkLzQKcGhvbmV5aW5nLzQKcGhvbmljLzVTCnBob25pY2FsbHkvCnBob25pY3MvMU0KcGhvbmluZXNzLzFNCnBob25vZ3JhcGgvMTRNCnBob25vZ3JhcGhpYy81CnBob25vZ3JhcGhzLzEKcGhvbm9sb2dpY2FsLzVZCnBob25vbG9naXN0LzFNUwpwaG9ub2xvZ3kvMU0KcGhvbm9uLzEKcGhvbnkvNTE0UFRHRFJTTQpwaG9vZXkvMQpwaG9zcGhhdGUvMTRNUwpwaG9zcGhvZGllc3RlcmFzZS8xCnBob3NwaG9yLzFNUwpwaG9zcGhvcmVzY2VuY2UvMU0KcGhvc3Bob3Jlc2NlbnQvNTFZCnBob3NwaG9yaWMvNQpwaG9zcGhvcm91cy81MQpwaG9zcGhvcnVzLzFNCnBob3NwaG9yeWxhdGlvbi8xCnBob3RvLzE0U0dNRApwaG90b2NlbGwvMU1TCnBob3RvY29waWVyLzFNCnBob3RvY29weS8xNERSU01aRwpwaG90b2VsZWN0cmljLzUKcGhvdG9lbGVjdHJpY2FsbHkvCnBob3RvZW5ncmF2ZS80RFJTSlpHCnBob3RvZW5ncmF2ZXIvMU0KcGhvdG9lbmdyYXZpbmcvMTRNCnBob3RvZmluaXNoaW5nLzFNCnBob3RvZ2VuaWMvNQpwaG90b2dlbmljYWxseS8KcGhvdG9ncmFwaC8xNE1EUlpHCnBob3RvZ3JhcGhlci8xTQpwaG90b2dyYXBoaWMvNQpwaG90b2dyYXBoaWNhbGx5LwpwaG90b2dyYXBocy8xNEEKcGhvdG9ncmFwaHkvMU0KcGhvdG9qb3VybmFsaXNtLzFNCnBob3Rvam91cm5hbGlzdC8xU00KcGhvdG9tZXRlci8xNE1TCnBob3Rvbi8xTVMKcGhvdG9zZW5zaXRpdmUvNQpwaG90b3N0YXQvMTRTTQpwaG90b3N0YXRpYy81CnBob3Rvc3RhdHRlZC80CnBob3Rvc3RhdHRpbmcvNApwaG90b3N5bnRoZXNpcy8xTQpwaG90b3N5bnRoZXNpemUvNEdEUwpwaG90b3N5bnRoZXRpYy81CnBob3RvdHJvcGljLzUKcGhvdG90cm9waXNtLzEKcGhvdG90eXBlc2V0dGVyLzEKcGhvdG90eXBlc2V0dGluZy8xCnBob3Rvdm9sdGFpYy81CnBocmFzYWwvNTEKcGhyYXNlJ3MKcGhyYXNlLzE0QUdEUwpwaHJhc2Vib29rLzFTCnBocmFzZW9sb2d5LzFNCnBocmFzaW5nLzQxTVMKcGhyZWFraW5nLzE0CnBocmVub2xvZ2lzdC8xU00KcGhyZW5vbG9neS8xTQpwaHlsYS8xCnBoeWxhY3RlcnkvMVNNCnBoeWxvZ2VueS8xTQpwaHlsdW0vMU0KcGh5cy81MQpwaHlzaWMvNTE0U00KcGh5c2ljYWwvNTFNWVMKcGh5c2ljYWxpdHkvMQpwaHlzaWNpYW4vMVNNCnBoeXNpY2lzdC8xU00KcGh5c2lja2VkLzQKcGh5c2lja2luZy80MQpwaHlzaWNzLzE0TQpwaHlzaW8vMVMKcGh5c2lvZ25vbXkvMVNNCnBoeXNpb2dyYXBoeS8xTQpwaHlzaW9sb2dpYy81CnBoeXNpb2xvZ2ljYWwvNVkKcGh5c2lvbG9naXN0LzFNUwpwaHlzaW9sb2d5LzFNCnBoeXNpb3RoZXJhcGlzdC8xTVMKcGh5c2lvdGhlcmFweS8xTQpwaHlzaXF1ZS8xTVMKcGh5dG9wbGFua3Rvbi8xCnBpLzE0NVNNRFJIWkcKcGlhbmlzc2ltby8xU00KcGlhbmlzdC8xTVMKcGlhbm8vMTQ1U00KcGlhbm9mb3J0ZS8xU00KcGlhbm9sYS8xUwpwaWFzdGVyLzFNUwpwaWF6emEvMU1TCnBpYnJvY2gvMU0KcGlicm9jaHMvMQpwaWMvMVNNCnBpY2EvMU0KcGljYWRvci8xTVMKcGljYW50ZQpwaWNhcmVzcXVlLzUxCnBpY2F5dW5lLzE1CnBpY2NhbGlsbGkvMU0KcGljY29sby8xNU1TCnBpY2svMTRNRFJTSlpHCnBpY2theC8xNEdNRFMKcGlja2VyLzFNCnBpY2tlcmVsLzFNUwpwaWNrZXQvMTRaR01EUlMKcGlja2luZ3MvMU0KcGlja2xlLzE0TUdEUwpwaWNrcG9ja2V0LzE0U00KcGlja3VwLzE0TVMKcGlja3kvNTFQVFIKcGljbmljLzE0TVMKcGljbmlja2VkLzQKcGljbmlja2VyLzFTTQpwaWNuaWNraW5nLzQxCnBpY290LzE0U00KcGljdG9ncmFtLzFTCnBpY3RvZ3JhcGgvMU0KcGljdG9ncmFwaHMvMQpwaWN0b3JpYWwvNTFNWVMKcGljdHVyZS8xNE1HRFMKcGljdHVyZXNxdWUvNVBZCnBpY3R1cmVzcXVlbmVzcy8xTQpwaWRkbGUvMTRNR0RTCnBpZGRseS81CnBpZGdpbi8xTVMKcGllLzE0U00KcGllYmFsZC81MU1TCnBpZWNlLzE0RFNNRwpwaWVjZW1lYWwvNTQxCnBpZWNld29yay8xTVJaCnBpZWNld29ya2VyLzFNCnBpZWNydXN0LzFTTQpwaWVpbmcvNDEKcGllci8xTQpwaWVyY2UvNDFKR0RTCnBpZXJjaW5nLzQxNU1ZCnBpZXR5LzFNCnBpZXpvZWxlY3RyaWMvNTEKcGlmZmxlLzE0TUcKcGlnLzE0U01MCnBpZ2Vvbi8xNE1TCnBpZ2VvbmhvbGUvMTREU01HCnBpZ2dlZC80CnBpZ2dlcnkvMVMKcGlnZ2luZy81NDEKcGlnZ2lzaC81UFkKcGlnZ2lzaG5lc3MvMU0KcGlnZ3kvMTVUUlNNCnBpZ2d5YmFjay81NDFNRFNHCnBpZ2hlYWRlZC81UFkKcGlnaGVhZGVkbmVzcy8xTQpwaWdsZXQvMU1TCnBpZ21lbnQvMTRNRFMKcGlnbWVudGF0aW9uLzFNCnBpZ3Blbi8xTVMKcGlnc2tpbi8xTVMKcGlnc3R5LzFTTQpwaWdzd2lsbC8xCnBpZ3RhaWwvMU1TCnBpa2UvMTRNWkdEUlMKcGlrZXIvMU0KcGlrZXN0YWZmLzFTTQpwaWxhZi8xU00KcGlsYXN0ZXIvMU1TCnBpbGNoYXJkLzFNUwpwaWxlLzE0TUdEU0oKcGlsZXVwLzFNUwpwaWxmZXIvNFpHRFJTCnBpbGZlcmFnZS8xTQpwaWxmZXJlci8xTQpwaWxncmltLzE0TVMKcGlsZ3JpbWFnZS8xNE1TCnBpbGluZy8xNE0KcGlsbC8xNE1EU0cKcGlsbGFnZS80MU1aR0RSUwpwaWxsYWdlci8xTQpwaWxsYXIvMTRNRFMKcGlsbGJveC8xTVMKcGlsbGlvbi8xNE1TCnBpbGxvY2svMVMKcGlsbG9yeS8xNEdEU00KcGlsbG93LzE0R01EUwpwaWxsb3djYXNlLzFNUwpwaWxsb3dzbGlwLzFNUwpwaWxvdC8xNTRER1NNCnBpbG90aG91c2UvMVNNCnBpbWVudG8vMU1TCnBpbWllbnRvLzFNUwpwaW1wLzE0NUdNRFlTCnBpbXBlcm5lbC8xTVMKcGltcGxlLzE0RFNNCnBpbXBseS81UlQKcGluLzE0U00KcGluYWZvcmUvMTRNUwpwaW5hdGEvMTRNUwpwaW5iYWxsLzE0TQpwaW5jZXIvMTRNUwpwaW5jaC80MUdNRFMKcGluY3VzaGlvbi8xNE1TCnBpbmUncwpwaW5lLzE0QUdEUwpwaW5lYXBwbGUvMU1TCnBpbmV3b29kLzFTCnBpbmV5LzUKcGluZmVhdGhlci8xU00KcGluZy8xNEdNRApwaW5oZWFkLzFTTQpwaW5ob2xlLzE0U00KcGluaWVyLzUKcGluaWVzdC81CnBpbmlvbi8xNFNNREcKcGluay8xNTRUR1BNRFJTCnBpbmtleWUvMU0KcGlua2llLzFTTQpwaW5raXNoLzUKcGlua25lc3MvMU0KcGlua28vMU1TCnBpbm5hY2xlLzE0U00KcGlubmF0ZS81CnBpbm5lZC80NVUKcGlubmluZy80MVUKcGlubnkvMVMKcGlub2NobGUvMU0KcGlub24vMU1TCnBpbnBvaW50LzE1NFNHTUQKcGlucHJpY2svMTRNUwpwaW5zZXR0ZXIvMVNNCnBpbnN0cmlwZS8xRFNNCnBpbnQvMU1TCnBpbnRvLzE1TVMKcGludXAvMU1TCnBpbndoZWVsLzE0R1NNRApwaW55aW4vMjFNCnBpbnlvbi8xU00KcGlvbmVlci8xNFNHTUQKcGlvdXMvNVlQCnBpb3VzbmVzcy8xTQpwaXAvMTRTWkdNRFIKcGlwZS8xNE1TCnBpcGVsaW5lLzE0U00KcGlwZXIvMU0KcGlwZXR0ZS8xNFNNCnBpcGV3b3JrLzEKcGlwaW5nLzQxNU0KcGlwaXQvMU1TCnBpcHBlZC80CnBpcHBpbi8xU00KcGlwcGluZy80CnBpcHNxdWVhay8xU00KcGlxdWFuY3kvMU0KcGlxdWFudC81WQpwaXF1ZS80MU1HRFMKcGlyYWN5LzFNCnBpcmFuaGEvMVNNCnBpcmF0ZS8xNDVEU01HCnBpcmF0aWNhbC81WQpwaXJvZ2kvMU0KcGlyb3Noa2kvMU0KcGlyb3VldHRlLzE0RFNNRwpwaXNjYXRvcmlhbC81CnBpc21pcmUvMVNNCnBpc3MvMTRaR01EUlM2CnBpc3NvaXIvMVMKcGlzdGFjaGlvLzFTTQpwaXN0ZS8xUwpwaXN0aWwvMVNNCnBpc3RpbGxhdGUvNQpwaXN0b2wvMTRTTQpwaXN0b24vMTRTTQpwaXQvMTRTTQpwaXRhLzFNUwpwaXRhcGF0LzQxU00KcGl0Y2gvMTQ1TURSU1pHCnBpdGNoYmxlbmRlLzFNCnBpdGNoZXIvMU0KcGl0Y2hmb3JrLzE0TURTRwpwaXRjaG1hbi8xTQpwaXRjaG1lbi8xCnBpdGVvdXMvNVlQCnBpdGVvdXNuZXNzLzFNCnBpdGZhbGwvMVNNCnBpdGgvMTQ1TQpwaXRoZWFkLzFTCnBpdGhpbHkvCnBpdGhpbmVzcy8xTQpwaXRoeS81UlRQCnBpdGlhYmxlLzUKcGl0aWFibHkvCnBpdGlmdWwvNVkKcGl0aWxlc3MvNVBZCnBpdGlsZXNzbmVzcy8xTQpwaXRvbi8xNE1TCnBpdHRhLzFTCnBpdHRhbmNlLzFNUwpwaXR0ZWQvNTQKcGl0dGluZy8xNApwaXR1aXRhcnkvNTFTTQpwaXR5LzE0R0RTTQpwaXR5aW5nLzQxWQpwaXZvdC8xNE1ER1MKcGl2b3RhbC81CnBpeC8xNE0KcGl4ZWwvMTRNUwpwaXhpZS8xTVMKcGl6emEvMU1TCnBpenphenovMU0KcGl6emVyaWEvMVNNCnBpenppY2F0aS8xCnBpenppY2F0by8xTQpwaidzLzEKcGsvMQpwa2cvMQpwa3QvMQpwa3d5LzEKcGwvNTEKcGxhY2FyZC8xNFNNREcKcGxhY2F0ZS80RFNHTgpwbGFjYXRpb24vMU0KcGxhY2F0b3J5LzUKcGxhY2UncwpwbGFjZS8xNEFFU0RMRwpwbGFjZWJvLzFTTQpwbGFjZWQvNFUKcGxhY2Vob2xkZXIvMU1TCnBsYWNla2ljay8xNE1EUlpHUwpwbGFjZWtpY2tlci8xTQpwbGFjZW1lbnQvMUVBU00KcGxhY2VudGEvMVNNCnBsYWNlbnRhbC81MVMKcGxhY2VyLzE1U00KcGxhY2lkLzVZCnBsYWNpZGl0eS8xTQpwbGFjaW5ncy8xCnBsYWNrZXQvMVNNCnBsYWdpYXJpc20vMVNNCnBsYWdpYXJpc3QvMVNNCnBsYWdpYXJpemUvNERSU1pHCnBsYWdpYXJpemVyLzFNCnBsYWdpYXJ5LzE1TQpwbGFndWUvMTREU01HCnBsYWljZS8xCnBsYWlkLzE1NE1TCnBsYWluLzUxNE1SWVRTUApwbGFpbmNoYW50LzEKcGxhaW5jbG90aGVzLzUxCnBsYWluY2xvdGhlc21hbi8xTQpwbGFpbmNsb3RoZXNtZW4vMQpwbGFpbm5lc3MvMU0KcGxhaW5zbWFuLzFNCnBsYWluc21lbi8xCnBsYWluc29uZy8xTQpwbGFpbnNwb2tlbi81CnBsYWludC8xU01WCnBsYWludGlmZi8xU00KcGxhaW50aXZlLzVZCnBsYWl0LzE0TURHUwpwbGFuLzE0Wk1SUwpwbGFuYXIvNQpwbGFuZSdzCnBsYW5lLzUxNENHRFMKcGxhbmVsb2FkLzFNUwpwbGFuZXIvNTFNCnBsYW5ldC8xU00KcGxhbmV0YXJpdW0vMVNNCnBsYW5ldGFyeS81MQpwbGFuZ2VuY3kvMU0KcGxhbmdlbnQvNQpwbGFuay8xNE1ER1MKcGxhbmtpbmcvMTRNCnBsYW5rdG9uLzFNCnBsYW5uZWQvNDVVCnBsYW5uZXIvMVNNCnBsYW5uaW5nLzQxUwpwbGFudC8xNE1EUlpHU0oKcGxhbnRhaW4vMVNNCnBsYW50YXIvNQpwbGFudGF0aW9uLzFNUwpwbGFudGVyLzFNCnBsYW50aW5nLzE0TQpwbGFudGxpa2UvNQpwbGFxdWUvMVNNCnBsYXNoLzE0TURTRwpwbGFzbWEvMTRNCnBsYXNtb24vMQpwbGFzdGVyLzE0U1pHTURSCnBsYXN0ZXJib2FyZC8xNE0KcGxhc3RlcmVyLzFNCnBsYXN0aWMvMTVTTQpwbGFzdGljaXR5LzFNCnBsYXN0aWNpemUvNERTRwpwbGFzdGlxdWUvMQpwbGF0LzE0NVhHTUROUwpwbGF0ZS8xNE1TCnBsYXRlYXUvMTRTTURHCnBsYXRlZnVsLzFTTQpwbGF0ZWxldC8xU00KcGxhdGVuLzFNCnBsYXRmb3JtLzE0U0dNRApwbGF0aW5nLzQxTQpwbGF0aW51bS8xNTRNCnBsYXRpdHVkZS8xU00KcGxhdGl0dWRpbm91cy81CnBsYXRvbmljLzUKcGxhdG9vbi8xNFNHTUQKcGxhdHRlZC80CnBsYXR0ZXIvMVNNCnBsYXR0aW5nLzQxCnBsYXR5LzUxTQpwbGF0eXB1cy8xTVMKcGxhdHlzLzEKcGxhdWRpdC8xU00KcGxhdXNpYmlsaXR5LzFNCnBsYXVzaWJsZS81CnBsYXVzaWJseS8KcGxheS80MUFFR01EUwpwbGF5YWJsZS81MUVVCnBsYXlhY3QvNFNHRApwbGF5YWN0aW5nLzE0TQpwbGF5YmFjay8xTVMKcGxheWJpbGwvMU1TCnBsYXlib29rLzFNUwpwbGF5Ym95LzFTTQpwbGF5ZXIvMVNNCnBsYXlmZWxsb3cvMVNNCnBsYXlmdWwvNVBZCnBsYXlmdWxuZXNzLzFNCnBsYXlnaXJsLzFNUwpwbGF5Z29lci8xTVMKcGxheWdyb3VuZC8xU00KcGxheWdyb3VwLzFTCnBsYXlob3VzZS8xTVMKcGxheWxpc3QvMTRNUwpwbGF5bWF0ZS8xTVMKcGxheW9mZi8xU00KcGxheXBlbi8xU00KcGxheXJvb20vMVNNCnBsYXlzY2hvb2wvMVMKcGxheXRoaW5nLzE1U00KcGxheXRpbWUvMU0KcGxheXdyaWdodC8xU00KcGxhemEvMU1TCnBsZWEvMTRNUwpwbGVhZC80RFJaR1NKCnBsZWFkZXIvMU0KcGxlYWRpbmcvMTQ1TVkKcGxlYXNhbnQvNTFVVFlQCnBsZWFzYW50ZXIvNQpwbGVhc2FudG5lc3MvMVVNCnBsZWFzYW50cnkvMVNNCnBsZWFzZS80RURTRwpwbGVhc2luZy81NDFZUwpwbGVhc3VyYWJseS8KcGxlYXN1cmUvMTRNR0RTQgpwbGVhc3VyZWZ1bC81CnBsZWF0LzE0TURHUwpwbGViLzE1UwpwbGViYnkvNQpwbGViZS8xTVMKcGxlYmVpYW4vMTVNUwpwbGViaXNjaXRlLzFNUwpwbGVjdHJhLzEKcGxlY3RydW0vMU1TCnBsZWRnZS80MURTTUcKcGxlbmFyeS81MVNNCnBsZW5pcG90ZW50aWFyeS8xNVNNCnBsZW5pdHVkZS8xU00KcGxlbnRlb3VzLzUKcGxlbnRpZnVsLzVZCnBsZW50eS8xODVNCnBsZW51bS8xUwpwbGVvbmFzbS8xTVMKcGxldGhvcmEvMU0KcGxldXJhLzFNCnBsZXVyYWUvMQpwbGV1cmlzeS8xTQpwbGV4dXMvMU1TCnBsaWFiaWxpdHkvMU0KcGxpYWJsZS81CnBsaWFuY3kvMU0KcGxpYW50LzVZCnBsaWVycy8xTQpwbGlnaHQvMTRTTURHCnBsaW1zb2xsLzFTCnBsaW50aC8xTQpwbGludGhzLzEKcGxvZC8xNFMKcGxvZGRlZC80CnBsb2RkZXIvMU1TCnBsb2RkaW5nLzQ1MVMKcGxvbmsvMTREUlNaRwpwbG9wLzE0TVMKcGxvcHBlZC80CnBsb3BwaW5nLzQxCnBsb3NpdmUvMTVTCnBsb3QvMTRNUwpwbG90dGVkLzQKcGxvdHRlci8xNFNNCnBsb3R0aW5nLzQxCnBsb3Zlci8xNFNNCnBsb3cvMTRHTURTCnBsb3dtYW4vMU0KcGxvd21lbi8xCnBsb3dzaGFyZS8xTVMKcGxveSdzCnBsb3kvMTRTCnBsdWNrLzQxTURTRwpwbHVja2lseS8KcGx1Y2tpbmVzcy8xTQpwbHVja3kvNVJQVApwbHVnJ3MKcGx1Zy8xNFVTCnBsdWdnZWQvNFUKcGx1Z2dpbmcvNDFVCnBsdWdob2xlLzFTCnBsdWdpbi8xU00KcGx1bS8xNTRHTURTCnBsdW1hZ2UvMU0KcGx1bWIvMTU0TURSU1pHSgpwbHVtYmVkLzRVCnBsdW1iZXIvMU0KcGx1bWJpbmcvMU0KcGx1bWUvMTRNUwpwbHVtbWV0LzE0U0dNRApwbHVtbXkvNQpwbHVtcC81NDFNRFJZU1RHUApwbHVtcG5lc3MvMU0KcGx1bXkvNVJUCnBsdW5kZXIvNDFTWkdNRFIKcGx1bmRlcmVyLzFNCnBsdW5nZS80MURSU01aRwpwbHVuZ2VyLzFNCnBsdW5rLzQxTURTRwpwbHVwZXJmZWN0LzUxU00KcGx1cmFsLzUxU00KcGx1cmFsaXNtLzFNCnBsdXJhbGlzdC8xNU1TCnBsdXJhbGlzdGljLzUKcGx1cmFsaXR5LzFTTQpwbHVyYWxpemF0aW9uLzFNCnBsdXJhbGl6ZS80R0RTCnBsdXMvKzcxNTRNUwpwbHVzaC81MU1SWVRQCnBsdXNobmVzcy8xTQpwbHVzaHkvNVJUCnBsdXRvY3JhY3kvMVNNCnBsdXRvY3JhdC8xU00KcGx1dG9jcmF0aWMvNQpwbHV0b25pdW0vMU0KcGx1dmlhbC81MQpwbHkvMTRBR0RTTQpwbHl3b29kLzE0TQpwbS8KcG5ldW1hdGljLzUxCnBuZXVtYXRpY2FsbHkvCnBuZXVtb2NvY2NhbC81CnBuZXVtb2NvY2NpLzEKcG5ldW1vY29jY3VzLzEKcG5ldW1vbmlhLzFNCnBvYWNoLzQxRFJTWkcKcG9hY2hlci8xTQpwb2FjaGluZy80MU0KcG9jay8xNEdNRFMKcG9ja2V0LzE0NVNNREcKcG9ja2V0Ym9vay8xU00KcG9ja2V0ZnVsLzFTTQpwb2NrZXRrbmlmZS8xTQpwb2NrZXRrbml2ZXMvMQpwb2NrbWFyay8xTURHUwpwb2QvMTRTTQpwb2RjYXN0LzE0U01HCnBvZGRlZC81NApwb2RkaW5nLzQKcG9kaWF0cmlzdC8xU00KcG9kaWF0cnkvMU0KcG9kaXVtLzE0U00KcG9lbS8xTVMKcG9lc3kvMTRNCnBvZXQvMU1TCnBvZXRhc3Rlci8xTVMKcG9ldGVzcy8xTVMKcG9ldGljLzVTCnBvZXRpY2FsLzVZCnBvZXRyeS8xTQpwb2dyb20vMTRTTQpwb2kvMU0KcG9pZ25hbmN5LzFNCnBvaWduYW50LzVZCnBvaW5jaWFuYS8xU00KcG9pbnNldHRpYS8xU00KcG9pbnQvMTRNRFJTWkcKcG9pbnRibGFuay8KcG9pbnRlZC80NVkKcG9pbnRlci8xTQpwb2ludGlsbGlzbS8xTQpwb2ludGlsbGlzdC81MVNNCnBvaW50bGVzcy81UFkKcG9pbnRsZXNzbmVzcy8xTQpwb2ludHkvNTFUUgpwb2lzZS8xNE1HRFMKcG9pc29uLzE0U0paR01EUgpwb2lzb25lci8xTQpwb2lzb25pbmcvMTRNCnBvaXNvbm91cy81WQpwb2tlLzQxTVpHRFJTCnBva2VyLzE0TQpwb2tleS81MU1TCnBva3kvMTVUUgpwb2wvMVNHTUQKcG9sYXIvNTEKcG9sYXJpdHkvMVNNCnBvbGFyaXphdGlvbi8xQ00KcG9sYXJpemUvNENEU0cKcG9sZS8xNE1TCnBvbGVheGUvMTRHRFMKcG9sZWNhdC8xTVMKcG9sZW1pYy8xNU1TCnBvbGVtaWNhbC81MVkKcG9sZW1pY2lzdC8xU00KcG9sZW1pY3MvMU0KcG9sZXN0YXIvMVNNCnBvbGljZS8xNERTTUcKcG9saWNlbWFuLzFNCnBvbGljZW1lbi8xCnBvbGljZXdvbWFuLzFNCnBvbGljZXdvbWVuLzEKcG9saWN5LzE0U00KcG9saWN5aG9sZGVyLzFNUwpwb2xpY3ltYWtlci8xUwpwb2xpby8xTVMKcG9saW9teWVsaXRpcy8xTQpwb2xpc2gvMTRaR01EUlMKcG9saXNoZWQvNTRVCnBvbGlzaGVyLzFNCnBvbGl0YnVyby8xTVMKcG9saXRlLzU0UllUUApwb2xpdGVuZXNzLzFNCnBvbGl0ZXNzZS8xTQpwb2xpdGljLzUxNFMKcG9saXRpY2FsLzUxWQpwb2xpdGljaWFuLzFTTQpwb2xpdGljaXphdGlvbi8xTQpwb2xpdGljaXplLzRDRFNHCnBvbGl0aWNraW5nLzE0TQpwb2xpdGljby8xU00KcG9saXRpY3MvMTRNCnBvbGl0eS8xU00KcG9sa2EvMTRNRFNHCnBvbGwvMTQ1R01ETlMKcG9sbGFjay8xNE1TCnBvbGxhcmQvMTRTCnBvbGxlbi8xNE0KcG9sbGluYXRlLzQ1R05EUwpwb2xsaW5hdGlvbi8xTQpwb2xsaW5hdG9yLzFTTQpwb2xsaW5nLzQxTQpwb2xsaXdvZy8xU00KcG9sbHN0ZXIvMVNNCnBvbGx1dGFudC8xTVMKcG9sbHV0ZS80NVpHTkRSUwpwb2xsdXRlZC81NFUKcG9sbHV0ZXIvMU0KcG9sbHV0aW9uLzFNCnBvbG8vMU0KcG9sb25haXNlLzE0U00KcG9sb25pdW0vMU0KcG9sdGVyZ2Vpc3QvMU1TCnBvbHRyb29uLzE1U00KcG9seS8xNTQKcG9seWFjcnlsYW1pZGUvMQpwb2x5YW1vcnkvMVMKcG9seWFuZHJvdXMvNQpwb2x5YW5kcnkvMU0KcG9seWNsaW5pYy8xU00KcG9seWVzdGVyLzE1TVMKcG9seWV0aHlsZW5lLzFNCnBvbHlnYW1pc3QvMU1TCnBvbHlnYW1vdXMvNQpwb2x5Z2FteS8xTQpwb2x5Z2xvdC81MVNNCnBvbHlnb24vMVNNCnBvbHlnb25hbC81CnBvbHlncmFwaC8xNEdNRApwb2x5Z3JhcGhzLzE0CnBvbHloZWRyYWwvNQpwb2x5aGVkcm9uLzFTTQpwb2x5bWF0aC8xTQpwb2x5bWF0aHMvMQpwb2x5bWVyLzFTTQpwb2x5bWVyaWMvNQpwb2x5bWVyaXphdGlvbi8xTQpwb2x5bWVyaXplLzRHRFMKcG9seW1vcnBoaWMvNQpwb2x5bW9ycGhvdXMvNQpwb2x5bm9taWFsLzE1TVMKcG9seXAvMU1TCnBvbHlwaG9uaWMvNQpwb2x5cGhvbnkvMU0KcG9seXByb3B5bGVuZS8xTQpwb2x5cy8xCnBvbHlzZW1vdXMvNQpwb2x5c3R5cmVuZS8xTQpwb2x5c3lsbGFiaWMvNTEKcG9seXN5bGxhYmxlLzFNUwpwb2x5dGVjaG5pYy81MU1TCnBvbHl0aGVpc20vMU0KcG9seXRoZWlzdC8xU00KcG9seXRoZWlzdGljLzUKcG9seXRoZW5lLzEKcG9seXVuc2F0dXJhdGUvMTVEUwpwb2x5dXJldGhhbmUvMTRNUwpwb2x5dmlueWwvNTEKcG9tLzFTCnBvbWFkZS8xNERTTUcKcG9tYW5kZXIvMVNNCnBvbWVncmFuYXRlLzE1TVMKcG9tbWVsLzE0U0dNRApwb21teS8xNVMKcG9tcC8xNE0KcG9tcGFkb3VyLzE0U01ECnBvbXBhbm8vMU1TCnBvbXBvbS8xU00KcG9tcG9zaXR5LzFNCnBvbXBvdXMvNVlQCnBvbXBvdXNuZXNzLzFNCnBvbmNlLzE0R0RTCnBvbmNoby8xU00KcG9uY3kvNQpwb25kLzE0TVMKcG9uZGVyLzQxU1pHRFIKcG9uZGVyZXIvMU0KcG9uZGVyb3VzLzVZUApwb25kZXJvdXNuZXNzLzFNCnBvbmUvMU1TCnBvbmcvMTRHRFMKcG9uZ2VlLzFNCnBvbmlhcmQvMTRNUwpwb250aWZmLzFTTQpwb250aWZpY2FsLzUxWQpwb250aWZpY2F0ZS8xNERTTUcKcG9udG9vbi8xU00KcG9ueS8xNDVHRFNNCnBvbnl0YWlsLzE0TVMKcG9vLzE0U0dECnBvb2NoLzE0TURTRwpwb29kbGUvMVNNCnBvb2YvNDFNUwpwb29mdGVyLzFTCnBvb2gvMTRHTUQKcG9vaHMvNApwb29sLzE0R01EUwpwb29scm9vbS8xTVMKcG9vbHNpZGUvNTFTCnBvb3AvNDFHTURTCnBvb3IvNTE0VFJZUApwb29yYm95LzFNCnBvb3Job3VzZS8xU00KcG9vcm5lc3MvMU0KcG9wLzE0NVNNCnBvcGNvcm4vMTRNCnBvcGUvMTRNUwpwb3BndW4vMVNNCnBvcGluamF5LzFNUwpwb3BsYXIvMVNNCnBvcGxpbi8xTQpwb3BvdmVyLzFTTQpwb3BwYS8xTVMKcG9wcGFkb20vMVMKcG9wcGVkLzQKcG9wcGVyLzFTTQpwb3BwZXQvMVMKcG9wcGluZy8xNApwb3BweS8xNVNNCnBvcHB5Y29jay8xTQpwb3B1bGFjZS8xTVMKcG9wdWxhci81MVkKcG9wdWxhcml0eS8xVU0KcG9wdWxhcml6YXRpb24vMU0KcG9wdWxhcml6ZS80RFNHCnBvcHVsYXRlLzQ1QUNHRFMKcG9wdWxhdGVkLzU0VQpwb3B1bGF0aW9uLzFDTQpwb3B1bGF0aW9ucy8xCnBvcHVsaXNtLzFNCnBvcHVsaXN0LzE1TVMKcG9wdWxvdXMvNVAKcG9wdWxvdXNuZXNzLzFNCnBvcHVwLzFNUwpwb3JjZWxhaW4vMTRTTQpwb3JjaC8xTVMKcG9yY2luZS81CnBvcmN1cGluZS8xU00KcG9yZS8xNE1HRFMKcG9yZ3kvMVNNCnBvcmsvMTRaTVIKcG9ya2VyLzFNCnBvcmt5LzUxUlNNVApwb3JuLzFNCnBvcm5vLzUxTQpwb3Jub2dyYXBoZXIvMU1TCnBvcm5vZ3JhcGhpYy81CnBvcm5vZ3JhcGhpY2FsbHkvCnBvcm5vZ3JhcGh5LzFNCnBvcm9zaXR5LzFNCnBvcm91cy81UApwb3JvdXNuZXNzLzFNCnBvcnBoeXJpdGljLzUKcG9ycGh5cnkvMU0KcG9ycG9pc2UvMTRNR0RTCnBvcnJpZGdlLzFNCnBvcnJpbmdlci8xU00KcG9ydCdzL0EKcG9ydC8xNTRDQUVHRFMKcG9ydGFiaWxpdHkvMU0KcG9ydGFibGUvNTFNUwpwb3J0YWdlLzE0RFNNRwpwb3J0YWwvMTU0U00KcG9ydGN1bGxpcy8xNE1TCnBvcnRlbmQvNFNHRApwb3J0ZW50LzFTTQpwb3J0ZW50b3VzLzVZUApwb3J0ZXIvMTRBU00KcG9ydGVyaG91c2UvMVNNCnBvcnRmb2xpby8xTVMKcG9ydGhvbGUvMU1TCnBvcnRpY28vMU0KcG9ydGljb2VzLzEKcG9ydGllcmUvMU1TCnBvcnRpb24vMTRLU0dNRApwb3J0bGluZXNzLzFNCnBvcnRseS81UlBUCnBvcnRtYW50ZWF1LzE1NE1TCnBvcnRyYWl0LzE0NU1TCnBvcnRyYWl0aXN0LzFTTQpwb3J0cmFpdHVyZS8xTQpwb3J0cmF5LzRTR0QKcG9ydHJheWFsLzFNUwpwb3J0dWxhY2EvMU0KcG9zZSdzL0EKcG9zZS8xNENBS0VHRFMKcG9zZXIvMUVLU00KcG9zZXVyLzFTTQpwb3NoLzUxNFRSCnBvc2l0LzE0RFNHVgpwb3NpdGlvbi8xNENLRU1TCnBvc2l0aW9uYWwvNTFLRQpwb3NpdGlvbmVkLzU0Swpwb3NpdGlvbmluZy80MUFLCnBvc2l0aXZlLzUxTVlQUwpwb3NpdGl2ZW5lc3MvMU0KcG9zaXRpdmlzbS8xCnBvc2l0aXZpc3QvMTVTCnBvc2l0cm9uLzFNUwpwb3NzLzU0CnBvc3NlLzFNUwpwb3NzZXNzLzRBRVZHU0QKcG9zc2Vzc2lvbi8xNEFTTQpwb3NzZXNzaXZlLzUxU01ZUApwb3NzZXNzaXZlbmVzcy8xTQpwb3NzZXNzb3IvMVNNCnBvc3NpYmlsaXR5LzFTTQpwb3NzaWJsZS81MVNNCnBvc3NpYmx5Lwpwb3NzdW0vMTRTTQpwb3N0LzE0K1pHTURSU0oKcG9zdGFnZS8xTQpwb3N0YWwvNQpwb3N0YmFnLzFTCnBvc3Rib3gvMVMKcG9zdGNhcmQvMTRTTQpwb3N0Y29kZS8xNFMKcG9zdGNvbG9uaWFsLzUxCnBvc3Rjb25zb25hbnRhbC81CnBvc3RkYXRlLzQ1MURTRwpwb3N0ZG9jLzFNUwpwb3N0ZG9jdG9yYWwvNTEKcG9zdGVyLzE0TQpwb3N0ZXJpb3IvNTFTTQpwb3N0ZXJpdHkvMU0KcG9zdGdyYWR1YXRlLzE1U00KcG9zdGhhc3RlLzEKcG9zdGh1bW91cy81WQpwb3N0aHlwbm90aWMvNQpwb3N0aWUvMVMKcG9zdGlsaW9uLzFTTQpwb3N0aW5kdXN0cmlhbC81CnBvc3RpbmcvNDFNCnBvc3RsdWRlLzE0U00KcG9zdG1hbi8xTQpwb3N0bWFyay8xNFNNREcKcG9zdG1hc3Rlci8xTVMKcG9zdG1lbi8xCnBvc3RtZW5vcGF1c2FsLzUKcG9zdG1lcmlkaWFuLzUKcG9zdG1pc3RyZXNzLzFNUwpwb3N0bW9kZXJuLzUxCnBvc3Rtb2Rlcm5pc20vMU0KcG9zdG1vZGVybmlzdC81MU1TCnBvc3Rtb3J0ZW0vMTVTTQpwb3N0bmFzYWwvNTEKcG9zdG5hdGFsLzUKcG9zdG9wZXJhdGl2ZS81MQpwb3N0cGFpZC81CnBvc3RwYXJ0dW0vNTEKcG9zdHBvbmUvNERTR0wKcG9zdHBvbmVtZW50LzFTTQpwb3N0cHJhbmRpYWwvNQpwb3N0c2NyaXB0LzE0U00KcG9zdHNlYXNvbi8xNVNNCnBvc3RzeW5hcHRpYy81CnBvc3R1bGF0ZS8xNTRYRFNNR04KcG9zdHVsYXRpb24vMU0KcG9zdHVyYWwvNQpwb3N0dXJlLzE0TUdKRFMKcG9zdHVyaW5nLzE0TQpwb3N0d2FyLzUKcG9zdHdvbWFuLzEKcG9zdHdvbWVuLzEKcG9zeS8xU00KcG90LzE0Q1NNCnBvdGFiaWxpdHkvMU0KcG90YWJsZS81MVNNCnBvdGFzaC8xNE0KcG90YXNzaXVtLzFNCnBvdGF0by8xNE0KcG90YXRvZXMvMQpwb3RiZWxseS8xRFNNCnBvdGJvaWxlci8xU00KcG90ZW5jeS8xTQpwb3RlbnQvNTFZCnBvdGVudGF0ZS8xNU1TCnBvdGVudGlhbC8xNU1ZUwpwb3RlbnRpYWxpdHkvMVNNCnBvdGVudGlhdGUvNEdEUwpwb3RmdWwvMVNNCnBvdGhlYWQvMVNNCnBvdGhlci8xNFNNREcKcG90aGVyYi8xU00KcG90aG9sZGVyLzFNUwpwb3Rob2xlLzFEUlNNWkcKcG90aG9vay8xU00KcG90aW9uLzE0U00KcG90bHVjay8xNE1TCnBvdHBpZS8xU00KcG90cG91cnJpLzFTTQpwb3RzaGVyZC8xU00KcG90c2hvdC8xNE1TCnBvdHRhZ2UvMU0KcG90dGVkLzQ1CnBvdHRlci8xNEdTTUQKcG90dGVyeS8xU00KcG90dGluZy80MQpwb3R0eS8xNDVQUlNNVApwb3VjaC8xNE1EU0cKcG91Zi8xNFMKcG91ZmZlLzE0Uwpwb3VsdGVyZXIvMU1TCnBvdWx0aWNlLzE0RFNNRwpwb3VsdHJ5LzFNCnBvdW5jZS8xNERTTUcKcG91bmQncwpwb3VuZC8xNEtEU0cKcG91bmRhZ2UvMTRNCnBvdW5kaW5nLzQxNVNNCnBvdXIvNDFHRFNKCnBvdXQvNDFaR01EUlMKcG91dGVyLzFNCnBvdmVydHkvMU0KcG93LzEKcG93ZGVyLzE0R1NNRApwb3dkZXJ5LzUKcG93ZXIvMTQ1TURTRwpwb3dlcmJvYXQvMU1TCnBvd2VyZnVsLzVZCnBvd2VyaG91c2UvMVNNCnBvd2VybGVzcy81UFkKcG93ZXJsZXNzbmVzcy8xTQpwb3d3b3cvMTRTR01ECnBveC8xNE1TCnBwLzEKcHBtLzEKcHByCnByLzUKcHJhY3RpY2FiaWxpdHkvMU0KcHJhY3RpY2FibHkvCnByYWN0aWNhbC81MVNNWQpwcmFjdGljYWxpdHkvMVNNCnByYWN0aWNlLzE0RFNNR0IKcHJhY3RpY2VkLzU0VQpwcmFjdGljdW0vMVNNCnByYWN0aXRpb25lci8xU00KcHJhZXRvci8xU00KcHJhZXRvcmlhbi81MQpwcmFnbWF0aWMvNTFNUwpwcmFnbWF0aWNhbC81WQpwcmFnbWF0aXNtLzFNCnByYWdtYXRpc3QvMTVNUwpwcmFpcmllLzFTTQpwcmFpc2UvMTRFRFNNRwpwcmFpc2V3b3J0aGluZXNzLzFNCnByYWlzZXdvcnRoeS81UApwcmFsaW5lLzFTTQpwcmFtLzFNUwpwcmFuY2UvNDFEUlNNWkcKcHJhbmNlci8xTQpwcmFuY2luZy80NTFZCnByYW5nLzE0RFNHCnByYW5rLzE0NU1TCnByYW5rc3Rlci8xU00KcHJhc2VvZHltaXVtLzFNCnByYXQvMTVTCnByYXRlLzE0TVpHRFJTCnByYXRlci8xTQpwcmF0ZmFsbC8xNFNNCnByYXR0bGUvNDFEUlNNWkcKcHJhdHRsZXIvMU0KcHJhd24vMTRNRFNHCnByYXkvNFpHRFJTCnByYXllci8xTQpwcmF5ZXJmdWwvNVkKcHJlYWNoLzQxRFJTWkdMCnByZWFjaGVyLzFNCnByZWFjaG1lbnQvMU0KcHJlYWNoeS81UlQKcHJlYWRvbGVzY2VuY2UvMVNNCnByZWFkb2xlc2NlbnQvNTEKcHJlYW1ibGUvMTRNR0RTCnByZWFycmFuZ2UvNExHRFMKcHJlYXJyYW5nZW1lbnQvMU0KcHJlYXNzaWduZWQvNQpwcmVjYW5jZWwvNDFTTURHCnByZWNhbmNlcm91cy81CnByZWNhcmlvdXMvNVBZCnByZWNhcmlvdXNuZXNzLzFNCnByZWNhc3QvNTE0CnByZWNhdXRpb24vMTRNUwpwcmVjYXV0aW9uYXJ5LzUxCnByZWNlZGUvNDFEU0cKcHJlY2VkZW5jZS8xTQpwcmVjZWRlbnQvMTU0U00KcHJlY2VwdC8xNFNNCnByZWNlcHRvci8xU00KcHJlY2luY3QvMU1TCnByZWNpb3NpdHkvMU0KcHJlY2lvdXMvNTFZUApwcmVjaW91c25lc3MvMU0KcHJlY2lwaWNlLzFTTQpwcmVjaXBpdGFudC81MU1TCnByZWNpcGl0YXRlLzQ1MVhNWUdORFMKcHJlY2lwaXRhdGlvbi8xTQpwcmVjaXBpdG91cy81WQpwcmVjaXMvMTRNCnByZWNpc2UvNTREUlNZVEdOUApwcmVjaXNlbmVzcy8xTQpwcmVjaXNpb24vMTVNCnByZWNsdWRlLzRHRFMKcHJlY2x1c2lvbi8xTQpwcmVjb2Npb3VzLzVZUApwcmVjb2Npb3VzbmVzcy8xTQpwcmVjb2NpdHkvMU0KcHJlY29nbml0aW9uLzFNCnByZWNvZ25pdGl2ZS81MQpwcmVjb2xvbmlhbC81MQpwcmVjb25jZWl2ZS80R0RTCnByZWNvbmNlcHRpb24vMTVTTQpwcmVjb25kaXRpb24vMTRNREdTCnByZWNvb2svNEdTRApwcmVjdXJzb3IvMTVTTQpwcmVjdXJzb3J5LzUxCnByZWRhdGUvNDFEU0cKcHJlZGF0b3IvMU1TCnByZWRhdG9yeS81CnByZWRhd24vMTUKcHJlZGVjZWFzZS8xNEdEUwpwcmVkZWNlc3Nvci8xU00KcHJlZGVmaW5lZC81NApwcmVkZXNpZ25hdGUvNTRHRFMKcHJlZGVzdGluYXRpb24vMU0KcHJlZGVzdGluZS80RFNHCnByZWRldGVybWluYXRpb24vMU0KcHJlZGV0ZXJtaW5lLzRaR0RSUwpwcmVkZXRlcm1pbmVyLzFNCnByZWRpY2FibGUvNTEKcHJlZGljYW1lbnQvMU1TCnByZWRpY2F0ZS8xNTRNR05WRFMKcHJlZGljYXRpb24vMU0KcHJlZGljYXRpdmUvNTFZCnByZWRpY3QvNDFCR1ZTRApwcmVkaWN0YWJpbGl0eS8xVU0KcHJlZGljdGFibGUvNTFVCnByZWRpY3RhYmx5L1UKcHJlZGljdGlvbi8xU00KcHJlZGljdG9yLzFNUwpwcmVkaWdlc3QvNEdEUwpwcmVkaWxlY3Rpb24vMVNNCnByZWRpc3Bvc2UvNEdEUwpwcmVkaXNwb3NpdGlvbi8xTVMKcHJlZG5pc29uZS8xCnByZWRvbWluYW5jZS8xTQpwcmVkb21pbmFudC81MVkKcHJlZG9taW5hdGUvNDVZR0RTCnByZWVtaWUvMVNNCnByZWVtaW5lbmNlLzFNCnByZWVtaW5lbnQvNVkKcHJlZW1wdC80MUdWU0QKcHJlZW1wdGlvbi8xTQpwcmVlbXB0aXZlLzVZCnByZWVuLzE0RFNHCnByZWV4aXN0LzRER1MKcHJlZXhpc3RlbmNlLzFNCnByZWYvMQpwcmVmYWIvNTE0U00KcHJlZmFiYmVkLzQKcHJlZmFiYmluZy80CnByZWZhYnJpY2F0ZS80RFNHTgpwcmVmYWJyaWNhdGlvbi8xTQpwcmVmYWNlLzE0RFNNRwpwcmVmYXRvcnkvNQpwcmVmZWN0LzFTTQpwcmVmZWN0dXJlLzFNUwpwcmVmZXIvNFNCTApwcmVmZXJhYmx5LwpwcmVmZXJlbmNlLzE0TVMKcHJlZmVyZW50aWFsLzVZCnByZWZlcm1lbnQvMU0KcHJlZmVycmVkLzQ1MQpwcmVmZXJyaW5nLzQxCnByZWZpZ3VyZS80MUdEUwpwcmVmaXgvMTRNRFNHCnByZWZvcm0vMTRHU0QKcHJlZnJvbnRhbC81MQpwcmVnYW1lLzE1NFNNCnByZWduYW5jeS8xU00KcHJlZ25hbnQvNTEKcHJlaGVhdC80R1NECnByZWhlbnNpbGUvNQpwcmVoaXN0b3JpYW4vMVMKcHJlaGlzdG9yaWMvNQpwcmVoaXN0b3JpY2FsLzVZCnByZWhpc3RvcnkvMU0KcHJlaHVtYW4vNTEKcHJlaW5zdGFsbGVkLzQKcHJlanVkZ2UvNEdEUwpwcmVqdWRnbWVudC8xU00KcHJlanVkaWNlLzE0NU1HRFMKcHJlanVkaWNlZC80NVUKcHJlanVkaWNpYWwvNQpwcmVraW5kZXJnYXJ0ZW4vNTFTTQpwcmVsYWN5LzFNCnByZWxhdGUvMTRTTQpwcmVsaW0vNTFTTQpwcmVsaW1pbmFyeS81MVNNCnByZWxpdGVyYXRlLzUxCnByZWx1ZGUvMTRNUwpwcmVtYXJpdGFsLzUxCnByZW1hdHVyZS81MVkKcHJlbWVkLzFTTQpwcmVtZWRpY2FsLzUKcHJlbWVkaXRhdGUvNERTR04KcHJlbWVkaXRhdGVkLzQ1VQpwcmVtZWRpdGF0aW9uLzFNCnByZW1lbnN0cnVhbC81CnByZW1pZXIvNTE0U0dNRApwcmVtaWVyZS8xNE1TCnByZW1pZXJzaGlwLzFNUwpwcmVtaXNlLzE0RFNNRwpwcmVtaXVtLzUxU00KcHJlbWl4LzE0R0RTCnByZW1vbGFyLzE1U00KcHJlbW9uaXRpb24vMU1TCnByZW1vbml0b3J5LzUKcHJlbmF0YWwvNTFZCnByZW51cC8xU00KcHJlbnVwdGlhbC81MQpwcmVvY2N1cGF0aW9uLzFTTQpwcmVvY2N1cHkvNERTRwpwcmVvcGVyYXRpdmUvNTEKcHJlb3JkYWluLzRHRFMKcHJlb3duZWQvNQpwcmVwLzE0TVMKcHJlcGFja2FnZS80RFNHCnByZXBhY2tlZC81CnByZXBhaWQvNDUxCnByZXBhcmF0aW9uLzFTTQpwcmVwYXJhdG9yeS81CnByZXBhcmUvNDFHRFMKcHJlcGFyZWQvNTRVUApwcmVwYXJlZG5lc3MvMVVNCnByZXBheS80R1NMCnByZXBheW1lbnQvMU1TCnByZXBlbmQvNDEKcHJlcG9uZGVyYW5jZS8xU00KcHJlcG9uZGVyYW50LzVZCnByZXBvbmRlcmF0ZS80R0RTCnByZXBvc2l0aW9uLzE0U00KcHJlcG9zaXRpb25hbC81MVkKcHJlcG9zc2Vzcy80R0RTCnByZXBvc3Nlc3NpbmcvNVUKcHJlcG9zc2Vzc2lvbi8xU00KcHJlcG9zdGVyb3VzLzVZCnByZXBwZWQvNApwcmVwcGluZy80MQpwcmVwcHkvNTFUUlNNCnByZXB1YmVzY2VuY2UvMU0KcHJlcHViZXNjZW50LzUxU00KcHJlcHVjZS8xTVMKcHJlcXVlbC8xTVMKcHJlcmVjb3JkLzRHU0QKcHJlcmVnaXN0ZXIvNFNHRApwcmVyZWdpc3RyYXRpb24vMTVNCnByZXJlcXVpc2l0ZS81MU1TCnByZXJvZ2F0aXZlLzE1U00KcHJlcy8xNApwcmVzYWdlLzE0TUdEUwpwcmVzYnlvcGlhLzFNCnByZXNieXRlci8xU00KcHJlc2J5dGVyeS8xU00KcHJlc2Nob29sLzUxNFNaTVIKcHJlc2Nob29sZXIvMU0KcHJlc2NpZW5jZS8xTQpwcmVzY2llbnQvNVkKcHJlc2NyaWJlLzREU0cKcHJlc2NyaXB0LzE1U1ZNCnByZXNjcmlwdGlvbi8xNVNNCnByZXNjcmlwdGl2ZS81WQpwcmVzZWFzb24vMTRTTQpwcmVzZW5jZS8xNFNNCnByZXNlbnQvNTE0TE1EUllaR1NCCnByZXNlbnRhYmx5LwpwcmVzZW50YXRpb24vMUFTTQpwcmVzZW50ZXIvMU0KcHJlc2VudGltZW50LzFTTQpwcmVzZW50bWVudC8xU00KcHJlc2VydmF0aW9uLzFNCnByZXNlcnZhdGlvbmlzdC8xU00KcHJlc2VydmF0aXZlLzE1U00KcHJlc2VydmUvMTRCRFJTTVpHCnByZXNlcnZlci8xTQpwcmVzZXQvNTQxUwpwcmVzZXR0aW5nLzQKcHJlc2hyYW5rLzQKcHJlc2hyaW5rLzRHUwpwcmVzaHJ1bmsvNApwcmVzaWRlLzRHRFMKcHJlc2lkZW5jeS8xU00KcHJlc2lkZW50LzE1NE1TCnByZXNpZGVudGlhbC81CnByZXNpZGl1bS8xTQpwcmVzb3J0LzRER1MKcHJlc3MncwpwcmVzcy8xNEFDR1NECnByZXNzZWQvNDVVCnByZXNzZXIvMU1TCnByZXNzaWUvMVMKcHJlc3NpbmcvNTE0U01ZCnByZXNzbWFuLzFNCnByZXNzbWVuLzEKcHJlc3N1cmUvMTREU01HCnByZXNzdXJpemF0aW9uLzFNCnByZXNzdXJpemUvNENHRFMKcHJlc3N1cml6ZXIvMVNNCnByZXN0aWRpZ2l0YXRpb24vMU0KcHJlc3RpZ2UvMTU0TQpwcmVzdGlnaW91cy81CnByZXN0by8xU00KcHJlc3VtYWJseS8KcHJlc3VtZS80R0RTQgpwcmVzdW1wdGlvbi8xU00KcHJlc3VtcHRpdmUvNQpwcmVzdW1wdHVvdXMvNVlQCnByZXN1bXB0dW91c25lc3MvMU0KcHJlc3VwcG9zZS80RFNHCnByZXN1cHBvc2l0aW9uLzFNUwpwcmV0YXgvNTQKcHJldGVlbi81MU1TCnByZXRlbmQvNDUxRFJaR1MKcHJldGVuZGVyLzE0TQpwcmV0ZW5zZS8xU1hNTgpwcmV0ZW5zaW9uLzE0TQpwcmV0ZW50aW91cy81VVkKcHJldGVudGlvdXNuZXNzLzFNCnByZXRlcml0LzE1U00KcHJldGVybS81MQpwcmV0ZXJuYXR1cmFsLzVZCnByZXRlc3QvNTE0REdTCnByZXRleHQvMTRNUwpwcmV0cmlhbC81MVMKcHJldHRpZnkvNEdEUwpwcmV0dGlseS8KcHJldHRpbmVzcy8xTQpwcmV0dHkvNTE0VEdEUlNNUApwcmV0emVsLzE0TVMKcHJldmFpbC80REdTCnByZXZhbGVuY2UvMU0KcHJldmFsZW50LzUxCnByZXZhcmljYXRlLzREU0dOWApwcmV2YXJpY2F0aW9uLzFNCnByZXZhcmljYXRvci8xU00KcHJldmVudC80REJTR1YKcHJldmVudGFibGUvNTFVCnByZXZlbnRhdGl2ZS81MU1TCnByZXZlbnRpb24vMU0KcHJldmVudGl2ZS81MVNNCnByZXZpZXcvMTRNRFJTWkcKcHJldmlvdXMvNTFZCnByZXZpc2lvbi8xNE1TCnByZXdhci81CnByZXkvMTRHTURTCnByZXp6aWUvMVMKcHJpYXBpYy81CnByaWNlJ3MKcHJpY2UvMTRBR0RTCnByaWNlbGVzcy81CnByaWNleS81CnByaWNpZXIvNQpwcmljaWVzdC81CnByaWNrLzE0TURSWVNaRwpwcmlja2VyLzFNCnByaWNrbGUvMTRNR0RTCnByaWNrbGluZXNzLzFNCnByaWNrbHkvNTFQUlQKcHJpZGUvMTRNR0RTCnByaWRlZnVsLzVZCnByaWVyLzFNCnByaWVzdC8xNFNNWQpwcmllc3Rlc3MvMTRNUwpwcmllc3Rob29kLzFTTQpwcmllc3RsaW5lc3MvMU0KcHJpZXN0bHkvNVJUUApwcmlnLzE0TVMKcHJpZ2dpc2gvNVAKcHJpZ2dpc2huZXNzLzFNCnByaW0vNTQxWkdEUllQCnByaW1hY3kvMU0KcHJpbWFsLzUxNApwcmltYXJpbHkvCnByaW1hcnkvNTE0U00KcHJpbWF0ZS8xTVMKcHJpbWUvNTE0TVMKcHJpbWVyLzE1TQpwcmltZXZhbC81CnByaW1pbmcvMTRNCnByaW1pdGl2ZS8xNVNQTVkKcHJpbWl0aXZlbmVzcy8xTQpwcmltbWVyLzUxCnByaW1tZXN0LzUKcHJpbW5lc3MvMU0KcHJpbW9nZW5pdG9yLzFTTQpwcmltb2dlbml0dXJlLzFNCnByaW1vcmRpYWwvNTFZCnByaW1wLzREU0cKcHJpbXJvc2UvMTU0U00KcHJpbXVsYS8xUwpwcmluY2UvMTRTTVkKcHJpbmNlZG9tLzFTTQpwcmluY2VsaW5lc3MvMU0KcHJpbmNlbHkvNVBSVApwcmluY2Vzcy8xTVMKcHJpbmNpcGFsLzUxU01ZCnByaW5jaXBhbGl0eS8xU00KcHJpbmNpcGxlLzE0RFNNCnByaW5jaXBsZWQvNTRVCnByaW50LzU0MUFNRFNHCnByaW50YWJsZS81MVUKcHJpbnRlci8xTVMKcHJpbnRpbmcvMTRTTQpwcmludG1ha2luZy8xCnByaW50b3V0LzFTTQpwcmlvbi8xUwpwcmlvci81MU1TCnByaW9yZXNzLzFNUwpwcmlvcml0aXphdGlvbi8xCnByaW9yaXRpemUvNERTRwpwcmlvcml0eS8xU00KcHJpb3J5LzFTTQpwcmlzbS8xTVMKcHJpc21hdGljLzUKcHJpc29uLzE0U1pNUgpwcmlzb25lci8xTQpwcmlzc2lseS8KcHJpc3NpbmVzcy8xTQpwcmlzc3kvNTFQVFIKcHJpc3RpbmUvNQpwcml0aGVlLwpwcml2YWN5LzFNCnByaXZhdGUvNTE0WE1ZVE5SUwpwcml2YXRlZXIvMTRTTQpwcml2YXRpb24vMUNTTQpwcml2YXRpemF0aW9uLzFTTQpwcml2YXRpemUvNERTRwpwcml2ZXQvMVNNCnByaXZpbGVnZS8xNERTTUcKcHJpdmlsZWdlZC80NVUKcHJpdmlseS8KcHJpdnkvNTFSU01UCnByaXplLzE0NU1HRFMKcHJpemVkLzU0QQpwcml6ZWZpZ2h0LzFaR1NNUgpwcml6ZWZpZ2h0ZXIvMU0KcHJpemVmaWdodGluZy8xTQpwcml6ZXdpbm5lci8xTVMKcHJpemV3aW5uaW5nLzUKcHJvLzErNVNNCnByb2JhYmlsaXN0aWMvNQpwcm9iYWJpbGl0eS8xU00KcHJvYmFibGUvNTFTTQpwcm9iYWJseS8KcHJvYmF0ZS8xNE1OCnByb2JhdGlvbi8xWk1SCnByb2JhdGlvbmFsLzUKcHJvYmF0aW9uYXJ5LzUxCnByb2JhdGlvbmVyLzFNCnByb2JlLzE0TUdEU0JKCnByb2JpdHkvMU0KcHJvYmxlbS8xNU1TCnByb2JsZW1hdGljLzUxVQpwcm9ibGVtYXRpY2FsLzVZCnByb2Jvc2Nlcy8xCnByb2Jvc2Npcy8xTVMKcHJvY2FpbmUvMU0KcHJvY2VkdXJhbC81MQpwcm9jZWR1cmUvMVNNCnByb2NlZWQvNEdKRFMKcHJvY2VlZGluZy80MU0KcHJvY2VlZHMvMTRNCnByb2Nlc3Mncwpwcm9jZXNzLzE0QUdEUwpwcm9jZXNzYWJsZS81CnByb2Nlc3NlZC81NFUKcHJvY2Vzc2lvbi8xNEdECnByb2Nlc3Npb25hbC81MU1TCnByb2Nlc3Nvci8xU00KcHJvY2xhbWF0aW9uLzFNUwpwcm9jbGl2aXR5LzFTTQpwcm9jcmFzdGluYXRlLzREU0dOCnByb2NyYXN0aW5hdGlvbi8xTQpwcm9jcmFzdGluYXRvci8xTVMKcHJvY3JlYXRlLzRWCnByb2N0b3IvMTRHTURTCnByb2N1cmVtZW50LzFNCnByb2QvNDFNUwpwcm9kaWdhbC81MU1ZUwpwcm9kaWdhbGl0eS8xTQpwcm9kaWdpb3VzLzVZCnByb2RpZ3kvMVNNCnByb2R1Y2Uncwpwcm9kdWNlLzQxQVpHRFJTCnByb2R1Y2VyLzFBTQpwcm9kdWNpYmxlLzVBCnByb2R1Y3Rpb24vMUFTTQpwcm9kdWN0aXZlLzVVWQpwcm9kdWN0aXZlbmVzcy8xTQpwcm9kdWN0aXZpdHkvMU0KcHJvZi8xTVMKcHJvZmFuYXRpb24vMU1TCnByb2ZhbmUvNTE0UFlHRFMKcHJvZmFuZW5lc3MvMU0KcHJvZmFuaXR5LzFTTQpwcm9mZXNzZWQvNTRZCnByb2Zlc3Npb24vMVNNCnByb2Zlc3Npb25hbC8xNU1ZUwpwcm9mZXNzaW9uYWxpc20vMU0KcHJvZmVzc2lvbmFsaXphdGlvbi8xCnByb2Zlc3Npb25hbGl6ZS80RFNHCnByb2Zlc3Nvci8xU00KcHJvZmVzc29yaWFsLzVZCnByb2Zlc3NvcnNoaXAvMVNNCnByb2ZmZXIvMTRHTURTCnByb2ZpY2llbmN5LzFNCnByb2ZpY2llbnQvNTFNWVMKcHJvZml0LzE0QkdECnByb2ZpdGFiaWxpdHkvMU0KcHJvZml0YWJsZS81VQpwcm9maXRhYmx5L1UKcHJvZml0ZWVyLzE0TURHUwpwcm9maXRlZXJpbmcvMTRNCnByb2ZpdGVyb2xlLzFTTQpwcm9maXRsZXNzLzUKcHJvZmxpZ2FjeS8xTQpwcm9mbGlnYXRlLzUxNFNNWQpwcm9mb3JtYS81MQpwcm9mb3VuZC81MTRSWVRQCnByb2ZvdW5kbmVzcy8xTQpwcm9mdW5kaXR5LzFTTQpwcm9mdXNlLzU0UFkKcHJvZnVzZW5lc3MvMU0KcHJvZ2VuaXRvci8xU00KcHJvZ2VueS8xTQpwcm9nZXN0ZXJvbmUvMU0KcHJvZ2VzdGluLzFTCnByb2duYXRob3VzLzUKcHJvZ25vc2VzLzE0CnByb2dub3Npcy8xTQpwcm9nbm9zdGljLzUxTVMKcHJvZ25vc3RpY2F0ZS80WEdORFMKcHJvZ25vc3RpY2F0aW9uLzFNCnByb2dub3N0aWNhdG9yLzFNUwpwcm9ncmFtLzE0Q0FTCnByb2dyYW1tYWJsZS81MU1TCnByb2dyYW1tYXRpYy81CnByb2dyYW1tZWQvNDVBQwpwcm9ncmFtbWVyLzFNUwpwcm9ncmFtbWluZy8xNFNNCnByb2dyZXNzLzE0TURTR1YKcHJvZ3Jlc3Npb24vMU1TCnByb2dyZXNzaXZlLzUxUE1ZUwpwcm9ncmVzc2l2ZW5lc3MvMU0KcHJvaGliaXQvNERHVlMKcHJvaGliaXRpb24vMVNNCnByb2hpYml0aW9uaXN0LzFNUwpwcm9oaWJpdGl2ZS81MVkKcHJvaGliaXRvcnkvNQpwcm9qZWN0LzE0R01EUwpwcm9qZWN0aWxlLzE1U00KcHJvamVjdGlvbi8xU00KcHJvamVjdGlvbmlzdC8xU00KcHJvamVjdG9yLzFNUwpwcm9rYXJ5b3RlLzFNUwpwcm9rYXJ5b3RpYy81CnByb2xlLzE0Uwpwcm9sZXRhcmlhbi81MU1TCnByb2xldGFyaWF0LzFNCnByb2xpZmVyYXRlLzREU0dOCnByb2xpZmVyYXRpb24vMU0KcHJvbGlmaWMvNQpwcm9saWZpY2FsbHkvCnByb2xpeC81NFkKcHJvbGl4aXR5LzFNCnByb2xvZ3VlLzE0U00KcHJvbG9uZ2F0aW9uLzFTTQpwcm9tLzFNCnByb21lbmFkZS8xNE1HRFMKcHJvbWV0aGl1bS8xTQpwcm9taW5lbmNlLzFNCnByb21pbmVudC81MVkKcHJvbWlzY3VpdHkvMU0KcHJvbWlzY3VvdXMvNVkKcHJvbWlzZS8xNERTTUcKcHJvbWlzaW5nLzU0MVkKcHJvbWlzc29yeS81CnByb21vLzE0TQpwcm9tb250b3J5LzFTTQpwcm9tb3RlLzREUlpHCnByb21vdGVyLzFNCnByb21vdGlvbmFsLzUxCnByb21wdC81MTRKUFNNRFJZWlRHCnByb21wdGVkLzRVCnByb21wdGVyLzUxTQpwcm9tcHRpbmcvNDFNCnByb21wdGl0dWRlLzFNCnByb21wdG5lc3MvMU0KcHJvbXVsZ2F0ZS80R05EUwpwcm9tdWxnYXRpb24vMU0KcHJvbXVsZ2F0b3IvMU1TCnByb25lLzU0UApwcm9uZW5lc3MvMU0KcHJvbmcvMTRNRFMKcHJvbmdob3JuLzFNUwpwcm9ub21pbmFsLzUxTQpwcm9ub3VuY2UvNDFEU0xHCnByb25vdW5jZWFibGUvNVUKcHJvbm91bmNlbWVudC8xU00KcHJvbnRvLwpwcm9udW5jaWF0aW9uLzFNUwpwcm9vZi8xNTRBREdTTQpwcm9vZnJlYWQvNDFTUlpHCnByb29mcmVhZGVyLzFNCnByb3AvMTRNUwpwcm9wYWdhbmRhLzFNCnByb3BhZ2FuZGlzdC8xNU1TCnByb3BhZ2FuZGl6ZS80R0RTCnByb3BhZ2F0ZS80RFNHTgpwcm9wYWdhdGlvbi8xTQpwcm9wYWdhdG9yLzFTTQpwcm9wZWwvNFMKcHJvcGVsbGFudC8xNU1TCnByb3BlbGxlZC80CnByb3BlbGxlci8xU00KcHJvcGVsbGluZy80MQpwcm9wZW5zaXR5LzFTTQpwcm9wZXIvNTFNUllUCnByb3BlcnR5LzE0RFNNCnByb3BoZWN5LzE0U00KcHJvcGhlc2llci8xTQpwcm9waGVzeS80MURSU01aRwpwcm9waGV0LzFTTQpwcm9waGV0ZXNzLzFNUwpwcm9waGV0aWMvNQpwcm9waGV0aWNhbC81WQpwcm9waHlsYWN0aWMvMTVTTQpwcm9waHlsYXhlcy8xCnByb3BoeWxheGlzLzFNCnByb3BpbnF1aXR5LzFNCnByb3BpdGlhdGUvNERTR04KcHJvcGl0aWF0aW9uLzFNCnByb3BpdGlhdG9yeS81CnByb3BpdGlvdXMvNVkKcHJvcG9uZW50LzE1U00KcHJvcG9ydGlvbi8xNEVTTQpwcm9wb3J0aW9uYWwvNTFZUwpwcm9wb3J0aW9uYWxpdHkvMQpwcm9wb3J0aW9uYXRlLzU0RVkKcHJvcG9zYWwvMU1TCnByb3BwZWQvNApwcm9wcGluZy80MQpwcm9wcmFub2xvbC8xCnByb3ByaWV0YXJ5LzUxU00KcHJvcHJpZXRpZXMvMU0KcHJvcHJpZXRvci8xU00KcHJvcHJpZXRvcmlhbC81WQpwcm9wcmlldG9yc2hpcC8xTQpwcm9wcmlldHJlc3MvMU1TCnByb3ByaWV0eS8xU00KcHJvcHVsc2lvbi8xTQpwcm9wdWxzaXZlLzUKcHJvcmF0ZS80RFNHCnByb3JvZ2F0aW9uLzFNCnByb3JvZ3VlLzRHRApwcm9zYWljLzUKcHJvc2FpY2FsbHkvCnByb3NjZW5pdW0vMVNNCnByb3NjaXV0dG8vMU0KcHJvc2NyaWJlLzRERwpwcm9zY3JpcHRpb24vMU1TCnByb3NlLzE0TQpwcm9zZWN1dGUvNERTWEdOCnByb3NlY3V0aW9uLzFNCnByb3NlY3V0b3IvMU1TCnByb3NlbHl0ZS8xNERTTUcKcHJvc2VseXRpc20vMU0KcHJvc2VseXRpemUvNERSU1pHCnByb3NlbHl0aXplci8xTQpwcm9zb2NpYWwvNQpwcm9zb2R5LzFTTQpwcm9zcGVjdC8xNE1ER1ZTCnByb3NwZWN0aXZlLzUxWQpwcm9zcGVjdG9yLzFTTQpwcm9zcGVjdHVzLzFNUwpwcm9zcGVyLzRHU0QKcHJvc3Blcml0eS8xTQpwcm9zcGVyb3VzLzVZCnByb3N0YXRlLzE1TVMKcHJvc3RoZXNlcy8xCnByb3N0aGVzaXMvMU0KcHJvc3RoZXRpYy81MQpwcm9zdGl0dXRlLzQ1MU1HTkRTCnByb3N0aXR1dGlvbi8xTQpwcm9zdHJhdGUvNTRHTlhEUwpwcm9zdHJhdGlvbi8xTQpwcm9zeS81UlQKcHJvdGFjdGluaXVtLzFNCnByb3RhZ29uaXN0LzFTTQpwcm90ZWFuLzUxCnByb3RlY3QvNEdWU0QKcHJvdGVjdGVkLzU0VQpwcm90ZWN0aW9uLzFTTQpwcm90ZWN0aW9uaXNtLzFNCnByb3RlY3Rpb25pc3QvNTFNUwpwcm90ZWN0aXZlLzUxUFkKcHJvdGVjdGl2ZW5lc3MvMU0KcHJvdGVjdG9yLzFNUwpwcm90ZWN0b3JhdGUvMU1TCnByb3RlZ2UvMVNNCnByb3RlZ2VlLzFTCnByb3RlaW4vMVNNCnByb3Rlc3RhbnQvNTFTCnByb3Rlc3RhdGlvbi8xTVMKcHJvdG9jb2wvMTRNUwpwcm90b24vMVNNCnByb3RvcGxhc20vMU0KcHJvdG9wbGFzbWljLzUKcHJvdG90eXBlLzE0TUdTCnByb3RvdHlwaWNhbC81CnByb3Rvem9hLzEKcHJvdG96b2FuLzE1TVMKcHJvdG96b2ljLzUKcHJvdHJhY3QvNEdECnByb3RydWRlLzRHRFMKcHJvdHJ1c2lsZS81CnByb3RydXNpb24vMU1TCnByb3R1YmVyYW5jZS8xTVMKcHJvdHViZXJhbnQvNQpwcm91ZC81UllUCnByb3YvTkIKcHJvdmFiaWxpdHkvMU0KcHJvdmFibHkvCnByb3ZlLzQxRUFHRFMKcHJvdmVkLzRVCnByb3Zlbi81NFUKcHJvdmVuYW5jZS8xNFNNCnByb3ZlbmRlci8xNE0KcHJvdmVuaWVuY2UvMU0KcHJvdmVyYmlhbC81MVkKcHJvdmlkZS80RFJTWkcKcHJvdmlkZWQvNzRVCnByb3ZpZGVuY2UvMU0KcHJvdmlkZW50LzVZCnByb3ZpZGVudGlhbC81WQpwcm92aWRlci8xTQpwcm92aW5jZS8xTVMKcHJvdmluY2lhbC81MVNNWQpwcm92aW5jaWFsaXNtLzFNCnByb3Zpc2lvbmFsLzUxWQpwcm92aXNvLzFTTQpwcm92b2NhdGV1ci8xUwpwcm92b2NhdGl2ZS81MVBZCnByb3ZvY2F0aXZlbmVzcy8xTQpwcm92b2tlLzREUlNaRwpwcm92b2tlZC80VQpwcm92b2tlci8xTQpwcm92b2tpbmcvNDUxWQpwcm92b2xvbmUvMU0KcHJvdm9zdC8xNFNNCnByb3cvMTVNUwpwcm93ZXNzLzFNCnByb3dsLzQxTURSU1pHCnByb3dsZXIvMU0KcHJveGltYWwvNQpwcm94aW1hdGUvNTEKcHJveGltaXR5LzFNCnByb3h5LzUxNFNNCnBydWRlLzE1TVMKcHJ1ZGVuY2UvMU0KcHJ1ZGVudC81WQpwcnVkZW50aWFsLzUxWQpwcnVkZXJ5LzFNCnBydWRpc2gvNVlQCnBydWRpc2huZXNzLzFNCnBydW5lLzE0TVpHRFJTCnBydW5lci8xTQpwcnVyaWVuY2UvMU0KcHJ1cmllbnQvNVkKcHJ5LzQxWlRHRFJTTQpwc2FsbS8xNE1TCnBzYWxtaXN0LzFTTQpwc2FsdGVyeS8xU00KcHNlcGhvbG9naXN0LzFTCnBzZXBob2xvZ3kvMQpwc2V1ZC8xUwpwc2V1ZG8vMTVTCnBzZXVkb255bS8xU00KcHNldWRvbnltb3VzLzUKcHNldWRvc2NpZW5jZS8xTVMKcHNldWR5LzUKcHNoYXcvNE1TCnBzaS8xU00KcHNpdHRhY29zaXMvMU0KcHNvcmlhc2lzLzFNCnBzc3QvNApwc3ljaC8xNTRNRFNHCnBzeWNoZS8xNE0KcHN5Y2hlZGVsaWEvMQpwc3ljaGVkZWxpYy81MVNNCnBzeWNoZWRlbGljYWxseS8KcHN5Y2hpYXRyaWMvNTEKcHN5Y2hpYXRyaXN0LzFTTQpwc3ljaGlhdHJ5LzFNCnBzeWNoaWMvMTVNUwpwc3ljaGljYWwvNVkKcHN5Y2hvLzUxU00KcHN5Y2hvYWN0aXZlLzUxCnBzeWNob2FuYWx5c2VzLzQxCnBzeWNob2FuYWx5c2lzLzFNCnBzeWNob2FuYWx5c3QvMVNNCnBzeWNob2FuYWx5dGljLzUKcHN5Y2hvYW5hbHl0aWNhbC81WQpwc3ljaG9hbmFseXplLzREU0cKcHN5Y2hvYmFiYmxlLzE0TQpwc3ljaG9kcmFtYS8xTVMKcHN5Y2hvZ2VuaWMvNQpwc3ljaG9raW5lc2lzLzEKcHN5Y2hva2luZXRpYy81MQpwc3ljaG9sb2dpY2FsLzVZCnBzeWNob2xvZ2lzdC8xTVMKcHN5Y2hvbG9neS8xU00KcHN5Y2hvbWV0cmljLzUKcHN5Y2hvbmV1cm9zZXMvMQpwc3ljaG9uZXVyb3Npcy8xTQpwc3ljaG9wYXRoLzFNCnBzeWNob3BhdGhpYy81MQpwc3ljaG9wYXRob2xvZ3kvMQpwc3ljaG9wYXRocy8xCnBzeWNob3BhdGh5LzFNCnBzeWNob3BoYXJtYWNvbG9neS8xCnBzeWNob3BoeXNpb2xvZ3kvMQpwc3ljaG9zLzFTCnBzeWNob3Npcy8xTQpwc3ljaG9zb21hdGljLzUKcHN5Y2hvdGhlcmFwaXN0LzFNUwpwc3ljaG90aGVyYXB5LzFTTQpwc3ljaG90aWMvNTFTTQpwc3ljaG90aWNhbGx5Lwpwc3ljaG90cm9waWMvNTFNUwpwc3ljaHMvMTQKcHQvMUMKcHRhcm1pZ2FuLzFNUwpwdGVyb2RhY3R5bC8xTVMKcHRvbWFpbmUvMVNNCnB1Yi8xNFNNCnB1YmVydGFsLzUKcHViZXJ0eS8xTQpwdWJlcy8xTQpwdWJlc2NlbmNlLzFNCnB1YmVzY2VudC81MQpwdWJpYy81CnB1YmlzLzFNCnB1YmxpYy81MTRBTQpwdWJsaWNhbi8xQU1TCnB1YmxpY2F0aW9uLzFBU00KcHVibGljaXN0LzFNUwpwdWJsaWNpdHkvMU0KcHVibGljaXplLzRHRFMKcHVibGljbHkvCnB1Ymxpc2gvNEFHRFMKcHVibGlzaGFibGUvNQpwdWJsaXNoZWQvNDVVCnB1Ymxpc2hlci8xTVMKcHVibGlzaGluZy8xNE0KcHVjZS8xNU0KcHVjay8xNFpNUlMKcHVja2VyLzQxTURHCnB1Y2tpc2gvNVlQCnB1Y2tpc2huZXNzLzFNCnB1ZC8xUwpwdWRkaW5nLzFTTQpwdWRkbGUvMTREU01HCnB1ZGRsaW5nLzE0TQpwdWRlbmRhLzEKcHVkZW5kdW0vMU0KcHVkZ2luZXNzLzFNCnB1ZGd5LzVQUlQKcHVlYmxvLzFTTQpwdWVyaWxlLzUKcHVlcmlsaXR5LzFNCnB1ZXJwZXJhbC81CnB1ZmYvMTRaR01EUlMKcHVmZmJhbGwvMVNNCnB1ZmZlci8xTQpwdWZmaW4vMVNNCnB1ZmZpbmVzcy8xTQpwdWZmeS81UFJUCnB1Zy8xNFNNCnB1Z2lsaXNtLzFNCnB1Z2lsaXN0LzFTTQpwdWdpbGlzdGljLzUKcHVnbmFjaW91cy81WVAKcHVnbmFjaW91c25lc3MvMU0KcHVnbmFjaXR5LzFNCnB1a2UvMTRNR0RTCnB1a2thLzUKcHVsY2hyaXR1ZGUvMU0KcHVsY2hyaXR1ZGlub3VzLzUKcHVsZS8xNEdEUwpwdWxsLzQxWkdNRFJTCnB1bGxiYWNrLzFNUwpwdWxsZXIvMU0KcHVsbGV0LzFTTQpwdWxsZXkvMTRTTQpwdWxsb3V0LzFNUwpwdWxsb3Zlci8xU00KcHVsbW9uYXJ5LzUKcHVscC8xNDVHTURTCnB1bHBpbmVzcy8xTQpwdWxwaXQvMVNNCnB1bHB3b29kLzFNCnB1bHB5LzVSUFQKcHVsc2FyLzFTTQpwdWxzYXRlLzRYR05EUwpwdWxzYXRpb24vMU0KcHVsc2UvMTRBTUdEUwpwdWx2ZXJpemF0aW9uLzFNCnB1bHZlcml6ZS80RFNHCnB1bWEvMU1TCnB1bWljZS8xNFNNCnB1bW1lbC80MVNHRApwdW1wLzE0WkdNRFJTCnB1bXBlci8xTQpwdW1wZXJuaWNrZWwvMU0KcHVtcGtpbi8xTVMKcHVuLzQxU00KcHVuY2gvMTRNRFJTWkcKcHVuY2hiYWcvMVMKcHVuY2hlb24vMU1TCnB1bmNoZXIvMU0KcHVuY2hsaW5lLzFTCnB1bmNoeS81VFIKcHVuY3RpbGlvLzFNCnB1bmN0aWxpb3VzLzVQWQpwdW5jdGlsaW91c25lc3MvMU0KcHVuY3R1YWwvNVkKcHVuY3R1YWxpdHkvMU0KcHVuY3R1YXRlLzQ1R05EUwpwdW5jdHVhdGlvbi8xTQpwdW5jdHVyZS8xNERTTUcKcHVuZGl0LzFTTQpwdW5kaXRyeS8xTQpwdW5nZW5jeS8xTQpwdW5nZW50LzVZCnB1bmluZXNzLzFNCnB1bmlzaC80QkxHRFMKcHVuaXNoZWQvNDVVCnB1bmlzaGluZy81MTRZCnB1bmlzaG1lbnQvMU1TCnB1bml0aXZlLzVZCnB1bmsvMTU0VE1SUwpwdW5uZWQvNApwdW5uZXQvMVMKcHVubmluZy80MTUKcHVuc3Rlci8xU00KcHVudC8xNFpHTURSUwpwdW50ZXIvMU0KcHVueS81MVRSUApwdXAvMTRTTQpwdXBhLzFNCnB1cGFlLzEKcHVwYWwvNQpwdXBhdGUvNERTRwpwdXBpbC8xTVMKcHVwcGVkLzQKcHVwcGV0LzE0TVMKcHVwcGV0ZWVyLzE0U00KcHVwcGV0cnkvMU0KcHVwcGluZy80CnB1cHB5LzE0U00KcHVyYmxpbmQvNTE0CnB1cmNoYXNlLzE0RFJTTVpHQgpwdXJjaGFzZXIvMU0KcHVyZGFoLzFNCnB1cmUvNTQxUFlUUgpwdXJlYnJlZC81MVNNCnB1cmVlLzE0TURTCnB1cmVlaW5nLzQKcHVyZW5lc3MvMU0KcHVyZ2F0aXZlLzUxU00KcHVyZ2F0b3JpYWwvNQpwdXJnYXRvcnkvMTVTTQpwdXJnZS80MU1aR0RSUwpwdXJnZXIvMU0KcHVyaWZpY2F0aW9uLzFNCnB1cmlmaWVyLzFNCnB1cmlmeS80TkRSU1pHCnB1cmluZS8xTVMKcHVyaXNtLzFNCnB1cmlzdC81MU1TCnB1cmlzdGljLzUKcHVyaXRhbi8xNVNNCnB1cml0YW5pY2FsLzUxWQpwdXJpdGFuaXNtLzFNCnB1cml0eS8xTQpwdXJsLzE0R01EUwpwdXJsaWV1LzFTTQpwdXJsb2luLzRTR0QKcHVycGxlLzE1NE1UUlMKcHVycGxpc2gvNQpwdXJwb3J0LzQxU01ERwpwdXJwb3J0ZWQvNTRZCnB1cnBvc2UvMTREU01ZRwpwdXJwb3NlZC81NEEKcHVycG9zZWZ1bC81WVAKcHVycG9zZWZ1bG5lc3MvMU0KcHVycG9zZWxlc3MvNVBZCnB1cnIvNDFHTURTCnB1cnNlLzE0TVpHRFJTCnB1cnNlci8xTQpwdXJzdWFuY2UvMU0KcHVyc3VhbnQvNQpwdXJzdWUvNFpHRFJTCnB1cnN1ZXIvMU0KcHVyc3VpdC8xU00KcHVydWxlbmNlLzFNCnB1cnVsZW50LzUKcHVydmV5LzREU0cKcHVydmV5YW5jZS8xTQpwdXJ2ZXlvci8xU00KcHVydmlldy8xTQpwdXMvMTRNCnB1c2gvNDFaR01EUlMKcHVzaGJpa2UvMTRTCnB1c2hjYXJ0LzFTTQpwdXNoY2hhaXIvMVMKcHVzaGVyLzFNCnB1c2hpbHkvCnB1c2hpbmVzcy8xTQpwdXNob3Zlci8xTVMKcHVzaHBpbi8xNFMKcHVzaHkvNVRSUApwdXNpbGxhbmltaXR5LzFNCnB1c2lsbGFuaW1vdXMvNVkKcHVzcy8xTVMKcHVzc3kvMTVUUlNNCnB1c3N5Y2F0LzFNUwpwdXNzeWZvb3QvNDFEU0cKcHVzdHVsYXIvNQpwdXN0dWxlLzFTTQpwdXQvNDFJU00KcHV0YXRpdmUvNQpwdXRvdXQvMU1TCnB1dHJlZmFjdGlvbi8xTQpwdXRyZWZhY3RpdmUvNQpwdXRyZWZ5LzRHRFMKcHV0cmVzY2VuY2UvMU0KcHV0cmVzY2VudC81CnB1dHJpZC81CnB1dHNjaC8xTVMKcHV0dC8xNFpHTURSUwpwdXR0ZWQvNEkKcHV0dGVlLzFNUwpwdXR0ZXIvNDFNRFJaRwpwdXR0ZXJlci8xTQpwdXR0aW5nLzQxSQpwdXR0eS8xNTRHRFNNCnB1dHovMTRTCnB1enpsZS8xNE1aR0RSU0wKcHV6emxlbWVudC8xTQpwdXp6bGVyLzFNCnB2dApwd24vNDFTR0QKcHllbG9uZXBocml0aXMvMQpweWdteS8xNVNNCnB5bG9uLzFTTQpweWxvcmkvMQpweWxvcmljLzUKcHlsb3J1cy8xTQpweW9ycmhlYS8xTQpweXJhbWlkLzE0R1NNRApweXJhbWlkYWwvNTEKcHlyZS8xTVMKcHlyaW1pZGluZS8xTVMKcHlyaXRlLzFTTQpweXJpdGVzLzFNCnB5cm9tYW5pYS8xTQpweXJvbWFuaWFjLzFTTQpweXJvdGVjaG5pYy81UwpweXJvdGVjaG5pY2FsLzUKcHlyb3RlY2huaWNzLzFNCnB5cnV2YXRlLzEKcHl0aG9uLzFTTQpweXgvMTRNUwpwemF6ei8xCnEvMQpxci8xCnF0LzFTCnF0eS8xCnF1YS8rCnF1YWNrLzE0NUdNRFMKcXVhY2tlcnkvMU0KcXVhZC8xNTRNUwpxdWFkcmFuZ2xlLzFTTQpxdWFkcmFuZ3VsYXIvNQpxdWFkcmFudC8xTVMKcXVhZHJhcGhvbmljLzUKcXVhZHJhdGljLzUxTVMKcXVhZHJhdHVyZS8xCnF1YWRyZW5uaWFsLzUxCnF1YWRyZW5uaXVtLzFNUwpxdWFkcmljZXBzLzFNUwpxdWFkcmlsYXRlcmFsLzE1U00KcXVhZHJpbGxlLzE0NVhNTlMKcXVhZHJpbGxpb24vMU0KcXVhZHJpcGxlZ2lhLzFNCnF1YWRyaXBsZWdpYy81MVNNCnF1YWRyaXZpdW0vMU0KcXVhZHJ1cGVkLzFNUwpxdWFkcnVwZWRhbC81CnF1YWRydXBsZS81NDFNR0RTCnF1YWRydXBsZXQvMU1TCnF1YWRydXBsaWNhdGUvNTE0TUdORFMKcXVhZHJ1cGxpY2F0aW9uLzFNCnF1YWZmLzQxR01EUwpxdWFnbWlyZS8xNFNNCnF1YWhvZy8xNE1TCnF1YWlsLzQxR01EUwpxdWFpbnQvNTFQUllUCnF1YWludG5lc3MvMU0KcXVha2UvMTRNR0RTCnF1YWt5LzUxCnF1YWxpZmljYXRpb24vMUVNCnF1YWxpZmllZC81NFUKcXVhbGlmaWVyLzFTTQpxdWFsaWZ5LzQxRUdYTkRTCnF1YWxpdGF0aXZlLzUxWQpxdWFsaXR5LzE1U00KcXVhbG0vMTRNUwpxdWFsbWlzaC81CnF1YW5kYXJ5LzFTTQpxdWFuZ28vMVMKcXVhbnRhLzEKcXVhbnRpZmlhYmxlLzUxCnF1YW50aWZpY2F0aW9uLzFNCnF1YW50aWZpZXIvMU0KcXVhbnRpZnkvNE5EUlNaRwpxdWFudGl0YXRpb24vMQpxdWFudGl0YXRpdmUvNVkKcXVhbnRpdHkvMVNNCnF1YW50aXphdGlvbi8xCnF1YW50aXplLzQKcXVhbnR1bS8xNU0KcXVhcmFudGluZS8xNDJNR0RTCnF1YXJrLzFNUwpxdWFycmVsLzE0U1pHTURSCnF1YXJyZWxlci8xTQpxdWFycmVsc29tZS81UApxdWFycmVsc29tZW5lc3MvMU0KcXVhcnJ5LzE0RFNNRwpxdWFydC8xNTRNUwpxdWFydGVyLzE1NFNHTURZCnF1YXJ0ZXJiYWNrLzE0R01EUwpxdWFydGVyZGVjay8xTVMKcXVhcnRlcmZpbmFsLzFTTQpxdWFydGVybHkvNTFTTQpxdWFydGVybWFzdGVyLzE0TVMKcXVhcnRlcnN0YWZmLzFNCnF1YXJ0ZXJzdGF2ZXMvMQpxdWFydGV0LzFTTQpxdWFydG8vMU1TCnF1YXJ0ei8xTQpxdWFzYXIvMU1TCnF1YXNoLzRHRFMKcXVhc2kvNQpxdWF0cmFpbi8xTVMKcXVhdmVyLzE0TURTRwpxdWF2ZXJ5LzUKcXVheS8xNDVNUwpxdWF5c2lkZS8xUwpxdWVhc2lseS8KcXVlYXNpbmVzcy8xTQpxdWVhc3kvNVRQUgpxdWVlbi8xNEdNRFlTCnF1ZWVubHkvNVJUCnF1ZWVyLzUxNFBUR01EUllTCnF1ZWVybmVzcy8xTQpxdWVsbC80MUdEUwpxdWVuY2gvNDFaR0RSU0IKcXVlbmNoYWJsZS81VQpxdWVuY2hlci8xTQpxdWVuY2hsZXNzLzUKcXVlcnVsb3VzLzVZUApxdWVydWxvdXNuZXNzLzFNCnF1ZXJ5LzE0RFNNRwpxdWVzLzEKcXVlc2FkaWxsYS8xTVMKcXVlc3QvMTRJRkFNUwpxdWVzdGVkLzQKcXVlc3RpbmcvMTQKcXVlc3Rpb24vMTRTTURSWkdCSgpxdWVzdGlvbmFibGUvNVUKcXVlc3Rpb25hYmx5L1UKcXVlc3Rpb25lZC80VQpxdWVzdGlvbmVyLzFNCnF1ZXN0aW9uaW5nLzE1NE1ZCnF1ZXN0aW9ubmFpcmUvMTRTTQpxdWV1ZSdzCnF1ZXVlLzE0Q0RTCnF1ZXVpbmcvNDEKcXVpYmJsZS8xNERSU01aRwpxdWliYmxlci8xTQpxdWljaGUvMTVTTQpxdWljay81MTRNTlJZWFRQCnF1aWNrZW4vNDFERwpxdWlja2ZpcmUvNTEKcXVpY2tpZS8xU00KcXVpY2tsaW1lLzE0TQpxdWlja25lc3MvMU0KcXVpY2tzYW5kLzFNUwpxdWlja3NpbHZlci8xNTRNCnF1aWNrc3RlcC8xNE1TCnF1aWQvMTRNUwpxdWllc2NlbmNlLzFNCnF1aWVzY2VudC81WQpxdWlldC81NDFTTUROUllYVEdQCnF1aWV0ZW4vNERHCnF1aWV0aXNtLzEKcXVpZXRuZXNzLzFNCnF1aWV0dWRlLzFJRU0KcXVpZXR1cy8xTVMKcXVpZmYvMTRTCnF1aWxsLzE0U00KcXVpbHQvMTRTTURSWkcKcXVpbHRlci8xTQpxdWlsdGluZy8xNE0KcXVpbi8xUwpxdWluY2UvMVNNCnF1aW5lLzE0NVMKcXVpbmlkaW5lLzEKcXVpbmluZS8xNE0KcXVpbm9hLzEKcXVpbnN5LzFNCnF1aW50LzFTTQpxdWludGVzc2VuY2UvMTRTTQpxdWludGVzc2VudGlhbC81MVkKcXVpbnRldC8xU00KcXVpbnR1cGxlLzUxNE1HRFMKcXVpbnR1cGxldC8xTVMKcXVpcC8xNE1TCnF1aXBwZWQvNApxdWlwcGluZy80CnF1aXBzdGVyLzFTTQpxdWlyZSdzCnF1aXJlLzE0SUFTCnF1aXJrLzE0U01ERwpxdWlya2luZXNzLzFNCnF1aXJreS81UlRQCnF1aXJ0LzE0U00KcXVpc2xpbmcvMTRTTQpxdWl0LzU0MVMKcXVpdGNsYWltLzQxTVMKcXVpdGUvMQpxdWl0dGFuY2UvMTRNCnF1aXR0ZXIvMTRTTQpxdWl0dGluZy80MQpxdWl2ZXIvMTU0U01ERwpxdWl2ZXJ5LzUKcXVpeG90aWMvNTEKcXVpeG90aWNhbGx5LwpxdWl6LzE0TQpxdWl6emVkLzQKcXVpenplci8xU00KcXVpenplcy8xNApxdWl6emljYWwvNVkKcXVpenppbmcvNDEKcXVvLzQxSApxdW9pbi8xNFNNCnF1b2l0LzE0U01ERwpxdW9uZGFtLzUKcXVvcmF0ZS8xNUkKcXVvcnVtLzFTTQpxdW90L0IKcXVvdGEvMVNNCnF1b3RhYmlsaXR5LzFNCnF1b3RhdGlvbi8xU00KcXVvdGUncwpxdW90ZS8xNFVEU0cKcXVvdGlkaWFuLzUxCnF1b3RpZW50LzFTTQpxd2VydHkvNQpyLzRTCnJhYmJldC8xNEdNRFMKcmFiYmkvMVNNCnJhYmJpbmF0ZS8xTQpyYWJiaW5pYy81CnJhYmJpbmljYWwvNQpyYWJiaXQvMTRHTURTCnJhYmJsZS80MU1TCnJhYmlkLzUxUFkKcmFiaWRuZXNzLzFNCnJhYmllcy8xTQpyYWNjb29uLzFNUwpyYWNlLzE0TVpHRFJTCnJhY2Vjb3Vyc2UvMVNNCnJhY2Vnb2VyLzFTCnJhY2Vob3JzZS8xTVMKcmFjZW1lLzFNUwpyYWNlci8xTQpyYWNldHJhY2svMU1TCnJhY2V3YXkvMU1TCnJhY2lhbC81MVkKcmFjaWFsaXNtLzFNCnJhY2lhbGlzdC8xTVMKcmFjaWx5LwpyYWNpbmVzcy8xTQpyYWNpbmcvMTRNCnJhY2lzbS8xTQpyYWNpc3QvMTVTTQpyYWNrLzE0R01EUwpyYWNrZXQvMTRTTURHCnJhY2tldGVlci8xNFNNREcKcmFja2V0ZWVyaW5nLzE0TQpyYWNvbnRldXIvMTRTTQpyYWNxdWV0YmFsbC8xU00KcmFjeS81UFJUCnJhZC81MVNNCnJhZGFyLzE0U00KcmFkYXJzY29wZS8xU00KcmFkZGxlZC81CnJhZGlhbC81MVNNWQpyYWRpYW4vMVMKcmFkaWFuY2UvMU0KcmFkaWFudC81MVkKcmFkaWF0ZS80NTFEU0dOWApyYWRpYXRpb24vMU0KcmFkaWF0b3IvMVNNCnJhZGljYWwvNTFTTVkKcmFkaWNhbGlzbS8xTQpyYWRpY2FsaXphdGlvbi8xTQpyYWRpY2FsaXplLzREU0cKcmFkaWNjaGlvLzFNCnJhZGlpLzEKcmFkaW8vMTRNREdTCnJhZGlvYWN0aXZlLzUxWQpyYWRpb2FjdGl2aXR5LzFNCnJhZGlvY2FyYm9uLzFNCnJhZGlvZ3JhbS8xTVMKcmFkaW9ncmFwaGVyLzFTTQpyYWRpb2dyYXBoeS8xTQpyYWRpb2lzb3RvcGUvMU1TCnJhZGlvbG9naXN0LzFTTQpyYWRpb2xvZ3kvMU0KcmFkaW9tYW4vMU0KcmFkaW9tZW4vMQpyYWRpb21ldGVyLzFNUwpyYWRpb21ldHJpYy81CnJhZGlvbWV0cnkvMU0KcmFkaW9waG9uZS8xU00KcmFkaW9zY29weS8xTQpyYWRpb3NvbmRlLzFTTQpyYWRpb3N1cmdlcnkvMQpyYWRpb3RlbGVncmFwaC8xNE0KcmFkaW90ZWxlZ3JhcGhzLzEKcmFkaW90ZWxlZ3JhcGh5LzFNCnJhZGlvdGVsZXBob25lLzE0TVMKcmFkaW90aGVyYXBpc3QvMU1TCnJhZGlvdGhlcmFweS8xTQpyYWRpc2gvMU1TCnJhZGl1bS8xNE0KcmFkaXVzLzE0TQpyYWRvbi8xTQpyYWZmaWEvMU0KcmFmZmlzaC81WVAKcmFmZmlzaG5lc3MvMU0KcmFmZmxlLzE0RFNNRwpyYWZ0LzE0WkdNRFJTCnJhZnRlci8xNE0KcmFmdGluZy80MU0KcmFnLzE0U0dNRApyYWdhLzFNUwpyYWdhbXVmZmluLzFNUwpyYWdiYWcvMU0KcmFnZS8xNE1TCnJhZ2dhLzEKcmFnZ2VkLzU0UllUUApyYWdnZWRuZXNzLzFNCnJhZ2dlZHkvNVJUCnJhZ2dpbmcvNDEKcmFnaW5nLzQ1MVkKcmFnbGFuLzUxU00KcmFnb3V0LzE0U00KcmFndGFnLzUxUwpyYWd0aW1lLzFNCnJhZ3dlZWQvMU0KcmFnd29ydC8xCnJhaC8xNQpyYWlkLzE0WkdNRFJTCnJhaWRlci8xTQpyYWlsJ3MKcmFpbC8xNENHRFMKcmFpbGNhcmQvMVMKcmFpbGluZy81MTRTTQpyYWlsbGVyeS8xU00KcmFpbHJvYWQvMTRTWkdNRFIKcmFpbHJvYWRlci8xTQpyYWlscm9hZGluZy80MU0KcmFpbHdheS8xU00KcmFpbHdheW1hbi8xCnJhaWx3YXltZW4vMQpyYWltZW50LzFNCnJhaW4vMTRHTURTCnJhaW5ib3cvMTU0U00KcmFpbmNvYXQvMVNNCnJhaW5kcm9wLzFTTQpyYWluZmFsbC8xU00KcmFpbm1ha2VyLzFTTQpyYWlubWFraW5nLzFNCnJhaW5wcm9vZi81NApyYWluc3Rvcm0vMU1TCnJhaW53YXRlci8xTQpyYWlueS81UlQKcmFpc2UvNDFNWkdEUlMKcmFpc2VyLzFNCnJhaXNpbi8xNFNNCnJhamFoLzFNCnJhamFocy8xCnJha2UvMTRNR0RTCnJha2lzaC81WVAKcmFraXNobmVzcy8xTQpyYWxseS8xNERTTUcKcmFtLzE0NVNNCnJhbWJsZS8xNERSU01aR0oKcmFtYmxlci8xTQpyYW1idW5jdGlvdXMvNVBZCnJhbWJ1bmN0aW91c25lc3MvMU0KcmFtZWtpbi8xU00KcmFtaWUvMU0KcmFtaWZpY2F0aW9uLzFNCnJhbWlmeS80RFNYTkcKcmFtamV0LzFTTQpyYW1tZWQvNDUKcmFtbWluZy80MQpyYW1wLzE0R01TCnJhbXBhZ2UvMTREU01HCnJhbXBhbmN5LzFNCnJhbXBhbnQvNVkKcmFtcGFydC8xNFNNCnJhbXJvZC8xNFNNCnJhbXJvZGRlZC80CnJhbXJvZGRpbmcvNApyYW1zaGFja2xlLzU0CnJhbi80MUEKcmFuY2gvMTRNRFJTWkcKcmFuY2hlci8xTQpyYW5jaGluZy80MU0KcmFuY2lkLzVQCnJhbmNpZGl0eS8xTQpyYW5jaWRuZXNzLzFNCnJhbmNvci8xTQpyYW5jb3JvdXMvNVkKcmFuZC8xNE0KcmFuZGluZXNzLzFNCnJhbmRvbS8xNTRQU1kKcmFuZG9taXphdGlvbi8xTQpyYW5kb21pemUvNERTRwpyYW5kb21uZXNzLzFNUwpyYW5keS81MVJUUApyYW5lZS8xTVMKcmFuZy80WlIKcmFuZ2UncwpyYW5nZS8xNENHRFMKcmFuZ2VmaW5kZXIvMVMKcmFuZ2VyLzE0TQpyYW5naW5lc3MvMU0KcmFuZ3kvNVJUUApyYW5rLzUxNFRHSlBNRFJZUwpyYW5raW5nLzQ1MU0KcmFua2xlLzQxRFNHCnJhbmtuZXNzLzFNCnJhbnNhY2svNDFTR0QKcmFuc29tLzE0U1pHTURSCnJhbnNvbWVyLzFNCnJhbnNvbXdhcmUvMQpyYW50LzQxWkdNREpSUwpyYW50ZXIvMU0KcmFwLzE0U1pHTURSCnJhcGFjaW91cy81UFkKcmFwYWNpb3VzbmVzcy8xTQpyYXBhY2l0eS8xTQpyYXBlLzE0TVMKcmFwZXIvMU0KcmFwZXNlZWQvMU0KcmFwaWQvNTFQTVJZVFMKcmFwaWRpdHkvMU0KcmFwaWRuZXNzLzFNCnJhcGllci8xNVNNCnJhcGluZS8xNE0KcmFwaXN0LzFTTQpyYXBwZWQvNApyYXBwZWwvMTRTTQpyYXBwZWxsZWQvNApyYXBwZWxsaW5nLzQxCnJhcHBlci8xU00KcmFwcGluZy80MTUKcmFwcG9ydC8xTVMKcmFwcG9ydGV1ci8xUwpyYXBwcm9jaGVtZW50LzFTTQpyYXBzY2FsbGlvbi8xNU1TCnJhcHQvNTQxWVAKcmFwdG5lc3MvMU0KcmFwdG9yLzFTCnJhcHR1cmUvMTRNUwpyYXB0dXJvdXMvNVkKcmFyZS81MTRZVEdQRFJTCnJhcmViaXQvMU1TCnJhcmVmYWN0aW9uLzFNCnJhcmVmeS80R0RTCnJhcmVuZXNzLzFNCnJhcml0eS8xU00KcmFzY2FsLzE1U01ZCnJhc2gvNTE0WlRNUlNZUApyYXNoZXIvNTE0TQpyYXNobmVzcy8xTQpyYXNwLzE0R01EUwpyYXNwYmVycnkvMTU0U00KcmFzcHkvNVJUCnJhc3Rlci8xNApyYXQvMTRTTQpyYXRhdG91aWxsZS8xTQpyYXRiYWcvMVMKcmF0Y2hldC8xNDVHTURTCnJhdGUvMTRKWE1aR05EUlMKcmF0ZWQvNTRVCnJhdGVwYXllci8xUwpyYXRlci8xTQpyYXRoZXIvNTE0CnJhdGhza2VsbGVyLzFTTQpyYXRpZmljYXRpb24vMU0KcmF0aWZpZXIvMU0KcmF0aWZ5LzRORFJTWkcKcmF0aW5nLzQxTQpyYXRpby8xNE1TCnJhdGlvY2luYXRlLzRHTkRTCnJhdGlvY2luYXRpb24vMU0KcmF0aW9uLzE0TURHCnJhdGlvbmFsLzUxU01ZCnJhdGlvbmFsZS8xTVMKcmF0aW9uYWxpc20vMU0KcmF0aW9uYWxpc3QvMVNNCnJhdGlvbmFsaXN0aWMvNQpyYXRpb25hbGl0eS8xTQpyYXRpb25hbGl6YXRpb24vMU1TCnJhdGlvbmFsaXplLzREU0cKcmF0bGlrZS81CnJhdGxpbmUvMVNNCnJhdHRhbi8xNFNNCnJhdHRlZC80NQpyYXR0ZXIvMVNNCnJhdHRpbmcvNDEKcmF0dGxlLzQxRFJTTVpHSgpyYXR0bGVicmFpbi8xU01ECnJhdHRsZXIvMU0KcmF0dGxlc25ha2UvMVNNCnJhdHRsZXRyYXAvNTFTTQpyYXR0bHkvNQpyYXR0cmFwLzFTTQpyYXR0eS81MVJUCnJhdWNvdXMvNVlQCnJhdWNvdXNuZXNzLzFNCnJhdW5jaGlseS8KcmF1bmNoaW5lc3MvMU0KcmF1bmNoeS81VFJQCnJhdmFnZS80MURSU01aRwpyYXZhZ2VyLzFNCnJhdmFnZXMvMTRNCnJhdmUvMTRKTVpHRFJTCnJhdmVsJ3MKcmF2ZWwvNDFVRFNHCnJhdmVsaW5nLzQxUwpyYXZlbi8xNTRNRFNHCnJhdmVub3VzLzVZCnJhdmluZS8xU00KcmF2aW5nLzQxNU0KcmF2aW9saS8xU00KcmF2aXNoLzREUlNaR0wKcmF2aXNoZXIvMU0KcmF2aXNoaW5nLzU0MVkKcmF2aXNobWVudC8xTQpyYXcvNTE0UFRNUgpyYXdib25lZC81CnJhd2hpZGUvMTRNCnJhd25lc3MvMU0KcmF5LzE0U00KcmF5b24vMU0KcmF6ZS80MUdEUwpyYXpvci8xNE1TCnJhem9yYmFjay8xTVMKcmF6ei8xNEdNRFMKcmF6em1hdGF6ei8xTQpyY3B0LzEKcmQvMQpyZS8rMURTTVlUR1ZKCnJlYWNoLzQxTURTR0IKcmVhY2hhYmxlLzUxVQpyZWFjcXVpcmUvNERTRwpyZWFjdC80MVYKcmVhY3RhbmNlLzEKcmVhY3RhbnQvMVNNCnJlYWN0aW9uYXJ5LzUxU00KcmVhY3Rpdml0eS8xCnJlYWQvNDFaR01SQkpTCnJlYWRhYmlsaXR5LzFTTQpyZWFkZXIvMU0KcmVhZGVyc2hpcC8xU00KcmVhZGlseS8KcmVhZGluZXNzLzFNCnJlYWRpbmcvNDFNCnJlYWRtaXR0ZWQvNApyZWFkb3V0LzFTTQpyZWFkeS81NDFEUlNUR1AKcmVhZmZvcmVzdGF0aW9uLzEKcmVhbC81MVRNUllQUwpyZWFsaXNtLzFNCnJlYWxpc3QvMTVTTQpyZWFsaXN0aWMvNVUKcmVhbGlzdGljYWxseS9VCnJlYWxpdGllcy8xCnJlYWxpdHkvMVVNCnJlYWxpemF0aW9uLzFNUwpyZWFsaXplLzREU0JHCnJlYWxpemVkLzRVCnJlYWxtLzFNUwpyZWFsbmVzcy8xTQpyZWFscG9saXRpay8xTQpyZWFsdHkvMU0KcmVhbS8xNFpHTURSUwpyZWFtZXIvMU0KcmVhcC80MVpHRFJTCnJlYXBlci8xTQpyZWFyLzQ1MUdNRFMKcmVhcmd1YXJkLzFNUwpyZWFybW9zdC81CnJlYXJ3YXJkLzE1UwpyZWFzb24vMTRTTURSWkdCCnJlYXNvbmFibGUvNVVQCnJlYXNvbmFibGVuZXNzLzFVTQpyZWFzb25hYmx5L1UKcmVhc29uZXIvMU0KcmVhc29uaW5nLzE0TQpyZWFzc3VyaW5nLzQ1MVkKcmViYXRlLzE0TQpyZWJlbC8xNE1TCnJlYmVsbGlvbi8xTVMKcmViZWxsaW91cy81WVAKcmViZWxsaW91c25lc3MvMU0KcmViaWQvNDFTCnJlYmlkZGluZy80CnJlYmlydGgvMTRNCnJlYm9pbC80U0RHCnJlYnVpbGQvNDFTRwpyZWJ1a2UvMTREU01HCnJlYnVraW5nLzQxWQpyZWJ1dHRhbC8xTVMKcmVjJ2QvNQpyZWMvMTQ1TQpyZWNhbGNpdHJhbmNlLzFNCnJlY2FsY2l0cmFudC81MQpyZWNhbnQvNFNERwpyZWNhbnRhdGlvbi8xU00KcmVjYXAvNDFNUwpyZWNhcGl0YWxpemF0aW9uLzEKcmVjY2UvMTU0UwpyZWNkCnJlY2VpcHQvMTRTTURHCnJlY2VpdmFibGVzLzFNCnJlY2VpdmUvNDFEUlNaR0IKcmVjZWl2ZXIvMU0KcmVjZWl2ZXJzaGlwLzFNCnJlY2VudC81MVJZVFAKcmVjZW50bmVzcy8xTQpyZWNlcHRhY2xlLzFTTQpyZWNlcHRpb24vMU1TCnJlY2VwdGlvbmlzdC8xU00KcmVjZXB0aXZlLzVQWQpyZWNlcHRpdmVuZXNzLzFNCnJlY2VwdGl2aXR5LzFNCnJlY2VwdG9yLzFTTQpyZWNlc3MvMTU0TURTR1YKcmVjZXNzaW9uYWwvNTFTTQpyZWNlc3Npb25hcnkvNQpyZWNlc3NpdmUvNTFTTQpyZWNoZXJjaGUvNQpyZWNpZGl2aXNtLzFNCnJlY2lkaXZpc3QvMVNNCnJlY2lwZS8xU00KcmVjaXBpZW50LzE1U00KcmVjaXByb2NhbC81MVNNWQpyZWNpcHJvY2F0ZS80R05EUwpyZWNpcHJvY2F0aW9uLzFNCnJlY2lwcm9jaXR5LzFNCnJlY2l0YWwvMVNNCnJlY2l0YWxpc3QvMU1TCnJlY2l0YXRpdmUvMTVNUwpyZWNpdGVyLzFTTQpyZWNrbGVzcy81WVAKcmVja2xlc3NuZXNzLzFNCnJlY2tvbi80MVNKREcKcmVja29uaW5nLzQxTQpyZWNsYW1hdGlvbi8xTQpyZWNsaW5lLzQxRFJTWkcKcmVjbGluZXIvMU0KcmVjbHVzZS81MTRTTVYKcmVjb2duaXphYmxlLzVVCnJlY29nbml6YWJseS9VCnJlY29nbml6ZS80RFJTR0IKcmVjb2duaXplZC81NFUKcmVjb21iaW5hdGlvbi8xCnJlY29tcGVuc2UvMTREU01HCnJlY29tcGlsYXRpb24vMQpyZWNvbXBpbGUvNDFHRApyZWNvbi8xNFMKcmVjb25jaWxlLzRHRFNCCnJlY29uY2lsaWF0aW9uLzFTCnJlY29uZGl0ZS81MTQKcmVjb25maWd1cmF0aW9uLzEKcmVjb25maWd1cmUvNEQKcmVjb25uYWlzc2FuY2UvMU1TCnJlY29ubm9pdGVyLzQxREdTCnJlY29uc3RydWN0LzRWCnJlY29uc3RydWN0ZWQvNDVVCnJlY29yZGVkLzQ1VQpyZWNvcmRlci8xTVMKcmVjb3JkaW5nLzQxTVMKcmVjb3VwLzRERwpyZWNvdXJzZS8xNE0KcmVjb3ZlcmFibGUvNTFVCnJlY292ZXJ5LzFTTQpyZWNyZWFudC81MU1TCnJlY3JlYXRpb25hbC81CnJlY3JpbWluYXRlLzREU0dOWApyZWNyaW1pbmF0aW9uLzFNCnJlY3JpbWluYXRvcnkvNQpyZWNydWRlc2NlLzRHRFMKcmVjcnVkZXNjZW5jZS8xTQpyZWNydWRlc2NlbnQvNQpyZWNydWl0LzE0TFNNRFJaRwpyZWNydWl0ZXIvMU0KcmVjcnVpdG1lbnQvMU0KcmVjdGFsLzUxWQpyZWN0YW5nbGUvMTVNUwpyZWN0YW5ndWxhci81CnJlY3RpZmlhYmxlLzUKcmVjdGlmaWNhdGlvbi8xTQpyZWN0aWZpZXIvMU0KcmVjdGlmeS80WE5EUlNaRwpyZWN0aWxpbmVhci81CnJlY3RpdHVkZS8xTQpyZWN0by8xTVMKcmVjdG9yLzFTTQpyZWN0b3J5LzFTTQpyZWN0dW0vMVNNCnJlY3VtYmVudC81MQpyZWN1cGVyYXRlLzRHTlZEUwpyZWN1cGVyYXRpb24vMU0KcmVjdXIvNFMKcmVjdXJyZWQvNApyZWN1cnJlbmNlLzFTTQpyZWN1cnJpbmcvNDUxCnJlY3Vyc2lvbi8xUwpyZWN1c2UvNERTRwpyZWN5Y2xhYmxlLzUxU00KcmVjeWNsaW5nLzE0TQpyZWQvNTE0UFNNCnJlZGFjdC80U0RHCnJlZGFjdGlvbi8xTQpyZWRhY3Rvci8xU00KcmVkYmlyZC8xU00KcmVkYnJlYXN0LzFNUwpyZWRicmljay81MQpyZWRjYXAvMVNNCnJlZGNvYXQvMTRTTQpyZWRjdXJyYW50LzFTCnJlZGRlbi80U0RHCnJlZGRlci81CnJlZGRlc3QvNQpyZWRkaXNoLzUKcmVkZWVtLzRSWkIKcmVkZWVtZXIvMU0KcmVkZW1wdGlvbi8xTQpyZWRlbXB0aXZlLzUKcmVkaGVhZC8xU01ECnJlZGlyZWN0aW9uLzEKcmVkaXN0cmljdC80R0QKcmVkaXZpZGUvNEdEUwpyZWRsaW5pbmcvMTRNCnJlZG5lY2svMVNNCnJlZG5lc3MvMU0KcmVkby80MUcKcmVkb2xlbmNlLzFNCnJlZG9sZW50LzUKcmVkb3VidC8xNFNCTQpyZWRvdWJ0YWJseS8KcmVkb3VuZC80MVNERwpyZWRyYXcvNDFTRwpyZWRza2luLzFTTQpyZWR1Y2UvNERSU1pHCnJlZHVjZXIvMU0KcmVkdWNpYmxlLzUKcmVkdWN0YXNlLzFNCnJlZHVjdGlvbi8xU00KcmVkdWN0aW9uaXN0LzUxCnJlZHVjdGl2ZS81CnJlZHVuZGFuY3kvMVNNCnJlZHVuZGFudC81WQpyZWR3b29kLzFTTQpyZWR5ZS80RFMKcmVlZGluZXNzLzFNCnJlZWR5LzVSVFAKcmVlZi8xNDVaR01EUlMKcmVlZmVyLzFNCnJlZWsvMTRHTURTCnJlZWwncwpyZWVsLzE0VUdEUwpyZWV2ZS8xNEcKcmVleHBvcnQvNDFTREcKcmVmLzE0U1pNCnJlZmFzaGlvbi80REdTCnJlZmVjdGlvbi8xTQpyZWZlY3RvcnkvMVNNCnJlZmVyLzQxQgpyZWZlcmVlLzE0RFNNCnJlZmVyZWVpbmcvNDEKcmVmZXJlbmNlLzE0TUdEUwpyZWZlcmVuZHVtLzFNUwpyZWZlcmVudC8xU00KcmVmZXJlbnRpYWwvNQpyZWZlcnJhbC8xU00KcmVmZXJyZWQvNApyZWZlcnJlci8xU00KcmVmZXJyaW5nLzQxCnJlZmZlZC80CnJlZmZpbmcvNApyZWZpbGwvMTRCTQpyZWZpbmVkLzQ1MVUKcmVmaW5lbWVudC8xU00KcmVmaW5lci8xU00KcmVmaW5lcnkvMVMKcmVmaXR0aW5nLzQxCnJlZmxhdGUvNFhEU0dOCnJlZmxhdGlvbmFyeS81CnJlZmxlY3QvNEdWU0QKcmVmbGVjdGlvbi8xTVMKcmVmbGVjdGl2ZS81WQpyZWZsZWN0aXZpdHkvMQpyZWZsZWN0b3IvMU1TCnJlZmxleGl2ZS81MVNNWQpyZWZsZXhpdml0eS8xCnJlZmxleG9sb2d5LzEKcmVmb3JnZS80RFNHCnJlZm9ybS8xNE1aCnJlZm9ybWF0LzRWCnJlZm9ybWF0b3J5LzUxU00KcmVmb3JtYXR0aW5nLzQxCnJlZm9ybWVkLzQ1VQpyZWZvcm1pc3QvNTFTCnJlZm9ydGlmeS80R0RTCnJlZnJhY3QvNFNHVkQKcmVmcmFjdGlvbi8xTQpyZWZyYWN0b3J5LzUxU00KcmVmcmFpbi80MVNHTUQKcmVmcmVzaC80MVpHTERSUwpyZWZyZXNoZXIvMU0KcmVmcmVzaGluZy81MTRZCnJlZnJlc2htZW50LzFTTQpyZWZyZXNobWVudHMvMU0KcmVmcmlnZXJhbnQvMTVTTQpyZWZyaWdlcmF0ZS80RFNHTgpyZWZyaWdlcmF0aW9uLzFNCnJlZnJpZ2VyYXRvci8xTVMKcmVmdWdlLzE0U00KcmVmdWdlZS8xNFNNCnJlZnVsZ2VuY2UvMU0KcmVmdWxnZW50LzUKcmVmdW5kLzQxQgpyZWZ1cmJpc2htZW50LzFNUwpyZWZ1c2FsLzFNUwpyZWZ1dGF0aW9uLzFNUwpyZWZ1dGUvNEJEUlNaRwpyZWZ1dGVyLzFNCnJlZy8xCnJlZ2FsLzUxRFlHCnJlZ2FsZW1lbnQvMU0KcmVnYWxpYS8xTQpyZWdhcmQvMTRFU01ERwpyZWdhcmRsZXNzLzUrCnJlZ2FyZHMvMTRNCnJlZ2F0aGVyLzRER1MKcmVnYXR0YS8xU00KcmVnZW5jeS8xU00KcmVnZW5lcmFjeS8xTQpyZWdlbmVyYXRlLzQ1MVYKcmVnZXgvMU0KcmVnZXhwLzFTCnJlZ2dhZS8xTQpyZWdpY2lkYWwvNQpyZWdpY2lkZS8xTVMKcmVnaW1lLzFTTQpyZWdpbWVuLzFTTQpyZWdpbWVudC8xNE1ER1MKcmVnaW1lbnRhbC81CnJlZ2ltZW50YXRpb24vMU0KcmVnaW9uLzFTTQpyZWdpb25hbC81MVkKcmVnaW9uYWxpc20vMU1TCnJlZ2lzdGVyLzE0R01EUwpyZWdpc3RlcmVkLzQ1VQpyZWdpc3RyYW50LzFNUwpyZWdpc3RyYXIvMU1TCnJlZ2lzdHJhdGlvbi8xU00KcmVnaXN0cnkvMVNNCnJlZ25hbnQvNTEKcmVncmVzcy8xNE1EU0dWCnJlZ3Jlc3Npb24vMU1TCnJlZ3JldC80MVNNCnJlZ3JldGZ1bC81WQpyZWdyZXR0YWJsZS81CnJlZ3JldHRhYmx5LwpyZWdyZXR0ZWQvNApyZWdyZXR0aW5nLzQxCnJlZ3JpbmQvNEdTCnJlZ3JvdW5kLzQKcmVncm91cC8xNERHUwpyZWd1bGFyLzUxTVlTCnJlZ3VsYXJpdHkvMVNNCnJlZ3VsYXJpemF0aW9uLzFNCnJlZ3VsYXJpemUvNERTRwpyZWd1bGF0ZS80Q0RTR05WCnJlZ3VsYXRlZC80NVUKcmVndWxhdGlvbi8xNUNNCnJlZ3VsYXRpb25zLzEKcmVndWxhdG9yLzFNUwpyZWd1bGF0b3J5LzUKcmVndXJnaXRhdGUvNDFEU0dOCnJlZ3VyZ2l0YXRpb24vMU0KcmVoYWIvMTRNUwpyZWhhYmJlZC80CnJlaGFiYmluZy80CnJlaGFiaWxpdGF0ZS80R05WRFMKcmVoYWJpbGl0YXRpb24vMU0KcmVoYW5nLzQxU0RHCnJlaGVhcnMvNEdECnJlaGVhcnNhbC8xTVMKcmVoZWFyc2VkLzQ1VQpyZWhpLwpyZWh1bmcvNApyZWlmeS80TkRTRwpyZWlnbi8xNE1EU0cKcmVpbWJ1cnNlLzRCRFNHTApyZWltYnVyc2VtZW50LzFNUwpyZWluLzE0R0QKcmVpbmRlZXIvMTRNCnJlaW5mb3JjZS80TEdEUwpyZWluZm9yY2VtZW50LzFTTQpyZWluaXRpYWxpemUvNApyZWluc3RhbGwvNDFERwpyZWluc3RhdGVtZW50LzFNCnJlaW5zdXJhbmNlLzEKcmVpdGVyYXRlLzQ1MVYKcmVqZWN0LzQxR1NNRApyZWplY3Rpb24vMVNNCnJlam9pY2UvNEpHRFMKcmVqb2ljaW5nLzQxTQpyZWpvaW5kZXIvMTRTTQpyZWp1dmVuYXRlLzREU0dOCnJlanV2ZW5hdGlvbi8xTQpyZWwvKwpyZWxhdGUvNERSU0JYWkdOVgpyZWxhdGVkbmVzcy8xTQpyZWxhdGVyLzFNCnJlbGF0aW9uLzFNCnJlbGF0aW9uYWwvNQpyZWxhdGlvbnNoaXAvMU1TCnJlbGF0aXZlLzUxTVlTCnJlbGF0aXZpc20vMU0KcmVsYXRpdmlzdC8xUwpyZWxhdGl2aXN0aWMvNQpyZWxhdGl2aXR5LzFNCnJlbGF4LzREUlNaRwpyZWxheGFudC8xTVMKcmVsYXhhdGlvbi8xU00KcmVsYXhlci8xTQpyZWxheS8xNEQKcmVsZWFzZS8xNEIKcmVsZWFzZWQvNFUKcmVsZWdhdGUvNDE1R05EUwpyZWxlbnQvMTQ1U0dECnJlbGVudGxlc3MvNVBZCnJlbGVudGxlc3NuZXNzLzFNCnJlbGV2YW5jZS8xTQpyZWxldmFuY3kvMU0KcmVsZXZhbnQvNVkKcmVsaWFiaWxpdHkvMVVNCnJlbGlhYmxlLzUxVQpyZWxpYWJseS9VCnJlbGlhbmNlLzFNCnJlbGlhbnQvNQpyZWxpYy8xNDVNUwpyZWxpZWYvMTVTTQpyZWxpZXZlLzRaR0RSUwpyZWxpZXZlci8xTQpyZWxpZ2lvbi8xNFNNCnJlbGlnaW9zaXR5LzEKcmVsaWdpb3VzLzUxTVlQCnJlbGlnaW91c25lc3MvMU0KcmVsaW5lLzQxRFNHCnJlbGlucXVpc2gvNExEU0cKcmVsaW5xdWlzaG1lbnQvMU0KcmVsaXF1YXJ5LzFTTQpyZWxpc2gvMTRHTURTCnJlbGlzdC80U0dECnJlbG9jYXRlLzRCCnJlbHVjdGFuY2UvMU0KcmVsdWN0YW50LzVZCnJlbHkvNEdEUwpyZW0vMTVNCnJlbWFpbi8xNFNHRApyZW1haW5kZXIvMTU0R01EUwpyZW1hbmQvMTRTR0QKcmVtYXBwaW5nLzQxCnJlbWFyay8xNEIKcmVtYXJrYWJsZW5lc3MvMU0KcmVtYXJrYWJseS8KcmVtYXJrZWQvNDVVCnJlbWVkaWFibGUvNQpyZW1lZHkvMTRHRFNNCnJlbWVtYmVyLzRERwpyZW1lbWJlcmVkLzRVCnJlbWVtYnJhbmNlLzE0TVMKcmVtaW5kZXIvMU0KcmVtaW5pc2NlLzQxR0RTCnJlbWluaXNjZW5jZS8xTVMKcmVtaW5pc2NlbnQvNTFZCnJlbWlzcy81UFkKcmVtaXNzbmVzcy8xTQpyZW1pdC80MVMKcmVtaXR0YW5jZS8xU00KcmVtaXR0ZWQvNApyZW1pdHRpbmcvNDFVCnJlbWl4LzE0RFNHCnJlbW5hbnQvMTVNUwpyZW1vZGVsLzQxR0RTCnJlbW9sZC80U0dECnJlbW9uc3RyYW50LzE1U00KcmVtb25zdHJhdGUvNERTRwpyZW1vcnNlLzE0TQpyZW1vcnNlZnVsLzVZCnJlbW9yc2VsZXNzLzVQWQpyZW1vcnNlbGVzc25lc3MvMU0KcmVtb3RlLzUxNFJTTVlUUApyZW1vdGVuZXNzLzFNCnJlbW92YWwvMVNNCnJlbXVuZXJhdGUvNEdOVlhEUwpyZW11bmVyYXRpb24vMU0KcmVuYWlzc2FuY2UvMU1TCnJlbmFsLzUKcmVuYXNjZW5jZS8xUwpyZW5kLzQxR1MKcmVuZGVyLzQxU0dNREoKcmVuZGVyaW5nLzE0TQpyZW5kZXp2b3VzLzE0R01EUwpyZW5kaXRpb24vMTRNUwpyZW5lZ2FkZS8xNDVEU01HCnJlbmVnZS80RFJTWkcKcmVuZWdlci8xTQpyZW5ldy80MURTQkcKcmVuZXdhbC8xTVMKcmVubmV0LzFNCnJlbm5pbi8xTQpyZW5vdW5jZS8xNExEU0cKcmVub3VuY2VtZW50LzFNCnJlbm92YXRlLzREU1hHTgpyZW5vdmF0aW9uLzFNCnJlbm92YXRvci8xTVMKcmVub3duLzE0TUQKcmVudC8xNDVaR01EUlMKcmVudGFsLzE1U00KcmVudGVyLzE0TQpyZW51bmNpYXRpb24vMVNNCnJlb3Blbi80U0RHCnJlb3JnLzE0TURTRwpyZXAvMTRTTQpyZXBhaW50LzQxR0RTCnJlcGFpci80MUJaUgpyZXBhaXJlci8xTQpyZXBhaXJtYW4vMU0KcmVwYWlybWVuLzEKcmVwYXJhYmxlLzUKcmVwYXJhdGlvbi8xTVMKcmVwYXJhdGlvbnMvMU0KcmVwYXJ0ZWUvMTRNCnJlcGF0cmlhdGUvMTRYRFNNR04KcmVwYXRyaWF0aW9uLzFNCnJlcGVhdC80MVNNRFJaR0IKcmVwZWF0YWJpbGl0eS8xCnJlcGVhdGFibGUvNVUKcmVwZWF0YWJseS8KcmVwZWF0ZWQvNDVZCnJlcGVhdGVyLzFNCnJlcGVhdGluZy80NTFNCnJlcGVsLzRTCnJlcGVsbGVkLzQKcmVwZWxsZW50LzUxU00KcmVwZWxsaW5nLzQxCnJlcGVudC80NVNERwpyZXBlbnRhbmNlLzFNCnJlcGVudGFudC81MVkKcmVwZXJjdXNzaW9uLzFTCnJlcGVydG9pcmUvMU1TCnJlcGVydG9yeS8xU00KcmVwZXRpdGlvbi8xNE1TCnJlcGV0aXRpb3VzLzVZUApyZXBldGl0aW91c25lc3MvMU0KcmVwZXRpdGl2ZS81WVAKcmVwZXRpdGl2ZW5lc3MvMU0KcmVwaG90b2dyYXBoLzRERwpyZXBsYWNlYWJsZS81MQpyZXBsYW50LzQxR1NECnJlcGxlbmlzaC80TEdEUwpyZXBsZW5pc2htZW50LzFNCnJlcGxldGUvNTE0UERTR04KcmVwbGV0ZW5lc3MvMU0KcmVwbGV0aW9uLzFNCnJlcGxpY2EvMVNNCnJlcGxpY2F0ZS80MTVEU0dOWApyZXBsaWNhdGlvbi8xTQpyZXBsaWNhdG9yLzFTCnJlcG9ydGFnZS8xTQpyZXBvcnRlZC80WQpyZXBvcnRvcmlhbC81CnJlcG9zZWZ1bC81CnJlcG9zaXRpb24vNDEKcmVwb3NpdG9yeS8xU00KcmVwby8xNFNNCnJlcHJlaGVuZC80REdTCnJlcHJlaGVuc2liaWxpdHkvMU0KcmVwcmVoZW5zaWJsZS81MQpyZXByZWhlbnNpYmx5LwpyZXByZWhlbnNpb24vMU0KcmVwcmVzZW50LzRHRFMKcmVwcmVzZW50YXRpb25hbC81CnJlcHJlc2VudGF0aXZlLzUxTVMKcmVwcmVzZW50ZWQvNFUKcmVwcmVzc2lvbi8xTVMKcmVwcmVzc2l2ZS81UFkKcmVwcmlldmUvNDFEU01HCnJlcHJpbWFuZC8xNEdTTUQKcmVwcmlzYWwvMVNNCnJlcHJpc2UvMTRTTUcKcmVwcm9hY2gvMTRHTURTQgpyZXByb2FjaGZ1bC81WQpyZXByb2JhdGUvNTE0TVMKcmVwcm9kdWN0aXZlLzUxCnJlcHJvZ3JhbW1pbmcvNDEKcmVwcm92aW5nLzQ1MVkKcmVwdGlsZS8xNVNNCnJlcHRpbGlhbi81MU1TCnJlcHVibGljLzFTCnJlcHVibGljYW5pc20vMU0KcmVwdWRpYXRlLzRYR05EUwpyZXB1ZGlhdGlvbi8xTQpyZXB1ZGlhdG9yLzFNUwpyZXB1Z25hbmNlLzFNCnJlcHVnbmFudC81CnJlcHVsc2lvbi8xTQpyZXB1bHNpdmUvNVlQCnJlcHVsc2l2ZW5lc3MvMU0KcmVwdXJjaGFzZS80MUdEUwpyZXB1dGFiaWxpdHkvMU0KcmVwdXRhYmx5L0UKcmVwdXRhdGlvbi8xTVMKcmVwdXRlLzE0RFNNR0IKcmVwdXRlZC80NVkKcmVxdWVzdC80MUdEUgpyZXF1aWVtLzFTTQpyZXF1aXJlLzRMREcKcmVxdWlyZW1lbnQvMU1TCnJlcXVpc2l0ZS81MVhNTlMKcmVxdWlzaXRpb24vMTRHTUQKcmVxdWl0YWwvMU0KcmVxdWl0ZS80MURSU1pHCnJlcXVpdGVkLzRVCnJlcXVpdGVyLzFNCnJlcmVhZC80MVNHCnJlcmVjb3JkLzE0R0RTCnJlcnVubmluZy80CnJlc2FtcGxlLzRHRFMKcmVzYXQvNApyZXNjaW5kLzRTREcKcmVzY2lzc2lvbi8xTQpyZXNjdWUvNDFEUlNNWkcKcmVzY3Vlci8xTQpyZXNlYWwvNEIKcmVzZW1ibGUvNERTRwpyZXNlbmQvNDEKcmVzZW50LzRMU0RHCnJlc2VudGZ1bC81WVAKcmVzZW50ZnVsbmVzcy8xTQpyZXNlbnRtZW50LzFNUwpyZXNlcnBpbmUvMU0KcmVzZXJ2YXRpb24vMU1TCnJlc2VydmVkLzQ1VVkKcmVzZXJ2ZWRuZXNzLzFNCnJlc2VydmlzdC8xU00KcmVzZXJ2b2lyLzE0U00KcmVzZXR0aW5nLzQxCnJlc2hpcHBpbmcvNDEKcmVzaWRlbmNlLzFTTQpyZXNpZGVuY3kvMVNNCnJlc2lkZW50LzE1TVMKcmVzaWRlbnRpYWwvNTEKcmVzaWR1YS8xCnJlc2lkdWFsLzUxTVMKcmVzaWR1ZS8xU00KcmVzaWR1dW0vMU0KcmVzaWduYXRpb24vMVNNCnJlc2lnbmVkLzU0WQpyZXNpbGllbmNlLzFNCnJlc2lsaWVuY3kvMU0KcmVzaWxpZW50LzVZCnJlc2lub3VzLzUKcmVzaXN0LzQxU01EUlpHCnJlc2lzdGFuY2UvMVNNCnJlc2lzdGFudC8xNVUKcmVzaXN0aWJsZS81CnJlc2lzdGl2aXR5LzEKcmVzaXN0bGVzcy81CnJlc2lzdG9yLzFNUwpyZXNpdC80MVMKcmVzaXR0aW5nLzE0CnJlc29sZC80CnJlc29sZS80RFNHCnJlc29sdXRlLzUxUFkKcmVzb2x1dGVuZXNzLzFNCnJlc29sdmUvNDFSQk0KcmVzb2x2ZWQvNDVVCnJlc29uYW5jZS8xU00KcmVzb25hbnQvNTFZCnJlc29uYXRlLzRHRFMKcmVzb25hdG9yLzFTTQpyZXNvcnB0aW9uLzFNCnJlc291bmQvNDFTR0QKcmVzb3VuZGluZy81MTRZCnJlc291cmNlZnVsLzVZUApyZXNvdXJjZWZ1bG5lc3MvMU0KcmVzcC81MTQKcmVzcGVjdC8xNEVTR1ZNRApyZXNwZWN0YWJpbGl0eS8xTQpyZXNwZWN0YWJsZS81MQpyZXNwZWN0YWJseS8KcmVzcGVjdGZ1bC81RVkKcmVzcGVjdGZ1bG5lc3MvMU0KcmVzcGVjdGl2ZS81WQpyZXNwZWxsLzRTR0QKcmVzcGlyYXRpb24vMU0KcmVzcGlyYXRvci8xU00KcmVzcGlyYXRvcnkvNQpyZXNwaXJlLzQxREcKcmVzcGxlbmRlbmNlLzFNCnJlc3BsZW5kZW50LzVZCnJlc3BvbmQvNDFTR0QKcmVzcG9uZGVudC8xNVNNCnJlc3BvbnNlLzFNUwpyZXNwb25zaWJpbGl0eS8xU00KcmVzcG9uc2libGUvNTEKcmVzcG9uc2libHkvCnJlc3BvbnNpdmUvNVVZUApyZXNwb25zaXZlbmVzcy8xVU0KcmVzdC8xNEdWTURTCnJlc3RhdGUvNEdEUwpyZXN0YXVyYW50LzFTTQpyZXN0YXVyYXRldXIvMU1TCnJlc3RmdWwvNVlQCnJlc3RmdWxsZXIvNQpyZXN0ZnVsbGVzdC81CnJlc3RmdWxuZXNzLzFNCnJlc3RpdHV0aW9uLzFNCnJlc3RpdmUvNVlQCnJlc3RpdmVuZXNzLzFNCnJlc3RsZXNzLzVQWQpyZXN0bGVzc25lc3MvMU0KcmVzdG9yYXRpb24vMVNNCnJlc3RvcmF0aXZlLzUxU00KcmVzdG9yZXIvMVNNCnJlc3RyYWluZWQvNTRVCnJlc3RyYWludC8xTVMKcmVzdHJpY3QvNDVTREdWCnJlc3RyaWN0ZWQvNDVVCnJlc3RyaWN0aW9uLzFNUwpyZXN0cmljdGl2ZS81MVlQCnJlc3RyaWN0aXZlbmVzcy8xTQpyZXN0cmluZy80U0cKcmVzdHJvb20vMVNNCnJlc3RydWN0dXJpbmcvNDFTTQpyZXN1bHQvNDFHU01ECnJlc3VsdGFudC81MVNNCnJlc3VtZS80MURTTUcKcmVzdW1wdGlvbi8xTVMKcmVzdXBwbHkvNDFEU0cKcmVzdXJnZW5jZS8xTVMKcmVzdXJnZW50LzUxCnJlc3VycmVjdC80R1NECnJlc3VycmVjdGlvbi8xTVMKcmVzdXNjaXRhdGUvNDVHTkRTCnJlc3VzY2l0YXRpb24vMU0KcmVzdXNjaXRhdG9yLzFTTQpyZXRhaWxlci8xTVMKcmV0YWluLzQxU0RSWkcKcmV0YWluZXIvMU0KcmV0YWtlLzQxRwpyZXRhbGlhdGUvNERTR05WWApyZXRhbGlhdGlvbi8xTQpyZXRhbGlhdG9yeS81CnJldGFyZC8xNFNNRFJaRwpyZXRhcmRhbnQvNTFTTQpyZXRhcmRhdGlvbi8xTQpyZXRhcmRlci8xTQpyZXRjaC80MURTRwpyZXRlYWNoLzRHUwpyZXRlbnRpb24vMU0KcmV0ZW50aXZlLzUxWVAKcmV0ZW50aXZlbmVzcy8xTQpyZXRoaW5rLzQxU0dNCnJldGhvdWdodC80CnJldGljZW5jZS8xNE0KcmV0aWNlbnQvNVkKcmV0aWN1bGF0ZWQvNQpyZXRpY3VsYXRpb24vMU1TCnJldGljdWx1bS8xCnJldGluYS8xU00KcmV0aW5hbC81MQpyZXRpbm9ibGFzdG9tYS8xCnJldGludWUvMVNNCnJldGlyZWUvMVNNCnJldGlyZW1lbnQvMU1TCnJldG9ydC8xNEdNRApyZXRyYWNlLzQxR0RTCnJldHJhY3QvNDFEQkcKcmV0cmFjdGlsZS81CnJldHJhY3Rpb24vMVMKcmV0cmFpbi80MURHUwpyZXRyZWFkLzQxRApyZXRyZW5jaG1lbnQvMU1TCnJldHJpYnV0aW9uLzFNUwpyZXRyaWJ1dGl2ZS81CnJldHJpZXZhbC8xU00KcmV0cmlldmUvNDFEUlNNWkdCCnJldHJpZXZlci8xTQpyZXRyby81MU1TCnJldHJvYWN0aXZlLzVZCnJldHJvZmlyZS8xNDVHRFMKcmV0cm9maXQvNDFTTQpyZXRyb2ZpdHRlZC80NQpyZXRyb2ZpdHRpbmcvNDEKcmV0cm9ncmFkZS81MTREU0cKcmV0cm9ncmVzcy80MUdWRFMKcmV0cm9ncmVzc2lvbi8xTQpyZXRyb3JvY2tldC8xTVMKcmV0cm9zcGVjdC8xNE1EU0dWCnJldHJvc3BlY3Rpb24vMU0KcmV0cm9zcGVjdGl2ZS81MU1ZUwpyZXRyb3ZpcnVzLzFNUwpyZXRzaW5hLzFNCnJldHVybmFibGUvNTFTTQpyZXR1cm5lZS8xU00KcmV2LzQxWlZNCnJldmFtcGluZy8xNE0KcmV2ZWFsLzE0R0pTRApyZXZlYWxlZC81NFUKcmV2ZWFsaW5nLzU0MVkKcmV2ZWlsbGUvMU0KcmV2ZWwvMTRKTURSU1pHCnJldmVsYXRpb24vMVNNCnJldmVsYXRvcnkvNQpyZXZlbGVyLzFNCnJldmVscnkvMVNNCnJldmVuZ2UvMTRNR0RTCnJldmVudWVyLzFTTQpyZXZlcmIvMTQKcmV2ZXJiZXJhdGUvNDVEU0dOWApyZXZlcmJlcmF0aW9uLzFNCnJldmVyZS80MURTRwpyZXZlcmVuY2UvMTREU01HCnJldmVyZW5kLzUxU00KcmV2ZXJlbnQvNVkKcmV2ZXJlbnRpYWwvNVkKcmV2ZXJpZS8xNE1TCnJldmVycy8xTQpyZXZlcnNhbC8xNVNNCnJldmVyc2UvNTE0WQpyZXZlcnNpYmlsaXR5LzEKcmV2ZXJzaWJsZS81MQpyZXZlcnNpYmx5LwpyZXZlcnQvMTRHU0QKcmV2ZXJ0aWJsZS81CnJldmV0bWVudC8xU00KcmV2aWxlLzQxRFJTTFpHCnJldmlsZW1lbnQvMU0KcmV2aWxlci8xTQpyZXZpc2VyLzFNUwpyZXZpc2lvbi8xNFNNCnJldmlzaW9uaXNtLzFNCnJldmlzaW9uaXN0LzUxU00KcmV2aXZhbC8xTVMKcmV2aXZhbGlzbS8xTQpyZXZpdmFsaXN0LzE1U00KcmV2aXZlLzREU0cKcmV2aXZpZmljYXRpb24vMU0KcmV2b2NhYmxlLzUKcmV2b2tlLzQxRFNHCnJldm9sdC80MUdECnJldm9sdGluZy80MTVZCnJldm9sdXRpb24vMVNNCnJldm9sdXRpb25hcnkvNTFTTQpyZXZvbHV0aW9uaXN0LzFTTQpyZXZvbHV0aW9uaXplLzREU0cKcmV2b2x2ZS80MUJaR0RSUwpyZXZvbHZlci8xTQpyZXZ1ZS8xTVMKcmV2dWxzaW9uLzFNCnJldnZlZC80CnJldnZpbmcvNDEKcmV3YXJkZWQvNFUKcmV3YXJkaW5nLzU0VQpyZXdhcm0vNEdTRApyZXdhc2gvMTRHRFMKcmV3ZWF2ZS80R1MKcmV3ZWRkaW5nLzQKcmV3aW5kLzQxTUIKcmV3b3VuZC80CnJld3JpdGUvMTRNR1MKcmhhcHNvZGljLzUKcmhhcHNvZGljYWwvNQpyaGFwc29kaXplLzRHRFMKcmhhcHNvZHkvMTRTTQpyaGVhLzFNUwpyaGVuaXVtLzFNCnJoZW9zdGF0LzFTTQpyaGVzdXMvMU1TCnJoZXRvcmljLzUxTQpyaGV0b3JpY2FsLzUxWQpyaGV0b3JpY2lhbi8xU00KcmhldW0vMU0KcmhldW1hdGljLzUxTVMKcmhldW1hdGljYWxseS8KcmhldW1hdGlzbS8xTQpyaGV1bWF0b2lkLzUxCnJoZXVteS81CnJoaW5lc3RvbmUvMTU0U00Kcmhpbml0aXMvMU0Kcmhpbm8vMU1TCnJoaW5vY2Vyb3MvMU1TCnJoaW5vcGxhc3R5LzEKcmhpbm92aXJ1cy8xTVMKcmhpem9tZS8xTVMKcmhvLzFTTQpyaG9kaXVtLzFNCnJob2RvZGVuZHJvbi8xU00KcmhvbWJvaWQvMTVTTQpyaG9tYm9pZGFsLzUKcmhvbWJ1cy8xTVMKcmh1YmFyYi8xNTRNUwpyaHltZS8xNE1aR0RSUwpyaHltZXIvMU0Kcmh5bWVzdGVyLzFNUwpyaHl0aG0vMTRTTQpyaHl0aG1pYy81CnJoeXRobWljYWwvNVkKcmlhbC8xTVMKcmliLzE0U00KcmliYWxkLzUxCnJpYmFsZHJ5LzFNCnJpYmJlZC81NApyaWJiZXIvMVNNCnJpYmJpbmcvNDEKcmliYm9uLzE0U00Kcmlib2ZsYXZpbi8xTQpyaWNlLzE0TVpHRFJTCnJpY2VyLzFNCnJpY2gvNTE0VE1SU1lQCnJpY2huZXNzLzFNCnJpY2svMTRHTURTCnJpY2tldHMvMTRNCnJpY2tldHkvNVJUCnJpY2tyYWNrLzFNCnJpY2tzaGF3LzE0TVMKcmljb2NoZXQvMTRHTURTCnJpY290dGEvMU0KcmlkLzU0UwpyaWRkYW5jZS8xTQpyaWRkZW4vNDUKcmlkZGluZy80CnJpZGRsZS8xNERTTUcKcmlkZS80MU1aR1JTCnJpZGVyLzFNCnJpZGVybGVzcy81CnJpZGVyc2hpcC8xTQpyaWRnZS8xNE1HRFMKcmlkZ2Vwb2xlLzFTTQpyaWRneS81CnJpZGljdWxlLzQxNU1HRFMKcmlkaWN1bG91cy81WVAKcmlkaWN1bG91c25lc3MvMU0KcmlkaW5nLzQxTQpyaWZlLzVUUgpyaWZmLzE0R01EUwpyaWZmbGUvMTREU01HCnJpZmZyYWZmLzFNCnJpZmxlLzE0TVpHRFJTCnJpZmxlbWFuLzFNCnJpZmxlbWVuLzEKcmlmbGVyLzFNCnJpZmxpbmcvMTRNCnJpZnQvMTRHTURTCnJpZy8xNFNNCnJpZ2F0b25pLzFNCnJpZ2dlZC81NApyaWdnZXIvMVNNCnJpZ2dpbmcvMTRNCnJpZ2h0LzUxNE1EUllTUFRHCnJpZ2h0ZW91cy81NFVQCnJpZ2h0ZW91c2x5LwpyaWdodGVvdXNuZXNzLzFVTQpyaWdodGZ1bC81UFkKcmlnaHRmdWxuZXNzLzFNCnJpZ2h0aXNtLzFNCnJpZ2h0aXN0LzE1U00KcmlnaHRtb3N0LzUKcmlnaHRuZXNzLzFNCnJpZ2h0by8KcmlnaHRzaXplLzREU0cKcmlnaHR3YXJkLzVTCnJpZ2lkLzUxWVAKcmlnaWRpdHkvMU0KcmlnaWRuZXNzLzFNCnJpZ21hcm9sZS8xNU1TCnJpZ29yLzFNUwpyaWdvcm91cy81WVAKcmlnb3JvdXNuZXNzLzFNCnJpbGUvNEdEUwpyaWxsLzE0TVMKcmltLzE0U0dNRApyaW1lLzE0TVMKcmltbGVzcy81CnJpbW1lZC81NApyaW1taW5nLzQxCnJpbmQvMTRNUwpyaW5nLzE0WkdNRFJKCnJpbmdlci8xTQpyaW5nZ2l0LzFNUwpyaW5nbGVhZGVyLzFNUwpyaW5nbGV0LzE0TVMKcmluZ2xpa2UvNQpyaW5nbWFzdGVyLzE0TVMKcmluZ3NpZGUvNTFNCnJpbmd0b25lLzE0U00KcmluZ3dvcm0vMU0Kcmluay8xTVMKcmluc2UvNDFNR0RTCnJpb3QvMTRaR01EUlMKcmlvdGVyLzFNCnJpb3RpbmcvNDFNCnJpb3RvdXMvNVBZCnJpcC80MVNYVE1OUgpyaXBhcmlhbi81MQpyaXBjb3JkLzFNUwpyaXBlLzUxNFlQCnJpcGVuLzRERwpyaXBlbmVkLzRVCnJpcGVuZXNzLzFNCnJpcG9mZi8xU00Kcmlwb3N0ZS8xNE1HRFMKcmlwcGVkLzQ1CnJpcHBlci8xNVNNCnJpcHBpbmcvNDUxCnJpcHBsZS8xNERTTUcKcmlwcGx5LzUKcmlwc2F3LzE0U00KcmlwdGlkZS8xTVMKcmlzZS80MUpNWkdSUwpyaXNlbi80NQpyaXNlci8xTQpyaXNpYmlsaXR5LzFNCnJpc2libGUvNQpyaXNpbmcvNDE1K00Kcmlzay8xNEdNRFMKcmlza2lseS8Kcmlza2luZXNzLzFNCnJpc2t5LzVSUFQKcmlzb3R0by8xTVMKcmlzcXVlLzUxNApyaXNzb2xlLzE0UwpyaXRlLzE1TVMKcml0dWFsLzUxU01ZCnJpdHVhbGlzbS8xTQpyaXR1YWxpc3RpYy81CnJpdHVhbGlzdGljYWxseS8Kcml0dWFsaXplZC80NQpyaXR6eS81UlQKcml2L1pOUgpyaXZhbC8xNTRNRFNHCnJpdmFsZWQvNFUKcml2YWxyeS8xU00Kcml2ZS80MUNHRFMKcml2ZXIvMTRNCnJpdmVyYmFuay8xU00Kcml2ZXJiZWQvMU1TCnJpdmVyYm9hdC8xU00Kcml2ZXJmcm9udC8xCnJpdmVyc2lkZS8xNU1TCnJpdmV0LzE0TURSU1pHCnJpdmV0ZXIvMU0Kcml2aWVyYS8xUwpyaXZ1bGV0LzFNUwpyaXlhbC8xTVMKcm0vMTQKcm9hY2gvMTRHTURTCnJvYWQvMTVJTVMKcm9hZGJlZC8xU00Kcm9hZGJsb2NrLzE0TURTRwpyb2FkaG91c2UvMVNNCnJvYWRpZS8xNE1TCnJvYWRraWxsLzFNCnJvYWRydW5uZXIvMVNNCnJvYWRzaG93LzE0U00Kcm9hZHNpZGUvNTFTTQpyb2Fkc3Rlci8xU00Kcm9hZHdheS8xU00Kcm9hZHdvcmsvMVNNCnJvYWR3b3J0aHkvNQpyb2FtLzQxWkdEUlMKcm9hbWVyLzFNCnJvYW1pbmcvNDFNCnJvYW4vNTFNUwpyb2FyLzQxWkdNRFJTCnJvYXJlci8xTQpyb2FyaW5nLzU0MU0Kcm9hc3QvNDE1WkdNRFJTSgpyb2FzdGVyLzFNCnJvYXN0aW5nLzQ1MU0Kcm9iLzQxUwpyb2JiZWQvNApyb2JiZXIvMU1TCnJvYmJlcnkvMVNNCnJvYmJpbmcvNDEKcm9iZSdzCnJvYmUvMTRFR0RTCnJvYmluLzFNUwpyb2JvY2FsbC8xNFNHTUQKcm9ib3QvMU1TCnJvYm90aWMvNVMKcm9ib3RpY3MvMU0Kcm9ib3RpemUvNEdEUwpyb2J1c3QvNVJZUFQKcm9idXN0bmVzcy8xTQpyb2NrLzE0WkdNRFJTCnJvY2thYmlsbHkvMU0Kcm9ja2JvdW5kLzUKcm9ja2VyLzFNCnJvY2tlcnkvMVMKcm9ja2V0LzE0TURTRwpyb2NrZXRyeS8xTQpyb2NrZmFsbC8xU00Kcm9ja2luZXNzLzFNCnJvY2t5LzVUUlAKcm9jb2NvLzE1TQpyb2QvMTRTTQpyb2RlLzQxCnJvZGVudC8xNU1TCnJvZGVvLzE0TVMKcm9lLzFTTQpyb2VidWNrLzFTTQpyb2VudGdlbi8xTVMKcm9nZXIvNDFHRFMKcm9ndWUncwpyb2d1ZS8xNTRLUwpyb2d1ZXJ5LzFNCnJvZ3Vpc2gvNVlQCnJvZ3Vpc2huZXNzLzFNCnJvaWwvNEdEUwpyb2lzdGVyLzQxWkdEUlMKcm9pc3RlcmVyLzFNCnJvbGUvMU1TCnJvbGwvNDFNRFJaR0pTCnJvbGxiYWNrLzE0U00Kcm9sbGVyLzE0TQpyb2xsZXJibGFkaW5nLzE0CnJvbGxlcnNrYXRpbmcvMTRNCnJvbGxpY2svNFNERwpyb2xsaWNraW5nLzQxNU0Kcm9sbG1vcC8xUwpyb2xsb3Zlci8xNFNNCnJvbWFpbmUvMU1TCnJvbWFuLzUxTQpyb21hbmNlLzE0TVpHRFJTCnJvbWFuY2VyLzFNCnJvbWFudGljLzUxTVMKcm9tYW50aWNhbGx5Lwpyb21hbnRpY2lzbS8xTQpyb21hbnRpY2lzdC8xU00Kcm9tYW50aWNpemUvNERTRwpyb21lby8xTVMKcm9tcC80MU1EUlpHUwpyb21wZXIvMTRNCnJvbmRvLzFTTQpyb29kLzFNUwpyb29mLzE0TURSWkdTCnJvb2Zlci8xTQpyb29maW5nLzE0TQpyb29mbGVzcy81CnJvb2Z0b3AvMVNNCnJvb2svMTRNREdTCnJvb2tlcnkvMVNNCnJvb2tpZS8xNTRTTQpyb29tLzE0NU1EUlpHUwpyb29tZXIvMU0Kcm9vbWV0dGUvMVNNCnJvb21mdWwvMTVTTQpyb29taW5lc3MvMU0Kcm9vbW1hdGUvMVNNCnJvb215LzUxUlRQCnJvb3N0LzE0U01EUlpHCnJvb3N0ZXIvMU0Kcm9vdC8xNE1EUlpHUwpyb290ZXIvMU0Kcm9vdGtpdC8xNFNNCnJvb3RsZXNzLzVQCnJvb3RsZXQvMVNNCnJvcGUvMTRNWkdEUlMKcm9wZXIvMU0Kcm9weS81UlQKcm9zYXJ5LzFTTQpyb3NlLzE0NU1TCnJvc2VhdGUvNQpyb3NlYnVkLzFTTQpyb3NlYnVzaC8xTVMKcm9zZW1hcnkvMU0Kcm9zZXR0ZS8xU00Kcm9zZXdhdGVyLzFNCnJvc2V3b29kLzFNUwpyb3NpbHkvCnJvc2luLzE0U01ERwpyb3NpbmVzcy8xTQpyb3N0ZXIvMTRTTQpyb3N0cnVtLzFNUwpyb3N5LzU0MVJUUApyb3QvNDFTTQpyb3RhLzFTCnJvdGFyeS81MVNNCnJvdGF0ZS80NURTR05YCnJvdGF0aW9uLzFNCnJvdGF0aW9uYWwvNTEKcm90YXRvcnkvNQpyb3RlLzE1NE0Kcm90Z3V0LzFNCnJvdGlzc2VyaWUvMTRTTQpyb3RvZ3JhdnVyZS8xTVMKcm90b3IvMVNNCnJvdG90aWxsZXIvMU1TCnJvdHRlZC81NApyb3R0ZW4vNVRQUlkKcm90dGVubmVzcy8xTQpyb3R0ZXIvMVMKcm90dGluZy80MQpyb3R0d2VpbGVyLzFTCnJvdHVuZC81UApyb3R1bmRhLzFNUwpyb3R1bmRpdHkvMU0Kcm90dW5kbmVzcy8xTQpyb3VlLzFNUwpyb3VnZS81MTREU01HCnJvdWdoLzUxNE1ETlJZWFRHUApyb3VnaGFnZS8xTQpyb3VnaGNhc3QvMTQ1CnJvdWdoZW4vNEdECnJvdWdoaG91c2UvMTRNR0RTCnJvdWdobmVjay8xNEdNRFMKcm91Z2huZXNzLzFNCnJvdWdocy8xNApyb3VnaHNob2QvNQpyb3VsZXR0ZS8xNE0Kcm91bmQvNTErNFBTTURSWVpURwpyb3VuZGFib3V0LzUxNFNNCnJvdW5kZWwvMVMKcm91bmRlbGF5LzFNUwpyb3VuZGhvdXNlLzE0U00Kcm91bmRpc2gvNQpyb3VuZG5lc3MvMU0Kcm91bmR1cC8xTVMKcm91bmR3b3JtLzFTTQpyb3VzZS8xNERTRwpyb3VzdC80MVNERwpyb3VzdGFib3V0LzE0U00Kcm91dC8xNE1SWlMKcm91dGUncwpyb3V0ZS8xNEFEU0cKcm91dGVpbmcvNDEKcm91dGVyLzE0TQpyb3V0aW5lLzE1TVlTCnJvdXRpbml6ZS80R0RTCnJvdXgvMQpyb3ZlLzQxWkdEUlMKcm92ZXIvMU0Kcm93LzE0U1pHTURSCnJvd2FuLzFTCnJvd2JvYXQvMTRNUwpyb3dkaWx5Lwpyb3dkaW5lc3MvMU0Kcm93ZHkvNTFQUlNNVApyb3dkeWlzbS8xTQpyb3dlbC8xNFNNREcKcm93ZXIvMU0Kcm93aW5nLzQxTQpyb3dsb2NrLzFTCnJveWFsLzUxU01ZCnJveWFsaXN0LzUxU00Kcm95YWx0aWVzLzFNCnJveWFsdHkvMVNNCnJwbS8xMgpycHMKcnQvNTEKcnRlCnJ1Yi8xNFNNCnJ1YmF0by8xU00KcnViYmVkLzQ1CnJ1YmJlci8xNTRTTQpydWJiZXJpemUvNEdEUwpydWJiZXJuZWNrLzE0TURSU1pHCnJ1YmJlcm5lY2tlci8xTQpydWJiZXJ5LzUKcnViYmluZy8xNFMKcnViYmlzaC8xNTRNRFNHCnJ1YmJpc2h5LzUKcnViYmxlLzFNCnJ1YmRvd24vMVNNCnJ1YmUvMU1TCnJ1YmVsbGEvMU0KcnViaWN1bmQvNQpydWJpZGl1bS8xTQpydWJsZS8xU00KcnVicmljLzE1NFNNCnJ1YnkvMTU0UlNNVApydWNoZWQvNTQKcnVjay8xNERHUwpydWNrc2Fjay8xTVMKcnVja3VzLzFNUwpydWN0aW9ucy8xCnJ1ZGRlci8xU00KcnVkZGVybGVzcy81CnJ1ZGRpbmVzcy8xTQpydWRkeS81MTRSVFAKcnVkZS81WVRSUApydWRlbmVzcy8xTQpydWRpbWVudC8xNFNNCnJ1ZGltZW50YXJ5LzUxCnJ1ZS8xNERTTUcKcnVlZnVsLzVQWQpydWVmdWxuZXNzLzFNCnJ1ZmYvMTQ1TURZR1MKcnVmZmlhbi8xNDVNWVMKcnVmZmxlLzE0RFNNRwpydWZmbGVkLzQ1VQpydWcvMTQ1U00KcnVnYnkvMTRNCnJ1Z2dlZC81NFBUUlkKcnVnZ2VkbmVzcy8xTQpydWdnZXIvMQpydWdyYXQvMVNNCnJ1aW4vMTRNREdTCnJ1aW5hdGlvbi8xTQpydWlub3VzLzVZCnJ1bGUvMTRNWkdKRFJTCnJ1bGVyLzE0TQpydWxpbmcvNTE0TQpydW0vMTVTTQpydW1iYS8xNFNNREcKcnVtYmxlLzE0RFNKTUcKcnVtYmxpbmcvNTE0TQpydW1idXN0aW91cy81CnJ1bWluYW50LzUxTVMKcnVtaW5hdGUvNDVYR05WRFMKcnVtaW5hdGlvbi8xTQpydW1pbmF0aXZlLzVZCnJ1bW1hZ2UvNDFEU01HCnJ1bW1lci8xNQpydW1tZXN0LzUKcnVtbXkvMTVNCnJ1bW9yLzE0U01ERwpydW1vcm1vbmdlci8xNFNNCnJ1bXAvMTRNWVMKcnVtcGxlLzQxRFNNRwpydW1wdXMvMU1TCnJ1bi80MTVBU00KcnVuYWJvdXQvMU1TCnJ1bmFyb3VuZC8xU00KcnVuYXdheS8xNU1TCnJ1bmRvd24vMTVTTQpydW5lLzFNUwpydW5nLzE0NU1TCnJ1bmljLzUKcnVubGV0LzFTTQpydW5uZWwvMTRTTQpydW5uZXIvMVNNCnJ1bm5pbmcvNDUxK00KcnVubnkvNVJUCnJ1bm9mZi8xU00KcnVudC8xTVMKcnVudGltZS81MQpydW50eS81UlQKcnVud2F5LzFTTQpydXBlZS8xU00KcnVwaWFoLzFNCnJ1cGlhaHMvMQpydXB0dXJlLzE0TUdEUwpydXJhbC81MQpydXNlLzE0TVMKcnVzaC8xNDVNRFJTWkcKcnVzaGVyLzFNCnJ1c2h5LzUKcnVzay8xTVMKcnVzc2V0LzE1NFNNCnJ1c3QvMTRNREdTCnJ1c3RpYy81MVNNCnJ1c3RpY2FsbHkvCnJ1c3RpY2F0ZS80R0RTCnJ1c3RpY2F0aW9uLzFNCnJ1c3RpY2l0eS8xTQpydXN0aW5lc3MvMU0KcnVzdGxlLzE0RFJTSk1aRwpydXN0bGVyLzFNCnJ1c3Rwcm9vZi81NFNERwpydXN0eS81MVJQTlQKcnV0LzE0U00KcnV0YWJhZ2EvMVNNCnJ1dGhlbml1bS8xTQpydXRoZXJmb3JkaXVtLzFNCnJ1dGhsZXNzLzVZUApydXRobGVzc25lc3MvMU0KcnV0dGVkLzQ1CnJ1dHRpbmcvNDEKcnV0dHkvNTFSVApyeWUvMU0Kc2FiYmF0aC8xTQpzYWJiYXRocy8xCnNhYmJhdGljYWwvNTFTTQpzYWJlci8xNE1TCnNhYmxlLzE1TVMKc2Fib3QvMTRNUwpzYWJvdGFnZS8xNERTTUcKc2Fib3RldXIvMVNNCnNhYnJhLzFNUwpzYWMvMjE0U00Kc2FjY2hhcmluLzFNCnNhY2NoYXJpbmUvNTEKc2FjZXJkb3RhbC81CnNhY2hlbS8xU00Kc2FjaGV0LzFTTQpzYWNrLzE0WkdNRFJKUwpzYWNrY2xvdGgvMU0Kc2Fja2VyLzFNCnNhY2tmdWwvMTVNUwpzYWNraW5nLzE0TQpzYWNyYS8xCnNhY3JhbWVudC8xNE1TCnNhY3JhbWVudGFsLzUxCnNhY3JlZC81NFlQCnNhY3JlZG5lc3MvMU0Kc2FjcmlmaWNlLzE0RFNNRwpzYWNyaWZpY2lhbC81WQpzYWNyaWxlZ2UvMU1TCnNhY3JpbGVnaW91cy81WQpzYWNyaXN0YW4vMU1TCnNhY3Jpc3R5LzFTTQpzYWNyb2lsaWFjLzUxTVMKc2Fjcm9zYW5jdC81UApzYWNyb3NhbmN0bmVzcy8xTQpzYWNydW0vMU0Kc2FkLzU0MVBZCnNhZGRlbi80U0RHCnNhZGRlci81CnNhZGRlc3QvNQpzYWRkbGUncwpzYWRkbGUvMTRVRFNHCnNhZGRsZWJhZy8xTVMKc2FkZGxlci8xUwpzYWRkbGVyeS8xCnNhZGVzLzE0CnNhZGh1LzFTCnNhZGlzbS8xTQpzYWRpc3QvMVNNCnNhZGlzdGljLzUKc2FkaXN0aWNhbGx5LwpzYWRuZXNzLzFNCnNhZG9tYXNvY2hpc20vMU0Kc2Fkb21hc29jaGlzdC8xNU1TCnNhZG9tYXNvY2hpc3RpYy81CnNhZmFyaS8xNFNHTUQKc2FmZS81MTRNWVRQUlMKc2FmZWd1YXJkLzE0U01ERwpzYWZla2VlcGluZy8xTQpzYWZlbmVzcy8xTQpzYWZldHkvMTRTTVkKc2FmZmxvd2VyLzFNUwpzYWZmcm9uLzE1NE1TCnNhZy8xNFNNCnNhZ2EvMU1TCnNhZ2FjaW91cy81WQpzYWdhY2l0eS8xTQpzYWdlLzUxNE1ZVFJTCnNhZ2VicnVzaC8xTQpzYWdnZWQvNDUKc2FnZ2luZy8xNTQKc2FnZ3kvNVJUCnNhZ28vMU0Kc2FndWFyby8xTVMKc2FoaWIvMU1TCnNhaWQvNDVVCnNhaWwvMTRHTURTSgpzYWlsYm9hcmQvMTRNUlpHUwpzYWlsYm9hcmRlci8xTQpzYWlsYm9hcmRpbmcvMU0Kc2FpbGJvYXQvMU1TCnNhaWxjbG90aC8xTQpzYWlsZmlzaC8xTVMKc2FpbGluZy80NTFNCnNhaWxvci8xU00Kc2FpbHBsYW5lLzE0TVMKc2FpbnQvMTRNRFlTCnNhaW50aG9vZC8xTQpzYWludGxpa2UvNQpzYWludGxpbmVzcy8xTQpzYWludGx5LzVQUlQKc2FpdGgvNDEKc2FrZS8xTQpzYWxhYW0vMTRTTURHCnNhbGFibGUvNTFVCnNhbGFjaW91cy81UFkKc2FsYWNpb3VzbmVzcy8xTQpzYWxhY2l0eS8xTQpzYWxhZC8xTVMKc2FsYW1hbmRlci8xNFNNCnNhbGFtaS8xU00Kc2FsYXJ5LzE0NURTTQpzYWxlLzFBQk1TCnNhbGVyb29tLzFTCnNhbGVzY2xlcmsvMVNNCnNhbGVzZ2lybC8xU00Kc2FsZXNsYWR5LzFTTQpzYWxlc21hbi8xTQpzYWxlc21hbnNoaXAvMU0Kc2FsZXNtZW4vMQpzYWxlc3Blb3BsZS8xTQpzYWxlc3BlcnNvbi8xTVMKc2FsZXNyb29tLzFTCnNhbGVzd29tYW4vMU0Kc2FsZXN3b21lbi8xCnNhbGllbmNlLzFNCnNhbGllbnQvNTFTTVkKc2FsaW5lLzUxU00Kc2FsaW5pdHkvMU0Kc2FsaXZhLzFNCnNhbGl2YXJ5LzUxCnNhbGl2YXRlLzRHTkRTCnNhbGl2YXRpb24vMU0Kc2FsbG93LzU0MVJUUApzYWxsb3duZXNzLzFNCnNhbGx5LzE0RFNNRwpzYWxtb24vMTU0U00Kc2FsbW9uZWxsYS8xTQpzYWxtb25lbGxhZS8xCnNhbG9uLzFNUwpzYWxvb24vMVNNCnNhbHNhLzE0TVMKc2FsdCdzCnNhbHQvMTU0Q1RHRFMKc2FsdGJveC8xTVMKc2FsdGNlbGxhci8xU00Kc2FsdGVkLzU0VQpzYWx0ZXIvMQpzYWx0aW5lLzFTTQpzYWx0aW5lc3MvMU0Kc2FsdHBldGVyLzE0TQpzYWx0c2hha2VyLzFTTQpzYWx0d2F0ZXIvMTVNCnNhbHR5LzVSVFAKc2FsdWJyaW91cy81SQpzYWx1dGFyeS81CnNhbHV0YXRpb24vMU1TCnNhbHV0YXRvcmlhbi8xTVMKc2FsdXRhdG9yeS81MQpzYWx1dGUvMTREU01HCnNhbHZhZ2UvMTREU01HCnNhbHZhZ2VhYmxlLzUKc2FsdmF0aW9uLzE0TQpzYWx2ZS8xNE1aR0RSUwpzYWx2ZXIvMU0Kc2Fsdm8vMTRNUwpzYW1hcml1bS8xTQpzYW1iYS8xNE1EU0cKc2FtZS81OFNQCnNhbWVuZXNzLzFNCnNhbWV5LzUKc2FtaXpkYXQvMVMKc2Ftb3NhLzFTCnNhbW92YXIvMVNNCnNhbXBhbi8xU00Kc2FtcGxlLzE0RFJTTVpHSgpzYW1wbGVyLzFNCnNhbXBsaW5nLzQxTQpzYW11cmFpLzFTTQpzYW5hdG9yaXVtLzFTTQpzYW5jdGlmaWNhdGlvbi8xTQpzYW5jdGlmeS80R0RTTgpzYW5jdGltb25pb3VzLzVZUApzYW5jdGltb25pb3VzbmVzcy8xTQpzYW5jdGltb255LzFNCnNhbmN0aW9uLzE0R1NNRApzYW5jdGlvbmVkLzRVCnNhbmN0aXR5LzFNCnNhbmN0dWFyeS8xU00Kc2FuY3R1bS8xU00Kc2FuZC8xNTRaR01EUlMKc2FuZGFsLzFTTQpzYW5kYWx3b29kLzFNCnNhbmRiYWcvMTRTTQpzYW5kYmFnZ2VkLzQKc2FuZGJhZ2dlci8xU00Kc2FuZGJhZ2dpbmcvNDEKc2FuZGJhbmsvMU1TCnNhbmRiYXIvMVNNCnNhbmRibGFzdC80MVpHTURSUwpzYW5kYmxhc3Rlci8xTQpzYW5kYm94LzE0TVMKc2FuZGNhc3RsZS8xTVMKc2FuZGVyLzFNCnNhbmRob2cvMTRTTQpzYW5kaW5lc3MvMU0Kc2FuZGxvdC8xU00Kc2FuZGxvdHRlci8xTVMKc2FuZG1hbi8xTQpzYW5kbWVuLzEKc2FuZHBhcGVyLzE0R01EUwpzYW5kcGlwZXIvMU1TCnNhbmRwaXQvMVMKc2FuZHN0b25lLzFNCnNhbmRzdG9ybS8xU00Kc2FuZHdpY2gvMTQ1TURTRwpzYW5keS81MVJUUApzYW5lLzVJWVRSCnNhbmVuZXNzLzFNCnNhbmcvNDFTCnNhbmdmcm9pZC8xTQpzYW5ncmlhLzFNCnNhbmd1aW5hcnkvNTEKc2FuZ3VpbmUvNTE0WQpzYW5pdGFyaWFuLzUxU00Kc2FuaXRhcml1bS8xU00Kc2FuaXRhcnkvNTFJVQpzYW5pdGF0aW9uLzFNCnNhbml0aXplLzRaR0RSUwpzYW5pdHkvMUlNCnNhbmsvNApzYW5zLys1MQpzYW5zZXJpZi8xNQpzYXAvMTRTTQpzYXBpZW5jZS8xTQpzYXBpZW5zLzEKc2FwaWVudC81MQpzYXBsZXNzLzUKc2FwbGluZy8xTVMKc2FwcGVkLzQKc2FwcGVyLzFTCnNhcHBoaXJlLzE1U00Kc2FwcGluZXNzLzFNCnNhcHBpbmcvNDEKc2FwcHkvNVBSVApzYXByb3BoeXRlLzFTTQpzYXByb3BoeXRpYy81CnNhcHN1Y2tlci8xU00Kc2Fwd29vZC8xTQpzYXJhbi8xTQpzYXJjYXNtLzFNUwpzYXJjYXN0aWMvNQpzYXJjYXN0aWNhbGx5LwpzYXJjb21hLzFNUwpzYXJjb3BoYWdpLzEKc2FyY29waGFndXMvMTRNCnNhcmRpbmUvMTQ1TVMKc2FyZG9uaWMvNQpzYXJkb25pY2FsbHkvCnNhcmdlLzE0TVMKc2FyaS8xTVMKc2Fya3kvNQpzYXJuaWUvMVMKc2Fyb25nLzFTTQpzYXJzYXBhcmlsbGEvMU1TCnNhcnRvcmlhbC81WQpzYXNoLzE0TVMKc2FzaGF5LzE0U0dNRApzYXNzLzE0R01EUwpzYXNzYWZyYXMvMU1TCnNhc3N5LzVSVApzYXQvNTQxCnNhdGFuaWMvNQpzYXRhbmljYWwvNVkKc2F0YW5pc20vMU0Kc2F0YW5pc3QvMU1TCnNhdGF5LzEKc2F0Y2hlbC8xTVMKc2F0ZS80MUdEUwpzYXRlZW4vMU0Kc2F0ZWxsaXRlLzE0RFNNRwpzYXRpYWJsZS81SQpzYXRpYXRlLzQ1R05EUwpzYXRpYXRpb24vMU0Kc2F0aWV0eS8xTQpzYXRpbi8xNTRNCnNhdGlud29vZC8xU00Kc2F0aW55LzUKc2F0aXJlLzFTTQpzYXRpcmljLzUKc2F0aXJpY2FsLzVZCnNhdGlyaXN0LzFTTQpzYXRpcml6ZS80RFNHCnNhdGlzZmFjdGlvbi8xRU0Kc2F0aXNmYWN0aW9ucy8xCnNhdGlzZmFjdG9yaWx5L1UKc2F0aXNmYWN0b3J5LzUxVQpzYXRpc2ZpZWQvNDVVCnNhdGlzZnkvNEVEU0cKc2F0aXNmeWluZy81NFUKc2F0aXNmeWluZ2x5LwpzYXRvcmkvMU0Kc2F0cmFwLzFTTQpzYXRzdW1hLzFTCnNhdHVyYXRlLzQxNURTR04Kc2F0dXJhdGVkLzQ1VQpzYXR1cmF0aW9uLzFNCnNhdHVybmluZS81CnNhdHlyLzFNUwpzYXR5cmlhc2lzLzFNCnNhdHlyaWMvNQpzYXVjZS8xNE1aR0RSUwpzYXVjZXBhbi8xNFNNCnNhdWNlci8xNE0Kc2F1Y2lseS8Kc2F1Y2luZXNzLzFNCnNhdWN5LzVSUFQKc2F1ZXJrcmF1dC8xTQpzYXVuYS8xNE1EU0cKc2F1bnRlci80MU1ER1MKc2F1cmlhbi8xNQpzYXVyb3BvZC8xU00Kc2F1c2FnZS8xNE1TCnNhdXRlLzRNUwpzYXV0ZWVkLzQKc2F1dGVpbmcvNApzYXZhZ2UvNTE0RFJTTVlUR1AKc2F2YWdlbmVzcy8xTQpzYXZhZ2VyeS8xU00Kc2F2YW5uYS8xTVMKc2F2YW50LzFTTQpzYXZlLzQxKzdCSk1aR0RSUwpzYXZlZC80NVUKc2F2ZXIvMU0Kc2F2aW5nLzE0NStNCnNhdmluZ3MvMU0Kc2F2aW9yLzFTTQpzYXZvci8xNE1EU0cKc2F2b3JpbmVzcy8xTQpzYXZvcnkvNTFQVFJTTQpzYXZveS8xTVMKc2F2dnkvNTQxRFJTTVRHCnNhdy8xNFNHTUQKc2F3Ym9uZXMvMU0Kc2F3YnVjay8xTVMKc2F3ZHVzdC8xNE0Kc2F3Zmx5LzFTTQpzYXdob3JzZS8xU00Kc2F3bWlsbC8xNE1TCnNhd3llci8xU00Kc2F4LzE0TVMKc2F4aWZyYWdlLzFTTQpzYXhvcGhvbmUvMTRNUwpzYXhvcGhvbmlzdC8xU00Kc2F5J3MKc2F5LzQxVVNHfgpzYXlpbmcvNDFTTQpzY2FiLzE0TVMKc2NhYmJhcmQvMTRNUwpzY2FiYmVkLzQ1CnNjYWJiaW5lc3MvMU0Kc2NhYmJpbmcvNApzY2FiYnkvNVBUUgpzY2FiaWVzLzFNCnNjYWJyb3VzLzUKc2NhZC8xTVMKc2NhZmZvbGQvMTRTTUcKc2NhZmZvbGRpbmcvMTRNCnNjYWcvMTRTCnNjYWdnZWQvNApzY2FsYWJpbGl0eS8xCnNjYWxhci81MVMKc2NhbGF3YWcvMU1TCnNjYWxkLzQxNU1EU0cKc2NhbGUncwpzY2FsZS8xNENHRFMKc2NhbGVsZXNzLzUKc2NhbGVuZS81MQpzY2FsaW5lc3MvMU0Kc2NhbGxpb24vMU1TCnNjYWxsb3AvMTRHU01ECnNjYWxwLzE0TURSU1pHCnNjYWxwZWwvMVNNCnNjYWxwZXIvMU0Kc2NhbHkvNTFSVFAKc2NhbS8xNE1TCnNjYW1tZWQvNApzY2FtbWVyLzFTCnNjYW1taW5nLzQKc2NhbXAvMTRNUlNaCnNjYW1wZXIvMTRHTUQKc2NhbXBpLzFNCnNjYW4vNDFNUwpzY2FuZGFsLzE0U00Kc2NhbmRhbGl6ZS80RFNHCnNjYW5kYWxtb25nZXIvMVNNCnNjYW5kYWxvdXMvNVkKc2NhbmRpdW0vMU0Kc2Nhbm5lZC81NApzY2FubmVyLzFTTQpzY2FubmluZy80MQpzY2Fuc2lvbi8xNE0Kc2NhbnQvNTQxQ0RTVEcKc2NhbnRlci81CnNjYW50aWx5LwpzY2FudGluZXNzLzFNCnNjYW50bHkvCnNjYW50bmVzcy8xTQpzY2FudHkvNVJTUFQKc2NhcGVnb2F0LzE0U0dNRApzY2FwZWdyYWNlLzFNUwpzY2FwdWxhLzFNCnNjYXB1bGFlLzEKc2NhcHVsYXIvMTVTTQpzY2FyLzE0R01EUwpzY2FyYWIvMVNNCnNjYXJjZS81UllUUApzY2FyY2VuZXNzLzFNCnNjYXJjaXR5LzFTTQpzY2FyZS8xNDVNUwpzY2FyZWNyb3cvMTRNUwpzY2FyZW1vbmdlci8xNFNNRwpzY2FyZi8xNE1EU0cKc2NhcmlmaWNhdGlvbi8xTQpzY2FyaWZ5LzRORFNHCnNjYXJpbHkvCnNjYXJpbmVzcy8xTQpzY2FybGF0aW5hLzFNCnNjYXJsZXQvMTU0TQpzY2FycC8xNE1EUlNaRwpzY2FycGVyLzRERwpzY2FycmVkLzQ1CnNjYXJyaW5nLzQxCnNjYXJ2ZXMvMQpzY2FyeS81MVJUUApzY2F0LzE0TVMKc2NhdGhpbmcvNDVZCnNjYXRvbG9naWNhbC81CnNjYXRvbG9neS8xTQpzY2F0dGVkLzQKc2NhdHRlci80MUdKU01ECnNjYXR0ZXJicmFpbi8xU01ECnNjYXR0ZXJpbmcvNDFNCnNjYXR0ZXJzaG90LzUKc2NhdHRpbmcvNDEKc2NhdHR5LzUxCnNjYXZlbmdlLzRaR0RSUwpzY2F2ZW5nZXIvMTRNCnNjZW5hcmlvLzFNUwpzY2VuYXJpc3QvMU1TCnNjZW5lLzE0TVMKc2NlbmVyeS8xTQpzY2VuaWMvNTEKc2NlbmljYWxseS8Kc2NlbnQvMTRDTVMKc2NlbnRlZC81NFUKc2NlbnRpbmcvNDEKc2NlbnRsZXNzLzUKc2NlcHRlci8xNE1TCnNjaC8xCnNjaGFkZW5mcmV1ZGUvMQpzY2hlZHVsZSdzCnNjaGVkdWxlLzE0QURTRwpzY2hlZHVsZWQvNDUxVQpzY2hlZHVsZXIvMVMKc2NoZW1hLzEKc2NoZW1hdGEvMQpzY2hlbWF0aWMvNTFTTQpzY2hlbWF0aWNhbGx5LwpzY2hlbWF0aXplLzRHRFMKc2NoZW1lLzE0RFJTTVpHCnNjaGVtZXIvMU0Kc2NoZXJ6by8xTVMKc2NoaWxsaW5nLzFNUwpzY2hpc20vMVNNCnNjaGlzbWF0aWMvNTFTTQpzY2hpc3QvMU0Kc2NoaXN0b3NvbWlhc2lzLzEKc2NoaXpvLzFTTQpzY2hpem9pZC81MU1TCnNjaGl6b3BocmVuaWEvMU0Kc2NoaXpvcGhyZW5pYy81MVNNCnNjaGxlbWllbC8xU00Kc2NobGVwLzQxU00Kc2NobGVwcGVkLzQKc2NobGVwcGluZy80CnNjaGxvY2svMU0Kc2NobWFsdHovMU0Kc2NobWFsdHp5LzVUUgpzY2htby8xTQpzY2htb2VzLzEKc2NobW9vemUvNDFEUlNaRwpzY2htdWNrLzE0TVMKc2NobmFwcHMvMU0Kc2NobmF1emVyLzFTTQpzY2huaXR6ZWwvMVNNCnNjaG5vb2svMU1TCnNjaG5vei8xTVMKc2Nobm96emxlLzFTTQpzY2hvbGFyLzFNWVMKc2Nob2xhcnNoaXAvMTRNUwpzY2hvbGFzdGljLzE1CnNjaG9sYXN0aWNhbGx5LwpzY2hvbGFzdGljaXNtLzEKc2Nob29sLzE0U0dNRApzY2hvb2xiYWcvMU1TCnNjaG9vbGJvb2svMVNNCnNjaG9vbGJveS8xNU1TCnNjaG9vbGNoaWxkLzFNCnNjaG9vbGNoaWxkcmVuLzFNCnNjaG9vbGRheXMvMQpzY2hvb2xlZC80VQpzY2hvb2xmZWxsb3cvMVNNCnNjaG9vbGdpcmwvMTRTTQpzY2hvb2xob3VzZS8xU00Kc2Nob29saW5nLzE0TQpzY2hvb2xraWQvMVMKc2Nob29sbWFybS8xNFNNCnNjaG9vbG1hcm1pc2gvNQpzY2hvb2xtYXN0ZXIvMTRNUwpzY2hvb2xtYXRlLzFTTQpzY2hvb2xtaXN0cmVzcy8xTVMKc2Nob29scm9vbS8xU00Kc2Nob29sdGVhY2hlci8xTVMKc2Nob29sd29yay8xTQpzY2hvb2x5YXJkLzFTTQpzY2hvb25lci8xU00Kc2NodXNzLzE0R01EUwpzY2h1c3Nib29tZXIvMU1TCnNjaHdhLzE0TVMKc2NpLzEKc2NpYXRpYy81MQpzY2lhdGljYS8xTQpzY2llbmNlLzE0Rk1TCnNjaWVudGlmaWMvNVUKc2NpZW50aWZpY2FsbHkvVQpzY2llbnRpc3QvMVNNCnNjaW1pdGFyLzE0U00Kc2NpbnRpbGxhLzFNUwpzY2ludGlsbGF0ZS80RFNHTgpzY2ludGlsbGF0aW9uLzFNCnNjaW9uLzFNUwpzY2lzc29yLzE0R0RTCnNjbGVyb3Nlcy8xCnNjbGVyb3Npcy8xTQpzY2xlcm90aWMvNTEKc2NvZmYvMTRNRFJTWkcKc2NvZmZlci8xTQpzY29mZmxhdy8xTVMKc2NvbGQvMTRNRFNHSgpzY29sZGluZy8xNE0Kc2NvbGlvc2lzLzFNCnNjb25jZS8xNFNNCnNjb25lLzE0TVMKc2Nvb3AvMTRNRFNHCnNjb29wZnVsLzFNUwpzY29vdC8xNERSU1pHCnNjb290ZXIvMTRNCnNjb3BlLzE0TUdEUwpzY29yYnV0aWMvNQpzY29yY2gvMTRNRFJTWkcKc2NvcmNoZXIvMU0Kc2NvcmUvMTRNWkdEUlMKc2NvcmVib2FyZC8xU00Kc2NvcmVjYXJkLzFNUwpzY29yZWtlZXBlci8xTVMKc2NvcmVsZXNzLzUKc2NvcmVsaW5lLzFTCnNjb3Jlci8xTQpzY29ybi80MU1EUlNaRwpzY29ybmVyLzFNCnNjb3JuZnVsLzVZCnNjb3JwaW9uLzFNUwpzY290Y2gvMTQ1TURTRwpzY290Y2hzCnNjb3VuZHJlbC8xTVMKc2NvdXIvNDFEUlNaRwpzY291cmVyLzFNCnNjb3VyZ2UvMTREU01HCnNjb3V0LzE0TURSU1pHCnNjb3V0aW5nLzFNCnNjb3V0bWFzdGVyLzFNUwpzY293LzE0TVMKc2Nvd2wvMTRNRFNHCnNjcmFiYmxlLzQxTVpHRFJTCnNjcmFiYmxlci8xTQpzY3JhZy8xNE1TCnNjcmFnZ2x5LzVSVApzY3JhZ2d5LzVUUgpzY3JhbS80MVMKc2NyYW1ibGUncwpzY3JhbWJsZS80MVVHRFMKc2NyYW1ibGVyLzFNUwpzY3JhbW1lZC80CnNjcmFtbWluZy80CnNjcmFwLzE0TURSU1pHSgpzY3JhcGJvb2svMTRTTQpzY3JhcGUvNDFTTQpzY3JhcGVyLzFNCnNjcmFwaGVhcC8xU00Kc2NyYXBpZS8xCnNjcmFwcGVkLzQKc2NyYXBwZXIvMU1TCnNjcmFwcGluZy80MQpzY3JhcHB5LzVUUgpzY3JhcHlhcmQvMVNNCnNjcmF0Y2gvNDE1R01EUwpzY3JhdGNoY2FyZC8xUwpzY3JhdGNoZWQvNTRVCnNjcmF0Y2hpbHkvCnNjcmF0Y2hpbmVzcy8xTQpzY3JhdGNocGFkLzFTCnNjcmF0Y2h5LzVQUlQKc2NyYXdsLzE0U01ERwpzY3Jhd2x5LzUKc2NyYXduaW5lc3MvMU0Kc2NyYXdueS81UFRSCnNjcmVhbS8xNFNNRFJaRwpzY3JlYW1lci8xTQpzY3JlYW1pbmcvNDUxWQpzY3JlZS8xNE1EUwpzY3JlZWNoLzE0R01EUwpzY3JlZWNoeS81VFIKc2NyZWVkLzE0NVMKc2NyZWVuLzE0U0pNREcKc2NyZWVuaW5nLzE0TQpzY3JlZW5wbGF5LzE0U00Kc2NyZWVuc2F2ZXIvMVNNCnNjcmVlbnNob3QvMTRTCnNjcmVlbndyaXRlci8xU00Kc2NyZWVud3JpdGluZy8xTQpzY3JldydzCnNjcmV3LzE0VURTRwpzY3Jld2JhbGwvMTVNUwpzY3Jld2RyaXZlci8xTVMKc2NyZXdpbmVzcy8xTQpzY3Jld3dvcm0vMVNNCnNjcmV3eS81UFJUCnNjcmliYWwvNQpzY3JpYmJsZS80MU1aR0RSUwpzY3JpYmJsZXIvMU0Kc2NyaWJlJ3MKc2NyaWJlLzE0Q0tJUwpzY3JpbS8xNE1TCnNjcmltbWFnZS8xNE1HRFMKc2NyaW1wLzE0NVNERwpzY3JpbXNoYXcvNDFNREdTCnNjcmlwLzFNUwpzY3JpcHQvMTRGU01ERwpzY3JpcHRlZC80NVUKc2NyaXB0dXJhbC81CnNjcmlwdHVyZS8xTVMKc2NyaXB0d3JpdGVyLzFTTQpzY3JpdmVuZXIvMVNNCnNjcm9kLzE0TQpzY3JvZnVsYS8xTQpzY3JvZnVsb3VzLzUKc2Nyb2cvMVMKc2Nyb2xsLzE0R1NNRApzY3Jvb2dlLzE0TVMKc2Nyb3RhLzEKc2Nyb3RhbC81CnNjcm90dW0vMU0Kc2Nyb3VuZ2UvNDFEUlNaRwpzY3JvdW5nZXIvMU0Kc2Nyb3VuZ3kvNVRSCnNjcnViLzUxNE1TCnNjcnViYmVkLzQ1CnNjcnViYmVyLzFTTQpzY3J1YmJpbmcvNDEKc2NydWJieS81MVJUCnNjcnVmZi8xNFNNCnNjcnVmZmlseS8Kc2NydWZmaW5lc3MvMU0Kc2NydWZmeS81MVJQVApzY3J1bS8xNDJTCnNjcnVtaGFsZi8xCnNjcnVtaGFsdmVzLzEKc2NydW1tYWdlLzE0UwpzY3J1bW1lZC80CnNjcnVtbWluZy80CnNjcnVtcC8xNFNHRApzY3J1bXB0aW91cy81WQpzY3J1bXB5LzEKc2NydW5jaC80MU1EU0cKc2NydW5jaHkvMTVTTQpzY3J1cGxlLzE0TUdEUwpzY3J1cHVsb3NpdHkvMU0Kc2NydXB1bG91cy81VVBZCnNjcnVwdWxvdXNuZXNzLzFVTQpzY3J1dGluZWVyLzE0UwpzY3J1dGluaXplLzRHRFMKc2NydXRpbnkvMTRNCnNjdWJhLzE0TURTRwpzY3VkLzU0MU1TCnNjdWRkZWQvNApzY3VkZGluZy80MTUKc2N1ZmYvNDFNRFNHCnNjdWZmbGUvMTRNR0RTCnNjdWxsLzE0TURSU1pHCnNjdWxsZXIvMU0Kc2N1bGxlcnkvMVNNCnNjdWxsaW9uLzFTTQpzY3VscHQvNDFTR0QKc2N1bHB0b3IvMVNNCnNjdWxwdHJlc3MvMU1TCnNjdWxwdHVyYWwvNQpzY3VscHR1cmUvMTREU01HCnNjdW0vMTRNUwpzY3VtYmFnLzFNUwpzY3VtbWVkLzQKc2N1bW1pbmcvMQpzY3VtbXkvNVRSCnNjdXBwZXIvMTRNREdTCnNjdXJmLzFNCnNjdXJmeS81CnNjdXJyaWxpdHkvMU0Kc2N1cnJpbG91cy81UFkKc2N1cnJpbG91c25lc3MvMU0Kc2N1cnJ5LzQxR0RTTQpzY3VydmlseS8Kc2N1cnZ5LzUxVFJNCnNjdXRjaGVvbi8xU00Kc2N1dHRsZS8xNE1HRFMKc2N1dHRsZWJ1dHQvMTRNCnNjdXp6eS81VFIKc2N5dGhlLzE0RFNNRwpzZWEvMVNNCnNlYWJlZC8xU00Kc2VhYmlyZC8xTVMKc2VhYm9hcmQvMVNNCnNlYWJvcm5lLzUKc2VhY29hc3QvMVNNCnNlYWZhcmVyLzFTTQpzZWFmYXJpbmcvNTFNCnNlYWZsb29yLzFTTQpzZWFmb29kLzFNCnNlYWZyb250LzFTTQpzZWFnb2luZy81CnNlYWd1bGwvMTRNUwpzZWFob3JzZS8xTVMKc2VhbCdzCnNlYWwvMTRBVVNERwpzZWFsYW50LzFNUwpzZWFsZXIvMVNNCnNlYWxza2luLzFNCnNlYW0vMTRHTUROUwpzZWFtYW4vMU0Kc2VhbWFuc2hpcC8xTQpzZWFtbGVzcy81WQpzZWFtb3VudC8xTVMKc2VhbXN0cmVzcy8xTVMKc2VhbXkvNVJUCnNlYW5jZS8xNFNNCnNlYXBsYW5lLzFTTQpzZWFwb3J0LzFNUwpzZWFyLzU0MUdNRFMKc2VhcmNoLzE0QVpHTURSUwpzZWFyY2hhYmxlLzUxVQpzZWFyY2hlci8xQU0Kc2VhcmNoaW5nLzQ1MVkKc2VhcmNobGlnaHQvMTRNUwpzZWFyaW5nLzUxNFkKc2Vhc2NhcGUvMVNNCnNlYXNoZWxsLzE1U00Kc2Vhc2hvcmUvMVNNCnNlYXNpY2svNVAKc2Vhc2lja25lc3MvMU0Kc2Vhc2lkZS8xNU1TCnNlYXNvbi8xNFNHTURCSgpzZWFzb25hYmxlLzVVCnNlYXNvbmFibHkvVQpzZWFzb25hbC81MVkKc2Vhc29uYWxpdHkvMQpzZWFzb25lZC80NVUKc2Vhc29uaW5nLzE0TQpzZWF0J3MKc2VhdC8xNFVHRFMKc2VhdGluZy80MU0Kc2VhdG1hdGUvMVNNCnNlYXdhbGwvMU1TCnNlYXdhcmQvNU1TCnNlYXdhdGVyLzE1TQpzZWF3YXkvMVNNCnNlYXdlZWQvMU1TCnNlYXdvcnRoaW5lc3MvMU0Kc2Vhd29ydGh5LzVQCnNlYmFjZW91cy81CnNlYm9ycmhlYS8xTQpzZWJ1bS8xCnNlYyd5LzEKc2VjLzFTTQpzZWNhbnQvMTVTTQpzZWNhdGV1cnMvMQpzZWNlZGUvNERTRwpzZWNlc3Npb24vMU0Kc2VjZXNzaW9uaXN0LzE1TVMKc2VjbHVkZS80R0RTCnNlY2x1c2lvbi8xTQpzZWNsdXNpdmUvNTEKc2Vjb25kLzUxNFNMWkdNRFJZCnNlY29uZGFyaWx5LwpzZWNvbmRhcnkvNTFTTQpzZWNvbmRlci8xTQpzZWNvbmRoYW5kLzUxCnNlY29uZG1lbnQvMVMKc2VjcmVjeS8xTQpzZWNyZXQvMTQ1U0dWTURZCnNlY3JldGFyaWFsLzUKc2VjcmV0YXJpYXQvMU1TCnNlY3JldGFyeS8xNFNNCnNlY3JldGFyeXNoaXAvMU0Kc2VjcmV0ZS81NFhOUwpzZWNyZXRpb24vMU0Kc2VjcmV0aXZlLzVQWQpzZWNyZXRpdmVuZXNzLzFNCnNlY3JldG9yeS81MQpzZWN0LzFJTVMKc2VjdGFyaWFuLzUxTVMKc2VjdGFyaWFuaXNtLzFNCnNlY3RhcnkvMVNNCnNlY3Rpb24vMTRBRVNNCnNlY3Rpb25hbC81MU1TCnNlY3Rpb25hbGlzbS8xTQpzZWN0aW9uZWQvNApzZWN0aW9uaW5nLzQxCnNlY3Rvci8xRVNNCnNlY3VsYXIvNTEKc2VjdWxhcmlzbS8xTQpzZWN1bGFyaXN0LzFTTQpzZWN1bGFyaXphdGlvbi8xTQpzZWN1bGFyaXplLzREU0cKc2VjdXJlLzU0RFJTWVRHCnNlY3VyZWQvNDVVCnNlY3VyaXR5LzFJU00Kc2VjeQpzZWRhbi8xTVMKc2VkYXRlLzU0RFJTWVRHTlZQCnNlZGF0ZW5lc3MvMU0Kc2VkYXRpb24vMU0Kc2VkYXRpdmUvMTVTTQpzZWRlbnRhcnkvNTEKc2VkZ2UvMU0Kc2VkZ3kvNQpzZWRpbWVudC8xNE1TCnNlZGltZW50YXJ5LzUxCnNlZGltZW50YXRpb24vMU0Kc2VkaXRpb24vMU0Kc2VkaXRpb3VzLzUKc2VkdWNlLzREUlNaRwpzZWR1Y2VyLzFNCnNlZHVjdGlvbi8xU00Kc2VkdWN0aXZlLzVZUApzZWR1Y3RpdmVuZXNzLzFNCnNlZHVjdHJlc3MvMU1TCnNlZHVsb3VzLzVZCnNlZS80MVJTTVp+CnNlZWQncwpzZWVkLzE0QUdEUwpzZWVkYmVkLzFNUwpzZWVkY2FzZS8xTVMKc2VlZGVkLzU0VQpzZWVkZXIvMVNNCnNlZWRpbmVzcy8xTQpzZWVkbGVzcy81CnNlZWRsaW5nLzFNUwpzZWVkcG9kLzFNUwpzZWVkeS81UlBUCnNlZWluZy80NTE3UwpzZWVrLzQxWkdSUwpzZWVrZXIvMU0Kc2VlbS80R0RTCnNlZW1pbmcvNDUxWQpzZWVtbGluZXNzLzFVTQpzZWVtbHkvNVVSVFAKc2Vlbi80MVUKc2VlcC80MUdEUwpzZWVwYWdlLzFNCnNlZXIvMU0Kc2VlcnN1Y2tlci8xTQpzZWVzYXcvMTQ1U01ERwpzZWV0aGUvNDFEU0cKc2VnZmF1bHQvMTRTCnNlZ21lbnQvMTRHU01ECnNlZ21lbnRhdGlvbi8xTQpzZWdtZW50ZWQvNDVVCnNlZ3JlZ2F0ZS81NDFDRFNHTgpzZWdyZWdhdGVkLzQ1VQpzZWdyZWdhdGlvbi8xQ00Kc2VncmVnYXRpb25pc3QvMTVNUwpzZWd1ZS80MU1HRFMKc2VndWVpbmcvNApzZWlnbmV1ci8xU00Kc2VpZ25pb3IvMVNNCnNlaW5lLzE0TVpHRFJTCnNlaW5lci8xTQpzZWlzbWljLzUKc2Vpc21pY2FsbHkvCnNlaXNtb2dyYXBoLzFaTVIKc2Vpc21vZ3JhcGhlci8xTQpzZWlzbW9ncmFwaGljLzUKc2Vpc21vZ3JhcGhzLzEKc2Vpc21vZ3JhcGh5LzFNCnNlaXNtb2xvZ2ljLzUKc2Vpc21vbG9naWNhbC81CnNlaXNtb2xvZ2lzdC8xTVMKc2Vpc21vbG9neS8xTQpzZWl6ZS80R0RTCnNlaXp1cmUvMTRNUwpzZWxkb20vNQpzZWxlY3QvNTRDU0dWRApzZWxlY3Rpb24vMVNNCnNlbGVjdGl2ZS81WQpzZWxlY3Rpdml0eS8xTQpzZWxlY3RtYW4vMU0Kc2VsZWN0bWVuLzEKc2VsZWN0bmVzcy8xTQpzZWxlY3Rvci8xTVMKc2VsZW5pdW0vMU0Kc2VsZW5vZ3JhcGhlci8xTVMKc2VsZW5vZ3JhcGh5LzFNCnNlbGYvODE0NU0Kc2VsZmllLzE0U00Kc2VsZmlzaC81VVlQCnNlbGZpc2huZXNzLzFVTQpzZWxmbGVzcy81UFkKc2VsZmxlc3NuZXNzLzFNCnNlbGZzYW1lLzUxCnNlbGwncwpzZWxsLzQxQVpHUlMKc2VsbGVyJ3MKc2VsbG9mZi8xTVMKc2VsbG90YXBlLzE0RFNHCnNlbGxvdXQvMU1TCnNlbHR6ZXIvMU1TCnNlbHZhZ2UvMTRNUwpzZWx2ZXMvMQpzZW1hbnRpYy81MVMKc2VtYW50aWNhbGx5LwpzZW1hbnRpY2lzdC8xTVMKc2VtYW50aWNzLzFNCnNlbWFwaG9yZS8xNERTTUcKc2VtYmxhbmNlLzFBU00Kc2VtZW4vMU0Kc2VtZXN0ZXIvMVNNCnNlbWkvMU1TCnNlbWlhbm51YWwvNTFZCnNlbWlhcmlkLzUKc2VtaWF1dG9tYXRpYy81MU1TCnNlbWlicmV2ZS8xUwpzZW1pY2lyY2xlLzE0U00Kc2VtaWNpcmN1bGFyLzUKc2VtaWNvbG9uLzFNUwpzZW1pY29uZHVjdGluZy81CnNlbWljb25kdWN0b3IvMU1TCnNlbWljb25zY2lvdXMvNQpzZW1pZGFya25lc3MvMU0Kc2VtaWRldGFjaGVkLzUxCnNlbWlmaW5hbC8xU00Kc2VtaWZpbmFsaXN0LzFNUwpzZW1pZ2xvc3MvNTFTCnNlbWltb250aGx5LzUxU00Kc2VtaW5hbC81MQpzZW1pbmFyLzE0TVMKc2VtaW5hcmlhbi8xU00Kc2VtaW5hcnkvMTVTTQpzZW1pb2ZmaWNpYWwvNQpzZW1pb3RpYy81UwpzZW1pb3RpY3MvMU0Kc2VtaXBlcm1lYWJsZS81CnNlbWlwcmVjaW91cy81CnNlbWlwcml2YXRlLzUKc2VtaXByby81MVMKc2VtaXByb2Zlc3Npb25hbC81MVNNCnNlbWlxdWF2ZXIvMVMKc2VtaXJldGlyZWQvNQpzZW1pc2tpbGxlZC81CnNlbWlzb2xpZC81MQpzZW1pc3dlZXQvNQpzZW1pdG9uZS8xU00Kc2VtaXRyYWlsZXIvMU1TCnNlbWl0cmFuc3BhcmVudC81CnNlbWl0cm9waWNhbC81CnNlbWl2b3dlbC8xU00Kc2VtaXdlZWtseS81MVNNCnNlbWl5ZWFybHkvCnNlbW9saW5hLzFNCnNlbXBzdHJlc3MvMU1TCnNlbmF0ZS8xU00Kc2VuYXRvci8xTVMKc2VuYXRvcmlhbC81CnNlbmQvNDFaR1JTCnNlbmRlci8xTQpzZW5kb2ZmLzFNUwpzZW5lc2NlbmNlLzFNCnNlbmVzY2VudC81CnNlbmlsZS81MQpzZW5pbGl0eS8xTQpzZW5pb3IvNTFTTQpzZW5pb3JpdHkvMU0Kc2VubmEvMU0Kc2Vub3IvMU1TCnNlbm9yYS8xU00Kc2Vub3JpdGEvMVNNCnNlbnNhdGlvbi8xTVMKc2Vuc2F0aW9uYWwvNVkKc2Vuc2F0aW9uYWxpc20vMU0Kc2Vuc2F0aW9uYWxpc3QvNTFNUwpzZW5zYXRpb25hbGl6ZS80R0RTCnNlbnNlLzE0TUdEUwpzZW5zZWxlc3MvNVBZCnNlbnNlbGVzc25lc3MvMU0Kc2Vuc2liaWxpdGllcy8xCnNlbnNpYmlsaXR5LzFJTQpzZW5zaWJsZS81MVAKc2Vuc2libGVuZXNzLzFNCnNlbnNpYmx5L0kKc2Vuc2l0aXZlLzUxU01ZUApzZW5zaXRpdmVuZXNzLzFNCnNlbnNpdGl2aXRpZXMvMQpzZW5zaXRpdml0eS8xSU0Kc2Vuc2l0aXphdGlvbi8xQ00Kc2Vuc2l0aXplLzRDRFNHCnNlbnNvci8xU00Kc2Vuc29yeS81MQpzZW5zdWFsLzVZCnNlbnN1YWxpc3QvMVNNCnNlbnN1YWxpdHkvMU0Kc2Vuc3VvdXMvNVlQCnNlbnN1b3VzbmVzcy8xTQpzZW50LzQxRkFVCnNlbnRlbmNlLzE0TUdEUwpzZW50ZW50aW91cy81WQpzZW50aWVuY2UvMUlNCnNlbnRpZW50LzUxSQpzZW50aW1lbnQvMVNNCnNlbnRpbWVudGFsLzVZCnNlbnRpbWVudGFsaXNtLzFNCnNlbnRpbWVudGFsaXN0LzFNUwpzZW50aW1lbnRhbGl0eS8xTQpzZW50aW1lbnRhbGl6YXRpb24vMU0Kc2VudGltZW50YWxpemUvNEdEUwpzZW50aW5lbC8xNE1TCnNlbnRyeS8xU00Kc2VwYWwvMU1TCnNlcGFyYWJpbGl0eS8xSU0Kc2VwYXJhYmxlLzUKc2VwYXJhYmx5L0kKc2VwYXJhdGUvNTQxWE1ZR05WRFNQCnNlcGFyYXRlbmVzcy8xTQpzZXBhcmF0aW9uLzFNCnNlcGFyYXRpc20vMU0Kc2VwYXJhdGlzdC8xNU1TCnNlcGFyYXRvci8xTVMKc2VwaWEvMTVNCnNlcHNpcy8xTQpzZXB0YS8xCnNlcHRhbC81CnNlcHRldC8xU00Kc2VwdGljLzUxCnNlcHRpY2VtaWEvMU0Kc2VwdGljZW1pYy81CnNlcHR1YWdlbmFyaWFuLzE1TVMKc2VwdHVtLzFNCnNlcHVsY2hlci8xNEdNRFMKc2VwdWxjaHJhbC81CnNlcS8xCnNlcXVlbC8xU00Kc2VxdWVuY2UvMTRNWkdEUlMKc2VxdWVuY2luZy80MU0Kc2VxdWVudGlhbC81RlkKc2VxdWVzdGVyLzQxU0RHCnNlcXVlc3RyYXRlLzQ1WEdORFMKc2VxdWVzdHJhdGlvbi8xTQpzZXF1aW4vMTRTTUQKc2VxdWlubmVkLzUKc2VxdWl0dXIvMQpzZXF1b2lhLzFNUwpzZXJhZ2xpby8xTVMKc2VyYXBlLzFTTQpzZXJhcGgvMU0Kc2VyYXBoaWMvNQpzZXJhcGhzLzEKc2VyZS81MVRSCnNlcmVuYWRlLzE0TUdEUwpzZXJlbmRpcGl0b3VzLzUKc2VyZW5kaXBpdHkvMU0Kc2VyZW5lLzU0MVJQWVQKc2VyZW5lbmVzcy8xTQpzZXJlbml0eS8xTQpzZXJmLzFNUwpzZXJmZG9tLzFNCnNlcmdlLzE0TQpzZXJnZWFudC8xTVMKc2VyaWFsLzUxNFNNWQpzZXJpYWxpemF0aW9uLzFTTQpzZXJpYWxpemUvNEdEU0JSCnNlcmllcy8xTQpzZXJpZi8xNU1TCnNlcmlncmFwaC8xTQpzZXJpZ3JhcGhzLzEKc2VyaW5lLzEKc2VyaW91cy81UFkKc2VyaW91c25lc3MvMU0Kc2VybW9uLzE0U00Kc2VybW9uaXplLzRHRFMKc2Vyb2xvZ3kvMU0Kc2Vyb3RvbmluLzEKc2Vyb3VzLzUKc2VycGVudC8xNE1TCnNlcnBlbnRpbmUvNTE0TQpzZXJyYXRlLzU0WE5ECnNlcnJhdGlvbi8xTQpzZXJyaWVkLzQ1CnNlcnVtLzFNUwpzZXJ2YW50LzE0TVMKc2VydmUncy9BRgpzZXJ2ZS8xNEZBQ0dEUwpzZXJ2ZXIvMVNNCnNlcnZlcnkvMVMKc2VydmljZS8xNEVNUwpzZXJ2aWNlYWJpbGl0eS8xTQpzZXJ2aWNlYWJsZS81CnNlcnZpY2VkLzQKc2VydmljZW1hbi8xTQpzZXJ2aWNlbWVuLzEKc2VydmljZXdvbWFuLzFNCnNlcnZpY2V3b21lbi8xCnNlcnZpY2luZy80MQpzZXJ2aWV0dGUvMU1TCnNlcnZpbGUvNTEKc2VydmlsaXR5LzFNCnNlcnZpbmcncwpzZXJ2aW5ncy8xCnNlcnZpdG9yLzFNUwpzZXJ2aXR1ZGUvMU0Kc2Vydm8vMTRNUwpzZXJ2b21lY2hhbmlzbS8xU00Kc2Vydm9tb3Rvci8xTVMKc2VzYW1lLzFTTQpzZXNxdWljZW50ZW5uaWFsLzUxTVMKc2Vzc2lvbi8xNE1TCnNldC80MTVBSVNNCnNldGJhY2svMU1TCnNldHNjcmV3LzFTTQpzZXRzcXVhcmUvUwpzZXR0LzE0QkpaR1JTCnNldHRlZS8xTVMKc2V0dGVyLzE0TQpzZXR0aW5nLzE0NU0Kc2V0dGxlJ3MKc2V0dGxlLzQxQVVHRFMKc2V0dGxlbWVudC8xQU0Kc2V0dGxlbWVudHMvMQpzZXR0bGVyLzFTTQpzZXR1cC8xNE1TCnNldmVuLzFNSFMKc2V2ZW50ZWVuL1NNSApzZXZlbnRlZW50aC81MU0Kc2V2ZW50ZWVudGhzLzEKc2V2ZW50aC81MU0Kc2V2ZW50aHMvMQpzZXZlbnRpZXRoLzUxTQpzZXZlbnRpZXRocy8xCnNldmVudHkvU01ICnNldmVyLzRFVEdEUwpzZXZlcmFsLzUxTVkKc2V2ZXJhbmNlLzFTTQpzZXZlcmUvNVlQUgpzZXZlcmVuZXNzLzFNCnNldmVyaXR5LzFNCnNldy80MUFTR0QKc2V3YWdlLzFNCnNld2VyLzE0TVMKc2V3ZXJhZ2UvMU0Kc2V3aW5nLzQxTQpzZXduLzRBCnNleC8xNEdNRFMKc2V4YWdlbmFyaWFuLzE1U00Kc2V4aWx5LwpzZXhpbmVzcy8xTQpzZXhpc20vMU0Kc2V4aXN0LzUxTVMKc2V4bGVzcy81CnNleG9sb2dpc3QvMVNNCnNleG9sb2d5LzFNCnNleHBvdC8xTVMKc2V4dGFudC8xU00Kc2V4dGV0LzFNUwpzZXh0aW5nLzE0CnNleHRvbi8xTVMKc2V4dHVwbGV0LzFTTQpzZXh1YWwvNTFZCnNleHVhbGl0eS8xTQpzZXh5LzVQVFIKc2YvMQpzaC8Kc2hhYmJpbHkvCnNoYWJiaW5lc3MvMU0Kc2hhYmJ5LzU0UFRSCnNoYWNrLzE0NU1EU0cKc2hhY2tsZSdzCnNoYWNrbGUvMTRVR0RTCnNoYWQvMUdNRFNKCnNoYWRlLzE0TVNSCnNoYWRpbHkvCnNoYWRpbmVzcy8xTQpzaGFkaW5nLzQxTQpzaGFkb3cvMTU0U0dNRApzaGFkb3dib3gvMTRHRFMKc2hhZG93eS81UlQKc2hhZHkvNVJQVApzaGFmdC8xNE1EU0cKc2hhZy8xNDVNUwpzaGFnZ2VkLzU0CnNoYWdnaW5lc3MvMU0Kc2hhZ2dpbmcvNDE1CnNoYWdneS81VFBSCnNoYWgvMU0Kc2hhaHMvMQpzaGFrZS80MU1aR1JTCnNoYWtlZG93bi8xNVNNCnNoYWtlbi80NTFVCnNoYWtlb3V0LzFNUwpzaGFrZXIvMU0Kc2hha2V1cC8xTVMKc2hha2lseS8Kc2hha2luZXNzLzFNCnNoYWt5LzVSUFQKc2hhbGUvMTRNCnNoYWxsLzQKc2hhbGxvdC8xTVMKc2hhbGxvdy81MTRUUE1SWVMKc2hhbGxvd25lc3MvMU0Kc2hhbG9tLzE0CnNoYWx0LzQKc2hhbS81MTRHTURTCnNoYW1hbi8xU00Kc2hhbWFuaWMvNQpzaGFtYW5pc20vMQpzaGFtYW5pc3RpYy81CnNoYW1ibGUvNDFNR0RTCnNoYW1ibGVzLzE0TQpzaGFtYm9saWMvNQpzaGFtZS8xNTRNUwpzaGFtZWZhY2VkLzVZCnNoYW1lZnVsLzVQWQpzaGFtZWZ1bG5lc3MvMU0Kc2hhbWVsZXNzLzVZUApzaGFtZWxlc3NuZXNzLzFNCnNoYW1tZWQvNApzaGFtbWluZy80CnNoYW1wb28vMTRaR01EUlMKc2hhbXBvb2VyLzFNCnNoYW1yb2NrLzFNUwpzaGFuJ3QvNApzaGFuZHkvMTVTCnNoYW5naGFpLzQxRFNHCnNoYW5rLzE0NU1TCnNoYW50dW5nLzFNCnNoYW50eS8xNTRTTQpzaGFudHl0b3duLzFTTQpzaGFwZSdzCnNoYXBlLzE0QUdEUwpzaGFwZWQvNTRVCnNoYXBlbGVzcy81WVAKc2hhcGVsZXNzbmVzcy8xTQpzaGFwZWxpbmVzcy8xTQpzaGFwZWx5LzVQVFIKc2hhcmQvMTRNU0cKc2hhcmUvMTRNWkdEUlMKc2hhcmVhYmxlLzUxCnNoYXJlY3JvcC80UwpzaGFyZWNyb3BwZWQvNApzaGFyZWNyb3BwZXIvMU1TCnNoYXJlY3JvcHBpbmcvMTQKc2hhcmVob2xkZXIvMVNNCnNoYXJlaG9sZGluZy81MVMKc2hhcmVyLzFNCnNoYXJld2FyZS8xTQpzaGFyaWEvMU0Kc2hhcmlhaC8xCnNoYXJrLzE0TURTRwpzaGFya3NraW4vMU0Kc2hhcnAvNTE0TUROUllTUFhaVEcKc2hhcnBlbi80QURHUwpzaGFycGVuZXIvMU1TCnNoYXJwZXIvNTFNCnNoYXJwaWUvMU1TCnNoYXJwaXNoLzUKc2hhcnBuZXNzLzFNCnNoYXJwc2hvb3Rlci8xU00Kc2hhcnBzaG9vdGluZy8xNE0Kc2hhdHRlci80MUdNRFMKc2hhdHRlcnByb29mLzU0CnNoYXZlLzQxTVpHRFJTSgpzaGF2ZW4vNTRVCnNoYXZlci8xTQpzaGF2aW5nLzE0TQpzaGF3bC8xNE1TCnNoYXkvMU1TCnNoZSdkLwpzaGUnbGwvCnNoZS84MURNfgpzaGVhZi8xNE0Kc2hlYXIvNDE1TURSU1pHCnNoZWFyZXIvMU0Kc2hlYXRoLzE0Sk0Kc2hlYXRoZS80VUdEUwpzaGVhdGhpbmcvMTRNCnNoZWF0aHMvMQpzaGVhdmUvMTREU01HCnNoZWJhbmcvMU1TCnNoZWJlZW4vMTRTCnNoZWQvNDFNUwpzaGVkZGluZy80MQpzaGVlbi81MTRNCnNoZWVueS8xNVRSCnNoZWVwLzFNCnNoZWVwZG9nLzE0TVMKc2hlZXBmb2xkLzFTTQpzaGVlcGhlcmRlci8xTVMKc2hlZXBpc2gvNVlQCnNoZWVwaXNobmVzcy8xTQpzaGVlcHNraW4vMU1TCnNoZWVyLzUxNE1EUlNQVEcKc2hlZXJuZXNzLzFNCnNoZWV0LzE0TVNHCnNoZWV0aW5nLzE0TQpzaGVldGxpa2UvNQpzaGVpa2RvbS8xTVMKc2hlaWtoLzFNCnNoZWlraHMvMQpzaGVpbGEvMVMKc2hla2VsLzFTTQpzaGVsZi8xTQpzaGVsbC8xNE1EUlNHCnNoZWxsYWMvMTRNUwpzaGVsbGFja2VkLzUKc2hlbGxhY2tpbmcvNDFNUwpzaGVsbGZpcmUvMU0Kc2hlbGxmaXNoLzFNUwpzaGVsdGVyLzE0R01EUwpzaGVsdmUvNDFHRFMKc2hlbHZpbmcvNTQxTQpzaGVuYW5pZ2FuLzFTTQpzaGVwaGVyZC8xNFNNREcKc2hlcGhlcmRlc3MvMU1TCnNoZXJiZXQvMVNNCnNoZXJpZmYvMTRTTQpzaGVycnkvMVNNCnNoZXcvNDFHRFMKc2hld24vNApzaGgvMTQKc2hpYXRzdS8xTQpzaGliYm9sZXRoLzFNCnNoaWJib2xldGhzLzEKc2hpZWxkLzE0TURHUwpzaGlmdC8xNEdNRFMKc2hpZnRpbHkvCnNoaWZ0aW5lc3MvMU0Kc2hpZnRsZXNzLzVQWQpzaGlmdGxlc3NuZXNzLzFNCnNoaWZ0eS81UlBUCnNoaWl0YWtlLzFTTQpzaGlsbC8xNEdNRFNKCnNoaWxsZWxhZ2gvMU0Kc2hpbGxlbGFnaHMvMQpzaGlsbGluZy8xNE0Kc2hpbS8xNE1TCnNoaW1tZWQvNTQKc2hpbW1lci80MVNNREcKc2hpbW1lcnkvNQpzaGltbWluZy80MQpzaGltbXkvMTREU01HCnNoaW4vMTRaR01EUlMKc2hpbmJvbmUvMVNNCnNoaW5kaWcvMVNNCnNoaW5lLzQxTVMKc2hpbmVyLzFNCnNoaW5nbGUvMTREU01HCnNoaW5ndWFyZC8xTQpzaGluaW5lc3MvMU0Kc2hpbm5lZC80CnNoaW5uaW5nLzQKc2hpbm55LzQxRFNHCnNoaW5zcGxpbnRzLzFNCnNoaW55LzUxVFJQCnNoaXAncwpzaGlwLzE0QUxTCnNoaXBib2FyZC81MU1TCnNoaXBidWlsZGVyLzFTTQpzaGlwYnVpbGRpbmcvMU0Kc2hpcGxvYWQvMVNNCnNoaXBtYXRlLzFTTQpzaGlwbWVudC8xQU0Kc2hpcG1lbnRzLzEKc2hpcG93bmVyLzFNUwpzaGlwcGVkLzU0QQpzaGlwcGVyLzFTTQpzaGlwcGluZy8xNE0Kc2hpcHNoYXBlLzUKc2hpcHdyZWNrLzE0R01EUwpzaGlwd3JpZ2h0LzFNUwpzaGlweWFyZC8xU00Kc2hpcmUvMTRNUwpzaGlyay80MVpHRFJTCnNoaXJrZXIvMU0Kc2hpcnIvNDFHTURTSgpzaGlycmluZy8xNE0Kc2hpcnQvMTRHTURTCnNoaXJ0ZnJvbnQvMTRTTQpzaGlydGluZy8xTQpzaGlydGxlc3MvNQpzaGlydHNsZWV2ZS8xU00Kc2hpcnR0YWlsLzFTTQpzaGlydHdhaXN0LzFNUwpzaGlydHkvNQpzaGl0LzE1NFNNITYKc2hpdGZhY2VkLzUhNgpzaGl0aGVhZC8xUyE2CnNoaXRsb2FkLzEhNgpzaGl0dGVkLzQhNgpzaGl0dGluZy8xNDUhNgpzaGl0dHkvNVJUITYKc2hpdi8xNFpNUlMKc2hpdmVyLzQxTURHCnNoaXZlcnkvNQpzaG9hbC81MTRHTURTCnNob2F0LzFNUwpzaG9jay8xNTRaR01EUlMKc2hvY2tlci8xTQpzaG9ja2luZy81NDFZCnNob2NrcHJvb2YvNTQKc2hvZC81NFUKc2hvZGRpbHkvCnNob2RkaW5lc3MvMU0Kc2hvZGR5LzUxUFJNVApzaG9lLzE0TVMKc2hvZWhvcm4vMTRHTURTCnNob2VpbmcvNDEKc2hvZWxhY2UvMU1TCnNob2VtYWtlci8xU00Kc2hvZXNoaW5lLzFTTQpzaG9lc3RyaW5nLzE1NFNNCnNob2V0cmVlLzFNUwpzaG9ndW4vMU1TCnNob2d1bmF0ZS8xTQpzaG9uZS80CnNob28vNDhHRFMKc2hvb2svMTQ1CnNob290LzQxWkdNUlNKCnNob290ZXIvMU0Kc2hvb3RpbmcvNDE1TQpzaG9vdG91dC8xTVMKc2hvcC8xNE1TCnNob3BhaG9saWMvMU1TCnNob3BmaXR0ZXIvMVMKc2hvcGZpdHRpbmcvMQpzaG9wZnJvbnQvMVMKc2hvcGtlZXBlci8xTVMKc2hvcGxpZnQvMTREUlpHUwpzaG9wbGlmdGVyLzFNCnNob3BsaWZ0aW5nLzE0TQpzaG9wcGUvMU1aR0RSUwpzaG9wcGVyLzFNCnNob3BwaW5nLzQxTQpzaG9wdGFsay8xTQpzaG9wd29ybi81CnNob3JlLzE0TUdEUwpzaG9yZWJpcmQvMVNNCnNob3JlbGluZS8xTVMKc2hvcmluZy80MU0Kc2hvcnQvNTE0K1hUR01ETlJZU1AKc2hvcnRhZ2UvMU1TCnNob3J0YnJlYWQvMU0Kc2hvcnRjYWtlLzFNUwpzaG9ydGNoYW5nZS80RFNHCnNob3J0Y29taW5nLzFNUwpzaG9ydGNydXN0LzUKc2hvcnRjdXQvMTRNUwpzaG9ydGVuLzRKR0QKc2hvcnRlbmluZy8xNE0Kc2hvcnRmYWxsLzFNUwpzaG9ydGhhbmQvMTRNRApzaG9ydGhvcm4vNTFNUwpzaG9ydGlzaC81CnNob3J0bGlzdC8xNERHUwpzaG9ydG5lc3MvMU0Kc2hvcnRzaWdodGVkLzVQWQpzaG9ydHNpZ2h0ZWRuZXNzLzFNCnNob3J0c3RvcC8xNE1TCnNob3J0d2F2ZS81MU1TCnNob3J0eS8xOFNNCnNob3QvNTE0TVMKc2hvdGd1bi8xNFNNCnNob3RndW5uZWQvNApzaG90Z3VubmluZy80CnNob3VsZC80MQpzaG91bGQndmUvCnNob3VsZGVyLzE0TURHUwpzaG91bGRuJ3QvNDEKc2hvdXQvMTRaR01EUlMKc2hvdXRlci8xTQpzaG92ZS80MU1HRFMKc2hvdmVsLzE0TURTRwpzaG92ZWxmdWwvMVNNCnNob3cvNDFKWkdNRFJTCnNob3diaXovMU0Kc2hvd2JvYXQvMTRNREdTCnNob3djYXNlLzE0TUdEUwpzaG93ZG93bi8xTVMKc2hvd2VyLzE0TURHCnNob3dlcnByb29mLzU0CnNob3dlcnkvNQpzaG93Z2lybC8xTVMKc2hvd2dyb3VuZC8xUwpzaG93aWx5LwpzaG93aW5lc3MvMU0Kc2hvd2luZy80MU0Kc2hvd2p1bXBpbmcvMQpzaG93bWFuLzFNCnNob3dtYW5zaGlwLzFNCnNob3dtZW4vMQpzaG93bi80CnNob3dvZmYvMVNNCnNob3dwaWVjZS8xU00Kc2hvd3BsYWNlLzFTTQpzaG93cm9vbS8xNE1TCnNob3dzdG9wcGVyLzFNUwpzaG93c3RvcHBpbmcvNQpzaG93dGltZS8xCnNob3d5LzVUUlAKc2hwdC8xCnNocmFuay80MQpzaHJhcG5lbC8xTQpzaHJlZC8xNDVNUwpzaHJlZGRlZC80NQpzaHJlZGRlci8xTVMKc2hyZWRkaW5nLzE0CnNocmV3LzE0TVMKc2hyZXdkLzVSWVBUCnNocmV3ZG5lc3MvMU0Kc2hyZXdpc2gvNQpzaHJpZWsvMTRNRFNHCnNocmlmdC8xTQpzaHJpa2UvMU1TCnNocmlsbC81NDFEUlNQVEcKc2hyaWxsbmVzcy8xTQpzaHJpbGx5LzUKc2hyaW1wLzE0TURSU1pHCnNocmluZS8xNE1TCnNocmluay80MU1TQkcKc2hyaW5rYWdlLzFNCnNocml2ZS80R0RTCnNocml2ZWwvNFNHRApzaHJpdmVuLzQKc2hyb3VkLzE0R01EUwpzaHJ1Yi8xNE1TCnNocnViYmVyeS8xU00Kc2hydWJieS81UlQKc2hydWcvMTRNUwpzaHJ1Z2dlZC80CnNocnVnZ2luZy80MQpzaHJ1bmsvNDVOCnNodGljay8xTVMKc2h1Y2svMTRHTURTCnNodWNrcy8xNFMKc2h1ZGRlci80MU1EU0cKc2h1ZmZsZS8xNEFNR0RTCnNodWZmbGVib2FyZC8xU00Kc2h1ZmZsZXIvMVNNCnNodW4vNFMKc2h1bm5lZC80CnNodW5uaW5nLzQxCnNodW50LzQxTVNERwpzaHVzaC80RFNHCnNodXQvNDUxUwpzaHV0ZG93bi8xU00Kc2h1dGV5ZS8xTQpzaHV0b2ZmLzFTTQpzaHV0b3V0LzFTTQpzaHV0dGVyLzE0U01ERwpzaHV0dGVyYnVnLzFNUwpzaHV0dGluZy80MQpzaHV0dGxlLzE0RFNNRwpzaHV0dGxlY29jay8xNEdNRFMKc2h5LzU0MVRHRFJTTVkKc2h5ZXIvNTEKc2h5ZXN0LzUKc2h5bmVzcy8xTQpzaHlzdGVyLzE0U00Kc2liaWxhbnQvNTFTTQpzaWJsaW5nLzFTTQpzaWJ5bC8xTVMKc2lieWxsaW5lLzUxCnNpYy80UwpzaWNjZWQvNApzaWNjaW5nLzQKc2ljay81MTRQWFRHRE5SWVMKc2lja2JheS8xUwpzaWNrYmVkLzFTTQpzaWNrZW4vNERHCnNpY2tlbmluZy80NTFZCnNpY2tpZS8xTVMKc2lja2lzaC81CnNpY2tsZS8xNDVNUwpzaWNrbHkvNTRSVApzaWNrbmVzcy8xTVMKc2lja28vMTVNUwpzaWNrb3V0LzFTTQpzaWNrcm9vbS8xTVMKc2lkZSdzCnNpZGUvMTU0QUdEUwpzaWRlYXJtLzE0U00Kc2lkZWJhci8xNFNNCnNpZGVib2FyZC8xNFNNCnNpZGVidXJucy8xTQpzaWRlY2FyLzFTTQpzaWRla2ljay8xU00Kc2lkZWxpZ2h0LzFNUwpzaWRlbGluZS8xNERTTUcKc2lkZWxvbmcvNQpzaWRlbWFuLzFNCnNpZGVtZW4vMQpzaWRlcGllY2UvMU1TCnNpZGVyZWFsLzUKc2lkZXNhZGRsZS8xTVMKc2lkZXNob3cvMU1TCnNpZGVzcGxpdHRpbmcvNQpzaWRlc3RlcC8xNE1TCnNpZGVzdGVwcGVkLzQKc2lkZXN0ZXBwaW5nLzQxCnNpZGVzdHJva2UvMURTTUcKc2lkZXN3aXBlLzE0RFNNRwpzaWRldHJhY2svMTRTTURHCnNpZGV3YWxrLzFNUwpzaWRld2FsbC8xTVMKc2lkZXdheXMvMTUKc2lkZXdpbmRlci8xU00Kc2lkaW5nLzE0TVMKc2lkbGUvNDFNR0RTCnNpZWdlLzE0TVMKc2llbm5hLzE1TQpzaWVycmEvMU1TCnNpZXN0YS8xNE1TCnNpZXZlLzE0TUdEUwpzaWZ0LzQxWkdEUlMKc2lmdGVkLzU0VQpzaWZ0ZXIvMU0Kc2lnaC80MUdNRApzaWdocy8xNApzaWdodC8xNEdNRFlTSgpzaWdodGluZy8xNE0Kc2lnaHRsZXNzLzUKc2lnaHRseS81VVRSCnNpZ2h0cmVhZC80CnNpZ2h0c2VlaW5nLzE0TQpzaWdodHNlZXIvMU1TCnNpZ21hLzFNUwpzaWduJ3MvQwpzaWduLzE0QUZDR0RTCnNpZ25hZ2UvMU0Kc2lnbmFsLzE0NU1EUllTWkcKc2lnbmFsZXIvMU0Kc2lnbmFsaXphdGlvbi8xTQpzaWduYWxpemUvNEdEUwpzaWduYWxtYW4vMU0Kc2lnbmFsbWVuLzEKc2lnbmF0b3J5LzE1U00Kc2lnbmF0dXJlLzE1TVMKc2lnbmJvYXJkLzFNUwpzaWduZWQvNTRVCnNpZ25lci8xQ01TCnNpZ25ldC8xTVMKc2lnbmlmaWNhbmNlLzFJTQpzaWduaWZpY2FudC81MUlZCnNpZ25pZmljYXRpb24vMU0Kc2lnbmlmeS80WERTTkcKc2lnbmluZydzL0MKc2lnbmluZ3MvMQpzaWdub3IvMUZNUwpzaWdub3JhLzFTTQpzaWdub3JlLzEKc2lnbm9yaS8xCnNpZ25vcmluYS8xTVMKc2lnbm9yaW5lLzEKc2lnbnBvc3QvMTRHU01ECnNpbGFnZS8xNE0Kc2lsZW5jZS8xNERSU01aRwpzaWxlbmNlci8xTQpzaWxlbnQvNTFNUllTVApzaWxob3VldHRlLzE0RFNNRwpzaWxpY2EvMU0Kc2lsaWNhdGUvMU1TCnNpbGljZW91cy81CnNpbGljb24vMVNNCnNpbGljb25lLzE0NU0Kc2lsaWNvc2lzLzFNCnNpbGsvMTRNTlMKc2lsa2lseS8Kc2lsa2luZXNzLzFNCnNpbGtzY3JlZW4vMTRTTQpzaWxrd29ybS8xTVMKc2lsa3kvNTFUUlAKc2lsbC8xNU1TCnNpbGxpbmVzcy8xTQpzaWxseS81MVRSU01QCnNpbG8vMTRNUwpzaWx0LzE0R01EUwpzaWx0eS81VFIKc2lsdmVyLzE1NEdNRFMKc2lsdmVyZmlzaC8xTVMKc2lsdmVyc21pdGgvMU0Kc2lsdmVyc21pdGhzLzEKc2lsdmVyd2FyZS8xTQpzaWx2ZXJ5LzUKc2ltLzE0U00Kc2ltaWFuLzUxTVMKc2ltaWxhci81MVkKc2ltaWxhcml0eS8xRVNNCnNpbWlsZS8xTVMKc2ltaWxpdHVkZS8xRU0Kc2ltbWVyLzQxR01EUwpzaW1vbml6ZS80RFNHCnNpbW9ueS8xTQpzaW1wYXRpY28vNQpzaW1wZXIvNDFHTURTCnNpbXBlcmluZy81NDFZCnNpbXBsZS81MTRUUlAKc2ltcGxlbWluZGVkLzUKc2ltcGxlbmVzcy8xTQpzaW1wbGV0b24vMVNNCnNpbXBsZXgvNTEKc2ltcGxpY2l0eS8xTQpzaW1wbGlmaWNhdGlvbi8xTQpzaW1wbGlmeS80RFNYTkcKc2ltcGxpc3RpYy81CnNpbXBsaXN0aWNhbGx5LwpzaW1wbHkvCnNpbXVsYWNyYS8xCnNpbXVsYWNydW0vMVMKc2ltdWxhdGUvNDVFRFNHTgpzaW11bGF0aW9uLzFFTQpzaW11bGF0aW9ucy8xCnNpbXVsYXRvci8xRU1TCnNpbXVsY2FzdC8xNEdNRFMKc2ltdWx0YW5laXR5LzFNCnNpbXVsdGFuZW91cy81WQpzaW4vMTRBU00Kc2luY2UvKzcKc2luY2VyZS81SVlUCnNpbmNlcmVyLzUKc2luY2VyaXR5LzFJTQpzaW5lLzFNUwpzaW5lY3VyZS8xNTRNUwpzaW5ldy8xNE1TCnNpbmV3eS81CnNpbmZ1bC81UFkKc2luZnVsbmVzcy8xTQpzaW5nLzQxQlpHTURSWVMKc2luZ2Fsb25nLzE1UwpzaW5nZS80MU1TCnNpbmdlaW5nLzQxCnNpbmdlci8xTQpzaW5naW5nLzE1NE0Kc2luZ2xlLzUxNFBNR0RTCnNpbmdsZW5lc3MvMU0Kc2luZ2xlcy81MTRNCnNpbmdsZXQvMVMKc2luZ2xldG9uLzFTTQpzaW5nbGV0cmVlLzFTTQpzaW5nc29uZy8xNTRTTURHCnNpbmd1bGFyLzUxU01ZCnNpbmd1bGFyaXR5LzFTTQpzaW5pc3Rlci81CnNpbmsvNDFCWkdNUlMKc2lua2FibGUvNVUKc2lua2VyLzFNCnNpbmtob2xlLzE0U00Kc2lubGVzcy81CnNpbm5lZC80CnNpbm5lci8xTVMKc2lubmluZy80MQpzaW5vbG9neS8xCnNpbnVvc2l0eS8xTQpzaW51b3VzLzVZCnNpbnVzLzFNUwpzaW51c2l0aXMvMU0Kc2ludXNvaWRhbC81MQpzaXAvMTRTTQpzaXBob24vMTRHTURTCnNpcHBlZC80CnNpcHBlci8xU00Kc2lwcGluZy80MQpzaXIvMTRTWE1OCnNpcmUvMTRDTUdEUwpzaXJlbi8xNDVNCnNpcmxvaW4vMVNNCnNpcm9jY28vMVNNCnNpcnJhaC8xCnNpcnJlZS8xTQpzaXMvMThNUwpzaXNhbC8xTQpzaXNzaWZpZWQvNTQKc2lzc3kvMTU0UlNNVApzaXN0ZXIvMTRBU00Kc2lzdGVyaG9vZC8xTVMKc2lzdGVybGluZXNzLzFNCnNpc3Rlcmx5LzVQCnNpdC80MVMKc2l0YXIvMVNNCnNpdGFyaXN0LzFNUwpzaXRjb20vMVNNCnNpdGUvMTRNR0RTCnNpdGVtYXAvMVNNCnNpdHRlci8xU00Kc2l0dGluZy8xNDVTTQpzaXR1LzEKc2l0dWF0ZS80NURTWEdOCnNpdHVhdGlvbi8xTQpzaXR1YXRpb25hbC81CnNpeC8xTVNICnNpeGZvbGQvNQpzaXhwZW5jZS8xTVMKc2l4c2hvb3Rlci8xTQpzaXh0ZWVuL1NNSApzaXh0ZWVudGgvNTFNCnNpeHRlZW50aHMvMQpzaXh0aC81MTRNCnNpeHRocy8xCnNpeHRpZXRoLzUxTQpzaXh0aWV0aHMvMQpzaXh0eS9TTUgKc2l6YWJsZS81CnNpemUncwpzaXplLzE0QUdEUwpzaXplci8xCnNpemluZy8xNE0Kc2l6emxlLzQxRFJTTVpHCnNrYS8xTQpza2F0ZS8xNDVNWkdEUlMKc2thdGVib2FyZC8xNE1EUlNaRwpza2F0ZWJvYXJkZXIvMU0Kc2thdGVib2FyZGluZy80MU0Kc2thdGVyLzFNCnNrYXRpbmcvNDFNCnNrZWRhZGRsZS80MU1HRFMKc2tlZXQvMTRaTVIKc2tlaW4vMTRNUwpza2VsZXRhbC8xNQpza2VsZXRvbi8xNFNNCnNrZXB0aWMvMTVTTQpza2VwdGljYWwvNVkKc2tlcHRpY2lzbS8xTQpza2V0Y2gvNDE1TURSU1pHCnNrZXRjaGJvb2svMVMKc2tldGNoZXIvMU0Kc2tldGNoaWx5Lwpza2V0Y2hpbmVzcy8xTQpza2V0Y2hwYWQvMVMKc2tldGNoeS81UlRQCnNrZXcvNDUxTURSWkdTCnNrZXdiYWxkLzUxUwpza2V3ZXIvMTQ1TURHCnNraS8xNFNaR01EUgpza2lib2IvMTRTCnNraWQvMTRNUwpza2lkZGVkLzQKc2tpZGRpbmcvNDEKc2tpZHBhbi8xUwpza2llci8xTQpza2lmZi8xNFNNCnNraWZmbGUvMQpza2lpbmcvNDFNCnNraWxsJ3MKc2tpbGwvMTU0Q1NECnNraWxsZWQvNTRVCnNraWxsZXQvMTRTTQpza2lsbGZ1bC81VVkKc2tpbGxmdWxuZXNzLzFNCnNraW0vNDUxTVMKc2tpbW1lZC80CnNraW1tZXIvMTRTTQpza2ltbWluZy80MQpza2ltcC80NTFTREcKc2tpbXBpbHkvCnNraW1waW5lc3MvMU0Kc2tpbXB5LzUxUlRQCnNraW4vMTRNUwpza2luY2FyZS8xTQpza2luZmxpbnQvMU1TCnNraW5mdWwvMQpza2luaGVhZC8xTVMKc2tpbmxlc3MvNQpza2lubmVkLzU0CnNraW5uaW5lc3MvMU0Kc2tpbm5pbmcvNDUxCnNraW5ueS81MTRSTVRQCnNraW50LzUKc2tpbnRpZ2h0LzUKc2tpcC80MU1TCnNraXBwZWQvNApza2lwcGVyLzE0U01ERwpza2lwcGluZy80MQpza2lybWlzaC8xNFpHTURSUwpza2lydC8xNFNNREcKc2tpdC8xNE1TCnNraXR0ZXIvNDFHU0QKc2tpdHRpc2gvNVlQCnNraXR0aXNobmVzcy8xTQpza2l0dGxlLzE0Uwpza2l2ZS80MURSU1pHCnNraXZ2eS8xNERTTUcKc2tvYWwvNFNNCnNrdWEvMTRTCnNrdWxkdWdnZXJ5LzFNCnNrdWxrLzE0U0RSWkcKc2t1bGtlci8xTQpza3VsbC8xNFNNCnNrdWxsY2FwLzFNUwpza3Vuay8xNFNNREcKc2t5LzE0R1NNCnNreWNhcC8xU00Kc2t5ZGl2ZS8xNERSU1pHCnNreWRpdmVyLzFNCnNreWRpdmluZy8xNE0Kc2t5amFjay80MUpaR1NEUgpza3lqYWNrZXIvMU0Kc2t5amFja2luZy80MU0Kc2t5bGFyay8xNFNHTUQKc2t5bGlnaHQvMU1TCnNreWxpbmUvMTRTTQpza3lyb2NrZXQvMTRHU01ECnNreXNjcmFwZXIvMVNNCnNreXdhcmQvNVMKc2t5d3JpdGVyLzFTTQpza3l3cml0aW5nLzFNCnNsYWIvMTQ1TVMKc2xhYmJlZC80CnNsYWJiaW5nLzQxCnNsYWNrLzE1NFBYWlRHTUROUllTCnNsYWNrZW4vNERHCnNsYWNrZXIvMU0Kc2xhY2tuZXNzLzFNCnNsYWNrcy8xNE0Kc2xhZy8xNE1TCnNsYWdnZWQvNApzbGFnZ2luZy80CnNsYWdoZWFwLzFTCnNsYWluLzQxCnNsYWtlLzQxR0RTCnNsYWxvbS8xNE1TREcKc2xhbS80MU1TCnNsYW1tZWQvNDUKc2xhbW1lci8xU00Kc2xhbW1pbmcvNDUxCnNsYW5kZXIvMTRNWkdEUlMKc2xhbmRlcmVyLzFNCnNsYW5kZXJvdXMvNQpzbGFuZy8xNE0Kc2xhbmd5LzVSVApzbGFudC8xNDVNU0RHCnNsYW50aW5nLzU0MVkKc2xhbnR3aXNlLzUKc2xhcC8xNDVNUwpzbGFwZGFzaC81NApzbGFwaGFwcHkvNQpzbGFwcGVkLzQKc2xhcHBlci8xUwpzbGFwcGluZy80MTUKc2xhcHN0aWNrLzFNCnNsYXNoLzE0N01EUlNaRwpzbGFzaGVyLzFNCnNsYXQvMTRNREdTCnNsYXRlLzE1NFNNCnNsYXRoZXIvNDFTREcKc2xhdHRlZC81NApzbGF0dGVybi8xU01ZCnNsYXVnaHRlci8xNE1EUlpHUwpzbGF1Z2h0ZXJlci8xTQpzbGF1Z2h0ZXJob3VzZS8xTVMKc2xhdmUvMTREUlNNWkcKc2xhdmVob2xkZXIvMU1TCnNsYXZlci80MU1ERwpzbGF2ZXJ5LzE1TQpzbGF2aXNoLzVQWQpzbGF2aXNobmVzcy8xTQpzbGF3LzFNCnNsYXkvNDFEUlpHSlMKc2xheWVyLzFNCnNsYXlpbmcvNDFNCnNsZWF6ZS8xNFNNCnNsZWF6ZWJhZy8xUwpzbGVhemViYWxsLzFTCnNsZWF6aWx5LwpzbGVhemluZXNzLzFNCnNsZWF6eS81UFJUCnNsZWQvMTRNUwpzbGVkZGVkLzQKc2xlZGRlci8xU00Kc2xlZGRpbmcvNDEKc2xlZGdlLzE0RFNNRwpzbGVkZ2VoYW1tZXIvMTQ1R1NNRApzbGVlay81NDFTRFJZVEdQCnNsZWVrbmVzcy8xTQpzbGVlcC80MVNNUlpHCnNsZWVwZXIvMTRNCnNsZWVwaWx5LwpzbGVlcGluZXNzLzFNCnNsZWVwbGVzcy81UFkKc2xlZXBsZXNzbmVzcy8xTQpzbGVlcG92ZXIvMVNNCnNsZWVwd2Fsay80WkdTRFIKc2xlZXB3YWxrZXIvMU0Kc2xlZXB3YWxraW5nLzE0TQpzbGVlcHdlYXIvMU0Kc2xlZXB5LzUxUlBUCnNsZWVweWhlYWQvMU1TCnNsZWV0LzE0U01ERwpzbGVldHkvNQpzbGVldmUvMTREU00Kc2xlZXZlbGVzcy81CnNsZWlnaC8xNDVNREcKc2xlaWdocy8xNApzbGVpZ2h0LzFTTQpzbGVuZGVyLzVQUlQKc2xlbmRlcml6ZS80RFNHCnNsZW5kZXJuZXNzLzFNCnNsZXB0LzQKc2xldXRoLzE0TUcKc2xldXRocy8xNApzbGV3LzE0TURHUwpzbGljZS8xNDVEUlNNWkcKc2xpY2VyLzFNCnNsaWNrLzUxNFNNRFJZWlRHUApzbGlja2VyLzUxNE0Kc2xpY2tuZXNzLzFNCnNsaWQvNApzbGlkZS80MVJTTVpHCnNsaWRlci8xTQpzbGlkZXNob3cvMU1TCnNsaWdodC81NDFTTURSWVRHUApzbGlnaHRuZXNzLzFNCnNsaW0vNTE0UFMKc2xpbWUvMTRNCnNsaW1pbmVzcy8xTQpzbGltbGluZS81CnNsaW1tZWQvNApzbGltbWVyLzUxUwpzbGltbWVzdC81CnNsaW1taW5nLzU0MU0Kc2xpbW5lc3MvMU0Kc2xpbXkvNTFSVFAKc2xpbmcvNDFTTUcKc2xpbmdiYWNrLzFTCnNsaW5nc2hvdC8xNFNNCnNsaW5rLzQxNVNHCnNsaW5reS81UlQKc2xpcC80MU1TCnNsaXBjYXNlLzFNUwpzbGlwY292ZXIvMU1TCnNsaXBrbm90LzFNUwpzbGlwcGFnZS8xTVMKc2xpcHBlZC81NApzbGlwcGVyLzE1NFNNCnNsaXBwZXJpbmVzcy8xTQpzbGlwcGVyeS81UFJUCnNsaXBwaW5nLzQxCnNsaXBweS81CnNsaXBzaG9kLzUKc2xpcHN0cmVhbS8xNFNNCnNsaXB3YXkvMVNNCnNsaXQvMTQ1TVMKc2xpdGhlci80NTFTR01ECnNsaXRoZXJ5LzUKc2xpdHRlci8xCnNsaXR0aW5nLzQxCnNsaXZlci8xNEdTTUQKc2xvYi8xNE1TCnNsb2JiZWQvNApzbG9iYmVyLzE0TURTRwpzbG9iYmVyeS81MQpzbG9iYmluZy80CnNsb2UvMU1TCnNsb2cvMTRNUwpzbG9nYW4vMVNNCnNsb2dhbmVlcmluZy80MQpzbG9nZ2VkLzQKc2xvZ2dpbmcvNDEKc2xvb3AvMVNNCnNsb3AvMTRNREdTCnNsb3BlLzE0NVNNCnNsb3BwZWQvNApzbG9wcGlseS8Kc2xvcHBpbmVzcy8xTQpzbG9wcGluZy80MQpzbG9wcHkvNVBUUgpzbG9wcy8xNE0Kc2xvc2gvNDFEU0cKc2xvdC8xNE1TCnNsb3RoLzE0TQpzbG90aGZ1bC81WVAKc2xvdGhmdWxuZXNzLzFNCnNsb3Rocy8xCnNsb3R0ZWQvNTQKc2xvdHRpbmcvNDEKc2xvdWNoLzE0WkdNRFJTCnNsb3VjaGVyLzFNCnNsb3VjaHkvNVRSCnNsb3VnaC8xNEdNRApzbG91Z2hzLzE0CnNsb3Zlbi8xU01ZCnNsb3ZlbmxpbmVzcy8xTQpzbG92ZW5seS81UFRSCnNsb3cvNTQxRFJZVEdTUApzbG93Y29hY2gvMVMKc2xvd2Rvd24vMVNNCnNsb3duZXNzLzFNCnNsb3dwb2tlLzFTTQpzbHVkZ2UvMTRNCnNsdWRneS81UlQKc2x1ZS80MU1HRFMKc2x1Zy8xNE1TCnNsdWdnYXJkLzFNUwpzbHVnZ2VkLzQKc2x1Z2dlci8xU00Kc2x1Z2dpbmcvNDEKc2x1Z2dpc2gvNVBZCnNsdWdnaXNobmVzcy8xTQpzbHVpY2UvMTREU01HCnNsdW0vMTRNUwpzbHVtYmVyLzE0R1NNRApzbHVtYmVyb3VzLzUKc2x1bWRvZy8xU00Kc2x1bWxvcmQvMU1TCnNsdW1tZWQvNApzbHVtbWVyLzEKc2x1bW1pbmcvNDEKc2x1bW15LzVSVApzbHVtcC80MVNNREcKc2x1bmcvNApzbHVuay8xNApzbHVyLzE0TVMKc2x1cnAvNDFTTURHCnNsdXJyZWQvNApzbHVycmluZy80MQpzbHVycnkvMTQ1TQpzbHVzaC8xNE0Kc2x1c2hpbmVzcy8xTQpzbHVzaHkvNTFSUFQKc2x1dC8xNE1TCnNsdXR0aXNoLzUKc2x1dHR5LzVSVApzbHkvNVRSWQpzbHluZXNzLzFNCnNtYWNrLzE0U01EUlpHCnNtYWNrZXIvMU0Kc21hbGwvNTE0U01SVFAKc21hbGxob2xkZXIvMVMKc21hbGxob2xkaW5nLzFTCnNtYWxsaXNoLzUKc21hbGxuZXNzLzFNCnNtYWxscG94LzFNCnNtYXJteS81UlQKc21hcnQvNDUxU01ETlJZWFRHUApzbWFydGVuLzRERwpzbWFydG5lc3MvMU0Kc21hcnRwaG9uZS8xU00Kc21hcnRzLzQxTQpzbWFydHdhdGNoLzFNUwpzbWFydHkvMVNNCnNtYXJ0eXBhbnRzLzFNCnNtYXNoLzE0TURSU1pHCnNtYXNoZXIvMU0Kc21hc2h1cC8xU00Kc21hdHRlcmluZy8xNE1TCnNtZWFyLzQxU01ERwpzbWVhcnkvNVJUCnNtZWxsLzE0U01ERwpzbWVsbGluZXNzLzFNCnNtZWxseS81MVJQVApzbWVsdC8xNFNNRFJaRwpzbWVsdGVyLzFNCnNtaWRnZW4vMU1TCnNtaWxheC8xTQpzbWlsZS8xNERTTUcKc21pbGV5LzUxU00Kc21pbGluZy81MTRZCnNtaXJjaC8xNEdNRFMKc21pcmsvMTQ1U01ERwpzbWl0ZS80MVNHCnNtaXRoLzE0TQpzbWl0aGVyZWVucy8xTQpzbWl0aHMvMTQKc21pdGh5LzE0U00Kc21pdHRlbi81NApzbW9jay8xNTRTTURHCnNtb2NraW5nLzE0TQpzbW9nLzE0TVMKc21vZ2d5LzVSVApzbW9rZS8xNERSU01aRwpzbW9rZWhvdXNlLzFNUwpzbW9rZWxlc3MvNQpzbW9rZXIvMU0Kc21va2VzY3JlZW4vMVNNCnNtb2tlc3RhY2svMVNNCnNtb2tleS81MQpzbW9raW5lc3MvMU0Kc21va2luZy80NTFNCnNtb2t5LzVSVFAKc21vbGRlci80MVNHTUQKc21vb2NoLzE0TURTRwpzbW9vY2h5LzUKc21vb3RoLzUxNFBEUllURwpzbW9vdGhpZS8xTVMKc21vb3RobmVzcy8xTQpzbW9vdGhzLzE0CnNtb3JnYXNib3JkLzFTTQpzbW90ZS80CnNtb3RoZXIvNDFHU01ECnNtdWRnZS8xNERTTUcKc211ZGd5LzVUUgpzbXVnLzU0MVlQCnNtdWdnZXIvNQpzbXVnZ2VzdC81CnNtdWdnbGUvNFpHRFJTCnNtdWdnbGVyLzFNCnNtdWdnbGluZy80MU0Kc211Z25lc3MvMU0Kc211cmYvMTRTCnNtdXQvMTRNUwpzbXV0dGluZXNzLzFNCnNtdXR0eS81NFRSUApzbmFjay8xNFNNREcKc25hZmZsZS8xNERTTUcKc25hZnUvMTRTTQpzbmFnLzE0TVMKc25hZ2dlZC80NQpzbmFnZ2luZy80MQpzbmFpbC8xNFNNREcKc25ha2UvMTREU01HCnNuYWtlYml0ZS8xTVMKc25ha2VsaWtlLzUKc25ha2Vza2luLzE1CnNuYWt5LzVSVApzbmFwJ3MKc25hcC8xNDVVUwpzbmFwZHJhZ29uLzFTTQpzbmFwcGVkLzRVCnNuYXBwZXIvMTRNUwpzbmFwcGlseS8Kc25hcHBpbmVzcy8xTQpzbmFwcGluZy80MVUKc25hcHBpc2gvNVlQCnNuYXBwaXNobmVzcy8xTQpzbmFwcHkvNVRSUApzbmFwc2hvdC8xNFNNCnNuYXJlLzE0RFNNRwpzbmFyZi80U0RHCnNuYXJrLzE0UwpzbmFya3kvNVRSCnNuYXJsJ3MKc25hcmwvNDFVU0RHCnNuYXJsaW5nLzUxNFkKc25hcmx5LzVUUgpzbmF0Y2gvNDFaR01EUlMKc25hdGNoZXIvMU0Kc25henppbHkvCnNuYXp6eS81VFIKc25lYWsvMTQ1U01EUlpHCnNuZWFrZXIvMU0Kc25lYWtpbHkvCnNuZWFraW5lc3MvMU0Kc25lYWtpbmcvMTU0WQpzbmVha3kvNTFUUlAKc25lZXIvNDFTSk1ERwpzbmVlcmluZy81NDFZCnNuZWV6ZS80MURTTUcKc25pY2svNDFTRFJaRwpzbmlja2VyLzE0TURHCnNuaWRlLzUxUllUCnNuaWZmLzQxU01EUlpHCnNuaWZmZXIvMU0Kc25pZmZsZS80MURTTUcKc25pZmZ5LzVSVApzbmlmdGVyLzQxU00Kc25pcC80MU1EUlpHUwpzbmlwZS8xNFNNCnNuaXBlci8xTQpzbmlwcGVkLzQ1CnNuaXBwZXQvMTRTTQpzbmlwcGluZy80MQpzbmlwcHkvNVJUCnNuaXBzLzE0TQpzbml0LzFNUwpzbml0Y2gvNDFNRFNHCnNuaXZlbC80MVNNRFJaRwpzbml2ZWxlci8xTQpzbm9iLzFNUwpzbm9iYmVyeS8xTQpzbm9iYmlzaC81UFkKc25vYmJpc2huZXNzLzFNCnNub2JieS81UlQKc25vZy80MVMKc25vZ2dlZC80CnNub2dnaW5nLzQKc25vb2QvMTRTTQpzbm9va2VyLzE0TURTRwpzbm9vcC80MVNNRFJaRwpzbm9vcGVyLzFNCnNub29weS81VFIKc25vb3QvMTRTTQpzbm9vdGlseS8Kc25vb3RpbmVzcy8xTQpzbm9vdHkvNVBUUgpzbm9vemUvNDFEU01HCnNub3JlLzQxRFJTTVpHCnNub3Jlci8xTQpzbm9ya2VsLzE0WkdNRFJTCnNub3JrZWxlci8xTQpzbm9ya2VsaW5nLzE0TQpzbm9ydC8xNFNNRFJaRwpzbm9ydGVyLzFNCnNub3QvMTRNUwpzbm90dGlseS8Kc25vdHRpbmVzcy8xTQpzbm90dHkvNTFUUFIKc25vdXQvMTRTTQpzbm93LzE0TURHUwpzbm93YmFsbC8xNTRHU01ECnNub3diYW5rLzFTTQpzbm93YmlyZC8xU00Kc25vd2Jsb3dlci8xTVMKc25vd2JvYXJkLzE0WkdNRFJTCnNub3dib2FyZGVyLzFNCnNub3dib2FyZGluZy8xNE0Kc25vd2JvdW5kLzUKc25vd2RyaWZ0LzFTTQpzbm93ZHJvcC8xNFNNCnNub3dmYWxsLzFTTQpzbm93ZmllbGQvMVNNCnNub3dmbGFrZS8xNFNNCnNub3dpbmVzcy8xTQpzbm93bGluZS8xCnNub3dtYW4vMU0Kc25vd21lbi8xCnNub3dtb2JpbGUvMTREU01HCnNub3dwbG93LzE0U0dNRApzbm93c2hlZC8xCnNub3dzaG9lLzE0U00Kc25vd3Nob2VpbmcvNDEKc25vd3N0b3JtLzFTTQpzbm93c3VpdC8xU00Kc25vd3kvNTFQUlQKc251Yi81MTRNUwpzbnViYmVkLzQKc251YmJpbmcvNDEKc251ZmYvMTRTTURSWVpHCnNudWZmYm94LzFNUwpzbnVmZmVyLzFNCnNudWZmbGUvNDFNR0RTCnNudWcvNTE0TVlTUApzbnVnZ2VkLzQKc251Z2dlci8xNQpzbnVnZ2VzdC81CnNudWdnaW5nLzQKc251Z2dsZS8xNE1HRFMKc251Z25lc3MvMU0Kc28vNzU4MX4Kc29hay80MU1ER1NKCnNvYWtpbmcvNDE1TQpzb2FwLzE0TURHUwpzb2FwYm94LzE0TVMKc29hcGluZXNzLzFNCnNvYXBzdG9uZS8xNE0Kc29hcHN1ZHMvMU0Kc29hcHkvNTFSUFQKc29hci80MU1ER1MKc29iLzE0U00Kc29iYmVkLzQKc29iYmluZy80MTVZCnNvYmVyLzU0U0RSWVBURwpzb2Jlcm5lc3MvMU0Kc29icmlldHkvMUlNCnNvYnJpcXVldC8xU00Kc29jLzEKc29jY2VyLzE0TQpzb2NpYWJpbGl0eS8xTQpzb2NpYWJsZS81MVNNCnNvY2lhYmx5Lwpzb2NpYWwvNTFTTVkKc29jaWFsaXNtLzFNCnNvY2lhbGlzdC81MVNNCnNvY2lhbGlzdGljLzUKc29jaWFsaXRlLzFTTQpzb2NpYWxpemF0aW9uLzFNCnNvY2lhbGl6ZS80RFNHCnNvY2lldGFsLzUKc29jaWV0eS8xU00Kc29jaW9lY29ub21pYy81CnNvY2lvZWNvbm9taWNhbGx5Lwpzb2Npb2xvZ2ljYWwvNVkKc29jaW9sb2dpc3QvMVNNCnNvY2lvbG9neS8xTQpzb2Npb3BhdGgvMU0Kc29jaW9wYXRocy8xCnNvY2lvcG9saXRpY2FsLzUKc29jay8xNDVNREdTCnNvY2tldC8xNFNNCnNvY2tleWUvMVNNCnNvZC8xNDVTTQpzb2RhLzFNUwpzb2RkZWQvNApzb2RkZW4vNTRZCnNvZGRpbmcvNDUKc29kaXVtLzFNCnNvZG9taXRlLzFNUwpzb2RvbWl6ZS80R0RTCnNvZG9teS8xTQpzb2V2ZXIvCnNvZmEvMTRNUwpzb2Z0LzUxTlJZWFRQCnNvZnRiYWNrLzEKc29mdGJhbGwvMU1TCnNvZnRib3VuZC81CnNvZnRjb3Zlci81MQpzb2Z0ZW4vNERSWkcKc29mdGVuZXIvMU0Kc29mdGhlYXJ0ZWQvNQpzb2Z0bmVzcy8xTQpzb2Z0d2FyZS8xTQpzb2Z0d29vZC8xU00Kc29mdHkvMVNNCnNvZ2dpbHkvCnNvZ2dpbmVzcy8xTQpzb2dneS81UlRQCnNvaWduZS81CnNvaWduZWUvNQpzb2lsLzE0TURHUwpzb2lsZWQvNDVVCnNvaXJlZS8xU00Kc29qb3Vybi8xNFpHTURSUwpzb2pvdXJuZXIvMU0Kc29sLzFTTQpzb2xhY2UvMTREU01HCnNvbGFyLzUxCnNvbGFyaWEvMQpzb2xhcml1bS8xTQpzb2xkLzQxCnNvbGRlci8xNFpHU01EUgpzb2xkZXJlci8xTQpzb2xkaWVyLzE0TURZU0cKc29sZGllcnkvMU0Kc29sZS81MTRGU0RHTQpzb2xlY2lzbS8xU00Kc29sZWx5Lwpzb2xlbW4vNVBUUlkKc29sZW1uZXNzLzFNCnNvbGVtbmlmeS80RFNHCnNvbGVtbml0eS8xU00Kc29sZW1uaXphdGlvbi8xTQpzb2xlbW5pemUvNERTRwpzb2xlbW5uZXNzLzFNCnNvbGVub2lkLzFNUwpzb2xpY2l0LzQxR0RTCnNvbGljaXRhdGlvbi8xU00Kc29saWNpdGVkLzRVCnNvbGljaXRvci8xU00Kc29saWNpdG91cy81UFkKc29saWNpdG91c25lc3MvMU0Kc29saWNpdHVkZS8xTQpzb2xpZC81MVBTTVJZVApzb2xpZGFyaXR5LzFNCnNvbGlkaS8xCnNvbGlkaWZpY2F0aW9uLzFNCnNvbGlkaWZ5LzREU05HCnNvbGlkaXR5LzFNCnNvbGlkbmVzcy8xTQpzb2xpZHVzLzFNCnNvbGlsb3F1aWVzLzE0CnNvbGlsb3F1aXplLzREU0cKc29saWxvcXV5LzE0TQpzb2xpcHNpc20vMU0Kc29saXBzaXN0aWMvNQpzb2xpdGFpcmUvMTVNUwpzb2xpdGFyaW5lc3MvMU0Kc29saXRhcnkvMTVTTVAKc29saXR1ZGUvMU0Kc29sby8xNTRNREdTCnNvbG9pc3QvMU1TCnNvbHN0aWNlLzFNUwpzb2x1YmlsaXR5LzFJTQpzb2x1YmxlLzVNUwpzb2x1dGUncwpzb2x1dGUvNTE0QVhOCnNvbHV0ZXMvMQpzb2x1dGlvbidzL0FFCnNvbHZhYmxlLzVJVQpzb2x2ZS80MUVBRFNHCnNvbHZlZC81NFUKc29sdmVuY3kvMUlNCnNvbHZlbnQvMTVJTVMKc29sdmVyLzFTTQpzb21hdGljLzUKc29tYXRvc2Vuc29yeS81CnNvbWJlci81NFBZCnNvbWJlcm5lc3MvMU0Kc29tYnJlcm8vMU1TCnNvbWUvOH4Kc29tZWJvZHkvODFTTQpzb21lZGF5Lwpzb21laG93Lwpzb21lb25lLzgxTVMKc29tZXBsYWNlLzEKc29tZXJzYXVsdC8xNE1ER1MKc29tZXJzZXQvMTRTTQpzb21lcnNldHRlZC80CnNvbWVyc2V0dGluZy80CnNvbWV0aGluZy84NTQxU00Kc29tZXRpbWUvNVMKc29tZXdheS9TCnNvbWV3aGF0LzgxUwpzb21ld2hlcmUvMQpzb21uYW1idWxpc20vMU0Kc29tbmFtYnVsaXN0LzFTTQpzb21ub2xlbmNlLzFNCnNvbW5vbGVudC81CnNvbi8xNFNNCnNvbmFyLzFTTQpzb25hdGEvMVNNCnNvbmF0aW5hLzFTTQpzb25nLzFNUwpzb25nYmlyZC8xU00Kc29uZ2Jvb2svMVNNCnNvbmdmZXN0LzFTTQpzb25nc3Rlci8xTVMKc29uZ3N0cmVzcy8xTVMKc29uZ3dyaXRlci8xU00Kc29uZ3dyaXRpbmcvMQpzb25pYy81CnNvbm5ldC8xNFNNCnNvbm55LzFTTQpzb25vZ3JhbS8xNFNNCnNvbm9yaXR5LzFNCnNvbm9yb3VzLzVZUApzb25vcm91c25lc3MvMU0Kc29uc29mYml0Y2hlcy8xCnNvb24vNVJUCnNvb3QvMTRNCnNvb3RoLzE1NE1EUlNaRwpzb290aGUvNApzb290aGVyLzUxNE0Kc29vdGhpbmcvNTQxWQpzb290aHNheWVyLzFNUwpzb290aHNheWluZy8xTQpzb290eS81NFJUCnNvcC8xNFNNCnNvcGgvMQpzb3BoaXNtLzFNCnNvcGhpc3QvMU1TCnNvcGhpc3RpYy81MQpzb3BoaXN0aWNhbC81CnNvcGhpc3RpY2F0ZS80NTFEU01HTgpzb3BoaXN0aWNhdGVkLzU0VQpzb3BoaXN0aWNhdGlvbi8xTQpzb3BoaXN0cnkvMVNNCnNvcGhvbW9yZS81MU1TCnNvcGhvbW9yaWMvNQpzb3BvcmlmaWMvMTVNUwpzb3BvcmlmaWNhbGx5Lwpzb3BwZWQvNApzb3BwaW5nLzU0MQpzb3BweS81UlQKc29wcmFuby8xNE1TCnNvcmJldC8xU00Kc29yY2VyZXIvMU1TCnNvcmNlcmVzcy8xTVMKc29yY2VyeS8xTQpzb3JkaWQvNVBZCnNvcmRpZG5lc3MvMU0Kc29yZS81MTRNWVRSU1AKc29yZWhlYWQvMU1TCnNvcmVuZXNzLzFNCnNvcmdodW0vMU0Kc29yb3JpdHkvMVNNCnNvcnJlbC8xNVNNCnNvcnJpbHkvCnNvcnJpbmVzcy8xTQpzb3Jyb3cvMTRTTURHCnNvcnJvd2Z1bC81WVAKc29ycm93ZnVsbmVzcy8xTQpzb3JyeS81MTRSVFAKc29ydC8xNEZBU0dETQpzb3J0YS8Kc29ydGVkLzQ1VQpzb3J0ZXIvMVNNCnNvcnRpZS8xNERTTQpzb3J0aWVpbmcvNApzb3QvMTQ1U00Kc290dGlzaC81CnNvdSd3ZXN0ZXIvMQpzb3UvMVNNSApzb3VmZmxlLzE0U00Kc291Z2gvNDFNREcKc291Z2hzLzQKc291Z2h0LzRVCnNvdWsvMVMKc291bC8xNE1TCnNvdWxmdWwvNTFZUApzb3VsZnVsbmVzcy8xTQpzb3VsbGVzcy81WVAKc291bG1hdGUvMVNNCnNvdW5kLzUxNEpQU01EUllaVEcKc291bmRhbGlrZS8xUwpzb3VuZGJhci8xUwpzb3VuZGJpdGUvMVMKc291bmRib2FyZC8xTVMKc291bmRjaGVjay8xNFMKc291bmRlci81MU0Kc291bmRpbmcvMTU0TQpzb3VuZGxlc3MvNVkKc291bmRuZXNzLzFVTQpzb3VuZHByb29mLzU0R0RTCnNvdW5kcHJvb2ZpbmcvNDFNCnNvdW5kc2NhcGUvMTRTCnNvdW5kdHJhY2svMTRTTQpzb3VwLzE0TURHUwpzb3VwY29uLzFNUwpzb3VweS81UlQKc291ci81MTRNRFJZVEdTUApzb3VyY2UvMTRBRFNNRwpzb3VyZG91Z2gvMU0Kc291cmRvdWdocy8xCnNvdXJpc2gvNQpzb3VybmVzcy8xTQpzb3VycHVzcy8xTVMKc291c2FwaG9uZS8xTVMKc291c2UvMTREU01HCnNvdXRoLzE1NE0Kc291dGhib3VuZC81CnNvdXRoZWFzdC8xNVpNUgpzb3V0aGVhc3Rlci8xTVkKc291dGhlYXN0ZXJuLzUKc291dGhlYXN0d2FyZC81MVMKc291dGhlcmx5LzE1U00Kc291dGhlcm4vNTFTWk1SCnNvdXRoZXJuZXIvMU0Kc291dGhlcm5tb3N0LzUKc291dGhwYXcvMVNNCnNvdXRod2FyZC8xNU1TCnNvdXRod2VzdC8xNVpNUgpzb3V0aHdlc3Rlci8xTVkKc291dGh3ZXN0ZXJuLzUKc291dGh3ZXN0d2FyZC81Uwpzb3V2ZW5pci8xNFNNCnNvdmVyZWlnbi81MTRTTQpzb3ZlcmVpZ250eS8xTQpzb3ZpZXQvMTVTTQpzb3cncwpzb3cvMTRBU0dECnNvd2VyLzE1U00Kc293bi80MUEKc295LzE1NE0Kc295YmVhbi8xTVMKc296emxlZC81NApzcGEvMVNNCnNwYWNlLzE0RFJTTVpHCnNwYWNlY3JhZnQvMU1TCnNwYWNlZmxpZ2h0LzFNUwpzcGFjZW1hbi8xTQpzcGFjZW1lbi8xCnNwYWNlcG9ydC8xU00Kc3BhY2VyLzFNCnNwYWNlc2hpcC8xU00Kc3BhY2VzdWl0LzFTTQpzcGFjZXRpbWUvMQpzcGFjZXdhbGsvMTRTR01ECnNwYWNld29tYW4vMU0Kc3BhY2V3b21lbi8xCnNwYWNleS81CnNwYWNpYWwvNQpzcGFjaWVyLzUKc3BhY2llc3QvNQpzcGFjaW5lc3MvMU0Kc3BhY2luZy80MTVNCnNwYWNpb3VzLzVZUApzcGFjaW91c25lc3MvMU0Kc3BhZGUvMTREU01HCnNwYWRlZnVsLzFNUwpzcGFkZXdvcmsvMU0Kc3BhZGljZXMvMQpzcGFkaXgvMU0Kc3BhZ2hldHRpLzE0TQpzcGFrZS81NApzcGFtLzE0TVMKc3BhbW1lZC80CnNwYW1tZXIvMVNNCnNwYW1taW5nLzQxCnNwYW4vMTRNUwpzcGFuZGV4LzFNCnNwYW5nbGUvMTREU01HCnNwYW5nbHkvNQpzcGFuaWVsLzE0U00Kc3BhbmsvNDFTTURHSgpzcGFua2luZy80NTFNCnNwYW5uZWQvNApzcGFubmVyLzE0U00Kc3Bhbm5pbmcvNDEKc3Bhci8xNE1TCnNwYXJlLzUxNERSU01ZVEdQCnNwYXJlbmVzcy8xTQpzcGFyZXJpYnMvMU0Kc3BhcmluZy81NDFVWQpzcGFyay8xNFNNRFlHCnNwYXJrbGUvMTREUlNNWkcKc3BhcmtsZXIvMU0Kc3Bhcmt5LzUxUlQKc3BhcnJlZC80CnNwYXJyaW5nLzQxCnNwYXJyb3cvMVNNCnNwYXJyb3doYXdrLzFTCnNwYXJzZS81NFJZVFAKc3BhcnNlbmVzcy8xTQpzcGFyc2l0eS8xTQpzcGFydGFuLzUKc3Bhc20vMTRTTQpzcGFzbW9kaWMvNTEKc3Bhc21vZGljYWxseS8Kc3Bhc3RpYy81MVNNCnNwYXQvNDFNUwpzcGF0ZS8xNFNNCnNwYXRoZS8xU00Kc3BhdGlhbC81WQpzcGF0dGVkLzU0CnNwYXR0ZXIvNDFTR01ECnNwYXR0aW5nLzQKc3BhdHVsYS8xNFNNCnNwYXZpbi8xNE1ECnNwYXduLzQxU01ERwpzcGF5LzQxREdTCnNwZWFrLzQxU1JaR0oKc3BlYWtlYXN5LzFTTQpzcGVha2VyLzFNCnNwZWFrZXJwaG9uZS8xUwpzcGVhci8xNDVTTURHCnNwZWFyZmlzaC8xNEdNRFMKc3BlYXJndW4vMQpzcGVhcmhlYWQvMTRHTURTCnNwZWFybWludC8xTQpzcGVjLzE0TVMKc3BlY2lhbC81MTRTTVkKc3BlY2lhbGlzbS8xUwpzcGVjaWFsaXN0LzUxTVMKc3BlY2lhbGl6YXRpb24vMU1TCnNwZWNpYWxpemUvNEdEUwpzcGVjaWFsdHkvMVNNCnNwZWNpZS8xU00Kc3BlY2llcy8xTQpzcGVjaWYvCnNwZWNpZmlhYmxlLzUKc3BlY2lmaWMvNTFNUwpzcGVjaWZpY2FsbHkvCnNwZWNpZmljYXRpb24vMU0Kc3BlY2lmaWNpdHkvMU0Kc3BlY2lmaWVkLzU0VQpzcGVjaWZ5LzRYTlpEUlNHCnNwZWNpbWVuLzFTTQpzcGVjaW91cy81WVAKc3BlY2lvdXNuZXNzLzFNCnNwZWNrLzE0U01ERwpzcGVja2xlLzE0TUdEUwpzcGVjcy8xNE0Kc3BlY3RhY2xlLzFTTQpzcGVjdGFjbGVzLzFNCnNwZWN0YWN1bGFyLzUxTVlTCnNwZWN0YXRlLzREU0cKc3BlY3RhdG9yLzFTTQpzcGVjdGVyLzFBTVMKc3BlY3RyYS8xCnNwZWN0cmFsLzUKc3BlY3Ryb21ldGVyLzFNUwpzcGVjdHJvc2NvcGUvMU1TCnNwZWN0cm9zY29waWMvNQpzcGVjdHJvc2NvcHkvMU0Kc3BlY3RydW0vMU0Kc3BlY3VsYXRlLzREU1hHTlYKc3BlY3VsYXRpb24vMU0Kc3BlY3VsYXRpdmUvNVkKc3BlY3VsYXRvci8xTVMKc3BlZC80MQpzcGVlY2gvMTRNUwpzcGVlY2hpZnkvNERTRwpzcGVlY2hsZXNzLzVZUApzcGVlY2hsZXNzbmVzcy8xTQpzcGVlY2h3cml0ZXIvMVMKc3BlZWQvMTRTTVJaRwpzcGVlZGJvYXQvMTRTTQpzcGVlZGVyLzFNCnNwZWVkaWx5LwpzcGVlZGluZXNzLzFNCnNwZWVkaW5nLzQ1MU0Kc3BlZWRvbWV0ZXIvMU1TCnNwZWVkc3Rlci8xU00Kc3BlZWR1cC8xTVMKc3BlZWR3YXkvMVNNCnNwZWVkd2VsbC8xTQpzcGVlZHkvNTRUUFIKc3BlbGVvbG9naWNhbC81CnNwZWxlb2xvZ2lzdC8xTVMKc3BlbGVvbG9neS8xTQpzcGVsbC8xNEpTTURSWkcKc3BlbGxiaW5kLzRaR1JTCnNwZWxsYmluZGVyLzFNCnNwZWxsYm91bmQvNQpzcGVsbGNoZWNrLzE0TURSWkdTCnNwZWxsY2hlY2tlci8xTQpzcGVsbGRvd24vMVNNCnNwZWxsZXIvMU0Kc3BlbGxpbmcvNDFNCnNwZWx1bmtlci8xTVMKc3BlbHVua2luZy8xNE0Kc3BlbmQvNDFCU1JaRwpzcGVuZGVyLzFNCnNwZW5kaW5nLzE0TQpzcGVuZHRocmlmdC81MU1TCnNwZW50LzU0VQpzcGVybS8xNFNNCnNwZXJtYXRvem9hLzEKc3Blcm1hdG96b29uLzFNCnNwZXJtaWNpZGFsLzUxCnNwZXJtaWNpZGUvMU1TCnNwZXcvNDFNRFJaR1MKc3Bld2VyLzFNCnNwaGFnbnVtLzFNUwpzcGhlcmUvMTRTTQpzcGhlcmljYWwvNVkKc3BoZXJvaWQvNTFTTQpzcGhlcm9pZGFsLzUxCnNwaGluY3Rlci8xTVMKc3BoaW54LzE0TVMKc3BpYy8xUwpzcGljZS8xNERTTUcKc3BpY2lseS8Kc3BpY2luZXNzLzFNCnNwaWN1bGUvMU1TCnNwaWN5LzVQUlQKc3BpZGVyLzE0U00Kc3BpZGVyd2ViLzE0TVMKc3BpZGVyeS81CnNwaWVsLzE0U01ERwpzcGlmZi81MTRTREcKc3BpZmZ5LzUxVFIKc3BpZ290LzE0U00Kc3Bpa2UvMTREU01HCnNwaWtpbmVzcy8xTQpzcGlreS81UlBUCnNwaWxsLzQxU01ERwpzcGlsbGFnZS8xTVMKc3BpbGxvdmVyLzFTTQpzcGlsbHdheS8xTVMKc3Bpbi80MU1TCnNwaW5hY2gvMU0Kc3BpbmFsLzUxU01ZCnNwaW5kbGUvMTRNR0RTCnNwaW5kbHkvNVRSCnNwaW5lLzFTTQpzcGluZWxlc3MvNVlQCnNwaW5ldC8xU00Kc3Bpbmxlc3MvNQpzcGlubmFrZXIvMTRTTQpzcGlubmVyLzFNUwpzcGlubmVyZXQvMVNNCnNwaW5uZXkvMVMKc3Bpbm5pbmcvMTRNCnNwaW5zdGVyLzFTTQpzcGluc3Rlcmhvb2QvMU0Kc3BpbnN0ZXJpc2gvNQpzcGlueS81MVJUCnNwaXJhY2xlLzFTTQpzcGlyYWwvMTU0U0dNRFkKc3BpcmUncwpzcGlyZS8xNElGQVMKc3BpcmVhLzFTTQpzcGlyaXQncwpzcGlyaXQvMTRJU0dECnNwaXJpdGVkLzQ1WQpzcGlyaXRsZXNzLzUKc3Bpcml0dWFsLzUxTVlTCnNwaXJpdHVhbGlzbS8xTQpzcGlyaXR1YWxpc3QvMTVNUwpzcGlyaXR1YWxpc3RpYy81CnNwaXJpdHVhbGl0eS8xTQpzcGlyaXR1b3VzLzUKc3Bpcm9jaGV0ZS8xU00Kc3BpcnkvNQpzcGl0LzE0TURHUwpzcGl0YmFsbC8xNFNNCnNwaXRlLzE0K0FTTQpzcGl0ZWZ1bC81UFkKc3BpdGVmdWxsZXIvNQpzcGl0ZWZ1bGxlc3QvNQpzcGl0ZWZ1bG5lc3MvMU0Kc3BpdGZpcmUvMVNNCnNwaXR0ZWQvNDUKc3BpdHRpbmcvNDEKc3BpdHRsZS8xNE0Kc3BpdHRvb24vMU1TCnNwaXYvMVMKc3BsYW5jaG5pYy81CnNwbGFzaC8xNEdNRFMKc3BsYXNoZG93bi8xTVMKc3BsYXNoaWx5LwpzcGxhc2hpbmVzcy8xTQpzcGxhc2h5LzVSVFAKc3BsYXQvMTRTTQpzcGxhdHRlZC80CnNwbGF0dGVyLzE0R1NNRApzcGxhdHRpbmcvNDEKc3BsYXkvNDUxU01ERwpzcGxheWZlZXQvMQpzcGxheWZvb3QvMU1ECnNwbGVlbi8xNFNNCnNwbGVuZGlkLzVSWVQKc3BsZW5kb3IvMU1TCnNwbGVuZG9yb3VzLzUKc3BsZW5lY3RvbXkvMQpzcGxlbmV0aWMvNTEKc3BsaWNlLzE0RFJTTVpHCnNwbGljZXIvMU0Kc3BsaWZmLzE0UwpzcGxpbmUvMTRTCnNwbGludC8xNFNaR01EUgpzcGxpbnRlci8xNE1ERwpzcGxpbnRlcnkvNQpzcGxpdC80NTFTTQpzcGxpdHRpbmcvMTU0TVMKc3Bsb2RnZS8xNFMKc3Bsb3NoLzQxRFNHCnNwbG90Y2gvMTRNRFNHCnNwbG90Y2h5LzVUUgpzcGx1cmdlLzQxRFNNRwpzcGx1dHRlci8xNEdNRFMKc3BvaWwncwpzcG9pbC80MUNTRFJaRwpzcG9pbGFnZS8xTQpzcG9pbGVkLzQ1VQpzcG9pbGVyLzE0Q00Kc3BvaWxzcG9ydC8xNU1TCnNwb2tlLzE0U00Kc3Bva2VuLzU0VQpzcG9rZXNtYW4vMU0Kc3Bva2VzbWVuLzEKc3Bva2VzcGVvcGxlLzEKc3Bva2VzcGVyc29uLzFNUwpzcG9rZXN3b21hbi8xTQpzcG9rZXN3b21lbi8xCnNwb2xpYXRpb24vMUNNCnNwb25nZS8xNERSU01aRwpzcG9uZ2VyLzFNCnNwb25naW5lc3MvMU0Kc3Bvbmd5LzVSUFQKc3BvbnNvci8xNE1ER1MKc3BvbnNvcnNoaXAvMU0Kc3BvbnRhbmVpdHkvMU0Kc3BvbnRhbmVvdXMvNVkKc3Bvb2YvMTU0U01ERwpzcG9vay8xNFNNREcKc3Bvb2tpbmVzcy8xTQpzcG9va3kvNVJQVApzcG9vbC8xNFNNREcKc3Bvb24vMTRTTURHCnNwb29uYmlsbC8xTVMKc3Bvb25lcmlzbS8xTVMKc3Bvb25mdWwvMVNNCnNwb29yLzE0U01ERwpzcG9yYWRpYy81CnNwb3JhZGljYWxseS8Kc3BvcmUvMTREU01HCnNwb3JyYW4vMVMKc3BvcnQvMTRTTURHVgpzcG9ydGluZXNzLzFNCnNwb3J0aW5nLzQ1MVkKc3BvcnRpdmUvNTFZCnNwb3J0c2Nhc3QvMU1SWkdTCnNwb3J0c2Nhc3Rlci8xTQpzcG9ydHNtYW4vMU0Kc3BvcnRzbWFubGlrZS81VQpzcG9ydHNtYW5zaGlwLzFNCnNwb3J0c21lbi8xCnNwb3J0c3Blb3BsZS8xCnNwb3J0c3BlcnNvbi8xCnNwb3J0c3dlYXIvMU0Kc3BvcnRzd29tYW4vMU0Kc3BvcnRzd29tZW4vMQpzcG9ydHN3cml0ZXIvMVNNCnNwb3J0eS81VFBSCnNwb3QvMTQ1Q01TCnNwb3RsZXNzLzVQWQpzcG90bGVzc25lc3MvMU0Kc3BvdGxpZ2h0LzE0R1NNRApzcG90bGl0LzQKc3BvdHRlZC81NApzcG90dGVyLzFNUwpzcG90dGlseS8Kc3BvdHRpbmVzcy8xTQpzcG90dGluZy80MQpzcG90dHkvNTFUUFIKc3BvdXNhbC81MU1TCnNwb3VzZS8xNFNNCnNwb3V0LzE0U01ERwpzcHJhaW4vNDFHU01ECnNwcmFuZy80CnNwcmF0LzE0U00Kc3ByYXdsLzQxR1NNRApzcHJheSdzCnNwcmF5LzE0QVNERwpzcHJheWVyLzFNUwpzcHJlYWQvNDFaR0JTTVIKc3ByZWFkZWFnbGVkLzQKc3ByZWFkZXIvMU0Kc3ByZWFkc2hlZXQvMTRNUwpzcHJlZS8xNERTTQpzcHJlZWluZy80CnNwcmlnLzE0U00Kc3ByaWdnZWQvNApzcHJpZ2h0bGluZXNzLzFNCnNwcmlnaHRseS81UlRQCnNwcmluZy80MUdTTQpzcHJpbmdib2FyZC8xNE1TCnNwcmluZ2Jvay8xTVMKc3ByaW5naWx5LwpzcHJpbmdpbmVzcy8xTQpzcHJpbmdsaWtlLzUKc3ByaW5ndGltZS8xTQpzcHJpbmd5LzVSUFQKc3ByaW5rbGUvNDFEUlNKTVpHCnNwcmlua2xlci8xNE0Kc3ByaW5rbGluZy80MU0Kc3ByaW50LzE0WkdTTURSCnNwcmludGVyLzFNCnNwcml0ZS8xNFNNCnNwcml0ei8xNFpHTURSUwpzcHJpdHplci8xTQpzcHJvY2tldC8xTVMKc3Byb2cvMTRTCnNwcm91dC8xNEdTTUQKc3BydWNlLzE1NERSU1BNWVRHCnNwcnVjZW5lc3MvMU0Kc3BydW5nLzQ1CnNwcnkvNVJZVApzcHJ5bmVzcy8xTQpzcHVkLzE0Mk1TCnNwdW1lLzE0RFNNRwpzcHVtb25pLzFNCnNwdW15LzUKc3B1bi80CnNwdW5rLzE0U00Kc3B1bmt5LzVUUgpzcHVyLzE0TVMKc3B1cmdlLzE0TQpzcHVyaW91cy81UFkKc3B1cmlvdXNuZXNzLzFNCnNwdXJuLzQxU0RHCnNwdXJyZWQvNDUKc3B1cnJpbmcvNDEKc3B1cnQvNDFTTURHCnNwdXRhLzEKc3B1dG5pay8xTVMKc3B1dHRlci8xNE1ER1MKc3B1dHVtLzFNCnNweS8xNEdEU00Kc3B5Z2xhc3MvMU1TCnNweW1hc3Rlci8xUwpzcHl3YXJlLzFNCnNxLzUKc3FxCnNxdWFiLzE0NVNNCnNxdWFiYmxlLzE0TVpHRFJTCnNxdWFiYmxlci8xTQpzcXVhZC8xNFNNCnNxdWFkcm9uLzE0TVMKc3F1YWxpZC81MVBUUlkKc3F1YWxpZG5lc3MvMU0Kc3F1YWxsLzQxU0dNRApzcXVhbGx5LzUKc3F1YWxvci8xTQpzcXVhbW91cy81CnNxdWFuZGVyLzRHRFMKc3F1YXJlLzE1NFBEUlNNWVRHCnNxdWFyZW5lc3MvMU0Kc3F1YXJpc2gvNQpzcXVhc2gvMTRHTURTCnNxdWFzaHkvNVRSCnNxdWF0LzUxNFNNUApzcXVhdG5lc3MvMU0Kc3F1YXR0ZWQvNApzcXVhdHRlci8xNU1TCnNxdWF0dGVzdC81CnNxdWF0dGluZy8xNApzcXVhdy8xU00Kc3F1YXdrLzE0U1pHTURSCnNxdWF3a2VyLzFNCnNxdWVhay8xNFNaR01EUgpzcXVlYWtlci8xTQpzcXVlYWtpbHkvCnNxdWVha2luZXNzLzFNCnNxdWVha3kvNVRSUApzcXVlYWwvMTRTWkdNRFIKc3F1ZWFsZXIvMU0Kc3F1ZWFtaXNoLzVQWQpzcXVlYW1pc2huZXNzLzFNCnNxdWVlZ2VlLzE0TURTCnNxdWVlZ2VlaW5nLzQKc3F1ZWV6ZS80MUJNWkdEUlMKc3F1ZWV6ZWJveC8xUwpzcXVlZXplci8xTQpzcXVlbGNoLzQxR01EUwpzcXVlbGNoeS81CnNxdWliLzE0U00Kc3F1aWQvMTRTTQpzcXVpZGd5LzUxCnNxdWlmZnkvNQpzcXVpZ2dsZS8xNERTTUcKc3F1aWdnbHkvNTEKc3F1aW50LzQxNVNUR01EUgpzcXVpcmUvMTREU01HCnNxdWlybS80MVNHTUQKc3F1aXJteS81UlQKc3F1aXJyZWwvMTRTR01ECnNxdWlydC8xNFNHTUQKc3F1aXNoLzE0R01EUwpzcXVpc2h5LzUxUlQKc3JpcmFjaGEvMQpzc2gvNDIKc3QvMQpzdGFiLzE0NU1ZUwpzdGFiYmVkLzQKc3RhYmJlci8xTVMKc3RhYmJpbmcvNTE0TVMKc3RhYmlsaXR5LzFJTQpzdGFiaWxpemF0aW9uLzFDTQpzdGFiaWxpemUvNENEU0cKc3RhYmlsaXplci8xTVMKc3RhYmxlLzE0NURSU01URwpzdGFibGVtYW4vMU0Kc3RhYmxlbWF0ZS8xUwpzdGFibGVtZW4vMQpzdGFibHkvMVUKc3RhY2NhdG8vMTVNUwpzdGFjay8xNFNNREcKc3RhZGl1bS8xTVMKc3RhZmYncwpzdGFmZi8xNEFTREcKc3RhZmZlci8xTVMKc3RhZmZpbmcvNDFNCnN0YWcvMTRNREdTSgpzdGFnZS8xNFNNCnN0YWdlY29hY2gvMTRNUwpzdGFnZWNyYWZ0LzFNCnN0YWdlaGFuZC8xTVMKc3RhZ2VzdHJ1Y2svNQpzdGFnZmxhdGlvbi8xTQpzdGFnZ2VyLzE0TURHUwpzdGFnZ2VyaW5nLzQ1MVkKc3RhZ2luZy80MU0Kc3RhZ25hbmN5LzFNCnN0YWduYW50LzVZCnN0YWduYXRlLzQ1RFNHTgpzdGFnbmF0aW9uLzFNCnN0YWd5LzVSVApzdGFpZC81NFBSWVQKc3RhaWRuZXNzLzFNCnN0YWluLzE0U01ERwpzdGFpbmVkLzU0VQpzdGFpbmxlc3MvNTFNCnN0YWlyLzFTTQpzdGFpcmNhc2UvMTRNUwpzdGFpcndheS8xTVMKc3RhaXJ3ZWxsLzFTTQpzdGFrZS8xNERTTUcKc3Rha2Vob2xkZXIvMU1TCnN0YWtlb3V0LzFTTQpzdGFsYWN0aXRlLzFNUwpzdGFsYWdtaXRlLzFNUwpzdGFsZS81MTREUlNUR1AKc3RhbGVtYXRlLzE0RFNNRwpzdGFsZW5lc3MvMU0Kc3RhbGsvMTRTTURSSlpHCnN0YWxrZXIvMU0Kc3RhbGtpbmcvNDFNCnN0YWxsJ3MKc3RhbGwvMTRTREcKc3RhbGxob2xkZXIvMVMKc3RhbGxpb24vMU1TCnN0YWx3YXJ0LzUxTVlTCnN0YW1lbi8xU00Kc3RhbWluYS8xTQpzdGFtbWVyLzQxWkdNRFJTCnN0YW1tZXJlci8xTQpzdGFtbWVyaW5nLzE0WQpzdGFtcC8xNFNNRFJaRwpzdGFtcGVkZS8xNE1HRFMKc3RhbXBlci8xTQpzdGFuY2UvMTRJU00Kc3RhbmNoLzU0MVRHRFJTCnN0YW5jaGlvbi8xNFNNCnN0YW5kLzQxU01SSlpHCnN0YW5kYWxvbmUvNTEKc3RhbmRhcmQvNTFNUwpzdGFuZGFyZGl6YXRpb24vMU0Kc3RhbmRhcmRpemUvNERTRwpzdGFuZGJ5LzE0TQpzdGFuZGJ5cy8xNApzdGFuZGVlLzFNUwpzdGFuZGVyLzFNCnN0YW5kaW5nLzQ1MU0Kc3RhbmRvZmYvMTU0TVMKc3RhbmRvZmZpc2gvNQpzdGFuZG91dC81MU1TCnN0YW5kcGlwZS8xU00Kc3RhbmRwb2ludC8xTVMKc3RhbmRzdGlsbC8xTVMKc3RhbmsvNDUxCnN0YW56YS8xU00Kc3RhcGgvMU0Kc3RhcGh5bG9jb2NjYWwvNQpzdGFwaHlsb2NvY2NpLzEKc3RhcGh5bG9jb2NjdXMvMU0Kc3RhcGxlLzE0NURSU01aRwpzdGFwbGVyLzFNCnN0YXIvMTRNRFJaR1MKc3RhcmJvYXJkLzE0TQpzdGFyYnVyc3QvMTRTCnN0YXJjaC8xNDVHTURTCnN0YXJjaGlseS8Kc3RhcmNoaW5lc3MvMU0Kc3RhcmNoeS81UFRSCnN0YXJkb20vMU0Kc3RhcmR1c3QvMU0Kc3RhcmUvNDFTTQpzdGFyZXIvMU0Kc3RhcmZpc2gvMTRNUwpzdGFyZnJ1aXQvMQpzdGFyZ2F6ZS80RFJTWkcKc3RhcmdhemVyLzFNCnN0YXJrLzU0UllQWlQKc3RhcmtuZXNzLzFNCnN0YXJsZXNzLzUKc3RhcmxldC8xNU1TCnN0YXJsaWdodC8xTQpzdGFybGluZy8xU00Kc3RhcmxpdC81CnN0YXJyZWQvNDUKc3RhcnJpbmcvNDE1CnN0YXJyeS81VFIKc3RhcnN0cnVjay81CnN0YXJ0LzE0QVNNREcKc3RhcnRlci8xTVMKc3RhcnRsZS80MUdEUwpzdGFydGxpbmcvNDUxWQpzdGFydHVwLzFNUwpzdGFydmF0aW9uLzFNCnN0YXJ2ZS80RFNKRwpzdGFydmVsaW5nLzE1TVMKc3Rhc2gvMTRNRFNHCnN0YXNpcy8xCnN0YXQvNTE0TVMKc3RhdGUvMTQ1RFJTTVlHTkxYCnN0YXRlY3JhZnQvMU0Kc3RhdGVkLzQ1VQpzdGF0ZWhvb2QvMU0Kc3RhdGVob3VzZS8xTVMKc3RhdGVsZXNzLzVQCnN0YXRlbGVzc25lc3MvMU0Kc3RhdGVsaW5lc3MvMU0Kc3RhdGVseS81UFJUCnN0YXRlbWVudC8xNTRBTVMKc3RhdGVtZW50ZWQvNTQKc3RhdGVtZW50aW5nLzE0CnN0YXRlcm9vbS8xTVMKc3RhdGVzaWRlLzUKc3RhdGVzbWFuLzFNCnN0YXRlc21hbmxpa2UvNQpzdGF0ZXNtYW5zaGlwLzFNCnN0YXRlc21lbi8xCnN0YXRlc3dvbWFuLzFNCnN0YXRlc3dvbWVuLzEKc3RhdGV3aWRlLzUxCnN0YXRpYy81MVNNCnN0YXRpY2FsbHkvCnN0YXRpb24vMTRNRFJaRwpzdGF0aW9uYXJ5LzUxCnN0YXRpb25lci8xTQpzdGF0aW9uZXJ5LzE1TQpzdGF0aW9ubWFzdGVyLzFTCnN0YXRpc3RpYy81MTRNUwpzdGF0aXN0aWNhbC81WQpzdGF0aXN0aWNpYW4vMVNNCnN0YXR1YXJ5LzE1TQpzdGF0dWUvMTRTTQpzdGF0dWVzcXVlLzUKc3RhdHVldHRlLzFNUwpzdGF0dXJlLzFNUwpzdGF0dXMvMU1TCnN0YXR1dGUvMU1TCnN0YXR1dG9yaWx5LwpzdGF0dXRvcnkvNQpzdGF1bmNoLzU0MVBEUlNZVEcKc3RhdW5jaG5lc3MvMU0Kc3RhdmUvMTREU01HCnN0YXkvNDE1TURSWkdTCnN0ZC8xCnN0ZGlvCnN0ZWFkLzE0U00Kc3RlYWRmYXN0LzVZUApzdGVhZGZhc3RuZXNzLzFNCnN0ZWFkaWx5L1UKc3RlYWRpbmVzcy8xVU0Kc3RlYWR5LzU0MVRHUERSU00Kc3RlYWsvMTRTTQpzdGVha2hvdXNlLzFTTQpzdGVhbC80MVNNSEcKc3RlYWx0aC8xNDVNCnN0ZWFsdGhpbHkvCnN0ZWFsdGhpbmVzcy8xTQpzdGVhbHRoeS81VFBSCnN0ZWFtLzE0NVNNRFJaRwpzdGVhbWJvYXQvMTRNUwpzdGVhbWVyLzE0TQpzdGVhbWZpdHRlci8xU00Kc3RlYW1maXR0aW5nLzFNCnN0ZWFtaW5lc3MvMU0Kc3RlYW1wdW5rLzE0CnN0ZWFtcm9sbC80WkdEUlMKc3RlYW1yb2xsZXIvMTRNREcKc3RlYW1zaGlwLzFNUwpzdGVhbXkvNVRQUgpzdGVlZC8xU00Kc3RlZWwvMTU0MlNNREcKc3RlZWxpbmVzcy8xTQpzdGVlbG1ha2VyLzFTCnN0ZWVsd29ya2VyLzFTTQpzdGVlbHdvcmtzLzFNCnN0ZWVseS81UFRSCnN0ZWVseWFyZC8xU00Kc3RlZXAvNTE0U01ETlJZUFhURwpzdGVlcGVuLzRHRApzdGVlcGxlLzE0TVMKc3RlZXBsZWNoYXNlLzE0TVMKc3RlZXBsZWphY2svMVNNCnN0ZWVwbmVzcy8xTQpzdGVlci80MVNNREJHCnN0ZWVyYWdlLzFNCnN0ZWVyaW5nLzQxTQpzdGVlcnNtYW4vMU0Kc3RlZXJzbWVuLzEKc3RlZ29zYXVyaS8xCnN0ZWdvc2F1cnVzLzFNUwpzdGVpbi8xU00Kc3RlbGxhci81CnN0ZW0vMTRNUwpzdGVtbGVzcy81CnN0ZW1tZWQvNTQKc3RlbW1pbmcvNDEKc3RlbXdhcmUvMU0Kc3RlbmNoLzE0TVMKc3RlbmNpbC8xNEdNRFMKc3Rlbm8vMVNNCnN0ZW5vZ3JhcGhlci8xU00Kc3Rlbm9ncmFwaGljLzUKc3Rlbm9ncmFwaHkvMU0Kc3Rlbm9zaXMvMQpzdGVudC8xNFNNCnN0ZW50b3JpYW4vNQpzdGVwLzE0SU1TCnN0ZXBicm90aGVyLzFTTQpzdGVwY2hpbGQvMU0Kc3RlcGNoaWxkcmVuLzFNCnN0ZXBkYWQvMU1TCnN0ZXBkYXVnaHRlci8xU00Kc3RlcGZhdGhlci8xU00Kc3RlcGxhZGRlci8xTVMKc3RlcG1vbS8xTVMKc3RlcG1vdGhlci8xU00Kc3RlcHBhcmVudC8xU00Kc3RlcHBlLzFEUlNNWkcKc3RlcHBlci8xTQpzdGVwcGluZ3N0b25lLzFTTQpzdGVwc2lzdGVyLzFNUwpzdGVwc29uLzFNUwpzdGVyZW8vMTU0U00Kc3RlcmVvcGhvbmljLzUKc3RlcmVvc2NvcGUvMU1TCnN0ZXJlb3Njb3BpYy81CnN0ZXJlb3R5cGUvMTREU01HCnN0ZXJlb3R5cGljYWwvNQpzdGVyaWxlLzUKc3RlcmlsaXR5LzFNCnN0ZXJpbGl6YXRpb24vMVNNCnN0ZXJpbGl6ZS80RFJTWkcKc3RlcmlsaXplci8xTQpzdGVybGluZy8xNU0Kc3Rlcm4vNTE0U01SWVBUCnN0ZXJubmVzcy8xTQpzdGVybnVtLzFNUwpzdGVyb2lkLzFNUwpzdGVyb2lkYWwvNQpzdGVydG9yb3VzLzUKc3RldC8xNFMKc3RldGhvc2NvcGUvMTRNUwpzdGV0c29uLzFNUwpzdGV0dGVkLzQKc3RldHRpbmcvNApzdGV2ZWRvcmUvMTRTTQpzdGV3LzE0TURHUwpzdGV3YXJkLzE0R01EUwpzdGV3YXJkZXNzLzFNUwpzdGV3YXJkc2hpcC8xTQpzdGljay8xNDVTTVJaRwpzdGlja2VyLzE0NU0Kc3RpY2tpbHkvCnN0aWNraW5lc3MvMU0Kc3RpY2tsZWJhY2svMVNNCnN0aWNrbGVyLzFNUwpzdGlja3Bpbi8xTVMKc3RpY2t1cC8xTVMKc3RpY2t5LzUxNFBUUlNNCnN0aWZmLzUxNFNNRE5SWVBYVEcKc3RpZmZlbi80WkdEUgpzdGlmZmVuZXIvMU0Kc3RpZmZlbmluZy8xNE0Kc3RpZmZuZXNzLzFNCnN0aWZsZS80MURTSkcKc3RpZmxpbmcvNTQxWQpzdGlnbWEvMVNNCnN0aWdtYXRhLzEKc3RpZ21hdGljLzUxCnN0aWdtYXRpemF0aW9uLzFNCnN0aWdtYXRpemUvNEdEUwpzdGlsZS8xNFNNCnN0aWxldHRvLzE0U00Kc3RpbGwncwpzdGlsbC81MTRJVEdTRApzdGlsbGJpcnRoLzFNCnN0aWxsYmlydGhzLzEKc3RpbGxib3JuLzUxCnN0aWxsZXIvNTEKc3RpbGxuZXNzLzFNCnN0aWx0LzE0U01ECnN0aWx0ZWQvNTRZCnN0aW11bGFudC8xNVNNCnN0aW11bGF0ZS80RFNHTlYKc3RpbXVsYXRpb24vMU0Kc3RpbXVsaS8xCnN0aW11bHVzLzFNCnN0aW5nLzE0WkdTTVIKc3Rpbmdlci8xTQpzdGluZ2lseS8Kc3RpbmdpbmVzcy8xTQpzdGluZ3JheS8xU00Kc3Rpbmd5LzVSVFAKc3RpbmsvNDE1WkdTTVIKc3RpbmtidWcvMVNNCnN0aW5rZXIvMU0Kc3Rpbmt5LzUxUlQKc3RpbnQvNDFHU01ECnN0aXBlbmQvMTRTTQpzdGlwZW5kaWFyeS81MVMKc3RpcHBsZS8xNERTTUcKc3RpcHBsaW5nLzQxTQpzdGlwdWxhdGUvNDVYRFNHTgpzdGlwdWxhdGlvbi8xTQpzdGlyLzQxTVMKc3RpcnJlZC80CnN0aXJyZXIvMVNNCnN0aXJyaW5nLzU0MVNZCnN0aXJydXAvMTVTTQpzdGl0Y2gncwpzdGl0Y2gvMTRBRFNHCnN0aXRjaGVyeS8xTQpzdGl0Y2hpbmcvMTRNCnN0b2F0LzFTTQpzdG9jaGFzdGljLzUKc3RvY2sncwpzdG9jay8xNDVBR1NECnN0b2NrYWRlLzE0RFNNRwpzdG9ja2JyZWVkZXIvMU1TCnN0b2NrYnJva2VyLzFTTQpzdG9ja2Jyb2tpbmcvMU0Kc3RvY2tob2xkZXIvMVNNCnN0b2NraWx5LwpzdG9ja2luZXNzLzFNCnN0b2NraW5ldHRlLzFNCnN0b2NraW5nLzE0U00Kc3RvY2tpc3QvMVMKc3RvY2twaWxlLzE0TUdEUwpzdG9ja3BvdC8xU00Kc3RvY2tyb29tLzFNUwpzdG9ja3Rha2luZy8xTQpzdG9ja3kvNVJUUApzdG9ja3lhcmQvMU1TCnN0b2RnZS80MQpzdG9kZ2lseS8Kc3RvZGdpbmVzcy8xTQpzdG9kZ3kvNVJUUApzdG9naWUvMU1TCnN0b2ljLzE1U00Kc3RvaWNhbC81WQpzdG9pY2lzbS8xTQpzdG9rZS80MURSU1pHCnN0b2tlci8xTQpzdG9sZS80MVNNCnN0b2xlbi80NTEKc3RvbGlkLzVSWVRQCnN0b2xpZGl0eS8xTQpzdG9saWRuZXNzLzFNCnN0b2xvbi8xTVMKc3RvbWFjaC8xNE1EUlpHCnN0b21hY2hhY2hlLzFTTQpzdG9tYWNoZXIvMU0Kc3RvbWFjaHMvMTQKc3RvbXAvNDFHU01ECnN0b25lLzE0NURSU01aRwpzdG9uZW1hc29uLzFNUwpzdG9uZXIvMU0Kc3RvbmV3YWxsLzE0NUdTRApzdG9uZXdhcmUvMU0Kc3RvbmV3YXNoZWQvNQpzdG9uZXdvcmsvMU0Kc3RvbmlseS8Kc3RvbmluZXNzLzFNCnN0b25rZXJlZC80NQpzdG9ua2luZy81NApzdG9ueS81VFJQCnN0b29kLzQKc3Rvb2dlLzE0TVMKc3Rvb2wvMTRTTQpzdG9vcC8xNEdTTUQKc3RvcCdzCnN0b3AvMTRVUwpzdG9wY29jay8xNFNNCnN0b3BnYXAvMTU0U00Kc3RvcGxpZ2h0LzFNUwpzdG9wb3Zlci8xTVMKc3RvcHBhYmxlLzVVCnN0b3BwYWdlLzFNUwpzdG9wcGVkLzQ1VQpzdG9wcGVyLzE0R1NNRApzdG9wcGluZy80MVUKc3RvcHBsZS8xNERTTUcKc3RvcHdhdGNoLzFNUwpzdG9yYWdlLzE0TQpzdG9yZSdzCnN0b3JlLzE0QURTRwpzdG9yZWZyb250LzFNUwpzdG9yZWhvdXNlLzE0TVMKc3RvcmVrZWVwZXIvMVNNCnN0b3Jlcm9vbS8xU00Kc3RvcmsvMVNNCnN0b3JtLzE0R1NNRApzdG9ybWlseS8Kc3Rvcm1pbmVzcy8xTQpzdG9ybXkvNVJQVApzdG9yeS8xNERTTQpzdG9yeWJvYXJkLzE0TVMKc3Rvcnlib29rLzE1U00Kc3Rvcnl0ZWxsZXIvMU1TCnN0b3J5dGVsbGluZy8xTQpzdG91cC8xNFNNCnN0b3V0LzUxNFRTTVJZUApzdG91dGhlYXJ0ZWQvNQpzdG91dG5lc3MvMU0Kc3RvdmUvMTRTTQpzdG92ZXBpcGUvMTRTTQpzdG93LzE0REdTCnN0b3dhZ2UvMU0Kc3Rvd2F3YXkvMU1TCnN0cmFkZGxlLzQxRFJTTVpHCnN0cmFkZGxlci8xTQpzdHJhZmUvNDFNR0RTCnN0cmFnZ2xlLzQxRFJTWkcKc3RyYWdnbGVyLzFNCnN0cmFnZ2x5LzVUUgpzdHJhaWdodC81MTRTUFhUTU5SWQpzdHJhaWdodGF3YXkvMTVTTQpzdHJhaWdodGVkZ2UvNTFTTQpzdHJhaWdodGVuLzRaR0RSCnN0cmFpZ2h0ZW5lci8xTQpzdHJhaWdodGZvcndhcmQvNVlQUwpzdHJhaWdodGZvcndhcmRuZXNzLzFNCnN0cmFpZ2h0bmVzcy8xTQpzdHJhaWdodHdheS8xCnN0cmFpbidzCnN0cmFpbi8xNEZBRFNHCnN0cmFpbmVyLzFBU00Kc3RyYWl0LzUxNE1OU1gKc3RyYWl0ZW4vNEdECnN0cmFpdGphY2tldC8xNFNHTUQKc3RyYWl0bGFjZWQvNQpzdHJhbmQvMTRNRFNHCnN0cmFuZ2UvNTQxUFJZWlQKc3RyYW5nZW5lc3MvMU0Kc3RyYW5nZXIvNTE0TQpzdHJhbmdsZS80MVpHRFJTCnN0cmFuZ2xlaG9sZC8xNFNNCnN0cmFuZ2xlci8xTQpzdHJhbmd1bGF0ZS80R05EUwpzdHJhbmd1bGF0aW9uLzFNCnN0cmFwJ3MKc3RyYXAvMTRVUwpzdHJhcGxlc3MvNTFNUwpzdHJhcHBlZC80NVUKc3RyYXBwaW5nLzQ1MU0Kc3RyYXRhLzEKc3RyYXRhZ2VtLzFTTQpzdHJhdGVnaWMvNVMKc3RyYXRlZ2ljYWwvNVkKc3RyYXRlZ2ljcy8xTQpzdHJhdGVnaXN0LzFTTQpzdHJhdGVneS8xU00Kc3RyYXRpLzEKc3RyYXRpZmljYXRpb24vMU0Kc3RyYXRpZnkvNERTR04Kc3RyYXRvc3BoZXJlLzFTTQpzdHJhdG9zcGhlcmljLzUKc3RyYXR1bS8xTQpzdHJhdHVzLzFNCnN0cmF3LzE1NEdTTUQKc3RyYXdiZXJyeS8xNTRTTQpzdHJheS8xNDVHU01ECnN0cmVhay8xNE1EUlNaRwpzdHJlYWtlci8xTQpzdHJlYWt5LzVUUgpzdHJlYW0vMTRNRFJTWkcKc3RyZWFtZXIvMU0Kc3RyZWFtbGluZS8xNERTRwpzdHJlZXQvMTU0TVMKc3RyZWV0Y2FyLzFNUwpzdHJlZXRsYW1wLzFTCnN0cmVldGxpZ2h0LzFTTQpzdHJlZXR3YWxrZXIvMVNNCnN0cmVldHdpc2UvNQpzdHJlbmd0aC8xNE0Kc3RyZW5ndGhlbi80QUdEUwpzdHJlbmd0aGVuZXIvMU1TCnN0cmVuZ3Rocy8xNApzdHJlbnVvdXMvNVBZCnN0cmVudW91c25lc3MvMU0Kc3RyZXAvMU0Kc3RyZXB0b2NvY2NhbC81CnN0cmVwdG9jb2NjaS8xCnN0cmVwdG9jb2NjdXMvMU0Kc3RyZXB0b215Y2luLzFNCnN0cmVzcy8xNE1EU0cKc3RyZXNzZWQvNDVVCnN0cmVzc2Z1bC81CnN0cmVzc29ycy8xCnN0cmV0Y2gvNDFCWkdNRFJTCnN0cmV0Y2hlci8xNE1ERwpzdHJldGNobWFya3MvMQpzdHJldGNoeS81VFIKc3RyZXcvNEdTREgKc3RyZXduLzQKc3RyaWEvMU0Kc3RyaWFlLzEKc3RyaWF0ZWQvNTQKc3RyaWF0aW9uLzFNUwpzdHJpY2tlbi81NApzdHJpY3QvNVJZUFQKc3RyaWN0bmVzcy8xTQpzdHJpY3R1cmUvMVNNCnN0cmlkZGVuLzQKc3RyaWRlLzQxTUdTCnN0cmlkZW5jeS8xTQpzdHJpZGVudC81MVkKc3RyaWZlLzFNCnN0cmlrZS80MU1aR1JTSgpzdHJpa2Vib3VuZC81CnN0cmlrZWJyZWFrZXIvMVNNCnN0cmlrZWJyZWFraW5nLzQxNQpzdHJpa2VvdXQvMTRNUwpzdHJpa2VyLzFNCnN0cmlraW5nLzU0MVkKc3RyaW5nLzE0TURSU1pHCnN0cmluZ2VuY3kvMU0Kc3RyaW5nZW50LzVZCnN0cmluZ2VyLzFNCnN0cmluZ2luZXNzLzFNCnN0cmluZ3kvNVBUUgpzdHJpcC8xNEdTTUQKc3RyaXBlLzE0TVMKc3RyaXBleS81MQpzdHJpcGxpbmcvMU1TCnN0cmlwcGVkLzU0CnN0cmlwcGVyLzFNUwpzdHJpcHBpbmcvNDEKc3RyaXB0ZWFzZS8xNE1aR0RSUwpzdHJpcHRlYXNlci8xTQpzdHJpcHkvNQpzdHJpdmUvNDFHUwpzdHJpdmVuLzQKc3Ryb2JlLzE0TVMKc3Ryb2Jvc2NvcGUvMU1TCnN0cm9ib3Njb3BpYy81CnN0cm9kZS80CnN0cm9rZS8xNE1HRFMKc3Ryb2xsLzE0TURSU1pHCnN0cm9sbGVyLzFNCnN0cm9uZy81UllUCnN0cm9uZ2JveC8xTVMKc3Ryb25naG9sZC8xTVMKc3Ryb25nbWFuLzFNCnN0cm9uZ21lbi8xCnN0cm9uZ3Jvb20vMVMKc3Ryb250aXVtLzFNCnN0cm9wLzE0U00Kc3Ryb3BoZS8xU00Kc3Ryb3BoaWMvNQpzdHJvcHBlZC80CnN0cm9wcGlseS8Kc3Ryb3BwaW5nLzQxCnN0cm9wcHkvNVRSUApzdHJvdmUvNApzdHJ1Y2svNApzdHJ1Y3R1cmFsLzUxWQpzdHJ1Y3R1cmFsaXNtLzEKc3RydWN0dXJhbGlzdC81MVMKc3RydWN0dXJlJ3MKc3RydWN0dXJlLzE0QUdEUwpzdHJ1Y3R1cmVkLzU0VQpzdHJ1ZGVsLzFTTQpzdHJ1Z2dsZS8xNE1HRFMKc3RydW0vNDFTTQpzdHJ1bW1lZC80CnN0cnVtbWluZy80MQpzdHJ1bXBldC8xNE1TCnN0cnVuZy80VUEKc3RydXQvNDE1U00Kc3RydXR0ZWQvNApzdHJ1dHRpbmcvNDEKc3RyeWNobmluZS8xTQpzdHViLzE0TVMKc3R1YmJlZC80NQpzdHViYmluZy80MQpzdHViYmxlLzE0TQpzdHViYmx5LzUKc3R1YmJvcm4vNTFSWVBUCnN0dWJib3JubmVzcy8xTQpzdHViYnkvNTFSVApzdHVjY28vMTRNREcKc3R1Y2NvZXMvMQpzdHVjay80NTFVCnN0dWQvMTRNWVMKc3R1ZGJvb2svMU1TCnN0dWRkZWQvNQpzdHVkZGluZy80MU0Kc3R1ZGVudC8xU00Kc3R1ZGVudHNoaXAvMVMKc3R1ZGllZC80NVUKc3R1ZGllZGx5LwpzdHVkaW8vMU1TCnN0dWRpb3VzLzVQWQpzdHVkaW91c25lc3MvMU0Kc3R1ZGx5LzVSVApzdHVkeSdzCnN0dWR5LzQxQUdEUwpzdHVmZi8xNEdTTURKCnN0dWZmaWx5LwpzdHVmZmluZXNzLzFNCnN0dWZmaW5nLzQxTQpzdHVmZnkvNTFSUFQKc3R1bHRpZmljYXRpb24vMU0Kc3R1bHRpZnkvNERTTkcKc3R1bWJsZS8xNERSU01aRwpzdHVtYmxlci8xTQpzdHVtcC8xNEdTTUQKc3R1bXB5LzUxVFIKc3R1bi80MVMKc3R1bmcvNApzdHVuay80CnN0dW5uZWQvNTQKc3R1bm5lci8xUwpzdHVubmluZy81NDFZCnN0dW50LzE0R1NNRApzdHVudG1hbi8xCnN0dW50bWVuLzEKc3R1cGVmYWN0aW9uLzFNCnN0dXBlZnkvNERTRwpzdHVwZW5kb3VzLzVZCnN0dXBpZC81MVRNUllTCnN0dXBpZGl0eS8xU00Kc3R1cG9yLzE0TVMKc3R1cmRpbHkvCnN0dXJkaW5lc3MvMU0Kc3R1cmR5LzUxVFJQCnN0dXJnZW9uLzFTTQpzdHV0dGVyLzQxTURSU1pHCnN0dXR0ZXJlci8xTQpzdHkvMTRTTQpzdHlsZSdzCnN0eWxlLzE0QURTRwpzdHlsaS8xCnN0eWxpc2gvNVBZCnN0eWxpc2huZXNzLzFNCnN0eWxpc3QvMVNNCnN0eWxpc3RpYy81UwpzdHlsaXN0aWNhbGx5LwpzdHlsaXplLzREU0cKc3R5bHVzLzFNUwpzdHltaWUvMTRNRFMKc3R5bWllaW5nLzQKc3R5cHRpYy81MVNNCnN1YXNpb24vMUVNCnN1YXZlLzUxUllUUApzdWF2ZW5lc3MvMU0Kc3Vhdml0eS8xTQpzdWIvMTQrU00Kc3ViYWx0ZXJuLzUxTVMKc3ViYXF1YS81CnN1YmFyY3RpYy8yNTEKc3ViYXJlYS8xTVMKc3ViYXRvbWljLzUKc3ViYmFzZW1lbnQvMVNNCnN1YmJlZC80CnN1YmJpbmcvNDEKc3ViYnJhbmNoLzFNUwpzdWJjYXRlZ29yeS8xU00Kc3ViY2xhc3MvMTRHCnN1YmNvbW1pdHRlZS8xU00Kc3ViY29tcGFjdC8xNVNNCnN1YmNvbnNjaW91cy81MVBNWQpzdWJjb25zY2lvdXNuZXNzLzFNCnN1YmNvbnRpbmVudC8xMlNNCnN1YmNvbnRpbmVudGFsLzUxCnN1YmNvbnRyYWN0LzQxTURTRwpzdWJjb250cmFjdG9yLzFNUwpzdWJjdWx0dXJlLzE0TVMKc3ViY3V0YW5lb3VzLzVZCnN1YmRpdmlkZS80R0RTCnN1YmRpdmlzaW9uLzE0U00Kc3ViZG9tYWluLzFNUwpzdWJkb21pbmFudC8xCnN1YmR1ZS80RFNHCnN1YmVkaXRvci8xUwpzdWJmYW1pbHkvMVNNCnN1YmZyZWV6aW5nLzUKc3ViZ3JvdXAvMTRNUwpzdWJoZWFkLzFHSk1TCnN1YmhlYWRpbmcvMU0Kc3ViaHVtYW4vNTFNUwpzdWJqLzEKc3ViamVjdC81MTRHVk1EUwpzdWJqZWN0aW9uLzFNCnN1YmplY3RpdmUvNTFZCnN1YmplY3Rpdml0eS8xTQpzdWJqb2luLzQxR0RTCnN1Ymp1Z2F0ZS80NUdORFMKc3VianVnYXRpb24vMU0Kc3VianVuY3RpdmUvNTFTTQpzdWJsZWFzZS8xNE1HRFMKc3VibGV0LzQxU00Kc3VibGV0dGluZy80MQpzdWJsaWV1dGVuYW50LzFTCnN1YmxpbWF0ZS80MUdORFMKc3VibGltYXRpb24vMU0Kc3VibGltZS80NTFZVEdEUlMKc3VibGltaW5hbC81MVkKc3VibGltaXR5LzFNCnN1Ymxpbmd1YWwvNTEKc3VibWFyZ2luYWwvNQpzdWJtYXJpbmUvNTE0TVpSUwpzdWJtYXJpbmVyLzFNCnN1Ym1lcmdlLzRHRFMKc3VibWVyZ2VuY2UvMU0Kc3VibWVyc2UvNDVHTkRTCnN1Ym1lcnNpYmxlLzUxTVMKc3VibWVyc2lvbi8xTQpzdWJtaWNyb3Njb3BpYy81CnN1Ym1pc3Npb24vMU1TQQpzdWJtaXNzaXZlLzUxUFkKc3VibWlzc2l2ZW5lc3MvMU0Kc3VibWl0LzRBUwpzdWJtaXR0ZWQvNEEKc3VibWl0dGVyLzEKc3VibWl0dGluZy80MUEKc3Vibm9ybWFsLzUxCnN1Ym9yYml0YWwvNTEKc3Vib3JkZXIvMTRNUwpzdWJvcmRpbmF0ZS81MTREU01HTgpzdWJvcmRpbmF0aW9uLzFJTQpzdWJvcm4vNFNHRApzdWJvcm5hdGlvbi8xTQpzdWJwYXIvNQpzdWJwYXJhZ3JhcGgvMTQKc3VicGFydC8xCnN1YnBsb3QvMTRNUwpzdWJwb2VuYS8xNEdNRFMKc3VicHJpbWUvNTEKc3VicHJvZmVzc2lvbmFsLzUxU00Kc3VicHJvZ3JhbS8xUwpzdWJyb3V0aW5lLzFTTQpzdWJzY3JpYmUvNFVBU0RHCnN1YnNjcmliZXIvMU1TCnN1YnNjcmlwdC8xNDVNUwpzdWJzY3JpcHRpb24vMU1TCnN1YnNlY3Rpb24vMTRNUwpzdWJzZXF1ZW50LzUxWQpzdWJzZXJ2aWVuY2UvMU0Kc3Vic2VydmllbnQvNVkKc3Vic2V0LzE0U00Kc3Vic2lkZS80R0RTCnN1YnNpZGVuY2UvMU0Kc3Vic2lkaWFyaXR5LzEKc3Vic2lkaWFyeS81MVNNCnN1YnNpZGl6YXRpb24vMU0Kc3Vic2lkaXplLzRaR0RSUwpzdWJzaWRpemVyLzFNCnN1YnNpZHkvMVNNCnN1YnNpc3QvNFNERwpzdWJzaXN0ZW5jZS8xTQpzdWJzb2lsLzE0TQpzdWJzb25pYy81MQpzdWJzcGFjZS8xCnN1YnNwZWNpZXMvMU0Kc3Vic3RhbmNlLzE0U00Kc3Vic3RhbmRhcmQvNQpzdWJzdGFudGlhbC81MUlZCnN1YnN0YW50aWF0ZS80R05EU1gKc3Vic3RhbnRpYXRlZC80VQpzdWJzdGFudGlhdGlvbi8xRk0Kc3Vic3RhbnRpdmUvNTE0U01ZCnN1YnN0YXRpb24vMU1TCnN1YnN0aXR1ZW50LzEKc3Vic3RpdHV0ZS80MVhNR05EUwpzdWJzdGl0dXRpb24vMU0Kc3Vic3RyYXRhLzEKc3Vic3RyYXRlLzE0NU1TCnN1YnN0cmF0dW0vMU0Kc3Vic3RydWN0dXJlLzFTTQpzdWJzdW1lLzREU0cKc3Vic3VtcHRpb24vMQpzdWJzdXJmYWNlLzE1TQpzdWJzeXN0ZW0vMVNNCnN1YnRlZW4vNTFTTQpzdWJ0ZW5hbmN5LzFNCnN1YnRlbmFudC8xNFNNCnN1YnRlbmQvNFNERwpzdWJ0ZXJmdWdlLzFTTQpzdWJ0ZXJyYW5lYW4vNQpzdWJ0ZXh0LzE0U00Kc3VidGl0bGUvMTREU01HCnN1YnRsZS81VFIKc3VidGxldHkvMVNNCnN1YnRseS8Kc3VidG9waWMvMVNNCnN1YnRvdGFsLzE0NVNHTUQKc3VidHJhY3QvNEdTRApzdWJ0cmFjdGlvbi8xU00Kc3VidHJhaGVuZC8xU00Kc3VidHJvcGljLzFTCnN1YnRyb3BpY2FsLzUxCnN1YnRyb3BpY3MvMU0Kc3VidXJiLzFNUwpzdWJ1cmJhbi81MVNNCnN1YnVyYmFuaXRlLzFTTQpzdWJ1cmJpYS8xTQpzdWJ2ZW50aW9uLzE0U00Kc3VidmVyc2lvbi8xTQpzdWJ2ZXJzaXZlLzUxU1BNWQpzdWJ2ZXJzaXZlbmVzcy8xTQpzdWJ2ZXJ0LzQxU0RHCnN1YndheS8xNE1TCnN1Ynplcm8vNQpzdWNjZWVkLzRHRFMKc3VjY2Vzcy8xVk1TCnN1Y2Nlc3NmdWwvNVVZCnN1Y2Nlc3Npb24vMVNNCnN1Y2Nlc3NpdmUvNVkKc3VjY2Vzc29yLzFTTQpzdWNjaW5jdC81UllUUApzdWNjaW5jdG5lc3MvMU0Kc3VjY29yLzE0U0dNRApzdWNjb3Rhc2gvMU0Kc3VjY3ViaS8xCnN1Y2N1YnVzLzEKc3VjY3VsZW5jZS8xTQpzdWNjdWxlbmN5LzFNCnN1Y2N1bGVudC81MVNNCnN1Y2N1bWIvNEdEUwpzdWNoLzgxCnN1Y2hsaWtlLzU4MQpzdWNrLzE0TURSWkdTCnN1Y2tlci8xNEdNRApzdWNrbGUvMTREU0pHCnN1Y2tsaW5nLzE0TQpzdWNyb3NlLzFNCnN1Y3Rpb24vMTRTTURHCnN1ZGRlbi81MVBZCnN1ZGRlbm5lc3MvMU0Kc3Vkcy8xNE0Kc3Vkc3kvNVRSCnN1ZS80RFNHCnN1ZWRlLzE1NE0Kc3VldC8xTQpzdWV0eS81CnN1ZmZlci80RFJaR1NKCnN1ZmZlcmFuY2UvMU0Kc3VmZmVyZXIvMU0Kc3VmZmVyaW5nLzUxNE0Kc3VmZmljZS80RFNHCnN1ZmZpY2llbmN5LzFJTQpzdWZmaWNpZW50LzVJWQpzdWZmaXgvMTRNRFNHCnN1ZmZpeGF0aW9uLzFNCnN1ZmZvY2F0ZS80NUdORFMKc3VmZm9jYXRpb24vMU0Kc3VmZnJhZ2FuLzFNUwpzdWZmcmFnZS8xTQpzdWZmcmFnZXR0ZS8xU00Kc3VmZnJhZ2lzdC8xTVMKc3VmZnVzZS80NURTR04Kc3VmZnVzaW9uLzFNCnN1Z2FyLzE0R1NNRApzdWdhcmNhbmUvMU0Kc3VnYXJjb2F0LzRHRFMKc3VnYXJsZXNzLzUKc3VnYXJwbHVtLzFNUwpzdWdhcnkvNVJUCnN1Z2dlc3QvNEdWU0RSCnN1Z2dlc3RpYmlsaXR5LzFNCnN1Z2dlc3RpYmxlLzUKc3VnZ2VzdGlvbi8xU00Kc3VnZ2VzdGl2ZS81WVAKc3VnZ2VzdGl2ZW5lc3MvMU0Kc3VpY2lkYWwvNTEKc3VpY2lkZS8xNFNNCnN1aXQvMTRCTURHUwpzdWl0YWJpbGl0eS8xVU0Kc3VpdGFibGVuZXNzLzFNCnN1aXRhYmx5L1UKc3VpdGNhc2UvMTRTTQpzdWl0ZS8xU00Kc3VpdGVkLzU0VQpzdWl0aW5nLzQxTQpzdWl0b3IvMTRNUwpzdWtpeWFraS8xTQpzdWxmYS81MU0Kc3VsZmF0ZS8xNFNNCnN1bGZpZGUvMVNNCnN1bGZvbmFtaWRlcy8xCnN1bGZ1ci8xNTRNRFNHCnN1bGZ1cmljLzUKc3VsZnVyb3VzLzUKc3Vsay80MU1ER1MKc3Vsa2lseS8Kc3Vsa2luZXNzLzFNCnN1bGt5LzUxVFJTTVAKc3VsbGVuLzUxNFJZUFQKc3VsbGVubmVzcy8xTQpzdWxsaWVkLzU0VQpzdWxseS80MUdEUwpzdWx0YW4vMU1TCnN1bHRhbmEvMVNNCnN1bHRhbmF0ZS8xTVMKc3VsdHJpbHkvCnN1bHRyaW5lc3MvMU0Kc3VsdHJ5LzVSUFQKc3VtLzE0U00Kc3VtYWMvMTRNCnN1bW1hcmlseS8Kc3VtbWFyaXplLzRHRFMKc3VtbWFyeS81MVNNCnN1bW1hdC84CnN1bW1hdGlvbi8xRk1TCnN1bW1lZC80CnN1bW1lci8xNE1EU0cKc3VtbWVyaG91c2UvMVNNCnN1bW1lcnRpbWUvMU0Kc3VtbWVyeS81MQpzdW1taW5nLzQxOApzdW1taXQvMTQ4TVMKc3VtbWl0cnkvMU0Kc3VtbW9uLzQxRFJTWkcKc3VtbW9uZXIvMU0Kc3VtbW9ucy8xNEdNRFMKc3Vtby8xTQpzdW1wLzE0TVMKc3VtcHR1b3VzLzVQWQpzdW1wdHVvdXNuZXNzLzFNCnN1bi8yMTRTTQpzdW5iYXRoLzFaR01EUlMKc3VuYmF0aGUvNDEKc3VuYmF0aGVyLzFNCnN1bmJhdGhpbmcvMTRNCnN1bmJhdGhzLzEKc3VuYmVhbS8xU00Kc3VuYmVkLzFTCnN1bmJlbHQvMVNNCnN1bmJsb2NrLzFNUwpzdW5ib25uZXQvMVNNCnN1bmJ1cm4vMTRTR01ECnN1bmJ1cnN0LzFNUwpzdW5kYWUvMU1TCnN1bmRlY2svMVMKc3VuZGVyLzU0MURTRwpzdW5kaWFsLzFTTQpzdW5kb3duLzE0U00Kc3VuZHJlc3MvMVMKc3VuZHJpZXMvMU0Kc3VuZHJ5LzUxOFMKc3VuZmlzaC8xNE1TCnN1bmZsb3dlci8xTVMKc3VuZy80VQpzdW5nbGFzc2VzLzFNCnN1bmhhdC8xUwpzdW5rLzROCnN1bmxhbXAvMVNNCnN1bmxlc3MvNQpzdW5saWdodC8xNE0Kc3VubGl0LzUKc3VubmVkLzQKc3VubmluZXNzLzFNCnN1bm5pbmcvNApzdW5ueS81MVRSUApzdW5yaXNlLzE0U00Kc3Vucm9vZi8xU00Kc3Vuc2NyZWVuLzFNUwpzdW5zZXQvMTRNUwpzdW5zaGFkZS8xTVMKc3Vuc2hpbmUvMTVNCnN1bnNoaW55LzUKc3Vuc3BvdC8xU00Kc3Vuc3Ryb2tlLzFNCnN1bnRhbi8xNE1TCnN1bnRhbm5lZC81NApzdW50YW5uaW5nLzQKc3VudHJhcC8xUwpzdW51cC8xTQpzdXAvNDE1U1pNUgpzdXBlci81MTRNCnN1cGVyYWJ1bmRhbmNlLzFNUwpzdXBlcmFidW5kYW50LzUKc3VwZXJhbm51YXRlLzRHTkRTCnN1cGVyYW5udWF0aW9uLzFNCnN1cGVyYi81UllUCnN1cGVyY2FyZ28vMU0Kc3VwZXJjYXJnb2VzLzEKc3VwZXJjaGFyZ2UvNDFaR0RSUwpzdXBlcmNoYXJnZXIvMU0Kc3VwZXJjaWxpb3VzLzVQWQpzdXBlcmNpbGlvdXNuZXNzLzFNCnN1cGVyY2l0eS8xU00Kc3VwZXJjb21wdXRlci8xTVMKc3VwZXJjb25kdWN0aW5nLzUKc3VwZXJjb25kdWN0aXZlLzUKc3VwZXJjb25kdWN0aXZpdHkvMU0Kc3VwZXJjb25kdWN0b3IvMVNNCnN1cGVyY3JpdGljYWwvNQpzdXBlcmVnby8xTVMKc3VwZXJlcm9nYXRpb24vMU0Kc3VwZXJlcm9nYXRvcnkvNQpzdXBlcmZpY2lhbC81MVkKc3VwZXJmaWNpYWxpdHkvMU0Kc3VwZXJmaW5lLzUKc3VwZXJmbHVpdHkvMU0Kc3VwZXJmbHVvdXMvNVlQCnN1cGVyZmx1b3VzbmVzcy8xTQpzdXBlcmdsdWUvMTQKc3VwZXJncmFzcy8xUwpzdXBlcmhlcm8vMU1TCnN1cGVyaGVyb2VzLzEKc3VwZXJoaWdod2F5LzFTTQpzdXBlcmh1bWFuLzUxCnN1cGVyaW1wb3NlLzRHRFMKc3VwZXJpbXBvc2l0aW9uLzFNCnN1cGVyaW50ZW5kLzREU0cKc3VwZXJpbnRlbmRlbmNlLzFNCnN1cGVyaW50ZW5kZW5jeS8xTQpzdXBlcmludGVuZGVudC8xNVNNCnN1cGVyaW9yLzUxTVMKc3VwZXJpb3JpdHkvMU0Kc3VwZXJsYXRpdmUvMTVTTVkKc3VwZXJtYW4vMU0Kc3VwZXJtYXJrZXQvMVNNCnN1cGVybWFzc2l2ZS81CnN1cGVybWVuLzEKc3VwZXJtb2RlbC8xU00Kc3VwZXJtb20vMU1TCnN1cGVybmFsLzUKc3VwZXJuYXR1cmFsLzUxU1kKc3VwZXJub3ZhLzFNUwpzdXBlcm5vdmFlLzEKc3VwZXJudW1lcmFyeS8xNVNNCnN1cGVycG9zZS80R0RTCnN1cGVycG9zaXRpb24vMU0Kc3VwZXJwb3dlci8xNFNNCnN1cGVyc2F0dXJhdGUvNEdORFMKc3VwZXJzYXR1cmF0aW9uLzFNCnN1cGVyc2NyaWJlLzRHRFMKc3VwZXJzY3JpcHQvMTU0TVMKc3VwZXJzY3JpcHRpb24vMU0Kc3VwZXJzZWRlLzQxR0RTCnN1cGVyc2l6ZS80NUdEUwpzdXBlcnNvbmljLzUxCnN1cGVyc3ByZWFkZXIvMVNNCnN1cGVyc3Rhci8xTVMKc3VwZXJzdGFyZG9tLzEKc3VwZXJzdGF0ZS8xUwpzdXBlcnN0aXRpb24vMU1TCnN1cGVyc3RpdGlvdXMvNVkKc3VwZXJzdG9yZS8xTVMKc3VwZXJzdHJ1Y3R1cmUvMU1TCnN1cGVydGFua2VyLzFNUwpzdXBlcnVzZXIvMVMKc3VwZXJ2ZW5lLzRHRFMKc3VwZXJ2ZW50aW9uLzFNCnN1cGVydmlzZS80WEdORFMKc3VwZXJ2aXNlZC80NVUKc3VwZXJ2aXNpb24vMU0Kc3VwZXJ2aXNvci8xTVMKc3VwZXJ2aXNvcnkvNQpzdXBlcndvbWFuLzFNCnN1cGVyd29tZW4vMQpzdXBpbmUvNTFZCnN1cHAvMURSWkcKc3VwcGVyLzE0TQpzdXBwZXJ0aW1lLzEKc3VwcGwvMQpzdXBwbGFudC80U0RHCnN1cHBsZS81NFRMUFIKc3VwcGxlbWVudC8xNE1ER1MKc3VwcGxlbWVudGFsLzUxCnN1cHBsZW1lbnRhcnkvNTEKc3VwcGxlbWVudGF0aW9uLzFNCnN1cHBsZW5lc3MvMU0Kc3VwcGxpYW50LzUxU00Kc3VwcGxpY2FudC81MU1TCnN1cHBsaWNhdGUvNEdEUwpzdXBwbGljYXRpb24vMU0Kc3VwcGxpZXIvMU0Kc3VwcGx5LzQxWkdEUlNNWE4Kc3VwcG9ydC80MU1EUlNCWkdWCnN1cHBvcnRhYmxlLzVVSQpzdXBwb3J0ZWQvNTRVCnN1cHBvcnRlci8xTQpzdXBwb3NlLzRHRFMKc3VwcG9zZWQvNDVZCnN1cHBvc2l0aW9uLzFNUwpzdXBwb3NpdG9yeS8xU00Kc3VwcHJlc3MvNEdWRFMKc3VwcHJlc3NhbnQvMU1TCnN1cHByZXNzaWJsZS81CnN1cHByZXNzaW9uLzFNCnN1cHByZXNzb3IvMVNNCnN1cHB1cmF0ZS80RFNHTgpzdXBwdXJhdGlvbi8xTQpzdXByYS8xCnN1cHJhbmF0aW9uYWwvNTEKc3VwcmVtYWNpc3QvNTFNUwpzdXByZW1hY3kvMU0Kc3VwcmVtZS81NDFZCnN1cHJlbW8vMVMKc3VwdC80CnN1cmNlYXNlLzE0RFNNRwpzdXJjaGFyZ2UvMTREU01HCnN1cmNpbmdsZS8xNFNNCnN1cmUvNVBZVFIKc3VyZWZpcmUvNQpzdXJlZm9vdGVkLzUKc3VyZW5lc3MvMU0Kc3VyZXR5LzFTTQpzdXJmLzE0TURSWkdTCnN1cmZhY2UncwpzdXJmYWNlLzE0QUdEUwpzdXJmYm9hcmQvMTRNRFNHCnN1cmZlaXQvNTE0TURTRwpzdXJmZXIvMU0Kc3VyZmluZy80MU0Kc3VyZ2UvMTREU01HCnN1cmdlb24vMU1TCnN1cmdlcnkvMVNNCnN1cmdpY2FsLzVZCnN1cmxpbmVzcy8xTQpzdXJseS81UFRSCnN1cm1pc2UvMTRNR0RTCnN1cm1vdW50LzRER1NCCnN1cm1vdW50YWJsZS81SQpzdXJuYW1lLzE0TVMKc3VycGFzcy80R0RTCnN1cnBhc3NlZC80VQpzdXJwbGljZS8xTVMKc3VycGx1cy8xNTRNUwpzdXJwbHVzc2VkLzQKc3VycGx1c3NpbmcvNApzdXJwcmlzZS8xNERTTUdKCnN1cnByaXNpbmcvNDUxVVkKc3VycmVhbC81MQpzdXJyZWFsaXNtLzFNCnN1cnJlYWxpc3QvNTFTTQpzdXJyZWFsaXN0aWMvNQpzdXJyZWFsaXN0aWNhbGx5LwpzdXJyZW5kZXIvNDFNRFNHCnN1cnJlcHRpdGlvdXMvNVBZCnN1cnJlcHRpdGlvdXNuZXNzLzFNCnN1cnJleS8xTVMKc3Vycm9nYWN5LzFNCnN1cnJvZ2F0ZS8xNTRTTQpzdXJyb3VuZC80MUdTREoKc3Vycm91bmRpbmcvNDFNCnN1cnJvdW5kaW5ncy8xTQpzdXJ0YXgvMTRNRFNHCnN1cnRpdGxlLzE0UwpzdXJ2ZWlsbGFuY2UvMU0Kc3VydmV5J3MKc3VydmV5LzE0QURHUwpzdXJ2ZXlpbmcvMTRNCnN1cnZleW9yLzFTTQpzdXJ2aXZhbC8xU00Kc3Vydml2YWxpc3QvMVNNCnN1cnZpdmUvNERTR0IKc3Vydml2b3IvMVNNCnN1c2NlcHRpYmlsaXR5LzFTTQpzdXNjZXB0aWJsZS81MUkKc3VzaGkvMTRNCnN1c3BlY3QvNDE1U01ERwpzdXNwZWN0ZWQvNTRVCnN1c3BlbmQvNFNEUlpHCnN1c3BlbmRlci8xTQpzdXNwZW5zZS8xNVhNTgpzdXNwZW5zZWZ1bC81CnN1c3BlbnNpb24vMU0Kc3VzcGljaW9uLzE0U00Kc3VzcGljaW91cy81WQpzdXNzLzE1NERTRwpzdXN0YWluLzQxU0RCRwpzdXN0YWluYWJpbGl0eS8xCnN1c3RhaW5hYmxlLzUxVQpzdXN0YWluYWJseS8Kc3VzdGVuYW5jZS8xTQpzdXRsZXIvMU1TCnN1dHRlZS8xCnN1dHVyZS8xNE1HRFMKc3V6ZXJhaW4vMU1TCnN1emVyYWludHkvMU0Kc3ZlbHRlLzVUUgpzd2FiLzE0TVMKc3dhYmJlZC80CnN3YWJiaW5nLzQxCnN3YWRkbGUvNDFEU0cKc3dhZy80MU1TCnN3YWdnZWQvNApzd2FnZ2VyLzQxNVNNRFJHCnN3YWdnaW5nLzQKc3dhaW4vMVNNCnN3YWxsb3cvNDFHU01ECnN3YWxsb3d0YWlsLzFNUwpzd2FtLzQKc3dhbWkvMVNNCnN3YW1wLzE0R1NNRApzd2FtcGxhbmQvMU0Kc3dhbXB5LzVSVApzd2FuLzE0TVMKc3dhbmsvNTE0VEdTTURSCnN3YW5raWx5Lwpzd2Fua2luZXNzLzFNCnN3YW5reS81MVJQVApzd2FubmVkLzQKc3dhbm5pbmcvNApzd2Fuc29uZy8xUwpzd2FwLzQxTVMKc3dhcHBlZC80CnN3YXBwaW5nLzE0NQpzd2FyZC8xNFNNCnN3YXJtLzE0R1NNRApzd2FydGh5LzUxVFIKc3dhc2gvMTQ1R01EUwpzd2FzaGJ1Y2tsZXIvMVNNCnN3YXNoYnVja2xpbmcvNU0Kc3dhc3Rpa2EvMVNNCnN3YXQvNDFNUwpzd2F0Y2gvMTRNUwpzd2F0aC8xR01EUwpzd2F0aGUvMTRNCnN3YXRocy8xCnN3YXR0ZWQvNApzd2F0dGVyLzE0U01ERwpzd2F0dGluZy80MQpzd2F5LzE0TURHUwpzd2F5YmFjay8xTUQKc3dheWVkLzQ1VQpzd2Vhci80MTVaR1NSCnN3ZWFyZXIvMU0Kc3dlYXJ3b3JkLzFNUwpzd2VhdC8xNFpHU01EUgpzd2VhdGJhbmQvMU1TCnN3ZWF0ZXIvMTRNCnN3ZWF0cGFudHMvMU0Kc3dlYXRzLzE0TQpzd2VhdHNoaXJ0LzFTTQpzd2VhdHNob3AvMU1TCnN3ZWF0c3VpdC8xUwpzd2VhdHkvNTFSVApzd2VkZS8xNFNNCnN3ZWVwLzQxWkdTTVJKCnN3ZWVwZXIvMU0Kc3dlZXBpbmcvNDE1TVkKc3dlZXBpbmdzLzFNCnN3ZWVwc3Rha2VzLzFNCnN3ZWV0LzUxNFhUU01OUllQCnN3ZWV0YnJlYWQvMVNNCnN3ZWV0YnJpZXIvMVNNCnN3ZWV0Y29ybi8xCnN3ZWV0ZW5lZC80NVUKc3dlZXRlbmVyLzFNUwpzd2VldGVuaW5nLzE0TQpzd2VldGhlYXJ0LzFTTQpzd2VldGllLzFTTQpzd2VldGlzaC81CnN3ZWV0bWVhdC8xTVMKc3dlZXRuZXNzLzFNCnN3ZWxsLzQxNVRHU01EUkoKc3dlbGxoZWFkLzFNRFMKc3dlbGxpbmcvMTRNCnN3ZWx0ZXIvNDFTR01ECnN3ZXB0LzU0CnN3ZXB0YmFjay81CnN3ZXJ2ZS80MU1HRFMKc3dlcnZpbmcvNTE0VQpzd2lmdC81MVBUU01SWQpzd2lmdG5lc3MvMU0Kc3dpZy80MU1TCnN3aWdnZWQvNApzd2lnZ2luZy80CnN3aWxsLzE0R1NNRApzd2ltLzQxTVMKc3dpbW1lci8xU00Kc3dpbW1pbmcvMTRNWQpzd2ltc3VpdC8xU00Kc3dpbXdlYXIvMQpzd2luZGxlLzQxRFJTTVpHCnN3aW5kbGVyLzFNCnN3aW5lLzFTTQpzd2luZWhlcmQvMVNNCnN3aW5nLzQxWkdTTVIKc3dpbmdlaW5nLzU0CnN3aW5nZXIvMU0Kc3dpbmlzaC81CnN3aXBlLzQxRFNNRwpzd2lybC80MUdTTUQKc3dpcmx5LzUxCnN3aXNoLzUxNFRHTURSUwpzd2l0Y2gvMTQ1TURSU1pHQgpzd2l0Y2hiYWNrLzE0TVMKc3dpdGNoYmxhZGUvMTRTTQpzd2l0Y2hib2FyZC8xU00Kc3dpdGNoZXIvMU0Kc3dpdGNob3Zlci8xCnN3aXZlbC8xNE1ER1MKc3dpei8xCnN3aXp6LzE0CnN3aXp6bGUvMTREU0cKc3dvbGxlbi81NApzd29vbi8xNFNHTUQKc3dvb3AvNDFTR01ECnN3b29zaC80MU1EU0cKc3dvcmQvMTRTTQpzd29yZGZpc2gvMTRNUwpzd29yZHBsYXkvMU0Kc3dvcmRzbWFuLzFNCnN3b3Jkc21hbnNoaXAvMU0Kc3dvcmRzbWVuLzEKc3dvcmUvNApzd29ybi80NQpzd290LzQxUwpzd290dGVkLzQKc3dvdHRpbmcvNApzd3VtLzQKc3d1bmcvNApzeWJhcml0ZS8xNVNNCnN5YmFyaXRpYy81CnN5Y2Ftb3JlLzFNUwpzeWNvcGhhbmN5LzFNCnN5Y29waGFudC8xNFNNCnN5Y29waGFudGljLzUKc3lsbGFiaWMvNTEKc3lsbGFiaWNhdGUvNEdORFMKc3lsbGFiaWNhdGlvbi8xTQpzeWxsYWJpZmljYXRpb24vMU0Kc3lsbGFiaWZ5LzREU05HCnN5bGxhYmxlLzE0TVMKc3lsbGFidWIvMVMKc3lsbGFidXMvMU1TCnN5bGxvZ2lzbS8xTVMKc3lsbG9naXN0aWMvNQpzeWxwaC8xTQpzeWxwaGljLzUKc3lscGhsaWtlLzUKc3lscGhzLzEKc3lsdmFuLzUxCnN5bWJpb3Nlcy8xNApzeW1iaW9zaXMvMU0Kc3ltYmlvdGljLzUxCnN5bWJpb3RpY2FsbHkvCnN5bWJvbC8xNE1TCnN5bWJvbGljLzUKc3ltYm9saWNhbC81WQpzeW1ib2xpc20vMU0Kc3ltYm9saXphdGlvbi8xTQpzeW1ib2xpemUvNERTRwpzeW1ib2xvZ3kvMQpzeW1tZXRyaWMvNQpzeW1tZXRyaWNhbC81WQpzeW1tZXRyeS8xU00Kc3ltcGF0aGV0aWMvNTFVCnN5bXBhdGhldGljYWxseS9VCnN5bXBhdGhpZXMvMU0Kc3ltcGF0aGl6ZS80WkdEUlMKc3ltcGF0aGl6ZXIvMU0Kc3ltcGF0aHkvMVNNCnN5bXBob25pYy81CnN5bXBob255LzFTTQpzeW1wb3NpdW0vMU1TCnN5bXB0b20vMU1TCnN5bXB0b21hdGljLzUxCnN5bXB0b21hdGljYWxseS8Kc3luLzUxSApzeW5hZ29nYWwvNQpzeW5hZ29ndWUvMVNNCnN5bmFwc2UvMTRNUwpzeW5hcHRpYy81CnN5bmMvMTRNRFNHCnN5bmNocm9uaWNpdHkvMQpzeW5jaHJvbml6YXRpb24vMVNNCnN5bmNocm9uaXplLzRHRFMKc3luY2hyb25vdXMvNVkKc3luY2hyb255LzEKc3luY29wYXRlLzREU0dOCnN5bmNvcGF0aW9uLzFNCnN5bmNvcGUvMU0Kc3luZGljYWxpc20vMQpzeW5kaWNhbGlzdC8xUwpzeW5kaWNhdGUvMTREU01HTgpzeW5kaWNhdGlvbi8xTQpzeW5kcm9tZS8xU00Kc3luZXJnaXNtLzFNCnN5bmVyZ2lzdGljLzUKc3luZXJneS8xU00Kc3luZnVlbC8xTVMKc3lub2QvMVNNCnN5bm9ueW0vMVNNCnN5bm9ueW1vdXMvNQpzeW5vbnlteS8xTQpzeW5vcHNlcy8xCnN5bm9wc2lzLzFNCnN5bm9wdGljLzUKc3lub3ZpYWwvNQpzeW50YWN0aWMvNQpzeW50YWN0aWNhbC81WQpzeW50YXgvMU0Kc3ludGhlc2VzLzEKc3ludGhlc2lzLzFNCnN5bnRoZXNpemUvNFpHRFJTCnN5bnRoZXNpemVyLzFNCnN5bnRoZXRpYy81MVNNCnN5bnRoZXRpY2FsbHkvCnN5bnRocy8xNApzeXBoaWxpcy8xTQpzeXBoaWxpdGljLzUxU00Kc3lyaW5nZS8xNERTTUcKc3lydXAvMTRTTQpzeXJ1cHkvNQpzeXNhZG1pbi8xUwpzeXNvcC8xNFMKc3lzdGVtLzFTTQpzeXN0ZW1hdGljLzVVCnN5c3RlbWF0aWNhbC81WQpzeXN0ZW1hdGl6YXRpb24vMU0Kc3lzdGVtYXRpemUvNEdEUwpzeXN0ZW1pYy81TVMKc3lzdGVtaWNhbGx5LwpzeXN0b2xlLzFTTQpzeXN0b2xpYy81MQp0LzFTRE5YR0JKCnRhLysxCnRhYi8xNFNNCnRhYmJlZC81NAp0YWJiaW5nLzQxCnRhYmJvdWxlaC8xTQp0YWJieS8xNTRTTQp0YWJlcm5hY2xlLzE0U00KdGFibGEvMU1TCnRhYmxlLzE0TUdEUwp0YWJsZWF1LzFNCnRhYmxlYXV4LzEKdGFibGVjbG90aC8xTQp0YWJsZWNsb3Rocy8xCnRhYmxlbGFuZC8xU00KdGFibGVzcG9vbi8xU00KdGFibGVzcG9vbmZ1bC8xU00KdGFibGV0LzE0U00KdGFibGV0b3AvMTU0TVMKdGFibGV3YXJlLzFNCnRhYmxvaWQvMTVTTQp0YWJvby8xNTRNRFNHCnRhYm9yLzE0TVMKdGFidWxhci81MQp0YWJ1bGF0ZS80MTVEU0dOWAp0YWJ1bGF0aW9uLzFNCnRhYnVsYXRvci8xU00KdGFjaG9ncmFwaC8xCnRhY2hvZ3JhcGhzLzEKdGFjaG9tZXRlci8xU00KdGFjaHljYXJkaWEvMU0KdGFjaHlvbi8xCnRhY2l0LzVQWQp0YWNpdG5lc3MvMU0KdGFjaXR1cm4vNVkKdGFjaXR1cm5pdHkvMU0KdGFjay8xNFpHTURSUwp0YWNrZXIvMU0KdGFja2luZXNzLzFNCnRhY2tsZS8xNERSU01aRwp0YWNrbGVyLzFNCnRhY2t5LzUxUlRQCnRhY28vMTRNUwp0YWN0LzE0Rk0KdGFjdGZ1bC81WVAKdGFjdGZ1bG5lc3MvMU0KdGFjdGljLzE1U00KdGFjdGljYWwvNTFZCnRhY3RpY2lhbi8xTVMKdGFjdGlsZS81CnRhY3RpbGl0eS8xTQp0YWN0bGVzcy81UFkKdGFjdGxlc3NuZXNzLzFNCnRhZC8xU00KdGFkcG9sZS8xTVMKdGFmZmV0YS8xTQp0YWZmcmFpbC8xU00KdGFmZnkvMVNNCnRhZy8xNFNNCnRhZ2dlZC81NAp0YWdnZXIvMVNNCnRhZ2dpbmcvNDEKdGFnbGlhdGVsbGUvMQp0YWdsaW5lLzE0TVMKdGFpZ2EvMU1TCnRhaWwvMTQ1QUNTRE1HCnRhaWxiYWNrLzFNUwp0YWlsYm9hcmQvMVMKdGFpbGJvbmUvMVMKdGFpbGNvYXQvMU1TCnRhaWxnYXRlLzE0TVpHRFJTCnRhaWxnYXRlci8xTQp0YWlsbGVzcy81CnRhaWxsaWdodC8xTVMKdGFpbG9yLzE0U0dNRAp0YWlsb3JpbmcvNDFNCnRhaWxwaWVjZS8xUwp0YWlscGlwZS8xNFNNCnRhaWxzcGluLzE0U00KdGFpbHdpbmQvMTRTTQp0YWludC8xNE1EU0cKdGFpbnRlZC81NFUKdGFrZS80MUFJTVN+CnRha2Vhd2F5LzUxUwp0YWtlbi81NEEKdGFrZW9mZi8xTVMKdGFrZW91dC81MU1TCnRha2VvdmVyLzE0U00KdGFrZXIvMU1TCnRha2luZy81MTRTTQp0YWtpbmdzLzFNCnRhbGMvMTRNCnRhbGN1bS8xNE0KdGFsZS8xNE1TCnRhbGViZWFyZXIvMU1TCnRhbGVudC8xU01ECnRhbGVudGVkLzVVCnRhbGkvMQp0YWxpc21hbi8xNE1TCnRhbGsvNDFaR01EUlMKdGFsa2F0aXZlLzVQWQp0YWxrYXRpdmVuZXNzLzFNCnRhbGtlci8xTQp0YWxraWUvMVJTTVQKdGFsa3kvNQp0YWxsLzUxVFJQCnRhbGxib3kvMU1TCnRhbGxpZXIvMU0KdGFsbGlzaC81CnRhbGxuZXNzLzFNCnRhbGxvdy8xNE0KdGFsbG93eS81CnRhbGx5LzE0RFJTTVpHCnRhbGx5aG8vMTRNREdTCnRhbG9uLzFNUwp0YWx1cy8xTVMKdGFtLzFTTQp0YW1hbGUvMVNNCnRhbWFyYWNrLzFNUwp0YW1hcmluZC8xTVMKdGFtYm91cmluZS8xNE1TCnRhbWUvNTRCWVpUR0RSU1AKdGFtZWQvNTRVCnRhbWVuZXNzLzFNCnRhbWVyLzE1TQp0YW1veGlmZW4vMQp0YW1wLzRaR0RSUwp0YW1wZXIvMTRaR0RSCnRhbXBlcmVyLzFNCnRhbXBvbi8xNFNNCnRhbi8xNTRTTQp0YW5hZ2VyLzFNUwp0YW5iYXJrLzFNCnRhbmRlbS8xNTRTTQp0YW5kb29yaS81MU0KdGFuZy8xNE1TCnRhbmdlbG8vMU1TCnRhbmdlbnQvMTVNUwp0YW5nZW50aWFsLzVZCnRhbmdlcmluZS8xNU1TCnRhbmdpYmlsaXR5LzFJTQp0YW5naWJsZS81MUlNUwp0YW5naWJsZW5lc3MvMU0KdGFuZ2libHkvSQp0YW5nbGUncwp0YW5nbGUvNDFVRFNHCnRhbmdvLzE0TURTRwp0YW5neS81UlQKdGFuay8xNFpHTURSUwp0YW5rYXJkLzFNUwp0YW5rZXIvMTRNCnRhbmtmdWwvMU1TCnRhbm5lZC81NFUKdGFubmVyLzE1U00KdGFubmVyeS8xU00KdGFubmVzdC81CnRhbm5pbi8xTQp0YW5uaW5nLzQxTQp0YW5zeS8xTQp0YW50YWxpemF0aW9uLzFNCnRhbnRhbGl6ZS80WkdEUlMKdGFudGFsaXplci8xTQp0YW50YWxpemluZy81NDFZCnRhbnRhbHVtLzFNCnRhbnRhbW91bnQvNTQxCnRhbnRyYS8xTQp0YW50cnVtLzE0U00KdGFwLzE0U1pHTURSCnRhcGFzLzEKdGFwZS8xNE1TCnRhcGVsaW5lLzFNUwp0YXBlci8xNDVNREcKdGFwZXN0cnkvMTRTTQp0YXBld29ybS8xNE1TCnRhcGlvY2EvMU0KdGFwaXIvMU1TCnRhcHBlZC80NVUKdGFwcGVyLzFNUwp0YXBwZXQvMU1TCnRhcHBpbmcvMTQKdGFwcm9vbS8xU00KdGFwcm9vdC8xU00KdGFyLzE0U0dNRAp0YXJhbWFzYWxhdGEvMQp0YXJhbnRlbGxhLzFNUwp0YXJhbnR1bGEvMVNNCnRhcmJhbGwvMTRTCnRhcmRpbHkvCnRhcmRpbmVzcy8xTQp0YXJkeS81MTRUUFIKdGFyZS8xNE1TCnRhcmdldC8xNE1ER1MKdGFyaWZmLzE0TVMKdGFybWFjLzE0TVMKdGFybWFjYWRhbS8xNAp0YXJtYWNrZWQvNAp0YXJtYWNraW5nLzQKdGFybi8xTVMKdGFybmlzaC8xNEdNRFMKdGFybmlzaGVkLzQ1VQp0YXJvLzFNUwp0YXJvdC8xTVMKdGFycC8xNE1TCnRhcnBhdWxpbi8xNE1TCnRhcnBvbi8xTVMKdGFycmFnb24vMVNNCnRhcnJlZC80CnRhcnJpbmcvNDEKdGFycnkvNDE1VEdEUlMKdGFyc2FsLzUxTVMKdGFyc2kvMQp0YXJzdXMvMU0KdGFydC81MTRQVEdNRFJZUwp0YXJ0YW4vMTU0TVMKdGFydGFyLzFNUwp0YXJ0YXJpYy81CnRhcnRuZXNzLzFNCnRhcnR5LzVUCnRhc2VyLzE0R01EUwp0YXNrLzE0R01EUwp0YXNrYmFyLzEKdGFza21hc3Rlci8xTVMKdGFza21pc3RyZXNzLzFNUwp0YXNzZWwvMTRNRFNHCnRhc3RlLzE0NUpNWkdEUlMKdGFzdGVkLzRVCnRhc3RlZnVsLzVFUFkKdGFzdGVmdWxuZXNzLzFFTQp0YXN0ZWxlc3MvNVBZCnRhc3RlbGVzc25lc3MvMU0KdGFzdGVyLzFNCnRhc3RpbHkvCnRhc3RpbmVzcy8xTQp0YXN0aW5nLzE0TQp0YXN0eS81MVRSUAp0YXQvMTRTWlIKdGF0YW1pLzFNUwp0YXRlci8xTQp0YXR0ZWQvNDUKdGF0dGVyLzE0TURTRwp0YXR0ZXJkZW1hbGlvbi81MU1TCnRhdHRpZS8xCnRhdHRpbmcvMTRNCnRhdHRsZS80MU1aR0RSUwp0YXR0bGVyLzFNCnRhdHRsZXRhbGUvNTE0TVMKdGF0dG9vLzE0TURSU1pHCnRhdHRvb2VyLzFNCnRhdHRvb2lzdC8xU00KdGF0dHkvMTVUUlMKdGF1LzFTTQp0YXVnaHQvNFVBCnRhdW50LzQxNVpHTURSUwp0YXVudGVyLzFNCnRhdW50aW5nLzQxWQp0YXVwZS8xNU0KdGF1dC81NFBYVE5SWQp0YXV0ZW4vNERHCnRhdXRuZXNzLzFNCnRhdXRvbG9naWNhbC81WQp0YXV0b2xvZ291cy81CnRhdXRvbG9neS8xU00KdGF2ZXJuLzFNUwp0YXdkcmlseS8KdGF3ZHJpbmVzcy8xTQp0YXdkcnkvMTVSVFAKdGF3bnkvNTQxVFJNCnRheC8xNEJaR01EUlMKdGF4YS8xCnRheGF0aW9uLzFNCnRheGVyLzFNCnRheGkvMTRHTURTCnRheGljYWIvMTRTTQp0YXhpZGVybWlzdC8xU00KdGF4aWRlcm15LzE0TQp0YXhpbWV0ZXIvMU1TCnRheGl3YXkvMVMKdGF4bWFuLzEKdGF4bWVuLzEKdGF4b24vMQp0YXhvbm9taWMvNQp0YXhvbm9taXN0LzFNUwp0YXhvbm9teS8xU00KdGF4cGF5ZXIvMU1TCnRheHBheWluZy81CnRiLzFTCnRic3AvMQp0ZWEvMTRTTQp0ZWFiYWcvMTRTCnRlYWNha2UvMVNNCnRlYWNoLzQxWkdSU0JKCnRlYWNoYWJsZS81MVUKdGVhY2hlci8xTQp0ZWFjaGluZy8xNE0KdGVhY3VwLzE1TVMKdGVhY3VwZnVsLzFNUwp0ZWFrLzE1TVMKdGVha2V0dGxlLzE0U00KdGVhbC8xNU1TCnRlYWxpZ2h0LzFNUwp0ZWFtLzE0R01EUwp0ZWFtbWF0ZS8xTVMKdGVhbXN0ZXIvMU1TCnRlYW13b3JrLzFNCnRlYXBvdC8xTVMKdGVhci80MUdNRFMKdGVhcmF3YXkvMVMKdGVhcmRyb3AvMVNNCnRlYXJmdWwvNVkKdGVhcmdhcy8xNE1TCnRlYXJnYXNzZWQvNAp0ZWFyZ2Fzc2luZy80CnRlYXJqZXJrZXIvMU1TCnRlYXJvb20vMVNNCnRlYXJ5LzVUUgp0ZWFzZS80MU1aR0RSUwp0ZWFzZWwvMTRNUwp0ZWFzZXIvMU0KdGVhc2luZy80MVkKdGVhc3Bvb24vMTRTTQp0ZWFzcG9vbmZ1bC8xU00KdGVhdC8xTVMKdGVhdGltZS8xUwp0ZWNoLzE0TQp0ZWNoaWUvMTVTCnRlY2huZXRpdW0vMU0KdGVjaG5pY2FsLzUxWQp0ZWNobmljYWxpdHkvMVNNCnRlY2huaWNpYW4vMVNNCnRlY2huaWNvbG9yLzUxCnRlY2huaXF1ZS8xU00KdGVjaG5vLzEKdGVjaG5vYmFiYmxlLzEKdGVjaG5vY3JhY3kvMVNNCnRlY2hub2NyYXQvMU1TCnRlY2hub2NyYXRpYy81CnRlY2hub2xvZ2ljYWwvNVkKdGVjaG5vbG9naXN0LzFNUwp0ZWNobm9sb2d5LzFTTQp0ZWNobm9waG9iZS8xUwp0ZWNocy8xNAp0ZWN0b25pYy81Uwp0ZWN0b25pY3MvMU0KdGVkLzE0Uwp0ZWRkeS8xUwp0ZWRpb3VzLzVQWQp0ZWRpb3VzbmVzcy8xTQp0ZWRpdW0vMU0KdGVlLzE0RFNNSAp0ZWVpbmcvNAp0ZWVtLzRHRFMKdGVlbi8xNTRNUwp0ZWVuYWdlLzUxUloKdGVlbmFnZXIvMU0KdGVlbnkvNVRSCnRlZW55Ym9wcGVyLzFNUwp0ZWV0ZXIvNDFNRFNHCnRlZXRoZS80R0RTCnRlZXRoaW5nLzE0TQp0ZWV0b3RhbC81MTRSWgp0ZWV0b3RhbGVyLzFNCnRlZXRvdGFsaXNtLzFNCnRla3RpdGUvMVNNCnRlbC8xCnRlbGVjYXN0LzQxU1pHTVIKdGVsZWNhc3Rlci8xTQp0ZWxlY29tbXVuaWNhdGlvbi8xTVMKdGVsZWNvbW11bmljYXRpb25zLzFNCnRlbGVjb21tdXRlLzQxWkdEUlMKdGVsZWNvbW11dGVyLzFNCnRlbGVjb21tdXRpbmcvMTRNCnRlbGVjb25mZXJlbmNlLzE0TUdEUwp0ZWxlY29uZmVyZW5jaW5nLzE0TQp0ZWxlZ2VuaWMvNQp0ZWxlZ3JhbS8xNE1TCnRlbGVncmFwaC8xNE1EUlpHCnRlbGVncmFwaGVyLzFNCnRlbGVncmFwaGVzZS8xCnRlbGVncmFwaGljLzUKdGVsZWdyYXBoaWNhbGx5Lwp0ZWxlZ3JhcGhpc3QvMVNNCnRlbGVncmFwaHMvNAp0ZWxlZ3JhcGh5LzFNCnRlbGVraW5lc2lzLzFNCnRlbGVraW5ldGljLzUxCnRlbGVtYXJrZXRlci8xU00KdGVsZW1hcmtldGluZy8xTQp0ZWxlbWV0ZXIvMTRTTQp0ZWxlbWV0cnkvMVNNCnRlbGVvbG9naWNhbC81CnRlbGVvbG9neS8xCnRlbGVwYXRoaWMvNQp0ZWxlcGF0aGljYWxseS8KdGVsZXBhdGh5LzFNCnRlbGVwaG9uZS8xNERSU01aRwp0ZWxlcGhvbmVyLzFNCnRlbGVwaG9uaWMvNQp0ZWxlcGhvbmlzdC8xUwp0ZWxlcGhvbnkvMU0KdGVsZXBob3RvLzUxNFNNCnRlbGVwaG90b2dyYXBoeS8xTQp0ZWxlcGxheS8xTVMKdGVsZXBvcnQvNDEKdGVsZXBvcnRhdGlvbi8xCnRlbGVwcmludGVyLzFNUwp0ZWxlcHJvY2Vzc2luZy8xTQp0ZWxlcHJvbXB0ZXIvMVNNCnRlbGVzYWxlcy8xCnRlbGVzY29wZS8xNERTTUcKdGVsZXNjb3BpYy81CnRlbGVzY29waWNhbGx5Lwp0ZWxldGV4dC8xTVMKdGVsZXRob24vMU1TCnRlbGV0eXBlLzE0Uwp0ZWxldHlwZXdyaXRlci8xTVMKdGVsZXZhbmdlbGlzbS8xTQp0ZWxldmFuZ2VsaXN0LzFNUwp0ZWxldmlzZS80WEdORFMKdGVsZXZpc2lvbi8xNE0KdGVsZXdvcmtlci8xUwp0ZWxld29ya2luZy80CnRlbGV4LzE0TURTRwp0ZWxsLzQxQUdTCnRlbGxlci8xU00KdGVsbGluZy80NTFZCnRlbGx0YWxlLzE1U00KdGVsbHVyaXVtLzFNCnRlbGx5LzE1U00KdGVsbmV0LzE0CnRlbWJsb3IvMU1TCnRlbWVyaXR5LzFNCnRlbXAvMTU0TURSWlRHUwp0ZW1wZXIvMTRNREcKdGVtcGVyYS8xTFNNCnRlbXBlcmFtZW50LzFNUwp0ZW1wZXJhbWVudGFsLzVZCnRlbXBlcmFuY2UvMUlNCnRlbXBlcmF0ZS81NElZCnRlbXBlcmF0ZW5lc3MvMU0KdGVtcGVyYXR1cmUvMVNNCnRlbXBlc3QvMTRTTQp0ZW1wZXN0dW91cy81WVAKdGVtcGVzdHVvdXNuZXNzLzFNCnRlbXBsYXRlJ3MKdGVtcGxhdGUvMTRTCnRlbXBsZS8xNFNNCnRlbXBvLzFTTQp0ZW1wb3JhbC81MVkKdGVtcG9yYXJpbHkvCnRlbXBvcmFyaW5lc3MvMU0KdGVtcG9yYXJ5LzUxRlNNCnRlbXBvcml6ZS80WkdEUlMKdGVtcG9yaXplci8xTQp0ZW1wdC80U0RSWkcKdGVtcHRhdGlvbi8xTVMKdGVtcHRlci8xTQp0ZW1wdGluZy81NDFZCnRlbXB0cmVzcy8xTVMKdGVtcHVyYS8xTQp0ZW4vMUJNSAp0ZW5hYmlsaXR5LzFNCnRlbmFibGUvNVUKdGVuYWJseS8KdGVuYWNpb3VzLzVZUAp0ZW5hY2lvdXNuZXNzLzFNCnRlbmFjaXR5LzFNCnRlbmFuY3kvMVNNCnRlbmFudC8xNFNNREcKdGVuYW50ZWQvNFUKdGVuYW50cnkvMU0KdGVuY2gvMQp0ZW5kLzRJRUZER1MKdGVuZGVkLzRVCnRlbmRlbmN5LzFTTQp0ZW5kZW50aW91cy81WVAKdGVuZGVudGlvdXNuZXNzLzFNCnRlbmRlci81MTRTTURSWVRHUAp0ZW5kZXJmb290LzFNUwp0ZW5kZXJoZWFydGVkLzVQCnRlbmRlcmhlYXJ0ZWRuZXNzLzFNCnRlbmRlcml6ZS80WkdEUlMKdGVuZGVyaXplci8xTQp0ZW5kZXJsb2luLzFTTQp0ZW5kZXJuZXNzLzFNCnRlbmRpbml0aXMvMU0KdGVuZG9uLzFTTQp0ZW5kcmlsLzE1U00KdGVuZW1lbnQvMVNNCnRlbmV0LzFTTQp0ZW5mb2xkLzU0CnRlbm5lci8xUwp0ZW5uaXMvMTRNCnRlbm9uLzE0U01ERwp0ZW5vci8xNVNNCnRlbnBpbi8xU00KdGVucGlucy8xTQp0ZW5zZS8xNDVEUlNNWVRHTlhQCnRlbnNlbmVzcy8xTQp0ZW5zaWxlLzUKdGVuc2lvbi8xNEVTTQp0ZW5zaXR5LzFJTQp0ZW5zb3IvMTRTCnRlbnQvMTRER1NNCnRlbnRhY2xlLzE0RFNNCnRlbnRhdGl2ZS8xNVBZCnRlbnRhdGl2ZW5lc3MvMU0KdGVudGVyaG9vay8xTVMKdGVudGgvNTE0TVkKdGVudGhzLzEKdGVudWl0eS8xTQp0ZW51b3VzLzVQWQp0ZW51b3VzbmVzcy8xTQp0ZW51cmUvMTREU01HCnRlcGVlLzFTTQp0ZXBpZC81WVAKdGVwaWRpdHkvMU0KdGVwaWRuZXNzLzFNCnRlcXVpbGEvMVNNCnRlcmFiaXQvMVNNCnRlcmFieXRlLzFNUwp0ZXJhaGVydHovMU0KdGVyYWpvdWxlLzFTCnRlcmFwaXhlbC8xTVMKdGVyYXdhdHQvMVMKdGVyYml1bS8xTQp0ZXJjZW50ZW5hcnkvMTVTTQp0ZXJjZW50ZW5uaWFsLzFTTQp0ZXJpeWFraS8xCnRlcm0vMTQ1TURZR1MKdGVybWFnYW50LzE1TVMKdGVybWluYWJsZS81SUMKdGVybWluYWwvMTU0TVlTCnRlcm1pbmF0ZS80NURTR05YCnRlcm1pbmF0aW9uLzFDU00KdGVybWluYXRvci8xUwp0ZXJtaW5pLzEKdGVybWlub2xvZ2ljYWwvNVkKdGVybWlub2xvZ3kvMVNNCnRlcm1pbnVzLzFNCnRlcm1pdGUvMTRTTQp0ZXJuLzE1SU1TCnRlcm5hcnkvNTFTTQp0ZXJyLzEKdGVycmFjZS8xNERTTUcKdGVycmFjb3R0YS8xNU0KdGVycmFpbi8xU00KdGVycmFwaW4vMU1TCnRlcnJhcml1bS8xU00KdGVycmF6em8vMU1TCnRlcnJlc3RyaWFsLzE1U01ZCnRlcnJpYmxlLzVQCnRlcnJpYmxlbmVzcy8xTQp0ZXJyaWJseS8KdGVycmllci8xTQp0ZXJyaWZpYy81CnRlcnJpZmljYWxseS8KdGVycmlmeS80R0RTCnRlcnJpZnlpbmcvNTRZCnRlcnJpbmUvMVMKdGVycml0b3JpYWwvNTFNUwp0ZXJyaXRvcmlhbGl0eS8xCnRlcnJpdG9yeS8xU00KdGVycm9yLzFTTQp0ZXJyb3Jpc20vMU0KdGVycm9yaXN0LzE1U00KdGVycm9yaXplLzREU0cKdGVycnkvMVJNWgp0ZXJyeWNsb3RoLzFNCnRlcnNlLzVSWVRQCnRlcnNlbmVzcy8xTQp0ZXJ0aWFyeS81MQp0ZXNzZWxsYXRlLzU0RFNYR04KdGVzc2VsbGF0aW9uLzFNCnRlc3Qncy9BRksKdGVzdC8xNEFLRkNER1MKdGVzdGFibGUvNUNGCnRlc3RhbWVudC8xNE1TCnRlc3RhbWVudGFyeS81CnRlc3RhdGUvNTFTCnRlc3RhdG9yLzFNUwp0ZXN0YXRyaWNlcy8xCnRlc3RhdHJpeC8xTQp0ZXN0ZWQvNFUKdGVzdGVyLzFLU00KdGVzdGVzLzEKdGVzdGljbGUvMU1TCnRlc3RpY3VsYXIvNQp0ZXN0aWZpZXIvMU0KdGVzdGlmeS80WkdEUlMKdGVzdGlseS8KdGVzdGltb25pYWwvMTVNUwp0ZXN0aW1vbnkvMVNNCnRlc3RpbmVzcy8xTQp0ZXN0aW5ncy8xCnRlc3Rpcy8xTQp0ZXN0b3N0ZXJvbmUvMU0KdGVzdHkvNVBSVAp0ZXRhbnVzLzFNCnRldGNoaWx5Lwp0ZXRjaHkvNVBSVAp0ZXRoZXIvMTRTTURHCnRldHJhLzFTTQp0ZXRyYWN5Y2xpbmUvMU0KdGV0cmFoZWRyYWwvNQp0ZXRyYWhlZHJvbi8xTVMKdGV0cmFtZXRlci8xU00KdGV4dC8xNEZNUwp0ZXh0Ym9vay8xNVNNCnRleHRlZC80CnRleHRpbGUvMTVNUwp0ZXh0aW5nLzQxCnRleHR1YWwvNUZZCnRleHR1cmFsLzUKdGV4dHVyZS8xNE1HRFMKdGhhbGFtaS8xCnRoYWxhbXVzLzFNCnRoYWxpZG9taWRlLzFNCnRoYWxsaXVtLzFNCnRoYW4vNyt+CnRoYW5lLzFTTQp0aGFuay8xNFNERwp0aGFua2Z1bC81WVAKdGhhbmtmdWxuZXNzLzFNCnRoYW5rbGVzcy81UFkKdGhhbmtsZXNzbmVzcy8xTQp0aGFua3NnaXZpbmcvMVNNCnRoYXQnZC8KdGhhdCdsbC8KdGhhdC83ODFNfgp0aGF0Y2gvMTRNRFJTWkcKdGhhdGNoZXIvMU0KdGhhdGNoaW5nLzE0TQp0aGF3LzQxTURHUwp0aGUvLStKfgp0aGluZy9TTQp0aGVhdGVyLzFTTQp0aGVhdGVyZ29lci8xU00KdGhlYXRyaWNhbC81MVlTCnRoZWF0cmljYWxpdHkvMU0KdGhlYXRyaWNhbHMvMU0KdGhlYXRyaWNzLzFNCnRoZWUvODQxLVMKdGhlZnQvMVNNCnRoZWlyL1N+CnRoZWlzbS8xTQp0aGVpc3QvMVNNCnRoZWlzdGljLzUKdGhlbS84fgp0aGVtYXRpYy81MQp0aGVtYXRpY2FsbHkvCnRoZW1lLzE0RFNNCnRoZW1zZWx2ZXMvOAp0aGVuLzUxN01+CnRoZW5jZS8KdGhlbmNlZm9ydGgvCnRoZW5jZWZvcndhcmQvCnRoZW9jcmFjeS8xU00KdGhlb2NyYXRpYy81CnRoZW9kb2xpdGUvMVMKdGhlb2xvZ2lhbi8xU00KdGhlb2xvZ2ljYWwvNVkKdGhlb2xvZ3kvMVNNCnRoZW9yZW0vMTRNUwp0aGVvcmV0aWMvNQp0aGVvcmV0aWNhbC81WQp0aGVvcmV0aWNpYW4vMVNNCnRoZW9yaXN0LzFTTQp0aGVvcml6ZS80RFNHCnRoZW9yeS8xU00KdGhlb3NvcGhpYy81CnRoZW9zb3BoaWNhbC81CnRoZW9zb3BoaXN0LzFTTQp0aGVvc29waHkvMU0KdGhlcmFwZXV0aWMvNTFTCnRoZXJhcGV1dGljYWxseS8KdGhlcmFwZXV0aWNzLzFNCnRoZXJhcGlzdC8xU00KdGhlcmFweS8xNFNNCnRoZXJlL34KdGhlcmUncy8KdGhlcmVhYm91dC9TCnRoZXJlYWZ0ZXIvMQp0aGVyZWF0Lwp0aGVyZWJ5Lwp0aGVyZWZvci8KdGhlcmVmb3JlLwp0aGVyZWZyb20vCnRoZXJlaW4vCnRoZXJlbWluLzFTTQp0aGVyZW9mLwp0aGVyZW9uLwp0aGVyZXRvLwp0aGVyZXRvZm9yZS8KdGhlcmV1bmRlci8KdGhlcmV1bnRvLwp0aGVyZXVwb24vCnRoZXJld2l0aC8KdGhlcm0vMTRTTQp0aGVybWFsLzUxNE1ZUwp0aGVybWlvbmljLzUKdGhlcm1vZHluYW1pYy81Uwp0aGVybW9keW5hbWljcy8xTQp0aGVybW9tZXRlci8xTVMKdGhlcm1vbWV0cmljLzUKdGhlcm1vbnVjbGVhci81MQp0aGVybW9wbGFzdGljLzUxU00KdGhlcm1vcy8xTVMKdGhlcm1vc3RhdC8xTVMKdGhlcm1vc3RhdGljLzUKdGhlcm1vc3RhdGljYWxseS8KdGhlc2F1cmkvMQp0aGVzYXVydXMvMU1TCnRoZXNlLzhTfjkKdGhlc2lzLzFNCnRoZXNwaWFuLzUxU00KdGhldGEvMVNNCnRoZXcvMTRNUwp0aGV5Lzh+CnRoZXknZC8KdGhleSdsbC8KdGhleSdyZS8KdGhleSd2ZS8KdGhpYW1pbmUvMU0KdGhpY2svNTE0UE1OUllYVAp0aGlja2VuLzREUkpaRwp0aGlja2VuZXIvMU0KdGhpY2tlbmluZy8xNDVNCnRoaWNrZXQvMU1TCnRoaWNraGVhZGVkLzVNCnRoaWNrbmVzcy8xNE1TCnRoaWNrby8xUwp0aGlja3NldC81MQp0aGllZi8xTQp0aGlldmUvNERTRwp0aGlldmVyeS8xTQp0aGlldmluZy80NTFNCnRoaWV2aXNoLzUKdGhpZ2gvMU1TCnRoaWdoYm9uZS8xTVMKdGhpbWJsZS8xNE1TCnRoaW1ibGVmdWwvMVNNCnRoaW4vNTE0WVNQCnRoaW5lLzgKdGhpbmcvMTRNCnRoaW5nYW1hYm9iLzFTTQp0aGluZ2FtYWppZy8xU00KdGhpbmd1bWFib2IvMVMKdGhpbmd1bW15LzFTCnRoaW5neS8xODVTCnRoaW5rLzQxU1JCWkd+CnRoaW5rYWJsZS81VQp0aGlua2VyLzFNCnRoaW5raW5nJ3MKdGhpbm5lZC80CnRoaW5uZXIvNTFNUwp0aGlubmVzcy8xTQp0aGlubmVzdC81CnRoaW5uaW5nLzQxNQp0aGlyZC81MTRTTVkKdGhpcnN0LzE0U0dNRAp0aGlyc3RpbHkvCnRoaXJzdGluZXNzLzFNCnRoaXJzdHkvNTFUUFIKdGhpcnRlZW4vU01ICnRoaXJ0ZWVudGgvNTFNCnRoaXJ0ZWVudGhzLzEKdGhpcnRpZXRoLzUxTQp0aGlydGlldGhzLzEKdGhpcnR5LzFIU00KdGhpcy84MX4KdGhpc3RsZS8xTVMKdGhpc3RsZWRvd24vMU0KdGhpdGhlci81CnRoby8tODcKdGhvbGUvNDFTTQp0aG9uZy8xU00KdGhvcmFjaWMvNTEKdGhvcmF4LzFNUwp0aG9yaXVtLzFNCnRob3JuLzE0U00KdGhvcm5pbmVzcy8xTQp0aG9ybnkvNVBSVAp0aG9yb3VnaC81KzFSWVBUCnRob3JvdWdoYnJlZC81MU1TCnRob3JvdWdoZmFyZS8xTVMKdGhvcm91Z2hnb2luZy81CnRob3JvdWdobmVzcy8xTQp0aG9zZS84CnRob3UvODQxN01TCnRob3VnaC83NAp0aG91Z2h0LzE0U00KdGhvdWdodGZ1bC81WVAKdGhvdWdodGZ1bG5lc3MvMU0KdGhvdWdodGxlc3MvNVBZCnRob3VnaHRsZXNzbmVzcy8xTQp0aG91c2FuZC8xTUhTCnRob3VzYW5kZm9sZC81CnRob3VzYW5kdGgvNTFNCnRob3VzYW5kdGhzLzEKdGhyYWxsLzE1NFNNREcKdGhyYWxsZG9tLzFNCnRocmFzaC80MUpNRFJTWkcKdGhyYXNoZXIvMU0KdGhyYXNoaW5nLzQxTQp0aHJlYWQvMTRTTURSWkcKdGhyZWFkYmFyZS81CnRocmVhZGVyLzFNCnRocmVhZGxpa2UvNQp0aHJlYWR5LzVUUgp0aHJlYXQvMTRTTU5YCnRocmVhdGVuLzRERwp0aHJlYXRlbmluZy80NTFZCnRocmVlLzFTTQp0aHJlZWZvbGQvNTE0CnRocmVlcGVuY2UvMU0KdGhyZWVzY29yZS8xTVMKdGhyZWVzb21lLzFTTQp0aHJlbm9keS8xU00KdGhyZXNoLzRNRFJTWkcKdGhyZXNoZXIvMU0KdGhyZXNob2xkLzFTTUcKdGhyZXcvNAp0aHJpY2UvCnRocmlmdC8xNFNNCnRocmlmdGlseS8KdGhyaWZ0aW5lc3MvMU0KdGhyaWZ0bGVzcy81CnRocmlmdHkvNVBUUgp0aHJpbGwvNDFTTURSWkcKdGhyaWxsZXIvMU0KdGhyaWxsaW5nLzQ1MVkKdGhyaXZlLzREU0cKdGhyb2F0LzE0U00KdGhyb2F0aWx5Lwp0aHJvYXRpbmVzcy8xTQp0aHJvYXR5LzVSVFAKdGhyb2IvNDFTTQp0aHJvYmJlZC80CnRocm9iYmluZy80NTEKdGhyb2UvMTRTTQp0aHJvbWJpLzEKdGhyb21ib2x5dGljLzUxCnRocm9tYm9zZXMvMTQKdGhyb21ib3Npcy8xTQp0aHJvbWJvdGljLzUKdGhyb21idXMvMU0KdGhyb25lJ3MKdGhyb25lLzE0Uwp0aHJvbmcvMTQ1R1NNRAp0aHJvdHRsZS8xNERSU01aRwp0aHJvdHRsZXIvMU0KdGhyb3VnaC8rNTEKdGhyb3VnaG91dC8rCnRocm91Z2hwdXQvMU0KdGhyb3cvNDFTTVJaRwp0aHJvd2F3YXkvNTFTTQp0aHJvd2JhY2svMVNNCnRocm93ZXIvMU0KdGhyb3duLzQ1CnRocnUvKwp0aHJ1bS8xNDVTTQp0aHJ1bW1lZC80NQp0aHJ1bW1pbmcvNDEKdGhydXNoLzFNUwp0aHJ1c3QvMTRHU00KdGhydXdheS8xTVMKdGh1ZC8xNE1TCnRodWRkZWQvNAp0aHVkZGluZy80MQp0aHVnLzE0TVMKdGh1Z2dlcnkvMU0KdGh1Z2dpc2gvNQp0aHVsaXVtLzFNCnRodW1iLzE0U01ERwp0aHVtYm5haWwvMTRTTQp0aHVtYnByaW50LzFTTQp0aHVtYnNjcmV3LzFTTQp0aHVtYnRhY2svMTRTTQp0aHVtcC8xNFNNREcKdGh1bXBpbmcvNTE0TQp0aHVuZGVyLzE0WkdNRFJTCnRodW5kZXJib2x0LzE0U00KdGh1bmRlcmNsYXAvMTRTTQp0aHVuZGVyY2xvdWQvMU1TCnRodW5kZXJlci8xTQp0aHVuZGVyaGVhZC8xU00KdGh1bmRlcm91cy81WQp0aHVuZGVyc2hvd2VyLzFTTQp0aHVuZGVyc3Rvcm0vMVNNCnRodW5kZXJzdHJ1Y2svNQp0aHVuZGVyeS81CnRodW5rLzQxUwp0aHVzLzEKdGh3YWNrLzQxWkdTTURSCnRod2Fja2VyLzFNCnRod2FydC81KzQxR1NNRAp0aHkvNwp0aHltZS8xTQp0aHltaW5lLzFNCnRoeW11cy8xTVMKdGh5cm9pZC81MU1TCnRoeXJvaWRhbC81CnRoeXNlbGYvOAp0aS8xTVJaCnRpYXJhLzE0U00KdGliaWEvMU0KdGliaWFlLzEKdGliaWFsLzUxCnRpYy8xNFNNCnRpY2svMTRNRFJaR1MKdGlja2VyLzFNCnRpY2tldC8xNEdTTUQKdGlja2luZy8xNE0KdGlja2xlLzE0NURSU01aRwp0aWNrbGVyLzFNCnRpY2tsaXNoLzVZUAp0aWNrbGlzaG5lc3MvMU0KdGlja3RhY2t0b2UvMU0KdGlja3RvY2svNDFNUwp0aWRhbC81WQp0aWRiaXQvMVNNCnRpZGRsZXIvMVMKdGlkZGx5LzE1CnRpZGRseXdpbmsvMTRTCnRpZGRseXdpbmtzLzE0TQp0aWRlLzE0TUdKRFMKdGlkZWxhbmQvMVNNCnRpZGVtYXJrLzFTCnRpZGV3YXRlci8xTVMKdGlkZXdheS8xTVMKdGlkaWx5L1UKdGlkaW5lc3MvMVVNCnRpZGluZ3MvMU0KdGlkeS81NDFEUlNNVEdQCnRpZSdzCnRpZS8xNEFVU0QKdGllYmFjay8xTVMKdGllYnJlYWsvMTRSU1oKdGllYnJlYWtlci8xTQp0aWVwaW4vMVMKdGllci8xNE1ECnRpZmYvMTRNREdTCnRpZ2VyLzFTTQp0aWdlcmlzaC81CnRpZ2h0LzU0U05SWVBYVAp0aWdodGVuLzRaR0RSCnRpZ2h0ZW5lci8xTQp0aWdodGZpc3RlZC81CnRpZ2h0bmVzcy8xTQp0aWdodHJvcGUvMTRNUwp0aWdodHMvMU0KdGlnaHR3YWQvMU1TCnRpZ3Jlc3MvMU1TCnRpbC83KzEKdGlsYXBpYS8xCnRpbGRlLzFTTQp0aWxlLzE0TVpHRFJTCnRpbGVyLzFNCnRpbGluZy8xNE0KdGlsbCdzCnRpbGwvKzcxNEVEUlpHUwp0aWxsYWJsZS81CnRpbGxhZ2UvMU0KdGlsbGVyLzE0RU0KdGlsdC80MU1ER1MKdGltYmVyLzE0U01ERwp0aW1iZXJsYW5kLzFNCnRpbWJlcmxpbmUvMU1TCnRpbWJyZS8xU00KdGltYnJlbC8xNFNNCnRpbWUvMTRNWVpHSkRSUwp0aW1la2VlcGVyLzFNUwp0aW1la2VlcGluZy8xNE0KdGltZWxlc3MvNTFQWQp0aW1lbGVzc25lc3MvMU0KdGltZWxpbmUvMTRNUwp0aW1lbGluZXNzLzFVTQp0aW1lbHkvNVVQUlQKdGltZW91dC8xU00KdGltZXBpZWNlLzFNUwp0aW1lci8xTQp0aW1lc2NhbGUvMVMKdGltZXNlcnZlci8xU00KdGltZXNlcnZpbmcvMTVNCnRpbWVzaGFyZS8xUwp0aW1lc3RhbXAvMTRTTUQKdGltZXRhYmxlLzE0RFNNRwp0aW1ld29ybi81CnRpbWV6b25lLzEKdGltaWQvNVJZVFAKdGltaWRpdHkvMU0KdGltaWRuZXNzLzFNCnRpbWluZy8xNE0KdGltb3JvdXMvNVBZCnRpbW9yb3VzbmVzcy8xTQp0aW1vdGh5LzFNCnRpbXBhbmkvMU0KdGltcGFuaXN0LzFTTQp0aW4vMTU0U00KdGluY3R1cmUvMTRNR0RTCnRpbmRlci8xNE0KdGluZGVyYm94LzFNUwp0aW5lLzE1NE1TCnRpbmZvaWwvMTRNCnRpbmcvMTRNRFlHCnRpbmdlLzE0U00KdGluZ2VpbmcvNAp0aW5nbGUvNDFEU01HSgp0aW5nbGluZy8xNE0KdGluaW5lc3MvMU0KdGlua2VyLzE0WkdTTURSCnRpbmtlcmVyLzFNCnRpbmtsZS80MURTTUcKdGlubmVkLzQ1CnRpbm5pbmVzcy8xTQp0aW5uaW5nLzQxCnRpbm5pdHVzLzFNCnRpbm55LzUxUFJUCnRpbnBsYXRlLzE0TQp0aW5wb3QvNTEKdGluc2VsLzE1NEdTTUQKdGluc21pdGgvMU0KdGluc21pdGhzLzEKdGludC8xNE1ER1MKdGludGlubmFidWxhdGlvbi8xTVMKdGludHlwZS8xNE1TCnRpbndhcmUvMU0KdGlueS81MVJUUAp0aXAvMTRTTQp0aXBwZWQvNAp0aXBwZXIvMVNNCnRpcHBldC8xU00KdGlwcGV4LzQxR0RTCnRpcHBpbmcvMTQKdGlwcGxlLzE0RFJTTVpHCnRpcHBsZXIvMU0KdGlwc2lseS8KdGlwc2luZXNzLzFNCnRpcHN0ZXIvMU1TCnRpcHN5LzVSUFQKdGlwdG9lLzE1NERTTQp0aXB0b2VpbmcvNAp0aXB0b3AvMVNNCnRpcmFkZS8xNFNNCnRpcmFtaXN1LzFNUwp0aXJlJ3MKdGlyZS80MUFHRFMKdGlyZWQvNDVQUllUCnRpcmVkbmVzcy8xTQp0aXJlbGVzcy81WVAKdGlyZWxlc3NuZXNzLzFNCnRpcmVzb21lLzVQWQp0aXJlc29tZW5lc3MvMU0KdGlzc3VlLzE0U00KdGl0LzE0U00KdGl0YW4vMVNNCnRpdGFuaWMvNQp0aXRhbml1bS8xTQp0aXRjaC8xNFMKdGl0Y2h5LzUKdGl0aGUvMTU0RFJTTVpHCnRpdGhlci8xTQp0aXRpYW4vMTVNCnRpdGlsbGF0ZS80RFNHTgp0aXRpbGxhdGluZy80NVkKdGl0aWxsYXRpb24vMU0KdGl0aXZhdGUvNERTR04KdGl0aXZhdGlvbi8xTQp0aXRsZS8xNERTTUcKdGl0bGVkLzU0VQp0aXRsZWhvbGRlci8xTVMKdGl0bGlzdC8xTVMKdGl0bWljZS8xCnRpdG1vdXNlLzFNCnRpdHRlci80MVNHTUQKdGl0dGxlLzE0U00KdGl0dHkvMVMKdGl0dWxhci81MQp0aXp6LzEKdGl6enkvMVNNCnRuLzEKdG5way8xCnRvLytJVX4KdG9hZC8xNE1TCnRvYWRzdG9vbC8xTVMKdG9hZHkvMTQ1RFNNRwp0b2FkeWlzbS8xTQp0b2FzdC8xNFNNRFJaRwp0b2FzdGVyLzFNCnRvYXN0bWFzdGVyLzFTTQp0b2FzdG1pc3RyZXNzLzFNUwp0b2FzdHkvNTFUUlMKdG9iYWNjby8xNE1TCnRvYmFjY29uaXN0LzFTTQp0b2JvZ2dhbi8xNFpHU01EUgp0b2JvZ2dhbmVyLzFNCnRvYm9nZ2FuaW5nLzQxTQp0b2NjYXRhLzFTCnRvY29waGVyb2wvMQp0b2NzaW4vMVNNCnRvZGF5LzE1TQp0b2RkbGUvNDFEUlNNWkcKdG9kZGxlci8xTQp0b2RkeS8xU00KdG9lLzE0RFNNCnRvZWNhcC8xU00KdG9laG9sZC8xTVMKdG9laW5nLzQxCnRvZW5haWwvMTRNUwp0b2VyYWcvMVMKdG9mZi8xUwp0b2ZmZWUvMTRTTQp0b2Z1LzFNCnRvZy8xNFNNCnRvZ2EvMU1EUwp0b2dldGhlci81UAp0b2dldGhlcm5lc3MvMU0KdG9nZ2VkLzUKdG9nZ2luZy80CnRvZ2dsZS8xNERTTUcKdG9ncy8xNE0KdG9pbC8xNE1EUlpHUwp0b2lsZXIvMU0KdG9pbGV0LzE0TURHUwp0b2lsZXRyeS8xU00KdG9pbGV0dGUvMU0KdG9pbHNvbWUvNQp0b2tlLzE0TUdEUwp0b2tlbi8xNTRTTQp0b2tlbmlzbS8xTQp0b2xkLzRBVQp0b2xlLzE0TQp0b2xlcmFibGUvNUkKdG9sZXJhYmx5L0kKdG9sZXJhbmNlLzE0SU0KdG9sZXJhbmNlcy8xNAp0b2xlcmFudC81SVkKdG9sZXJhdGUvNEdORFMKdG9sZXJhdGlvbi8xTQp0b2xsLzE0TURHUwp0b2xsYm9vdGgvMU0KdG9sbGJvb3Rocy8xCnRvbGxnYXRlLzE0U00KdG9sbHdheS8xU00KdG9sdWVuZS8xTQp0b20vMTRTTQp0b21haGF3ay8xNFNHTUQKdG9tYXRvLzE0TQp0b21hdG9lcy8xCnRvbWIvMTRNREdTCnRvbWJvbGEvMVMKdG9tYm95LzFNUwp0b21ib3lpc2gvNQp0b21ic3RvbmUvMTRNUwp0b21jYXQvMTRNUwp0b21lLzFNUwp0b21mb29sZXJ5LzFTTQp0b21vZ3JhcGhpYy81CnRvbW9ncmFwaHkvMU0KdG9tb3Jyb3cvMU1TCnRvbXRpdC8xTVMKdG9uLzFTTQp0b25hbC81MVkKdG9uYWxpdHkvMVNNCnRvbmUncwp0b25lLzE0OElaR0RSUwp0b25lYXJtLzFTTQp0b25lbGVzcy81WQp0b25lci8xSU0KdG9uZy8xNE1ER1MKdG9uZ3VlLzE0TUdEUwp0b25ndWVsZXNzLzUKdG9uaWMvNTE0U00KdG9uaWdodC8xTQp0b25uYWdlLzFTTQp0b25uZS8xU00KdG9uc2lsLzFNUwp0b25zaWxsZWN0b215LzFTTQp0b25zaWxsaXRpcy8xTQp0b25zb3JpYWwvNQp0b25zdXJlLzQxRFNNRwp0b255LzUxUlQKdG9vLwp0b29rLzRBCnRvb2wncwp0b29sLzE0QURHUwp0b29sYmFyLzFTTQp0b29sYm94LzFNUwp0b29sa2l0LzEKdG9vbG1ha2VyLzFNUwp0b290LzE0TURSWkdTCnRvb3Rlci8xTQp0b290aC8xNE1ECnRvb3RoYWNoZS8xTVMKdG9vdGhicnVzaC8xNE1TCnRvb3RoaWx5Lwp0b290aGxlc3MvNQp0b290aHBhc3RlLzFTTQp0b290aHBpY2svMTRTTQp0b290aHNvbWUvNQp0b290aHkvNVJUCnRvb3RsZS80MUdEUwp0b290c2llLzFTCnRvcC8xNDVTTQp0b3Bhei8xNU1TCnRvcGNvYXQvMTRTTQp0b3BkcmVzc2luZy80MVNNCnRvcGVlLzFTCnRvcGZsaWdodC81CnRvcGkvMQp0b3BpYXJ5LzUxTQp0b3BpYy81MVNNCnRvcGljYWwvNTFZCnRvcGljYWxpdHkvMU0KdG9wa25vdC8xU00KdG9wbGVzcy81MQp0b3BtYXN0LzFTTQp0b3Btb3N0LzUKdG9wbm90Y2gvNQp0b3BvZ3JhcGhlci8xU00KdG9wb2dyYXBoaWMvNQp0b3BvZ3JhcGhpY2FsLzVZCnRvcG9ncmFwaHkvMVNNCnRvcG9sb2dpY2FsLzVZCnRvcG9sb2d5LzEKdG9wcGVkLzU0CnRvcHBlci8xTVMKdG9wcGluZy80NTFTTQp0b3BwbGUvNDFHRFMKdG9wc2FpbC8xU00KdG9wc2lkZS8xNVNNCnRvcHNvaWwvMTRNCnRvcHNwaW4vMTRNCnRvcXVlLzFTTQp0b3IvMTVTTQp0b3JjaC8xNEdNRFMKdG9yY2hiZWFyZXIvMU1TCnRvcmNobGlnaHQvMU0KdG9yZS81NDEKdG9yZWFkb3IvMU1TCnRvcm1lbnQvMTRTTURHCnRvcm1lbnRpbmcvNDUxWQp0b3JtZW50b3IvMU1TCnRvcm4vNDUKdG9ybmFkby8xNE0KdG9ybmFkb2VzLzEKdG9ycGVkby8xNEdNRAp0b3JwZWRvZXMvMTQKdG9ycGlkLzUxWQp0b3JwaWRpdHkvMU0KdG9ycG9yLzFNCnRvcnF1ZS8xNE1HRFMKdG9ycmVudC8xNTRTTQp0b3JyZW50aWFsLzUKdG9ycmlkLzVZUAp0b3JyaWRpdHkvMU0KdG9ycmlkbmVzcy8xTQp0b3JzaW9uLzFNCnRvcnNpb25hbC81CnRvcnNvLzFTTQp0b3J0J3MKdG9ydC8xNUZFQVMKdG9ydGUvMVNNCnRvcnRlbGxpbmkvMU0KdG9ydGlsbGEvMU1TCnRvcnRvaXNlLzFNUwp0b3J0b2lzZXNoZWxsLzE1U00KdG9ydG9uaS8xTQp0b3J0dW91cy81UFkKdG9ydHVvdXNuZXNzLzFNCnRvcnR1cmUvMTREUlNNWkcKdG9ydHVyZXIvMU0KdG9ydHVyb3VzLzUKdG9ydXMvMQp0b3NoLzE0NQp0b3NzLzE0TURSU1pHCnRvc3N1cC8xTVMKdG90LzE0U0dNRAp0b3RhbC8xNTRHU01EWQp0b3RhbGl0YXJpYW4vNTFTTQp0b3RhbGl0YXJpYW5pc20vMU0KdG90YWxpdHkvMVNNCnRvdGFsaXphdG9yLzFTTQp0b3RlLzE0TVMKdG90ZW0vMVNNCnRvdGVtaWMvNQp0b3R0ZWQvNAp0b3R0ZXIvNDFaR01EUlMKdG90dGVyZXIvMU0KdG90dGluZy80MQp0b3VjYW4vMU1TCnRvdWNoLzQxQUdNRFMKdG91Y2hkb3duLzFTTQp0b3VjaGUvQkoKdG91Y2hlZC81NFUKdG91Y2hpbHkvCnRvdWNoaW5lc3MvMU0KdG91Y2hpbmcvNDUrMVkKdG91Y2hsaW5lLzFTCnRvdWNocGFwZXIvMVMKdG91Y2hzY3JlZW4vMU1TCnRvdWNoc3RvbmUvMU1TCnRvdWNoeS81UlBUCnRvdWdoLzUxNFhUR01ETlJZUAp0b3VnaGVuLzRaR0RSCnRvdWdoZW5lci8xTQp0b3VnaGllLzFTTQp0b3VnaG5lc3MvMU0KdG91Z2hzLzEKdG91cGVlLzFNUwp0b3VyLzE0Q0ZTR0RNCnRvdXJpc20vMU0KdG91cmlzdC8xNE1TCnRvdXJpc3RpYy81CnRvdXJpc3R5LzUKdG91cm1hbGluZS8xTQp0b3VybmFtZW50LzFTTQp0b3VybmV5LzE0TVMKdG91cm5pcXVldC8xNE1TCnRvdXNsZS80MUdEUwp0b3V0LzE0TURHUwp0b3cvNDFTWkdNRFIKdG93YXJkLys1Uwp0b3dib2F0LzFNUwp0b3dlbC8xNEpHU01ECnRvd2VsZXR0ZS8xU00KdG93ZWxpbmcvMTRNCnRvd2VyLzE0R01ECnRvd2hlYWQvMU1EUwp0b3doZWUvMU1TCnRvd2xpbmUvMU1TCnRvd24vMU1TCnRvd25lZS8xUwp0b3duaG91c2UvMU1TCnRvd25pZS8xTVMKdG93bnNmb2xrLzFNCnRvd25zaGlwLzFNUwp0b3duc21hbi8xTQp0b3duc21lbi8xCnRvd25zcGVvcGxlLzFNCnRvd25zd29tYW4vMU0KdG93bnN3b21lbi8xCnRvd3BhdGgvMU0KdG93cGF0aHMvMQp0b3dyb3BlLzFTTQp0b3hlbWlhLzFNCnRveGljLzUKdG94aWNpdHkvMVNNCnRveGljb2xvZ2ljYWwvNQp0b3hpY29sb2dpc3QvMVNNCnRveGljb2xvZ3kvMU0KdG94aW4vMVNNCnRveS8xNDVTR01ECnRveWJveS8xUwp0ci8xNQp0cmFiZWN1bGEvMQp0cmFiZWN1bGFyLzUKdHJhYmVjdWxlLzEKdHJhY2UvMTRKRFJTTVpHCnRyYWNlYWJpbGl0eS8xCnRyYWNlYWJsZS81VQp0cmFjZXIvMU0KdHJhY2VyeS8xU00KdHJhY2hlYS8xTQp0cmFjaGVhZS8xCnRyYWNoZWFsLzUKdHJhY2hlb3RvbXkvMVNNCnRyYWNpbmcvMTRNCnRyYWNrLzE0WkdTTURSCnRyYWNrYmFsbC8xU00KdHJhY2tlci8xTQp0cmFja2xlc3MvNQp0cmFja3N1aXQvMVMKdHJhY3Qncwp0cmFjdC8xNENFS0ZBUwp0cmFjdGFiaWxpdHkvMUlNCnRyYWN0YWJsZS81SQp0cmFjdGFibHkvSQp0cmFjdGlvbi8xNEVGQUNLTQp0cmFjdG9yLzE0RkNLTVMKdHJhZC81MQp0cmFkZS8xNDVKRFJTTVpHCnRyYWRlbWFyay8xNDVTR01ECnRyYWRlci8xTQp0cmFkZXNtYW4vMU0KdHJhZGVzbWVuLzEKdHJhZGVzcGVvcGxlLzFNCnRyYWRlc3dvbWFuLzFNCnRyYWRlc3dvbWVuLzEKdHJhZGluZy80NTFNCnRyYWRpdGlvbi8xNE1TCnRyYWRpdGlvbmFsLzUxWQp0cmFkaXRpb25hbGlzbS8xTQp0cmFkaXRpb25hbGlzdC8xNVNNCnRyYWR1Y2UvNERSU1pHCnRyYWR1Y2VyLzFNCnRyYWZmaWMvMTQ1U00KdHJhZmZpY2tlZC81NAp0cmFmZmlja2VyLzFTTQp0cmFmZmlja2luZy80MU0KdHJhZ2VkaWFuLzFTTQp0cmFnZWRpZW5uZS8xTVMKdHJhZ2VkeS8xU00KdHJhZ2ljLzUxCnRyYWdpY2FsbHkvCnRyYWdpY29tZWR5LzFTTQp0cmFnaWNvbWljLzUKdHJhaWwvNDFaR1NNRFIKdHJhaWxibGF6ZXIvMU1TCnRyYWlsYmxhemluZy81NE0KdHJhaWxlci8xNE0KdHJhaW4vMTRaR1NNRFJCCnRyYWluZWQvNTRVCnRyYWluZWUvMVNNCnRyYWluZXIvMU0KdHJhaW5pbmcvNDFNCnRyYWlubG9hZC8xTVMKdHJhaW5tYW4vMU0KdHJhaW5tZW4vMQp0cmFpbnNwb3R0ZXIvMVMKdHJhaW5zcG90dGluZy8xCnRyYWlwc2UvNDFEU01HCnRyYWl0LzFTTQp0cmFpdG9yLzE0NVNNCnRyYWl0b3JvdXMvNVkKdHJhamVjdG9yeS8xU00KdHJhbS8xNE1TCnRyYW1jYXIvMVMKdHJhbWxpbmVzLzE0CnRyYW1tZWQvNAp0cmFtbWVsLzE0U0dNRAp0cmFtbWVsZWQvNFUKdHJhbW1pbmcvNAp0cmFtcC8xNFpHU01EUgp0cmFtcGVyLzFNCnRyYW1wbGUvNDFEUlNNWkcKdHJhbXBsZXIvMU0KdHJhbXBvbGluZS8xNE1HRFMKdHJhbXdheS8xUwp0cmFuY2UvMTRNUwp0cmFuY2hlLzE0Uwp0cmFucXVpbC81UllUCnRyYW5xdWlsaXR5LzFNCnRyYW5xdWlsaXplLzRaR0RSUwp0cmFucXVpbGl6ZXIvMU0KdHJhbnMvNTE0SQp0cmFuc2FjdC80REdTCnRyYW5zYWN0aW9uLzFTTQp0cmFuc2FjdGlvbmFsLzUKdHJhbnNhY3Rvci8xTVMKdHJhbnNhdGxhbnRpYy81CnRyYW5zY2VpdmVyLzFTTQp0cmFuc2NlbmQvNEdTRAp0cmFuc2NlbmRlbmNlLzFNCnRyYW5zY2VuZGVudC81MQp0cmFuc2NlbmRlbnRhbC8xNVkKdHJhbnNjZW5kZW50YWxpc20vMU0KdHJhbnNjZW5kZW50YWxpc3QvMVNNCnRyYW5zY29udGluZW50YWwvNTEKdHJhbnNjcmliZS80WkdEUlMKdHJhbnNjcmliZXIvMU0KdHJhbnNjcmlwdC8xNE1TCnRyYW5zY3JpcHRpb24vMVNNCnRyYW5zZHVjZXIvMU1TCnRyYW5zZHVjdGlvbi8xCnRyYW5zZWN0LzQxRFNHCnRyYW5zZXB0LzFNUwp0cmFuc2Zlci80MU1CUwp0cmFuc2ZlcmFsLzFNUwp0cmFuc2ZlcmVuY2UvMU0KdHJhbnNmZXJyZWQvNAp0cmFuc2ZlcnJpbmcvNDEKdHJhbnNmaWd1cmF0aW9uLzFNCnRyYW5zZmlndXJlLzRHRFMKdHJhbnNmaW5pdGUvNTEKdHJhbnNmaXgvNDFEU0cKdHJhbnNmb3JtLzQxQlNaR01EUgp0cmFuc2Zvcm1hdGlvbi8xU00KdHJhbnNmb3JtYXRpb25hbC81CnRyYW5zZm9ybWVyLzFNCnRyYW5zZnVzZS80RFNYR04KdHJhbnNmdXNpb24vMU0KdHJhbnNnZW5kZXIvNTE0Uwp0cmFuc2dlbmljLzUxCnRyYW5zZ3Jlc3MvNEdEUwp0cmFuc2dyZXNzaW9uLzFTTQp0cmFuc2dyZXNzb3IvMVNNCnRyYW5zaWVuY2UvMU0KdHJhbnNpZW5jeS8xTQp0cmFuc2llbnQvNTFTTVkKdHJhbnNpc3Rvci8xU00KdHJhbnNpc3Rvcml6ZS80RFNHCnRyYW5zaXQvMTRTR01ECnRyYW5zaXRpb24vMTRHU01ECnRyYW5zaXRpb25hbC81WQp0cmFuc2l0aXZlLzUxSVNNWQp0cmFuc2l0aXZlbmVzcy8xTQp0cmFuc2l0aXZpdHkvMU0KdHJhbnNpdG9yeS81CnRyYW5zbAp0cmFuc2xhdGFibGUvNVUKdHJhbnNsYXRlLzQxRFNHTkJYCnRyYW5zbGF0ZWQvNFUKdHJhbnNsYXRpb24vMU0KdHJhbnNsYXRvci8xU00KdHJhbnNsaXRlcmF0ZS80RFNHTlgKdHJhbnNsaXRlcmF0aW9uLzFNCnRyYW5zbG9jYXRpb24vMQp0cmFuc2x1Y2VuY2UvMU0KdHJhbnNsdWNlbmN5LzFNCnRyYW5zbHVjZW50LzVZCnRyYW5zbWlncmF0ZS80R05EUwp0cmFuc21pZ3JhdGlvbi8xTQp0cmFuc21pc3NpYmxlLzUKdHJhbnNtaXNzaW9uLzFNUwp0cmFuc21pdC80Uwp0cmFuc21pdHRhYmxlLzUKdHJhbnNtaXR0YWwvMU0KdHJhbnNtaXR0YW5jZS8xTQp0cmFuc21pdHRlZC81NAp0cmFuc21pdHRlci8xU00KdHJhbnNtaXR0aW5nLzQxCnRyYW5zbW9ncmlmaWNhdGlvbi8xTQp0cmFuc21vZ3JpZnkvNERTTkcKdHJhbnNtdXRhdGlvbi8xU00KdHJhbnNtdXRlLzRCRFNHCnRyYW5zbmF0aW9uYWwvNTFNUwp0cmFuc29jZWFuaWMvNQp0cmFuc29tLzFTTQp0cmFuc3BhY2lmaWMvNQp0cmFuc3BhcmVuY3kvMVNNCnRyYW5zcGFyZW50LzVZCnRyYW5zcGhvYmlhLzFNCnRyYW5zcGhvYmljLzUKdHJhbnNwaXJhdGlvbi8xTQp0cmFuc3BpcmUvNERTRwp0cmFuc3BsYW50LzQxTURHUwp0cmFuc3BsYW50YXRpb24vMU0KdHJhbnNwb2xhci81CnRyYW5zcG9uZGVyLzFTTQp0cmFuc3BvcnQvNDFCU1pHTURSCnRyYW5zcG9ydGF0aW9uLzFNCnRyYW5zcG9ydGVyLzFNCnRyYW5zcG9zZS80NTFEU0cKdHJhbnNwb3NpdGlvbi8xNE1TCnRyYW5zc2V4dWFsLzUxU00KdHJhbnNzZXh1YWxpc20vMU0KdHJhbnNzaGlwLzRTTAp0cmFuc3NoaXBtZW50LzFNCnRyYW5zc2hpcHBlZC80CnRyYW5zc2hpcHBpbmcvNDEKdHJhbnN1YnN0YW50aWF0aW9uLzFNCnRyYW5zdmVyc2FsLzUxCnRyYW5zdmVyc2UvNTE0TVlTCnRyYW5zdmVzdGlzbS8xTQp0cmFuc3Zlc3RpdGUvMU1TCnRyYXAvMTRNUwp0cmFwZG9vci8xNE1TCnRyYXBlemUvMTRTTQp0cmFwZXppdW0vMVNNCnRyYXBlem9pZC8xU00KdHJhcGV6b2lkYWwvNQp0cmFwcGFibGUvNQp0cmFwcGVkLzU0CnRyYXBwZXIvMVNNCnRyYXBwaW5nLzQxUwp0cmFwcGluZ3MvMU0KdHJhcHNob290aW5nLzFNCnRyYXNoLzE0R01EUwp0cmFzaGNhbi8xTVMKdHJhc2hpbmVzcy8xTQp0cmFzaHkvNVJQVAp0cmF1bWEvMU1TCnRyYXVtYXRpYy81MQp0cmF1bWF0aWNhbGx5Lwp0cmF1bWF0aXplLzRHRFMKdHJhdmFpbC8xNFNHTUQKdHJhdmVsLzQxTURSU1pHSgp0cmF2ZWxlZC81NFUKdHJhdmVsZXIvMU0KdHJhdmVsaW5nLzQxNU0KdHJhdmVsb2d1ZS8xTVMKdHJhdmVyc2FsLzFTTQp0cmF2ZXJzZS8xNDVEU01HCnRyYXZlc3R5LzE0R0RTTQp0cmF3bC8xNFpHU01EUgp0cmF3bGVyLzFNCnRyYXkvMTRNUwp0cmVhY2hlcm91cy81UFkKdHJlYWNoZXJvdXNuZXNzLzFNCnRyZWFjaGVyeS8xU00KdHJlYWNsZS8xNE0KdHJlYWNseS81CnRyZWFkLzQxQUdTTQp0cmVhZGxlLzE0RFNNRwp0cmVhZG1pbGwvMTRNUwp0cmVhcwp0cmVhc29uLzFCTQp0cmVhc29ub3VzLzUKdHJlYXN1cmUvMTREUlNNWkcKdHJlYXN1cmVyLzFNCnRyZWFzdXJ5LzFTTQp0cmVhdC80MUFHU01ECnRyZWF0YWJsZS81CnRyZWF0ZWQvNDVVCnRyZWF0aXNlLzFTTQp0cmVhdG1lbnQvMU1TCnRyZWF0eS8xNFNNCnRyZWJsZS81MTRNR0RTCnRyZWUvMTRNRFMKdHJlZWluZy80MTUKdHJlZWxlc3MvNQp0cmVlbGlrZS81CnRyZWVsaW5lLzEKdHJlZXRvcC8xU00KdHJlZm9pbC8xU00KdHJlay8xNE1TCnRyZWtrZWQvNAp0cmVra2VyLzFTTQp0cmVra2luZy80MQp0cmVsbGlzLzE0R01EUwp0cmVtYXRvZGUvMU1TCnRyZW1ibGUvNDFEU01HCnRyZW1lbmRvdXMvNVkKdHJlbW9sby8xU00KdHJlbW9yLzE0TVMKdHJlbXVsb3VzLzVQWQp0cmVtdWxvdXNuZXNzLzFNCnRyZW5jaCdzCnRyZW5jaC8xNEFEU0cKdHJlbmNoYW5jeS8xTQp0cmVuY2hhbnQvNVkKdHJlbmNoZXIvMU1TCnRyZW5jaGVybWFuLzFNCnRyZW5jaGVybWVuLzEKdHJlbmQvMTRHU01ECnRyZW5kaWx5Lwp0cmVuZGluZXNzLzFNCnRyZW5kc2V0dGVyLzFTCnRyZW5kc2V0dGluZy81CnRyZW5keS81MVJTTVBUCnRyZXBpZGF0aW9uLzFNCnRyZXNwYXNzLzE0TURSU1pHCnRyZXNwYXNzZXIvMU0KdHJlc3MvMTRFTVMKdHJlc3RsZS8xTVMKdHJld3MvMQp0cmV5LzFNUwp0cmlhZC8xU00KdHJpYWdlLzE0TUQKdHJpYWwvMTU0QVNNCnRyaWFsZWQvNAp0cmlhbGluZy80MQp0cmlhbmdsZS8xU00KdHJpYW5ndWxhci81WQp0cmlhbmd1bGF0ZS80NUdORFMKdHJpYW5ndWxhdGlvbi8xTQp0cmlhdGhsZXRlLzFTCnRyaWF0aGxvbi8xU00KdHJpYmFsLzUxCnRyaWJhbGlzbS8xTQp0cmliZS8xNFNNCnRyaWJlc21hbi8xTQp0cmliZXNtZW4vMQp0cmliZXN3b21hbi8xTQp0cmliZXN3b21lbi8xCnRyaWJ1bGF0aW9uLzFTTQp0cmlidW5hbC8xU00KdHJpYnVuZS8xTVMKdHJpYnV0YXJ5LzE1U00KdHJpYnV0ZSdzCnRyaWJ1dGUvMTRGUwp0cmljZS80MU0KdHJpY2VudGVubmlhbC8xNU1TCnRyaWNlcHMvMU1TCnRyaWNlcmF0b3BzLzFNCnRyaWNoaW5hLzFNCnRyaWNoaW5hZS8xCnRyaWNoaW5vc2lzLzFNCnRyaWNrLzE0NUdTTUQKdHJpY2tlcnkvMU0KdHJpY2tpbHkvCnRyaWNraW5lc3MvMU0KdHJpY2tsZS8xNE1HRFMKdHJpY2tzdGVyLzE0U00KdHJpY2t5LzVUUlAKdHJpY29sb3IvNTFTTQp0cmljeWNsZS8xNFNNCnRyaWRlbnQvMU1TCnRyaWVkLzU0VQp0cmllbm5pYWwvNTFNWVMKdHJpZXIvMVNNCnRyaWZlY3RhLzFTTQp0cmlmbGUvMTRNWkdEUlMKdHJpZmxlci8xTQp0cmlmb2NhbHMvMU0KdHJpZy81MTRNCnRyaWdnZXIvMTQ1TURTRwp0cmlnbHljZXJpZGUvMU1TCnRyaWdvbm9tZXRyaWMvNQp0cmlnb25vbWV0cmljYWwvNQp0cmlnb25vbWV0cnkvMU0KdHJpa2UvMTRTTQp0cmlsYXRlcmFsLzVTCnRyaWxieS8xU00KdHJpbGwvMTQ1R1NNRAp0cmlsbGlvbi8xU01ICnRyaWxsaW9udGgvNTFNCnRyaWxsaW9udGhzLzEKdHJpbGxpdW0vMU0KdHJpbG9iaXRlLzFTTQp0cmlsb2d5LzFTTQp0cmltLzQxNVBNWVMKdHJpbWFyYW4vMU1TCnRyaW1lc3Rlci8xU00KdHJpbW1lZC80NVUKdHJpbW1lci81MVNNCnRyaW1tZXN0LzU0CnRyaW1taW5nLzE0U00KdHJpbW1pbmdzLzFNCnRyaW1uZXNzLzFNCnRyaW1vbnRobHkvNTEKdHJpbml0cm90b2x1ZW5lLzFNCnRyaW5pdHkvMVNNCnRyaW5rZXQvMTRTTQp0cmlvLzFNUwp0cmlwLzE0NU1ZUwp0cmlwYXJ0aXRlLzUKdHJpcGUvMU0KdHJpcGxlLzUxNE1HRFMKdHJpcGxldC8xU00KdHJpcGxleC81MTRNUwp0cmlwbGljYXRlLzUxNE1HRFMKdHJpcG9kLzE0TVMKdHJpcG9kYWwvNQp0cmlwb3MvMQp0cmlwcGVkLzQKdHJpcHBlci8xU00KdHJpcHBpbmcvNDUxCnRyaXB0eWNoLzFNCnRyaXB0eWNocy8xCnRyaXB3aXJlLzE0Uwp0cmlyZW1lLzFTTQp0cmlzZWN0LzRTREcKdHJpc2VjdGlvbi8xTQp0cml0ZS81MUZQWVQKdHJpdGVuZXNzLzFGTQp0cml0ZXIvNQp0cml0aXVtLzFNCnRyaXVtcGgvMTRHTUQKdHJpdW1waGFsLzUxCnRyaXVtcGhhbGlzbS8xCnRyaXVtcGhhbGlzdC81MQp0cml1bXBoYW50LzVZCnRyaXVtcGhzLzE0CnRyaXVtdmlyLzFNUwp0cml1bXZpcmF0ZS8xU00KdHJpdmFsZW50LzUxCnRyaXZldC8xTVMKdHJpdmlhLzFNCnRyaXZpYWwvNTFZCnRyaXZpYWxpdHkvMVNNCnRyaXZpYWxpemF0aW9uLzFNCnRyaXZpYWxpemUvNEdEUwp0cml2aXVtLzFNCnRyb2NoYWljLzUxCnRyb2NoZWUvMVNNCnRyb2QvNDFBVQp0cm9kZGVuLzU0QQp0cm9nbG9keXRlLzFTTQp0cm9pa2EvMU1TCnRyb2xsLzE0U0dNRAp0cm9sbGV5LzE0U00KdHJvbGxleWJ1cy8xTVMKdHJvbGxvcC8xNFNNCnRyb21ib25lLzE0TVMKdHJvbWJvbmlzdC8xTVMKdHJvbXAvNDFTR0QKdHJvbi8xUwp0cm9vcC8xNFNaR01EUgp0cm9vcGVyLzE0TQp0cm9vcHNoaXAvMU1TCnRyb3BlLzE0U00KdHJvcGh5LzE0U00KdHJvcGljLzE1TVMKdHJvcGljYWwvNTFZCnRyb3BpY3MvMU0KdHJvcGlzbS8xU00KdHJvcG9zcGhlcmUvMVNNCnRyb3QvMTRNUwp0cm90aC8xNE0KdHJvdHRlZC80CnRyb3R0ZXIvMVNNCnRyb3R0aW5nLzUxNAp0cm91YmFkb3VyLzFNUwp0cm91YmxlLzE0RFNNRwp0cm91YmxlZC81NFUKdHJvdWJsZW1ha2VyLzFNUwp0cm91Ymxlc2hvb3QvNERSWkdTCnRyb3VibGVzaG9vdGVyLzFNCnRyb3VibGVzaG9vdGluZy8xNE0KdHJvdWJsZXNob3QvNAp0cm91Ymxlc29tZS81WQp0cm91Z2gvMTRNCnRyb3VnaHMvMQp0cm91bmNlLzQxRFJTWkcKdHJvdW5jZXIvMU0KdHJvdXBlLzE0TVpHRFJTCnRyb3VwZXIvMU0KdHJvdXNlci8xNFNNCnRyb3VzZXJzLzFNCnRyb3Vzc2VhdS8xTQp0cm91c3NlYXV4LzEKdHJvdXQvMTRTTQp0cm92ZS8xU00KdHJvdy80MURTRwp0cm93ZWwvMTRNRFNHCnRyb3kvNVMKdHJ1YW5jeS8xTQp0cnVhbnQvNTE0R01EUwp0cnVjZS8xU00KdHJ1Y2svMTRTWkdNRFIKdHJ1Y2tlci8xNU0KdHJ1Y2tpbmcvMTRNCnRydWNrbGUvMTRNR0RTCnRydWNrbG9hZC8xU00KdHJ1Y3VsZW5jZS8xTQp0cnVjdWxlbnQvNVkKdHJ1ZGdlLzE0TUdEUwp0cnVlLzUxNE1UR0RSUwp0cnVlbG92ZS8xU00KdHJ1ZmZsZS8xTVMKdHJ1Zy8xUwp0cnVpc20vMU1TCnRydWx5L1UKdHJ1bXAvMTRTR01ECnRydW1wZXJ5LzE1TQp0cnVtcGV0LzE0WkdNRFJTCnRydW1wZXRlci8xTQp0cnVuY2F0ZS80NUdORFMKdHJ1bmNhdGlvbi8xTQp0cnVuY2hlb24vMTRTTQp0cnVuZGxlLzE0TVpHRFJTCnRydW5kbGVyLzFNCnRydW5rLzE0U0dNCnRydXNzLzE0R01EUwp0cnVzdC8xNDVFU0dNRAp0cnVzdGVlLzE0TVMKdHJ1c3RlZXNoaXAvMVNNCnRydXN0ZnVsLzVFWQp0cnVzdGZ1bG5lc3MvMU0KdHJ1c3RpbmcvNDVZCnRydXN0d29ydGhpbmVzcy8xTQp0cnVzdHdvcnRoeS81VFBSCnRydXN0eS81MVRSU00KdHJ1dGgvMTRaTVIKdHJ1dGhlci8xTQp0cnV0aGZ1bC81VVlQCnRydXRoZnVsbmVzcy8xVU0KdHJ1dGhpbmVzcy8xCnRydXRocy8xNFUKdHJ5J3MKdHJ5LzQxNUFHRFMKdHJ5aW5nLzU0MVkKdHJ5b3V0LzFTTQp0cnlwdG9waGFuLzEKdHJ5c3QvMTRTTURHCnRzYXJpc3RzLzEKdHNldHNlLzFNUwp0c3AvMQp0c3VuYW1pLzFTTQp0dHlzCnR1Yi8xNFNaR01EUgp0dWJhLzFNUwp0dWJhbC81CnR1YmJ5LzUxVFIKdHViZS8xNE1TCnR1YmVsZXNzLzVNCnR1YmVyLzFNCnR1YmVyY2xlLzFTTQp0dWJlcmN1bGFyLzUxCnR1YmVyY3VsaW4vMU0KdHViZXJjdWxvc2lzLzFNCnR1YmVyY3Vsb3VzLzUKdHViZXJvc2UvNTFNCnR1YmVyb3VzLzUKdHViZnVsLzFNUwp0dWJpbmcvMTRNCnR1YnVsYXIvNQp0dWJ1bGUvMU1TCnR1Y2svNDFNRFJTWkcKdHVja2VyLzQxTURHCnR1ZnQvMTRNRFJTWkcKdHVmdGVyLzFNCnR1Zy80MVNNCnR1Z2JvYXQvMU1TCnR1Z2dlZC80CnR1Z2dpbmcvNDEKdHVpdGlvbi8xSU0KdHVsYXJlbWlhLzFNCnR1bGlwLzFTTQp0dWxsZS8xTQp0dW0vMVMKdHVtYmxlLzE0RFJTTVpHCnR1bWJsZWRvd24vNQp0dW1ibGVyLzFNCnR1bWJsZXdlZWQvMVNNCnR1bWJsaW5nLzQxTQp0dW1icmVsLzFTTQp0dW1lc2NlbmNlLzFNCnR1bWVzY2VudC81CnR1bWlkLzUKdHVtaWRpdHkvMU0KdHVtbXkvMVNNCnR1bW9yLzFTTQp0dW1vcm91cy81CnR1bXVsdC8xNFNNCnR1bXVsdHVvdXMvNVkKdHVuLzE0U1pHTURSCnR1bmEvMU1TCnR1bmRyYS8xU00KdHVuZS8xNE1TCnR1bmVmdWwvNVlQCnR1bmVmdWxuZXNzLzFNCnR1bmVsZXNzLzVZCnR1bmVyLzFNCnR1bmV1cC8xU00KdHVuZ3N0ZW4vMU0KdHVuaWMvMVNNCnR1bm5lbC8xNEpTTURSWkcKdHVubmVsZXIvMU0KdHVubnkvMVNNCnR1cGxlLzFTCnR1cHBlbmNlLzEKdHVwcGVubnkvNTEKdHVxdWUvMVNNCnR1cmJhbi8xNFNNRAp0dXJiaWQvNQp0dXJiaWRpdHkvMU0KdHVyYmluZS8xU00KdHVyYm8vMTU0U00KdHVyYm9jaGFyZ2UvNFpHRFJTCnR1cmJvY2hhcmdlci8xTQp0dXJib2Zhbi8xU00KdHVyYm9qZXQvMVNNCnR1cmJvcHJvcC8xU00KdHVyYm90LzFTTQp0dXJidWxlbmNlLzFNCnR1cmJ1bGVudC81WQp0dXJkLzE0TVM2CnR1cmR1Y2tlbi8xU00KdHVyZWVuLzFTTQp0dXJmLzE0TURTRwp0dXJmeS81CnR1cmdpZC81WQp0dXJnaWRpdHkvMU0KdHVya2V5LzFTTQp0dXJtZXJpYy8xU00KdHVybW9pbC8xNE1TCnR1cm4vNDFBTURSU1pHCnR1cm5hYm91dC8xU00KdHVybmFyb3VuZC8xU00KdHVybmJ1Y2tsZS8xU00KdHVybmNvYXQvMTRTTQp0dXJuZXIvMUFNCnR1cm5pbmcvMTRNUwp0dXJuaXAvMTRTTQp0dXJua2V5LzUxNE1TCnR1cm5vZmYvMU1TCnR1cm5vdXQvMU1TCnR1cm5vdmVyLzE1TVMKdHVybnBpa2UvMTRNUwp0dXJuc3RpbGUvMVNNCnR1cm50YWJsZS8xNFNNCnR1cnBlbnRpbmUvMTRNCnR1cnBpdHVkZS8xTQp0dXJwcy8xCnR1cnF1b2lzZS8xNVNNCnR1cnJldC8xU01ECnR1cnRsZS8xNFNNCnR1cnRsZWRvdmUvMVNNCnR1cnRsZW5lY2svMVNNRAp0dXNoLzE0TVMKdHVzay8xNE1EUwp0dXNzbGUvMTREU01HCnR1c3NvY2svMU1TCnR1c3NvY2t5LzUKdHV0LzQxU00KdHV0ZWxhZ2UvMU0KdHV0ZWxhcnkvNTEKdHV0b3IvMTRTTURHCnR1dG9yZWQvNFUKdHV0b3JpYWwvNTFTTQp0dXRvcnNoaXAvMU0KdHV0dGVkLzQKdHV0dGkvNTFTTQp0dXR0aW5nLzQxCnR1dHUvMTRNUwp0dXgvMU1TCnR1eGVkby8xU00KdHdhZGRsZS8xNE1aR0RSUwp0d2FkZGxlci8xTQp0d2Fpbi81MTRNCnR3YW5nLzE0U01ERwp0d2FuZ3kvNVJUCnR3YXMvCnR3YXQvMTRTNgp0d2Vhay80MVNNREcKdHdlZS81MQp0d2VlZC8xU00KdHdlZWRzLzFNCnR3ZWVkeS81UlQKdHdlZW4vMTQ1CnR3ZWV0J3MKdHdlZXQvMTRBU0RHCnR3ZWV0ZXIvMVNNCnR3ZWV6ZXJzLzFNCnR3ZWxmdGgvNTFNCnR3ZWxmdGhzLzEKdHdlbHZlLzFTTQp0d2VsdmVtb250aC8xTQp0d2VsdmVtb250aHMvMQp0d2VudGlldGgvNTFNCnR3ZW50aWV0aHMvMQp0d2VudHkvMVNNSAp0d2Vyay8xNFNERwp0d2VycC8xU00KdHdpY2UvCnR3aWRkbGUvNDFNR0RTCnR3aWRkbHkvNQp0d2lnLzE0TVMKdHdpZ2dlZC80CnR3aWdnaW5nLzQKdHdpZ2d5LzVUUgp0d2lsaWdodC8xNTRNCnR3aWxpdC80NQp0d2lsbC8xNE1ECnR3aW4vMTQ1TURSU1pHCnR3aW5lLzE0U00KdHdpbmVyLzFNCnR3aW5nZS80MURTTUcKdHdpbmsvNDFTWQp0d2lua2xlLzQxTUdKRFMKdHdpbmtsaW5nLzU0MU0KdHdpbm5lZC80NQp0d2lubmluZy80MTUKdHdpbnNldC8xUwp0d2lybC8xNFNNRFJaRwp0d2lybGVyLzFNCnR3aXJseS81MQp0d2lzdCdzCnR3aXN0LzE0VVNERwp0d2lzdGVyLzFNUwp0d2lzdHkvNTFUUgp0d2l0LzQxTVMKdHdpdGNoLzE0R01EUwp0d2l0Y2h5LzVSVAp0d2l0dGVkLzQKdHdpdHRlci8xNE1EU0cKdHdpdHRlcnkvNQp0d2l0dGluZy80MQp0d2l4dC8rCnR3by8xU00KdHdvZmVyLzFTTQp0d29mb2xkLzUKdHdvcGVuY2UvMVNNCnR3b3Blbm55LzUxCnR3b3NvbWUvNTFTTQp0d3AvMTUKdHljb29uLzFTTQp0eWluZy8xNEFVCnR5a2UvMU1TCnR5bXBhbmkvMU0KdHltcGFuaWMvNQp0eW1wYW5pc3QvMU1TCnR5bXBhbnVtLzFTTQp0eXBlJ3MKdHlwZS8xNEFHRFMKdHlwZWNhc3QvNEdTCnR5cGVmYWNlLzFNUwpUeXBlU2NyaXB0LzE0TVMKdHlwZXNldC80NVMKdHlwZXNldHRlci8xTVMKdHlwZXNldHRpbmcvMTRNCnR5cGV3cml0ZS80UlNaRwp0eXBld3JpdGVyLzFNCnR5cGV3cml0aW5nLzE0TQp0eXBld3JpdHRlbi81NAp0eXBld3JvdGUvNAp0eXBob2lkLzUxTQp0eXBob29uLzE0TVMKdHlwaHVzLzFNCnR5cGljYWwvNTFVWQp0eXBpY2FsaXR5LzFNCnR5cGlmaWNhdGlvbi8xTQp0eXBpZnkvNE5HRFMKdHlwaW5nLzE0TQp0eXBpc3QvMVNNCnR5cG8vMTRNUwp0eXBvZ3JhcGhlci8xU00KdHlwb2dyYXBoaWMvNQp0eXBvZ3JhcGhpY2FsLzVZCnR5cG9ncmFwaHkvMU0KdHlwb2xvZ3kvMVNNCnR5cmFubmljLzUKdHlyYW5uaWNhbC81WQp0eXJhbm5pY2lkYWwvNQp0eXJhbm5pY2lkZS8xUwp0eXJhbm5pemUvNEdEUwp0eXJhbm5vc2F1ci8xTVMKdHlyYW5ub3NhdXJ1cy8xTVMKdHlyYW5ub3VzLzUKdHlyYW5ueS8xU00KdHlyYW50LzE1NFNNCnR5cm8vMU1TCnR6YXR6aWtpLzEKdS8xODVTCnViaXF1aXRvdXMvNVkKdWJpcXVpdHkvMU0KdWRkZXIvMVNNCnVmb2xvZ2lzdC8xU00KdWZvbG9neS8xTQp1Z2gvCnVnbGluZXNzLzFNCnVnbHkvNTE0UlRQCnVoLzEKdWhmCnVrYXNlLzFTTQp1a3VsZWxlLzFTTQp1bGNlci8xU00KdWxjZXJhdGUvNTRYRFNHTgp1bGNlcmF0aW9uLzFNCnVsY2Vyb3VzLzUKdWxuYS8xTQp1bG5hZS8xCnVsbmFyLzUKdWxzdGVyLzFNUwp1bHQvMQp1bHRlcmlvci81CnVsdGltYXRlLzUxNE1ZCnVsdGltYXR1bS8xTVMKdWx0aW1vLzUxCnVsdHJhLzUxU00KdWx0cmFjb25zZXJ2YXRpdmUvNTFTTQp1bHRyYWhpZ2gvNQp1bHRyYWxpZ2h0LzUxU00KdWx0cmFtYXJpbmUvNTFNCnVsdHJhbW9kZXJuLzUKdWx0cmFzZW5zaXRpdmUvNQp1bHRyYXNob3J0LzUxCnVsdHJhc29uaWMvNQp1bHRyYXNvbmljYWxseS8KdWx0cmFzb3VuZC8xNE1TCnVsdHJhdmlvbGV0LzUxTQp1bHVsYXRlLzREU0dOWAp1bHVsYXRpb24vMU0KdW0vNAp1bWJlbC8xU00KdW1iZXIvMTU0TQp1bWJpbGljYWwvNTEKdW1iaWxpY2kvMQp1bWJpbGljdXMvMU0KdW1icmEvMVNNCnVtYnJhZ2UvMTRNCnVtYnJlbGxhLzE0U00KdW1pYWsvMVNNCnVtbGF1dC8xNE1TCnVtcC8xNFNHTUQKdW1waXJlLzE0TUdEUwp1bXB0ZWVuL0gKdW5hYnJpZGdlZC81MU1TCnVuYWNjZXB0YWJpbGl0eS8xCnVuYWNjZXB0YWJsZS81MQp1bmFjY29tbW9kYXRpbmcvNQp1bmFjY291bnRhYmx5Lwp1bmFkdmVudHVyb3VzLzUKdW5hZXN0aGV0aWMvNQp1bmFsdGVyYWJseS8KdW5hbWJpdGlvdXMvNQp1bmFuaW1pdHkvMU0KdW5hbmltb3VzLzVZCnVuYXBwYXJlbnQvNQp1bmFwcGV0aXppbmcvNQp1bmFwcHJlY2lhdGl2ZS81CnVuYXJ5LzUxCnVuYXNzZXJ0aXZlLzUKdW5hc3NpbWlsYWJsZS81CnVuYXNzdW1pbmcvNVkKdW5hdmFpbGluZy81WQp1bmF3YXJlLzVTCnVuYmVrbm93bnN0Lwp1bmJlbmQvNFNHCnVuYmVudC80NQp1bmJpZC81NAp1bmJsaW5raW5nLzVZCnVuYmx1c2hpbmcvNTRZCnVuYm9zb20vNERHCnVuYm91bmQvNDVECnVuYm94LzRHRFMKdW5icmVha2FibGUvNTEKdW5icm9rZW4vNTQKdW5jYW5ueS81MVQKdW5jYXAvNFMKdW5jYXJpbmcvNTEKdW5jYXRhbG9ndWVkLzUKdW5jZWFzaW5nLzVZCnVuY2hhbmdlYWJsZS81MQp1bmNoYXJhY3RlcmlzdGljLzUKdW5jaGFyaXRhYmxlLzUKdW5jaGFzdGUvNVJUCnVuY2lhbC81MU0KdW5jbGUvMTRTTQp1bmNsZWFuLzVEUlBUCnVuY2xlYW5seS81VAp1bmNsZWFyLzU0RFJUCnVuY29tZm9ydGFibGUvNQp1bmNvbW1vbi81VAp1bmNvbXBlbGxpbmcvNQp1bmNvbXBsYWluaW5nLzVZCnVuY29tcGxpY2F0ZWQvNDUKdW5jb21wcmVoZW5kaW5nLzVZCnVuY29tcHJvbWlzaW5nLzVZCnVuY29uZGl0aW9uYWwvNTFZCnVuY29uZ2VuaWFsLzUKdW5jb25zY2lvbmFibGUvNQp1bmNvbnNjaW9uYWJseS8KdW5jb25zY2lvdXMvNTFNCnVuY29uc3RpdHV0aW9uYWwvNVkKdW5jb250cm9sbGFibHkvCnVuY29udHJvdmVyc2lhbC81CnVuY29vbC81CnVuY29vcGVyYXRpdmUvNQp1bmNvdXRoLzVZCnVuY3J1c2hhYmxlLzUKdW5jdGlvbi8xU00KdW5jdHVvdXMvNVlQCnVuY3R1b3VzbmVzcy8xTQp1bmN1dC81CnVuZGF1bnRlZC81WQp1bmRlY2lkZWQvNTE0U00KdW5kZW1vbnN0cmF0aXZlLzVZCnVuZGVuaWFibHkvCnVuZGVyLys1MQp1bmRlcmFjaGlldmUvNExaR0RSUwp1bmRlcmFjaGlldmVyLzFNCnVuZGVyYWN0LzRTREcKdW5kZXJhZ2UvNTEKdW5kZXJhcHByZWNpYXRlZC80NQp1bmRlcmFybS8xNTRTTQp1bmRlcmJlbGx5LzFTTQp1bmRlcmJpZC80MVMKdW5kZXJiaWRkaW5nLzQKdW5kZXJicnVzaC8xNE0KdW5kZXJjYXJyaWFnZS8xTVMKdW5kZXJjaGFyZ2UvNDFNR0RTCnVuZGVyY2xhc3MvMU1TCnVuZGVyY2xhc3NtYW4vMU0KdW5kZXJjbGFzc21lbi8xCnVuZGVyY2xvdGhlcy8xTQp1bmRlcmNsb3RoaW5nLzFNCnVuZGVyY29hdC8xNEdKU01ECnVuZGVyY29hdGluZy8xNE0KdW5kZXJjb3Zlci81MTQKdW5kZXJjdXJyZW50LzE0U00KdW5kZXJjdXQvMTQ1U00KdW5kZXJjdXR0aW5nLzQxCnVuZGVyZGV2ZWxvcGVkLzU0CnVuZGVyZGV2ZWxvcG1lbnQvMU0KdW5kZXJkb2cvMVNNCnVuZGVyZG9uZS81CnVuZGVyZW1wbG95ZWQvNQp1bmRlcmVtcGxveW1lbnQvMU0KdW5kZXJlc3RpbWF0ZS80MURTTUdOWAp1bmRlcmVzdGltYXRpb24vMU0KdW5kZXJleHBvc2UvNDVHRFMKdW5kZXJleHBvc3VyZS8xTVMKdW5kZXJmZWQvNTQKdW5kZXJmZWVkLzRHUwp1bmRlcmZsb29yLzUxCnVuZGVyZmxvdy8xNAp1bmRlcmZvb3QvNTE0CnVuZGVyZnVuZGVkLzU0CnVuZGVyZnVyLzFNCnVuZGVyZ2FybWVudC8xU00KdW5kZXJnby80Rwp1bmRlcmdvZXMvNAp1bmRlcmdvbmUvNAp1bmRlcmdyYWQvMVMKdW5kZXJncmFkdWF0ZS8xNVNNCnVuZGVyZ3JvdW5kLzUxNE1TCnVuZGVyZ3Jvd3RoLzFNCnVuZGVyaGFuZC81NDEKdW5kZXJoYW5kZWQvNTQxUFkKdW5kZXJoYW5kZWRuZXNzLzFNCnVuZGVyaW5mbGF0ZWQvNAp1bmRlcmxhaW4vNAp1bmRlcmxheS80MVNNCnVuZGVybGllLzRTCnVuZGVybGluZS8xNDVNR0RTCnVuZGVybGluZy8xTVMKdW5kZXJsaXAvMVNNCnVuZGVybHlpbmcvNTE0CnVuZGVybWFubmVkLzQ1CnVuZGVybWVudGlvbmVkLzUKdW5kZXJtaW5lLzRHRFMKdW5kZXJtb3N0LzUKdW5kZXJuZWF0aC8rNTFNCnVuZGVybmVhdGhzLzEKdW5kZXJub3VyaXNoZWQvNQp1bmRlcm5vdXJpc2htZW50LzFNCnVuZGVycGFpZC81CnVuZGVycGFudHMvMU0KdW5kZXJwYXJ0LzQxTVMKdW5kZXJwYXNzLzFNUwp1bmRlcnBheS80R1NMCnVuZGVycGF5bWVudC8xU00KdW5kZXJwaW4vNFMKdW5kZXJwaW5uZWQvNAp1bmRlcnBpbm5pbmcvNDFNUwp1bmRlcnBsYXkvMTRER1MKdW5kZXJwb3B1bGF0ZWQvNQp1bmRlcnByaXZpbGVnZWQvNTEKdW5kZXJwcm9kdWN0aW9uLzFNCnVuZGVycmF0ZS80MUdEUwp1bmRlcnJlcHJlc2VudGVkLzQ1CnVuZGVyc2NvcmUvMTREU01HCnVuZGVyc2VhLzVTCnVuZGVyc2VjcmV0YXJ5LzFTTQp1bmRlcnNlbGwvNEdTCnVuZGVyc2V4ZWQvNQp1bmRlcnNoaXJ0LzFTTQp1bmRlcnNob290LzQxU0cKdW5kZXJzaG9ydHMvMU0KdW5kZXJzaG90LzQ1MQp1bmRlcnNpZGUvMU1TCnVuZGVyc2lnbi80REdTCnVuZGVyc2lnbmVkLzUxTQp1bmRlcnNpemVkLzUKdW5kZXJza2lydC8xU00KdW5kZXJzb2xkLzQ1CnVuZGVyc3RhZmZlZC81CnVuZGVyc3RhbmQvNFNHQkoKdW5kZXJzdGFuZGFibHkvCnVuZGVyc3RhbmRpbmcvMTU0TVkKdW5kZXJzdGF0ZS80RFNMRwp1bmRlcnN0YXRlbWVudC8xU00KdW5kZXJzdG9vZC81NAp1bmRlcnN0dWR5LzQxR0RTTQp1bmRlcnRha2UvNDFaR0pSUwp1bmRlcnRha2VuLzQKdW5kZXJ0YWtlci8xTQp1bmRlcnRha2luZy8xNE0KdW5kZXJ0aGluZ3MvMU0KdW5kZXJ0b25lLzE0TVMKdW5kZXJ0b29rLzQKdW5kZXJ0b3cvNDFTTQp1bmRlcnVzZWQvNTQKdW5kZXJ1dGlsaXplZC81NAp1bmRlcnZhbHVhdGlvbi8xTQp1bmRlcnZhbHVlLzQxRFNHCnVuZGVyd2F0ZXIvNTE0CnVuZGVyd2F5LzEKdW5kZXJ3ZWFyLzFNCnVuZGVyd2VpZ2h0LzUxNE0KdW5kZXJ3ZW50LzQKdW5kZXJ3aGVsbS80REdTCnVuZGVyd2lyZS8xNERTCnVuZGVyd29ybGQvMU1TCnVuZGVyd3JpdGUvNFpHUlMKdW5kZXJ3cml0ZXIvMU0KdW5kZXJ3cml0dGVuLzQKdW5kZXJ3cm90ZS80CnVuZGVzaXJhYmxlLzUxTVMKdW5kaWVzLzE0TQp1bmRvLzQxNQp1bmRvdWJ0ZWQvNVkKdW5kcmFtYXRpYy81CnVuZHVlLzUKdW5kdWxhbnQvNQp1bmR1bGF0ZS80NURTWEdOCnVuZHVsYXRpb24vMU0KdW5keWluZy81NAp1bmVhcnRobGluZXNzLzFNCnVuZWFzZS8xNE0KdW5lYXN5LzVUCnVuZWF0YWJsZS81CnVuZWNvbm9taWMvNQp1bmVtcGxveWVkLzVNCnVuZW5kaW5nLzUKdW5lbnRlcnByaXNpbmcvNQp1bmVxdWFsLzUxRFkKdW5lcnJpbmcvNVkKdW5lc3NlbnRpYWwvNQp1bmV2ZW4vNTRZCnVuZXhjZXB0aW9uYWJseS8KdW5leGNpdGVkLzUKdW5leGNpdGluZy81CnVuZXhwZWN0ZWQvNTFZUAp1bmV4cGVjdGVkbmVzcy8xTQp1bmZhaWxpbmcvNVkKdW5mYWlyLzU0UFRSWQp1bmZhbHRlcmluZy81CnVuZmFtaWxpYXIvNTEKdW5mYXRob21hYmx5Lwp1bmZlZC81MQp1bmZlZWxpbmcvNVkKdW5mZW1pbmluZS81CnVuZml0LzU0Uwp1bmZpdHRpbmcvNQp1bmZpeC80R0RTCnVuZmxhZ2dpbmcvNVkKdW5mbGFwcGFiaWxpdHkvMU0KdW5mbGFwcGFibGUvNQp1bmZsYXBwYWJseS8KdW5mbGF0dGVyaW5nLzU0CnVuZmxpbmNoaW5nLzVZCnVuZm9yZ2V0dGFibHkvCnVuZm9yZ2l2YWJseS8KdW5mb3J0dW5hdGUvNTFNUwp1bmZyaWVuZGx5LzUxVAp1bmZyb2NrLzRERwp1bmZydWl0ZnVsLzUKdW5mdW5ueS81CnVuZ2FpbmxpbmVzcy8xTQp1bmdhaW5seS81MVJQVAp1bmdlbmVyb3VzLzUKdW5nZW50bGUvNQp1bmdvZGx5LzVUCnVuZ3JhY2VmdWwvNVkKdW5ncnVkZ2luZy81CnVuZ3VhcmRlZC81CnVuZ3VlbnQvMTVTTQp1bmd1bGF0ZS81MU1TCnVuaGFuZHkvNVQKdW5oYXBweS81MTRUCnVuaGVhbHRoZnVsLzUKdW5oZWFsdGh5LzVUCnVuaGlzdG9yaWNhbC81CnVuaG9seS81VAp1bmh1cnQvNQp1bmljYW1lcmFsLzUKdW5pY2VsbHVsYXIvNTEKdW5pY29ybi8xNDVTTQp1bmljeWNsZS8xNFNNCnVuaWRpcmVjdGlvbmFsLzUxCnVuaWZpY2F0aW9uLzFBTQp1bmlmb3JtLzE1NFNNRFlHCnVuaWZvcm1pdHkvMU0KdW5pZnkvNEFHRFNOCnVuaWxhdGVyYWwvNVkKdW5pbGF0ZXJhbGlzbS8xCnVuaW1wb3J0YW50LzUKdW5pbXByZXNzaXZlLzUKdW5pbmZvcm1hdGl2ZS81CnVuaW5oaWJpdGVkLzVZCnVuaW5zdXJlZC81MQp1bmludGVsbGlnZW50LzUKdW5pbnRlbmRlZC81CnVuaW50ZXJlc3RpbmcvNQp1bmludGVycnVwdGVkLzVZCnVuaW50ZXJydXB0aWJsZS81CnVuaW52aXRpbmcvNQp1bmlvbi8xNDVBU00KdW5pb25pc20vMU0KdW5pb25pc3QvNTFNUwp1bmlxdWUvNTFZVFJQCnVuaXF1ZW5lc3MvMU0KdW5pc2V4LzUxTQp1bmlzb24vMU0KdW5pdGFyeS81MQp1bml0ZS80MUFFR1NECnVuaXRlZGx5Lwp1bml0aWVzLzEKdW5pdGl6ZS80RFNHCnVuaXR5LzFFTQp1bml2YWxlbnQvNTEKdW5pdmFsdmUvNTFTTQp1bml2ZXJzYWwvNTFNWVMKdW5pdmVyc2FsaXNtLzEKdW5pdmVyc2FsaXN0LzUxCnVuaXZlcnNhbGl0eS8xTQp1bml2ZXJzYWxpemUvNERTRwp1bml2ZXJzZS8yMVNNCnVuaXZlcnNpdHkvMVNNCnVuaXZvY2FsLzUxCnVuanVzdC81WQp1bmtlbXB0LzUKdW5raW5kLzVUCnVua2luZGx5LzVUCnVua25vd2FibGUvNTFNCnVua25vd24vNTE0U00KdW5sZWFkZWQvNTQxTQp1bmxlc3MvNwp1bmxpa2UvNSsxNFBCCnVubGlrZWx5LzUxVAp1bmxpdC81CnVubG9jay80MURTRwp1bmxvdmFibGUvNQp1bmxvdmVseS81MVRSCnVubG92aW5nLzU0CnVubHVja3kvNVQKdW5tYW5seS81VAp1bm1hcnJpZWQvNTEKdW5tZWFuaW5nLzUxCnVubWVudGlvbmFibGUvNTFNUwp1bm1lbnRpb25hYmxlcy8xTQp1bm1ldC81CnVubWluZGZ1bC81CnVubWlzc2FibGUvNQp1bm1pc3Rha2FibHkvCnVubW9yYWwvNQp1bm1vdmFibGUvNQp1bm11c2ljYWwvNQp1bm5lY2Vzc2FyeS81CnVubmVydmluZy80NVkKdW5vYnNlcnZhbnQvNQp1bm9mZmVuc2l2ZS81CnVub2ZmaWNpYWwvNVkKdW5vcmlnaW5hbC81MQp1bnBlb3BsZS8xNAp1bnBlcmNlcHRpdmUvNQp1bnBlcnN1YXNpdmUvNQp1bnBpY2svNEdEUwp1bnBpbi80Uwp1bnBsZWFzaW5nLzUKdW5wb2xpdGljYWwvNQp1bnBvcHVsYXIvNQp1bnByYWN0aWNhbC81CnVucHJlY2VkZW50ZWQvNVkKdW5wcm9mZXNzaW9uYWwvNTFZCnVucHJvbWlzaW5nLzU0CnVucHJvcGl0aW91cy81CnVucXVlc3Rpb25pbmcvNVkKdW5xdWlldC81NFRSCnVucmVhZC81NDFCCnVucmVhZHkvNQp1bnJlYWwvNQp1bnJlYXNvbmluZy81CnVucmVnZW5lcmF0ZS81CnVucmVsYXRlZC81CnVucmVsZW50aW5nLzVZCnVucmVsaWV2ZWQvNVkKdW5yZW1hcmthYmxlLzUKdW5yZW1pdHRpbmcvNVkKdW5yZXBlbnRhbnQvNQp1bnJlcG9ydGVkLzUKdW5yZXByZXNlbnRhdGl2ZS81CnVucmVzdC8xTQp1bnJldmVhbGluZy81CnVucmlwZS81VFIKdW5yb2xsLzRHRFMKdW5yb21hbnRpYy81CnVucnVsaW5lc3MvMU0KdW5ydWx5LzVSVFAKdW5zYWZlLzU0WVRSCnVuc2FsZWFibGUvNTEKdW5zYXZvcnkvNQp1bnNjYXRoZWQvNQp1bnNlZWluZy81WQp1bnNlZW1seS81VAp1bnNlZW4vNTQxTQp1bnNlbnRpbWVudGFsLzUKdW5zZXQvNTQKdW5zaGFrYWJsZS81CnVuc2hha2FibHkvCnVuc2hhcGVseS81CnVuc2hvY2thYmxlLzUKdW5zaG9ybi81CnVuc2lnaHRsaW5lc3MvMU0KdW5zaWdodGx5LzVQVAp1bnNtaWxpbmcvNQp1bnNvY2lhYmxlLzUxCnVuc29jaWFsLzUKdW5zb2xkLzUKdW5zb3VuZC81UFJZVAp1bnNwZWFrYWJsZS81MQp1bnNwZWFrYWJseS8KdW5zcGVjaWZpYy81CnVuc3BlY3RhY3VsYXIvNQp1bnNwb3J0aW5nLzUKdW5zdGFibGUvNTQKdW5zdGVhZHkvNTRUUlAKdW5zdGludGluZy81WQp1bnN0cmFwcGluZy80CnVuc3Vic3RhbnRpYWwvNQp1bnN1YnRsZS81CnVuc3VpdGFibGUvNQp1bnN1cmUvNQp1bnN1c3BlY3RpbmcvNVkKdW5zeW1tZXRyaWNhbC81CnVudGFjdGZ1bC81CnVudGhpbmthYmx5Lwp1bnRoaW5raW5nLzU0WQp1bnRpZHkvNTRQVFIKdW50aWwvKzcKdW50aW1lbHkvNVQKdW50aXJpbmcvNVkKdW50b3VjaGFibGUvNTFNUwp1bnRvd2FyZC81CnVudHJ1ZS81UlQKdW50cnVzdHdvcnRoeS81CnVudHJ1dGgvMU0KdW51dHRlcmFibGUvNTEKdW51dHRlcmFibHkvCnVud2FycmFudGFibGUvNQp1bndhcnkvNVQKdW53YXZlcmluZy81CnVud2VkLzUxNAp1bndlbGNvbWUvNTRHCnVud2VsbC81CnVud2llbGRpbmVzcy8xTQp1bndpZWxkeS81VFJQCnVud2lzZS81UllUCnVud29ycmllZC81CnVud29ydGh5LzUxVAp1bndvdW5kLzQKdW53cmFwcGluZy80MQp1bnlpZWxkaW5nLzUKdXAvKzUxNFN+CnVwYmVhdC81MU1TCnVwYnJhaWQvNDFTR0QKdXBicmluZ2luZy8xTVMKdXBjaHVjay8xNFNHRAp1cGNvbWluZy81MTQKdXBjb3VudHJ5LzUxTQp1cGRhdGUvMTRNR0RSUwp1cGRyYWZ0LzFNUwp1cGVuZC80U0dECnVwZnJvbnQvNTE0CnVwZ3JhZGUvMTRNR0RTCnVwaGVhdmFsLzFNUwp1cGhlbGQvNAp1cGhpbGwvNTFNUwp1cGhvbGQvNFpHUlMKdXBob2xkZXIvMU0KdXBob2xzdGVyLzQxQVNHRAp1cGhvbHN0ZXJlci8xTVMKdXBob2xzdGVyeS8xTQp1cGtlZXAvMTRNCnVwbGFuZC8xNU1TCnVwbGlmdC80MUpTTURHCnVwbG9hZC80MVNERwp1cG1hcmtldC81NAp1cG1vc3QvNQp1cG9uLysKdXBwZWQvNAp1cHBlci81MVNNCnVwcGVyY2FzZS81MTRNCnVwcGVyY2xhc3NtYW4vMU0KdXBwZXJjbGFzc21lbi8xCnVwcGVyY2xhc3N3b21hbi8xCnVwcGVyY2xhc3N3b21lbi8xCnVwcGVyY3V0LzE0TVMKdXBwZXJjdXR0aW5nLzQKdXBwZXJtb3N0LzUKdXBwaW5nLzQxCnVwcGlzaC81CnVwcGl0eS81CnVwcmFpc2UvNERTRwp1cHJlYXIvNEdTRAp1cHJpZ2h0LzUxNE1ZUFMKdXByaWdodG5lc3MvMU0KdXByaXNpbmcvMTRTTQp1cHJpdmVyLzUKdXByb2FyLzE0U00KdXByb2FyaW91cy81WQp1cHJvb3QvNDFHU0QKdXBzY2FsZS81NAp1cHNldC81MTRTTQp1cHNldHRpbmcvNDE1CnVwc2hvdC8xU00KdXBzaWRlLzErU00KdXBzaWxvbi8xTVMKdXBzdGFnZS8xNTRHRFMKdXBzdGFpcnMvNTEKdXBzdGFuZGluZy81NAp1cHN0YXJ0LzE1NE1EU0cKdXBzdGF0ZS8xNU0KdXBzdHJlYW0vNTQxCnVwc3Ryb2tlLzFTTQp1cHN1cmdlLzE0TUdEUwp1cHN3aW5nLzE0TVMKdXB0YWtlLzE0U00KdXB0ZW1wby81CnVwdGhydXN0LzE0R1NNCnVwdGljay8xU00KdXB0aWdodC81MQp1cHRvd24vMTVNCnVwdHJlbmQvMTQKdXB0dXJuLzE0R1NNRAp1cHdhcmQvMTVTWQp1cHdpbmQvNTQKdXJhY2lsLzFNCnVyYW5pdW0vMU0KdXJiYW4vNQp1cmJhbmUvNVJZVAp1cmJhbml0eS8xTQp1cmJhbml6YXRpb24vMU0KdXJiYW5pemUvNERTRwp1cmJhbm9sb2dpc3QvMU1TCnVyYmFub2xvZ3kvMU0KdXJjaGluLzFTTQp1cmVhLzFNCnVyZW1pYS8xTQp1cmVtaWMvNQp1cmV0ZXIvMVNNCnVyZXRoYW5lLzFNCnVyZXRocmEvMU0KdXJldGhyYWUvMQp1cmV0aHJhbC81CnVyZ2UvMTRNR0RTCnVyZ2VuY3kvMU0KdXJnZW50LzVZCnVyaWMvNQp1cmluYWwvMTVTTQp1cmluYWx5c2VzLzEKdXJpbmFseXNpcy8xTQp1cmluYXJ5LzUxCnVyaW5hdGUvNEdORFMKdXJpbmF0aW9uLzFNCnVyaW5lLzE0TQp1cm4vMTRTTQp1cm9nZW5pdGFsLzUKdXJvbG9naWNhbC81CnVyb2xvZ2lzdC8xTVMKdXJvbG9neS8xTQp1cnNpbmUvNTEKdXJ0aWNhcmlhLzFNCnVzYWJpbGl0eS8xTQp1c2FibGUvNVVBCnVzYWdlLzFTTQp1c2UvMTRBRURTTUd+CnVzZWQvNDVVCnVzZWZ1bC81UFkKdXNlZnVsbmVzcy8xTQp1c2VsZXNzLzVZUAp1c2VsZXNzbmVzcy8xTQp1c2VyLzFNUwp1c2VybmFtZS8xTVMKdXNoZXIvMTRTTURHCnVzaGVyZXR0ZS8xU00KdXN1LzUKdXN1YWwncwp1c3VhbC81MVVZCnVzdXJlci8xU00KdXN1cmlvdXMvNQp1c3VycC80U0RSWkcKdXN1cnBhdGlvbi8xTQp1c3VycGVyLzFNCnVzdXJ5LzFNCnVzLzgKdXRlbnNpbC8xU00KdXRlcmkvMQp1dGVyaW5lLzUxCnV0ZXJ1cy8xTQp1dGlsaXRhcmlhbi81MU1TCnV0aWxpdGFyaWFuaXNtLzFNCnV0aWxpdHkvMTVTTQp1dGlsaXphdGlvbi8xTQp1dGlsaXplLzRHQkRTCnV0bW9zdC81MU0KdXRvcGlhLzFTTQp1dHRlci81NFNEWUcKdXR0ZXJhbmNlLzFTTQp1dHRlcm1vc3QvNTFNCnV2ZWl0aXMvMQp1dnVsYS8xU00KdXZ1bGFyLzUxTVMKdXhvcmlvdXMvNQp2LzErQVMKdmFjLzE0Uwp2YWNhbmN5LzFTTQp2YWNhbnQvNVkKdmFjYXRlLzREU0cKdmFjYXRpb24vMTRaR01EUlMKdmFjYXRpb25lci8xTQp2YWNhdGlvbmlzdC8xU00KdmFjY2luYXRlLzRHTkRTWAp2YWNjaW5hdGlvbi8xTQp2YWNjaW5lLzUxNFNNCnZhY2lsbGF0ZS80WEdORFMKdmFjaWxsYXRpb24vMU0KdmFjdWl0eS8xTQp2YWN1b2xlLzFNUwp2YWN1b3VzLzVZUAp2YWN1b3VzbmVzcy8xTQp2YWN1dW0vMTRHU01ECnZhZ2Fib25kLzE0NVNNREcKdmFnYWJvbmRhZ2UvMU0KdmFnYXJpb3VzLzUKdmFnYXJ5LzFTTQp2YWdpbmEvMVNNCnZhZ2luYWUvMQp2YWdpbmFsLzVZCnZhZ2luaXRpcy8xCnZhZ3JhbmN5LzFNCnZhZ3JhbnQvMTVNUwp2YWd1ZS81MTRSWVRQCnZhZ3VlbmVzcy8xTQp2YWd1cy8xCnZhaW4vNTRSWVQKdmFpbmdsb3Jpb3VzLzVZCnZhaW5nbG9yeS8xNE0KdmFsLzEKdmFsYW5jZS8xTVMKdmFsZS8xTVMKdmFsZWRpY3Rpb24vMU1TCnZhbGVkaWN0b3JpYW4vMVNNCnZhbGVkaWN0b3J5LzUxU00KdmFsZW5jZS8xTVMKdmFsZW5jeS8xU00KdmFsZW50aW5lLzFTTQp2YWxldC8xNFNNREcKdmFsZXR1ZGluYXJpYW4vNTFNUwp2YWxldHVkaW5hcmlhbmlzbS8xTQp2YWxpYW5jZS8xTQp2YWxpYW50LzUxWQp2YWxpZC81WQp2YWxpZGF0ZS80SUdORFMKdmFsaWRhdGlvbi8xSU0KdmFsaWRhdGlvbnMvMQp2YWxpZGl0eS8xSU0KdmFsaWRuZXNzLzFNCnZhbGlzZS8xU00KdmFsbGV5LzE0U00KdmFsb3IvMU0KdmFsb3JvdXMvNVkKdmFsdWFibGUvNTFNUwp2YWx1YXRlLzREU0cKdmFsdWF0aW9uLzFDQU1TCnZhbHVlJ3MKdmFsdWUvMTRDQUdTRAp2YWx1ZWxlc3MvNQp2YWx1ZXIvMVNNCnZhbHZlLzE0RFNNRwp2YWx2ZWxlc3MvNQp2YWx2dWxhci81CnZhbW9vc2UvNERTRwp2YW1wLzE0QU1ER1MKdmFtcGlyZS8xNFNNCnZhbi8xNFNNCnZhbmFkaXVtLzFNCnZhbmRhbC8xU00KdmFuZGFsaXNtLzFNCnZhbmRhbGl6ZS80RFNHCnZhbmUvMU1TCnZhbmd1YXJkLzFNUwp2YW5pbGxhLzE1U00KdmFuaXNoLzQxSkRTRwp2YW5pdHkvMVNNCnZhbm5lZC80CnZhbm5pbmcvNDEKdmFucXVpc2gvNFpHRFJTCnZhbnF1aXNoZXIvMU0KdmFudGFnZS8xNFNNCnZhcGUvMTRHRFMKdmFwaWQvNVlQCnZhcGlkaXR5LzFNCnZhcGlkbmVzcy8xTQp2YXBvci8xNFNNCnZhcG9yaXphdGlvbi8xTQp2YXBvcml6ZS80RFJTWkcKdmFwb3JpemVyLzFNCnZhcG9yb3VzLzUKdmFwb3J3YXJlLzEKdmFwb3J5LzUKdmFxdWVyby8xTVMKdmFyLzFTCnZhcmlhYmlsaXR5LzFJTQp2YXJpYWJsZS81MUlTTQp2YXJpYWJseS9JCnZhcmlhbmNlLzFTTQp2YXJpYW50LzUxTVMKdmFyaWF0ZS8xNE5YCnZhcmlhdGlvbi8xTQp2YXJpY29sb3JlZC81CnZhcmljb3NlLzUKdmFyaWVkLzQ1VQp2YXJpZWdhdGUvNDVEU0dOCnZhcmllZ2F0aW9uLzFNCnZhcmlldGFsLzUxU00KdmFyaWV0eS8xU00KdmFyaW91cy81WQp2YXJsZXQvMVNNCnZhcm1pbnQvMU1TCnZhcm5pc2gvMTRHTURTCnZhcm5pc2hlZC80NVUKdmFyc2l0eS8xU00KdmFyeS80MURTRwp2YXJ5aW5nLzQxVQp2YXNjdWxhci81CnZhc2UvMTRNUwp2YXNlY3RvbXkvMVNNCnZhc29jb25zdHJpY3Rpb24vMQp2YXNvbW90b3IvNQp2YXNzYWwvMTU0U00KdmFzc2FsYWdlLzFNCnZhc3QvNTFNUllUU1AKdmFzdG5lc3MvMU0KdmF0LzE0NVNNCnZhdHRlZC80CnZhdHRpbmcvNAp2YXVkZXZpbGxlLzFNCnZhdWRldmlsbGlhbi8xNU1TCnZhdWx0LzE0U01EUlpHCnZhdWx0ZXIvMU0KdmF1bHRpbmcvMTQ1TQp2YXVudC80MVNNREcKdmIvMQp2ZWFsLzE0TQp2ZWN0b3IvMTRTR01ECnZlZWpheS8xNFNNCnZlZXAvMU1TCnZlZXIvNDFNREdTCnZlZy81MTRNCnZlZ2FuLzUxU00KdmVnYW5pc20vMQp2ZWdlYnVyZ2VyLzFTCnZlZ2VzLzE0CnZlZ2V0YWJsZS8xNVNNCnZlZ2V0YXJpYW4vMTVTTQp2ZWdldGFyaWFuaXNtLzFNCnZlZ2V0YXRlLzRHTlZEUwp2ZWdldGF0aW9uLzFNCnZlZ2dlZC80CnZlZ2dlcy80CnZlZ2dpZS8xNVNNCnZlZ2dpZWJ1cmdlci8xUwp2ZWdnaW5nLzQKdmVoZW1lbmNlLzFNCnZlaGVtZW5jeS8xTQp2ZWhlbWVudC81WQp2ZWhpY2xlLzE0TVMKdmVoaWN1bGFyLzUKdmVpbCdzCnZlaWwvMTRVREdTCnZlaW4vMTRNREdTCnZlbGEvMQp2ZWxhci81MVNNCnZlbGQvMU1TCnZlbGx1bS8xTQp2ZWxvY2lwZWRlLzE0TVMKdmVsb2NpdHkvMVNNCnZlbG9kcm9tZS8xUwp2ZWxvdXIvMU1TCnZlbHVtLzFNCnZlbHZldC8xNDVNCnZlbHZldGVlbi8xTQp2ZWx2ZXR5LzUKdmVuYWwvNVkKdmVuYWxpdHkvMU0KdmVuYXRpb24vMU0KdmVuZC80MURHUwp2ZW5kZXR0YS8xU00KdmVuZGlibGUvNTEKdmVuZG9yLzE0TVMKdmVuZWVyLzE0TURHUwp2ZW5lcmFiaWxpdHkvMU0KdmVuZXJhYmxlLzUKdmVuZXJhdGUvNERTR04KdmVuZXJhdGlvbi8xTQp2ZW5lcmVhbC81CnZlbmdlYW5jZS8xTQp2ZW5nZWZ1bC81QVkKdmVuaWFsLzUKdmVuaXJlbWFuLzFNCnZlbmlyZW1lbi8xCnZlbmlzb24vMU0KdmVub20vMTQ1TQp2ZW5vbW91cy81WQp2ZW5vdXMvNQp2ZW50J3MKdmVudC8xNERHUwp2ZW50aWxhdGUvNEdORFMKdmVudGlsYXRpb24vMU0KdmVudGlsYXRvci8xU00KdmVudGlsYXRvcnkvNQp2ZW50cmFsLzUxCnZlbnRyaWNsZS8xU00KdmVudHJpY3VsYXIvNQp2ZW50cmlsb3F1aXNtLzFNCnZlbnRyaWxvcXVpc3QvMVNNCnZlbnRyaWxvcXV5LzFNCnZlbnR1cmUvMTREU01HCnZlbnR1cmVzb21lLzVQWQp2ZW50dXJlc29tZW5lc3MvMU0KdmVudHVyb3VzLzVQWQp2ZW50dXJvdXNuZXNzLzFNCnZlbnVlLzFBU00KdmVyYWNpb3VzLzVZCnZlcmFjaXR5LzFNCnZlcmFuZGEvMVNNCnZlcmFwYW1pbC8xCnZlcmIvMTRLTVMKdmVyYmFsLzUxNE1ZUwp2ZXJiYWxpemF0aW9uLzFNCnZlcmJhbGl6ZS80R0RTCnZlcmJhdGltLzUxCnZlcmJlbmEvMVNNCnZlcmJpYWdlLzFNUwp2ZXJib3NlLzVZCnZlcmJvc2l0eS8xTQp2ZXJib3Rlbi81CnZlcmRhbnQvNVkKdmVyZGljdC8xU00KdmVyZGlncmlzLzE0R01EUwp2ZXJkdXJlLzE0TQp2ZXJnZSdzCnZlcmdlLzE0RkRTRwp2ZXJnZXIvMU1TCnZlcmlmaWFibGUvNTFVCnZlcmlmaWNhdGlvbi8xTQp2ZXJpZmllZC80NTFVCnZlcmlmeS80RFNORwp2ZXJpbHkvCnZlcmlzaW1pbGl0dWRlLzFNCnZlcml0YWJsZS81CnZlcml0YWJseS8KdmVyaXR5LzFTTQp2ZXJtaWNlbGxpLzFNCnZlcm1pY3VsaXRlLzFNCnZlcm1pZm9ybS81CnZlcm1pbGlvbi8xNTRNCnZlcm1pbi8xTQp2ZXJtaW5vdXMvNQp2ZXJtb3V0aC8xTQp2ZXJuYWN1bGFyLzE1TVMKdmVybmFsLzUKdmVybmllci8xU00KdmVyb25pY2EvMTRNCnZlcnJ1Y2EvMVNNCnZlcnJ1Y2FlLzEKdmVyc2EKdmVyc2F0aWxlLzUKdmVyc2F0aWxpdHkvMU0KdmVyc2UvMTRBRk5HTVNEWAp2ZXJzZWQvNTRVCnZlcnNpZmljYXRpb24vMU0KdmVyc2lmaWVyLzFNCnZlcnNpZnkvNFpHTkRSUwp2ZXJzaW9uLzE0QUZJTVMKdmVyc2lvbmVkLzU0CnZlcnNpb25pbmcvMQp2ZXJzby8xU00KdmVyc3VzLys0CnZlcnQvMTU0QQp2ZXJ0ZWJyYS8xTQp2ZXJ0ZWJyYWUvMQp2ZXJ0ZWJyYWwvNTEKdmVydGVicmF0ZS81MUlNUwp2ZXJ0ZXgvMU1TCnZlcnRpY2FsLzUxTVlTCnZlcnRpY2VzLzEKdmVydGlnaW5vdXMvNQp2ZXJ0aWdvLzFNCnZlcnZlLzFNCnZlcnkvNVJUCnZlc2ljbGUvMVNNCnZlc2ljdWxhci81CnZlc2ljdWxhdGUvNDUKdmVzcGVyLzE1TVMKdmVzc2VsLzE0TVMKdmVzdCdzCnZlc3QvMTRJTERHUwp2ZXN0YWwvNTFNUwp2ZXN0aWJ1bGUvMTRNUwp2ZXN0aWdlLzFTTQp2ZXN0aWdpYWwvNTFZCnZlc3RpbmcvMTRNCnZlc3RtZW50LzFJTVMKdmVzdHJ5LzFTTQp2ZXN0cnltYW4vMU0KdmVzdHJ5bWVuLzEKdmV0LzE0U00KdmV0Y2gvMU1TCnZldGVyYW4vMTVTTQp2ZXRlcmluYXJpYW4vMTVNUwp2ZXRlcmluYXJ5LzUxU00KdmV0by8xNE1ERwp2ZXRvZXMvMTQKdmV0dGVkLzQ1CnZldHRpbmcvNDEKdmV4LzQxR0RTCnZleGF0aW9uLzFTTQp2ZXhhdGlvdXMvNVkKdmhmCnZpLzEKdmlhLzErCnZpYWJpbGl0eS8xTQp2aWFibGUvNTEKdmlhYmx5Lwp2aWFkdWN0LzFTTQp2aWFsLzE0TVMKdmlhbmQvMVNNCnZpYmUvMTRNUwp2aWJlcy8xNE0KdmlicmFoYXJwLzFTTQp2aWJyYW5jeS8xTQp2aWJyYW50LzUxWQp2aWJyYXBob25lLzFNUwp2aWJyYXBob25pc3QvMU1TCnZpYnJhdGUvNDFHTkRTWAp2aWJyYXRpb24vMU0KdmlicmF0by8xTVMKdmlicmF0b3IvMVNNCnZpYnJhdG9yeS81CnZpYnVybnVtLzFTTQp2aWNhci8xU00KdmljYXJhZ2UvMVNNCnZpY2FyaW91cy81WVAKdmljYXJpb3VzbmVzcy8xTQp2aWNlLzE0NStDTVMKdmljZWQvNTQKdmljZWdlcmVudC8xNVNNCnZpY2VubmlhbC81MQp2aWNlcmVnYWwvNTEKdmljZXJveS8xTVMKdmljaHlzc29pc2UvMU0KdmljaW5nLzQKdmljaW5pdHkvMU0KdmljaW91cy81WVAKdmljaW91c25lc3MvMU0KdmljaXNzaXR1ZGUvMVNNCnZpY3RpbS8xNE1TCnZpY3RpbWl6YXRpb24vMU0KdmljdGltaXplLzRHRFMKdmljdGltbGVzcy81CnZpY3Rvci8xTVMKdmljdG9yaW91cy81WQp2aWN0b3J5LzE0U00KdmljdHVhbC8xNFNNREcKdmljdW5hLzFNUwp2aWRlbGljZXQvCnZpZGVvLzE0R1NNRAp2aWRlb2Nhc3NldHRlLzFTTQp2aWRlb2NvbmZlcmVuY2luZy80MQp2aWRlb2Rpc2MvMU1TCnZpZGVvcGhvbmUvMU1TCnZpZGVvdGFwZS8xNERTTUcKdmlkZW90ZXgvMQp2aWUvNDFEUwp2aWV3LzE0QU1EUlNaRwp2aWV3YWJsZS81CnZpZXdlci8xQU0Kdmlld2Vyc2hpcC8xTQp2aWV3ZmluZGVyLzFTTQp2aWV3aW5nLzQxNVNNCnZpZXdwb2ludC8xTVMKdmlnZXNpbWFsLzUxCnZpZ2lsLzE0U00KdmlnaWxhbmNlLzFNCnZpZ2lsYW50LzVZCnZpZ2lsYW50ZS8xU00KdmlnaWxhbnRpc20vMU0KdmlnaWxhbnRpc3QvNU0KdmlnbmV0dGUvMTREU01HCnZpZ25ldHRpc3QvMU1TCnZpZ29yLzFNCnZpZ29yb3VzLzVZCnZpaS8xCnZpaWkvCnZpa2luZy8xTVMKdmlsZS81WVRQUgp2aWxlbmVzcy8xTQp2aWxpZmljYXRpb24vMU0KdmlsaWZ5LzREU05HCnZpbGxhLzFTTQp2aWxsYWdlLzFSU01aCnZpbGxhZ2VyLzFNCnZpbGxhaW4vMTRTTQp2aWxsYWlub3VzLzUKdmlsbGFpbnkvMTVTTQp2aWxsZWluLzFTTQp2aWxsZWluYWdlLzFNCnZpbGxpLzEKdmlsbHVzLzFNCnZpbS8xTQp2aW5haWdyZXR0ZS8xTQp2aW5jaWJsZS81SQp2aW5kaWNhdGUvNFhEU0dOCnZpbmRpY2F0aW9uLzFNCnZpbmRpY2F0b3IvMU1TCnZpbmRpY3RpdmUvNVBZCnZpbmRpY3RpdmVuZXNzLzFNCnZpbmUvMU1TCnZpbmVnYXIvMTRNCnZpbmVnYXJ5LzUKdmluZXlhcmQvMU1TCnZpbm8vMU0Kdmlub3VzLzUKdmludGFnZS8xNTRNUwp2aW50bmVyLzFNUwp2aW55bC8xNVNNCnZpb2wvMTRNQlMKdmlvbGEvMVNNCnZpb2xhYmxlLzVJCnZpb2xhdGUvNEdORFNYCnZpb2xhdGlvbi8xTQp2aW9sYXRvci8xU00KdmlvbGVuY2UvMTRNCnZpb2xlbnQvNTQxWQp2aW9sZXQvMTVNUwp2aW9saW4vMTRNUwp2aW9saW5jZWxsby8xUwp2aW9saW5pc3QvMVNNCnZpb2xpc3QvMU1TCnZpb2xvbmNlbGxpc3QvMVNNCnZpb2xvbmNlbGxvLzFNUwp2aXBlci8xU00KdmlwZXJvdXMvNQp2aXJhZ28vMU0KdmlyYWdvZXMvMQp2aXJhbC81MQp2aXJlby8xU00KdmlyZ2luLzE1TVMKdmlyZ2luYWwvNTFTTQp2aXJnaW5pdHkvMU0KdmlyZ3VsZS8xTVMKdmlyaWxlLzUKdmlyaWxpdHkvMU0Kdmlyb2xvZ2lzdC8xU00Kdmlyb2xvZ3kvMU0KdmlydHVhbC81MVkKdmlydHVhbGl6YXRpb24vMQp2aXJ0dWUvMVNNCnZpcnR1b3NpdHkvMU0KdmlydHVvc28vMTVNCnZpcnR1b3VzLzVZUAp2aXJ0dW91c25lc3MvMU0KdmlydWxlbmNlLzFNCnZpcnVsZW50LzVZCnZpcnVzLzE0TVMKdmlzYS8xNE1EU0cKdmlzYWdlLzFNUwp2aXNjZXJhLzEKdmlzY2VyYWwvNVkKdmlzY2lkLzUKdmlzY29zZS8xTQp2aXNjb3NpdHkvMU0KdmlzY291bnQvMVNNCnZpc2NvdW50Y3kvMVNNCnZpc2NvdW50ZXNzLzFNUwp2aXNjb3VzLzUKdmlzY3VzLzFNCnZpc2UvMTRBQ01HRFMKdmlzaWJpbGl0eS8xSU0KdmlzaWJsZS81SQp2aXNpYmx5L0kKdmlzaW9uLzE0S0dEU00KdmlzaW9uYXJ5LzUxU00KdmlzaXQncwp2aXNpdC80MUFTR0QKdmlzaXRhbnQvMTVNUwp2aXNpdGF0aW9uLzFNUwp2aXNpdG9yLzFNUwp2aXNvci8xNFNNCnZpc3RhLzE0U00KdmlzdWFsLzUxU01ZCnZpc3VhbGl6YXRpb24vMVNNCnZpc3VhbGl6ZS80RFJTWkcKdmlzdWFsaXplci8xTQp2aXRhLzFNCnZpdGFlLzEKdml0YWwvNVNZCnZpdGFsaXR5LzFNCnZpdGFsaXphdGlvbi8xQU0Kdml0YWxpemUvNENBR1NECnZpdGFscy8xTQp2aXRhbWluLzE0TVMKdml0aWF0ZS80R05EUwp2aXRpYXRpb24vMU0Kdml0aWN1bHR1cmUvMU0Kdml0aWN1bHR1cmlzdC8xTVMKdml0cmVvdXMvNTEKdml0cmlmYWN0aW9uLzFNCnZpdHJpZmljYXRpb24vMU0Kdml0cmlmeS80R05EUwp2aXRyaW5lLzFTTQp2aXRyaW9sLzE0TQp2aXRyaW9saWMvNQp2aXRyaW9saWNhbGx5Lwp2aXR0bGVzLzE0TQp2aXR1cGVyYXRlLzQ1R05WRFMKdml0dXBlcmF0aW9uLzFNCnZpdmEvNDFNUwp2aXZhY2UvNTEKdml2YWNpb3VzLzVQWQp2aXZhY2lvdXNuZXNzLzFNCnZpdmFjaXR5LzFNCnZpdmFyaWEvMQp2aXZhcml1bS8xU00Kdml2aWQvNTFSWVRQCnZpdmlkbmVzcy8xTQp2aXZpZnkvNEFEU0cKdml2aXBhcm91cy81CnZpdmlzZWN0LzRER1MKdml2aXNlY3Rpb24vMU0Kdml2aXNlY3Rpb25hbC81CnZpdmlzZWN0aW9uaXN0LzFTTQp2aXhlbi8xU00Kdml4ZW5pc2gvNVkKdml6LzU0MQp2aXppZXIvMVNNCnZsZgp2b2NhYi8xCnZvY2FibGUvMTVNUwp2b2NhYnVsYXJ5LzFTTQp2b2NhbC81MVNNWQp2b2NhbGljLzUKdm9jYWxpc3QvMVNNCnZvY2FsaXphdGlvbi8xTVMKdm9jYWxpemUvNERTRwp2b2NhdGlvbi8xRklLQVNNCnZvY2F0aW9uYWwvNVkKdm9jYXRpdmUvNTFNUwp2b2NpZmVyYXRlLzREU0dOCnZvY2lmZXJhdGlvbi8xTQp2b2NpZmVyb3VzLzVZUAp2b2NpZmVyb3VzbmVzcy8xTQp2b2RrYS8xU00Kdm9ndWUvMTRTTQp2b2d1aXNoLzUKdm9pY2UvMTRJRFNNRwp2b2ljZWQvNDVVCnZvaWNlbGVzcy81UFkKdm9pY2VsZXNzbmVzcy8xTQp2b2ljZW1haWwvMTRTTQp2b2lkLzUxNE1EU0dCCnZvaWxhLwp2b2lsZS8xTQp2b2wvMVMKdm9sYXRpbGUvNTEKdm9sYXRpbGl0eS8xTQp2b2xhdGlsaXplLzREU0cKdm9sY2FuaWMvNTEKdm9sY2FuaXNtLzEKdm9sY2Fuby8xNE0Kdm9sY2Fub2VzLzEKdm9sZS8xNE1TCnZvbGl0aW9uLzFNCnZvbGl0aW9uYWwvNTEKdm9sbGV5LzE0R1NNRAp2b2xsZXliYWxsLzFNUwp2b2x0LzFBTVMKdm9sdGFnZS8xTVMKdm9sdGFpYy81CnZvbHRtZXRlci8xU00Kdm9sdWJpbGl0eS8xTQp2b2x1YmxlLzUKdm9sdWJseS8Kdm9sdW1lLzE0U00Kdm9sdW1ldHJpYy81CnZvbHVtaW5vdXMvNVlQCnZvbHVtaW5vdXNuZXNzLzFNCnZvbHVudGFyaWx5L0kKdm9sdW50YXJpc20vMU0Kdm9sdW50YXJ5LzUxU00Kdm9sdW50ZWVyLzE0U0dNRAp2b2x1bnRlZXJpc20vMU0Kdm9sdXB0dWFyeS8xNVNNCnZvbHVwdHVvdXMvNVBZCnZvbHVwdHVvdXNuZXNzLzFNCnZvbHV0ZS8xNVNNCnZvbWl0LzQxU01ERwp2b29kb28vMTRHU01ECnZvb2Rvb2lzbS8xTQp2b3JhY2lvdXMvNVBZCnZvcmFjaW91c25lc3MvMU0Kdm9yYWNpdHkvMU0Kdm9ydGV4LzE0TVMKdm90YXJ5LzUxU00Kdm90ZSdzCnZvdGUvMTRDR1ZEUwp2b3Rlci8xU00Kdm91Y2gvNDFEUlNaRwp2b3VjaGVyLzE0TQp2b3VjaHNhZmUvNERTRwp2b3cvMTRTR01ECnZvd2VsLzE0U00Kdm95YWdlLzE0TVpHRFJTCnZveWFnZXIvMU0Kdm95YWdldXIvMVNNCnZveWV1ci8xTVMKdm95ZXVyaXNtLzFNCnZveWV1cmlzdGljLzUKdnVsY2FuaXphdGlvbi8xTQp2dWxjYW5pemUvNEdEUwp2dWxnYXIvNTFSWVQKdnVsZ2FyaWFuLzE1TVMKdnVsZ2FyaXNtLzFNUwp2dWxnYXJpdHkvMVNNCnZ1bGdhcml6YXRpb24vMU0KdnVsZ2FyaXplLzRaR0RSUwp2dWxnYXJpemVyLzFNCnZ1bG5lcmFiaWxpdGllcy8xCnZ1bG5lcmFiaWxpdHkvMUlNCnZ1bG5lcmFibGUvNUkKdnVsbmVyYWJseS9JCnZ1bHBpbmUvNTEKdnVsdHVyZS8xNDVTTQp2dWx0dXJvdXMvNQp2dWx2YS8xTQp2dWx2YWUvMQp2dXZ1emVsYS8xTVMKdnlpbmcvNDEKdy8xNStETlhUR1ZKCndhYmJpdC81MVMKd2Fjay81MU1SVFMKd2Fja2luZXNzLzFNCndhY2tvLzUxU00Kd2Fja3kvNTFSUFQKd2FkLzE0U1pHTURSCndhZGRlZC80CndhZGRpbmcvMTRNCndhZGRsZS8xNERTTUcKd2FkZS80MU1TCndhZGVyLzFNCndhZGVycy8xTQp3YWRnZS8xUwp3YWRpLzFNUwp3YWZlci8xNFNNCndhZmZsZS8xNE1aR0RSUwp3YWZmbGVyLzFNCndhZnQvNDFNREdTCndhZy80MVNaR01EUgp3YWdlLzE0TVMKd2FnZWQvNFUKd2FnZXIvMTRaR01EUgp3YWdlcmVyLzFNCndhZ2dlZC80CndhZ2dlcnkvMVNNCndhZ2dpbmcvNDEKd2FnZ2lzaC81WVAKd2FnZ2lzaG5lc3MvMU0Kd2FnZ2xlLzQxTUdEUwp3YWdvbi8xNFpTTVIKd2Fnb25lci8xTQp3YWd0YWlsLzFTTQp3YWlmLzE0TVMKd2FpbC80MU1EUlpHUwp3YWlsZXIvMU0Kd2FpbGluZy8xNE0Kd2Fpbi8xNE1TCndhaW5zY290LzE0U0pNREcKd2FpbnNjb3RpbmcvMTRNCndhaW53cmlnaHQvMU1TCndhaXN0LzFTTQp3YWlzdGJhbmQvMU1TCndhaXN0Y29hdC8xTVMKd2Fpc3RsaW5lLzFNUwp3YWl0LzQxTURSWkdTCndhaXRlci8xNE0Kd2FpdGluZy80MU0Kd2FpdHBlcnNvbi8xTVMKd2FpdHJlc3MvMTRNUwp3YWl0c3RhZmYvMU0Kd2FpdmUvNDFEUlNaRwp3YWl2ZXIvMTRNCndha2UvNDFNR0pEUwp3YWtlZnVsLzVQWQp3YWtlZnVsbmVzcy8xTQp3YWtlbi80R1NECndhbGRvLzFTCndhbGRvZXMvMQp3YWxlLzE0TUdEUwp3YWxrLzQxTURSWkdTCndhbGthYm91dC8xUwp3YWxrYXdheS8xTVMKd2Fsa2VyLzFNCndhbGtpZXMvMQp3YWxraW5nLzQ1MU0Kd2Fsa291dC8xNFNNCndhbGtvdmVyLzFNUwp3YWxrd2F5LzFTTQp3YWxsLzE0TURHUwp3YWxsYWJ5LzFTTQp3YWxsYWgvMQp3YWxsYWhzLzEKd2FsbGJvYXJkLzFNCndhbGxldC8xTVMKd2FsbGV5ZS8xRFNNCndhbGxmbG93ZXIvMTRNUwp3YWxsb3AvMTRNRFNKRwp3YWxsb3BpbmcvNTE0TQp3YWxsb3cvNDE1TURTRwp3YWxscGFwZXIvMTRTTURHCndhbGx5LzE1NFMKd2FsbnV0LzE1TVMKd2FscnVzLzE0TVMKd2FsdHovMTRaR01EUlMKd2FsdHplci8xTQp3YW1wdW0vMU0Kd2FuLzUxNEdQRFkKd2FuZC8xNE1TCndhbmRlci80MURSU0paRwp3YW5kZXJlci8xTQp3YW5kZXJpbmdzLzFNCndhbmRlcmx1c3QvMTRTTQp3YW5lLzE0TVMKd2FuZ2xlLzQxTVpHRFJTCndhbmdsZXIvMU0Kd2Fuay80MURSWkdTCndhbm5hLwp3YW5uYWJlLzFTTQp3YW5uYWJlZS8xUwp3YW5uZXIvNQp3YW5uZXNzLzFNCndhbm5lc3QvNQp3YW50LzQxTURHU34Kd2FudGVkLzU0VQp3YW50b24vNTE0TURZU1BHCndhbnRvbm5lc3MvMU0Kd2FwaXRpLzFNUwp3YXIvMTRTTQp3YXJibGUvNDFNWkdEUlMKd2FyYmxlci8xTQp3YXJib25uZXQvMVNNCndhcmQvMTRBTURHUwp3YXJkZW4vMTRNUwp3YXJkZXIvMU1TCndhcmRyZXNzLzFTCndhcmRyb2JlLzE0U00Kd2FyZHJvb20vMVNNCndhcmUvNTE0TVMKd2FyZWhvdXNlLzE0RFNNRwp3YXJlei8xNAp3YXJmYXJlLzE0TQp3YXJmYXJpbi8xCndhcmhlYWQvMU1TCndhcmhvcnNlLzFTTQp3YXJpbHkvVQp3YXJpbmVzcy8xVU0Kd2FybGlrZS81CndhcmxvY2svMU1TCndhcmxvcmQvMU1TCndhcm0vNTQxUERSWUhaVEdTCndhcm1ibG9vZGVkLzUKd2FybWVyLzUxTQp3YXJtaGVhcnRlZC81UAp3YXJtaGVhcnRlZG5lc3MvMU0Kd2FybWlzaC81Cndhcm1uZXNzLzFNCndhcm1vbmdlci8xNFNNRwp3YXJtb25nZXJpbmcvNDFNCndhcm10aC8xTQp3YXJuLzRKREdTCndhcm5pbmcvNDFNCndhcnAvMTRNREdTCndhcnBhaW50LzEKd2FycGF0aC8xTQp3YXJwYXRocy8xCndhcnBsYW5lLzFNUwp3YXJyYW50LzE0R01EUwp3YXJyYW50ZWQvNDVVCndhcnJhbnR5LzE0RFNNRwp3YXJyZWQvNAp3YXJyZW4vMU1TCndhcnJpbmcvNTE0CndhcnJpb3IvMVNNCndhcnNoaXAvMVNNCndhcnQvMU1TCndhcnRob2cvMVNNCndhcnRpbWUvMU0Kd2FydHkvNVRSCndhcnkvNTRVUFJUCndhcy80Cndhc2FiaS8xCndhc2gvNDFCSk1EUlNaRwp3YXNoYWJsZS81MVNNCndhc2hiYXNpbi8xU00Kd2FzaGJvYXJkLzE0U00Kd2FzaGJvd2wvMVNNCndhc2hjbG90aC8xTQp3YXNoY2xvdGhzLzEKd2FzaGVkLzQ1VQp3YXNoZXIvMTRNCndhc2hlcndvbWFuLzFNCndhc2hlcndvbWVuLzEKd2FzaGluZy8xNE0Kd2FzaG91dC8xTVMKd2FzaHJhZy8xTVMKd2FzaHJvb20vMU1TCndhc2hzdGFuZC8xU00Kd2FzaHR1Yi8xTVMKd2FzaHkvNTFUUgp3YXNuJ3QvNAp3YXNwLzE0TVMKd2FzcGlzaC81WVAKd2FzcGlzaG5lc3MvMU0Kd2Fzc2FpbC8xNFNNREcKd2FzdC80MQp3YXN0YWdlLzFNCndhc3RlLzE1NERSU01aRwp3YXN0ZWJhc2tldC8xNE1TCndhc3RlZnVsLzVQWQp3YXN0ZWZ1bG5lc3MvMU0Kd2FzdGVsYW5kLzFTTQp3YXN0ZXBhcGVyLzFNCndhc3Rlci8xTQp3YXN0ZXdhdGVyLzEKd2FzdHJlbC8xU00Kd2F0Y2gvMTRCWkdNRFJTCndhdGNoYWJsZS81MVUKd2F0Y2hiYW5kLzFNUwp3YXRjaGRvZy8xNFNNCndhdGNoZXIvMU0Kd2F0Y2hmdWwvNVlQCndhdGNoZnVsbmVzcy8xTQp3YXRjaG1ha2VyLzFNUwp3YXRjaG1ha2luZy8xTQp3YXRjaG1hbi8xTQp3YXRjaG1lbi8xCndhdGNoc3RyYXAvMVMKd2F0Y2h0b3dlci8xU00Kd2F0Y2h3b3JkLzFNUwp3YXRlci8xNEdTTUQKd2F0ZXJiZWQvMU1TCndhdGVyYmlyZC8xU00Kd2F0ZXJib2FyZC8xNE1ESlNHCndhdGVyYm9hcmRpbmcvMTRNCndhdGVyYm9ybmUvNQp3YXRlcmNvbG9yLzE1TVMKd2F0ZXJjb3Vyc2UvMVNNCndhdGVyY3JhZnQvMU0Kd2F0ZXJjcmVzcy8xTQp3YXRlcmZhbGwvMTRTTQp3YXRlcmZvd2wvMVNNCndhdGVyZnJvbnQvMU1TCndhdGVyaG9sZS8xU00Kd2F0ZXJpbmVzcy8xTQp3YXRlcmxpbHkvMVNNCndhdGVybGluZS8xTVMKd2F0ZXJsb2dnZWQvNQp3YXRlcm1hcmsvMTRNREdTCndhdGVybWVsb24vMVNNCndhdGVybWlsbC8xTVMKd2F0ZXJwcm9vZi81NDFTTURHCndhdGVycHJvb2ZpbmcvNDFNCndhdGVycy8xNE0Kd2F0ZXJzaGVkLzE1TVMKd2F0ZXJzaWRlLzE1TVMKd2F0ZXJzcG91dC8xU00Kd2F0ZXJ0aWdodC81CndhdGVyd2F5LzFNUwp3YXRlcndoZWVsLzFTTQp3YXRlcndvcmtzLzFNCndhdGVyeS81UFRSCndhdHQvMU1TCndhdHRhZ2UvMU0Kd2F0dGxlLzE0TUdEUwp3YXZlLzQxTVpHRFJTCndhdmViYW5kLzFTCndhdmVmb3JtLzEKd2F2ZWZyb250LzEKd2F2ZWxlbmd0aC8xTQp3YXZlbGVuZ3Rocy8xCndhdmVsZXQvMVNNCndhdmVsaWtlLzUKd2F2ZXIvNDFaR01EUgp3YXZlcmVyLzFNCndhdmVyaW5nLzUxNFkKd2F2aW5lc3MvMU0Kd2F2eS81MVBSVAp3YXgvMTU0R01ETlMKd2F4aW5lc3MvMU0Kd2F4d2luZy8xU00Kd2F4d29yay8xU00Kd2F4eS81MVJQVAp3YXkvMTQ1U01+CndheWJpbGwvMTRTTQp3YXlmYXJlci8xTVMKd2F5ZmFyaW5nLzUxNFNNCndheWxhaWQvNAp3YXlsYXkvNFJTWkcKd2F5bGF5ZXIvMU0Kd2F5c2lkZS8xNVNNCndheXdhcmQvNVBZCndheXdhcmRuZXNzLzFNCndhem9vLzFTCndlLzh+CndlJ2QvCndlJ2xsLwp3ZSdyZS8Kd2UndmUvCndlYWsvNVBOUllYVAp3ZWFrZW4vNERSWkcKd2Vha2VuZXIvMU0Kd2Vha2Zpc2gvMU1TCndlYWtpc2gvNQp3ZWFrbGluZy8xNVNNCndlYWtuZXNzLzFNUwp3ZWFsLzE0TUhTCndlYWx0aC8xTQp3ZWFsdGhpbmVzcy8xTQp3ZWFsdGh5LzUxVFJQCndlYW4vNDFER1MKd2VhcG9uLzE0TVMKd2VhcG9uaXplLzRHRFMKd2VhcG9ubGVzcy81CndlYXBvbnJ5LzFNCndlYXIvNDFNUkJKU1pHCndlYXJhYmxlLzUxVQp3ZWFyZXIvMU0Kd2VhcmllZC80VQp3ZWFyaWx5Lwp3ZWFyaW5lc3MvMU0Kd2Vhcmlzb21lLzVZCndlYXJ5LzU0VEdEUlNQCndlYXNlbC8xNE1EWVNHCndlYXRoZXIvMTU0U01ERwp3ZWF0aGVyYm9hcmQvMTRTRwp3ZWF0aGVyY29jay8xNE1TCndlYXRoZXJpbmcvMTRNCndlYXRoZXJpemF0aW9uLzFNCndlYXRoZXJpemUvNERTRwp3ZWF0aGVybWFuLzFNCndlYXRoZXJtZW4vMQp3ZWF0aGVycGVyc29uLzFNUwp3ZWF0aGVycHJvb2YvNTRHU0QKd2VhdGhlcnN0cmlwLzE0Uwp3ZWF0aGVyc3RyaXBwZWQvNAp3ZWF0aGVyc3RyaXBwaW5nLzE0TQp3ZWF2ZS80MURSU01aRwp3ZWF2ZXIvMU0Kd2VhdmluZy8xNE0Kd2ViLzEyNFNNCndlYmJlZC81NAp3ZWJiaW5nLzE0TQp3ZWJjYW0vMTRNUwp3ZWJjYXN0LzE0U01HCndlYmZlZXQvMQp3ZWJmb290LzFNCndlYmluYXIvMVNNCndlYmlzb2RlLzFNUwp3ZWJsb2cvMU1TCndlYm1hc3Rlci8xU00Kd2VibWlzdHJlc3MvMU1TCndlYnNpdGUvMVNNCndlZC80QVMKd2VkZGVkLzU0QQp3ZWRkZXIvMQp3ZWRkaW5nLzQxU00Kd2VkZ2UvMTREU01HCndlZGdpZS8xNE1TCndlZGxvY2svMU0Kd2VlLzUxNDhSU01UCndlZWQvMTRNRFJTWkcKd2VlZGVyLzFNCndlZWRraWxsZXIvMVMKd2VlZGxlc3MvNQp3ZWVkeS81VFIKd2VlaW5nLzQKd2Vlay8xTVlTCndlZWtkYXkvMVNNCndlZWtlbmQvMTQ1U1pHTURSCndlZWtseS81MVNNCndlZWtuaWdodC8xU00Kd2Vlbi8xNERTRwp3ZWVuaWUvMU1UUlMKd2VlbnN5LzVSVAp3ZWVueS81MQp3ZWVwLzQxTVJKU1pHCndlZXBlci8xTQp3ZWVwaWUvMQp3ZWVweS81MVRSU00Kd2VldmlsLzFNUwp3ZWZ0LzFNUwp3ZWlnaCdzCndlaWdoLzQxQUdECndlaWdoYnJpZGdlLzFTCndlaWdocy80QQp3ZWlnaHQvMTRNRFNKRwp3ZWlnaHRlZC80NVUKd2VpZ2h0aWx5Lwp3ZWlnaHRpbmVzcy8xTQp3ZWlnaHRsZXNzLzVZUAp3ZWlnaHRsZXNzbmVzcy8xTQp3ZWlnaHRsaWZ0ZXIvMU1TCndlaWdodGxpZnRpbmcvMU0Kd2VpZ2h0eS81UFRSCndlaXIvMU1TCndlaXJkLzUxNFBUUlkKd2VpcmRpZS8xTVMKd2VpcmRuZXNzLzFNCndlaXJkby8xTVMKd2VsY29tZS81MTRNR0RTCndlbGQvMTRNRFJCU1pHCndlbGRlci8xTQp3ZWxmYXJlLzE0TQp3ZWxraW4vMU0Kd2VsbC81MTRNRFBTR34Kd2VsbGhlYWQvMVNNCndlbGxpZS8xCndlbGxpbmd0b24vMU1TCndlbGxuZXNzLzFNCndlbGxzcHJpbmcvMU1TCndlbGx5LzFTCndlbHNoLzRaR0RSUwp3ZWxzaGVyLzFNCndlbHQvNDFNRFJTWkcKd2VsdGVyLzE0NUdNRAp3ZWx0ZXJ3ZWlnaHQvNTFTTQp3ZW4vMTc4TQp3ZW5jaC8xNE1TCndlbmQvNDFEU0cKd2VudC80MQp3ZXB0LzQKd2VyZS80MQp3ZXJlbid0LzQKd2VyZXdvbGYvMU0Kd2VyZXdvbHZlcy8xCndlc3QvMTU0TQp3ZXN0Ym91bmQvNQp3ZXN0ZXJseS81MVNNCndlc3Rlcm4vNTFTWk1SCndlc3Rlcm5lci8xTQp3ZXN0ZXJuaXphdGlvbi8xTQp3ZXN0ZXJuaXplLzRHRFMKd2VzdGVybm1vc3QvNQp3ZXN0d2FyZC81MVMKd2V0LzUxNFNNWVAKd2V0YmFjay8xU00Kd2V0bGFuZC8xU00Kd2V0bmVzcy8xTQp3ZXR0ZXIvNTFTTQp3ZXR0ZXN0LzU0CndldHRpbmcvNDE1CndldHdhcmUvMVMKd2hhY2svMTQ1U0paR01EUgp3aGFja2VyLzFNCndoYWxlLzE0RFJTTVpHCndoYWxlYm9hdC8xTVMKd2hhbGVib25lLzFNCndoYWxlci8xTQp3aGFsaW5nLzE0TQp3aGFtLzE0TVMKd2hhbW1lZC80CndoYW1taW5nLzQKd2hhbW15LzFTTQp3aGFyZi8xNE0Kd2hhcnZlcy8xCndoYXQvODFNUwp3aGF0Y2hhbWFjYWxsaXQvMU1TCndoYXRldmVyLzg1MQp3aGF0bm90LzFNCndoYXRzaGVybmFtZS84CndoYXRzaGlzbmFtZS8xCndoYXRzaXQvMVMKd2hhdHNvZXZlci84CndoZWFsLzE0U00Kd2hlYXQvMTVNTgp3aGVhdGdlcm0vMQp3aGVhdG1lYWwvMQp3aGVlLzQKd2hlZWRsZS80MURSU1pHCndoZWVkbGVyLzFNCndoZWVsLzE0U01EUkcKd2hlZWxiYXJyb3cvMTRTTQp3aGVlbGJhc2UvMVNNCndoZWVsY2hhaXIvMVNNCndoZWVsaG91c2UvMU1TCndoZWVsaWUvMTQ1U00Kd2hlZWx3cmlnaHQvMU1TCndoZWV6ZS80MURTTUcKd2hlZXppbHkvCndoZWV6aW5lc3MvMU0Kd2hlZXp5LzVQUlQKd2hlbGsvMVNNRAp3aGVsbS80MVNERwp3aGVscC8xNFNNREcKd2hlbi83ODFNUwp3aGVuY2UvNwp3aGVuZXZlci83CndoZW5zb2V2ZXIvCndoZXJlLzcxU00Kd2hlcmVhYm91dHMvMU0Kd2hlcmVhcy83MQp3aGVyZWF0LzcKd2hlcmVieS8Kd2hlcmVmb3JlLzcxTVMKd2hlcmVpbi83CndoZXJlb2YvNwp3aGVyZW9uLwp3aGVyZXNvZXZlci83CndoZXJldG8vCndoZXJldXBvbi83CndoZXJldmVyLzcKd2hlcmV3aXRoLzEKd2hlcmV3aXRoYWwvMU0Kd2hlcnJ5LzE0U00Kd2hldC80MVMKd2hldGhlci83OAp3aGV0c3RvbmUvMTRTTQp3aGV0dGVkLzU0CndoZXR0aW5nLzQxCndoZXcvNAp3aGV5LzFNCndoaWNoLzc4fgp3aGljaGV2ZXIvOAp3aGlmZi8xNDVTTURHCndoaWZmbGV0cmVlLzFNUwp3aGlsZS8xNys0RFNNRwp3aGlsb20vNTcKd2hpbHN0LzcKd2hpbS8xNE1TCndoaW1wZXIvMTRNREdTCndoaW1zaWNhbC81WQp3aGltc2ljYWxpdHkvMU0Kd2hpbXN5LzE0NVNNCndoaW5lLzE0RFJTTVpHCndoaW5lci8xTQp3aGluZ2UvNDFEUlNaRwp3aGluZ2VpbmcvNDEKd2hpbm55LzE0R0RTTQp3aGlueS81UlQKd2hpcC8xNE1TCndoaXBjb3JkLzFNCndoaXBsYXNoLzE0TVMKd2hpcHBlZC81NAp3aGlwcGVyLzFNUwp3aGlwcGVyc25hcHBlci8xTVMKd2hpcHBldC8xTVMKd2hpcHBpbmcvMTRTTQp3aGlwcGxldHJlZS8xU00Kd2hpcHBvb3J3aWxsLzFNUwp3aGlwc2F3LzE0NU1ER1MKd2hpci8xNE1TCndoaXJsLzQxU01ERwp3aGlybGlnaWcvMU1TCndoaXJscG9vbC8xNE1TCndoaXJsd2luZC8xNU1TCndoaXJseWJpcmQvMVNNCndoaXJyZWQvNAp3aGlycmluZy8xNDUKd2hpc2svMTRTTURSWkcKd2hpc2tlci8xTUQKd2hpc2tlcnkvNTEKd2hpc2tleS8xTVMKd2hpc2t5cwp3aGlzcGVyLzE0TURSU1pHCndoaXNwZXJlci8xTQp3aGlzdC8xNDVNCndoaXN0bGUvMTRNWkdEUlMKd2hpc3RsZXIvMU0Kd2hpdC8xK01ETlJTWFRHSgp3aGl0ZS81MTRTUE0Kd2hpdGViYWl0LzE0CndoaXRlYm9hcmQvMTRTCndoaXRlY2FwLzFTTQp3aGl0ZWZpc2gvMTRNUwp3aGl0ZWhlYWQvMU1TCndoaXRlbGlzdC8xNEdEUwp3aGl0ZW4vNFpHRFJKCndoaXRlbmVyLzFNCndoaXRlbmVzcy8xTQp3aGl0ZW5pbmcvNDFNCndoaXRlb3V0LzFTTQp3aGl0ZXRhaWwvMU1TCndoaXRld2FsbC81MVNNCndoaXRld2FzaC8xNE1EU0cKd2hpdGV3YXRlci8xTQp3aGl0ZXkvNTFTTQp3aGl0aGVyLzE0CndoaXRpbmcvMTRNCndoaXRpc2gvNQp3aGl0dGxlLzE0WkdEUlMKd2hpdHRsZXIvMU0Kd2hpei80MStNCndoaXpraWQvMU0Kd2hpenpiYW5nLzFNUwp3aGl6emVkLzQKd2hpenplcy8xNAp3aGl6emluZy80MTUKd2hvJ2QvCndobydsbC8Kd2hvJ3JlLwp3aG8ndmUvCndoby84MU1+Cndob2EvNAp3aG9kdW5pdC8xTVMKd2hvZXZlci84Cndob2xlLzUxU01QCndob2xlZm9vZC8xUwp3aG9sZWdyYWluLzEKd2hvbGVoZWFydGVkLzVZUAp3aG9sZWhlYXJ0ZWRuZXNzLzFNCndob2xlbWVhbC81MQp3aG9sZW5lc3MvMU0Kd2hvbGVzYWxlLzE1NE1aR0RSUwp3aG9sZXNhbGVyLzFNCndob2xlc29tZS81VVAKd2hvbGVzb21lbHkvCndob2xlc29tZW5lc3MvMVVNCndob2xld2hlYXQvNQp3aG9sbHkvCndob20vOAp3aG9tZXZlci84Cndob21zb2V2ZXIvOAp3aG9vcC8xNFNNRFJaRwp3aG9vcGVlLzRTCndob29wZXIvMU0Kd2hvb3NoLzE0TURTRwp3aG9wLzQxUwp3aG9wcGVkLzQKd2hvcHBlci8xU00Kd2hvcHBpbmcvNTQxCndob3JlLzE0U01HNgp3aG9yZWhvdXNlLzFNUwp3aG9yZWlzaC81Cndob3Jpc2gvNQp3aG9ybC8xNFNNRAp3aG9zZS84Cndob3NvLzgKd2hvc29ldmVyLzgKd2h1cC80Uwp3aHVwcGVkLzQKd2h1cHBpbmcvNDEKd2h5J2QvCndoeS8xNE0Kd2h5cy8xCndpY2svMTQ1TURSU1oKd2lja2VkLzU0VFBSWQp3aWNrZWRuZXNzLzFNCndpY2tlci8xNU0Kd2lja2Vyd29yay8xTQp3aWNrZXQvMVNNCndpZGUvNTFZVFJQCndpZGVtb3V0aGVkLzUKd2lkZW4vNFNEUlpHCndpZGVuZXIvMU0Kd2lkZW5lc3MvMU0Kd2lkZXNjcmVlbi8xNU1TCndpZGVzcHJlYWQvNQp3aWRnZXQvMVMKd2lkb3cvMTRTTURSWkcKd2lkb3dlci8xTQp3aWRvd2hvb2QvMU0Kd2lkdGgvMU0Kd2lkdGhzLzEKd2llbGQvNDFTRFJaRwp3aWVsZGVyLzFNCndpZW5lci8xU00Kd2llbmllLzFTTQp3aWZlLzE0TVkKd2lmZWxlc3MvNQp3aWcvMTRTTQp3aWdlb24vMU0Kd2lnZ2VkLzQ1CndpZ2dpbmcvNDEKd2lnZ2xlLzQxRFJTTVpHCndpZ2dsZXIvMU0Kd2lnZ2x5LzVUUgp3aWdodC8xNVNNCndpZ2xldC8xU00Kd2lnd2FnLzE0U00Kd2lnd2FnZ2VkLzQKd2lnd2FnZ2luZy80CndpZ3dhbS8xNFNNCndpa2kvMTRNUwp3aWxkLzUxNE1SWVNUUAp3aWxkY2FyZC8xNE1TCndpbGRjYXQvMTU0TVMKd2lsZGNhdHRlZC80CndpbGRjYXR0ZXIvMU1TCndpbGRjYXR0aW5nLzQKd2lsZGViZWVzdC8xTVMKd2lsZGVybmVzcy8xTVMKd2lsZGZpcmUvMU1TCndpbGRmbG93ZXIvMVNNCndpbGRmb3dsLzE0TQp3aWxkbGlmZS8xTQp3aWxkbmVzcy8xTQp3aWxkcy8xNE0Kd2lsZS8xNE1HRFMKd2lsaW5lc3MvMU0Kd2lsbC80MU1EU34Kd2lsbGZ1bC81UFkKd2lsbGZ1bG5lc3MvMU0Kd2lsbGllcy8xTQp3aWxsaW5nLzUxNFVQWQp3aWxsaW5nbmVzcy8xVU0Kd2lsbGl3YXcvMU1TCndpbGxvdy8xNFNNCndpbGxvd3kvNQp3aWxscG93ZXIvMU0Kd2lsbHkvNTE0Uwp3aWx0LzQxTURTRwp3aWx5LzVSVFAKd2ltcC8xNDVNRFNHCndpbXBpc2gvNQp3aW1wbGUvMTREU01HCndpbXB5LzVSVAp3aW4vNDFTR01ECndpbmNlLzE0RFNNRwp3aW5jaC8xNE1EU0cKd2luZCdzCndpbmQvMTRVQVNHCndpbmRiYWcvMTRTTQp3aW5kYmxvd24vNQp3aW5kYnJlYWsvMVNaTVIKd2luZGJyZWFrZXIvMU0Kd2luZGJ1cm4vMU1ECndpbmRjaGVhdGVyLzFTCndpbmRjaGlsbC8xTQp3aW5kZWQvNDUKd2luZGVyLzE0U00Kd2luZGZhbGwvMU1TCndpbmRmbG93ZXIvMU1TCndpbmRpbHkvCndpbmRpbmVzcy8xTQp3aW5kaW5nJ3MKd2luZGphbW1lci8xU00Kd2luZGxhc3MvMTRNUwp3aW5kbGVzcy81MQp3aW5kbWlsbC8xNE1ER1MKd2luZG93LzE0U01ERwp3aW5kb3dsZXNzLzUKd2luZG93cGFuZS8xU00Kd2luZG93c2lsbC8xU00Kd2luZHBpcGUvMU1TCndpbmRwcm9vZi81NAp3aW5kcm93LzE0U00Kd2luZHNjcmVlbi8xNFNNCndpbmRzaGllbGQvMTRTTQp3aW5kc29jay8xTVMKd2luZHN0b3JtLzFNUwp3aW5kc3VyZi80MVpHRFJTCndpbmRzdXJmZXIvMU0Kd2luZHN1cmZpbmcvMTRNCndpbmRzd2VwdC81CndpbmR1cC8xNVNNCndpbmR3YXJkLzUxTQp3aW5keS81MVJUUAp3aW5lLzE0TVMKd2luZWdsYXNzLzFNUwp3aW5lZ3Jvd2VyLzFNUwp3aW5lbWFrZXIvMU1TCndpbmVyeS8xU00Kd2luZy8xNE1EUlpHCndpbmdkaW5nLzFNUwp3aW5nbGVzcy81CndpbmdsaWtlLzUKd2luZ251dC8xU00Kd2luZ3NwYW4vMU1TCndpbmdzcHJlYWQvMVNNCndpbmd0aXAvMVNNCndpbmsvNDFNRFJTWkcKd2lua2VyLzFNCndpbmtsZS8xNERTTUcKd2lubmFibGUvNVUKd2lubmVyLzFTTQp3aW5uaW5nLzQ1MU1ZUwp3aW5ub3cvNDFaR1NEUgp3aW5ub3dlci8xTQp3aW5vLzFNUwp3aW5zb21lLzVZVFJQCndpbnNvbWVuZXNzLzFNCndpbnRlci8xNEdTTUQKd2ludGVyZ3JlZW4vMU0Kd2ludGVyaXplLzRHRFMKd2ludGVydGltZS8xTQp3aW50cnkvNVRSCndpbnkvNVJUCndpcGUvNDFNWkdEUlMKd2lwZXIvMU0Kd2lyZSdzCndpcmUvMTRBR0RTCndpcmVkLzU0Uwp3aXJlaGFpci8xTVMKd2lyZWxlc3MvNTE0TVMKd2lyZXRhcC8xNE1TCndpcmV0YXBwZWQvNDUKd2lyZXRhcHBlci8xU00Kd2lyZXRhcHBpbmcvMTRNCndpcmluZXNzLzFNCndpcmluZy80MU0Kd2lyeS81UlRQCndpc2RvbS8xTQp3aXNlLzU0MU1ZVEdEUlMKd2lzZWFjcmUvMTRTTQp3aXNlY3JhY2svMTRNRFNHCndpc2VndXkvMVMKd2lzaC8xNE1EUlNaRwp3aXNoYm9uZS8xNFNNCndpc2hlci8xTQp3aXNoZnVsLzVZCndpc2hsaXN0J3MKd2lzcC8xNE1TCndpc3B5LzVSVAp3aXN0LzQKd2lzdGVyaWEvMVNNCndpc3RmdWwvNVlQCndpc3RmdWxuZXNzLzFNCndpdC8xNCtTTQp3aXRjaC8xNE1EU0cKd2l0Y2hjcmFmdC8xTQp3aXRjaGVyeS8xTQp3aXRoLyt+CndpdGhhbC8rCndpdGhkcmF3LzQxU0cKd2l0aGRyYXdhbC8xTVMKd2l0aGRyYXduLzU0CndpdGhkcmV3LzQKd2l0aGUvMTREUlNNWkcKd2l0aGVyLzQxSkdECndpdGhlcmluZy81NDFZCndpdGhlcnMvMTRNCndpdGhoZWxkLzQ1CndpdGhob2xkLzQxU0cKd2l0aGhvbGRpbmcvNDFNCndpdGhpbi8rNU0Kd2l0aG91dC8rNwp3aXRoc3RhbmQvNEdTCndpdGhzdG9vZC80CndpdGxlc3MvNVBZCndpdGxlc3NuZXNzLzFNCndpdG5lc3MvMTRNRFNHCndpdHMvMU0Kd2l0dGVkLzU0CndpdHRlci80NVNHRAp3aXR0aWNpc20vMVNNCndpdHRpbHkvCndpdHRpbmVzcy8xTQp3aXR0aW5nLzE1NFVZCndpdHR5LzVSUFQKd2l2ZS80R0RTCndpei8xNCsKd2l6YXJkLzE1NFNNWQp3aXphcmRyeS8xTQp3aXplbmVkLzQ1CndrLzFZCndvYWQvMTRNCndvYmJsZS8xNE1HRFMKd29iYmxpbmVzcy8xTQp3b2JibHkvNTFSVFAKd29kZ2UvMVMKd29lLzE1U00Kd29lYmVnb25lLzUKd29lZnVsLzVZUAp3b2VmdWxsZXIvNQp3b2VmdWxsZXN0LzUKd29lZnVsbmVzcy8xTQp3b2cvMTRTCndvay8xNFNNTgp3b2tlLzUxNAp3b2xkLzE1TVMKd29sZi8xNE1EU0cKd29sZmhvdW5kLzFTTQp3b2xmaXNoLzUKd29sZnJhbS8xTQp3b2x2ZXJpbmUvMVNNCndvbHZlcy8xNAp3b21hbi8xNE0Kd29tYW5ob29kLzFNCndvbWFuaXNoLzU0CndvbWFuaXplLzREUlNaRwp3b21hbml6ZXIvMU0Kd29tYW5raW5kLzFNCndvbWFubGlrZS81TQp3b21hbmxpbmVzcy8xTQp3b21hbmx5LzVSUFQKd29tYi8xNE1TCndvbWJhdC8xTVMKd29tYmxlLzE0Uwp3b21lbi8xTQp3b21lbmZvbGsvMVNNCndvbWVuZm9sa3MvMU0Kd29uJ3QvNAp3b24vNDFNCndvbmRlci8xNE1ER0xTCndvbmRlcmZ1bC81WVAKd29uZGVyZnVsbmVzcy8xTQp3b25kZXJpbmcvNDE1WQp3b25kZXJsYW5kLzFNUwp3b25kZXJtZW50LzFNCndvbmRyb3VzLzVZCndvbmsvMU1TCndvbmt5LzUxVFIKd29udC8xNTRNRAp3b250ZWQvNVUKd29vLzQ1MVNaR0RSCndvb2QvMTQ1TUROU0cKd29vZGJpbmUvMU0Kd29vZGJsb2NrLzFNUwp3b29kY2FydmVyLzFNUwp3b29kY2FydmluZy8xU00Kd29vZGNodWNrLzFNUwp3b29kY29jay8xU00Kd29vZGNyYWZ0LzE0TQp3b29kY3V0LzFTTQp3b29kY3V0dGVyLzFTTQp3b29kY3V0dGluZy8xTQp3b29kZW4vNVJZVFAKd29vZGVubmVzcy8xTQp3b29kaW5lc3MvMU0Kd29vZGxhbmQvNTFTTQp3b29kbGljZS8xCndvb2Rsb3QvMVNNCndvb2Rsb3VzZS8xCndvb2RtYW4vMU0Kd29vZG1lbi8xCndvb2RwZWNrZXIvMU1TCndvb2RwaWxlLzFTTQp3b29kcy8xNE0Kd29vZHNoZWQvMTRTTQp3b29kc2luZXNzLzFNCndvb2RzbWFuLzFNCndvb2RzbWVuLzEKd29vZHN5LzVSVFAKd29vZHdpbmQvMU1TCndvb2R3b3JrLzE0TVJaRwp3b29kd29ya2VyLzFNCndvb2R3b3JraW5nLzE0TQp3b29kd29ybS8xUwp3b29keS81MVRQUlNNCndvb2VyLzFNCndvb2YvMTRNRFJTWkcKd29vZmVyLzFNCndvb2wvMU1OWAp3b29sZW4vNTFNCndvb2xnYXRoZXJpbmcvMU0Kd29vbGluZXNzLzEKd29vbGxpbmVzcy8xTQp3b29sbHkvNTFSU01QVAp3b296aWx5Lwp3b296aW5lc3MvMU0Kd29venkvNVRSUAp3b3AvMTRTIQp3b3JkJ3MKd29yZC8xNEFEU0cKd29yZGFnZS8xTQp3b3JkYm9vay8xU00Kd29yZGlseS8Kd29yZGluZXNzLzFNCndvcmRpbmcvMTRTTQp3b3JkbGVzcy81WQp3b3JkcGxheS8xTQp3b3Jkc21pdGgvMTQKd29yZHNtaXRocy8xNAp3b3JkeS81VFBSCndvcmUvNAp3b3JrJ3MKd29yay8xNEFESlNHfgp3b3JrYWJsZS81VQp3b3JrYWRheS81MQp3b3JrYWhvbGljLzE1U00Kd29ya2Fyb3VuZC8xUwp3b3JrYmFza2V0LzFTCndvcmtiZW5jaC8xTVMKd29ya2Jvb2svMU1TCndvcmtkYXkvMTVTTQp3b3JrZXIvMU1TCndvcmtmYXJlLzFNCndvcmtmbG93LzFNUwp3b3JrZm9yY2UvMU0Kd29ya2hvcnNlLzFTTQp3b3JraG91c2UvMTRTTQp3b3JraW5nJ3MKd29ya2luZ21hbi8xTQp3b3JraW5nbWVuLzEKd29ya2luZ3MvMU0Kd29ya2luZ3dvbWFuLzFNCndvcmtpbmd3b21lbi8xCndvcmtsb2FkLzFNUwp3b3JrbWFuLzFNCndvcmttYW5saWtlLzUKd29ya21hbnNoaXAvMU0Kd29ya21hdGUvMVMKd29ya21lbi8xCndvcmtvdXQvMVNNCndvcmtwbGFjZS8xTVMKd29ya3Jvb20vMU1TCndvcmtzLzE0TQp3b3Jrc2hlZXQvMTRNUwp3b3Jrc2hvcC8xNE1TCndvcmtzaHkvNQp3b3Jrc2l0ZS8xUwp3b3Jrc3BhY2UvMQp3b3Jrc3RhdGlvbi8xTVMKd29ya3RhYmxlLzFNUwp3b3JrdG9wLzFTCndvcmt1cC8xTVMKd29ya3dlZWsvMVNNCndvcmxkLzE0U00Kd29ybGRsaWVyLzUKd29ybGRsaW5lc3MvMVVNCndvcmxkbHkvNVVUUAp3b3JsZHZpZXcvMVNNCndvcmxkd2lkZS81Cndvcm0vMTRNRFNHCndvcm1ob2xlLzE0TVMKd29ybXdvb2QvMU0Kd29ybXkvNVRSCndvcm4vNTRVCndvcnJpZWQvNTRZCndvcnJpZXIvMU0Kd29ycmltZW50LzFNCndvcnJpc29tZS81CndvcnJ5LzQxWkdEUlNNSgp3b3JyeWluZy81NDFZCndvcnJ5d2FydC8xU00Kd29yc2UvNTE0TQp3b3JzZW4vNERTRwp3b3JzaGlwLzE0WkdTTURSCndvcnNoaXBlci8xTQp3b3JzaGlwZnVsLzUxCndvcnN0LzUxNFNHTUQKd29yc3RlZC8xNDVNCndvcnQvMU0Kd29ydGgvNTE0TQp3b3J0aGllcy8xCndvcnRoaWx5L1UKd29ydGhpbmVzcy8xVU0Kd29ydGhsZXNzLzVQWQp3b3J0aGxlc3NuZXNzLzFNCndvcnRod2hpbGUvNQp3b3J0aHkncwp3b3J0aHkvNTE0VVBSVAp3b3QvNDgKd290Y2hhLwp3b3VsZCd2ZS8Kd291bGQvNDFTfgp3b3VsZG4ndC80CndvdWxkc3QvNAp3b3VuZC8xNFNHTURSCndvdmUvNDVBCndvdmVuLzUxNEFVCndvdy80MVNHTUQKd3BtLzEKd3JhY2svMTRHU01ECndyYWl0aC8xTQp3cmFpdGhzLzEKd3JhbmdsZS80MURSU01aR0oKd3JhbmdsZXIvMU0Kd3JhcCdzCndyYXAvNDFVUwp3cmFwYXJvdW5kLzUxU00Kd3JhcHBlZC80NVUKd3JhcHBlci8xU00Kd3JhcHBpbmcvMTRNUwp3cmFzc2UvMU1TCndyYXRoLzE0NU0Kd3JhdGhmdWwvNVkKd3JlYWsvNDFTR0QKd3JlYXRoLzE0TURTRwp3cmVhdGhlLzQKd3JlYXRocy8xNAp3cmVjay8xNFNaR01EUgp3cmVja2FnZS8xTQp3cmVja2VyLzFNCndyZW4vMU1TCndyZW5jaC8xNE1EU0cKd3Jlc3QvNDFTR01ECndyZXN0bGUvMTRNWkdEUlMKd3Jlc3RsZXIvMU0Kd3Jlc3RsaW5nLzQxTQp3cmV0Y2gvMTRNUwp3cmV0Y2hlZC81VFBSWQp3cmV0Y2hlZG5lc3MvMU0Kd3JpZ2dsZS80MU1aR0RSUwp3cmlnZ2xlci8xTQp3cmlnZ2x5LzUKd3JpZ2h0LzE0TVMKd3JpbmcvNDFTWkdNUgp3cmluZ2VyLzFNCndyaW5rbGUvMTRNR0RTCndyaW5rbGVkLzU0VQp3cmlua2x5LzUxVFJTTQp3cmlzdC8xNFNNCndyaXN0YmFuZC8xTVMKd3Jpc3R3YXRjaC8xTVMKd3JpdC8xNE1SQkpTWkcKd3JpdGUvNDFTCndyaXRlci8xTQp3cml0aGUvNDFNR0RTCndyaXRpbmcvMTRNCndyaXR0ZW4vNTRBVQp3cm9uZy81MTRTVEdNUERSWQp3cm9uZ2RvZXIvMVNNCndyb25nZG9pbmcvMTRTTQp3cm9uZ2Z1bC81UFkKd3JvbmdmdWxuZXNzLzFNCndyb25naGVhZGVkLzVZUAp3cm9uZ2hlYWRlZG5lc3MvMU0Kd3JvbmduZXNzLzFNCndyb3RlLzRBCndyb3RoLzUKd3JvdWdodC81NAp3cnVuZy80CndyeS81NDFZCndyeWVyLzUKd3J5ZXN0LzUKd3J5bmVzcy8xTQp3dC8rOAp3dW5kZXJraW5kLzFTCnd1cnN0LzFTTQp3dXNzLzE0TVMKd3Vzc3kvNTFSU01UCngvNTcKeGNpCnhjaWkKeGNpdgp4Y2l4CnhjdmkKeGN2aWkKeGVub24vMU0KeGVub3Bob2JlLzFNUwp4ZW5vcGhvYmlhLzFNCnhlbm9waG9iaWMvNTEKeGVyb2dyYXBoaWMvNQp4ZXJvZ3JhcGh5LzFNCnhlcm94LzE0TURTRwp4aS8xU00KeGlpLwp4aWlpCnhpdgp4aXgKeG9yLzE3CnhyZWYvUwp4dGVybS9NCnh2Cnh2aQp4dmlpCnh2aWlpCnh4Cnh4aQp4eGlpCnh4aWlpCnh4aXYKeHhpeAp4eHYKeHh2aQp4eHZpaQp4eHZpaWkKeHh4LzEKeHh4aQp4eHhpaQp4eHhpaWkKeHh4aXYKeHh4aXgKeHh4dgp4eHh2aQp4eHh2aWkKeHh4dmlpaQp4eWxlbS8xTQp4eWxlbmUvMQp4eWxvcGhvbmUvMTRTTQp4eWxvcGhvbmlzdC8xTVMKeSdhbGwvODQKeS8xRgp5YS84MQp5YWNodC8xNFNNREcKeWFjaHRpbmcvNDFNCnlhY2h0c21hbi8xTQp5YWNodHNtZW4vMQp5YWNodHN3b21hbi8xTQp5YWNodHN3b21lbi8xCnlhaG9vLzE0U00KeWFrLzE0U00KeWFra2VkLzQKeWFra2luZy80CnlhbS8xNFNNCnlhbW1lci80MVNaR01EUgp5YW1tZXJlci8xTQp5YW5nLzE0TQp5YW5rLzE0TURTRwp5YXAvMTRTTQp5YXBwZWQvNDUKeWFwcGluZy80MQp5YXJkLzE0TVMKeWFyZGFnZS8xTVMKeWFyZGFybS8xTVMKeWFyZG1hbi8xTQp5YXJkbWFzdGVyLzFNUwp5YXJkbWVuLzEKeWFyZHN0aWNrLzFNUwp5YXJtdWxrZS8xU00KeWFybi8xNE1TCnlhcnJvdy8xTQp5YXNobWFrLzFTCnlhdy8xNFNHTUQKeWF3bC8xNE1TCnlhd24vNDFNRFJTWkcKeWF3bmVyLzFNCnlhd3MvMTRNCnlkLzEKeWUvOC0xUlNUCnllYS83MVNNCnllYWgvMU0KeWVhaHMvMQp5ZWFyLzFNWVN+CnllYXJib29rLzFNUwp5ZWFybGluZy8xTVMKeWVhcmxvbmcvNQp5ZWFybHkvNTFTTQp5ZWFybi80MUdTSkQKeWVhcm5pbmcvMTRNCnllYXN0LzE0U00KeWVhc3R5LzVSVAp5ZWdnLzE0TVMKeWVsbC80MTVNRFNHCnllbGxvdy81MTRNRFJUR1BTCnllbGxvd2hhbW1lci8xUwp5ZWxsb3dpc2gvNQp5ZWxsb3duZXNzLzFNCnllbGxvd3kvNQp5ZWxwLzE0TURTRwp5ZW4vMTRTTQp5ZW9tYW4vMU0KeWVvbWFucnkvMU0KeWVvbWVuLzEKeWVwLzFTTQp5ZXMvMTRNUwp5ZXNoaXZhLzFTTQp5ZXNzZWQvNAp5ZXNzaW5nLzQKeWVzdGVyZGF5LzFNUwp5ZXN0ZXJ5ZWFyLzFNCnlldC83NDEKeWV0aS8xTVMKeWV3LzE1OFNNCnlpZC8xUwp5aWVsZC80MUpTR01ECnlpa2VzLwp5aW4vMU0KeWlwLzE0U00KeWlwZS8KeWlwcGVkLzQKeWlwcGVlLwp5aXBwaW5nLzQxCnlvLzgxNAp5b2IvMVMKeW9iYm8vMVMKeW9kZWwvNDFTTURSWkcKeW9kZWxlci8xTQp5b2dhLzFNCnlvZ2kvMTRNUwp5b2dpYy81CnlvZ3VydC8xU00KeW9rZSdzCnlva2UvMTRVR0RTCnlva2VsLzFTTQp5b2xrLzE0TURTCnlvbi84CnlvbmRlci81MQp5b25rcy8xCnlvcmUvMU0KeW91J2QvCnlvdSdsbC8KeW91J3JlLwp5b3UndmUvCnlvdS84U01Ifgp5b3VuZy81MTRUTVIKeW91bmdpc2gvNQp5b3VuZ3N0ZXIvMU1TCnlvdXIvU34KeW91cnNlbGYvOAp5b3Vyc2VsdmVzLzgKeW91dGgvMU0KeW91dGhmdWwvNVlQCnlvdXRoZnVsbmVzcy8xTQp5b3V0aHMvMQp5b3cvMQp5b3dsLzE0TURTRwp5ci8xUwp5dHRlcmJpdW0vMU0KeXR0cml1bS8xTQp5dWFuLzFNCnl1Y2NhLzFTTQp5dWNrLzE0Cnl1Y2t5LzVUUgp5dWsvMTRTTQp5dWtrZWQvNAp5dWtraW5nLzQKeXVra3kvNQp5dWxlLzFNCnl1bGV0aWRlLzFNCnl1bS81Mgp5dW1teS81MVRSCnl1cC8xU00KeXVwcGllLzFNUwp5dXBwaWZ5LzRHRFMKeXVydC8xTVMKei9ETlhUR0oKemFuaW5lc3MvMU0KemFueS81MTRSU01QVAp6YXAvMTRTTQp6YXBwZWQvNAp6YXBwZXIvMU1TCnphcHBpbmcvNDEKemFwcHkvNQp6ZWFsLzFNCnplYWxvdC8xTVMKemVhbG90cnkvMU0KemVhbG91cy81WVAKemVhbG91c25lc3MvMU0KemVicmEvMVNNCnplYnUvMU1TCnplZC8xNFNNCnplaXRnZWlzdC8xU00KemVuaXRoLzFNCnplbml0aHMvMQp6ZW5uZWQKemVvbGl0ZS8xUwp6ZXBoeXIvMTRNUwp6ZXBwZWxpbi8xTVMKemVyby8xNTRNREhTRwp6ZXJvZXMvMTQKemVzdC8xNE1TCnplc3RmdWwvNVlQCnplc3RmdWxuZXNzLzFNCnplc3R5LzVSVAp6ZXRhLzFNUwp6aWd6YWcvMTU0U00KemlnemFnZ2VkLzQKemlnemFnZ2luZy80NTEKemlsY2gvMTU0TQp6aWxsaW9uLzFNUwp6aW5jLzE0TVMKemluY2tlZC80CnppbmNraW5nLzQKemluZS8xUwp6aW5mYW5kZWwvMU0KemluZy8xNE1EUlpHCnppbmdlci8xTQp6aW5neS81UlQKemlubmlhLzFNUwp6aXAncwp6aXAvMTRVUwp6aXBwZWQvNDVVCnppcHBlci8xNE1ER1MKemlwcGluZy80VQp6aXBweS81VFIKemlyY29uLzFNUwp6aXJjb25pdW0vMU0Keml0LzFTTQp6aXRoZXIvMTRNUwp6bG90eS8xU00KemxvdHlzLzEKem9kaWFjLzFNUwp6b2RpYWNhbC81CnpvbWJpZS8xTVMKem9uYWwvNVkKem9uZSdzCnpvbmUvMTRBR0RTCnpvbmluZy80MU0Kem9ua2VkLzUKem9vLzFTTQp6b29rZWVwZXIvMVNNCnpvb2xvZ2ljYWwvNVkKem9vbG9naXN0LzFTTQp6b29sb2d5LzFNCnpvb20vMTRNRFNHCnpvb3BoeXRlLzFTTQp6b29waHl0aWMvNQp6b29wbGFua3Rvbi8xCnpvcmNoLzQxCnpvc3Rlci8xCnpvdW5kcy8KenVjY2hpbmkvMU1TCnp3aWViYWNrLzFNCnp5ZGVjby8xTQp6eWdvdGUvMVNNCnp5Z290aWMvNQp6eW11cmd5LzFNClN0YWNrT3ZlcmZsb3cvTQpDb21tb25NYXJrL00KbGV4LzQxRApMZXZlbnNodGVpbi9NClFVRVJUWS9TTQpTSU1ELzFTTQpDKysvMlNNCkphdmFTY3JpcHQvMjFTTQpUT0RPClRvZG8KcmF5dHJhY2VyLzEKdmlld3BvcnQvMTRTTQpiYWNrZW5kLzFTTQpmcm9udGVuZC8xU00KYXV0b21hdGEvMVNNCkdyYW1tYXJseS9NClJheXRoZW9uLzJNCkxhbmd1YWdlVG9vbC9NCldlYkFzc2VtYmx5L00KTmVvdmltL00KcXVhcnRpbGUvMVMKYXV0b2NvbXBsZXRlLzQxTVMKR1BVLzEyUwpjb2RlYmFzZS8xUwpMSURBUi8xCkxpREFSLzEKTEFEQVIKVE9ETwpzdHJ1Y3QvMQpXQVNNL00KaGFja2F0aG9uLzFTTQpwc2V1ZG9jb2RlLzFNRwpaZXR0ZWxrYXN0ZW4vMU0KT0F1dGgvTQpNYWNPUy9NClNWRy8yMXMKVVJJLzFzCnN1cHJhY2hpYXNtYXRpYy81CmNhbm5hYmlub2lkcy8xCmV1ZGFpbW9uaWEvMU0Kd2hpdGVzcGFjZS8xU00KSmF2YURvYy9TTQplLmcuLzEKaS5lLi8KcHJlLysxNApKU09OLzJNClVSSS8xU00KTFNQLzFNUwpOLlMuQS4vMlNNCmxpbnRlci8xU00KVE9NTC8yTQpBbWJpZW4vMVNNCmNvbmZpZy8xNFNNCnJveWFsZS8xNVNNCkthbkJhbi9NMQpQYW5kb2MvTTEKU2lveWVrL00xCkZpcmVzdG9yZS9NCnN1YnN0cmluZy8xNFNNClJvc2VudGhhbC8yU00KQUNNLzFNCnNjYXR0ZXJwbG90LzE0U01HCldpa2lsaW5rL01TMQpzdGFja3RyYWNlL1NNMQpzY3JvbGxiYXIvMVNNCnN3ZWV0Z3Jhc3MvMVNNClBvd2VyU2hlbGwvU00KV2ViU29ja2V0L1NNCkJsYXN0ZXJIYWNrcy9TTQpHb2xlbWFuL1NNCkthaG5lbWFuL1NNCkdyYXBodml6L1NNClBUU0QvMVNNCkFua2VyL1NNCndpa2lsaW5rLzFTTQpsYWJyaW9sYS9TTQpzaW95ZWsvU00KcGFuZG9jL1NNCk1pbmhhai8yU00KVmFhZGluL1NNCkNJLzFTTQphcmNoeXRhcy9TTQpRaW4vMlNNCm9jY2lwaXRhbC81MVNNCm9uYm9hcmRpbmcvMTRTTQp3ZWJwYWdlLzFTTQpIb2xtZGVsL1NNCkdyYW5kZXkvU00KRm9kZHkvU00KSGFzYW4vMlNNClNoYXJtYW4vMlNNCkxhYnJpb2xhLzJTTQpUQ1AvNTJTTQpVRFAvMTJTTQpRVUlDLzJTTQpuYcOvdmUvNTEKR2l0TGFiL1NNCkdtYWlsLzIxNFNNCkdvbGFuZy9TTQpHcmFmYW5hL1NNCkhpZXJhL1NNCkt1YmVybmV0ZXMvMlNNCk8nUmVpbGx5LzJTTQpPcGVuUEdQL1NNClN0YWNrRXhjaGFuZ2UvU00KU3lzdGVtZC9TTQpQcm9tUUwvU00KQWxleGFuZHJlLzJTTQpZdWJpS2V5L1NNClRyb2NsYS9TTQpHYW5ldGkvU00KVlBOLzFTTQpTTEEvMVNNCkNSTS8xMlNNCklQdjQvMlNNCllBTUwvMlNNCklNQVAvMlNNCldBTC8yMVNNCkRTTC8xU00KTFRTLzFTTQpMVk0vU00KTExWTS8xU00KUElJLzFTTQpGSURPLzEyU00KUEtDUy9TTQpES0lNLzFTTQpGUE0vU00KTVRBLzFTTQpKb29tbGEvU00KTXVuaW4vU00KT3Blbk1ldHJpY3MvU00KUG9zdGZpeC9TTQpiYWNrcG9ydC80MURHU00KUml2aWFuL1NNCkxFR08vMVNNCkthZ2kvU00KbWFjT1MvMlNNClZTQ29kZS9TTQpUcnVlTkFTL1NNCk5ZVGltZXMvU00KR2F0ZXJvbi9TTQpDaGFuZ2Vsb2cvU00KV2lyZWd1YXJkL1NNCkNSRFQvMVNNCkROUy8yU00KU0RLLzFTTQpQV0EvMjFTTQpGUEdBLzFTTQpSUEMvMjFTTQpnUlBDLzJTTQptaWNyb2Jpb21lLzFTTQptaWNyb3NlcnZpY2UvMVNNCmNvbnRyYXBvc2l0aXZlLzFTTQphdWRpb2Jvb2svMVNNCnNudWNrLzQKUGFydGgvU00KQXV0b21hdHRpYy9TTQpKYWNvY28vU00KSW50ZWxsaUovU00KQXJjaHl0YXMvU00KQ29ycmV0dG8vU00KTmlrb2xheS9TTQpCYWNoaXlza2kvU00KQXV0b21hdHRpY2lhbi9TTQpFbGFzdGljU2VhcmNoL1NNCkxvZ290aGVyYXB5L1NNClRlY2hDcnVuY2gvU00KZmlsZXN5c3RlbS9TTQpyZWltYWdpbmUKcGVyZm9ybWFudApKVk0vU00KTlBNL1NNClZpdGUvU00KRGV2T3BzL1NNClZpa3Rvci9TTQpGcmFua2wvU00KVGlrVG9rL1NNCk1hcmNodXMvU00KTW9ja2l0by9TTQpKYXZhZG9jL1NNCkpTRG9jL1NNCm1vbm9yZXBvL1NNCmJhbGFuY2VyL1NNCkdyYWRsZS9TTQpzdGFuZHVwL1NNCmdseW1waC9TTQpTbmFwY2hhdC9TTQptaWRkbGV3YXJlL1NNCk9wZW5TZWFyY2gvU00KT3BlbkdML1NNCldlYkdQVS9TTQpiYWNrZmlsbC9TTQpkb3duc2FtcGxlL1NNRwp1bmNoZWNrL1NNCnVwc2FtcGxlL1NNRwpvcmdhbm9pZC9TTQpjZW50cmljL1NNCkhhcnBlci9TTQphOGMvU00KYTExbi8xCmExMnMvOQppbnRlcmdlbmVyYXRpb25hbApldGMuCnZzLgpldCBhbC4KTGFyYXZlbC9NClR5cHN0L1NNCkx1YS9TTQpDTWFrZS9TTQpEQk1TLzEyU00KUkRCTVMvMTJTTQpXaGF0c0FwcC8xMjRNRwpWQVJDSEFSLzFNUwpEQVRFVElNRS8xTVMKaGFyZGNvZGUvNEdEUwpzdWJxdWVyeS8xNFNHRApDVEUvMVMKdW5uZXN0LzRTR0QKT1JNLzEyUwpOb1NRTC8xCkhRTC8xCkNRTC8xCktTUUwvMQpQUlFMLzEKTWFwUmVkdWNlLzEKU1FMQWxjaGVteS8xCnsKICAiYWZmaXhlcyI6IHsKICAgICJLIjogewogICAgICAic3VmZml4IjogZmFsc2UsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogInBybyIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIi4iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJMIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAibWVudCIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIi4iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJFIjogewogICAgICAic3VmZml4IjogZmFsc2UsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImRpcyIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIi4iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJZIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAibHkiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICIuIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiVSI6IHsKICAgICAgInN1ZmZpeCI6IGZhbHNlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJ1biIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIi4iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJIIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiBmYWxzZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogInkiLAogICAgICAgICAgImFkZCI6ICJpZXRoIiwKICAgICAgICAgICJjb25kaXRpb24iOiAieSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAidGgiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXnldIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiVCI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogZmFsc2UsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJzdCIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogInkiLAogICAgICAgICAgImFkZCI6ICJpZXN0IiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15hZWlvdV15IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJlc3QiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbYWVpb3VdeSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiZXN0IiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15leV0iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJSIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiciIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogInkiLAogICAgICAgICAgImFkZCI6ICJpZXIiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmFlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVyIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW2FlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVyIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15leV0iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJDIjogewogICAgICAic3VmZml4IjogZmFsc2UsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImRlIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiLiIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIlYiOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IGZhbHNlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiZSIsCiAgICAgICAgICAiYWRkIjogIml2ZSIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogIml2ZSIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIlteZV0iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJOIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiZSIsCiAgICAgICAgICAiYWRkIjogImlvbiIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogInkiLAogICAgICAgICAgImFkZCI6ICJpY2F0aW9uIiwKICAgICAgICAgICJjb25kaXRpb24iOiAieSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiZW4iLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmV5XSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIkEiOiB7CiAgICAgICJzdWZmaXgiOiBmYWxzZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAicmUiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICIuIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiWiI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogInJzIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAieSIsCiAgICAgICAgICAiYWRkIjogImllcnMiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmFlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVycyIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIlthZWlvdV15IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJlcnMiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmV5XSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIlAiOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJ5IiwKICAgICAgICAgICJhZGQiOiAiaW5lc3MiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmFlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogIm5lc3MiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbYWVpb3VdeSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAibmVzcyIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIlteeV0iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJNIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiJ3MiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICIuIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7CiAgICAgICAgIm5vdW4iOiB7CiAgICAgICAgICAiaXNfcG9zc2Vzc2l2ZSI6IHRydWUKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAibm91biI6IHt9CiAgICAgIH0KICAgIH0sCiAgICAiRiI6IHsKICAgICAgInN1ZmZpeCI6IGZhbHNlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJjb24iLAogICAgICAgICAgImNvbmRpdGlvbiI6ICIuIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiQiI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFsKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImFibGUiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmFlaW91XSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiYWJsZSIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImVlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJlIiwKICAgICAgICAgICJhZGQiOiAiYWJsZSIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIlteYWVpb3VdZSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIlMiOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJ5IiwKICAgICAgICAgICJhZGQiOiAiaWVzIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15hZWlvdV15IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJzIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW2FlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVzIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW3N4emhdIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJzIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15zeHpoeV0iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHsKICAgICAgICAibm91biI6IHsKICAgICAgICAgICJpc19wbHVyYWwiOiB0cnVlCiAgICAgICAgfQogICAgICB9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJEIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiZCIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogInkiLAogICAgICAgICAgImFkZCI6ICJpZWQiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmFlaW91XXkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVkIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15leV0iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImVkIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW2FlaW91XXkiCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHsKICAgICAgICAia2luZCI6IHsKICAgICAgICAgICJraW5kIjogIkFkamVjdGl2ZSIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIkciOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJlIiwKICAgICAgICAgICJhZGQiOiAiaW5nIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiIiwKICAgICAgICAgICJhZGQiOiAiaW5nIiwKICAgICAgICAgICJjb25kaXRpb24iOiAiW15lXSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjogewogICAgICAgICJ2ZXJiIjoge30sCiAgICAgICAgIm5vdW4iOiBudWxsCiAgICAgIH0sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIlEiOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJhbGx5IiwKICAgICAgICAgICJjb25kaXRpb24iOiAiLiIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIk8iOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJmdWwiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICIuIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiSSI6IHsKICAgICAgInN1ZmZpeCI6IGZhbHNlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJpbiIsCiAgICAgICAgICAiY29uZGl0aW9uIjogIi4iCiAgICAgICAgfQogICAgICBdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7fQogICAgfSwKICAgICJYIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICJyZW1vdmUiOiAiZSIsCiAgICAgICAgICAiYWRkIjogImlvbnMiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJ5IiwKICAgICAgICAgICJhZGQiOiAiaWNhdGlvbnMiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJ5IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICIiLAogICAgICAgICAgImFkZCI6ICJlbnMiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmV5XSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHt9CiAgICB9LAogICAgIkoiOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbCiAgICAgICAgewogICAgICAgICAgInJlbW92ZSI6ICJlIiwKICAgICAgICAgICJhZGQiOiAiaW5ncyIsCiAgICAgICAgICAiY29uZGl0aW9uIjogImUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAicmVtb3ZlIjogIiIsCiAgICAgICAgICAiYWRkIjogImluZ3MiLAogICAgICAgICAgImNvbmRpdGlvbiI6ICJbXmVdIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjoge30KICAgIH0sCiAgICAiMSI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7CiAgICAgICAgIm5vdW4iOiB7CiAgICAgICAgICAiaXNfcGx1cmFsIjogZmFsc2UKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiMiI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7CiAgICAgICAgIm5vdW4iOiB7CiAgICAgICAgICAiaXNfcHJvcGVyIjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICIzIjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogW10sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAidmVyYiI6IHsKICAgICAgICAgICJpc19saW5raW5nIjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICI0IjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogW10sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAidmVyYiI6IHt9CiAgICAgIH0KICAgIH0sCiAgICAiNSI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7CiAgICAgICAgImFkamVjdGl2ZSI6IHt9CiAgICAgIH0KICAgIH0sCiAgICAiNiI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHsKICAgICAgICAic3dlYXIiOiB0cnVlCiAgICAgIH0sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAic3dlYXIiOiB0cnVlCiAgICAgIH0KICAgIH0sCiAgICAiNyI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7CiAgICAgICAgImNvbmp1bmN0aW9uIjoge30KICAgICAgfQogICAgfSwKICAgICI4IjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogW10sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAibm91biI6IHsKICAgICAgICAgICJpc19wcm9ub3VuIjogdHJ1ZQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICI5IjogewogICAgICAic3VmZml4IjogdHJ1ZSwKICAgICAgImNyb3NzX3Byb2R1Y3QiOiB0cnVlLAogICAgICAicmVwbGFjZW1lbnRzIjogW10sCiAgICAgICJhZGRzX21ldGFkYXRhIjoge30sCiAgICAgICJnaWZ0c19tZXRhZGF0YSI6IHsKICAgICAgICAibm91biI6IHsKICAgICAgICAgICJpc19wbHVyYWwiOiB0cnVlCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIn4iOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjogewogICAgICAgICJjb21tb24iOiB0cnVlCiAgICAgIH0KICAgIH0sCiAgICAiKyI6IHsKICAgICAgInN1ZmZpeCI6IHRydWUsCiAgICAgICJjcm9zc19wcm9kdWN0IjogdHJ1ZSwKICAgICAgInJlcGxhY2VtZW50cyI6IFtdLAogICAgICAiYWRkc19tZXRhZGF0YSI6IHt9LAogICAgICAiZ2lmdHNfbWV0YWRhdGEiOiB7CiAgICAgICAgInByZXBvc2l0aW9uIjogdHJ1ZQogICAgICB9CiAgICB9LAogICAgIi0iOiB7CiAgICAgICJzdWZmaXgiOiB0cnVlLAogICAgICAiY3Jvc3NfcHJvZHVjdCI6IHRydWUsCiAgICAgICJyZXBsYWNlbWVudHMiOiBbXSwKICAgICAgImFkZHNfbWV0YWRhdGEiOiB7fSwKICAgICAgImdpZnRzX21ldGFkYXRhIjogewogICAgICAgICJhcnRpY2xlIjogdHJ1ZQogICAgICB9CiAgICB9CiAgfQp9CkFsbCBleHByZXNzaW9ucyBpbiB0aGUgYnVpbHQtaW4gYXR0cmlidXRlIGxpc3Qgc2hvdWxkIGJlIHZhbGlkLmhhcnBlci1jb3JlL3NyYy9zcGVsbC9odW5zcGVsbC9tb2QucnMAulIaACUAAAAaAAAACgAAAPQAAAAEAAAABAAAACgAAABUaGUgYnVpbHQtaW4gYWZmaXggbGlzdCBzaG91bGQgYWx3YXlzIGJlIHZhbGlkLgC6UhoAJQAAABYAAAAOAAAAaGFycGVyLWNvcmUvc3JjL3NwZWxsL21vZC5yc0BTGgAcAAAAIQAAAC0AAABAUxoAHAAAACkAAAAgAAAAQFMaABwAAAAqAAAAIAAAAEBTGgAcAAAAKgAAABMAAABAUxoAHAAAACcAAAAgAAAAQFMaABwAAABDAAAADwAAAGhhcnBlci1jb3JlL3NyYy90aXRsZV9jYXNlLnJzAAAAvFMaAB0AAAA1AAAAMQAAALxTGgAdAAAALAAAABcAAAC8UxoAHQAAAC8AAAAhAAAAaGFycGVyLWNvcmUvc3JjL3Rva2VuLnJzDFQaABgAAACuAAAAGAAAAFNob3VsZCBiZSB1bnJlYWNoYWJsZS4AADRUGgAWAAAADFQaABgAAACwAAAAEQAAAAxUGgAYAAAAvwAAACQAAAAMVBoAGAAAAMQAAAAlAAAADFQaABgAAADXAAAAJAAAAAxUGgAYAAAA3AAAACUAAAAMVBoAGAAAAO8AAAAkAAAADFQaABgAAAD0AAAAJQAAAGhhcnBlci1jb3JlL3NyYy9saWIucnMAAMRUGgAWAAAAPgAAABwAAAB2YXJpYW50IGlkZW50aWZpZXJzdHJ1Y3QgSWdub3JlZExpbnRzc3RydWN0IExpbnRzdHJ1Y3QgTGludEdyb3VwQ29uZmlndHVybiBpdCBvZmYAAAD1AAAAGAAAAAQAAAD2AAAAaGFycGVyLWNvcmUvc3JjL2xpbnRpbmcvcGhyYXNlX2NvcnJlY3Rpb25zLnJzAAAAUFUaAC0AAABGAAAAAQAAAERpZCB5b3UgbWVhbiB0aGUgcGhyYXNlIGB0dXJuIGl0IG9mZmA/aHVtYW4gbGlmZVBVGgAtAAAARwAAAAEAAABEaWQgeW91IG1lYW4gdGhlIHBocmFzZSBgaHVtYW4gbGlmZWA/AAAAUFUaAC0AAABIAAAAAQAAAERpZCB5b3UgbWVhbiB0aGUgcGhyYXNlIGB0aGF0IGNoYWxsZW5nZWRgP25vIGxvbmdlcgBQVRoALQAAAEkAAAABAAAARGlkIHlvdSBtZWFuIHRoZSBwaHJhc2UgYG5vIGxvbmdlcmA/bmVlZCBoZWxwAAAAUFUaAC0AAABKAAAAAQAAAERpZCB5b3UgbWVhbiB0aGUgcGhyYXNlIGBuZWVkIGhlbHBgP2FuZCB0aGlzUFUaAC0AAABLAAAAAQAAAERpZCB5b3UgbWVhbiB0aGUgcGhyYXNlIGBhbmQgdGhpc2A/bWFrZSBhIGRlY2lzaW9uAABQVRoALQAAAEwAAAABAAAARGlkIHlvdSBtZWFuIHRoZSBwaHJhc2UgYG1ha2UgYSBkZWNpc2lvbmA/b2YgY291cnNlAFBVGgAtAAAATQAAAAEAAABEaWQgeW91IG1lYW4gdGhlIHBocmFzZSBgb2YgY291cnNlYD9Tb3V0aE5vcnRoQW1lcmljYQAAAPcAAAAMAAAABAAAAPgAAABoYXJwZXItY29yZS9zcmMvbGludGluZy9wcm9wZXJfbm91bl9jYXBpdGFsaXphdGlvbl9saW50ZXJzLnJzAAAAmFcaAD0AAAA+AAAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIHRoZSBjb250aW5lbnRzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLktvcmVhmFcaAD0AAABHAAAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIHRoZSBuYXRpb25zLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLkNoaW5lc2VDb21tdW5pc3RQYXJ0eQAAAJhXGgA9AAAAUAAAAAEAAABXaGVuIHJlZmVycmluZyB0byB0aGUgcG9saXRpY2FsIHBhcnR5LCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBhIHByb3BlciBub3VuLlVuaXRlZE5hdGlvbnNTdGF0ZXNLaW5nZG9tQWlybGluZXNBcmFiRW1pcmF0ZXMAAJhXGgA9AAAAWgAAAAEAAABXaGVuIHJlZmVycmluZyB0byBuYXRpb25hbCBvciBpbnRlcm5hdGlvbmFsIG9yZ2FuaXphdGlvbnMsIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIGEgcHJvcGVyIG5vdW4uQWJzb2x1dGlvbkFkbWlzc2lvbkFsYXNrYUFuemFjQU5aQUNBcmJvckFybWlzdGljZUFzY2Vuc2lvbkF1c3RyYWxpYUF5dXJ2ZWRhQmFzdGlsbGVCb25pZmFjaW9Cb3hpbmdDYW5hZGFDYXJlZXJDaGV3aWRkZW5DaHJpc3RtYXNDbGFzc0NvbHVtYnVzQ29tbW9ud2VhbHRoRERhcndpbkRpc2NvdmVyeURpc3RhZmZEb21pbmlvbkVhcnRoRWFzdGVyRWxlY3Rpb25FbWFuY2lwYXRpb25FbXBpcmVFdm9sdXRpb25GYW1pbHlGYXRoZXInc0ZhdGhlcnMnRmxhZ0ZvcmVmYXRoZXJzJ0ZvdW5kYXRpb25GcmVlZG9tR2FsZW50aW5lJ3NHcm91bmRob2dHeXBzeUhhbGxvd2VlbkluZGVwZW5kZW5jZUludmFzaW9uSXZ5SmFtaHVyaUp1YmlsZWVLYW1laGFtZWhhS2VueWF0dGFMYWJvckxhYm91ckxhZHlMYW5kTGVpTWFkYXJha2FNYXNodWphYU1heU1lbW9yaWFsTWVyZGVrYU1pZHN1bW1lck1pZHN1bW1lcidzTW90aGVyJ3NNb3RoZXJzJ05ha2JhTmV2YWRhT2NjdXBhdGlvblBhcmVudHNQYXRyaWNrJ3NQYXRyaW90cydQaVBpY3JvdXNQaW9uZWVyUHJlc2lkZW50cydSZW1lbWJyYW5jZVJlcHVibGljUmVzdG9yYXRpb25SaXphbFJvY1JvY2tTZXdhcmQnc1NpbmdsZXMnU3RhdGVob29kVGF4VGhhbmtzZ2l2aW5nVHJlYXNvblVsc3RlclZhbGVudGluZSdzVkVWSlZQVmV0ZXJhbnNWaWN0b3JpYVZpY3RvcnlXYWZmbGVXYWl0YW5naVdhdHRsZVdoaXRlV3JlblllYXJzWWVhcidzWW91dGgArFkaAAoAAAC2WRoACQAAAL9ZGgAGAAAAxVkaAAUAAADKWRoABQAAAM9ZGgAFAAAA1FkaAAkAAADdWRoACQAAAOZZGgAJAAAA71kaAAgAAAD3WRoACAAAAP9ZGgAJAAAACFoaAAYAAAAOWhoABgAAABRaGgAGAAAAGloaAAkAAAAjWhoACQAAACxaGgAFAAAAMVoaAAgAAAA5WhoADAAAAEVaGgABAAAARloaAAYAAABMWhoACQAAAFVaGgAHAAAAXFoaAAgAAABkWhoABQAAAGlaGgAGAAAAb1oaAAgAAAB3WhoADAAAAINaGgAGAAAAiVoaAAkAAACSWhoABgAAAJhaGgAIAAAAoFoaAAgAAACoWhoABAAAAKxaGgAMAAAAuFoaAAoAAADCWhoABwAAAMlaGgALAAAA1FoaAAkAAADdWhoABQAAAOJaGgAJAAAA61oaAAwAAAD3WhoACAAAAP9aGgADAAAAAlsaAAcAAAAJWxoABwAAABBbGgAKAAAAGlsaAAgAAAAiWxoABQAAACdbGgAGAAAALVsaAAQAAAAxWxoABAAAADVbGgADAAAAOFsaAAgAAABAWxoACAAAAEhbGgADAAAAS1saAAgAAABTWxoABwAAAFpbGgAJAAAAY1saAAsAAABuWxoACAAAAHZbGgAIAAAAflsaAAUAAACDWxoABgAAAIlbGgAKAAAAk1saAAcAAACaWxoACQAAAKNbGgAJAAAArFsaAAIAAACuWxoABwAAALVbGgAHAAAAvFsaAAsAAADHWxoACwAAANJbGgAIAAAA2lsaAAsAAADlWxoABQAAAOpbGgADAAAA7VsaAAQAAADxWxoACAAAAPlbGgAIAAAAAVwaAAkAAAAKXBoAAwAAAA1cGgAMAAAAGVwaAAcAAAAgXBoABgAAACZcGgALAAAAMVwaAAIAAAAzXBoAAgAAADVcGgACAAAAN1waAAgAAAA/XBoACAAAAEdcGgAHAAAATlwaAAYAAABUXBoACAAAAFxcGgAGAAAAYlwaAAUAAABnXBoABAAAAGtcGgAFAAAAcFwaAAYAAAB2XBoABQAAAE5hdGlvbmFsQWxsU2FpbnRzU291bHNEYXlCbGFja0ZyaWRheUN5YmVyTW9uZGF5AJhXGgA9AAAAbgAAAAEAAABXaGVuIHJlZmVycmluZyB0byBob2xpZGF5cywgbWFrZSBzdXJlIHRvIHRyZWF0IHRoZW0gYXMgYSBwcm9wZXIgbm91bi5BbWF6b25TaG9wcGluZ1dlYlNlcnZpY2VzTGFtYmRhUkRTRHluYW1vREJTYWdlTWFrZXJSZWtvZ25pdGlvbkNsb3VkRnJvbnRFQ1NFS1NDbG91ZFdhdGNoSUFNUHJpbWVLaW5kbGUAmFcaAD0AAAABAQAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIHRoZSB2YXJpb3VzIHByb2R1Y3RzIG9mIEFtYXpvbi5jb20sIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIGEgcHJvcGVyIG5vdW4uR29vZ2xlU2VhcmNoQ2xvdWRNYXBzRG9jc1NoZWV0c1NsaWRlc0RyaXZlTWVldEdtYWlsQ2FsZW5kYXJDaHJvbWVDaHJvbWVPU0FuZHJvaWRQbGF5QmFyZEdlbWluaVlvdVR1YmVQaG90b3NBbmFseXRpY3NBZFNlbnNlUGl4ZWxOZXN0V29ya3NwYWNlmFcaAD0AAABFAQAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIEdvb2dsZSBwcm9kdWN0cyBhbmQgc2VydmljZXMsIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIHByb3BlciBub3Vucy5BenVyZURldk9wc0Z1bmN0aW9uc0Nvc21vc0RCU1FMRGF0YWJhc2VLdWJlcm5ldGVzU2VydmljZVZpcnR1YWxNYWNoaW5lc01vbml0b3JTdG9yYWdlQWN0aXZlRGlyZWN0b3J5QXBwS2V5VmF1bHRDb2duaXRpdmVCdXNFdmVudEh1YgCYVxoAPQAAAGYBAAABAAAAV2hlbiByZWZlcnJpbmcgdG8gQXp1cmUgY2xvdWQgc2VydmljZXMsIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIHByb3BlciBub3Vucy5NaWNyb3NvZnRXaW5kb3dzT2ZmaWNlVGVhbXNFeGNlbFBvd2VyUG9pbnRXb3JkT3V0bG9va09uZURyaXZlU2hhcmVQb2ludFhib3hTdXJmYWNlRWRnZUJpbmdEeW5hbWljc1Zpc3VhbFN0dWRpbwAAmFcaAD0AAACwAQAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIE1pY3Jvc29mdCBwcm9kdWN0cyBhbmQgc2VydmljZXMsIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIHByb3BlciBub3Vucy5BcHBsZWlQaG9uZWlQYWRpTWFjTWFjQm9va1dhdGNoVFZNdXNpY0FyY2FkZWlDbG91ZFNhZmFyaUhvbWVLaXRDYXJQbGF5UHJvQWlyTWFjTWluaUFpclBvZHNNYXhWaXNpb24AAJhXGgA9AAAA0AEAAAEAAABXaGVuIHJlZmVycmluZyB0byBBcHBsZSBwcm9kdWN0cyBhbmQgc2VydmljZXMsIG1ha2Ugc3VyZSB0byB0cmVhdCB0aGVtIGFzIHByb3BlciBub3Vucy5NZXRhT2N1bHVzUG9ydGFsc1F1ZXN0R2FtaW5nSG9yaXpvblJlYWxpdHlMYWJzAAAAmFcaAD0AAAD7AQAAAQAAAFdoZW4gcmVmZXJyaW5nIHRvIE1ldGEgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLCBtYWtlIHN1cmUgdG8gdHJlYXQgdGhlbSBhcyBwcm9wZXIgbm91bnMuAEGgyukACxUBAAAA+QAAAHiLEAAsAAAARQAAAAUAQcDK6QALFQEAAAD6AAAAeIsQACwAAABGAAAABQBB4MrpAAsVAQAAAPsAAAB4ixAALAAAAEcAAAAFAEGAy+kACxUBAAAA/AAAAHiLEAAsAAAASQAAAAUAQaDL6QALFQEAAAD9AAAAeIsQACwAAABKAAAABQBBwMvpAAsVAQAAAP4AAAB4ixAALAAAAEwAAAAFAEHgy+kACxUBAAAA/wAAAHiLEAAsAAAATQAAAAUAQYDM6QALFQEAAAAAAQAAeIsQACwAAABRAAAABQBBoMzpAAsGAQAAAAABAEGwzOkACyUBAAAAAQEAAHiLEAAsAAAAUgAAAAUAAAB4ixAALAAAAFMAAAAFAEHgzOkAC+kNAQAAAAIBAABzdHJ1Y3QgU3Bhbi9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2xhenlfc3RhdGljLTEuNS4wL3NyYy9pbmxpbmVfbGF6eS5ycwAAAHNmGgBmAAAAHgAAABAAAAByZW1vdmVhZGRjb25kaXRpb25zdHJ1Y3QgSHVtYW5SZWFkYWJsZUFmZml4UmVwbGFjZW1lbnRzdHJ1Y3QgSHVtYW5SZWFkYWJsZUFmZml4UmVwbGFjZW1lbnQgd2l0aCAzIGVsZW1lbnRzAAAiZxoANAAAAAAAAAAIAAAABAAAAAkAAABhZmZpeGVzTWFsZm9ybWVkSXRlbUNvdW50TXVsdGlDaGFyYWN0ZXJGbGFnRXhwZWN0ZWRCb29sZWFuRXhwZWN0ZWRVbnNpZ25lZEludGVnZXJVbmV4cGVjdGVkRW5kT2ZMaW5lAAAAAAQAAAAEAAAAAwEAAE1hdGNoZXJzdWZmaXhjcm9zc19wcm9kdWN0cmVwbGFjZW1lbnRzYWRkc19tZXRhZGF0YWdpZnRzX21ldGFkYXRhc3RydWN0IEh1bWFuUmVhZGFibGVFeHBhbnNpb25zdHJ1Y3QgSHVtYW5SZWFkYWJsZUV4cGFuc2lvbiB3aXRoIDUgZWxlbWVudHMAQmgaAC0AAABVbm1hdGNoZWRCcmFja2V0aW5kZXhidXRmb3IA/XgQAAMAAACNaBoAAwAAAJBoGgADAAAAnH4QAAIAAACefhAAAwAAAAxUGgAYAAAAewAAAAUAAAAMVBoAGAAAAHwAAAAFAAAADFQaABgAAAB+AAAABQAAAAxUGgAYAAAAgQAAAAUAAAAMVBoAGAAAAIIAAAAFAAAADFQaABgAAACFAAAABQAAAAxUGgAYAAAAhgAAAAUAAABub3VudmVyYmFkamVjdGl2ZWFkdmVyYmNvbmp1bmN0aW9uc3dlYXJhcnRpY2xlcHJlcG9zaXRpb25jb21tb25zdHJ1Y3QgV29yZE1ldGFkYXRhc3RydWN0IFdvcmRNZXRhZGF0YSB3aXRoIDkgZWxlbWVudHMAAAB+aRoAIwAAAFBhc3RQcmVzZW50RnV0dXJlAAAArGkaAAQAAACwaRoABwAAALdpGgAGAAAAaXNfbGlua2luZ3RlbnNlc3RydWN0IFZlcmJEYXRhc3RydWN0IFZlcmJEYXRhIHdpdGggMiBlbGVtZW50cwAAAPZpGgAfAAAAaXNfcHJvcGVyaXNfcGx1cmFsaXNfcG9zc2Vzc2l2ZWlzX3Byb25vdW5zdHJ1Y3QgTm91bkRhdGFzdHJ1Y3QgTm91bkRhdGEgd2l0aCA0IGVsZW1lbnRzAFhqGgAfAAAAc3RydWN0IEFkamVjdGl2ZURhdGFzdHJ1Y3QgQWR2ZXJiRGF0YXN0cnVjdCBDb25qdW5jdGlvbkRhdGEAdAAAAHMAAABuAAAAcgAAAGgAAAB0AAAAZAAAAGQAAAAAAQIDAAAAAAAAAAAIAAAADgAAAAUAAAAKAAAACgAAAAsAAAALAAAACgAAAA0AAAB4dxAAgHcQAI53EACTdxAAnXcQAKd3EACydxAAvXcQAMd3EABpbmYtaW5mTmFOL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAAADprGgBPAAAAOAYAABQAAAA6axoATwAAADgGAAAhAAAAOmsaAE8AAAAsBgAAFAAAADprGgBPAAAALAYAACEAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYw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xqsKxHzH9HO4Vg35fPjxkGasUC99O5cawGuSY30KPSGwBneYfUyMKVzIlM59sPeZOf0cA36cdQCIPOQ3fgOTAKpL3W1+4ltASk+qon7actAc41TXfpCPBOQbKg1/utmCblE6Qn8pkCPK5ch2fzN0rDwfe6x/oMjrhfPM4X8vaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzcvc3JjL2Vycm9yLnJzRU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2luZyBhIHZhbHVlZXhwZWN0ZWQgYDpgZXhwZWN0ZWQgYCxgIG9yIGBdYGV4cGVjdGVkIGAsYCBvciBgfWBleHBlY3RlZCBpZGVudGV4cGVjdGVkIHZhbHVlZXhwZWN0ZWQgYCJgaW52YWxpZCBlc2NhcGVpbnZhbGlkIG51bWJlcm51bWJlciBvdXQgb2YgcmFuZ2VpbnZhbGlkIHVuaWNvZGUgY29kZSBwb2ludGNvbnRyb2wgY2hhcmFjdGVyIChcdTAwMDAtXHUwMDFGKSBmb3VuZCB3aGlsZSBwYXJzaW5nIGEgc3RyaW5na2V5IG11c3QgYmUgYSBzdHJpbmdpbnZhbGlkIHZhbHVlOiBleHBlY3RlZCBrZXkgdG8gYmUgYSBudW1iZXIgaW4gcXVvdGVzZmxvYXQga2V5IG11c3QgYmUgZmluaXRlIChnb3QgTmFOIG9yICsvLWluZilsb25lIGxlYWRpbmcgc3Vycm9nYXRlIGluIGhleCBlc2NhcGV0cmFpbGluZyBjb21tYXRyYWlsaW5nIGNoYXJhY3RlcnN1bmV4cGVjdGVkIGVuZCBvZiBoZXggZXNjYXBlcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkIGF0IGxpbmUgIGNvbHVtbiAAAAEAAAAAAAAAjXkaAAkAAACWeRoACAAAAEVycm9yKCwgbGluZTogLCBjb2x1bW46ICkAAAC4eRoABgAAAL55GgAIAAAAxnkaAAoAAADQeRoAAQBB/PPpAAvXAgEAAAANAQAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAtbBoASwAAAIAKAAAOAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAAEx6GgAOAAAAWnoaAAsAAABpbnZhbGlkIHZhbHVlOiAAeHoaAA8AAABaehoACwAAAGZsb2F0aW5nIHBvaW50IGBgAAAAmHoaABAAAACoehoAAQAAAG51bGwtbBoASwAAAOoHAAAeAAAA+HYaAGEAAAD3AQAAIQAAAPh2GgBhAAAA+wEAAAwAAAD4dhoAYQAAAAICAAAhAAAA+HYaAGEAAAALAgAAKgAAAPh2GgBhAAAADwIAACwAAAAwMTIzNDU2Nzg5YWJjZGVmdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAQYz36QALAVwAQbD46QALgQsvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMzcvc3JjL3JlYWQucnMwfBoAYAAAAKABAABFAAAAMHwaAGAAAAClAQAAPQAAADB8GgBgAAAArQEAABoAAAAwfBoAYAAAAPoBAAATAAAAMHwaAGAAAAD/AQAAMwAAADB8GgBgAAAAAwIAAD4AAAAwfBoAYAAAAAkCAAA6AAAAMHwaAGAAAABWAgAAEwAAADB8GgBgAAAAaAIAABkAAAAwfBoAYAAAAGwDAAAZAAAAMHwaAGAAAABtAwAAGgAAADB8GgBgAAAAbgMAABkAAAAwfBoAYAAAAG8DAAAZAAAAMHwaAGAAAABwAwAAGQAAADB8GgBgAAAAcQMAABkAAAAwfBoAYAAAAHIDAAAZAAAAMHwaAGAAAABzAwAAGQAAADB8GgBgAAAAzgMAABEAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAEAAgADAAQABQAGAAcACAAJAP//////////////////CgALAAwADQAOAA8A/////////////////////////////////////////////////////////////////////woACwAMAA0ADgAPAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAEAAgADAAQABQAGAAcACAAJAA//////////////////+gALAAwADQAOAA8AD/////////////////////////////////////////////////////////////////////oACwAMAA0ADgAPAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AQBBv4PqAAvRKiCamZmZmZmZmZmZmZmZmZkZFa5H4XoUrkfh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AAAAABAA//8QAFN1cHBsZW1lbnRhcnkgUHJpdmF0ZSBVc2UgQXJlYS1BbKwaACAAAAAAAA8A//8PAFZhcmlhdGlvbiBTZWxlY3RvcnMgU3VwcGxlbWVudAAAnKwaAB4AAAAAAQ4A7wEOAFRhZ3PMrBoABAAAAAAADgB/AA4AQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gSAAA4KwaACIAAABQEwMAryMDAENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEcAABStGgAiAAAAAAADAE8TAwBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIFN1cHBsZW1lbnQASK0aACcAAAAA+AIAH/oCAENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEkAAICtGgAiAAAA8OsCAF/uAgBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBGAAC0rRoAIgAAALDOAgDv6wIAQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gRQAA6K0aACIAAAAguAIAr84CAENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEQAAByuGgAiAAAAQLcCAB+4AgBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBDAABQrhoAIgAAAACnAgA/twIAQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQgAAhK4aACIAAAAAAAIA36YCAFN5bWJvbHMgZm9yIExlZ2FjeSBDb21wdXRpbme4rhoAHAAAAAD7AQD/+wEAU3ltYm9scyBhbmQgUGljdG9ncmFwaHMgRXh0ZW5kZWQtQQAA5K4aACIAAABw+gEA//oBAENoZXNzIFN5bWJvbHMAAAAYrxoADQAAAAD6AQBv+gEAU3VwcGxlbWVudGFsIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzOK8aACQAAAAA+QEA//kBAFN1cHBsZW1lbnRhbCBBcnJvd3MtQwAAAGyvGgAVAAAAAPgBAP/4AQBHZW9tZXRyaWMgU2hhcGVzIEV4dGVuZGVkAAAAlK8aABkAAACA9wEA//cBAEFsY2hlbWljYWwgU3ltYm9scwAAwK8aABIAAAAA9wEAf/cBAFRy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c3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAAFTWGgBeAAAANAAAAAUAAABjYXBhY2l0eSBvdmVyZmxvdwAAAMTWGgARAAAAAAAAAAgAAAAEAAAADgEAAA8BAAAQAQAAEQEAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzbWlkID4gbGVuW9caAAkAAAD81hoAXwAAAEwAAAAfAAAA/NYaAF8AAABGAAAAFwAAAAAAAAAEAAAABAAAABIBAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAnNcaAEoAAACfAAAAGQAAAJzXGgBKAAAAkwMAAAkAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzCNgaAEwAAAArAgAAEQAAAAAAAAAIAAAABAAAABMBAAAAAAAA//////////942BoAQZCx6wAL06gBL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGV2ZW5zaHRlaW5fYXV0b21hdGEtMC4yLjEvc3JjL2FscGhhYmV0LnJzkNgaAGwAAAALAAAAEwAAAJDYGgBsAAAADQAAAB8AAACQ2BoAbAAAAA4AAAAfAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycyzZGgBYAAAAswcAAAkAAACQ2BoAbAAAADIAAAAWAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGV2ZW5zaHRlaW5fYXV0b21hdGEtMC4yLjEvc3JjL2RmYS5ycwCk2RoAZwAAAEcAAAAXAAAApNkaAGcAAABRAAAAGQAAAKTZGgBnAAAAfQAAACUAAACk2RoAZwAAAIsAAAAtAAAApNkaAGcAAACPAAAANgAAAKTZGgBnAAAAkAAAABUAAACk2RoAZwAAAMEAAAAUAAAApNkaAGcAAADCAAAAGAAAAKTZGgBnAAAAwwAAABoAAACk2RoAZwAAANUAAAAoAAAApNkaAGcAAADZAAAAEwAAAFN0YXRlIGlkIGlzIGxhcmdlciB0aGFuIG1heF9udW1fc3RhdGVzAACk2RoAZwAAAOkAAAAJAAAApNkaAGcAAADuAAAAFwAAAKTZGgBnAAAABAEAADQAAACk2RoAZwAAAP8AAAArAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbGV2ZW5zaHRlaW5fYXV0b21hdGEtMC4yLjEvc3JjL2luZGV4LnJzAAAAJNsaAGkAAAAWAAAAGAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2xldmVuc2h0ZWluX2F1dG9tYXRhLTAuMi4xL3NyYy9sZXZlbnNodGVpbl9uZmEucnMAoNsaAHMAAAA9AAAAFQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2xldmVuc2h0ZWluX2F1dG9tYXRhLTAuMi4xL3NyYy9wYXJhbWV0cmljX2RmYS5ycwAAJNwaAHIAAAA4AAAAGgAAACTcGgByAAAAOQAAABoAAAAk3BoAcgAAAEkAAAAxAAAAJNwaAHIAAABNAAAAGgAAACTcGgByAAAATgAAABkAAAAk3BoAcgAAAFMAAAAZAAAAJNwaAHIAAABwAAAAIwAAACTcGgByAAAAbwAAADEAAAAAAAAAJNwaAHIAAACTAAAACQAAACTcGgByAAAAuwAAAAkAAAAk3BoAcgAAANYAAAAiAAAAYXNzZXJ0aW9uIGZhaWxlZDogKGNoaSBhcyB1c2l6ZSkgPCBzZWxmLnRyYW5zaXRpb25fc3RyaWRlAAAAJNwaAHIAAADpAAAACQAAACTcGgByAAAA6gAAABkAAAAk2xoAaQAAACAAAAAUAAAAJNwaAHIAAAAHAQAAHQAAACTcGgByAAAAEAEAACUAAAAk3BoAcgAAABYBAAAaAAAAAAAAAAQAAAAEAAAAFgEAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAAD43RoASgAAAJ8AAAAZAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc1TeGgBMAAAAKwIAABEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mc3QtMC40Ljcvc3JjL2J5dGVzLnJzYXNzZXJ0aW9uIGZhaWxlZDogMSA8PSBuYnl0ZXMgJiYgbmJ5dGVzIDw9IDiw3hoAWAAAAGQAAAAFAAAAsN4aAFgAAABnAAAAGQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2ZzdC0wLjQuNy9zcmMvcmF3L2J1aWxkLnJzVN8aAFwAAABKAQAANwAAAFTfGgBcAAAAVAEAABQAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLnN0YWNrWzBdLmxhc3QuaXNfbm9uZSgpAABU3xoAXAAAAFwBAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5zdGFjay5sZW4oKSA9PSAxAFTfGgBcAAAAWwEAAAkAAABU3xoAXAAAAGEBAAAvAAAAVN8aAFwAAABnAQAAKwAAAGFzc2VydGlvbiBmYWlsZWQ6IHVuZmluaXNoZWQubGFzdC5pc19ub25lKCkAVN8aAFwAAABoAQAACQAAAFTfGgBcAAAAbQEAABMAAABU3xoAXAAAAHIBAAA0AAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5zdGFja1tsYXN0XS5sYXN0LmlzX25vbmUoKQAAAFTfGgBcAAAAewEAAAkAAABU3xoAXAAAAH4BAAAYAAAAVN8aAFwAAAB6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AAAAYicbAAkAAABGU1QgdmVyaWZpY2F0aW9uIGZhaWxlZDogRlNUIGRvZXMgbm90IGNvbnRhaW4gYSBjaGVja3N1bUVycm9yIGluc2VydGluZyBkdXBsaWNhdGUga2V5OiAnJy4AALQnGwAgAAAA1CcbAAIAAABFcnJvciBpbnNlcnRpbmcgb3V0LW9mLW9yZGVyIGtleTogJycuIChQcmV2aW91cyBrZXkgd2FzICcnLikgS2V5cyBtdXN0IGJlIGluc2VydGVkIGluIGxleGljb2dyYXBoaWMgb3JkZXIuAADoJxsAIwAAAAsoGwAWAAAAISgbADEAAABFcnJvciBvcGVuaW5nIEZTVDogZXhwZWN0ZWQgdHlwZSAnJywgZ290IHR5cGUgJwBsKBsAIgAAAI4oGwANAAAA1CcbAAIAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZnN0LTAuNC43L3NyYy9yYXcvZXJyb3IucnPcKBsAXAAAAIYAAAAnAAAAAQAAAAAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mc3QtMC40Ljcvc3JjL3Jhdy9ub2RlLnJzAFApGwBbAAAAQwIAABsAAABQKRsAWwAAAC4BAAARAAAAUCkbAFsAAACmAQAAGwAAAFApGwBbAAAAhQIAAC0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mc3QtMC40Ljcvc3JjL3Jhdy9yZWdpc3RyeS5ycwDsKRsAXwAAACEAAAAbAAAA7CkbAF8AAAAgAAAANwAAAOwpGwBfAAAAKwAAAC8AAADsKRsAXwAAAD0AAAAJAAAA7CkbAF8AAABjAAAAEQAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAnCobAE8AAADhBQAAFAAAAJwqGwBPAAAA4QUAACEAAACcKhsATwAAANUFAAAhAAAAL3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAABwrGwBKAAAAiAAAABsAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAeCsbAEsAAACNBQAAGwAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnPUKxsATAAAACsCAAARAAAAAAAAAAQAAAAEAAAAIAEAAAAAAAAEAAAABAAAACEBAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbk5vbmUAAAAAAAAABAAAAAQAAAAiAQAAU29tZQAAAAAEAAAABAAAACMBAAAAAAAABAAAAAQAAAAkAQAAAAAAAAQAAAAEAAAAJQEAAJwqGwBPAAAAZQQAACQAAACcKhsATwAAAM0BAAA3AAAA///////////YLBsAQfDZ7AALnPUDQUVsaWfDhkFNUCZBYWN1dGXDgUFicmV2ZcSCQWNpcmPDgkFjedCQQWZy8J2UhEFncmF2ZcOAQWxwaGHOkUFtYWNyxIBBbmTiqZNBb2dvbsSEQW9wZvCdlLhBcHBseUZ1bmN0aW9u4oGhQXJpbmfDhUFzY3LwnZKcQXNzaWdu4omUQXRpbGRlw4NBdW1sw4RCYWNrc2xhc2jiiJZCYXJ24qunQmFyd2Vk4oyGQmN50JFCZWNhdXNl4oi1QmVybm91bGxpc+KErEJldGHOkkJmcvCdlIVCb3Bm8J2UuUJyZXZly5hCc2NyQnVtcGVx4omOQ0hjedCnQ09QWcKpQ2FjdXRlxIZDYXDii5JDYXBpdGFsRGlmZmVyZW50aWFsROKFhUNheWxleXPihK1DY2Fyb27EjENjZWRpbMOHQ2NpcmPEiENjb25pbnTiiLBDZG90xIpDZWRpbGxhwrhDZW50ZXJEb3TCt0NmckNoac6nQ2lyY2xlRG904oqZQ2lyY2xlTWludXPiipZDaXJjbGVQbHVz4oqVQ2lyY2xlVGltZXPiipdDbG9ja3dpc2VDb250b3VySW50ZWdyYWziiLJDbG9zZUN1cmx5RG91YmxlUXVvdGXigJ1DbG9zZUN1cmx5UXVvdGXigJlDb2xvbuKIt0NvbG9uZeKptENvbmdydWVudOKJoUNvbmludOKIr0NvbnRvdXJJbnRlZ3JhbOKIrkNvcGbihIJDb3Byb2R1Y3TiiJBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFs4oizQ3Jvc3PiqK9Dc2Ny8J2SnkN1cOKLk0N1cENhcOKJjURERERvdHJhaGTipJFESmN50IJEU2N50IVEWmN50I9EYWdnZXLigKFEYXJy4oahRGFzaHbiq6REY2Fyb27EjkRjedCURGVs4oiHRGVsdGHOlERmcvCdlIdEaWFjcml0aWNhbEFjdXRlwrREaWFjcml0aWNhbERvdMuZRGlhY3JpdGljYWxEb3VibGVBY3V0ZcudRGlhY3JpdGljYWxHcmF2ZWBEaWFjcml0aWNhbFRpbGRly5xEaWFtb25k4ouERGlmZmVyZW50aWFsROKFhkRvcGbwnZS7RG90wqhEb3REb3Tig5xEb3RFcXVhbOKJkERvdWJsZUNvbnRvdXJJbnRlZ3JhbERvdWJsZURvdERvdWJsZURvd25BcnJvd+KHk0RvdWJsZUxlZnRBcnJvd+KHkERvdWJsZUxlZnRSaWdodEFycm934oeURG91YmxlTGVmdFRlZURvdWJsZUxvbmdMZWZ0QXJyb3fin7hEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3fin7pEb3VibGVMb25nUmlnaHRBcnJvd+KfuURvdWJsZVJpZ2h0QXJyb3fih5JEb3VibGVSaWdodFRlZeKKqERvdWJsZVVwQXJyb3fih5FEb3VibGVVcERvd25BcnJvd+KHlURvdWJsZVZlcnRpY2FsQmFy4oilRG93bkFycm934oaTRG93bkFycm93QmFy4qSTRG93bkFycm93VXBBcnJvd+KHtURvd25CcmV2ZcyRRG93bkxlZnRSaWdodFZlY3RvcuKlkERvd25MZWZ0VGVlVmVjdG9y4qWeRG93bkxlZnRWZWN0b3Lihr1Eb3duTGVmdFZlY3RvckJhcuKllkRvd25SaWdodFRlZVZlY3RvcuKln0Rvd25SaWdodFZlY3RvcuKHgURvd25SaWdodFZlY3RvckJhcuKll0Rvd25UZWXiiqREb3duVGVlQXJyb3fihqdEb3duYXJyb3dEc2Ny8J2Sn0RzdHJva8SQRU5HxYpFVEjDkEVhY3V0ZcOJRWNhcm9uxJpFY2lyY8OKRWN50K1FZG90xJZFZnLwnZSIRWdyYXZlw4hFbGVtZW504oiIRW1hY3LEkkVtcHR5U21hbGxTcXVhcmXil7tFbXB0eVZlcnlTbWFsbFNxdWFyZeKWq0VvZ29uxJhFb3Bm8J2UvEVwc2lsb27OlUVxdWFs4qm1RXF1YWxUaWxkZeKJgkVxdWlsaWJyaXVt4oeMRXNjcuKEsEVzaW3iqbNFdGHOl0V1bWzDi0V4aXN0c+KIg0V4cG9uZW50aWFsReKFh0ZjedCkRmZy8J2UiUZpbGxlZFNtYWxsU3F1YXJl4pe8RmlsbGVkVmVyeVNtYWxsU3F1YXJl4paqRm9wZvCdlL1Gb3JBbGziiIBGb3VyaWVydHJm4oSxRnNjckdKY3nQg0dUPkdhbW1hzpNHYW1tYWTPnEdicmV2ZcSeR2NlZGlsxKJHY2lyY8ScR2N50JNHZG90xKBHZnLwnZSKR2fii5lHb3Bm8J2UvkdyZWF0ZXJFcXVhbOKJpUdyZWF0ZXJFcXVhbExlc3Pii5tHcmVhdGVyRnVsbEVxdWFs4omnR3JlYXRlckdyZWF0ZXLiqqJHcmVhdGVyTGVzc+KJt0dyZWF0ZXJTbGFudEVxdWFs4qm+R3JlYXRlclRpbGRl4omzR3NjcvCdkqJHdOKJq0hBUkRjedCqSGFjZWvLh0hhdF5IY2lyY8SkSGZy4oSMSGlsYmVydFNwYWNl4oSLSG9wZuKEjUhvcml6b250YWxMaW5l4pSASHNjckhzdHJva8SmSHVtcERvd25IdW1wSHVtcEVxdWFs4omPSUVjedCVSUpsaWfEsklPY3nQgUlhY3V0ZcONSWNpcmPDjkljedCYSWRvdMSwSWZy4oSRSWdyYXZlw4xJbUltYWNyxKpJbWFnaW5hcnlJ4oWISW1wbGllc0ludOKIrEludGVncmFs4oirSW50ZXJzZWN0aW9u4ouCSW52aXNpYmxlQ29tbWHigaNJbnZpc2libGVUaW1lc+KBoklvZ29uxK5Jb3Bm8J2VgElvdGHOmUlzY3LihJBJdGlsZGXEqEl1a2N50IZJdW1sw49KY2lyY8S0SmN50JlKZnLwnZSNSm9wZvCdlYFKc2Ny8J2SpUpzZXJjedCISnVrY3nQhEtIY3nQpUtKY3nQjEthcHBhzppLY2VkaWzEtktjedCaS2Zy8J2UjktvcGbwnZWCS3NjcvCdkqZMSmN50IlMVDxMYWN1dGXEuUxhbWJkYc6bTGFuZ+KfqkxhcGxhY2V0cmbihJJMYXJy4oaeTGNhcm9uxL1MY2VkaWzEu0xjedCbTGVmdEFuZ2xlQnJhY2tldOKfqExlZnRBcnJvd+KGkExlZnRBcnJvd0JhcuKHpExlZnRBcnJvd1JpZ2h0QXJyb3fih4ZMZWZ0Q2VpbGluZ+KMiExlZnREb3VibGVCcmFja2V04p+mTGVmdERvd25UZWVWZWN0b3LipaFMZWZ0RG93blZlY3RvcuKHg0xlZnREb3duVmVjdG9yQmFy4qWZTGVmdEZsb29y4oyKTGVmdFJpZ2h0QXJyb3fihpRMZWZ0UmlnaHRWZWN0b3LipY5MZWZ0VGVl4oqjTGVmdFRlZUFycm934oakTGVmdFRlZVZlY3RvcuKlmkxlZnRUcmlhbmdsZeKKskxlZnRUcmlhbmdsZUJhcuKnj0xlZnRUcmlhbmdsZUVxdWFs4oq0TGVmdFVwRG93blZlY3RvcuKlkUxlZnRVcFRlZVZlY3RvcuKloExlZnRVcFZlY3RvcuKGv0xlZnRVcFZlY3RvckJhcuKlmExlZnRWZWN0b3LihrxMZWZ0VmVjdG9yQmFy4qWSTGVmdGFycm93TGVmdHJpZ2h0YXJyb3dMZXNzRXF1YWxHcmVhdGVy4ouaTGVzc0Z1bGxFcXVhbOKJpkxlc3NHcmVhdGVy4om2TGVzc0xlc3PiqqFMZXNzU2xhbnRFcXVhbOKpvUxlc3NUaWxkZeKJskxmcvCdlI9MbOKLmExsZWZ0YXJyb3fih5pMbWlkb3TEv0xvbmdMZWZ0QXJyb3fin7VMb25nTGVmdFJpZ2h0QXJyb3fin7dMb25nUmlnaHRBcnJvd+KftkxvbmdsZWZ0YXJyb3dMb25nbGVmdHJpZ2h0YXJyb3dMb25ncmlnaHRhcnJvd0xvcGbwnZWDTG93ZXJMZWZ0QXJyb3fihplMb3dlclJpZ2h0QXJyb3fihphMc2NyTHNo4oawTHN0cm9rxYFMdOKJqk1hcOKkhU1jedCcTWVkaXVtU3BhY2XigZ9NZWxsaW50cmbihLNNZnLwnZSQTWludXNQbHVz4oiTTW9wZvCdlYRNc2NyTXXOnE5KY3nQik5hY3V0ZcWDTmNhcm9uxYdOY2VkaWzFhU5jedCdTmVnYXRpdmVNZWRpdW1TcGFjZeKAi05lZ2F0aXZlVGhpY2tTcGFjZU5lZ2F0aXZlVGhpblNwYWNlTmVnYXRpdmVWZXJ5VGhpblNwYWNlTmVzdGVkR3JlYXRlckdyZWF0ZXJOZXN0ZWRMZXNzTGVzc05ld0xpbmUKTmZy8J2UkU5vQnJlYWvigaBOb25CcmVha2luZ1NwYWNlwqBOb3Bm4oSVTm904qusTm90Q29uZ3J1ZW504omiTm90Q3VwQ2Fw4omtTm90RG91YmxlVmVydGljYWxCYXLiiKZOb3RFbGVtZW504oiJTm90RXF1YWziiaBOb3RFcXVhbFRpbGRl4omCzLhOb3RFeGlzdHPiiIROb3RHcmVhdGVy4omvTm90R3JlYXRlckVxdWFs4omxTm90R3JlYXRlckZ1bGxFcXVhbOKJp8y4Tm90R3JlYXRlckdyZWF0ZXLiiavMuE5vdEdyZWF0ZXJMZXNz4om5Tm90R3JlYXRlclNsYW50RXF1YWziqb7MuE5vdEdyZWF0ZXJUaWxkZeKJtU5vdEh1bXBEb3duSHVtcOKJjsy4Tm90SHVtcEVxdWFs4omPzLhOb3RMZWZ0VHJpYW5nbGXii6pOb3RMZWZ0VHJpYW5nbGVCYXLip4/MuE5vdExlZnRUcmlhbmdsZUVxdWFs4ousTm90TGVzc+KJrk5vdExlc3NFcXVhbOKJsE5vdExlc3NHcmVhdGVy4om4Tm90TGVzc0xlc3PiiarMuE5vdExlc3NTbGFudEVxdWFs4qm9zLhOb3RMZXNzVGlsZGXiibROb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcuKqosy4Tm90TmVzdGVkTGVzc0xlc3PiqqHMuE5vdFByZWNlZGVz4oqATm90UHJlY2VkZXNFcXVhbOKqr8y4Tm90UHJlY2VkZXNTbGFudEVxdWFs4ougTm90UmV2ZXJzZUVsZW1lbnTiiIxOb3RSaWdodFRyaWFuZ2xl4ourTm90UmlnaHRUcmlhbmdsZUJhcuKnkMy4Tm90UmlnaHRUcmlhbmdsZUVxdWFs4outTm90U3F1YXJlU3Vic2V04oqPzLhOb3RTcXVhcmVTdWJzZXRFcXVhbOKLok5vdFNxdWFyZVN1cGVyc2V04oqQzLhOb3RTcXVhcmVTdXBlcnNldEVxdWFs4oujTm90U3Vic2V04oqC4oOSTm90U3Vic2V0RXF1YWziiohOb3RTdWNjZWVkc+KKgU5vdFN1Y2NlZWRzRXF1YWziqrDMuE5vdFN1Y2NlZWRzU2xhbnRFcXVhbOKLoU5vdFN1Y2NlZWRzVGlsZGXiib/MuE5vdFN1cGVyc2V04oqD4oOSTm90U3VwZXJzZXRFcXVhbOKKiU5vdFRpbGRl4omBTm90VGlsZGVFcXVhbOKJhE5vdFRpbGRlRnVsbEVxdWFs4omHTm90VGlsZGVUaWxkZeKJiU5vdFZlcnRpY2FsQmFy4oikTnNjcvCdkqlOdGlsZGXDkU51zp1PRWxpZ8WST2FjdXRlw5NPY2lyY8OUT2N50J5PZGJsYWPFkE9mcvCdlJJPZ3JhdmXDkk9tYWNyxYxPbWVnYc6pT21pY3Jvbs6fT29wZvCdlYZPcGVuQ3VybHlEb3VibGVRdW90ZeKAnE9wZW5DdXJseVF1b3Rl4oCYT3LiqZRPc2Ny8J2Sqk9zbGFzaMOYT3RpbGRlw5VPdGltZXPiqLdPdW1sw5ZPdmVyQmFy4oC+T3ZlckJyYWNl4o+eT3ZlckJyYWNrZXTijrRPdmVyUGFyZW50aGVzaXPij5xQYXJ0aWFsROKIglBjedCfUGZy8J2Uk1Boac6mUGnOoFBsdXNNaW51c8KxUG9pbmNhcmVwbGFuZVBvcGbihJlQcuKqu1ByZWNlZGVz4om6UHJlY2VkZXNFcXVhbOKqr1ByZWNlZGVzU2xhbnRFcXVhbOKJvFByZWNlZGVzVGlsZGXiib5QcmltZeKAs1Byb2R1Y3TiiI9Qcm9wb3J0aW9uUHJvcG9ydGlvbmFs4oidUHNjcvCdkqtQc2nOqFFVT1QiUWZy8J2UlFFvcGbihJpRc2Ny8J2SrFJCYXJy4qSQUkVHwq5SYWN1dGXFlFJhbmfin6tSYXJy4oagUmFycnRs4qSWUmNhcm9uxZhSY2VkaWzFllJjedCgUmXihJxSZXZlcnNlRWxlbWVudOKIi1JldmVyc2VFcXVpbGlicml1beKHi1JldmVyc2VVcEVxdWlsaWJyaXVt4qWvUmZyUmhvzqFSaWdodEFuZ2xlQnJhY2tldOKfqVJpZ2h0QXJyb3fihpJSaWdodEFycm93QmFy4oelUmlnaHRBcnJvd0xlZnRBcnJvd+KHhFJpZ2h0Q2VpbGluZ+KMiVJpZ2h0RG91YmxlQnJhY2tldOKfp1JpZ2h0RG93blRlZVZlY3RvcuKlnVJpZ2h0RG93blZlY3RvcuKHglJpZ2h0RG93blZlY3RvckJhcuKllVJpZ2h0Rmxvb3LijItSaWdodFRlZeKKolJpZ2h0VGVlQXJyb3fihqZSaWdodFRlZVZlY3RvcuKlm1JpZ2h0VHJpYW5nbGXiirNSaWdodFRyaWFuZ2xlQmFy4qeQUmlnaHRUcmlhbmdsZUVxdWFs4oq1UmlnaHRVcERvd25WZWN0b3LipY9SaWdodFVwVGVlVmVjdG9y4qWcUmlnaHRVcFZlY3RvcuKGvlJpZ2h0VXBWZWN0b3JCYXLipZRSaWdodFZlY3RvcuKHgFJpZ2h0VmVjdG9yQmFy4qWTUmlnaHRhcnJvd1JvcGbihJ1Sb3VuZEltcGxpZXPipbBScmlnaHRhcnJvd+KHm1JzY3LihJtSc2jihrFSdWxlRGVsYXllZOKntFNIQ0hjedCpU0hjedCoU09GVGN50KxTYWN1dGXFmlNj4qq8U2Nhcm9uxaBTY2VkaWzFnlNjaXJjxZxTY3nQoVNmcvCdlJZTaG9ydERvd25BcnJvd1Nob3J0TGVmdEFycm93U2hvcnRSaWdodEFycm93U2hvcnRVcEFycm934oaRU2lnbWHOo1NtYWxsQ2lyY2xl4oiYU29wZvCdlYpTcXJ04oiaU3F1YXJl4pahU3F1YXJlSW50ZXJzZWN0aW9u4oqTU3F1YXJlU3Vic2V04oqPU3F1YXJlU3Vic2V0RXF1YWziipFTcXVhcmVTdXBlcnNldOKKkFNxdWFyZVN1cGVyc2V0RXF1YWziipJTcXVhcmVVbmlvbuKKlFNzY3LwnZKuU3RhcuKLhlN1YuKLkFN1YnNldFN1YnNldEVxdWFs4oqGU3VjY2VlZHPiibtTdWNjZWVkc0VxdWFs4qqwU3VjY2VlZHNTbGFudEVxdWFs4om9U3VjY2VlZHNUaWxkZeKJv1N1Y2hUaGF0U3Vt4oiRU3Vw4ouRU3VwZXJzZXTiioNTdXBlcnNldEVxdWFs4oqHU3Vwc2V0VEhPUk7DnlRSQURF4oSiVFNIY3nQi1RTY3nQplRhYglUYXXOpFRjYXJvbsWkVGNlZGlsxaJUY3nQolRmcvCdlJdUaGVyZWZvcmXiiLRUaGV0Yc6YVGhpY2tTcGFjZeKBn+KAilRoaW5TcGFjZeKAiVRpbGRl4oi8VGlsZGVFcXVhbOKJg1RpbGRlRnVsbEVxdWFs4omFVGlsZGVUaWxkZeKJiFRvcGbwnZWLVHJpcGxlRG904oObVHNjcvCdkq9Uc3Ryb2vFplVhY3V0ZcOaVWFycuKGn1VhcnJvY2ly4qWJVWJyY3nQjlVicmV2ZcWsVWNpcmPDm1VjedCjVWRibGFjxbBVZnLwnZSYVWdyYXZlw5lVbWFjcsWqVW5kZXJCYXJfVW5kZXJCcmFjZeKPn1VuZGVyQnJhY2tldOKOtVVuZGVyUGFyZW50aGVzaXPij51VbmlvbuKLg1VuaW9uUGx1c+KKjlVvZ29uxbJVb3Bm8J2VjFVwQXJyb3dVcEFycm93QmFy4qSSVXBBcnJvd0Rvd25BcnJvd+KHhVVwRG93bkFycm934oaVVXBFcXVpbGlicml1beKlrlVwVGVl4oqlVXBUZWVBcnJvd+KGpVVwYXJyb3dVcGRvd25hcnJvd1VwcGVyTGVmdEFycm934oaWVXBwZXJSaWdodEFycm934oaXVXBzac+SVXBzaWxvbs6lVXJpbmfFrlVzY3LwnZKwVXRpbGRlxahVdW1sw5xWRGFzaOKKq1ZiYXLiq6tWY3nQklZkYXNo4oqpVmRhc2hs4qumVmVl4ouBVmVyYmFy4oCWVmVydFZlcnRpY2FsQmFy4oijVmVydGljYWxMaW5lfFZlcnRpY2FsU2VwYXJhdG9y4p2YVmVydGljYWxUaWxkZeKJgFZlcnlUaGluU3BhY2XigIpWZnLwnZSZVm9wZvCdlY1Wc2Ny8J2SsVZ2ZGFzaOKKqldjaXJjxbRXZWRnZeKLgFdmcvCdlJpXb3Bm8J2VjldzY3LwnZKyWGZy8J2Um1hpzp5Yb3Bm8J2Vj1hzY3LwnZKzWUFjedCvWUljedCHWVVjedCuWWFjdXRlw51ZY2lyY8W2WWN50KtZZnLwnZScWW9wZvCdlZBZc2Ny8J2StFl1bWzFuFpIY3nQllphY3V0ZcW5WmNhcm9uxb1aY3nQl1pkb3TFu1plcm9XaWR0aFNwYWNlWmV0Yc6WWmZy4oSoWm9wZuKEpFpzY3LwnZK1YWFjdXRlw6FhYnJldmXEg2Fj4oi+YWNF4oi+zLNhY2TiiL9hY2lyY8OiYWN1dGVhY3nQsGFlbGlnw6ZhZmFmcvCdlJ5hZ3JhdmXDoGFsZWZzeW3ihLVhbGVwaGFscGhhzrFhbWFjcsSBYW1hbGfiqL9hbXBhbmTiiKdhbmRhbmTiqZVhbmRk4qmcYW5kc2xvcGXiqZhhbmR24qmaYW5n4oigYW5nZeKmpGFuZ2xlYW5nbXNk4oihYW5nbXNkYWHipqhhbmdtc2RhYuKmqWFuZ21zZGFj4qaqYW5nbXNkYWTipqthbmdtc2RhZeKmrGFuZ21zZGFm4qatYW5nbXNkYWfipq5hbmdtc2RhaOKmr2FuZ3J04oifYW5ncnR2YuKKvmFuZ3J0dmJk4qadYW5nc3Bo4oiiYW5nc3Rhbmd6YXJy4o28YW9nb27EhWFvcGbwnZWSYXBhcEXiqbBhcGFjaXLiqa9hcGXiiYphcGlk4omLYXBvcydhcHByb3hhcHByb3hlcWFyaW5nw6Vhc2Ny8J2StmFzdCphc3ltcGFzeW1wZXFhdGlsZGXDo2F1bWzDpGF3Y29uaW50YXdpbnTiqJFiTm904qutYmFja2NvbmfiiYxiYWNrZXBzaWxvbs+2YmFja3ByaW1l4oC1YmFja3NpbeKIvWJhY2tzaW1lceKLjWJhcnZlZeKKvWJhcndlZOKMhWJhcndlZGdlYmJya2Jicmt0YnJr4o62YmNvbmdiY3nQsWJkcXVv4oCeYmVjYXVzYmVjYXVzZWJlbXB0eXbiprBiZXBzaWJlcm5vdWJldGHOsmJldGjihLZiZXR3ZWVu4omsYmZy8J2Un2JpZ2NhcGJpZ2NpcmPil69iaWdjdXBiaWdvZG904qiAYmlnb3BsdXPiqIFiaWdvdGltZXPiqIJiaWdzcWN1cOKohmJpZ3N0YXLimIViaWd0cmlhbmdsZWRvd27ilr1iaWd0cmlhbmdsZXVw4pazYmlndXBsdXPiqIRiaWd2ZWViaWd3ZWRnZWJrYXJvd+KkjWJsYWNrbG96ZW5nZeKnq2JsYWNrc3F1YXJlYmxhY2t0cmlhbmdsZeKWtGJsYWNrdHJpYW5nbGVkb3du4pa+YmxhY2t0cmlhbmdsZWxlZnTil4JibGFja3RyaWFuZ2xlcmlnaHTilrhibGFua+KQo2JsazEy4paSYmxrMTTilpFibGszNOKWk2Jsb2Nr4paIYm5lPeKDpWJuZXF1aXbiiaHig6Vibm904oyQYm9wZvCdlZNib3Rib3R0b21ib3d0aWXii4hib3hETOKVl2JveERS4pWUYm94RGzilZZib3hEcuKVk2JveEjilZBib3hIROKVpmJveEhV4pWpYm94SGTilaRib3hIdeKVp2JveFVM4pWdYm94VVLilZpib3hVbOKVnGJveFVy4pWZYm94VuKVkWJveFZI4pWsYm94VkzilaNib3hWUuKVoGJveFZo4pWrYm94VmzilaJib3hWcuKVn2JveGJveOKniWJveGRM4pWVYm94ZFLilZJib3hkbOKUkGJveGRy4pSMYm94aGJveGhE4pWlYm94aFXilahib3hoZOKUrGJveGh14pS0Ym94bWludXPiip9ib3hwbHVz4oqeYm94dGltZXPiiqBib3h1TOKVm2JveHVS4pWYYm94dWzilJhib3h1cuKUlGJveHbilIJib3h2SOKVqmJveHZM4pWhYm94dlLilZ5ib3h2aOKUvGJveHZs4pSkYm94dnLilJxicHJpbWVicmV2ZWJydmJhcsKmYnNjcvCdkrdic2VtaeKBj2JzaW1ic2ltZWJzb2xcYnNvbGLip4Vic29saHN1YuKfiGJ1bGzigKJidWxsZXRidW1wYnVtcEXiqq5idW1wZWJ1bXBlcWNhY3V0ZcSHY2Fw4oipY2FwYW5k4qmEY2FwYnJjdXDiqYljYXBjYXDiqYtjYXBjdXDiqYdjYXBkb3TiqYBjYXBz4oip77iAY2FyZXTigYFjYXJvbmNjYXBz4qmNY2Nhcm9uxI1jY2VkaWzDp2NjaXJjxIljY3Vwc+KpjGNjdXBzc23iqZBjZG90xItjZWRpbGNlbXB0eXbiprJjZW50wqJjZW50ZXJkb3RjZnLwnZSgY2hjedGHY2hlY2vinJNjaGVja21hcmtjaGnPh2NpcuKXi2NpckXip4NjaXJjy4ZjaXJjZXHiiZdjaXJjbGVhcnJvd2xlZnTihrpjaXJjbGVhcnJvd3JpZ2h04oa7Y2lyY2xlZFJjaXJjbGVkU+KTiGNpcmNsZWRhc3TiiptjaXJjbGVkY2lyY+KKmmNpcmNsZWRkYXNo4oqdY2lyZWNpcmZuaW504qiQY2lybWlk4quvY2lyc2NpcuKngmNsdWJz4pmjY2x1YnN1aXRjb2xvbjpjb2xvbmVjb2xvbmVxY29tbWEsY29tbWF0QGNvbXDiiIFjb21wZm5jb21wbGVtZW50Y29tcGxleGVzY29uZ2Nvbmdkb3Tiqa1jb25pbnRjb3Bm8J2VlGNvcHJvZGNvcHljb3B5c3LihJdjcmFycuKGtWNyb3Nz4pyXY3NjcvCdkrhjc3Vi4quPY3N1YmXiq5Fjc3Vw4quQY3N1cGXiq5JjdGRvdOKLr2N1ZGFycmzipLhjdWRhcnJy4qS1Y3VlcHLii55jdWVzY+KLn2N1bGFycuKGtmN1bGFycnDipL1jdXDiiKpjdXBicmNhcOKpiGN1cGNhcOKphmN1cGN1cOKpimN1cGRvdOKKjWN1cG9y4qmFY3Vwc+KIqu+4gGN1cmFycuKGt2N1cmFycm3ipLxjdXJseWVxcHJlY2N1cmx5ZXFzdWNjY3VybHl2ZWXii45jdXJseXdlZGdl4ouPY3VycmVuwqRjdXJ2ZWFycm93bGVmdGN1cnZlYXJyb3dyaWdodGN1dmVlY3V3ZWRjd2NvbmludGN3aW504oixY3lsY3R54oytZEFycmRIYXLipaVkYWdnZXLigKBkYWxldGjihLhkYXJyZGFzaOKAkGRhc2h2ZGJrYXJvd+Kkj2RibGFjZGNhcm9uxI9kY3nQtGRkZGRhZ2dlcmRkYXJy4oeKZGRvdHNlceKpt2RlZ8KwZGVsdGHOtGRlbXB0eXbiprFkZmlzaHTipb9kZnLwnZShZGhhcmxkaGFycmRpYW1kaWFtb25kZGlhbW9uZHN1aXTimaZkaWFtc2RpZWRpZ2FtbWHPnWRpc2lu4ouyZGl2w7dkaXZpZGVkaXZpZGVvbnRpbWVz4ouHZGl2b254ZGpjedGSZGxjb3Ju4oyeZGxjcm9w4oyNZG9sbGFyJGRvcGbwnZWVZG90ZG90ZXFkb3RlcWRvdOKJkWRvdG1pbnVz4oi4ZG90cGx1c+KIlGRvdHNxdWFyZeKKoWRvdWJsZWJhcndlZGdlZG93bmFycm93ZG93bmRvd25hcnJvd3Nkb3duaGFycG9vbmxlZnRkb3duaGFycG9vbnJpZ2h0ZHJia2Fyb3dkcmNvcm7ijJ9kcmNyb3DijIxkc2Ny8J2SuWRzY3nRlWRzb2zip7Zkc3Ryb2vEkWR0ZG904ouxZHRyaeKWv2R0cmlmZHVhcnJkdWhhcmR3YW5nbGXipqZkemN50Z9kemlncmFycuKfv2VERG90ZURvdGVhY3V0ZcOpZWFzdGVy4qmuZWNhcm9uxJtlY2ly4omWZWNpcmPDqmVjb2xvbuKJlWVjedGNZWRvdMSXZWVlZkRvdOKJkmVmcvCdlKJlZ+KqmmVncmF2ZcOoZWdz4qqWZWdzZG904qqYZWziqpllbGludGVyc+KPp2VsbOKEk2Vsc+KqlWVsc2RvdOKql2VtYWNyxJNlbXB0eeKIhWVtcHR5c2V0ZW1wdHl2ZW1zcOKAg2Vtc3AxM+KAhGVtc3AxNOKAhWVuZ8WLZW5zcOKAgmVvZ29uxJllb3Bm8J2VlmVwYXLii5VlcGFyc2zip6NlcGx1c+KpsWVwc2nOtWVwc2lsb25lcHNpds+1ZXFjaXJjZXFjb2xvbmVxc2ltZXFzbGFudGd0cmVxc2xhbnRsZXNzZXF1YWxzPWVxdWVzdOKJn2VxdWl2ZXF1aXZEROKpuGVxdnBhcnNs4qelZXJEb3TiiZNlcmFycuKlsWVzY3LihK9lc2RvdGVzaW1ldGHOt2V0aMOwZXVtbMOrZXVyb+KCrGV4Y2whZXhpc3RleHBlY3RhdGlvbmV4cG9uZW50aWFsZWZhbGxpbmdkb3RzZXFmY3nRhGZlbWFsZeKZgGZmaWxpZ++sg2ZmbGln76yAZmZsbGln76yEZmZy8J2Uo2ZpbGln76yBZmpsaWdmamZsYXTima1mbGxpZ++sgmZsdG5z4paxZm5vZsaSZm9wZvCdlZdmb3JhbGxmb3Jr4ouUZm9ya3biq5lmcGFydGludOKojWZyYWMxMsK9ZnJhYzEz4oWTZnJhYzE0wrxmcmFjMTXihZVmcmFjMTbihZlmcmFjMTjihZtmcmFjMjPihZRmcmFjMjXihZZmcmFjMzTCvmZyYWMzNeKFl2ZyYWMzOOKFnGZyYWM0NeKFmGZyYWM1NuKFmmZyYWM1OOKFnWZyYWM3OOKFnmZyYXNs4oGEZnJvd27ijKJmc2Ny8J2Su2dFZ0Vs4qqMZ2FjdXRlx7VnYW1tYc6zZ2FtbWFkZ2Fw4qqGZ2JyZXZlxJ9nY2lyY8SdZ2N50LNnZG90xKFnZWdlbGdlcWdlcXFnZXFzbGFudGdlc2dlc2Nj4qqpZ2VzZG904qqAZ2VzZG90b+Kqgmdlc2RvdG9s4qqEZ2VzbOKLm++4gGdlc2xlc+KqlGdmcvCdlKRnZ2dnZ2dpbWVs4oS3Z2pjedGTZ2xnbEXiqpJnbGHiqqVnbGriqqRnbkXiialnbmFw4qqKZ25hcHByb3hnbmXiqohnbmVxZ25lcXFnbnNpbeKLp2dvcGbwnZWYZ3JhdmVnc2Ny4oSKZ3NpbWdzaW1l4qqOZ3NpbWziqpBndGd0Y2PiqqdndGNpcuKpumd0ZG904ouXZ3RsUGFy4qaVZ3RxdWVzdOKpvGd0cmFwcHJveGd0cmFycuKluGd0cmRvdGd0cmVxbGVzc2d0cmVxcWxlc3NndHJsZXNzZ3Ryc2ltZ3ZlcnRuZXFx4omp77iAZ3ZuRWhBcnJoYWlyc3BoYWxmaGFtaWx0aGFyZGN50YpoYXJyaGFycmNpcuKliGhhcnJ34oataGJhcuKEj2hjaXJjxKVoZWFydHPimaVoZWFydHN1aXRoZWxsaXDigKZoZXJjb27iirloZnLwnZSlaGtzZWFyb3fipKVoa3N3YXJvd+KkpmhvYXJy4oe/aG9tdGh04oi7aG9va2xlZnRhcnJvd+KGqWhvb2tyaWdodGFycm934oaqaG9wZvCdlZlob3JiYXLigJVoc2Ny8J2SvWhzbGFzaGhzdHJva8SnaHlidWxs4oGDaHlwaGVuaWFjdXRlw61pY2ljaXJjw65pY3nQuGllY3nQtWlleGNswqFpZmZpZnLwnZSmaWdyYXZlw6xpaWlpaWludOKojGlpaW504oitaWluZmlu4qecaWlvdGHihKlpamxpZ8SzaW1hY3LEq2ltYWdlaW1hZ2xpbmVpbWFncGFydGltYXRoxLFpbW9m4oq3aW1wZWTGtWluaW5jYXJl4oSFaW5maW7iiJ5pbmZpbnRpZeKnnWlub2RvdGludGludGNhbOKKumludGVnZXJzaW50ZXJjYWxpbnRsYXJoa+Kol2ludHByb2TiqLxpb2N50ZFpb2dvbsSvaW9wZvCdlZppb3RhzrlpcHJvZGlxdWVzdMK/aXNjcvCdkr5pc2luaXNpbkXii7lpc2luZG904ou1aXNpbnPii7Rpc2luc3bii7Npc2ludml0aXRpbGRlxKlpdWtjedGWaXVtbMOvamNpcmPEtWpjedC5amZy8J2Up2ptYXRoyLdqb3Bm8J2Vm2pzY3LwnZK/anNlcmN50ZhqdWtjedGUa2FwcGHOumthcHBhds+wa2NlZGlsxLdrY3nQumtmcvCdlKhrZ3JlZW7EuGtoY3nRhWtqY3nRnGtvcGbwnZWca3NjcvCdk4BsQWFycmxBcnJsQXRhaWzipJtsQmFycuKkjmxFbEVn4qqLbEhhcuKlomxhY3V0ZcS6bGFlbXB0eXbiprRsYWdyYW5sYW1iZGHOu2xhbmdsYW5nZOKmkWxhbmdsZWxhcOKqhWxhcXVvwqtsYXJybGFycmJsYXJyYmZz4qSfbGFycmZz4qSdbGFycmhrbGFycmxw4oarbGFycnBs4qS5bGFycnNpbeKls2xhcnJ0bOKGomxhdOKqq2xhdGFpbOKkmWxhdGXiqq1sYXRlc+Kqre+4gGxiYXJy4qSMbGJicmvinbJsYnJhY2V7bGJyYWNrW2xicmtl4qaLbGJya3NsZOKmj2xicmtzbHXipo1sY2Fyb27EvmxjZWRpbMS8bGNlaWxsY3VibGN50LtsZGNh4qS2bGRxdW9sZHF1b3JsZHJkaGFy4qWnbGRydXNoYXLipYtsZHNo4oaybGXiiaRsZWZ0YXJyb3dsZWZ0YXJyb3d0YWlsbGVmdGhhcnBvb25kb3dubGVmdGhhcnBvb251cGxlZnRsZWZ0YXJyb3dz4oeHbGVmdHJpZ2h0YXJyb3dsZWZ0cmlnaHRhcnJvd3NsZWZ0cmlnaHRoYXJwb29uc2xlZnRyaWdodHNxdWlnYXJyb3dsZWZ0dGhyZWV0aW1lc+KLi2xlZ2xlcWxlcXFsZXFzbGFudGxlc2xlc2Nj4qqobGVzZG904qm/bGVzZG90b+KqgWxlc2RvdG9y4qqDbGVzZ+KLmu+4gGxlc2dlc+Kqk2xlc3NhcHByb3hsZXNzZG904ouWbGVzc2VxZ3RybGVzc2VxcWd0cmxlc3NndHJsZXNzc2ltbGZpc2h04qW8bGZsb29ybGZy8J2UqWxnbGdF4qqRbGhhcmRsaGFydWxoYXJ1bOKlqmxoYmxr4paEbGpjedGZbGxsbGFycmxsY29ybmVybGxoYXJk4qWrbGx0cmnil7psbWlkb3TFgGxtb3VzdOKOsGxtb3VzdGFjaGVsbkXiiahsbmFw4qqJbG5hcHByb3hsbmXiqodsbmVxbG5lcXFsbnNpbeKLpmxvYW5n4p+sbG9hcnLih71sb2Jya2xvbmdsZWZ0YXJyb3dsb25nbGVmdHJpZ2h0YXJyb3dsb25nbWFwc3Rv4p+8bG9uZ3JpZ2h0YXJyb3dsb29wYXJyb3dsZWZ0bG9vcGFycm93cmlnaHTihqxsb3BhcuKmhWxvcGbwnZWdbG9wbHVz4qitbG90aW1lc+KotGxvd2FzdOKIl2xvd2JhcmxveuKXimxvemVuZ2Vsb3pmbHBhcihscGFybHTippNscmFycmxyY29ybmVybHJoYXJscmhhcmTipa1scm3igI5scnRyaeKKv2xzYXF1b+KAuWxzY3LwnZOBbHNobHNpbWxzaW1l4qqNbHNpbWfiqo9sc3FibHNxdW9sc3F1b3LigJpsc3Ryb2vFgmx0bHRjY+Kqpmx0Y2ly4qm5bHRkb3RsdGhyZWVsdGltZXPii4lsdGxhcnLipbZsdHF1ZXN04qm7bHRyUGFy4qaWbHRyaeKXg2x0cmllbHRyaWZsdXJkc2hhcuKlimx1cnVoYXLipaZsdmVydG5lcXHiiajvuIBsdm5FbUREb3TiiLptYWNywq9tYWxl4pmCbWFsdOKcoG1hbHRlc2VtYXBtYXBzdG9tYXBzdG9kb3dubWFwc3RvbGVmdG1hcHN0b3VwbWFya2Vy4paubWNvbW1h4qipbWN50LxtZGFzaOKAlG1lYXN1cmVkYW5nbGVtZnLwnZSqbWhv4oSnbWljcm/CtW1pZG1pZGFzdG1pZGNpcuKrsG1pZGRvdG1pbnVz4oiSbWludXNibWludXNkbWludXNkdeKoqm1sY3Diq5ttbGRybW5wbHVzbW9kZWxz4oqnbW9wZvCdlZ5tcG1zY3LwnZOCbXN0cG9zbXXOvG11bHRpbWFw4oq4bXVtYXBuR2fii5nMuG5HdOKJq+KDkm5HdHZuTGVmdGFycm934oeNbkxlZnRyaWdodGFycm934oeObkxs4ouYzLhuTHTiiarig5JuTHR2blJpZ2h0YXJyb3fih49uVkRhc2jiiq9uVmRhc2jiiq5uYWJsYW5hY3V0ZcWEbmFuZ+KIoOKDkm5hcG5hcEXiqbDMuG5hcGlk4omLzLhuYXBvc8WJbmFwcHJveG5hdHVy4pmubmF0dXJhbG5hdHVyYWxzbmJzcG5idW1wbmJ1bXBlbmNhcOKpg25jYXJvbsWIbmNlZGlsxYZuY29uZ25jb25nZG904qmtzLhuY3Vw4qmCbmN50L1uZGFzaOKAk25lbmVBcnLih5duZWFyaGvipKRuZWFycm5lYXJyb3duZWRvdOKJkMy4bmVxdWl2bmVzZWFy4qSobmVzaW1uZXhpc3RuZXhpc3RzbmZy8J2Uq25nRW5nZW5nZXFuZ2VxcW5nZXFzbGFudG5nZXNuZ3NpbW5ndG5ndHJuaEFycm5oYXJy4oaubmhwYXLiq7JuaW5pc+KLvG5pc2Tii7puaXZuamN50ZpubEFycm5sReKJpsy4bmxhcnLihppubGRy4oClbmxlbmxlZnRhcnJvd25sZWZ0cmlnaHRhcnJvd25sZXFubGVxcW5sZXFzbGFudG5sZXNubGVzc25sc2ltbmx0bmx0cmlubHRyaWVubWlkbm9wZvCdlZ9ub3TCrG5vdGlubm90aW5F4ou5zLhub3RpbmRvdOKLtcy4bm90aW52YW5vdGludmLii7dub3RpbnZj4ou2bm90bmlub3RuaXZhbm90bml2YuKLvm5vdG5pdmPii71ucGFybnBhcmFsbGVsbnBhcnNs4qu94oOlbnBhcnTiiILMuG5wb2xpbnTiqJRucHJucHJjdWVucHJlbnByZWNucHJlY2VxbnJBcnJucmFycuKGm25yYXJyY+Kks8y4bnJhcnJ34oadzLhucmlnaHRhcnJvd25ydHJpbnJ0cmllbnNjbnNjY3VlbnNjZW5zY3LwnZODbnNob3J0bWlkbnNob3J0cGFyYWxsZWxuc2ltbnNpbWVuc2ltZXFuc21pZG5zcGFybnNxc3ViZW5zcXN1cGVuc3Vi4oqEbnN1YkXiq4XMuG5zdWJlbnN1YnNldG5zdWJzZXRlcW5zdWJzZXRlcXFuc3VjY25zdWNjZXFuc3Vw4oqFbnN1cEXiq4bMuG5zdXBlbnN1cHNldG5zdXBzZXRlcW5zdXBzZXRlcXFudGdsbnRpbGRlw7FudGxnbnRyaWFuZ2xlbGVmdG50cmlhbmdsZWxlZnRlcW50cmlhbmdsZXJpZ2h0bnRyaWFuZ2xlcmlnaHRlcW51zr1udW0jbnVtZXJv4oSWbnVtc3DigIdudkRhc2jiiq1udkhhcnLipIRudmFw4omN4oOSbnZkYXNo4oqsbnZnZeKJpeKDkm52Z3Q+4oOSbnZpbmZpbuKnnm52bEFycuKkgm52bGXiiaTig5Judmx0POKDkm52bHRyaWXiirTig5JudnJBcnLipINudnJ0cmll4oq14oOSbnZzaW3iiLzig5Jud0FycuKHlm53YXJoa+Kko253YXJybndhcnJvd253bmVhcuKkp29Tb2FjdXRlw7NvYXN0b2Npcm9jaXJjw7RvY3nQvm9kYXNob2RibGFjxZFvZGl24qi4b2RvdG9kc29sZOKmvG9lbGlnxZNvZmNpcuKmv29mcvCdlKxvZ29uy5tvZ3JhdmXDsm9ndOKngW9oYmFy4qa1b2htb2ludG9sYXJyb2xjaXLipr5vbGNyb3Nz4qa7b2xpbmVvbHTip4BvbWFjcsWNb21lZ2HPiW9taWNyb27Ov29taWTiprZvbWludXNvb3Bm8J2VoG9wYXLiprdvcGVycOKmuW9wbHVzb3LiiKhvcmFycm9yZOKpnW9yZGVy4oS0b3JkZXJvZm9yZGbCqm9yZG3Cum9yaWdvZuKKtm9yb3LiqZZvcnNsb3Bl4qmXb3J24qmbb3Njcm9zbGFzaMO4b3NvbOKKmG90aWxkZcO1b3RpbWVzb3RpbWVzYXPiqLZvdW1sw7ZvdmJhcuKMvXBhcnBhcmHCtnBhcmFsbGVscGFyc2lt4quzcGFyc2ziq71wYXJ0cGN50L9wZXJjbnQlcGVyaW9kLnBlcm1pbOKAsHBlcnBwZXJ0ZW5r4oCxcGZy8J2UrXBoac+GcGhpds+VcGhtbWF0cGhvbmXimI5wac+AcGl0Y2hmb3JrcGl2z5ZwbGFuY2twbGFuY2to4oSOcGxhbmt2cGx1cytwbHVzYWNpcuKoo3BsdXNicGx1c2NpcuKoonBsdXNkb3BsdXNkdeKopXBsdXNl4qmycGx1c21ucGx1c3NpbeKopnBsdXN0d2/iqKdwbXBvaW50aW504qiVcG9wZvCdlaFwb3VuZMKjcHJwckXiqrNwcmFw4qq3cHJjdWVwcmVwcmVjcHJlY2FwcHJveHByZWNjdXJseWVxcHJlY2VxcHJlY25hcHByb3jiqrlwcmVjbmVxceKqtXByZWNuc2lt4ouocHJlY3NpbXByaW1l4oCycHJpbWVzcHJuRXBybmFwcHJuc2ltcHJvZHByb2ZhbGFy4oyucHJvZmxpbmXijJJwcm9mc3VyZuKMk3Byb3Bwcm9wdG9wcnNpbXBydXJlbOKKsHBzY3LwnZOFcHNpz4hwdW5jc3DigIhxZnLwnZSucWludHFvcGbwnZWicXByaW1l4oGXcXNjcvCdk4ZxdWF0ZXJuaW9uc3F1YXRpbnTiqJZxdWVzdD9xdWVzdGVxcXVvdHJBYXJyckFycnJBdGFpbOKknHJCYXJyckhhcuKlpHJhY2XiiL3MsXJhY3V0ZcWVcmFkaWNyYWVtcHR5duKms3JhbmdyYW5nZOKmknJhbmdl4qalcmFuZ2xlcmFxdW/Cu3JhcnJyYXJyYXDipbVyYXJyYnJhcnJiZnPipKByYXJyY+Kks3JhcnJmc+KknnJhcnJoa3JhcnJscHJhcnJwbOKlhXJhcnJzaW3ipbRyYXJydGzihqNyYXJyd+KGnXJhdGFpbOKkmnJhdGlv4oi2cmF0aW9uYWxzcmJhcnJyYmJya+Kds3JicmFjZX1yYnJhY2tdcmJya2XipoxyYnJrc2xk4qaOcmJya3NsdeKmkHJjYXJvbsWZcmNlZGlsxZdyY2VpbHJjdWJyY3nRgHJkY2HipLdyZGxkaGFy4qWpcmRxdW9yZHF1b3JyZHNo4oazcmVhbHJlYWxpbmVyZWFscGFydHJlYWxzcmVjdOKWrXJlZ3JmaXNodOKlvXJmbG9vcnJmcvCdlK9yaGFyZHJoYXJ1cmhhcnVs4qWscmhvz4FyaG92z7FyaWdodGFycm93cmlnaHRhcnJvd3RhaWxyaWdodGhhcnBvb25kb3ducmlnaHRoYXJwb29udXByaWdodGxlZnRhcnJvd3NyaWdodGxlZnRoYXJwb29uc3JpZ2h0cmlnaHRhcnJvd3Pih4lyaWdodHNxdWlnYXJyb3dyaWdodHRocmVldGltZXPii4xyaW5ny5pyaXNpbmdkb3RzZXFybGFycnJsaGFycmxt4oCPcm1vdXN04o6xcm1vdXN0YWNoZXJubWlk4quucm9hbmfin61yb2FycuKHvnJvYnJrcm9wYXLipoZyb3Bm8J2Vo3JvcGx1c+KornJvdGltZXPiqLVycGFyKXJwYXJndOKmlHJwcG9saW504qiScnJhcnJyc2FxdW/igLpyc2Ny8J2Th3JzaHJzcWJyc3F1b3JzcXVvcnJ0aHJlZXJ0aW1lc+KLinJ0cmnilrlydHJpZXJ0cmlmcnRyaWx0cmnip45ydWx1aGFy4qWocnjihJ5zYWN1dGXFm3NicXVvc2NzY0XiqrRzY2Fw4qq4c2Nhcm9uxaFzY2N1ZXNjZXNjZWRpbMWfc2NpcmPFnXNjbkXiqrZzY25hcOKqunNjbnNpbeKLqXNjcG9saW504qiTc2NzaW1zY3nRgXNkb3Tii4VzZG90YnNkb3Rl4qmmc2VBcnLih5hzZWFyaGtzZWFycnNlYXJyb3dzZWN0wqdzZW1pO3Nlc3dhcuKkqXNldG1pbnVzc2V0bW5zZXh04py2c2Zy8J2UsHNmcm93bnNoYXJw4pmvc2hjaGN50YlzaGN50YhzaG9ydG1pZHNob3J0cGFyYWxsZWxzaHnCrXNpZ21hz4NzaWdtYWbPgnNpZ21hdnNpbXNpbWRvdOKpqnNpbWVzaW1lcXNpbWfiqp5zaW1nReKqoHNpbWziqp1zaW1sReKqn3NpbW5l4omGc2ltcGx1c+KopHNpbXJhcnLipbJzbGFycnNtYWxsc2V0bWludXNzbWFzaHDiqLNzbWVwYXJzbOKnpHNtaWRzbWlsZeKMo3NtdOKqqnNtdGXiqqxzbXRlc+KqrO+4gHNvZnRjedGMc29sL3NvbGLip4Rzb2xiYXLijL9zb3Bm8J2VpHNwYWRlc+KZoHNwYWRlc3VpdHNwYXJzcWNhcHNxY2Fwc+KKk++4gHNxY3Vwc3FjdXBz4oqU77iAc3FzdWJzcXN1YmVzcXN1YnNldHNxc3Vic2V0ZXFzcXN1cHNxc3VwZXNxc3Vwc2V0c3FzdXBzZXRlcXNxdXNxdWFyZXNxdWFyZnNxdWZzcmFycnNzY3LwnZOIc3NldG1uc3NtaWxlc3N0YXJmc3RhcuKYhnN0YXJmc3RyYWlnaHRlcHNpbG9uc3RyYWlnaHRwaGlzdHJuc3N1YuKKgnN1YkXiq4VzdWJkb3Tiqr1zdWJlc3ViZWRvdOKrg3N1Ym11bHTiq4FzdWJuReKri3N1Ym5l4oqKc3VicGx1c+Kqv3N1YnJhcnLipblzdWJzZXRzdWJzZXRlcXN1YnNldGVxcXN1YnNldG5lcXN1YnNldG5lcXFzdWJzaW3iq4dzdWJzdWLiq5VzdWJzdXDiq5NzdWNjc3VjY2FwcHJveHN1Y2NjdXJseWVxc3VjY2Vxc3VjY25hcHByb3hzdWNjbmVxcXN1Y2Nuc2ltc3VjY3NpbXN1bXN1bmfimapzdXBzdXAxwrlzdXAywrJzdXAzwrNzdXBF4quGc3VwZG904qq+c3VwZHN1YuKrmHN1cGVzdXBlZG904quEc3VwaHNvbOKfiXN1cGhzdWLiq5dzdXBsYXJy4qW7c3VwbXVsdOKrgnN1cG5F4quMc3VwbmXiiotzdXBwbHVz4quAc3Vwc2V0c3Vwc2V0ZXFzdXBzZXRlcXFzdXBzZXRuZXFzdXBzZXRuZXFxc3Vwc2lt4quIc3Vwc3Vi4quUc3Vwc3Vw4quWc3dBcnLih5lzd2FyaGtzd2FycnN3YXJyb3dzd253YXLipKpzemxpZ8OfdGFyZ2V04oyWdGF1z4R0YnJrdGNhcm9uxaV0Y2VkaWzFo3RjedGCdGRvdHRlbHJlY+KMlXRmcvCdlLF0aGVyZTR0aGVyZWZvcmV0aGV0Yc64dGhldGFzeW3PkXRoZXRhdnRoaWNrYXBwcm94dGhpY2tzaW10aGluc3B0aGthcHRoa3NpbXRob3Juw750aWxkZXRpbWVzw5d0aW1lc2J0aW1lc2JhcuKosXRpbWVzZOKosHRpbnR0b2VhdG9wdG9wYm904oy2dG9wY2ly4quxdG9wZvCdlaV0b3Bmb3Jr4quadG9zYXRwcmltZeKAtHRyYWRldHJpYW5nbGXilrV0cmlhbmdsZWRvd250cmlhbmdsZWxlZnR0cmlhbmdsZWxlZnRlcXRyaWFuZ2xlceKJnHRyaWFuZ2xlcmlnaHR0cmlhbmdsZXJpZ2h0ZXF0cmlkb3Til6x0cmlldHJpbWludXPiqLp0cmlwbHVz4qi5dHJpc2Lip410cml0aW1l4qi7dHJwZXppdW3ij6J0c2Ny8J2TiXRzY3nRhnRzaGN50Zt0c3Ryb2vFp3R3aXh0dHdvaGVhZGxlZnRhcnJvd3R3b2hlYWRyaWdodGFycm93dUFycnVIYXLipaN1YWN1dGXDunVhcnJ1YnJjedGedWJyZXZlxa11Y2lyY8O7dWN50YN1ZGFycnVkYmxhY8WxdWRoYXJ1ZmlzaHTipb51ZnLwnZSydWdyYXZlw7l1aGFybHVoYXJydWhibGviloB1bGNvcm7ijJx1bGNvcm5lcnVsY3JvcOKMj3VsdHJp4pe4dW1hY3LFq3VtbHVvZ29uxbN1b3Bm8J2VpnVwYXJyb3d1cGRvd25hcnJvd3VwaGFycG9vbmxlZnR1cGhhcnBvb25yaWdodHVwbHVzdXBzac+FdXBzaWh1cHNpbG9udXB1cGFycm93c+KHiHVyY29ybuKMnXVyY29ybmVydXJjcm9w4oyOdXJpbmfFr3VydHJp4pe5dXNjcvCdk4p1dGRvdOKLsHV0aWxkZcWpdXRyaXV0cmlmdXVhcnJ1dW1sw7x1d2FuZ2xl4qandkFycnZCYXLiq6h2QmFyduKrqXZEYXNodmFuZ3J04qacdmFyZXBzaWxvbnZhcmthcHBhdmFybm90aGluZ3ZhcnBoaXZhcnBpdmFycHJvcHRvdmFycnZhcnJob3ZhcnNpZ21hdmFyc3Vic2V0bmVx4oqK77iAdmFyc3Vic2V0bmVxceKri++4gHZhcnN1cHNldG5lceKKi++4gHZhcnN1cHNldG5lcXHiq4zvuIB2YXJ0aGV0YXZhcnRyaWFuZ2xlbGVmdHZhcnRyaWFuZ2xlcmlnaHR2Y3nQsnZkYXNodmVldmVlYmFy4oq7dmVlZXHiiZp2ZWxsaXDii652ZXJiYXJ2ZXJ0dmZy8J2Us3ZsdHJpdm5zdWJ2bnN1cHZvcGbwnZWndnByb3B2cnRyaXZzY3LwnZOLdnN1Ym5FdnN1Ym5ldnN1cG5FdnN1cG5ldnppZ3phZ+KmmndjaXJjxbV3ZWRiYXLiqZ93ZWRnZXdlZGdlceKJmXdlaWVycOKEmHdmcvCdlLR3b3Bm8J2VqHdwd3J3cmVhdGh3c2Ny8J2TjHhjYXB4Y2lyY3hjdXB4ZHRyaXhmcvCdlLV4aEFycnhoYXJyeGnOvnhsQXJyeGxhcnJ4bWFweG5pc+KLu3hvZG90eG9wZvCdlal4b3BsdXN4b3RpbWV4ckFycnhyYXJyeHNjcvCdk414c3FjdXB4dXBsdXN4dXRyaXh2ZWV4d2VkZ2V5YWN1dGXDvXlhY3nRj3ljaXJjxbd5Y3nRi3llbsKleWZy8J2UtnlpY3nRl3lvcGbwnZWqeXNjcvCdk455dWN50Y55dW1sw796YWN1dGXFunpjYXJvbsW+emN50Ld6ZG90xbx6ZWV0cmZ6ZXRhzrZ6ZnLwnZS3emhjedC2emlncmFycuKHnXpvcGbwnZWrenNjcvCdk496d2rigI16d25q4oCMAADwLBsABQAAAPUsGwACAAAA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qkkbAAYAAAC0LRsAAwAAALBJGwAEAAAAtEkbAAIAAAC2SRsABAAAALpJGwADAAAAvUkbAAcAAADESRsAAwAAAMdJGwADAAAAykkbAAQAAADOSRsABgAAAEI1GwADAAAA1EkbAAcAAADbSRsAAwAAAN5JGwAGAAAAA0UbAAMAAADkSRsABwAAAOtJGwADAAAA7kkbAAgAAAD2SRsAAwAAAPlJGwAJAAAAAkobAAMAAAAFShsACAAAAA1KGwADAAAAEEobAAcAAAAXShsAAwAAABpKGwAPAAAAKUobAAMAAAAsShsADQAAADlKGwADAAAAPEobAAgAAABEShsAAwAAAEdKGwAGAAAABEYbAAMAAABNShsACAAAAI9GGwADAAAAVUobAAYAAABbShsAAwAAAF5KGwAMAAAAakobAAMAAABtShsACwAAAGszGwADAAAAeEobAA0AAACFShsAAwAAAIhKGwARAAAAmUobAAMAAACcShsAEQAAAK1KGwADAAAAsEobABIAAADCShsAAwAAAMVKGwAFAAAAykobAAMAAADNShsABQAAANJKGwADAAAA1UobAAUAAADaShsAAwAAAN1KGwAFAAAA4kobAAMAAADlShsABQAAAOpKGwADAAAA7UobAAMAAADwShsABAAAAPRKGwAHAAAA+0obAAYAAAABSxsABAAAAAVLGwADAAAACEsbAAQAAAAMSxsABAAAABBLGwADAAAAa0UbAAMAAAATSxsABgAAAGtFGwADAAAAGUsbAAYAAAAfSxsAAwAAACJLGwAFAAAAJ0sbAAMAAAAqSxsABQAAAC9LGwADAAAAMksbAAUAAAA3SxsAAwAAADpLGwAFAAAAP0sbAAMAAABCSxsABAAAAEZLGwADAAAASUsbAAUAAABOSxsAAwAAAFFLGwAFAAAAVksbAAMAAABZSxsABQAAAF5LGwADAAAAYUsbAAUAAABmSxsAAwAAAGlLGwAFAAAAbksbAAMAAABxSxsABQAAAHZLGwADAAAAeUsbAAUAAAB+SxsAAwAAAIFLGwAFAAAAhksbAAMAAACJSxsABAAAAI1LGwADAAAAkEsbAAUAAACVSxsAAwAAAJhLGwAFAAAAnUsbAAMAAACgSxsABQAAAKVLGwADAAAAqEsbAAUAAACtSxsAAwAAALBLGwAFAAAAtUsbAAMAAAC4SxsABQAAAL1LGwADAAAAwEsbAAYAAADGSxsAAwAAAMlLGwAFAAAAzksbAAMAAADRSxsABQAAANZLGwADAAAA2UsbAAUAAADeSxsAAwAAAOFLGwAFAAAA5ksbAAMAAADpSxsABAAAAKY0GwADAAAA7UsbAAUAAADySxsAAwAAAPVLGwAFAAAA+ksbAAMAAAD9SxsABQAAAAJMGwADAAAABUwbAAUAAAAKTBsAAwAAAA1MGwAIAAAAFUwbAAMAAAAYTBsABwAAAB9MGwADAAAAIkwbAAgAAAAqTBsAAwAAAC1MGwAFAAAAMkwbAAMAAAA1TBsABQAAADpMGwADAAAAPUwbAAUAAABCTBsAAwAAAEVMGwAFAAAASkwbAAMAAABNTBsABAAAAFFMGwADAAAAVEwbAAUAAABZTBsAAwAAAFxMGwAFAAAAYUwbAAMAAABkTBsABQAAAGlMGwADAAAAbEwbAAUAAABxTBsAAwAAAHRMGwAFAAAAeUwbAAMAAAB8TBsABQAAAIFMGwADAAAAhEwbAAYAAAA6SRsAAwAAAIpMGwAFAAAA0S0bAAIAAACPTBsABgAAAJVMGwACAAAAl0wbAAQAAACbTBsABAAAAJ9MGwAFAAAApEwbAAMAAACnTBsABAAAAERJGwADAAAAq0wbAAUAAABQSRsAAwAAALBMGwAEAAAAtEwbAAEAAAC1TBsABQAAALpMGwADAAAAvUwbAAgAAADFTBsAAwAAAMhMGwAEAAAAzEwbAAMAAADPTBsABgAAAMxMGwADAAAA1UwbAAQAAADdLRsAAwAAANlMGwAFAAAA3kwbAAMAAADhTBsABQAAAMo0GwADAAAA5kwbAAYAAADKNBsAAwAAAOxMGwAGAAAA8kwbAAIAAAD0TBsAAwAAAPdMGwADAAAA+kwbAAYAAAAATRsAAwAAAANNGwAIAAAAC00bAAMAAAAOTRsABgAAABRNGwADAAAAF00bAAYAAAAdTRsAAwAAACBNGwAGAAAAJk0bAAMAAAApTRsABAAAAC1NGwAGAAAAM00bAAUAAAA4TRsAAwAAADtNGwAFAAAAbzQbAAIAAABATRsABQAAAEVNGwADAAAASE0bAAYAAABOTRsAAgAAAFBNGwAGAAAAVk0bAAIAAABYTRsABQAAAF1NGwACAAAAX00bAAUAAABkTRsAAwAAAGdNGwAHAAAAbk0bAAMAAABxTRsABAAAAHVNGwACAAAAd00bAAUAAABJLhsAAgAAAHxNGwAHAAAAg00bAAMAAACGTRsABAAAAIpNGwACAAAAjE0bAAkAAABULhsAAgAAAJVNGwADAAAAmE0bAAQAAACcTRsABAAAAKBNGwACAAAAok0bAAUAAACnTRsAAwAAAKpNGwAJAAAAp00bAAMAAACzTRsAAwAAALZNGwACAAAAuE0bAAMAAAC7TRsAAwAAAL5NGwAEAAAAwk0bAAMAAADFTRsABAAAAMlNGwACAAAAy00bAAYAAADRTRsAAwAAANRNGwAPAAAA400bAAMAAADmTRsAEAAAAPZNGwADAAAA+U0bAAgAAACqPxsAAgAAAAFOGwAIAAAACU4bAAMAAAAMThsACgAAABZOGwADAAAAGU4bAAsAAAAkThsAAwAAACdOGwALAAAAMk4bAAMAAAA1ThsABAAAANFNGwADAAAAOU4bAAgAAABBThsAAwAAAEROGwAGAAAASk4bAAMAAABNThsABwAAAFROGwADAAAAV04bAAUAAABcThsAAwAAAF9OGwAIAAAAXE4bAAMAAABnThsABQAAAGxOGwABAAAAbU4bAAYAAABuLRsAAwAAAHNOGwAHAAAAbi0bAAMAAAB6ThsABQAAAH9OGwABAAAAgE4bAAYAAACGThsAAQAAAIdOGwAEAAAAi04bAAMAAACOThsABgAAAIZCGwADAAAAlE4bAAoAAACLThsAAwAAAJ5OGwAJAAAAFC8bAAMAAACnThsABAAAAD9EGwADAAAAq04bAAcAAACyThsAAwAAALVOGwAGAAAADS8bAAMAAAC7ThsABAAAAL9OGwAEAAAAw04bAAYAAAAgLxsAAwAAAMlOGwAEAAAA6i0bAAIAAADNThsABgAAANNOGwADAAAA1k4bAAUAAADbThsAAwAAAN5OGwAFAAAA404bAAMAAADmThsABAAAAOpOGwAEAAAA7k4bAAQAAADyThsAAwAAAPVOGwAFAAAA+k4bAAMAAAD9ThsABAAAAAFPGwADAAAABE8bAAUAAAAJTxsAAwAAAAxPGwAFAAAAEU8bAAMAAAAUTxsABwAAABtPGwADAAAAHk8bAAcAAAAlTxsAAwAAAChPGwAFAAAALU8bAAMAAAAwTxsABQAAADVPGwADAAAAOE8bAAYAAAA+TxsAAwAAAEFPGwAHAAAASE8bAAMAAABLTxsAAwAAAE5PGwADAAAAUU8bAAgAAABZTxsAAwAAAFxPGwAGAAAAYk8bAAMAAABlTxsABgAAAGtPGwADAAAAbk8bAAYAAAB0TxsAAwAAAHdPGwAFAAAAfE8bAAMAAAB/TxsABAAAAINPGwAGAAAAiU8bAAYAAACPTxsAAwAAAJJPGwAHAAAAmU8bAAMAAACcTxsACwAAAC1PGwADAAAAp08bAAsAAAA1TxsAAwAAALJPGwAIAAAAuk8bAAMAAAC9TxsACgAAAMdPGwADAAAAyk8bAAYAAADQTxsAAgAAANJPGwAOAAAAPk8bAAMAAADgTxsADwAAAI9PGwADAAAA708bAAUAAAC6TxsAAwAAAPRPGwAFAAAAx08bAAMAAAD5TxsACAAAAKsuGwADAAAAAVAbAAUAAAAGUBsAAwAAAAlQGwAGAAAAD1AbAAMAAAASUBsABAAAAIEwGwADAAAAFlAbAAQAAAAaUBsAAwAAAB1QGwAGAAAAI1AbAAMAAAAmUBsABgAAACxQGwADAAAAL1AbAAQAAABnMRsAAwAAADNQGwAEAAAAN1AbAAMAAAA6UBsABQAAAB83GwADAAAAP1AbAAcAAABGUBsAAwAAAElQGwAFAAAA9C8bAAIAAABOUBsABgAAAFRQGwACAAAAVlAbAAMAAABZUBsAAgAAAFtQGwACAAAAMDAbAAMAAABdUBsABwAAAIkvGwADAAAAZFAbAAUAAABpUBsAAwAAAGxQGwAHAAAAc1AbAAMAAAB2UBsAAwAAAHlQGwACAAAAe1AbAAUAAACAUBsAAgAAAIJQGwAHAAAAiVAbAAMAAACMUBsABgAAAJJQGwADAAAAlVAbAAMAAACYUBsABAAAAJxQGwAFAAAA0jYbAAMAAAChUBsABQAAALlAGwADAAAAplAbAAQAAAAgMBsAAwAAAKpQGwAHAAAAIDAbAAMAAACxUBsACwAAALxQGwADAAAAv1AbAAUAAAC8UBsAAwAAAMRQGwADAAAAPjAbAAIAAADHUBsABwAAAM5QGwACAAAA0FAbAAUAAADVUBsAAwAAANhQGwADAAAA21AbAAIAAADdUBsABgAAANtQGwACAAAA41AbAA0AAADwUBsAAwAAAPNQGwAGAAAA8FAbAAMAAAD5UBsABAAAAP1QGwACAAAA/1AbAAYAAAAFURsAAwAAAAhRGwAGAAAADlEbAAMAAAARURsABgAAABdRGwABAAAAGFEbAAQAAAAcURsABAAAACBRGwADAAAA3C8bAAIAAAAjURsABQAAAFEwGwADAAAAKFEbAAgAAAAwURsAAwAAADNRGwAIAAAAO1EbAAMAAAA+URsABwAAAEVRGwADAAAASFEbAAkAAABRURsAAwAAAFRRGwAOAAAAmC0bAAMAAABiURsACQAAAGcxGwADAAAAa1EbAA4AAABpUBsAAwAAAHlRGwAPAAAA0jYbAAMAAACIURsAEAAAALlAGwADAAAAmFEbAAgAAACkPxsAAwAAAKBRGwAGAAAAplEbAAMAAACpURsABgAAAK9RGwADAAAAslEbAAQAAAC2URsABAAAALpRGwAEAAAAvlEbAAIAAADAURsABAAAAMRRGwADAAAAx1EbAAYAAADNURsAAgAAAM9RGwAFAAAA1FEbAAMAAADXURsABAAAANtRGwADAAAA3lEbAAUAAACZShsAAwAAAONRGwAFAAAAiTEbAAMAAADoURsABQAAAB9AGwADAAAA7VEbAAcAAAD0URsAAwAAAPdRGwAEAAAA+1EbAAIAAAD9URsACAAAAAVSGwADAAAACFIbAAUAAABzUBsAAwAAAA1SGwAEAAAAMFEbAAMAAAARUhsABgAAABdSGwACAAAAGVIbAAYAAAAfUhsAAwAAACJSGwAGAAAAKFIbAAIAAAAqUhsABAAAAC5SGwADAAAAMVIbAAUAAAA2UhsAAgAAADhSGwAGAAAAPlIbAAMAAABBUhsAAwAAAERSGwACAAAARlIbAAQAAABKUhsAAgAAAExSGwACAAAAMzMbAAMAAABOUhsABQAAAFNSGwADAAAAVlIbAAMAAABZUhsABAAAAF1SGwACAAAAX1IbAAMAAABiUhsABgAAAGhSGwACAAAAalIbAAMAAABtUhsAAwAAAHBSGwAGAAAAdlIbAAMAAAB5UhsAAgAAAHtSGwADAAAAflIbAAgAAACGUhsAAwAAAIlSGwADAAAAjFIbAAMAAACPUhsAAwAAAJJSGwADAAAAlVIbAAYAAACbUhsAAwAAAJ5SGwAFAAAAo1IbAAIAAAClUhsABQAAAKpSGwADAAAArVIbAAgAAACqUhsAAwAAALVSGwAGAAAAqlIbAAMAAAC7UhsABAAAAL9SGwADAAAAwlIbAAYAAADIUhsAAwAAAMtSGwAGAAAA0VIbAAMAAADUUhsAAwAAANdSGwACAAAA2VIbAAQAAADdUhsAAwAAAOBSGwAFAAAA5VIbAAIAAADnUhsABAAAAOtSGwAEAAAA71IbAAQAAADzUhsAAwAAAPZSGwAGAAAA/FIbAAMAAAD/UhsABQAAAARTGwADAAAAB1MbAAQAAAALUxsAAgAAAA1TGwAHAAAAC1MbAAIAAAAUUxsABQAAABlTGwACAAAAG1MbAAYAAAAuUhsAAwAAACFTGwAHAAAAPlIbAAMAAAAoUxsABQAAAPQyGwADAAAALVMbAAoAAABtUhsAAwAAADdTGwALAAAAklIbAAMAAABCUxsABgAAAEhTGwABAAAASVMbAAYAAABPUxsAAwAAAFJTGwAFAAAA8i4bAAMAAABXUxsABwAAAF5TGwADAAAAYVMbAAgAAABpUxsAAwAAAGxTGwAFAAAAcVMbAAMAAAB0UxsABQAAAHlTGwADAAAAfFMbAAQAAACAUxsAAwAAAINTGwAFAAAAUTAbAAMAAACIUxsABAAAAPQyGwADAAAAjFMbAAMAAACPUxsAAgAAAJFTGwADAAAAlFMbAAIAAACWUxsABAAAAJpTGwACAAAAnFMbAAQAAACgUxsAAwAAAKNTGwAEAAAAp1MbAAEAAACoUxsABQAAACQzGwADAAAArVMbAAsAAAAJMxsAAwAAALhTGwAMAAAAMzMbAAMAAADEUxsADQAAAFNSGwADAAAA0VMbAAMAAADUUxsAAgAAANZTGwAGAAAA3FMbAAMAAADfUxsABgAAAOVTGwADAAAA6FMbAAUAAADtUxsAAwAAAPBTGwAGAAAA9lMbAAMAAAD5UxsAAwAAAPxTGwAEAAAAAFQbAAUAAAAFVBsAAwAAAAhUGwAFAAAADVQbAAIAAAAPVBsABAAAABNUGwADAAAAFlQbAAUAAAAbVBsAAwAAAB5UGwAFAAAAI1QbAAMAAAAmVBsABAAAACpUGwACAAAALFQbAAQAAAAwVBsABAAAADRUGwAGAAAAfDMbAAMAAAA6VBsABAAAAD5UGwADAAAAQVQbAAUAAABGVBsAAwAAAElUGwAIAAAAUVQbAAMAAABUVBsABgAAAFpUGwACAAAAXFQbAAYAAABiVBsAAwAAAGVUGwAGAAAAa1QbAAIAAABtVBsABgAAAHNUGwADAAAAdlQbAAYAAAB8VBsAAwAAAH9UGwAGAAAAhVQbAAMAAACIVBsABgAAAI5UGwADAAAAkVQbAAYAAACXVBsAAwAAAJpUGwAGAAAAoFQbAAIAAACiVBsABgAAAKhUGwADAAAAq1QbAAYAAACxVBsAAwAAALRUGwAGAAAAulQbAAMAAAC9VBsABgAAAMNUGwADAAAAxlQbAAYAAADMVBsAAwAAAM9UGwAGAAAA1VQbAAMAAADYVBsABQAAAN1UGwADAAAA4FQbAAUAAADlVBsAAwAAAOhUGwAEAAAA7FQbAAQAAADwVBsAAgAAABA0GwADAAAA8lQbAAMAAAD1VBsAAwAAAPhUGwAGAAAA/lQbAAIAAAAAVRsABQAAAAVVGwACAAAAB1UbAAYAAADOUBsAAgAAAA1VGwADAAAAEFUbAAMAAAATVRsABgAAABlVGwACAAAAG1UbAAUAAAAgVRsAAgAAACJVGwADAAAAJVUbAAIAAAAnVRsABAAAACtVGwACAAAALVUbAAIAAADqMxsAAwAAAC9VGwADAAAA/TMbAAMAAAAyVRsAAwAAAOozGwADAAAANVUbAAQAAAAQNBsAAwAAADlVGwAIAAAAQzQbAAMAAABBVRsAAwAAAEM0GwADAAAARFUbAAUAAABJVRsAAwAAAExVGwAGAAAAUlUbAAMAAABVVRsABwAAAFxVGwADAAAAX1UbAAgAAABnVRsAAwAAAGpVGwAEAAAAblUbAAYAAAB0VRsABgAAAHpVGwADAAAAfVUbAAMAAACAVRsABAAAAIRVGwACAAAAXzQbAAMAAACGVRsAAwAAANMzGwADAAAAiVUbAAUAAACOVRsAAwAAAJFVGwAEAAAAlVUbAAIAAACXVRsAAgAAAC80GwADAAAAmVUbAAMAAACcVRsAAwAAAJ9VGwADAAAAolUbAAMAAAClVRsAAwAAAKhVGwADAAAAq1UbAAMAAACuVRsAAwAAALFVGwAEAAAAtVUbAAMAAAC4VRsACAAAALVVGwADAAAAwFUbAAMAAADDVRsAAwAAAMZVGwAEAAAAw1UbAAMAAADKVRsABQAAAK5VGwADAAAAz1UbAAUAAADUVRsAAwAAANdVGwAEAAAA21UbAAQAAADfVRsABQAAAAYwGwABAAAA5FUbAAQAAADoVRsAAwAAAOtVGwAEAAAAUjQbAAMAAADvVRsABQAAAPRVGwADAAAA91UbAAUAAAD8VRsAAwAAAP9VGwACAAAAmDMbAAEAAAABVhsABAAAAAVWGwADAAAACFYbAAUAAAANVhsAAwAAABBWGwAFAAAAFVYbAAMAAAAYVhsABgAAAB5WGwADAAAAIVYbAAcAAAAoVhsAAwAAACtWGwAJAAAAEFUbAAMAAAA0VhsABgAAADpWGwADAAAAPVYbAAYAAAAVVhsAAwAAAENWGwAJAAAA/TMbAAMAAABMVhsACgAAAPVUGwADAAAAVlYbAAcAAAAvNBsAAwAAAF1WGwAGAAAAUjQbAAMAAABjVhsACQAAAGxWGwAGAAAAclYbAAQAAABsVhsABgAAAHZWGwAEAAAAqjAbAAMAAAB6VhsABgAAAGBGGwADAAAAgFYbAAQAAABaVBsAAgAAAIRWGwAGAAAAjjQbAAMAAACKVhsABgAAAJBWGwACAAAAklYbAAQAAAADNxsAAwAAAJZWGwAHAAAAnVYbAAMAAACgVhsABQAAAKVWGwADAAAAqFYbAAQAAACsVhsAAwAAAK9WGwAFAAAAtFYbAAIAAAC2VhsABgAAALxWGwADAAAAv1YbAAkAAAC8VhsAAwAAAMhWGwAGAAAAzlYbAAMAAADRVhsABgAAANdWGwADAAAA2lYbAAMAAADdVhsABAAAAOFWGwAIAAAA6VYbAAMAAADsVhsACAAAAPRWGwADAAAA91YbAAUAAAD8VhsAAwAAAP9WGwAGAAAABVcbAAMAAAAIVxsADQAAABVXGwADAAAAGFcbAA4AAAAmVxsAAwAAAClXGwAEAAAALVcbAAQAAAAxVxsABgAAADdXGwADAAAAOlcbAAQAAAA+VxsABAAAAEJXGwAGAAAArFYbAAMAAABIVxsABgAAAE5XGwACAAAAUFcbAAYAAABWVxsAAwAAAFlXGwAGAAAAN1AbAAMAAABfVxsABgAAAGVXGwACAAAAZ1cbAAIAAABTNRsAAwAAAGlXGwAFAAAAblcbAAIAAABwVxsAAwAAAHNXGwACAAAAdVcbAAQAAAB5VxsAAgAAAHtXGwAFAAAAgFcbAAIAAACCVxsAAwAAAKowGwADAAAAhVcbAAMAAACIVxsABAAAAIxXGwAGAAAAklcbAAIAAACUVxsAAgAAABs1GwADAAAAllcbAAYAAACcVxsAAwAAAJ9XGwAFAAAApFcbAAMAAACnVxsABgAAAK1XGwADAAAAsFcbAAUAAAC1VxsAAwAAALhXGwAFAAAAvVcbAAIAAAC/VxsABQAAAMRXGwACAAAAxlcbAAUAAAD9NBsAAwAAAMtXGwAIAAAAgDUbAAMAAADTVxsACAAAAP00GwADAAAA21cbAAUAAADgVxsAAgAAAOJXGwAEAAAA5lcbAAMAAADpVxsABQAAAO5XGwACAAAA8FcbAAIAAACWMhsAAwAAAPJXGwAGAAAA+FcbAAMAAAD7VxsABQAAAABYGwADAAAAA1gbAAgAAAALWBsAAwAAAA5YGwAGAAAA4FcbAAIAAAAUWBsAAwAAADM1GwADAAAAF1gbAAYAAAAdWBsAAwAAACBYGwAIAAAARkcbAAMAAAAoWBsACAAAAB1YGwADAAAAMFgbAAgAAAA4WBsAAwAAADtYGwAHAAAAQlgbAAMAAABFWBsABAAAAElYGwACAAAAS1gbAAUAAABQWBsAAgAAAFJYGwAEAAAAVlgbAAQAAABaWBsABAAAAF5YGwACAAAAYFgbAAUAAABCWBsAAwAAAGVYGwAGAAAAa1gbAAIAAABtWBsABAAAAHFYGwAEAAAAdVgbAAQAAACWMhsAAwAAAHlYGwAFAAAAflgbAAMAAACBWBsABwAAAIhYGwADAAAAi1gbAAUAAACQWBsAAwAAAJNYGwAGAAAAmVgbAAMAAACcWBsABQAAAJYyGwADAAAAoVgbAAIAAABkNRsAAwAAAKNYGwAGAAAAqVgbAAIAAACrWBsABQAAALBYGwACAAAAslgbAAQAAAC2WBsAAgAAALhYGwAFAAAAvVgbAAIAAAC/WBsAAwAAAMJYGwACAAAAxFgbAAMAAADHWBsABAAAAMtYGwAFAAAA0FgbAAIAAADSWBsABAAAANZYGwAEAAAA2lgbAAQAAADeWBsABAAAAOJYGwAGAAAA6FgbAAIAAADqWBsABQAAAO9YGwACAAAA8VgbAAUAAAD2WBsAAgAAAPhYGwAGAAAA/lgbAAIAAAAAWRsABgAAAAZZGwACAAAACFkbAAMAAAALWRsAAgAAAA1ZGwADAAAAEFkbAAQAAAAUWRsABgAAABpZGwACAAAAHFkbAAQAAAAgWRsAAgAAACJZGwAEAAAAJlkbAAIAAAAoWRsABAAAACxZGwAEAAAAMFkbAAQAAAA0WRsABAAAADhZGwAFAAAAXzgbAAMAAAA9WRsABAAAAJMwGwADAAAAQVkbAAYAAABHWRsAAwAAAEpZGwAFAAAAT1kbAAMAAABSWRsAAgAAABA4GwADAAAAVFkbAAMAAABXWRsAAwAAAFpZGwAEAAAAXlkbAAMAAABhWRsABgAAAGdZGwACAAAAaVkbAAgAAABxWRsAAwAAAHRZGwAGAAAAKzYbAAMAAAB6WRsABgAAAIBZGwACAAAAglkbAAQAAABaNhsAAwAAAIZZGwAFAAAAi1kbAAMAAACOWRsABgAAAFo2GwADAAAAlFkbAAMAAACXWRsAAwAAAJpZGwAFAAAAn1kbAAIAAAChWRsABAAAAGY2GwADAAAApVkbAAUAAAB1NhsAAwAAAKpZGwAHAAAAsVkbAAMAAAC0WRsABgAAALpZGwADAAAAvVkbAAYAAAAVVxsAAwAAAMNZGwAGAAAAyVkbAAMAAADMWRsABgAAANJZGwADAAAA1VkbAAcAAADcWRsAAwAAAN9ZGwAGAAAA5VkbAAMAAADoWRsAAwAAAOtZGwADAAAA7lkbAAYAAAD0WRsAAwAAAPdZGwAEAAAA+1kbAAMAAAD+WRsABQAAAANaGwAGAAAACVobAAUAAAAOWhsAAwAAABFaGwAFAAAAFlobAAMAAAAZWhsABgAAAB9aGwABAAAAIFobAAYAAAAmWhsAAQAAACdaGwAFAAAALFobAAMAAAAvWhsABwAAADZaGwADAAAAOVobAAcAAABAWhsAAwAAAENaGwAGAAAASVobAAIAAABLWhsABgAAAFFaGwACAAAAU1obAAUAAACZNhsAAwAAAFhaGwAEAAAAH1obAAEAAABcWhsAAwAAAF9aGwACAAAAYVobAAQAAABlWhsAAwAAAGhaGwAFAAAAUj4bAAMAAABtWhsABgAAAItJGwADAAAAc1obAAcAAAB6WhsAAwAAAH1aGwAIAAAAhVobAAMAAACIWhsABAAAAIxaGwADAAAAj1obAAIAAACRWhsAAwAAAJRaGwAJAAAAZjYbAAMAAACdWhsADQAAAOVZGwADAAAAqlobAA8AAADPMRsAAwAAALlaGwANAAAAxjcbAAMAAADGWhsADgAAANRaGwADAAAA11obAA4AAAADNxsAAwAAAOVaGwAPAAAAizYbAAMAAAD0WhsAEQAAAAhAGwADAAAABVsbABMAAAClVhsAAwAAABhbGwAOAAAAJlsbAAMAAAApWxsAAwAAAAA4GwADAAAALFsbAAMAAACRWhsAAwAAAC9bGwAEAAAAEDgbAAMAAAAzWxsACAAAADo4GwADAAAAO1sbAAMAAAA6OBsAAwAAAD5bGwAFAAAAQ1sbAAMAAABGWxsABgAAAExbGwADAAAAT1sbAAcAAABWWxsAAwAAAFlbGwAIAAAAYVsbAAMAAABkWxsABAAAAGhbGwAGAAAAblsbAAYAAAB0WxsAAwAAAHdbGwAKAAAAl1kbAAMAAACBWxsABwAAAIhbGwADAAAAi1sbAAkAAAAAOBsAAwAAAJRbGwAKAAAAV1kbAAMAAACeWxsABwAAAB44GwADAAAApVsbAAcAAABGOBsAAwAAAKxbGwAGAAAAslsbAAMAAAC1WxsABgAAAPI2GwADAAAAu1sbAAMAAAC+WxsABAAAAMJbGwACAAAAHjgbAAMAAADEWxsAAwAAAMdbGwADAAAAylsbAAUAAADPMRsAAwAAAM9bGwAFAAAAxjcbAAMAAADUWxsABgAAANpbGwADAAAA3VsbAAUAAADiWxsAAwAAAOVbGwAEAAAA6VsbAAIAAADrWxsAAgAAAAw5GwADAAAA7VsbAAUAAADUWhsAAwAAAPJbGwAIAAAABVEbAAMAAAD6WxsABgAAAABcGwADAAAAA1wbAAUAAAAIXBsAAwAAAAtcGwAGAAAAEVwbAAIAAAATXBsABgAAABlcGwADAAAAHFwbAAoAAAAZXBsAAwAAACZcGwADAAAAKVwbAAMAAAAsXBsABAAAADBcGwADAAAAM1wbAAgAAAAwXBsAAwAAADtcGwADAAAAPlwbAAMAAABBXBsABAAAAD5cGwADAAAARVwbAAUAAAApXBsAAwAAAEpcGwAFAAAAT1wbAAMAAABSXBsABQAAAFdcGwADAAAAWlwbAAUAAABfXBsAAwAAAGJcGwAFAAAArTYbAAMAAABnXBsADQAAAHc4GwADAAAAdFwbABIAAACMOBsAAwAAAIZcGwAKAAAAkFwbAAMAAACTXBsADgAAAJ04GwADAAAAoVwbAA0AAADJWRsAAwAAAK5cGwAOAAAAvFwbAAMAAAC/XBsABQAAAMRcGwADAAAAx1wbAAQAAADLXBsABAAAAM9cGwAGAAAA1VwbAAMAAADYXBsABwAAAN9cGwADAAAA4lwbAAYAAADoXBsAAwAAAOtcGwAGAAAAzkQbAAEAAADxXBsAAwAAAPRcGwADAAAA91wbAAcAAAD0XBsAAwAAAP5cGwAEAAAAakobAAMAAAACXRsABAAAAAZdGwABAAAAB10bAAYAAAANXRsAAwAAABBdGwAFAAAAizYbAAMAAAAVXRsACAAAAKZRGwADAAAAHV0bAAUAAAAIQBsAAwAAACJdGwAGAAAAKF0bAAMAAAArXRsAAwAAAC5dGwADAAAAMV0bAAUAAAA2XRsAAwAAADldGwAGAAAAP10bAAMAAABCXRsABAAAAEZdGwAEAAAASl0bAAMAAAD/OBsAAwAAAE1dGwAEAAAARjgbAAMAAABRXRsABQAAAFZdGwADAAAAWV0bAAUAAABeXRsAAwAAAGFdGwAEAAAAJlobAAEAAABlXRsABQAAAGM+GwADAAAAal0bAAYAAABwXRsAAwAAAHNdGwAGAAAAeV0bAAIAAAB7XRsAAgAAAAk2GwABAAAAfV0bAAQAAACBXRsAAwAAAIRdGwAFAAAAiV0bAAMAAACMXRsABQAAAIhbGwADAAAAkV0bAAYAAAAmWxsAAwAAAJddGwAGAAAAnV0bAAMAAACgXRsABgAAAKZdGwADAAAAqV0bAAcAAACwXRsAAwAAALNdGwAGAAAAuV0bAAMAAAC8XRsABAAAAMBdGwADAAAAw10bAAUAAABzNxsAAwAAAMhdGwAFAAAArUobAAMAAADNXRsACAAAANVdGwADAAAA2F0bAAcAAADfXRsAAwAAAOJdGwAJAAAA610bAAYAAADxXRsABAAAAOtdGwAGAAAA9V0bAAUAAAD6XRsAAwAAAP1dGwAEAAAAAV4bAAIAAAADXhsABAAAAAdeGwADAAAACl4bAAQAAAAOXhsAAwAAABFeGwAHAAAADl4bAAMAAAAYXhsAAwAAAPZAGwADAAAAG14bAAYAAAD2QBsAAwAAACFeGwAKAAAAODIbAAMAAAArXhsACgAAAC43GwADAAAANV4bAAgAAAB4RRsAAwAAAD1eGwAGAAAAQ14bAAMAAABGXhsABgAAAExeGwADAAAAT14bAAMAAABSXhsAAgAAAFReGwAFAAAAWV4bAAMAAABcXhsADQAAAAVIGwADAAAAaV4bAAMAAABsXhsABAAAAHBeGwADAAAAc14bAAMAAAB2XhsABQAAAHteGwACAAAAfV4bAAMAAAAfRhsAAwAAAIBeGwAGAAAA50gbAAEAAACGXhsABgAAAIxeGwADAAAAj14bAAYAAABULhsAAgAAAJVeGwAFAAAAml4bAAMAAACdXhsABgAAABVMGwADAAAAo14bAAYAAAA7URsAAwAAAKleGwAHAAAAsF4bAAMAAACzXhsABAAAALdeGwADAAAAul4bAAQAAADOVhsAAwAAAL5eGwAGAAAARDkbAAMAAADEXhsABgAAAMpeGwADAAAAzV4bAAQAAADRXhsABAAAANVeGwACAAAARDkbAAMAAADXXhsABAAAANteGwAEAAAA314bAAYAAABjRxsAAwAAAOVeGwACAAAA514bAAIAAADpXhsACAAAAPFeGwADAAAA9F4bAAUAAADxXhsAAwAAAPleGwADAAAA/F4bAAUAAAABXxsAAwAAAARfGwAGAAAACl8bAAQAAADSOhsABQAAAA5fGwAKAAAAGF8bAAMAAAAbXxsADwAAACpfGwADAAAALV8bAAMAAAAwXxsABQAAADVfGwADAAAAOF8bAAYAAAA+XxsABAAAAK07GwAFAAAAQl8bAAsAAABNXxsAAwAAAFBfGwAGAAAAVl8bAAMAAABZXxsABgAAAF9fGwADAAAAYl8bAAUAAACrLxsAAwAAAGdfGwAGAAAAbV8bAAIAAABvXxsABAAAAHNfGwAGAAAAeV8bAAMAAADFPRsAAwAAAHxfGwAEAAAAgF8bAAUAAACFXxsABQAAAIpfGwAFAAAAj18bAAUAAACUXxsAAgAAAJZfGwAHAAAAxT0bAAMAAACdXxsABQAAAKJfGwADAAAApV8bAAcAAACiXxsAAwAAAKxfGwAIAAAAGTobAAMAAAC0XxsABAAAABM6GwACAAAAuF8bAAUAAAAiOxsABQAAAL1fGwAGAAAAMzsbAAUAAADDXxsABAAAAMdfGwADAAAAyl8bAAYAAADQXxsAAgAAANJfGwAGAAAA2F8bAAIAAADaXxsABQAAALU9GwADAAAA318bAAgAAADnXxsABQAAAOxfGwAEAAAA8F8bAAMAAADzXxsAAwAAAPZfGwACAAAA+F8bAAUAAAD9XxsAAwAAAABgGwACAAAAaTobAAMAAAACYBsABQAAAAdgGwADAAAACmAbAAYAAAAQYBsAAwAAABNgGwAFAAAArUUbAAMAAAAYYBsABwAAAK1FGwADAAAAH2AbAAUAAAAkYBsABQAAAClgGwAGAAAALjobAAMAAAAvYBsABgAAADVgGwADAAAAOGAbAAUAAAB5OhsABQAAAD1gGwAGAAAAhzobAAMAAABDYBsABwAAAIc6GwADAAAASmAbAAMAAABNYBsABAAAAFFgGwADAAAAvDobAAUAAABUYBsAAwAAAKY6GwADAAAAV2AbAAQAAACmOhsAAwAAAFtgGwAFAAAAvDobAAUAAABgYBsACQAAAPw6GwAFAAAAaWAbAAQAAAD8OhsABQAAAG1gGwAFAAAAEDsbAAMAAAByYBsAAwAAAJQ6GwADAAAAdWAbAAQAAACUOhsAAwAAAHlgGwAFAAAAKl8bAAMAAAB+YBsABQAAAINgGwADAAAAhmAbAAUAAACLYBsAAwAAAI5gGwACAAAA8z8bAAMAAACQYBsAAwAAAJNgGwADAAAAlmAbAAQAAACaYBsAAwAAAJ1gGwADAAAA8z8bAAMAAACgYBsABAAAAKRgGwACAAAApmAbAAUAAAAYXxsAAwAAAKtgGwADAAAArmAbAAUAAACzYBsABQAAALhgGwADAAAAu2AbAAQAAAC/YBsAAwAAAMJgGwADAAAAjjsbAAMAAADFYBsACgAAALhgGwADAAAAz2AbAA8AAACDYBsAAwAAAN5gGwAEAAAAjjsbAAMAAADiYBsABQAAAK5gGwAFAAAA52AbAAkAAADDOxsABQAAAPBgGwAEAAAAwzsbAAUAAAD0YBsABQAAAH87GwADAAAA+WAbAAUAAADUOxsAAwAAAP5gGwADAAAAfzsbAAMAAAABYRsABQAAAEc7GwADAAAABmEbAAYAAAB1OxsAAwAAAAxhGwAEAAAA1j0bAAMAAAAQYRsABAAAABRhGwAEAAAAGGEbAAMAAAAbYRsAAgAAAB1hGwAFAAAAXjobAAMAAAAiYRsABgAAAChhGwAFAAAALWEbAAgAAAA1YRsABQAAADphGwAHAAAAXjobAAMAAABBYRsABwAAAEhhGwADAAAAS2EbAAcAAABSYRsAAwAAAFVhGwAFAAAAVTwbAAMAAABaYRsABwAAAFU8GwADAAAAYWEbAAcAAABoYRsAAwAAAGthGwAHAAAAcmEbAAMAAAB1YRsABAAAAFE6GwADAAAAeWEbAAkAAABROhsAAwAAAIJhGwAGAAAAiGEbAAYAAACOYRsABQAAAJNhGwAFAAAAmGEbAAcAAACfYRsAAwAAAKJhGwADAAAAFDwbAAMAAAClYRsABgAAAEE8GwADAAAAq2EbAAQAAAAnPBsABQAAAK9hGwAFAAAAFDwbAAMAAAC0YRsABwAAACc8GwAFAAAAu2EbAAUAAABNXxsAAwAAAMBhGwAFAAAAxWEbAAMAAADIYRsABgAAAM5hGwAFAAAA02EbAAYAAADZYRsABQAAAN5hGwALAAAAxWEbAAMAAADpYRsABQAAAGg8GwADAAAA7mEbAAYAAACYPBsAAwAAAPRhGwADAAAAID0bAAMAAAD3YRsABgAAAE09GwADAAAA/WEbAAQAAAAzPRsABQAAAAFiGwAEAAAABWIbAAQAAAAJYhsACQAAANY9GwADAAAAEmIbAA4AAABROhsAAwAAACBiGwAEAAAAkT0bAAMAAAAkYhsABQAAAKE9GwADAAAAKWIbAAYAAAChPRsAAwAAAC9iGwAFAAAA1j0bAAMAAAA0YhsABQAAAFE6GwADAAAAOWIbAAcAAADDPBsAAwAAAEBiGwAHAAAA8jwbAAMAAABHYhsABAAAAEtiGwADAAAATmIbAAUAAABTYhsABQAAAFhiGwAFAAAAEj0bAAMAAABdYhsABwAAAP48GwAGAAAAZGIbAAkAAAASPRsAAwAAAG1iGwAKAAAAU2IbAAUAAAB3YhsABQAAACA9GwADAAAAfGIbAAcAAAAzPRsABQAAAINiGwAEAAAAh2IbAAMAAACKYhsABQAAAI9iGwAFAAAAlGIbAAUAAACGPRsAAwAAAJliGwAHAAAAcD0bAAYAAACgYhsACQAAAIY9GwADAAAAqWIbAAoAAACPYhsABQAAALNiGwAEAAAA5TobAAMAAAC3YhsABgAAAL1iGwACAAAAv2IbAAQAAACfOxsAAwAAAMNiGwANAAAARzsbAAMAAADQYhsADwAAAHU7GwADAAAA32IbAA4AAABoPBsAAwAAAO1iGwAQAAAAmDwbAAMAAAD9YhsAAgAAAP9iGwACAAAAAWMbAAMAAAAEYxsAAQAAAAVjGwAGAAAAC2MbAAMAAAAOYxsABQAAABNjGwADAAAAFmMbAAYAAAAcYxsAAwAAAB9jGwAGAAAAJWMbAAMAAAAoYxsABAAAACxjGwAGAAAAMmMbAAYAAAA4YxsAAwAAADtjGwAEAAAAP2MbAAYAAABFYxsABAAAAEljGwAEAAAATWMbAAcAAABUYxsAAwAAAFdjGwAGAAAAXWMbAAMAAABgYxsABAAAAGRjGwAGAAAAamMbAAQAAABuYxsABAAAAHJjGwAHAAAAeWMbAAYAAAB/YxsABgAAAIVjGwADAAAAiGMbAAcAAACPYxsABgAAAJVjGwAFAAAAmmMbAAYAAACgYxsABQAAAKVjGwADAAAAqGMbAAYAAACuYxsAAwAAALFjGwAFAAAAm0UbAAMAAAC2YxsABwAAAJtFGwADAAAAvWMbAAYAAADDYxsAAwAAAMZjGwACAAAACU4bAAMAAADIYxsABgAAAM5jGwACAAAA0GMbAAQAAAAWThsAAwAAANRjGwAEAAAAJE4bAAMAAADYYxsABQAAAN1jGwACAAAA32MbAAMAAADiYxsAAgAAAORjGwAFAAAAMk4bAAMAAADpYxsABgAAAO9jGwACAAAA8WMbAAQAAAD1YxsAAwAAAPhjGwAEAAAAZy4bAAMAAAD8YxsABgAAAAJkGwADAAAABWQbAAUAAAAKZBsAAgAAAAxkGwAFAAAAEWQbAAMAAAAUZBsAAwAAABdkGwAEAAAAG2QbAAQAAAAfZBsAAgAAACFkGwAGAAAAJ2QbAAIAAAApZBsAAwAAACxkGwADAAAAL2QbAAUAAAA0ZBsAAwAAADdkGwADAAAAKz4bAAIAAAA6ZBsABAAAAA0vGwADAAAAPmQbAAUAAADjTRsAAwAAAENkGwAFAAAASGQbAAMAAABLZBsABwAAAFJkGwADAAAAVWQbAAUAAACZPhsAAwAAAFpkGwADAAAAXWQbAAMAAABgZBsABQAAAGVkGwACAAAAZ2QbAAUAAABsZBsAAgAAAG5kGwAHAAAAdWQbAAIAAAB3ZBsABAAAAHtkGwADAAAAfmQbAAYAAAB1LhsAAwAAAIRkGwAEAAAAiGQbAAQAAACMZBsABAAAAJBkGwADAAAAk2QbAAUAAACYZBsAAwAAAJtkGwAFAAAAgi4bAAMAAACgZBsAAgAAAKJkGwADAAAApWQbAAUAAAD2TRsAAwAAAKpkGwADAAAArWQbAAMAAACwZBsABQAAALVkGwADAAAAuGQbAAcAAAC1ZBsAAwAAAL9kGwAEAAAAw2QbAAIAAADFZBsABAAAAMlkGwACAAAAy2QbAAYAAADRZBsAAwAAANRkGwAEAAAA2GQbAAMAAADbZBsABwAAAOJkGwADAAAA5WQbAAMAAADoZBsAAwAAAOtkGwAEAAAAtWQbAAMAAADvZBsABgAAAPVkGwACAAAA92QbAAQAAAD7ZBsAAwAAAP5kGwAGAAAABGUbAAIAAAAGZRsABgAAAJAuGwADAAAADGUbAAgAAAAUZRsAAwAAABdlGwAEAAAAG2UbAAIAAAAdZRsABQAAACJlGwADAAAAJWUbAAMAAABbMRsAAwAAAChlGwAEAAAALGUbAAIAAAAuZRsACAAAAFsxGwADAAAANmUbAAYAAAA8ZRsAAwAAAD9lGwAFAAAARGUbAAMAAABHZRsABAAAANA+GwADAAAAS2UbAAMAAABOZRsAAgAAAFBlGwAGAAAAVmUbAAEAAABXZRsABgAAAF1lGwABAAAAXmUbAAYAAABkZRsAAwAAAGdlGwAEAAAAa0UbAAMAAABrZRsABwAAAHJlGwADAAAAdWUbAAMAAAB4ZRsABAAAAHxlGwADAAAAf2UbAAIAAACBZRsABAAAAIVlGwACAAAAh2UbAAYAAAAxORsAAwAAAI1lGwAFAAAAkmUbAAMAAACVZRsAAgAAAJdlGwACAAAAmWUbAAkAAAA+VBsAAwAAAKJlGwADAAAApWUbAAIAAACnZRsABgAAAKxWGwADAAAArWUbAAcAAAC0ZRsAAwAAALdlGwAGAAAArFYbAAMAAAC9ZRsABAAAAMFlGwABAAAAwmUbAAgAAADKZRsAAwAAAM1lGwAFAAAAH0wbAAMAAADSZRsABwAAANllGwADAAAA3GUbAAYAAABFURsAAwAAAOJlGwAGAAAA6GUbAAMAAADrZRsABQAAAPBlGwADAAAA82UbAAYAAADxPhsAAgAAAPllGwAHAAAAAGYbAAMAAAADZhsABwAAAApmGwADAAAADWYbAAIAAADxPhsAAgAAAA9mGwAIAAAAF2YbAAMAAAAaZhsABAAAAB5mGwAEAAAAImYbAAUAAAAnZhsAAgAAAClmGwACAAAAFD8bAAMAAAArZhsAAwAAAC5mGwADAAAAMWYbAAQAAAA1ZhsAAwAAADhmGwAFAAAAOT8bAAMAAAA9ZhsAAwAAACQ/GwADAAAAQGYbAAQAAAAUPxsAAwAAAERmGwAKAAAANWYbAAMAAABOZhsACwAAADk/GwADAAAAWWYbAAYAAAAkPxsAAwAAAF9mGwALAAAAamYbAAMAAABtZhsACAAAAHVmGwADAAAAeGYbAAgAAACAZhsAAwAAAINmGwAHAAAAST8bAAMAAACKZhsABQAAAI9mGwADAAAAkmYbAAYAAAAEPxsAAwAAAJhmGwAEAAAAdWYbAAMAAACcZhsABQAAAGpmGwADAAAAoWYbAAYAAACAZhsAAwAAAKdmGwAEAAAAWz8bAAMAAACrZhsACAAAALNmGwADAAAAtmYbAAgAAAC+ZhsAAwAAAMFmGwAIAAAAyWYbAAMAAADMZhsABAAAAHQ/GwADAAAA0GYbAAYAAAB0PxsAAwAAANZmGwAFAAAAST8bAAMAAADbZhsABgAAAOFmGwADAAAA5GYbAAQAAADoZhsABAAAAOxmGwADAAAA72YbAAIAAADxZhsABgAAAPdmGwADAAAA+mYbAAMAAAD9ZhsABAAAAAFnGwAEAAAAnFcbAAMAAAAFZxsABAAAAAlnGwAEAAAADWcbAAYAAAATZxsAAwAAABZnGwAEAAAAGmcbAAQAAAAeZxsACwAAAJU0GwADAAAAKWcbAAcAAAAwZxsAAwAAADNnGwAFAAAAOGcbAAEAAAA5ZxsABwAAAE9TGwADAAAAQGcbAAQAAACIPxsAAQAAAERnGwAFAAAA1kEbAAMAAABJZxsABAAAABIxGwADAAAATWcbAAYAAABTZxsAAwAAAFZnGwAFAAAARlAbAAMAAABbZxsABAAAAF9nGwADAAAAYmcbAAQAAABmZxsABQAAAGtnGwAGAAAAcWcbAAIAAABzZxsABQAAAJVCGwADAAAAeGcbAAgAAACAZxsAAwAAAINnGwAEAAAAO0AbAAMAAACHZxsABQAAAIxnGwADAAAAj2cbAAUAAACUZxsAAwAAAJdnGwAGAAAAO0AbAAMAAACdZxsABQAAAKJnGwACAAAApGcbAAQAAABIQBsAAwAAAKhnGwAGAAAArmcbAAMAAACxZxsABQAAAFhAGwADAAAAtmcbAAcAAAC9ZxsAAwAAAMBnGwAFAAAAxWcbAAMAAADIZxsABgAAAM5nGwADAAAA0WcbAAYAAAAmVxsAAwAAANdnGwAGAAAAvFwbAAMAAADdZxsABgAAAONnGwADAAAA5mcbAAcAAADtZxsAAwAAAPBnGwAGAAAA9mcbAAMAAAD5ZxsABQAAAP5nGwADAAAAAWgbAAYAAAAHaBsAAwAAAApoGwAFAAAAD2gbAAMAAAASaBsACQAAAJQ/GwADAAAAG2gbAAUAAABbShsAAwAAACBoGwAFAAAAJWgbAAMAAAAoaBsABgAAAC5oGwABAAAAL2gbAAYAAAA1aBsAAQAAADZoGwAFAAAAO2gbAAMAAAA+aBsABwAAAEVoGwADAAAASGgbAAcAAABPaBsAAwAAAFJoGwAGAAAAWGgbAAIAAABaaBsABgAAAGBoGwACAAAAYmgbAAUAAAB9QBsAAwAAAGdoGwAEAAAALmgbAAEAAABraBsAAwAAAG5oGwACAAAAcGgbAAQAAAB0aBsAAwAAAHdoGwAHAAAAfmgbAAMAAACBaBsABQAAAMMuGwADAAAAhmgbAAYAAADDLhsAAwAAAIxoGwAEAAAAkGgbAAMAAACTaBsABAAAAOI/GwADAAAAl2gbAAcAAADdQRsAAwAAAJ5oGwAIAAAA4j8bAAMAAACmaBsABQAAALlBGwADAAAAq2gbAAQAAACvaBsAAwAAALJoGwADAAAAqj8bAAIAAAC1aBsABgAAALtoGwADAAAAvmgbAAYAAADbQBsAAwAAAMRoGwADAAAAx2gbAAQAAADLaBsABQAAAAoyGwADAAAA0GgbAAUAAACXQRsAAwAAANVoGwAGAAAA22gbAAMAAADeaBsAAwAAAOFoGwACAAAA42gbAAQAAADnaBsAAgAAAOloGwAKAAAASEAbAAMAAADzaBsADgAAAPZnGwADAAAAAWkbABAAAAAKMhsAAwAAABFpGwAOAAAAl0EbAAMAAAAfaRsADwAAAG5AGwADAAAALmkbABEAAAACMxsAAwAAAD9pGwAQAAAAT2kbAAMAAABSaRsADwAAAP5nGwADAAAAYWkbAA8AAABwaRsAAwAAAHNpGwAEAAAAd2kbAAIAAAB5aRsADAAAAHFTGwADAAAAhWkbAAUAAABuQBsAAwAAAIppGwAFAAAAAjMbAAMAAACPaRsAAwAAAJJpGwADAAAAlWkbAAYAAACbaRsAAwAAAJ5pGwAKAAAAm2kbAAMAAACoaRsABQAAAK1pGwADAAAAsGkbAAUAAAC1aRsAAwAAALhpGwAFAAAAvWkbAAMAAADAaRsABQAAAJJAGwADAAAAxWkbAAUAAADKaRsAAwAAAM1pGwAEAAAA0WkbAAQAAADVaRsABgAAANtpGwADAAAA3mkbAAcAAADlaRsAAwAAAOhpGwAEAAAA7GkbAAEAAADtaRsABgAAAPNpGwADAAAA9mkbAAgAAAD+aRsAAwAAAAFqGwAFAAAAT2kbAAMAAAAGahsABgAAAAxqGwADAAAAD2obAAQAAAATahsABAAAABdqGwADAAAA40EbAAMAAAAaahsABAAAADVoGwABAAAAHmobAAUAAADVLhsAAwAAACNqGwAGAAAA1S4bAAMAAAApahsABgAAAHBpGwADAAAAL2obAAYAAAA1ahsAAwAAADhqGwAEAAAAPGobAAMAAAA/ahsABQAAAD9BGwADAAAARGobAAUAAADCShsAAwAAAElqGwAIAAAAUWobAAMAAABUahsABwAAAFtqGwADAAAAXmobAAIAAABgahsAAwAAAGNqGwAGAAAAaWobAAIAAABrahsABQAAAHBdGwADAAAAcGobAAIAAAA/QxsAAwAAAHJqGwADAAAAdWobAAMAAAB4ahsABAAAAHxqGwADAAAAf2obAAYAAACFahsAAgAAAIdqGwAFAAAAZEMbAAMAAACMahsAAwAAAE9DGwADAAAAj2obAAYAAACVahsAAgAAAJdqGwAFAAAAnGobAAIAAACeahsABAAAAKJqGwADAAAApWobAAUAAACqahsAAwAAAK1qGwAGAAAAs2obAAMAAAC2ahsACAAAAL5qGwADAAAAwWobAAUAAAB0QxsAAwAAAMZqGwADAAAAyWobAAIAAADLahsABAAAAM9qGwADAAAA0mobAAUAAABRURsAAwAAANdqGwAFAAAA3GobAAMAAADfahsABQAAAORqGwADAAAA52obAAYAAADpVhsAAwAAAO1qGwAFAAAA9TgbAAMAAADyahsABwAAAPU4GwADAAAA+WobAAQAAAD9ahsAAgAAAP9qGwAEAAAAA2sbAAEAAAAEaxsABgAAAAprGwADAAAADWsbAAgAAACILRsAAwAAABVrGwAFAAAAiC0bAAMAAAAaaxsABAAAAB5rGwADAAAAIWsbAAMAAAAkaxsABAAAAChrGwAGAAAA5VQbAAMAAAAuaxsABQAAADNrGwADAAAA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gR+CH4MfhB+FH4Yfhx+IH4kfih+LH5AfkR+SH5MflB+VH5Yflx+YH5kfmh+bH5wfnR+eH58foB+hH6Ifox+kH6Ufph+nH6gfqR+qH6sfrB+tH64frx+wH7Efsh+zH7QftR+2H7cfuB+5H7ofux+8H/7b04mAAIAAPAD8/+Cv//8gQLAAQAAEAAD8AOYAQEkAGADA/wDoADwQQAACAGD/P8DD/38AQAABMAABAAwsQAADAAEA+AeAgBAAAIAAAhAAAIAAgAAM/v///FA9IAAAwL/f/wcA/ADAAAj/Af8DAQAAYAAYADhgAHAP/wcxAADA/////wDAfz8A/P8H8H8A8AD4AMD/AAgAAKAD4ADgAOAAYP///wD//////38AfAB8/////wEAewPQwa9CAAwfvAAM/////////////////////////////////////////////////////////////////////////////////////////////////////////////38A/wcA8P///////////wP///////////////////////////////////////////////////////////////////////////////////////////////////////8/APD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P////v//////////////////gBwDeAQD//////3///////z/////7/////////////w8A//////////////////////////////////8/AP//Hv///wEAweAAGAEAAAjD//////8PgP///38A/P///wABAP////8A/P////8BAP///////////////////////////////////////////////////////////////////////38AAMAA4AhA/AD//38AAwAABgAPwAPwAADAABcAwACA/j8AwADwgAMAwAMAAAgADAAIAAL8/wcAAMD//wCAAPD/A//////3/38P/v8A/AEAAPgBAAD4PwB/fwAwBwCA/wD+/3P/HwEA//////8fAIABAACAgACAAQCAAID/AQCAAAF/AAD+AB4AIOADwAOAPwDYAwAPADAA4CEA6AA/AAIA+AAsQAD+//8ADgD/HwACAPAACHAABAAAgH8AANwHAP8DPgADAIAB+P/g////A4AfAAYAAMAgAID/MACABwQAAJD//////////////////w8A////////////////////////////////////////PwD/////f/7///////8fHBjw////w/////////8H//////////8jAP////////////9/AAIAAAgACCAAIAAAgACAAAIAAggA/////////////////////////////////////////////////////////////////////////////////////4AHAODf/+8PAIAAgADAABABAABAAwD//////w////////////////8PAP9//v/+//7///8/AADg/////////////////////////z/A////BwD//////w//AQMAPwD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w/x//H///////////////////f/j//////////////wP/DwEA/w//////////AP8D//////8A////PwMA////////////////////////////////////////////////////////DwD/P/8f/wH//////78/wP8P/wH/Af////////////////////////f///////8HAADUCRwAaQAAAOYFAAAXAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcHVsbGRvd24tY21hcmstMC4xMi4yL3NyYy9zY2FubmVycy5ycwCsFRwAZwAAAMAAAAAeAAAArBUcAGcAAADbAAAAIQAAAKwVHABnAAAAZQEAACcAAACsFRwAZwAAAPQBAAAUAAAArBUcAGcAAAANAgAAFAAAAKwVHABnAAAACwIAADQAAACsFRwAZwAAACMCAAAUAAAA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cy5pby02ZjE3ZDIyYmJhMTUwMDFmL3B1bGxkb3duLWNtYXJrLTAuMTIuMi9zcmMvc3RyaW5ncy5ycwAAYB0cAGYAAABGAAAAHgAAAGAdHABmAAAARgAAACcAAAB4KxsASwAAAOoHAAAeAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcHVsbGRvd24tY21hcmstMC4xMi4yL3NyYy90cmVlLnJzAPgdHABjAAAAEwAAACgAAAD4HRwAYwAAACgAAAAzAAAA+B0cAGMAAABBAAAAGQAAAPgdHABjAAAAQgAAAA8AAAD4HRwAYwAAAFkAAAARAAAA+B0cAGMAAABbAAAAEQAAAPgdHABjAAAAZAAAABQAAAD4HRwAYwAAAG8AAAAfAAAA+B0cAGMAAABwAAAAFAAAAPgdHABjAAAAcQAAABgAAAD4HRwAYwAAAIEAAAANAAAA+B0cAGMAAAC0AAAAGAAAAPgdHABjAAAAyAAAACUAAAD4HRwAYwAAAM0AAAAhAAAA+B0cAGMAAADnAAAAGQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3B1bGxkb3duLWNtYXJrLTAuMTIuMi9zcmMvbGliLnJzAABMHxwAYgAAALYBAAASAAAAAAAAAAEAAAABAAAAJwEAAAAAAAAEAAAABAAAACgBAABNYXliZUVtcGhhc2lzTWF5YmVNYXRoAAAAAAAAAQAAAAEAAAApAQAATWF5YmVTbWFydFF1b3RlTWF5YmVDb2RlTWF5YmVIdG1sTWF5YmVMaW5rT3Blbk1heWJlTGlua0Nsb3NlTWF5YmVJbWFnZUVtcGhhc2lzU3Ryb25nU3RyaWtldGhyb3VnaAAAAAAAAAAEAAAABAAAACoBAABNYXRoAAAAAAQAAAAEAAAAKwEAAENvZGUAAAAABAAAAAQAAAAsAQAATGlua0ltYWdlRm9vdG5vdGVSZWZlcmVuY2VUYXNrTGlzdE1hcmtlcklubGluZUh0bWxPd25lZElubGluZUh0bWxTeW50aGVzaXplVGV4dAAAAAAABAAAAAQAAAAtAQAAU3ludGhlc2l6ZUNo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CQkJCQBBgdLwAAufCwECAgICAwICBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAissAgICAi0uAgICLzAxMjMCAgICAgI0AgI1NjcCODk6Ozw9Pj85OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlAOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUECAkJDAgJERUZHSEkCSjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUsCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI5OTk5TAICAgICTU5PUAICAlECUlMCAgICAgICAgICAgICVFUCAlYCVwICWFlaW1xdXl9gYQJiYwJkZWZnAmgCaWprbAICbW5vcAJxcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR1AgICAgICAnZ3OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTl4OTk5OTk5OTk5eXoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAns5OXw5OX0CAgICAgICAgICAgICAgICAgICfgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn8CAgKAgYICAgICAgICAgICAgICAgKDhAICAgICAgICAgKFhnUCAocCAgKIAgICAgICAomKAgICAgICAgICAgICAouMAo2OAo+QkZKTlJWWApcCApiZmpsCAgICAgICAgICOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5nB0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAnQICAgKenwIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICoKGio6Slpi6nqKmqq6ytMwICAgICAq4CAjU2NwI4OTo7PD0+rzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUwCAgICArBOT7GFhnUCAocCAgKIAgICAgICAomKAgICAgICAgICAgICAouMsrOOAo+QkZKTlJWWApcCApiZmpsCAgICAgICAgICVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEG83fAACylVVVVVFQBQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQBB793wAAvEARBBEFVVVVVVV1VVVVVVVVVVVVFVVQAAQFT13VVVVVVVVVVVFQAAAAAAVVVVVfxdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFABQAFARQVVVVVVVVVRVRVVVVVVVVVQAAAAAAAEBVVVVVVVVVVVXVV1VVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVVVUVAABVVVFVVVVVVQUQAAABAVBVVVVVVVVVVVVVAVVVVVVV/////39VVVVQVQAAVVVVVVVVVVVVVQUAQcDf8AALmARAVVVVVVVVVVVVVVVVVUVUAQBUUQEAVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVUQBVFVRVRVVVQVVVVVVVVVFQVVVVVVVVVVVVVVVVVVVVEEVFFBRVVVVVVVVVVBRVVVBVVVVVVVVVVVVVVVVVVVUARBUUVVVVVUFVVVVVVUFAFFVVVVVVVVVVVVVVVVVVQQBVFVRVQFVVQVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVRVRVVVFVFVVVVVVVVVVVVVVUVFVVVVVVVVVVVVVVVVUEVAUEUFVBVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVRREBQRQVUFVVQVVVVVVVVVVUFVVVVVVVVVVVVVVVVUVRAFUVUFVFVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVFFQVEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAQFVVFQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQAAVFVVAEBVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVEVFVVVVVVVVVVVVVVVVVAQAAQAAEVQEAAAEAAAAAAAAAAFRVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBBABBQVVVVVVVVVAFVFVVVQFUVVVFQVVRVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgBBgOTwAAuQA1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVVVQVUVVVVVVVVBVVVVVVVVVUFVVVVVVVVVQVVVVV///33//3XX3fW1ddVEABQVUUBAABVV1FVVVVVVVVVVVVVFQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVFVFVQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVXFRRVVVVVVVVVVVVVVVVVVUUAQEQBAFQVAAAUVVVVVVVVVVVVVVVVAAAAAAAAAEBVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVAABQBVVVVVVVVVVVVRUAAFVVVVBVVVVVVVVVBVAQUFVVVVVVVVVVVVVVVVVFUBFQVVVVVVVVVVVVVVVVVVUAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAEAFRRVVRQVVVVVVVVVVVVVVVVVVVVVVUAQaDn8AALkwhVVRUAVVVVVVVVBUBVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAABUVVVVVVVVVVVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf1X11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV9VVVVVVVfVVVVVVVVVVVVVVVV////VVVVVVVVVVVVVdVVVVVV1VVVVV1V9VVVVVV9VV9VdVVXVVVVVXVV9V11XVVd9VVVVVVVVVVXVVVVVVVVVVV31d9VVVVVVVVVVVVVVVVVVVX9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVddVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQVVVVVVVVVVVVVVVVVVVV/f///////////////19V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAKqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVqqqqqqqqqqqqqqqqqqoKAKqqqmqpqqqqqqqqqqqqqqqqqqqqqqqqqqpqgaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqaqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqKqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVZWqqqqqqqqqqqqqqmqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVVVVVVVVVVVVVVVVVVaqqqlaqqqqqqqqqqqqqqqqqalVVVVVVVVVVVVVVVVVfVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUAAAFBVVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVUVFFVVVVVVVVUFVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVAAAAAFBVRRVVVVVVVVVVVVUFAFBVVVVVVRUAAFBVVVWqqqqqqqqqVkBVVVVVVVVVVVVVVRUFUFBVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVQFAQUFVVRVVVVRVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVUEFFQFUVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFFVVVVVqqqqqqqqqqqqVVVVAAAAAABAFQBBv+/wAAvhDFVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAPCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRWpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpWVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVapqVVUAAFRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUBVAUFVAFVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVRVVVVVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVQAAAEBVVVVVVVVVVVVVFFRVFVBVVVVVVVVVVVVVVRVAQVVFVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVFQABAFRVVVVVVVVVVVVVVVVVVRVVVVVQVVVVVVVVVVVVVVVVBQBABVUBFFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVAEVUVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVFQBAVVVVVVVQVVVVVVVVVVVVVVVVVRVEVFVVVVUVVVVVBQBUAFRVVVVVVVVVVVVVVVVVVVVVAAAFRFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVFABEEQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUFUFUQVFVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVRUAQBFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRABBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQUQAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVBBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUABVVUVVVVVVVVVQEAQFVVVVVVVVVVVRUABEBVFVVVAUABVVVVVVVVVVVVVQAAAABAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVUFAAAAAAAFAARBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAUBFEAAAVVVVVVVVVVVVVVVVVVVVVVVVUBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVQFVVVVVVVVVVVVVVVQVAVURVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUAAABQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVFVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVRVAVVVVVVVVVVVVVVVVVVVVVVVVVapUVVVaVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVVVVVVaqqVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqpqmmqqqqqqqqqqmpVVVVlVVVVVVVVVWpZVVVVqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVUEAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQav88AALdVAAAAAAAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVURUAUAAAAAQAEAVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVQBBrf3wAAsCQBUAQbv98AALxQZUVVFVVVVUVVVVVRUAAQAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVAEAAAAAAFAAQBEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVXX9/39VVVVVVVVVVVVVVVVVVVVVVVX1////////blVVVaqquqqqqqrq+r+/VaqqVlVfVVVVqlpVVVVVVVX//////////1dVVf3/3///////////////////////9///////VVVV/////////////3/V/1VVVf////9XV///////////////////////f/f/////////////////////////////////////////////////////////////1////////////////////19VVdV/////////VVVVVXVVVVVVVVV9VVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVV1f///////////////////////////1VVVVVVVVVVVVVVVf//////////////////////X1VXf/1V/1VV1VdV//9XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////VVdVVVVVVVX//////////////3///9//////////////////////////////////////////////////////////////VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1f//1dV///////////////f/19V9f///1X//1dV//9XVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVVVVZllVhqqVZqlVVVVVVlVVVVVVVVVWVVVUAQY6E8QALAQMAQZyE8QALsdkBVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAJZqWlpqqgVAplmVZVVVVVVVVVVVAAAAAFVWVVWpVlVVVVVVVVVVVVZVVVVVVVVVVQAAAAAAAAAAVFVVVZVZWVVVZVVVaVVVVVVVVVVVVVVVlVaVaqqqqlWqqlpVVVVZVaqqqlVVVVVlVVVaVVVVVaVlVlVVVZVVVVVVVVWmlpqWWVllqZaqqmZVqlVaWVVaVmVVVVVqqqWlWlVVVaWqWlVVWVlVVVlVVVVVVZVVVVVVVVVVVVVVVVVVVVVVVVVVVWVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWqqqqqqqqqqqpVVVWqqqqqpVpVVZqqWlWlpVVaWqWWpVpVVVWlWlWVVVVVfVVpWaVVX1VmVVVVVVVVVVVmVf///1VVVZqaappVVVXVVVVVVdVVVaVdVfVVVVVVvVWvqrqqq6qqmlW6qvquuq5VXfVVVVVVVVVVV1VVVVVZVVVVd9XfVVVVVVVVVaWqqlVVVVVVVdVXVVVVVVVVVVVVVVVVV61aVVVVVVVVVVVVqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAAADAqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVapqVVUAAFRZqqpqVaqqqqqqqqpaqqqqqqqqqqqqqqqqqqpaVaqqqqqqqqq6/v+/qqqqqlZVVVVVVVVVVVVVVVVV9f///////wAAAAAfAAAA/gAAACAAAAAgAAAA/gAAACEAAAAjAAAA/gAAACQAAAAkAAAA/gAAACUAAAAnAAAA/gAAACgAAAAoAAAA/gAAACkAAAApAAAA/gAAACoAAAAqAAAA/gAAACsAAAArAAAA/gAAACwAAAAsAAAA/gAAAC0AAAAtAAAA/gAAAC4AAAAvAAAA/gAAADAAAAA5AAAA/gAAADoAAAA7AAAA/gAAADwAAAA+AAAA/gAAAD8AAABAAAAA/gAAAEEAAABaAAAASAAAAFsAAABbAAAA/gAAAFwAAABcAAAA/gAAAF0AAABdAAAA/gAAAF4AAABeAAAA/gAAAF8AAABfAAAA/gAAAGAAAABgAAAA/gAAAGEAAAB6AAAASAAAAHsAAAB7AAAA/gAAAHwAAAB8AAAA/gAAAH0AAAB9AAAA/gAAAH4AAAB+AAAA/gAAAH8AAACfAAAA/gAAAKAAAACgAAAA/gAAAKEAAAChAAAA/gAAAKIAAAClAAAA/gAAAKYAAACmAAAA/gAAAKcAAACnAAAA/gAAAKgAAACoAAAA/gAAAKkAAACpAAAA/gAAAKoAAACqAAAASAAAAKsAAACrAAAA/gAAAKwAAACsAAAA/gAAAK0AAACtAAAA/gAAAK4AAACuAAAA/gAAAK8AAACvAAAA/gAAALAAAACwAAAA/gAAALEAAACxAAAA/gAAALIAAACzAAAA/gAAALQAAAC0AAAA/gAAALUAAAC1AAAA/gAAALYAAAC3AAAA/gAAALgAAAC4AAAA/gAAALkAAAC5AAAA/gAAALoAAAC6AAAASAAAALsAAAC7AAAA/gAAALwAAAC+AAAA/gAAAL8AAAC/AAAA/gAAAMAAAADWAAAASAAAANcAAADXAAAA/gAAANgAAAD2AAAASAAAAPcAAAD3AAAA/gAAAPgAAAC6AQAASAAAALsBAAC7AQAASAAAALwBAAC/AQAASAAAAMABAADDAQAASAAAAMQBAACTAgAASAAAAJQCAACUAgAASAAAAJUCAACvAgAASAAAALACAAC4AgAASAAAALkCAADBAgAA/gAAAMICAADFAgAA/gAAAMYCAADRAgAA/gAAANICAADfAgAA/gAAAOACAADkAgAASAAAAOUCAADpAgAA/gAAAOoCAADrAgAADQAAAOwCAADsAgAA/gAAAO0CAADtAgAA/gAAAO4CAADuAgAA/gAAAO8CAAD/AgAA/gAAAAADAABvAwAA/QAAAHADAABzAwAALAAAAHQDAAB0AwAA/gAAAHUDAAB1AwAALAAAAHYDAAB3AwAALAAAAHoDAAB6AwAALAAAAHsDAAB9AwAALAAAAH4DAAB+AwAA/gAAAH8DAAB/AwAALAAAAIQDAACEAwAALAAAAIUDAACFAwAA/gAAAIYDAACGAwAALAAAAIcD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AADACQAACwAAAMEJAADECQAACwAAAMcJAADICQAACwAAAMsJAADMCQAACwAAAM0JAADNCQAACwAAAM4JAADOCQAACwAAANcJAADXCQAACwAAANwJAADdCQAACwAAAN8JAADhCQAACwAAAOIJAADjCQAACwAAAOYJAADvCQAACwAAAPAJAADxCQAACwAAAPIJAADzCQAACwAAAPQJAAD5CQAACwAAAPoJAAD6CQAACwAAAPsJAAD7CQAACwAAAPwJAAD8CQAACwAAAP0JAAD9CQAACwAAAP4JAAD+CQAACwAAAAEKAAACCgAALwAAAAMKAAADCgAALwAAAAUKAAAKCgAALwAAAA8KAAAQCgAALwAAABMKAAAoCgAALwAAACoKAAAwCgAALwAAADIKAAAzCgAALwAAADUKAAA2CgAALwAAADgKAAA5CgAALwAAADwKAAA8CgAALwAAAD4KAABACgAALwAAAEEKAABCCgAALwAAAEcKAABICgAALwAAAEsKAABNCgAALwAAAFEKAABRCgAALwAAAFkKAABcCgAALwAAAF4KAABeCgAALwAAAGYKAABvCgAALwAAAHAKAABxCgAALwAAAHIKAAB0CgAALwAAAHUKAAB1CgAALwAAAHYKAAB2CgAALwAAAIEKAACCCgAALQAAAIMKAACDCgAALQAAAIUKAACNCgAALQAAAI8KAACRCgAALQAAAJMKAACoCgAALQAAAKoKAACwCgAALQAAALIKAACzCgAALQAAALUKAAC5CgAALQAAALwKAAC8CgAALQAAAL0KAAC9CgAALQAAAL4KAADACgAALQAAAMEKAADFCgAALQAAAMcKAADICgAALQAAAMkKAADJCgAALQAAAMsKAADMCgAALQAAAM0KAADNCgAALQAAANAKAADQCgAALQAAAOAKAADhCgAALQAAAOIKAADjCgAALQAAAOYKAADvCgAALQAAAPAKAADwCgAALQAAAPEKAADxCgAALQAAAPkKAAD5CgAALQAAAPoKAAD/CgAALQAAAAELAAABCwAAawAAAAILAAADCwAAawAAAAULAAAMCwAAawAAAA8LAAAQCwAAawAAABMLAAAoCwAAawAAACoLAAAwCwAAawAAADILAAAzCwAAawAAADULAAA5CwAAawAAADwLAAA8CwAAawAAAD0LAAA9CwAAawAAAD4L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L3J1c3RjL2U3MWY5YTlhOThiMGZhZjQyMzg0NGJmMGJhNzQzOGYyOWRjMjdkNTgvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAAOSuHABKAAAAnwAAABkAAAAvcnVzdGMvZTcxZjlhOWE5OGIwZmFmNDIzODQ0YmYwYmE3NDM4ZjI5ZGMyN2Q1OC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAQK8cAEsAAACNBQAAGwAAAC9ydXN0Yy9lNzFmOWE5YTk4YjBmYWY0MjM4NDRiZjBiYTc0MzhmMjlkYzI3ZDU4L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnOcrxwATAAAACsCAAARAAAAOgAAAAEAAAAAAAAA+K8cAAEAAAD4rxwAAQAAAEsBAAAMAAAABAAAAEwBAABNAQAATgEAAE8BAAAMAAAABAAAAFABAABRAQAAUgEAAE8BAAAMAAAABAAAAFMBAABUAQAAVQEAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjcvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZABcsBwAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAXLAcACkAAACuBAAADQAAAHVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MKICAgICAgICAgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQABLEcAGcAAABzdGQvc3JjL3RocmVhZC9jdXJyZW50LnJzAAAAdLEcABkAAADtAAAACQAAAEFjY2Vzc0Vycm9yc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZADAsRwANwAAAKuxHAAVAAAAqgQAAA0AAABtYWluAQAAAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9yT3MAAAAAAAAEAAAABAAAAFYBAABjb2RlAAAAAAEAAAABAAAAVwEAAGtpbmRLAQAADAAAAAQAAABYAQAAbWVzc2FnZUtpbmRFcnJvcgAAAAAIAAAABAAAAFkBAAAAAAAABAAAAAQAAABaAQAAQ3VzdG9tZXJyb3IgKG9zIGVycm9yICkAAQAAAAAAAACLtRwACwAAAJa1HAABAAAAc3RkL3NyYy9pby9zdGRpby5ycwCwtRwAEwAAABoEAAAUAAAAZmFpbGVkIHByaW50aW5nIHRvIDogAAAA1LUcABMAAADntRwAAgAAALC1HAATAAAAYwQAAAkAAABzdGRlcnJzdGQvc3JjL2lvL21vZC5yc2EgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90AAAAI7YcAFYAAAASthwAEQAAAGUHAAAVAAAAcGFuaWNrZWQgYXQgOgpjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleAAAorYcACAAAABzdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnPMthwAJAAAABQAAAAJAAAAbG9jayBjb3VudCBvdmVyZmxvdyBpbiByZWVudHJhbnQgbXV0ZXhzdGQvc3JjL3N5bmMvcmVlbnRyYW50X2xvY2sucnMmtxwAHgAAACIBAAAtAAAAbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAVLccABUAAABptxwADQAAAHN0ZC9zcmMvYWxsb2MucnOItxwAEAAAAGMBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZKi3HAA0AAAAc3RkL3NyYy9wYW5pY2tpbmcucnPktxwAFAAAAIMAAAAJAAAASwEAAAwAAAAEAAAAWwEAAAAAAAAIAAAABAAAAFwBAAAAAAAACAAAAAQAAABdAQAAXgEAAF8BAABgAQAAYQEAABAAAAAEAAAAYgEAAGMBAABkAQAAZQEAAEJveDxkeW4gQW55Pk5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5SW5Qcm9ncmVzc090aGVyVW5jYXRlZ29yaXplZG9wZXJhdGlvbiBzdWNjZXNzZnVsEAAAABEAAAASAAAAEAAAABAAAAATAAAAEgAAAA0AAAAOAAAAFQAAAAwAAAALAAAAFQAAABUAAAAPAAAADgAAABMAAAAmAAAAOAAAABkAAAAXAAAADAAAAAkAAAAKAAAAEAAAABcAAAAZAAAADgAAAA0AAAAUAAAACAAAABsAAAAOAAAAEAAAABYAAAAVAAAACwAAABYAAAANAAAACwAAAAsAAAATAAAAHLIcACyyHAA9shwAT7IcAF+yHABvshwAgrIcAJSyHAChshwAr7IcAMSyHADQshwA27IcAPCyHAAFsxwAFLMcACKzHAA1sxwAW7McAJOzHACssxwAw7McAM+zHADYsxwA4rMcAPKzHAAJtBwAIrQcADC0HAA9tBwAUbQcAFm0HAB0tBwAgrQcAJK0HACotBwAvbQcAMi0HADetBwA67QcAPa0HAABtRwACAAAABAAAAARAAAADwAAAA8AAAASAAAAEQAAAAwAAAAJAAAAEAAAAAsAAAAKAAAADQAAAAoAAAANAAAADAAAABEAAAASAAAADgAAABYAAAAMAAAACwAAAAgAAAAJAAAACwAAAAsAAAAXAAAADAAAAAwAAAASAAAACAAAAA4AAAAMAAAADwAAABMAAAALAAAACwAAAA0AAAALAAAACgAAAAUAAAANAAAAbLgcAHS4HACEuBwAlbgcAKS4HACzuBwAxbgcANa4HADiuBwA67gcAPu4HAAGuRwAELkcAB25HAAnuRwANLkcAEC5HABRuRwAY7kcAHG5HACHuRwAk7kcAJ65HACmuRwAr7kcALq5HADFuRwA3LkcAOi5HAD0uRwABrocAA66HAAcuhwAKLocADe6HABKuhwAVbocAGC6HABtuhwAeLocAIK6HACHuhwASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd0i9HAAcAAAAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS4wL3NyYy9yYXcvbW9kLnJzAABsvRwAKgAAAFQAAAAoAAAARXJyb3JMYXlvdXRFcnJvcmYBAAAMAAAABAAAAGcBAABoAQAAaQEAAGNhcGFjaXR5IG92ZXJmbG93AAAA0L0cABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5yc+y9HAAUAAAAKwIAABEAAABhbGxvYy9zcmMvYm94ZWQvY29udmVydC5ycwAAEL4cABoAAABSAAAAEwAAAGFsbG9jL3NyYy9zdHIucnNhbGxvYy9zcmMvc3RyaW5nLnJzAEy+HAATAAAA6gEAABcAQfj88gALfQEAAABqAQAAYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGRpZCBub3RhbGxvYy9zcmMvZm10LnJzAADWvhwAEAAAAIgCAAAOAEGA/vIAC9AQAQAAAGsBAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlYWxsb2Mvc3JjL3NsaWNlLnJzAAAAM78cABIAAACfAAAAGQAAADy+HAAQAAAAowEAAD8AAAA8vhwAEAAAAKQBAAAzAAAAPL4cABAAAACEAgAAEwAAAEy+HAATAAAAjQUAABsAAABhbGxvYy9zcmMvc3luYy5ycwAAAJi/HAARAAAAcQEAADIAAAApIHNob3VsZCBiZSA8IGxlbiAoaXMgKSkgc2hvdWxkIGJlIDw9IGxlbiAoaXMgcmVtb3ZhbCBpbmRleCAoaXMg6r8cABIAAAC8vxwAFgAAANK/HAABAAAAYGF0YCBzcGxpdCBpbmRleCAoaXMgAAAAFMAcABUAAADTvxwAFwAAANK/HAABAAAAY29yZS9zcmMvbnVtL2RlYzJmbHQvZGVjaW1hbC5ycwBEwBwAHwAAAFEAAAAnAAAARMAcAB8AAAB9AAAAEwAAAETAHAAfAAAAoQAAACAAAABEwBwAHwAAALgAAAAlAAAARMAcAB8AAADlAAAAFQAAAETAHAAfAAAA7wAAABgAAAAAAAAIAQgDCAYQCRANEBIYFxgdGCQgKyAzIDwgRihQKFsoZzBzMIAwjjicOKs4uzjMQN1A70ACSRVJKUk+UVNRaVGAUZhZsFnJWeNh/WEYYjRqUGptaotqqnLJculyCnsre017cIOTg7eD3IMCjCiMT4x3lJ+UyJTynBwFHAUcBRwFBQIFAQIFBgIFAwECBQEFBgIFBwgBAgUDCQAGAgUBCQUDAQIFCQcGBQYCBQQICAIIAQIFAgQEAQQABgIFAQICAAcAAwECBQYBAAMFAQUGAgUDAAUBBwUHCAECBQEFAgUIBwgJAAYCBQcGAgkDCQQFAwECBQMIAQQGCQcCBgUGAgUBCQAHAwQIBgMCCAECBQkFAwYHBAMBBgQABgIFBAcGCAMHAQUIAgADAQIFAgMIBAEIBQcJAQABBQYCBQEBCQIACQIICQUFAAcIAQIFBQkGAAQGBAQHBwUDCQAGAgUCCQgAAgMCAgMIBwYJBQMBAgUBBAkAAQEGAQEJAwgEBwYFBgIFBwQFAAUIAAUJBgkCAwgCCAECBQMHAgUCCQACCQgEBgEJAQQABgIFAQgGAgYEBQEECQIDAAkFBwADAQIFCQMBAwICBQcEBgEFBAcIBQEFBgIFBAYFBgYBAggHAwAHBwMJAgUHCAECBQIDAggDAAYEAwYFAwgGCQYCCAkABgIFAQEGBAEFAwIBCAIGCQMECAEEBAUDAQIFBQgCAAcGBgAJAQMEBgcEAAcCAgYFBgIFAgkBAAMIAwAEBQYHAwMHAAMGAQMCCAECBQEEBQUBCQEFAgIIAwYGCAUBCAAGBgQABgIFBwIHBQkFBwYBBAEIAwQCBQkAAwMCAAMBAgUDBgMHCQcICAAHAAkBBwECCQUBBgYAAQUGAgUBCAEICQgJBAADBQQFCAUGBAcFCAMAAAcIAQIFCQAJBAkEBwABBwcCCQIIAgMHCQEFAAMJAAYCBQQFBAcEBwMFAAgIBgQGBAEBCAkFBwUBCQUDAQIFAgIHAwcDBgcFBAQDAgMCAAUJBAcIBwUJBwYFBgIFAQEDBggGCAMHBwIBBgEGAAIJBwMJAwcJCAgCCAECBQUGCAQDBAEICAYACAAIAAEECAYJBggJCQQBBAAGAgUCCAQCAQcACQQDAAQABAAABwQDBAgEBAkHAAcAAwECBQEEAgEACAUEBwEFAgACAAADBwEHBAICBAgFAwUBBQYCBQcBAAUEAgcDBQcGAAEAAAEIBQgHAQECBAIGBwUHCAECBQMFBQIHAQMGBwgIAAAFAAAJAgkDBQUGAgEDAwcICQAGAgUBBwcGAwUGCAMJBAAAAgUABAYEBgcHCAEABgYICQQFAwECBQgICAEHCAQBCQcAAAECBQIDAgMDCAkABQMDBAQHAgYFBgIFBAQEAAgJAgAJCAUAAAYCBgEGAQYJBAUCBgYHAgMGAwIIAQIFAgICAAQEBgAECQIFAAMBAwAIAAgEBwIGAwMDBgEIAQYEAAYCBQEBAQACAgMAAgQGAgUBBQYFBAAEAgMGAwEGBggACQAIAgADAQIFBQUFAQEBBQECAwECBQcIAgcAAgEBCAEFCAMEAAQFBAEAAQUGAgUCBwcFBQUHBQYBBQYCCAkBAwUBAAUJAAcJAQcAAgIHAAUABwgBAgUBAwgHBwcIBwgABwgBBAQFBgcFBQIJBQMJBQgFAQEDBQIFAwkABgIFBgkDCAgJAwkAAwkABwICCAMHBwYEBwYJBwkCBQUGBwYCBgkFAwECBQMEBgkEBAYJBQEJBQMGAQQBCAgIAgMIBAgJBgIHCAMIAQMEBwYFBgIFAQcDBAcCAwQHBQkHBggABwAJBAQBAQkCBAQIAQMJAQkABgcDCAIIAQIFCAYHAwYBBwMHCQgIBAADBQQHAgAFCQYCAgQABgkFCQUDAwYJAQQABgIFAABEwBwAHwAAAFkBAAAbAAAARMAcAB8AAABdAQAAEwAAAAADBgkNEBMXGh0hJCcrLjE1ODsAAAAAAAAA8D8AAAAAAAAkQAAAAAAAAFlAAAAAAABAj0AAAAAAAIjDQAAAAAAAavhAAAAAAICELkEAAAAA0BJjQQAAAACE15dBAAAAAGXNzUEAAAAgX6ACQgAAAOh2SDdCAAAAopQabUIAAEDlnDCiQgAAkB7EvNZCAAA0JvVrDEMAgOA3ecNBQwCg2IVXNHZDAMhOZ23Bq0MAPZFg5FjhQ0CMtXgdrxVEUO/i1uQaS0SS1U0Gz/CARABBmI/zAAvkDAEAAAAAAAAACgAAAAAAAABkAAAAAAAAAOgDAAAAAAAAECcAAAAAAACghgEAAAAAAEBCDwAAAAAAgJaYAAAAAAAA4fUFAAAAAADKmjsAAAAAAOQLVAIAAAAA6HZIFwAAAAAQpdToAAAAAKByThgJAAAAQHoQ81oAAACAxqR+jQMAY29yZS9zcmMvbnVtL2RlYzJmbHQvcGFyc2UucnMAAAAYyBwAHQAAAK0AAAATAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRlbHRhID49IDBjb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAABlyBwAGQAAAEwAAAAJAAAAZcgcABkAAABOAAAACQAAAMFv8oYjAAAAge+shVtBbS3uBAAAAR9qv2TtOG7tl6fa9Pk/6QNPGAABPpUuCZnfA/04FQ8v5HQj7PXP0wjcBMTasM28GX8zpgMmH+lOAgAAAXwumFuH075yn9nYhy8VEsZQ3mtwbkrPD9iV1W5xsiawZsatJDYVHVrTQjwOVP9jwHNVzBfv+WXyKLxV98fcgNztbvTO79xf91MFAGNvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5yc2Fzc2VydGlvbiBmYWlsZWQ6IGQubWFudCA+IDAAPMkcACcAAAB2AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWludXMgPiAwAAAAPMkcACcAAAB3AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQucGx1cyA+IDA8yRwAJwAAAHgAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnVmLmxlbigpID49IE1BWF9TSUdfRElHSVRTAAAAPMkcACcAAAB7AAAABQAAADzJHAAnAAAAwgAAAAkAAAA8yRwAJwAAAPsAAAANAAAAPMkcACcAAAACAQAANgAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX3N1YihkLm1pbnVzKS5pc19zb21lKCkAPMkcACcAAAB6AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX2FkZChkLnBsdXMpLmlzX3NvbWUoKQAAPMkcACcAAAB5AAAABQAAADzJHAAnAAAACwEAAAUAAAA8yRwAJwAAAAwBAAAFAAAAPMkcACcAAAANAQAABQAAADzJHAAnAAAAcgEAACQAAAA8yRwAJwAAAHcBAABXAAAAPMkcACcAAACEAQAANgAAADzJHAAnAAAAZgEAAA0AAAA8yRwAJwAAAEwBAAAiAAAAPMkcACcAAAAPAQAABQAAADzJHAAnAAAADgEAAAUAAAAAAAAA30UaPQPPGubB+8z+AAAAAMrGmscX/nCr3PvU/gAAAABP3Ly+/LF3//b73P4AAAAADNZrQe+RVr4R/OT+AAAAADz8f5CtH9CNLPzs/gAAAACDmlUxKFxR00b89P4AAAAAtcmmrY+scZ1h/Pz+AAAAAMuL7iN3Ipzqe/wE/wAAAABtU3hAkUnMrpb8DP8AAAAAV862XXkSPIKx/BT/AAAAADdW+002lBDCy/wc/wAAAABPmEg4b+qWkOb8JP8AAAAAxzqCJcuFdNcA/Sz/AAAAAPSXv5fNz4agG/00/wAAAADlrCoXmAo07zX9PP8AAAAAjrI1KvtnOLJQ/UT/AAAAADs/xtLf1MiEa/1M/wAAAAC6zdMaJ0TdxYX9VP8AAAAAlsklu86fa5Og/Vz/AAAAAISlYn0kbKzbuv1k/wAAAAD22l8NWGaro9X9bP8AAAAAJvHD3pP44vPv/XT/AAAAALiA/6qorbW1Cv58/wAAAACLSnxsBV9ihyX+hP8AAAAAUzDBNGD/vMk//oz/AAAAAFUmupGMhU6WWv6U/wAAAAC9filwJHf533T+nP8AAAAAj7jluJ+936aP/qT/AAAAAJR9dIjPX6n4qf6s/wAAAADPm6iPk3BEucT+tP8AAAAAaxUPv/jwCIrf/rz/AAAAALYxMWVVJbDN+f7E/wAAAACsf3vQxuI/mRT/zP8AAAAABjsrKsQQXOQu/9T/AAAAANOSc2mZJCSqSf/c/wAAAAAOygCD8rWH/WP/5P8AAAAA6xoRkmQI5bx+/+z/AAAAAMyIUG8JzLyMmf/0/wAAAAAsZRniWBe30bP//P8AQYac8wALBUCczv8EAEGUnPMAC9cVEKXU6Oj/DAAAAAAAAABirMXreK0DABQAAAAAAIQJlPh4OT+BHgAcAAAAAACzFQfJe86XwDgAJAAAAAAAcFzqe84yfo9TACwAAAAAAGiA6aukONLVbQA0AAAAAABFIpoXJidPn4gAPAAAAAAAJ/vE1DGiY+2iAEQAAAAAAKityIw4Zd6wvQBMAAAAAADbZasajgjHg9gAVAAAAAAAmh1xQvkdXcTyAFwAAAAAAFjnG6YsaU2SDQFkAAAAAADqjXAaZO4B2icBbAAAAAAASnfvmpmjbaJCAXQAAAAAAIVrfbR7eAnyXAF8AAAAAAB3GN15oeRUtHcBhAAAAAAAwsWbW5KGW4aSAYwAAAAAAD1dlsjFUzXIrAGUAAAAAACzoJf6XLQqlccBnAAAAAAA41+gmb2fRt7hAaQAAAAAACWMOds0wpul/AGsAAAAAABcn5ijcprG9hYCtAAAAAAAzr7pVFO/3LcxArwAAAAAAOJBIvIX8/yITALEAAAAAACleFzTm84gzGYCzAAAAAAA31Mhe/NaFpiBAtQAAAAAADowH5fctaDimwLcAAAAAACWs+NcU9HZqLYC5AAAAAAAPESnpNl8m/vQAuwAAAAAABBEpKdMTHa76wL0AAAAAAAanEC2746riwYD/AAAAAAALIRXphDvH9AgAwQBAAAAACkxkenlpBCbOwMMAQAAAACdDJyh+5sQ51UDFAEAAAAAKfQ7YtkgKKxwAxwBAAAAAIXPp3peS0SAiwMkAQAAAAAt3awDQOQhv6UDLAEAAAAAj/9EXi+cZ47AAzQBAAAAAEG4jJydFzPU2gM8AQAAAACpG+O0ktsZnvUDRAEAAAAA2Xffum6/lusPBEwBAAAAAGNvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2dyaXN1LnJzAACg0BwAJgAAAH0AAAAVAAAAoNAcACYAAACpAAAABQAAAKDQHAAmAAAAqgAAAAUAAACg0BwAJgAAAKsAAAAFAAAAoNAcACYAAACuAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCArIGQucGx1cyA8ICgxIDw8IDYxKQAAAKDQHAAmAAAArwAAAAUAAACg0BwAJgAAAAoBAAARAAAAoNAcACYAAAANAQAACQAAAKDQHAAmAAAAQAEAAAkAAACg0BwAJgAAAK0AAAAFAAAAoNAcACYAAACsAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6ICFidWYuaXNfZW1wdHkoKQAAAKDQHAAmAAAA3AEAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQgPCAoMSA8PCA2MSmg0BwAJgAAAN0BAAAFAAAAoNAcACYAAADeAQAABQAAAAEAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjug0BwAJgAAADMCAAARAAAAoNAcACYAAAA2AgAACQAAAKDQHAAmAAAAbAIAAAkAAACg0BwAJgAAAOMCAABOAAAAoNAcACYAAADvAgAASgAAAKDQHAAmAAAAzAIAAEoAAABjb3JlL3NyYy9udW0vZmx0MmRlYy9tb2QucnMAqNIcABsAAAC7AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1ZlswXSA+IGInMCcAqNIcABsAAAC8AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBhcnRzLmxlbigpID49IDQAAKjSHAAbAAAAvQAAAAUAAAAuMC4AqNIcABsAAAAKAQAABQAAAKjSHAAbAAAACwEAAAUAAABlRWUtRS0tK05hTmluZjAwZTAwRTBhc3NlcnRpb24gZmFpbGVkOiBidWYubGVuKCkgPj0gbWF4bGVuAACo0hwAGwAAAH4CAAANAAAAICgxIDw8ICkBAAAAAAAAAKjTHAAHAAAAr9McAAEAAAAuLjAxMjM0NTY3ODlhYmNkZWZCb3Jyb3dFcnJvckJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogAAAA89McABIAAABhbHJlYWR5IG11dGFibHkgYm9ycm93ZWQ6IAAAENQcABoAAAABAAAAAAAAAFtjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAAAGjUHAAgAAAAiNQcABIAAAAAAAAABAAAAAQAAAB2AQAAPT0hPW1hdGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAAx9QcABAAAADX1BwAFwAAAO7UHAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAAMfUHAAQAAAAENUcABAAAAAg1RwACQAAAO7UHAAJAAAAOiAAAAEAAAAAAAAATNUcAAIAAAAAAAAADAAAAAQAAAB3AQAAeAEAAHkBAAAgICAgIHsgLCAgewosCn0gfSgoCiwKXWNvcmUvc3JjL2ZtdC9udW0ucnMAAI/VHAATAAAASAAAABEAAAAweDBiMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlhc3NlcnRpb24gZmFpbGVkOiAqY3VyciA+IDE5j9UcABMAAAA7AgAABQAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjb3JlL3NyYy9mbXQvbW9kLnJzZmFsc2V0cnVl7NYcABMAAACmCQAAJgAAAOzWHAATAAAArwkAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyKNccAEwAAABjb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAfNccACcAAABhAwAABQAAAGF0dGVtcHRlZCB0byBpbmRleCBzbGljZSB1cCB0byBtYXhpbXVtIHVzaXpltNccACwAAABpbnZhbGlkIHV0Zi04IHNlcXVlbmNlIG9mICBieXRlcyBmcm9tIGluZGV4IOjXHAAaAAAAAtgcABIAAABpbmNvbXBsZXRlIHV0Zi04IGJ5dGUgc2VxdWVuY2UgZnJvbSBpbmRleCAAACTYHAAqAAAAY29yZS9zcmMvc3RyL21vZC5ycwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEGtsvMACzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDBAQEBAQAQeuy8wALnTtjb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAAa9kcABcAAABwBQAAEgAAAGvZHAAXAAAAcAUAACgAAABr2RwAFwAAAGMGAAAVAAAAa9kcABcAAACRBgAAFQAAAGvZHAAXAAAAkgYAABUAAABbLi4uXWJlZ2luIDw9IGVuZCAoIDw9ICkgd2hlbiBzbGljaW5nIGBg2dkcAA4AAADn2RwABAAAAOvZHAAQAAAA+9kcAAEAAABieXRlIGluZGV4ICBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgIChieXRlcyApIG9mIGAAHNocAAsAAAAn2hwAJgAAAE3aHAAIAAAAVdocAAYAAAD72RwAAQAAACBpcyBvdXQgb2YgYm91bmRzIG9mIGAAABzaHAALAAAAhNocABYAAAD72RwAAQAAAFjYHAATAAAA9AAAACwAAABjb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAAAMTaHAAdAAAAGgAAADYAAADE2hwAHQAAAAoAAAArAAAAAAYBAQMBBAIFBwcCCAgJAgoFCwIOBBABEQISBRMcFAEVAhcCGQ0cBR0IHwEkAWoEawKvA7ECvALPAtEC1AzVCdYC1wLaAeAF4QLnBOgC7iDwBPgC+gT7AQwnOz5OT4+enp97i5OWorK6hrEGBwk2PT5W89DRBBQYNjdWV3+qrq+9NeASh4mOngQNDhESKTE0OkVGSUpOT2RlioyNj7bBw8TGy9ZctrcbHAcICgsUFzY5Oqip2NkJN5CRqAcKOz5maY+SEW9fv+7vWmL0/P9TVJqbLi8nKFWdoKGjpKeorbq8xAYLDBUdOj9FUaanzM2gBxkaIiU+P+fs7//FxgQgIyUmKDM4OkhKTFBTVVZYWlxeYGNlZmtzeH1/iqSqr7DA0K6vbm/d3pNeInsFAwQtA2YDAS8ugIIdAzEPHAQkCR4FKwVEBA4qgKoGJAQkBCgINAtOAzQMgTcJFgoIGDtFOQNjCAkwFgUhAxsFAUA4BEsFLwQKBwkHQCAnBAwJNgM6BRoHBAwHUEk3Mw0zBy4ICgYmAx0IAoDQUhADNywIKhYaJhwUFwlOBCQJRA0ZBwoGSAgnCXULQj4qBjsFCgZRBgEFEAMFC1kIAh1iHkgICoCmXiJFCwoGDRM6BgoGFBwsBBeAuTxkUwxICQpGRRtICFMNSQcKgLYiDgoGRgodA0dJNwMOCAoGOQcKgTYZBzsDHVUBDzINg5tmdQuAxIpMYw2EMBAWCo+bBYJHmrk6hsaCOQcqBFwGJgpGCigFE4GwOoDGW2VLBDkHEUAFCwIOl/gIhNYpCqLngTMPAR0GDgQIgYyJBGsFDQMJBxCPYID6BoG0TEcJdDyA9gpzCHAVRnoUDBQMVwkZgIeBRwOFQg8VhFAfBgaA1SsFPiEBcC0DGgQCgUAfEToFAYHQKoDWKwQBgeCA9ylMBAoEAoMRREw9gMI8BgEEVQUbNAKBDiwEZAxWCoCuOB0NLAQJBwIOBoCag9gEEQMNA3cEXwYMBAEPDAQ4CAoGKAgsBAI+gVQMHQMKBTgHHAYJB4D6hAYAAQMFBQYGAgcGCAcJEQocCxkMGg0QDgwPBBADEhITCRYBFwQYARkDGgcbARwCHxYgAysDLQsuATAEMQIyAacEqQKqBKsI+gL7Bf0C/gP/Ca14eYuNojBXWIuMkBzdDg9LTPv8Li8/XF1f4oSNjpGSqbG6u8XGycre5OX/AAQREikxNDc6Oz1JSl2EjpKpsbS6u8bKzs/k5QAEDQ4REikxNDo7RUZJSl5kZYSRm53Jzs8NESk6O0VJV1tcXl9kZY2RqbS6u8XJ3+Tl8A0RRUlkZYCEsry+v9XX8PGDhYukpr6/xcfP2ttImL3Nxs7PSU5PV1leX4mOj7G2t7/BxsfXERYXW1z29/7/gG1x3t8OH25vHB1ffX6ur027vBYXHh9GR05PWFpcXn5/tcXU1dzw8fVyc490dZYmLi+nr7e/x8/X35oAQJeYMI8fzs/S1M7/Tk9aWwcIDxAnL+7vbm83PT9CRZCRU2d1yMnQ0djZ5/7/ACBfIoLfBIJECBsEBhGBrA6AqwUfCIEcAxkIAQQvBDQEBwMBBwYHEQpQDxIHVQcDBBwKCQMIAwcDAgMDAwwEBQMLBgEOFQVOBxsHVwcCBhcMUARDAy0DAQQRBg8MOgQdJV8gbQRqJYDIBYKwAxoGgv0DWQcWCRgJFAwUDGoGCgYaBlkHKwVGCiwEDAQBAzELLAQaBgsDgKwGCgYvMYD0CDwDDwM+BTgIKwWC/xEYCC8RLQMhDyEPgIwEgpoWCxWIlAUvBTsHAg4YCYC+InQMgNYagRAFgOEJ8p4DNwmBXBSAuAiA3RU7AwoGOAhGCAwGdAseA1oEWQmAgxgcChYJTASAigarpAwXBDGhBIHaJgcMBQWAphCB9QcBICoGTASAjQSAvgMbAw8NY29yZS9zcmMvdW5pY29kZS91bmljb2RlX2RhdGEucnMAAACt4BwAIAAAABsAAAAPAAAAreAcACAAAAAgAAAAIwAAAK3gHAAgAAAAIQAAABgAAACt4BwAIAAAAE4AAAAoAAAAreAcACAAAABaAAAAFgAAAGNvcmUvc3JjL251bS9iaWdudW0ucnMAACDhHAAWAAAAqgEAAAEAAABhc3NlcnRpb24gZmFpbGVkOiBub2JvcnJvd2Fzc2VydGlvbiBmYWlsZWQ6IGRpZ2l0cyA8IDQwYXNzZXJ0aW9uIGZhaWxlZDogb3RoZXIgPiAwAAAAAAAAWtY7ktZT9O4/O6EGKao/EfhlZRtmtFiVB8UkpFnKx0p2vz6if+Guukn2LQ3wvHldU2/Oit+ZWuncc3kQLCzY9JQFwbYroNiRaehLipsbB3n5RnGkNshOtoTi3myC4kiXt5iNTUR64uMlmxYIIxsb/XJ/eLBqjG2O9yAO5fXwMP5Pn5Zche8IsjWpUV4zLb29I0e8s2Yri96CE+Y1gHgsrXasVTAg+xaLMcyvIVDLO0yTF2s86LncrT2/GyokvkrfeN2FS2LoU9kNr6I0rW0d12uqM289cdSHaK3lQIxkcoYGlQDLjI3JqcIYH1Gv/Q5oSLrA/e/wO9Ty3mYlG70SAm10mP6VdqWEV0tg9zC2SwGIkT5+O9TOpS1eODW9o55B6jXOXUqJQs+5dYaCrEwGUrLhoHrOlYmBkwmU0evvQ3MfGkkZQvvrofgL+cXm6xQQpmCbnxL6Zsr2Tnd34CYa1NA4gkeXuAD9tCJVlZiwIImCY7GMXnMgnrA1VV1fbrRVYrzdLzaQqMUdg6o094kh63sr1btDtBL35CPVAXXs6aUtO2VVqrBrmm42JSHJM7JH+Im+6tScBsEKhG5pu8CemXYsbiUKREjxDSXKQ+pwBsDK22RXhirNlihXXmqSBgQ4vBI+7Sd1gLzy7PUENwgFxmuXjehxkqDrLmgzxkRKhvejflgxh1tEkx0h4Ptq7rN6TJ6u/WhyFbhkKdi6BepgWd9FGj0DzxrmvTOOKYckuW+razAGYsHQj1bg+HnUttOlloa8h7rxxLNsGHeYiaRIjzyoqykpLrbgh96U/qvNGjMlSQu62dxxjBQLHX+LwPCfbxuOKBBUjq/ZTeRervDsB0qisTIU6XHbUGGd9tks6MluBa+frDEnidJcIjoIHDG+ysaaxxf+cKsG9KpICmO9bX14gbmdPU3WCLHV2sy7LAlO6/CTgkbwhaWOxQhg9bslISbtOCNYbKdO8vYKuPIqr6pvKAcsbkfR4a60DWav9RrKRXmE26TMgk3tkMifjdlQPJeXZRLOf6OgKLW6B/EP5Qx9/f6WwV/MyHJiqUntUx5P3Ly+/LF3/3oPuxOc6OglsQk29z3Pqp+s6VSMYZGxdx2MA3UNg5XHFyRq77n1ndUlb0TS0ON6+R2tRGsocwVLd8Vqg2LO7Jsy7ApD+WfjTtV2RST7AejCP6fNk/dBnCKK1FbteQKi8w8RwXh1UkNr1kRWNIxBRZipqnhriRMKgwzWa0HvkVa+U9VWxmuYzCOPy8YRazbs7aiK7LeGvr8sOT8c6wKis5Sp1vMyFNf3ewdP46WDiuC5U8ywP9nM9drJIlyPJK1Y6Gj/nI8PQLPRvpWZ2TZsN5GhH8K5CQgQIy37/49ER4W1iqcyKAwK1Kv5+f+zFZnm4mxRPzKPDMkWO/x/kK0f0I3jkmd/2ac9rkr7n/SYJ0SxnHdB388RzZkd+scxfzGV3YPVEddDVkBAUvwcf+8+fYpyJWtm6jUoSGY75F6rjhytz+4FAGVDMtpASp02VrJj2IJqB0A+1L6QaE4i4nVPPoeRogTopkR3WgLiqlpT4w2pNssFotAVFXGDmlUxKFxR0wM+h8pEW1oNkYDVHpnZEoTChpT+CnlY6Lbgimb/jxelcqg5vk2XbmLjmC1A/3Ndzo8SyC0hPQr7jn8ciH9o+oCZC528NGbmfHKfI2qfAjmhgE7E68H/HxxOh6xER0OHySBitWay/yejIqnXFRkU6fuoumIAn//xS7XJpq2PrHGdqbQ9YMM/d28ifBCZsxfOxNMhTTi0D1XLK5tUf6CdAfZIamBGoVMqfvvglE+EAsGZbUL8y0R02i45GXpjJUMxwAhT+/5VEZH6iJ9YvO6TPfDKJ7p+q1U1ebVjtzV1fCaW3lg0L4tVwUuiPCWDkhuwuxZvAfvtqrGey4vuI3cinOrcysF5qRVeRl8XdXaKlaGSyR4Z7InN+gs2XRIU7fpJt3tmH2fsgPnOhPQWWah5HOUaQOeAJ+G3gtJYrjcJzDGPEIiQsLjsstEH75mFCz/+shWqtNzmpx+GyWoAZ87Ovd+a1OGT4JGnZ71CYABBodaL4CRtXCy7yOBtU3hAkUnMrhhuiHP36fpYSGiWkPVbf9qeiWpQdaQ5ry0BXnp5mY+IA5ZCUskGhG14gfXY13+zqoM706Z7COXI1uEyz81fYNVkCoiQmkoe+ybNf6HgO1yFfwZVmqDu8lxvwN/J2Eqzph5I6sBIqi/0i7BX/I4dYNAm2iTx2pQ78VfOtl15EjyCWAi31gg9xXbtgSS1FxfLom7KZAxLjHZUaKJtot3cfcsJ/X3PXS+UqQILCQsVVF3+THxdQzU7+dPhpuUmjVT6nq9tGkoBxXvEmhCfcLDpuMYbCaGcQbaaNcDUxowcJGf4YkvJA9JjAcP4RPzXkXZAmx3PXUJj3uB5Nlb7TTaUEMLkQvUS/BVZmMQreuFDuZTynZOyF3tbbz5aW+xsyvOcl0Kcz+4smQWnMXInCL0whL1Tg4MqeP/GUL1OMUrsPOXsKGQkNVa/+KQ20V6uE0YPlJm+NuGVdxuHhIX2mZgXE7k/boRZe1XiKOUmdMB+3Vfnz4nlL9rqGjNPmEg4b+qWkCF2713I0vA/Y75aBgulvLSpU2t1egftD/tt8cdNzuvhlCjGEllJ6NO95Pac8GAzjVzZu6vXLXFk7J00xCw5gLCzz6qWTXmNvWfFQfV3R6DcoINV/KDX8OxgG0n5qizkiURytZ3Ehhb0OWKbt9U3XazVziLFdSgcMcc6giXLhXTXi4JrNpMyY328ZHH3ntOohpcxAwKc/12u671NtYYIU6j8/YMCg3/12WYtoWKoymfSe/0kw2PfctBgvKQ9qd6Ag20e91mey0dCeOsNjVMWYaQI5nTwhb7ZUlZmUXDoW3nNix+SbCcukGf23zJGcdlrgLZT26PYHLoA85e/l83PhqCkKNLMDqTogPB9r/3Ag6jIzbIGgBLNImFsXRs9saTS+oFfCCBXgGt5Yxoxxu6mw5ywOwV0NjDjy/xgvXeqkPTDnIoGEUT82747uawV1bTx9EQtSBVV+5LuxfOLLQURF5lKHE0tFd0bdbbw7nhG1Vy/XWOgeFrUYtLkrCoXmAo07zR8yBZxifuGDqx6Dp+GgJWgTT2u5jVd1BJXGdJGqOC6CaHMWWCDdInXrJ+GWNKY6UvJP3A4pNErBswjVHeD/5HP3SdGowZjewi/LClVZH+2QtWxF0zIOxrK7ndzaj0f5JNKnh1fusogPvUqiGKGk46c7oJye7R+VI2yNSr7ZziyQ6ojT5phnukxH8P0+YHG3tSU7OIA+gVkfvP5ODwRPIsE3dONQLyD3l5wOEeLFQuuRdRIsVCrJJZ2jAYZ7tqN2VcJm90k1q07yRekz9So+IfW5YAK16VM5bwdjQMK0/apTB8hzUzPn14rZXCEzId01B9naQAgw0d2Oz/G0t/UyIRz4EEA9NnsKQnPd8cXCvulkFhSAHEQaPTMwlW5ncx5z7TuZkCNFIJxv5nVk+IfrIEwVUBI2Ezxxi8AyzjbJxeifGpQWg6grbg7wP0G0vGcyhyF5PARCNmmSjC9iEYuRP1jph1tFkqPkC4+dhXsnEqe/ocyBE6OWZq6zdMaJ0Tdxf0pP4Xh8e9AKMGI4TCVVPd89I7mWe4r0bl49Yw+3ZSazlgZMPh0u4Ln1jIwjhQ6wQGvHzw2UmrjoYw/vLGZiPHBmifLw+ZE3OW3pxUPYPWWucD4XjoQqynepRHbEriyvOfwtvZI1BV0Vg/WkRdm3+shrWQ0W0kbEZXJJbvOn2uTNOy+ANkNscr7O+9pwodGuEKn7kBPUV09+gprBLMpWOYSUSoRo6W0DNzmwuIPGvePq3K66oXn8EeToHPbk+D0s1YPaWVnIe1ZuIhQ0rgY8uAsU8M+wWloMHNVcoNzT5eM+xM6xxhCQR7P6k5kUCO9r/qYCPmektHlg6VifSRsrNs5v0q3RvdF33KnXc6Ww0uJg7eOMoy6i2tPEfWBfLSeq2RlMj8vqW4GolVyopthhta9/v4Oe1MKyIV1h0UB/ROGNl9f6Sx0Br3nUumWQfyYpwQ3tyM4EUgsoKej/FE7f9HFBKUshhVa98RI5j0The+C+yLn23NNmJr12l8NWGaro7rr4NLQYD7Bs9G3EO4/lsyoJpkHBfmNMR/G5ZTpz7v/UnB/SUZ38f3Tmw/98WHVnzOm7+2L6rb+yIJTfG66ysfAj2vpLqVk/ntjaBsKab35sHPGo3rO/T0tPiFRpmEWnE4IXKYMob4GuI1p5Q/6G8NiCvPPT0luSCbxw96T+OLz+szvw6PbiVq3djprXNttmBzgdVpGKZb4ZRQJhjNSib4jWBPxl7O79n9Zi2fApivuLC5Y7X2ganTvF7dAOEjblNwcV7ROpMKo693kUEYaEroT5GxhYk3zkmYVHuXXoJboFx3I+bogsHdgzTLvhiRekS4SHdx0FM4KuID/qqittbW6ViQTkpmBDeZgv9USGSPjaWztl/b/4RCPnJfFq+/1jcFj9B76P43Ks4P9tpZrc7GyfLGm+I8wvaDkvGR8RtDd3ttd0PazfKzkDva+DSyiimupOkJ68M1rnZKzLhG3Sq3GU8nSmGzBhkR3YHrVZJ3Yt6h7B7/HceiLSnxsBV9ih3JJrWTXHEcRLV2bx8b2OqnPm9g9DeSY1Xk0gnl4tInTw8JOjRAd/0rLYPFLyxA2hLo5UVgqct/O/rjtHv6UQ6UoiGXutE6Xwj4nqaY9epTOMur+KWIiPXOHuCmIZswcgV9SP1p9NQYIqCY0KoD/Y6H3Js+w3MIHylIwwTRg/7zJtfAC3ZOzifxnfPFBOD8s/OKsQ9R4IKy7wO02KYOnm50NTKqES5RL1TGphPNjkQLFEd/UZV55ngp902XwvDVD9tUWSv+1F0ZNLqQ/FpYB6plFTo6/0c5LUDmNz5v7gWTA1uFxL4bCXuSIcMOCeqJ98ExaTrsnc3ZdVSa6kYyFTpZv+BDV+AdqOuqvKLbvJuK7izZVCveJBInl27Kjq7Da6i6E6sx0rEUrb8lPRmuuyJKdkhIAyYsLO8u74xcG2nq3RDcXQLtuzgm9qtydh5BZ5RUFHRBqCkLMtuqpwlT6V48tIxJKgkapn2RlVPPp+C2z+auW3CKYk0e9filwJHf53/dWvJMrfnhZNu8Zxnbq+4tatlU8207rVwNroHcU5fqu8SNrC5Ii5u3EhYiVWZ652u3sRY42q1/pm1N1/fcCtIgUtOsYAsvbEYGo0vy1A+GqGaEmn8K9UtaiUgd8o0SZ1V9J8EYzbedLpZOELebKf4XbLVYMQKRwb4645bifvd+mUrlrD1DNTMuyJh+nB62X0KenRhOkACB+L3hzyCTMXoLIKAyMZgDUjjtWkPotf/ai+jIPL4AAiXLKazR5+R60y7n/0jqgQCtPvIaB17cmof6ov4dJyBD24jb0sOYyuCSfydf0LX3K2Q1DMV2gP+btxrsNcnkcPVCRlH10iM9fqfgqkc6XY0ykdXzOSLXh22mbuhrhPr6vhskbApsi2lJEwmhhmc6tW+j7osJBq5Bn1fLDuT9CmXLi+qUZCWu6YMWXGtRnyZ+HzdwPYMsF6bi2vSDJwbuH6QBUEzg+RyNnJO1oO7Kq6SMBKQvjhgx2wDaUIWWvCnK2oPnOm6iPk3BEuWk+W40O5Aj4wsKSc7iMlecEDrIwEh0Ltrm5O0jzd72QwkhvXivyxrEoqEoa8NXstPMaCza2rjgeMlLdIGwLKOKw4Y3DY9rGJV9TipQjB1mNDq04Wn5InFc36Kx57EivsFHYxvCdWoMtRCIYmCcb29xljvhsRTHk+GsVD7/48AiK/1gbZMuejhvF2tLuNi2LrD8vIj1+RnLid5GHqoT4rdcPu2rMHdgOW+q6lOpSu8yG6bTCnxJH6Zil6TmlJ+p/qCRis0fXmCM/DmSIjrHkn9KtOqAZDX/sjok+Ffnu7qODrCQEMGjPUxkrjlq3quqMpNctBTxCw6hftjExZVUlsM1NeQbLEvSSNxG/Pl9VF46A0AvkvovYu+LWbg63Kp2xoMQOna6uzmpbiwrSZHUE3sh1UkRaWoJF8i6NBr6ShRX7EmfV8PDi1u49GMS2e3PtnGtghZbWTUZVTB51pFrQKMSGuCY8TOGXqt9lkk1xBDP1qGYwS5/ZPdWrf3vQxuI/mSlA/o4DqEblll+ahHjbj78z0L1yBFKY3nz3wKVW0nPvQERtj4VmPpatmpgndmOolahKpHkTAOfdWcF+sVN8ErtSXQ1YGMBgVa9x3p1oG9fpprQQbh7wuKoNB6tiIXEmkuhwygQTlrPK0chVu2kNsLYiDf3Fl3tgPQU7KyrEEFzkalB8t32auIzjBFuaeoq5jkKyrZKOYPN3HMbxQBntZ7LTHlk3sjjwVaM3LpFf6AHfiGYvxd5GbGvG4ry6OzFhixWgPTtLrCMjdxtsqYp9Oa4aCA0KXpfsq1Uix1Pt3MfZIUqQjDW955Z1dVxUFOociFQu2ndB1lB+0pJzaZkkJKrpudDV0Qvl3Yd30MO/La3UZOhES8ZOXpW0SmLalzzshD4RC+878Vq9Yd360L1LJ6aO1c3qiq2x7LqUOUWtHrHP8kqBpe0Y3mf0/ENLLLPOgdfOcIeUz+qAMfwUXvdfQqKNAk2peYMloT47mjX199LKMEOgE1jkbgkNygCD8rWH/fxTiBhuncqLSH7gkbfRdJ5+NFXPZKJed9qdWHYlBhLGnoEqA/5KNpVRxe7TroeW9wUi9YO93YM6Ujt1RM0UvppDNXlylmqSxCeKkpUAmm3BlIIXDzwFt3WxLPe6gADJ8Tlj3RKLxiRT7nvadFCgHZcEXsrrFvz20+oaEZJkCOW8hfW8phy79IilYZW2fUoe7OYybNDj6TErB10dko7ukpPQn0NiLjL/Okm0pDYyqne4w4fU+rn+vglb4U3EvpSV5rSpiXlovi5M2aywOvd8HZARCvZLATedDw/YXAk13CS0lYzznsGEhFMTDrRLQhMu4bpvsAbypWUoy4hQbwnMvIzURS5Et4c/+f6qJMsL/+uvSdc5FaVpj/e+1e29zv7m2xxNiFoORHO1l6W0NkFfcIkxMJX4iApoMfzOYYQRd8yrPny6NisNwv28Qnrl1ZS/1k0baQR2kDI9tWlsrwW9N4YQscHCSZo/piOERxtHrMWnVB1yM9yAzw8rZRniWBe30amkTkATYcPTO99PjZduEoPqJjEIrBxaZArXo3A9CtejpHA9CtejcD3MzMzMzMzMzM3MzMzMzMzMAAAAAAAAAIAAQZfu8wALAaAAQafu8wALAcgAQbfu8wALAfoAQcbu8wALAkCcAEHW7vMACwJQwwBB5u7zAAsCJPQAQfXu8wALA4CWmABBhe/zAAsDILy+AEGV7/MACwMoa+4AQaXv8wALA/kClQBBtO/zAAsEQLdDugBBxO/zAAsEEKXU6ABB1O/zAAsEKueEkQBB4+/zAAsFgPQg5rUAQfPv8wALBaAxqV/jAEGD8PMACwUEv8kbjgBBk/DzAAsFxS68orEAQaLw8wALBkB2OmsL3gBBsvDzAAsG6IkEI8eKAEHC8PMACwZirMXreK0AQdHw8wALB4B6F7cm19gAQeHw8wALB5CsbjJ4hocAQfHw8wALB7RXCj8WaKkAQYHx8wALykWh7czOG8LTAAAAAAAAAACghBRAYVFZhAAAAAAAAAAAyKUZkLmlb6UAAAAAAAAAADoPIPQnj8vOAAAAAAAAAACECZT4eDk/gQAAAAAAAABA5Qu5NtcHj6EAAAAAAAAAUN5OZwTNyfLJAAAAAAAAAKSWIoFFQHxv/AAAAAAAAABNnbVwK6itxZ0AAAAAAAAg8AXjTDYSGTfFAAAAAAAAKGzGG+DDVt+E9gAAAAAAADLHXBFsOpYLE5oAAAAAAEB/PLMVB8l7zpfAAAAAAAAQn0sg20i7GsK98AAAAAAA1IYe9IgNtVCZdpYAAAAAgEQUEzHrUOKkPxS8AAAAAKBV2Rf9JeUajk8Z6wAAAAAIq89dvjfP0LjR75IAAAAA5cqhWq0FAwUnxqu3AAAAQJ49SvEZx0PGsLeW5QAAANAFzZxtb1zqe84yfo8AAACiIwCC5Ivz5BqCv12zAACAiiyAot1uMJ6hYi814AAAIK03IAvVRd4CpZ09IYwAADTMIvQmRdaVQw4FjSmvAABBfyuxcJZMe9RRRvDz2gBAEV923Qw8D80k8yt22IgAyGr7aQqIpVMA7u+2kw6rAHpFegQN6o5ogOmrpDjS1YDY1phFkKRyQfBx62Zjo4VQR4Z/K9qmR1FsTqZAPAynJNlnX7aQkJllB+LPUEvP0G3PQffjtPT/n0TtgRKPgYKkIYl6DvH4v8eVaCLX8iGjDWorGVIt9685uwLrjG/qy5BEdp+m+PSbCGrDJXAL5f601VNH0DbyAkUimhcmJ0+fkGWULEJi1wHWqoCd7/Aix/V+ubfSOk1Ci9XghCut6/iy3qdlh4ng0neFDDM7TJObL+uIn/RVzGPVps//SR94wvsla8dxa788ipDDfxwnFvN670U5Tkbvi1Y62s9x2O2XrLXL4/CLdZfsyNBDjk7pvRejvhzt7lI9J/vE1DGiY+3dS+5jqKqnTPgc+yRfRV6Uau90PqnK6I825DnuttZ1uUQrEo5T/eKzRF3IqWRM0+cWtpZxqLzbYEo6Heq+D+SQzTH+RulVibzdiKSkrhMdtUG+vZhjq6trFKvNTZpYZOLRLe1+PJaWxuyKoHBgt36NojxUz+UdHvyorciMOGXesMtLKUNfpSU7Etn6r4b+Fd2+nvMTtw7vSavH/C0Uvy2KN0N4bDJpNW6W+Xs52S65rARUlgd/w8JJ+/fah49659cG6XvJXnQz3P3a6LSZrPCGo3HtPbsooGm8ESMiwNesqAzOaA3qMgjEK9arKrAN2NKQAcOQpD8K9dtlqxqOCMeD+uB52sZnJnlSP1ahscq4pDhZGJG4AXBXJs+rCV795s2Gb161JgJM7XhhC8ZaXrCAtAVbMViBT1TWOY538XXcoCHHsT2uYWNpTMhx1W2TE8npOB7NGTq8A186zkpJeFj7I8dlQKBIqwR75MDOLUsXnXacPyhkDetimh1xQvkdXcSUg08yvdClOwBlDZN3ZXT1eWTjfuxEj8ogX+i7ar9omcseTs8Ti5l+6HbiakXvwr9+piHD2O0/nqIUm8UWq7PvHhDq807pz8Xl7IA77krQlRJKcljR8aG7HyhhyqldRLuX3I6uRW6KKiZy+TwUdRXqvZMyGtcJLfVY5xumLGlNklacX3AmJjxZLuGiz3fD4LZsg3cMsC+Lb3qZi8NV9JjkR2SVD5z7bQvsPzeatZjfjqxevYlBvSRH5w/FAON+l7JXtizskeztWOFT9sCbXj3f7eM3Z7ZnKS9s9JlYIVuGi3TuggDS4Hm9h3HArunxZ64RqqOABlnY7OmNcBpk7gHalZTMIEhvDuiyWIaQ/jRBiN3cfxSNBQkx3u6nND6CUaoV1J9Z8EZLvZbq0cHN4uXUGskHcKwYnmyeMiOZwK0PhbDdBMZrz+IDRf9rvzCZU6YcFYa3RoPbhBb/Ru98f+jPY5pnZRhkEuZuX4wVrk/xgX7AYD+PfstPSXfvmpmjbaKd8DgPM16+4xxVqwGADAnLxSwH07/1rVxjKhYCoE/L/fb3yMcvc9lzftpNAcQRn576mt3c/ednKB1RoQE11kbGuAEVVP3hgbJlpQlCwovY9yZCGql8WiIfXwdGaVlX55pYabDpjXh1MzeJl8MvLaHBroMcZLHWUgCEa320e3gJ8pqkI71djGfAMmPOUE3rRZfgRjaWurdA+P/7AaUgZhe9mNjDO6nlULb/ekLOqD9d7L7OtIoTH+Wj34zpgMlHupM3AbE2bDNvxhfwI+G72ai4hEFdREcAC7gd7GzZKhDT5uWRdBVZwA2mkhPkxxrqQ5Av22itN5jIh3cY3Xmh5FS0+xHDmEW+uimUXlTYyR1q4XrW8/7WbSn0Hbs0J55S4owMZlhfpuSZGOTpAbFF5xqwj38u989dwF5dZEIdF6Eh3HMf+vRDdXB2un5Jcq4ElYmoUxx5SkkGamne2w7aRfqrkmhjF53bhwQD1pKSUNf41rZCPF2E0qlFwsWbW5KGW4ayqUW6kiOKCzK3gvI2aPKnHhTXaHesbI7/ZCOvRALv0SbZDEOV1wcyHx927WphNYO4B+hJveZEf+em06jFuQKkpglinGwgFl+hkAgTN2gDzQ+MesOHqNs2ZFrlayIhIoCJlyzaVElJwv2w3gZrqSqgbL23EKqb2/I9XZbIxVM1yMes5ZSUgpJvjPS7OreoQvr5Fx+6OSN3y9d4tYRyqWmc+25TFAR2Kv8N1+IlzxOEw7pKaBmFE/X+0Yxb78IYZfRpXcJfZliyfgI4mdV5L7+YYXrZ+z93L+8Dhv9KWPvuvvrYz/oPVfuqhGe/XS66qu44z4P5Uyq6lbKgl/pctCqVg2Hye3RalN3fiD05dGF1uuT57poRcfmUF+uMR9G5EulduKoBVs03eu4SuMwitKuROrMKwVXgYqyqF+Z/K6EWtglgTTFrmHtXlJ3fX3ZJnOMLuKD9hX5a7X3C6/vprUGOB3OEvhOPWBQcs+Z6ZBnSsciPJa7Ysm5Z41+gmb2fRt67867Zjl/Kb+47BIDWI+yKVFgNSLl73iXpSgUgzCynrWquEJqnGlavpJ0GKP/3ENkE2pSAUaErG4YiBHn/mqqHQghd8NJE+5AoK0VXv0GVqVNKdKwHFjo18nUWLS+S+tPoXJGXiZuIQrcJLnxdm3yEEdq6/jVhlWkljDnbNMKbpZWQaX6DufpDLu8HEsKyAs+79ANe5Gf5lH31REu5r2GB9XjCuu7gGx3cMhaepxu6oTIXc2kq2WJkk7+bhZGiKMr+3M8DdY97fXivAuc1y7L8PtTDRFJz2lyrrWGwAb/vnadk+moTiAg6Fhl6HMKua8XQ/bhFGKqKCFufmKNymsb2RT0nV55UrYqZYz+mhyA8mkuGePbiVKw2fzzPj6koy8Ddpxa0G2pXhJ8Lw/PT8v3w1VEcoaJEbWVD51l4xLeeliWzsaTlSmSfFGFwlrVlRrzuH94Nn109h1l5DPwi/1fr6qdV0Qa1DKnYy4fddf8Wk/KI1UIk8acJzr7pVFO/3Lcv64pTbe0RDIEuJCoo79Pl+qVtqMhoFo8QnVYaeXWkj7yHRGl9AW75VUTsYNeSjbOsqZXD3IHJN2pVJzmN93DgFxR79FPiu4VilbhDuJpGjI7szHh0bZWTu7qmVGZBWK+yJwCX0ch6OGpp0Om/US7bnjHA/AV7mQbiQSLyF/P8iAMf+L3j7B9EWtKq7t0vPKvDJnatHOgn1fGGVWrVOwvWdLDT2CPicYpWdHViZQXHhUlOhGdWLYf2bNESu77GOKfbYWUBrPgotMeF12lu+AbRUrq+Adc2M+GcsyYCRVukgnM0F2FGAsDshGCwQhZyTaOQAV351wLwJ6V4XNObziDM9EG0940D7DHOljPIQgIp/3FSoXVxBGd+QT4gvWmheZ+G04TpxmIAD9FNaCzECVjHaAjmo3h7wFJFYYI3NQwu+YKK38xWmnCny3yxQqHHvJuRtgtAdmCmiP7bXZOJ+avCNaQO0JP4z2r+UjX46/dW80NNEsS49oMF3lMhe/NaFphKcIt6M3pyw9ao6Vmw8Ru+XEwuWcAYT3QME2RwHO6i7XPfeW/w3mIR54s+xtHUhZSoK6xFVsvdiuEuzjcGSqe5kjYX1ys+lW2ZusHFhxwR6DcE3cy2jfrIoBSZ29SxCpGiIgpAkpicHchZfxJKXk21S6sM0La+AyU6MB+X3LWg4h3WD4RkrkQuJH5z3qlxpI3S5YnS/uzqXK1dEFYUjg2xR18shz6oJXQYdZRrmfFQ3Rl39yhOEi/RL8k84/+WUopvqprZcGu9gnv7C9y/POesC1UBEE3GbGNa+g7T7wsh2E6qAVTg90c8eFzp43WnFIdxCoE07PqsZZaz41xT0dmoDU2hQac5GH98oBw0qEUQ01CgCRIRSN4eTeSRIIkr6oMyBEarCu1Kk2BdtmhrtuSkP4UXVk2oHfi59ONCBuQdzo5mnatgEiU283jO6YOu0oAZYEJrfCvXwTAXQuQkWgehH/gShlv2TLL8nFIdrjBJySe2l2fyM+DePESnpNl8m/uxo30B70CYFqWK6AYILkGdTobuYJUoH45OraIIinmRxOInKrm68qbxoljLiuzXtfXbsXRnaa8QrmUXv9bzppGZKe+o4KFtyqw/3W7MsBD2v/Mq01gKCf0XjpSK/9yU8++w9QfvTEv83dmcth8KPfiVjvlkFRCvvUoPRKSnTEx2u/E3vhrUGm2dE1WN0V/fU+rtxW0hiWHIhCxV+OKba3SStJvktPU8/TJ3arbbgoYRt6HCHSIzjLw/FQWkkiPo1eRKM6XqP6+rDy2DpjsWsQWPDkCn8odNyyn4I5DKWx3HshIQUe/pID509iw0vbLkeN8WVCVrJKlNkRqcQLbvjquLjlT3wraJ0Bogw9Cjq3KWrrEptXMkrISh6PPEjFYPPNoedKKQLdflyXEY+xeWiWWIkohlenymL36N3vmd++t+qrfq/pgbkLvdMVZ4hfqmHtVlpT5/InQqVd41a5NcKDOFXyeHj5WIOtVWA0a4c/J/pjfxaPO6KomKLIRXphDvH9CFLUOwaXUrLZuy9mdq9ROCc/wpDmIpO5xCX/QBxfKYoo97tJG680mDE3dxQnYvP8tzmiE2qXAcJNfUDdNT+w7+EAGqg9OMI+0GpehjFF3JnqpASjIEODb0SM7ifFm0e8bV0Nw+BcZDsdqBG9xvoRr4CgWUjoa3lN0oMZHp5aQQmyaDHBm08nzKcn31Yx/O1MHwo2MfYS8c/c/c8jynAUry7Iw8Zzk7Y7wByheGCEFulxPYheADBb7Vgrydp0rRSb0YTqfYRIYtS6IrhVGdRZzsniHRDtbn+N1FO/NSgqvhkwO1QsnlkLvKFwqw52IW2rhDYpM7H3VqPZ0MnKH7mxDn1Dp4CmcSxQzihwFFfWFqkMUki2aAK/sn2ulBltz5hLT27S2AYPb5sVFk0rtTOKbhc2k5oPhzeF6yfmNVNOMHjejhI2R7SAvbX168agHcSbBi2iw9mhrOkfd1a8UBU1zc+xB4zEChQXa6KWMb4bO5iZ0Ky3/IBOmpKfQ7YtkgKKxEzb2f+kVjVDPxyroPKTLXlUCtR3kXfKnA1r7UqVl/hl1IzMyrju1JcIzuSRQwH6h0Wv+/VvJoXIwvalwZ/CbSETH/b+wug3O3XcLZj11Yg6t+/8VT/THIJfUy0PN0LqRVXn+3qHw+um+yP8QwEjrN6zVf5dIbziiFz6d6XktEgLOBW89j0YB5ZsNRGTZeVaAfYjLDvAXh10A0pp/DtWrIp/r+8ytH2Y1QwY+HNGOF+lG5/vD2mE+x0ti51ABek5zTM59Wmr/RbgdP6AmBNbjDyABH7IAvhgrIYmJM4UKm9PrAWCdhuyfNvX29z8zp55iceJe4HNU4gCzdrANA5CG/w1a95mMKR+B4FJgEUF3q7nSsbOD8zFgYywzfAlJ6UpXI60MMHoA3D/3PloPmGKe6uuZUjyVgBdP9g3wkIN9Q6WkgKvMuuMZHftLNFnSL0pFBVPpXHTPcTB1HgRxRLke2Uun4reQ/E+DlmKFj5fnY46Yjd9ndDxhYj/9EXi+cZ45Iduqn6gkPV2F0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8AAABQCh0AGQAAAGF0dGVtcHQgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5kZXIgd2l0aCBhIGRpdmlzb3Igb2YgemVybwAAAHQKHQA5AAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoILgKHQASAAAAygodACIAAAByYW5nZSBlbmQgaW5kZXgg/AodABAAAADKCh0AIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgABwLHQAWAAAAMgsdAA0AAADCAgAASRIAAm0WQDQWHwA5tiSARQAsYE4FMKBOADRgU8BNYFaNpIBWDabAVqTXQFcA+YBibvogYz79QGOAAgFmNwcha+AeAXGaI6GYkC8BmjA0oZr7QwGbR0aBmwBhwZsAaOGbOWohnEBtQZz4hyGe1oxBoPCvgaAjseGg/LLBoQC8AaMA1CGjptZhpADfAamQ4uGr0OThruDnYa8A7iGwMPEhsgAAYrrgpiK7OrdCu6LOgrvh6wK8Xu5CvAD4grwe+qK8AADDvEsT47ywIwO9sCNUvUEaBhovAQoBBAEFFwEfAQAEDA4FBwEBAVYBHRIBAgIEAQEGAQEDAQEBFAFTAYsIpgEmAgEGKScOAQEBAgECAQEIGwQEHQsFOAEHDmYBCAQIBAMKAwIBEDANZRghCQIEAQUYAhMTGQcLBRgBBggBCCoKDAMHBkwBEAEDBA8NEwEIAgICFgEHAQEDBAMIAgICAgEBCAEEAgEFDAIKAQQDAQYEAgIWAQcBAgECAQIEBQQCAgIEAQcEAQERBgsDAQkBAwEWAQcBAgEFAwkBAwECAwEPBBUEBAMBCAICAhYBBwECAQUDCAICAgIJAgQCAQUNARACAQYDAwEEAwIBAQECAwIDAwMMBAUDAwEDAwEGASgNAQMBFwEQAwgBAwEDCAIBAwIBAgQcBAEIAQMBFwEKAQUDCAEDAQMIAgYCAQQNAwwNAQMBKQIIAQMBAwEBBQQHBRYGAQMBEgMYAQkBAQIHCAYBAQEIEgINOgUHBgEzAgEBAQUBGAEBARMBAwIFAQEGAQ4EIAE/CAEkBBMEEAEkQzcBAQIFEEAKBAImAQEFAQIrAQABBAIHAQEBBAIpAQQCIQEEAgcBAQEEAg8BOQEEAkMlEBBWAgYDAAIRARoFSwMLBxQLFQwUDA0BAwECDDQCEw4BBAFDWQcrBUYKHwEMBAkXHgIFCywEGjYcBD8CFDIBFwILAzE0AQ8BCDMqAgQKLAELDjcWAwokAgsFKwIDKQQBBgECAwEFwBMiCwACBgImAgYCCAEBAQEBAQEfAjUBBwEBAwMBBwMEAgYEDQUDAQd0AQ0BEA1lAQQBAgoBAQMFBgEBAQEBAQQBCwIEBQUEAREpADQA5QYEAwIMJgEBBQECOAcBEBcJBwEHAQcBBwEHAQcBBwEHASAvAQADGQkHBQIFBFYGAwFaAQQFKwFeESAwEAAAQABDLgIAAxAKAhQvBQgDcScJAmcCQwICAQEBCBUUASEYNAxEAQEsBgMBAQMKIQUjDR0DMwEMDwEQEAoFATcJDhIXA0UBAQEBGAMCEAIECwYCBgIGCQcBBwErAQ4GexUADBcEMQAAAmomBwwFBQwBDQEFAQEBAgECAWwhABJAAjYoDHQFAYckGgYaC1kDBgIGAgYCAyMMARoBEwECAQ8CDiJ7RTUAHQMxLyANHgUrBR4CJAQIAQUqnhIkBCQEKAg0DAsBDwEHAQIBCwEPAQcBAgM0DAAJFgoIGAYBKgEJRQYCAQEsAQIDAQIXChcJH0ETAQIKFgoaRjgGAkAEAQIFCAEDAR0qHQMdIwgBHBs2ChYKEw0Sbkk3Mw0zDSgiHAMBBRf6KgECAwIQAzcBAx0KAQgWKhIuFRsXCUYrBQo5CQENGRczEQQIIwMBCUABBAkCCgEBASMSASICAQYEPgcBAQEEAQ8BCgc5FwQBCAICAhYBBwECAQUDCAICAgIDAQYBBQccCgEBAgEBJgEKAQECAQEEAQIDAQEBLEIBAwEEFAMeQgICAQG4NgIHGQYiPwEBAwE7NgIBRxsCDhUHuTlnQB8IAgECCAECAR4BAgICAgRdCAIuAgYBAQECGzMCChFIBQESScchHwkBLQEHAQExHgIWAQ5JBwECASwDAQECAQMBAQICGAYBAgElAQIBBAEBABcJEQEpAwNvAU8AZm8RxABhDwARBhkABQAALwAABx8RTxEeEjAQBB8VBRMALdNAgEsEOQcRQAIBAQwCDgAIACkKAAQBBwECAQAPAR0DAgEOBAgAAGsFDQMJBwoEAQBVAUcBAgIBAgICBAEMAQEBBwFBAQQCCAEHARwBBAEFAQEDBwEAAhkBGQEfARkBHwEZAR8BGQEfARkBCAAfBgbVBwERAgcBAgEFBT4hAXAtCgcQAQAeEiwAHOQeAgEABwEEAQIBDwHFO0QDAQMBAAQBGwECAQECAQEKAQQBAQEBBgEEAQEBAQEBAwECAQECAQEBAQEBAQEBAQIBAQIEAQcBBAEEAQEBCgERBQMBBQERABoGGgYaAAAgAAbeAgAOAA8AAAAAAAUAAACwAgAAXROgAhIXICK9H2AifCwgMAUwYDQVoOA1+KRgNwymoDce++A3AP7gQ/0BYUSAByFIAQrhSCQNoUmrDiFLLxghTDsZoVswHCFc8x6hXzA0YWMeYeFk8GphZUBt4WVPb6Fm8K8hZ528IWgAz+FoZ9FhaQDa4WkA4CFrruKhbOvkoW7Q6CFv+/OhbwEALnDwAX9wJwEGAQsBIwEBAUcBBAEBAQQBAgIAwAQCBAEJAgEB+wfPAQUBMS0BAQECAQIBASwBCwYKCwEBIwEKFRABZQgBCgEEIQEBAR4bWws6CwQBAgEYGCsDLAEHAgUJKTo3AQEBBAgEAQMHCgINAQ8BOgEEBAgBFAIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgECAQEECAEHAgsCHgE9AQwBMgEDATcBAQMFAwEEBwILAh0BOgECAQYBBQIUAhwCOQIEBAgBFAIdAUgBBwMBAVoBAgcLCWIBAgkJAQEHSQIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BXgEAAwADHQIeAh4CQAIBBwgBAgsDAQUBLQUzAUECIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCAScBCB8xBDABAQUBAQUBKAkMAiAEAgIBAzgBAQIDAQEDOggCAkAGUgMBDQEHBAEGAQMCMj8NASJlAAEBAwsDDQMNAw0CDAUIAgoBAgECBTEFAQoBAQ0BEA0zIQACcQN9AQ8BYCAvAQABJAQDBQUBXQZdAwABAAYAAWIEAQoBARwEUAIOIk4BFwNnAwMCCAEDAQQBGQIFAZcCGhINASYIGQsuAzABAgQCAhEBFQJCBgICAgIMAQgBIwELATMBAQMCAgUCAQEbAQ4CBQIBAWQFCQN5AQIBBAEAAZMRABADAQwQIgECAakBBwEGAQsBIwEBAS8BLQJDARUDAAHiAZUFAAYBKgEJAAMBAgUEKAMEAaUCAAQmARoFAQEAAk8ERgsxBHsBNg8pAQICCgMxBAICAgEEAQoBMgMkBQEIPgEMAjQJCgQCAV8DAgEBAgYBAgGdAQMIFQI5AgMBJQcDBUYGDQEBAQEBDgJVCAIDAQEXAVQGAQEEAgEC7gQGAgECGwJVCAIBAQJqAQEBAgYBAWUBAQECBAEFAAkBAgACAQEEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQIABwEGAQFSFgIHAQIBAnoGAwEBAgEH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AKYBAACAAgAApwEAAKgBAACpAQAAgwIAAKwBAACtAQAArgEAAIgCAACvAQAAsAEAALEBAACKAgAAsgEAAIsCAACzAQAAtAEAALUBAAC2AQAAtwEAAJICAAC4AQAAuQEAALwBAAC9AQAAxAEAAMYBAADFAQAAxgEAAMcBAADJAQAAyAEAAMkBAADKAQAAzAEAAMsBAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA2QEAANoBAADbAQAA3AEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEAAPEBAADzAQAA8gEAAPMBAAD0AQAA9QEAAPYBAACVAQAA9wEAAL8BAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAAWAgAAFwIAABgCAAAZAgAAGgIAABsCAAAcAgAAHQIAAB4CAAAfAgAAIAIAAJ4BAAAiAgAAIwIAACQCAAAlAgAAJgIAACcCAAAoAgAAKQIAACoCAAArAgAALAIAAC0CAAAuAgAALwIAADACAAAxAgAAMgIAADMCAAA6AgAAZSwAADsCAAA8AgAAPQIAAJoBAAA+AgAAZiwAAEECAABCAgAAQwIAAIABAABEAgAAiQIAAEUCAACMAgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAHADAABxAwAAcgMAAHMDAAB2AwAAdwMAAH8DAADzAwAAhgMAAKwDAACIAwAArQMAAIkDAACuAwAAigMAAK8DAACMAwAAzAMAAI4DAADNAwAAjwMAAM4DAACRAwAAsQMAAJIDAACyAwAAkwMAALMDAACUAwAAtAMAAJUDAAC1AwAAlgMAALYDAACXAwAAtwMAAJgDAAC4AwAAmQMAALkDAACaAwAAugMAAJsDAAC7AwAAnAMAALwDAACdAwAAvQMAAJ4DAAC+AwAAnwMAAL8DAACgAwAAwAMAAKEDAADBAwAAowMAAMMDAACkAwAAxAMAAKUDAADFAwAApgMAAMYDAACnAwAAxwMAAKgDAADIAwAAqQMAAMkDAACqAwAAygMAAKsDAADLAwAAzwMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAAD0AwAAuAMAAPcDAAD4AwAA+QMAAPIDAAD6AwAA+wMAAP0DAAB7AwAA/gMAAHwDAAD/AwAAfQMAAAAEAABQBAAAAQQAAFEEAAACBAAAUgQAAAMEAABTBAAABAQAAFQEAAAFBAAAVQQAAAYEAABWBAAABwQAAFcEAAAIBAAAWAQAAAkEAABZBAAACgQAAFoEAAALBAAAWwQAAAwEAABcBAAADQQAAF0EAAAOBAAAXgQAAA8EAABfBAAAEAQAADAEAAARBAAAMQQAABIEAAAyBAAAEwQAADMEAAAUBAAANAQAABUEAAA1BAAAFgQAADYEAAAXBAAANwQAABgEAAA4BAAAGQQAADkEAAAaBAAAOgQAABsEAAA7BAAAHAQAADwEAAAdBAAAPQQAAB4EAAA+BAAAHwQAAD8EAAAgBAAAQAQAACEEAABBBAAAIgQAAEIEAAAjBAAAQwQAACQEAABEBAAAJQQAAEUEAAAmBAAARgQAACcEAABHBAAAKAQAAEgEAAApBAAASQQAACoEAABKBAAAKwQAAEsEAAAsBAAATAQAAC0EAABNBAAALgQAAE4EAAAvBAAATwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZQQAAGYEAABnBAAAaAQAAGkEAABqBAAAawQAAGwEAABtBAAAbgQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAdwQAAHgEAAB5BAAAegQAAHsEAAB8BAAAfQQAAH4EAAB/BAAAgAQAAIEEAACKBAAAiwQAAIwEAACNBAAAjgQAAI8EAACQBAAAkQQAAJIEAACTBAAAlAQAAJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJsEAACcBAAAnQQAAJ4EAACfBAAAoAQAAKEEAACiBAAAowQAAKQEAAClBAAApgQAAKcEAACoBAAAqQQAAKoEAACrBAAArAQAAK0EAACuBAAArwQAALAEAACxBAAAsgQAALMEAAC0BAAAtQQAALYEAAC3BAAAuAQAALkEAAC6BAAAuwQAALwEAAC9BAAAvgQAAL8EAADABAAAzwQAAMEEAADCBAAAwwQAAMQEAADFBAAAxgQAAMcEAADIBAAAyQQAAMoEAADLBAAAzAQAAM0EAADOBAAA0AQAANEEAADSBAAA0wQAANQEAADVBAAA1gQAANcEAADYBAAA2QQAANoEAADbBAAA3AQAAN0EAADeBAAA3wQAAOAEAADhBAAA4gQAAOMEAADkBAAA5QQAAOYEAADnBAAA6AQAAOkEAADqBAAA6wQAAOwEAADtBAAA7gQAAO8EAADwBAAA8QQAAPIEAADzBAAA9AQAAPUEAAD2BAAA9wQAAPgEAAD5BAAA+gQAAPsEAAD8BAAA/QQAAP4EAAD/BAAAAAUAAAEFAAACBQAAAwUAAAQFAAAFBQAABgUAAAcFAAAIBQAACQUAAAoFAAALBQAADAUAAA0FAAAOBQAADwUAABAFAAARBQAAEgUAABMFAAAUBQAAFQUAABYFAAAXBQAAGAUAABkFAAAaBQAAGwUAABwFAAAdBQAAHgUAAB8FAAAgBQAAIQUAACIFAAAjBQAAJAUAACUFAAAmBQAAJwUAACgFAAApBQAAKgUAACsFAAAsBQAALQUAAC4FAAAvBQAAMQUAAGEFAAAyBQAAYgUAADMFAABjBQAANAUAAGQFAAA1BQAAZQUAADYFAABmBQAANwUAAGcFAAA4BQAAaAUAADkFAABpBQAAOgUAAGoFAAA7BQAAawUAADwFAABsBQAAPQUAAG0FAAA+BQAAbgUAAD8FAABvBQAAQAUAAHAFAABBBQAAcQUAAEIFAAByBQAAQwUAAHMFAABEBQAAdAUAAEUFAAB1BQAARgUAAHYFAABHBQAAdwUAAEgFAAB4BQAASQUAAHkFAABKBQAAegUAAEsFAAB7BQAATAUAAHwFAABNBQAAfQUAAE4FAAB+BQAATwUAAH8FAABQBQAAgAUAAFEFAACBBQAAUgUAAIIFAABTBQAAgwUAAFQFAACEBQAAVQUAAIUFAABWBQAAhgUAAKAQAAAALQAAoRAAAAEtAACiEAAAAi0AAKMQAAADLQAApBAAAAQtAAClEAAABS0AAKYQAAAGLQAApxAAAActAACoEAAACC0AAKkQAAAJLQAAqhAAAAotAACrEAAACy0AAKwQAAAMLQAArRAAAA0tAACuEAAADi0AAK8QAAAPLQAAsBAAABAtAACxEAAAES0AALIQAAASLQAAsxAAABMtAAC0EAAAFC0AALUQAAAVLQAAthAAABYtAAC3EAAAFy0AALgQAAAYLQAAuRAAABktAAC6EAAAGi0AALsQAAAbLQAAvBAAABwtAAC9EAAAHS0AAL4QAAAeLQAAvxAAAB8tAADAEAAAIC0AAMEQAAAhLQAAwhAAACItAADDEAAAIy0AAMQQAAAkLQAAxRAAACUtAADHEAAAJy0AAM0QAAAtLQAAoBMAAHCrAAChEwAAcasAAKITAAByqwAAoxMAAHOrAACkEwAAdKsAAKUTAAB1qwAAphMAAHarAACnEwAAd6sAAKgTAAB4qwAAqRMAAHmrAACqEwAAeqsAAKsTAAB7qwAArBMAAHyrAACtEwAAfasAAK4TAAB+qwAArxMAAH+rAACwEwAAgKsAALETAACBqwAAshMAAIKrAACzEwAAg6sAALQTAACEqwAAtRMAAIWrAAC2EwAAhqsAALcTAACHqwAAuBMAAIirAAC5EwAAiasAALoTAACKqwAAuxMAAIurAAC8EwAAjKsAAL0TAACNqwAAvhMAAI6rAAC/EwAAj6sAAMATAACQqwAAwRMAAJGrAADCEwAAkqsAAMMTAACTqwAAxBMAAJSrAADFEwAAlasAAMYTAACWqwAAxxMAAJerAADIEwAAmKsAAMkTAACZqwAAyhMAAJqrAADLEwAAm6sAAMwTAACcqwAAzRMAAJ2rAADOEwAAnqsAAM8TAACfqwAA0BMAAKCrAADREwAAoasAANITAACiqwAA0xMAAKOrAADUEwAApKsAANUTAAClqwAA1hMAAKarAADXEwAAp6sAANgTAACoqwAA2RMAAKmrAADaEwAAqqsAANsTAACrqwAA3BMAAKyrAADdEwAArasAAN4TAACuqwAA3xMAAK+rAADgEwAAsKsAAOETAACxqwAA4hMAALKrAADjEwAAs6sAAOQTAAC0qwAA5RMAALWrAADmEwAAtqsAAOcTAAC3qwAA6BMAALirAADpEwAAuasAAOoTAAC6qwAA6xMAALurAADsEwAAvKsAAO0TAAC9qwAA7hMAAL6rAADvEwAAv6sAAPATAAD4EwAA8RMAAPkTAADyEwAA+hMAAPMTAAD7EwAA9BMAAPwTAAD1EwAA/RMAAIkcAACKHAAAkBwAANAQAACRHAAA0RAAAJIcAADSEAAAkxwAANMQAACUHAAA1BAAAJUcAADVEAAAlhwAANYQAACXHAAA1xAAAJgcAADYEAAAmRwAANkQAACaHAAA2hAAAJscAADbEAAAnBwAANwQAACdHAAA3RAAAJ4cAADeEAAAnxwAAN8QAACgHAAA4BAAAKEcAADhEAAAohwAAOIQAACjHAAA4xAAAKQcAADkEAAApRwAAOUQAACmHAAA5hAAAKccAADnEAAAqBwAAOgQAACpHAAA6RAAAKocAADqEAAAqxwAAOsQAACsHAAA7BAAAK0cAADtEAAArhwAAO4QAACvHAAA7xAAALAcAADwEAAAsRwAAPEQAACyHAAA8hAAALMcAADzEAAAtBwAAPQQAAC1HAAA9RAAALYcAAD2EAAAtxwAAPcQAAC4HAAA+BAAALkcAAD5EAAAuhwAAPoQAAC9HAAA/RAAAL4cAAD+EAAAvxwAAP8QAAAAHgAAAR4AAAIeAAADHgAABB4AAAUeAAAGHgAABx4AAAgeAAAJHgAACh4AAAseAAAMHgAADR4AAA4eAAAPHgAAEB4AABEeAAASHgAAEx4AABQeAAAVHgAAFh4AABceAAAYHgAAGR4AABoeAAAbHgAAHB4AAB0eAAAeHgAAHx4AACAeAAAhHgAAIh4AACMeAAAkHgAAJR4AACYeAAAnHgAAKB4AACkeAAAqHgAAKx4AACweAAAtHgAALh4AAC8eAAAwHgAAMR4AADIeAAAzHgAANB4AADUeAAA2HgAANx4AADgeAAA5HgAAOh4AADseAAA8HgAAPR4AAD4eAAA/HgAAQB4AAEEeAABCHgAAQx4AAEQeAABFHgAARh4AAEceAABIHgAASR4AAEoeAABLHgAATB4AAE0eAABOHgAATx4AAFAeAABRHgAAUh4AAFMeAABUHgAAVR4AAFYeAABXHgAAWB4AAFkeAABaHgAAWx4AAFweAABdHgAAXh4AAF8eAABgHgAAYR4AAGIeAABjHgAAZB4AAGUeAABmHgAAZx4AAGgeAABpHgAAah4AAGseAABsHgAAbR4AAG4eAABvHgAAcB4AAHEeAAByHgAAcx4AAHQeAAB1HgAAdh4AAHceAAB4HgAAeR4AAHoeAAB7HgAAfB4AAH0eAAB+HgAAfx4AAIAeAACBHgAAgh4AAIMeAACEHgAAhR4AAIYeAACHHgAAiB4AAIkeAACKHgAAix4AAIweAACNHgAAjh4AAI8eAACQHgAAkR4AAJIeAACTHgAAlB4AAJUeAACeHgAA3wAAAKAeAAChHgAAoh4AAKMeAACkHgAApR4AAKYeAACnHgAAqB4AAKkeAACqHgAAqx4AAKweAACtHgAArh4AAK8eAACwHgAAsR4AALIeAACzHgAAtB4AALUeAAC2HgAAtx4AALgeAAC5HgAAuh4AALseAAC8HgAAvR4AAL4eAAC/HgAAwB4AAMEeAADCHgAAwx4AAMQeAADFHgAAxh4AAMceAADIHgAAyR4AAMoeAADLHgAAzB4AAM0eAADOHgAAzx4AANAeAADRHgAA0h4AANMeAADUHgAA1R4AANYeAADXHgAA2B4AANkeAADaHgAA2x4AANweAADdHgAA3h4AAN8eAADgHgAA4R4AAOIeAADjHgAA5B4AAOUeAADmHgAA5x4AAOgeAADpHgAA6h4AAOseAADsHgAA7R4AAO4eAADvHgAA8B4AAPEeAADyHgAA8x4AAPQeAAD1HgAA9h4AAPceAAD4HgAA+R4AAPoeAAD7HgAA/B4AAP0eAAD+HgAA/x4AAAgfAAAAHwAACR8AAAEfAAAKHwAAAh8AAAsfAAADHwAADB8AAAQfAAANHwAABR8AAA4fAAAGHwAADx8AAAcfAAAYHwAAEB8AABkfAAARHwAAGh8AABIfAAAbHwAAEx8AABwfAAAUHwAAHR8AABUfAAAoHwAAIB8AACkfAAAhHwAAKh8AACIfAAArHwAAIx8AACwfAAAkHwAALR8AACUfAAAuHwAAJh8AAC8fAAAnHwAAOB8AADAfAAA5HwAAMR8AADofAAAyHwAAOx8AADMfAAA8HwAANB8AAD0fAAA1HwAAPh8AADYfAAA/HwAANx8AAEgfAABAHwAASR8AAEEfAABKHwAAQh8AAEsfAABDHwAATB8AAEQfAABNHwAARR8AAFkfAABRHwAAWx8AAFMfAABdHwAAVR8AAF8fAABXHwAAaB8AAGAfAABpHwAAYR8AAGofAABiHwAAax8AAGMfAABsHwAAZB8AAG0fAABlHwAAbh8AAGYfAABvHwAAZx8AAIgfAACAHwAAiR8AAIEfAACKHwAAgh8AAIsfAACDHwAAjB8AAIQfAACNHwAAhR8AAI4fAACGHwAAjx8AAIcfAACYHwAAkB8AAJkfAACRHwAAmh8AAJIfAACbHwAAkx8AAJwfAACUHwAAnR8AAJUfAACeHwAAlh8AAJ8fAACXHwAAqB8AAKAfAACpHwAAoR8AAKofAACiHwAAqx8AAKMfAACsHwAApB8AAK0fAAClHwAArh8AAKYfAACvHwAApx8AALgfAACwHwAAuR8AALEfAAC6HwAAcB8AALsfAABxHwAAvB8AALMfAADIHwAAch8AAMkfAABzHwAAyh8AAHQfAADLHwAAdR8AAMwfAADDHwAA2B8AANAfAADZHwAA0R8AANofAAB2HwAA2x8AAHcfAADoHwAA4B8AAOkfAADhHwAA6h8AAHofAADrHwAAex8AAOwfAADlHwAA+B8AAHgfAAD5HwAAeR8AAPofAAB8HwAA+x8AAH0fAAD8HwAA8x8AACYhAADJAwAAKiEAAGsAAAArIQAA5QAAADIhAABOIQAAYCEAAHAhAABhIQAAcSEAAGIhAAByIQAAYyEAAHMhAABkIQAAdCEAAGUhAAB1IQAAZiEAAHYhAABnIQAAdyEAAGghAAB4IQAAaSEAAHkhAABqIQAAeiEAAGshAAB7IQAAbCEAAHwhAABtIQAAfSEAAG4hAAB+IQAAbyEAAH8hAACDIQAAhCEAALYkAADQJAAAtyQAANEkAAC4JAAA0iQAALkkAADTJAAAuiQAANQkAAC7JAAA1SQAALwkAADWJAAAvSQAANckAAC+JAAA2CQAAL8kAADZJAAAwCQAANokAADBJAAA2yQAAMIkAADcJAAAwyQAAN0kAADEJAAA3iQAAMUkAADfJAAAxiQAAOAkAADHJAAA4SQAAMgkAADiJAAAySQAAOMkAADKJAAA5CQAAMskAADlJAAAzCQAAOYkAADNJAAA5yQAAM4kAADoJAAAzyQAAOkkAAAALAAAMCwAAAEsAAAxLAAAAiwAADIsAAADLAAAMywAAAQsAAA0LAAABSwAADUsAAAGLAAANiwAAAcsAAA3LAAACCwAADgsAAAJLAAAOSwAAAosAAA6LAAACywAADssAAAMLAAAPCwAAA0sAAA9LAAADiwAAD4sAAAPLAAAPywAABAsAABALAAAESwAAEEsAAASLAAAQiwAABMsAABDLAAAFCwAAEQsAAAVLAAARSwAABYsAABGLAAAFywAAEcsAAAYLAAASCwAABksAABJLAAAGiwAAEosAAAbLAAASywAABwsAABMLAAAHSwAAE0sAAAeLAAATiwAAB8sAABPLAAAICwAAFAsAAAhLAAAUSwAACIsAABSLAAAIywAAFMsAAAkLAAAVCwAACUsAABVLAAAJiwAAFYsAAAnLAAAVywAACgsAABYLAAAKSwAAFksAAAqLAAAWiwAACssAABbLAAALCwAAFwsAAAtLAAAXSwAAC4sAABeLAAALywAAF8sAABgLAAAYSwAAGIsAABrAgAAYywAAH0dAABkLAAAfQIAAGcsAABoLAAAaSwAAGosAABrLAAAbCwAAG0sAABRAgAAbiwAAHECAABvLAAAUAIAAHAsAABSAgAAciwAAHMsAAB1LAAAdiwAAH4sAAA/AgAAfywAAEACAACALAAAgSwAAIIsAACDLAAAhCwAAIUsAACGLAAAhywAAIgsAACJLAAAiiwAAIssAACMLAAAjSwAAI4sAACPLAAAkCwAAJEsAACSLAAAkywAAJQsAACVLAAAliwAAJcsAACYLAAAmSwAAJosAACbLAAAnCwAAJ0sAACeLAAAnywAAKAsAAChLAAAoiwAAKMsAACkLAAApSwAAKYsAACnLAAAqCwAAKksAACqLAAAqywAAKwsAACtLAAAriwAAK8sAACwLAAAsSwAALIsAACzLAAAtCwAALUsAAC2LAAAtywAALgsAAC5LAAAuiwAALssAAC8LAAAvSwAAL4sAAC/LAAAwCwAAMEsAADCLAAAwywAAMQsAADFLAAAxiwAAMcsAADILAAAySwAAMosAADLLAAAzCwAAM0sAADOLAAAzywAANAsAADRLAAA0iwAANMsAADULAAA1SwAANYsAADXLAAA2CwAANksAADaLAAA2ywAANwsAADdLAAA3iwAAN8sAADgLAAA4SwAAOIsAADjLAAA6ywAAOwsAADtLAAA7iwAAPIsAADzLAAAQKYAAEGmAABCpgAAQ6YAAESmAABFpgAARqYAAEemAABIpgAASaYAAEqmAABLpgAATKYAAE2mAABOpgAAT6YAAFCmAABRpgAAUqYAAFOmAABUpgAAVaYAAFamAABXpgAAWKYAAFmmAABapgAAW6YAAFymAABdpgAAXqYAAF+mAABgpgAAYaYAAGKmAABjpgAAZKYAAGWmAABmpgAAZ6YAAGimAABppgAAaqYAAGumAABspgAAbaYAAICmAACBpgAAgqYAAIOmAACEpgAAhaYAAIamAACHpgAAiKYAAImmAACKpgAAi6YAAIymAACNpgAAjqYAAI+mAACQpgAAkaYAAJKmAACTpgAAlKYAAJWmAACWpgAAl6YAAJimAACZpgAAmqYAAJumAAAipwAAI6cAACSnAAAlpwAAJqcAACenAAAopwAAKacAACqnAAArpwAALKcAAC2nAAAupwAAL6cAADKnAAAzpwAANKcAADWnAAA2pwAAN6cAADinAAA5pwAAOqcAADunAAA8pwAAPacAAD6nAAA/pwAAQKcAAEGnAABCpwAAQ6cAAESnAABFpwAARqcAAEenAABIpwAASacAAEqnAABLpwAATKcAAE2nAABOpwAAT6cAAFCnAABRpwAAUqcAAFOnAABUpwAAVacAAFanAABXpwAAWKcAAFmnAABapwAAW6cAAFynAABdpwAAXqcAAF+nAABgpwAAYacAAGKnAABjpwAAZKcAAGWnAABmpwAAZ6cAAGinAABppwAAaqcAAGunAABspwAAbacAAG6nAABvpwAAeacAAHqnAAB7pwAAfKcAAH2nAAB5HQAAfqcAAH+nAACApwAAgacAAIKnAACDpwAAhKcAAIWnAACGpwAAh6cAAIunAACMpwAAjacAAGUCAACQpwAAkacAAJKnAACTpwAAlqcAAJenAACYpwAAmacAAJqnAACbpwAAnKcAAJ2nAACepwAAn6cAAKCnAAChpwAAoqcAAKOnAACkpwAApacAAKanAACnpwAAqKcAAKmnAACqpwAAZgIAAKunAABcAgAArKcAAGECAACtpwAAbAIAAK6nAABqAgAAsKcAAJ4CAACxpwAAhwIAALKnAACdAgAAs6cAAFOrAAC0pwAAtacAALanAAC3pwAAuKcAALmnAAC6pwAAu6cAALynAAC9pwAAvqcAAL+nAADApwAAwacAAMKnAADDpwAAxKcAAJSnAADFpwAAggIAAManAACOHQAAx6cAAMinAADJpwAAyqcAAMunAABkAgAAzKcAAM2nAADQpwAA0acAANanAADXpwAA2KcAANmnAADapwAA26cAANynAACbAQAA9acAAPanAAAh/wAAQf8AACL/AABC/wAAI/8AAEP/AAAk/wAARP8AACX/AABF/wAAJv8AAEb/AAAn/wAAR/8AACj/AABI/wAAKf8AAEn/AAAq/wAASv8AACv/AABL/wAALP8AAEz/AAAt/wAATf8AAC7/AABO/wAAL/8AAE//AAAw/wAAUP8AADH/AABR/wAAMv8AAFL/AAAz/wAAU/8AADT/AABU/wAANf8AAFX/AAA2/wAAVv8AADf/AABX/wAAOP8AAFj/AAA5/wAAWf8AADr/AABa/wAAAAQBACgEAQABBAEAKQQBAAIEAQAqBAEAAwQBACsEAQAEBAEALAQBAAUEAQAtBAEABgQBAC4EAQAHBAEALwQBAAgEAQAwBAEACQQBADEEAQAKBAEAMgQBAAsEAQAzBAEADAQBADQEAQANBAEANQQBAA4EAQA2BAEADwQBADcEAQAQBAEAOAQBABEEAQA5BAEAEgQBADoEAQATBAEAOwQBABQEAQA8BAEAFQQBAD0EAQAWBAEAPgQBABcEAQA/BAEAGAQBAEAEAQAZBAEAQQQBABoEAQBCBAEAGwQBAEMEAQAcBAEARAQBAB0EAQBFBAEAHgQBAEYEAQAfBAEARwQBACAEAQBIBAEAIQQBAEkEAQAiBAEASgQBACMEAQBLBAEAJAQBAEwEAQAlBAEATQQBACYEAQBOBAEAJwQBAE8EAQCwBAEA2AQBALEEAQDZBAEAsgQBANoEAQCzBAEA2wQBALQEAQDcBAEAtQQBAN0EAQC2BAEA3gQBALcEAQDfBAEAuAQBAOAEAQC5BAEA4QQBALoEAQDiBAEAuwQBAOMEAQC8BAEA5AQBAL0EAQDlBAEAvgQBAOYEAQC/BAEA5wQBAMAEAQDoBAEAwQQBAOkEAQDCBAEA6gQBAMMEAQDrBAEAxAQBAOwEAQDFBAEA7QQBAMYEAQDuBAEAxwQBAO8EAQDIBAEA8AQBAMkEAQDxBAEAygQBAPIEAQDLBAEA8wQBAMwEAQD0BAEAzQQBAPUEAQDOBAEA9gQBAM8EAQD3BAEA0AQBAPgEAQDRBAEA+QQBANIEAQD6BAEA0wQBAPsEAQBwBQEAlwUBAHEFAQCYBQEAcgUBAJkFAQBzBQEAmgUBAHQFAQCbBQEAdQUBAJwFAQB2BQEAnQUBAHcFAQCeBQEAeAUBAJ8FAQB5BQEAoAUBAHoFAQChBQEAfAUBAKMFAQB9BQEApAUBAH4FAQClBQEAfwUBAKYFAQCABQEApwUBAIEFAQCoBQEAggUBAKkFAQCDBQEAqgUBAIQFAQCrBQEAhQUBAKwFAQCGBQEArQUBAIcFAQCuBQEAiAUBAK8FAQCJBQEAsAUBAIoFAQCxBQEAjAUBALMFAQCNBQEAtAUBAI4FAQC1BQEAjwUBALYFAQCQBQEAtwUBAJEFAQC4BQEAkgUBALkFAQCUBQEAuwUBAJUFAQC8BQEAgAwBAMAMAQCBDAEAwQwBAIIMAQDCDAEAgwwBAMMMAQCEDAEAxAwBAIUMAQDFDAEAhgwBAMYMAQCHDAEAxwwBAIgMAQDIDAEAiQwBAMkMAQCKDAEAygwBAIsMAQDLDAEAjAwBAMwMAQCNDAEAzQwBAI4MAQDODAEAjwwBAM8MAQCQDAEA0AwBAJEMAQDRDAEAkgwBANIMAQCTDAEA0wwBAJQMAQDUDAEAlQwBANUMAQCWDAEA1gwBAJcMAQDXDAEAmAwBANgMAQCZDAEA2QwBAJoMAQDaDAEAmwwBANsMAQCcDAEA3AwBAJ0MAQDdDAEAngwBAN4MAQCfDAEA3wwBAKAMAQDgDAEAoQwBAOEMAQCiDAEA4gwBAKMMAQDjDAEApAwBAOQMAQClDAEA5QwBAKYMAQDmDAEApwwBAOcMAQCoDAEA6AwBAKkMAQDpDAEAqgwBAOoMAQCrDAEA6wwBAKwMAQDsDAEArQwBAO0MAQCuDAEA7gwBAK8MAQDvDAEAsAwBAPAMAQCxDAEA8QwBALIMAQDyDAEAUA0BAHANAQBRDQEAcQ0BAFINAQByDQEAUw0BAHMNAQBUDQEAdA0BAFUNAQB1DQEAVg0BAHYNAQBXDQEAdw0BAFgNAQB4DQEAWQ0BAHkNAQBaDQEAeg0BAFsNAQB7DQEAXA0BAHwNAQBdDQEAfQ0BAF4NAQB+DQEAXw0BAH8NAQBgDQEAgA0BAGENAQCBDQEAYg0BAIINAQBjDQEAgw0BAGQNAQCEDQEAZQ0BAIUNAQCgGAEAwBgBAKEYAQDBGAEAohgBAMIYAQCjGAEAwxgBAKQYAQDEGAEApRgBAMUYAQCmGAEAxhgBAKcYAQDHGAEAqBgBAMgYAQCpGAEAyRgBAKoYAQDKGAEAqxgBAMsYAQCsGAEAzBgBAK0YAQDNGAEArhgBAM4YAQCvGAEAzxgBALAYAQDQGAEAsRgBANEYAQCyGAEA0hgBALMYAQDTGAEAtBgBANQYAQC1GAEA1RgBALYYAQDWGAEAtxgBANcYAQC4GAEA2BgBALkYAQDZGAEAuhgBANoYAQC7GAEA2xgBALwYAQDcGAEAvRgBAN0YAQC+GAEA3hgBAL8YAQDfGAEAQG4BAGBuAQBBbgEAYW4BAEJuAQBibgEAQ24BAGNuAQBEbgEAZG4BAEVuAQBlbgEARm4BAGZuAQBHbgEAZ24BAEhuAQBobgEASW4BAGluAQBKbgEAam4BAEtuAQBrbgEATG4BAGxuAQBNbgEAbW4BAE5uAQBubgEAT24BAG9uAQBQbgEAcG4BAFFuAQBxbgEAUm4BAHJuAQBTbgEAc24BAFRuAQB0bgEAVW4BAHVuAQBWbgEAdm4BAFduAQB3bgEAWG4BAHhuAQBZbgEAeW4BAFpuAQB6bgEAW24BAHtuAQBcbgEAfG4BAF1uAQB9bgEAXm4BAH5uAQBfbgEAf24BAADpAQAi6QEAAekBACPpAQAC6QEAJOkBAAPpAQAl6QEABOkBACbpAQAF6QEAJ+kBAAbpAQAo6QEAB+kBACnpAQAI6QEAKukBAAnpAQAr6QEACukBACzpAQAL6QEALekBAAzpAQAu6QEADekBAC/pAQAO6QEAMOkBAA/pAQAx6QEAEOkBADLpAQAR6QEAM+kBABLpAQA06QEAE+kBADXpAQAU6QEANukBABXpAQA36QEAFukBADjpAQAX6QEAOekBABjpAQA66QEAGekBADvpAQAa6QEAPOkBABvpAQA96QEAHOkBAD7pAQAd6QEAP+kBAB7pAQBA6QEAH+kBAEHpAQAg6QEAQukBACHpAQBD6QEAtQAAAJwDAADfAAAAAABAAOAAAADAAAAA4QAAAMEAAADiAAAAwgAAAOMAAADDAAAA5AAAAMQAAADlAAAAxQAAAOYAAADGAAAA5wAAAMcAAADoAAAAyAAAAOkAAADJAAAA6gAAAMoAAADrAAAAywAAAOwAAADMAAAA7QAAAM0AAADuAAAAzgAAAO8AAADPAAAA8AAAANAAAADxAAAA0QAAAPIAAADSAAAA8wAAANMAAAD0AAAA1AAAAPUAAADVAAAA9gAAANYAAAD4AAAA2AAAAPkAAADZAAAA+gAAANoAAAD7AAAA2wAAAPwAAADcAAAA/QAAAN0AAAD+AAAA3gAAAP8AAAB4AQAAAQEAAAABAAADAQAAAgEAAAUBAAAEAQAABwEAAAYBAAAJAQAACAEAAAsBAAAKAQAADQEAAAwBAAAPAQAADgEAABEBAAAQAQAAEwEAABIBAAAVAQAAFAEAABcBAAAWAQAAGQEAABgBAAAbAQAAGgEAAB0BAAAcAQAAHwEAAB4BAAAhAQAAIAEAACMBAAAiAQAAJQEAACQBAAAnAQAAJgEAACkBAAAoAQAAKwEAACoBAAAtAQAALAEAAC8BAAAuAQAAMQEAAEkAAAAzAQAAMgEAADUBAAA0AQAANwEAADYBAAA6AQAAOQEAADwBAAA7AQAAPgEAAD0BAABAAQAAPwEAAEIBAABBAQAARAEAAEMBAABGAQAARQEAAEgBAABHAQAASQEAAAEAQABLAQAASgEAAE0BAABMAQAATwEAAE4BAABRAQAAUAEAAFMBAABSAQAAVQEAAFQBAABXAQAAVgEAAFkBAABYAQAAWwEAAFoBAABdAQAAXAEAAF8BAABeAQAAYQEAAGABAABjAQAAYgEAAGUBAABkAQAAZwEAAGYBAABpAQAAaAEAAGsBAABqAQAAbQEAAGwBAABvAQAAbgEAAHEBAABwAQAAcwEAAHIBAAB1AQAAdAEAAHcBAAB2AQAAegEAAHkBAAB8AQAAewEAAH4BAAB9AQAAfwEAAFMAAACAAQAAQwIAAIMBAACCAQAAhQEAAIQBAACIAQAAhwEAAIwBAACLAQAAkgEAAJEBAACVAQAA9gEAAJkBAACYAQAAmgEAAD0CAACbAQAA3KcAAJ4BAAAgAgAAoQEAAKABAACjAQAAogEAAKUBAACkAQAAqAEAAKcBAACtAQAArAEAALABAACvAQAAtAEAALMBAAC2AQAAtQEAALkBAAC4AQAAvQEAALwBAAC/AQAA9wEAAMUBAADEAQAAxgEAAMQBAADIAQAAxwEAAMkBAADHAQAAywEAAMoBAADMAQAAygEAAM4BAADNAQAA0AEAAM8BAADSAQAA0QEAANQBAADTAQAA1gEAANUBAADYAQAA1wEAANoBAADZAQAA3AEAANsBAADdAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPABAAACAEAA8gEAAPEBAADzAQAA8QEAAPUBAAD0AQAA+QEAAPgBAAD7AQAA+gEAAP0BAAD8AQAA/wEAAP4BAAABAgAAAAIAAAMCAAACAgAABQIAAAQCAAAHAgAABgIAAAkCAAAIAgAACwIAAAoCAAANAgAADAIAAA8CAAAOAgAAEQIAABACAAATAgAAEgIAABUCAAAUAgAAFwIAABYCAAAZAgAAGAIAABsCAAAaAgAAHQIAABwCAAAfAgAAHgIAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAADwCAAA7AgAAPwIAAH4sAABAAgAAfywAAEICAABBAgAARwIAAEYCAABJAgAASAIAAEsCAABKAgAATQIAAEwCAABPAgAATgIAAFACAABvLAAAUQIAAG0sAABSAgAAcCwAAFMCAACBAQAAVAIAAIYBAABWAgAAiQEAAFcCAACKAQAAWQIAAI8BAABbAgAAkAEAAFwCAACrpwAAYAIAAJMBAABhAgAArKcAAGMCAACUAQAAZAIAAMunAABlAgAAjacAAGYCAACqpwAAaAIAAJcBAABpAgAAlgEAAGoCAACupwAAawIAAGIsAABsAgAAracAAG8CAACcAQAAcQIAAG4sAAByAgAAnQEAAHUCAACfAQAAfQIAAGQsAACAAgAApgEAAIICAADFpwAAgwIAAKkBAACHAgAAsacAAIgCAACuAQAAiQIAAEQCAACKAgAAsQEAAIsCAACyAQAAjAIAAEUCAACSAgAAtwEAAJ0CAACypwAAngIAALCnAABFAwAAmQMAAHEDAABwAwAAcwMAAHIDAAB3AwAAdgMAAHsDAAD9AwAAfAMAAP4DAAB9AwAA/wMAAJADAAADAEAArAMAAIYDAACtAwAAiAMAAK4DAACJAwAArwMAAIoDAACwAwAABABAALEDAACRAwAAsgMAAJIDAACzAwAAkwMAALQDAACUAwAAtQMAAJUDAAC2AwAAlgMAALcDAACXAwAAuAMAAJgDAAC5AwAAmQMAALoDAACaAwAAuwMAAJsDAAC8AwAAnAMAAL0DAACdAwAAvgMAAJ4DAAC/AwAAnwMAAMADAACgAwAAwQMAAKEDAADCAwAAowMAAMMDAACjAwAAxAMAAKQDAADFAwAApQMAAMYDAACmAwAAxwMAAKcDAADIAwAAqAMAAMkDAACpAwAAygMAAKoDAADLAwAAqwMAAMwDAACMAwAAzQMAAI4DAADOAwAAjwMAANADAACSAwAA0QMAAJgDAADVAwAApgMAANYDAACgAwAA1wMAAM8DAADZAwAA2AMAANsDAADaAwAA3QMAANwDAADfAwAA3gMAAOEDAADgAwAA4wMAAOIDAADlAwAA5AMAAOcDAADmAwAA6QMAAOgDAADrAwAA6gMAAO0DAADsAwAA7wMAAO4DAADwAwAAmgMAAPEDAAChAwAA8gMAAPkDAADzAwAAfwMAAPUDAACVAwAA+AMAAPcDAAD7AwAA+gMAADAEAAAQBAAAMQQAABEEAAAyBAAAEgQAADMEAAATBAAANAQAABQEAAA1BAAAFQQAADYEAAAWBAAANwQAABcEAAA4BAAAGAQAADkEAAAZBAAAOgQAABoEAAA7BAAAGwQAADwEAAAcBAAAPQQAAB0EAAA+BAAAHgQAAD8EAAAfBAAAQAQAACAEAABBBAAAIQQAAEIEAAAiBAAAQwQAACMEAABEBAAAJAQAAEUEAAAlBAAARgQAACYEAABHBAAAJwQAAEgEAAAoBAAASQQAACkEAABKBAAAKgQAAEsEAAArBAAATAQAACwEAABNBAAALQQAAE4EAAAuBAAATwQAAC8EAABQBAAAAAQAAFEEAAABBAAAUgQAAAIEAABTBAAAAwQAAFQEAAAEBAAAVQQAAAUEAABWBAAABgQAAFcEAAAHBAAAWAQAAAgEAABZBAAACQQAAFoEAAAKBAAAWwQAAAsEAABcBAAADAQAAF0EAAANBAAAXgQAAA4EAABfBAAADwQAAGEEAABgBAAAYwQAAGIEAABlBAAAZAQAAGcEAABmBAAAaQQAAGgEAABrBAAAagQAAG0EAABsBAAAbwQAAG4EAABxBAAAcAQAAHMEAAByBAAAdQQAAHQEAAB3BAAAdgQAAHkEAAB4BAAAewQAAHoEAAB9BAAAfAQAAH8EAAB+BAAAgQQAAIAEAACLBAAAigQAAI0EAACMBAAAjwQAAI4EAACRBAAAkAQAAJMEAACSBAAAlQQAAJQEAACXBAAAlgQAAJkEAACYBAAAmwQAAJoEAACdBAAAnAQAAJ8EAACeBAAAoQQAAKAEAACjBAAAogQAAKUEAACkBAAApwQAAKYEAACpBAAAqAQAAKsEAACqBAAArQQAAKwEAACvBAAArgQAALEEAACwBAAAswQAALIEAAC1BAAAtAQAALcEAAC2BAAAuQQAALgEAAC7BAAAugQAAL0EAAC8BAAAvwQAAL4EAADCBAAAwQQAAMQEAADDBAAAxgQAAMUEAADIBAAAxwQAAMoEAADJBAAAzAQAAMsEAADOBAAAzQQAAM8EAADABAAA0QQAANAEAADTBAAA0gQAANUEAADUBAAA1wQAANYEAADZBAAA2AQAANsEAADaBAAA3QQAANwEAADfBAAA3gQAAOEEAADgBAAA4wQAAOIEAADlBAAA5AQAAOcEAADmBAAA6QQAAOgEAADrBAAA6gQAAO0EAADsBAAA7wQAAO4EAADxBAAA8AQAAPMEAADyBAAA9QQAAPQEAAD3BAAA9gQAAPkEAAD4BAAA+wQAAPoEAAD9BAAA/AQAAP8EAAD+BAAAAQUAAAAFAAADBQAAAgUAAAUFAAAEBQAABwUAAAYFAAAJBQAACAUAAAsFAAAKBQAADQUAAAwFAAAPBQAADgUAABEFAAAQBQAAEwUAABIFAAAVBQAAFAUAABcFAAAWBQAAGQUAABgFAAAbBQAAGgUAAB0FAAAcBQAAHwUAAB4FAAAhBQAAIAUAACMFAAAiBQAAJQUAACQFAAAnBQAAJgUAACkFAAAoBQAAKwUAACoFAAAtBQAALAUAAC8FAAAuBQAAYQUAADEFAABiBQAAMgUAAGMFAAAzBQAAZAUAADQFAABlBQAANQUAAGYFAAA2BQAAZwUAADcFAABoBQAAOAUAAGkFAAA5BQAAagUAADoFAABrBQAAOwUAAGwFAAA8BQAAbQUAAD0FAABuBQAAPgUAAG8FAAA/BQAAcAUAAEAFAABxBQAAQQUAAHIFAABCBQAAcwUAAEMFAAB0BQAARAUAAHUFAABFBQAAdgUAAEYFAAB3BQAARwUAAHgFAABIBQAAeQUAAEkFAAB6BQAASgUAAHsFAABLBQAAfAUAAEwFAAB9BQAATQUAAH4FAABOBQAAfwUAAE8FAACABQAAUAUAAIEFAABRBQAAggUAAFIFAACDBQAAUwUAAIQFAABUBQAAhQUAAFUFAACGBQAAVgUAAIcFAAAFAEAA0BAAAJAcAADREAAAkRwAANIQAACSHAAA0xAAAJMcAADUEAAAlBwAANUQAACVHAAA1hAAAJYcAADXEAAAlxwAANgQAACYHAAA2RAAAJkcAADaEAAAmhwAANsQAACbHAAA3BAAAJwcAADdEAAAnRwAAN4QAACeHAAA3xAAAJ8cAADgEAAAoBwAAOEQAAChHAAA4hAAAKIcAADjEAAAoxwAAOQQAACkHAAA5RAAAKUcAADmEAAAphwAAOcQAACnHAAA6BAAAKgcAADpEAAAqRwAAOoQAACqHAAA6xAAAKscAADsEAAArBwAAO0QAACtHAAA7hAAAK4cAADvEAAArxwAAPAQAACwHAAA8RAAALEcAADyEAAAshwAAPMQAACzHAAA9BAAALQcAAD1EAAAtRwAAPYQAAC2HAAA9xAAALccAAD4EAAAuBwAAPkQAAC5HAAA+hAAALocAAD9EAAAvRwAAP4QAAC+HAAA/xAAAL8cAAD4EwAA8BMAAPkTAADxEwAA+hMAAPITAAD7EwAA8xMAAPwTAAD0EwAA/RMAAPUTAACAHAAAEgQAAIEcAAAUBAAAghwAAB4EAACDHAAAIQQAAIQcAAAiBAAAhRwAACIEAACGHAAAKgQAAIccAABiBAAAiBwAAEqmAACKHAAAiRwAAHkdAAB9pwAAfR0AAGMsAACOHQAAxqcAAAEeAAAAHgAAAx4AAAIeAAAFHgAABB4AAAceAAAGHgAACR4AAAgeAAALHgAACh4AAA0eAAAMHgAADx4AAA4eAAARHgAAEB4AABMeAAASHgAAFR4AABQeAAAXHgAAFh4AABkeAAAYHgAAGx4AABoeAAAdHgAAHB4AAB8eAAAeHgAAIR4AACAeAAAjHgAAIh4AACUeAAAkHgAAJx4AACYeAAApHgAAKB4AACseAAAqHgAALR4AACweAAAvHgAALh4AADEeAAAwHgAAMx4AADIeAAA1HgAANB4AADceAAA2HgAAOR4AADgeAAA7HgAAOh4AAD0eAAA8HgAAPx4AAD4eAABBHgAAQB4AAEMeAABCHgAARR4AAEQeAABHHgAARh4AAEkeAABIHgAASx4AAEoeAABNHgAATB4AAE8eAABOHgAAUR4AAFAeAABTHgAAUh4AAFUeAABUHgAAVx4AAFYeAABZHgAAWB4AAFseAABaHgAAXR4AAFweAABfHgAAXh4AAGEeAABgHgAAYx4AAGIeAABlHgAAZB4AAGceAABmHgAAaR4AAGgeAABrHgAAah4AAG0eAABsHgAAbx4AAG4eAABxHgAAcB4AAHMeAAByHgAAdR4AAHQeAAB3HgAAdh4AAHkeAAB4HgAAex4AAHoeAAB9HgAAfB4AAH8eAAB+HgAAgR4AAIAeAACDHgAAgh4AAIUeAACEHgAAhx4AAIYeAACJHgAAiB4AAIseAACKHgAAjR4AAIweAACPHgAAjh4AAJEeAACQHgAAkx4AAJIeAACVHgAAlB4AAJYeAAAGAEAAlx4AAAcAQACYHgAACABAAJkeAAAJAEAAmh4AAAoAQACbHgAAYB4AAKEeAACgHgAAox4AAKIeAAClHgAApB4AAKceAACmHgAAqR4AAKgeAACrHgAAqh4AAK0eAACsHgAArx4AAK4eAACxHgAAsB4AALMeAACyHgAAtR4AALQeAAC3HgAAth4AALkeAAC4HgAAux4AALoeAAC9HgAAvB4AAL8eAAC+HgAAwR4AAMAeAADDHgAAwh4AAMUeAADEHgAAxx4AAMYeAADJHgAAyB4AAMseAADKHgAAzR4AAMweAADPHgAAzh4AANEeAADQHgAA0x4AANIeAADVHgAA1B4AANceAADWHgAA2R4AANgeAADbHgAA2h4AAN0eAADcHgAA3x4AAN4eAADhHgAA4B4AAOMeAADiHgAA5R4AAOQeAADnHgAA5h4AAOkeAADoHgAA6x4AAOoeAADtHgAA7B4AAO8eAADuHgAA8R4AAPAeAADzHgAA8h4AAPUeAAD0HgAA9x4AAPYeAAD5HgAA+B4AAPseAAD6HgAA/R4AAPweAAD/HgAA/h4AAAAfAAAIHwAAAR8AAAkfAAACHwAACh8AAAMfAAALHwAABB8AAAwfAAAFHwAADR8AAAYfAAAOHwAABx8AAA8fAAAQHwAAGB8AABEfAAAZHwAAEh8AABofAAATHwAAGx8AABQfAAAcHwAAFR8AAB0fAAAgHwAAKB8AACEfAAApHwAAIh8AACofAAAjHwAAKx8AACQfAAAsHwAAJR8AAC0fAAAmHwAALh8AACcfAAAvHwAAMB8AADgfAAAxHwAAOR8AADIfAAA6HwAAMx8AADsfAAA0HwAAPB8AADUfAAA9HwAANh8AAD4fAAA3HwAAPx8AAEAfAABIHwAAQR8AAEkfAABCHwAASh8AAEMfAABLHwAARB8AAEwfAABFHwAATR8AAFAfAAALAEAAUR8AAFkfAABSHwAADABAAFMfAABbHwAAVB8AAA0AQABVHwAAXR8AAFYfAAAOAEAAVx8AAF8fAABgHwAAaB8AAGEfAABpHwAAYh8AAGofAABjHwAAax8AAGQfAABsHwAAZR8AAG0fAABmHwAAbh8AAGcfAABvHwAAcB8AALofAABxHwAAux8AAHIfAADIHwAAcx8AAMkfAAB0HwAAyh8AAHUfAADLHwAAdh8AANofAAB3HwAA2x8AAHgfAAD4HwAAeR8AAPkfAAB6HwAA6h8AAHsfAADrHwAAfB8AAPofAAB9HwAA+x8AAIAfAAAPAEAAgR8AABAAQACCHwAAEQBAAIMfAAASAEAAhB8AABMAQACFHwAAFABAAIYfAAAVAEAAhx8AABYAQACIHwAAFwBAAIkfAAAYAEAAih8AABkAQACLHwAAGgBAAIwfAAAbAEAAjR8AABwAQACOHwAAHQBAAI8fAAAeAEAAkB8AAB8AQACRHwAAIABAAJIfAAAhAEAAkx8AACIAQACUHwAAIwBAAJUfAAAkAEAAlh8AACUAQACXHwAAJgBAAJgfAAAnAEAAmR8AACgAQACaHwAAKQBAAJsfAAAqAEAAnB8AACsAQACdHwAALABAAJ4fAAAtAEAAnx8AAC4AQACgHwAALwBAAKEfAAAwAEAAoh8AADEAQACjHwAAMgBAAKQfAAAzAEAApR8AADQAQACmHwAANQBAAKcfAAA2AEAAqB8AADcAQACpHwAAOABAAKofAAA5AEAAqx8AADoAQACsHwAAOwBAAK0fAAA8AEAArh8AAD0AQACvHwAAPgBAALAfAAC4HwAAsR8AALkfAACyHwAAPwBAALMfAABAAEAAtB8AAEEAQAC2HwAAQgBAALcfAABDAEAAvB8AAEQAQAC+HwAAmQMAAMIfAABFAEAAwx8AAEYAQADEHwAARwBAAMYfAABIAEAAxx8AAEkAQADMHwAASgBAANAfAADYHwAA0R8AANkfAADSHwAASwBAANMfAABMAEAA1h8AAE0AQADXHwAATgBAAOAfAADoHwAA4R8AAOkfAADiHwAATwBAAOMfAABQAEAA5B8AAFEAQADlHwAA7B8AAOYfAABSAEAA5x8AAFMAQADyHwAAVABAAPMfAABVAEAA9B8AAFYAQAD2HwAAVwBAAPcfAABYAEAA/B8AAFkAQABOIQAAMiEAAHAhAABgIQAAcSEAAGEhAAByIQAAYiEAAHMhAABjIQAAdCEAAGQhAAB1IQAAZSEAAHYhAABmIQAAdyEAAGchAAB4IQAAaCEAAHkhAABpIQAAeiEAAGohAAB7IQAAayEAAHwhAABsIQAAfSEAAG0hAAB+IQAAbiEAAH8hAABvIQAAhCEAAIMhAADQJAAAtiQAANEkAAC3JAAA0iQAALgkAADTJAAAuSQAANQkAAC6JAAA1SQAALskAADWJAAAvCQAANckAAC9JAAA2CQAAL4kAADZJAAAvyQAANokAADAJAAA2yQAAMEkAADcJAAAwiQAAN0kAADDJAAA3iQAAMQkAADfJAAAxSQAAOAkAADGJAAA4SQAAMckAADiJAAAyCQAAOMkAADJJAAA5CQAAMokAADlJAAAyyQAAOYkAADMJAAA5yQAAM0kAADoJAAAziQAAOkkAADPJAAAMCwAAAAsAAAxLAAAASwAADIsAAACLAAAMywAAAMsAAA0LAAABCwAADUsAAAFLAAANiwAAAYsAAA3LAAABywAADgsAAAILAAAOSwAAAksAAA6LAAACiwAADssAAALLAAAPCwAAAwsAAA9LAAADSwAAD4sAAAOLAAAPywAAA8sAABALAAAECwAAEEsAAARLAAAQiwAABIsAABDLAAAEywAAEQsAAAULAAARSwAABUsAABGLAAAFiwAAEcsAAAXLAAASCwAABgsAABJLAAAGSwAAEosAAAaLAAASywAABssAABMLAAAHCwAAE0sAAAdLAAATiwAAB4sAABPLAAAHywAAFAsAAAgLAAAUSwAACEsAABSLAAAIiwAAFMsAAAjLAAAVCwAACQsAABVLAAAJSwAAFYsAAAmLAAAVywAACcsAABYLAAAKCwAAFksAAApLAAAWiwAACosAABbLAAAKywAAFwsAAAsLAAAXSwAAC0sAABeLAAALiwAAF8sAAAvLAAAYSwAAGAsAABlLAAAOgIAAGYsAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAcywAAHIsAAB2LAAAdSwAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAAAALQAAoBAAAAEtAAChEAAAAi0AAKIQAAADLQAAoxAAAAQtAACkEAAABS0AAKUQAAAGLQAAphAAAActAACnEAAACC0AAKgQAAAJLQAAqRAAAAotAACqEAAACy0AAKsQAAAMLQAArBAAAA0tAACtEAAADi0AAK4QAAAPLQAArxAAABAtAACwEAAAES0AALEQAAASLQAAshAAABMtAACzEAAAFC0AALQQAAAVLQAAtRAAABYtAAC2EAAAFy0AALcQAAAYLQAAuBAAABktAAC5EAAAGi0AALoQAAAbLQAAuxAAABwtAAC8EAAAHS0AAL0QAAAeLQAAvhAAAB8tAAC/EAAAIC0AAMAQAAAhLQAAwRAAACItAADCEAAAIy0AAMMQAAAkLQAAxBAAACUtAADFEAAAJy0AAMcQAAAtLQAAzRAAAEGmAABApgAAQ6YAAEKmAABFpgAARKYAAEemAABGpgAASaYAAEimAABLpgAASqYAAE2mAABMpgAAT6YAAE6mAABRpgAAUKYAAFOmAABSpgAAVaYAAFSmAABXpgAAVqYAAFmmAABYpgAAW6YAAFqmAABdpgAAXKYAAF+mAABepgAAYaYAAGCmAABjpgAAYqYAAGWmAABkpgAAZ6YAAGamAABppgAAaKYAAGumAABqpgAAbaYAAGymAACBpgAAgKYAAIOmAACCpgAAhaYAAISmAACHpgAAhqYAAImmAACIpgAAi6YAAIqmAACNpgAAjKYAAI+mAACOpgAAkaYAAJCmAACTpgAAkqYAAJWmAACUpgAAl6YAAJamAACZpgAAmKYAAJumAACapgAAI6cAACKnAAAlpwAAJKcAACenAAAmpwAAKacAACinAAArpwAAKqcAAC2nAAAspwAAL6cAAC6nAAAzpwAAMqcAADWnAAA0pwAAN6cAADanAAA5pwAAOKcAADunAAA6pwAAPacAADynAAA/pwAAPqcAAEGnAABApwAAQ6cAAEKnAABFpwAARKcAAEenAABGpwAASacAAEinAABLpwAASqcAAE2nAABMpwAAT6cAAE6nAABRpwAAUKcAAFOnAABSpwAAVacAAFSnAABXpwAAVqcAAFmnAABYpwAAW6cAAFqnAABdpwAAXKcAAF+nAABepwAAYacAAGCnAABjpwAAYqcAAGWnAABkpwAAZ6cAAGanAABppwAAaKcAAGunAABqpwAAbacAAGynAABvpwAAbqcAAHqnAAB5pwAAfKcAAHunAAB/pwAAfqcAAIGnAACApwAAg6cAAIKnAACFpwAAhKcAAIenAACGpwAAjKcAAIunAACRpwAAkKcAAJOnAACSpwAAlKcAAMSnAACXpwAAlqcAAJmnAACYpwAAm6cAAJqnAACdpwAAnKcAAJ+nAACepwAAoacAAKCnAACjpwAAoqcAAKWnAACkpwAAp6cAAKanAACppwAAqKcAALWnAAC0pwAAt6cAALanAAC5pwAAuKcAALunAAC6pwAAvacAALynAAC/pwAAvqcAAMGnAADApwAAw6cAAMKnAADIpwAAx6cAAMqnAADJpwAAzacAAMynAADRpwAA0KcAANenAADWpwAA2acAANinAADbpwAA2qcAAPanAAD1pwAAU6sAALOnAABwqwAAoBMAAHGrAAChEwAAcqsAAKITAABzqwAAoxMAAHSrAACkEwAAdasAAKUTAAB2qwAAphMAAHerAACnEwAAeKsAAKgTAAB5qwAAqRMAAHqrAACqEwAAe6sAAKsTAAB8qwAArBMAAH2rAACtEwAAfqsAAK4TAAB/qwAArxMAAICrAACwEwAAgasAALETAACCqwAAshMAAIOrAACzEwAAhKsAALQTAACFqwAAtRMAAIarAAC2EwAAh6sAALcTAACIqwAAuBMAAImrAAC5EwAAiqsAALoTAACLqwAAuxMAAIyrAAC8EwAAjasAAL0TAACOqwAAvhMAAI+rAAC/EwAAkKsAAMATAACRqwAAwRMAAJKrAADCEwAAk6sAAMMTAACUqwAAxBMAAJWrAADFEwAAlqsAAMYTAACXqwAAxxMAAJirAADIEwAAmasAAMkTAACaqwAAyhMAAJurAADLEwAAnKsAAMwTAACdqwAAzRMAAJ6rAADOEwAAn6sAAM8TAACgqwAA0BMAAKGrAADREwAAoqsAANITAACjqwAA0xMAAKSrAADUEwAApasAANUTAACmqwAA1hMAAKerAADXEwAAqKsAANgTAACpqwAA2RMAAKqrAADaEwAAq6sAANsTAACsqwAA3BMAAK2rAADdEwAArqsAAN4TAACvqwAA3xMAALCrAADgEwAAsasAAOETAACyqwAA4hMAALOrAADjEwAAtKsAAOQTAAC1qwAA5RMAALarAADmEwAAt6sAAOcTAAC4qwAA6BMAALmrAADpEwAAuqsAAOoTAAC7qwAA6xMAALyrAADsEwAAvasAAO0TAAC+qwAA7hMAAL+rAADvEwAAAPsAAFoAQAAB+wAAWwBAAAL7AABcAEAAA/sAAF0AQAAE+wAAXgBAAAX7AABfAEAABvsAAGAAQAAT+wAAYQBAABT7AABiAEAAFfsAAGMAQAAW+wAAZABAABf7AABlAEAAQf8AACH/AABC/wAAIv8AAEP/AAAj/wAARP8AACT/AABF/wAAJf8AAEb/AAAm/wAAR/8AACf/AABI/wAAKP8AAEn/AAAp/wAASv8AACr/AABL/wAAK/8AAEz/AAAs/wAATf8AAC3/AABO/wAALv8AAE//AAAv/wAAUP8AADD/AABR/wAAMf8AAFL/AAAy/wAAU/8AADP/AABU/wAANP8AAFX/AAA1/wAAVv8AADb/AABX/wAAN/8AAFj/AAA4/wAAWf8AADn/AABa/wAAOv8AACgEAQAABAEAKQQBAAEEAQAqBAEAAgQBACsEAQADBAEALAQBAAQEAQAtBAEABQQBAC4EAQAGBAEALwQBAAcEAQAwBAEACAQBADEEAQAJBAEAMgQBAAoEAQAzBAEACwQBADQEAQAMBAEANQQBAA0EAQA2BAEADgQBADcEAQAPBAEAOAQBABAEAQA5BAEAEQQBADoEAQASBAEAOwQBABMEAQA8BAEAFAQBAD0EAQAVBAEAPgQBABYEAQA/BAEAFwQBAEAEAQAYBAEAQQQBABkEAQBCBAEAGgQBAEMEAQAbBAEARAQBABwEAQBFBAEAHQQBAEYEAQAeBAEARwQBAB8EAQBIBAEAIAQBAEkEAQAhBAEASgQBACIEAQBLBAEAIwQBAEwEAQAkBAEATQQBACUEAQBOBAEAJgQBAE8EAQAnBAEA2AQBALAEAQDZBAEAsQQBANoEAQCyBAEA2wQBALMEAQDcBAEAtAQBAN0EAQC1BAEA3gQBALYEAQDfBAEAtwQBAOAEAQC4BAEA4QQBALkEAQDiBAEAugQBAOMEAQC7BAEA5AQBALwEAQDlBAEAvQQBAOYEAQC+BAEA5wQBAL8EAQDoBAEAwAQBAOkEAQDBBAEA6gQBAMIEAQDrBAEAwwQBAOwEAQDEBAEA7QQBAMUEAQDuBAEAxgQBAO8EAQDHBAEA8AQBAMgEAQDxBAEAyQQBAPIEAQDKBAEA8wQBAMsEAQD0BAEAzAQBAPUEAQDNBAEA9gQBAM4EAQD3BAEAzwQBAPgEAQDQBAEA+QQBANEEAQD6BAEA0gQBAPsEAQDTBAEAlwUBAHAFAQCYBQEAcQUBAJkFAQByBQEAmgUBAHMFAQCbBQEAdAUBAJwFAQB1BQEAnQUBAHYFAQCeBQEAdwUBAJ8FAQB4BQEAoAUBAHkFAQChBQEAegUBAKMFAQB8BQEApAUBAH0FAQClBQEAfgUBAKYFAQB/BQEApwUBAIAFAQCoBQEAgQUBAKkFAQCCBQEAqgUBAIMFAQCrBQEAhAUBAKwFAQCFBQEArQUBAIYFAQCuBQEAhwUBAK8FAQCIBQEAsAUBAIkFAQCxBQEAigUBALMFAQCMBQEAtAUBAI0FAQC1BQEAjgUBALYFAQCPBQEAtwUBAJAFAQC4BQEAkQUBALkFAQCSBQEAuwUBAJQFAQC8BQEAlQUBAMAMAQCADAEAwQwBAIEMAQDCDAEAggwBAMMMAQCDDAEAxAwBAIQMAQDFDAEAhQwBAMYMAQCGDAEAxwwBAIcMAQDIDAEAiAwBAMkMAQCJDAEAygwBAIoMAQDLDAEAiwwBAMwMAQCMDAEAzQwBAI0MAQDODAEAjgwBAM8MAQCPDAEA0AwBAJAMAQDRDAEAkQwBANIMAQCSDAEA0wwBAJMMAQDUDAEAlAwBANUMAQCVDAEA1gwBAJYMAQDXDAEAlwwBANgMAQCYDAEA2QwBAJkMAQDaDAEAmgwB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"; -let pA = bA; -function e() { - return pA; -} -async function l() { - const Q = await Promise.resolve().then(() => UA); - return await Q.default({ module_or_path: e() }), Q; -} -class lA { - constructor() { - i(this, "inner"); - } - /** Initialize the WebAssembly and construct the inner Linter. */ - async initialize() { - if (!this.inner) { - const A = await l(); - A.setup(), this.inner = A.Linter.new(); - } - } - async setup() { - await this.initialize(), this.inner.lint("", L.Plain); - } - async lint(A, C) { - return await this.initialize(), this.inner.lint( - A, - (C == null ? void 0 : C.language) === "plaintext" ? L.Plain : L.Markdown - ); - } - async applySuggestion(A, C, B) { - return (await l()).apply_suggestion(A, B, C); - } - async isLikelyEnglish(A) { - return await this.initialize(), this.inner.is_likely_english(A); - } - async isolateEnglish(A) { - return await this.initialize(), this.inner.isolate_english(A); - } - async getLintConfig() { - return await this.initialize(), this.inner.get_lint_config_as_object(); - } - async getDefaultLintConfigAsJSON() { - return (await l()).get_default_lint_config_as_json(); - } - async getDefaultLintConfig() { - return (await l()).get_default_lint_config(); - } - async setLintConfig(A) { - await this.initialize(), this.inner.set_lint_config_from_object(A); - } - async getLintConfigAsJSON() { - return await this.initialize(), this.inner.get_lint_config_as_json(); - } - async setLintConfigWithJSON(A) { - await this.initialize(), this.inner.set_lint_config_from_json(A); - } - async toTitleCase(A) { - return (await l()).to_title_case(A); - } - async getLintDescriptions() { - return await this.initialize(), this.inner.get_lint_descriptions_as_object(); - } - async getLintDescriptionsAsJSON() { - return await this.initialize(), this.inner.get_lint_descriptions_as_json(); - } - async ignoreLint(A) { - await this.initialize(), this.inner.ignore_lint(A); - } - async exportIgnoredLints() { - return await this.initialize(), this.inner.export_ignored_lints(); - } - async importIgnoredLints(A) { - return await this.initialize(), this.inner.import_ignored_lints(A); - } - async clearIgnoredLints() { - return await this.initialize(), this.inner.clear_ignored_lints(); - } -} -async function wA(Q) { - return { - procName: Q.procName, - args: await Promise.all(Q.args.map(r)) - }; -} -async function r(Q) { - const { Lint: A, Span: C, Suggestion: B } = await l(); - if (Array.isArray(Q)) - return { json: JSON.stringify(await Promise.all(Q.map(r))), type: "Array" }; - switch (typeof Q) { - case "string": - case "number": - case "boolean": - case "undefined": - return { json: JSON.stringify(Q), type: typeof Q }; - } - if (Q.to_json != null) { - const g = Q.to_json(); - let E; - if (Q instanceof A ? E = "Lint" : Q instanceof B ? E = "Suggestion" : Q instanceof C && (E = "Span"), E == null) - throw new Error("Unhandled case"); - return { json: g, type: E }; - } - throw new Error("Unhandled case"); -} -async function O(Q) { - const { Lint: A, Span: C, Suggestion: B } = await l(); - switch (Q.type) { - case "undefined": - return; - case "boolean": - case "number": - case "string": - return JSON.parse(Q.json); - case "Suggestion": - return B.from_json(Q.json); - case "Lint": - return A.from_json(Q.json); - case "Span": - return C.from_json(Q.json); - case "Array": - return await Promise.all(JSON.parse(Q.json).map(O)); - default: - throw new Error(`Unhandled case: ${Q.type}`); - } -} -const f = "dmFyIFkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CnZhciBaID0gKG4sIHQsIGUpID0+IHQgaW4gbiA/IFkobiwgdCwgeyBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwLCB2YWx1ZTogZSB9KSA6IG5bdF0gPSBlOwp2YXIgTSA9IChuLCB0LCBlKSA9PiBaKG4sIHR5cGVvZiB0ICE9ICJzeW1ib2wiID8gdCArICIiIDogdCwgZSk7CnZhciBxID0gIiI7CmxldCBKID0gcTsKZnVuY3Rpb24gdHQoKSB7CiAgcmV0dXJuIEo7Cn0KZnVuY3Rpb24gZXQobikgewogIEogPSBuOwp9CmFzeW5jIGZ1bmN0aW9uIGgoKSB7CiAgY29uc3QgbiA9IGF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gbHQ7CiAgfSk7CiAgcmV0dXJuIGF3YWl0IG4uZGVmYXVsdCh7IG1vZHVsZV9vcl9wYXRoOiB0dCgpIH0pLCBuOwp9CmxldCBfOwpjb25zdCBwID0gbmV3IEFycmF5KDEyOCkuZmlsbCh2b2lkIDApOwpwLnB1c2godm9pZCAwLCBudWxsLCAhMCwgITEpOwpmdW5jdGlvbiBkKG4pIHsKICByZXR1cm4gcFtuXTsKfQpsZXQgbCA9IDAsIHYgPSBudWxsOwpmdW5jdGlvbiBPKCkgewogIHJldHVybiAodiA9PT0gbnVsbCB8fCB2LmJ5dGVMZW5ndGggPT09IDApICYmICh2ID0gbmV3IFVpbnQ4QXJyYXkoXy5tZW1vcnkuYnVmZmVyKSksIHY7Cn0KY29uc3QgTCA9IHR5cGVvZiBUZXh0RW5jb2RlciA8ICJ1IiA/IG5ldyBUZXh0RW5jb2RlcigidXRmLTgiKSA6IHsgZW5jb2RlOiAoKSA9PiB7CiAgdGhyb3cgRXJyb3IoIlRleHRFbmNvZGVyIG5vdCBhdmFpbGFibGUiKTsKfSB9LCBudCA9IHR5cGVvZiBMLmVuY29kZUludG8gPT0gImZ1bmN0aW9uIiA/IGZ1bmN0aW9uKG4sIHQpIHsKICByZXR1cm4gTC5lbmNvZGVJbnRvKG4sIHQpOwp9IDogZnVuY3Rpb24obiwgdCkgewogIGNvbnN0IGUgPSBMLmVuY29kZShuKTsKICByZXR1cm4gdC5zZXQoZSksIHsKICAgIHJlYWQ6IG4ubGVuZ3RoLAogICAgd3JpdHRlbjogZS5sZW5ndGgKICB9Owp9OwpmdW5jdGlvbiB1KG4sIHQsIGUpIHsKICBpZiAoZSA9PT0gdm9pZCAwKSB7CiAgICBjb25zdCBjID0gTC5lbmNvZGUobiksIGYgPSB0KGMubGVuZ3RoLCAxKSA+Pj4gMDsKICAgIHJldHVybiBPKCkuc3ViYXJyYXkoZiwgZiArIGMubGVuZ3RoKS5zZXQoYyksIGwgPSBjLmxlbmd0aCwgZjsKICB9CiAgbGV0IHIgPSBuLmxlbmd0aCwgaSA9IHQociwgMSkgPj4+IDA7CiAgY29uc3QgcyA9IE8oKTsKICBsZXQgYSA9IDA7CiAgZm9yICg7IGEgPCByOyBhKyspIHsKICAgIGNvbnN0IGMgPSBuLmNoYXJDb2RlQXQoYSk7CiAgICBpZiAoYyA+IDEyNykgYnJlYWs7CiAgICBzW2kgKyBhXSA9IGM7CiAgfQogIGlmIChhICE9PSByKSB7CiAgICBhICE9PSAwICYmIChuID0gbi5zbGljZShhKSksIGkgPSBlKGksIHIsIHIgPSBhICsgbi5sZW5ndGggKiAzLCAxKSA+Pj4gMDsKICAgIGNvbnN0IGMgPSBPKCkuc3ViYXJyYXkoaSArIGEsIGkgKyByKSwgZiA9IG50KG4sIGMpOwogICAgYSArPSBmLndyaXR0ZW4sIGkgPSBlKGksIHIsIGEsIDEpID4+PiAwOwogIH0KICByZXR1cm4gbCA9IGEsIGk7Cn0KbGV0IHkgPSBudWxsOwpmdW5jdGlvbiBvKCkgewogIHJldHVybiAoeSA9PT0gbnVsbCB8fCB5LmJ1ZmZlci5kZXRhY2hlZCA9PT0gITAgfHwgeS5idWZmZXIuZGV0YWNoZWQgPT09IHZvaWQgMCAmJiB5LmJ1ZmZlciAhPT0gXy5tZW1vcnkuYnVmZmVyKSAmJiAoeSA9IG5ldyBEYXRhVmlldyhfLm1lbW9yeS5idWZmZXIpKSwgeTsKfQpsZXQgUyA9IHAubGVuZ3RoOwpmdW5jdGlvbiBiKG4pIHsKICBTID09PSBwLmxlbmd0aCAmJiBwLnB1c2gocC5sZW5ndGggKyAxKTsKICBjb25zdCB0ID0gUzsKICByZXR1cm4gUyA9IHBbdF0sIHBbdF0gPSBuLCB0Owp9CmNvbnN0IFAgPSB0eXBlb2YgVGV4dERlY29kZXIgPCAidSIgPyBuZXcgVGV4dERlY29kZXIoInV0Zi04IiwgeyBpZ25vcmVCT006ICEwLCBmYXRhbDogITAgfSkgOiB7IGRlY29kZTogKCkgPT4gewogIHRocm93IEVycm9yKCJUZXh0RGVjb2RlciBub3QgYXZhaWxhYmxlIik7Cn0gfTsKdHlwZW9mIFRleHREZWNvZGVyIDwgInUiICYmIFAuZGVjb2RlKCk7CmZ1bmN0aW9uIGcobiwgdCkgewogIHJldHVybiBuID0gbiA+Pj4gMCwgUC5kZWNvZGUoTygpLnN1YmFycmF5KG4sIG4gKyB0KSk7Cn0KZnVuY3Rpb24gX3QobiwgdCkgewogIHRyeSB7CiAgICByZXR1cm4gbi5hcHBseSh0aGlzLCB0KTsKICB9IGNhdGNoIChlKSB7CiAgICBfLl9fd2JpbmRnZW5fZXhwb3J0XzMoYihlKSk7CiAgfQp9CmZ1bmN0aW9uIHJ0KG4pIHsKICBuIDwgMTMyIHx8IChwW25dID0gUywgUyA9IG4pOwp9CmZ1bmN0aW9uIHcobikgewogIGNvbnN0IHQgPSBkKG4pOwogIHJldHVybiBydChuKSwgdDsKfQpmdW5jdGlvbiBGKG4pIHsKICBjb25zdCB0ID0gdHlwZW9mIG47CiAgaWYgKHQgPT0gIm51bWJlciIgfHwgdCA9PSAiYm9vbGVhbiIgfHwgbiA9PSBudWxsKQogICAgcmV0dXJuIGAke259YDsKICBpZiAodCA9PSAic3RyaW5nIikKICAgIHJldHVybiBgIiR7bn0iYDsKICBpZiAodCA9PSAic3ltYm9sIikgewogICAgY29uc3QgaSA9IG4uZGVzY3JpcHRpb247CiAgICByZXR1cm4gaSA9PSBudWxsID8gIlN5bWJvbCIgOiBgU3ltYm9sKCR7aX0pYDsKICB9CiAgaWYgKHQgPT0gImZ1bmN0aW9uIikgewogICAgY29uc3QgaSA9IG4ubmFtZTsKICAgIHJldHVybiB0eXBlb2YgaSA9PSAic3RyaW5nIiAmJiBpLmxlbmd0aCA+IDAgPyBgRnVuY3Rpb24oJHtpfSlgIDogIkZ1bmN0aW9uIjsKICB9CiAgaWYgKEFycmF5LmlzQXJyYXkobikpIHsKICAgIGNvbnN0IGkgPSBuLmxlbmd0aDsKICAgIGxldCBzID0gIlsiOwogICAgaSA+IDAgJiYgKHMgKz0gRihuWzBdKSk7CiAgICBmb3IgKGxldCBhID0gMTsgYSA8IGk7IGErKykKICAgICAgcyArPSAiLCAiICsgRihuW2FdKTsKICAgIHJldHVybiBzICs9ICJdIiwgczsKICB9CiAgY29uc3QgZSA9IC9cW29iamVjdCAoW15cXV0rKVxdLy5leGVjKHRvU3RyaW5nLmNhbGwobikpOwogIGxldCByOwogIGlmIChlICYmIGUubGVuZ3RoID4gMSkKICAgIHIgPSBlWzFdOwogIGVsc2UKICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG4pOwogIGlmIChyID09ICJPYmplY3QiKQogICAgdHJ5IHsKICAgICAgcmV0dXJuICJPYmplY3QoIiArIEpTT04uc3RyaW5naWZ5KG4pICsgIikiOwogICAgfSBjYXRjaCB7CiAgICAgIHJldHVybiAiT2JqZWN0IjsKICAgIH0KICByZXR1cm4gbiBpbnN0YW5jZW9mIEVycm9yID8gYCR7bi5uYW1lfTogJHtuLm1lc3NhZ2V9CiR7bi5zdGFja31gIDogcjsKfQpmdW5jdGlvbiBXKG4pIHsKICByZXR1cm4gbiA9PSBudWxsOwp9CmZ1bmN0aW9uIGl0KCkgewogIF8uc2V0dXAoKTsKfQpmdW5jdGlvbiBVKG4sIHQpIHsKICBpZiAoIShuIGluc3RhbmNlb2YgdCkpCiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGluc3RhbmNlIG9mICR7dC5uYW1lfWApOwp9CmZ1bmN0aW9uICQobiwgdCkgewogIG4gPSBuID4+PiAwOwogIGNvbnN0IGUgPSBvKCksIHIgPSBbXTsKICBmb3IgKGxldCBpID0gbjsgaSA8IG4gKyA0ICogdDsgaSArPSA0KQogICAgci5wdXNoKHcoZS5nZXRVaW50MzIoaSwgITApKSk7CiAgcmV0dXJuIHI7Cn0KZnVuY3Rpb24gc3QobikgewogIGxldCB0LCBlOwogIHRyeSB7CiAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNiksIGEgPSB1KG4sIF8uX193YmluZGdlbl9leHBvcnRfMCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8xKSwgYyA9IGw7CiAgICBfLnRvX3RpdGxlX2Nhc2UocywgYSwgYyk7CiAgICB2YXIgciA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDAsICEwKSwgaSA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDEsICEwKTsKICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgfSBmaW5hbGx5IHsKICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNiksIF8uX193YmluZGdlbl9leHBvcnRfMih0LCBlLCAxKTsKICB9Cn0KZnVuY3Rpb24gb3QobiwgdCwgZSkgewogIGxldCByLCBpOwogIHRyeSB7CiAgICBjb25zdCBrID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNiksIFEgPSB1KG4sIF8uX193YmluZGdlbl9leHBvcnRfMCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8xKSwgWCA9IGw7CiAgICBVKHQsIG0pOwogICAgdmFyIHMgPSB0Ll9fZGVzdHJveV9pbnRvX3JhdygpOwogICAgVShlLCBJKSwgXy5hcHBseV9zdWdnZXN0aW9uKGssIFEsIFgsIHMsIGUuX193YmdfcHRyKTsKICAgIHZhciBhID0gbygpLmdldEludDMyKGsgKyA0ICogMCwgITApLCBjID0gbygpLmdldEludDMyKGsgKyA0ICogMSwgITApLCBmID0gbygpLmdldEludDMyKGsgKyA0ICogMiwgITApLCB6ID0gbygpLmdldEludDMyKGsgKyA0ICogMywgITApLCBqID0gYSwgRSA9IGM7CiAgICBpZiAoeikKICAgICAgdGhyb3cgaiA9IDAsIEUgPSAwLCB3KGYpOwogICAgcmV0dXJuIHIgPSBqLCBpID0gRSwgZyhqLCBFKTsKICB9IGZpbmFsbHkgewogICAgXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KSwgXy5fX3diaW5kZ2VuX2V4cG9ydF8yKHIsIGksIDEpOwogIH0KfQpmdW5jdGlvbiBhdCgpIHsKICBsZXQgbiwgdDsKICB0cnkgewogICAgY29uc3QgaSA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpOwogICAgXy5nZXRfZGVmYXVsdF9saW50X2NvbmZpZ19hc19qc29uKGkpOwogICAgdmFyIGUgPSBvKCkuZ2V0SW50MzIoaSArIDQgKiAwLCAhMCksIHIgPSBvKCkuZ2V0SW50MzIoaSArIDQgKiAxLCAhMCk7CiAgICByZXR1cm4gbiA9IGUsIHQgPSByLCBnKGUsIHIpOwogIH0gZmluYWxseSB7CiAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIobiwgdCwgMSk7CiAgfQp9CmZ1bmN0aW9uIGN0KCkgewogIGNvbnN0IG4gPSBfLmdldF9kZWZhdWx0X2xpbnRfY29uZmlnKCk7CiAgcmV0dXJuIHcobik7Cn0KY29uc3QgQSA9IE9iamVjdC5mcmVlemUoewogIFBsYWluOiAwLAogIDA6ICJQbGFpbiIsCiAgTWFya2Rvd246IDEsCiAgMTogIk1hcmtkb3duIgp9KSwgZ3QgPSBPYmplY3QuZnJlZXplKHsKICAvKioKICAgKiBSZXBsYWNlIHRoZSBwcm9ibGVtYXRpYyB0ZXh0LgogICAqLwogIFJlcGxhY2U6IDAsCiAgMDogIlJlcGxhY2UiLAogIC8qKgogICAqIFJlbW92ZSB0aGUgcHJvYmxlbWF0aWMgdGV4dC4KICAgKi8KICBSZW1vdmU6IDEsCiAgMTogIlJlbW92ZSIsCiAgLyoqCiAgICogSW5zZXJ0IGFkZGl0aW9uYWwgdGV4dCBhZnRlciB0aGUgZXJyb3IuCiAgICovCiAgSW5zZXJ0QWZ0ZXI6IDIsCiAgMjogIkluc2VydEFmdGVyIgp9KSwgTiA9IHR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeSA+ICJ1IiA/IHsgcmVnaXN0ZXI6ICgpID0+IHsKfSwgdW5yZWdpc3RlcjogKCkgPT4gewp9IH0gOiBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKG4pID0+IF8uX193YmdfbGludF9mcmVlKG4gPj4+IDAsIDEpKTsKY2xhc3MgeCB7CiAgc3RhdGljIF9fd3JhcCh0KSB7CiAgICB0ID0gdCA+Pj4gMDsKICAgIGNvbnN0IGUgPSBPYmplY3QuY3JlYXRlKHgucHJvdG90eXBlKTsKICAgIHJldHVybiBlLl9fd2JnX3B0ciA9IHQsIE4ucmVnaXN0ZXIoZSwgZS5fX3diZ19wdHIsIGUpLCBlOwogIH0KICBfX2Rlc3Ryb3lfaW50b19yYXcoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX3diZ19wdHI7CiAgICByZXR1cm4gdGhpcy5fX3diZ19wdHIgPSAwLCBOLnVucmVnaXN0ZXIodGhpcyksIHQ7CiAgfQogIGZyZWUoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX2Rlc3Ryb3lfaW50b19yYXcoKTsKICAgIF8uX193YmdfbGludF9mcmVlKHQsIDApOwogIH0KICAvKioKICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIHRvX2pzb24oKSB7CiAgICBsZXQgdCwgZTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTsKICAgICAgXy5saW50X3RvX2pzb24ocywgdGhpcy5fX3diZ19wdHIpOwogICAgICB2YXIgciA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDAsICEwKSwgaSA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDEsICEwKTsKICAgICAgcmV0dXJuIHQgPSByLCBlID0gaSwgZyhyLCBpKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNiksIF8uX193YmluZGdlbl9leHBvcnRfMih0LCBlLCAxKTsKICAgIH0KICB9CiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IGpzb24KICAgKiBAcmV0dXJucyB7TGludH0KICAgKi8KICBzdGF0aWMgZnJvbV9qc29uKHQpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KSwgYSA9IHUodCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCBjID0gbDsKICAgICAgXy5saW50X2Zyb21fanNvbihzLCBhLCBjKTsKICAgICAgdmFyIGUgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAyLCAhMCk7CiAgICAgIGlmIChpKQogICAgICAgIHRocm93IHcocik7CiAgICAgIHJldHVybiB4Ll9fd3JhcChlKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7CiAgICB9CiAgfQogIC8qKgogICAqIEdldCB0aGUgY29udGVudCBvZiB0aGUgc291cmNlIG1hdGVyaWFsIHBvaW50ZWQgdG8gYnkgW2BTZWxmOjpzcGFuYF0KICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGdldF9wcm9ibGVtX3RleHQoKSB7CiAgICBsZXQgdCwgZTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTsKICAgICAgXy5saW50X2dldF9wcm9ibGVtX3RleHQocywgdGhpcy5fX3diZ19wdHIpOwogICAgICB2YXIgciA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDAsICEwKSwgaSA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDEsICEwKTsKICAgICAgcmV0dXJuIHQgPSByLCBlID0gaSwgZyhyLCBpKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNiksIF8uX193YmluZGdlbl9leHBvcnRfMih0LCBlLCAxKTsKICAgIH0KICB9CiAgLyoqCiAgICogR2V0IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBvZiB0aGUgbGludC4KICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGxpbnRfa2luZCgpIHsKICAgIGxldCB0LCBlOwogICAgdHJ5IHsKICAgICAgY29uc3QgcyA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpOwogICAgICBfLmxpbnRfbGludF9raW5kKHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEdldCBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgb2YgdGhlIGxpbnQuCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICBsaW50X2tpbmRfcHJldHR5KCkgewogICAgbGV0IHQsIGU7CiAgICB0cnkgewogICAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7CiAgICAgIF8ubGludF9saW50X2tpbmRfcHJldHR5KHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEVxdWl2YWxlbnQgdG8gY2FsbGluZyBgLmxlbmd0aGAgb24gdGhlIHJlc3VsdCBvZiBgc3VnZ2VzdGlvbnMoKWAuCiAgICogQHJldHVybnMge251bWJlcn0KICAgKi8KICBzdWdnZXN0aW9uX2NvdW50KCkgewogICAgcmV0dXJuIF8ubGludF9zdWdnZXN0aW9uX2NvdW50KHRoaXMuX193YmdfcHRyKSA+Pj4gMDsKICB9CiAgLyoqCiAgICogR2V0IGFuIGFycmF5IG9mIGFueSBzdWdnZXN0aW9ucyB0aGF0IG1heSByZXNvbHZlIHRoZSBpc3N1ZS4KICAgKiBAcmV0dXJucyB7U3VnZ2VzdGlvbltdfQogICAqLwogIHN1Z2dlc3Rpb25zKCkgewogICAgdHJ5IHsKICAgICAgY29uc3QgaSA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpOwogICAgICBfLmxpbnRfc3VnZ2VzdGlvbnMoaSwgdGhpcy5fX3diZ19wdHIpOwogICAgICB2YXIgdCA9IG8oKS5nZXRJbnQzMihpICsgNCAqIDAsICEwKSwgZSA9IG8oKS5nZXRJbnQzMihpICsgNCAqIDEsICEwKSwgciA9ICQodCwgZSkuc2xpY2UoKTsKICAgICAgcmV0dXJuIF8uX193YmluZGdlbl9leHBvcnRfMih0LCBlICogNCwgNCksIHI7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpOwogICAgfQogIH0KICAvKioKICAgKiBHZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcm9ibGVtYXRpYyB0ZXh0LgogICAqIEByZXR1cm5zIHtTcGFufQogICAqLwogIHNwYW4oKSB7CiAgICBjb25zdCB0ID0gXy5saW50X3NwYW4odGhpcy5fX3diZ19wdHIpOwogICAgcmV0dXJuIG0uX193cmFwKHQpOwogIH0KICAvKioKICAgKiBHZXQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IuCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICBtZXNzYWdlKCkgewogICAgbGV0IHQsIGU7CiAgICB0cnkgewogICAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7CiAgICAgIF8ubGludF9tZXNzYWdlKHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQp9CmNvbnN0IFQgPSB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnkgPiAidSIgPyB7IHJlZ2lzdGVyOiAoKSA9PiB7Cn0sIHVucmVnaXN0ZXI6ICgpID0+IHsKfSB9IDogbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KChuKSA9PiBfLl9fd2JnX2xpbnRlcl9mcmVlKG4gPj4+IDAsIDEpKTsKY2xhc3MgUiB7CiAgc3RhdGljIF9fd3JhcCh0KSB7CiAgICB0ID0gdCA+Pj4gMDsKICAgIGNvbnN0IGUgPSBPYmplY3QuY3JlYXRlKFIucHJvdG90eXBlKTsKICAgIHJldHVybiBlLl9fd2JnX3B0ciA9IHQsIFQucmVnaXN0ZXIoZSwgZS5fX3diZ19wdHIsIGUpLCBlOwogIH0KICBfX2Rlc3Ryb3lfaW50b19yYXcoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX3diZ19wdHI7CiAgICByZXR1cm4gdGhpcy5fX3diZ19wdHIgPSAwLCBULnVucmVnaXN0ZXIodGhpcyksIHQ7CiAgfQogIGZyZWUoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX2Rlc3Ryb3lfaW50b19yYXcoKTsKICAgIF8uX193YmdfbGludGVyX2ZyZWUodCwgMCk7CiAgfQogIC8qKgogICAqIENvbnN0cnVjdCBhIG5ldyBgTGludGVyYC4KICAgKiBOb3RlIHRoYXQgdGhpcyBjYW4gbWVhbiBjb25zdHJ1Y3RpbmcgdGhlIGN1cmF0ZWQgZGljdGlvbmFyeSwgd2hpY2ggaXMgdGhlIG1vc3QgZXhwZW5zaXZlIG9wZXJhdGlvbgogICAqIGluIEhhcnBlci4KICAgKiBAcmV0dXJucyB7TGludGVyfQogICAqLwogIHN0YXRpYyBuZXcoKSB7CiAgICBjb25zdCB0ID0gXy5saW50ZXJfbmV3KCk7CiAgICByZXR1cm4gUi5fX3dyYXAodCk7CiAgfQogIC8qKgogICAqIEhlbHBlciBtZXRob2QgdG8gcXVpY2tseSBjaGVjayBpZiBhIHBsYWluIHN0cmluZyBpcyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgRW5nbGlzaAogICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0CiAgICogQHJldHVybnMge2Jvb2xlYW59CiAgICovCiAgaXNfbGlrZWx5X2VuZ2xpc2godCkgewogICAgY29uc3QgZSA9IHUodCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCByID0gbDsKICAgIHJldHVybiBfLmxpbnRlcl9pc19saWtlbHlfZW5nbGlzaCh0aGlzLl9fd2JnX3B0ciwgZSwgcikgIT09IDA7CiAgfQogIC8qKgogICAqIEhlbHBlciBtZXRob2QgdG8gcmVtb3ZlIG5vbi1FbmdsaXNoIHRleHQgZnJvbSBhIHBsYWluIEVuZ2xpc2ggZG9jdW1lbnQuCiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGlzb2xhdGVfZW5nbGlzaCh0KSB7CiAgICBsZXQgZSwgcjsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGEgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KSwgYyA9IHUodCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCBmID0gbDsKICAgICAgXy5saW50ZXJfaXNvbGF0ZV9lbmdsaXNoKGEsIHRoaXMuX193YmdfcHRyLCBjLCBmKTsKICAgICAgdmFyIGkgPSBvKCkuZ2V0SW50MzIoYSArIDQgKiAwLCAhMCksIHMgPSBvKCkuZ2V0SW50MzIoYSArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiBlID0gaSwgciA9IHMsIGcoaSwgcyk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIoZSwgciwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEdldCBhIEpTT04gbWFwIGNvbnRhaW5pbmcgdGhlIGRlc2NyaXB0aW9ucyBvZiBhbGwgdGhlIGxpbnRpbmcgcnVsZXMuCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICBnZXRfbGludF9kZXNjcmlwdGlvbnNfYXNfanNvbigpIHsKICAgIGxldCB0LCBlOwogICAgdHJ5IHsKICAgICAgY29uc3QgcyA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpOwogICAgICBfLmxpbnRlcl9nZXRfbGludF9kZXNjcmlwdGlvbnNfYXNfanNvbihzLCB0aGlzLl9fd2JnX3B0cik7CiAgICAgIHZhciByID0gbygpLmdldEludDMyKHMgKyA0ICogMCwgITApLCBpID0gbygpLmdldEludDMyKHMgKyA0ICogMSwgITApOwogICAgICByZXR1cm4gdCA9IHIsIGUgPSBpLCBnKHIsIGkpOwogICAgfSBmaW5hbGx5IHsKICAgICAgXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KSwgXy5fX3diaW5kZ2VuX2V4cG9ydF8yKHQsIGUsIDEpOwogICAgfQogIH0KICAvKioKICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGdldF9saW50X2NvbmZpZ19hc19qc29uKCkgewogICAgbGV0IHQsIGU7CiAgICB0cnkgewogICAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7CiAgICAgIF8ubGludGVyX2dldF9saW50X2NvbmZpZ19hc19qc29uKHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSBqc29uCiAgICovCiAgc2V0X2xpbnRfY29uZmlnX2Zyb21fanNvbih0KSB7CiAgICB0cnkgewogICAgICBjb25zdCBpID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNiksIHMgPSB1KHQsIF8uX193YmluZGdlbl9leHBvcnRfMCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8xKSwgYSA9IGw7CiAgICAgIF8ubGludGVyX3NldF9saW50X2NvbmZpZ19mcm9tX2pzb24oaSwgdGhpcy5fX3diZ19wdHIsIHMsIGEpOwogICAgICB2YXIgZSA9IG8oKS5nZXRJbnQzMihpICsgNCAqIDAsICEwKSwgciA9IG8oKS5nZXRJbnQzMihpICsgNCAqIDEsICEwKTsKICAgICAgaWYgKHIpCiAgICAgICAgdGhyb3cgdyhlKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7CiAgICB9CiAgfQogIC8qKgogICAqIEdldCBhIFJlY29yZCBjb250YWluaW5nIHRoZSBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSBsaW50aW5nIHJ1bGVzLgogICAqIEByZXR1cm5zIHthbnl9CiAgICovCiAgZ2V0X2xpbnRfZGVzY3JpcHRpb25zX2FzX29iamVjdCgpIHsKICAgIGNvbnN0IHQgPSBfLmxpbnRlcl9nZXRfbGludF9kZXNjcmlwdGlvbnNfYXNfb2JqZWN0KHRoaXMuX193YmdfcHRyKTsKICAgIHJldHVybiB3KHQpOwogIH0KICAvKioKICAgKiBAcmV0dXJucyB7YW55fQogICAqLwogIGdldF9saW50X2NvbmZpZ19hc19vYmplY3QoKSB7CiAgICBjb25zdCB0ID0gXy5saW50ZXJfZ2V0X2xpbnRfY29uZmlnX2FzX29iamVjdCh0aGlzLl9fd2JnX3B0cik7CiAgICByZXR1cm4gdyh0KTsKICB9CiAgLyoqCiAgICogQHBhcmFtIHthbnl9IG9iamVjdAogICAqLwogIHNldF9saW50X2NvbmZpZ19mcm9tX29iamVjdCh0KSB7CiAgICB0cnkgewogICAgICBjb25zdCBpID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7CiAgICAgIF8ubGludGVyX3NldF9saW50X2NvbmZpZ19mcm9tX29iamVjdChpLCB0aGlzLl9fd2JnX3B0ciwgYih0KSk7CiAgICAgIHZhciBlID0gbygpLmdldEludDMyKGkgKyA0ICogMCwgITApLCByID0gbygpLmdldEludDMyKGkgKyA0ICogMSwgITApOwogICAgICBpZiAocikKICAgICAgICB0aHJvdyB3KGUpOwogICAgfSBmaW5hbGx5IHsKICAgICAgXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTsKICAgIH0KICB9CiAgLyoqCiAgICogQHBhcmFtIHtMaW50fSBsaW50CiAgICovCiAgaWdub3JlX2xpbnQodCkgewogICAgVSh0LCB4KTsKICAgIHZhciBlID0gdC5fX2Rlc3Ryb3lfaW50b19yYXcoKTsKICAgIF8ubGludGVyX2lnbm9yZV9saW50KHRoaXMuX193YmdfcHRyLCBlKTsKICB9CiAgLyoqCiAgICogUGVyZm9ybSB0aGUgY29uZmlndXJlZCBsaW50aW5nIG9uIHRoZSBwcm92aWRlZCB0ZXh0LgogICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0CiAgICogQHBhcmFtIHtMYW5ndWFnZX0gbGFuZ3VhZ2UKICAgKiBAcmV0dXJucyB7TGludFtdfQogICAqLwogIGxpbnQodCwgZSkgewogICAgdHJ5IHsKICAgICAgY29uc3QgYSA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpLCBjID0gdSh0LCBfLl9fd2JpbmRnZW5fZXhwb3J0XzAsIF8uX193YmluZGdlbl9leHBvcnRfMSksIGYgPSBsOwogICAgICBfLmxpbnRlcl9saW50KGEsIHRoaXMuX193YmdfcHRyLCBjLCBmLCBlKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIoYSArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIoYSArIDQgKiAxLCAhMCksIHMgPSAkKHIsIGkpLnNsaWNlKCk7CiAgICAgIHJldHVybiBfLl9fd2JpbmRnZW5fZXhwb3J0XzIociwgaSAqIDQsIDQpLCBzOwogICAgfSBmaW5hbGx5IHsKICAgICAgXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTsKICAgIH0KICB9CiAgLyoqCiAgICogRXhwb3J0IHRoZSBsaW50ZXIncyBpZ25vcmVkIGxpbnRzIGFzIGEgcHJpdmFjeS1yZXNwZWN0aW5nIEpTT04gbGlzdCBvZiBoYXNoZXMuCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICBleHBvcnRfaWdub3JlZF9saW50cygpIHsKICAgIGxldCB0LCBlOwogICAgdHJ5IHsKICAgICAgY29uc3QgcyA9IF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpOwogICAgICBfLmxpbnRlcl9leHBvcnRfaWdub3JlZF9saW50cyhzLCB0aGlzLl9fd2JnX3B0cik7CiAgICAgIHZhciByID0gbygpLmdldEludDMyKHMgKyA0ICogMCwgITApLCBpID0gbygpLmdldEludDMyKHMgKyA0ICogMSwgITApOwogICAgICByZXR1cm4gdCA9IHIsIGUgPSBpLCBnKHIsIGkpOwogICAgfSBmaW5hbGx5IHsKICAgICAgXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KSwgXy5fX3diaW5kZ2VuX2V4cG9ydF8yKHQsIGUsIDEpOwogICAgfQogIH0KICAvKioKICAgKiBJbXBvcnQgaW50byB0aGUgbGludGVyJ3MgaWdub3JlZCBsaW50cyBmcm9tIGEgcHJpdmFjeS1yZXNwZWN0aW5nIEpTT04gbGlzdCBvZiBoYXNoZXMuCiAgICogQHBhcmFtIHtzdHJpbmd9IGpzb24KICAgKi8KICBpbXBvcnRfaWdub3JlZF9saW50cyh0KSB7CiAgICB0cnkgewogICAgICBjb25zdCBpID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNiksIHMgPSB1KHQsIF8uX193YmluZGdlbl9leHBvcnRfMCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8xKSwgYSA9IGw7CiAgICAgIF8ubGludGVyX2ltcG9ydF9pZ25vcmVkX2xpbnRzKGksIHRoaXMuX193YmdfcHRyLCBzLCBhKTsKICAgICAgdmFyIGUgPSBvKCkuZ2V0SW50MzIoaSArIDQgKiAwLCAhMCksIHIgPSBvKCkuZ2V0SW50MzIoaSArIDQgKiAxLCAhMCk7CiAgICAgIGlmIChyKQogICAgICAgIHRocm93IHcoZSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpOwogICAgfQogIH0KICBjbGVhcl9pZ25vcmVkX2xpbnRzKCkgewogICAgXy5saW50ZXJfY2xlYXJfaWdub3JlZF9saW50cyh0aGlzLl9fd2JnX3B0cik7CiAgfQp9CmNvbnN0IEQgPSB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnkgPiAidSIgPyB7IHJlZ2lzdGVyOiAoKSA9PiB7Cn0sIHVucmVnaXN0ZXI6ICgpID0+IHsKfSB9IDogbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KChuKSA9PiBfLl9fd2JnX3NwYW5fZnJlZShuID4+PiAwLCAxKSk7CmNsYXNzIG0gewogIHN0YXRpYyBfX3dyYXAodCkgewogICAgdCA9IHQgPj4+IDA7CiAgICBjb25zdCBlID0gT2JqZWN0LmNyZWF0ZShtLnByb3RvdHlwZSk7CiAgICByZXR1cm4gZS5fX3diZ19wdHIgPSB0LCBELnJlZ2lzdGVyKGUsIGUuX193YmdfcHRyLCBlKSwgZTsKICB9CiAgX19kZXN0cm95X2ludG9fcmF3KCkgewogICAgY29uc3QgdCA9IHRoaXMuX193YmdfcHRyOwogICAgcmV0dXJuIHRoaXMuX193YmdfcHRyID0gMCwgRC51bnJlZ2lzdGVyKHRoaXMpLCB0OwogIH0KICBmcmVlKCkgewogICAgY29uc3QgdCA9IHRoaXMuX19kZXN0cm95X2ludG9fcmF3KCk7CiAgICBfLl9fd2JnX3NwYW5fZnJlZSh0LCAwKTsKICB9CiAgLyoqCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICB0b19qc29uKCkgewogICAgbGV0IHQsIGU7CiAgICB0cnkgewogICAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7CiAgICAgIF8uc3Bhbl90b19qc29uKHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSBqc29uCiAgICogQHJldHVybnMge1NwYW59CiAgICovCiAgc3RhdGljIGZyb21fanNvbih0KSB7CiAgICB0cnkgewogICAgICBjb25zdCBzID0gXy5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNiksIGEgPSB1KHQsIF8uX193YmluZGdlbl9leHBvcnRfMCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8xKSwgYyA9IGw7CiAgICAgIF8uc3Bhbl9mcm9tX2pzb24ocywgYSwgYyk7CiAgICAgIHZhciBlID0gbygpLmdldEludDMyKHMgKyA0ICogMCwgITApLCByID0gbygpLmdldEludDMyKHMgKyA0ICogMSwgITApLCBpID0gbygpLmdldEludDMyKHMgKyA0ICogMiwgITApOwogICAgICBpZiAoaSkKICAgICAgICB0aHJvdyB3KHIpOwogICAgICByZXR1cm4gbS5fX3dyYXAoZSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpOwogICAgfQogIH0KICAvKioKICAgKiBAcmV0dXJucyB7bnVtYmVyfQogICAqLwogIGdldCBzdGFydCgpIHsKICAgIHJldHVybiBfLl9fd2JnX2dldF9zcGFuX3N0YXJ0KHRoaXMuX193YmdfcHRyKSA+Pj4gMDsKICB9CiAgLyoqCiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZzAKICAgKi8KICBzZXQgc3RhcnQodCkgewogICAgXy5fX3diZ19zZXRfc3Bhbl9zdGFydCh0aGlzLl9fd2JnX3B0ciwgdCk7CiAgfQogIC8qKgogICAqIEByZXR1cm5zIHtudW1iZXJ9CiAgICovCiAgZ2V0IGVuZCgpIHsKICAgIHJldHVybiBfLl9fd2JnX2dldF9zcGFuX2VuZCh0aGlzLl9fd2JnX3B0cikgPj4+IDA7CiAgfQogIC8qKgogICAqIEBwYXJhbSB7bnVtYmVyfSBhcmcwCiAgICovCiAgc2V0IGVuZCh0KSB7CiAgICBfLl9fd2JnX3NldF9zcGFuX2VuZCh0aGlzLl9fd2JnX3B0ciwgdCk7CiAgfQogIC8qKgogICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydAogICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKICAgKiBAcmV0dXJucyB7U3Bhbn0KICAgKi8KICBzdGF0aWMgbmV3KHQsIGUpIHsKICAgIGNvbnN0IHIgPSBfLnNwYW5fbmV3KHQsIGUpOwogICAgcmV0dXJuIG0uX193cmFwKHIpOwogIH0KICAvKioKICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0KICAgKi8KICBpc19lbXB0eSgpIHsKICAgIHJldHVybiBfLnNwYW5faXNfZW1wdHkodGhpcy5fX3diZ19wdHIpICE9PSAwOwogIH0KICAvKioKICAgKiBAcmV0dXJucyB7bnVtYmVyfQogICAqLwogIGxlbigpIHsKICAgIHJldHVybiBfLnNwYW5fbGVuKHRoaXMuX193YmdfcHRyKSA+Pj4gMDsKICB9Cn0KY29uc3QgQyA9IHR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeSA+ICJ1IiA/IHsgcmVnaXN0ZXI6ICgpID0+IHsKfSwgdW5yZWdpc3RlcjogKCkgPT4gewp9IH0gOiBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKG4pID0+IF8uX193Ymdfc3VnZ2VzdGlvbl9mcmVlKG4gPj4+IDAsIDEpKTsKY2xhc3MgSSB7CiAgc3RhdGljIF9fd3JhcCh0KSB7CiAgICB0ID0gdCA+Pj4gMDsKICAgIGNvbnN0IGUgPSBPYmplY3QuY3JlYXRlKEkucHJvdG90eXBlKTsKICAgIHJldHVybiBlLl9fd2JnX3B0ciA9IHQsIEMucmVnaXN0ZXIoZSwgZS5fX3diZ19wdHIsIGUpLCBlOwogIH0KICBfX2Rlc3Ryb3lfaW50b19yYXcoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX3diZ19wdHI7CiAgICByZXR1cm4gdGhpcy5fX3diZ19wdHIgPSAwLCBDLnVucmVnaXN0ZXIodGhpcyksIHQ7CiAgfQogIGZyZWUoKSB7CiAgICBjb25zdCB0ID0gdGhpcy5fX2Rlc3Ryb3lfaW50b19yYXcoKTsKICAgIF8uX193Ymdfc3VnZ2VzdGlvbl9mcmVlKHQsIDApOwogIH0KICAvKioKICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIHRvX2pzb24oKSB7CiAgICBsZXQgdCwgZTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTsKICAgICAgXy5zdWdnZXN0aW9uX3RvX2pzb24ocywgdGhpcy5fX3diZ19wdHIpOwogICAgICB2YXIgciA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDAsICEwKSwgaSA9IG8oKS5nZXRJbnQzMihzICsgNCAqIDEsICEwKTsKICAgICAgcmV0dXJuIHQgPSByLCBlID0gaSwgZyhyLCBpKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNiksIF8uX193YmluZGdlbl9leHBvcnRfMih0LCBlLCAxKTsKICAgIH0KICB9CiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IGpzb24KICAgKiBAcmV0dXJucyB7U3VnZ2VzdGlvbn0KICAgKi8KICBzdGF0aWMgZnJvbV9qc29uKHQpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KSwgYSA9IHUodCwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCBjID0gbDsKICAgICAgXy5zdWdnZXN0aW9uX2Zyb21fanNvbihzLCBhLCBjKTsKICAgICAgdmFyIGUgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAyLCAhMCk7CiAgICAgIGlmIChpKQogICAgICAgIHRocm93IHcocik7CiAgICAgIHJldHVybiBJLl9fd3JhcChlKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7CiAgICB9CiAgfQogIC8qKgogICAqIEdldCB0aGUgdGV4dCB0aGF0IGlzIGdvaW5nIHRvIHJlcGxhY2UgdGhlIHByb2JsZW1hdGljIHNlY3Rpb24uCiAgICogSWYgW2BTZWxmOjpraW5kYF0gaXMgYFN1Z2dlc3Rpb25LaW5kOjpSZW1vdmVgLCB0aGlzIHdpbGwgcmV0dXJuIGFuIGVtcHR5CiAgICogc3RyaW5nLgogICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICovCiAgZ2V0X3JlcGxhY2VtZW50X3RleHQoKSB7CiAgICBsZXQgdCwgZTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHMgPSBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTsKICAgICAgXy5zdWdnZXN0aW9uX2dldF9yZXBsYWNlbWVudF90ZXh0KHMsIHRoaXMuX193YmdfcHRyKTsKICAgICAgdmFyIHIgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAwLCAhMCksIGkgPSBvKCkuZ2V0SW50MzIocyArIDQgKiAxLCAhMCk7CiAgICAgIHJldHVybiB0ID0gciwgZSA9IGksIGcociwgaSk7CiAgICB9IGZpbmFsbHkgewogICAgICBfLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIodCwgZSwgMSk7CiAgICB9CiAgfQogIC8qKgogICAqIEByZXR1cm5zIHtTdWdnZXN0aW9uS2luZH0KICAgKi8KICBraW5kKCkgewogICAgcmV0dXJuIF8uc3VnZ2VzdGlvbl9raW5kKHRoaXMuX193YmdfcHRyKTsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gZHQobiwgdCkgewogIGlmICh0eXBlb2YgUmVzcG9uc2UgPT0gImZ1bmN0aW9uIiAmJiBuIGluc3RhbmNlb2YgUmVzcG9uc2UpIHsKICAgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgPT0gImZ1bmN0aW9uIikKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm4gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcobiwgdCk7CiAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICBpZiAobi5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikgIT0gImFwcGxpY2F0aW9uL3dhc20iKQogICAgICAgICAgY29uc29sZS53YXJuKCJgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmdgIGZhaWxlZCBiZWNhdXNlIHlvdXIgc2VydmVyIGRvZXMgbm90IHNlcnZlIFdhc20gd2l0aCBgYXBwbGljYXRpb24vd2FzbWAgTUlNRSB0eXBlLiBGYWxsaW5nIGJhY2sgdG8gYFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlYCB3aGljaCBpcyBzbG93ZXIuIE9yaWdpbmFsIGVycm9yOlxuIiwgcik7CiAgICAgICAgZWxzZQogICAgICAgICAgdGhyb3cgcjsKICAgICAgfQogICAgY29uc3QgZSA9IGF3YWl0IG4uYXJyYXlCdWZmZXIoKTsKICAgIHJldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShlLCB0KTsKICB9IGVsc2UgewogICAgY29uc3QgZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKG4sIHQpOwogICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5JbnN0YW5jZSA/IHsgaW5zdGFuY2U6IGUsIG1vZHVsZTogbiB9IDogZTsKICB9Cn0KZnVuY3Rpb24gVigpIHsKICBjb25zdCBuID0ge307CiAgcmV0dXJuIG4ud2JnID0ge30sIG4ud2JnLl9fd2JnX1N0cmluZ184ZjBlYjM5YTRhNGMyZjY2ID0gZnVuY3Rpb24odCwgZSkgewogICAgY29uc3QgciA9IFN0cmluZyhkKGUpKSwgaSA9IHUociwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCBzID0gbDsKICAgIG8oKS5zZXRJbnQzMih0ICsgNCAqIDEsIHMsICEwKSwgbygpLnNldEludDMyKHQgKyA0ICogMCwgaSwgITApOwogIH0sIG4ud2JnLl9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4ID0gZnVuY3Rpb24odCkgewogICAgY29uc3QgZSA9IGQodCkuYnVmZmVyOwogICAgcmV0dXJuIGIoZSk7CiAgfSwgbi53YmcuX193YmdfZXJyb3JfNzUzNGI4ZTlhMzZmMWFiNCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGxldCByLCBpOwogICAgdHJ5IHsKICAgICAgciA9IHQsIGkgPSBlLCBjb25zb2xlLmVycm9yKGcodCwgZSkpOwogICAgfSBmaW5hbGx5IHsKICAgICAgXy5fX3diaW5kZ2VuX2V4cG9ydF8yKHIsIGksIDEpOwogICAgfQogIH0sIG4ud2JnLl9fd2JnX2dldHdpdGhyZWZrZXlfMWRjMzYxYmQxMDA1M2JmZSA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGNvbnN0IHIgPSBkKHQpW2QoZSldOwogICAgcmV0dXJuIGIocik7CiAgfSwgbi53YmcuX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9lMTQ1ODU0MzJlMzczN2ZjID0gZnVuY3Rpb24odCkgewogICAgbGV0IGU7CiAgICB0cnkgewogICAgICBlID0gZCh0KSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyOwogICAgfSBjYXRjaCB7CiAgICAgIGUgPSAhMTsKICAgIH0KICAgIHJldHVybiBlOwogIH0sIG4ud2JnLl9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5ID0gZnVuY3Rpb24odCkgewogICAgbGV0IGU7CiAgICB0cnkgewogICAgICBlID0gZCh0KSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk7CiAgICB9IGNhdGNoIHsKICAgICAgZSA9ICExOwogICAgfQogICAgcmV0dXJuIGU7CiAgfSwgbi53YmcuX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjggPSBmdW5jdGlvbih0KSB7CiAgICByZXR1cm4gZCh0KS5sZW5ndGg7CiAgfSwgbi53YmcuX193YmdfbGludF9uZXcgPSBmdW5jdGlvbih0KSB7CiAgICBjb25zdCBlID0geC5fX3dyYXAodCk7CiAgICByZXR1cm4gYihlKTsKICB9LCBuLndiZy5fX3diZ19sb2dfMGNjMWI3NzY4Mzk3YmNmZSA9IGZ1bmN0aW9uKHQsIGUsIHIsIGksIHMsIGEsIGMsIGYpIHsKICAgIGxldCB6LCBqOwogICAgdHJ5IHsKICAgICAgeiA9IHQsIGogPSBlLCBjb25zb2xlLmxvZyhnKHQsIGUpLCBnKHIsIGkpLCBnKHMsIGEpLCBnKGMsIGYpKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9leHBvcnRfMih6LCBqLCAxKTsKICAgIH0KICB9LCBuLndiZy5fX3diZ19sb2dfY2I5ZTE5MGFjYzU3NTNmYiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGxldCByLCBpOwogICAgdHJ5IHsKICAgICAgciA9IHQsIGkgPSBlLCBjb25zb2xlLmxvZyhnKHQsIGUpKTsKICAgIH0gZmluYWxseSB7CiAgICAgIF8uX193YmluZGdlbl9leHBvcnRfMihyLCBpLCAxKTsKICAgIH0KICB9LCBuLndiZy5fX3diZ19tYXJrXzc0MzgxNDdjZTMxZTlkNGIgPSBmdW5jdGlvbih0LCBlKSB7CiAgICBwZXJmb3JtYW5jZS5tYXJrKGcodCwgZSkpOwogIH0sIG4ud2JnLl9fd2JnX21lYXN1cmVfZmI3ODI1YzExNjEyYzgyMyA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIF90KGZ1bmN0aW9uKHQsIGUsIHIsIGkpIHsKICAgICAgbGV0IHMsIGEsIGMsIGY7CiAgICAgIHRyeSB7CiAgICAgICAgcyA9IHQsIGEgPSBlLCBjID0gciwgZiA9IGksIHBlcmZvcm1hbmNlLm1lYXN1cmUoZyh0LCBlKSwgZyhyLCBpKSk7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgXy5fX3diaW5kZ2VuX2V4cG9ydF8yKHMsIGEsIDEpLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzIoYywgZiwgMSk7CiAgICAgIH0KICAgIH0sIGFyZ3VtZW50cyk7CiAgfSwgbi53YmcuX193YmdfbmV3XzQwNWUyMmYzOTA1NzZjZTIgPSBmdW5jdGlvbigpIHsKICAgIGNvbnN0IHQgPSBuZXcgT2JqZWN0KCk7CiAgICByZXR1cm4gYih0KTsKICB9LCBuLndiZy5fX3diZ19uZXdfOGE2ZjIzOGE2ZWNlODZlYSA9IGZ1bmN0aW9uKCkgewogICAgY29uc3QgdCA9IG5ldyBFcnJvcigpOwogICAgcmV0dXJuIGIodCk7CiAgfSwgbi53YmcuX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmUgPSBmdW5jdGlvbih0KSB7CiAgICBjb25zdCBlID0gbmV3IFVpbnQ4QXJyYXkoZCh0KSk7CiAgICByZXR1cm4gYihlKTsKICB9LCBuLndiZy5fX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZCA9IGZ1bmN0aW9uKHQsIGUsIHIpIHsKICAgIGQodClbdyhlKV0gPSB3KHIpOwogIH0sIG4ud2JnLl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5ID0gZnVuY3Rpb24odCwgZSwgcikgewogICAgZCh0KS5zZXQoZChlKSwgciA+Pj4gMCk7CiAgfSwgbi53YmcuX193Ymdfc3RhY2tfMGVkNzVkNjg1NzViMGYzYyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGNvbnN0IHIgPSBkKGUpLnN0YWNrLCBpID0gdShyLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzAsIF8uX193YmluZGdlbl9leHBvcnRfMSksIHMgPSBsOwogICAgbygpLnNldEludDMyKHQgKyA0ICogMSwgcywgITApLCBvKCkuc2V0SW50MzIodCArIDQgKiAwLCBpLCAhMCk7CiAgfSwgbi53YmcuX193Ymdfc3VnZ2VzdGlvbl9uZXcgPSBmdW5jdGlvbih0KSB7CiAgICBjb25zdCBlID0gSS5fX3dyYXAodCk7CiAgICByZXR1cm4gYihlKTsKICB9LCBuLndiZy5fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0ID0gZnVuY3Rpb24odCkgewogICAgY29uc3QgZSA9IGQodCk7CiAgICByZXR1cm4gdHlwZW9mIGUgPT0gImJvb2xlYW4iID8gZSA/IDEgOiAwIDogMjsKICB9LCBuLndiZy5fX3diaW5kZ2VuX2RlYnVnX3N0cmluZyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGNvbnN0IHIgPSBGKGQoZSkpLCBpID0gdShyLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzAsIF8uX193YmluZGdlbl9leHBvcnRfMSksIHMgPSBsOwogICAgbygpLnNldEludDMyKHQgKyA0ICogMSwgcywgITApLCBvKCkuc2V0SW50MzIodCArIDQgKiAwLCBpLCAhMCk7CiAgfSwgbi53YmcuX193YmluZGdlbl9lcnJvcl9uZXcgPSBmdW5jdGlvbih0LCBlKSB7CiAgICBjb25zdCByID0gbmV3IEVycm9yKGcodCwgZSkpOwogICAgcmV0dXJuIGIocik7CiAgfSwgbi53YmcuX193YmluZGdlbl9pbiA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIHJldHVybiBkKHQpIGluIGQoZSk7CiAgfSwgbi53YmcuX193YmluZGdlbl9pc19vYmplY3QgPSBmdW5jdGlvbih0KSB7CiAgICBjb25zdCBlID0gZCh0KTsKICAgIHJldHVybiB0eXBlb2YgZSA9PSAib2JqZWN0IiAmJiBlICE9PSBudWxsOwogIH0sIG4ud2JnLl9fd2JpbmRnZW5faXNfdW5kZWZpbmVkID0gZnVuY3Rpb24odCkgewogICAgcmV0dXJuIGQodCkgPT09IHZvaWQgMDsKICB9LCBuLndiZy5fX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxID0gZnVuY3Rpb24odCwgZSkgewogICAgcmV0dXJuIGQodCkgPT0gZChlKTsKICB9LCBuLndiZy5fX3diaW5kZ2VuX21lbW9yeSA9IGZ1bmN0aW9uKCkgewogICAgY29uc3QgdCA9IF8ubWVtb3J5OwogICAgcmV0dXJuIGIodCk7CiAgfSwgbi53YmcuX193YmluZGdlbl9udW1iZXJfZ2V0ID0gZnVuY3Rpb24odCwgZSkgewogICAgY29uc3QgciA9IGQoZSksIGkgPSB0eXBlb2YgciA9PSAibnVtYmVyIiA/IHIgOiB2b2lkIDA7CiAgICBvKCkuc2V0RmxvYXQ2NCh0ICsgOCAqIDEsIFcoaSkgPyAwIDogaSwgITApLCBvKCkuc2V0SW50MzIodCArIDQgKiAwLCAhVyhpKSwgITApOwogIH0sIG4ud2JnLl9fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZiA9IGZ1bmN0aW9uKHQpIHsKICAgIGNvbnN0IGUgPSBkKHQpOwogICAgcmV0dXJuIGIoZSk7CiAgfSwgbi53YmcuX193YmluZGdlbl9vYmplY3RfZHJvcF9yZWYgPSBmdW5jdGlvbih0KSB7CiAgICB3KHQpOwogIH0sIG4ud2JnLl9fd2JpbmRnZW5fc3RyaW5nX2dldCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGNvbnN0IHIgPSBkKGUpLCBpID0gdHlwZW9mIHIgPT0gInN0cmluZyIgPyByIDogdm9pZCAwOwogICAgdmFyIHMgPSBXKGkpID8gMCA6IHUoaSwgXy5fX3diaW5kZ2VuX2V4cG9ydF8wLCBfLl9fd2JpbmRnZW5fZXhwb3J0XzEpLCBhID0gbDsKICAgIG8oKS5zZXRJbnQzMih0ICsgNCAqIDEsIGEsICEwKSwgbygpLnNldEludDMyKHQgKyA0ICogMCwgcywgITApOwogIH0sIG4ud2JnLl9fd2JpbmRnZW5fc3RyaW5nX25ldyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIGNvbnN0IHIgPSBnKHQsIGUpOwogICAgcmV0dXJuIGIocik7CiAgfSwgbi53YmcuX193YmluZGdlbl90aHJvdyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgIHRocm93IG5ldyBFcnJvcihnKHQsIGUpKTsKICB9LCBuOwp9CmZ1bmN0aW9uIEIobiwgdCkgewogIHJldHVybiBfID0gbi5leHBvcnRzLCBLLl9fd2JpbmRnZW5fd2FzbV9tb2R1bGUgPSB0LCB5ID0gbnVsbCwgdiA9IG51bGwsIF8uX193YmluZGdlbl9zdGFydCgpLCBfOwp9CmZ1bmN0aW9uIGZ0KG4pIHsKICBpZiAoXyAhPT0gdm9pZCAwKSByZXR1cm4gXzsKICB0eXBlb2YgbiA8ICJ1IiAmJiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pID09PSBPYmplY3QucHJvdG90eXBlID8geyBtb2R1bGU6IG4gfSA9IG4gOiBjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpOwogIGNvbnN0IHQgPSBWKCk7CiAgbiBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZSB8fCAobiA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUobikpOwogIGNvbnN0IGUgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobiwgdCk7CiAgcmV0dXJuIEIoZSwgbik7Cn0KYXN5bmMgZnVuY3Rpb24gSyhuKSB7CiAgaWYgKF8gIT09IHZvaWQgMCkgcmV0dXJuIF87CiAgdHlwZW9mIG4gPCAidSIgJiYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihuKSA9PT0gT2JqZWN0LnByb3RvdHlwZSA/IHsgbW9kdWxlX29yX3BhdGg6IG4gfSA9IG4gOiBjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpLCB0eXBlb2YgbiA+ICJ1IiAmJiAobiA9IG5ldyBVUkwoKSk7CiAgY29uc3QgdCA9IFYoKTsKICAodHlwZW9mIG4gPT0gInN0cmluZyIgfHwgdHlwZW9mIFJlcXVlc3QgPT0gImZ1bmN0aW9uIiAmJiBuIGluc3RhbmNlb2YgUmVxdWVzdCB8fCB0eXBlb2YgVVJMID09ICJmdW5jdGlvbiIgJiYgbiBpbnN0YW5jZW9mIFVSTCkgJiYgKG4gPSBmZXRjaChuKSk7CiAgY29uc3QgeyBpbnN0YW5jZTogZSwgbW9kdWxlOiByIH0gPSBhd2FpdCBkdChhd2FpdCBuLCB0KTsKICByZXR1cm4gQihlLCByKTsKfQp2YXIgbHQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSh7CiAgX19wcm90b19fOiBudWxsLAogIExhbmd1YWdlOiBBLAogIExpbnQ6IHgsCiAgTGludGVyOiBSLAogIFNwYW46IG0sCiAgU3VnZ2VzdGlvbjogSSwKICBTdWdnZXN0aW9uS2luZDogZ3QsCiAgYXBwbHlfc3VnZ2VzdGlvbjogb3QsCiAgZGVmYXVsdDogSywKICBnZXRfZGVmYXVsdF9saW50X2NvbmZpZzogY3QsCiAgZ2V0X2RlZmF1bHRfbGludF9jb25maWdfYXNfanNvbjogYXQsCiAgaW5pdFN5bmM6IGZ0LAogIHNldHVwOiBpdCwKICB0b190aXRsZV9jYXNlOiBzdAp9KTsKY2xhc3MgdXQgewogIGNvbnN0cnVjdG9yKCkgewogICAgTSh0aGlzLCAiaW5uZXIiKTsKICB9CiAgLyoqIEluaXRpYWxpemUgdGhlIFdlYkFzc2VtYmx5IGFuZCBjb25zdHJ1Y3QgdGhlIGlubmVyIExpbnRlci4gKi8KICBhc3luYyBpbml0aWFsaXplKCkgewogICAgaWYgKCF0aGlzLmlubmVyKSB7CiAgICAgIGNvbnN0IHQgPSBhd2FpdCBoKCk7CiAgICAgIHQuc2V0dXAoKSwgdGhpcy5pbm5lciA9IHQuTGludGVyLm5ldygpOwogICAgfQogIH0KICBhc3luYyBzZXR1cCgpIHsKICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLCB0aGlzLmlubmVyLmxpbnQoIiIsIEEuUGxhaW4pOwogIH0KICBhc3luYyBsaW50KHQsIGUpIHsKICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5saW50KAogICAgICB0LAogICAgICAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5sYW5ndWFnZSkgPT09ICJwbGFpbnRleHQiID8gQS5QbGFpbiA6IEEuTWFya2Rvd24KICAgICk7CiAgfQogIGFzeW5jIGFwcGx5U3VnZ2VzdGlvbih0LCBlLCByKSB7CiAgICByZXR1cm4gKGF3YWl0IGgoKSkuYXBwbHlfc3VnZ2VzdGlvbih0LCByLCBlKTsKICB9CiAgYXN5bmMgaXNMaWtlbHlFbmdsaXNoKHQpIHsKICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5pc19saWtlbHlfZW5nbGlzaCh0KTsKICB9CiAgYXN5bmMgaXNvbGF0ZUVuZ2xpc2godCkgewogICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLCB0aGlzLmlubmVyLmlzb2xhdGVfZW5nbGlzaCh0KTsKICB9CiAgYXN5bmMgZ2V0TGludENvbmZpZygpIHsKICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5nZXRfbGludF9jb25maWdfYXNfb2JqZWN0KCk7CiAgfQogIGFzeW5jIGdldERlZmF1bHRMaW50Q29uZmlnQXNKU09OKCkgewogICAgcmV0dXJuIChhd2FpdCBoKCkpLmdldF9kZWZhdWx0X2xpbnRfY29uZmlnX2FzX2pzb24oKTsKICB9CiAgYXN5bmMgZ2V0RGVmYXVsdExpbnRDb25maWcoKSB7CiAgICByZXR1cm4gKGF3YWl0IGgoKSkuZ2V0X2RlZmF1bHRfbGludF9jb25maWcoKTsKICB9CiAgYXN5bmMgc2V0TGludENvbmZpZyh0KSB7CiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5zZXRfbGludF9jb25maWdfZnJvbV9vYmplY3QodCk7CiAgfQogIGFzeW5jIGdldExpbnRDb25maWdBc0pTT04oKSB7CiAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplKCksIHRoaXMuaW5uZXIuZ2V0X2xpbnRfY29uZmlnX2FzX2pzb24oKTsKICB9CiAgYXN5bmMgc2V0TGludENvbmZpZ1dpdGhKU09OKHQpIHsKICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLCB0aGlzLmlubmVyLnNldF9saW50X2NvbmZpZ19mcm9tX2pzb24odCk7CiAgfQogIGFzeW5jIHRvVGl0bGVDYXNlKHQpIHsKICAgIHJldHVybiAoYXdhaXQgaCgpKS50b190aXRsZV9jYXNlKHQpOwogIH0KICBhc3luYyBnZXRMaW50RGVzY3JpcHRpb25zKCkgewogICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLCB0aGlzLmlubmVyLmdldF9saW50X2Rlc2NyaXB0aW9uc19hc19vYmplY3QoKTsKICB9CiAgYXN5bmMgZ2V0TGludERlc2NyaXB0aW9uc0FzSlNPTigpIHsKICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5nZXRfbGludF9kZXNjcmlwdGlvbnNfYXNfanNvbigpOwogIH0KICBhc3luYyBpZ25vcmVMaW50KHQpIHsKICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLCB0aGlzLmlubmVyLmlnbm9yZV9saW50KHQpOwogIH0KICBhc3luYyBleHBvcnRJZ25vcmVkTGludHMoKSB7CiAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplKCksIHRoaXMuaW5uZXIuZXhwb3J0X2lnbm9yZWRfbGludHMoKTsKICB9CiAgYXN5bmMgaW1wb3J0SWdub3JlZExpbnRzKHQpIHsKICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy5pbm5lci5pbXBvcnRfaWdub3JlZF9saW50cyh0KTsKICB9CiAgYXN5bmMgY2xlYXJJZ25vcmVkTGludHMoKSB7CiAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplKCksIHRoaXMuaW5uZXIuY2xlYXJfaWdub3JlZF9saW50cygpOwogIH0KfQphc3luYyBmdW5jdGlvbiBIKG4pIHsKICBjb25zdCB7IExpbnQ6IHQsIFNwYW46IGUsIFN1Z2dlc3Rpb246IHIgfSA9IGF3YWl0IGgoKTsKICBpZiAoQXJyYXkuaXNBcnJheShuKSkKICAgIHJldHVybiB7IGpzb246IEpTT04uc3RyaW5naWZ5KGF3YWl0IFByb21pc2UuYWxsKG4ubWFwKEgpKSksIHR5cGU6ICJBcnJheSIgfTsKICBzd2l0Y2ggKHR5cGVvZiBuKSB7CiAgICBjYXNlICJzdHJpbmciOgogICAgY2FzZSAibnVtYmVyIjoKICAgIGNhc2UgImJvb2xlYW4iOgogICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgcmV0dXJuIHsganNvbjogSlNPTi5zdHJpbmdpZnkobiksIHR5cGU6IHR5cGVvZiBuIH07CiAgfQogIGlmIChuLnRvX2pzb24gIT0gbnVsbCkgewogICAgY29uc3QgaSA9IG4udG9fanNvbigpOwogICAgbGV0IHM7CiAgICBpZiAobiBpbnN0YW5jZW9mIHQgPyBzID0gIkxpbnQiIDogbiBpbnN0YW5jZW9mIHIgPyBzID0gIlN1Z2dlc3Rpb24iIDogbiBpbnN0YW5jZW9mIGUgJiYgKHMgPSAiU3BhbiIpLCBzID09IG51bGwpCiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5oYW5kbGVkIGNhc2UiKTsKICAgIHJldHVybiB7IGpzb246IGksIHR5cGU6IHMgfTsKICB9CiAgdGhyb3cgbmV3IEVycm9yKCJVbmhhbmRsZWQgY2FzZSIpOwp9CmFzeW5jIGZ1bmN0aW9uIEcobikgewogIGNvbnN0IHsgTGludDogdCwgU3BhbjogZSwgU3VnZ2VzdGlvbjogciB9ID0gYXdhaXQgaCgpOwogIHN3aXRjaCAobi50eXBlKSB7CiAgICBjYXNlICJ1bmRlZmluZWQiOgogICAgICByZXR1cm47CiAgICBjYXNlICJib29sZWFuIjoKICAgIGNhc2UgIm51bWJlciI6CiAgICBjYXNlICJzdHJpbmciOgogICAgICByZXR1cm4gSlNPTi5wYXJzZShuLmpzb24pOwogICAgY2FzZSAiU3VnZ2VzdGlvbiI6CiAgICAgIHJldHVybiByLmZyb21fanNvbihuLmpzb24pOwogICAgY2FzZSAiTGludCI6CiAgICAgIHJldHVybiB0LmZyb21fanNvbihuLmpzb24pOwogICAgY2FzZSAiU3BhbiI6CiAgICAgIHJldHVybiBlLmZyb21fanNvbihuLmpzb24pOwogICAgY2FzZSAiQXJyYXkiOgogICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoSlNPTi5wYXJzZShuLmpzb24pLm1hcChHKSk7CiAgICBkZWZhdWx0OgogICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBjYXNlOiAke24udHlwZX1gKTsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gd3QobikgewogIHJldHVybiB7CiAgICBwcm9jTmFtZTogbi5wcm9jTmFtZSwKICAgIGFyZ3M6IGF3YWl0IFByb21pc2UuYWxsKG4uYXJncy5tYXAoRykpCiAgfTsKfQpjb25zdCBidCA9IG5ldyB1dCgpOwphc3luYyBmdW5jdGlvbiBwdChuKSB7CiAgY29uc3QgeyBwcm9jTmFtZTogdCwgYXJnczogZSB9ID0gYXdhaXQgd3Qobik7CiAgbGV0IHIgPSBhd2FpdCBidFt0XSguLi5lKTsKICBwb3N0TWVzc2FnZShhd2FpdCBIKHIpKTsKfQpzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG4pIHsKICBldChuLmRhdGEpLCBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKHQpIHsKICAgIHB0KHQuZGF0YSk7CiAgfTsKfTsKcG9zdE1lc3NhZ2UoInJlYWR5Iik7Cg==", VA = (Q) => Uint8Array.from(atob(Q), (A) => A.charCodeAt(0)), H = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", VA(f)], { type: "text/javascript;charset=utf-8" }); -function YA(Q) { - let A; - try { - if (A = H && (self.URL || self.webkitURL).createObjectURL(H), !A) throw ""; - const C = new Worker(A, { - type: "module", - name: Q == null ? void 0 : Q.name - }); - return C.addEventListener("error", () => { - (self.URL || self.webkitURL).revokeObjectURL(A); - }), C; - } catch { - return new Worker( - "data:text/javascript;base64," + f, - { - type: "module", - name: Q == null ? void 0 : Q.name - } - ); - } -} -class ZA { - constructor() { - i(this, "worker"); - i(this, "requestQueue"); - i(this, "working", !0); - this.worker = new YA(), this.requestQueue = [], this.worker.onmessage = () => { - this.setupMainEventListeners(), this.worker.postMessage(e()), this.working = !1, this.submitRemainingRequests(); - }; - } - setupMainEventListeners() { - this.worker.onmessage = (A) => { - const { resolve: C } = this.requestQueue.shift(); - O(A.data).then((B) => { - C(B), this.working = !1, this.submitRemainingRequests(); - }); - }, this.worker.onmessageerror = (A) => { - const { reject: C } = this.requestQueue.shift(); - C(A.data), this.working = !1, this.submitRemainingRequests(); - }; - } - setup() { - return this.rpc("setup", []); - } - lint(A, C) { - return this.rpc("lint", [A, C]); - } - applySuggestion(A, C, B) { - return this.rpc("applySuggestion", [A, C, B]); - } - isLikelyEnglish(A) { - return this.rpc("isLikelyEnglish", [A]); - } - isolateEnglish(A) { - return this.rpc("isolateEnglish", [A]); - } - async getLintConfig() { - return JSON.parse(await this.getLintConfigAsJSON()); - } - setLintConfig(A) { - return this.setLintConfigWithJSON(JSON.stringify(A)); - } - getLintConfigAsJSON() { - return this.rpc("getLintConfigAsJSON", []); - } - setLintConfigWithJSON(A) { - return this.rpc("setLintConfigWithJSON", [A]); - } - toTitleCase(A) { - return this.rpc("toTitleCase", [A]); - } - getLintDescriptionsAsJSON() { - return this.rpc("getLintDescriptionsAsJSON", []); - } - async getLintDescriptions() { - return JSON.parse(await this.getLintDescriptionsAsJSON()); - } - getDefaultLintConfigAsJSON() { - return this.rpc("getDefaultLintConfigAsJSON", []); - } - async getDefaultLintConfig() { - return JSON.parse(await this.getDefaultLintConfigAsJSON()); - } - async ignoreLint(A) { - return this.rpc("ignoreLint", [A]); - } - async exportIgnoredLints() { - return this.rpc("exportIgnoredLints", []); - } - async importIgnoredLints(A) { - return this.rpc("importIgnoredLints", [A]); - } - async clearIgnoredLints() { - return this.rpc("clearIgnoredLints", []); - } - /** Run a procedure on the remote worker. */ - async rpc(A, C) { - return new Promise((g, E) => { - this.requestQueue.push({ - resolve: g, - reject: E, - request: { procName: A, args: C } - }), this.submitRemainingRequests(); - }); - } - async submitRemainingRequests() { - if (!this.working) - if (this.working = !0, this.requestQueue.length > 0) { - const { request: A } = this.requestQueue[0]; - this.worker.postMessage(await wA(A)); - } else - this.working = !1; - } -} - -function crelt() { - var elt = arguments[0]; - if (typeof elt == "string") elt = document.createElement(elt); - var i = 1, next = arguments[1]; - if (next && typeof next == "object" && next.nodeType == null && !Array.isArray(next)) { - for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) { - var value = next[name]; - if (typeof value == "string") elt.setAttribute(name, value); - else if (value != null) elt[name] = value; - } - i++; - } - for (; i < arguments.length; i++) add(elt, arguments[i]); - return elt -} - -function add(elt, child) { - if (typeof child == "string") { - elt.appendChild(document.createTextNode(child)); - } else if (child == null) ; else if (child.nodeType != null) { - elt.appendChild(child); - } else if (Array.isArray(child)) { - for (var i = 0; i < child.length; i++) add(elt, child[i]); - } else { - throw new RangeError("Unsupported child node: " + child) - } -} - -var SelectedDiagnostic = /** @class */ (function () { - function SelectedDiagnostic(from, to, diagnostic) { - this.from = from; - this.to = to; - this.diagnostic = diagnostic; - } - return SelectedDiagnostic; -}()); -var LintState = /** @class */ (function () { - function LintState(diagnostics, selected) { - this.diagnostics = diagnostics; - this.selected = selected; - } - LintState.init = function (diagnostics, state) { - // Filter the list of diagnostics for which to create markers - var markedDiagnostics = diagnostics; - var diagnosticFilter = state.facet(lintConfig).markerFilter; - if (diagnosticFilter) - markedDiagnostics = diagnosticFilter(markedDiagnostics, state); - var ranges = view.Decoration.set(markedDiagnostics.map(function (d) { - // For zero-length ranges or ranges covering only a line break, create a widget - return d.from == d.to || (d.from == d.to - 1 && state.doc.lineAt(d.from).to == d.from) - ? view.Decoration.widget({ - widget: new DiagnosticWidget(d), - diagnostic: d - }).range(d.from) - : view.Decoration.mark({ - attributes: { - class: 'cm-lintRange cm-lintRange-' + d.severity + (d.markClass ? ' ' + d.markClass : '') - }, - diagnostic: d - }).range(d.from, d.to); - }), true); - return new LintState(ranges, findDiagnostic(ranges)); - }; - return LintState; -}()); -function findDiagnostic(diagnostics, diagnostic, after) { - if (diagnostic === void 0) { diagnostic = null; } - if (after === void 0) { after = 0; } - var found = null; - diagnostics.between(after, 1e9, function (from, to, _a) { - var spec = _a.spec; - if (diagnostic && spec.diagnostic != diagnostic) - return; - found = new SelectedDiagnostic(from, to, spec.diagnostic); - return false; - }); - return found; -} -function hideTooltip(tr, tooltip) { - var from = tooltip.pos, to = tooltip.end || from; - var result = tr.state.facet(lintConfig).hideOn(tr, from, to); - if (result != null) - return result; - var line = tr.startState.doc.lineAt(tooltip.pos); - return !!(tr.effects.some(function (e) { return e.is(setDiagnosticsEffect); }) || - tr.changes.touchesRange(line.from, Math.max(line.to, to))); -} -function maybeEnableLint(state$1, effects) { - return state$1.field(lintState, false) - ? effects - : effects.concat(state.StateEffect.appendConfig.of(lintExtensions)); -} -/// Returns a transaction spec which updates the current set of -/// diagnostics, and enables the lint extension if if wasn't already -/// active. -function setDiagnostics(state, diagnostics) { - return { - effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)]) - }; -} -/// The state effect that updates the set of active diagnostics. Can -/// be useful when writing an extension that needs to track these. -var setDiagnosticsEffect = state.StateEffect.define(); -var movePanelSelection = state.StateEffect.define(); -var lintState = state.StateField.define({ - create: function () { - return new LintState(view.Decoration.none, null); - }, - update: function (value, tr) { - if (tr.docChanged && value.diagnostics.size) { - var mapped = value.diagnostics.map(tr.changes); - var selected = null; - if (value.selected) { - var selPos = tr.changes.mapPos(value.selected.from, 1); - selected = - findDiagnostic(mapped, value.selected.diagnostic, selPos) || - findDiagnostic(mapped, null, selPos); - } - value = new LintState(mapped, selected); - } - for (var _i = 0, _a = tr.effects; _i < _a.length; _i++) { - var effect = _a[_i]; - if (effect.is(setDiagnosticsEffect)) { - value = LintState.init(effect.value, tr.state); - } - else if (effect.is(movePanelSelection)) { - value = new LintState(value.diagnostics, effect.value); - } - } - return value; - }, - provide: function (f) { return [view.EditorView.decorations.from(f, function (s) { return s.diagnostics; })]; } -}); -var activeMark = view.Decoration.mark({ class: 'cm-lintRange cm-lintRange-active' }); -function lintTooltip(view, pos, side) { - var diagnostics = view.state.field(lintState).diagnostics; - var found = [], stackStart = 2e8, stackEnd = 0; - diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), function (from, to, _a) { - var spec = _a.spec; - if (pos >= from && - pos <= to && - (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) { - found.push(spec.diagnostic); - stackStart = Math.min(from, stackStart); - stackEnd = Math.max(to, stackEnd); - } - }); - var diagnosticFilter = view.state.facet(lintConfig).tooltipFilter; - if (diagnosticFilter) - found = diagnosticFilter(found, view.state); - if (!found.length) - return null; - return { - pos: stackStart, - end: stackEnd, - above: view.state.doc.lineAt(stackStart).to < stackEnd, - create: function () { - return { dom: diagnosticsTooltip(view, found) }; - } - }; -} -function diagnosticsTooltip(view, diagnostics) { - return crelt('ul', { class: 'cm-tooltip-lint' }, diagnostics.map(function (d) { return renderDiagnostic(view, d); })); -} -var lintPlugin = view.ViewPlugin.fromClass(/** @class */ (function () { - function class_1(view) { - this.view = view; - this.timeout = -1; - this.set = true; - var delay = view.state.facet(lintConfig).delay; - this.lintTime = Date.now() + delay; - this.run = this.run.bind(this); - this.timeout = setTimeout(this.run, delay); - } - class_1.prototype.run = function () { - var _this = this; - clearTimeout(this.timeout); - var now = Date.now(); - if (now < this.lintTime - 10) { - this.timeout = setTimeout(this.run, this.lintTime - now); - } - else { - this.set = false; - var state_1 = this.view.state, sources = state_1.facet(lintConfig).sources; - if (sources.length) - Promise.all(sources.map(function (source) { return Promise.resolve(source(_this.view)); })).then(function (annotations) { - var all = annotations.reduce(function (a, b) { return a.concat(b); }); - if (_this.view.state.doc == state_1.doc) - _this.view.dispatch(setDiagnostics(_this.view.state, all)); - }, function (error) { - view.logException(_this.view.state, error); - }); - } - }; - class_1.prototype.update = function (update) { - var config = update.state.facet(lintConfig); - if (update.docChanged || - config != update.startState.facet(lintConfig) || - (config.needsRefresh && config.needsRefresh(update))) { - this.lintTime = Date.now() + config.delay; - if (!this.set) { - this.set = true; - this.timeout = setTimeout(this.run, config.delay); - } - } - }; - class_1.prototype.force = function () { - if (this.set) { - this.lintTime = Date.now(); - this.run(); - } - }; - class_1.prototype.destroy = function () { - clearTimeout(this.timeout); - }; - return class_1; -}())); -var lintConfig = state.Facet.define({ - combine: function (input) { - return __assign({ sources: input.map(function (i) { return i.source; }).filter(function (x) { return x != null; }) }, state.combineConfig(input.map(function (i) { return i.config; }), { - delay: 750, - markerFilter: null, - tooltipFilter: null, - needsRefresh: null, - hideOn: function () { return null; } - }, { - needsRefresh: function (a, b) { return (!a ? b : !b ? a : function (u) { return a(u) || b(u); }); } - })); - } -}); -/// Given a diagnostic source, this function returns an extension that -/// enables linting with that source. It will be called whenever the -/// editor is idle (after its content changed). If `null` is given as -/// source, this only configures the lint extension. -function linter(source, config) { - if (config === void 0) { config = {}; } - return [lintConfig.of({ source: source, config: config }), lintPlugin, lintExtensions]; -} -function renderDiagnostic(view, diagnostic, inPanel) { - var _a; - var keys = []; - return crelt('li', { class: 'cm-diagnostic cm-diagnostic-' + diagnostic.severity }, crelt('span', { class: 'cm-diagnosticTitle' }, diagnostic.title), crelt('span', { class: 'cm-diagnosticText' }, diagnostic.renderMessage ? diagnostic.renderMessage(view) : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map(function (action, i) { - var fired = false; - var click = function (e) { - e.preventDefault(); - if (fired) - return; - fired = true; - var found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic); - if (found) - action.apply(view, found.from, found.to); - }; - var name = action.name, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1; - var nameElt = keyIndex < 0 - ? name - : [ - name.slice(0, keyIndex), - crelt('u', name.slice(keyIndex, keyIndex + 1)), - name.slice(keyIndex + 1) - ]; - return crelt('button', { - type: 'button', - class: 'cm-diagnosticAction', - onclick: click, - onmousedown: click, - 'aria-label': " Action: ".concat(name).concat(keyIndex < 0 ? '' : " (access key \"".concat(keys[i], ")\""), ".") - }, nameElt); - }), diagnostic.ignore && - crelt('div', { - class: 'cm-diagnosticIgnore', - onclick: function (e) { - e.preventDefault(); - if (diagnostic.ignore) { - diagnostic.ignore(); - } - } - }, 'Ignore Diagnostic'), diagnostic.source && crelt('div', { class: 'cm-diagnosticSource' }, diagnostic.source)); -} -var DiagnosticWidget = /** @class */ (function (_super) { - __extends(DiagnosticWidget, _super); - function DiagnosticWidget(diagnostic) { - var _this = _super.call(this) || this; - _this.diagnostic = diagnostic; - return _this; - } - DiagnosticWidget.prototype.eq = function (other) { - return other.diagnostic == this.diagnostic; - }; - DiagnosticWidget.prototype.toDOM = function () { - return crelt('span', { class: 'cm-lintPoint cm-lintPoint-' + this.diagnostic.severity }); - }; - return DiagnosticWidget; -}(view.WidgetType)); -function svg(content, attrs) { - return "url('data:image/svg+xml,").concat(encodeURIComponent(content), "')"); -} -function underline(color) { - return svg(""), "width=\"6\" height=\"3\""); -} -var baseTheme = view.EditorView.baseTheme({ - '.cm-diagnostic': { - padding: '4px', - marginLeft: '0px', - display: 'flex', - flexDirection: 'column', - whiteSpace: 'pre-wrap' - }, - '.cm-diagnosticTitle': { - boxShadow: 'inset 0 -2px #DB2B39', - width: 'max-content', - fontWeight: 'bold' - }, - '.cm-diagnosticText': { - marginTop: '8px' - }, - '.cm-diagnosticAction': { - font: 'inherit', - border: 'none', - marginTop: '8px', - display: 'flex', - alignItems: 'center', - gap: 'var(--size-4-2)', - padding: 'var(--size-4-1) var(--size-4-2)', - cursor: 'var(--cursor)', - fontSize: 'var(--font-ui-small)', - borderRadius: 'var(--radius-s)', - whiteSpace: 'nowrap', - width: '100%' - }, - '.cm-tooltip': { - padding: 'var(--size-2-3) !important', - border: '1px solid var(--background-modifier-border-hover) !important', - backgroundColor: 'var(--background-secondary) !important', - borderRadius: 'var(--radius-m) !important', - boxShadow: 'var(--shadow-s) !important', - zIndex: 'var(--layer-menu) !important', - userSelect: 'none !important', - maxHeight: 'calc(100% - var(--header-height)) !important', - overflow: 'hidden !important' - }, - '.cm-diagnosticSource': { - fontSize: '70%', - opacity: 0.7 - }, - '.cm-diagnosticIgnore': { - color: 'black', - padding: 'var(--size-4-1) 0px', - fontSize: 'var(--font-ui-small)' - }, - '.cm-diagnosticIgnore:hover': { - textDecoration: 'underline' - }, - '.cm-lintRange': { - backgroundPosition: 'left bottom', - backgroundRepeat: 'repeat-x', - paddingBottom: '0.7px' - }, - '.cm-lintRange-error': { backgroundImage: underline('#d11') }, - '.cm-lintRange-warning': { backgroundImage: underline('orange') }, - '.cm-lintRange-info': { backgroundImage: underline('#999') }, - '.cm-lintRange-hint': { backgroundImage: underline('#66d') }, - '.cm-lintRange-active': { backgroundColor: '#ffdd9980' }, - '.cm-tooltip-lint': { - padding: 0, - margin: 0 - }, - '.cm-lintPoint': { - position: 'relative', - '&:after': { - content: '""', - position: 'absolute', - bottom: 0, - left: '-2px', - borderLeft: '3px solid transparent', - borderRight: '3px solid transparent', - borderBottom: '4px solid #d11' - } - }, - '.cm-lintPoint-warning': { - '&:after': { borderBottomColor: 'orange' } - }, - '.cm-lintPoint-info': { - '&:after': { borderBottomColor: '#999' } - }, - '.cm-lintPoint-hint': { - '&:after': { borderBottomColor: '#66d' } - }, - '.cm-panel.cm-panel-lint': { - position: 'relative', - '& ul': { - maxHeight: '100px', - overflowY: 'auto', - '& [aria-selected]': { - backgroundColor: '#ddd', - '& u': { textDecoration: 'underline' } - }, - '&:focus [aria-selected]': { - background_fallback: '#bdf', - backgroundColor: 'Highlight', - color_fallback: 'white', - color: 'HighlightText' - }, - '& u': { textDecoration: 'none' }, - padding: 0, - margin: 0 - }, - '& [name=close]': { - position: 'absolute', - top: '0', - right: '2px', - background: 'inherit', - border: 'none', - font: 'inherit', - padding: 0, - margin: 0 - } - } -}); -var lintExtensions = [ - lintState, - view.EditorView.decorations.compute([lintState], function (state) { - var _a = state.field(lintState), selected = _a.selected, panel = _a.panel; - return !selected || !panel || selected.from == selected.to - ? view.Decoration.none - : view.Decoration.set([activeMark.range(selected.from, selected.to)]); - }), - view.hoverTooltip(lintTooltip, { hideOn: hideTooltip }), - baseTheme -]; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** Built-in value references. */ -var Symbol$1 = root.Symbol; - -/** Used for built-in method references. */ -var objectProto$1 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto$1.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString$1 = objectProto$1.toString; - -/** Built-in value references. */ -var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag$1), - tag = value[symToStringTag$1]; - - try { - value[symToStringTag$1] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString$1.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag$1] = tag; - } else { - delete value[symToStringTag$1]; - } - } - return result; -} - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString$1(value) { - return value == null ? '' : baseToString(value); -} - -/** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; -} - -/** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ -function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange$2 = '\\ud800-\\udfff', - rsComboMarksRange$3 = '\\u0300-\\u036f', - reComboHalfMarksRange$3 = '\\ufe20-\\ufe2f', - rsComboSymbolsRange$3 = '\\u20d0-\\u20ff', - rsComboRange$3 = rsComboMarksRange$3 + reComboHalfMarksRange$3 + rsComboSymbolsRange$3, - rsVarRange$2 = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ$2 = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ$2 + rsAstralRange$2 + rsComboRange$3 + rsVarRange$2 + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -/** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function asciiToArray(string) { - return string.split(''); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange$1 = '\\ud800-\\udfff', - rsComboMarksRange$2 = '\\u0300-\\u036f', - reComboHalfMarksRange$2 = '\\ufe20-\\ufe2f', - rsComboSymbolsRange$2 = '\\u20d0-\\u20ff', - rsComboRange$2 = rsComboMarksRange$2 + reComboHalfMarksRange$2 + rsComboSymbolsRange$2, - rsVarRange$1 = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange$1 + ']', - rsCombo$2 = '[' + rsComboRange$2 + ']', - rsFitz$1 = '\\ud83c[\\udffb-\\udfff]', - rsModifier$1 = '(?:' + rsCombo$2 + '|' + rsFitz$1 + ')', - rsNonAstral$1 = '[^' + rsAstralRange$1 + ']', - rsRegional$1 = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair$1 = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ$1 = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod$1 = rsModifier$1 + '?', - rsOptVar$1 = '[' + rsVarRange$1 + ']?', - rsOptJoin$1 = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral$1, rsRegional$1, rsSurrPair$1].join('|') + ')' + rsOptVar$1 + reOptMod$1 + ')*', - rsSeq$1 = rsOptVar$1 + reOptMod$1 + rsOptJoin$1, - rsSymbol = '(?:' + [rsNonAstral$1 + rsCombo$2 + '?', rsCombo$2, rsRegional$1, rsSurrPair$1, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz$1 + '(?=' + rsFitz$1 + ')|' + rsSymbol + rsSeq$1, 'g'); - -/** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function unicodeToArray(string) { - return string.match(reUnicode) || []; -} - -/** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); -} - -/** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ -function createCaseFirst(methodName) { - return function(string) { - string = toString$1(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; -} - -/** - * Converts the first character of `string` to upper case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.upperFirst('fred'); - * // => 'Fred' - * - * _.upperFirst('FRED'); - * // => 'FRED' - */ -var upperFirst = createCaseFirst('toUpperCase'); - -/** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; -} - -/** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; -} - -/** Used to map Latin Unicode letters to basic Latin letters. */ -var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' -}; - -/** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ -var deburrLetter = basePropertyOf(deburredLetters); - -/** Used to match Latin Unicode letters (excluding mathematical operators). */ -var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - -/** Used to compose unicode character classes. */ -var rsComboMarksRange$1 = '\\u0300-\\u036f', - reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f', - rsComboSymbolsRange$1 = '\\u20d0-\\u20ff', - rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1; - -/** Used to compose unicode capture groups. */ -var rsCombo$1 = '[' + rsComboRange$1 + ']'; - -/** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ -var reComboMark = RegExp(rsCombo$1, 'g'); - -/** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ -function deburr(string) { - string = toString$1(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); -} - -/** Used to match words composed of alphanumeric characters. */ -var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - -/** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function asciiWords(string) { - return string.match(reAsciiWord) || []; -} - -/** Used to detect strings that need a more robust regexp to match words. */ -var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - -/** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ -function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - -/** Used to compose unicode capture groups. */ -var rsApos$1 = "['\u2019]", - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos$1 + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos$1 + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; - -/** Used to match complex or compound words. */ -var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji -].join('|'), 'g'); - -/** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function unicodeWords(string) { - return string.match(reUnicodeWord) || []; -} - -/** - * Splits `string` into an array of its words. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {RegExp|string} [pattern] The pattern to match words. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the words of `string`. - * @example - * - * _.words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * _.words('fred, barney, & pebbles', /[^, ]+/g); - * // => ['fred', 'barney', '&', 'pebbles'] - */ -function words(string, pattern, guard) { - string = toString$1(string); - pattern = pattern; - - if (pattern === undefined) { - return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); - } - return string.match(pattern) || []; -} - -/** Used to compose unicode capture groups. */ -var rsApos = "['\u2019]"; - -/** Used to match apostrophes. */ -var reApos = RegExp(rsApos, 'g'); - -/** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ -function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; -} - -/** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ -var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); -}); - -var HarperSettingTab = /** @class */ (function (_super) { - __extends(HarperSettingTab, _super); - function HarperSettingTab(app, plugin) { - var _this = _super.call(this, app, plugin) || this; - _this.plugin = plugin; - _this.updateDescriptions(); - _this.updateSettings(); - return _this; - } - HarperSettingTab.prototype.updateSettings = function () { - var _this = this; - this.plugin.getSettings().then(function (v) { return (_this.settings = v); }); - }; - HarperSettingTab.prototype.updateDescriptions = function () { - var _this = this; - this.plugin.getDescriptions().then(function (v) { return (_this.descriptions = v); }); - }; - HarperSettingTab.prototype.display = function () { - var _this = this; - var containerEl = this.containerEl; - containerEl.empty(); - console.log(this.settings.lintSettings); - new obsidian.Setting(containerEl).setName('Use Web Worker').addToggle(function (toggle) { - return toggle.setValue(_this.settings.useWebWorker).onChange(function (value) { return __awaiter(_this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.settings.useWebWorker = value; - return [4 /*yield*/, this.plugin.initializeFromSettings(this.settings)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - }); - var _loop_1 = function (setting) { - var value = this_1.settings.lintSettings[setting]; - var description = this_1.descriptions[setting]; - new obsidian.Setting(containerEl) - .setName(startCase(setting)) - .setDesc(description) - .addDropdown(function (dropdown) { - return dropdown - .addOption('default', 'Default') - .addOption('enable', 'On') - .addOption('disable', 'Off') - .setValue(valueToString(value)) - .onChange(function (value) { return __awaiter(_this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.settings.lintSettings[setting] = stringToValue(value); - return [4 /*yield*/, this.plugin.initializeFromSettings(this.settings)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - }); - }; - var this_1 = this; - for (var _i = 0, _a = Object.keys(this.settings.lintSettings); _i < _a.length; _i++) { - var setting = _a[_i]; - _loop_1(setting); - } - new obsidian.Setting(containerEl).setName('The Danger Zone').addButton(function (button) { - button - .setButtonText('Forget Ignored Suggestions') - .onClick(function () { - _this.settings.ignoredLints = undefined; - _this.plugin.initializeFromSettings(_this.settings); - }) - .setWarning(); - }); - }; - return HarperSettingTab; -}(obsidian.PluginSettingTab)); -function valueToString(value) { - switch (value) { - case true: - return 'enable'; - case false: - return 'disable'; - case null: - return 'default'; - } - throw 'Fell through case'; -} -function stringToValue(str) { - switch (str) { - case 'enable': - return true; - case 'disable': - return false; - case 'default': - return undefined; - } - throw 'Fell through case'; -} - -function suggestionToLabel(sug) { - if (sug.kind() == FA.Remove) { - return 'Remove'; - } - else if (sug.kind() == FA.Replace) { - return "Replace with \"".concat(sug.get_replacement_text(), "\""); - } - else if (sug.kind() == FA.InsertAfter) { - return "Insert \"".concat(sug.get_replacement_text(), "\" after this."); - } -} -var HarperPlugin = /** @class */ (function (_super) { - __extends(HarperPlugin, _super); - function HarperPlugin(app, manifest) { - var _this = _super.call(this, app, manifest) || this; - _this.harper = new ZA(); - _this.editorExtensions = []; - return _this; - } - HarperPlugin.prototype.initializeFromSettings = function (settings) { - return __awaiter(this, void 0, void 0, function () { - var oldSettings; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (settings == null) { - settings = { useWebWorker: true, lintSettings: {} }; - } - return [4 /*yield*/, this.getSettings()]; - case 1: - oldSettings = _a.sent(); - if (!(settings.useWebWorker != oldSettings.useWebWorker)) return [3 /*break*/, 2]; - if (settings.useWebWorker) { - this.harper = new ZA(); - } - else { - this.harper = new lA(); - } - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, this.harper.clearIgnoredLints()]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - if (!(settings.ignoredLints !== undefined)) return [3 /*break*/, 6]; - return [4 /*yield*/, this.harper.importIgnoredLints(settings.ignoredLints)]; - case 5: - _a.sent(); - _a.label = 6; - case 6: return [4 /*yield*/, this.harper.setLintConfig(settings.lintSettings)]; - case 7: - _a.sent(); - this.harper.setup(); - // Reinitialize it. - if (this.hasEditorLinter()) { - this.disableEditorLinter(); - this.enableEditorLinter(); - } - return [4 /*yield*/, this.saveData(settings)]; - case 8: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - HarperPlugin.prototype.reinitialize = function () { - return __awaiter(this, void 0, void 0, function () { - var settings; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.getSettings()]; - case 1: - settings = _a.sent(); - return [4 /*yield*/, this.initializeFromSettings(settings)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - HarperPlugin.prototype.getSettings = function () { - return __awaiter(this, void 0, void 0, function () { - var usingWebWorker; - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - usingWebWorker = this.harper instanceof ZA; - _a = {}; - return [4 /*yield*/, this.harper.exportIgnoredLints()]; - case 1: - _a.ignoredLints = _b.sent(), - _a.useWebWorker = usingWebWorker; - return [4 /*yield*/, this.harper.getLintConfig()]; - case 2: return [2 /*return*/, (_a.lintSettings = _b.sent(), - _a)]; - } - }); - }); - }; - HarperPlugin.prototype.onload = function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.loadData()]; - case 1: - data = _a.sent(); - return [4 /*yield*/, this.initializeFromSettings(data)]; - case 2: - _a.sent(); - this.registerEditorExtension(this.editorExtensions); - this.setupCommands(); - this.setupStatusBar(); - this.enableEditorLinter(); - this.addSettingTab(new HarperSettingTab(this.app, this)); - return [2 /*return*/]; - } - }); - }); - }; - HarperPlugin.prototype.getDescriptions = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.harper.getLintDescriptions()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); - }; - HarperPlugin.prototype.setupStatusBar = function () { - var _this = this; - /** @type HTMLElement */ - var statusBarItem = this.addStatusBarItem(); - statusBarItem.className += ' mod-clickable'; - var button = document.createElement('span'); - button.style = 'width:24px'; - button.innerHTML = logoSvg; - button.addEventListener('click', function (event) { - var menu = new obsidian.Menu(); - menu.addItem(function (item) { - return item - .setTitle("".concat(_this.hasEditorLinter() ? 'Disable' : 'Enable', " automatic checking")) - .setIcon('documents') - .onClick(function () { - _this.toggleAutoLint(); - }); - }); - menu.showAtMouseEvent(event); - }); - statusBarItem.appendChild(button); - }; - HarperPlugin.prototype.setupCommands = function () { - var _this = this; - this.addCommand({ - id: 'harper-toggle-auto-lint', - name: 'Toggle automatic grammar checking', - callback: function () { return _this.toggleAutoLint(); } - }); - }; - HarperPlugin.prototype.enableEditorLinter = function () { - if (!this.hasEditorLinter()) { - this.editorExtensions.push(this.constructEditorLinter()); - this.app.workspace.updateOptions(); - console.log('Enabled'); - } - }; - HarperPlugin.prototype.disableEditorLinter = function () { - while (this.hasEditorLinter()) { - this.editorExtensions.pop(); - } - this.app.workspace.updateOptions(); - }; - HarperPlugin.prototype.hasEditorLinter = function () { - return this.editorExtensions.length != 0; - }; - HarperPlugin.prototype.toggleAutoLint = function () { - if (this.hasEditorLinter()) { - this.disableEditorLinter(); - } - else { - this.enableEditorLinter(); - } - }; - /** Construct the linter plugin that actually shows the errors. */ - HarperPlugin.prototype.constructEditorLinter = function () { - var _this = this; - return linter(function (view) { return __awaiter(_this, void 0, void 0, function () { - var text, lints; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - text = view.state.doc.sliceString(-1); - return [4 /*yield*/, this.harper.lint(text)]; - case 1: - lints = _a.sent(); - return [2 /*return*/, lints.map(function (lint) { - var span = lint.span(); - return { - from: span.start, - to: span.end, - severity: 'error', - title: lint.lint_kind(), - message: lint.message(), - ignore: function () { return __awaiter(_this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.harper.ignoreLint(lint)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.reinitialize()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }, - actions: lint.suggestions().map(function (sug) { - return { - name: suggestionToLabel(sug), - apply: function (view) { - if (sug.kind() === FA.Remove) { - view.dispatch({ - changes: { - from: span.start, - to: span.end, - insert: '' - } - }); - } - else if (sug.kind() === FA.Replace) { - view.dispatch({ - changes: { - from: span.start, - to: span.end, - insert: sug.get_replacement_text() - } - }); - } - else if (sug.kind() === FA.InsertAfter) { - view.dispatch({ - changes: { - from: span.end, - to: span.end, - insert: sug.get_replacement_text() - } - }); - } - } - }; - }) - }; - })]; - } - }); - }); }, { - delay: -1 - }); - }; - return HarperPlugin; -}(obsidian.Plugin)); - -module.exports = HarperPlugin; - -/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/harper/manifest.json b/.obsidian/plugins/harper/manifest.json deleted file mode 100644 index 398b363..0000000 --- a/.obsidian/plugins/harper/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "harper", - "name": "Harper", - "version": "0.19.1", - "minAppVersion": "1.7.7", - "description": "The Grammar Checker for Developers", - "author": "Elijah Potter", - "authorUrl": "https://elijahpotter.dev", - "isDesktopOnly": true -} diff --git a/.obsidian/plugins/homepage/main.js b/.obsidian/plugins/homepage/main.js index bed954d..bc4854a 100644 --- a/.obsidian/plugins/homepage/main.js +++ b/.obsidian/plugins/homepage/main.js @@ -1,4 +1,4 @@ -"use strict";var Ve=Object.create;var Y=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ue=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var je=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),ze=(a,e)=>{for(var t in e)Y(a,t,{get:e[t],enumerable:!0})},he=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Be(e))!Ke.call(a,i)&&i!==t&&Y(a,i,{get:()=>e[i],enumerable:!(n=Ye(e,i))||n.enumerable});return a};var qe=(a,e,t)=>(t=a!=null?Ve(Ue(a)):{},he(e||!a||!a.__esModule?Y(t,"default",{value:a,enumerable:!0}):t,a)),Ge=a=>he(Y({},"__esModule",{value:!0}),a);var Ce=je(l=>{"use strict";Object.defineProperty(l,"__esModule",{value:!0});var g=require("obsidian"),ne="YYYY-MM-DD",ae="gggg-[W]ww",Ne="YYYY-MM",ke="YYYY-[Q]Q",Pe="YYYY";function F(a){let e=window.app.plugins.getPlugin("periodic-notes");return e&&e.settings?.[a]?.enabled}function O(){try{let{internalPlugins:a,plugins:e}=window.app;if(F("daily")){let{format:o,folder:s,template:c}=e.getPlugin("periodic-notes")?.settings?.daily||{};return{format:o||ne,folder:s?.trim()||"",template:c?.trim()||""}}let{folder:t,format:n,template:i}=a.getPluginById("daily-notes")?.instance?.options||{};return{format:n||ne,folder:t?.trim()||"",template:i?.trim()||""}}catch(a){console.info("No custom daily note settings found!",a)}}function L(){try{let a=window.app.plugins,e=a.getPlugin("calendar")?.options,t=a.getPlugin("periodic-notes")?.settings?.weekly;if(F("weekly"))return{format:t.format||ae,folder:t.folder?.trim()||"",template:t.template?.trim()||""};let n=e||{};return{format:n.weeklyNoteFormat||ae,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(a){console.info("No custom weekly note settings found!",a)}}function x(){let a=window.app.plugins;try{let e=F("monthly")&&a.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:e.format||Ne,folder:e.folder?.trim()||"",template:e.template?.trim()||""}}catch(e){console.info("No custom monthly note settings found!",e)}}function C(){let a=window.app.plugins;try{let e=F("quarterly")&&a.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:e.format||ke,folder:e.folder?.trim()||"",template:e.template?.trim()||""}}catch(e){console.info("No custom quarterly note settings found!",e)}}function H(){let a=window.app.plugins;try{let e=F("yearly")&&a.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:e.format||Pe,folder:e.folder?.trim()||"",template:e.template?.trim()||""}}catch(e){console.info("No custom yearly note settings found!",e)}}function De(...a){let e=[];for(let n=0,i=a.length;n{let X=n(),ee=a.clone().set({hour:X.get("hour"),minute:X.get("minute"),second:X.get("second")});return E&&ee.add(parseInt(v,10),w),f?ee.format(f.substring(1).trim()):ee.format(o)}).replace(/{{\s*yesterday\s*}}/gi,a.clone().subtract(1,"day").format(o)).replace(/{{\s*tomorrow\s*}}/gi,a.clone().add(1,"d").format(o)));return e.foldManager.save(p,m),p}catch(p){console.error(`Failed to create file: '${d}'`,p),new g.Notice("Unable to create new file.")}}function et(a,e){return e[k(a,"day")]??null}function tt(){let{vault:a}=window.app,{folder:e}=O(),t=a.getAbstractFileByPath(g.normalizePath(e));if(!t)throw new ie("Failed to find daily notes folder");let n={};return g.Vault.recurseChildren(t,i=>{if(i instanceof g.TFile){let o=M(i,"day");if(o){let s=k(o,"day");n[s]=i}}}),n}var oe=class extends Error{};function nt(){let{moment:a}=window,e=a.localeData()._week.dow,t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;e;)t.push(t.shift()),e--;return t}function at(a){return nt().indexOf(a.toLowerCase())}async function Me(a){let{vault:e}=window.app,{template:t,format:n,folder:i}=L(),[o,s]=await A(t),c=a.format(n),m=await I(i,c);try{let r=await e.create(m,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,p,P,D,E,v)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(D,10),E),v?f.format(v.substring(1).trim()):f.format(n)}).replace(/{{\s*title\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(d,p,P)=>{let D=at(p);return a.weekday(D).format(P.trim())}));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${m}'`,r),new g.Notice("Unable to create new file.")}}function it(a,e){return e[k(a,"week")]??null}function ot(){let a={};if(!Fe())return a;let{vault:e}=window.app,{folder:t}=L(),n=e.getAbstractFileByPath(g.normalizePath(t));if(!n)throw new oe("Failed to find weekly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=M(i,"week");if(o){let s=k(o,"week");a[s]=i}}}),a}var se=class extends Error{};async function Se(a){let{vault:e}=window.app,{template:t,format:n,folder:i}=x(),[o,s]=await A(t),c=a.format(n),m=await I(i,c);try{let r=await e.create(m,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,p,P,D,E,v)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(D,10),E),v?f.format(v.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${m}'`,r),new g.Notice("Unable to create new file.")}}function st(a,e){return e[k(a,"month")]??null}function rt(){let a={};if(!Oe())return a;let{vault:e}=window.app,{folder:t}=x(),n=e.getAbstractFileByPath(g.normalizePath(t));if(!n)throw new se("Failed to find monthly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=M(i,"month");if(o){let s=k(o,"month");a[s]=i}}}),a}var re=class extends Error{};async function lt(a){let{vault:e}=window.app,{template:t,format:n,folder:i}=C(),[o,s]=await A(t),c=a.format(n),m=await I(i,c);try{let r=await e.create(m,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,p,P,D,E,v)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(D,10),E),v?f.format(v.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${m}'`,r),new g.Notice("Unable to create new file.")}}function ct(a,e){return e[k(a,"quarter")]??null}function dt(){let a={};if(!Le())return a;let{vault:e}=window.app,{folder:t}=C(),n=e.getAbstractFileByPath(g.normalizePath(t));if(!n)throw new re("Failed to find quarterly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=M(i,"quarter");if(o){let s=k(o,"quarter");a[s]=i}}}),a}var le=class extends Error{};async function pt(a){let{vault:e}=window.app,{template:t,format:n,folder:i}=H(),[o,s]=await A(t),c=a.format(n),m=await I(i,c);try{let r=await e.create(m,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,p,P,D,E,v)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(D,10),E),v?f.format(v.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${m}'`,r),new g.Notice("Unable to create new file.")}}function ut(a,e){return e[k(a,"year")]??null}function gt(){let a={};if(!xe())return a;let{vault:e}=window.app,{folder:t}=H(),n=e.getAbstractFileByPath(g.normalizePath(t));if(!n)throw new le("Failed to find yearly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=M(i,"year");if(o){let s=k(o,"year");a[s]=i}}}),a}function mt(){let{app:a}=window,e=a.internalPlugins.plugins["daily-notes"];if(e&&e.enabled)return!0;let t=a.plugins.getPlugin("periodic-notes");return t&&t.settings?.daily?.enabled}function Fe(){let{app:a}=window;if(a.plugins.getPlugin("calendar"))return!0;let e=a.plugins.getPlugin("periodic-notes");return e&&e.settings?.weekly?.enabled}function Oe(){let{app:a}=window,e=a.plugins.getPlugin("periodic-notes");return e&&e.settings?.monthly?.enabled}function Le(){let{app:a}=window,e=a.plugins.getPlugin("periodic-notes");return e&&e.settings?.quarterly?.enabled}function xe(){let{app:a}=window,e=a.plugins.getPlugin("periodic-notes");return e&&e.settings?.yearly?.enabled}function ht(a){let e={day:O,week:L,month:x,quarter:C,year:H}[a];return e()}function ft(a,e){return{day:Ae,month:Se,week:Me}[a](e)}l.DEFAULT_DAILY_NOTE_FORMAT=ne;l.DEFAULT_MONTHLY_NOTE_FORMAT=Ne;l.DEFAULT_QUARTERLY_NOTE_FORMAT=ke;l.DEFAULT_WEEKLY_NOTE_FORMAT=ae;l.DEFAULT_YEARLY_NOTE_FORMAT=Pe;l.appHasDailyNotesPluginLoaded=mt;l.appHasMonthlyNotesPluginLoaded=Oe;l.appHasQuarterlyNotesPluginLoaded=Le;l.appHasWeeklyNotesPluginLoaded=Fe;l.appHasYearlyNotesPluginLoaded=xe;l.createDailyNote=Ae;l.createMonthlyNote=Se;l.createPeriodicNote=ft;l.createQuarterlyNote=lt;l.createWeeklyNote=Me;l.createYearlyNote=pt;l.getAllDailyNotes=tt;l.getAllMonthlyNotes=rt;l.getAllQuarterlyNotes=dt;l.getAllWeeklyNotes=ot;l.getAllYearlyNotes=gt;l.getDailyNote=et;l.getDailyNoteSettings=O;l.getDateFromFile=M;l.getDateFromPath=Xe;l.getDateUID=k;l.getMonthlyNote=st;l.getMonthlyNoteSettings=x;l.getPeriodicNoteSettings=ht;l.getQuarterlyNote=ct;l.getQuarterlyNoteSettings=C;l.getTemplateInfo=A;l.getWeeklyNote=it;l.getWeeklyNoteSettings=L;l.getYearlyNote=ut;l.getYearlyNoteSettings=H});var bt={};ze(bt,{default:()=>Z});module.exports=Ge(bt);var N=require("obsidian");var b=require("obsidian");var He=require("obsidian");var B=require("obsidian");function T(a){return a?a.extension=="md"?a.path.slice(0,-3):a.path:""}function fe(a){return a.split("/").slice(-1)[0].contains(".")?a:`${a}.md`}function we(a){let e=a.vault.getFiles().filter(t=>["md","canvas"].contains(t.extension));if(e.length){let t=Math.floor(Math.random()*e.length);return T(e[t])}}function ye(a){return a.workspace.getActiveViewOfType(B.View)?.getViewType()=="empty"}function te(a,e){return a.localeCompare(e,void 0,{sensitivity:"accent"})===0}function U(a){return new Promise(e=>setTimeout(e,a))}async function ve(a){let e=a.workspace.getLayout();e.main={id:"5324373015726ba8",type:"split",children:[{id:"4509724f8bf84da7",type:"tabs",children:[{id:"e7a7b303c61786dc",type:"leaf",state:{type:"empty",state:{},icon:"lucide-file",title:"New tab"}}]}],direction:"vertical"},e.active="e7a7b303c61786dc",await a.workspace.changeLayout(e),B.Platform.isMobile&&(a.workspace.rightSplit?.updateInfo(),$e(a))}function $e(a){let e=a.internalPlugins.plugins.sync?.instance;e&&a.workspace.onLayoutReady(()=>{e.statusIconEl=a.workspace.rightSplit.addHeaderButton("sync-small",e.openStatusIconMenu.bind(e)),e.statusIconEl.addEventListener("contextmenu",e.openStatusIconMenu.bind(e)),e.statusIconEl.addClass("sync-status-icon")})}function be(a){let e=new Promise(t=>{let n=async()=>{t(),a.workspace.off("layout-change",n)};a.workspace.on("layout-change",n)});return Promise.race([e,new Promise(t=>setTimeout(t,1500))])}var u=qe(Ce()),ce={["Daily Note"]:{noun:"day",adjective:"daily",create:u.createDailyNote,get:u.getDailyNote,getAll:u.getAllDailyNotes},["Weekly Note"]:{noun:"week",adjective:"weekly",create:u.createWeeklyNote,get:u.getWeeklyNote,getAll:u.getAllWeeklyNotes},["Monthly Note"]:{noun:"month",adjective:"monthly",create:u.createMonthlyNote,get:u.getMonthlyNote,getAll:u.getAllMonthlyNotes},["Yearly Note"]:{noun:"year",adjective:"yearly",create:u.createYearlyNote,get:u.getYearlyNote,getAll:u.getAllYearlyNotes}},K=["Daily Note","Weekly Note","Monthly Note","Yearly Note"],Ie="Date-dependent file",de="Date-dependent notes in Homepage have been removed. Set your Homepage as a Periodic or Daily Note instead.";async function Re(a,e){let t=e.communityPlugins["periodic-notes"],n=ce[a],i=(0,He.moment)().startOf(n.noun),o;if(We(t)){let s=n.getAll();Object.keys(s).length?o=n.get(i,s)||await n.create(i):o=await n.create(i)}else t.cache.initialize(),o=t.getPeriodicNote(n.noun,i)||await t.createPeriodicNote(n.noun,i);return T(o)}function _e(a,e){if(a=="Daily Note"&&e.internalPlugins["daily-notes"]?.enabled)return!0;let t=e.communityPlugins["periodic-notes"];if(!t)return!1;if(We(t)){let n=ce[a].adjective;return t.settings[n]?.enabled}else{let n=ce[a].noun;return t?.calendarSetManager?.getActiveSet()[n]?.enabled}}function j(a){let e=a.internalPlugins["daily-notes"];return e?.enabled&&e?.instance.options.autorun}function We(a){return(a?.manifest.version||"0").startsWith("0")}var y=require("obsidian");var h=require("obsidian");var z=class extends h.AbstractInputSuggest{getSuggestions(t){let n=this.app.vault.getAllLoadedFiles(),i=[],o=t.toLowerCase();return n.forEach(s=>{s instanceof h.TFile&&["md","canvas"].contains(s.extension)&&s.path.toLowerCase().contains(o)&&i.push(s)}),i}renderSuggestion(t,n){t.extension=="md"?n.setText(T(t)):(n.setText(t.path.slice(0,-7)),n.insertAdjacentHTML("beforeend",''))}selectSuggestion(t){this.textInputEl.value=T(t),this.textInputEl.trigger("input"),this.close()}},q=class extends h.AbstractInputSuggest{getSuggestions(t){let n=Object.keys(this.app.internalPlugins.plugins.workspaces?.instance.workspaces),i=t.toLowerCase();return n.filter(o=>o.toLowerCase().contains(i))}renderSuggestion(t,n){n.setText(t)}selectSuggestion(t){this.textInputEl.value=t,this.textInputEl.trigger("input"),this.close()}},G=class{constructor(e){this.app=e.plugin.app,this.homepage=e.plugin.homepage,this.tab=e,this.container=e.containerEl.createDiv({cls:"nv-command-box"}),this.dropzone=document.createElement("div"),this.dropzone.className="nv-command-pill nv-dropzone",this.dropzone.addEventListener("dragenter",t=>t.preventDefault()),this.dropzone.addEventListener("dragover",t=>t.preventDefault()),this.dropzone.addEventListener("drop",()=>this.terminateDrag()),this.update()}update(){this.container.innerHTML="",this.activeDrag=null,this.activeCommand=null;for(let e of this.homepage.data.commands){let t=this.app.commands.findCommand(e.id),n=this.container.createDiv({cls:"nv-command-pill",attr:{draggable:!0}});n.addEventListener("dragstart",o=>{o.dataTransfer.effectAllowed="move",this.activeCommand=this.homepage.data.commands.splice(this.indexOf(n),1)[0],this.activeDrag=n,this.dropzone.style.width=`${n.clientWidth}px`,this.dropzone.style.height=`${n.clientHeight}px`}),n.addEventListener("dragover",o=>this.moveDropzone(n,o)),n.addEventListener("drop",o=>o.preventDefault()),n.addEventListener("dragend",()=>this.terminateDrag()),n.createSpan({cls:"nv-command-text",text:t?.name??e.id});let i=new h.ButtonComponent(n).setIcon("route").setClass("clickable-icon").setClass("nv-command-period").onClick(o=>this.showMenu(e,o,i));e.period!="Both"&&(i.setClass("nv-command-selected"),i.setIcon(""),i.buttonEl.createSpan({text:e.period})),new h.ButtonComponent(n).setIcon("trash-2").setClass("clickable-icon").setClass("nv-command-delete").onClick(()=>this.delete(e)),t||(n.classList.add("nv-command-invalid"),n.prepend((0,h.getIcon)("ban")),(0,h.setTooltip)(n,"This command can't be found, so it won't be executed. It may belong to a disabled plugin.",{delay:.001}))}new h.ButtonComponent(this.container).setClass("nv-command-add-button").setButtonText("Add...").onClick(()=>{new pe(this.tab).open()})}delete(e){this.homepage.data.commands.remove(e),this.homepage.save(),this.update()}showMenu(e,t,n){let i=new h.Menu;for(let s of Object.values($))i.addItem(c=>{c.setTitle(s),c.setChecked(e.period==s),c.onClick(()=>{e.period=s,this.homepage.save(),this.update()})});let o=n.buttonEl.getBoundingClientRect();i.showAtPosition({x:o.x-22,y:o.y+o.height+8})}indexOf(e){return Array.from(this.container.children).indexOf(e)}moveDropzone(e,t){if(!this.activeDrag)return;this.activeDrag.hidden=!0;let n=e.getBoundingClientRect();t.xawait this.copyDebugInfo()})}sanitiseNote(t){return t===null||t.match(/^\s*$/)!==null?null:(0,y.normalizePath)(t)}display(){let t=this.plugin.homepage.data.kind=="Workspace",n=this.plugin.homepage.data.kind,i=j(this.plugin),o=!1,s=t?q:z;this.containerEl.empty(),this.elements={};let c=new y.Setting(this.containerEl).setName("Homepage").addDropdown(async d=>{for(let p of Object.values(R)){if(!this.plugin.hasRequiredPlugin(p))if(p==this.plugin.homepage.data.kind)o=!0;else{d.selectEl.createEl("option",{text:p,attr:{disabled:!0}});continue}d.addOption(p,p)}d.setValue(this.plugin.homepage.data.kind),d.onChange(async p=>{this.plugin.homepage.data.kind=p,await this.plugin.homepage.save(),this.display()})});c.settingEl.id="nv-main-setting";let m=c.settingEl.createEl("article",{text:wt[n],attr:{id:"nv-desc"}});o&&m.createDiv({text:"The plugin required for this homepage type isn't available.",cls:"mod-warning"}),me.includes(n)?c.addText(d=>{d.setDisabled(!0)}):c.addText(d=>{new s(this.app,d.inputEl),d.setPlaceholder(S.value),d.setValue(S.value==this.plugin.homepage.data.value?"":this.plugin.homepage.data.value),d.onChange(async p=>{this.plugin.homepage.data.value=this.sanitiseNote(p)||S.value,await this.plugin.homepage.save()})}),this.addToggle("Open on startup","When launching Obsidian, open the homepage.","openOnStartup",d=>this.display()),i&&(this.elements.openOnStartup.descEl.createDiv({text:`This setting has been disabled, as it isn't compatible with Daily Notes' "Open daily note on startup" functionality. To use it, disable the Daily Notes setting.`,attr:{class:"mod-warning"}}),this.disableSetting("openOnStartup")),this.addToggle("Open when empty","When there are no tabs open, open the homepage.","openWhenEmpty"),this.addToggle("Use when opening normally","Use homepage settings when opening it normally, such as from a link or the file browser.","alwaysApply");let r=new y.Setting(this.containerEl).setName("Separate mobile homepage").setDesc("For mobile devices, store the homepage and its settings separately.").addToggle(d=>d.setValue(this.plugin.settings.separateMobile).onChange(async p=>{this.plugin.settings.separateMobile=p,this.plugin.homepage=this.plugin.getHomepage(),await this.plugin.saveSettings(),this.display()}));if(this.plugin.settings.separateMobile){let d=y.Platform.isMobile?"desktop":"mobile",p=document.createElement("div");r.setClass("nv-mobile-setting"),p.className="mod-warning nv-mobile-info",p.innerHTML=`Mobile settings are stored separately. Therefore, changes to other settings will not affect - ${d} devices. To edit ${d} settings, use a ${d} device.`,r.settingEl.append(p)}this.addHeading("Commands","commandsHeading"),this.containerEl.createDiv({cls:"nv-command-desc setting-item-description",text:"Select commands that will be executed when opening the homepage."}),this.commandBox=new G(this),this.addHeading("Vault environment","vaultHeading"),this.addDropdown("Opening method","Determine how extant tabs and views are affected on startup.","openMode",J),this.addDropdown("Manual opening method","Determine how extant tabs and views are affected when opening with commands or the ribbon button.","manualOpenMode",J),this.addToggle("Pin","Pin the homepage when opening.","pin"),this.addToggle("Hide release notes","Never display release notes when Obsidian updates.","hideReleaseNotes"),this.addToggle("Auto-create","When the homepage doesn't exist, create a note with its name.","autoCreate"),this.elements.autoCreate.descEl.createDiv({text:"If this vault is synced using unofficial services, this may lead to content being overwritten.",cls:"mod-warning"}),this.addHeading("Opened view","paneHeading"),this.addDropdown("Homepage view","Choose what view to open the homepage in.","view",ge),this.addToggle("Revert view on close","When navigating away from the homepage, restore the default view.","revertView"),this.addToggle("Auto-scroll","When opening the homepage, scroll to the bottom and focus on the last line.","autoScroll"),"dataview"in this.plugin.communityPlugins&&(this.addToggle("Refresh Dataview","Always attempt to reload Dataview views when opening the homepage.","refreshDataview"),this.elements.refreshDataview.descEl.createDiv({text:"Requires Dataview auto-refresh to be enabled.",attr:{class:"mod-warning"}})),y.Platform.isMobile||new y.ButtonComponent(this.containerEl).setButtonText("Copy debug info").setClass("nv-debug-button").onClick(async()=>await this.copyDebugInfo()),(t||n==="Nothing")&&this.disableSettings("openWhenEmpty","alwaysApply","vaultHeading","openMode","manualOpenMode","autoCreate","pin"),(t||["Nothing","Graph view"].includes(n))&&this.disableSettings("paneHeading","view","revertView","autoScroll","refreshDataview"),(!this.plugin.homepage.data.openOnStartup||i)&&this.disableSetting("openMode"),K.includes(this.plugin.homepage.data.kind)&&this.disableSetting("autoCreate")}disableSetting(t){this.elements[t]?.settingEl.setAttribute("nv-greyed","")}disableSettings(...t){t.forEach(n=>this.disableSetting(n))}addHeading(t,n){let i=new y.Setting(this.containerEl).setHeading().setName(t);this.elements[n]=i}addDropdown(t,n,i,o,s){let c=new y.Setting(this.containerEl).setName(t).setDesc(n).addDropdown(async m=>{for(let r of Object.values(o))m.addOption(r,r);m.setValue(this.plugin.homepage.data[i]),m.onChange(async r=>{this.plugin.homepage.data[i]=r,await this.plugin.homepage.save(),s&&s(r)})});return this.elements[i]=c,c}addToggle(t,n,i,o){let s=new y.Setting(this.containerEl).setName(t).setDesc(n).addToggle(c=>c.setValue(this.plugin.homepage.data[i]).onChange(async m=>{this.plugin.homepage.data[i]=m,await this.plugin.homepage.save(),o&&o(m)}));return this.elements[i]=s,s}async copyDebugInfo(){let t=this.app.vault.config,n={...this.settings,_defaultViewMode:t.defaultViewMode||"default",_livePreview:t.livePreview!==void 0?t.livePreview:"default",_focusNewTab:t.focusNewTab!==void 0?t.focusNewTab:"default",_plugins:Object.keys(this.plugin.communityPlugins),_internalPlugins:Object.values(this.plugin.internalPlugins).flatMap(i=>i.enabled?[i.instance.id]:[]),_obsidianVersion:window.electron?.ipcRenderer.sendSync("version")||"unknown"};await navigator.clipboard.writeText(JSON.stringify(n)),new y.Notice("Copied homepage debug information to clipboard")}};var yt=["markdown","canvas","kanban"],W="Main Homepage",V="Mobile Homepage",J=(n=>(n.ReplaceAll="Replace all open notes",n.ReplaceLast="Replace last note",n.Retain="Keep open notes",n))(J||{}),ge=(i=>(i.Default="Default view",i.Reading="Reading view",i.Source="Editing view (Source)",i.LivePreview="Editing view (Live Preview)",i))(ge||{}),R=(r=>(r.File="File",r.Workspace="Workspace",r.Random="Random file",r.Graph="Graph view",r.None="Nothing",r.DailyNote="Daily Note",r.WeeklyNote="Weekly Note",r.MonthlyNote="Monthly Note",r.YearlyNote="Yearly Note",r))(R||{}),$=(n=>(n.Both="Both",n.Startup="Startup only",n.Manual="Manual only",n))($||{}),me=["Random file","Graph view","Nothing",...K],_=class{constructor(e,t){this.lastView=void 0;this.openedViews=new WeakMap;this.name=e,this.plugin=t,this.app=t.app;let n=this.plugin.settings.homepages[e];n?this.data=Object.assign({},S,n):(this.plugin.settings.homepages[e]={...S},this.data=this.plugin.settings.homepages[e])}async open(e=!1){if(!this.plugin.hasRequiredPlugin(this.data.kind)){new b.Notice("Homepage cannot be opened due to plugin unavailablity.");return}if(this.data.kind==="Workspace")await this.launchWorkspace();else if(this.data.kind!=="Nothing"){let n=this.plugin.loaded?this.data.manualOpenMode:this.data.openMode;e&&(n="Keep open notes"),await this.launchLeaf(n)}if(this.data.commands.length<1)return;let t=this.plugin.loaded?"Startup only":"Manual only";await be(this.app);for(let{id:n,period:i}of this.data.commands)i!==t&&this.app.commands.executeCommandById(n)}async launchWorkspace(){let e=this.plugin.internalPlugins.workspaces?.instance;if(!(this.data.value in e.workspaces)){new b.Notice(`Cannot find the workspace "${this.data.value}" to use as the homepage.`);return}e.loadWorkspace(this.data.value),await U(100)}async launchLeaf(e){let t;if(this.computedValue=await this.computeValue(),this.plugin.executing=!0,!(j(this.plugin)&&!this.plugin.loaded)){if(e!=="Replace all open notes"){let n=this.getOpened();if(n.length>0){this.app.workspace.setActiveLeaf(n[0]),await this.configure(n[0]);return}else e=="Keep open notes"&&ye(this.app)&&(e="Replace last note")}e!=="Keep open notes"&&this.app.workspace.getActiveViewOfType(b.View)?.leaf.setPinned(!1),e==="Replace all open notes"&&(this.app.workspace?.floatingSplit?.children&&(await U(0),this.app.workspace.floatingSplit.children.forEach(n=>n.win.close())),await ve(this.app),await U(0)),this.data.kind==="Graph view"?t=await this.launchGraph(e):t=await this.launchNote(e),t&&await this.configure(t)}}async launchGraph(e){if(e==="Keep open notes"){let t=this.app.workspace.getLeaf("tab");this.app.workspace.setActiveLeaf(t)}return this.app.commands.executeCommandById("graph:open"),this.app.workspace.getActiveViewOfType(b.View)?.leaf}async launchNote(e){let t=this.app.metadataCache.getFirstLinkpathDest(this.computedValue,"/");if(!t){if(!this.data.autoCreate){new b.Notice(`Homepage "${this.computedValue}" does not exist.`);return}t=await this.app.vault.create(fe(this.computedValue),"")}let n=await this.app.vault.cachedRead(t),i=this.app.workspace.getLeaf(e=="Keep open notes");return await i.openFile(t),this.app.workspace.setActiveLeaf(i),n!==await this.app.vault.read(t)&&await this.app.vault.modify(t,n),i}async configure(e){this.plugin.executing=!1;let t=e.view;if(!(t instanceof b.MarkdownView)){this.data.pin&&t.leaf.setPinned(!0),this.configurePlugins();return}let n=t.getState();if(this.data.revertView&&(this.lastView=new WeakRef(t)),this.data.autoScroll){let i=t.editor.lineCount();n.mode=="preview"?t.previewMode.applyScroll(i-4):(t.editor.setCursor(i),t.editor.focus())}if(this.data.pin&&t.leaf.setPinned(!0),this.data.view!=="Default view"){switch(this.data.view){case"Editing view (Live Preview)":case"Editing view (Source)":n.mode="source",n.source=this.data.view!="Editing view (Live Preview)";break;case"Reading view":n.mode="preview";break}await t.leaf.setViewState({type:"markdown",state:n})}this.configurePlugins()}configurePlugins(){this.plugin.loaded&&this.data.refreshDataview&&this.plugin.communityPlugins.dataview?.index.touch(),this.plugin.communityPlugins["obsidian-file-color"]?.generateColorStyles()}getOpened(){return this.data.kind=="Graph view"?this.app.workspace.getLeavesOfType("graph"):yt.flatMap(t=>this.app.workspace.getLeavesOfType(t)).filter(t=>{let n=t.view.getState().file;return te(n.endsWith("md")?n.slice(0,-3):n,this.computedValue)})}async computeValue(){let e=this.data.value;switch(this.data.kind){case"Random file":let t=we(this.app);t&&(e=t);break;case"Daily Note":case"Weekly Note":case"Monthly Note":case"Yearly Note":e=await Re(this.data.kind,this.plugin);break}return e}async save(){this.plugin.settings.homepages[this.name]=this.data,await this.plugin.saveSettings()}async setToActiveFile(){this.data.value=T(this.app.workspace.getActiveFile()),await this.save(),new b.Notice(`The homepage has been changed to "${this.data.value}".`)}canSetToFile(){return this.app.workspace.getActiveFile()!==null&&!me.includes(this.data.kind)}async revertView(){if(this.lastView==null||this.data.view=="Default view")return;let e=this.lastView.deref();if(!e||te(T(e.file),this.computedValue))return;let t=e.getState(),n=this.app.vault.config,i=n.defaultViewMode||"source",o=n.livePreview!==void 0?!n.livePreview:!1;e.leaf.getViewState().type=="markdown"&&(i!=t.mode||o!=t.source)&&(t.mode=i,t.source=o,await e.leaf.setViewState({type:"markdown",state:t,active:!0})),this.lastView=void 0}async openWhenEmpty(){if(!this.plugin.loaded||this.plugin.executing)return;let e=this.app.workspace.getActiveViewOfType(b.View)?.leaf;e?.getViewState().type!=="empty"||e.parentSplit.children.length!=1||await this.open(!0)}async apply(){let e=this.app.workspace.getActiveViewOfType(b.FileView);if(!e)return;let t=T(e.file);this.openedViews.get(e)!==t&&(this.openedViews.set(e,t),t===await this.computeValue()&&this.plugin.loaded&&!this.plugin.executing&&await this.configure(e.leaf))}};var vt='',Z=class extends N.Plugin{constructor(){super(...arguments);this.newRelease=!1;this.loaded=!1;this.executing=!1;this.onLayoutChange=async()=>{this.homepage.data.revertView&&await this.homepage.revertView(),this.homepage.data.openWhenEmpty&&await this.homepage.openWhenEmpty(),this.homepage.data.alwaysApply&&await this.homepage.apply()};this.hideInterstitial=()=>{this.interstitial?.detach(),window.removeEventListener("error",this.hideInterstitial)}}async onload(){let t=this.app.workspace.layoutReady;t||this.showInterstitial(),this.patchReleaseNotes(),this.settings=await this.loadSettings(),this.internalPlugins=this.app.internalPlugins.plugins,this.communityPlugins=this.app.plugins.plugins,this.homepage=this.getHomepage(),this.app.workspace.onLayoutReady(async()=>{let n=this.homepage.data.openOnStartup&&!t&&!await this.hasUrlParams();this.patchNewTabPage(),n&&await this.homepage.open(),this.loaded=!0,this.unpatchReleaseNotes(),this.hideInterstitial()}),(0,N.addIcon)("homepage",vt),this.addRibbonIcon("homepage","Open homepage",n=>this.homepage.open(n.button==1||n.button==2||N.Keymap.isModifier(n,"Mod"))).setAttribute("id","nv-homepage-icon"),this.registerEvent(this.app.workspace.on("layout-change",this.onLayoutChange)),this.addSettingTab(new Q(this.app,this)),this.addCommand({id:"open-homepage",name:"Open homepage",callback:()=>this.homepage.open()}),this.addCommand({id:"set-to-active-file",name:"Set to active file",checkCallback:n=>{if(n)return this.homepage.canSetToFile();this.homepage.setToActiveFile()}})}async onunload(){this.app.workspace.off("layout-change",this.onLayoutChange),this.unpatchNewTabPage()}getHomepage(){return this.settings.separateMobile&&N.Platform.isMobile?(V in this.settings.homepages||(this.settings.homepages[V]={...this.settings.homepages?.[W]},this.settings.homepages[V].commands=[...this.settings.homepages?.[W]?.commands]),new _(V,this)):new _(W,this)}async loadSettings(){let t=await this.loadData();return t?.version!==4?t?this.upgradeSettings(t):Object.assign({},ue):t}async saveSettings(){await this.saveData(this.settings)}showInterstitial(){this.interstitial=createDiv({cls:"nv-homepage-interstitial"}),document.body.append(this.interstitial),window.addEventListener("error",this.hideInterstitial)}async hasUrlParams(){let t,n;if(N.Platform.isMobile){let i=await window.Capacitor.Plugins.App.getLaunchUrl();if(!i)return!1;let o=new URL(i.url);n=Array.from(o.searchParams.keys()),t=o.hostname}else if(window.OBS_ACT)n=Object.keys(window.OBS_ACT),t=window.OBS_ACT.action;else return!1;return["open","advanced-uri"].includes(t)&&["file","filepath","workspace"].some(i=>n.includes(i))}hasRequiredPlugin(t){switch(t){case"Workspace":return this.internalPlugins.workspaces?.enabled;case"Graph view":return this.internalPlugins.graph?.enabled;case"Daily Note":case"Weekly Note":case"Monthly Note":case"Yearly Note":return _e(t,this);default:return!0}}patchNewTabPage(){let t=this.communityPlugins["new-tab-default-page"];t&&(t.nvOrig_checkForNewTab=t.checkForNewTab,t.checkForNewTab=async n=>{if(!(this&&this.executing))return await t.nvOrig_checkForNewTab(n)})}unpatchNewTabPage(){let t=this.communityPlugins["new-tab-default-page"];t&&(t.checkForNewTab=t._checkForNewTab)}patchReleaseNotes(){this.app.nvOrig_showReleaseNotes=this.app.showReleaseNotes,this.app.showReleaseNotes=()=>this.newRelease=!0}unpatchReleaseNotes(){this.newRelease&&!this.homepage.data.hideReleaseNotes&&this.app.nvOrig_showReleaseNotes(),this.app.showReleaseNotes=this.app.nvOrig_showReleaseNotes}upgradeSettings(t){if(t.version==3){let i=t,o=!1;for(let s of Object.values(i.homepages))s.commands=s.commands.map(c=>({id:c,period:"Both"})),s.kind==Ie&&(o=!0,s.kind="Daily Note");return o&&new N.Notice(de),i.version=4,this.saveData(i),i}let n=Object.assign({},ue);return t.workspaceEnabled?(t.value=t.workspace,t.kind="Workspace"):t.momentFormat?(t.kind="Daily Note",new N.Notice(de)):(t.value=t.defaultNote,t.kind="File"),t.commands=[],delete t.workspace,delete t.momentFormat,delete t.defaultNote,delete t.useMoment,delete t.workspaceEnabled,n.homepages[W]=t,this.saveData(n),n}}; +"use strict";var ze=Object.create;var j=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var Qe=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports),Ze=(a,t)=>{for(var e in t)j(a,e,{get:t[e],enumerable:!0})},ve=(a,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ge(t))!Je.call(a,i)&&i!==e&&j(a,i,{get:()=>t[i],enumerable:!(n=qe(t,i))||n.enumerable});return a};var Xe=(a,t,e)=>(e=a!=null?ze($e(a)):{},ve(t||!a||!a.__esModule?j(e,"default",{value:a,enumerable:!0}):e,a)),et=a=>ve(j({},"__esModule",{value:!0}),a);var _e=Qe(l=>{"use strict";Object.defineProperty(l,"__esModule",{value:!0});var g=require("obsidian"),te="YYYY-MM-DD",ne="gggg-[W]ww",De="YYYY-MM",Ee="YYYY-[Q]Q",Se="YYYY";function x(a){let t=window.app.plugins.getPlugin("periodic-notes");return t&&t.settings?.[a]?.enabled}function O(){try{let{internalPlugins:a,plugins:t}=window.app;if(x("daily")){let{format:o,folder:s,template:c}=t.getPlugin("periodic-notes")?.settings?.daily||{};return{format:o||te,folder:s?.trim()||"",template:c?.trim()||""}}let{folder:e,format:n,template:i}=a.getPluginById("daily-notes")?.instance?.options||{};return{format:n||te,folder:e?.trim()||"",template:i?.trim()||""}}catch(a){console.info("No custom daily note settings found!",a)}}function C(){try{let a=window.app.plugins,t=a.getPlugin("calendar")?.options,e=a.getPlugin("periodic-notes")?.settings?.weekly;if(x("weekly"))return{format:e.format||ne,folder:e.folder?.trim()||"",template:e.template?.trim()||""};let n=t||{};return{format:n.weeklyNoteFormat||ne,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(a){console.info("No custom weekly note settings found!",a)}}function H(){let a=window.app.plugins;try{let t=x("monthly")&&a.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:t.format||De,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom monthly note settings found!",t)}}function R(){let a=window.app.plugins;try{let t=x("quarterly")&&a.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:t.format||Ee,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom quarterly note settings found!",t)}}function I(){let a=window.app.plugins;try{let t=x("yearly")&&a.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:t.format||Se,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom yearly note settings found!",t)}}function Fe(...a){let t=[];for(let n=0,i=a.length;n{let Q=n(),Z=a.clone().set({hour:Q.get("hour"),minute:Q.get("minute"),second:Q.get("second")});return E&&Z.add(parseInt(b,10),w),f?Z.format(f.substring(1).trim()):Z.format(o)}).replace(/{{\s*yesterday\s*}}/gi,a.clone().subtract(1,"day").format(o)).replace(/{{\s*tomorrow\s*}}/gi,a.clone().add(1,"d").format(o)));return t.foldManager.save(m,u),m}catch(m){console.error(`Failed to create file: '${d}'`,m),new g.Notice("Unable to create new file.")}}function st(a,t){return t[k(a,"day")]??null}function rt(){let{vault:a}=window.app,{folder:t}=O(),e=a.getAbstractFileByPath(g.normalizePath(t));if(!e)throw new ae("Failed to find daily notes folder");let n={};return g.Vault.recurseChildren(e,i=>{if(i instanceof g.TFile){let o=A(i,"day");if(o){let s=k(o,"day");n[s]=i}}}),n}var ie=class extends Error{};function lt(){let{moment:a}=window,t=a.localeData()._week.dow,e=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;t;)e.push(e.shift()),t--;return e}function ct(a){return lt().indexOf(a.toLowerCase())}async function xe(a){let{vault:t}=window.app,{template:e,format:n,folder:i}=C(),[o,s]=await F(e),c=a.format(n),u=await _(i,c);try{let r=await t.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,m,P,T,E,b)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(T,10),E),b?f.format(b.substring(1).trim()):f.format(n)}).replace(/{{\s*title\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(d,m,P)=>{let T=ct(m);return a.weekday(T).format(P.trim())}));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${u}'`,r),new g.Notice("Unable to create new file.")}}function dt(a,t){return t[k(a,"week")]??null}function pt(){let a={};if(!Ce())return a;let{vault:t}=window.app,{folder:e}=C(),n=t.getAbstractFileByPath(g.normalizePath(e));if(!n)throw new ie("Failed to find weekly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=A(i,"week");if(o){let s=k(o,"week");a[s]=i}}}),a}var oe=class extends Error{};async function Oe(a){let{vault:t}=window.app,{template:e,format:n,folder:i}=H(),[o,s]=await F(e),c=a.format(n),u=await _(i,c);try{let r=await t.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,m,P,T,E,b)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(T,10),E),b?f.format(b.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${u}'`,r),new g.Notice("Unable to create new file.")}}function ut(a,t){return t[k(a,"month")]??null}function gt(){let a={};if(!He())return a;let{vault:t}=window.app,{folder:e}=H(),n=t.getAbstractFileByPath(g.normalizePath(e));if(!n)throw new oe("Failed to find monthly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=A(i,"month");if(o){let s=k(o,"month");a[s]=i}}}),a}var se=class extends Error{};async function mt(a){let{vault:t}=window.app,{template:e,format:n,folder:i}=R(),[o,s]=await F(e),c=a.format(n),u=await _(i,c);try{let r=await t.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,m,P,T,E,b)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(T,10),E),b?f.format(b.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${u}'`,r),new g.Notice("Unable to create new file.")}}function ht(a,t){return t[k(a,"quarter")]??null}function ft(){let a={};if(!Re())return a;let{vault:t}=window.app,{folder:e}=R(),n=t.getAbstractFileByPath(g.normalizePath(e));if(!n)throw new se("Failed to find quarterly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=A(i,"quarter");if(o){let s=k(o,"quarter");a[s]=i}}}),a}var re=class extends Error{};async function wt(a){let{vault:t}=window.app,{template:e,format:n,folder:i}=I(),[o,s]=await F(e),c=a.format(n),u=await _(i,c);try{let r=await t.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(d,m,P,T,E,b)=>{let w=window.moment(),f=a.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return P&&f.add(parseInt(T,10),E),b?f.format(b.substring(1).trim()):f.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(r,s),r}catch(r){console.error(`Failed to create file: '${u}'`,r),new g.Notice("Unable to create new file.")}}function yt(a,t){return t[k(a,"year")]??null}function vt(){let a={};if(!Ie())return a;let{vault:t}=window.app,{folder:e}=I(),n=t.getAbstractFileByPath(g.normalizePath(e));if(!n)throw new re("Failed to find yearly notes folder");return g.Vault.recurseChildren(n,i=>{if(i instanceof g.TFile){let o=A(i,"year");if(o){let s=k(o,"year");a[s]=i}}}),a}function bt(){let{app:a}=window,t=a.internalPlugins.plugins["daily-notes"];if(t&&t.enabled)return!0;let e=a.plugins.getPlugin("periodic-notes");return e&&e.settings?.daily?.enabled}function Ce(){let{app:a}=window;if(a.plugins.getPlugin("calendar"))return!0;let t=a.plugins.getPlugin("periodic-notes");return t&&t.settings?.weekly?.enabled}function He(){let{app:a}=window,t=a.plugins.getPlugin("periodic-notes");return t&&t.settings?.monthly?.enabled}function Re(){let{app:a}=window,t=a.plugins.getPlugin("periodic-notes");return t&&t.settings?.quarterly?.enabled}function Ie(){let{app:a}=window,t=a.plugins.getPlugin("periodic-notes");return t&&t.settings?.yearly?.enabled}function Nt(a){let t={day:O,week:C,month:H,quarter:R,year:I}[a];return t()}function kt(a,t){return{day:Le,month:Oe,week:xe}[a](t)}l.DEFAULT_DAILY_NOTE_FORMAT=te;l.DEFAULT_MONTHLY_NOTE_FORMAT=De;l.DEFAULT_QUARTERLY_NOTE_FORMAT=Ee;l.DEFAULT_WEEKLY_NOTE_FORMAT=ne;l.DEFAULT_YEARLY_NOTE_FORMAT=Se;l.appHasDailyNotesPluginLoaded=bt;l.appHasMonthlyNotesPluginLoaded=He;l.appHasQuarterlyNotesPluginLoaded=Re;l.appHasWeeklyNotesPluginLoaded=Ce;l.appHasYearlyNotesPluginLoaded=Ie;l.createDailyNote=Le;l.createMonthlyNote=Oe;l.createPeriodicNote=kt;l.createQuarterlyNote=mt;l.createWeeklyNote=xe;l.createYearlyNote=wt;l.getAllDailyNotes=rt;l.getAllMonthlyNotes=gt;l.getAllQuarterlyNotes=ft;l.getAllWeeklyNotes=pt;l.getAllYearlyNotes=vt;l.getDailyNote=st;l.getDailyNoteSettings=O;l.getDateFromFile=A;l.getDateFromPath=ot;l.getDateUID=k;l.getMonthlyNote=ut;l.getMonthlyNoteSettings=H;l.getPeriodicNoteSettings=Nt;l.getQuarterlyNote=ht;l.getQuarterlyNoteSettings=R;l.getTemplateInfo=F;l.getWeeklyNote=dt;l.getWeeklyNoteSettings=C;l.getYearlyNote=yt;l.getYearlyNoteSettings=I});var St={};Ze(St,{default:()=>J});module.exports=et(St);var N=require("obsidian");var v=require("obsidian");var ce=require("obsidian");var S=require("obsidian");function D(a){return a?a.extension=="md"?a.path.slice(0,-3):a.path:""}function be(a){return a.split("/").slice(-1)[0].contains(".")?a:`${a}.md`}function X(a,t=void 0){let e=a.vault.getFiles();if(t){let n=a.vault.getFolderByPath(t);if(!n)return;e=Ne(n)}if(e.filter(n=>["md","canvas","base"].contains(n.extension)),e.length){let n=Math.floor(Math.random()*e.length);return D(e[n])}}function Ne(a){let t=[];for(let e of a.children)e instanceof S.TFolder?t.push(...Ne(e)):t.push(e);return t}function ke(a){return a.workspace.getActiveViewOfType(S.View)?.getViewType()=="empty"}function ee(a,t){return a.localeCompare(t,void 0,{sensitivity:"accent"})===0}function U(a){return new Promise(t=>setTimeout(t,a))}async function Pe(a){let t=a.workspace.getLayout();t.main={id:"5324373015726ba8",type:"split",children:[{id:"4509724f8bf84da7",type:"tabs",children:[{id:"e7a7b303c61786dc",type:"leaf",state:{type:"empty",state:{},icon:"lucide-file",title:"New tab"}}]}],direction:"vertical"},t.active="e7a7b303c61786dc",await a.workspace.changeLayout(t),S.Platform.isMobile&&(a.workspace.rightSplit?.updateInfo(),tt(a))}function tt(a){let t=a.internalPlugins.plugins.sync?.instance;t&&a.workspace.onLayoutReady(()=>{t.statusIconEl=a.workspace.rightSplit.addHeaderButton("sync-small",t.openStatusIconMenu.bind(t)),t.statusIconEl.addEventListener("contextmenu",t.openStatusIconMenu.bind(t)),t.statusIconEl.addClass("sync-status-icon")})}function Te(a){let t=a.internalPlugins.plugins.sync,e=[new Promise(n=>{let i=async()=>{n(),a.workspace.off("layout-change",i)};a.workspace.on("layout-change",i)})];return t.enabled&&t.instance.syncing&&e.push(new Promise(n=>{let i=async()=>{n(),t.instance.off("status-change",i)};t.instance.on("status-change",i)})),Promise.race([Promise.all(e),new Promise(n=>setTimeout(n,1500))])}var p=Xe(_e()),Pt="custom-journal-locale",le={["Daily Note"]:{noun:"day",adjective:"daily",create:p.createDailyNote,get:p.getDailyNote,getAll:p.getAllDailyNotes},["Weekly Note"]:{noun:"week",adjective:"weekly",create:p.createWeeklyNote,get:p.getWeeklyNote,getAll:p.getAllWeeklyNotes},["Monthly Note"]:{noun:"month",adjective:"monthly",create:p.createMonthlyNote,get:p.getMonthlyNote,getAll:p.getAllMonthlyNotes},["Yearly Note"]:{noun:"year",adjective:"yearly",create:p.createYearlyNote,get:p.getYearlyNote,getAll:p.getAllYearlyNotes}},B=["Daily Note","Weekly Note","Monthly Note","Yearly Note"],We="Date-dependent file",de="Date-dependent notes in Homepage have been removed. Set your Homepage as a Periodic or Daily Note instead.";async function Ve(a,t){let e=t.communityPlugins["periodic-notes"],n=le[a],i=(0,ce.moment)().startOf(n.noun),o;if(je(e)){let s=n.getAll();Object.keys(s).length?o=n.get(i,s)||await n.create(i):o=await n.create(i),o||(o=n.get(i,s))}else e.cache.initialize(),o=e.getPeriodicNote(n.noun,i)||await e.createPeriodicNote(n.noun,i);return D(o)}function Ye(a,t){if(a=="Daily Note"&&t.internalPlugins["daily-notes"]?.enabled)return!0;let e=t.communityPlugins["periodic-notes"];if(!e)return!1;if(je(e)){let n=le[a].adjective;return e.settings[n]?.enabled}else{let n=le[a].noun;return e?.calendarSetManager?.getActiveSet()[n]?.enabled}}function K(a){let t=a.internalPlugins["daily-notes"];return t?.enabled&&t?.instance.options.autorun}function je(a){return(a?.manifest.version||"0").startsWith("0")}function Ue(a){return!!a.plugin.communityPlugins.journals.getJournal(a.data.value)}async function Be(a,t){let e=t.communityPlugins.journals,n=e.getJournal(a),i=n.config.value.autoCreate;e.reprocessNotes(),n.config.value.autoCreate=!0,await n.autoCreate(),n.config.value.autoCreate=i;let o=(0,ce.moment)().locale(Pt).startOf("day");return n.getNotePath(n?.get(o)).replace(/\.md$/,"")}var y=require("obsidian");var h=require("obsidian");var pe=class extends h.AbstractInputSuggest{getSuggestions(e){let n=this.app.vault.getAllLoadedFiles(),i=[],o=e.toLowerCase();return n.forEach(s=>{s instanceof h.TFile&&["md","canvas","base"].contains(s.extension)&&s.path.toLowerCase().contains(o)&&i.push(s)}),i}renderSuggestion(e,n){e.extension=="md"?n.setText(D(e)):(n.setText(e.path.split(".").slice(0,-1).join(".")),n.insertAdjacentHTML("beforeend",``))}selectSuggestion(e){this.textInputEl.value=D(e),this.textInputEl.trigger("input"),this.close()}},ue=class extends h.AbstractInputSuggest{getSuggestions(e){let n=e.toLowerCase();return this.app.vault.getAllFolders().filter(i=>i.path.toLowerCase().contains(n))}renderSuggestion(e,n){n.setText(e.path)}selectSuggestion(e){this.textInputEl.value=e.path,this.textInputEl.trigger("input"),this.close()}},ge=class extends h.AbstractInputSuggest{getSuggestions(e){let n=Object.keys(this.app.internalPlugins.plugins.workspaces?.instance.workspaces),i=e.toLowerCase();return n.filter(o=>o.toLowerCase().contains(i))}renderSuggestion(e,n){n.setText(e)}selectSuggestion(e){this.textInputEl.value=e,this.textInputEl.trigger("input"),this.close()}},me=class extends h.AbstractInputSuggest{getSuggestions(e){let n=this.app.plugins.plugins.journals.journals.map(o=>o.name),i=e.toLowerCase();return n.filter(o=>o.toLowerCase().contains(i))}renderSuggestion(e,n){n.setText(e)}selectSuggestion(e){this.textInputEl.value=e,this.textInputEl.trigger("input"),this.close()}},Ke={["File"]:pe,["Workspace"]:ge,["Random in folder"]:ue,["Journal"]:me},z=class{constructor(t){this.app=t.plugin.app,this.homepage=t.plugin.homepage,this.tab=t,this.container=t.containerEl.createDiv({cls:"nv-command-box"}),this.dropzone=document.createElement("div"),this.dropzone.className="nv-command-pill nv-dropzone",this.dropzone.addEventListener("dragenter",e=>e.preventDefault()),this.dropzone.addEventListener("dragover",e=>e.preventDefault()),this.dropzone.addEventListener("drop",()=>this.terminateDrag()),this.update()}update(){this.container.innerHTML="",this.activeDrag=null,this.activeCommand=null;for(let t of this.homepage.data.commands){let e=this.app.commands.findCommand(t.id),n=this.container.createDiv({cls:"nv-command-pill",attr:{draggable:!0}});n.addEventListener("dragstart",o=>{o.dataTransfer.effectAllowed="move",this.activeCommand=this.homepage.data.commands.splice(this.indexOf(n),1)[0],this.activeDrag=n,this.dropzone.style.width=`${n.clientWidth}px`,this.dropzone.style.height=`${n.clientHeight}px`}),n.addEventListener("dragover",o=>this.moveDropzone(n,o)),n.addEventListener("drop",o=>o.preventDefault()),n.addEventListener("dragend",()=>this.terminateDrag()),n.createSpan({cls:"nv-command-text",text:e?.name??t.id});let i=new h.ButtonComponent(n).setIcon("route").setClass("clickable-icon").setClass("nv-command-period").onClick(o=>this.showMenu(t,o,i));t.period!="Both"&&(i.setClass("nv-command-selected"),i.setIcon(""),i.buttonEl.createSpan({text:t.period})),new h.ButtonComponent(n).setIcon("trash-2").setClass("clickable-icon").setClass("nv-command-delete").onClick(()=>this.delete(t)),e||(n.classList.add("nv-command-invalid"),n.prepend((0,h.getIcon)("ban")),(0,h.setTooltip)(n,"This command can't be found, so it won't be executed. It may belong to a disabled plugin.",{delay:.001}))}new h.ButtonComponent(this.container).setClass("nv-command-add-button").setButtonText("Add...").onClick(()=>{new he(this.tab).open()})}delete(t){this.homepage.data.commands.remove(t),this.homepage.save(),this.update()}showMenu(t,e,n){let i=new h.Menu;for(let s of Object.values(q))i.addItem(c=>{c.setTitle(s),c.setChecked(t.period==s),c.onClick(()=>{t.period=s,this.homepage.save(),this.update()})});let o=n.buttonEl.getBoundingClientRect();i.showAtPosition({x:o.x-22,y:o.y+o.height+8})}indexOf(t){return Array.from(this.container.children).indexOf(t)}moveDropzone(t,e){if(!this.activeDrag)return;this.activeDrag.hidden=!0;let n=t.getBoundingClientRect();e.xawait this.copyDebugInfo()})}sanitiseNote(e){return e===null||e.match(/^\s*$/)!==null?null:(0,y.normalizePath)(e)}display(){let e=this.plugin.homepage.data.kind,n=K(this.plugin),i=!1,o=Ke[e];this.containerEl.empty(),this.elements={};let s=new y.Setting(this.containerEl).setName("Homepage").addDropdown(async r=>{for(let d of Object.values(M)){if(!this.plugin.hasRequiredPlugin(d))if(d==this.plugin.homepage.data.kind)i=!0;else{r.selectEl.createEl("option",{text:d,attr:{disabled:!0}});continue}r.addOption(d,d)}r.setValue(this.plugin.homepage.data.kind),r.onChange(async d=>{this.plugin.homepage.data.kind=d,d=="Random file"&&(this.plugin.homepage.data.value=""),await this.plugin.homepage.save(),this.display()})});s.settingEl.id="nv-main-setting";let c=s.settingEl.createEl("article",{text:Tt[e],attr:{id:"nv-desc"}});i&&c.createDiv({text:"The plugin required for this homepage type isn't available.",cls:"mod-warning"}),ye.includes(e)?s.addText(r=>{r.setDisabled(!0)}):s.addText(r=>{new o(this.app,r.inputEl),r.setPlaceholder(L.value),r.setValue(L.value==this.plugin.homepage.data.value?"":this.plugin.homepage.data.value),r.onChange(async d=>{this.plugin.homepage.data.value=this.sanitiseNote(d)||L.value,await this.plugin.homepage.save()})}),this.addToggle("Open on startup","When launching Obsidian, open the homepage.","openOnStartup",r=>this.display()),n&&(this.elements.openOnStartup.descEl.createDiv({text:`This setting has been disabled, as it isn't compatible with Daily Notes' "Open daily note on startup" functionality. To use it, disable the Daily Notes setting.`,attr:{class:"mod-warning"}}),this.disableSetting("openOnStartup")),this.addToggle("Open when empty","When there are no tabs open, open the homepage.","openWhenEmpty"),this.addToggle("Use when opening normally","Use homepage settings when opening it normally, such as from a link or the file browser.","alwaysApply");let u=new y.Setting(this.containerEl).setName("Separate mobile homepage").setDesc("For mobile devices, store the homepage and its settings separately.").addToggle(r=>r.setValue(this.plugin.settings.separateMobile).onChange(async d=>{this.plugin.settings.separateMobile=d,this.plugin.homepage=this.plugin.getHomepage(),await this.plugin.saveSettings(),this.display()}));if(this.plugin.settings.separateMobile){let r=y.Platform.isMobile?"desktop":"mobile",d=document.createElement("div");u.setClass("nv-mobile-setting"),d.className="mod-warning nv-mobile-info",d.innerHTML=`Mobile settings are stored separately. Therefore, changes to other settings will not affect + ${r} devices. To edit ${r} settings, use a ${r} device.`,u.settingEl.append(d)}this.addHeading("Commands","commandsHeading"),this.containerEl.createDiv({cls:"nv-command-desc setting-item-description",text:"Select commands that will be executed when opening the homepage."}),this.commandBox=new z(this),this.addHeading("Vault environment","vaultHeading"),this.addDropdown("Opening method","Determine how extant tabs and views are affected on startup.","openMode",$),this.addDropdown("Manual opening method","Determine how extant tabs and views are affected when opening with commands or the ribbon button.","manualOpenMode",$),this.addToggle("Pin","Pin the homepage when opening.","pin"),this.addToggle("Hide release notes","Never display release notes when Obsidian updates.","hideReleaseNotes"),this.addToggle("Auto-create","When the homepage doesn't exist, create a note with its name.","autoCreate"),this.elements.autoCreate.descEl.createDiv({text:"If this vault is synced using unofficial services, this may lead to content being overwritten.",cls:"mod-warning"}),this.addHeading("Opened view","paneHeading"),this.addDropdown("Homepage view","Choose what view to open the homepage in.","view",we),this.addToggle("Revert view on close","When navigating away from the homepage, restore the default view.","revertView"),this.addToggle("Auto-scroll","When opening the homepage, scroll to the bottom and focus on the last line.","autoScroll"),"dataview"in this.plugin.communityPlugins&&(this.addToggle("Refresh Dataview","Always attempt to reload Dataview views when opening the homepage.","refreshDataview"),this.elements.refreshDataview.descEl.createDiv({text:"Requires Dataview auto-refresh to be enabled.",attr:{class:"mod-warning"}})),y.Platform.isMobile||new y.ButtonComponent(this.containerEl).setButtonText("Copy debug info").setClass("nv-debug-button").onClick(async()=>await this.copyDebugInfo()),["Workspace","Nothing"].includes(e)&&this.disableSettings("openWhenEmpty","alwaysApply","vaultHeading","openMode","manualOpenMode","autoCreate","pin"),["Workspace","Nothing","Graph view"].includes(e)&&this.disableSettings("paneHeading","view","revertView","autoScroll","refreshDataview"),(!this.plugin.homepage.data.openOnStartup||n)&&this.disableSetting("openMode"),(B.includes(e)||e==="Journal")&&this.disableSetting("autoCreate")}disableSetting(e){this.elements[e]?.settingEl.setAttribute("nv-greyed","")}disableSettings(...e){e.forEach(n=>this.disableSetting(n))}addHeading(e,n){let i=new y.Setting(this.containerEl).setHeading().setName(e);this.elements[n]=i}addDropdown(e,n,i,o,s){let c=new y.Setting(this.containerEl).setName(e).setDesc(n).addDropdown(async u=>{for(let r of Object.values(o))u.addOption(r,r);u.setValue(this.plugin.homepage.data[i]),u.onChange(async r=>{this.plugin.homepage.data[i]=r,await this.plugin.homepage.save(),s&&s(r)})});return this.elements[i]=c,c}addToggle(e,n,i,o){let s=new y.Setting(this.containerEl).setName(e).setDesc(n).addToggle(c=>c.setValue(this.plugin.homepage.data[i]).onChange(async u=>{this.plugin.homepage.data[i]=u,await this.plugin.homepage.save(),o&&o(u)}));return this.elements[i]=s,s}async copyDebugInfo(){let e=this.app.vault.config,n={...this.settings,_defaultViewMode:e.defaultViewMode||"default",_livePreview:e.livePreview!==void 0?e.livePreview:"default",_focusNewTab:e.focusNewTab!==void 0?e.focusNewTab:"default",_plugins:Object.keys(this.plugin.communityPlugins),_internalPlugins:Object.values(this.plugin.internalPlugins).flatMap(i=>i.enabled?[i.instance.id]:[]),_obsidianVersion:window.electron?.ipcRenderer.sendSync("version")||"unknown"};await navigator.clipboard.writeText(JSON.stringify(n)),new y.Notice("Copied homepage debug information to clipboard")}};var Dt=["markdown","canvas","kanban","bases"],V="Main Homepage",Y="Mobile Homepage",$=(n=>(n.ReplaceAll="Replace all open notes",n.ReplaceLast="Replace last note",n.Retain="Keep open notes",n))($||{}),we=(i=>(i.Default="Default view",i.Reading="Reading view",i.Source="Editing view (Source)",i.LivePreview="Editing view (Live Preview)",i))(we||{}),M=(m=>(m.File="File",m.Workspace="Workspace",m.Random="Random file",m.RandomFolder="Random in folder",m.Graph="Graph view",m.None="Nothing",m.Journal="Journal",m.DailyNote="Daily Note",m.WeeklyNote="Weekly Note",m.MonthlyNote="Monthly Note",m.YearlyNote="Yearly Note",m))(M||{}),q=(n=>(n.Both="Both",n.Startup="Startup only",n.Manual="Manual only",n))(q||{}),ye=["Random file","Graph view","Nothing",...B],W=class{constructor(t,e){this.lastView=void 0;this.openedViews=new WeakMap;this.name=t,this.plugin=e,this.app=e.app;let n=this.plugin.settings.homepages[t];n?this.data=Object.assign({},L,n):(this.plugin.settings.homepages[t]={...L},this.data=this.plugin.settings.homepages[t])}async open(t=!1){if(this.plugin.hasRequiredPlugin(this.data.kind)){if(this.data.kind==="Journal"&&!Ue(this)){new v.Notice(`Cannot find the journal "${this.data.value}" to use as the homepage.`);return}}else{new v.Notice("Homepage cannot be opened due to plugin unavailablity.");return}if(this.data.kind==="Workspace")await this.launchWorkspace();else if(this.data.kind!=="Nothing"){let n=this.plugin.loaded?this.data.manualOpenMode:this.data.openMode;t&&(n="Keep open notes"),await this.launchLeaf(n)}if(this.data.commands.length<1)return;let e=this.plugin.loaded?"Startup only":"Manual only";await Te(this.app);for(let{id:n,period:i}of this.data.commands)i!==e&&this.app.commands.executeCommandById(n)}async launchWorkspace(){let t=this.plugin.internalPlugins.workspaces?.instance;if(!(this.data.value in t.workspaces)){new v.Notice(`Cannot find the workspace "${this.data.value}" to use as the homepage.`);return}t.loadWorkspace(this.data.value),await U(100)}async launchLeaf(t){let e;if(this.computedValue=await this.computeValue(),this.plugin.executing=!0,!(K(this.plugin)&&!this.plugin.loaded)){if(t!=="Replace all open notes"){let n=this.getOpened();if(n.length>0){this.app.workspace.setActiveLeaf(n[0]),await this.configure(n[0]);return}else t=="Keep open notes"&&ke(this.app)&&(t="Replace last note")}t!=="Keep open notes"&&this.app.workspace.getActiveViewOfType(v.View)?.leaf.setPinned(!1),t==="Replace all open notes"&&(this.app.workspace?.floatingSplit?.children&&(await U(0),this.app.workspace.floatingSplit.children.forEach(n=>n.win.close())),await Pe(this.app),await U(0)),this.data.kind==="Graph view"?e=await this.launchGraph(t):e=await this.launchNote(t),e&&await this.configure(e)}}async launchGraph(t){if(t==="Keep open notes"){let e=this.app.workspace.getLeaf("tab");this.app.workspace.setActiveLeaf(e)}return this.app.commands.executeCommandById("graph:open"),this.app.workspace.getActiveViewOfType(v.View)?.leaf}async launchNote(t){let e=this.app.metadataCache.getFirstLinkpathDest(this.computedValue,"/");if(!e){if(!this.data.autoCreate){new v.Notice(`Homepage "${this.computedValue}" does not exist.`);return}e=await this.app.vault.create(be(this.computedValue),"")}let n=await this.app.vault.cachedRead(e),i=this.app.workspace.getLeaf(t=="Keep open notes");return await i.openFile(e),this.app.workspace.setActiveLeaf(i),n!==await this.app.vault.read(e)&&await this.app.vault.modify(e,n),i}async configure(t){this.plugin.executing=!1;let e=t.view;if(!(e instanceof v.MarkdownView)){this.data.pin&&e.leaf.setPinned(!0),this.configurePlugins();return}let n=e.getState();if(this.data.revertView&&(this.lastView=new WeakRef(e)),this.data.autoScroll){let i=e.editor.lineCount();n.mode=="preview"?e.previewMode.applyScroll(i-4):(e.editor.setCursor(i),e.editor.focus())}if(this.data.pin&&e.leaf.setPinned(!0),this.data.view!=="Default view"){switch(this.data.view){case"Editing view (Live Preview)":case"Editing view (Source)":n.mode="source",n.source=this.data.view!="Editing view (Live Preview)";break;case"Reading view":n.mode="preview";break}await e.leaf.setViewState({type:"markdown",state:n})}this.configurePlugins()}configurePlugins(){this.plugin.loaded&&this.data.refreshDataview&&this.plugin.communityPlugins.dataview?.index.touch(),this.plugin.communityPlugins["obsidian-file-color"]?.generateColorStyles()}getOpened(){return this.data.kind=="Graph view"?this.app.workspace.getLeavesOfType("graph"):Dt.flatMap(e=>this.app.workspace.getLeavesOfType(e)).filter(e=>{let n=e.view.getState().file;return ee(n.endsWith("md")?n.slice(0,-3):n,this.computedValue)})}async computeValue(){let t=this.data.value,e;switch(this.data.kind){case"Random file":e=X(this.app),e&&(t=e);break;case"Random in folder":e=X(this.app,t),e&&(t=e);break;case"Journal":t=await Be(t,this.plugin);break;case"Daily Note":case"Weekly Note":case"Monthly Note":case"Yearly Note":t=await Ve(this.data.kind,this.plugin);break}return t}async save(){this.plugin.settings.homepages[this.name]=this.data,await this.plugin.saveSettings()}async setToActiveFile(){this.data.value=D(this.app.workspace.getActiveFile()),await this.save(),new v.Notice(`The homepage has been changed to "${this.data.value}".`)}canSetToFile(){return this.app.workspace.getActiveFile()!==null&&!ye.includes(this.data.kind)}async revertView(){if(this.lastView==null||this.data.view=="Default view")return;let t=this.lastView.deref();if(!t||ee(D(t.file),this.computedValue))return;let e=t.getState(),n=this.app.vault.config,i=n.defaultViewMode||"source",o=n.livePreview!==void 0?!n.livePreview:!1;t.leaf.getViewState().type=="markdown"&&(i!=e.mode||o!=e.source)&&(e.mode=i,e.source=o,await t.leaf.setViewState({type:"markdown",state:e,active:!0})),this.lastView=void 0}async openWhenEmpty(){if(!this.plugin.loaded||this.plugin.executing)return;let t=this.app.workspace.getActiveViewOfType(v.View)?.leaf;t?.getViewState().type!=="empty"||t.parentSplit.children.length!=1||await this.open(!0)}async apply(){let t=this.app.workspace.getActiveViewOfType(v.FileView);if(!t)return;let e=D(t.file);this.openedViews.get(t)!==e&&(this.openedViews.set(t,e),e===await this.computeValue()&&this.plugin.loaded&&!this.plugin.executing&&await this.configure(t.leaf))}};var Et='',J=class extends N.Plugin{constructor(){super(...arguments);this.newRelease=!1;this.loaded=!1;this.executing=!1;this.onLayoutChange=async()=>{this.homepage.data.revertView&&await this.homepage.revertView(),this.homepage.data.openWhenEmpty&&await this.homepage.openWhenEmpty(),this.homepage.data.alwaysApply&&await this.homepage.apply()};this.hideInterstitial=()=>{this.interstitial?.detach(),window.removeEventListener("error",this.hideInterstitial)}}async onload(){let e=this.app.workspace.layoutReady;e||this.showInterstitial(),this.patchReleaseNotes(),this.settings=await this.loadSettings(),this.internalPlugins=this.app.internalPlugins.plugins,this.communityPlugins=this.app.plugins.plugins,this.homepage=this.getHomepage(),this.app.workspace.onLayoutReady(async()=>{let n=this.homepage.data.openOnStartup&&!e&&!await this.hasUrlParams();this.patchNewTabPage(),n&&await this.homepage.open(),this.loaded=!0,this.unpatchReleaseNotes(),this.hideInterstitial()}),(0,N.addIcon)("homepage",Et),this.addRibbonIcon("homepage","Open homepage",n=>this.homepage.open(n.button==1||n.button==2||N.Keymap.isModifier(n,"Mod"))).setAttribute("id","nv-homepage-icon"),this.registerEvent(this.app.workspace.on("layout-change",this.onLayoutChange)),this.addSettingTab(new G(this.app,this)),this.addCommand({id:"open-homepage",name:"Open homepage",callback:()=>this.homepage.open()}),this.addCommand({id:"set-to-active-file",name:"Set to active file",checkCallback:n=>{if(n)return this.homepage.canSetToFile();this.homepage.setToActiveFile()}})}async onunload(){this.app.workspace.off("layout-change",this.onLayoutChange),this.unpatchNewTabPage()}getHomepage(){return this.settings.separateMobile&&N.Platform.isMobile?(Y in this.settings.homepages||(this.settings.homepages[Y]={...this.settings.homepages?.[V]},this.settings.homepages[Y].commands=[...this.settings.homepages?.[V]?.commands]),new W(Y,this)):new W(V,this)}async loadSettings(){let e=await this.loadData();return e?.version!==4?e?this.upgradeSettings(e):Object.assign({},fe):e}async saveSettings(){await this.saveData(this.settings)}showInterstitial(){this.interstitial=createDiv({cls:"nv-homepage-interstitial"}),document.body.append(this.interstitial),window.addEventListener("error",this.hideInterstitial)}async hasUrlParams(){let e,n;if(N.Platform.isMobile){let i=await window.Capacitor.Plugins.App.getLaunchUrl();if(!i)return!1;let o=new URL(i.url);n=Array.from(o.searchParams.keys()),e=o.hostname}else if(window.OBS_ACT)n=Object.keys(window.OBS_ACT),e=window.OBS_ACT.action;else return!1;return["open","advanced-uri"].includes(e)&&["file","filepath","workspace"].some(i=>n.includes(i))}hasRequiredPlugin(e){switch(e){case"Workspace":return this.internalPlugins.workspaces?.enabled;case"Graph view":return this.internalPlugins.graph?.enabled;case"Journal":return this.communityPlugins.journals;case"Daily Note":case"Weekly Note":case"Monthly Note":case"Yearly Note":return Ye(e,this);default:return!0}}patchNewTabPage(){let e=this.communityPlugins["new-tab-default-page"];e&&(e.nvOrig_checkForNewTab=e.checkForNewTab,e.checkForNewTab=async n=>{if(!(this&&this.executing))return await e.nvOrig_checkForNewTab(n)})}unpatchNewTabPage(){let e=this.communityPlugins["new-tab-default-page"];e&&(e.checkForNewTab=e._checkForNewTab)}patchReleaseNotes(){this.app.nvOrig_showReleaseNotes=this.app.showReleaseNotes,this.app.showReleaseNotes=()=>this.newRelease=!0}unpatchReleaseNotes(){this.newRelease&&!this.homepage.data.hideReleaseNotes&&this.app.nvOrig_showReleaseNotes(),this.app.showReleaseNotes=this.app.nvOrig_showReleaseNotes}upgradeSettings(e){if(e.version==3){let i=e,o=!1;for(let s of Object.values(i.homepages))s.commands=s.commands.map(c=>({id:c,period:"Both"})),s.kind==We&&(o=!0,s.kind="Daily Note");return o&&new N.Notice(de),i.version=4,this.saveData(i),i}let n=Object.assign({},fe);return e.workspaceEnabled?(e.value=e.workspace,e.kind="Workspace"):e.momentFormat?(e.kind="Daily Note",new N.Notice(de)):(e.value=e.defaultNote,e.kind="File"),e.commands=[],delete e.workspace,delete e.momentFormat,delete e.defaultNote,delete e.useMoment,delete e.workspaceEnabled,n.homepages[V]=e,this.saveData(n),n}}; /* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/homepage/manifest.json b/.obsidian/plugins/homepage/manifest.json index 8f43138..446ab20 100644 --- a/.obsidian/plugins/homepage/manifest.json +++ b/.obsidian/plugins/homepage/manifest.json @@ -1,9 +1,9 @@ { "id": "homepage", "name": "Homepage", - "version": "4.0.7", + "version": "4.2.2", "minAppVersion": "1.4.10", - "description": "Open a specified note, canvas, or workspace on startup, or set it for quick access later.", + "description": "Open a specified note, canvas, base, or workspace on startup, or set it for quick access later.", "author": "novov", "authorUrl": "https://novov.me", "isDesktopOnly": false, diff --git a/.obsidian/plugins/homepage/styles.css b/.obsidian/plugins/homepage/styles.css index 4f36ca3..7e71233 100644 --- a/.obsidian/plugins/homepage/styles.css +++ b/.obsidian/plugins/homepage/styles.css @@ -80,6 +80,12 @@ padding: 5px 0 0; } +.nv-homepage-file-tag { + display: inline-block; + vertical-align: middle; + margin-left: var(--size-2-2); +} + .nv-mobile-setting { flex-wrap: wrap; row-gap: var(--size-2-2); diff --git a/.obsidian/plugins/iconic/main.js b/.obsidian/plugins/iconic/main.js index b1927ed..7a21205 100644 --- a/.obsidian/plugins/iconic/main.js +++ b/.obsidian/plugins/iconic/main.js @@ -4,6 +4,6 @@ If you want to view the source, please visit the GitHub repository of this plugi https://github.com/gfxholo/iconic */ -var He=Object.create;var ae=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var H=(k,a)=>()=>(a||k((a={exports:{}}).exports,a),a.exports),Ge=(k,a)=>{for(var e in a)ae(k,e,{get:a[e],enumerable:!0})},Ee=(k,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of je(a))!qe.call(k,i)&&i!==e&&ae(k,i,{get:()=>a[i],enumerable:!(t=ze(a,i))||t.enumerable});return k};var z=(k,a,e)=>(e=k!=null?He(Ve(k)):{},Ee(a||!k||!k.__esModule?ae(e,"default",{value:k,enumerable:!0}):e,k)),Ke=k=>Ee(ae({},"__esModule",{value:!0}),k);var Ce=H((Si,lt)=>{lt.exports={appItems:{help:"\u0641\u062A\u062D \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",settings:"\u0641\u062A\u062D \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",pin:"\u062A\u062B\u0628\u064A\u062A/\u0625\u0644\u063A\u0627\u0621 \u062A\u062B\u0628\u064A\u062A",sidebarLeft:"\u0637\u064A/\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0627\u0644\u0623\u064A\u0633\u0631",sidebarRight:"\u0637\u064A/\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0627\u0644\u0623\u064A\u0645\u0646",minimize:"\u062A\u0635\u063A\u064A\u0631",maximize:"\u062A\u0643\u0628\u064A\u0631",unmaximize:"\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0627\u0644\u062D\u062C\u0645 \u0627\u0644\u0623\u0635\u0644\u064A",close:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0646\u0627\u0641\u0630\u0629"},menu:{changeIcon:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632...",changeIcons:"\u062A\u063A\u064A\u064A\u0631 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A...",removeIcon:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0631\u0645\u0632",removeIcons:"\u0625\u0632\u0627\u0644\u0629 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A",resetColor:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0644\u0648\u0646",resetColors:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 {#} \u0623\u0644\u0648\u0627\u0646",editRule:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0642\u0627\u0639\u062F\u0629..."},iconPicker:{changeIcon:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632",changeIcons:"\u062A\u063A\u064A\u064A\u0631 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A",changeEmoji:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeEmojis:"\u062A\u063A\u064A\u064A\u0631 {#} \u0631\u0645\u0648\u0632 \u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeMix:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632 / \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeMixes:"\u062A\u063A\u064A\u064A\u0631 {#} \u0631\u0645\u0632 / \u0631\u0645\u0648\u0632 \u062A\u0639\u0628\u064A\u0631\u064A\u0629",overrulePrefix:"\u0642\u0627\u0639\u062F\u062A\u0643 ",overruleSuffix:" \u062A\u062A\u062C\u0627\u0648\u0632 \u0647\u0630\u0647 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0629 .",overrules:"\u0643\u062A\u0627\u0628 \u0642\u0648\u0627\u0639\u062F\u0643 \u064A\u062A\u062C\u0627\u0648\u0632 \u0628\u0639\u0636 \u0647\u0630\u0647 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A.",search:"\u0628\u062D\u062B",searchIcons:"\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",searchEmojis:"\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",searchMix:"\u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 / \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",changeColor:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0644\u0648\u0646",resetColor:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0644\u0648\u0646",removeIcon:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0631\u0645\u0632",icons:"\u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A",emojis:"\u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",mixed:"\u0645\u062E\u062A\u0644\u0637",cancel:"\u0625\u0644\u063A\u0627\u0621",save:"\u062D\u0642\u0638",colors:{red:"\u0623\u062D\u0645\u0631",orange:"\u0628\u0631\u062A\u0642\u0627\u0644\u064A",yellow:"\u0623\u0635\u0641\u0631",green:"\u0623\u062E\u0636\u0631",cyan:"\u0633\u0645\u0627\u0648\u064A",blue:"\u0623\u0632\u0631\u0642",purple:"\u0623\u0631\u062C\u0648\u0627\u0646\u064A",pink:"\u0648\u0631\u062F\u064A",gray:"\u0631\u0645\u0627\u062F\u064A"}},categories:{item:"\u063A\u0631\u0636",items:"\u0623\u063A\u0631\u0627\u0636",appItem:"\u0632\u0631",appItems:"\u0623\u0632\u0631\u0627\u0631",tab:"\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",tabs:"\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",file:"\u0645\u0644\u0641",files:"\u0645\u0644\u0641\u0627\u062A",folder:"\u0645\u062C\u0644\u062F",folders:"\u0645\u062C\u0644\u062F\u0627\u062A",group:"\u0645\u062C\u0645\u0648\u0639\u0629",groups:"\u0645\u062C\u0645\u0648\u0639\u0627\u062A",search:"\u0627\u0633\u062A\u0639\u0644\u0627\u0645",searches:"\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A",graph:"\u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",graphs:"\u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u0628\u064A\u0627\u0646\u064A\u0629",url:"\u0631\u0627\u0628\u0637",urls:"\u0631\u0648\u0627\u0628\u0637",tag:"\u0648\u0633\u0645",tags:"\u0627\u0644\u0648\u0633\u0648\u0645",property:"\u062E\u0627\u0635\u064A\u0629",properties:"\u062E\u0627\u0635\u064A\u0627\u062A ",ribbonItem:"\u0623\u0645\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",ribbonItems:"\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",rule:"\u0627\u0644\u0642\u0627\u0639\u062F\u0629",rules:"\u0627\u0644\u0642\u0648\u0627\u0639\u062F"},rulePicker:{selectPage:"\u0627\u062E\u062A\u0631 \u0635\u0641\u062D\u0629",fileRules:"\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0645\u0644\u0641",folderRules:"\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0645\u062C\u0644\u062F",rules:"\u0627\u0644\u0642\u0648\u0627\u0639\u062F",addRule:"\u0625\u0636\u0627\u0641\u0629 \u0642\u0627\u0639\u062F\u0629",editRule:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",removeRule:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",untitledRule:"\u0642\u0627\u0639\u062F\u0629 \u0628\u0644\u0627 \u0639\u0646\u0648\u0627\u0646",drag:"\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628"},ruleEditor:{fileRule:"\u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0645\u0644\u0641",folderRule:"\u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0645\u062C\u0644\u062F",conditions:"\u0627\u0644\u0634\u0631\u0648\u0637",addCondition:"\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637",resetCondition:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0634\u0631\u0637",removeCondition:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637",removeRule:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",buttonMatch:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0648\u0627\u062D\u062F\u0629",buttonMatches:"{#} \u062A\u0637\u0627\u0628\u0642\u0627\u062A",buttonNoMatches:"\u0644\u0627 \u062A\u0637\u0627\u0628\u0642\u0627\u062A",enterName:"\u0623\u0639\u0637 \u0647\u0630\u0647 \u0627\u0644\u0642\u0627\u0639\u062F\u0629 \u0627\u0633\u0645\u064B\u0627",enterValue:"\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629",enterRegex:"\u0623\u062F\u062E\u0644 \u062A\u0639\u0628\u064A\u0631\u064B\u0627 \u0639\u0627\u062F\u064A\u064B\u0627",enterHexCode:"\u0623\u062F\u062E\u0644 \u0631\u0645\u0632\u064B\u0627 \u0633\u062F\u0627\u0633\u064A \u0639\u0634\u0631\u064A\u064B\u0627",enterNumber:"\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627",matchConditions:{name:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0634\u0631\u0648\u0637",desc:"\u0627\u062E\u062A\u0631 \u0639\u062F\u062F \u0627\u0644\u0634\u0631\u0648\u0637 \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629",all:"\u0627\u0644\u0643\u0644",any:"\u0623\u064A",none:"\u0644\u0627 \u0634\u064A\u0621"},source:{icon:"\u0627\u0644\u0631\u0645\u0632",color:"\u0627\u0644\u0644\u0648\u0646",name:"\u0627\u0644\u0627\u0633\u0645",filename:"\u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641",extension:"\u0627\u0644\u0627\u0645\u062A\u062F\u0627\u062F",tree:"\u0634\u062C\u0631\u0629 \u0627\u0644\u0645\u062C\u0644\u062F",path:"\u0627\u0644\u0645\u0633\u0627\u0631 \u0641\u064A \u0627\u0644\u0645\u062E\u0632\u0646",headings:"\u0627\u0644\u0639\u0646\u0627\u0648\u064A\u0646",links:"\u0627\u0644\u0631\u0648\u0627\u0628\u0637",tags:"\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",properties:"\u0627\u0644\u062E\u0635\u0627\u0626\u0635...",created:"\u0648\u0642\u062A \u0627\u0644\u0625\u0646\u0634\u0627\u0621",modified:"\u0648\u0642\u062A \u0627\u0644\u062A\u0639\u062F\u064A\u0644",clock:"\u0633\u0627\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645"},operator:{is:"\u0647\u0648","!is":"\u0644\u064A\u0633",contains:"\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",startsWith:"\u064A\u0628\u062F\u0623 \u0628\u0640",endsWith:"\u064A\u0646\u062A\u0647\u064A \u0628\u0640",matches:"\u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A","!contains":"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649","!startsWith":"\u0644\u0627 \u064A\u0628\u062F\u0623 \u0628\u0640","!endsWith":"\u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0628\u0640","!matches":"\u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",includes:"\u064A\u0634\u0645\u0644 \u0627\u0644\u0639\u0646\u0635\u0631","!includes":"\u0644\u0627 \u064A\u0634\u0645\u0644 \u0627\u0644\u0639\u0646\u0635\u0631",allAre:"\u062C\u0645\u064A\u0639\u0647\u0627 \u0647\u064A",allContain:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",allStartWith:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u0628\u062F\u0623 \u0628\u0640",allEndWith:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u0646\u062A\u0647\u064A \u0628\u0640",allMatch:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",anyContain:"\u0623\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",anyStartWith:"\u0623\u064A \u064A\u0628\u062F\u0623 \u0628\u0640",anyEndWith:"\u0623\u064A \u064A\u0646\u062A\u0647\u064A \u0628\u0640",anyMatch:"\u0623\u064A \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",noneContain:"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0623\u064A \u0645\u0646\u0647\u0627 \u0639\u0644\u0649",noneStartWith:"\u0644\u0627 \u064A\u0628\u062F\u0623 \u0623\u064A \u0645\u0646\u0647\u0627 \u0628\u0640",noneEndWith:"\u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0623\u064A \u0645\u0646\u0647\u0627 \u0628\u0640",noneMatch:"\u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0623\u064A \u0645\u0646\u0647\u0627 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",countIs:"\u0627\u0644\u0639\u062F\u062F \u0647\u0648","!countIs":"\u0627\u0644\u0639\u062F\u062F \u0644\u064A\u0633",countIsLess:"\u0627\u0644\u0639\u062F\u062F \u0623\u0642\u0644 \u0645\u0646",countIsMore:"\u0627\u0644\u0639\u062F\u062F \u0623\u0643\u0628\u0631 \u0645\u0646",isTrue:"\u0647\u0648 \u0635\u062D\u064A\u062D","!isTrue":"\u0644\u064A\u0633 \u0635\u062D\u064A\u062D\u064B\u0627",isFalse:"\u0647\u0648 \u062E\u0627\u0637\u0626","!isFalse":"\u0644\u064A\u0633 \u062E\u0627\u0637\u0626\u064B\u0627",equals:"\u064A\u0633\u0627\u0648\u064A","!equals":"\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",isLess:"\u0623\u0642\u0644 \u0645\u0646",isMore:"\u0623\u0643\u062B\u0631 \u0645\u0646",isDivisible:"\u0642\u0627\u0628\u0644 \u0644\u0644\u0642\u0633\u0645\u0629 \u0639\u0644\u0649","!isLess":"\u0644\u064A\u0633 \u0623\u0642\u0644 \u0645\u0646","!isMore":"\u0644\u064A\u0633 \u0623\u0643\u062B\u0631 \u0645\u0646","!isDivisible":"\u0644\u064A\u0633 \u0642\u0627\u0628\u0644\u064B\u0627 \u0644\u0644\u0642\u0633\u0645\u0629 \u0639\u0644\u0649",isBefore:"\u0642\u0628\u0644",isAfter:"\u0628\u0639\u062F",isNow:"\u0627\u0644\u0622\u0646","!isNow":"\u0644\u064A\u0633 \u0627\u0644\u0622\u0646",isBeforeNow:"\u0642\u0628\u0644 \u0627\u0644\u0622\u0646",isAfterNow:"\u0628\u0639\u062F \u0627\u0644\u0622\u0646",timeIs:"\u0627\u0644\u0648\u0642\u062A \u0647\u0648","!timeIs":"\u0627\u0644\u0648\u0642\u062A \u0644\u064A\u0633",timeIsBefore:"\u0627\u0644\u0648\u0642\u062A \u0642\u0628\u0644",timeIsAfter:"\u0627\u0644\u0648\u0642\u062A \u0628\u0639\u062F",timeIsNow:"\u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0622\u0646","!timeIsNow":"\u0627\u0644\u0648\u0642\u062A \u0644\u064A\u0633 \u0627\u0644\u0622\u0646",timeIsBeforeNow:"\u0627\u0644\u0648\u0642\u062A \u0642\u0628\u0644 \u0627\u0644\u0622\u0646",timeIsAfterNow:"\u0627\u0644\u0648\u0642\u062A \u0628\u0639\u062F \u0627\u0644\u0622\u0646",dateIs:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0647\u0648","!dateIs":"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0644\u064A\u0633",dateIsBefore:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0642\u0628\u0644",dateIsAfter:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0628\u0639\u062F",isToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0647\u0648 \u0627\u0644\u064A\u0648\u0645","!isToday":"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0644\u064A\u0633 \u0627\u0644\u064A\u0648\u0645",isBeforeToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0642\u0628\u0644 \u0627\u0644\u064A\u0648\u0645",isAfterToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0628\u0639\u062F \u0627\u0644\u064A\u0648\u0645",isLessDaysAgo:"\u0623\u0642\u0644 \u0645\u0646 X \u064A\u0648\u0645 \u0645\u0636\u0649",isLessDaysAway:"\u0623\u0642\u0644 \u0645\u0646 X \u064A\u0648\u0645 \u0628\u0639\u064A\u062F\u064B\u0627",isMoreDaysAgo:"\u0623\u0643\u062B\u0631 \u0645\u0646 X \u064A\u0648\u0645 \u0645\u0636\u0649",isMoreDaysAway:"\u0623\u0643\u062B\u0631 \u0645\u0646 X \u064A\u0648\u0645 \u0628\u0639\u064A\u062F\u064B\u0627",weekdayIs:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0647\u0648","!weekdayIs":"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0644\u064A\u0633",weekdayIsBefore:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0642\u0628\u0644",weekdayIsAfter:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0628\u0639\u062F",monthdayIs:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0647\u0648","!monthdayIs":"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0644\u064A\u0633",monthdayIsBefore:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0642\u0628\u0644",monthdayIsAfter:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0628\u0639\u062F",monthIs:"\u0627\u0644\u0634\u0647\u0631 \u0647\u0648","!monthIs":"\u0627\u0644\u0634\u0647\u0631 \u0644\u064A\u0633",monthIsBefore:"\u0627\u0644\u0634\u0647\u0631 \u0642\u0628\u0644",monthIsAfter:"\u0627\u0644\u0634\u0647\u0631 \u0628\u0639\u062F",yearIs:"\u0627\u0644\u0633\u0646\u0629 \u0647\u064A","!yearIs":"\u0627\u0644\u0633\u0646\u0629 \u0644\u064A\u0633\u062A",yearIsBefore:"\u0627\u0644\u0633\u0646\u0629 \u0642\u0628\u0644",yearIsAfter:"\u0627\u0644\u0633\u0646\u0629 \u0628\u0639\u062F",iconIs:"\u0645\u0639\u0631\u0641 \u0647\u0648","!iconIs":"\u0627\u0644\u0645\u0639\u0631\u0641 \u0644\u064A\u0633",nameIs:"\u0627\u0644\u0627\u0633\u0645 \u0647\u0648","!nameIs":"\u0627\u0644\u0627\u0633\u0645 \u0644\u064A\u0633",nameContains:"\u0627\u0644\u0627\u0633\u0645 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",nameStartsWith:"\u0627\u0644\u0627\u0633\u0645 \u064A\u0628\u062F\u0623 \u0628\u0640",nameEndsWith:"\u0627\u0644\u0627\u0633\u0645 \u064A\u0646\u062A\u0647\u064A \u0628\u0640",nameMatches:"\u0627\u0644\u0627\u0633\u0645 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A","!nameContains":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649","!nameStartsWith":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u0628\u062F\u0623 \u0628\u0640","!nameEndsWith":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0628\u0640","!nameMatches":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",colorIs:"\u0647\u0648 \u0627\u0644\u0644\u0648\u0646","!colorIs":"\u0644\u064A\u0633 \u0627\u0644\u0644\u0648\u0646",hexIs:"\u0631\u0645\u0632 \u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0633\u062F\u0627\u0633\u064A \u0647\u0648","!hexIs":"\u0631\u0645\u0632 \u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0633\u062F\u0627\u0633\u064A \u0644\u064A\u0633",hasValue:"\u0644\u062F\u064A\u0647 \u0642\u064A\u0645\u0629","!hasValue":"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0642\u064A\u0645\u0629",hasProperty:"\u0627\u0644\u062E\u0627\u0635\u064A\u0629 \u0645\u0648\u062C\u0648\u062F\u0629","!hasProperty":"\u0627\u0644\u062E\u0627\u0635\u064A\u0629 \u0645\u0641\u0642\u0648\u062F\u0629"},weekday:{"1":"\u0627\u0644\u0627\u062B\u0646\u064A\u0646","2":"\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621","3":"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","4":"\u0627\u0644\u062E\u0645\u064A\u0633","5":"\u0627\u0644\u062C\u0645\u0639\u0629","6":"\u0627\u0644\u0633\u0628\u062A","7":"\u0627\u0644\u0623\u062D\u062F"},month:{"1":"\u064A\u0646\u0627\u064A\u0631","2":"\u0641\u0628\u0631\u0627\u064A\u0631","3":"\u0645\u0627\u0631\u0633","4":"\u0623\u0628\u0631\u064A\u0644","5":"\u0645\u0627\u064A\u0648","6":"\u064A\u0648\u0646\u064A\u0648","7":"\u064A\u0648\u0644\u064A\u0648","8":"\u0623\u063A\u0633\u0637\u0633","9":"\u0633\u0628\u062A\u0645\u0628\u0631","10":"\u0623\u0643\u062A\u0648\u0628\u0631","11":"\u0646\u0648\u0641\u0645\u0628\u0631","12":"\u062F\u064A\u0633\u0645\u0628\u0631"}},ruleChecker:{fileMatch:"\u0645\u0644\u0641 \u0648\u0627\u062D\u062F \u0645\u0637\u0627\u0628\u0642",folderMatch:"\u0645\u062C\u0644\u062F \u0648\u0627\u062D\u062F \u0645\u0637\u0627\u0628\u0642",filesMatch:"{#} \u0645\u0644\u0641\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629",foldersMatch:"{#} \u0645\u062C\u0644\u062F \u0645\u0637\u0627\u0628\u0642",highlight:"\u062A\u0633\u0644\u064A\u0637 \u0627\u0644\u0636\u0648\u0621",headingMatches:"\u0645\u0637\u0627\u0628\u0642\u0627\u062A"},commands:{openRulebook:"\u0641\u062A\u062D \u0643\u062A\u0627\u0628 \u0627\u0644\u0642\u0648\u0627\u0639\u062F",toggleBiggerIcons:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0623\u0643\u0628\u0631",toggleClickableIcons:{desktop:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0646\u0642\u0631",mobile:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0645\u0633"},toggleAllFileIcons:"\u062A\u0628\u062F\u064A\u0644 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A",toggleAllFolderIcons:"\u062A\u0628\u062F\u064A\u0644 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F",toggleMinimalFolderIcons:"\u062A\u0628\u062F\u064A\u0644 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0628\u0633\u064A\u0637\u0629",toggleBiggerSearchResults:"\u062A\u0628\u062F\u064A\u0644 \u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u0623\u0643\u0628\u0631",changeIconCurrentFile:"\u062A\u063A\u064A\u064A\u0631 \u0623\u064A\u0642\u0648\u0646\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u062D\u0627\u0644\u064A"},settings:{values:{on:"\u0627\u0644\u062C\u0648\u0627\u0644",off:"\u0625\u064A\u0642\u0627\u0641",desktop:"\u0633\u0637\u062D \u0627\u0644\u0645\u0643\u062A\u0628 \u0641\u0642\u0637",mobile:"\u0627\u0644\u062C\u0648\u0627\u0644 \u0641\u0642\u0637",list:"\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646",rgb:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0623\u0644\u0648\u0627\u0646 RGB"},rulebook:{name:"\u0643\u062A\u0627\u0628 \u0627\u0644\u0642\u0648\u0627\u0639\u062F",desc:"\u0625\u0639\u062F\u0627\u062F \u0642\u0648\u0627\u0639\u062F \u062A\u0644\u0642\u0627\u0626\u064A\u0629 \u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A.",manage:"\u0625\u062F\u0627\u0631\u0629"},headingSidebarAndTabIcons:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0648\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",biggerIcons:{name:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631 \u0645\u0646 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A\u0629."},clickableIcons:{nameDesktop:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0646\u0642\u0631",nameMobile:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0645\u0633",descDesktop:"\u0627\u0646\u0642\u0631 \u0641\u0648\u0642 \u0623\u064A\u0642\u0648\u0646\u0629 \u0644\u0641\u062A\u062D \u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A.",descMobile:"\u0627\u0646\u0642\u0631 \u0641\u0648\u0642 \u0623\u064A\u0642\u0648\u0646\u0629 \u0644\u0641\u062A\u062D \u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A."},showAllFileIcons:{name:"\u0625\u0638\u0647\u0627\u0631 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u0644\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0623\u064A\u0642\u0648\u0646\u0629 \u0645\u062E\u0635\u0635\u0629."},showAllFolderIcons:{name:"\u0625\u0638\u0647\u0627\u0631 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u062A\u064A \u0644\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0623\u064A\u0642\u0648\u0646\u0629 \u0645\u062E\u0635\u0635\u0629."},minimalFolderIcons:{name:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0628\u0633\u064A\u0637\u0629",desc:"\u0627\u0633\u062A\u0628\u062F\u0644 \u0623\u0633\u0647\u0645 \u0627\u0644\u0645\u062C\u0644\u062F \u0628\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643."},headingIconPicker:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A",showItemName:{name:"\u0625\u0638\u0647\u0627\u0631 \u0627\u0633\u0645 \u0627\u0644\u0639\u0646\u0635\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0627\u0633\u0645 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0630\u064A \u064A\u062A\u0645 \u062A\u062D\u0631\u064A\u0631\u0647."},biggerSearchResults:{name:"\u0646\u062A\u0627\u0626\u062C \u0628\u062D\u062B \u0623\u0643\u0628\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631 \u0641\u064A \u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B."},maxSearchResults:{name:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B",desc:"\u0627\u062E\u062A\u0631 \u0639\u062F\u062F \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u064A \u062A\u0631\u064A\u062F \u0639\u0631\u0636\u0647\u0627 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629."},colorPicker1:{name:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",descDesktop:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0646\u0642\u0631 \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646.",descMobile:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0644\u0645\u0633 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646."},colorPicker2:{name:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629",descDesktop:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0646\u0642\u0631 \u0627\u0644\u062B\u0627\u0646\u0648\u064A \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646.",descMobile:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0636\u063A\u0637 \u0645\u0639 \u0627\u0644\u0627\u0633\u062A\u0645\u0631\u0627\u0631 \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646."},headingAdvanced:"\u0645\u062A\u0642\u062F\u0645",uncolorHover:{name:"\u062A\u062D\u0648\u0645 \u0639\u062F\u064A\u0645\u0629 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0645\u0631\u064A\u0631 \u0641\u0648\u0642 \u0639\u0646\u0635\u0631."},uncolorDrag:{name:"\u0633\u062D\u0628 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u0633\u062D\u0628 \u0639\u0646\u0635\u0631."},uncolorSelect:{name:"\u0627\u062E\u062A\u064A\u0627\u0631 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0639\u0646\u0635\u0631."},uncolorQuick:{name:"\u0632\u0631 \u0634\u0631\u064A\u0637 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0644\u0632\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0644\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0633\u0631\u064A\u0639 \u0639\u0644\u0649 \u0627\u0644\u0647\u0627\u062A\u0641 \u0627\u0644\u0645\u062D\u0645\u0648\u0644."},rememberDeletedItems:{name:"\u062A\u0630\u0643\u0631 \u0631\u0645\u0648\u0632 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062D\u0630\u0648\u0641\u0629",desc:"\u0633\u062A\u0638\u0647\u0631 \u0623\u064A\u0629 \u0631\u0645\u0648\u0632 \u0645\u062E\u0635\u0635\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0639\u0646\u062F \u0648\u062C\u0648\u062F \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u062E\u0627\u0635 \u0628\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649."}}}});var Se=H((xi,ct)=>{ct.exports={appItems:{help:"Hilfe \xF6ffnen",settings:"Einstellungen \xF6ffnen",pin:"Pin umschalten",sidebarLeft:"Linke Seitenleiste umschalten",sidebarRight:"Rechte Seitenleiste umschalten",minimize:"Minimieren",maximize:"Maximieren",unmaximize:"Kleines Fenster wiederherstellen",close:"Fenster schlie\xDFen"},menu:{changeIcon:"Symbol \xE4ndern...",changeIcons:"{#} Symbole \xE4ndern...",removeIcon:"Symbol entfernen",removeIcons:"{#} Symbole entfernen",resetColor:"Farbe zur\xFCcksetzen",resetColors:"{#} Farben zur\xFCcksetzen",editRule:"Regel bearbeiten..."},iconPicker:{changeIcon:"Symbol \xE4ndern",changeIcons:"{#} Symbole \xE4ndern",changeEmoji:"Emoji \xE4ndern",changeEmojis:"{#} Emojis \xE4ndern",changeMix:"Symbol/Emoji \xE4ndern",changeMixes:"{#} Symbole/Emojis \xE4ndern",overrulePrefix:"Ihre Regel ",overruleSuffix:" \xFCberschreibt dieses Symbol.",overrules:"Ihr Regelbuch \xFCberschreibt einige dieser Symbole.",search:"Suchen",searchIcons:"Symbole suchen...",searchEmojis:"Emojis suchen...",searchMix:"Symbole/Emojis suchen...",changeColor:"Farbe \xE4ndern",resetColor:"Farbe zur\xFCcksetzen",removeIcon:"Symbol entfernen",icons:"Symbole",emojis:"Emojis",mixed:"Gemischt",cancel:"Entfernen",save:"Abbrechen",colors:{red:"Rot",orange:"Orange",yellow:"Gelb",green:"Gr\xFCn",cyan:"Cyan",blue:"Blau",purple:"Violett",pink:"Rosa",gray:"Grau"}},categories:{item:"Element",items:"Elemente",appItem:"Schaltfl\xE4che",appItems:"Schaltfl\xE4chen",tab:"Tab",tabs:"Tabs",file:"Datei",files:"Dateien",folder:"Ordner",folders:"Ordner",group:"Gruppe",groups:"Gruppen",search:"Abfrage",searches:"Abfragen",graph:"Graph",graphs:"Graphen",url:"URL",urls:"URLs",tag:"Tag",tags:"Tags",property:"Property",properties:"Properties",ribbonItem:"Sidebar-Befehl",ribbonItems:"Sidebar-Befehle",rule:"Regel",rules:"Regeln"},rulePicker:{selectPage:"Seite ausw\xE4hlen",fileRules:"Dateiregeln",folderRules:"Ordnerregeln",rules:"Regeln",addRule:"Regel hinzuf\xFCgen",editRule:"Regel bearbeiten",removeRule:"Regel entfernen",untitledRule:"Regel ohne Titel",drag:"Zum Umordnen ziehen"},ruleEditor:{fileRule:"Dateiregel",folderRule:"Ordnerregel",conditions:"Bedingungen",addCondition:"Bedingung hinzuf\xFCgen",resetCondition:"Bedingung zur\xFCcksetzen",removeCondition:"Bedingung entfernen",removeRule:"Regel entfernen",buttonMatch:"1 \xDCbereinstimmung",buttonMatches:"{#} \xDCbereinstimmungen",buttonNoMatches:"Keine \xDCbereinstimmungen",enterName:"Dieser Regel einen Namen geben",enterValue:"Einen Wert eingeben",enterRegex:"Einen regul\xE4ren Ausdruck eingeben",enterHexCode:"Einen #Hexcode eingeben",enterNumber:"Eine Zahl eingeben",matchConditions:{name:"\xDCbereinstimmungsbedingungen",desc:"W\xE4hlen Sie aus, wie viele Bedingungen \xFCbereinstimmen m\xFCssen.",all:"Alle",any:"Beliebige",none:"Keine"},source:{icon:"Symbol",color:"Farbe",name:"Name",filename:"Dateiname",extension:"Erweiterung",tree:"Ordnerbaum",path:"Pfad im Tresor",headings:"\xDCberschriften",links:"Links",tags:"Tags",properties:"Eigenschaften...",created:"Erstellungsdatum",modified:"\xC4nderungsdatum",clock:"Systemuhr"},operator:{is:"ist","!is":"ist nicht",contains:"enth\xE4lt",startsWith:"beginnt mit",endsWith:"endet mit",matches:"entspricht Regex","!contains":"enth\xE4lt nicht","!startsWith":"beginnt nicht mit","!endsWith":"endet nicht mit","!matches":"entspricht Regex nicht",includes:"enth\xE4lt Element","!includes":"enth\xE4lt kein Element",allAre:"alle sind",allContain:"alle enthalten",allStartWith:"alle beginnen mit",allEndWith:"alle enden mit",allMatch:"alle entsprechen Regex",anyContain:"beliebig enthalten",anyStartWith:"beliebig beginnen mit",anyEndWith:"beliebig enden mit",anyMatch:"beliebig entspricht Regex",noneContain:"keine enthalten",noneStartWith:"keine beginnen mit",noneEndWith:"keine enden mit",noneMatch:"keine \xDCbereinstimmung mit Regex",countIs:"Anzahl ist","!countIs":"Anzahl ist nicht",countIsLess:"Anzahl ist kleiner als",countIsMore:"Anzahl ist gr\xF6\xDFer als",isTrue:"ist wahr","!isTrue":"ist nicht wahr",isFalse:"ist falsch","!isFalse":"ist nicht falsch",equals:"gleich","!equals":"ist nicht gleich",isLess:"ist kleiner als",isMore:"ist gr\xF6\xDFer als",isDivisible:"ist teilbar durch","!isLess":"ist nicht kleiner als","!isMore":"ist nicht gr\xF6\xDFer als","!isDivisible":"ist nicht teilbar durch",isBefore:"ist vor",isAfter:"ist nach",isNow:"ist jetzt","!isNow":"ist nicht jetzt",isBeforeNow:"ist vor jetzt",isAfterNow:"ist nach jetzt",timeIs:"Zeit ist","!timeIs":"Zeit ist nicht",timeIsBefore:"Zeit ist vor",timeIsAfter:"Zeit ist nach",timeIsNow:"Zeit ist jetzt","!timeIsNow":"Zeit ist nicht jetzt",timeIsBeforeNow:"Zeit ist vor jetzt",timeIsAfterNow:"Zeit ist nach jetzt",dateIs:"Datum ist","!dateIs":"Datum ist nicht",dateIsBefore:"Datum ist vor",dateIsAfter:"Datum ist nach",isToday:"Datum ist heute","!isToday":"Datum ist nicht heute",isBeforeToday:"Datum ist vor heute",isAfterToday:"Datum ist nach heute",isLessDaysAgo:"ist weniger als X Tage her",isLessDaysAway:"ist weniger als X Tage entfernt",isMoreDaysAgo:"ist mehr als X Tage her",isMoreDaysAway:"ist mehr als X Tage entfernt",weekdayIs:"Wochentag ist","!weekdayIs":"Wochentag ist nicht",weekdayIsBefore:"Wochentag ist vor",weekdayIsAfter:"Wochentag ist nach",monthdayIs:"Tag des Monats ist","!monthdayIs":"Tag des Monats ist nicht",monthdayIsBefore:"Tag des Monats ist vor",monthdayIsAfter:"Tag des Monats ist nach",monthIs:"Monatstag ist","!monthIs":"Monat ist nicht",monthIsBefore:"Monat ist vor",monthIsAfter:"Monat ist nach",yearIs:"Jahr ist","!yearIs":"Jahr ist nicht",yearIsBefore:"Jahr ist vor",yearIsAfter:"Jahr ist nach",iconIs:"ID ist","!iconIs":"ID ist nicht",nameIs:"Name ist","!nameIs":"Name ist nicht",nameContains:"Name enth\xE4lt",nameStartsWith:"Name beginnt mit",nameEndsWith:"Name endet mit",nameMatches:"Name entspricht Regex","!nameContains":"Name enth\xE4lt nicht","!nameStartsWith":"Name beginnt nicht mit","!nameEndsWith":"Name endet nicht mit","!nameMatches":"Name entspricht nicht Regex",colorIs:"ist","!colorIs":"ist nicht",hexIs:"Hexcode ist","!hexIs":"Hexcode ist nicht",hasValue:"hat einen beliebigen Wert","!hasValue":"hat keinen Wert",hasProperty:"Eigenschaft vorhanden","!hasProperty":"Eigenschaft fehlt"},weekday:{"1":"Montag","2":"Dienstag","3":"Mittwoch","4":"Donnerstag","5":"Freitag","6":"Samstag","7":"Sonntag"},month:{"1":"Januar","2":"Februar","3":"M\xE4rz","4":"April","5":"Mai","6":"Juni","7":"Juli","8":"August","9":"September","10":"Oktober","11":"November","12":"Dezember"}},ruleChecker:{fileMatch:"1 passende Datei",folderMatch:"1 passender Ordner",filesMatch:"{#} passende Dateien",foldersMatch:"{#} passende Ordner",highlight:"Hervorheben",headingMatches:"\xDCbereinstimmungen"},commands:{openRulebook:"Regelbuch \xF6ffnen",toggleBiggerIcons:"Gr\xF6\xDFere Symbole umschalten",toggleClickableIcons:{desktop:"Klickbare Symbole umschalten",mobile:"Tippbare Symbole umschalten"},toggleAllFileIcons:"Alle Dateisymbole umschalten",toggleAllFolderIcons:"Alle Ordnersymbole umschalten",toggleMinimalFolderIcons:"Minimale Ordnersymbole umschalten",toggleBiggerSearchResults:"Gr\xF6\xDFere Suchergebnisse umschalten",changeIconCurrentFile:"Symbol der aktuellen Datei \xE4ndern"},settings:{values:{on:"Ein",off:"Aus",desktop:"Nur Desktop",mobile:"Nur Mobilger\xE4t",list:"Farbliste",rgb:"RGB-Auswahl"},rulebook:{name:"Regelbuch",desc:"Automatisierte Regeln f\xFCr Datei- und Ordnersymbole einrichten.",manage:"Verwalten"},headingSidebarAndTabIcons:"Seitenleisten- und Registerkartensymbole",biggerIcons:{name:"Gr\xF6\xDFere Symbole",desc:"Gr\xF6\xDFere Symbole als die Standard-Benutzeroberfl\xE4che anzeigen."},clickableIcons:{nameDesktop:"Anklickbare Symbole",nameMobile:"Tippbare Symbole",descDesktop:"Klicken Sie auf ein Symbol, um die Symbolauswahl zu \xF6ffnen.",descMobile:"Tippen Sie auf ein Symbol, um die Symbolauswahl zu \xF6ffnen."},showAllFileIcons:{name:"Alle Dateisymbole anzeigen",desc:"Symbole f\xFCr Dateien anzeigen, die kein benutzerdefiniertes Symbol haben."},showAllFolderIcons:{name:"Alle Ordnersymbole anzeigen",desc:"Symbole f\xFCr Ordner anzeigen, die kein benutzerdefiniertes Symbol haben."},minimalFolderIcons:{name:"Minimale Ordnersymbole",desc:"Ordnerpfeile durch Ihre Ordnersymbole ersetzen."},headingIconPicker:"Symbolauswahl",showItemName:{name:"Elementnamen anzeigen",desc:"Den Namen des bearbeiteten Elements anzeigen."},biggerSearchResults:{name:"Gr\xF6\xDFere Suchergebnisse",desc:"Gr\xF6\xDFere Symbole in Suchergebnissen anzeigen."},maxSearchResults:{name:"Maximale Suchergebnisse",desc:"W\xE4hlen Sie aus, wie viele Symbole gleichzeitig angezeigt werden sollen."},colorPicker1:{name:"Hauptfarbauswahl",descDesktop:"Erscheint, wenn Sie auf die Farbblase klicken.",descMobile:"Erscheint, wenn Sie die Farbblase ber\xFChren."},colorPicker2:{name:"Zweiter Farbw\xE4hler",descDesktop:"Erscheint, wenn Sie mit der rechten Maustaste auf die Farbblase klicken.",descMobile:"Erscheint, wenn Sie die Farbblase gedr\xFCckt halten."},headingAdvanced:"Erweitert",uncolorHover:{name:"Farbloses Hovern",desc:"Symbolfarbe deaktivieren, w\xE4hrend \xFCber einem Element schwebt."},uncolorDrag:{name:"Farbloses Ziehen",desc:"Symbolfarbe deaktivieren, wenn ein Element gezogen wird."},uncolorSelect:{name:"Farblose Auswahl",desc:"Symbolfarbe deaktivieren, w\xE4hrend das Element ausgew\xE4hlt ist."},uncolorQuick:{name:"Farblose Ribbon-Schaltfl\xE4che",desc:"Symbolfarbe deaktivieren, f\xFCr die Schnellzugriff zu Ribbon-Schaltfl\xE4che auf Mobilger\xE4ten."},rememberDeletedItems:{name:"Symbole gel\xF6schter Elemente merken",desc:"Alle benutzerdefinierten Symbole werden wieder angezeigt, wenn ihr Element wieder existiert."}}}});var xe=H((Ai,dt)=>{dt.exports={menu:{resetColor:"Reset colour",resetColors:"Reset colours"},iconPicker:{changeColor:"Change colour",resetColor:"Reset colour",colors:{gray:"Grey"}},ruleEditor:{source:{color:"Colour"}},settings:{values:{list:"List of colours"},colorPicker1:{name:"Main colour picker",descDesktop:"Appears when you click the colour bubble.",descMobile:"Appears when you tap the colour bubble."},colorPicker2:{name:"Second colour picker",descDesktop:"Appears when you secondary-click the colour bubble.",descMobile:"Appears when you press & hold the colour bubble."},uncolorHover:{name:"Colourless hover",desc:"Disable icon colour while hovering an item."},uncolorDrag:{name:"Colourless drag",desc:"Disable icon colour while dragging an item."},uncolorQuick:{name:"Colourless ribbon button",desc:"Disable icon colour for the quick access ribbon button on mobile."},uncolorSelect:{name:"Colourless selection",desc:"Disable icon colour while item is selected."}}}});var Ae=H((Ti,ht)=>{ht.exports={appItems:{help:"Abrir ayuda",settings:"Abrir ajustes",pin:"Cambiar estado de fijado",sidebarLeft:"Alternar barra lateral izquierda",sidebarRight:"Alternar barra lateral derecha",minimize:"Minimizar",maximize:"Maximizar",unmaximize:"Restaurar",close:"Cerrar ventana"},menu:{changeIcon:"Cambiar \xEDcono...",changeIcons:"Cambiar {#} \xEDconos...",removeIcon:"Eliminar \xEDcono",removeIcons:"Eliminar {#} \xEDconos",resetColor:"Restablecer color",resetColors:"Restablecer {#} colores",editRule:"Editar regla..."},iconPicker:{changeIcon:"Cambiar \xEDcono",changeIcons:"Cambiar {#} \xEDconos",changeEmoji:"Cambiar emoji",changeEmojis:"Cambiar {#} emojis",changeMix:"Cambiar \xEDcono/emoji",changeMixes:"Cambiar {#} \xEDconos/emojis",overrulePrefix:"Tu regla ",overruleSuffix:" est\xE1 anulando este \xEDcono.",overrules:"Tu libro de reglas est\xE1 anulando algunos de estos \xEDconos.",search:"Buscar",searchIcons:"Buscar \xEDconos...",searchEmojis:"Buscar emojis...",searchMix:"Buscar \xEDconos/emojis...",changeColor:"Cambiar color",resetColor:"Restablecer color",removeIcon:"Eliminar \xEDcono",icons:"\xCDconos",emojis:"Emojis",mixed:"Mixto",cancel:"Cancelar",save:"Guardar",colors:{red:"Rojo",orange:"Naranja",yellow:"Amarillo",green:"Verde",cyan:"Cian",blue:"Azul",purple:"P\xFArpura",pink:"Rosa",gray:"Gris"}},categories:{item:"Elemento",items:"Elementos",appItem:"Bot\xF3n",appItems:"Botones",tab:"Pesta\xF1a",tabs:"Pesta\xF1as",file:"Archivo",files:"Archivos",folder:"Carpeta",folders:"Carpetas",group:"Grupo",groups:"Grupos",search:"Consulta",searches:"Consultas",graph:"Gr\xE1fica",graphs:"Gr\xE1ficos",url:"URL",urls:"URL",tag:"Etiqueta",tags:"Etiquetas",property:"Propiedad",properties:"Propiedades",ribbonItem:"Comando de cinta",ribbonItems:"Comandos de cinta",rule:"Regla",rules:"Reglas"},rulePicker:{selectPage:"Seleccionar p\xE1gina",fileRules:"Reglas de archivo",folderRules:"Reglas de carpeta",rules:"Reglas",addRule:"Agregar regla",editRule:"Editar regla",removeRule:"Eliminar regla",untitledRule:"Regla sin t\xEDtulo",drag:"Arrastre para reordenar"},ruleEditor:{fileRule:"Regla de archivo",folderRule:"Regla de carpeta",conditions:"Condiciones",addCondition:"A\xF1adir condici\xF3n",resetCondition:"Restablecer condici\xF3n",removeCondition:"Eliminar condici\xF3n",removeRule:"Eliminar regla",buttonMatch:"1 coincidencia",buttonMatches:"{#} coincidencias",buttonNoMatches:"Ninguna coincidencia",enterName:"Dale un nombre a esta regla",enterValue:"Ingresa un valor",enterRegex:"Ingresa una expresi\xF3n regular",enterHexCode:"Ingresa un #c\xF3digohexadecimal",enterNumber:"Ingresa un n\xFAmero",matchConditions:{name:"Condiciones de coincidencia",desc:"Elige cu\xE1ntas condiciones deben coincidir",all:"Todas",any:"Cualquiera",none:"Ninguno"},source:{icon:"\xCDcono",color:"Color",name:"Nombre",filename:"Nombre de archivo",extension:"Extensi\xF3n",tree:"\xC1rbol de carpetas",path:"Ruta en el almac\xE9n",headings:"Encabezados",links:"Enlaces",tags:"Etiquetas",properties:"Propiedades...",created:"Fecha de creaci\xF3n",modified:"Fecha de modificaci\xF3n",clock:"Reloj del sistema"},operator:{is:"es","!is":"no es",contains:"contiene",startsWith:"comienza con",endsWith:"termina con",matches:"coincide con regex","!contains":"no contiene","!startsWith":"no comienza con","!endsWith":"no termina con","!matches":"no coincide con regex",includes:"incluye el elemento","!includes":"no incluye el elemento",allAre:"todos son",allContain:"todos contienen",allStartWith:"todos comienzan con",allEndWith:"todos terminan con",allMatch:"todos coinciden con regex",anyContain:"cualquiera contiene",anyStartWith:"cualquiera comienza con",anyEndWith:"cualquiera termina con",anyMatch:"cualquiera coincide regex",noneContain:"ninguno contiene",noneStartWith:"ninguno empieza con",noneEndWith:"ninguno termina con",noneMatch:"ninguno coincide con regex",countIs:"conteo es","!countIs":"conteo no es",countIsLess:"conteo es menor que",countIsMore:"conteo es mayor que",isTrue:"es verdadero","!isTrue":"no es verdadero",isFalse:"es falso","!isFalse":"no es falso",equals:"es igual a","!equals":"no es igual a",isLess:"es menor que",isMore:"es mayor que",isDivisible:"es divisible entre","!isLess":"no es menor que","!isMore":"no es mayor que","!isDivisible":"no es divisible entre",isBefore:"es antes",isAfter:"es despu\xE9s",isNow:"es ahora","!isNow":"no es ahora",isBeforeNow:"es antes de ahora",isAfterNow:"es despu\xE9s de ahora",timeIs:"tiempo es","!timeIs":"tiempo no es",timeIsBefore:"tiempo es antes",timeIsAfter:"tiempo es despu\xE9s",timeIsNow:"tiempo es ahora","!timeIsNow":"tiempo no es ahora",timeIsBeforeNow:"tiempo es antes de ahora",timeIsAfterNow:"tiempo es despu\xE9s de ahora",dateIs:"fecha es","!dateIs":"fecha no es",dateIsBefore:"fecha es antes",dateIsAfter:"fecha es despu\xE9s",isToday:"fecha es hoy","!isToday":"fecha no es hoy",isBeforeToday:"fecha es anterior a hoy",isAfterToday:"fecha es posterior a hoy",isLessDaysAgo:"hace menos de X d\xEDas",isLessDaysAway:"faltan menos de X d\xEDas",isMoreDaysAgo:"hace m\xE1s de X d\xEDas",isMoreDaysAway:"faltan m\xE1s de X d\xEDas",weekdayIs:"d\xEDa de semana es","!weekdayIs":"d\xEDa de semana no es",weekdayIsBefore:"d\xEDa de semana antes",weekdayIsAfter:"d\xEDa de semana despu\xE9s",monthdayIs:"d\xEDa del mes es","!monthdayIs":"d\xEDa del mes no es",monthdayIsBefore:"d\xEDa del mes antes",monthdayIsAfter:"d\xEDa del mes despu\xE9s",monthIs:"mes es","!monthIs":"mes no es",monthIsBefore:"mes es antes",monthIsAfter:"mes es despu\xE9s",yearIs:"a\xF1o es","!yearIs":"a\xF1o no es",yearIsBefore:"a\xF1o es antes",yearIsAfter:"a\xF1o es despu\xE9s",iconIs:"ID es","!iconIs":"ID no es",nameIs:"nombre es","!nameIs":"nombre no es",nameContains:"nombre contiene",nameStartsWith:"nombre empieza con",nameEndsWith:"nombre termina con",nameMatches:"nombre coincide con regex","!nameContains":"nombre no contiene","!nameStartsWith":"nombre no empieza con","!nameEndsWith":"nombre no termina con","!nameMatches":"nombre no coincide con regex",colorIs:"es","!colorIs":"no es",hexIs:"c\xF3digo hex es","!hexIs":"c\xF3digo hex no es",hasValue:"tiene alg\xFAn valor","!hasValue":"no tiene ning\xFAn valor",hasProperty:"propiedad est\xE1 presente","!hasProperty":"propiedad no est\xE1 presente"},weekday:{"1":"Lunes","2":"Martes","3":"Mi\xE9rcoles","4":"Jueves","5":"Viernes","6":"S\xE1bado","7":"Domingo"},month:{"1":"Enero","2":"Febrero","3":"Marzo","4":"Abril","5":"Mayo","6":"Junio","7":"Julio","8":"Agosto","9":"Septiembre","10":"Octubre","11":"Noviembre","12":"Diciembre"}},ruleChecker:{fileMatch:"1 archivo coincidente",folderMatch:"1 carpeta coincidente",filesMatch:"{#} archivos coincidentes",foldersMatch:"{#} carpetas coincidentes",highlight:"Resaltar",headingMatches:"Coincidencias"},commands:{openRulebook:"Abrir libro de reglas",toggleBiggerIcons:"Alternar \xEDconos m\xE1s grandes",toggleClickableIcons:{desktop:"Alternar \xEDconos en los que se puede hacer clic",mobile:"Alternar \xEDconos que se pueden tocar"},toggleAllFileIcons:"Alternar todos los \xEDconos de archivos",toggleAllFolderIcons:"Alternar todos los \xEDconos de carpetas",toggleMinimalFolderIcons:"Alternar \xEDconos de carpeta m\xEDnimos",toggleBiggerSearchResults:"Alternar resultados de b\xFAsqueda m\xE1s grandes",changeIconCurrentFile:"Cambiar el \xEDcono del archivo actual"},settings:{values:{on:"Activado",off:"Desactivado",desktop:"Solo escritorio",mobile:"Solo m\xF3vil",list:"Lista de colores",rgb:"Selector RGB"},rulebook:{name:"Libro de reglas",desc:"Configurar reglas automatizadas para los \xEDconos de archivos y carpetas",manage:"Administrar"},headingSidebarAndTabIcons:"\xCDconos de la barra lateral y de las pesta\xF1as",biggerIcons:{name:"\xCDconos m\xE1s grandes",desc:"Mostrar \xEDconos m\xE1s grandes que la interfaz de usuario predeterminada."},clickableIcons:{nameDesktop:"\xCDconos en los que se puede hacer clic",nameMobile:"\xCDconos que se pueden tocar",descDesktop:"Haga clic en un \xEDcono para abrir el selector de \xEDconos.",descMobile:"Toque un \xEDcono para abrir el selector de \xEDconos."},showAllFileIcons:{name:"Mostrar todos los \xEDconos de archivos",desc:"Mostrar \xEDconos para archivos sin un \xEDcono personalizado."},showAllFolderIcons:{name:"Mostrar todos los \xEDconos de carpetas",desc:"Mostrar \xEDconos para carpetas que no tienen \xEDconos personalizados."},minimalFolderIcons:{name:"\xCDconos de carpeta m\xEDnimos",desc:"Reemplazar las flechas de carpeta con los \xEDconos de carpeta."},headingIconPicker:"Selector de \xEDconos",showItemName:{name:"Mostrar el nombre del elemento",desc:"Mostrar el nombre del elemento que se est\xE1 editando."},biggerSearchResults:{name:"Resultados de b\xFAsqueda m\xE1s grandes",desc:"Mostrar \xEDconos m\xE1s grandes en los resultados de b\xFAsqueda."},maxSearchResults:{name:"Resultados de b\xFAsqueda m\xE1ximos",desc:"Elige cu\xE1ntos \xEDconos quieres mostrar a la vez."},colorPicker1:{name:"Selector de color principal",descDesktop:"Aparece cuando hace clic en la burbuja de color.",descMobile:"Aparece cuando toca la burbuja de color."},colorPicker2:{name:"Segundo selector de color",descDesktop:"Aparece cuando haces clic secundario en la burbuja de color.",descMobile:"Aparece cuando mantienes presionada la burbuja de color."},headingAdvanced:"Avanzado",uncolorHover:{name:"Flotador incoloro",desc:"Desactivar el color del \xEDcono al pasar el cursor sobre un elemento."},uncolorDrag:{name:"Arrastre incolora",desc:"Desactivar el color del \xEDcono al arrastrar un elemento."},uncolorSelect:{name:"Selecci\xF3n incolora",desc:"Desactivar el color del \xEDcono mientras el elemento est\xE1 seleccionado."},uncolorQuick:{name:"Bot\xF3n de cinta incolora",desc:"Desactivar el color del \xEDcono para el bot\xF3n de cinta de acceso r\xE1pido en m\xF3vile."},rememberDeletedItems:{name:"Recordar \xEDconos de elementos eliminados",desc:"Cualquier \xEDcono personalizado reaparecer\xE1 cuando su elemento vuelva a existir."}}}});var Te=H((Ri,ut)=>{ut.exports={appItems:{help:"Ouvrir l'aide",settings:"Ouvrir les param\xE8tres",pin:"Basculer l'\xE9pingle",sidebarLeft:"Basculer la barre lat\xE9rale gauche",sidebarRight:"Basculer la barre lat\xE9rale droite",minimize:"Minimiser",maximize:"Maximiser",unmaximize:"Restaurer",close:"Fermer la fen\xEAtre"},menu:{changeIcon:"Modifier l'ic\xF4ne...",changeIcons:"Modifier {#} ic\xF4nes...",removeIcon:"Supprimer l'ic\xF4ne",removeIcons:"Supprimer {#} ic\xF4nes",resetColor:"R\xE9initialiser la couleur",resetColors:"R\xE9initialiser {#} couleurs",editRule:"Modifier la r\xE8gle..."},iconPicker:{changeIcon:"Changer l'ic\xF4ne",changeIcons:"Changer {#} ic\xF4nes",changeEmoji:"Changer l'\xE9moji",changeEmojis:"Changer {#} \xE9mojis",changeMix:"Changer l'ic\xF4ne / l'emoji",changeMixes:"Changer {#} ic\xF4nes / emojis",overrulePrefix:"Votre r\xE8gle ",overruleSuffix:" annule cette ic\xF4ne.",overrules:"Votre livre de r\xE8gles annule certaines de ces ic\xF4nes.",search:"Rechercher",searchIcons:"Rechercher des ic\xF4nes...",searchEmojis:"Rechercher des \xE9mojis...",searchMix:"Rechercher des ic\xF4nes / emojis...",changeColor:"Changer la couleur",resetColor:"R\xE9initialiser la couleur",removeIcon:"Supprimer l'ic\xF4ne",icons:"Ic\xF4nes",emojis:"\xC9mojis",mixed:"M\xE9lange",cancel:"Annuler",save:"Sauvegarder",colors:{red:"Rouge",orange:"Orange",yellow:"Jaune",green:"Vert",cyan:"Cyan",blue:"Bleu",purple:"Violet",pink:"Rose",gray:"Gris"}},categories:{item:"\xC9l\xE9ment",items:"\xC9l\xE9ments",appItem:"Bouton",appItems:"Boutons",tab:"Onglet",tabs:"Onglets",file:"Fichier",files:"Fichiers",folder:"Dossier",folders:"Dossiers",group:"Groupe",groups:"Groupes",search:"Requ\xEAte",searches:"Requ\xEAtes",graph:"Graphique",graphs:"Graphiques",url:"URL",urls:"URL",tag:"Mot-cl\xE9",tags:"Mots-cl\xE9s",property:"Propri\xE9t\xE9",properties:"Propri\xE9t\xE9s",ribbonItem:"Commande du ruban",ribbonItems:"Commandes du ruban",rule:"R\xE8gle",rules:"R\xE8gles"},rulePicker:{selectPage:"S\xE9lectionner une page",fileRules:"R\xE8gles pour les fichiers",folderRules:"R\xE8gles pour les dossiers",rules:"R\xE8gles",addRule:"Ajouter une r\xE8gle",editRule:"Modifier la r\xE8gle",removeRule:"Supprimer la r\xE8gle",untitledRule:"R\xE8gle sans titre",drag:"Glisser pour r\xE9organiser"},ruleEditor:{fileRule:"R\xE8gle de fichier",folderRule:"R\xE8gle de dossier",conditions:"Conditions",addCondition:"Ajouter une condition",resetCondition:"R\xE9initialiser la condition",removeCondition:"Supprimer la condition",removeRule:"Supprimer la r\xE8gle",buttonMatch:"1 correspondance",buttonMatches:"{#} correspondances",buttonNoMatches:"Aucune correspondance",enterName:"Donnez un nom \xE0 cette r\xE8gle",enterValue:"Entrez une valeur",enterRegex:"Entrez une expression r\xE9guli\xE8re",enterHexCode:"Entrez un #hexcode",enterNumber:"Entrez un nombre",matchConditions:{name:"Conditions de correspondance",desc:"Choisissez le nombre de conditions \xE0 respecter.",all:"Toutes",any:"Tout",none:"Aucune"},source:{icon:"Ic\xF4ne",color:"Couleur",name:"Nom",filename:"Nom de fichier",extension:"Extension",tree:"Chemin du dossier",path:"Chemin dans le coffre",headings:"Sous-titres",links:"Liens",tags:"Tags",properties:"Propri\xE9t\xE9s...",created:"Date de cr\xE9ation",modified:"Date de modification",clock:"Heure syst\xE8me"},operator:{is:"est","!is":"n'est pas",contains:"contient",startsWith:"commence par",endsWith:"se termine par",matches:"valid\xE9 par regex","!contains":"ne contient pas","!startsWith":"ne commence pas par","!endsWith":"ne se termine pas par","!matches":"invalid\xE9 par regex",includes:"inclut l'\xE9l\xE9ment","!includes":"n'inclut pas l'\xE9l\xE9ment",allAre:"tous sont",allContain:"tous contiennent",allStartWith:"tous commencent par",allEndWith:"tous se terminent par",allMatch:"tous valid\xE9s par regex",anyContain:"l'un contient",anyStartWith:"l'un commence par",anyEndWith:"l'un se termine par",anyMatch:"l'un valid\xE9 par regex",noneContain:"aucun ne contient",noneStartWith:"aucun ne commence par",noneEndWith:"aucun ne se termine par",noneMatch:"aucun valid\xE9 par regex",countIs:"nombre est","!countIs":"nombre n'est pas",countIsLess:"nombre est inf\xE9rieur \xE0",countIsMore:"nombre est sup\xE9rieur \xE0",isTrue:"est vrai","!isTrue":"n'est pas vrai",isFalse:"est faux","!isFalse":"n'est pas faux",equals:"\xE9gale","!equals":"n'est pas \xE9gal \xE0",isLess:"est inf\xE9rieur \xE0",isMore:"est sup\xE9rieur \xE0",isDivisible:"est divisible par","!isLess":"n'est pas inf\xE9rieur \xE0","!isMore":"n'est pas sup\xE9rieur \xE0","!isDivisible":"n'est pas divisible par",isBefore:"est avant",isAfter:"est apr\xE8s",isNow:"est maintenant","!isNow":"n'est pas maintenant",isBeforeNow:"est avant maintenant",isAfterNow:"est apr\xE8s maintenant",timeIs:"heure est","!timeIs":"heure n'est pas",timeIsBefore:"heure est avant",timeIsAfter:"heure est apr\xE8s",timeIsNow:"heure est maintenant","!timeIsNow":"heure n'est pas maintenant",timeIsBeforeNow:"heure est avant maintenant",timeIsAfterNow:"heure est apr\xE8s maintenant",dateIs:"date est","!dateIs":"date n'est pas",dateIsBefore:"date est avant",dateIsAfter:"date est apr\xE8s",isToday:"date est aujourd'hui","!isToday":"date n'est pas aujourd'hui",isBeforeToday:"date est avant aujourd'hui",isAfterToday:"date est apr\xE8s aujourd'hui",isLessDaysAgo:"il y a moins de X jours",isLessDaysAway:"dans moins de X jours",isMoreDaysAgo:"il y a plus de X jours",isMoreDaysAway:"dans plus de X jours",weekdayIs:"jour de la semaine est","!weekdayIs":"jour de la semaine n'est pas",weekdayIsBefore:"jour de la semaine est avant",weekdayIsAfter:"jour de la semaine est apr\xE8s",monthdayIs:"jour du mois est","!monthdayIs":"jour du mois n'est pas",monthdayIsBefore:"jour du mois est avant",monthdayIsAfter:"jour du mois est apr\xE8s",monthIs:"mois est","!monthIs":"mois n'est pas",monthIsBefore:"mois est avant",monthIsAfter:"mois est apr\xE8s",yearIs:"ann\xE9e est","!yearIs":"ann\xE9e n'est pas",yearIsBefore:"ann\xE9e est avant",yearIsAfter:"ann\xE9e est apr\xE8s",iconIs:"ID est","!iconIs":"ID n'est pas",nameIs:"nom est","!nameIs":"nom n'est pas",nameContains:"nom contient",nameStartsWith:"nom commence par",nameEndsWith:"nom se termine par",nameMatches:"nom valid\xE9 par regex","!nameContains":"nom ne contient pas","!nameStartsWith":"nom ne commence pas par","!nameEndsWith":"nom ne se termine pas par","!nameMatches":"nom invalid\xE9 par regex",colorIs:"est","!colorIs":"n'est pas",hexIs:"code hex est","!hexIs":"code hex n'est pas",hasValue:"a une valeur","!hasValue":"n'a pas de valeur",hasProperty:"propri\xE9t\xE9 est pr\xE9sente","!hasProperty":"propri\xE9t\xE9 est manquante"},weekday:{"1":"Lundi","2":"Mardi","3":"Mercredi","4":"Jeudi","5":"Vendredi","6":"Samedi","7":"Dimanche"},month:{"1":"Janvier","2":"F\xE9vrier","3":"Mars","4":"Avril","5":"Mai","6":"Juin","7":"Juillet","8":"Ao\xFBt","9":"Septembre","10":"Octobre","11":"Novembre","12":"D\xE9cembre"}},ruleChecker:{fileMatch:"1 fichier correspondant",folderMatch:"1 dossier correspondant",filesMatch:"{#} fichiers correspondants",foldersMatch:"{#} dossiers correspondants",highlight:"Surligner",headingMatches:"Correspondances"},commands:{openRulebook:"Ouvrir le livre de r\xE8gles",toggleBiggerIcons:"Basculer les plus grandes ic\xF4nes",toggleClickableIcons:{desktop:"Basculer les ic\xF4nes cliquables",mobile:"Basculer les ic\xF4nes tactiles"},toggleAllFileIcons:"Basculer toutes les ic\xF4nes de fichier",toggleAllFolderIcons:"Basculer toutes les ic\xF4nes de dossier",toggleMinimalFolderIcons:"Basculer les ic\xF4nes de dossier minimales",toggleBiggerSearchResults:"Basculer les r\xE9sultats de recherche plus grands",changeIconCurrentFile:"Changer l'ic\xF4ne du fichier actuel"},settings:{values:{on:"Activ\xE9",off:"D\xE9sactiv\xE9",desktop:"Bureau uniquement",mobile:"Mobile uniquement",list:"Liste de couleurs",rgb:"S\xE9lecteur RVB"},rulebook:{name:"Livre de r\xE8gles",desc:"Configurer des r\xE8gles automatis\xE9es pour les ic\xF4nes de fichiers et de dossiers.",manage:"G\xE9rer"},headingSidebarAndTabIcons:"Ic\xF4nes de la barre lat\xE9rale et des onglets",biggerIcons:{name:"Ic\xF4nes plus grandes",desc:"Afficher des ic\xF4nes plus grandes que l'interface utilisateur par d\xE9faut."},clickableIcons:{nameDesktop:"Ic\xF4nes cliquables",nameMobile:"Ic\xF4nes tactiles",descDesktop:"Cliquez sur une ic\xF4ne pour ouvrir le s\xE9lecteur d'ic\xF4nes.",descMobile:"Appuyez sur une ic\xF4ne pour ouvrir le s\xE9lecteur d'ic\xF4nes."},showAllFileIcons:{name:"Afficher toutes les ic\xF4nes de fichiers",desc:"Afficher les ic\xF4nes des fichiers qui n'ont pas d'ic\xF4ne personnalis\xE9e."},showAllFolderIcons:{name:"Afficher toutes les ic\xF4nes de dossiers",desc:"Afficher les ic\xF4nes des dossiers qui n'ont pas d'ic\xF4ne personnalis\xE9e."},minimalFolderIcons:{name:"Ic\xF4nes de dossier minimales",desc:"Remplacez les fl\xE8ches de dossier par vos ic\xF4nes de dossier."},headingIconPicker:"S\xE9lecteur d'ic\xF4nes",showItemName:{name:"Afficher le nom de l'\xE9l\xE9ment",desc:"Afficher le nom de l'\xE9l\xE9ment en cours de modification."},biggerSearchResults:{name:"R\xE9sultats de recherche plus grands.",desc:"Afficher des ic\xF4nes plus grandes dans les r\xE9sultats de recherche."},maxSearchResults:{name:"R\xE9sultats de recherche maximaux",desc:"Choisissez le nombre d'ic\xF4nes \xE0 afficher simultan\xE9ment."},colorPicker1:{name:"S\xE9lecteur de couleurs principal",descDesktop:"S'affiche lorsque vous cliquez sur la bulle de couleur.",descMobile:"S'affiche lorsque vous touchez la bulle de couleur."},colorPicker2:{name:"Deuxi\xE8me s\xE9lecteur de couleurs",descDesktop:"Appara\xEEt lorsque vous cliquez avec le bouton droit sur la bulle de couleur.",descMobile:"Appara\xEEt lorsque vous appuyez et maintenez la bulle de couleur."},headingAdvanced:"Avanc\xE9",uncolorHover:{name:"Survol incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque vous survolez un \xE9l\xE9ment."},uncolorDrag:{name:"Glissement incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque vous faites glisser un \xE9l\xE9ment."},uncolorSelect:{name:"S\xE9lection incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque l'\xE9l\xE9ment est s\xE9lectionn\xE9."},uncolorQuick:{name:"Bouton de ruban incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne pour le bouton de ruban d'acc\xE8s rapide sur mobile."},rememberDeletedItems:{name:"M\xE9moriser les ic\xF4nes des \xE9l\xE9ments supprim\xE9s",desc:"Toutes les ic\xF4nes personnalis\xE9es r\xE9appara\xEEtront lorsque leur \xE9l\xE9ment existera \xE0 nouveau."}}}});var Re=H((Fi,gt)=>{gt.exports={appItems:{help:"Buka bantuan",settings:"Buka pengaturan",pin:"Aktifkan/Matikan sematan",sidebarLeft:"Buka/Tutup bilah sisi kiri",sidebarRight:"Buka/Tutup bilah sisi kanan",minimize:"Minimalkan",maximize:"Maksimalkan",unmaximize:"Kecilkan",close:"Tutup jendela"},menu:{changeIcon:"Ubah ikon...",changeIcons:"Ubah {#} ikon...",removeIcon:"Hapus ikon",removeIcons:"Hapus {#} ikon",resetColor:"Atur ulang warna",resetColors:"Atur ulang {#} warna",editRule:"Edit aturan..."},iconPicker:{changeIcon:"Ubah ikon",changeIcons:"Ubah {#} ikon",changeEmoji:"Ubah emoji",changeEmojis:"Ubah {#} emoji",changeMix:"Ubah ikon / emoji",changeMixes:"Ubah {#} ikon / emoji",overrulePrefix:"Aturan Anda ",overruleSuffix:" mengesampingkan ikon ini.",overrules:"Buku aturan Anda mengesampingkan beberapa ikon ini.",search:"Search",searchIcons:"Cari ikon...",searchEmojis:"Cari emoji...",searchMix:"Cari ikon / emoji...",changeColor:"Ganti warna",resetColor:"Atur ulang warna",removeIcon:"Hapus ikon",icons:"Ikon",emojis:"Emoji",mixed:"Campuran",cancel:"Batal",save:"Simpan",colors:{red:"Merah",orange:"Oranye",yellow:"Kuning",green:"Hijau",cyan:"Sian",blue:"Biru",purple:"Ungu",pink:"Merah muda",gray:"Abu-abu"}},categories:{item:"Item",items:"Item",appItem:"Tombol",appItems:"Tombol",tab:"Tab",tabs:"Tab",file:"Berkas",files:"Berkas",folder:"Folder",folders:"Folder",group:"Grup",groups:"Grup",search:"Kueri",searches:"Kueri",graph:"Grafik",graphs:"Grafik",url:"URL",urls:"URL",tag:"Tag",tags:"Tag",property:"Properti",properties:"Properti",ribbonItem:"Perintah ribbon",ribbonItems:"Perintah ribbon",rule:"Aturan",rules:"Aturan"},rulePicker:{selectPage:"Pilih halaman",fileRules:"Aturan berkas",folderRules:"Aturan folder",rules:"Aturan",addRule:"Tambah aturan",editRule:"Edit aturan",removeRule:"Hapus aturan",untitledRule:"Aturan tanpa judul",drag:"Seret untuk menata"},ruleEditor:{fileRule:"Aturan berkas",folderRule:"Aturan folder",conditions:"Kondisi",addCondition:"Tambahkan kondisi",resetCondition:"Atur ulang kondisi",removeCondition:"Hapus kondisi",removeRule:"Hapus aturan",buttonMatch:"1 kecocokan",buttonMatches:"{#} kecocokan",buttonNoMatches:"Tidak ada kecocokan",enterName:"Beri nama pada aturan ini",enterValue:"Masukkan nilai",enterRegex:"Masukkan regex",enterHexCode:"Masukkan #hexcode",enterNumber:"Masukkan angka",matchConditions:{name:"Kecocokan kondisi",desc:"Pilih berapa banyak kondisi yang perlu dicocokkan.",all:"Semua",any:"Apa pun",none:"Tidak ada"},source:{icon:"Ikon",color:"Warna",name:"Nama",filename:"Nama berkas",extension:"Ekstensi",tree:"Pohon folder",path:"Jalur dalam brankas",headings:"Judul",links:"Tautan",tags:"Tag",properties:"Properti...",created:"Tanggal dibuat",modified:"Tanggal diubah",clock:"Jam sistem"},operator:{is:"adalah","!is":"bukan",contains:"berisi",startsWith:"dimulai dengan",endsWith:"diakhiri dengan",matches:"cocok dengan regex","!contains":"tidak berisi","!startsWith":"tidak dimulai dengan","!endsWith":"tidak diakhiri dengan","!matches":"tidak cocok regex",includes:"termasuk item","!includes":"tidak termasuk item",allAre:"semua adalah",allContain:"semua berisi",allStartWith:"semua dimulai dengan",allEndWith:"semua diakhiri dengan",allMatch:"semua cocok regex",anyContain:"ada berisi",anyStartWith:"ada mulai dengan",anyEndWith:"ada diakhiri dengan",anyMatch:"ada cocok regex",noneContain:"tidak ada berisi",noneStartWith:"tidak ada mulai dengan",noneEndWith:"tidak ada diakhiri dengan",noneMatch:"tidak ada cocok regex",countIs:"jumlahnya","!countIs":"jumlahnya tidak",countIsLess:"jumlahnya kurang dari",countIsMore:"jumlahnya lebih dari",isTrue:"benar","!isTrue":"tidak benar",isFalse:"salah","!isFalse":"tidak salah",equals:"sama dengan","!equals":"tidak sama dengan",isLess:"kurang dari",isMore:"lebih dari",isDivisible:"dapat dibagi oleh","!isLess":"tidak kurang dari","!isMore":"tidak lebih dari","!isDivisible":"tidak dapat dibagi oleh",isBefore:"sebelum",isAfter:"setelah",isNow:"sekarang","!isNow":"bukan sekarang",isBeforeNow:"sebelum sekarang",isAfterNow:"setelah sekarang",timeIs:"waktu adalah","!timeIs":"waktu bukan",timeIsBefore:"waktu adalah sebelum",timeIsAfter:"waktu adalah setelah",timeIsNow:"waktu adalah sekarang","!timeIsNow":"waktu bukan sekarang",timeIsBeforeNow:"waktu adalah sebelum sekarang",timeIsAfterNow:"waktu adalah setelah sekarang",dateIs:"tanggal adalah","!dateIs":"tanggal bukan",dateIsBefore:"tanggal adalah sebelum",dateIsAfter:"tanggal adalah setelah",isToday:"tanggal adalah hari ini","!isToday":"tanggal bukan hari ini",isBeforeToday:"tanggal sebelum hari ini",isAfterToday:"tanggal setelah hari ini",isLessDaysAgo:"kurang dari X hari lalu",isLessDaysAway:"kurang dari X hari lagi",isMoreDaysAgo:"lebih dari X hari lalu",isMoreDaysAway:"lebih dari X hari lagi",weekdayIs:"hari minggu","!weekdayIs":"hari minggu bukan",weekdayIsBefore:"hari sebelum minggu",weekdayIsAfter:"hari setelah minggu",monthdayIs:"hari bulan bukan","!monthdayIs":"hari bulan",monthdayIsBefore:"hari sebelum bulan",monthdayIsAfter:"hari setelah bulan",monthIs:"bulan adalah","!monthIs":"bulan bukan",monthIsBefore:"bulan sebelum",monthIsAfter:"bulan setelah",yearIs:"tahun adalah","!yearIs":"tahun bukan",yearIsBefore:"tahun sebelum",yearIsAfter:"tahun setelah",iconIs:"ID adalah","!iconIs":"ID bukan",nameIs:"nama adalah","!nameIs":"nama bukan",nameContains:"nama berisi",nameStartsWith:"nama dimulai dengan",nameEndsWith:"nama diakhiri dengan",nameMatches:"nama cocok regex","!nameContains":"nama tidak berisi","!nameStartsWith":"nama tidak dimulai dengan","!nameEndsWith":"nama tidak diakhiri dengan","!nameMatches":"nama tidak cocok regex",colorIs:"adalah","!colorIs":"bukan",hexIs:"kode heks","!hexIs":"kode heks tidak ada",hasValue:"ada nilai","!hasValue":"tidak ada nilai",hasProperty:"properti ada","!hasProperty":"properti tidak ada"},weekday:{"1":"Senin","2":"Selasa","3":"Rabu","4":"Kamis","5":"Jumat","6":"Sabtu","7":"Minggu"},month:{"1":"Januari","2":"Februari","3":"Maret","4":"April","5":"Mei","6":"Juni","7":"Juli","8":"Agustus","9":"September","10":"Oktober","11":"November","12":"Desember"}},ruleChecker:{fileMatch:"1 file yang cocok",folderMatch:"1 folder yang cocok",filesMatch:"{#} file yang cocok",foldersMatch:"{#} folder yang cocok",highlight:"Sorot",headingMatches:"Cocok"},commands:{openRulebook:"Buka buku aturan",toggleBiggerIcons:"Alihkan ikon yang lebih besar",toggleClickableIcons:{desktop:"Alihkan ikon yang dapat diklik",mobile:"Alihkan ikon yang dapat diketuk"},toggleAllFileIcons:"Beralih semua ikon berkas",toggleAllFolderIcons:"Beralih semua ikon folder",toggleMinimalFolderIcons:"Beralih ikon folder minimal",toggleBiggerSearchResults:"Beralih hasil pencarian yang lebih besar",changeIconCurrentFile:"Ubah ikon file saat ini"},settings:{values:{on:"Aktif",off:"Nonaktif",desktop:"Hanya desktop",mobile:"Hanya seluler",list:"Daftar warna",rgb:"Pemilih RGB"},rulebook:{name:"Buku aturan",desc:"Siapkan aturan otomatis untuk ikon berkas dan folder.",manage:"Kelola"},headingSidebarAndTabIcons:"Ikon bilah sisi & tab",biggerIcons:{name:"Ikon yang lebih besar",desc:"Tampilkan ikon yang lebih besar daripada UI default."},clickableIcons:{nameDesktop:"Ikon yang dapat diklik",nameMobile:"Ikon yang dapat diketuk",descDesktop:"Klik ikon untuk membuka pemilih ikon.",descMobile:"Ketuk ikon untuk membuka pemilih ikon."},showAllFileIcons:{name:"Tampilkan semua ikon berkas",desc:"Tampilkan ikon untuk berkas yang tidak memiliki ikon khusus."},showAllFolderIcons:{name:"Tampilkan semua ikon folder",desc:"Tampilkan ikon untuk folder yang tidak memiliki ikon khusus."},minimalFolderIcons:{name:"Ikon folder minimal",desc:"Ganti tanda panah folder dengan ikon folder Anda."},headingIconPicker:"Pemilih ikon",showItemName:{name:"Tampilkan nama item",desc:"Tampilkan nama item yang sedang diedit."},biggerSearchResults:{name:"Hasil pencarian yang lebih besar",desc:"Tampilkan ikon yang lebih besar dalam hasil pencarian."},maxSearchResults:{name:"Hasil pencarian maksimal",desc:"Pilih berapa banyak ikon yang akan ditampilkan sekaligus."},colorPicker1:{name:"Pemilih warna utama",descDesktop:"Muncul saat Anda mengklik gelembung warna.",descMobile:"Muncul saat Anda menyentuh gelembung warna."},colorPicker2:{name:"Pemilih warna kedua",descDesktop:"Muncul saat Anda mengklik kedua gelembung warna.",descMobile:"Muncul saat Anda menekan & menahan gelembung warna."},headingAdvanced:"Lanjutan",uncolorHover:{name:"Arahkan tanpa warna",desc:"Nonaktifkan warna ikon saat mengarahkan kursor ke item."},uncolorDrag:{name:"Seret tanpa warna",desc:"Nonaktifkan warna ikon saat menyeret item."},uncolorSelect:{name:"Pilihan tanpa warna",desc:"Nonaktifkan warna ikon saat item dipilih."},uncolorQuick:{name:"Tombol ribbon tanpa warna",desc:"Nonaktifkan warna ikon untuk akses cepat tombol ribbon di ponsel."},rememberDeletedItems:{name:"Ingat ikon item yang dihapus",desc:"Ikon khusus apa pun akan muncul kembali ketika itemnya ada lagi."}}}});var Fe=H((Pi,mt)=>{mt.exports={appItems:{help:"\u30D8\u30EB\u30D7\u3092\u958B\u304F",settings:"\u8A2D\u5B9A\u3092\u958B\u304F",pin:"\u30D4\u30F3\u3092\u30C8\u30B0\u30EB",sidebarLeft:"\u5DE6\u306E\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u9589",sidebarRight:"\u53F3\u306E\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u9589",minimize:"\u6700\u5C0F\u5316",maximize:"\u6700\u5927\u5316",unmaximize:"\u5143\u306E\u30B5\u30A4\u30BA\u306B\u623B\u3059",close:"\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u9589\u3058\u308B"},menu:{changeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u2026",changeIcons:"\u30A2\u30A4\u30B3\u30F3\u3092 {#} \u500B\u5909\u66F4\u2026",removeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u524A\u9664",removeIcons:"\u30A2\u30A4\u30B3\u30F3\u3092 {#} \u500B\u524A\u9664",resetColor:"\u8272\u3092\u30EA\u30BB\u30C3\u30C8",resetColors:"\u8272\u3092 {#} \u500B\u30EA\u30BB\u30C3\u30C8",editRule:"\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6\u2026"},iconPicker:{changeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4",changeIcons:"{#}\u500B\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u3059\u308B",changeEmoji:"\u7D75\u6587\u5B57\u3092\u5909\u66F4\u3059\u308B",changeEmojis:"\u7D75\u6587\u5B57\u3092 {#} \u500B\u5909\u66F4",changeMix:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092\u5909\u66F4",changeMixes:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092 {#} \u500B\u5909\u66F4",overrulePrefix:"\u3042\u306A\u305F\u306E\u30EB\u30FC\u30EB ",overruleSuffix:" \u304C\u3053\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u7121\u52B9\u306B\u3057\u3066\u3044\u307E\u3059\u3002",overrules:"\u3042\u306A\u305F\u306E\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u304C\u3053\u308C\u3089\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u3044\u304F\u3064\u304B\u3092\u7121\u52B9\u306B\u3057\u3066\u3044\u307E\u3059\u3002",search:"\u691C\u7D22",searchIcons:"\u30A2\u30A4\u30B3\u30F3\u3092\u691C\u7D22\u2026",searchEmojis:"\u7D75\u6587\u5B57\u3092\u691C\u7D22\u2026",searchMix:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092\u691C\u7D22\u2026",changeColor:"\u8272\u3092\u5909\u3048\u308B",resetColor:"\u8272\u3092\u30EA\u30BB\u30C3\u30C8",removeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u524A\u9664",icons:"\u30A2\u30A4\u30B3\u30F3",emojis:"\u7D75\u6587\u5B57",mixed:"\u6DF7\u5408",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",save:"\u4FDD\u5B58",colors:{red:"\u8D64",orange:"\u30AA\u30EC\u30F3\u30B8",yellow:"\u9EC4\u8272",green:"\u7DD1",cyan:"\u30B7\u30A2\u30F3",blue:"\u9752",purple:"\u7D2B",pink:"\u30D4\u30F3\u30AF",gray:"\u7070\u8272"}},categories:{item:"\u9805\u76EE",items:"\u9805\u76EE",appItem:"\u30DC\u30BF\u30F3",appItems:"\u30DC\u30BF\u30F3",tab:"\u30BF\u30D6",tabs:"\u30BF\u30D6",file:"\u30D5\u30A1\u30A4\u30EB",files:"\u30D5\u30A1\u30A4\u30EB",folder:"\u30D5\u30A9\u30EB\u30C0",folders:"\u30D5\u30A9\u30EB\u30C0",group:"\u30B0\u30EB\u30FC\u30D7",groups:"\u30B0\u30EB\u30FC\u30D7",search:"\u30AF\u30A8\u30EA",searches:"\u30AF\u30A8\u30EA",graph:"\u30B0\u30E9\u30D5",graphs:"\u30B0\u30E9\u30D5",url:"URL",urls:"URL",tag:"\u30BF\u30B0",tags:"\u30BF\u30B0",property:"\u30D7\u30ED\u30D1\u30C6\u30A3",properties:"\u30D7\u30ED\u30D1\u30C6\u30A3",ribbonItem:"\u30EA\u30DC\u30F3\u30B3\u30DE\u30F3\u30C9",ribbonItems:"\u30EA\u30DC\u30F3\u30B3\u30DE\u30F3\u30C9",rule:"\u30EB\u30FC\u30EB",rules:"\u30EB\u30FC\u30EB"},rulePicker:{selectPage:"\u30DA\u30FC\u30B8\u3092\u9078\u629E",fileRules:"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB",folderRules:"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB",rules:"\u30EB\u30FC\u30EB",addRule:"\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0",editRule:"\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6",removeRule:"\u30EB\u30FC\u30EB\u3092\u524A\u9664",untitledRule:"\u7121\u984C\u306E\u30EB\u30FC\u30EB",drag:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u9806\u756A\u3092\u5909\u66F4"},ruleEditor:{fileRule:"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB",folderRule:"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB",conditions:"\u6761\u4EF6",addCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",resetCondition:"\u6761\u4EF6\u3092\u30EA\u30BB\u30C3\u30C8",removeCondition:"\u6761\u4EF6\u3092\u524A\u9664",removeRule:"\u30EB\u30FC\u30EB\u3092\u524A\u9664",buttonMatch:"1 \u4EF6\u306E\u4E00\u81F4",buttonMatches:"{#} \u4EF6\u306E\u4E00\u81F4",buttonNoMatches:"\u4E00\u81F4\u306A\u3057",enterName:"\u3053\u306E\u30EB\u30FC\u30EB\u306B\u540D\u524D\u3092\u4ED8\u3051\u307E\u3059",enterValue:"\u5024\u3092\u5165\u529B\u3057\u307E\u3059",enterRegex:"\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B\u3057\u307E\u3059",enterHexCode:"#16 \u9032\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u307E\u3059",enterNumber:"\u6570\u5024\u3092\u5165\u529B\u3057\u307E\u3059",matchConditions:{name:"\u4E00\u81F4\u6761\u4EF6",desc:"\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u6761\u4EF6\u306E\u6570\u3092\u9078\u629E\u3057\u307E\u3059\u3002",all:"\u3059\u3079\u3066",any:"\u4EFB\u610F",none:"\u306A\u3057"},source:{icon:"\u30A2\u30A4\u30B3\u30F3",color:"\u8272",name:"\u540D\u524D",filename:"\u30D5\u30A1\u30A4\u30EB\u540D",extension:"\u62E1\u5F35\u5B50",tree:"\u30D5\u30A9\u30EB\u30C0\u30C4\u30EA\u30FC",path:"\u30DC\u30FC\u30EB\u30C8\u5185\u306E\u30D1\u30B9",headings:"\u898B\u51FA\u3057",links:"\u30EA\u30F3\u30AF",tags:"\u30BF\u30B0",properties:"\u30D7\u30ED\u30D1\u30C6\u30A3\u2026",created:"\u4F5C\u6210\u65E5\u6642",modified:"\u5909\u66F4\u65E5\u6642",clock:"\u30B7\u30B9\u30C6\u30E0\u30AF\u30ED\u30C3\u30AF"},operator:{is:"\u3067\u3059","!is":"\u3067\u306F\u306A\u3044",contains:"\u542B\u3080",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",matches:"\u6B63\u898F\u8868\u73FE\u4E00\u81F4","!contains":"\u542B\u307E\u306A\u3044","!startsWith":"\u3067\u59CB\u307E\u3089\u306A\u3044","!endsWith":"\u3067\u7D42\u308F\u3089\u306A\u3044","!matches":"\u6B63\u898F\u8868\u73FE\u4E00\u81F4\u3057\u306A\u3044",includes:"\u9805\u76EE\u3092\u542B\u3080","!includes":"\u9805\u76EE\u3092\u542B\u307E\u306A\u3044",allAre:"\u3059\u3079\u3066\u306F",allContain:"\u3059\u3079\u3066\u542B\u3080",allStartWith:"\u3059\u3079\u3066\u3067\u59CB\u307E\u308B",allEndWith:"\u3059\u3079\u3066\u3067\u7D42\u308F\u308B",allMatch:"\u3059\u3079\u3066\u6B63\u898F\u8868\u73FE\u4E00\u81F4",anyContain:"\u4EFB\u610F\u306E\u3082\u306E\u304C\u542B\u3080",anyStartWith:"\u4EFB\u610F\u306E\u3082\u306E\u3067\u59CB\u307E\u308B",anyEndWith:"\u4EFB\u610F\u306E\u3082\u306E\u3067\u7D42\u308F\u308B",anyMatch:"\u4EFB\u610F\u306E\u6B63\u898F\u8868\u73FE\u4E00\u81F4",noneContain:"\u306A\u3057\u542B\u307E\u306A\u3044",noneStartWith:"\u306A\u3057\u3067\u59CB\u307E\u3089\u306A\u3044",noneEndWith:"\u306A\u3057\u3067\u7D42\u308F\u3089\u306A\u3044",noneMatch:"\u306A\u3057\u6B63\u898F\u8868\u73FE\u4E00\u81F4\u3057\u306A\u3044",countIs:"\u30AB\u30A6\u30F3\u30C8\u306F","!countIs":"\u30AB\u30A6\u30F3\u30C8\u306F\u306A\u3044",countIsLess:"\u30AB\u30A6\u30F3\u30C8\u306F\u672A\u6E80",countIsMore:"\u30AB\u30A6\u30F3\u30C8\u306F\u3088\u308A\u591A\u3044",isTrue:"\u771F","!isTrue":"\u771F\u3067\u306F\u306A\u3044",isFalse:"\u507D","!isFalse":"\u507D\u3067\u306F\u306A\u3044",equals:"\u7B49\u3057\u3044","!equals":"\u7B49\u3057\u304F\u306A\u3044",isLess:"\u3088\u308A\u5C0F\u3055\u3044",isMore:"\u3088\u308A\u5927\u304D\u3044",isDivisible:"\u5272\u308A\u5207\u308C\u308B","!isLess":"\u3088\u308A\u5C0F\u3055\u304F\u306A\u3044","!isMore":"\u3088\u308A\u5927\u304D\u304F\u306A\u3044","!isDivisible":"\u5272\u308A\u5207\u308C\u306A\u3044",isBefore:"\u524D\u3067\u3059",isAfter:"\u5F8C\u3067\u3059",isNow:"\u4ECA\u3067\u3059","!isNow":"\u4ECA\u3067\u306F\u3042\u308A\u307E\u305B\u3093",isBeforeNow:"\u4ECA\u3088\u308A\u524D\u3067\u3059",isAfterNow:"\u4ECA\u3088\u308A\u5F8C\u3067\u3059",timeIs:"\u6642\u523B\u306F","!timeIs":"\u6642\u523B\u3067\u306F\u306A\u3044",timeIsBefore:"\u6642\u523B\u306F\u524D\u3067\u3059",timeIsAfter:"\u6642\u523B\u306F\u5F8C\u3067\u3059",timeIsNow:"\u6642\u523B\u306F\u73FE\u5728\u3067\u3059","!timeIsNow":"\u6642\u523B\u3067\u306F\u3042\u308A\u307E\u305B\u3093",timeIsBeforeNow:"\u6642\u523B\u306F\u73FE\u5728\u3088\u308A\u524D\u3067\u3059",timeIsAfterNow:"\u6642\u523B\u306F\u73FE\u5728\u3088\u308A\u5F8C\u3067\u3059",dateIs:"\u65E5\u4ED8\u306F","!dateIs":"\u65E5\u4ED8\u3067\u306F\u306A\u3044",dateIsBefore:"\u65E5\u4ED8\u306F\u524D\u3067\u3059",dateIsAfter:"\u65E5\u4ED8\u306F\u5F8C\u3067\u3059",isToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3067\u3059","!isToday":"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3067\u306F\u3042\u308A\u307E\u305B\u3093",isBeforeToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3088\u308A\u524D\u3067\u3059",isAfterToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3088\u308A\u5F8C\u3067\u3059",isLessDaysAgo:"X \u65E5\u672A\u6E80",isLessDaysAway:"X \u65E5\u4EE5\u5185",isMoreDaysAgo:"X \u65E5\u8D85\u904E",isMoreDaysAway:"X \u65E5\u4EE5\u4E0A",weekdayIs:"\u66DC\u65E5\u306F","!weekdayIs":"\u66DC\u65E5\u306F\u3067\u306F\u306A\u3044",weekdayIsBefore:"\u66DC\u65E5\u306F\u524D\u3067\u3059",weekdayIsAfter:"\u66DC\u65E5\u306F\u5F8C\u3067\u3059",monthdayIs:"\u6708\u306E\u65E5\u306F","!monthdayIs":"\u6708\u306E\u65E5\u306F\u3067\u306F\u306A\u3044",monthdayIsBefore:"\u6708\u306E\u65E5\u306F\u524D\u3067\u3059",monthdayIsAfter:"\u6708\u306E\u65E5\u306F\u5F8C\u3067\u3059",monthIs:"\u6708\u306F","!monthIs":"\u6708\u306F\u3067\u306F\u306A\u3044",monthIsBefore:"\u6708\u306F\u524D\u3067\u3059",monthIsAfter:"\u6708\u306F\u5F8C\u3067\u3059",yearIs:"\u5E74\u306F","!yearIs":"\u5E74\u306F\u3067\u306F\u306A\u3044",yearIsBefore:"\u5E74\u306F\u524D\u3067\u3059",yearIsAfter:"\u5E74\u306F\u5F8C\u3067\u3059",iconIs:"ID \u3067\u3059","!iconIs":"ID \u3067\u306F\u3042\u308A\u307E\u305B\u3093",nameIs:"\u540D\u524D\u3067\u3042\u308B","!nameIs":"\u540D\u524D\u3067\u306F\u306A\u3044",nameContains:"\u540D\u524D\u3092\u542B\u3080",nameStartsWith:"\u540D\u524D\u3067\u59CB\u307E\u308B",nameEndsWith:"\u540D\u524D\u3067\u7D42\u308F\u308B",nameMatches:"\u540D\u524D\u4E00\u81F4","!nameContains":"\u540D\u524D\u3092\u542B\u307E\u306A\u3044","!nameStartsWith":"\u540D\u524D\u3067\u59CB\u307E\u3089\u306A\u3044","!nameEndsWith":"\u540D\u524D\u3067\u7D42\u308F\u3089\u306A\u3044","!nameMatches":"\u540D\u524D\u4E00\u81F4\u3057\u306A\u3044",colorIs:"\u3067\u3059","!colorIs":"\u3067\u306F\u3042\u308A\u307E\u305B\u3093",hexIs:"16\u9032\u30B3\u30FC\u30C9\u306F","!hexIs":"16\u9032\u30B3\u30FC\u30C9\u3067\u306F\u306A\u3044",hasValue:"\u5024\u304C\u3042\u308B","!hasValue":"\u5024\u304C\u306A\u3044",hasProperty:"\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u3042\u308B","!hasProperty":"\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u306A\u3044"},weekday:{"1":"\u6708\u66DC\u65E5","2":"\u706B\u66DC\u65E5","3":"\u6C34\u66DC\u65E5","4":"\u6728\u66DC\u65E5","5":"\u91D1\u66DC\u65E5","6":"\u571F\u66DC\u65E5","7":"\u65E5\u66DC\u65E5"},month:{"1":"1\u6708","2":"2\u6708","3":"3\u6708","4":"4\u6708","5":"5\u6708","6":"6\u6708","7":"7\u6708","8":"8\u6708","9":"9\u6708","10":"10\u6708","11":"11\u6708","12":"12\u6708"}},ruleChecker:{fileMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB 1 \u4EF6",folderMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A9\u30EB\u30C0 1 \u4EF6",filesMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB {#} \u4EF6",foldersMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A9\u30EB\u30C0 {#} \u4EF6",highlight:"\u30CF\u30A4\u30E9\u30A4\u30C8",headingMatches:"\u4E00\u81F4"},commands:{openRulebook:"\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u3092\u958B\u304F",toggleBiggerIcons:"\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleClickableIcons:{desktop:"\u30AF\u30EA\u30C3\u30AF\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",mobile:"\u30BF\u30C3\u30D7\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B"},toggleAllFileIcons:"\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleAllFolderIcons:"\u3059\u3079\u3066\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleMinimalFolderIcons:"\u6700\u5C0F\u9650\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleBiggerSearchResults:"\u691C\u7D22\u7D50\u679C\u3092\u5927\u304D\u304F\u5207\u308A\u66FF\u3048\u307E\u3059",changeIconCurrentFile:"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u3059\u308B"},settings:{values:{on:"\u30AA\u30F3",off:"\u30AA\u30D5",desktop:"\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u306E\u307F",mobile:"\u30E2\u30D0\u30A4\u30EB\u306E\u307F",list:"\u8272\u306E\u30EA\u30B9\u30C8",rgb:"RGB \u30D4\u30C3\u30AB\u30FC"},rulebook:{name:"\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF",desc:"\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u81EA\u52D5\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002",manage:"\u7BA1\u7406"},headingSidebarAndTabIcons:"\u30B5\u30A4\u30C9\u30D0\u30FC\u3068\u30BF\u30D6\u306E\u30A2\u30A4\u30B3\u30F3",biggerIcons:{name:"\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3",desc:"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E UI \u3088\u308A\u3082\u5927\u304D\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},clickableIcons:{nameDesktop:"\u30AF\u30EA\u30C3\u30AF\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3",nameMobile:"\u30BF\u30C3\u30D7\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3",descDesktop:"\u30A2\u30A4\u30B3\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30A2\u30A4\u30B3\u30F3\u30D4\u30C3\u30AB\u30FC\u304C\u958B\u304D\u307E\u3059\u3002",descMobile:"\u30A2\u30A4\u30B3\u30F3\u3092\u30BF\u30C3\u30D7\u3059\u308B\u3068\u30A2\u30A4\u30B3\u30F3\u30D4\u30C3\u30AB\u30FC\u304C\u958B\u304D\u307E\u3059\u3002"},showAllFileIcons:{name:"\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306E\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},showAllFolderIcons:{name:"\u3059\u3079\u3066\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306E\u306A\u3044\u30D5\u30A9\u30EB\u30C0\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},minimalFolderIcons:{name:"\u6700\u5C0F\u9650\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3",desc:"\u30D5\u30A9\u30EB\u30C0\u306E\u77E2\u5370\u3092\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002"},headingIconPicker:"\u30A2\u30A4\u30B3\u30F3 \u30D4\u30C3\u30AB\u30FC",showItemName:{name:"\u30A2\u30A4\u30C6\u30E0\u540D\u3092\u8868\u793A\u3057\u307E\u3059",desc:"\u7DE8\u96C6\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u540D\u524D\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},biggerSearchResults:{name:"\u691C\u7D22\u7D50\u679C\u3092\u5927\u304D\u304F\u3059\u308B",desc:"\u691C\u7D22\u7D50\u679C\u306B\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},maxSearchResults:{name:"\u691C\u7D22\u7D50\u679C\u306E\u6700\u5927\u6570",desc:"\u4E00\u5EA6\u306B\u8868\u793A\u3059\u308B\u30A2\u30A4\u30B3\u30F3\u306E\u6570\u3092\u9078\u629E\u3057\u307E\u3059\u3002"},colorPicker1:{name:"\u30E1\u30A4\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC",descDesktop:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002",descMobile:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30BF\u30C3\u30C1\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002"},colorPicker2:{name:"2 \u756A\u76EE\u306E\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC",descDesktop:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30BB\u30AB\u30F3\u30C0\u30EA \u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002",descMobile:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u9577\u62BC\u3057\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002"},headingAdvanced:"\u8A73\u7D30",uncolorHover:{name:"\u7121\u8272\u306E\u30DB\u30D0\u30FC",desc:"\u30A2\u30A4\u30C6\u30E0\u3092\u30DB\u30D0\u30FC\u3057\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorDrag:{name:"\u7121\u8272\u306E\u30C9\u30E9\u30C3\u30B0",desc:"\u30A2\u30A4\u30C6\u30E0\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorSelect:{name:"\u7121\u8272\u306E\u9078\u629E",desc:"\u30A2\u30A4\u30C6\u30E0\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorQuick:{name:"\u7121\u8272\u306E\u30EA\u30DC\u30F3 \u30DC\u30BF\u30F3",desc:"\u30E2\u30D0\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF \u30A2\u30AF\u30BB\u30B9 \u30EA\u30DC\u30F3 \u30DC\u30BF\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},rememberDeletedItems:{name:"\u524A\u9664\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8A18\u61B6\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306F\u3001\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u518D\u3073\u5B58\u5728\u3059\u308B\u3068\u304D\u306B\u518D\u8868\u793A\u3055\u308C\u307E\u3059\u3002"}}}});var Pe=H((Di,pt)=>{pt.exports={appItems:{help:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443",settings:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438",pin:"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u0432\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0435\u043D\u0438\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",sidebarLeft:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C/\u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043B\u0435\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",sidebarRight:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C/\u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u0440\u0430\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",minimize:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",maximize:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C",unmaximize:"\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043E\u043A\u043D\u043E"},menu:{changeIcon:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A...",changeIcons:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432...",removeIcon:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",removeIcons:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432",resetColor:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0446\u0432\u0435\u0442",resetColors:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C {#} \u0446\u0432\u0435\u0442\u043E\u0432",editRule:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E..."},iconPicker:{changeIcon:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",changeIcons:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432",changeEmoji:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u044D\u043C\u043E\u0434\u0437\u0438",changeEmojis:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u044D\u043C\u043E\u0434\u0437\u0438",changeMix:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A / \u044D\u043C\u043E\u0434\u0437\u0438",changeMixes:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432 / \u044D\u043C\u043E\u0434\u0437\u0438",overrulePrefix:"\u0412\u0430\u0448\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E ",overruleSuffix:" \u043E\u0442\u043C\u0435\u043D\u044F\u0435\u0442 \u044D\u0442\u043E\u0442 \u0437\u043D\u0430\u0447\u043E\u043A.",overrules:"\u0412\u0430\u0448 \u0441\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B \u043E\u0442\u043C\u0435\u043D\u044F\u0435\u0442 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437 \u044D\u0442\u0438\u0445 \u0437\u043D\u0430\u0447\u043A\u043E\u0432.",search:"\u041F\u043E\u0438\u0441\u043A",searchIcons:"\u041F\u043E\u0438\u0441\u043A \u0437\u043D\u0430\u0447\u043A\u043E\u0432...",searchEmojis:"\u041F\u043E\u0438\u0441\u043A \u044D\u043C\u043E\u0434\u0437\u0438...",searchMix:"\u041F\u043E\u0438\u0441\u043A \u0437\u043D\u0430\u0447\u043A\u043E\u0432 / \u044D\u043C\u043E\u0434\u0437\u0438...",changeColor:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0446\u0432\u0435\u0442",resetColor:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0446\u0432\u0435\u0442",removeIcon:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",icons:"\u0417\u043D\u0430\u0447\u043A\u0438",emojis:"\u042D\u043C\u043E\u0434\u0437\u0438",mixed:"\u0421\u043C\u0435\u0448\u0430\u043D\u043D\u044B\u0439",cancel:"\u041E\u0442\u043C\u0435\u043D\u0430",save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",colors:{red:"\u041A\u0440\u0430\u0441\u043D\u044B\u0439",orange:"\u041E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439",yellow:"\u0416\u0435\u043B\u0442\u044B\u0439",green:"\u0417\u0435\u043B\u0435\u043D\u044B\u0439",cyan:"\u0413\u043E\u043B\u0443\u0431\u043E\u0439",blue:"\u0421\u0438\u043D\u0438\u0439",purple:"\u0424\u0438\u043E\u043B\u0435\u0442\u043E\u0432\u044B\u0439",pink:"\u0420\u043E\u0437\u043E\u0432\u044B\u0439",gray:"\u0421\u0435\u0440\u044B\u0439"}},categories:{item:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442",items:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",appItem:"\u041A\u043D\u043E\u043F\u043A\u0430",appItems:"\u041A\u043D\u043E\u043F\u043A\u0438",tab:"\u0412\u043A\u043B\u0430\u0434\u043A\u0430",tabs:"\u0412\u043A\u043B\u0430\u0434\u043A\u0438",file:"\u0424\u0430\u0439\u043B",files:"\u0424\u0430\u0439\u043B\u044B",folder:"\u041F\u0430\u043F\u043A\u0430",folders:"\u041F\u0430\u043F\u043A\u0438",group:"\u0413\u0440\u0443\u043F\u043F\u0430",groups:"\u0413\u0440\u0443\u043F\u043F\u044B",search:"\u0417\u0430\u043F\u0440\u043E\u0441",searches:"\u0417\u0430\u043F\u0440\u043E\u0441\u044B",graph:"\u0413\u0440\u0430\u0444",graphs:"\u0413\u0440\u0430\u0444\u043E\u0432",url:"URL",urls:"URL",tag:"\u0422\u0435\u0433",tags:"\u0422\u0435\u0433\u0438",property:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E",properties:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432",ribbonItem:"\u041B\u0435\u043D\u0442\u043E\u0447\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430",ribbonItems:"\u041B\u0435\u043D\u0442\u043E\u0447\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u044B",rule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430"},rulePicker:{selectPage:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443",fileRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0430\u0439\u043B\u043E\u0432",folderRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u043F\u0430\u043F\u043E\u043A",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430",addRule:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",editRule:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",removeRule:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",untitledRule:"\u0411\u0435\u0437\u044B\u043C\u044F\u043D\u043D\u043E\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",drag:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044C"},ruleEditor:{fileRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u0444\u0430\u0439\u043B\u0430",folderRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u043F\u0430\u043F\u043A\u0438",conditions:"\u0423\u0441\u043B\u043E\u0432\u0438\u044F",addCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",resetCondition:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",removeCondition:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",removeRule:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",buttonMatch:"1 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",buttonMatches:"{#} \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",buttonNoMatches:"\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",enterName:"\u0414\u0430\u0439\u0442\u0435 \u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0430\u0432\u0438\u043B\u0443 \u0438\u043C\u044F",enterValue:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",enterRegex:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u0435 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435",enterHexCode:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 #hexcode",enterNumber:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E",matchConditions:{name:"\u0423\u0441\u043B\u043E\u0432\u0438\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F",desc:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u0439 \u0434\u043E\u043B\u0436\u043D\u043E \u0441\u043E\u0432\u043F\u0430\u0441\u0442\u044C.",all:"\u0412\u0441\u0435",\u043B\u044E\u0431\u043E\u0439:"\u041B\u044E\u0431\u043E\u0439",\u043D\u0435\u0442:"\u041D\u0435\u0442"},source:{icon:"\u0417\u043D\u0430\u0447\u043E\u043A",color:"\u0426\u0432\u0435\u0442",name:"\u0418\u043C\u044F",filename:"\u0418\u043C\u044F \u0444\u0430\u0439\u043B\u0430",extension:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435",tree:"\u0414\u0435\u0440\u0435\u0432\u043E \u043F\u0430\u043F\u043E\u043A",path:"\u041F\u0443\u0442\u044C \u0432 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435",headings:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438",links:"\u0421\u0441\u044B\u043B\u043A\u0438",tags:"\u0422\u0435\u0433\u0438",properties:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430...",created:"\u0414\u0430\u0442\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F",modified:"\u0414\u0430\u0442\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",clock:"\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0435 \u0447\u0430\u0441\u044B"},operator:{is:"\u0435\u0441\u0442\u044C","!is":"\u043D\u0435 \u0435\u0441\u0442\u044C",contains:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",startsWith:"\u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",endsWith:"\u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",matches:"\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex","!contains":"\u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","!startsWith":"\u043D\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441","!endsWith":"\u043D\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430","!matches":"\u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",includes:"\u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","!includes":"\u043D\u0435 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442",allAre:"\u0432\u0441\u0435 \u0435\u0441\u0442\u044C",allContain:"\u0432\u0441\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442",allStartWith:"\u0432\u0441\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u044E\u0442\u0441\u044F \u0441",allEndWith:"\u0432\u0441\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0430",allMatch:"\u0432\u0441\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0442 regex",anyContain:"\u043B\u044E\u0431\u043E\u0439 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",anyStartWith:"\u043B\u044E\u0431\u043E\u0439 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",anyEndWith:"\u043B\u044E\u0431\u043E\u0439 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",anyMatch:"\u043B\u044E\u0431\u043E\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",noneContain:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",noneStartWith:"\u043D\u0438 \u043E\u0434\u043D\u043E \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",noneEndWith:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",noneMatch:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",countIs:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0440\u0430\u0432\u043D\u043E","!countIs":"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u043E",countIsLess:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043C\u0435\u043D\u044C\u0448\u0435",countIsMore:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0431\u043E\u043B\u044C\u0448\u0435",isTrue:"\u0438\u0441\u0442\u0438\u043D\u0430","!isTrue":"\u043D\u0435 \u0438\u0441\u0442\u0438\u043D\u0430",isFalse:"\u043B\u043E\u0436\u044C","!isFalse":"\u043D\u0435 \u043B\u043E\u0436\u044C",equals:"\u0440\u0430\u0432\u043D\u043E","!equals":"\u043D\u0435 \u0440\u0430\u0432\u043D\u043E",isLess:"\u043C\u0435\u043D\u044C\u0448\u0435",isMore:"\u0431\u043E\u043B\u044C\u0448\u0435",isDivisible:"\u0434\u0435\u043B\u0438\u0442\u0441\u044F \u043D\u0430","!isLess":"\u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435","!isMore":"\u043D\u0435 \u0431\u043E\u043B\u044C\u0448\u0435","!isDivisible":"\u043D\u0435 \u0434\u0435\u043B\u0438\u0442\u0441\u044F \u043D\u0430",isBefore:"\u0434\u043E",isAfter:"\u043F\u043E\u0441\u043B\u0435",isNow:"\u0441\u0435\u0439\u0447\u0430\u0441","!isNow":"\u043D\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",isBeforeNow:"\u0434\u043E \u0441\u0435\u0439\u0447\u0430\u0441",isAfterNow:"\u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",timeIs:"\u0432\u0440\u0435\u043C\u044F","!timeIs":"\u0432\u0440\u0435\u043C\u044F \u043D\u0435",timeIsBefore:"\u0432\u0440\u0435\u043C\u044F \u0434\u043E",timeIsAfter:"\u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435",timeIsNow:"\u0432\u0440\u0435\u043C\u044F \u0441\u0435\u0439\u0447\u0430\u0441","!timeIsNow":"\u0432\u0440\u0435\u043C\u044F \u043D\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",timeIsBeforeNow:"\u0432\u0440\u0435\u043C\u044F \u0434\u043E \u0441\u0435\u0439\u0447\u0430\u0441",timeIsAfterNow:"\u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",dateIs:"\u0434\u0430\u0442\u0430","!dateIs":"\u0434\u0430\u0442\u0430 \u043D\u0435",dateIsBefore:"\u0434\u0430\u0442\u0430 \u0434\u043E",dateIsAfter:"\u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u043B\u0435",isToday:"\u0434\u0430\u0442\u0430 \u0441\u0435\u0433\u043E\u0434\u043D\u044F","!isToday":"\u0434\u0430\u0442\u0430 \u043D\u0435 \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isBeforeToday:"\u0434\u0430\u0442\u0430 \u0434\u043E \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isAfterToday:"\u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isLessDaysAgo:"\u043C\u0435\u043D\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isLessDaysAway:"\u043C\u0435\u043D\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isMoreDaysAgo:"\u0431\u043E\u043B\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isMoreDaysAway:"\u0431\u043E\u043B\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",weekdayIs:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438","!weekdayIs":"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u043D\u0435",weekdayIsBefore:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u0434\u043E",weekdayIsAfter:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u043F\u043E\u0441\u043B\u0435",monthdayIs:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430","!monthdayIs":"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u043D\u0435",monthdayIsBefore:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u0434\u043E",monthdayIsAfter:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u043F\u043E\u0441\u043B\u0435",monthIs:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C","!monthIs":"\u043C\u0435\u0441\u044F\u0446 \u043D\u0435\u0442",monthIsBefore:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C \u0434\u043E",monthIsAfter:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C \u043F\u043E\u0441\u043B\u0435",yearIs:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C","!yearIs":"\u0433\u043E\u0434 \u043D\u0435\u0442",yearIsBefore:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C \u0434\u043E",yearIsAfter:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C \u043F\u043E\u0441\u043B\u0435",iconIs:"ID \u0435\u0441\u0442\u044C","!iconIs":"ID \u043D\u0435\u0442",nameIs:"\u0438\u043C\u044F \u0435\u0441\u0442\u044C","!nameIs":"\u0438\u043C\u044F \u043D\u0435\u0442",nameContains:"\u0438\u043C\u044F \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",nameStartsWith:"\u0438\u043C\u044F \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",nameEndsWith:"\u0438\u043C\u044F \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",nameMatches:"\u0438\u043C\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex","!nameContains":"\u0438\u043C\u044F \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","!nameStartsWith":"\u0438\u043C\u044F \u043D\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441","!nameEndsWith":"\u0438\u043C\u044F \u043D\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430","!nameMatches":"\u0438\u043C\u044F \u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",colorIs:"\u0435\u0441\u0442\u044C","!colorIs":"\u043D\u0435\u0442",hexIs:"hex \u0435\u0441\u0442\u044C","!hexIs":"hex \u043D\u0435\u0442",hasValue:"\u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435","!hasValue":"\u043D\u0435 \u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",hasProperty:"\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442","!hasProperty":"\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442"},weekday:{"1":"\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","2":"\u0412\u0442\u043E\u0440\u043D\u0438\u043A","3":"\u0421\u0440\u0435\u0434\u0430","4":"\u0427\u0435\u0442\u0432\u0435\u0440\u0433","5":"\u041F\u044F\u0442\u043D\u0438\u0446\u0430","6":"\u0421\u0443\u0431\u0431\u043E\u0442\u0430","7":"\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435"},month:{"1":"\u042F\u043D\u0432\u0430\u0440\u044C","2":"\u0424\u0435\u0432\u0440\u0430\u043B\u044C","3":"\u041C\u0430\u0440\u0442","4":"\u0410\u043F\u0440\u0435\u043B\u044C","5":"\u041C\u0430\u0439","6":"\u0418\u044E\u043D\u044C","7":"\u0418\u044E\u043B\u044C","8":"\u0410\u0432\u0433\u0443\u0441\u0442","9":"\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","10":"\u041E\u043A\u0442\u044F\u0431\u0440\u044C","11":"\u041D\u043E\u044F\u0431\u0440\u044C","12":"\u0414\u0435\u043A\u0430\u0431\u0440\u044C"}},ruleChecker:{fileMatch:"1 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 \u0444\u0430\u0439\u043B",folderMatch:"1 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F \u043F\u0430\u043F\u043A\u0430",filesMatch:"{#} \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432",foldersMatch:"{#} \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u043F\u0430\u043F\u043E\u043A",highlight:"\u0412\u044B\u0434\u0435\u043B\u0438\u0442\u044C",headingMatches:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F"},commands:{openRulebook:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",toggleBiggerIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",toggleClickableIcons:{desktop:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043B\u0438\u043A\u0430\u0431\u0435\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",mobile:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0435\u043D\u0441\u043E\u0440\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438"},toggleAllFileIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432",toggleAllFolderIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",toggleMinimalFolderIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",toggleBiggerSearchResults:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",changeIconCurrentFile:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430"},settings:{values:{on:"\u0412\u043A\u043B",off:"\u0412\u044B\u043A\u043B",desktop:"\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043D\u0430\u0441\u0442\u043E\u043B\u044C\u043D\u044B\u0445 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u0432",mobile:"\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432",list:"\u0421\u043F\u0438\u0441\u043E\u043A \u0446\u0432\u0435\u0442\u043E\u0432",rgb:"\u0412\u044B\u0431\u043E\u0440 RGB"},rulebook:{name:"\u0421\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",desc:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u043E\u0432 \u0444\u0430\u0439\u043B\u043E\u0432 \u0438 \u043F\u0430\u043F\u043E\u043A.",manage:"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C"},headingSidebarAndTabIcons:"\u0417\u043D\u0430\u0447\u043A\u0438 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A",biggerIcons:{name:"\u0411\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0431\u043E\u043B\u044C\u0448\u0435\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430, \u0447\u0435\u043C \u0432 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u043C \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E."},clickableIcons:{nameDesktop:"\u041A\u043B\u0438\u043A\u0430\u0435\u043C\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",nameMobile:"\u0421\u0435\u043D\u0441\u043E\u0440\u043D\u044B\u0435 \u0438\u043A\u043E\u043D\u043A\u0438",descDesktop:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0437\u043D\u0430\u0447\u043E\u043A, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432.",descMobile:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0437\u043D\u0430\u0447\u043E\u043A, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432."},showAllFileIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432, \u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},showAllFolderIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A, \u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},minimalFolderIcons:{name:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",desc:"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u0435\u043B\u043A\u0438 \u043F\u0430\u043F\u043E\u043A \u043D\u0430 \u0432\u0430\u0448\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A."},headingIconPicker:"\u0412\u044B\u0431\u043E\u0440 \u0437\u043D\u0430\u0447\u043A\u043E\u0432",showItemName:{name:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043C\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043C\u044F \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},biggerSearchResults:{name:"\u0411\u043E\u043B\u044C\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430\u0445 \u043F\u043E\u0438\u0441\u043A\u0430."},maxSearchResults:{name:"\u041C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E\u0438\u0441\u043A\u0430",desc:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u0447\u043A\u043E\u0432 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E"},colorPicker1:{name:"\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430",descDesktop:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0443\u0437\u044B\u0440\u044C",descMobile:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043A\u0430\u0441\u0430\u043D\u0438\u0438 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0443\u0437\u044B\u0440\u044F"},colorPicker2:{name:"\u0412\u0442\u043E\u0440\u043E\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430",descDesktop:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0443\u0437\u044B\u0440\u044C",descMobile:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043D\u0438\u0438 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0443\u0437\u044B\u0440\u044F"},headingAdvanced:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E",uncolorHover:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u044B\u0439 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442."},uncolorDrag:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u043E\u0435 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},uncolorSelect:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u044B\u0439 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},uncolorQuick:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u0430\u044F \u043A\u043D\u043E\u043F\u043A\u0430 \u043B\u0435\u043D\u0442\u044B",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 \u043B\u0435\u043D\u0442\u044B \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0430 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0435."},rememberDeletedItems:{name:"\u0417\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432",desc:"\u041B\u044E\u0431\u044B\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0441\u043D\u043E\u0432\u0430, \u043A\u043E\u0433\u0434\u0430 \u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043D\u043E\u0432\u0430 \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F."}}}});var De=H((Bi,ft)=>{ft.exports={appItems:{help:"\u67E5\u770B\u5E2E\u52A9",settings:"\u6253\u5F00\u8BBE\u7F6E",pin:"\u89E3\u9501/\u9501\u5B9A",sidebarLeft:"\u6298\u53E0/\u5C55\u5F00\u5DE6\u4FA7\u8FB9\u680F",sidebarRight:"\u6298\u53E0/\u5C55\u5F00\u53F3\u4FA7\u8FB9\u680F",minimize:"\u6700\u5C0F\u5316",maximize:"\u6700\u5927\u5316",unmaximize:"\u5411\u4E0B\u8FD8\u539F",close:"\u5173\u95ED"},menu:{changeIcon:"\u66F4\u6539\u56FE\u6807\u2026\u2026",changeIcons:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807\u2026\u2026",removeIcon:"\u5220\u9664\u56FE\u6807",removeIcons:"\u5220\u9664 {#} \u4E2A\u56FE\u6807",resetColor:"\u91CD\u7F6E\u989C\u8272",resetColors:"\u91CD\u7F6E {#} \u79CD\u989C\u8272",editRule:"\u7F16\u8F91\u89C4\u5219\u2026\u2026"},iconPicker:{changeIcon:"\u66F4\u6539\u56FE\u6807",changeIcons:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807",changeEmoji:"\u66F4\u6539\u8868\u60C5\u7B26\u53F7",changeEmojis:"\u66F4\u6362 {#} \u4E2A\u8868\u60C5\u7B26\u53F7",changeMix:"\u66F4\u6539\u56FE\u6807/\u8868\u60C5\u7B26\u53F7",changeMixes:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807/\u8868\u60C5\u7B26\u53F7",overrulePrefix:"\u60A8\u7684\u89C4\u5219 ",overruleSuffix:" \u6B63\u5728\u8986\u76D6\u8FD9\u4E2A\u56FE\u6807\u3002",overrules:"\u60A8\u7684\u89C4\u5219\u4E66\u6B63\u5728\u8986\u76D6\u8FD9\u4E9B\u56FE\u6807\u4E2D\u7684\u4E00\u4E9B\u3002",search:"\u641C\u7D22",searchIcons:"\u641C\u7D22\u56FE\u6807\u2026\u2026",searchEmojis:"\u641C\u7D22\u8868\u60C5\u7B26\u53F7\u2026\u2026",searchMix:"\u641C\u7D22\u56FE\u6807/\u8868\u60C5\u7B26\u53F7\u2026\u2026",changeColor:"\u6362\u989C\u8272",resetColor:"\u91CD\u7F6E\u989C\u8272",removeIcon:"\u5220\u9664\u56FE\u6807",icons:"\u56FE\u6807",emojis:"\u8868\u60C5\u7B26\u53F7",mixed:"\u6DF7\u5408",cancel:"\u53D6\u6D88",save:"\u4FDD\u5B58",colors:{red:"\u7EA2\u8272",orange:"\u6A59\u8272",yellow:"\u9EC4\u8272",green:"\u7EFF\u8272",cyan:"\u9752\u8272",blue:"\u84DD\u8272",purple:"\u7D2B\u8272",pink:"\u7C89\u8272",gray:"\u7070\u8272"}},categories:{item:"\u9879",items:"\u9879",appItem:"\u6309\u94AE",appItems:"\u6309\u94AE",tab:"\u6807\u7B7E",tabs:"\u6807\u7B7E",file:"\u6587\u4EF6",files:"\u6587\u4EF6",folder:"\u6587\u4EF6\u5939",folders:"\u6587\u4EF6\u5939",group:"\u4E66\u7B7E\u7EC4",groups:"\u4E66\u7B7E\u7EC4",search:"\u67E5\u8BE2",searches:"\u67E5\u8BE2",graph:"\u5173\u7CFB\u56FE\u8C31",graphs:"\u5173\u7CFB\u56FE\u8C31",url:"URL",urls:"URL",tag:"\u6807\u7B7E",tags:"\u6807\u7B7E",property:"\u6587\u6863\u5C5E\u6027",properties:"\u6587\u6863\u5C5E\u6027",ribbonItem:"\u5DE5\u5177\u680F\u547D\u4EE4",ribbonItems:"\u5DE5\u5177\u680F\u547D\u4EE4",rule:"\u89C4\u5219",rules:"\u89C4\u5219"},rulePicker:{selectPage:"\u9009\u62E9\u9875\u9762",fileRules:"\u6587\u4EF6\u89C4\u5219",folderRules:"\u6587\u4EF6\u5939\u89C4\u5219",rules:"\u89C4\u5219",addRule:"\u6DFB\u52A0\u89C4\u5219",editRule:"\u7F16\u8F91\u89C4\u5219",removeRule:"\u5220\u9664\u89C4\u5219",untitledRule:"\u65E0\u6807\u9898\u89C4\u5219",drag:"\u62D6\u52A8\u53EF\u8C03\u6574\u5E03\u5C40"},ruleEditor:{fileRule:"\u6587\u4EF6\u89C4\u5219",folderRule:"\u6587\u4EF6\u5939\u89C4\u5219",conditions:"\u6761\u4EF6",addCondition:"\u6DFB\u52A0\u6761\u4EF6",resetCondition:"\u91CD\u7F6E\u6761\u4EF6",removeCondition:"\u5220\u9664\u6761\u4EF6",removeRule:"\u5220\u9664\u89C4\u5219",buttonMatch:"1 \u4E2A\u5339\u914D",buttonMatches:"{#} \u4E2A\u5339\u914D",buttonNoMatches:"\u65E0\u5339\u914D",enterName:"\u4E3A\u8BE5\u89C4\u5219\u547D\u540D",enterValue:"\u8F93\u5165\u4E00\u4E2A\u503C",enterRegex:"\u8F93\u5165\u4E00\u4E2A\u6B63\u5219\u8868\u8FBE\u5F0F",enterHexCode:"\u8F93\u5165\u4E00\u4E2A #hexcode",enterNumber:"\u8F93\u5165\u4E00\u4E2A\u6570\u5B57",matchConditions:{name:"\u5339\u914D\u6761\u4EF6",desc:"\u9009\u62E9\u9700\u8981\u5339\u914D\u7684\u6761\u4EF6\u6570\u91CF\u3002",all:"\u5168\u90E8",any:"\u4EFB\u610F",none:"\u65E0"},source:{icon:"\u56FE\u6807",color:"\u989C\u8272",name:"\u540D\u79F0",filename:"\u6587\u4EF6\u540D",extension:"\u6269\u5C55\u540D",tree:"\u6587\u4EF6\u5939\u6811",path:"\u6587\u4EF6\u5E93\u4E2D\u7684\u8DEF\u5F84",headings:"\u6807\u9898",links:"\u94FE\u63A5",tags:"\u6807\u7B7E",properties:"\u5C5E\u6027\u2026\u2026",created:"\u521B\u5EFA\u65E5\u671F",modified:"\u4FEE\u6539\u65E5\u671F",clock:"\u7CFB\u7EDF\u65F6\u949F"},operator:{is:"\u662F","!is":"\u4E0D\u662F",contains:"\u5305\u542B",startsWith:"\u4EE5...\u5F00\u5934",endsWith:"\u4EE5...\u7ED3\u5C3E",matches:"\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F","!contains":"\u4E0D\u5305\u542B","!startsWith":"\u4E0D\u4EE5...\u5F00\u5934","!endsWith":"\u4E0D\u4EE5...\u7ED3\u5C3E","!matches":"\u4E0D\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",includes:"\u5305\u542B\u9879\u76EE","!includes":"\u4E0D\u5305\u62EC\u9879\u76EE",allAre:"\u5168\u90E8\u662F",allContain:"\u5168\u90E8\u5305\u542B",allStartWith:"\u5168\u90E8\u4EE5...\u5F00\u5934",allEndWith:"\u5168\u90E8\u4EE5...\u7ED3\u5C3E",allMatch:"\u5168\u90E8\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",anyContain:"\u4EFB\u4F55\u5305\u542B",anyStartWith:"\u4EFB\u4F55\u4EE5...\u5F00\u5934",anyEndWith:"\u4EFB\u4F55\u4EE5...\u7ED3\u5C3E",anyMatch:"\u4EFB\u4F55\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",noneContain:"\u4E0D\u5305\u542B",noneStartWith:"\u4E0D\u4EE5...\u5F00\u5934",noneEndWith:"\u4E0D\u4EE5...\u7ED3\u5C3E",noneMatch:"\u4E0D\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",countIs:"\u8BA1\u6570\u662F","!countIs":"\u8BA1\u6570\u4E0D\u662F",countIsLess:"\u8BA1\u6570\u5C0F\u4E8E",countIsMore:"\u8BA1\u6570\u5927\u4E8E",isTrue:"\u4E3A\u771F","!isTrue":"\u4E0D\u4E3A\u771F",isFalse:"\u4E3A\u5047","!isFalse":"\u4E0D\u4E3A\u5047",equals:"\u7B49\u4E8E","!equals":"\u4E0D\u7B49\u4E8E",isLess:"\u5C0F\u4E8E",isMore:"\u5927\u4E8E",isDivisible:"\u80FD\u88AB...\u6574\u9664","!isLess":"\u4E0D\u5C0F\u4E8E","!isMore":"\u4E0D\u5927\u4E8E","!isDivisible":"\u4E0D\u80FD\u88AB...\u6574\u9664",isBefore:"\u5728...\u4E4B\u524D",isAfter:"\u5728...\u4E4B\u540E",isNow:"\u662F\u73B0\u5728\u7684","!isNow":"\u4E0D\u662F\u73B0\u5728\u7684",isBeforeNow:"\u5728\u73B0\u5728\u4E4B\u524D",isAfterNow:"\u5728\u73B0\u5728\u4E4B\u540E",timeIs:"\u65F6\u95F4\u662F","!timeIs":"\u65F6\u95F4\u4E0D\u662F",timeIsBefore:"\u65F6\u95F4\u5728\u4E4B\u524D",timeIsAfter:"\u65F6\u95F4\u5728\u4E4B\u540E",timeIsNow:"\u65F6\u95F4\u662F\u73B0\u5728","!timeIsNow":"\u65F6\u95F4\u4E0D\u662F\u73B0\u5728",timeIsBeforeNow:"\u65F6\u95F4\u5728\u73B0\u5728\u4E4B\u524D",timeIsAfterNow:"\u65F6\u95F4\u5728\u73B0\u5728\u4E4B\u540E",dateIs:"\u65E5\u671F\u662F","!dateIs":"\u65E5\u671F\u4E0D\u662F",dateIsBefore:"\u65E5\u671F\u5728\u4E4B\u524D",dateIsAfter:"\u65E5\u671F\u5728\u4E4B\u540E",isToday:"\u65E5\u671F\u662F\u4ECA\u5929","!isToday":"\u65E5\u671F\u4E0D\u662F\u4ECA\u5929",isBeforeToday:"\u65E5\u671F\u5728\u4ECA\u5929\u4E4B\u524D",isAfterToday:"\u65E5\u671F\u5728\u4ECA\u5929\u4E4B\u540E",isLessDaysAgo:"\u5C11\u4E8E...\u5929\u524D",isLessDaysAway:"\u8DDD\u79BB...\u5929\u8FD8\u4E0D\u5230",isMoreDaysAgo:"\u8D85\u8FC7...\u5929\u524D",isMoreDaysAway:"\u8DDD\u79BB...\u5929\u8FD8\u8D85\u8FC7",weekdayIs:"\u661F\u671F\u51E0\u662F","!weekdayIs":"\u661F\u671F\u51E0\u4E0D\u662F",weekdayIsBefore:"\u661F\u671F\u51E0\u5728\u4E4B\u524D",weekdayIsAfter:"\u661F\u671F\u51E0\u5728\u4E4B\u540E",monthdayIs:"\u6708\u4EFD\u7684\u65E5\u671F\u662F","!monthdayIs":"\u6708\u4EFD\u7684\u65E5\u671F\u4E0D\u662F",monthdayIsBefore:"\u6708\u4EFD\u7684\u65E5\u671F\u662F\u4E4B\u524D",monthdayIsAfter:"\u6708\u4EFD\u7684\u65E5\u671F\u662F\u4E4B\u540E",monthIs:"\u6708\u4EFD\u662F","!monthIs":"\u6708\u4EFD\u4E0D\u662F",monthIsBefore:"\u6708\u4EFD\u5728\u4E4B\u524D",monthIsAfter:"\u6708\u4EFD\u5728\u4E4B\u540E",yearIs:"\u5E74\u4EFD\u5728","!yearIs":"\u5E74\u4EFD\u4E0D\u5728",yearIsBefore:"\u5E74\u4EFD\u5728\u4E4B\u524D",yearIsAfter:"\u5E74\u4EFD\u5728\u4E4B\u540E",iconIs:"ID\u662F","!iconIs":"ID\u4E0D\u662F",nameIs:"\u540D\u79F0\u662F","!nameIs":"\u540D\u79F0\u4E0D\u662F",nameContains:"\u540D\u79F0\u5305\u542B",nameStartsWith:"\u540D\u79F0\u4EE5...\u5F00\u5934",nameEndsWith:"\u540D\u79F0\u4EE5...\u7ED3\u5C3E",nameMatches:"\u540D\u79F0\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D","!nameContains":"\u540D\u79F0\u4E0D\u5305\u542B","!nameStartsWith":"\u540D\u79F0\u4E0D\u4EE5...\u5F00\u5934","!nameEndsWith":"\u540D\u79F0\u4E0D\u4EE5...\u7ED3\u5C3E","!nameMatches":"\u540D\u79F0\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u4E0D\u5339\u914D",colorIs:"\u662F","!colorIs":"\u4E0D\u662F",hexIs:"\u5341\u516D\u8FDB\u5236\u989C\u8272\u662F","!hexIs":"\u5341\u516D\u8FDB\u5236\u989C\u8272\u4E0D\u662F",hasValue:"\u6709\u4EFB\u4F55\u503C","!hasValue":"\u6CA1\u6709\u503C",hasProperty:"\u6709\u5C5E\u6027","!hasProperty":"\u6CA1\u6709\u5C5E\u6027"},weekday:{"1":"\u661F\u671F\u4E00","2":"\u661F\u671F\u4E8C","3":"\u661F\u671F\u4E09","4":"\u661F\u671F\u56DB","5":"\u661F\u671F\u4E94","6":"\u661F\u671F\u516D","7":"\u661F\u671F\u65E5"},month:{"1":"\u4E00\u6708","2":"\u4E8C\u6708","3":"\u4E09\u6708","4":"\u56DB\u6708","5":"\u4E94\u6708","6":"\u516D\u6708","7":"\u4E03\u6708","8":"\u516B\u6708","9":"\u4E5D\u6708","10":"\u5341\u6708","11":"\u5341\u4E00\u6708","12":"\u5341\u4E8C\u6708"}},ruleChecker:{fileMatch:"1 \u4E2A\u5339\u914D\u6587\u4EF6",folderMatch:"1 \u4E2A\u5339\u914D\u6587\u4EF6\u5939",filesMatch:"{#} \u4E2A\u5339\u914D\u6587\u4EF6",foldersMatch:"{#} \u4E2A\u5339\u914D\u6587\u4EF6\u5939",highlight:"\u7A81\u51FA\u663E\u793A",headingMatches:"\u5339\u914D"},commands:{openRulebook:"\u6253\u5F00\u89C4\u5219\u4E66",toggleBiggerIcons:"\u5207\u6362\u66F4\u5927\u56FE\u6807",toggleClickableIcons:{desktop:"\u5207\u6362\u53EF\u70B9\u51FB\u56FE\u6807",mobile:"\u5207\u6362\u53EF\u89E6\u6478\u56FE\u6807"},toggleAllFileIcons:"\u5207\u6362\u6240\u6709\u6587\u4EF6\u56FE\u6807",toggleAllFolderIcons:"\u5207\u6362\u6240\u6709\u6587\u4EF6\u5939\u56FE\u6807",toggleMinimalFolderIcons:"\u5207\u6362\u6700\u5C0F\u6587\u4EF6\u5939\u56FE\u6807",toggleBiggerSearchResults:"\u5207\u6362\u66F4\u5927\u7684\u641C\u7D22\u7ED3\u679C",changeIconCurrentFile:"\u66F4\u6539\u5F53\u524D\u6587\u4EF6\u7684\u56FE\u6807"},settings:{values:{on:"\u5F00\u542F",off:"\u5173\u95ED",desktop:"\u4EC5\u9650\u684C\u9762",mobile:"\u4EC5\u9650\u79FB\u52A8\u8BBE\u5907",list:"\u989C\u8272\u5217\u8868",rgb:"RGB \u9009\u62E9\u5668"},rulebook:{name:"\u89C4\u5219\u4E66",desc:"\u4E3A\u6587\u4EF6\u548C\u6587\u4EF6\u5939\u56FE\u6807\u8BBE\u7F6E\u81EA\u52A8\u89C4\u5219\u3002",manage:"\u7BA1\u7406"},headingSidebarAndTabIcons:"\u4FA7\u8FB9\u680F\u548C\u6807\u7B7E\u56FE\u6807",biggerIcons:{name:"\u66F4\u5927\u7684\u56FE\u6807",desc:"\u663E\u793A\u6BD4\u9ED8\u8BA4 UI \u66F4\u5927\u7684\u56FE\u6807\u3002"},clickableIcons:{nameDesktop:"\u53EF\u70B9\u51FB\u7684\u56FE\u6807",nameMobile:"\u53EF\u89E6\u6478\u56FE\u6807",descDesktop:"\u5355\u51FB\u56FE\u6807\u4EE5\u6253\u5F00\u56FE\u6807\u9009\u62E9\u5668\u3002",descMobile:"\u70B9\u51FB\u56FE\u6807\u4EE5\u6253\u5F00\u56FE\u6807\u9009\u62E9\u5668\u3002"},showAllFileIcons:{name:"\u663E\u793A\u6240\u6709\u6587\u4EF6\u56FE\u6807",desc:"\u663E\u793A\u6CA1\u6709\u81EA\u5B9A\u4E49\u56FE\u6807\u7684\u6587\u4EF6\u56FE\u6807\u3002"},showAllFolderIcons:{name:"\u663E\u793A\u6240\u6709\u6587\u4EF6\u5939\u56FE\u6807",desc:"\u663E\u793A\u6CA1\u6709\u81EA\u5B9A\u4E49\u56FE\u6807\u7684\u6587\u4EF6\u5939\u56FE\u6807\u3002"},minimalFolderIcons:{name:"\u6700\u5C0F\u6587\u4EF6\u5939\u56FE\u6807",desc:"\u7528\u60A8\u7684\u6587\u4EF6\u5939\u56FE\u6807\u66FF\u6362\u6587\u4EF6\u5939\u7BAD\u5934\u3002"},headingIconPicker:"\u56FE\u6807\u9009\u62E9\u5668",showItemName:{name:"\u663E\u793A\u9879\u76EE\u540D\u79F0",desc:"\u663E\u793A\u6B63\u5728\u7F16\u8F91\u7684\u9879\u76EE\u7684\u540D\u79F0\u3002"},biggerSearchResults:{name:"\u66F4\u5927\u7684\u641C\u7D22\u7ED3\u679C",desc:"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u663E\u793A\u66F4\u5927\u7684\u56FE\u6807\u3002"},maxSearchResults:{name:"\u6700\u5927\u641C\u7D22\u7ED3\u679C",desc:"\u9009\u62E9\u4E00\u6B21\u663E\u793A\u591A\u5C11\u4E2A\u56FE\u6807\u3002"},colorPicker1:{name:"\u4E3B\u989C\u8272\u9009\u62E9\u5668",descDesktop:"\u5355\u51FB\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002",descMobile:"\u89E6\u6478\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002"},colorPicker2:{name:"\u7B2C\u4E8C\u4E2A\u989C\u8272\u9009\u62E9\u5668",descDesktop:"\u5F53\u60A8\u53CC\u51FB\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002",descMobile:"\u5F53\u60A8\u6309\u4F4F\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002"},headingAdvanced:"\u9AD8\u7EA7",uncolorHover:{name:"\u65E0\u8272\u60AC\u505C",desc:"\u60AC\u505C\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorDrag:{name:"\u65E0\u8272\u62D6\u52A8",desc:"\u62D6\u52A8\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorSelect:{name:"\u65E0\u8272\u9009\u62E9",desc:"\u9009\u62E9\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorQuick:{name:"\u65E0\u8272\u529F\u80FD\u533A\u6309\u94AE",desc:"\u7981\u7528\u79FB\u52A8\u8BBE\u5907\u4E0A\u5FEB\u901F\u8BBF\u95EE\u529F\u80FD\u533A\u6309\u94AE\u7684\u56FE\u6807\u989C\u8272\u3002"},rememberDeletedItems:{name:"\u8BB0\u4F4F\u5DF2\u5220\u9664\u9879\u76EE\u7684\u56FE\u6807",desc:"\u5F53\u9879\u76EE\u518D\u6B21\u5B58\u5728\u65F6\uFF0C\u4EFB\u4F55\u81EA\u5B9A\u4E49\u56FE\u6807\u90FD\u4F1A\u91CD\u65B0\u51FA\u73B0\u3002"}}}});var St={};Ge(St,{EMOJIS:()=>F,ICONS:()=>P,STRINGS:()=>s,default:()=>he});module.exports=Ke(St);var S=require("obsidian");var w=require("obsidian");var G=require("obsidian");var re=new Map([["red","--color-red"],["orange","--color-orange"],["yellow","--color-yellow"],["green","--color-green"],["cyan","--color-cyan"],["blue","--color-blue"],["purple","--color-purple"],["pink","--color-pink"],["gray","--color-base-70"]]),we=new Map([["aliceblue","#f0f8ff"],["antiquewhite","#faebd7"],["aqua","#00ffff"],["aquamarine","#7fffd4"],["azure","#f0ffff"],["beige","#f5f5dc"],["bisque","#ffe4c4"],["black","#000000"],["blanchedalmond","#ffebcd"],["blue","#0000ff"],["blueviolet","#8a2be2"],["brown","#a52a2a"],["burlywood","#deb887"],["cadetblue","#5f9ea0"],["chartreuse","#7fff00"],["chocolate","#d2691e"],["coral","#ff7f50"],["cornflowerblue","#6495ed"],["cornsilk","#fff8dc"],["crimson","#dc143c"],["cyan","#00ffff"],["darkblue","#00008b"],["darkcyan","#008b8b"],["darkgoldenrod","#b8860b"],["darkgray","#a9a9a9"],["darkgreen","#006400"],["darkgrey","#a9a9a9"],["darkkhaki","#bdb76b"],["darkmagenta","#8b008b"],["darkolivegreen","#556b2f"],["darkorange","#ff8c00"],["darkorchid","#9932cc"],["darkred","#8b0000"],["darksalmon","#e9967a"],["darkseagreen","#8fbc8f"],["darkslateblue","#483d8b"],["darkslategray","#2f4f4f"],["darkslategrey","#2f4f4f"],["darkturquoise","#00ced1"],["darkviolet","#9400d3"],["deeppink","#ff1493"],["deepskyblue","#00bfff"],["dimgray","#696969"],["dimgrey","#696969"],["dodgerblue","#1e90ff"],["firebrick","#b22222"],["floralwhite","#fffaf0"],["forestgreen","#228b22"],["fuchsia","#ff00ff"],["gainsboro","#dcdcdc"],["ghostwhite","#f8f8ff"],["gold","#ffd700"],["goldenrod","#daa520"],["gray","#808080"],["green","#008000"],["greenyellow","#adff2f"],["grey","#808080"],["honeydew","#f0fff0"],["hotpink","#ff69b4"],["indianred","#cd5c5c"],["indigo","#4b0082"],["ivory","#fffff0"],["khaki","#f0e68c"],["lavender","#e6e6fa"],["lavenderblush","#fff0f5"],["lawngreen","#7cfc00"],["lemonchiffon","#fffacd"],["lightblue","#add8e6"],["lightcoral","#f08080"],["lightcyan","#e0ffff"],["lightgoldenrodyellow","#fafad2"],["lightgray","#d3d3d3"],["lightgreen","#90ee90"],["lightgrey","#d3d3d3"],["lightpink","#ffb6c1"],["lightsalmon","#ffa07a"],["lightseagreen","#20b2aa"],["lightskyblue","#87cefa"],["lightslategray","#778899"],["lightslategrey","#778899"],["lightsteelblue","#b0c4de"],["lightyellow","#ffffe0"],["lime","#00ff00"],["limegreen","#32cd32"],["linen","#faf0e6"],["magenta","#ff00ff"],["maroon","#800000"],["mediumaquamarine","#66cdaa"],["mediumblue","#0000cd"],["mediumorchid","#ba55d3"],["mediumpurple","#9370db"],["mediumseagreen","#3cb371"],["mediumslateblue","#7b68ee"],["mediumspringgreen","#00fa9a"],["mediumturquoise","#48d1cc"],["mediumvioletred","#c71585"],["midnightblue","#191970"],["mintcream","#f5fffa"],["mistyrose","#ffe4e1"],["moccasin","#ffe4b5"],["navajowhite","#ffdead"],["navy","#000080"],["oldlace","#fdf5e6"],["olive","#808000"],["olivedrab","#6b8e23"],["orange","#ffa500"],["orangered","#ff4500"],["orchid","#da70d6"],["palegoldenrod","#eee8aa"],["palegreen","#98fb98"],["paleturquoise","#afeeee"],["palevioletred","#db7093"],["papayawhip","#ffefd5"],["peachpuff","#ffdab9"],["peru","#cd853f"],["pink","#ffc0cb"],["plum","#dda0dd"],["powderblue","#b0e0e6"],["purple","#800080"],["rebeccapurple","#663399"],["red","#ff0000"],["rosybrown","#bc8f8f"],["royalblue","#4169e1"],["saddlebrown","#8b4513"],["salmon","#fa8072"],["sandybrown","#f4a460"],["seagreen","#2e8b57"],["seashell","#fff5ee"],["sienna","#a0522d"],["silver","#c0c0c0"],["skyblue","#87ceeb"],["slateblue","#6a5acd"],["slategray","#708090"],["slategrey","#708090"],["snow","#fffafa"],["springgreen","#00ff7f"],["steelblue","#4682b4"],["tan","#d2b48c"],["teal","#008080"],["thistle","#d8bfd8"],["tomato","#ff6347"],["transparent","#00000000"],["turquoise","#40e0d0"],["violet","#ee82ee"],["wheat","#f5deb3"],["white","#ffffff"],["whitesmoke","#f5f5f5"],["yellow","#ffff00"],["yellowgreen","#9acd32"]]),ue="rgb(128, 128, 128)",Ue=/color-mix\(in srgb, rgba?\((\d+), (\d+), (\d+)(?:, ([\d.]+))?\)(?: (\d+)%)?, rgba?\((\d+), (\d+), ([\d.]+)(?:, ([\d.]+))?\)(?: ([\d.]+)%)?\)/,C=class{static toRgb(a){let e="--icon-color",t=ue;if(!a)t=getComputedStyle(document.body).getPropertyValue(e);else if(re.has(a))e=re.get(a)??e,t=window.getComputedStyle(document.body).getPropertyValue(e);else if(we.has(a))t=we.get(a)??t;else if(CSS.supports("color",a))t=a;else return ue;this.convertEl.style.color=t;let i=this.convertEl.style.color;return i.startsWith("color-mix")?this.mixToRgb(i):i.startsWith("rgb")?i:ue}static toRgbObject(a){let[e,t,i]=this.toRgb(a).replaceAll(/[^\d.,]/g,"").split(",").map(Number);return{r:e,g:t,b:i}}static toHslArray(a){let[e,t,i]=this.toRgb(a).replaceAll(/[^\d.,]/g,"").split(",").map(Number);e=Math.max(Math.min(e,255),0)/255,t=Math.max(Math.min(t,255),0)/255,i=Math.max(Math.min(i,255),0)/255;let o=Math.max(e,t,i),n=Math.min(e,t,i),r=o-n,c=(o+n)/2,l=Number.isInteger(c)?0:(o-c)/Math.min(c,1-c),h=0;if(r>0)switch(o){case e:h=(t-i)/r%6;break;case t:h=(i-e)/r+2;break;case i:h=(e-t)/r+4;break}return[Math.round(h*60),Math.round(l*100),Math.round(c*100)]}static mixToRgb(a){let e=a.match(Ue);if(!e)return"rgb(0, 0, 0)";let[,t,i,o,n,r,c,l,h,g,m]=e.map(Number);r=isNaN(r)?isNaN(m)?50:100-m:r,m=isNaN(m)?100-r:m;let d=r+m;d!==100&&(r=r/d*100,m=m/d*100);let u=Math.round((t*r+c*m)/100),T=Math.round((i*r+l*m)/100),b=Math.round((o*r+h*m)/100);n=isNaN(n)?1:n,g=isNaN(g)?1:g;let f=(n*r+g*m)/100;return f!==1?`rgba(${u}, ${T}, ${b}, ${f})`:`rgb(${u}, ${T}, ${b})`}};C.convertEl=document.createElement("div");var J=require("obsidian");var E=class{constructor(a){this.eventListeners=new Map;this.mutationObservers=new Map;this.app=a.app,this.plugin=a}refreshIcon(a,e,t){if(e.addClass("iconic-icon"),a.icon){if(P.has(a.icon))(0,J.setIcon)(e,a.icon);else if(F.has(a.icon)){e.empty();let o=e.createDiv({cls:"iconic-emoji",text:a.icon});a.color&&E.colorFilter(o,a.color)}e.show()}else e.hasClass("collapse-icon")?(this.plugin.settings.showAllFolderIcons&&"iconDefault"in a&&a.iconDefault?(0,J.setIcon)(e,a.iconDefault):((0,J.setIcon)(e,"right-triangle"),e.removeClass("iconic-icon")),e.show()):e.hasClass("ribbon-divider")?e.removeClass("iconic-icon"):"iconDefault"in a&&a.iconDefault?((0,J.setIcon)(e,a.iconDefault),e.show()):(e.removeClass("iconic-icon"),e.hide());let i=e.find(".svg-icon");i&&(a.color?i.style.setProperty("color",C.toRgb(a.color)):i.style.removeProperty("color")),t?this.setEventListener(e,"click",t,{capture:!0}):this.stopEventListener(e,"click")}static colorFilter(a,e){let[t,i]=C.toHslArray(e);a.style.filter=`grayscale() sepia() hue-rotate(${t-50}deg) saturate(${i*5}%)`}setEventListener(a,e,t,i){this.eventListeners.has(e)||this.eventListeners.set(e,new Map);let o=this.eventListeners.get(e);if(o.has(a)){let{listener:n,options:r}=o.get(a);a.removeEventListener(e,n,r)}this.plugin.registerDomEvent(a,e,t,i),o.set(a,{listener:t,options:i})}stopEventListener(a,e){if(!a)return;let t=this.eventListeners.get(e);if(t?.has(a)){let{listener:i,options:o}=t.get(a);a.removeEventListener(e,i,o),t.delete(a)}}stopEventListeners(){for(let[a,e]of this.eventListeners)for(let[t,{listener:i,options:o}]of e)t.removeEventListener(a,i,o),e.delete(t)}setMutationObserver(a,e,t){this.setMutationsObserver(a,e,i=>{for(let o of i)t(o)})}setMutationsObserver(a,e,t){if(!a)return;let i=new MutationObserver(t);this.mutationObservers.has(a)&&this.mutationObservers.get(a)?.disconnect(),i.observe(a,e),this.mutationObservers.set(a,i)}stopMutationObserver(a){this.mutationObservers.get(a)?.disconnect(),this.mutationObservers.delete(a)}stopMutationObservers(){for(let[a,e]of this.mutationObservers)e.disconnect(),this.mutationObservers.delete(a)}unload(){this.refreshIcons(!0),this.stopEventListeners(),this.stopMutationObservers()}};var v=require("obsidian");var Y=require("obsidian");var q=class extends Y.Modal{constructor(e,t,i){super(e.app);this.plugin=e,this.page=t,this.matches=i;for(let o of this.plugin.commands)if(o.callback){let n=this.app.hotkeyManager?.customKeys?.[o.id]??[];for(let r of n)this.scope.register(r.modifiers,r.key,o.callback)}}static open(e,t,i){new q(e,t,i).open()}onOpen(){switch(this.page){case"file":{this.setTitle(this.matches.length===1?s.ruleChecker.fileMatch:s.ruleChecker.filesMatch.replace("{#}",this.matches.length.toString()));break}case"folder":this.setTitle(this.matches.length===1?s.ruleChecker.folderMatch:s.ruleChecker.foldersMatch.replace("{#}",this.matches.length.toString()))}this.containerEl.addClass("mod-confirmation"),this.contentEl.addClass("iconic-highlight-tree");let e=[];new Y.Setting(this.contentEl).setName(s.ruleChecker.highlight).addButton(i=>{i.setButtonText(s.ruleEditor.source.tree).onClick(()=>{e.forEach(o=>o.removeCta()),i.setCta(),this.contentEl.addClass("iconic-highlight-tree"),this.contentEl.removeClasses(["iconic-highlight-name","iconic-highlight-extension"])}),i.setCta(),e.push(i)}).addButton(i=>{i.setButtonText(s.ruleEditor.source.name).onClick(()=>{e.forEach(o=>o.removeCta()),i.setCta(),this.contentEl.removeClasses(["iconic-highlight-tree","iconic-highlight-extension"]),this.contentEl.addClass("iconic-highlight-name")}),e.push(i)}).addButton(i=>{i.setButtonText(s.ruleEditor.source.extension).setDisabled(this.page!=="file").onClick(()=>{e.forEach(o=>o.removeCta()),i.setCta(),this.contentEl.removeClasses(["iconic-highlight-tree","iconic-highlight-name"]),this.contentEl.addClass("iconic-highlight-extension")}),e.push(i)}),new Y.Setting(this.contentEl).setHeading().setName(s.ruleChecker.headingMatches);let t=this.contentEl.createEl("ol",{cls:"iconic-matches"});for(let i of this.matches){let{tree:o,basename:n,extension:r}=this.plugin.splitFilePath(i.id),c=t.createEl("li",{cls:"iconic-match"});o&&c.createSpan({cls:"iconic-match-tree",text:o}),n&&c.createSpan({cls:"iconic-match-name",text:n}),r&&(c.createSpan({text:"."}),c.createSpan({cls:"iconic-match-extension",text:r}))}}};var y=require("obsidian");var D=[...re.keys()],ge=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}refreshIcons(){}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},I=class extends y.Modal{constructor(e,t,i,o){super(e.app);this.colorPickerPaused=!1;this.colorPickerHovered=!1;this.searchResults=[];this.plugin=e,this.iconManager=new ge(e),this.items=t,this.icon=this.items.every(n=>n.icon===this.items[0].icon)?this.items[0].icon:void 0,this.color=this.items.every(n=>n.color===this.items[0].color)?this.items[0].color:void 0,this.callback=i,this.multiCallback=o;for(let n of this.plugin.commands)if(n.callback){let r=this.app.hotkeyManager?.customKeys?.[n.id]??[];for(let c of r)this.scope.register(c.modifiers,c.key,n.callback)}this.iconManager.setEventListener(this.modalEl,"pointerdown",()=>{this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null}),this.iconManager.setMutationObserver(activeDocument.body,{childList:!0},n=>{for(let r of n.addedNodes)r instanceof HTMLElement&&r.hasClass("tooltip")&&this.colorPickerHovered&&this.updateColorTooltip()})}static openSingle(e,t,i){new I(e,[t],i,null).open()}static openMulti(e,t,i){new I(e,t,null,i).open()}onOpen(){let{dialogState:e}=this.plugin.settings;if(this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-icon-picker"),this.setTitle(this.items.length===1?s.iconPicker.changeIcon:s.iconPicker.changeIcons.replace("{#}",this.items.length.toString())),this.updateOverruleReminder(),this.plugin.settings.showItemName==="on"||y.Platform.isDesktop&&this.plugin.settings.showItemName==="desktop"||y.Platform.isMobile&&this.plugin.settings.showItemName==="mobile"){let r=new y.Setting(this.contentEl).addText(l=>l.setValue(this.items.map(h=>h.name).join(", "))).setDisabled(!0),c=this.items.every(l=>l.category===this.items[0].category)?this.items[0].category:null;if(this.items.length===1)switch(c){default:r.setName(s.categories.item);break;case"app":r.setName(s.categories.appItem);break;case"tab":r.setName(s.categories.tab);break;case"file":r.setName(s.categories.file);break;case"folder":r.setName(s.categories.folder);break;case"group":r.setName(s.categories.group);break;case"search":r.setName(s.categories.search);break;case"graph":r.setName(s.categories.graph);break;case"url":r.setName(s.categories.url);break;case"tag":r.setName(s.categories.tag);break;case"property":r.setName(s.categories.property);break;case"ribbon":r.setName(s.categories.ribbonItem);break;case"rule":r.setName(s.categories.rule);break}else switch(c){default:r.setName(s.categories.items);break;case"app":r.setName(s.categories.appItems);break;case"tab":r.setName(s.categories.tabs);break;case"file":r.setName(s.categories.files);break;case"folder":r.setName(s.categories.folders);break;case"group":r.setName(s.categories.groups);break;case"search":r.setName(s.categories.searches);break;case"graph":r.setName(s.categories.graphs);break;case"url":r.setName(s.categories.urls);break;case"tag":r.setName(s.categories.tags);break;case"property":r.setName(s.categories.properties);break;case"ribbon":r.setName(s.categories.ribbonItems);break;case"rule":r.setName(s.categories.rules);break}}this.searchSetting=new y.Setting(this.contentEl).addExtraButton(r=>{r.setIcon("lucide-rotate-ccw").setTooltip(s.iconPicker.resetColor).onClick(()=>this.resetColor()),r.extraSettingsEl.tabIndex=0,r.extraSettingsEl.addClass("iconic-reset-color"),r.extraSettingsEl.toggleClass("iconic-invisible",this.color===null),this.iconManager.setEventListener(r.extraSettingsEl,"pointerdown",c=>{c.preventDefault()}),this.iconManager.setEventListener(r.extraSettingsEl,"keydown",c=>{(c.key==="Enter"||c.key===" ")&&this.resetColor()}),this.colorResetButton=r}).addColorPicker(r=>{r.setValueRgb(C.toRgbObject(this.color)).onChange(c=>{if(this.colorPickerPaused){this.colorPickerPaused=!1;return}this.color=c,this.colorPickerEl.ariaLabel=this.color,this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.updateSearchResults()}),this.colorPicker=r}).addSearch(r=>{r.setPlaceholder(s.iconPicker.searchIcons).onChange(()=>this.updateSearchResults()),r.inputEl.enterKeyHint="go",this.iconManager.setEventListener(r.inputEl,"keydown",c=>{c.key==="Enter"&&this.searchResults.length>0&&this.closeAndSave(this.searchResults[0][0],this.color)}),this.searchField=r}),y.Platform.isPhone||this.searchSetting.setName(s.iconPicker.search);let i=!1;this.colorPickerEl=this.searchSetting.controlEl.find('input[type="color"]'),this.colorPickerEl.tabIndex=0,this.colorPickerEl.dataset.tooltipDelay="300",this.iconManager.setEventListener(this.colorPickerEl,"pointerenter",()=>this.colorPickerHovered=!0),this.iconManager.setEventListener(this.colorPickerEl,"pointerleave",()=>this.colorPickerHovered=!1),this.iconManager.setEventListener(this.colorPickerEl,"click",r=>{i===!0?i=!1:this.plugin.settings.colorPicker1==="list"&&(this.openColorMenu(r.x,r.y),r.preventDefault())}),this.iconManager.setEventListener(this.colorPickerEl,"contextmenu",r=>{navigator?.vibrate(100),this.plugin.settings.colorPicker2==="rgb"?(i=!0,this.colorPickerEl.click()):this.plugin.settings.colorPicker2==="list"&&(this.openColorMenu(r.x,r.y),r.preventDefault())}),this.iconManager.setEventListener(this.colorPickerEl,"keydown",r=>{if(r.key==="Enter"||r.key===" "){let c=this.colorPickerEl.getBoundingClientRect();this.openColorMenu(c.top,c.right),r.preventDefault()}else r.key==="Delete"||r.key==="Backspace"?this.resetColor():r.key==="ArrowUp"||r.key==="ArrowLeft"?this.previousColor():(r.key==="ArrowDown"||r.key==="ArrowRight")&&this.nextColor()}),this.iconManager.setEventListener(this.colorPickerEl,"wheel",r=>{r.deltaY+r.deltaX<0?this.previousColor():this.nextColor()},{passive:!0}),this.updateColorPicker(),this.searchResultsSetting=new y.Setting(this.contentEl),this.searchResultsSetting.settingEl.addClass("iconic-search-results"),this.iconManager.setEventListener(this.searchResultsSetting.settingEl,"wheel",r=>{activeDocument.body.hasClass("mod-rtl")?this.searchResultsSetting.settingEl.scrollLeft-=r.deltaY:this.searchResultsSetting.settingEl.scrollLeft+=r.deltaY},{passive:!0}),this.iconManager.setEventListener(this.searchResultsSetting.settingEl,"scroll",()=>{this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null},{passive:!0});let o=this.modalEl.createDiv({cls:"modal-button-container"}),n=y.Platform.isMobile?o.createDiv({cls:"iconic-button-row"}):null;(this.icon!==null||this.color!==null)&&new y.ButtonComponent(n??o).setButtonText(s.iconPicker.removeIcon).onClick(()=>this.closeAndSave(null,null)).buttonEl.addClasses(y.Platform.isPhone?["mod-warning"]:["mod-secondary","mod-destructive"]),this.icon?P.has(this.icon)?(e.iconMode=!0,this.searchField.setValue(P.get(this.icon)??"")):F.has(this.icon)?(e.emojiMode=!1,this.searchField.setValue(F.get(this.icon)??"")):this.searchField.setValue(this.icon):!e.iconMode&&!e.emojiMode&&(e.iconMode=!0),y.Platform.isMobile&&n?(this.mobileModeButton=new y.ButtonComponent(n).onClick(()=>this.toggleMobileSearchMode()),this.iconManager.setEventListener(this.mobileModeButton.buttonEl,"pointerdown",r=>{r.preventDefault()}),this.iconManager.setEventListener(this.mobileModeButton.buttonEl,"keydown",r=>{(r.key==="Enter"||r.key===" ")&&this.toggleMobileSearchMode()}),this.updateMobileSearchMode()):(this.iconModeButton=new y.ExtraButtonComponent(o).setTooltip("Toggle icons",{placement:"top"}).onClick(()=>{e.iconMode=!e.iconMode,this.updateDesktopSearchMode()}),this.emojiModeButton=new y.ExtraButtonComponent(o).setTooltip("Toggle emojis",{placement:"top"}).onClick(()=>{e.emojiMode=!e.emojiMode,this.updateDesktopSearchMode()}),this.iconModeButton.extraSettingsEl.tabIndex=0,this.emojiModeButton.extraSettingsEl.tabIndex=0,this.iconManager.setEventListener(this.iconModeButton.extraSettingsEl,"pointerdown",r=>{r.preventDefault()}),this.iconManager.setEventListener(this.emojiModeButton.extraSettingsEl,"pointerdown",r=>{r.preventDefault()}),this.updateDesktopSearchMode()),new y.ButtonComponent(y.Platform.isPhone?this.modalEl:o).setButtonText(s.iconPicker.cancel).onClick(()=>this.close()).buttonEl.addClasses(y.Platform.isPhone?["modal-nav-action","mod-secondary"]:["mod-cancel"]),new y.ButtonComponent(y.Platform.isPhone?this.modalEl:o).setButtonText(s.iconPicker.save).onClick(()=>this.closeAndSave(this.icon,this.color)).buttonEl.addClasses(y.Platform.isPhone?["modal-nav-action","mod-cta"]:["mod-cta"]),activeWindow.requestAnimationFrame(()=>this.searchField.inputEl.select()),this.updateSearchResults()}openColorMenu(e,t){let i=new y.Menu;for(let o of D)i.addItem(n=>{n.setTitle(s.iconPicker.colors[o]).setChecked(o===this.color).setSection("color").onClick(()=>{this.color===o?(this.color=null,this.colorResetButton.extraSettingsEl.addClass("iconic-invisible")):(this.color=o,this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible")),this.updateColorPicker(),this.updateSearchResults()}),this.iconManager.refreshIcon({icon:"lucide-paint-bucket",color:o},n.iconEl)});i.showAtPosition({x:e,y:t})}previousColor(){let e=D.length-1;this.color&&D.includes(this.color)&&this.color!==D.first()&&(e=D.indexOf(this.color)-1),this.color=D[e],this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.updateColorPicker(),this.updateSearchResults()}nextColor(){let e=0;this.color&&D.includes(this.color)&&this.color!==D.last()&&(e=D.indexOf(this.color)+1),this.color=D[e],this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.updateColorPicker(),this.updateSearchResults()}resetColor(){this.color=null,this.colorResetButton.extraSettingsEl.addClass("iconic-invisible"),this.updateColorPicker(),this.updateColorTooltip(),this.updateSearchResults()}toggleMobileSearchMode(){let{dialogState:e}=this.plugin.settings;e.iconMode&&e.emojiMode?(e.iconMode=!0,e.emojiMode=!1):e.iconMode?(e.iconMode=!1,e.emojiMode=!0):(e.iconMode=!0,e.emojiMode=!0),this.updateMobileSearchMode()}updateMobileSearchMode(){let{dialogState:e}=this.plugin.settings;e.iconMode&&e.emojiMode?(this.setTitle(s.iconPicker.changeMix),this.searchField.setPlaceholder(s.iconPicker.searchMix),this.mobileModeButton?.setButtonText(s.iconPicker.icons)):e.iconMode?(this.setTitle(s.iconPicker.changeIcon),this.searchField.setPlaceholder(s.iconPicker.searchIcons),this.mobileModeButton?.setButtonText(s.iconPicker.emojis)):(this.setTitle(s.iconPicker.changeEmoji),this.searchField.setPlaceholder(s.iconPicker.searchEmojis),this.mobileModeButton?.setButtonText(s.iconPicker.mixed)),this.updateSearchResults()}updateDesktopSearchMode(){let{dialogState:e}=this.plugin.settings;this.iconModeButton.setIcon(e.iconMode?"lucide-image":"lucide-square"),this.emojiModeButton.setIcon(e.emojiMode?"lucide-smile":"lucide-circle"),this.iconModeButton.extraSettingsEl.toggleClass("iconic-mode-selected",e.iconMode),this.emojiModeButton.extraSettingsEl.toggleClass("iconic-mode-selected",e.emojiMode),e.iconMode&&e.emojiMode?(this.setTitle(s.iconPicker.changeMix),this.searchField.setPlaceholder(s.iconPicker.searchMix)):e.emojiMode?(this.setTitle(s.iconPicker.changeEmoji),this.searchField.setPlaceholder(s.iconPicker.searchEmojis)):(this.setTitle(s.iconPicker.changeIcon),this.searchField.setPlaceholder(s.iconPicker.searchIcons)),this.updateSearchResults()}updateColorPicker(){this.colorPickerPaused=!0,this.colorPicker.setValueRgb(C.toRgbObject(this.color)),this.color?D.includes(this.color)?this.colorPickerEl.ariaLabel=s.iconPicker.colors[this.color]:this.colorPickerEl.ariaLabel=this.color:this.colorPickerEl.ariaLabel=s.iconPicker.changeColor,this.colorPickerHovered&&this.updateColorTooltip()}updateColorTooltip(){let e=activeDocument.body.find(":scope > .tooltip");e&&e.firstChild&&(e.style.removeProperty("width"),e.firstChild.nodeValue=this.colorPickerEl.ariaLabel)}setMobileTooltip(e,t){this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null;let i=e.getBoundingClientRect(),o=Math.max(0,i.left+i.width/2),n=i.top-48;this.mobileTooltipEl=activeDocument.body.createDiv({cls:["tooltip","mod-top"],text:t}),this.mobileTooltipEl.createDiv("tooltip-arrow"),this.mobileTooltipEl.style.fontSize="var(--font-ui-medium)",this.mobileTooltipEl.style.left=o+"px",this.mobileTooltipEl.style.top=n+"px",this.mobileTooltipEl.style.width="auto",this.mobileTooltipEl.style.whiteSpace="nowrap";let r=this.mobileTooltipEl.getBoundingClientRect();r.left<0&&(this.mobileTooltipEl.style.left=o+r.left+"px")}updateSearchResults(){let e=this.searchField.getValue(),t=(0,y.prepareFuzzySearch)(e),i=[],o=[...this.plugin.settings.dialogState.iconMode?P:[],...this.plugin.settings.dialogState.emojiMode?F:[]];if(this.searchResults.length=0,this.searchResultsSetting.clear(),e)for(let[n,r]of o)if(e===n)i.push([0,[n,r]]);else{let c=t(r);c&&i.push([c.score,[n,r]])}i.sort(([n],[r])=>n>r?-1:1);for(let[,n]of i)if(this.searchResults.push(n),this.searchResults.length===this.plugin.settings.maxSearchResults)break;for(let n of this.searchResults){let[r,c]=n;this.searchResultsSetting.addExtraButton(l=>{l.setTooltip(c,{delay:300});let h=l.extraSettingsEl;h.addClass("iconic-search-result"),h.tabIndex=0,this.iconManager.refreshIcon({icon:r,color:this.color??null},h,()=>{this.closeAndSave(r,this.color)}),y.Platform.isMobile&&this.iconManager.setEventListener(h,"contextmenu",()=>{navigator?.vibrate(100),this.setMobileTooltip(h,c)}),this.iconManager.setEventListener(h,"keydown",g=>{(g.key==="Enter"||g.key===" ")&&this.closeAndSave(r,this.color)})})}this.searchResults.length===0&&this.searchResultsSetting.addExtraButton(n=>{n.extraSettingsEl.addClasses(["iconic-invisible","iconic-search-result"])})}updateOverruleReminder(){this.overruleEl?.remove();let e,t=null;if(this.items.length>1){for(let i of this.items)if((i.category==="file"||i.category==="folder")&&(t=this.plugin.ruleManager.checkRuling(i.category,i.id),e=i.category,t))break}else{let i=this.items[0];(i.category==="file"||i.category==="folder")&&(t=this.plugin.ruleManager.checkRuling(i.category,i.id),e=i.category)}if(t){let i=C.toRgbObject(this.items.length===1?t.color:"gray"),o=`${i.r}, ${i.g}, ${i.b}`;this.overruleEl=createDiv({cls:"callout",attr:{style:"--callout-color: "+o}});let n=this.overruleEl.createDiv({cls:"callout-title"}),r=n.createDiv({cls:"callout-icon"}),c=n.createDiv({cls:"callout-title-inner"});if(this.items.length>1)this.iconManager.refreshIcon({icon:"lucide-book-image",color:"gray"},r),c.setText(s.iconPicker.overrules);else{this.iconManager.refreshIcon(t,r),c.setText(s.iconPicker.overrulePrefix);let l=c.createEl("a",{text:t.name});c.appendText(s.iconPicker.overruleSuffix),this.iconManager.setEventListener(l,"click",()=>{e&&t&&A.open(this.plugin,e,t,h=>{if(!t)return;(h?this.plugin.ruleManager.saveRule(e,h):this.plugin.ruleManager.deleteRule(e,t.id))&&(e==="file"&&this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()),this.updateOverruleReminder()})})}this.contentEl.prepend(this.overruleEl)}}closeAndSave(e,t){this.callback?this.callback(e??null,t??null):this.multiCallback&&this.multiCallback(e,t),this.close()}onClose(){this.contentEl.empty(),this.mobileTooltipEl?.remove(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers(),this.plugin.saveSettings()}};var x=class{constructor(a){this.options=a}has(a){return this.options.hasOwnProperty(a)}get(){let a={};for(let[e,t]of Object.entries(this.options))a[e]=t();return a}plus(a){return new x({...this.options,...a.options})}},Xe=new x({icon:()=>s.ruleEditor.source.icon,color:()=>s.ruleEditor.source.color,name:()=>s.ruleEditor.source.name,filename:()=>s.ruleEditor.source.filename,extension:()=>s.ruleEditor.source.extension,tree:()=>s.ruleEditor.source.tree,path:()=>s.ruleEditor.source.path,headings:()=>s.ruleEditor.source.headings,links:()=>s.ruleEditor.source.links,tags:()=>s.ruleEditor.source.tags,properties:()=>s.ruleEditor.source.properties,created:()=>s.ruleEditor.source.created,modified:()=>s.ruleEditor.source.modified,clock:()=>s.ruleEditor.source.clock}),Je=new x({icon:()=>s.ruleEditor.source.icon,color:()=>s.ruleEditor.source.color,name:()=>s.ruleEditor.source.name,tree:()=>s.ruleEditor.source.tree,path:()=>s.ruleEditor.source.path,created:()=>s.ruleEditor.source.created,modified:()=>s.ruleEditor.source.modified,clock:()=>s.ruleEditor.source.clock}),K=new x({is:()=>s.ruleEditor.operator.is,"!is":()=>s.ruleEditor.operator["!is"],contains:()=>s.ruleEditor.operator.contains,startsWith:()=>s.ruleEditor.operator.startsWith,endsWith:()=>s.ruleEditor.operator.endsWith,matches:()=>s.ruleEditor.operator.matches,"!contains":()=>s.ruleEditor.operator["!contains"],"!startsWith":()=>s.ruleEditor.operator["!startsWith"],"!endsWith":()=>s.ruleEditor.operator["!endsWith"],"!matches":()=>s.ruleEditor.operator["!matches"]}),U=new x({includes:()=>s.ruleEditor.operator.includes,"!includes":()=>s.ruleEditor.operator["!includes"],allAre:()=>s.ruleEditor.operator.allAre,allContain:()=>s.ruleEditor.operator.allContain,allStartWith:()=>s.ruleEditor.operator.allStartWith,allEndWith:()=>s.ruleEditor.operator.allEndWith,allMatch:()=>s.ruleEditor.operator.allMatch,anyContain:()=>s.ruleEditor.operator.anyContain,anyStartWith:()=>s.ruleEditor.operator.anyStartWith,anyEndWith:()=>s.ruleEditor.operator.anyEndWith,anyMatch:()=>s.ruleEditor.operator.anyMatch,noneContain:()=>s.ruleEditor.operator.noneContain,noneStartWith:()=>s.ruleEditor.operator.noneStartWith,noneEndWith:()=>s.ruleEditor.operator.noneEndWith,noneMatch:()=>s.ruleEditor.operator.noneMatch,countIs:()=>s.ruleEditor.operator.countIs,"!countIs":()=>s.ruleEditor.operator["!countIs"],countIsLess:()=>s.ruleEditor.operator.countIsLess,countIsMore:()=>s.ruleEditor.operator.countIsMore}),Ye=new x({equals:()=>s.ruleEditor.operator.equals,"!equals":()=>s.ruleEditor.operator["!equals"],isLess:()=>s.ruleEditor.operator.isLess,isMore:()=>s.ruleEditor.operator.isMore,isDivisible:()=>s.ruleEditor.operator.isDivisible,"!isLess":()=>s.ruleEditor.operator["!isLess"],"!isMore":()=>s.ruleEditor.operator["!isMore"],"!isDivisible":()=>s.ruleEditor.operator["!isDivisible"]}),Ze=new x({isTrue:()=>s.ruleEditor.operator.isTrue,"!isTrue":()=>s.ruleEditor.operator["!isTrue"],isFalse:()=>s.ruleEditor.operator.isFalse,"!isFalse":()=>s.ruleEditor.operator["!isFalse"]}),Qe=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,isNow:()=>s.ruleEditor.operator.isNow,"!isNow":()=>s.ruleEditor.operator["!isNow"],isBeforeNow:()=>s.ruleEditor.operator.isBeforeNow,isAfterNow:()=>s.ruleEditor.operator.isAfterNow,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,timeIsNow:()=>s.ruleEditor.operator.timeIsNow,"!timeIsNow":()=>s.ruleEditor.operator["!timeIsNow"],timeIsBeforeNow:()=>s.ruleEditor.operator.timeIsBeforeNow,timeIsAfterNow:()=>s.ruleEditor.operator.timeIsAfterNow,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isBeforeToday:()=>s.ruleEditor.operator.isBeforeToday,isAfterToday:()=>s.ruleEditor.operator.isAfterToday,isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isLessDaysAway:()=>s.ruleEditor.operator.isLessDaysAway,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,isMoreDaysAway:()=>s.ruleEditor.operator.isMoreDaysAway,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),$e=new x({dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator.dateIs,dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isBeforeToday:()=>s.ruleEditor.operator.isBeforeToday,isAfterToday:()=>s.ruleEditor.operator.isAfterToday,isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isLessDaysAway:()=>s.ruleEditor.operator.isLessDaysAway,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,isMoreDaysAway:()=>s.ruleEditor.operator.isMoreDaysAway,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),Me=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,timeIsNow:()=>s.ruleEditor.operator.timeIsNow,"!timeIsNow":()=>s.ruleEditor.operator["!timeIsNow"],timeIsBeforeNow:()=>s.ruleEditor.operator.timeIsBeforeNow,timeIsAfterNow:()=>s.ruleEditor.operator.timeIsAfterNow,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),_e=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),et=new x({iconIs:()=>s.ruleEditor.operator.iconIs,"!iconIs":()=>s.ruleEditor.operator["!iconIs"],nameIs:()=>s.ruleEditor.operator.nameIs,"!nameIs":()=>s.ruleEditor.operator["!nameIs"],nameContains:()=>s.ruleEditor.operator.nameContains,nameStartsWith:()=>s.ruleEditor.operator.nameStartsWith,nameEndsWith:()=>s.ruleEditor.operator.nameEndsWith,nameMatches:()=>s.ruleEditor.operator.nameMatches,"!nameContains":()=>s.ruleEditor.operator["!nameContains"],"!nameStartsWith":()=>s.ruleEditor.operator["!nameStartsWith"],"!nameEndsWith":()=>s.ruleEditor.operator["!nameEndsWith"],"!nameMatches":()=>s.ruleEditor.operator["!nameMatches"]}),tt=new x({colorIs:()=>s.ruleEditor.operator.colorIs,"!colorIs":()=>s.ruleEditor.operator["!colorIs"],hexIs:()=>s.ruleEditor.operator.hexIs,"!hexIs":()=>s.ruleEditor.operator["!hexIs"]}),me=new x({hasValue:()=>s.ruleEditor.operator.hasValue,"!hasValue":()=>s.ruleEditor.operator["!hasValue"]}),it=new x({hasProperty:()=>s.ruleEditor.operator.hasProperty,"!hasProperty":()=>s.ruleEditor.operator["!hasProperty"]}),st=new x({1:()=>s.ruleEditor.weekday[1],2:()=>s.ruleEditor.weekday[2],3:()=>s.ruleEditor.weekday[3],4:()=>s.ruleEditor.weekday[4],5:()=>s.ruleEditor.weekday[5],6:()=>s.ruleEditor.weekday[6],7:()=>s.ruleEditor.weekday[7]}),ot=new x({1:()=>s.ruleEditor.month[1],2:()=>s.ruleEditor.month[2],3:()=>s.ruleEditor.month[3],4:()=>s.ruleEditor.month[4],5:()=>s.ruleEditor.month[5],6:()=>s.ruleEditor.month[6],7:()=>s.ruleEditor.month[7],8:()=>s.ruleEditor.month[8],9:()=>s.ruleEditor.month[9],10:()=>s.ruleEditor.month[10],11:()=>s.ruleEditor.month[11],12:()=>s.ruleEditor.month[12]}),nt=new x({red:()=>s.iconPicker.colors.red,orange:()=>s.iconPicker.colors.orange,yellow:()=>s.iconPicker.colors.yellow,green:()=>s.iconPicker.colors.green,cyan:()=>s.iconPicker.colors.cyan,blue:()=>s.iconPicker.colors.blue,purple:()=>s.iconPicker.colors.purple,pink:()=>s.iconPicker.colors.pink,gray:()=>s.iconPicker.colors.gray}),at={icon:et.plus(me),color:tt.plus(me),name:K,filename:K,extension:K,tree:K,path:K,headings:U,links:U,tags:U,created:Me,modified:Me,clock:_e},rt={is:"text","!is":"text",contains:"text",startsWith:"text",endsWith:"text",matches:"text","!contains":"text","!startsWith":"text","!endsWith":"text","!matches":"text",includes:"text","!includes":"text",allAre:"text",allContain:"text",allStartWith:"text",allEndWith:"text",allMatch:"text",anyContain:"text",anyStartWith:"text",anyEndWith:"text",anyMatch:"text",noneContain:"text",noneStartWith:"text",noneEndWith:"text",noneMatch:"text",countIs:"number",countIsLess:"number",countIsMore:"number",equals:"number","!equals":"number",isLess:"number",isMore:"number",isDivisible:"number","!isLess":"number","!isMore":"number","!isDivisible":"number",isLessDaysAgo:"number",isLessDaysAway:"number",isMoreDaysAgo:"number",isMoreDaysAway:"number",datetimeIs:"datetime","!datetimeIs":"datetime",datetimeIsBefore:"datetime",datetimeIsAfter:"datetime",timeIs:"time","!timeIs":"time",timeIsBefore:"time",timeIsAfter:"time",dateIs:"date","!dateIs":"date",dateIsBefore:"date",dateIsAfter:"date",weekdayIs:"weekday","!weekdayIs":"weekday",weekdayIsBefore:"weekday",weekdayIsAfter:"weekday",monthdayIs:"number","!monthdayIs":"number",monthdayIsBefore:"number",monthdayIsAfter:"number",monthIs:"month","!monthIs":"month",monthIsBefore:"month",monthIsAfter:"month",yearIs:"number","!yearIs":"number",yearIsBefore:"number",yearIsAfter:"number",iconIs:"text","!iconIs":"text",nameIs:"text","!nameIs":"text",nameContains:"text",nameStartsWith:"text",nameEndsWith:"text",nameMatches:"text","!nameContains":"text","!nameStartsWith":"text","!nameEndsWith":"text","!nameMatches":"text",colorIs:"color","!colorIs":"color",hexIs:"text","!hexIs":"text"},pe=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}refreshIcons(){}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},A=class extends v.Modal{constructor(e,t,i,o){super(e.app);this.matches=[];this.condEls=[];this.plugin=e,this.iconManager=new pe(e),this.page=t,this.rule=window.structuredClone(i),this.callback=o;for(let n of this.plugin.commands)if(n.callback){let r=this.app.hotkeyManager?.customKeys?.[n.id]??[];for(let c of r)this.scope.register(c.modifiers,c.key,n.callback)}}static open(e,t,i,o){new A(e,t,i,o).open()}onOpen(){switch(this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-rule-editor"),this.page){case"file":this.setTitle(s.ruleEditor.fileRule);break;case"folder":this.setTitle(s.ruleEditor.folderRule);break}let e=new v.Setting(this.contentEl);e.infoEl.remove(),e.addExtraButton(n=>{n.setIcon(this.rule.icon??this.plugin.ruleManager.getPageIcon(this.page)).setTooltip(s.iconPicker.changeIcon).onClick(()=>I.openSingle(this.plugin,this.rule,(r,c)=>{this.iconManager.refreshIcon({icon:r??this.plugin.ruleManager.getPageIcon(this.page),color:c},n.extraSettingsEl),this.rule.icon=r,this.rule.color=c})),this.iconManager.refreshIcon({icon:this.rule.icon??this.plugin.ruleManager.getPageIcon(this.page),color:this.rule.color},n.extraSettingsEl),n.extraSettingsEl.addClass("iconic-rule-icon")}),e.addText(n=>{n.setValue(this.rule.name).setPlaceholder(s.ruleEditor.enterName),this.iconManager.setEventListener(n.inputEl,"keydown",r=>{r.key==="Enter"&&this.closeAndSave(this.rule)}),this.nameField=n}),e.addToggle(n=>{n.setValue(this.rule.enabled).onChange(r=>this.rule.enabled=r)});let t=[];new v.Setting(this.contentEl).setName(s.ruleEditor.matchConditions.name).setDesc(s.ruleEditor.matchConditions.desc).addButton(n=>{n.setButtonText(s.ruleEditor.matchConditions.all).setTooltip("All conditions must match").buttonEl.toggleClass("mod-cta",this.rule.match==="all"),this.iconManager.setEventListener(n.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("mod-cta")),n.buttonEl.addClass("mod-cta"),this.rule.match="all",this.updateMatchesButton()}),t.push(n.buttonEl)}).addButton(n=>{n.setButtonText(s.ruleEditor.matchConditions.any).setTooltip("At least 1 condition must match").buttonEl.toggleClass("mod-cta",this.rule.match==="any"),this.iconManager.setEventListener(n.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("mod-cta")),n.buttonEl.addClass("mod-cta"),this.rule.match="any",this.updateMatchesButton()}),t.push(n.buttonEl)}).addButton(n=>{n.setButtonText(s.ruleEditor.matchConditions.none).setTooltip("All conditions must fail").buttonEl.toggleClass("mod-cta",this.rule.match==="none"),this.iconManager.setEventListener(n.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("mod-cta")),n.buttonEl.addClass("mod-cta"),this.rule.match="none",this.updateMatchesButton()}),t.push(n.buttonEl)}),new v.Setting(this.contentEl).setHeading().setName(s.ruleEditor.conditions);for(let n of this.rule.conditions)this.appendCondition(n);this.addCondSetting=new v.Setting(this.contentEl).addExtraButton(n=>{n.setIcon("lucide-circle-plus").setTooltip(s.ruleEditor.addCondition).onClick(()=>this.newCondition()).extraSettingsEl.style.color=C.toRgb("green")}),this.addCondSetting.settingEl.addClass("iconic-add"),this.addCondSetting.infoEl.remove();let i=this.modalEl.createDiv({cls:"modal-button-container"}),o=v.Platform.isMobile?i.createDiv({cls:"iconic-button-row"}):null;new v.ButtonComponent(o??i).setButtonText(s.ruleEditor.removeRule).onClick(()=>this.closeAndSave(null)).buttonEl.addClasses(v.Platform.isPhone?["mod-warning"]:["mod-secondary","mod-destructive"]),this.matchesButton=new v.ButtonComponent(o||i).setButtonText(s.ruleEditor.buttonNoMatches).onClick(()=>q.open(this.plugin,this.page,this.matches)).setDisabled(this.rule.conditions===null).setTooltip(this.rule.conditions===null?"No conditions added":"",{placement:"top",delay:100}),new v.ButtonComponent(v.Platform.isPhone?this.modalEl:i).setButtonText(s.iconPicker.cancel).onClick(()=>this.close()).buttonEl.addClasses(v.Platform.isPhone?["modal-nav-action","mod-secondary"]:["mod-cancel"]),new v.ButtonComponent(v.Platform.isPhone?this.modalEl:i).setButtonText(s.iconPicker.save).onClick(()=>this.closeAndSave(this.rule)).buttonEl.addClasses(v.Platform.isPhone?["modal-nav-action","mod-cta"]:["mod-cta"]),this.updateMatchesButton()}appendCondition(e){let t=new fe(this.contentEl,this.plugin,this.iconManager,this.page,e,this.condEls,()=>this.updateMatchesButton(),i=>this.moveCondition(e,i),()=>this.removeCondition(e));this.condEls.push(t.settingEl),this.addCondSetting&&t.settingEl.insertAdjacentElement("afterend",this.addCondSetting.settingEl),this.updateMatchesButton()}newCondition(){let e=this.rule.conditions.last(),t=e?{source:e.source,operator:e.operator,value:""}:{source:"name",operator:"contains",value:""};this.rule.conditions.push(t),this.appendCondition(t),this.addCondSetting&&this.addCondSetting.settingEl.scrollIntoView({behavior:"smooth"})}moveCondition(e,t){let i=this.rule.conditions.indexOf(e);i<0||(this.rule.conditions.splice(i,1),this.rule.conditions.splice(t,0,e))}removeCondition(e){this.rule.conditions.remove(e),this.updateMatchesButton()}async updateMatchesButton(){if(!this.matchesButton)return;let e=setTimeout(()=>{this.matchesButton.setLoading(!0),this.matchesButton.setDisabled(!0)},100);switch(this.page){case"file":this.matches=this.plugin.ruleManager.judgeFiles(this.rule,new Date,!0);break;case"folder":this.matches=this.plugin.ruleManager.judgeFolders(this.rule,new Date,!0);break}switch(clearTimeout(e),this.matches.length){case 0:this.matchesButton.setButtonText(s.ruleEditor.buttonNoMatches);break;case 1:this.matchesButton.setButtonText(s.ruleEditor.buttonMatch);break;default:{this.matchesButton.setButtonText(s.ruleEditor.buttonMatches.replace("{#}",this.matches.length.toString()));break}}this.matchesButton.setLoading(!1),this.matchesButton.setDisabled(this.matches.length===0)}closeAndSave(e){this.close(),e&&(e.name=this.nameField.getValue()||e.name),this.callback&&this.callback(e)}onClose(){this.condEls.length=0,this.contentEl.empty(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers();for(let e of activeDocument.body.findAll(":scope > .drag-reorder-ghost"))e.remove()}},fe=class extends v.Setting{constructor(e,t,i,o,n,r,c,l,h){super(e);this.plugin=t,this.page=o,this.condition=n,this.condEls=r,this.onChange=c,this.onMove=l,this.onRemove=h,this.settingEl.addClass("iconic-condition"),this.infoEl.remove(),this.addExtraButton(d=>{d.setIcon("lucide-circle-minus").setTooltip(s.ruleEditor.removeCondition).onClick(()=>{this.settingEl.remove(),this.onRemove()}).extraSettingsEl.style.color=C.toRgb("red"),this.removeButton=d});let g=v.Platform.isPhone?this.controlEl.createDiv({cls:"iconic-control-column"}):this.controlEl,m=v.Platform.isPhone?g.createDiv({cls:"iconic-dropdown-row"}):this.controlEl;this.srcDropdown=new v.DropdownComponent(m).onChange(d=>{this.condition.source=d,d==="properties"||d.startsWith("property:")?this.refreshPropertyDropdowns():this.refreshDropdowns()}),this.opDropdown=new v.DropdownComponent(m).onChange(d=>{this.condition.operator=d,this.refreshValue()}),this.valField=new v.TextComponent(g).onChange(d=>{this.condition.value=d,this.onChange()}),this.valDropdown=new v.DropdownComponent(g).onChange(d=>{this.condition.value=d,this.onChange()}),this.addExtraButton(d=>{d.setIcon("lucide-menu").setTooltip(s.rulePicker.drag).extraSettingsEl.addClass("iconic-drag"),i.setEventListener(d.extraSettingsEl,"pointerdown",()=>{this.settingEl.draggable=!0}),i.setEventListener(this.settingEl,"dragstart",u=>{this.onDragStart(u.clientX,u.clientY,d.extraSettingsEl)}),i.setEventListener(this.settingEl,"drag",u=>{this.onDrag(u.clientX,u.clientY,d.extraSettingsEl)}),i.setEventListener(this.settingEl,"dragend",()=>this.onDragEnd()),i.setEventListener(d.extraSettingsEl,"touchstart",u=>{u.preventDefault();let T=u.targetTouches[0];this.onDragStart(T.clientX,T.clientY,d.extraSettingsEl)}),i.setEventListener(d.extraSettingsEl,"touchmove",u=>{u.preventDefault();let T=u.targetTouches[0];this.onDrag(T.clientX,T.clientY,d.extraSettingsEl)}),i.setEventListener(d.extraSettingsEl,"touchend",()=>this.onDragEnd()),i.setEventListener(d.extraSettingsEl,"touchcancel",()=>this.onDragEnd())}),this.condition.source.startsWith("property:")?this.refreshPropertyDropdowns():this.refreshDropdowns()}onDragStart(e,t,i){navigator?.vibrate(100),this.ghostCondEl=activeDocument.body.createDiv({cls:"drag-reorder-ghost"}),this.ghostCondEl.setCssStyles({width:this.settingEl.clientWidth+"px",height:this.settingEl.clientHeight+"px",left:e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"}),this.ghostCondEl.appendChild(this.settingEl.cloneNode(!0));let o=this.ghostCondEl.findAll("select");o[0]&&(o[0].value=this.condition.source),o[1]&&(o[1].value=this.condition.operator),this.settingEl.addClass("drag-ghost-hidden"),this.settingEl.style.opacity="0%",activeWindow.requestAnimationFrame(()=>this.settingEl.style.removeProperty("opacity"))}onDrag(e,t,i){if(e===0&&t===0)return;this.ghostCondEl?.setCssStyles({left:e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"});let o=this.condEls.indexOf(this.settingEl),n=this.condEls[o-1],r=n?.clientHeight*.25||0;n&&tc.getBoundingClientRect().top+l&&(navigator?.vibrate(100),c.insertAdjacentElement("afterend",this.settingEl),this.condEls.splice(o,1),this.condEls.splice(o+1,0,this.settingEl))}onDragEnd(){this.ghostCondEl?.remove(),delete this.ghostCondEl,this.settingEl.removeClass("drag-ghost-hidden"),this.settingEl.removeAttribute("draggable");let e=this.condEls.indexOf(this.settingEl);e>-1&&this.onMove(e)}refreshDropdowns(){let e;switch(this.page){case"file":e=Xe;break;case"folder":e=Je;break}this.srcDropdown.selectEl.empty(),this.srcDropdown.addOptions(e?.get()??{}),e.has(this.condition.source)||(this.condition.source=this.srcDropdown.getValue()),this.srcDropdown.setValue(this.condition.source);let t=at[this.condition.source];this.opDropdown.selectEl.empty(),this.opDropdown.addOptions(t?.get()??{}),t.has(this.condition.operator)||(this.condition.operator=this.opDropdown.getValue()),this.opDropdown.setValue(this.condition.operator),this.refreshValue()}refreshPropertyDropdowns(){this.removeButton.setIcon("lucide-archive"),this.removeButton.setTooltip(s.ruleEditor.resetCondition),this.removeButton.onClick(()=>{this.removeButton.setIcon("lucide-circle-minus").setTooltip(s.ruleEditor.removeCondition).onClick(()=>{this.settingEl.remove(),this.onRemove()}),this.condition.source="name",this.condition.operator="is",this.refreshDropdowns()});let e=this.plugin.getPropertyItems().sort((r,c)=>r.id["property:"+r.id,()=>r.name])));this.srcDropdown.selectEl.empty(),this.srcDropdown.addOptions(t.get()),this.condition.source=t.has(this.condition.source)?this.condition.source:this.srcDropdown.getValue(),this.srcDropdown.setValue(this.condition.source);let i=this.condition.source.replace("property:",""),o=this.plugin.getPropertyItem(i);if(!o)return;let n;switch(o.type){default:n=K;break;case"multitext":n=U;break;case"number":n=Ye;break;case"checkbox":n=Ze;break;case"date":n=$e;break;case"datetime":n=Qe;break;case"aliases":n=U;break;case"tags":n=U;break}n=n.plus(me).plus(it),this.opDropdown.selectEl.empty(),this.opDropdown.addOptions(n.get()),this.condition.operator=n.has(this.condition.operator)?this.condition.operator:this.opDropdown.getValue(),this.opDropdown.setValue(this.condition.operator),this.refreshValue()}refreshValue(){let e=!this.valField.getValue()&&!this.valDropdown.getValue(),t=this.condition.operator.replace("!",""),i,o,n;switch(rt[t]){case"text":{switch(i="text",t){default:o=s.ruleEditor.enterValue;break;case"matches":o=s.ruleEditor.enterRegex;break;case"anyMatch":o=s.ruleEditor.enterRegex;break;case"allMatch":o=s.ruleEditor.enterRegex;break;case"noneMatch":o=s.ruleEditor.enterRegex;break;case"nameMatches":o=s.ruleEditor.enterRegex;break;case"colorHexIs":o=s.ruleEditor.enterHexCode;break}break}case"number":{i="number",o=s.ruleEditor.enterNumber;break}case"datetime":i="datetime-local";break;case"date":i="date";break;case"time":i="time";break;case"weekday":n=st;break;case"month":n=ot;break;case"color":n=nt;break}i?((i!==this.valField.inputEl.type||!this.valField.inputEl.isShown())&&!e&&(this.condition.value=""),this.valField.inputEl.type=i,this.valField.setPlaceholder(o??""),this.valField.setValue(this.condition.value),this.valField.inputEl.show()):this.valField.inputEl.hide(),n?(this.valOptions?(this.valOptions!==n||!this.valDropdown.selectEl.isShown())&&(this.valDropdown.selectEl.empty(),this.valDropdown.addOptions(n.get()),this.condition.value=this.valDropdown.getValue()):(this.valDropdown.addOptions(n.get()),n.has(this.condition.value)?this.valDropdown.setValue(this.condition.value):this.condition.value=this.valDropdown.getValue()),this.valOptions=n,this.valDropdown.selectEl.show()):this.valDropdown.selectEl.hide(),this.onChange()}};var be=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}refreshIcons(){}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},N=class extends G.Modal{constructor(e){super(e.app);this.ruleEls=[];this.plugin=e,this.iconManager=new be(e);for(let t of this.plugin.commands)if(t.callback){let i=this.app.hotkeyManager?.customKeys?.[t.id]??[];for(let o of i)this.scope.register(o.modifiers,o.key,t.callback)}}static open(e){new N(e).open()}onOpen(){let{dialogState:e}=this.plugin.settings;this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-rule-picker"),this.setTitle(s.settings.rulebook.name),new G.Setting(this.contentEl).setName(s.rulePicker.selectPage).addDropdown(i=>{i.addOptions({file:s.rulePicker.fileRules,folder:s.rulePicker.folderRules}).onChange(o=>{switch(o){case"file":e.rulePage=o;break;case"folder":e.rulePage=o;break}this.refreshRules()}).setValue(e.rulePage)}),new G.Setting(this.contentEl).setHeading().setName(s.rulePicker.rules),this.addRuleSetting=new G.Setting(this.contentEl).addExtraButton(i=>{i.setIcon("lucide-circle-plus").setTooltip(s.rulePicker.addRule).onClick(()=>this.addRule()).extraSettingsEl.style.color=C.toRgb("green")}),this.addRuleSetting.settingEl.addClass("iconic-add"),this.addRuleSetting.infoEl.remove();let t=[];switch(e.rulePage){case"file":t.push(...this.plugin.ruleManager.getRules(e.rulePage));break;case"folder":t.push(...this.plugin.ruleManager.getRules(e.rulePage));break}for(let i of t)this.appendRule(i)}refreshRules(){for(let e of this.ruleEls)e.remove();this.ruleEls.length=0;for(let e of this.plugin.ruleManager.getRules(this.plugin.settings.dialogState.rulePage))this.appendRule(e)}refreshPageManagers(){switch(this.plugin.settings.dialogState.rulePage){case"file":this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons();case"folder":this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}}appendRule(e,t){let i=new Ie(this.contentEl,this.plugin,this.iconManager,this.plugin.settings.dialogState.rulePage,e,this.ruleEls,()=>this.refreshPageManagers(),t);this.ruleEls.push(i.settingEl),i.settingEl.insertAdjacentElement("afterend",this.addRuleSetting.settingEl)}addRule(){let e=this.plugin.ruleManager.newRule(this.plugin.settings.dialogState.rulePage);this.appendRule(e,!0),this.addRuleSetting.settingEl.scrollIntoView({behavior:"smooth"})}onClose(){this.ruleEls.length=0,this.contentEl.empty(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers();for(let e of activeDocument.body.findAll(":scope > .drag-reorder-ghost"))e.remove();this.plugin.saveSettings()}},Ie=class extends G.Setting{constructor(e,t,i,o,n,r,c,l=!1){super(e);this.plugin=t,this.page=o,this.rule=n,this.ruleEls=r,this.onRulingChange=c,this.settingEl.addClass("iconic-rule");let h,g;this.addExtraButton(m=>{m.setTooltip(s.iconPicker.changeIcon).onClick(()=>I.openSingle(t,n,(d,u)=>{i.refreshIcon({icon:d??t.ruleManager.getPageIcon(o),color:u},m.extraSettingsEl),n.icon=d,n.color=u,t.ruleManager.saveRule(o,n)&&c()})),i.refreshIcon({icon:n.icon??t.ruleManager.getPageIcon(o),color:n.color},m.extraSettingsEl),m.extraSettingsEl.addClass("iconic-rule-icon"),this.settingEl.prepend(m.extraSettingsEl),h=m}),this.setName(n.name),this.nameEl.addClass("iconic-rule-name"),i.setEventListener(this.nameEl,"click",()=>this.toggleEditable(this.nameEl,!0)),i.setEventListener(this.nameEl,"blur",()=>{this.toggleEditable(this.nameEl,!1),this.nameEl.getText()?(n.name=this.nameEl.getText(),t.ruleManager.saveRule(o,n)):this.nameEl.setText(n.name)}),i.setEventListener(this.nameEl,"keydown",m=>{m.key==="Enter"&&this.nameEl.blur()}),l&&this.toggleEditable(this.nameEl,!0),this.addExtraButton(m=>{m.setIcon("lucide-settings").setTooltip(s.rulePicker.editRule).onClick(()=>A.open(t,o,n,d=>{let u;d?(n=d,this.setName(d.name),i.refreshIcon({icon:d.icon??t.ruleManager.getPageIcon(o),color:d.color},h.extraSettingsEl),g.setValue(d.enabled),u=t.ruleManager.saveRule(o,d)):(this.settingEl.remove(),u=t.ruleManager.deleteRule(o,n.id)),u&&c()}))}),this.addToggle(m=>{m.setValue(n.enabled).onChange(d=>{n.enabled=d,t.ruleManager.saveRule(o,n)&&c()}),g=m}),this.addExtraButton(m=>{m.setIcon("lucide-menu").setTooltip(s.rulePicker.drag).extraSettingsEl.addClass("iconic-drag"),i.setEventListener(m.extraSettingsEl,"pointerdown",()=>{this.settingEl.draggable=!0}),i.setEventListener(this.settingEl,"dragstart",d=>{this.onDragStart(d.clientX,d.clientY,m.extraSettingsEl)}),i.setEventListener(this.settingEl,"drag",d=>{this.onDrag(d.clientX,d.clientY,m.extraSettingsEl)}),i.setEventListener(this.settingEl,"dragend",()=>this.onDragEnd()),i.setEventListener(m.extraSettingsEl,"touchstart",d=>{d.preventDefault();let u=d.targetTouches[0];this.onDragStart(u.clientX,u.clientY,m.extraSettingsEl)}),i.setEventListener(m.extraSettingsEl,"touchmove",d=>{d.preventDefault();let u=d.targetTouches[0];this.onDrag(u.clientX,u.clientY,m.extraSettingsEl)}),i.setEventListener(m.extraSettingsEl,"touchend",()=>this.onDragEnd()),i.setEventListener(m.extraSettingsEl,"touchcancel",()=>this.onDragEnd())})}onDragStart(e,t,i){navigator?.vibrate(100),this.ghostRuleEl=activeDocument.body.createDiv({cls:"drag-reorder-ghost"}),this.ghostRuleEl.setCssStyles({width:this.settingEl.clientWidth+"px",height:this.settingEl.clientHeight+"px",left:e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"}),this.ghostRuleEl.appendChild(this.settingEl.cloneNode(!0)),this.settingEl.addClass("drag-ghost-hidden"),this.settingEl.style.opacity="0%",activeWindow.requestAnimationFrame(()=>this.settingEl.style.removeProperty("opacity"))}onDrag(e,t,i){if(e===0&&t===0)return;this.ghostRuleEl?.setCssStyles({left:e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"});let o=this.ruleEls.indexOf(this.settingEl),n=this.ruleEls[o-1],r=n?.clientHeight*.25||0;n&&tc.getBoundingClientRect().top+l&&(navigator?.vibrate(100),c.insertAdjacentElement("afterend",this.settingEl),this.ruleEls.splice(o,1),this.ruleEls.splice(o+1,0,this.settingEl))}onDragEnd(){this.ghostRuleEl?.remove(),delete this.ghostRuleEl,this.settingEl.removeClass("drag-ghost-hidden"),this.settingEl.removeAttribute("draggable");let e=this.ruleEls.indexOf(this.settingEl);e>-1&&this.plugin.ruleManager.moveRule(this.page,this.rule,e)}toggleEditable(e,t){if(t?e.contentEditable="true":e.removeAttribute("contenteditable"),t&&e!==activeDocument.activeElement){let i=activeDocument.createRange(),o=activeWindow.getSelection();i.selectNodeContents(e),o?.removeAllRanges(),o?.addRange(i)}}};var Z=class extends w.PluginSettingTab{constructor(e){super(e.app,e);this.indicators={biggerIcons:void 0,clickableIcons:void 0,showItemName:void 0,biggerSearchResults:void 0,colorPicker1:void 0,colorPicker2:void 0};this.plugin=e}display(){this.containerEl.empty(),new w.Setting(this.containerEl).setName(s.settings.rulebook.name).setDesc(s.settings.rulebook.desc).addButton(e=>{e.setButtonText(s.settings.rulebook.manage).onClick(()=>{this.app.setting.close(),N.open(this.plugin)})}),new w.Setting(this.containerEl).setName(s.settings.headingSidebarAndTabIcons).setHeading(),new w.Setting(this.containerEl).setName(s.settings.biggerIcons.name).setDesc(s.settings.biggerIcons.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.biggerIcons=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.biggerIcons).onChange(t=>{this.refreshIndicator(this.indicators.biggerIcons,t),this.plugin.settings.biggerIcons=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.biggerIcons,e.getValue())}),new w.Setting(this.containerEl).setName(w.Platform.isDesktop?s.settings.clickableIcons.nameDesktop:s.settings.clickableIcons.nameMobile).setDesc(w.Platform.isDesktop?s.settings.clickableIcons.descDesktop:s.settings.clickableIcons.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.clickableIcons=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.clickableIcons).onChange(t=>{this.refreshIndicator(this.indicators.clickableIcons,t),this.plugin.settings.clickableIcons=t,this.plugin.saveSettings(),this.plugin.refreshManagers(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.clickableIcons,e.getValue())}),new w.Setting(this.containerEl).setName(s.settings.showAllFileIcons.name).setDesc(s.settings.showAllFileIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showAllFileIcons).onChange(t=>{this.plugin.settings.showAllFileIcons=t,this.plugin.saveSettings(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})),new w.Setting(this.containerEl).setName(s.settings.showAllFolderIcons.name).setDesc(s.settings.showAllFolderIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showAllFolderIcons).onChange(t=>{this.plugin.settings.showAllFolderIcons=t,this.plugin.saveSettings(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),new w.Setting(this.containerEl).setName(s.settings.minimalFolderIcons.name).setDesc(s.settings.minimalFolderIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.minimalFolderIcons).onChange(t=>{this.plugin.settings.minimalFolderIcons=t,this.plugin.saveSettings(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),new w.Setting(this.containerEl).setName(s.settings.headingIconPicker).setHeading(),new w.Setting(this.containerEl).setName(s.settings.showItemName.name).setDesc(s.settings.showItemName.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.showItemName=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.showItemName).onChange(t=>{this.refreshIndicator(this.indicators.showItemName,t),this.plugin.settings.showItemName=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.showItemName,e.getValue())}),new w.Setting(this.containerEl).setName(s.settings.biggerSearchResults.name).setDesc(s.settings.biggerSearchResults.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.biggerSearchResults=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.biggerSearchResults).onChange(t=>{this.refreshIndicator(this.indicators.biggerSearchResults,t),this.plugin.settings.biggerSearchResults=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.biggerSearchResults,e.getValue())}),new w.Setting(this.containerEl).setName(s.settings.maxSearchResults.name).setDesc(s.settings.maxSearchResults.desc).addSlider(e=>e.setLimits(10,300,10).setValue(this.plugin.settings.maxSearchResults).setDynamicTooltip().onChange(t=>{this.plugin.settings.maxSearchResults=t,this.plugin.saveSettings()})),new w.Setting(this.containerEl).setName(s.settings.colorPicker1.name).setDesc(w.Platform.isDesktop?s.settings.colorPicker1.descDesktop:s.settings.colorPicker1.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.colorPicker1=e}).addDropdown(e=>{e.addOption("list",s.settings.values.list).addOption("rgb",s.settings.values.rgb).setValue(this.plugin.settings.colorPicker1).onChange(t=>{this.refreshIndicator(this.indicators.colorPicker1,t),this.plugin.settings.colorPicker1=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.colorPicker1,e.getValue())}),new w.Setting(this.containerEl).setName(s.settings.colorPicker2.name).setDesc(w.Platform.isDesktop?s.settings.colorPicker2.descDesktop:s.settings.colorPicker2.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.colorPicker2=e}).addDropdown(e=>{e.addOption("list",s.settings.values.list).addOption("rgb",s.settings.values.rgb).setValue(this.plugin.settings.colorPicker2).onChange(t=>{this.refreshIndicator(this.indicators.colorPicker2,t),this.plugin.settings.colorPicker2=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.colorPicker2,e.getValue())}),new w.Setting(this.containerEl).setHeading().setName(s.settings.headingAdvanced),new w.Setting(this.containerEl).setName(s.settings.uncolorHover.name).setDesc(s.settings.uncolorHover.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorHover).onChange(t=>{this.plugin.settings.uncolorHover=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new w.Setting(this.containerEl).setName(s.settings.uncolorDrag.name).setDesc(s.settings.uncolorDrag.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorDrag).onChange(t=>{this.plugin.settings.uncolorDrag=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new w.Setting(this.containerEl).setName(s.settings.uncolorSelect.name).setDesc(s.settings.uncolorSelect.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorSelect).onChange(t=>{this.plugin.settings.uncolorSelect=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new w.Setting(this.containerEl).setName(s.settings.uncolorQuick.name).setDesc(s.settings.uncolorQuick.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorQuick).onChange(t=>{this.plugin.settings.uncolorQuick=t,this.plugin.saveSettings(),this.plugin.ribbonIconManager?.refreshIcons()})),new w.Setting(this.containerEl).setName(s.settings.rememberDeletedItems.name).setDesc(s.settings.rememberDeletedItems.desc).addToggle(e=>e.setValue(this.plugin.settings.rememberDeletedItems).onChange(t=>{this.plugin.settings.rememberDeletedItems=t,this.plugin.saveSettings()}))}refreshIndicator(e,t){switch(t){case"desktop":e.setIcon("lucide-monitor");break;case"mobile":e.setIcon("lucide-tablet-smartphone");break;case"list":e.setIcon("lucide-paint-bucket");break;case"rgb":e.setIcon("lucide-pipette");break;default:e.extraSettingsEl.hide();return}e.extraSettingsEl.show()}};var F=new Map([["\u{1F600}","Grinning face"],["\u{1F603}","Grinning face with big eyes"],["\u{1F604}","Grinning face with smiling eyes"],["\u{1F601}","Beaming face with smiling eyes"],["\u{1F606}","Grinning squinting face"],["\u{1F605}","Grinning face with sweat"],["\u{1F923}","Rolling on the floor laughing"],["\u{1F602}","Face with tears of joy"],["\u{1F642}","Slightly smiling face"],["\u{1F643}","Upside-down face"],["\u{1FAE0}","Melting face"],["\u{1F609}","Winking face"],["\u{1F60A}","Smiling face with smiling eyes"],["\u{1F607}","Smiling face with halo"],["\u{1F970}","Smiling face with hearts"],["\u{1F60D}","Smiling face with heart-eyes"],["\u{1F929}","Star-struck"],["\u{1F618}","Face blowing a kiss"],["\u{1F617}","Kissing face"],["\u263A\uFE0F","Smiling face"],["\u{1F61A}","Kissing face with closed eyes"],["\u{1F619}","Kissing face with smiling eyes"],["\u{1F972}","Smiling face with tear"],["\u{1F60B}","Face savoring food"],["\u{1F61B}","Face with tongue"],["\u{1F61C}","Winking face with tongue"],["\u{1F92A}","Zany face"],["\u{1F61D}","Squinting face with tongue"],["\u{1F911}","Money-mouth face"],["\u{1F917}","Smiling face with open hands"],["\u{1F92D}","Face with hand over mouth"],["\u{1FAE2}","Face with open eyes and hand over mouth"],["\u{1FAE3}","Face with peeking eye"],["\u{1F92B}","Shushing face"],["\u{1F914}","Thinking face"],["\u{1FAE1}","Saluting face"],["\u{1F910}","Zipper-mouth face"],["\u{1F928}","Face with raised eyebrow"],["\u{1F610}","Neutral face"],["\u{1F611}","Expressionless face"],["\u{1F636}","Face without mouth"],["\u{1FAE5}","Dotted line face"],["\u{1F636}\u200D\u{1F32B}\uFE0F","Face in clouds"],["\u{1F60F}","Smirking face"],["\u{1F612}","Unamused face"],["\u{1F644}","Face with rolling eyes"],["\u{1F62C}","Grimacing face"],["\u{1F62E}\u200D\u{1F4A8}","Face exhaling"],["\u{1F925}","Lying face"],["\u{1FAE8}","Shaking face"],["\u{1F642}\u200D\u2194\uFE0F","Head shaking horizontally"],["\u{1F642}\u200D\u2195\uFE0F","Head shaking vertically"],["\u{1F60C}","Relieved face"],["\u{1F614}","Pensive face"],["\u{1F62A}","Sleepy face"],["\u{1F924}","Drooling face"],["\u{1F634}","Sleeping face"],["\u{1FAE9}","Face with bags under eyes"],["\u{1F637}","Face with medical mask"],["\u{1F912}","Face with thermometer"],["\u{1F915}","Face with head-bandage"],["\u{1F922}","Nauseated face"],["\u{1F92E}","Face vomiting"],["\u{1F927}","Sneezing face"],["\u{1F975}","Hot face"],["\u{1F976}","Cold face"],["\u{1F974}","Woozy face"],["\u{1F635}","Face with crossed-out eyes"],["\u{1F635}\u200D\u{1F4AB}","Face with spiral eyes"],["\u{1F92F}","Exploding head"],["\u{1F920}","Cowboy hat face"],["\u{1F973}","Partying face"],["\u{1F978}","Disguised face"],["\u{1F60E}","Smiling face with sunglasses"],["\u{1F913}","Nerd face"],["\u{1F9D0}","Face with monocle"],["\u{1F615}","Confused face"],["\u{1FAE4}","Face with diagonal mouth"],["\u{1F61F}","Worried face"],["\u{1F641}","Slightly frowning face"],["\u2639\uFE0F","Frowning face"],["\u{1F62E}","Face with open mouth"],["\u{1F62F}","Hushed face"],["\u{1F632}","Astonished face"],["\u{1F633}","Flushed face"],["\u{1F97A}","Pleading face"],["\u{1F979}","Face holding back tears"],["\u{1F626}","Frowning face with open mouth"],["\u{1F627}","Anguished face"],["\u{1F628}","Fearful face"],["\u{1F630}","Anxious face with sweat"],["\u{1F625}","Sad but relieved face"],["\u{1F622}","Crying face"],["\u{1F62D}","Loudly crying face"],["\u{1F631}","Face screaming in fear"],["\u{1F616}","Confounded face"],["\u{1F623}","Persevering face"],["\u{1F61E}","Disappointed face"],["\u{1F613}","Downcast face with sweat"],["\u{1F629}","Weary face"],["\u{1F62B}","Tired face"],["\u{1F971}","Yawning face"],["\u{1F624}","Face with steam from nose"],["\u{1F621}","Enraged face"],["\u{1F620}","Angry face"],["\u{1F92C}","Face with symbols on mouth"],["\u{1F608}","Smiling face with horns"],["\u{1F47F}","Angry face with horns"],["\u{1F480}","Skull"],["\u2620\uFE0F","Skull and crossbones"],["\u{1F4A9}","Pile of poo"],["\u{1F921}","Clown face"],["\u{1F479}","Ogre"],["\u{1F47A}","Goblin"],["\u{1F47B}","Ghost"],["\u{1F47D}","Alien"],["\u{1F47E}","Alien monster"],["\u{1F916}","Robot"],["\u{1F63A}","Grinning cat"],["\u{1F638}","Grinning cat with smiling eyes"],["\u{1F639}","Cat with tears of joy"],["\u{1F63B}","Smiling cat with heart-eyes"],["\u{1F63C}","Cat with wry smile"],["\u{1F63D}","Kissing cat"],["\u{1F640}","Weary cat"],["\u{1F63F}","Crying cat"],["\u{1F63E}","Pouting cat"],["\u{1F648}","See-no-evil monkey"],["\u{1F649}","Hear-no-evil monkey"],["\u{1F64A}","Speak-no-evil monkey"],["\u{1F48C}","Love letter"],["\u{1F498}","Heart with arrow"],["\u{1F49D}","Heart with ribbon"],["\u{1F496}","Sparkling heart"],["\u{1F497}","Growing heart"],["\u{1F493}","Beating heart"],["\u{1F49E}","Revolving hearts"],["\u{1F495}","Two hearts"],["\u{1F49F}","Heart decoration"],["\u2763\uFE0F","Heart exclamation"],["\u{1F494}","Broken heart"],["\u2764\uFE0F\u200D\u{1F525}","Heart on fire"],["\u2764\uFE0F\u200D\u{1FA79}","Mending heart"],["\u2764\uFE0F","Red heart"],["\u{1FA77}","Pink heart"],["\u{1F9E1}","Orange heart"],["\u{1F49B}","Yellow heart"],["\u{1F49A}","Green heart"],["\u{1F499}","Blue heart"],["\u{1FA75}","Light blue heart"],["\u{1F49C}","Purple heart"],["\u{1F90E}","Brown heart"],["\u{1F5A4}","Black heart"],["\u{1FA76}","Grey heart"],["\u{1F90D}","White heart"],["\u{1F48B}","Kiss mark"],["\u{1F4AF}","Hundred points"],["\u{1F4A2}","Anger symbol"],["\u{1F4A5}","Collision"],["\u{1F4AB}","Dizzy"],["\u{1F4A6}","Sweat droplets"],["\u{1F4A8}","Dashing away"],["\u{1F573}\uFE0F","Hole"],["\u{1F4AC}","Speech balloon"],["\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F","Eye in speech bubble"],["\u{1F5E8}\uFE0F","Left speech bubble"],["\u{1F5EF}\uFE0F","Right anger bubble"],["\u{1F4AD}","Thought balloon"],["\u{1F4A4}","ZZZ"],["\u{1F44B}","Waving hand"],["\u{1F91A}","Raised back of hand"],["\u{1F590}\uFE0F","Hand with fingers splayed"],["\u270B","Raised hand"],["\u{1F596}","Vulcan salute"],["\u{1FAF1}","Rightwards hand"],["\u{1FAF2}","Leftwards hand"],["\u{1FAF3}","Palm down hand"],["\u{1FAF4}","Palm up hand"],["\u{1FAF7}","Leftwards pushing hand"],["\u{1FAF8}","Rightwards pushing hand"],["\u{1F44C}","OK hand"],["\u{1F90C}","Pinched fingers"],["\u{1F90F}","Pinching hand"],["\u270C\uFE0F","Victory hand"],["\u{1F91E}","Crossed fingers"],["\u{1FAF0}","Hand with index finger and thumb crossed"],["\u{1F91F}","Love-you gesture"],["\u{1F918}","Sign of the horns"],["\u{1F919}","Call me hand"],["\u{1F448}","Backhand index pointing left"],["\u{1F449}","Backhand index pointing right"],["\u{1F446}","Backhand index pointing up"],["\u{1F595}","Middle finger"],["\u{1F447}","Backhand index pointing down"],["\u261D\uFE0F","Index pointing up"],["\u{1FAF5}","Index pointing at the viewer"],["\u{1F44D}","Thumbs up"],["\u{1F44E}","Thumbs down"],["\u270A","Raised fist"],["\u{1F44A}","Oncoming fist"],["\u{1F91B}","Left-facing fist"],["\u{1F91C}","Right-facing fist"],["\u{1F44F}","Clapping hands"],["\u{1F64C}","Raising hands"],["\u{1FAF6}","Heart hands"],["\u{1F450}","Open hands"],["\u{1F932}","Palms up together"],["\u{1F91D}","Handshake"],["\u{1F64F}","Folded hands"],["\u270D\uFE0F","Writing hand"],["\u{1F485}","Nail polish"],["\u{1F933}","Selfie"],["\u{1F4AA}","Flexed biceps"],["\u{1F9BE}","Mechanical arm"],["\u{1F9BF}","Mechanical leg"],["\u{1F9B5}","Leg"],["\u{1F9B6}","Foot"],["\u{1F442}","Ear"],["\u{1F9BB}","Ear with hearing aid"],["\u{1F443}","Nose"],["\u{1F9E0}","Brain"],["\u{1FAC0}","Anatomical heart"],["\u{1FAC1}","Lungs"],["\u{1F9B7}","Tooth"],["\u{1F9B4}","Bone"],["\u{1F440}","Eyes"],["\u{1F441}\uFE0F","Eye"],["\u{1F445}","Tongue"],["\u{1F444}","Mouth"],["\u{1FAE6}","Biting lip"],["\u{1F476}","Baby"],["\u{1F9D2}","Child"],["\u{1F466}","Boy"],["\u{1F467}","Girl"],["\u{1F9D1}","Person"],["\u{1F471}","Person: blond hair"],["\u{1F468}","Man"],["\u{1F9D4}","Person: beard"],["\u{1F9D4}\u200D\u2642\uFE0F","Man: beard"],["\u{1F9D4}\u200D\u2640\uFE0F","Woman: beard"],["\u{1F468}\u200D\u{1F9B0}","Man: red hair"],["\u{1F468}\u200D\u{1F9B1}","Man: curly hair"],["\u{1F468}\u200D\u{1F9B3}","Man: white hair"],["\u{1F468}\u200D\u{1F9B2}","Man: bald"],["\u{1F469}","Woman"],["\u{1F469}\u200D\u{1F9B0}","Woman: red hair"],["\u{1F9D1}\u200D\u{1F9B0}","Person: red hair"],["\u{1F469}\u200D\u{1F9B1}","Woman: curly hair"],["\u{1F9D1}\u200D\u{1F9B1}","Person: curly hair"],["\u{1F469}\u200D\u{1F9B3}","Woman: white hair"],["\u{1F9D1}\u200D\u{1F9B3}","Person: white hair"],["\u{1F469}\u200D\u{1F9B2}","Woman: bald"],["\u{1F9D1}\u200D\u{1F9B2}","Person: bald"],["\u{1F471}\u200D\u2640\uFE0F","Woman: blond hair"],["\u{1F471}\u200D\u2642\uFE0F","Man: blond hair"],["\u{1F9D3}","Older person"],["\u{1F474}","Old man"],["\u{1F475}","Old woman"],["\u{1F64D}","Person frowning"],["\u{1F64D}\u200D\u2642\uFE0F","Man frowning"],["\u{1F64D}\u200D\u2640\uFE0F","Woman frowning"],["\u{1F64E}","Person pouting"],["\u{1F64E}\u200D\u2642\uFE0F","Man pouting"],["\u{1F64E}\u200D\u2640\uFE0F","Woman pouting"],["\u{1F645}","Person gesturing NO"],["\u{1F645}\u200D\u2642\uFE0F","Man gesturing NO"],["\u{1F645}\u200D\u2640\uFE0F","Woman gesturing NO"],["\u{1F646}","Person gesturing OK"],["\u{1F646}\u200D\u2642\uFE0F","Man gesturing OK"],["\u{1F646}\u200D\u2640\uFE0F","Woman gesturing OK"],["\u{1F481}","Person tipping hand"],["\u{1F481}\u200D\u2642\uFE0F","Man tipping hand"],["\u{1F481}\u200D\u2640\uFE0F","Woman tipping hand"],["\u{1F64B}","Person raising hand"],["\u{1F64B}\u200D\u2642\uFE0F","Man raising hand"],["\u{1F64B}\u200D\u2640\uFE0F","Woman raising hand"],["\u{1F9CF}","Deaf person"],["\u{1F9CF}\u200D\u2642\uFE0F","Deaf man"],["\u{1F9CF}\u200D\u2640\uFE0F","Deaf woman"],["\u{1F647}","Person bowing"],["\u{1F647}\u200D\u2642\uFE0F","Man bowing"],["\u{1F647}\u200D\u2640\uFE0F","Woman bowing"],["\u{1F926}","Person facepalming"],["\u{1F926}\u200D\u2642\uFE0F","Man facepalming"],["\u{1F926}\u200D\u2640\uFE0F","Woman facepalming"],["\u{1F937}","Person shrugging"],["\u{1F937}\u200D\u2642\uFE0F","Man shrugging"],["\u{1F937}\u200D\u2640\uFE0F","Woman shrugging"],["\u{1F9D1}\u200D\u2695\uFE0F","Health worker"],["\u{1F468}\u200D\u2695\uFE0F","Man health worker"],["\u{1F469}\u200D\u2695\uFE0F","Woman health worker"],["\u{1F9D1}\u200D\u{1F393}","Student"],["\u{1F468}\u200D\u{1F393}","Man student"],["\u{1F469}\u200D\u{1F393}","Woman student"],["\u{1F9D1}\u200D\u{1F3EB}","Teacher"],["\u{1F468}\u200D\u{1F3EB}","Man teacher"],["\u{1F469}\u200D\u{1F3EB}","Woman teacher"],["\u{1F9D1}\u200D\u2696\uFE0F","Judge"],["\u{1F468}\u200D\u2696\uFE0F","Man judge"],["\u{1F469}\u200D\u2696\uFE0F","Woman judge"],["\u{1F9D1}\u200D\u{1F33E}","Farmer"],["\u{1F468}\u200D\u{1F33E}","Man farmer"],["\u{1F469}\u200D\u{1F33E}","Woman farmer"],["\u{1F9D1}\u200D\u{1F373}","Cook"],["\u{1F468}\u200D\u{1F373}","Man cook"],["\u{1F469}\u200D\u{1F373}","Woman cook"],["\u{1F9D1}\u200D\u{1F527}","Mechanic"],["\u{1F468}\u200D\u{1F527}","Man mechanic"],["\u{1F469}\u200D\u{1F527}","Woman mechanic"],["\u{1F9D1}\u200D\u{1F3ED}","Factory worker"],["\u{1F468}\u200D\u{1F3ED}","Man factory worker"],["\u{1F469}\u200D\u{1F3ED}","Woman factory worker"],["\u{1F9D1}\u200D\u{1F4BC}","Office worker"],["\u{1F468}\u200D\u{1F4BC}","Man office worker"],["\u{1F469}\u200D\u{1F4BC}","Woman office worker"],["\u{1F9D1}\u200D\u{1F52C}","Scientist"],["\u{1F468}\u200D\u{1F52C}","Man scientist"],["\u{1F469}\u200D\u{1F52C}","Woman scientist"],["\u{1F9D1}\u200D\u{1F4BB}","Technologist"],["\u{1F468}\u200D\u{1F4BB}","Man technologist"],["\u{1F469}\u200D\u{1F4BB}","Woman technologist"],["\u{1F9D1}\u200D\u{1F3A4}","Singer"],["\u{1F468}\u200D\u{1F3A4}","Man singer"],["\u{1F469}\u200D\u{1F3A4}","Woman singer"],["\u{1F9D1}\u200D\u{1F3A8}","Artist"],["\u{1F468}\u200D\u{1F3A8}","Man artist"],["\u{1F469}\u200D\u{1F3A8}","Woman artist"],["\u{1F9D1}\u200D\u2708\uFE0F","Pilot"],["\u{1F468}\u200D\u2708\uFE0F","Man pilot"],["\u{1F469}\u200D\u2708\uFE0F","Woman pilot"],["\u{1F9D1}\u200D\u{1F680}","Astronaut"],["\u{1F468}\u200D\u{1F680}","Man astronaut"],["\u{1F469}\u200D\u{1F680}","Woman astronaut"],["\u{1F9D1}\u200D\u{1F692}","Firefighter"],["\u{1F468}\u200D\u{1F692}","Man firefighter"],["\u{1F469}\u200D\u{1F692}","Woman firefighter"],["\u{1F46E}","Police officer"],["\u{1F46E}\u200D\u2642\uFE0F","Man police officer"],["\u{1F46E}\u200D\u2640\uFE0F","Woman police officer"],["\u{1F575}\uFE0F","Detective"],["\u{1F575}\uFE0F\u200D\u2642\uFE0F","Man detective"],["\u{1F575}\uFE0F\u200D\u2640\uFE0F","Woman detective"],["\u{1F482}","Guard"],["\u{1F482}\u200D\u2642\uFE0F","Man guard"],["\u{1F482}\u200D\u2640\uFE0F","Woman guard"],["\u{1F977}","Ninja"],["\u{1F477}","Construction worker"],["\u{1F477}\u200D\u2642\uFE0F","Man construction worker"],["\u{1F477}\u200D\u2640\uFE0F","Woman construction worker"],["\u{1FAC5}","Person with crown"],["\u{1F934}","Prince"],["\u{1F478}","Princess"],["\u{1F473}","Person wearing turban"],["\u{1F473}\u200D\u2642\uFE0F","Man wearing turban"],["\u{1F473}\u200D\u2640\uFE0F","Woman wearing turban"],["\u{1F472}","Person with skullcap"],["\u{1F9D5}","Woman with headscarf"],["\u{1F935}","Person in tuxedo"],["\u{1F935}\u200D\u2642\uFE0F","Man in tuxedo"],["\u{1F935}\u200D\u2640\uFE0F","Woman in tuxedo"],["\u{1F470}","Person with veil"],["\u{1F470}\u200D\u2642\uFE0F","Man with veil"],["\u{1F470}\u200D\u2640\uFE0F","Woman with veil"],["\u{1F930}","Pregnant woman"],["\u{1FAC3}","Pregnant man"],["\u{1FAC4}","Pregnant person"],["\u{1F931}","Breast-feeding"],["\u{1F469}\u200D\u{1F37C}","Woman feeding baby"],["\u{1F468}\u200D\u{1F37C}","Man feeding baby"],["\u{1F9D1}\u200D\u{1F37C}","Person feeding baby"],["\u{1F47C}","Baby angel"],["\u{1F385}","Santa Claus"],["\u{1F936}","Mrs. Claus"],["\u{1F9D1}\u200D\u{1F384}","Mx. Claus"],["\u{1F9B8}","Superhero"],["\u{1F9B8}\u200D\u2642\uFE0F","Man superhero"],["\u{1F9B8}\u200D\u2640\uFE0F","Woman superhero"],["\u{1F9B9}","Supervillain"],["\u{1F9B9}\u200D\u2642\uFE0F","Man supervillain"],["\u{1F9B9}\u200D\u2640\uFE0F","Woman supervillain"],["\u{1F9D9}","Mage"],["\u{1F9D9}\u200D\u2642\uFE0F","Man mage"],["\u{1F9D9}\u200D\u2640\uFE0F","Woman mage"],["\u{1F9DA}","Fairy"],["\u{1F9DA}\u200D\u2642\uFE0F","Man fairy"],["\u{1F9DA}\u200D\u2640\uFE0F","Woman fairy"],["\u{1F9DB}","Vampire"],["\u{1F9DB}\u200D\u2642\uFE0F","Man vampire"],["\u{1F9DB}\u200D\u2640\uFE0F","Woman vampire"],["\u{1F9DC}","Merperson"],["\u{1F9DC}\u200D\u2642\uFE0F","Merman"],["\u{1F9DC}\u200D\u2640\uFE0F","Mermaid"],["\u{1F9DD}","Elf"],["\u{1F9DD}\u200D\u2642\uFE0F","Man elf"],["\u{1F9DD}\u200D\u2640\uFE0F","Woman elf"],["\u{1F9DE}","Genie"],["\u{1F9DE}\u200D\u2642\uFE0F","Man genie"],["\u{1F9DE}\u200D\u2640\uFE0F","Woman genie"],["\u{1F9DF}","Zombie"],["\u{1F9DF}\u200D\u2642\uFE0F","Man zombie"],["\u{1F9DF}\u200D\u2640\uFE0F","Woman zombie"],["\u{1F9CC}","Troll"],["\u{1F486}","Person getting massage"],["\u{1F486}\u200D\u2642\uFE0F","Man getting massage"],["\u{1F486}\u200D\u2640\uFE0F","Woman getting massage"],["\u{1F487}","Person getting haircut"],["\u{1F487}\u200D\u2642\uFE0F","Man getting haircut"],["\u{1F487}\u200D\u2640\uFE0F","Woman getting haircut"],["\u{1F6B6}","Person walking"],["\u{1F6B6}\u200D\u2642\uFE0F","Man walking"],["\u{1F6B6}\u200D\u2640\uFE0F","Woman walking"],["\u{1F6B6}\u200D\u27A1\uFE0F","Person walking facing right"],["\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman walking facing right"],["\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man walking facing right"],["\u{1F9CD}","Person standing"],["\u{1F9CD}\u200D\u2642\uFE0F","Man standing"],["\u{1F9CD}\u200D\u2640\uFE0F","Woman standing"],["\u{1F9CE}","Person kneeling"],["\u{1F9CE}\u200D\u2642\uFE0F","Man kneeling"],["\u{1F9CE}\u200D\u2640\uFE0F","Woman kneeling"],["\u{1F9CE}\u200D\u27A1\uFE0F","Person kneeling facing right"],["\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman kneeling facing right"],["\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man kneeling facing right"],["\u{1F9D1}\u200D\u{1F9AF}","Person with white cane"],["\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Person with white cane facing right"],["\u{1F468}\u200D\u{1F9AF}","Man with white cane"],["\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Man with white cane facing right"],["\u{1F469}\u200D\u{1F9AF}","Woman with white cane"],["\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Woman with white cane facing right"],["\u{1F9D1}\u200D\u{1F9BC}","Person in motorized wheelchair"],["\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Person in motorized wheelchair facing right"],["\u{1F468}\u200D\u{1F9BC}","Man in motorized wheelchair"],["\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Man in motorized wheelchair facing right"],["\u{1F469}\u200D\u{1F9BC}","Woman in motorized wheelchair"],["\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Woman in motorized wheelchair facing right"],["\u{1F9D1}\u200D\u{1F9BD}","Person in manual wheelchair"],["\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Person in manual wheelchair facing right"],["\u{1F468}\u200D\u{1F9BD}","Man in manual wheelchair"],["\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Man in manual wheelchair facing right"],["\u{1F469}\u200D\u{1F9BD}","Woman in manual wheelchair"],["\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Woman in manual wheelchair facing right"],["\u{1F3C3}","Person running"],["\u{1F3C3}\u200D\u2642\uFE0F","Man running"],["\u{1F3C3}\u200D\u2640\uFE0F","Woman running"],["\u{1F3C3}\u200D\u27A1\uFE0F","Person running facing right"],["\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman running facing right"],["\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man running facing right"],["\u{1F483}","Woman dancing"],["\u{1F57A}","Man dancing"],["\u{1F574}\uFE0F","Person in suit levitating"],["\u{1F46F}","People with bunny ears"],["\u{1F46F}\u200D\u2642\uFE0F","Men with bunny ears"],["\u{1F46F}\u200D\u2640\uFE0F","Women with bunny ears"],["\u{1F9D6}","Person in steamy room"],["\u{1F9D6}\u200D\u2642\uFE0F","Man in steamy room"],["\u{1F9D6}\u200D\u2640\uFE0F","Woman in steamy room"],["\u{1F9D7}","Person climbing"],["\u{1F9D7}\u200D\u2642\uFE0F","Man climbing"],["\u{1F9D7}\u200D\u2640\uFE0F","Woman climbing"],["\u{1F93A}","Person fencing"],["\u{1F3C7}","Horse racing"],["\u26F7\uFE0F","Skier"],["\u{1F3C2}","Snowboarder"],["\u{1F3CC}\uFE0F","Person golfing"],["\u{1F3CC}\uFE0F\u200D\u2642\uFE0F","Man golfing"],["\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","Woman golfing"],["\u{1F3C4}","Person surfing"],["\u{1F3C4}\u200D\u2642\uFE0F","Man surfing"],["\u{1F3C4}\u200D\u2640\uFE0F","Woman surfing"],["\u{1F6A3}","Person rowing boat"],["\u{1F6A3}\u200D\u2642\uFE0F","Man rowing boat"],["\u{1F6A3}\u200D\u2640\uFE0F","Woman rowing boat"],["\u{1F3CA}","Person swimming"],["\u{1F3CA}\u200D\u2642\uFE0F","Man swimming"],["\u{1F3CA}\u200D\u2640\uFE0F","Woman swimming"],["\u26F9\uFE0F","Person bouncing ball"],["\u26F9\uFE0F\u200D\u2642\uFE0F","Man bouncing ball"],["\u26F9\uFE0F\u200D\u2640\uFE0F","Woman bouncing ball"],["\u{1F3CB}\uFE0F","Person lifting weights"],["\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","Man lifting weights"],["\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","Woman lifting weights"],["\u{1F6B4}","Person biking"],["\u{1F6B4}\u200D\u2642\uFE0F","Man biking"],["\u{1F6B4}\u200D\u2640\uFE0F","Woman biking"],["\u{1F6B5}","Person mountain biking"],["\u{1F6B5}\u200D\u2642\uFE0F","Man mountain biking"],["\u{1F6B5}\u200D\u2640\uFE0F","Woman mountain biking"],["\u{1F938}","Person cartwheeling"],["\u{1F938}\u200D\u2642\uFE0F","Man cartwheeling"],["\u{1F938}\u200D\u2640\uFE0F","Woman cartwheeling"],["\u{1F93C}","People wrestling"],["\u{1F93C}\u200D\u2642\uFE0F","Men wrestling"],["\u{1F93C}\u200D\u2640\uFE0F","Women wrestling"],["\u{1F93D}","Person playing water polo"],["\u{1F93D}\u200D\u2642\uFE0F","Man playing water polo"],["\u{1F93D}\u200D\u2640\uFE0F","Woman playing water polo"],["\u{1F93E}","Person playing handball"],["\u{1F93E}\u200D\u2642\uFE0F","Man playing handball"],["\u{1F93E}\u200D\u2640\uFE0F","Woman playing handball"],["\u{1F939}","Person juggling"],["\u{1F939}\u200D\u2642\uFE0F","Man juggling"],["\u{1F939}\u200D\u2640\uFE0F","Woman juggling"],["\u{1F9D8}","Person in lotus position"],["\u{1F9D8}\u200D\u2642\uFE0F","Man in lotus position"],["\u{1F9D8}\u200D\u2640\uFE0F","Woman in lotus position"],["\u{1F6C0}","Person taking bath"],["\u{1F6CC}","Person in bed"],["\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}","People holding hands"],["\u{1F46D}","Women holding hands"],["\u{1F46B}","Woman and man holding hands"],["\u{1F46C}","Men holding hands"],["\u{1F48F}","Kiss"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","Kiss: woman, man"],["\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","Kiss: man, man"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}","Kiss: woman, woman"],["\u{1F491}","Couple with heart"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","Couple with heart: woman, man"],["\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","Couple with heart: man, man"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","Couple with heart: woman, woman"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","Family: man, woman, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","Family: man, woman, girl"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: man, woman, girl, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: man, woman, boy, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: man, woman, girl, girl"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","Family: man, man, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","Family: man, man, girl"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","Family: man, man, girl, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","Family: man, man, boy, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","Family: man, man, girl, girl"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","Family: woman, woman, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","Family: woman, woman, girl"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: woman, woman, girl, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: woman, woman, boy, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: woman, woman, girl, girl"],["\u{1F468}\u200D\u{1F466}","Family: man, boy"],["\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","Family: man, boy, boy"],["\u{1F468}\u200D\u{1F467}","Family: man, girl"],["\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","Family: man, girl, boy"],["\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","Family: man, girl, girl"],["\u{1F469}\u200D\u{1F466}","Family: woman, boy"],["\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: woman, boy, boy"],["\u{1F469}\u200D\u{1F467}","Family: woman, girl"],["\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: woman, girl, boy"],["\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: woman, girl, girl"],["\u{1F5E3}\uFE0F","Speaking head"],["\u{1F464}","Bust in silhouette"],["\u{1F465}","Busts in silhouette"],["\u{1FAC2}","People hugging"],["\u{1F46A}","Family"],["\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}","Family: adult, adult, child"],["\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}","Family: adult, adult, child, child"],["\u{1F9D1}\u200D\u{1F9D2}","Family: adult, child"],["\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}","Family: adult, child, child"],["\u{1F463}","Footprints"],["\u{1FAC6}","Fingerprint"],["\u{1F3FB}","Light skin tone"],["\u{1F3FC}","Medium-light skin tone"],["\u{1F3FD}","Medium skin tone"],["\u{1F3FE}","Medium-dark skin tone"],["\u{1F3FF}","Dark skin tone"],["\u{1F9B0}","Red hair"],["\u{1F9B1}","Curly hair"],["\u{1F9B3}","White hair"],["\u{1F9B2}","Bald"],["\u{1F435}","Monkey face"],["\u{1F412}","Monkey"],["\u{1F98D}","Gorilla"],["\u{1F9A7}","Orangutan"],["\u{1F436}","Dog face"],["\u{1F415}","Dog"],["\u{1F9AE}","Guide dog"],["\u{1F415}\u200D\u{1F9BA}","Service dog"],["\u{1F429}","Poodle"],["\u{1F43A}","Wolf"],["\u{1F98A}","Fox"],["\u{1F99D}","Raccoon"],["\u{1F431}","Cat face"],["\u{1F408}","Cat"],["\u{1F408}\u200D\u2B1B","Black cat"],["\u{1F981}","Lion"],["\u{1F42F}","Tiger face"],["\u{1F405}","Tiger"],["\u{1F406}","Leopard"],["\u{1F434}","Horse face"],["\u{1FACE}","Moose"],["\u{1FACF}","Donkey"],["\u{1F40E}","Horse"],["\u{1F984}","Unicorn"],["\u{1F993}","Zebra"],["\u{1F98C}","Deer"],["\u{1F9AC}","Bison"],["\u{1F42E}","Cow face"],["\u{1F402}","Ox"],["\u{1F403}","Water buffalo"],["\u{1F404}","Cow"],["\u{1F437}","Pig face"],["\u{1F416}","Pig"],["\u{1F417}","Boar"],["\u{1F43D}","Pig nose"],["\u{1F40F}","Ram"],["\u{1F411}","Ewe"],["\u{1F410}","Goat"],["\u{1F42A}","Camel"],["\u{1F42B}","Two-hump camel"],["\u{1F999}","Llama"],["\u{1F992}","Giraffe"],["\u{1F418}","Elephant"],["\u{1F9A3}","Mammoth"],["\u{1F98F}","Rhinoceros"],["\u{1F99B}","Hippopotamus"],["\u{1F42D}","Mouse face"],["\u{1F401}","Mouse"],["\u{1F400}","Rat"],["\u{1F439}","Hamster"],["\u{1F430}","Rabbit face"],["\u{1F407}","Rabbit"],["\u{1F43F}\uFE0F","Chipmunk"],["\u{1F9AB}","Beaver"],["\u{1F994}","Hedgehog"],["\u{1F987}","Bat"],["\u{1F43B}","Bear"],["\u{1F43B}\u200D\u2744\uFE0F","Polar bear"],["\u{1F428}","Koala"],["\u{1F43C}","Panda"],["\u{1F9A5}","Sloth"],["\u{1F9A6}","Otter"],["\u{1F9A8}","Skunk"],["\u{1F998}","Kangaroo"],["\u{1F9A1}","Badger"],["\u{1F43E}","Paw prints"],["\u{1F983}","Turkey"],["\u{1F414}","Chicken"],["\u{1F413}","Rooster"],["\u{1F423}","Hatching chick"],["\u{1F424}","Baby chick"],["\u{1F425}","Front-facing baby chick"],["\u{1F426}","Bird"],["\u{1F427}","Penguin"],["\u{1F54A}\uFE0F","Dove"],["\u{1F985}","Eagle"],["\u{1F986}","Duck"],["\u{1F9A2}","Swan"],["\u{1F989}","Owl"],["\u{1F9A4}","Dodo"],["\u{1FAB6}","Feather"],["\u{1F9A9}","Flamingo"],["\u{1F99A}","Peacock"],["\u{1F99C}","Parrot"],["\u{1FABD}","Wing"],["\u{1F426}\u200D\u2B1B","Black bird"],["\u{1FABF}","Goose"],["\u{1F426}\u200D\u{1F525}","Phoenix"],["\u{1F438}","Frog"],["\u{1F40A}","Crocodile"],["\u{1F422}","Turtle"],["\u{1F98E}","Lizard"],["\u{1F40D}","Snake"],["\u{1F432}","Dragon face"],["\u{1F409}","Dragon"],["\u{1F995}","Sauropod"],["\u{1F996}","T-Rex"],["\u{1F433}","Spouting whale"],["\u{1F40B}","Whale"],["\u{1F42C}","Dolphin"],["\u{1F9AD}","Seal"],["\u{1F41F}","Fish"],["\u{1F420}","Tropical fish"],["\u{1F421}","Blowfish"],["\u{1F988}","Shark"],["\u{1F419}","Octopus"],["\u{1F41A}","Spiral shell"],["\u{1FAB8}","Coral"],["\u{1FABC}","Jellyfish"],["\u{1F40C}","Snail"],["\u{1F98B}","Butterfly"],["\u{1F41B}","Bug"],["\u{1F41C}","Ant"],["\u{1F41D}","Honeybee"],["\u{1FAB2}","Beetle"],["\u{1F41E}","Lady beetle"],["\u{1F997}","Cricket"],["\u{1FAB3}","Cockroach"],["\u{1F577}\uFE0F","Spider"],["\u{1F578}\uFE0F","Spider web"],["\u{1F982}","Scorpion"],["\u{1F99F}","Mosquito"],["\u{1FAB0}","Fly"],["\u{1FAB1}","Worm"],["\u{1F9A0}","Microbe"],["\u{1F490}","Bouquet"],["\u{1F338}","Cherry blossom"],["\u{1F4AE}","White flower"],["\u{1FAB7}","Lotus"],["\u{1F3F5}\uFE0F","Rosette"],["\u{1F339}","Rose"],["\u{1F940}","Wilted flower"],["\u{1F33A}","Hibiscus"],["\u{1F33B}","Sunflower"],["\u{1F33C}","Blossom"],["\u{1F337}","Tulip"],["\u{1FABB}","Hyacinth"],["\u{1F331}","Seedling"],["\u{1FAB4}","Potted plant"],["\u{1F332}","Evergreen tree"],["\u{1F333}","Deciduous tree"],["\u{1F334}","Palm tree"],["\u{1F335}","Cactus"],["\u{1F33E}","Sheaf of rice"],["\u{1F33F}","Herb"],["\u2618\uFE0F","Shamrock"],["\u{1F340}","Four leaf clover"],["\u{1F341}","Maple leaf"],["\u{1F342}","Fallen leaf"],["\u{1F343}","Leaf fluttering in wind"],["\u{1FAB9}","Empty nest"],["\u{1FABA}","Nest with eggs"],["\u{1F344}","Mushroom"],["\u{1FABE}","Leafless tree"],["\u{1F347}","Grapes"],["\u{1F348}","Melon"],["\u{1F349}","Watermelon"],["\u{1F34A}","Tangerine"],["\u{1F34B}","Lemon"],["\u{1F34B}\u200D\u{1F7E9}","Lime"],["\u{1F34C}","Banana"],["\u{1F34D}","Pineapple"],["\u{1F96D}","Mango"],["\u{1F34E}","Red apple"],["\u{1F34F}","Green apple"],["\u{1F350}","Pear"],["\u{1F351}","Peach"],["\u{1F352}","Cherries"],["\u{1F353}","Strawberry"],["\u{1FAD0}","Blueberries"],["\u{1F95D}","Kiwi fruit"],["\u{1F345}","Tomato"],["\u{1FAD2}","Olive"],["\u{1F965}","Coconut"],["\u{1F951}","Avocado"],["\u{1F346}","Eggplant"],["\u{1F954}","Potato"],["\u{1F955}","Carrot"],["\u{1F33D}","Ear of corn"],["\u{1F336}\uFE0F","Hot pepper"],["\u{1FAD1}","Bell pepper"],["\u{1F952}","Cucumber"],["\u{1F96C}","Leafy green"],["\u{1F966}","Broccoli"],["\u{1F9C4}","Garlic"],["\u{1F9C5}","Onion"],["\u{1F95C}","Peanuts"],["\u{1FAD8}","Beans"],["\u{1F330}","Chestnut"],["\u{1FADA}","Ginger root"],["\u{1FADB}","Pea pod"],["\u{1F344}\u200D\u{1F7EB}","Brown mushroom"],["\u{1FADC}","Root vegetable"],["\u{1F35E}","Bread"],["\u{1F950}","Croissant"],["\u{1F956}","Baguette bread"],["\u{1FAD3}","Flatbread"],["\u{1F968}","Pretzel"],["\u{1F96F}","Bagel"],["\u{1F95E}","Pancakes"],["\u{1F9C7}","Waffle"],["\u{1F9C0}","Cheese wedge"],["\u{1F356}","Meat on bone"],["\u{1F357}","Poultry leg"],["\u{1F969}","Cut of meat"],["\u{1F953}","Bacon"],["\u{1F354}","Hamburger"],["\u{1F35F}","French fries"],["\u{1F355}","Pizza"],["\u{1F32D}","Hot dog"],["\u{1F96A}","Sandwich"],["\u{1F32E}","Taco"],["\u{1F32F}","Burrito"],["\u{1FAD4}","Tamale"],["\u{1F959}","Stuffed flatbread"],["\u{1F9C6}","Falafel"],["\u{1F95A}","Egg"],["\u{1F373}","Cooking"],["\u{1F958}","Shallow pan of food"],["\u{1F372}","Pot of food"],["\u{1FAD5}","Fondue"],["\u{1F963}","Bowl with spoon"],["\u{1F957}","Green salad"],["\u{1F37F}","Popcorn"],["\u{1F9C8}","Butter"],["\u{1F9C2}","Salt"],["\u{1F96B}","Canned food"],["\u{1F371}","Bento box"],["\u{1F358}","Rice cracker"],["\u{1F359}","Rice ball"],["\u{1F35A}","Cooked rice"],["\u{1F35B}","Curry rice"],["\u{1F35C}","Steaming bowl"],["\u{1F35D}","Spaghetti"],["\u{1F360}","Roasted sweet potato"],["\u{1F362}","Oden"],["\u{1F363}","Sushi"],["\u{1F364}","Fried shrimp"],["\u{1F365}","Fish cake with swirl"],["\u{1F96E}","Moon cake"],["\u{1F361}","Dango"],["\u{1F95F}","Dumpling"],["\u{1F960}","Fortune cookie"],["\u{1F961}","Takeout box"],["\u{1F980}","Crab"],["\u{1F99E}","Lobster"],["\u{1F990}","Shrimp"],["\u{1F991}","Squid"],["\u{1F9AA}","Oyster"],["\u{1F366}","Soft ice cream"],["\u{1F367}","Shaved ice"],["\u{1F368}","Ice cream"],["\u{1F369}","Doughnut"],["\u{1F36A}","Cookie"],["\u{1F382}","Birthday cake"],["\u{1F370}","Shortcake"],["\u{1F9C1}","Cupcake"],["\u{1F967}","Pie"],["\u{1F36B}","Chocolate bar"],["\u{1F36C}","Candy"],["\u{1F36D}","Lollipop"],["\u{1F36E}","Custard"],["\u{1F36F}","Honey pot"],["\u{1F37C}","Baby bottle"],["\u{1F95B}","Glass of milk"],["\u2615","Hot beverage"],["\u{1FAD6}","Teapot"],["\u{1F375}","Teacup without handle"],["\u{1F376}","Sake"],["\u{1F37E}","Bottle with popping cork"],["\u{1F377}","Wine glass"],["\u{1F378}","Cocktail glass"],["\u{1F379}","Tropical drink"],["\u{1F37A}","Beer mug"],["\u{1F37B}","Clinking beer mugs"],["\u{1F942}","Clinking glasses"],["\u{1F943}","Tumbler glass"],["\u{1FAD7}","Pouring liquid"],["\u{1F964}","Cup with straw"],["\u{1F9CB}","Bubble tea"],["\u{1F9C3}","Beverage box"],["\u{1F9C9}","Mate"],["\u{1F9CA}","Ice"],["\u{1F962}","Chopsticks"],["\u{1F37D}\uFE0F","Fork and knife with plate"],["\u{1F374}","Fork and knife"],["\u{1F944}","Spoon"],["\u{1F52A}","Kitchen knife"],["\u{1FAD9}","Jar"],["\u{1F3FA}","Amphora"],["\u{1F30D}","Globe showing Europe-Africa"],["\u{1F30E}","Globe showing Americas"],["\u{1F30F}","Globe showing Asia-Australia"],["\u{1F310}","Globe with meridians"],["\u{1F5FA}\uFE0F","World map"],["\u{1F5FE}","Map of Japan"],["\u{1F9ED}","Compass"],["\u{1F3D4}\uFE0F","Snow-capped mountain"],["\u26F0\uFE0F","Mountain"],["\u{1F30B}","Volcano"],["\u{1F5FB}","Mount Fuji"],["\u{1F3D5}\uFE0F","Camping"],["\u{1F3D6}\uFE0F","Beach with umbrella"],["\u{1F3DC}\uFE0F","Desert"],["\u{1F3DD}\uFE0F","Desert island"],["\u{1F3DE}\uFE0F","National park"],["\u{1F3DF}\uFE0F","Stadium"],["\u{1F3DB}\uFE0F","Classical building"],["\u{1F3D7}\uFE0F","Building construction"],["\u{1F9F1}","Brick"],["\u{1FAA8}","Rock"],["\u{1FAB5}","Wood"],["\u{1F6D6}","Hut"],["\u{1F3D8}\uFE0F","Houses"],["\u{1F3DA}\uFE0F","Derelict house"],["\u{1F3E0}","House"],["\u{1F3E1}","House with garden"],["\u{1F3E2}","Office building"],["\u{1F3E3}","Japanese post office"],["\u{1F3E4}","Post office"],["\u{1F3E5}","Hospital"],["\u{1F3E6}","Bank"],["\u{1F3E8}","Hotel"],["\u{1F3E9}","Love hotel"],["\u{1F3EA}","Convenience store"],["\u{1F3EB}","School"],["\u{1F3EC}","Department store"],["\u{1F3ED}","Factory"],["\u{1F3EF}","Japanese castle"],["\u{1F3F0}","Castle"],["\u{1F492}","Wedding"],["\u{1F5FC}","Tokyo Tower"],["\u{1F5FD}","Statue of Liberty"],["\u26EA","Church"],["\u{1F54C}","Mosque"],["\u{1F6D5}","Hindu temple"],["\u{1F54D}","Synagogue"],["\u26E9\uFE0F","Shinto shrine"],["\u{1F54B}","Kaaba"],["\u26F2","Fountain"],["\u26FA","Tent"],["\u{1F301}","Foggy"],["\u{1F303}","Night with stars"],["\u{1F3D9}\uFE0F","Cityscape"],["\u{1F304}","Sunrise over mountains"],["\u{1F305}","Sunrise"],["\u{1F306}","Cityscape at dusk"],["\u{1F307}","Sunset"],["\u{1F309}","Bridge at night"],["\u2668\uFE0F","Hot springs"],["\u{1F3A0}","Carousel horse"],["\u{1F6DD}","Playground slide"],["\u{1F3A1}","Ferris wheel"],["\u{1F3A2}","Roller coaster"],["\u{1F488}","Barber pole"],["\u{1F3AA}","Circus tent"],["\u{1F682}","Locomotive"],["\u{1F683}","Railway car"],["\u{1F684}","High-speed train"],["\u{1F685}","Bullet train"],["\u{1F686}","Train"],["\u{1F687}","Metro"],["\u{1F688}","Light rail"],["\u{1F689}","Station"],["\u{1F68A}","Tram"],["\u{1F69D}","Monorail"],["\u{1F69E}","Mountain railway"],["\u{1F68B}","Tram car"],["\u{1F68C}","Bus"],["\u{1F68D}","Oncoming bus"],["\u{1F68E}","Trolleybus"],["\u{1F690}","Minibus"],["\u{1F691}","Ambulance"],["\u{1F692}","Fire engine"],["\u{1F693}","Police car"],["\u{1F694}","Oncoming police car"],["\u{1F695}","Taxi"],["\u{1F696}","Oncoming taxi"],["\u{1F697}","Automobile"],["\u{1F698}","Oncoming automobile"],["\u{1F699}","Sport utility vehicle"],["\u{1F6FB}","Pickup truck"],["\u{1F69A}","Delivery truck"],["\u{1F69B}","Articulated lorry"],["\u{1F69C}","Tractor"],["\u{1F3CE}\uFE0F","Racing car"],["\u{1F3CD}\uFE0F","Motorcycle"],["\u{1F6F5}","Motor scooter"],["\u{1F9BD}","Manual wheelchair"],["\u{1F9BC}","Motorized wheelchair"],["\u{1F6FA}","Auto rickshaw"],["\u{1F6B2}","Bicycle"],["\u{1F6F4}","Kick scooter"],["\u{1F6F9}","Skateboard"],["\u{1F6FC}","Roller skate"],["\u{1F68F}","Bus stop"],["\u{1F6E3}\uFE0F","Motorway"],["\u{1F6E4}\uFE0F","Railway track"],["\u{1F6E2}\uFE0F","Oil drum"],["\u26FD","Fuel pump"],["\u{1F6DE}","Wheel"],["\u{1F6A8}","Police car light"],["\u{1F6A5}","Horizontal traffic light"],["\u{1F6A6}","Vertical traffic light"],["\u{1F6D1}","Stop sign"],["\u{1F6A7}","Construction"],["\u2693","Anchor"],["\u{1F6DF}","Ring buoy"],["\u26F5","Sailboat"],["\u{1F6F6}","Canoe"],["\u{1F6A4}","Speedboat"],["\u{1F6F3}\uFE0F","Passenger ship"],["\u26F4\uFE0F","Ferry"],["\u{1F6E5}\uFE0F","Motor boat"],["\u{1F6A2}","Ship"],["\u2708\uFE0F","Airplane"],["\u{1F6E9}\uFE0F","Small airplane"],["\u{1F6EB}","Airplane departure"],["\u{1F6EC}","Airplane arrival"],["\u{1FA82}","Parachute"],["\u{1F4BA}","Seat"],["\u{1F681}","Helicopter"],["\u{1F69F}","Suspension railway"],["\u{1F6A0}","Mountain cableway"],["\u{1F6A1}","Aerial tramway"],["\u{1F6F0}\uFE0F","Satellite"],["\u{1F680}","Rocket"],["\u{1F6F8}","Flying saucer"],["\u{1F6CE}\uFE0F","Bellhop bell"],["\u{1F9F3}","Luggage"],["\u231B","Hourglass done"],["\u23F3","Hourglass not done"],["\u231A","Watch"],["\u23F0","Alarm clock"],["\u23F1\uFE0F","Stopwatch"],["\u23F2\uFE0F","Timer clock"],["\u{1F570}\uFE0F","Mantelpiece clock"],["\u{1F55B}","Twelve o'clock"],["\u{1F567}","Twelve-thirty"],["\u{1F550}","One o'clock"],["\u{1F55C}","One-thirty"],["\u{1F551}","Two o'clock"],["\u{1F55D}","Two-thirty"],["\u{1F552}","Three o'clock"],["\u{1F55E}","Three-thirty"],["\u{1F553}","Four o'clock"],["\u{1F55F}","Four-thirty"],["\u{1F554}","Five o'clock"],["\u{1F560}","Five-thirty"],["\u{1F555}","Six o'clock"],["\u{1F561}","Six-thirty"],["\u{1F556}","Seven o'clock"],["\u{1F562}","Seven-thirty"],["\u{1F557}","Eight o'clock"],["\u{1F563}","Eight-thirty"],["\u{1F558}","Nine o'clock"],["\u{1F564}","Nine-thirty"],["\u{1F559}","Ten o'clock"],["\u{1F565}","Ten-thirty"],["\u{1F55A}","Eleven o'clock"],["\u{1F566}","Eleven-thirty"],["\u{1F311}","New moon"],["\u{1F312}","Waxing crescent moon"],["\u{1F313}","First quarter moon"],["\u{1F314}","Waxing gibbous moon"],["\u{1F315}","Full moon"],["\u{1F316}","Waning gibbous moon"],["\u{1F317}","Last quarter moon"],["\u{1F318}","Waning crescent moon"],["\u{1F319}","Crescent moon"],["\u{1F31A}","New moon face"],["\u{1F31B}","First quarter moon face"],["\u{1F31C}","Last quarter moon face"],["\u{1F321}\uFE0F","Thermometer"],["\u2600\uFE0F","Sun"],["\u{1F31D}","Full moon face"],["\u{1F31E}","Sun with face"],["\u{1FA90}","Ringed planet"],["\u2B50","Star"],["\u{1F31F}","Glowing star"],["\u{1F320}","Shooting star"],["\u{1F30C}","Milky way"],["\u2601\uFE0F","Cloud"],["\u26C5","Sun behind cloud"],["\u26C8\uFE0F","Cloud with lightning and rain"],["\u{1F324}\uFE0F","Sun behind small cloud"],["\u{1F325}\uFE0F","Sun behind large cloud"],["\u{1F326}\uFE0F","Sun behind rain cloud"],["\u{1F327}\uFE0F","Cloud with rain"],["\u{1F328}\uFE0F","Cloud with snow"],["\u{1F329}\uFE0F","Cloud with lightning"],["\u{1F32A}\uFE0F","Tornado"],["\u{1F32B}\uFE0F","Fog"],["\u{1F32C}\uFE0F","Wind face"],["\u{1F300}","Cyclone"],["\u{1F308}","Rainbow"],["\u{1F302}","Closed umbrella"],["\u2602\uFE0F","Umbrella"],["\u2614","Umbrella with rain drops"],["\u26F1\uFE0F","Umbrella on ground"],["\u26A1","High voltage"],["\u2744\uFE0F","Snowflake"],["\u2603\uFE0F","Snowman"],["\u26C4","Snowman without snow"],["\u2604\uFE0F","Comet"],["\u{1F525}","Fire"],["\u{1F4A7}","Droplet"],["\u{1F30A}","Water wave"],["\u{1F383}","Jack-o-lantern"],["\u{1F384}","Christmas tree"],["\u{1F386}","Fireworks"],["\u{1F387}","Sparkler"],["\u{1F9E8}","Firecracker"],["\u2728","Sparkles"],["\u{1F388}","Balloon"],["\u{1F389}","Party popper"],["\u{1F38A}","Confetti ball"],["\u{1F38B}","Tanabata tree"],["\u{1F38D}","Pine decoration"],["\u{1F38E}","Japanese dolls"],["\u{1F38F}","Carp streamer"],["\u{1F390}","Wind chime"],["\u{1F391}","Moon viewing ceremony"],["\u{1F9E7}","Red envelope"],["\u{1F380}","Ribbon"],["\u{1F381}","Wrapped gift"],["\u{1F397}\uFE0F","Reminder ribbon"],["\u{1F39F}\uFE0F","Admission tickets"],["\u{1F3AB}","Ticket"],["\u{1F396}\uFE0F","Military medal"],["\u{1F3C6}","Trophy"],["\u{1F3C5}","Sports medal"],["\u{1F947}","1st place medal"],["\u{1F948}","2nd place medal"],["\u{1F949}","3rd place medal"],["\u26BD","Soccer ball"],["\u26BE","Baseball"],["\u{1F94E}","Softball"],["\u{1F3C0}","Basketball"],["\u{1F3D0}","Volleyball"],["\u{1F3C8}","American football"],["\u{1F3C9}","Rugby football"],["\u{1F3BE}","Tennis"],["\u{1F94F}","Flying disc"],["\u{1F3B3}","Bowling"],["\u{1F3CF}","Cricket game"],["\u{1F3D1}","Field hockey"],["\u{1F3D2}","Ice hockey"],["\u{1F94D}","Lacrosse"],["\u{1F3D3}","Ping pong"],["\u{1F3F8}","Badminton"],["\u{1F94A}","Boxing glove"],["\u{1F94B}","Martial arts uniform"],["\u{1F945}","Goal net"],["\u26F3","Flag in hole"],["\u26F8\uFE0F","Ice skate"],["\u{1F3A3}","Fishing pole"],["\u{1F93F}","Diving mask"],["\u{1F3BD}","Running shirt"],["\u{1F3BF}","Skis"],["\u{1F6F7}","Sled"],["\u{1F94C}","Curling stone"],["\u{1F3AF}","Bullseye"],["\u{1FA80}","Yo-yo"],["\u{1FA81}","Kite"],["\u{1F52B}","Water pistol"],["\u{1F3B1}","Pool 8 ball"],["\u{1F52E}","Crystal ball"],["\u{1FA84}","Magic wand"],["\u{1F3AE}","Video game"],["\u{1F579}\uFE0F","Joystick"],["\u{1F3B0}","Slot machine"],["\u{1F3B2}","Game die"],["\u{1F9E9}","Puzzle piece"],["\u{1F9F8}","Teddy bear"],["\u{1FA85}","Pi\xF1ata"],["\u{1FAA9}","Mirror ball"],["\u{1FA86}","Nesting dolls"],["\u2660\uFE0F","Spade suit"],["\u2665\uFE0F","Heart suit"],["\u2666\uFE0F","Diamond suit"],["\u2663\uFE0F","Club suit"],["\u265F\uFE0F","Chess pawn"],["\u{1F0CF}","Joker"],["\u{1F004}","Mahjong red dragon"],["\u{1F3B4}","Flower playing cards"],["\u{1F3AD}","Performing arts"],["\u{1F5BC}\uFE0F","Framed picture"],["\u{1F3A8}","Artist palette"],["\u{1F9F5}","Thread"],["\u{1FAA1}","Sewing needle"],["\u{1F9F6}","Yarn"],["\u{1FAA2}","Knot"],["\u{1F453}","Glasses"],["\u{1F576}\uFE0F","Sunglasses"],["\u{1F97D}","Goggles"],["\u{1F97C}","Lab coat"],["\u{1F9BA}","Safety vest"],["\u{1F454}","Necktie"],["\u{1F455}","T-shirt"],["\u{1F456}","Jeans"],["\u{1F9E3}","Scarf"],["\u{1F9E4}","Gloves"],["\u{1F9E5}","Coat"],["\u{1F9E6}","Socks"],["\u{1F457}","Dress"],["\u{1F458}","Kimono"],["\u{1F97B}","Sari"],["\u{1FA71}","One-piece swimsuit"],["\u{1FA72}","Briefs"],["\u{1FA73}","Shorts"],["\u{1F459}","Bikini"],["\u{1F45A}","Woman's clothes"],["\u{1FAAD}","Folding hand fan"],["\u{1F45B}","Purse"],["\u{1F45C}","Handbag"],["\u{1F45D}","Clutch bag"],["\u{1F6CD}\uFE0F","Shopping bags"],["\u{1F392}","Backpack"],["\u{1FA74}","Thong sandal"],["\u{1F45E}","Man's shoe"],["\u{1F45F}","Running shoe"],["\u{1F97E}","Hiking boot"],["\u{1F97F}","Flat shoe"],["\u{1F460}","High-heeled shoe"],["\u{1F461}","Woman's sandal"],["\u{1FA70}","Ballet shoes"],["\u{1F462}","Woman's boot"],["\u{1FAAE}","Hair pick"],["\u{1F451}","Crown"],["\u{1F452}","Woman's hat"],["\u{1F3A9}","Top hat"],["\u{1F393}","Graduation cap"],["\u{1F9E2}","Billed cap"],["\u{1FA96}","Military helmet"],["\u26D1\uFE0F","Rescue worker's helmet"],["\u{1F4FF}","Prayer beads"],["\u{1F484}","Lipstick"],["\u{1F48D}","Ring"],["\u{1F48E}","Gem stone"],["\u{1F507}","Muted speaker"],["\u{1F508}","Speaker low volume"],["\u{1F509}","Speaker medium volume"],["\u{1F50A}","Speaker high volume"],["\u{1F4E2}","Loudspeaker"],["\u{1F4E3}","Megaphone"],["\u{1F4EF}","Postal horn"],["\u{1F514}","Bell"],["\u{1F515}","Bell with slash"],["\u{1F3BC}","Musical score"],["\u{1F3B5}","Musical note"],["\u{1F3B6}","Musical notes"],["\u{1F399}\uFE0F","Studio microphone"],["\u{1F39A}\uFE0F","Level slider"],["\u{1F39B}\uFE0F","Control knobs"],["\u{1F3A4}","Microphone"],["\u{1F3A7}","Headphone"],["\u{1F4FB}","Radio"],["\u{1F3B7}","Saxophone"],["\u{1FA97}","Accordion"],["\u{1F3B8}","Guitar"],["\u{1F3B9}","Musical keyboard"],["\u{1F3BA}","Trumpet"],["\u{1F3BB}","Violin"],["\u{1FA95}","Banjo"],["\u{1F941}","Drum"],["\u{1FA98}","Long drum"],["\u{1FA87}","Maracas"],["\u{1FA88}","Flute"],["\u{1FA89}","Harp"],["\u{1F4F1}","Mobile phone"],["\u{1F4F2}","Mobile phone with arrow"],["\u260E\uFE0F","Telephone"],["\u{1F4DE}","Telephone receiver"],["\u{1F4DF}","Pager"],["\u{1F4E0}","Fax machine"],["\u{1F50B}","Battery"],["\u{1FAAB}","Low battery"],["\u{1F50C}","Electric plug"],["\u{1F4BB}","Laptop"],["\u{1F5A5}\uFE0F","Desktop computer"],["\u{1F5A8}\uFE0F","Printer"],["\u2328\uFE0F","Keyboard"],["\u{1F5B1}\uFE0F","Computer mouse"],["\u{1F5B2}\uFE0F","Trackball"],["\u{1F4BD}","Computer disk"],["\u{1F4BE}","Floppy disk"],["\u{1F4BF}","Optical disk"],["\u{1F4C0}","DVD"],["\u{1F9EE}","Abacus"],["\u{1F3A5}","Movie camera"],["\u{1F39E}\uFE0F","Film frames"],["\u{1F4FD}\uFE0F","Film projector"],["\u{1F3AC}","Clapper board"],["\u{1F4FA}","Television"],["\u{1F4F7}","Camera"],["\u{1F4F8}","Camera with flash"],["\u{1F4F9}","Video camera"],["\u{1F4FC}","Videocassette"],["\u{1F50D}","Magnifying glass tilted left"],["\u{1F50E}","Magnifying glass tilted right"],["\u{1F56F}\uFE0F","Candle"],["\u{1F4A1}","Light bulb"],["\u{1F526}","Flashlight"],["\u{1F3EE}","Red paper lantern"],["\u{1FA94}","Diya lamp"],["\u{1F4D4}","Notebook with decorative cover"],["\u{1F4D5}","Closed book"],["\u{1F4D6}","Open book"],["\u{1F4D7}","Green book"],["\u{1F4D8}","Blue book"],["\u{1F4D9}","Orange book"],["\u{1F4DA}","Books"],["\u{1F4D3}","Notebook"],["\u{1F4D2}","Ledger"],["\u{1F4C3}","Page with curl"],["\u{1F4DC}","Scroll"],["\u{1F4C4}","Page facing up"],["\u{1F4F0}","Newspaper"],["\u{1F5DE}\uFE0F","Rolled-up newspaper"],["\u{1F4D1}","Bookmark tabs"],["\u{1F516}","Bookmark"],["\u{1F3F7}\uFE0F","Label"],["\u{1F4B0}","Money bag"],["\u{1FA99}","Coin"],["\u{1F4B4}","Yen banknote"],["\u{1F4B5}","Dollar banknote"],["\u{1F4B6}","Euro banknote"],["\u{1F4B7}","Pound banknote"],["\u{1F4B8}","Money with wings"],["\u{1F4B3}","Credit card"],["\u{1F9FE}","Receipt"],["\u{1F4B9}","Chart increasing with yen"],["\u2709\uFE0F","Envelope"],["\u{1F4E7}","E-mail"],["\u{1F4E8}","Incoming envelope"],["\u{1F4E9}","Envelope with arrow"],["\u{1F4E4}","Outbox tray"],["\u{1F4E5}","Inbox tray"],["\u{1F4E6}","Package"],["\u{1F4EB}","Closed mailbox with raised flag"],["\u{1F4EA}","Closed mailbox with lowered flag"],["\u{1F4EC}","Open mailbox with raised flag"],["\u{1F4ED}","Open mailbox with lowered flag"],["\u{1F4EE}","Postbox"],["\u{1F5F3}\uFE0F","Ballot box with ballot"],["\u270F\uFE0F","Pencil"],["\u2712\uFE0F","Black nib"],["\u{1F58B}\uFE0F","Fountain pen"],["\u{1F58A}\uFE0F","Pen"],["\u{1F58C}\uFE0F","Paintbrush"],["\u{1F58D}\uFE0F","Crayon"],["\u{1F4DD}","Memo"],["\u{1F4BC}","Briefcase"],["\u{1F4C1}","File folder"],["\u{1F4C2}","Open file folder"],["\u{1F5C2}\uFE0F","Card index dividers"],["\u{1F4C5}","Calendar"],["\u{1F4C6}","Tear-off calendar"],["\u{1F5D2}\uFE0F","Spiral notepad"],["\u{1F5D3}\uFE0F","Spiral calendar"],["\u{1F4C7}","Card index"],["\u{1F4C8}","Chart increasing"],["\u{1F4C9}","Chart decreasing"],["\u{1F4CA}","Bar chart"],["\u{1F4CB}","Clipboard"],["\u{1F4CC}","Pushpin"],["\u{1F4CD}","Round pushpin"],["\u{1F4CE}","Paperclip"],["\u{1F587}\uFE0F","Linked paperclips"],["\u{1F4CF}","Straight ruler"],["\u{1F4D0}","Triangular ruler"],["\u2702\uFE0F","Scissors"],["\u{1F5C3}\uFE0F","Card file box"],["\u{1F5C4}\uFE0F","File cabinet"],["\u{1F5D1}\uFE0F","Wastebasket"],["\u{1F512}","Locked"],["\u{1F513}","Unlocked"],["\u{1F50F}","Locked with pen"],["\u{1F510}","Locked with key"],["\u{1F511}","Key"],["\u{1F5DD}\uFE0F","Old key"],["\u{1F528}","Hammer"],["\u{1FA93}","Axe"],["\u26CF\uFE0F","Pick"],["\u2692\uFE0F","Hammer and pick"],["\u{1F6E0}\uFE0F","Hammer and wrench"],["\u{1F5E1}\uFE0F","Dagger"],["\u2694\uFE0F","Crossed swords"],["\u{1F4A3}","Bomb"],["\u{1FA83}","Boomerang"],["\u{1F3F9}","Bow and arrow"],["\u{1F6E1}\uFE0F","Shield"],["\u{1FA9A}","Carpentry saw"],["\u{1F527}","Wrench"],["\u{1FA9B}","Screwdriver"],["\u{1F529}","Nut and bolt"],["\u2699\uFE0F","Gear"],["\u{1F5DC}\uFE0F","Clamp"],["\u2696\uFE0F","Balance scale"],["\u{1F9AF}","White cane"],["\u{1F517}","Link"],["\u26D3\uFE0F\u200D\u{1F4A5}","Broken chain"],["\u26D3\uFE0F","Chains"],["\u{1FA9D}","Hook"],["\u{1F9F0}","Toolbox"],["\u{1F9F2}","Magnet"],["\u{1FA9C}","Ladder"],["\u{1FA8F}","Shovel"],["\u2697\uFE0F","Alembic"],["\u{1F9EA}","Test tube"],["\u{1F9EB}","Petri dish"],["\u{1F9EC}","DNA"],["\u{1F52C}","Microscope"],["\u{1F52D}","Telescope"],["\u{1F4E1}","Satellite antenna"],["\u{1F489}","Syringe"],["\u{1FA78}","Drop of blood"],["\u{1F48A}","Pill"],["\u{1FA79}","Adhesive bandage"],["\u{1FA7C}","Crutch"],["\u{1FA7A}","Stethoscope"],["\u{1FA7B}","X-ray"],["\u{1F6AA}","Door"],["\u{1F6D7}","Elevator"],["\u{1FA9E}","Mirror"],["\u{1FA9F}","Window"],["\u{1F6CF}\uFE0F","Bed"],["\u{1F6CB}\uFE0F","Couch and lamp"],["\u{1FA91}","Chair"],["\u{1F6BD}","Toilet"],["\u{1FAA0}","Plunger"],["\u{1F6BF}","Shower"],["\u{1F6C1}","Bathtub"],["\u{1FAA4}","Mouse trap"],["\u{1FA92}","Razor"],["\u{1F9F4}","Lotion bottle"],["\u{1F9F7}","Safety pin"],["\u{1F9F9}","Broom"],["\u{1F9FA}","Basket"],["\u{1F9FB}","Roll of paper"],["\u{1FAA3}","Bucket"],["\u{1F9FC}","Soap"],["\u{1FAE7}","Bubbles"],["\u{1FAA5}","Toothbrush"],["\u{1F9FD}","Sponge"],["\u{1F9EF}","Fire extinguisher"],["\u{1F6D2}","Shopping cart"],["\u{1F6AC}","Cigarette"],["\u26B0\uFE0F","Coffin"],["\u{1FAA6}","Headstone"],["\u26B1\uFE0F","Funeral urn"],["\u{1F9FF}","Nazar amulet"],["\u{1FAAC}","Hamsa"],["\u{1F5FF}","Moai"],["\u{1FAA7}","Placard"],["\u{1FAAA}","Identification card"],["\u{1F3E7}","ATM sign"],["\u{1F6AE}","Litter in bin sign"],["\u{1F6B0}","Potable water"],["\u267F","Wheelchair symbol"],["\u{1F6B9}","Men's room"],["\u{1F6BA}","Women's room"],["\u{1F6BB}","Restroom"],["\u{1F6BC}","Baby symbol"],["\u{1F6BE}","Water closet"],["\u{1F6C2}","Passport control"],["\u{1F6C3}","Customs"],["\u{1F6C4}","Baggage claim"],["\u{1F6C5}","Left luggage"],["\u26A0\uFE0F","Warning"],["\u{1F6B8}","Children crossing"],["\u26D4","No entry"],["\u{1F6AB}","Prohibited"],["\u{1F6B3}","No bicycles"],["\u{1F6AD}","No smoking"],["\u{1F6AF}","No littering"],["\u{1F6B1}","Non-potable water"],["\u{1F6B7}","No pedestrians"],["\u{1F4F5}","No mobile phones"],["\u{1F51E}","No one under eighteen"],["\u2622\uFE0F","Radioactive"],["\u2623\uFE0F","Biohazard"],["\u2B06\uFE0F","Up arrow"],["\u2197\uFE0F","Up-right arrow"],["\u27A1\uFE0F","Right arrow"],["\u2198\uFE0F","Down-right arrow"],["\u2B07\uFE0F","Down arrow"],["\u2199\uFE0F","Down-left arrow"],["\u2B05\uFE0F","Left arrow"],["\u2196\uFE0F","Up-left arrow"],["\u2195\uFE0F","Up-down arrow"],["\u2194\uFE0F","Left-right arrow"],["\u21A9\uFE0F","Right arrow curving left"],["\u21AA\uFE0F","Left arrow curving right"],["\u2934\uFE0F","Right arrow curving up"],["\u2935\uFE0F","Right arrow curving down"],["\u{1F503}","Clockwise vertical arrows"],["\u{1F504}","Counterclockwise arrows button"],["\u{1F519}","BACK arrow"],["\u{1F51A}","END arrow"],["\u{1F51B}","ON! arrow"],["\u{1F51C}","SOON arrow"],["\u{1F51D}","TOP arrow"],["\u{1F6D0}","Place of worship"],["\u269B\uFE0F","Atom symbol"],["\u{1F549}\uFE0F","Om"],["\u2721\uFE0F","Star of David"],["\u2638\uFE0F","Wheel of dharma"],["\u262F\uFE0F","Yin yang"],["\u271D\uFE0F","Latin cross"],["\u2626\uFE0F","Orthodox cross"],["\u262A\uFE0F","Star and crescent"],["\u262E\uFE0F","Peace symbol"],["\u{1F54E}","Menorah"],["\u{1F52F}","Dotted six-pointed star"],["\u{1FAAF}","Khanda"],["\u2648","Aries"],["\u2649","Taurus"],["\u264A","Gemini"],["\u264B","Cancer"],["\u264C","Leo"],["\u264D","Virgo"],["\u264E","Libra"],["\u264F","Scorpio"],["\u2650","Sagittarius"],["\u2651","Capricorn"],["\u2652","Aquarius"],["\u2653","Pisces"],["\u26CE","Ophiuchus"],["\u{1F500}","Shuffle tracks button"],["\u{1F501}","Repeat button"],["\u{1F502}","Repeat single button"],["\u25B6\uFE0F","Play button"],["\u23E9","Fast-forward button"],["\u23ED\uFE0F","Next track button"],["\u23EF\uFE0F","Play or pause button"],["\u25C0\uFE0F","Reverse button"],["\u23EA","Fast reverse button"],["\u23EE\uFE0F","Last track button"],["\u{1F53C}","Upwards button"],["\u23EB","Fast up button"],["\u{1F53D}","Downwards button"],["\u23EC","Fast down button"],["\u23F8\uFE0F","Pause button"],["\u23F9\uFE0F","Stop button"],["\u23FA\uFE0F","Record button"],["\u23CF\uFE0F","Eject button"],["\u{1F3A6}","Cinema"],["\u{1F505}","Dim button"],["\u{1F506}","Bright button"],["\u{1F4F6}","Antenna bars"],["\u{1F6DC}","Wireless"],["\u{1F4F3}","Vibration mode"],["\u{1F4F4}","Mobile phone off"],["\u2640\uFE0F","Female sign"],["\u2642\uFE0F","Male sign"],["\u26A7\uFE0F","Transgender symbol"],["\u2716\uFE0F","Multiply"],["\u2795","Plus"],["\u2796","Minus"],["\u2797","Divide"],["\u{1F7F0}","Heavy equals sign"],["\u267E\uFE0F","Infinity"],["\u203C\uFE0F","Double exclamation mark"],["\u2049\uFE0F","Exclamation question mark"],["\u2753","Red question mark"],["\u2754","White question mark"],["\u2755","White exclamation mark"],["\u2757","Red exclamation mark"],["\u3030\uFE0F","Wavy dash"],["\u{1F4B1}","Currency exchange"],["\u{1F4B2}","Heavy dollar sign"],["\u2695\uFE0F","Medical symbol"],["\u267B\uFE0F","Recycling symbol"],["\u269C\uFE0F","Fleur-de-lis"],["\u{1F531}","Trident emblem"],["\u{1F4DB}","Name badge"],["\u{1F530}","Japanese symbol for beginner"],["\u2B55","Hollow red circle"],["\u2705","Check mark button"],["\u2611\uFE0F","Check box with check"],["\u2714\uFE0F","Check mark"],["\u274C","Cross mark"],["\u274E","Cross mark button"],["\u27B0","Curly loop"],["\u27BF","Double curly loop"],["\u303D\uFE0F","Part alternation mark"],["\u2733\uFE0F","Eight-spoked asterisk"],["\u2734\uFE0F","Eight-pointed star"],["\u2747\uFE0F","Sparkle"],["\xA9\uFE0F","Copyright"],["\xAE\uFE0F","Registered"],["\u2122\uFE0F","Trade mark"],["\u{1FADF}","Splatter"],["#\uFE0F\u20E3","Keycap: #"],["*\uFE0F\u20E3","Keycap: *"],["0\uFE0F\u20E3","Keycap: 0"],["1\uFE0F\u20E3","Keycap: 1"],["2\uFE0F\u20E3","Keycap: 2"],["3\uFE0F\u20E3","Keycap: 3"],["4\uFE0F\u20E3","Keycap: 4"],["5\uFE0F\u20E3","Keycap: 5"],["6\uFE0F\u20E3","Keycap: 6"],["7\uFE0F\u20E3","Keycap: 7"],["8\uFE0F\u20E3","Keycap: 8"],["9\uFE0F\u20E3","Keycap: 9"],["\u{1F51F}","Keycap: 10"],["\u{1F520}","Input latin uppercase"],["\u{1F521}","Input latin lowercase"],["\u{1F522}","Input numbers"],["\u{1F523}","Input symbols"],["\u{1F524}","Input latin letters"],["\u{1F170}\uFE0F","A button (blood type)"],["\u{1F18E}","AB button (blood type)"],["\u{1F171}\uFE0F","B button (blood type)"],["\u{1F191}","CL button"],["\u{1F192}","COOL button"],["\u{1F193}","FREE button"],["\u2139\uFE0F","Information"],["\u{1F194}","ID button"],["\u24C2\uFE0F","Circled M"],["\u{1F195}","NEW button"],["\u{1F196}","NG button"],["\u{1F17E}\uFE0F","O button (blood type)"],["\u{1F197}","OK button"],["\u{1F17F}\uFE0F","P button"],["\u{1F198}","SOS button"],["\u{1F199}","UP! button"],["\u{1F19A}","VS button"],["\u{1F201}","Japanese \u201Chere\u201D button"],["\u{1F202}\uFE0F","Japanese \u201Cservice charge\u201D button"],["\u{1F237}\uFE0F","Japanese \u201Cmonthly amount\u201D button"],["\u{1F236}","Japanese \u201Cnot free of charge\u201D button"],["\u{1F22F}","Japanese \u201Creserved\u201D button"],["\u{1F250}","Japanese \u201Cbargain\u201D button"],["\u{1F239}","Japanese \u201Cdiscount\u201D button"],["\u{1F21A}","Japanese \u201Cfree of charge\u201D button"],["\u{1F232}","Japanese \u201Cprohibited\u201D button"],["\u{1F251}","Japanese \u201Cacceptable\u201D button"],["\u{1F238}","Japanese \u201Capplication\u201D button"],["\u{1F234}","Japanese \u201Cpassing grade\u201D button"],["\u{1F233}","Japanese \u201Cvacancy\u201D button"],["\u3297\uFE0F","Japanese \u201Ccongratulations\u201D button"],["\u3299\uFE0F","Japanese \u201Csecret\u201D button"],["\u{1F23A}","Japanese \u201Copen for business\u201D button"],["\u{1F235}","Japanese \u201Cno vacancy\u201D button"],["\u{1F534}","Red circle"],["\u{1F7E0}","Orange circle"],["\u{1F7E1}","Yellow circle"],["\u{1F7E2}","Green circle"],["\u{1F535}","Blue circle"],["\u{1F7E3}","Purple circle"],["\u{1F7E4}","Brown circle"],["\u26AB","Black circle"],["\u26AA","White circle"],["\u{1F7E5}","Red square"],["\u{1F7E7}","Orange square"],["\u{1F7E8}","Yellow square"],["\u{1F7E9}","Green square"],["\u{1F7E6}","Blue square"],["\u{1F7EA}","Purple square"],["\u{1F7EB}","Brown square"],["\u2B1B","Black large square"],["\u2B1C","White large square"],["\u25FC\uFE0F","Black medium square"],["\u25FB\uFE0F","White medium square"],["\u25FE","Black medium-small square"],["\u25FD","White medium-small square"],["\u25AA\uFE0F","Black small square"],["\u25AB\uFE0F","White small square"],["\u{1F536}","Large orange diamond"],["\u{1F537}","Large blue diamond"],["\u{1F538}","Small orange diamond"],["\u{1F539}","Small blue diamond"],["\u{1F53A}","Red triangle pointed up"],["\u{1F53B}","Red triangle pointed down"],["\u{1F4A0}","Diamond with a dot"],["\u{1F518}","Radio button"],["\u{1F533}","White square button"],["\u{1F532}","Black square button"],["\u{1F3C1}","Chequered flag"],["\u{1F6A9}","Triangular flag"],["\u{1F38C}","Crossed flags"],["\u{1F3F4}","Black flag"],["\u{1F3F3}\uFE0F","White flag"],["\u{1F3F3}\uFE0F\u200D\u{1F308}","Rainbow flag"],["\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F","Transgender flag"],["\u{1F3F4}\u200D\u2620\uFE0F","Pirate flag"],["\u{1F1E6}\u{1F1E8}","Flag: Ascension Island"],["\u{1F1E6}\u{1F1E9}","Flag: Andorra"],["\u{1F1E6}\u{1F1EA}","Flag: United Arab Emirates"],["\u{1F1E6}\u{1F1EB}","Flag: Afghanistan"],["\u{1F1E6}\u{1F1EC}","Flag: Antigua & Barbuda"],["\u{1F1E6}\u{1F1EE}","Flag: Anguilla"],["\u{1F1E6}\u{1F1F1}","Flag: Albania"],["\u{1F1E6}\u{1F1F2}","Flag: Armenia"],["\u{1F1E6}\u{1F1F4}","Flag: Angola"],["\u{1F1E6}\u{1F1F6}","Flag: Antarctica"],["\u{1F1E6}\u{1F1F7}","Flag: Argentina"],["\u{1F1E6}\u{1F1F8}","Flag: American Samoa"],["\u{1F1E6}\u{1F1F9}","Flag: Austria"],["\u{1F1E6}\u{1F1FA}","Flag: Australia"],["\u{1F1E6}\u{1F1FC}","Flag: Aruba"],["\u{1F1E6}\u{1F1FD}","Flag: \xC5land Islands"],["\u{1F1E6}\u{1F1FF}","Flag: Azerbaijan"],["\u{1F1E7}\u{1F1E6}","Flag: Bosnia & Herzegovina"],["\u{1F1E7}\u{1F1E7}","Flag: Barbados"],["\u{1F1E7}\u{1F1E9}","Flag: Bangladesh"],["\u{1F1E7}\u{1F1EA}","Flag: Belgium"],["\u{1F1E7}\u{1F1EB}","Flag: Burkina Faso"],["\u{1F1E7}\u{1F1EC}","Flag: Bulgaria"],["\u{1F1E7}\u{1F1ED}","Flag: Bahrain"],["\u{1F1E7}\u{1F1EE}","Flag: Burundi"],["\u{1F1E7}\u{1F1EF}","Flag: Benin"],["\u{1F1E7}\u{1F1F1}","Flag: St. Barth\xE9lemy"],["\u{1F1E7}\u{1F1F2}","Flag: Bermuda"],["\u{1F1E7}\u{1F1F3}","Flag: Brunei"],["\u{1F1E7}\u{1F1F4}","Flag: Bolivia"],["\u{1F1E7}\u{1F1F6}","Flag: Caribbean Netherlands"],["\u{1F1E7}\u{1F1F7}","Flag: Brazil"],["\u{1F1E7}\u{1F1F8}","Flag: Bahamas"],["\u{1F1E7}\u{1F1F9}","Flag: Bhutan"],["\u{1F1E7}\u{1F1FB}","Flag: Bouvet Island"],["\u{1F1E7}\u{1F1FC}","Flag: Botswana"],["\u{1F1E7}\u{1F1FE}","Flag: Belarus"],["\u{1F1E7}\u{1F1FF}","Flag: Belize"],["\u{1F1E8}\u{1F1E6}","Flag: Canada"],["\u{1F1E8}\u{1F1E8}","Flag: Cocos (Keeling) Islands"],["\u{1F1E8}\u{1F1E9}","Flag: Congo - Kinshasa"],["\u{1F1E8}\u{1F1EB}","Flag: Central African Republic"],["\u{1F1E8}\u{1F1EC}","Flag: Congo - Brazzaville"],["\u{1F1E8}\u{1F1ED}","Flag: Switzerland"],["\u{1F1E8}\u{1F1EE}","Flag: C\xF4te d'Ivoire"],["\u{1F1E8}\u{1F1F0}","Flag: Cook Islands"],["\u{1F1E8}\u{1F1F1}","Flag: Chile"],["\u{1F1E8}\u{1F1F2}","Flag: Cameroon"],["\u{1F1E8}\u{1F1F3}","Flag: China"],["\u{1F1E8}\u{1F1F4}","Flag: Colombia"],["\u{1F1E8}\u{1F1F5}","Flag: Clipperton Island"],["\u{1F1E8}\u{1F1F6}","Flag: Sark"],["\u{1F1E8}\u{1F1F7}","Flag: Costa Rica"],["\u{1F1E8}\u{1F1FA}","Flag: Cuba"],["\u{1F1E8}\u{1F1FB}","Flag: Cape Verde"],["\u{1F1E8}\u{1F1FC}","Flag: Cura\xE7ao"],["\u{1F1E8}\u{1F1FD}","Flag: Christmas Island"],["\u{1F1E8}\u{1F1FE}","Flag: Cyprus"],["\u{1F1E8}\u{1F1FF}","Flag: Czechia"],["\u{1F1E9}\u{1F1EA}","Flag: Germany"],["\u{1F1E9}\u{1F1EC}","Flag: Diego Garcia"],["\u{1F1E9}\u{1F1EF}","Flag: Djibouti"],["\u{1F1E9}\u{1F1F0}","Flag: Denmark"],["\u{1F1E9}\u{1F1F2}","Flag: Dominica"],["\u{1F1E9}\u{1F1F4}","Flag: Dominican Republic"],["\u{1F1E9}\u{1F1FF}","Flag: Algeria"],["\u{1F1EA}\u{1F1E6}","Flag: Ceuta & Melilla"],["\u{1F1EA}\u{1F1E8}","Flag: Ecuador"],["\u{1F1EA}\u{1F1EA}","Flag: Estonia"],["\u{1F1EA}\u{1F1EC}","Flag: Egypt"],["\u{1F1EA}\u{1F1ED}","Flag: Western Sahara"],["\u{1F1EA}\u{1F1F7}","Flag: Eritrea"],["\u{1F1EA}\u{1F1F8}","Flag: Spain"],["\u{1F1EA}\u{1F1F9}","Flag: Ethiopia"],["\u{1F1EA}\u{1F1FA}","Flag: European Union"],["\u{1F1EB}\u{1F1EE}","Flag: Finland"],["\u{1F1EB}\u{1F1EF}","Flag: Fiji"],["\u{1F1EB}\u{1F1F0}","Flag: Falkland Islands"],["\u{1F1EB}\u{1F1F2}","Flag: Micronesia"],["\u{1F1EB}\u{1F1F4}","Flag: Faroe Islands"],["\u{1F1EB}\u{1F1F7}","Flag: France"],["\u{1F1EC}\u{1F1E6}","Flag: Gabon"],["\u{1F1EC}\u{1F1E7}","Flag: United Kingdom"],["\u{1F1EC}\u{1F1E9}","Flag: Grenada"],["\u{1F1EC}\u{1F1EA}","Flag: Georgia"],["\u{1F1EC}\u{1F1EB}","Flag: French Guiana"],["\u{1F1EC}\u{1F1EC}","Flag: Guernsey"],["\u{1F1EC}\u{1F1ED}","Flag: Ghana"],["\u{1F1EC}\u{1F1EE}","Flag: Gibraltar"],["\u{1F1EC}\u{1F1F1}","Flag: Greenland"],["\u{1F1EC}\u{1F1F2}","Flag: Gambia"],["\u{1F1EC}\u{1F1F3}","Flag: Guinea"],["\u{1F1EC}\u{1F1F5}","Flag: Guadeloupe"],["\u{1F1EC}\u{1F1F6}","Flag: Equatorial Guinea"],["\u{1F1EC}\u{1F1F7}","Flag: Greece"],["\u{1F1EC}\u{1F1F8}","Flag: South Georgia & South Sandwich Islands"],["\u{1F1EC}\u{1F1F9}","Flag: Guatemala"],["\u{1F1EC}\u{1F1FA}","Flag: Guam"],["\u{1F1EC}\u{1F1FC}","Flag: Guinea-Bissau"],["\u{1F1EC}\u{1F1FE}","Flag: Guyana"],["\u{1F1ED}\u{1F1F0}","Flag: Hong Kong SAR China"],["\u{1F1ED}\u{1F1F2}","Flag: Heard & McDonald Islands"],["\u{1F1ED}\u{1F1F3}","Flag: Honduras"],["\u{1F1ED}\u{1F1F7}","Flag: Croatia"],["\u{1F1ED}\u{1F1F9}","Flag: Haiti"],["\u{1F1ED}\u{1F1FA}","Flag: Hungary"],["\u{1F1EE}\u{1F1E8}","Flag: Canary Islands"],["\u{1F1EE}\u{1F1E9}","Flag: Indonesia"],["\u{1F1EE}\u{1F1EA}","Flag: Ireland"],["\u{1F1EE}\u{1F1F1}","Flag: Israel"],["\u{1F1EE}\u{1F1F2}","Flag: Isle of Man"],["\u{1F1EE}\u{1F1F3}","Flag: India"],["\u{1F1EE}\u{1F1F4}","Flag: British Indian Ocean Territory"],["\u{1F1EE}\u{1F1F6}","Flag: Iraq"],["\u{1F1EE}\u{1F1F7}","Flag: Iran"],["\u{1F1EE}\u{1F1F8}","Flag: Iceland"],["\u{1F1EE}\u{1F1F9}","Flag: Italy"],["\u{1F1EF}\u{1F1EA}","Flag: Jersey"],["\u{1F1EF}\u{1F1F2}","Flag: Jamaica"],["\u{1F1EF}\u{1F1F4}","Flag: Jordan"],["\u{1F1EF}\u{1F1F5}","Flag: Japan"],["\u{1F1F0}\u{1F1EA}","Flag: Kenya"],["\u{1F1F0}\u{1F1EC}","Flag: Kyrgyzstan"],["\u{1F1F0}\u{1F1ED}","Flag: Cambodia"],["\u{1F1F0}\u{1F1EE}","Flag: Kiribati"],["\u{1F1F0}\u{1F1F2}","Flag: Comoros"],["\u{1F1F0}\u{1F1F3}","Flag: St. Kitts & Nevis"],["\u{1F1F0}\u{1F1F5}","Flag: North Korea"],["\u{1F1F0}\u{1F1F7}","Flag: South Korea"],["\u{1F1F0}\u{1F1FC}","Flag: Kuwait"],["\u{1F1F0}\u{1F1FE}","Flag: Cayman Islands"],["\u{1F1F0}\u{1F1FF}","Flag: Kazakhstan"],["\u{1F1F1}\u{1F1E6}","Flag: Laos"],["\u{1F1F1}\u{1F1E7}","Flag: Lebanon"],["\u{1F1F1}\u{1F1E8}","Flag: St. Lucia"],["\u{1F1F1}\u{1F1EE}","Flag: Liechtenstein"],["\u{1F1F1}\u{1F1F0}","Flag: Sri Lanka"],["\u{1F1F1}\u{1F1F7}","Flag: Liberia"],["\u{1F1F1}\u{1F1F8}","Flag: Lesotho"],["\u{1F1F1}\u{1F1F9}","Flag: Lithuania"],["\u{1F1F1}\u{1F1FA}","Flag: Luxembourg"],["\u{1F1F1}\u{1F1FB}","Flag: Latvia"],["\u{1F1F1}\u{1F1FE}","Flag: Libya"],["\u{1F1F2}\u{1F1E6}","Flag: Morocco"],["\u{1F1F2}\u{1F1E8}","Flag: Monaco"],["\u{1F1F2}\u{1F1E9}","Flag: Moldova"],["\u{1F1F2}\u{1F1EA}","Flag: Montenegro"],["\u{1F1F2}\u{1F1EB}","Flag: St. Martin"],["\u{1F1F2}\u{1F1EC}","Flag: Madagascar"],["\u{1F1F2}\u{1F1ED}","Flag: Marshall Islands"],["\u{1F1F2}\u{1F1F0}","Flag: North Macedonia"],["\u{1F1F2}\u{1F1F1}","Flag: Mali"],["\u{1F1F2}\u{1F1F2}","Flag: Myanmar (Burma)"],["\u{1F1F2}\u{1F1F3}","Flag: Mongolia"],["\u{1F1F2}\u{1F1F4}","Flag: Macao SAR China"],["\u{1F1F2}\u{1F1F5}","Flag: Northern Mariana Islands"],["\u{1F1F2}\u{1F1F6}","Flag: Martinique"],["\u{1F1F2}\u{1F1F7}","Flag: Mauritania"],["\u{1F1F2}\u{1F1F8}","Flag: Montserrat"],["\u{1F1F2}\u{1F1F9}","Flag: Malta"],["\u{1F1F2}\u{1F1FA}","Flag: Mauritius"],["\u{1F1F2}\u{1F1FB}","Flag: Maldives"],["\u{1F1F2}\u{1F1FC}","Flag: Malawi"],["\u{1F1F2}\u{1F1FD}","Flag: Mexico"],["\u{1F1F2}\u{1F1FE}","Flag: Malaysia"],["\u{1F1F2}\u{1F1FF}","Flag: Mozambique"],["\u{1F1F3}\u{1F1E6}","Flag: Namibia"],["\u{1F1F3}\u{1F1E8}","Flag: New Caledonia"],["\u{1F1F3}\u{1F1EA}","Flag: Niger"],["\u{1F1F3}\u{1F1EB}","Flag: Norfolk Island"],["\u{1F1F3}\u{1F1EC}","Flag: Nigeria"],["\u{1F1F3}\u{1F1EE}","Flag: Nicaragua"],["\u{1F1F3}\u{1F1F1}","Flag: Netherlands"],["\u{1F1F3}\u{1F1F4}","Flag: Norway"],["\u{1F1F3}\u{1F1F5}","Flag: Nepal"],["\u{1F1F3}\u{1F1F7}","Flag: Nauru"],["\u{1F1F3}\u{1F1FA}","Flag: Niue"],["\u{1F1F3}\u{1F1FF}","Flag: New Zealand"],["\u{1F1F4}\u{1F1F2}","Flag: Oman"],["\u{1F1F5}\u{1F1E6}","Flag: Panama"],["\u{1F1F5}\u{1F1EA}","Flag: Peru"],["\u{1F1F5}\u{1F1EB}","Flag: French Polynesia"],["\u{1F1F5}\u{1F1EC}","Flag: Papua New Guinea"],["\u{1F1F5}\u{1F1ED}","Flag: Philippines"],["\u{1F1F5}\u{1F1F0}","Flag: Pakistan"],["\u{1F1F5}\u{1F1F1}","Flag: Poland"],["\u{1F1F5}\u{1F1F2}","Flag: St. Pierre & Miquelon"],["\u{1F1F5}\u{1F1F3}","Flag: Pitcairn Islands"],["\u{1F1F5}\u{1F1F7}","Flag: Puerto Rico"],["\u{1F1F5}\u{1F1F8}","Flag: Palestinian Territories"],["\u{1F1F5}\u{1F1F9}","Flag: Portugal"],["\u{1F1F5}\u{1F1FC}","Flag: Palau"],["\u{1F1F5}\u{1F1FE}","Flag: Paraguay"],["\u{1F1F6}\u{1F1E6}","Flag: Qatar"],["\u{1F1F7}\u{1F1EA}","Flag: R\xE9union"],["\u{1F1F7}\u{1F1F4}","Flag: Romania"],["\u{1F1F7}\u{1F1F8}","Flag: Serbia"],["\u{1F1F7}\u{1F1FA}","Flag: Russia"],["\u{1F1F7}\u{1F1FC}","Flag: Rwanda"],["\u{1F1F8}\u{1F1E6}","Flag: Saudi Arabia"],["\u{1F1F8}\u{1F1E7}","Flag: Solomon Islands"],["\u{1F1F8}\u{1F1E8}","Flag: Seychelles"],["\u{1F1F8}\u{1F1E9}","Flag: Sudan"],["\u{1F1F8}\u{1F1EA}","Flag: Sweden"],["\u{1F1F8}\u{1F1EC}","Flag: Singapore"],["\u{1F1F8}\u{1F1ED}","Flag: St. Helena"],["\u{1F1F8}\u{1F1EE}","Flag: Slovenia"],["\u{1F1F8}\u{1F1EF}","Flag: Svalbard & Jan Mayen"],["\u{1F1F8}\u{1F1F0}","Flag: Slovakia"],["\u{1F1F8}\u{1F1F1}","Flag: Sierra Leone"],["\u{1F1F8}\u{1F1F2}","Flag: San Marino"],["\u{1F1F8}\u{1F1F3}","Flag: Senegal"],["\u{1F1F8}\u{1F1F4}","Flag: Somalia"],["\u{1F1F8}\u{1F1F7}","Flag: Suriname"],["\u{1F1F8}\u{1F1F8}","Flag: South Sudan"],["\u{1F1F8}\u{1F1F9}","Flag: S\xE3o Tom\xE9 & Pr\xEDncipe"],["\u{1F1F8}\u{1F1FB}","Flag: El Salvador"],["\u{1F1F8}\u{1F1FD}","Flag: Sint Maarten"],["\u{1F1F8}\u{1F1FE}","Flag: Syria"],["\u{1F1F8}\u{1F1FF}","Flag: Eswatini"],["\u{1F1F9}\u{1F1E6}","Flag: Tristan da Cunha"],["\u{1F1F9}\u{1F1E8}","Flag: Turks & Caicos Islands"],["\u{1F1F9}\u{1F1E9}","Flag: Chad"],["\u{1F1F9}\u{1F1EB}","Flag: French Southern Territories"],["\u{1F1F9}\u{1F1EC}","Flag: Togo"],["\u{1F1F9}\u{1F1ED}","Flag: Thailand"],["\u{1F1F9}\u{1F1EF}","Flag: Tajikistan"],["\u{1F1F9}\u{1F1F0}","Flag: Tokelau"],["\u{1F1F9}\u{1F1F1}","Flag: Timor-Leste"],["\u{1F1F9}\u{1F1F2}","Flag: Turkmenistan"],["\u{1F1F9}\u{1F1F3}","Flag: Tunisia"],["\u{1F1F9}\u{1F1F4}","Flag: Tonga"],["\u{1F1F9}\u{1F1F7}","Flag: T\xFCrkiye"],["\u{1F1F9}\u{1F1F9}","Flag: Trinidad & Tobago"],["\u{1F1F9}\u{1F1FB}","Flag: Tuvalu"],["\u{1F1F9}\u{1F1FC}","Flag: Taiwan"],["\u{1F1F9}\u{1F1FF}","Flag: Tanzania"],["\u{1F1FA}\u{1F1E6}","Flag: Ukraine"],["\u{1F1FA}\u{1F1EC}","Flag: Uganda"],["\u{1F1FA}\u{1F1F2}","Flag: U.S. Outlying Islands"],["\u{1F1FA}\u{1F1F3}","Flag: United Nations"],["\u{1F1FA}\u{1F1F8}","Flag: United States"],["\u{1F1FA}\u{1F1FE}","Flag: Uruguay"],["\u{1F1FA}\u{1F1FF}","Flag: Uzbekistan"],["\u{1F1FB}\u{1F1E6}","Flag: Vatican City"],["\u{1F1FB}\u{1F1E8}","Flag: St. Vincent & Grenadines"],["\u{1F1FB}\u{1F1EA}","Flag: Venezuela"],["\u{1F1FB}\u{1F1EC}","Flag: British Virgin Islands"],["\u{1F1FB}\u{1F1EE}","Flag: U.S. Virgin Islands"],["\u{1F1FB}\u{1F1F3}","Flag: Vietnam"],["\u{1F1FB}\u{1F1FA}","Flag: Vanuatu"],["\u{1F1FC}\u{1F1EB}","Flag: Wallis & Futuna"],["\u{1F1FC}\u{1F1F8}","Flag: Samoa"],["\u{1F1FD}\u{1F1F0}","Flag: Kosovo"],["\u{1F1FE}\u{1F1EA}","Flag: Yemen"],["\u{1F1FE}\u{1F1F9}","Flag: Mayotte"],["\u{1F1FF}\u{1F1E6}","Flag: South Africa"],["\u{1F1FF}\u{1F1F2}","Flag: Zambia"],["\u{1F1FF}\u{1F1FC}","Flag: Zimbabwe"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}","Flag: England"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}","Flag: Scotland"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}","Flag: Wales"]]);var ke=class{static async localize(){let a;switch(window.localStorage.language){case"ar":a=await Promise.resolve().then(()=>z(Ce()));break;case"de":a=await Promise.resolve().then(()=>z(Se()));break;case"en-GB":a=await Promise.resolve().then(()=>z(xe()));break;case"es":a=await Promise.resolve().then(()=>z(Ae()));break;case"fr":a=await Promise.resolve().then(()=>z(Te()));break;case"id":a=await Promise.resolve().then(()=>z(Re()));break;case"ja":a=await Promise.resolve().then(()=>z(Fe()));break;case"ru":a=await Promise.resolve().then(()=>z(Pe()));break;case"zh":a=await Promise.resolve().then(()=>z(De()));break;default:return}this.localizeDefaultStrings(this,a)}static localizeDefaultStrings(a,e){for(let[t,i]of Object.entries(e))typeof a[t]=="object"?typeof i=="object"&&this.localizeDefaultStrings(a[t],i):typeof i=="string"&&(a[t]=i)}},s=ke;s.appItems={help:"Open help",settings:"Open settings",pin:"Toggle pin",sidebarLeft:"Toggle left sidebar",sidebarRight:"Toggle right sidebar",minimize:"Minimize",maximize:"Maximize",unmaximize:"Restore down",close:"Close window"},s.menu={changeIcon:"Change icon...",changeIcons:"Change {#} icons...",removeIcon:"Remove icon",removeIcons:"Remove {#} icons",resetColor:"Reset color",resetColors:"Reset {#} colors",editRule:"Edit rule..."},s.rulePicker={selectPage:"Select a page",fileRules:"File rules",folderRules:"Folder rules",rules:"Rules",addRule:"Add rule",editRule:"Edit rule",removeRule:"Remove rule",untitledRule:"Untitled rule",drag:"Drag to rearrange"},s.ruleEditor={fileRule:"File rule",folderRule:"Folder rule",conditions:"Conditions",addCondition:"Add condition",resetCondition:"Reset condition",removeCondition:"Remove condition",removeRule:"Remove rule",buttonMatch:"1 match",buttonMatches:"{#} matches",buttonNoMatches:"No matches",enterName:"Give this rule a name",enterValue:"Enter a value",enterRegex:"Enter a regex",enterHexCode:"Enter a #hexcode",enterNumber:"Enter a number",matchConditions:{name:"Match conditions",desc:"Choose how many conditions need to match.",all:"All",any:"Any",none:"None"},source:{icon:"Icon",color:"Color",name:"Name",filename:"Filename",extension:"Extension",tree:"Folder tree",path:"Path in vault",headings:"Headings",links:"Links",tags:"Tags",properties:"Properties...",created:"Date created",modified:"Date modified",clock:"System clock"},operator:{is:"is","!is":"is not",contains:"contains",startsWith:"starts with",endsWith:"ends with",matches:"matches regex","!contains":"does not contain","!startsWith":"does not start with","!endsWith":"does not end with","!matches":"does not match regex",includes:"includes item","!includes":"does not include item",allAre:"all are",allContain:"all contain",allStartWith:"all start with",allEndWith:"all end with",allMatch:"all match regex",anyContain:"any contain",anyStartWith:"any start with",anyEndWith:"any end with",anyMatch:"any match regex",noneContain:"none contain",noneStartWith:"none start with",noneEndWith:"none end with",noneMatch:"none match regex",countIs:"count is","!countIs":"count is not",countIsLess:"count is less than",countIsMore:"count is more than",isTrue:"is true","!isTrue":"is not true",isFalse:"is false","!isFalse":"is not false",equals:"equals","!equals":"does not equal",isLess:"is less than",isMore:"is more than",isDivisible:"is divisible by","!isLess":"is not less than","!isMore":"is not more than","!isDivisible":"is not divisible by",isBefore:"is before",isAfter:"is after",isNow:"is now","!isNow":"is not now",isBeforeNow:"is before now",isAfterNow:"is after now",timeIs:"time is","!timeIs":"time is not",timeIsBefore:"time is before",timeIsAfter:"time is after",timeIsNow:"time is now","!timeIsNow":"time is not now",timeIsBeforeNow:"time is before now",timeIsAfterNow:"time is after now",dateIs:"date is","!dateIs":"date is not",dateIsBefore:"date is before",dateIsAfter:"date is after",isToday:"date is today","!isToday":"date is not today",isBeforeToday:"date is before today",isAfterToday:"date is after today",isLessDaysAgo:"is under X days ago",isLessDaysAway:"is under X days away",isMoreDaysAgo:"is over X days ago",isMoreDaysAway:"is over X days away",weekdayIs:"day of week is","!weekdayIs":"day of week is not",weekdayIsBefore:"day of week is before",weekdayIsAfter:"day of week is after",monthdayIs:"day of month is","!monthdayIs":"day of month is not",monthdayIsBefore:"day of month is before",monthdayIsAfter:"day of month is after",monthIs:"month is","!monthIs":"month is not",monthIsBefore:"month is before",monthIsAfter:"month is after",yearIs:"year is","!yearIs":"year is not",yearIsBefore:"year is before",yearIsAfter:"year is after",iconIs:"ID is","!iconIs":"ID is not",nameIs:"name is","!nameIs":"name is not",nameContains:"name contains",nameStartsWith:"name starts with",nameEndsWith:"name ends with",nameMatches:"name matches regex","!nameContains":"name does not contain","!nameStartsWith":"name does not start with","!nameEndsWith":"name does not end with","!nameMatches":"name does not match regex",colorIs:"is","!colorIs":"is not",hexIs:"hexcode is","!hexIs":"hexcode is not",hasValue:"has any value","!hasValue":"has no value",hasProperty:"property is present","!hasProperty":"property is missing"},weekday:{1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday",7:"Sunday"},month:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"}},s.ruleChecker={fileMatch:"1 matching file",folderMatch:"1 matching folder",filesMatch:"{#} matching files",foldersMatch:"{#} matching folders",highlight:"Highlight",headingMatches:"Matches"},s.iconPicker={changeIcon:"Change icon",changeIcons:"Change {#} icons",changeEmoji:"Change emoji",changeEmojis:"Change {#} emojis",changeMix:"Change icon / emoji",changeMixes:"Change {#} icons / emojis",overrulePrefix:"Your rule ",overruleSuffix:" is overruling this icon.",overrules:"Your rulebook is overruling some of these icons.",search:"Search",searchIcons:"Search icons...",searchEmojis:"Search emojis...",searchMix:"Search icons / emojis...",changeColor:"Change color",resetColor:"Reset color",removeIcon:"Remove icon",removeIcons:"Remove {#} icons",icons:"Icons",emojis:"Emojis",mixed:"Mixed",save:"Save",saveIcons:"Save {#} icons",cancel:"Cancel",colors:{red:"Red",orange:"Orange",yellow:"Yellow",green:"Green",cyan:"Cyan",blue:"Blue",purple:"Purple",pink:"Pink",gray:"Gray"}},s.categories={item:"Item",items:"Items",appItem:"Button",appItems:"Buttons",tab:"Tab",tabs:"Tabs",file:"File",files:"Files",folder:"Folder",folders:"Folders",group:"Group",groups:"Groups",search:"Query",searches:"Queries",graph:"Graph",graphs:"Graphs",url:"URL",urls:"URLs",tag:"Tag",tags:"Tags",property:"Property",properties:"Properties",ribbonItem:"Ribbon command",ribbonItems:"Ribbon commands",rule:"Rule",rules:"Rules"},s.commands={openRulebook:"Open rulebook",toggleBiggerIcons:"Toggle bigger icons",toggleClickableIcons:{desktop:"Toggle clickable icons",mobile:"Toggle tappable icons"},toggleAllFileIcons:"Toggle all file icons",toggleAllFolderIcons:"Toggle all folder icons",toggleMinimalFolderIcons:"Toggle minimal folder icons",toggleBiggerSearchResults:"Toggle bigger search results",changeIconCurrentFile:"Change icon of the current file"},s.settings={values:{on:"On",off:"Off",desktop:"Desktop only",mobile:"Mobile only",list:"List of colors",rgb:"RGB picker"},rulebook:{name:"Rulebook",desc:"Set up automated rules for file and folder icons.",manage:"Manage"},headingSidebarAndTabIcons:"Sidebar & tab icons",biggerIcons:{name:"Bigger icons",desc:"Show bigger icons than the default UI."},clickableIcons:{nameDesktop:"Clickable icons",nameMobile:"Tappable icons",descDesktop:"Click an icon to open the icon picker.",descMobile:"Tap an icon to open the icon picker."},showAllFileIcons:{name:"Show all file icons",desc:"Show icons for files that have no custom icon."},showAllFolderIcons:{name:"Show all folder icons",desc:"Show icons for folders that have no custom icon."},minimalFolderIcons:{name:"Minimal folder icons",desc:"Replace folder arrows with your folder icons."},headingIconPicker:"Icon picker",showItemName:{name:"Show item name",desc:"Show the name of the item being edited."},biggerSearchResults:{name:"Bigger search results",desc:"Show bigger icons in search results."},maxSearchResults:{name:"Maximum search results",desc:"Choose how many icons to show at once."},colorPicker1:{name:"Main color picker",descDesktop:"Appears when you click the color bubble.",descMobile:"Appears when you tap the color bubble."},colorPicker2:{name:"Second color picker",descDesktop:"Appears when you secondary-click the color bubble.",descMobile:"Appears when you press & hold the color bubble."},headingAdvanced:"Advanced",uncolorHover:{name:"Colorless hover",desc:"Disable icon color while hovering an item."},uncolorDrag:{name:"Colorless drag",desc:"Disable icon color while dragging an item."},uncolorSelect:{name:"Colorless selection",desc:"Disable icon color while item is selected."},uncolorQuick:{name:"Colorless ribbon button",desc:"Disable icon color for the quick access ribbon button on mobile."},rememberDeletedItems:{name:"Remember icons of deleted items",desc:"Any custom icons will reappear when their item exists again."}},(()=>{ke.localize()})();var ye=require("obsidian"),Q=class{constructor(){this.queuedActions=[];let a=this;ye.Menu.prototype.showAtPosition=new Proxy(ye.Menu.prototype.showAtPosition,{apply(e,t,i){return a.menu=t,a.queuedActions.length>0&&a.runQueuedActions.call(a),e.call(t,...i)}})}runQueuedActions(){let a=this.queuedActions;this.queuedActions=[];for(let e of a)e()}addItem(a){return this.menu?this.menu.addItem(a):this.queuedActions.push(()=>this.addItem(a)),this}addItemAfter(a,e){return this.menu?(typeof a=="string"&&(a=[a]),this.menu.addItem(t=>{e(t);let i=t.section,o=this.menu?.sections??[],n=0;for(let r of a)if(o.includes(r)){n=o.lastIndexOf(r)+1;break}o.remove(i),o.splice(n,0,i)})):this.queuedActions.push(()=>this.addItemAfter(a,e)),this}addSeparator(){return this.menu?this.menu.addSeparator():this.queuedActions.push(()=>this.addSeparator()),this}forSection(a,e){if(this.menu){let t=this.menu.items.filter(i=>i.section===a);for(let i=0;ithis.forSection(a,e));return this}flush(){this.queuedActions.length=0}closeAndFlush(){this.menu?.close(),this.menu=null,this.flush()}};var le=require("obsidian");var W="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",p=class{constructor(a){this.fileRulings=new Map;this.folderRulings=new Map;this.fileTriggers=new Set;this.folderTriggers=new Set;this.plugin=a,this.updateRulings("file"),this.updateRulings("folder"),this.startTriggerTimer()}async startTriggerTimer(){if(this.triggerTimerId){let e=864e5-Date.now()%864e5<36e5;(this.fileTriggers.has("time")||this.fileTriggers.has("date")&&e)&&this.triggerRulings("file","time")&&(this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}let a=6e4-Date.now()%6e4;this.triggerTimerId=activeWindow.setTimeout(()=>this.startTriggerTimer(),a)}getRules(a){switch(a){case"file":return this.plugin.settings.fileRules.map(e=>this.defineRule(e));case"folder":return this.plugin.settings.folderRules.map(e=>this.defineRule(e))}}getRule(a,e){let t;switch(a){case"file":t=this.plugin.settings.fileRules;break;case"folder":t=this.plugin.settings.folderRules;break}let i=t.find(o=>o.id===e);return i?this.defineRule(i):null}getRuleBases(a){switch(a){default:return this.plugin.settings.fileRules;case"file":return this.plugin.settings.fileRules;case"folder":return this.plugin.settings.folderRules}}getPageIcon(a){switch(a){case"file":return"lucide-file";case"folder":return"lucide-folder"}}defineRule(a){return{id:a.id??"0",name:a.name??"",category:"rule",iconDefault:"lucide-file",icon:a.icon??null,color:a.color??null,match:a.match??"all",conditions:a.conditions??[],enabled:a.enabled??!1}}newRuleId(a){let e=this.getRuleBases(a).map(o=>o.id),t,i=0;do t=W.charAt(Math.floor(Math.random()*W.length))+W.charAt(Math.floor(Math.random()*W.length))+W.charAt(Math.floor(Math.random()*W.length))+W.charAt(Math.floor(Math.random()*W.length))+W.charAt(Math.floor(Math.random()*W.length));while(e.includes(t)&&++i<10);return t}newRule(a){let e={id:this.newRuleId(a),name:s.rulePicker.untitledRule,category:"rule",iconDefault:null,icon:null,color:null,match:"all",conditions:[{source:"name",operator:"contains",value:""}],enabled:!0};return this.saveRule(a,e),e}moveRule(a,e,t){let i=this.getRuleBases(a),o=i.find(r=>r.id===e.id);if(!o)return!1;let n=i.indexOf(o);return i.splice(n,1),i.splice(t,0,o),this.plugin.saveSettings(),this.updateRulings(a)}saveRule(a,e){let t=this.getRuleBases(a),i=t.find(o=>o.id===e.id);return i||(i={id:e.id},t.push({id:e.id})),e.name?i.name=e.name:delete i.name,e.icon?i.icon=e.icon:delete i.icon,e.color?i.color=e.color:delete i.color,e.match?i.match=e.match:delete i.match,e.conditions.length>0?i.conditions=e.conditions.map(({source:o,operator:n,value:r})=>{let c={};return o&&(c.source=o),n&&(c.operator=n),r&&(c.value=r),c}):delete i.conditions,typeof e.enabled=="boolean"?i.enabled=e.enabled:delete i.enabled,this.plugin.saveSettings(),this.updateRulings(a)}deleteRule(a,e){let t=this.getRuleBases(a),i=t.findIndex(o=>o.id===e);return i===-1?!1:(t.splice(i,1),this.plugin.saveSettings(),this.updateRulings(a))}checkRuling(a,e,t){if(t)return null;switch(a){case"file":return this.fileRulings.get(e)??null;case"folder":return this.folderRulings.get(e)??null}}updateRulings(a){let e=new Date,t=this.getRules(a).filter(r=>r.enabled);if(t.length===0){switch(a){case"file":if(this.fileRulings.size>0)return this.fileRulings.clear(),this.fileTriggers.clear(),!0;case"folder":if(this.folderRulings.size>0)return this.folderRulings.clear(),this.folderTriggers.clear(),!0}return!1}let i,o,n=!1;switch(a){case"file":{let r=this.plugin.getFileItems().filter(l=>!l.items),c=r.map(l=>l.id);for(let[l]of this.fileRulings)c.contains(l)||(this.fileRulings.delete(l),n=!0);for(let l of r){o=void 0;for(let h of t)if(this.judgeFile(l,h,e)){o=h;break}i=this.fileRulings.get(l.id),o?(this.fileRulings.set(l.id,o),n=n||p.distinguish(i,o)):i&&(this.fileRulings.delete(l.id),n=n||!0)}this.fileTriggers.clear();for(let l of t)for(let h of l.conditions)this.updateTriggers(a,h);break}case"folder":{let r=this.plugin.getFileItems().filter(l=>l.items),c=r.map(l=>l.id);for(let[l]of this.folderRulings)c.contains(l)||(this.folderRulings.delete(l),n=!0);for(let l of r){o=void 0;for(let h of t)if(this.judgeFile(l,h,e)){o=h;break}i=this.folderRulings.get(l.id),o?(this.folderRulings.set(l.id,o),n=n||p.distinguish(i,o)):i&&(this.folderRulings.delete(l.id),n=n||!0)}this.folderTriggers.clear();for(let l of t)for(let h of l.conditions)this.updateTriggers(a,h);break}}return n}updateTriggers(a,e){let t;switch(a){case"file":t=this.fileTriggers;break;case"folder":t=this.folderTriggers;break}switch(e.source){case"icon":t.add("icon");break;case"color":t.add("color");break;case"name":t.add("rename");break;case"filename":t.add("rename");break;case"extension":t.add("rename");break;case"tree":t.add("move");break;case"path":t.add("move");break;case"headings":t.add("modify");break;case"links":t.add("modify");break;case"tags":t.add("modify");break;case"modified":t.add("modify");break;case"clock":{switch(e.operator){case"is":t.add("time");break;case"!is":t.add("time");break;case"isBefore":t.add("time");break;case"timeIs":t.add("time");break;case"!timeIs":t.add("time");break;case"timeIsBefore":t.add("time");break;case"timeIsAfter":t.add("time");break;default:t.add("date");break}break}default:{e.source.startsWith("property:")&&t.add("modify");break}}switch(e.operator){case"isNow":t.add("time");break;case"!isNow":t.add("time");break;case"isBeforeNow":t.add("time");break;case"isAfterNow":t.add("time");break;case"isToday":t.add("date");break;case"!isToday":t.add("date");break;case"isBeforeToday":t.add("date");break;case"isAfterToday":t.add("date");break;case"isLessDaysAgo":t.add("date");break;case"isLessDaysAway":t.add("date");break;case"isMoreDaysAgo":t.add("date");break;case"isMoreDaysAway":t.add("date");break}}static distinguish(a,e){return a===void 0!=(e===void 0)||a?.enabled!==e?.enabled||a?.id!==e?.id||a?.name!==e?.name||a?.icon!==e?.icon||a?.color!==e?.color||a?.match!==e?.match||a?.conditions?.length!==e?.conditions?.length||a?.conditions?.some((t,i)=>t.source!==e?.conditions[i].source||t.operator!==e?.conditions[i].operator||t.value!==e?.conditions[i].value)===!0}triggerRulings(a,...e){switch(a){case"file":for(let t of e)if(this.fileTriggers.has(t))return this.updateRulings(a);case"folder":for(let t of e)if(this.folderTriggers.has(t))return this.updateRulings(a)}return!1}judgeFiles(a,e,t){let i=this.plugin.getFileItems().filter(n=>!n.items),o=[];for(let n of i)this.judgeFile(n,a,e,t)&&o.push(n);return o}judgeFolders(a,e,t){let i=this.plugin.getFileItems().filter(n=>n.items),o=[];for(let n of i)this.judgeFile(n,a,e,t)&&o.push(n);return o}judgeFile(a,e,t,i){if(!a.id||e.conditions.length===0||!e.enabled&&!i)return!1;let{basename:o,filename:n,extension:r,path:c,tree:l}=this.plugin.splitFilePath(a.id),h=this.plugin.app.vault.getAbstractFileByPath(c);if(!h)return!1;let g=h instanceof le.TFile?this.plugin.app.metadataCache.getFileCache(h):null;for(let m of e.conditions){let d=!1,u,T=m.operator.startsWith("!"),b=m.operator.replace("!",""),f=m.value;if(m.source.startsWith("property:")){let L=m.source.replace("property:","");u=g?.frontmatter?.hasOwnProperty(L)?g.frontmatter[L]??null:void 0}else switch(m.source){case"icon":{!a.icon||b==="iconIs"||b==="hasValue"?u=a.icon:P.has(a.icon)?u=P.get(a.icon)??null:F.get(a.icon)&&(u=F.get(a.icon)??null);break}case"color":u=a.color;break;case"name":u=o;break;case"filename":u=n;break;case"extension":u=r;break;case"tree":u=l;break;case"path":u=c;break;case"headings":u=g?.headings?.map(L=>L.heading)??[];break;case"links":u=g?.links?.map(L=>L.link)??[];break;case"tags":{u=[];let L=g?.frontmatter?.tags??[],Oe=g?.tags?.map(ne=>ne.tag.replace("#",""))??[];for(let ne of[...L,...Oe])u.includes(ne)||u.push(ne);break}case"created":h instanceof le.TFile&&(u=h.stat.ctime);break;case"modified":h instanceof le.TFile&&(u=h.stat.mtime);break;case"clock":u=t.getTime();break}let R=String.isString(u)?u.toLowerCase():"",V=Array.isArray(u)?u.map(L=>L.toLowerCase()):[],M=String.isString(f)?f.toLowerCase():"";if(b==="hasValue")d=u!=null;else if(b==="hasProperty")d=u!==void 0;else if(isBoolean(u))switch(b){case"isTrue":d=u===!0;break;case"isFalse":d=u===!1;break}else if(String.isString(u))switch(b){case"is":d=R===M;break;case"contains":d=M!==""&&R.includes(M);break;case"startsWith":d=M!==""&&R.startsWith(M);break;case"endsWith":d=M!==""&&R.endsWith(M);break;case"matches":{try{d=f!==""&&p.unwrapRegex(f).test(u)}catch{}break}case"datetimeIs":d=p.compareDatetimes(u,b,f);break;case"datetimeIsBefore":d=p.compareDatetimes(u,b,f);break;case"datetimeIsAfter":d=p.compareDatetimes(u,b,f);break;case"isNow":d=p.compareDatetimes(u,"datetimeIs",t);break;case"isBeforeNow":d=p.compareDatetimes(u,"datetimeIsBefore",f);break;case"isAfterNow":d=p.compareDatetimes(u,"datetimeIsAfter",f);break;case"timeIs":d=p.compareTimes(u,b,f);break;case"timeIsBefore":d=p.compareTimes(u,b,f);break;case"timeIsAfter":d=p.compareTimes(u,b,f);break;case"timeIsNow":d=p.compareTimes(u,"timeIs",t);break;case"timeIsBeforeNow":d=p.compareTimes(u,"timeIsBefore",t);break;case"timeIsAfterNow":d=p.compareTimes(u,"timeIsAfter",t);break;case"dateIs":d=p.compareDates(u,b,f);break;case"dateIsBefore":d=p.compareDates(u,b,f);break;case"dateIsAfter":d=p.compareDates(u,b,f);break;case"isToday":d=p.compareDates(u,"dateIs",t);break;case"isBeforeToday":d=p.compareDates(u,"dateIsBefore",t);break;case"isAfterToday":d=p.compareDates(u,"dateIsAfter",t);break;case"isLessDaysAgo":d=p.compareRelativeDates(u,b,f,t);break;case"isLessDaysAway":d=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAgo":d=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAway":d=p.compareRelativeDates(u,b,f,t);break;case"weekdayIs":d=p.compareWeekdays(u,b,f);break;case"weekdayIsBefore":d=p.compareWeekdays(u,b,f);break;case"weekdayIsAfter":d=p.compareWeekdays(u,b,f);break;case"monthdayIs":d=p.compareMonthdays(u,b,f);break;case"monthdayIsBefore":d=p.compareMonthdays(u,b,f);break;case"monthdayIsAfter":d=p.compareMonthdays(u,b,f);break;case"monthIs":d=p.compareMonths(u,b,f);break;case"monthIsBefore":d=p.compareMonths(u,b,f);break;case"monthIsAfter":d=p.compareMonths(u,b,f);break;case"yearIs":d=p.compareYears(u,b,f);break;case"yearIsBefore":d=p.compareYears(u,b,f);break;case"yearIsAfter":d=p.compareYears(u,b,f);break;case"iconIs":d=R===M;break;case"nameIs":d=R===M;break;case"nameContains":d=M!==""&&R.includes(M);break;case"nameStartsWith":d=M!==""&&R.startsWith(M);break;case"nameEndsWith":d=M!==""&&R.endsWith(M);break;case"nameMatches":{try{d=f!==""&&p.unwrapRegex(f).test(u)}catch{}break}case"colorIs":d=R===M;break;case"hexIs":d=R===M;break}else if(Number.isNumber(u))switch(b){case"equals":d=u===Number(f);break;case"isLess":d=uNumber(f);break;case"isDivisible":d=u/Number(f)%1===0;break;case"datetimeIs":d=p.compareDatetimes(u,b,f);break;case"datetimeIsBefore":d=p.compareDatetimes(u,b,f);break;case"datetimeIsAfter":d=p.compareDatetimes(u,b,f);break;case"isNow":d=p.compareDatetimes(u,"datetimeIs",t);break;case"isBeforeNow":d=p.compareDatetimes(u,"datetimeIsBefore",f);break;case"isAfterNow":d=p.compareDatetimes(u,"datetimeIsAfter",f);break;case"timeIs":d=p.compareTimes(u,b,f);break;case"timeIsBefore":d=p.compareTimes(u,b,f);break;case"timeIsAfter":d=p.compareTimes(u,b,f);break;case"dateIs":d=p.compareDates(u,b,f);break;case"dateIsBefore":d=p.compareDates(u,b,f);break;case"dateIsAfter":d=p.compareDates(u,b,f);break;case"isToday":d=p.compareDates(u,"dateIs",t);break;case"isBeforeToday":d=p.compareDates(u,"dateIsBefore",t);break;case"isAfterToday":d=p.compareDates(u,"dateIsAfter",t);break;case"isLessDaysAgo":d=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAgo":d=p.compareRelativeDates(u,b,f,t);break;case"weekdayIs":d=p.compareWeekdays(u,b,f);break;case"weekdayIsBefore":d=p.compareWeekdays(u,b,f);break;case"weekdayIsAfter":d=p.compareWeekdays(u,b,f);break;case"monthdayIs":d=p.compareMonthdays(u,b,f);break;case"monthdayIsBefore":d=p.compareMonthdays(u,b,f);break;case"monthdayIsAfter":d=p.compareMonthdays(u,b,f);break;case"monthIs":d=p.compareMonths(u,b,f);break;case"monthIsBefore":d=p.compareMonths(u,b,f);break;case"monthIsAfter":d=p.compareMonths(u,b,f);break;case"yearIs":d=p.compareYears(u,b,f);break;case"yearIsBefore":d=p.compareYears(u,b,f);break;case"yearIsAfter":d=p.compareYears(u,b,f);break}else if(Array.isArray(u))switch(b){case"includes":d=V.includes(M);break;case"allAre":d=p.all(V,"are",M);break;case"allContain":d=p.all(V,"contain",M);break;case"allStartWith":d=p.all(V,"startWith",M);break;case"allEndWith":d=p.all(V,"endWith",M);break;case"allMatch":d=p.all(u,"match",f);break;case"anyContain":d=p.any(V,"contain",M);break;case"anyStartWith":d=p.any(V,"startWith",M);break;case"anyEndWith":d=p.any(V,"endWith",M);break;case"anyMatch":d=p.any(u,"match",f);break;case"noneContain":d=p.none(u,"contain",f);break;case"noneStartWith":d=p.none(u,"startWith",f);break;case"noneEndWith":d=p.none(u,"endWith",f);break;case"noneMatch":d=p.none(u,"match",f);break;case"countIs":d=f!==""&&u.length===Number(f);break;case"countIsLess":d=f!==""&&u.lengthNumber(f);break}if(d=d!==T,e.match==="all"&&!d)return!1;if(e.match==="any"&&d)return!0;if(e.match==="none"&&d)return!1}return e.match!=="any"}static unwrapRegex(a){return a.startsWith("/")&&a.endsWith("/")?new RegExp(a.slice(1,-1)):new RegExp(a)}static compareDatetimes(a,e,t){if(t==="")return!1;let i=new Date(a),o=new Date(t);switch(i.setSeconds(0),o.setSeconds(0),i.setMilliseconds(0),o.setMilliseconds(0),e){case"datetimeIs":return i.getTime()===o.getTime();case"datetimeIsBefore":return io}}static compareTimes(a,e,t){if(t==="")return!1;let i=new Date(a),o=String.isString(t)?new Date("1970T"+t):new Date(t);switch(i.setFullYear(1970,0,1),o.setFullYear(1970,0,1),i.setSeconds(0),o.setSeconds(0),i.setMilliseconds(0),o.setMilliseconds(0),e){case"timeIs":return i.getTime()===o.getTime();case"timeIsBefore":return io}}static compareDates(a,e,t){if(t==="")return!1;let i=new Date(a),o=new Date(t);switch(i.setHours(0,0,0,0),o.setHours(0,0,0,0),e){case"dateIs":return i.getTime()===o.getTime();case"dateIsBefore":return io}}static compareRelativeDates(a,e,t,i){if(t==="")return!1;let o=new Date(a),n=new Date(i);switch(o.setHours(0,0,0,0),n.setHours(0,0,0,0),n.setDate(e==="isLessDaysAgo"||e==="isMoreDaysAgo"?n.getDate()-Number(t):n.getDate()+Number(t)),e){case"isLessDaysAgo":return o>n;case"isLessDaysAway":return on}}static compareWeekdays(a,e,t){if(t==="")return!1;let i=new Date(a),o=i.getDay()!==0?i.getDay():7,n=Number(t);switch(e){case"weekdayIs":return o===n;case"weekdayIsBefore":return on}}static compareMonthdays(a,e,t){if(t==="")return!1;let i=new Date(a).getDate(),o=Number(t);switch(e){case"monthdayIs":return i===o;case"monthdayIsBefore":return io}}static compareMonths(a,e,t){if(t==="")return!1;let i=new Date(a).getMonth()+1,o=Number(t);switch(e){case"monthIs":return i===o;case"monthIsBefore":return io}}static compareYears(a,e,t){if(t==="")return!1;let i=new Date(a).getFullYear(),o=Number(t);switch(e){case"yearIs":return i===o;case"yearIsBefore":return io}}static all(a,e,t){if(a.length===0||t==="")return!1;switch(e){case"are":for(let i of a)if(i!==t)return!1;break;case"contain":for(let i of a)if(!i.includes(t))return!1;break;case"startWith":for(let i of a)if(!i.startsWith(t))return!1;break;case"endWith":for(let i of a)if(!i.endsWith(t))return!1;break;case"match":{try{let i=p.unwrapRegex(t);for(let o of a)if(!i.test(o))return!1}catch{}break}}return!0}static any(a,e,t){if(t==="")return!1;switch(e){case"are":for(let i of a)if(i===t)return!0;break;case"contain":for(let i of a)if(i.includes(t))return!0;break;case"startWith":for(let i of a)if(i.startsWith(t))return!0;break;case"endWith":for(let i of a)if(i.endsWith(t))return!0;break;case"match":{try{let i=p.unwrapRegex(t);for(let o of a)if(i.test(o))return!0}catch{}break}}return!1}static none(a,e,t){if(t==="")return!1;switch(e){case"are":for(let i of a)if(i===t)return!1;break;case"contain":for(let i of a)if(i.includes(t))return!1;break;case"startWith":for(let i of a)if(i.startsWith(t))return!1;break;case"endWith":for(let i of a)if(i.endsWith(t))return!1;break;case"match":{try{let i=p.unwrapRegex(t);for(let o of a)if(i.test(o))return!1}catch{}break}}return!0}unload(){activeWindow.clearTimeout(this.triggerTimerId)}};var j=require("obsidian");var ve={attr:{"aria-hidden":!1,width:12,height:12,viewBox:"0 0 12 12"}},bt={attr:{fill:"currentColor",width:10,height:1,x:1,y:6}},It={attr:{width:9,height:9,x:1.5,y:1.5,fill:"none",stroke:"currentColor"}},kt={attr:{d:"M1.5 3.5H8.5V10.5H1.5V3.5Z",stroke:"currentColor"}},yt={attr:{d:"M4 2H10V8H9V9H11V1H3V3H4V2Z",fill:"currentColor"}},vt={attr:{fill:"currentColor","fill-rule":"evenodd",d:"M10.052 10.968 1.03 1.93l.849-.848 9.023 9.037-.849.848Z"}},Et={attr:{fill:"currentColor","fill-rule":"evenodd",d:"M1.023 10.112 10.06 1.09l.848.85-9.037 9.023-.848-.85Z"}},$=class extends E{constructor(e){super(e);this.pinEls=[];this.sidebarLeftEls=[];this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>this.refreshIcons())),this.refreshIcons()}refreshIcons(e){if(j.Platform.isDesktop&&(activeDocument.contains(this.helpEl)||(this.stopEventListener(this.helpEl,"contextmenu"),this.helpEl=fish(".workspace-drawer-vault-actions > .clickable-icon:has(.svg-icon.help)")),this.helpEl)){let t=this.plugin.getAppItem("help",e);this.refreshIcon(t,this.helpEl),this.setEventListener(this.helpEl,"contextmenu",i=>this.onContextMenu("help",i))}if(activeDocument.contains(this.settingsEl)||(this.stopEventListener(this.settingsEl,"contextmenu"),this.settingsEl=j.Platform.isDesktop?fish(".workspace-drawer-vault-actions > .clickable-icon:has(.svg-icon.lucide-settings)"):fish(".workspace-drawer-header-icon.mod-settings")),this.settingsEl){let t=this.plugin.getAppItem("settings",e);this.refreshIcon(t,this.settingsEl),this.setEventListener(this.settingsEl,"contextmenu",i=>this.onContextMenu("settings",i))}if(j.Platform.isMobile){if(this.pinEls.length===0||this.pinEls.some(t=>!activeDocument.contains(t))){for(let t of this.pinEls)this.stopEventListener(t,"contextmenu");this.pinEls=fishAll(".workspace-drawer-header-icon.mod-pin")}for(let t of this.pinEls){let i=this.plugin.getAppItem("pin",e);this.refreshIcon(i,t),this.setEventListener(t,"contextmenu",o=>this.onContextMenu("pin",o))}}if(this.sidebarLeftEls.length===0||this.sidebarLeftEls.some(t=>!activeDocument.contains(t))){for(let t of this.sidebarLeftEls)this.stopEventListener(t,"contextmenu");this.sidebarLeftEls=fishAll(".sidebar-toggle-button.mod-left").concat(fishAll(".view-action.clickable-icon.mod-left-split-toggle"))}for(let t of this.sidebarLeftEls){let i=t.hasClass("clickable-icon")?t:t.find(":scope > .clickable-icon");if(i){let o=this.plugin.getAppItem("sidebarLeft",e);this.refreshIcon(o,i),this.setEventListener(t,"contextmenu",n=>this.onContextMenu("sidebarLeft",n))}}if(activeDocument.contains(this.sidebarRightEl)||(this.stopEventListener(this.sidebarRightEl,"contextmenu"),this.sidebarRightEl=fish(".sidebar-toggle-button.mod-right")),this.sidebarRightEl){let t=this.sidebarRightEl.find(":scope > .clickable-icon");if(t){let i=this.plugin.getAppItem("sidebarRight",e);this.refreshIcon(i,t),this.setEventListener(this.sidebarRightEl,"contextmenu",o=>this.onContextMenu("sidebarRight",o))}}if(j.Platform.isDesktop){if(activeDocument.contains(this.minimizeEl)||(this.stopEventListener(this.minimizeEl,"contextmenu"),this.minimizeEl=fish(".titlebar-button.mod-minimize")),this.minimizeEl){let t=this.plugin.getAppItem("minimize",e);if(t.icon)this.refreshIcon(t,this.minimizeEl);else{this.minimizeEl.empty(),this.minimizeEl.removeClass("iconic-icon");let i=this.minimizeEl.createSvg("svg",ve).createSvg("rect",bt);t.color&&(i.style.fill=C.toRgb(t.color))}this.setEventListener(this.minimizeEl,"contextmenu",i=>this.onContextMenu("minimize",i))}if(this.refreshMaximizeIcon(e),activeDocument.contains(this.closeEl)||(this.stopEventListener(this.closeEl,"contextmenu"),this.closeEl=fish(".titlebar-button.mod-close")),this.closeEl){let t=this.plugin.getAppItem("close",e);if(t.icon)this.refreshIcon(t,this.closeEl);else{this.closeEl.empty(),this.closeEl.removeClass("iconic-icon");let i=this.closeEl.createSvg("svg",ve),o=i.createSvg("path",vt),n=i.createSvg("path",Et);t.color&&(o.style.fill=C.toRgb(t.color),n.style.fill=C.toRgb(t.color))}this.setEventListener(this.closeEl,"contextmenu",i=>this.onContextMenu("close",i))}}}refreshMaximizeIcon(e){let t=activeWindow.electron.remote.getCurrentWindow().isMaximized()??!0;if(this.maximizeEl&&this.stopMutationObserver(this.maximizeEl),activeDocument.contains(this.maximizeEl)||(this.stopEventListener(this.maximizeEl,"contextmenu"),this.maximizeEl=fish(".titlebar-button.mod-maximize")),this.maximizeEl){let i=this.plugin.getAppItem(t?"unmaximize":"maximize",e);if(i.icon)this.refreshIcon(i,this.maximizeEl);else{this.maximizeEl.empty(),this.maximizeEl.removeClass("iconic-icon");let o=this.maximizeEl.createSvg("svg",ve);if(t){o.style.fill="none";let n=o.createSvg("path",kt),r=o.createSvg("path",yt);i.color&&(n.style.stroke=C.toRgb(i.color),r.style.fill=C.toRgb(i.color))}else{let n=o.createSvg("rect",It);i.color&&(n.style.stroke=C.toRgb(i.color))}}this.setEventListener(this.maximizeEl,"contextmenu",o=>{this.onContextMenu(t?"unmaximize":"maximize",o)}),this.setMutationsObserver(this.maximizeEl,{childList:!0},()=>{this.refreshMaximizeIcon()})}}onContextMenu(e,t){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let i=this.plugin.getAppItem(e),o=e.startsWith("sidebar")&&!j.Platform.isPhone?this.plugin.menuManager:new j.Menu;e.startsWith("sidebar")&&o.addSeparator(),o.addItem(n=>n.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").onClick(()=>I.openSingle(this.plugin,i,(r,c)=>{this.plugin.saveAppIcon(i,r,c),this.refreshIcons()}))),(i.icon||i.color)&&o.addItem(n=>n.setTitle(i.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(i.icon?"lucide-image-minus":"lucide-rotate-ccw").onClick(()=>{this.plugin.saveAppIcon(i,null,null),this.refreshIcons()})),o instanceof j.Menu&&o.showAtMouseEvent(t)}};var Be=require("obsidian");var _=class extends E{constructor(a){super(a),this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>this.refreshIcons())),this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",()=>this.refreshIcons()));let e=activeDocument.body.find(".mod-root .workspace-tab-header-tab-list > .clickable-icon");e&&this.setEventListener(e,"click",()=>{let t=this.plugin.getTabItems().filter(i=>i.isRoot);this.plugin.menuManager.forSection("tablist",(i,o)=>{let n=t[o];n&&(n.iconDefault=n.iconDefault??"lucide-file",this.refreshIcon(n,i.iconEl))})}),this.refreshIcons()}refreshIcons(a){let e=this.plugin.getTabItems(a);for(let t of e){let i=t.tabEl,o=t.iconEl;if(!i||!o)continue;let n=t.isFile?this.plugin.ruleManager.checkRuling("file",t.id,a)??t:t;if(t.isRoot&&this.plugin.isSettingEnabled("clickableIcons"))if(t.isFile){let c=this.plugin.getFileItem(t.id);this.refreshIcon(n,o,l=>{I.openSingle(this.plugin,c,(h,g)=>{this.plugin.saveFileIcon(c,h,g),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}),l.stopPropagation()})}else this.refreshIcon(n,o,c=>{I.openSingle(this.plugin,t,(l,h)=>{this.plugin.saveTabIcon(t,l,h),this.refreshIcons()}),c.stopPropagation()});else this.refreshIcon(n,o);this.setEventListener(i,"dragstart",()=>{if(n.icon||n.iconDefault){let c=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-icon");c&&this.refreshIcon({icon:n.icon??n.iconDefault,color:n.color},c)}}),t.isFile&&(t.isActive||t.isStacked)?this.stopEventListener(i,"contextmenu"):this.setEventListener(i,"contextmenu",()=>this.onContextMenu(t.id,t.isFile));let r=i.find(":scope > .workspace-tab-header-inner > .workspace-tab-header-status-container");this.setMutationObserver(r,{childList:!0},c=>{for(let l of c.addedNodes)if(l instanceof HTMLElement&&l.hasClass("mod-pinned")){this.refreshIcons();return}for(let l of c.removedNodes)if(l instanceof HTMLElement&&l.hasClass("mod-pinned")){this.refreshIcons();return}}),Be.Platform.isMobile&&(this.setEventListener(this.app.workspace.leftSplit.activeTabSelectEl,"change",()=>this.refreshIcons()),this.setEventListener(this.app.workspace.rightSplit.activeTabSelectEl,"change",()=>this.refreshIcons()),this.app.workspace.leftSplit.activeTabIconEl===o?this.setEventListener(this.app.workspace.leftSplit.activeTabHeaderEl,"contextmenu",()=>this.onContextMenu(t.id,t.isFile)):this.app.workspace.rightSplit.activeTabIconEl===o&&this.setEventListener(this.app.workspace.rightSplit.activeTabHeaderEl,"contextmenu",()=>this.onContextMenu(t.id,t.isFile)))}}onContextMenu(a,e){if(this.plugin.menuManager.closeAndFlush(),e)this.onFileContextMenu(this.plugin.getFileItem(a));else{let t=this.plugin.getTabItem(a);t&&this.onTabContextMenu(t)}}onTabContextMenu(a){this.plugin.menuManager.flush(),this.plugin.menuManager.addItemAfter("close",e=>e.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,a,(t,i)=>{this.plugin.saveTabIcon(a,t,i),this.refreshIcons()}))),(a.icon||a.color)&&this.plugin.menuManager.addItem(e=>e.setTitle(a.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(a.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTabIcon(a,null,null),this.refreshIcons()}))}onFileContextMenu(a){this.plugin.menuManager.flush(),this.plugin.menuManager.addItemAfter("close",t=>t.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,a,(i,o)=>{this.plugin.saveFileIcon(a,i,o),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}))),(a.icon||a.color)&&this.plugin.menuManager.addItem(t=>t.setTitle(a.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(a.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveFileIcon(a,null,null),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}));let e=this.plugin.ruleManager.checkRuling("file",a.id);e&&this.plugin.menuManager.addItem(t=>{t.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>A.open(this.plugin,"file",e,i=>{(i?this.plugin.ruleManager.saveRule("file",i):this.plugin.ruleManager.deleteRule("file",e.id))&&(this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}))})}};var ee=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("file-menu",(t,i)=>{this.onContextMenu(i.path)})),this.plugin.registerEvent(this.app.workspace.on("files-menu",(t,i)=>{this.onContextMenu(...i.map(o=>o.path))})),this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="file-explorer"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .nav-files-container > div"),this.setMutationsObserver(this.containerEl,{subtree:!0,childList:!0,attributeFilter:["data-path"]},t=>{for(let i of t)if(i.attributeName==="data-path"){this.refreshIcons();return}else for(let o of i.addedNodes)if(o instanceof HTMLElement&&o.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getFileItems(e),i=this.containerEl?.findAll(":scope > .tree-item");i&&this.refreshChildIcons(t,i,e)}refreshChildIcons(e,t,i){for(let o of t){o.addClass("iconic-item");let n=o.find(":scope > .tree-item-self"),r=e.find(g=>g.id===n?.dataset.path);if(!r)continue;let c=r.items?"folder":"file",l=this.plugin.ruleManager.checkRuling(c,r.id,i)??r;if(r.items){if(!o.hasClass("is-collapsed")){let g=o.findAll(":scope > .tree-item-children > .tree-item");g&&this.refreshChildIcons(r.items,g,i)}this.setMutationsObserver(o,{subtree:!0,attributeFilter:["class","data-path"],attributeOldValue:!0},g=>{if(g.some(m=>m.attributeName==="data-path"||m.target instanceof HTMLElement&&m.target.hasClass("is-collapsed")!==m.oldValue?.includes("is-collapsed"))){let m=o.findAll(":scope > .tree-item-children > .tree-item");r.items&&m&&this.refreshChildIcons([r,...r.items],[o,...m])}})}let h=n.find(":scope > .tree-item-icon")??n.createDiv({cls:"tree-item-icon"});if(r.items){r.iconDefault&&(r.iconDefault=h.hasClass("is-collapsed")?"lucide-folder-closed":"lucide-folder-open");let g=n.find(":scope > .iconic-sidekick:not(.tree-item-icon)");if(this.plugin.settings.minimalFolderIcons||!this.plugin.settings.showAllFolderIcons&&!l.icon&&!l.iconDefault)g?.remove();else{let m=l.icon||l.iconDefault?null:l.color;this.refreshIcon({icon:null,color:m},h),g=g??n.createDiv({cls:"iconic-sidekick"}),h.nextElementSibling!==g&&h.insertAdjacentElement("afterend",g),h=g}}h.hasClass("collapse-icon")&&!l.icon&&!l.iconDefault?this.refreshIcon(l,h):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(l,h,g=>{I.openSingle(this.plugin,r,(m,d)=>{this.plugin.saveFileIcon(r,m,d),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}),g.stopPropagation()}):this.refreshIcon(l,h),this.setEventListener(n,"dragstart",()=>{if(l.icon||l.iconDefault||l.color){let g=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-self");if(g){let m=g.find("span"),d=r.category==="folder"&&l.icon===null?"lucide-folder-open":l.icon||l.iconDefault;this.refreshIcon({icon:d,color:l.color},g),g.appendChild(m)}}})}}onContextMenu(...e){this.plugin.menuManager.closeAndFlush();let t=[];for(let l of e)t.push(this.plugin.getFileItem(l));let i=t.length===1?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",t.length.toString());this.plugin.menuManager.addItemAfter(["action-primary","close","open"],l=>l.setTitle(i).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{t.length===1?I.openSingle(this.plugin,t[0],(h,g)=>{this.plugin.saveFileIcon(t[0],h,g),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}):I.openMulti(this.plugin,t,(h,g)=>{this.plugin.saveFileIcons(t,h,g),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})}));let o=t.some(l=>l.icon),n=t.some(l=>l.color),r=t.length===1?t[0].icon?s.menu.removeIcon:s.menu.resetColor:o?s.menu.removeIcons.replace("{#}",t.length.toString()):s.menu.resetColors.replace("{#}",t.length.toString()),c=o?"lucide-image-minus":"lucide-rotate-ccw";if((o||n)&&this.plugin.menuManager.addItem(l=>l.setTitle(r).setIcon(c).setSection("icon").onClick(()=>{t.length===1?this.plugin.saveFileIcon(t[0],null,null):this.plugin.saveFileIcons(t,null,null),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),t.length===1){let l=t[0].items?"folder":"file",h=this.plugin.ruleManager.checkRuling(l,t[0].id);h&&this.plugin.menuManager.addItem(g=>{g.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>A.open(this.plugin,l,h,m=>{(m?this.plugin.ruleManager.saveRule(l,m):this.plugin.ruleManager.deleteRule(l,h.id))&&(this.refreshIcons(),l==="file"&&this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}))})}}};var te=class extends E{constructor(e){super(e);this.isTouchActive=!1;this.selectionLookup=new Map;this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.plugins?.plugins?.["obsidian-icon-folder"]&&this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",()=>{this.refreshIcons()})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="bookmarks"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .view-content > div"),this.setMutationObserver(this.containerEl,{subtree:!0,childList:!0,attributeFilter:["class"],attributeOldValue:!0},t=>{if(t.attributeName==="class"&&t.target instanceof HTMLElement&&t.oldValue?.includes("is-being-renamed")&&!t.target.hasClass("is-being-renamed")){this.refreshIcons();return}for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getBookmarkItems(e),i=this.containerEl?.findAll(":scope > .tree-item");i&&(this.selectionLookup.clear(),this.refreshChildIcons(t,i,e))}refreshChildIcons(e,t,i){for(let o of t){o.addClass("iconic-item");let n=e[t.indexOf(o)];if(!n)continue;let r=n;if((n.category==="file"||n.category==="folder")&&(r=this.plugin.ruleManager.checkRuling(n.category,n.id,i)??n),n.items){if(!o.hasClass("is-collapsed")){let h=o.findAll(":scope > .tree-item-children > .tree-item");h&&this.refreshChildIcons(n.items,h,i)}this.setMutationObserver(o,{attributeFilter:["class"],attributeOldValue:!0},h=>{if(h.target instanceof HTMLElement&&h.target.hasClass("is-collapsed")!==h.oldValue?.includes("is-collapsed")){let g=o.findAll(":scope > .tree-item-children > .tree-item");n.items&&g&&this.refreshChildIcons([n,...n.items],[o,...g])}})}let c=o.find(":scope > .tree-item-self"),l=c.find(":scope > .tree-item-icon")??c.createDiv({cls:"tree-item-icon"});if(n.items){n.iconDefault&&(n.iconDefault=l.hasClass("is-collapsed")?"lucide-folder-closed":"lucide-folder-open");let h=c.find(":scope > .iconic-sidekick:not(.tree-item-icon)");if(this.plugin.settings.minimalFolderIcons||!this.plugin.settings.showAllFolderIcons&&!r.icon&&!r.iconDefault)h?.remove();else{let g=r.icon||r.iconDefault?null:r.color;this.refreshIcon({icon:null,color:g},l),h=h??c.createDiv({cls:"iconic-sidekick"}),l.nextElementSibling!==h&&l.insertAdjacentElement("afterend",h),l=h}}l.hasClass("collapse-icon")&&!r.icon&&!r.iconDefault?this.refreshIcon(n,l):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,l,h=>{I.openSingle(this.plugin,n,(g,m)=>{this.plugin.saveBookmarkIcon(n,g,m),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()}),h.stopPropagation()}):this.refreshIcon(r,l),c&&(this.selectionLookup.set(c,n),this.setEventListener(c,"touchstart",()=>this.isTouchActive=!0),this.setEventListener(c,"contextmenu",()=>{this.isTouchActive?this.isTouchActive=!1:this.onContextMenu(n.id,n.isFileOrFolder)},{capture:!0})),this.setEventListener(c,"dragstart",()=>{if(r.icon||r.iconDefault||r.color){let h=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-self");if(h){let g=h.find("span"),m=n.category==="group"&&r.icon===null?"lucide-bookmark":r.icon||r.iconDefault;this.refreshIcon({icon:m,color:r.color},h),h.appendChild(g)}}})}}onContextMenu(e,t){this.plugin.menuManager.closeAndFlush();let i=this.plugin.getBookmarkItem(e,t),o=[];for(let[g,m]of this.selectionLookup)g.hasClass("is-selected")&&o.push(this.plugin.getBookmarkItem(m.id,m.isFileOrFolder));o.some(g=>g.id===i.id)||(o.length=0);let n=o.length<2?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",o.length.toString());this.plugin.menuManager.addItemAfter("open",g=>g.setTitle(n).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{o.length<2?I.openSingle(this.plugin,i,(m,d)=>{this.plugin.saveBookmarkIcon(i,m,d),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()}):I.openMulti(this.plugin,o,(m,d)=>{this.plugin.saveBookmarkIcons(o,m,d),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})}));let r=o.some(g=>g.icon||g.color),c=o.some(g=>g.icon),l=o.length<2?i.icon?s.menu.removeIcon:s.menu.resetColor:c?s.menu.removeIcons.replace("{#}",o.length.toString()):s.menu.resetColors.replace("{#}",o.length.toString()),h=i.icon||c?"lucide-image-minus":"lucide-rotate-ccw";if((i.icon||i.color||r)&&this.plugin.menuManager.addItem(g=>g.setTitle(l).setIcon(h).setSection("icon").onClick(()=>{o.length<2?this.plugin.saveBookmarkIcon(i,null,null):this.plugin.saveBookmarkIcons(o,null,null),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})),o.length<2){let g=i.category==="file"||i.category==="folder"?this.plugin.ruleManager.checkRuling(i.category,i.id):null;g&&this.plugin.menuManager.addItem(m=>{m.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>A.open(this.plugin,"file",g,d=>{(d?this.plugin.ruleManager.saveRule("file",d):this.plugin.ruleManager.deleteRule("file",g.id))&&(this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons())}))})}}};var Le=require("obsidian");var ie=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="tag"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .tag-container > div"),this.setMutationObserver(this.containerEl,{subtree:!0,childList:!0},t=>{for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getTagItems(e),i=this.containerEl?.findAll(".tree-item")??[];i&&this.refreshChildIcons(t,i)}refreshChildIcons(e,t){for(let i of t){i.addClass("iconic-item");let o=i.find(":scope > .tree-item-self");if(!o)continue;let n=o.find(":scope > .tree-item-inner > .tree-item-inner-text")?.getText();if(!n)continue;let r=e.find(h=>h.id===n);if(!r)continue;let c=o.find(":scope > .tree-item-icon")??o.createDiv({cls:"tree-item-icon"}),l=o.find(":scope > .iconic-sidekick:not(.tree-item-icon)");if(r.items)if(this.plugin.settings.minimalFolderIcons||!this.plugin.settings.showAllFolderIcons&&!r.icon)l?.remove();else{let h=r.icon||r.iconDefault?null:r.color;this.refreshIcon({icon:null,color:h},c),l=l??o.createDiv({cls:"iconic-sidekick"}),c.nextElementSibling!==l&&c.insertAdjacentElement("afterend",l),c=l}c.hasClass("collapse-icon")&&!r.icon&&!r.iconDefault?this.refreshIcon(r,c):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,c,h=>{I.openSingle(this.plugin,r,(g,m)=>{this.plugin.saveTagIcon(r,g,m),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}),h.stopPropagation()}):this.refreshIcon(r,c),o&&this.setEventListener(o,"contextmenu",h=>this.onContextMenu(r.id,h))}}onContextMenu(e,t){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let i=this.plugin.getTagItem(e);if(!i)return;let o=new Le.Menu;o.addItem(n=>n.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,i,(r,c)=>{this.plugin.saveTagIcon(i,r,c),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}))),(i.icon||i.color)&&o.addItem(n=>n.setTitle(i.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(i.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTagIcon(i,null,null),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()})),o.showAtMouseEvent(t)}};var se=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="all-properties"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .view-content > div"),this.setMutationObserver(this.containerEl,{subtree:!0,childList:!0},t=>{for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){this.stopMutationObserver(this.containerEl);let t=this.plugin.getPropertyItems(e),i=this.containerEl?.findAll(":scope > .tree-item")??[];for(let o of i){o.addClass("iconic-item");let n=o.find(".tree-item-self > .tree-item-inner > .tree-item-inner-text"),r=t.find(l=>l.id===n?.getText());if(!r)continue;let c=o.find(".tree-item-self > .tree-item-icon");c&&(this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,c,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.savePropertyIcon(r,h,g),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,c),this.setEventListener(o,"contextmenu",()=>this.onContextMenu(r.id),{capture:!0}))}this.setMutationsObserver(this.containerEl,{subtree:!0,childList:!0},()=>this.refreshIcons())}onContextMenu(e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getPropertyItem(e),i=[];for(let h of this.containerEl?.findAll(".tree-item-self.is-selected")??[]){let g=h.find(":scope > .tree-item-inner > .tree-item-inner-text");g?.textContent&&i.push(this.plugin.getPropertyItem(g.textContent))}i.some(h=>h.id===t.id)||(i.length=0);let o=i.length<2?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",i.length.toString());this.plugin.menuManager.addItemAfter(["action.changeType","action"],h=>h.setTitle(o).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{i.length<2?I.openSingle(this.plugin,t,(g,m)=>{this.plugin.savePropertyIcon(t,g,m),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}):I.openMulti(this.plugin,i,(g,m)=>{this.plugin.savePropertyIcons(i,g,m),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()})}));let n=i.some(h=>h.icon),r=i.some(h=>h.color),c=i.length<2?t.icon?s.menu.removeIcon:s.menu.resetColor:n?s.menu.removeIcons.replace("{#}",i.length.toString()):s.menu.resetColors.replace("{#}",i.length.toString()),l=t.icon||n?"lucide-image-minus":"lucide-rotate-ccw";(t.icon||t.color||n||r)&&this.plugin.menuManager.addItem(h=>h.setTitle(c).setIcon(l).setSection("icon").onClick(()=>{i.length<2?this.plugin.savePropertyIcon(t,null,null):this.plugin.savePropertyIcons(i,null,null),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}))}};var B=require("obsidian");var O=class extends E{constructor(a){super(a),this.setMutationObserver(activeDocument.body,{childList:!0},e=>{let t=activeDocument.activeElement;if(t){for(let i of e.addedNodes)if(i instanceof HTMLElement&&i.hasClass("suggestion-container")){t.hasClass("metadata-property-key-input")?this.onPropertySuggestionMenu(i):t.hasClass("multi-select-input")&&t.closest('.metadata-property[data-property-key="tags"]')&&this.onTagSuggestionMenu(i);break}}}),this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",e=>{e?.view instanceof B.MarkdownView&&(this.observeViewIcons(e.view),this.refreshViewIcons(e.view))})),this.plugin.registerMarkdownPostProcessor(e=>{let t=this.plugin.getTagItems();if(t.length===0)return;let i=e.findAll("a.tag");for(let o of i){let n=o.getAttribute("href")?.replace("#","");if(!n)continue;let r=t.find(l=>l.id===n);if(!r)continue;O.setTagColor(r,o);let c=o.find(".iconic-icon")??createSpan();o.prepend(c),this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,c,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.saveTagIcon(r,h,g),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,c),this.setEventListener(o,"contextmenu",l=>{this.onTagNewContextMenu(r.id,l)})}});for(let e of this.app.workspace.getLeavesOfType("markdown"))e.view instanceof B.MarkdownView&&(this.observeViewIcons(e.view),this.refreshViewIcons(e.view))}observeViewIcons(a){this.observeContainer(a.containerEl,a);for(let i of a.contentEl.children)if(i instanceof HTMLElement&&i.hasClass("markdown-source-view")){this.observeEditingView(i,a);break}let e=a.metadataEditor?.propertyListEl;if(!e)return;this.observeProperties(e,a);let t=e.find('.metadata-property[data-property-key="tags"] .multi-select-container');t&&this.observeTagsProperty(t,a)}observeContainer(a,e){this.setMutationsObserver(a,{attributeFilter:["data-mode"]},()=>{this.refreshViewIcons(e)})}observeEditingView(a,e){this.setMutationsObserver(a,{attributeFilter:["class"],attributeOldValue:!0,subtree:!0},t=>{for(let i of t)if(i.target instanceof HTMLElement&&i.target.hasClass("cm-active")!==i.oldValue?.includes("cm-active")){this.refreshViewIcons(e);return}})}observeProperties(a,e){this.setMutationObserver(a,{childList:!0,subtree:!0},t=>{if(t.target instanceof HTMLElement&&t.target.hasClass("metadata-property-icon")){this.refreshViewIcons(e);return}for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshViewIcons(e);return}}),this.setEventListener(a,"click",t=>{let i=activeDocument.elementsFromPoint(t.x,t.y),o=i.find(r=>r.hasClass("metadata-property-icon")),n=i.find(r=>r.hasClass("metadata-property"));if(o&&n instanceof HTMLElement){let r=n.dataset.propertyKey?this.plugin.getPropertyItem(n.dataset.propertyKey):null;if(!r)return;this.plugin.isSettingEnabled("clickableIcons")?(I.openSingle(this.plugin,r,(c,l)=>{this.plugin.savePropertyIcon(r,c,l),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}),t.stopPropagation()):this.onPropertyContextMenu(r.id)}},{capture:!0}),this.setEventListener(a,"contextmenu",t=>{let i=activeDocument.elementsFromPoint(t.x,t.y),o=i.find(r=>r.hasClass("metadata-property-icon")),n=i.find(r=>r.hasClass("metadata-property"));if(o&&n instanceof HTMLElement){let r=n.dataset.propertyKey?this.plugin.getPropertyItem(n.dataset.propertyKey):null;r&&this.onPropertyContextMenu(r.id)}},{capture:!0})}observeTagsProperty(a,e){this.setMutationsObserver(a,{childList:!0},()=>this.refreshViewIcons(e))}refreshIcons(a){for(let e of this.app.workspace.getLeavesOfType("markdown"))e.view instanceof B.MarkdownView&&this.refreshViewIcons(e.view,a)}refreshViewIcons(a,e){a.currentMode instanceof B.MarkdownPreviewView&&a.currentMode.rerender(!0);let t=this.plugin.getPropertyItems(e),i=this.plugin.getTagItems(e);this.refreshPropertyIcons(t,a),this.refreshTagIcons(i,a)}refreshPropertyIcons(a,e){let t=e.metadataEditor?.propertyListEl;if(!t)return;let i=t.findAll(":scope > .metadata-property");for(let o of i){let n=a.find(l=>l.id===o.dataset.propertyKey);if(!n)return;let c=o.find(":scope > .metadata-property-key")?.find(":scope > .metadata-property-icon");c&&this.refreshIcon(n,c)}}refreshTagIcons(a,e){if(!e.metadataEditor?.propertyListEl)return;let i=e.contentEl.findAll('.metadata-property[data-property-key="tags"] .multi-select-pill');if(i){for(let o of i){let n=o.find(":scope > .multi-select-pill-content")?.getText();if(!n)continue;let r=a.find(c=>c.id===n);if(r){if(r.icon){let c=o.find(".iconic-icon")??createSpan();c!==o.firstChild&&o.insertBefore(c,o.firstChild),this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,c,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.saveTagIcon(r,h,g),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,c)}else o.find(".iconic-icon")?.remove();O.setTagColor(r,o),this.setEventListener(o,"contextmenu",()=>this.onTagContextMenu(r.id))}}if(e.getMode()==="source"){let o;for(let r of e.contentEl.children)if(r instanceof HTMLElement&&r.hasClass("markdown-source-view")){o=r;break}let n=o?.findAll(".cm-hashtag-end")??[];for(let r of n){let c=r.getText();if(!c)continue;let l=a.find(g=>g.id===c);if(!l)continue;let h=r.previousElementSibling;h instanceof HTMLElement&&h.hasClass("cm-hashtag-begin")&&(O.setTagColor(l,h),this.setEventListener(h,"contextmenu",g=>{B.Platform.isDesktop&&this.onTagContextMenu(l.id,!0),B.Platform.isMobile&&this.onTagNewContextMenu(l.id,g)})),O.setTagColor(l,r),this.setEventListener(r,"contextmenu",g=>{B.Platform.isDesktop&&this.onTagContextMenu(l.id,!0),B.Platform.isMobile&&this.onTagNewContextMenu(l.id,g)})}}}}onPropertyContextMenu(a){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let e=this.plugin.getPropertyItem(a);this.plugin.menuManager.addItemAfter(["action.changeType","action"],t=>t.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,e,(i,o)=>{this.plugin.savePropertyIcon(e,i,o),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}))),(e.icon||e.color)&&this.plugin.menuManager.addItem(t=>t.setTitle(e.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(e.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.savePropertyIcon(e,null,null),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}))}onTagContextMenu(a,e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getTagItem(a);t&&(this.plugin.menuManager.addItemAfter(e?[]:"selection",i=>i.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,t,(o,n)=>{this.plugin.saveTagIcon(t,o,n),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}))),(t.icon||t.color)&&this.plugin.menuManager.addItem(i=>i.setTitle(t.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(t.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTagIcon(t,null,null),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()})))}onTagNewContextMenu(a,e){this.plugin.tagIconManager?.onContextMenu(a,e)}onPropertySuggestionMenu(a){this.stopMutationObserver(a);let e=a.findAll(":scope > .suggestion > .suggestion-item");for(let t of e){let i=t.find(":scope > .suggestion-content > .suggestion-title")?.getText();if(i){let o=this.plugin.getPropertyItem(i),n=t.find(":scope > .suggestion-icon > .suggestion-flair");n&&this.refreshIcon(o,n)}}this.setMutationsObserver(a,{subtree:!0,childList:!0},()=>this.onPropertySuggestionMenu(a))}onTagSuggestionMenu(a){this.stopMutationObserver(a);let e=a.findAll(":scope > .suggestion > .suggestion-item");for(let t of e){let i=t.getText();if(i){t.addClass("mod-complex"),t.empty();let o=t.createDiv({cls:"suggestion-icon"}).createSpan({cls:"suggestion-flair"});t.createDiv({cls:"suggestion-content"}).createDiv({cls:"suggestion-title",text:i});let n=this.plugin.getTagItem(i);n&&o&&this.refreshIcon(n,o)}}this.setMutationsObserver(a,{subtree:!0,childList:!0},()=>this.onTagSuggestionMenu(a))}static setTagColor(a,e){if(a.color){let t=C.toRgb(a.color),i=t.replace("rgb(","rgba(").replace(")","");e.style.setProperty("color",t),e.style.setProperty("background-color",i+", 0.1)"),e.style.setProperty("--tag-border-color",i+", 0.25)"),e.style.setProperty("--tag-border-color-hover",i+", 0.5)"),e.hasClass("multi-select-pill")&&e.style.setProperty("--pill-color-remove",t)}else e.style.removeProperty("color"),e.style.removeProperty("background-color"),e.style.removeProperty("--tag-border-color"),e.style.removeProperty("--tag-border-color-hover"),e.hasClass("multi-select-pill")&&e.style.removeProperty("--pill-color-remove")}};var X=require("obsidian");var oe=class extends E{constructor(a){super(a),this.refreshIcons();let e=this.app.workspace.leftRibbon.ribbonItemsEl;this.setEventListener(e,"auxclick",i=>i.stopPropagation(),{capture:!0}),this.setMutationsObserver(e,{childList:!0},()=>this.refreshIcons());let t=activeDocument.body.find(X.Platform.isDesktop?".side-dock-ribbon.mod-left.workspace-ribbon":".side-dock-ribbon.mod-left.workspace-drawer-ribbon");t&&this.setEventListener(t,"contextmenu",()=>{let i=this.plugin.getRibbonItems();this.plugin.menuManager.forSection("order",o=>{let n=i[0];n&&(o.setIcon(n.icon),this.refreshIcon(n,o.iconEl),i.shift())})}),this.setMutationObserver(activeDocument.body,{childList:!0},i=>{for(let o of i.addedNodes)o instanceof HTMLElement&&o.hasClass("modal-container")&&o.find(".modal-content > div > .mobile-option-setting-item")&&o.find(".modal-content > .modal-button-container")&&this.refreshConfigIcons(o)})}refreshIcons(a){if(X.Platform.isPhone){let e=this.app.mobileNavbar.ribbonMenuItemEl;if(!e)return;let t=this.app.vault.getConfig("mobileQuickRibbonItem"),i=()=>{let o=this.plugin.getRibbonItems().filter(n=>!n.isHidden);this.plugin.menuManager.forSection("",n=>{let r=o[0];r&&(n.setIcon(r.icon),this.refreshIcon(r,n.iconEl),o.shift())})};if(t){let o=this.plugin.getRibbonItem(t);this.plugin.settings.uncolorQuick&&(o.color=null),this.refreshIcon(o,e)}else this.setEventListener(e,"click",i);this.setEventListener(e,"contextmenu",i)}else{let e=this.plugin.getRibbonItems(a);for(let t of e){let i=t.iconEl;i&&(t.isHidden&&(t.icon=null,t.iconDefault=null),this.refreshIcon(t,i),this.setEventListener(i,"contextmenu",o=>this.onContextMenu(t.id,o)))}}}refreshConfigIcons(a){if(X.Platform.isPhone){let l=a.find(".setting-item-control > .dropdown");l&&this.setEventListener(l,"change",()=>{this.refreshIcons(),this.refreshConfigIcons(a)});let h=this.app.vault.getConfig("mobileQuickRibbonItem");if(h){let g=this.plugin.getRibbonItem(h),m=a.find(".setting-item-control > .extra-setting-button");this.refreshIcon(g,m,()=>{I.openSingle(this.plugin,g,(d,u)=>{this.plugin.saveRibbonIcon(g,d,u),this.refreshConfigIcons(a),this.refreshIcons()})})}}if(a.findAll(".mobile-option-setting-item-option-icon:not(.mobile-option-setting-drag-icon)").length===0)return;let t=this.plugin.getRibbonItems(),i=t.filter(l=>!l.isHidden),o=t.filter(l=>l.isHidden),n=a.findAll(".mobile-option-setting-item:has(.mobile-option-setting-item-remove-icon)"),r=a.findAll(".mobile-option-setting-item:has(.mobile-option-setting-item-add-icon)"),c=[...i.map((l,h)=>[l,n[h],"mobile-option-setting-item-remove-icon"]),...o.map((l,h)=>[l,r[h],"mobile-option-setting-item-add-icon"])];for(let[l,h,g]of c){let m=h.find(":scope > .mobile-option-setting-item-option-icon"),d=h.find(":scope > ."+g);this.refreshIcon(l,m,u=>{I.openSingle(this.plugin,l,(T,b)=>{this.plugin.saveRibbonIcon(l,T,b),this.refreshIcons(),this.refreshConfigIcons(a)}),u.stopPropagation()}),this.setEventListener(d,"click",()=>this.refreshConfigIcons(a))}}onContextMenu(a,e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getRibbonItem(a),i=new X.Menu;i.addItem(o=>o.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,t,(n,r)=>{this.plugin.saveRibbonIcon(t,n,r),this.refreshIcons()}))),(t.icon||t.color)&&i.addItem(o=>o.setTitle(t.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(t.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveRibbonIcon(t,null,null),this.refreshIcons()})),i.showAtMouseEvent(e)}};var P=new Map;var Ne=["markdown","canvas","audio","video","pdf"],wt=["image","audio","video","pdf","unsupported"],ce=["bmp","png","jpg","jpeg","gif","svg","webp","avif"],de=["mp3","wav","m4a","3gp","flac","ogg","oga","opus"],We=["mp4","webm","ogv","mov","mkv"],Mt=["md","canvas","pdf"].concat(ce).concat(de).concat(We),Ct={biggerIcons:"mobile",clickableIcons:"desktop",showAllFileIcons:!1,showAllFolderIcons:!1,minimalFolderIcons:!1,showItemName:"desktop",biggerSearchResults:"mobile",maxSearchResults:50,colorPicker1:"list",colorPicker2:"rgb",uncolorHover:!1,uncolorDrag:!1,uncolorSelect:!1,uncolorQuick:!1,rememberDeletedItems:!1,dialogState:{iconMode:!0,emojiMode:!1,rulePage:"file"},appIcons:{},tabIcons:{},fileIcons:{},bookmarkIcons:{},tagIcons:{},propertyIcons:{},ribbonIcons:{},fileRules:[],folderRules:[]},he=class extends S.Plugin{constructor(){super(...arguments);this.commands=[]}async onload(){await this.loadSettings(),this.addSettingTab(new Z(this)),this.app.workspace.onLayoutReady(()=>{(0,S.getIconIds)().map(e=>{switch(e){default:{let t=e.replace(/^lucide-/,"").replaceAll("-"," "),i=t[0]?.toUpperCase()+t.slice(1);return[e,i]}case"lucide-app-window-mac":return[e,"App window Mac"];case"lucide-archive-x":return[e,"Archive X"];case"lucide-arrow-down-az":return[e,"Arrow down AZ"];case"lucide-arrow-down-za":return[e,"Arrow down ZA"];case"lucide-arrow-up-az":return[e,"Arrow up AZ"];case"lucide-arrow-up-za":return[e,"Arrow up ZA"];case"lucide-axis-3d":return[e,"Axis 3D"];case"lucide-badge-indian-rupee":return[e,"Badge Indian rupee"];case"lucide-badge-japanese-yen":return[e,"Badge Japanese yen"];case"lucide-badge-russian-ruble":return[e,"Badge Russian ruble"];case"lucide-badge-swiss-franc":return[e,"Badge Swiss franc"];case"lucide-badge-x":return[e,"Badge X"];case"lucide-book-a":return[e,"Book A"];case"lucide-book-x":return[e,"Book X"];case"lucide-calendar-x":return[e,"Calendar X"];case"lucide-calendar-x2":return[e,"Calendar X 2"];case"lucide-cctv":return[e,"CCTV"];case"lucide-chart-gantt":return[e,"Chart Gantt"];case"lucide-chart-no-axes-gantt":return[e,"Chart no axes Gantt"];case"lucide-circle-x":return[e,"Circle X"];case"lucide-clipboard-x":return[e,"Clipboard X"];case"lucide-code-xml":return[e,"Code XML"];case"lucide-copy-x":return[e,"Copy X"];case"lucide-cpu":return[e,"CPU"];case"lucide-creative-commons":return[e,"Creative Commons"];case"lucide-dna":return[e,"DNA"];case"lucide-dna-off":return[e,"DNA off"];case"lucide-file-axis-3d":return[e,"File axis 3D"];case"lucide-file-json":return[e,"File JSON"];case"lucide-file-json-2":return[e,"File JSON 2"];case"lucide-file-x":return[e,"File X"];case"lucide-file-x2":return[e,"File X 2"];case"lucide-filter-x":return[e,"Filter X"];case"lucide-folder-git":return[e,"Folder Git"];case"lucide-folder-git-2":return[e,"Folder Git 2"];case"lucide-folder-x":return[e,"Folder X"];case"lucide-github":return[e,"GitHub"];case"lucide-gitlab":return[e,"GitLab"];case"lucide-grid-2x-2":return[e,"Grid 2x2"];case"lucide-grid-2x-2check":return[e,"Grid 2x2 check"];case"lucide-grid-2x-2plus":return[e,"Grid 2x2 plus"];case"lucide-grid-2x-2x":return[e,"Grid 2x2 X"];case"lucide-grid-3x-3":return[e,"Grid 3x3"];case"lucide-hdmi-port":return[e,"HDMI port"];case"lucide-id-card":return[e,"ID card"];case"lucide-iteration-ccw":return[e,"Iteration CCW"];case"lucide-iteration-cw":return[e,"Iteration CW"];case"lucide-linkedin":return[e,"LinkedIn"];case"lucide-list-x":return[e,"List X"];case"lucide-mail-x":return[e,"Mail X"];case"lucide-map-pin-x":return[e,"Map pin X"];case"lucide-map-pin-xinside":return[e,"Map pin X inside"];case"lucide-message-circle-x":return[e,"Message circle X"];case"lucide-message-square-x":return[e,"Message square X"];case"lucide-monitor-x":return[e,"Monitor X"];case"lucide-move-3d":return[e,"Move 3D"];case"lucide-navigation-2off":return[e,"Navigation 2 off"];case"lucide-nfc":return[e,"NFC"];case"lucide-octagon-x":return[e,"Octagon X"];case"lucide-package-x":return[e,"Package X"];case"lucide-pc-case":return[e,"PC case"];case"lucide-qr-code":return[e,"QR code"];case"lucide-receipt-indian-rupee":return[e,"Receipt Indian rupee"];case"lucide-receipt-japanese-yen":return[e,"Receipt Japanese yen"];case"lucide-receipt-russian-ruble":return[e,"Receipt Russian ruble"];case"lucide-receipt-swiss-franc":return[e,"Receipt Swiss franc"];case"lucide-refresh-ccw":return[e,"Refresh CCW"];case"lucide-refresh-ccw-dot":return[e,"Refresh CCW dot"];case"lucide-refresh-cw":return[e,"Refresh CW"];case"lucide-refresh-cw-off":return[e,"Refresh CW off"];case"lucide-square-chart-gantt":return[e,"Square chart Gantt"];case"lucide-square-gantt-chart":return[e,"Square Gantt chart"];case"lucide-square-m":return[e,"Square M"];case"lucide-square-x":return[e,"Square X"];case"lucide-ticket-x":return[e,"Ticket X"];case"lucide-rotate-3d":return[e,"Rotate 3D"];case"lucide-rotate-ccw":return[e,"Rotate CCW"];case"lucide-rotate-ccw-square":return[e,"Rotate CCW square"];case"lucide-rotate-cw":return[e,"Rotate CW"];case"lucide-rotate-cw-square":return[e,"Rotate CW square"];case"lucide-tv":return[e,"TV"];case"lucide-tv-2":return[e,"TV 2"];case"lucide-tv-minimal":return[e,"TV minimal"];case"lucide-tv-minimal-play":return[e,"TV minimal play"];case"lucide-rss":return[e,"RSS"];case"lucide-scale-3d":return[e,"Scale 3D"];case"lucide-scan-qr-code":return[e,"Scan QR code"];case"lucide-search-x":return[e,"Search X"];case"lucide-shield-x":return[e,"Shield X"];case"lucide-smartphone-nfc":return[e,"Smartphone NFC"];case"lucide-user-x":return[e,"User X"];case"lucide-user-x2":return[e,"User X 2"];case"lucide-user-round-x":return[e,"User round X"];case"lucide-wifi":return[e,"WiFi"];case"lucide-wifi-high":return[e,"WiFi high"];case"lucide-wifi-low":return[e,"WiFi low"];case"lucide-wifi-off":return[e,"WiFi off"];case"lucide-wifi-zero":return[e,"WiFi zero"];case"refresh-cw-off":return[e,"Refresh CW off"];case"uppercase-lowercase-a":return[e,"Uppercase lowercase A"]}}).sort(([,e],[,t])=>e.localeCompare(t)).forEach(([e,t])=>P.set(e,t)),this.startManagers(),this.refreshBodyClasses()}),this.registerEvent(this.app.workspace.on("css-change",()=>{this.refreshManagers(),this.refreshBodyClasses()})),this.registerEvent(this.app.vault.on("rename",(e,t)=>{let{path:i}=e,o=this.settings.fileIcons[t];o&&(this.settings.fileIcons[i]=o,delete this.settings.fileIcons[t],this.saveSettings());let{filename:n,tree:r}=this.splitFilePath(i),{filename:c,tree:l}=this.splitFilePath(t),h=e instanceof S.TFile?"file":"folder";n!==c&&this.ruleManager.triggerRulings(h,"rename")?(h==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons()):r!==l&&this.ruleManager.triggerRulings(h,"move")&&(h==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons())})),this.registerEvent(this.app.vault.on("modify",e=>{let t=e instanceof S.TFile?"file":"folder";this.ruleManager.triggerRulings(t,"modify")&&(t==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons())})),this.registerEvent(this.app.vault.on("delete",e=>{let{path:t}=e;this.settings.rememberDeletedItems===!1&&(delete this.settings.fileIcons[t],this.saveSettings());let i=e instanceof S.TFile?"file":"folder";this.ruleManager.checkRuling(i,t)&&this.ruleManager.updateRulings(i)})),this.addRibbonIcon("lucide-book-image",s.commands.openRulebook,()=>N.open(this)),this.addCommand({id:"open-rulebook",name:s.commands.openRulebook,callback:()=>N.open(this)}),this.commands.push(this.addCommand({id:"toggle-bigger-icons",name:s.commands.toggleBiggerIcons,callback:()=>{S.Platform.isDesktop?this.settings.biggerIcons==="on"?this.settings.biggerIcons="mobile":this.settings.biggerIcons==="desktop"?this.settings.biggerIcons="off":this.settings.biggerIcons==="mobile"?this.settings.biggerIcons="on":this.settings.biggerIcons==="off"&&(this.settings.biggerIcons="desktop"):this.settings.biggerIcons==="on"?this.settings.biggerIcons="desktop":this.settings.biggerIcons==="desktop"?this.settings.biggerIcons="on":this.settings.biggerIcons==="mobile"?this.settings.biggerIcons="off":this.settings.biggerIcons==="off"&&(this.settings.biggerIcons="mobile"),this.saveSettings(),this.refreshBodyClasses()}})),this.commands.push(this.addCommand({id:"toggle-clickable-icons",name:S.Platform.isDesktop?s.commands.toggleClickableIcons.desktop:s.commands.toggleClickableIcons.mobile,callback:()=>{S.Platform.isDesktop?this.settings.clickableIcons==="on"?this.settings.clickableIcons="mobile":this.settings.clickableIcons==="desktop"?this.settings.clickableIcons="off":this.settings.clickableIcons==="mobile"?this.settings.clickableIcons="on":this.settings.clickableIcons==="off"&&(this.settings.clickableIcons="desktop"):this.settings.clickableIcons==="on"?this.settings.clickableIcons="desktop":this.settings.clickableIcons==="desktop"?this.settings.clickableIcons="on":this.settings.clickableIcons==="mobile"?this.settings.clickableIcons="off":this.settings.clickableIcons==="off"&&(this.settings.clickableIcons="mobile"),this.saveSettings(),this.refreshManagers(),this.refreshBodyClasses()}})),this.commands.push(this.addCommand({id:"toggle-all-file-icons",name:s.commands.toggleAllFileIcons,callback:()=>{this.settings.showAllFileIcons=!this.settings.showAllFileIcons,this.saveSettings(),this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons()}})),this.commands.push(this.addCommand({id:"toggle-all-folder-icons",name:s.commands.toggleAllFolderIcons,callback:()=>{this.settings.showAllFolderIcons=!this.settings.showAllFolderIcons,this.saveSettings(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons()}})),this.commands.push(this.addCommand({id:"toggle-minimal.folder-icons",name:s.commands.toggleMinimalFolderIcons,callback:()=>{this.settings.minimalFolderIcons=!this.settings.minimalFolderIcons,this.saveSettings(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons()}})),this.commands.push(this.addCommand({id:"toggle-bigger-search-results",name:s.commands.toggleBiggerSearchResults,callback:()=>{S.Platform.isDesktop?this.settings.biggerSearchResults==="on"?this.settings.biggerSearchResults="mobile":this.settings.biggerSearchResults==="desktop"?this.settings.biggerSearchResults="off":this.settings.biggerSearchResults==="mobile"?this.settings.biggerSearchResults="on":this.settings.biggerSearchResults==="off"&&(this.settings.biggerSearchResults="desktop"):this.settings.biggerSearchResults==="on"?this.settings.biggerSearchResults="desktop":this.settings.biggerSearchResults==="desktop"?this.settings.biggerSearchResults="on":this.settings.biggerSearchResults==="mobile"?this.settings.biggerSearchResults="off":this.settings.biggerSearchResults==="off"&&(this.settings.biggerSearchResults="mobile"),this.saveSettings(),this.refreshBodyClasses()}})),this.addCommand({id:"change-icon-current-file",name:s.commands.changeIconCurrentFile,checkCallback:e=>{let t=this.app.workspace.getActiveFile();if(t===null)return!1;let i=this.getFileItem(t.path);if(e)return i!==null;I.openSingle(this,i,(o,n)=>{this.saveFileIcon(i,o,n),this.fileIconManager?.refreshIcons(),this.tabIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons()})}})}async onExternalSettingsChange(){await this.loadSettings(),this.refreshManagers(),this.refreshBodyClasses()}startManagers(){this.menuManager=new Q,this.ruleManager=new p(this);try{this.appIconManager=new $(this)}catch(e){console.error(e)}try{this.tabIconManager=new _(this)}catch(e){console.error(e)}try{this.fileIconManager=new ee(this)}catch(e){console.error(e)}try{this.tagIconManager=new ie(this)}catch(e){console.error(e)}try{this.bookmarkIconManager=new te(this)}catch(e){console.error(e)}try{this.propertyIconManager=new se(this)}catch(e){console.error(e)}try{this.editorIconManager=new O(this)}catch(e){console.error(e)}try{this.ribbonIconManager=new oe(this)}catch(e){console.error(e)}}refreshManagers(){this.appIconManager?.refreshIcons(),this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons(),this.propertyIconManager?.refreshIcons(),this.editorIconManager?.refreshIcons(),this.ribbonIconManager?.refreshIcons()}refreshBodyClasses(e){activeDocument.body.toggleClass("iconic-bigger-icons",e?!1:this.isSettingEnabled("biggerIcons")),activeDocument.body.toggleClass("iconic-clickable-icons",e?!1:this.isSettingEnabled("clickableIcons")),activeDocument.body.toggleClass("iconic-bigger-search-results",e?!1:this.isSettingEnabled("biggerSearchResults")),activeDocument.body.toggleClass("iconic-uncolor-hover",e?!1:this.settings.uncolorHover),activeDocument.body.toggleClass("iconic-uncolor-drag",e?!1:this.settings.uncolorDrag),activeDocument.body.toggleClass("iconic-uncolor-select",e?!1:this.settings.uncolorSelect);let t=this.app.customCss?.theme;activeDocument.body.toggleClass("iconic-theme-btopaz",e?!1:t==="Blue Topaz"),activeDocument.body.toggleClass("iconic-theme-border",e?!1:t==="Border"),activeDocument.body.toggleClass("iconic-theme-cat",e?!1:t==="Catppuccin"),activeDocument.body.toggleClass("iconic-theme-cglow",e?!1:t==="Cyber Glow"),activeDocument.body.toggleClass("iconic-theme-discord",e?!1:t==="Discordian"),activeDocument.body.toggleClass("iconic-theme-its",e?!1:t==="ITS Theme"),activeDocument.body.toggleClass("iconic-theme-lyt",e?!1:t==="LYT Mode"),activeDocument.body.toggleClass("iconic-theme-mflow",e?!1:t==="Mado Miniflow"),activeDocument.body.toggleClass("iconic-theme-sanctum",e?!1:t==="Sanctum"),activeDocument.body.toggleClass("iconic-theme-shiba",e?!1:t==="Shiba Inu"),activeDocument.body.toggleClass("iconic-theme-shimmer",e?!1:t==="Shimmering Focus"),activeDocument.body.toggleClass("iconic-theme-sodalite",e?!1:t==="Sodalite"),activeDocument.body.toggleClass("iconic-theme-spectrum",e?!1:t==="Spectrum"),activeDocument.body.toggleClass("iconic-theme-terminal",e?!1:t==="Terminal"),activeDocument.body.toggleClass("iconic-theme-ukiyo",e?!1:t==="Ukiyo")}isSettingEnabled(e){let t=this.settings[e];return t==="on"||S.Platform.isDesktop&&t==="desktop"||S.Platform.isMobile&&t==="mobile"}getAppItem(e,t){let i=this.settings.appIcons[e]??{},o,n;switch(e){case"help":{o=s.appItems.help,n="help";break}case"settings":{o=s.appItems.settings,n="lucide-settings";break}case"pin":{o=s.appItems.pin,n="lucide-pin";break}case"sidebarLeft":{o=s.appItems.sidebarLeft,n="sidebar-left";break}case"sidebarRight":{o=s.appItems.sidebarRight,n="sidebar-right";break}case"minimize":o=s.appItems.minimize;break;case"maximize":o=s.appItems.maximize;break;case"unmaximize":o=s.appItems.unmaximize;break;case"close":o=s.appItems.close;break}return{id:e,name:o??"",category:"app",iconDefault:n??null,icon:t?null:i.icon??null,color:t?null:i.color??null}}getTabItems(e){let t=[];return this.app.workspace.iterateAllLeaves(i=>{t.push(this.defineTabItem(i,e))}),t}getTabItem(e,t){let i=null;return this.app.workspace.iterateAllLeaves(o=>{if(i)return;let n=o.view.getViewType();(n===e||Ne.includes(n)&&o.view.getState().file===e)&&(i=this.defineTabItem(o,t))}),i}defineTabItem(e,t){let i=e.tabHeaderInnerIconEl;S.Platform.isMobile&&(e.containerEl?.parentElement===this.app.workspace.leftSplit.activeTabContentEl?i=this.app.workspace.leftSplit.activeTabIconEl:e.containerEl?.parentElement===this.app.workspace.rightSplit.activeTabContentEl&&(i=this.app.workspace.rightSplit.activeTabIconEl));let o=e.view.getViewType(),n=e.view===this.app.workspace.getActiveViewOfType(S.View)||e.tabHeaderEl?.hasClass("is-active"),r=e.getRoot()===this.app.workspace.rootSplit,c=e.parent?.isStacked===!0;if(Ne.includes(o)){let l=e.view.getState().file,h=typeof l=="string"?l:"",g=this.settings.fileIcons[h]??{},m=o==="markdown";return{id:h,name:e.getDisplayText(),category:"file",iconDefault:r&&m&&!c&&!g.color&&!this.settings.showAllFileIcons?null:e.view.getIcon(),icon:t?null:g.icon??null,color:t?null:g.color??null,isFile:!0,isActive:n,isRoot:r,isStacked:c,iconEl:i??null,tabEl:e.tabHeaderEl??null}}else{let l=this.settings.tabIcons[o]??{},h;switch(o){case"empty":h=!r||c||l.color?e.view.getIcon():null;break;case"release-notes":h=t?e.view.getIcon():"lucide-sparkle";break;default:h=e.view.getIcon();break}return{id:o,name:e.getDisplayText(),category:"tab",iconDefault:h,icon:t?null:l.icon??null,color:t?null:l.color??null,isFile:!1,isActive:n,isRoot:r,isStacked:c,iconEl:i??null,tabEl:e.tabHeaderEl??null}}}getFileItems(e){let t=this.app.vault.getAllLoadedFiles(),i=t.find(o=>o.path==="/");return i&&t.remove(i),t.map(o=>this.defineFileItem(o,o.path,e))}getFileItem(e,t){let{path:i}=this.splitFilePath(e),o=this.app.vault.getAbstractFileByPath(i);return this.defineFileItem(o,e,t)}defineFileItem(e,t,i){let{filename:o,basename:n,extension:r}=this.splitFilePath(t),c=this.settings.fileIcons[t]??{},l=null;return e instanceof S.TFile&&(c.color||this.settings.showAllFileIcons)?r==="canvas"?l="lucide-layout-dashboard":r==="pdf"?l="lucide-file-text":ce.includes(r)?l="lucide-image":de.includes(r)?l="lucide-file-audio":l="lucide-file":e instanceof S.TFolder&&(c.color&&!this.settings.minimalFolderIcons||this.settings.showAllFolderIcons)&&(l="lucide-folder-closed"),{id:t,name:r==="md"?n:o,category:e instanceof S.TFolder?"folder":"file",iconDefault:i?null:l,icon:i?null:c.icon??null,color:i?null:c.color??null,items:e instanceof S.TFolder?e.children.map(h=>this.defineFileItem(h,h.path,i)):null}}splitFilePath(e=""){let i=Math.max(...["md","pdf"].map(m=>{let d=e.lastIndexOf(`.${m}#`);return d>-1?d+m.length+1:-1})),o=i>-1?e.substring(i,e.length):"",n=i>-1?e.substring(0,i):e,[,r="",c]=n.match(/^(.*\/)?(.*)$/)??[],l=c.lastIndexOf("."),h=c.substring(l>-1?l+1:c.length)||"",g=c.substring(0,l>-1?l:c.length)||"";return{path:n,tree:r,filename:c,basename:g,extension:h,subpath:o}}getBookmarkItems(e){return(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]).map(i=>this.defineBookmarkItem(i,e))}getBookmarkItem(e,t,i){let n=this.flattenBookmarks(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]).find(r=>t&&r.path+(r.subpath??"")===e||r.ctime===e)??{};return this.defineBookmarkItem(n,i)}defineBookmarkItem(e,t){let{path:i,filename:o,basename:n,extension:r}=this.splitFilePath(e.path),c=e.subpath??"",l,h,g,m=null;switch(e.type){case"file":{l=i+c,h=(r==="md"?n:o)+c,r==="canvas"?m="lucide-layout-dashboard":c.startsWith("#^")?m="lucide-toy-brick":c.startsWith("#")?m="lucide-heading":(m="lucide-file",t||(r==="pdf"?m="lucide-file-text":ce.includes(r)?m="lucide-image":de.includes(r)&&(m="lucide-file-audio"))),g=this.settings.fileIcons[l]??{};break}case"folder":{l=i,h=n,g=this.settings.fileIcons[l]??{},m="lucide-folder";break}case"group":{l=e.ctime,h=e.title,g=this.settings.bookmarkIcons[l]??{},(g.color&&!this.settings.minimalFolderIcons||this.settings.showAllFolderIcons)&&(m="lucide-folder-closed");break}case"search":{l=e.ctime,h=e.query,g=this.settings.bookmarkIcons[l]??{},m="lucide-search";break}case"graph":{l=e.ctime,h=e.title,g=this.settings.bookmarkIcons[l]??{},m="lucide-git-fork";break}case"url":{l=e.ctime,h=e.url,g=this.settings.bookmarkIcons[l]??{},m="lucide-globe-2";break}}return{id:l,name:h,category:e.type??"file",iconDefault:m,icon:t?null:g?.icon??null,color:t?null:g?.color??null,isFileOrFolder:e.type==="file"||e.type==="folder",items:e.items?.map(d=>this.defineBookmarkItem(d,t))??null}}flattenBookmarks(e){let t=[];for(let i of e)t.push(i),i.items&&t.push(...this.flattenBookmarks(i.items));return t}getTagItems(e){let t=Object.keys(this.app.metadataCache.getTags())??[];return t.map(o=>({id:o.replace("#",""),name:o,items:this.getChildTagBases(o,t)})).map(o=>this.defineTagItem(o,e))}getTagItem(e,t){let i="#"+e,o=Object.keys(this.app.metadataCache.getTags())??[],n=this.getChildTagBases(i,o);return o.includes(i)?this.defineTagItem({id:e,name:i,items:n.length>0?n:null},t):null}defineTagItem(e,t){let i=this.settings.tagIcons[e.id]??{},o=e.items?.map(n=>this.defineTagItem(n,t));return{id:e.id,name:e.name,category:"tag",iconDefault:null,icon:t?null:i.icon??null,color:t?null:i.color??null,items:o?.length>0?o:null}}getChildTagBases(e,t){let i=[],o=e+"/";for(let n of t)n.startsWith(o)&&!n.replace(o,"").includes("/")&&i.push({id:n.replace("#",""),name:n,items:this.getChildTagBases(n,t)});return i}getPropertyItems(e){return(Object.values(this.app.metadataTypeManager?.properties)??[]).map(i=>this.definePropertyItem(i,e))}getPropertyItem(e,t){let o=(Object.values(this.app.metadataTypeManager?.properties)??[]).find(n=>n.name===e)??{};return this.definePropertyItem(o,t)}definePropertyItem(e,t){let i=this.settings.propertyIcons[e.name]??{},o;switch(e.type){case"text":o="lucide-text";break;case"multitext":o="lucide-list";break;case"number":o="lucide-binary";break;case"checkbox":o="lucide-check-square";break;case"date":o="lucide-calendar";break;case"datetime":o="lucide-clock";break;case"aliases":o="lucide-forward";break;case"tags":o="lucide-tags";break;default:o="lucide-file-question";break}return{id:e.name,name:e.name,category:"property",iconDefault:o,icon:t?null:i.icon??null,color:t?null:i.color??null,type:e.type??null}}getRibbonItems(e){return(this.app.workspace.leftRibbon.items??[]).map(i=>this.defineRibbonItem(i,e))}getRibbonItem(e,t){let i=this.app.workspace.leftRibbon.items?.find(o=>o?.id===e)??{};return this.defineRibbonItem(i,t)}defineRibbonItem(e,t){let i=this.settings.ribbonIcons[e.id]??{};return{id:e.id,name:e.title??null,category:"ribbon",iconDefault:e.icon??null,icon:t?null:i.icon??null,color:t?null:i.color??null,isHidden:e.hidden??!1,iconEl:e.buttonEl??null}}saveAppIcon(e,t,i){this.updateIconSetting(this.settings.appIcons,e.id,t,i),this.saveSettings()}saveTabIcon(e,t,i){this.updateIconSetting(this.settings.tabIcons,e.id,t,i),this.saveSettings()}saveFileIcon(e,t,i){let o=new Set,n=this.settings.fileIcons[e.id];t!==n?.icon&&o.add("icon"),i!==n?.color&&o.add("color"),this.updateIconSetting(this.settings.fileIcons,e.id,t,i),this.saveSettings(),this.ruleManager.triggerRulings("file",...o)}saveFileIcons(e,t,i){let o=new Set;for(let n of e){t!==void 0&&(n.icon=t),i!==void 0&&(n.color=i);let r=this.settings.fileIcons[n.id];t!==r?.icon&&o.add("icon"),i!==r?.color&&o.add("color"),this.updateIconSetting(this.settings.fileIcons,n.id,n.icon,n.color)}this.saveSettings(),this.ruleManager.triggerRulings("file",...o)}saveBookmarkIcon(e,t,i){let o=new Set;if(e.category==="file"||e.category==="folder"){let n=this.settings.fileIcons[e.id];t!==n?.icon&&o.add("icon"),i!==n?.color&&o.add("color"),this.updateIconSetting(this.settings.fileIcons,e.id,t,i)}else this.updateIconSetting(this.settings.bookmarkIcons,e.id,t,i);this.saveSettings(),this.ruleManager.triggerRulings("file",...o)}saveBookmarkIcons(e,t,i){let o=new Set;for(let n of e)if(t!==void 0&&(n.icon=t),i!==void 0&&(n.color=i),n.category==="file"||n.category==="folder"){let r=this.settings.fileIcons[n.id];t!==r?.icon&&o.add("icon"),i!==r?.color&&o.add("color"),this.updateIconSetting(this.settings.fileIcons,n.id,n.icon,n.color)}else this.updateIconSetting(this.settings.bookmarkIcons,n.id,n.icon,n.color);this.saveSettings(),this.ruleManager.triggerRulings("file",...o)}saveTagIcon(e,t,i){this.updateIconSetting(this.settings.tagIcons,e.id,t,i),this.saveSettings()}savePropertyIcon(e,t,i){this.updateIconSetting(this.settings.propertyIcons,e.id,t,i),this.saveSettings()}savePropertyIcons(e,t,i){for(let o of e)t!==void 0&&(o.icon=t),i!==void 0&&(o.color=i),this.updateIconSetting(this.settings.propertyIcons,o.id,o.icon,o.color);this.saveSettings()}saveRibbonIcon(e,t,i){this.updateIconSetting(this.settings.ribbonIcons,e.id,t,i),this.saveSettings()}updateIconSetting(e,t,i,o){i||o?(e[t]||(e[t]={}),i?e[t].icon=i:delete e[t].icon,o?e[t].color=o:delete e[t].color):delete e[t]}async loadSettings(){this.settings=Object.assign({},Ct,await this.loadData()),"groupIcons"in this.settings&&(Object.keys(this.settings.bookmarkIcons).length===0&&(this.settings.bookmarkIcons=this.settings.groupIcons??{}),delete this.settings.groupIcons)}async saveSettings(){this.pruneSettings(),this.settings.appIcons=Object.fromEntries(Object.entries(this.settings.appIcons).sort()),this.settings.tabIcons=Object.fromEntries(Object.entries(this.settings.tabIcons).sort()),this.settings.fileIcons=Object.fromEntries(Object.entries(this.settings.fileIcons).sort()),this.settings.bookmarkIcons=Object.fromEntries(Object.entries(this.settings.bookmarkIcons).sort()),this.settings.propertyIcons=Object.fromEntries(Object.entries(this.settings.propertyIcons).sort()),this.settings.ribbonIcons=Object.fromEntries(Object.entries(this.settings.ribbonIcons).sort()),await this.saveData(this.settings)}pruneSettings(){this.updateUnsyncedFiles();let e=this.app.internalPlugins?.plugins?.sync?.instance?.syncing===!0,t=this.app.internalPlugins?.plugins?.sync?.instance?.pause===!0;if(e||t||this.settings.rememberDeletedItems)return;let i=this.app.appId,o=this.flattenBookmarks(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]),n=this.app.metadataTypeManager?.properties??[],r=Object.entries(this.settings.fileIcons).filter(([c,l])=>l.unsynced?.every(h=>h===i)??!0);for(let[c]of r){let{path:l,subpath:h}=this.splitFilePath(c),g=h.replaceAll(/(?m.path===l&&m.subpath===g)&&delete this.settings.fileIcons[c]:delete this.settings.fileIcons[c]}if(o.length>0){let c=o.filter(l=>l.type!=="file"&&l.type!=="folder").map(l=>l.ctime.toString());for(let l in this.settings.bookmarkIcons)c.includes(l)||delete this.settings.bookmarkIcons[l]}if(n.length>0){let c=Object.keys(n);for(let l in this.settings.propertyIcons)c.includes(l)||delete this.settings.propertyIcons[l]}}updateUnsyncedFiles(){let e=this.app.appId,t=this.app.internalPlugins?.plugins?.sync?.instance?.ignoreFolders??[],i=wt.filter(o=>!this.app.internalPlugins?.plugins?.sync?.instance?.allowTypes.has(o));for(let[o,n]of Object.entries(this.settings.fileIcons)){Array.isArray(n.unsynced)||delete n.unsynced;let{extension:r}=this.splitFilePath(o);t.some(l=>l===o||o.startsWith(l+"/"))||i.includes("unsupported")&&!Mt.includes(r)||i.includes("image")&&ce.includes(r)||i.includes("audio")&&de.includes(r)||i.includes("video")&&We.includes(r)||i.includes("pdf")&&r==="pdf"?(n.unsynced=n.unsynced??[],n.unsynced.includes(e)||n.unsynced.push(e)):(n.unsynced?.includes(e)&&n.unsynced?.remove(e),n.unsynced?.length===0&&delete n.unsynced)}}onunload(){this.ruleManager.unload(),this.appIconManager?.unload(),this.tabIconManager?.unload(),this.fileIconManager?.unload(),this.bookmarkIconManager?.unload(),this.tagIconManager?.unload(),this.propertyIconManager?.unload(),this.editorIconManager?.unload(),this.ribbonIconManager?.unload(),this.refreshBodyClasses(!0)}}; +var Ue=Object.create;var de=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Qe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var N=(k,a)=>()=>(a||k((a={exports:{}}).exports,a),a.exports),Ze=(k,a)=>{for(var e in a)de(k,e,{get:a[e],enumerable:!0})},Ce=(k,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of Je(a))!Ye.call(k,i)&&i!==e&&de(k,i,{get:()=>a[i],enumerable:!(t=Xe(a,i))||t.enumerable});return k};var O=(k,a,e)=>(e=k!=null?Ue(Qe(k)):{},Ce(a||!k||!k.__esModule?de(e,"default",{value:k,enumerable:!0}):e,k)),$e=k=>Ce(de({},"__esModule",{value:!0}),k);var Re=N((Oi,mt)=>{mt.exports={appItems:{help:"\u0641\u062A\u062D \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",settings:"\u0641\u062A\u062D \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",pin:"\u062A\u062B\u0628\u064A\u062A/\u0625\u0644\u063A\u0627\u0621 \u062A\u062B\u0628\u064A\u062A",sidebarLeft:"\u0637\u064A/\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0627\u0644\u0623\u064A\u0633\u0631",sidebarRight:"\u0637\u064A/\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0627\u0644\u0623\u064A\u0645\u0646",minimize:"\u062A\u0635\u063A\u064A\u0631",maximize:"\u062A\u0643\u0628\u064A\u0631",unmaximize:"\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0627\u0644\u062D\u062C\u0645 \u0627\u0644\u0623\u0635\u0644\u064A",close:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0646\u0627\u0641\u0630\u0629"},menu:{changeIcon:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632...",changeIcons:"\u062A\u063A\u064A\u064A\u0631 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A...",removeIcon:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0631\u0645\u0632",removeIcons:"\u0625\u0632\u0627\u0644\u0629 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A",resetColor:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0644\u0648\u0646",resetColors:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 {#} \u0623\u0644\u0648\u0627\u0646",editRule:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0642\u0627\u0639\u062F\u0629..."},iconPicker:{changeIcon:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632",changeIcons:"\u062A\u063A\u064A\u064A\u0631 {#} \u0623\u064A\u0642\u0648\u0646\u0627\u062A",changeEmoji:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeEmojis:"\u062A\u063A\u064A\u064A\u0631 {#} \u0631\u0645\u0648\u0632 \u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeMix:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0631\u0645\u0632 / \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",changeMixes:"\u062A\u063A\u064A\u064A\u0631 {#} \u0631\u0645\u0632 / \u0631\u0645\u0648\u0632 \u062A\u0639\u0628\u064A\u0631\u064A\u0629",overrulePrefix:"\u0642\u0627\u0639\u062F\u062A\u0643 ",overruleSuffix:" \u062A\u062A\u062C\u0627\u0648\u0632 \u0647\u0630\u0647 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0629 .",overrules:"\u0643\u062A\u0627\u0628 \u0642\u0648\u0627\u0639\u062F\u0643 \u064A\u062A\u062C\u0627\u0648\u0632 \u0628\u0639\u0636 \u0647\u0630\u0647 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A.",search:"\u0628\u062D\u062B",searchIcons:"\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",searchEmojis:"\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",searchMix:"\u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0627\u0644\u0631\u0645\u0648\u0632 / \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629...",changeColor:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0644\u0648\u0646",resetColor:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0644\u0648\u0646",toggleIcons:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A",toggleEmojis:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0625\u064A\u0645\u0648\u062C\u064A\u0632",icons:"\u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A",emojis:"\u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u0639\u0628\u064A\u0631\u064A\u0629",mixed:"\u0645\u062E\u062A\u0644\u0637",cancel:"\u0625\u0644\u063A\u0627\u0621",save:"\u062D\u0642\u0638",colors:{red:"\u0623\u062D\u0645\u0631",orange:"\u0628\u0631\u062A\u0642\u0627\u0644\u064A",yellow:"\u0623\u0635\u0641\u0631",green:"\u0623\u062E\u0636\u0631",cyan:"\u0633\u0645\u0627\u0648\u064A",blue:"\u0623\u0632\u0631\u0642",purple:"\u0623\u0631\u062C\u0648\u0627\u0646\u064A",pink:"\u0648\u0631\u062F\u064A",gray:"\u0631\u0645\u0627\u062F\u064A"}},categories:{item:"\u063A\u0631\u0636",items:"\u0623\u063A\u0631\u0627\u0636",appItem:"\u0632\u0631",appItems:"\u0623\u0632\u0631\u0627\u0631",tab:"\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",tabs:"\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",file:"\u0645\u0644\u0641",files:"\u0645\u0644\u0641\u0627\u062A",folder:"\u0645\u062C\u0644\u062F",folders:"\u0645\u062C\u0644\u062F\u0627\u062A",group:"\u0645\u062C\u0645\u0648\u0639\u0629",groups:"\u0645\u062C\u0645\u0648\u0639\u0627\u062A",search:"\u0627\u0633\u062A\u0639\u0644\u0627\u0645",searches:"\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A",graph:"\u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",graphs:"\u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u0628\u064A\u0627\u0646\u064A\u0629",url:"\u0631\u0627\u0628\u0637",urls:"\u0631\u0648\u0627\u0628\u0637",tag:"\u0648\u0633\u0645",tags:"\u0627\u0644\u0648\u0633\u0648\u0645",property:"\u062E\u0627\u0635\u064A\u0629",properties:"\u062E\u0627\u0635\u064A\u0627\u062A ",ribbonItem:"\u0623\u0645\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",ribbonItems:"\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",rule:"\u0627\u0644\u0642\u0627\u0639\u062F\u0629",rules:"\u0627\u0644\u0642\u0648\u0627\u0639\u062F"},rulePicker:{selectPage:"\u0627\u062E\u062A\u0631 \u0635\u0641\u062D\u0629",fileRules:"\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0645\u0644\u0641",folderRules:"\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0645\u062C\u0644\u062F",rules:"\u0627\u0644\u0642\u0648\u0627\u0639\u062F",addRule:"\u0625\u0636\u0627\u0641\u0629 \u0642\u0627\u0639\u062F\u0629",editRule:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",removeRule:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",untitledRule:"\u0642\u0627\u0639\u062F\u0629 \u0628\u0644\u0627 \u0639\u0646\u0648\u0627\u0646",drag:"\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628"},ruleEditor:{fileRule:"\u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0645\u0644\u0641",folderRule:"\u0642\u0627\u0639\u062F\u0629 \u0627\u0644\u0645\u062C\u0644\u062F",conditions:"\u0627\u0644\u0634\u0631\u0648\u0637",addCondition:"\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637",resetCondition:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u0634\u0631\u0637",removeCondition:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637",removeRule:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629",buttonMatch:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0648\u0627\u062D\u062F\u0629",buttonMatches:"{#} \u062A\u0637\u0627\u0628\u0642\u0627\u062A",buttonNoMatches:"\u0644\u0627 \u062A\u0637\u0627\u0628\u0642\u0627\u062A",enterName:"\u0623\u0639\u0637 \u0647\u0630\u0647 \u0627\u0644\u0642\u0627\u0639\u062F\u0629 \u0627\u0633\u0645\u064B\u0627",enterValue:"\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629",enterRegex:"\u0623\u062F\u062E\u0644 \u062A\u0639\u0628\u064A\u0631\u064B\u0627 \u0639\u0627\u062F\u064A\u064B\u0627",enterHexCode:"\u0623\u062F\u062E\u0644 \u0631\u0645\u0632\u064B\u0627 \u0633\u062F\u0627\u0633\u064A \u0639\u0634\u0631\u064A\u064B\u0627",enterNumber:"\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627",matchConditions:{name:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0634\u0631\u0648\u0637",desc:"\u0627\u062E\u062A\u0631 \u0639\u062F\u062F \u0627\u0644\u0634\u0631\u0648\u0637 \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629",all:"\u0627\u0644\u0643\u0644",any:"\u0623\u064A",none:"\u0644\u0627 \u0634\u064A\u0621"},source:{icon:"\u0627\u0644\u0631\u0645\u0632",color:"\u0627\u0644\u0644\u0648\u0646",name:"\u0627\u0644\u0627\u0633\u0645",filename:"\u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641",extension:"\u0627\u0644\u0627\u0645\u062A\u062F\u0627\u062F",tree:"\u0634\u062C\u0631\u0629 \u0627\u0644\u0645\u062C\u0644\u062F",path:"\u0627\u0644\u0645\u0633\u0627\u0631 \u0641\u064A \u0627\u0644\u0645\u062E\u0632\u0646",headings:"\u0627\u0644\u0639\u0646\u0627\u0648\u064A\u0646",links:"\u0627\u0644\u0631\u0648\u0627\u0628\u0637",tags:"\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",properties:"\u0627\u0644\u062E\u0635\u0627\u0626\u0635...",created:"\u0648\u0642\u062A \u0627\u0644\u0625\u0646\u0634\u0627\u0621",modified:"\u0648\u0642\u062A \u0627\u0644\u062A\u0639\u062F\u064A\u0644",clock:"\u0633\u0627\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645"},operator:{is:"\u0647\u0648","!is":"\u0644\u064A\u0633",contains:"\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",startsWith:"\u064A\u0628\u062F\u0623 \u0628\u0640",endsWith:"\u064A\u0646\u062A\u0647\u064A \u0628\u0640",matches:"\u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A","!contains":"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649","!startsWith":"\u0644\u0627 \u064A\u0628\u062F\u0623 \u0628\u0640","!endsWith":"\u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0628\u0640","!matches":"\u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",includes:"\u064A\u0634\u0645\u0644 \u0627\u0644\u0639\u0646\u0635\u0631","!includes":"\u0644\u0627 \u064A\u0634\u0645\u0644 \u0627\u0644\u0639\u0646\u0635\u0631",allAre:"\u062C\u0645\u064A\u0639\u0647\u0627 \u0647\u064A",allContain:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",allStartWith:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u0628\u062F\u0623 \u0628\u0640",allEndWith:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u0646\u062A\u0647\u064A \u0628\u0640",allMatch:"\u062C\u0645\u064A\u0639\u0647\u0627 \u062A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",anyContain:"\u0623\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",anyStartWith:"\u0623\u064A \u064A\u0628\u062F\u0623 \u0628\u0640",anyEndWith:"\u0623\u064A \u064A\u0646\u062A\u0647\u064A \u0628\u0640",anyMatch:"\u0623\u064A \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",noneContain:"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0623\u064A \u0645\u0646\u0647\u0627 \u0639\u0644\u0649",noneStartWith:"\u0644\u0627 \u064A\u0628\u062F\u0623 \u0623\u064A \u0645\u0646\u0647\u0627 \u0628\u0640",noneEndWith:"\u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0623\u064A \u0645\u0646\u0647\u0627 \u0628\u0640",noneMatch:"\u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0623\u064A \u0645\u0646\u0647\u0627 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",countIs:"\u0627\u0644\u0639\u062F\u062F \u0647\u0648","!countIs":"\u0627\u0644\u0639\u062F\u062F \u0644\u064A\u0633",countIsLess:"\u0627\u0644\u0639\u062F\u062F \u0623\u0642\u0644 \u0645\u0646",countIsMore:"\u0627\u0644\u0639\u062F\u062F \u0623\u0643\u0628\u0631 \u0645\u0646",isTrue:"\u0647\u0648 \u0635\u062D\u064A\u062D","!isTrue":"\u0644\u064A\u0633 \u0635\u062D\u064A\u062D\u064B\u0627",isFalse:"\u0647\u0648 \u062E\u0627\u0637\u0626","!isFalse":"\u0644\u064A\u0633 \u062E\u0627\u0637\u0626\u064B\u0627",equals:"\u064A\u0633\u0627\u0648\u064A","!equals":"\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",isLess:"\u0623\u0642\u0644 \u0645\u0646",isMore:"\u0623\u0643\u062B\u0631 \u0645\u0646",isDivisible:"\u0642\u0627\u0628\u0644 \u0644\u0644\u0642\u0633\u0645\u0629 \u0639\u0644\u0649","!isLess":"\u0644\u064A\u0633 \u0623\u0642\u0644 \u0645\u0646","!isMore":"\u0644\u064A\u0633 \u0623\u0643\u062B\u0631 \u0645\u0646","!isDivisible":"\u0644\u064A\u0633 \u0642\u0627\u0628\u0644\u064B\u0627 \u0644\u0644\u0642\u0633\u0645\u0629 \u0639\u0644\u0649",isBefore:"\u0642\u0628\u0644",isAfter:"\u0628\u0639\u062F",isNow:"\u0627\u0644\u0622\u0646","!isNow":"\u0644\u064A\u0633 \u0627\u0644\u0622\u0646",isBeforeNow:"\u0642\u0628\u0644 \u0627\u0644\u0622\u0646",isAfterNow:"\u0628\u0639\u062F \u0627\u0644\u0622\u0646",timeIs:"\u0627\u0644\u0648\u0642\u062A \u0647\u0648","!timeIs":"\u0627\u0644\u0648\u0642\u062A \u0644\u064A\u0633",timeIsBefore:"\u0627\u0644\u0648\u0642\u062A \u0642\u0628\u0644",timeIsAfter:"\u0627\u0644\u0648\u0642\u062A \u0628\u0639\u062F",timeIsNow:"\u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0622\u0646","!timeIsNow":"\u0627\u0644\u0648\u0642\u062A \u0644\u064A\u0633 \u0627\u0644\u0622\u0646",timeIsBeforeNow:"\u0627\u0644\u0648\u0642\u062A \u0642\u0628\u0644 \u0627\u0644\u0622\u0646",timeIsAfterNow:"\u0627\u0644\u0648\u0642\u062A \u0628\u0639\u062F \u0627\u0644\u0622\u0646",dateIs:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0647\u0648","!dateIs":"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0644\u064A\u0633",dateIsBefore:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0642\u0628\u0644",dateIsAfter:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0628\u0639\u062F",isToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0647\u0648 \u0627\u0644\u064A\u0648\u0645","!isToday":"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0644\u064A\u0633 \u0627\u0644\u064A\u0648\u0645",isBeforeToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0642\u0628\u0644 \u0627\u0644\u064A\u0648\u0645",isAfterToday:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0628\u0639\u062F \u0627\u0644\u064A\u0648\u0645",isLessDaysAgo:"\u0623\u0642\u0644 \u0645\u0646 X \u064A\u0648\u0645 \u0645\u0636\u0649",isLessDaysAway:"\u0623\u0642\u0644 \u0645\u0646 X \u064A\u0648\u0645 \u0628\u0639\u064A\u062F\u064B\u0627",isMoreDaysAgo:"\u0623\u0643\u062B\u0631 \u0645\u0646 X \u064A\u0648\u0645 \u0645\u0636\u0649",isMoreDaysAway:"\u0623\u0643\u062B\u0631 \u0645\u0646 X \u064A\u0648\u0645 \u0628\u0639\u064A\u062F\u064B\u0627",weekdayIs:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0647\u0648","!weekdayIs":"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0644\u064A\u0633",weekdayIsBefore:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0642\u0628\u0644",weekdayIsAfter:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0628\u0639\u062F",monthdayIs:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0647\u0648","!monthdayIs":"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0644\u064A\u0633",monthdayIsBefore:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0642\u0628\u0644",monthdayIsAfter:"\u0627\u0644\u064A\u0648\u0645 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0628\u0639\u062F",monthIs:"\u0627\u0644\u0634\u0647\u0631 \u0647\u0648","!monthIs":"\u0627\u0644\u0634\u0647\u0631 \u0644\u064A\u0633",monthIsBefore:"\u0627\u0644\u0634\u0647\u0631 \u0642\u0628\u0644",monthIsAfter:"\u0627\u0644\u0634\u0647\u0631 \u0628\u0639\u062F",yearIs:"\u0627\u0644\u0633\u0646\u0629 \u0647\u064A","!yearIs":"\u0627\u0644\u0633\u0646\u0629 \u0644\u064A\u0633\u062A",yearIsBefore:"\u0627\u0644\u0633\u0646\u0629 \u0642\u0628\u0644",yearIsAfter:"\u0627\u0644\u0633\u0646\u0629 \u0628\u0639\u062F",iconIs:"\u0645\u0639\u0631\u0641 \u0647\u0648","!iconIs":"\u0627\u0644\u0645\u0639\u0631\u0641 \u0644\u064A\u0633",nameIs:"\u0627\u0644\u0627\u0633\u0645 \u0647\u0648","!nameIs":"\u0627\u0644\u0627\u0633\u0645 \u0644\u064A\u0633",nameContains:"\u0627\u0644\u0627\u0633\u0645 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",nameStartsWith:"\u0627\u0644\u0627\u0633\u0645 \u064A\u0628\u062F\u0623 \u0628\u0640",nameEndsWith:"\u0627\u0644\u0627\u0633\u0645 \u064A\u0646\u062A\u0647\u064A \u0628\u0640",nameMatches:"\u0627\u0644\u0627\u0633\u0645 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A","!nameContains":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649","!nameStartsWith":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u0628\u062F\u0623 \u0628\u0640","!nameEndsWith":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u0646\u062A\u0647\u064A \u0628\u0640","!nameMatches":"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u062A\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0627\u0644\u0639\u0627\u062F\u064A",colorIs:"\u0647\u0648 \u0627\u0644\u0644\u0648\u0646","!colorIs":"\u0644\u064A\u0633 \u0627\u0644\u0644\u0648\u0646",hexIs:"\u0631\u0645\u0632 \u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0633\u062F\u0627\u0633\u064A \u0647\u0648","!hexIs":"\u0631\u0645\u0632 \u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0633\u062F\u0627\u0633\u064A \u0644\u064A\u0633",hasValue:"\u0644\u062F\u064A\u0647 \u0642\u064A\u0645\u0629","!hasValue":"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0642\u064A\u0645\u0629",hasProperty:"\u0627\u0644\u062E\u0627\u0635\u064A\u0629 \u0645\u0648\u062C\u0648\u062F\u0629","!hasProperty":"\u0627\u0644\u062E\u0627\u0635\u064A\u0629 \u0645\u0641\u0642\u0648\u062F\u0629"},weekday:{"1":"\u0627\u0644\u0627\u062B\u0646\u064A\u0646","2":"\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621","3":"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","4":"\u0627\u0644\u062E\u0645\u064A\u0633","5":"\u0627\u0644\u062C\u0645\u0639\u0629","6":"\u0627\u0644\u0633\u0628\u062A","7":"\u0627\u0644\u0623\u062D\u062F"},month:{"1":"\u064A\u0646\u0627\u064A\u0631","2":"\u0641\u0628\u0631\u0627\u064A\u0631","3":"\u0645\u0627\u0631\u0633","4":"\u0623\u0628\u0631\u064A\u0644","5":"\u0645\u0627\u064A\u0648","6":"\u064A\u0648\u0646\u064A\u0648","7":"\u064A\u0648\u0644\u064A\u0648","8":"\u0623\u063A\u0633\u0637\u0633","9":"\u0633\u0628\u062A\u0645\u0628\u0631","10":"\u0623\u0643\u062A\u0648\u0628\u0631","11":"\u0646\u0648\u0641\u0645\u0628\u0631","12":"\u062F\u064A\u0633\u0645\u0628\u0631"}},ruleChecker:{fileMatch:"\u0645\u0644\u0641 \u0648\u0627\u062D\u062F \u0645\u0637\u0627\u0628\u0642",folderMatch:"\u0645\u062C\u0644\u062F \u0648\u0627\u062D\u062F \u0645\u0637\u0627\u0628\u0642",filesMatch:"{#} \u0645\u0644\u0641\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629",foldersMatch:"{#} \u0645\u062C\u0644\u062F \u0645\u0637\u0627\u0628\u0642",highlight:"\u062A\u0633\u0644\u064A\u0637 \u0627\u0644\u0636\u0648\u0621",headingMatches:"\u0645\u0637\u0627\u0628\u0642\u0627\u062A"},commands:{openRulebook:"\u0641\u062A\u062D \u0643\u062A\u0627\u0628 \u0627\u0644\u0642\u0648\u0627\u0639\u062F",toggleBiggerIcons:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0623\u0643\u0628\u0631",toggleClickableIcons:{desktop:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0646\u0642\u0631",mobile:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0645\u0633"},toggleAllFileIcons:"\u062A\u0628\u062F\u064A\u0644 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A",toggleAllFolderIcons:"\u062A\u0628\u062F\u064A\u0644 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F",toggleMinimalFolderIcons:"\u062A\u0628\u062F\u064A\u0644 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0628\u0633\u064A\u0637\u0629",toggleMarkdownTabIcons:"\u062A\u0628\u062F\u064A\u0644 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0639\u0644\u0627\u0645\u0627\u062A \u062A\u0628\u0648\u064A\u0628 Markdown",toggleMenuActions:"\u062A\u0628\u062F\u064A\u0644 \u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0642\u0627\u0626\u0645\u0629",toggleQuickSwitcherIcons:"\u062A\u0628\u062F\u064A\u0644 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0627\u0644\u0633\u0631\u064A\u0639",toggleBiggerSearchResults:"\u062A\u0628\u062F\u064A\u0644 \u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u0623\u0643\u0628\u0631",changeIconCurrentFile:"\u062A\u063A\u064A\u064A\u0631 \u0623\u064A\u0642\u0648\u0646\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u062D\u0627\u0644\u064A"},settings:{values:{on:"\u0627\u0644\u062C\u0648\u0627\u0644",off:"\u0625\u064A\u0642\u0627\u0641",desktop:"\u0633\u0637\u062D \u0627\u0644\u0645\u0643\u062A\u0628 \u0641\u0642\u0637",mobile:"\u0627\u0644\u062C\u0648\u0627\u0644 \u0641\u0642\u0637",list:"\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646",rgb:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0623\u0644\u0648\u0627\u0646 RGB"},rulebook:{name:"\u0643\u062A\u0627\u0628 \u0627\u0644\u0642\u0648\u0627\u0639\u062F",desc:"\u0625\u0639\u062F\u0627\u062F \u0642\u0648\u0627\u0639\u062F \u062A\u0644\u0642\u0627\u0626\u064A\u0629 \u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A.",manage:"\u0625\u062F\u0627\u0631\u0629"},headingSidebarAndTabIcons:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0648\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0628\u0648\u064A\u0628",biggerIcons:{name:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631 \u0645\u0646 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A\u0629."},clickableIcons:{nameDesktop:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0646\u0642\u0631",nameMobile:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0645\u0633",descDesktop:"\u0627\u0646\u0642\u0631 \u0641\u0648\u0642 \u0623\u064A\u0642\u0648\u0646\u0629 \u0644\u0641\u062A\u062D \u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A.",descMobile:"\u0627\u0646\u0642\u0631 \u0641\u0648\u0642 \u0623\u064A\u0642\u0648\u0646\u0629 \u0644\u0641\u062A\u062D \u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A."},showAllFileIcons:{name:"\u0625\u0638\u0647\u0627\u0631 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u0644\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0623\u064A\u0642\u0648\u0646\u0629 \u0645\u062E\u0635\u0635\u0629."},showAllFolderIcons:{name:"\u0625\u0638\u0647\u0627\u0631 \u062C\u0645\u064A\u0639 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u062A\u064A \u0644\u0627 \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0623\u064A\u0642\u0648\u0646\u0629 \u0645\u062E\u0635\u0635\u0629."},minimalFolderIcons:{name:"\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0628\u0633\u064A\u0637\u0629",desc:"\u0627\u0633\u062A\u0628\u062F\u0644 \u0623\u0633\u0647\u0645 \u0627\u0644\u0645\u062C\u0644\u062F \u0628\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643."},showMarkdownTabIcons:{name:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0639\u0644\u0627\u0645\u0627\u062A \u062A\u0628\u0648\u064A\u0628 Markdown",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0639\u0644\u0627\u0645\u0627\u062A \u062A\u0628\u0648\u064A\u0628 \u0645\u0644\u0641\u0627\u062A Markdown."},headingMenusAndDialogs:"\u0627\u0644\u0642\u0648\u0627\u0626\u0645 \u0648\u0645\u0631\u0628\u0639\u0627\u062A \u0627\u0644\u062D\u0648\u0627\u0631",showMenuActions:{name:"\u0625\u0638\u0647\u0627\u0631 \u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0642\u0627\u0626\u0645\u0629",desc:"\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0645\u062A\u0639\u0644\u0642\u0629 \u0628\u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0641\u064A \u0642\u0648\u0627\u0626\u0645 \u0627\u0644\u0633\u064A\u0627\u0642."},showQuickSwitcherIcons:{name:"\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0627\u0644\u0633\u0631\u064A\u0639 \u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A",desc:"\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0627\u0644\u0633\u0631\u064A\u0639 \u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0641\u064A \u0646\u062A\u0627\u0626\u062C \u0628\u062D\u062B."},headingIconPicker:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0627\u062A",showItemName:{name:"\u0625\u0638\u0647\u0627\u0631 \u0627\u0633\u0645 \u0627\u0644\u0639\u0646\u0635\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0627\u0633\u0645 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0630\u064A \u064A\u062A\u0645 \u062A\u062D\u0631\u064A\u0631\u0647."},biggerSearchResults:{name:"\u0646\u062A\u0627\u0626\u062C \u0628\u062D\u062B \u0623\u0643\u0628\u0631",desc:"\u0625\u0638\u0647\u0627\u0631 \u0623\u064A\u0642\u0648\u0646\u0627\u062A \u0623\u0643\u0628\u0631 \u0641\u064A \u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B."},maxSearchResults:{name:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B",desc:"\u0627\u062E\u062A\u0631 \u0639\u062F\u062F \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u062A\u064A \u062A\u0631\u064A\u062F \u0639\u0631\u0636\u0647\u0627 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629."},colorPicker1:{name:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",descDesktop:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0646\u0642\u0631 \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646.",descMobile:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0644\u0645\u0633 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646."},colorPicker2:{name:"\u0623\u062F\u0627\u0629 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629",descDesktop:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0646\u0642\u0631 \u0627\u0644\u062B\u0627\u0646\u0648\u064A \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646.",descMobile:"\u062A\u0638\u0647\u0631 \u0639\u0646\u062F \u0627\u0644\u0636\u063A\u0637 \u0645\u0639 \u0627\u0644\u0627\u0633\u062A\u0645\u0631\u0627\u0631 \u0639\u0644\u0649 \u0641\u0642\u0627\u0639\u0629 \u0627\u0644\u0623\u0644\u0648\u0627\u0646."},headingAdvanced:"\u0645\u062A\u0642\u062F\u0645",uncolorHover:{name:"\u062A\u062D\u0648\u0645 \u0639\u062F\u064A\u0645\u0629 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0645\u0631\u064A\u0631 \u0641\u0648\u0642 \u0639\u0646\u0635\u0631."},uncolorDrag:{name:"\u0633\u062D\u0628 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u0633\u062D\u0628 \u0639\u0646\u0635\u0631."},uncolorSelect:{name:"\u0627\u062E\u062A\u064A\u0627\u0631 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0623\u062B\u0646\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0639\u0646\u0635\u0631."},uncolorQuick:{name:"\u0632\u0631 \u0634\u0631\u064A\u0637 \u0639\u062F\u064A\u0645 \u0627\u0644\u0644\u0648\u0646",desc:"\u062A\u0639\u0637\u064A\u0644 \u0644\u0648\u0646 \u0627\u0644\u0631\u0645\u0632 \u0644\u0632\u0631 \u0627\u0644\u0634\u0631\u064A\u0637 \u0644\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0633\u0631\u064A\u0639 \u0639\u0644\u0649 \u0627\u0644\u0647\u0627\u062A\u0641 \u0627\u0644\u0645\u062D\u0645\u0648\u0644."},rememberDeletedItems:{name:"\u062A\u0630\u0643\u0631 \u0631\u0645\u0648\u0632 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062D\u0630\u0648\u0641\u0629",desc:"\u0633\u062A\u0638\u0647\u0631 \u0623\u064A\u0629 \u0631\u0645\u0648\u0632 \u0645\u062E\u0635\u0635\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0639\u0646\u062F \u0648\u062C\u0648\u062F \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u062E\u0627\u0635 \u0628\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649."}}}});var Fe=N((Hi,pt)=>{pt.exports={appItems:{help:"Hilfe \xF6ffnen",settings:"Einstellungen \xF6ffnen",pin:"Pin umschalten",sidebarLeft:"Linke Seitenleiste umschalten",sidebarRight:"Rechte Seitenleiste umschalten",minimize:"Minimieren",maximize:"Maximieren",unmaximize:"Kleines Fenster wiederherstellen",close:"Fenster schlie\xDFen"},menu:{changeIcon:"Symbol \xE4ndern...",changeIcons:"{#} Symbole \xE4ndern...",removeIcon:"Symbol entfernen",removeIcons:"{#} Symbole entfernen",resetColor:"Farbe zur\xFCcksetzen",resetColors:"{#} Farben zur\xFCcksetzen",editRule:"Regel bearbeiten..."},iconPicker:{changeIcon:"Symbol \xE4ndern",changeIcons:"{#} Symbole \xE4ndern",changeEmoji:"Emoji \xE4ndern",changeEmojis:"{#} Emojis \xE4ndern",changeMix:"Symbol/Emoji \xE4ndern",changeMixes:"{#} Symbole/Emojis \xE4ndern",overrulePrefix:"Ihre Regel ",overruleSuffix:" \xFCberschreibt dieses Symbol.",overrules:"Ihr Regelbuch \xFCberschreibt einige dieser Symbole.",search:"Suchen",searchIcons:"Symbole suchen...",searchEmojis:"Emojis suchen...",searchMix:"Symbole/Emojis suchen...",changeColor:"Farbe \xE4ndern",resetColor:"Farbe zur\xFCcksetzen",toggleIcons:"Symbole umschalten",toggleEmojis:"Emojis umschalten",icons:"Symbole",emojis:"Emojis",mixed:"Gemischt",cancel:"Entfernen",save:"Abbrechen",colors:{red:"Rot",orange:"Orange",yellow:"Gelb",green:"Gr\xFCn",cyan:"Cyan",blue:"Blau",purple:"Violett",pink:"Rosa",gray:"Grau"}},categories:{item:"Element",items:"Elemente",appItem:"Schaltfl\xE4che",appItems:"Schaltfl\xE4chen",tab:"Tab",tabs:"Tabs",file:"Datei",files:"Dateien",folder:"Ordner",folders:"Ordner",group:"Gruppe",groups:"Gruppen",search:"Abfrage",searches:"Abfragen",graph:"Graph",graphs:"Graphen",url:"URL",urls:"URLs",tag:"Tag",tags:"Tags",property:"Property",properties:"Properties",ribbonItem:"Sidebar-Befehl",ribbonItems:"Sidebar-Befehle",rule:"Regel",rules:"Regeln"},rulePicker:{selectPage:"Seite ausw\xE4hlen",fileRules:"Dateiregeln",folderRules:"Ordnerregeln",rules:"Regeln",addRule:"Regel hinzuf\xFCgen",editRule:"Regel bearbeiten",removeRule:"Regel entfernen",untitledRule:"Regel ohne Titel",drag:"Zum Umordnen ziehen"},ruleEditor:{fileRule:"Dateiregel",folderRule:"Ordnerregel",conditions:"Bedingungen",addCondition:"Bedingung hinzuf\xFCgen",resetCondition:"Bedingung zur\xFCcksetzen",removeCondition:"Bedingung entfernen",removeRule:"Regel entfernen",buttonMatch:"1 \xDCbereinstimmung",buttonMatches:"{#} \xDCbereinstimmungen",buttonNoMatches:"Keine \xDCbereinstimmungen",enterName:"Dieser Regel einen Namen geben",enterValue:"Einen Wert eingeben",enterRegex:"Einen regul\xE4ren Ausdruck eingeben",enterHexCode:"Einen #Hexcode eingeben",enterNumber:"Eine Zahl eingeben",matchConditions:{name:"\xDCbereinstimmungsbedingungen",desc:"W\xE4hlen Sie aus, wie viele Bedingungen \xFCbereinstimmen m\xFCssen.",all:"Alle",any:"Beliebige",none:"Keine"},source:{icon:"Symbol",color:"Farbe",name:"Name",filename:"Dateiname",extension:"Erweiterung",tree:"Ordnerbaum",path:"Pfad im Tresor",headings:"\xDCberschriften",links:"Links",tags:"Tags",properties:"Eigenschaften...",created:"Erstellungsdatum",modified:"\xC4nderungsdatum",clock:"Systemuhr"},operator:{is:"ist","!is":"ist nicht",contains:"enth\xE4lt",startsWith:"beginnt mit",endsWith:"endet mit",matches:"entspricht Regex","!contains":"enth\xE4lt nicht","!startsWith":"beginnt nicht mit","!endsWith":"endet nicht mit","!matches":"entspricht Regex nicht",includes:"enth\xE4lt Element","!includes":"enth\xE4lt kein Element",allAre:"alle sind",allContain:"alle enthalten",allStartWith:"alle beginnen mit",allEndWith:"alle enden mit",allMatch:"alle entsprechen Regex",anyContain:"beliebig enthalten",anyStartWith:"beliebig beginnen mit",anyEndWith:"beliebig enden mit",anyMatch:"beliebig entspricht Regex",noneContain:"keine enthalten",noneStartWith:"keine beginnen mit",noneEndWith:"keine enden mit",noneMatch:"keine \xDCbereinstimmung mit Regex",countIs:"Anzahl ist","!countIs":"Anzahl ist nicht",countIsLess:"Anzahl ist kleiner als",countIsMore:"Anzahl ist gr\xF6\xDFer als",isTrue:"ist wahr","!isTrue":"ist nicht wahr",isFalse:"ist falsch","!isFalse":"ist nicht falsch",equals:"gleich","!equals":"ist nicht gleich",isLess:"ist kleiner als",isMore:"ist gr\xF6\xDFer als",isDivisible:"ist teilbar durch","!isLess":"ist nicht kleiner als","!isMore":"ist nicht gr\xF6\xDFer als","!isDivisible":"ist nicht teilbar durch",isBefore:"ist vor",isAfter:"ist nach",isNow:"ist jetzt","!isNow":"ist nicht jetzt",isBeforeNow:"ist vor jetzt",isAfterNow:"ist nach jetzt",timeIs:"Zeit ist","!timeIs":"Zeit ist nicht",timeIsBefore:"Zeit ist vor",timeIsAfter:"Zeit ist nach",timeIsNow:"Zeit ist jetzt","!timeIsNow":"Zeit ist nicht jetzt",timeIsBeforeNow:"Zeit ist vor jetzt",timeIsAfterNow:"Zeit ist nach jetzt",dateIs:"Datum ist","!dateIs":"Datum ist nicht",dateIsBefore:"Datum ist vor",dateIsAfter:"Datum ist nach",isToday:"Datum ist heute","!isToday":"Datum ist nicht heute",isBeforeToday:"Datum ist vor heute",isAfterToday:"Datum ist nach heute",isLessDaysAgo:"ist weniger als X Tage her",isLessDaysAway:"ist weniger als X Tage entfernt",isMoreDaysAgo:"ist mehr als X Tage her",isMoreDaysAway:"ist mehr als X Tage entfernt",weekdayIs:"Wochentag ist","!weekdayIs":"Wochentag ist nicht",weekdayIsBefore:"Wochentag ist vor",weekdayIsAfter:"Wochentag ist nach",monthdayIs:"Tag des Monats ist","!monthdayIs":"Tag des Monats ist nicht",monthdayIsBefore:"Tag des Monats ist vor",monthdayIsAfter:"Tag des Monats ist nach",monthIs:"Monatstag ist","!monthIs":"Monat ist nicht",monthIsBefore:"Monat ist vor",monthIsAfter:"Monat ist nach",yearIs:"Jahr ist","!yearIs":"Jahr ist nicht",yearIsBefore:"Jahr ist vor",yearIsAfter:"Jahr ist nach",iconIs:"ID ist","!iconIs":"ID ist nicht",nameIs:"Name ist","!nameIs":"Name ist nicht",nameContains:"Name enth\xE4lt",nameStartsWith:"Name beginnt mit",nameEndsWith:"Name endet mit",nameMatches:"Name entspricht Regex","!nameContains":"Name enth\xE4lt nicht","!nameStartsWith":"Name beginnt nicht mit","!nameEndsWith":"Name endet nicht mit","!nameMatches":"Name entspricht nicht Regex",colorIs:"ist","!colorIs":"ist nicht",hexIs:"Hexcode ist","!hexIs":"Hexcode ist nicht",hasValue:"hat einen beliebigen Wert","!hasValue":"hat keinen Wert",hasProperty:"Eigenschaft vorhanden","!hasProperty":"Eigenschaft fehlt"},weekday:{"1":"Montag","2":"Dienstag","3":"Mittwoch","4":"Donnerstag","5":"Freitag","6":"Samstag","7":"Sonntag"},month:{"1":"Januar","2":"Februar","3":"M\xE4rz","4":"April","5":"Mai","6":"Juni","7":"Juli","8":"August","9":"September","10":"Oktober","11":"November","12":"Dezember"}},ruleChecker:{fileMatch:"1 passende Datei",folderMatch:"1 passender Ordner",filesMatch:"{#} passende Dateien",foldersMatch:"{#} passende Ordner",highlight:"Hervorheben",headingMatches:"\xDCbereinstimmungen"},commands:{openRulebook:"Regelbuch \xF6ffnen",toggleBiggerIcons:"Gr\xF6\xDFere Symbole umschalten",toggleClickableIcons:{desktop:"Klickbare Symbole umschalten",mobile:"Tippbare Symbole umschalten"},toggleAllFileIcons:"Alle Dateisymbole umschalten",toggleAllFolderIcons:"Alle Ordnersymbole umschalten",toggleMinimalFolderIcons:"Minimale Ordnersymbole umschalten",toggleMarkdownTabIcons:"Markdown-Tabsymbole umschalten",toggleMenuActions:"Men\xFCaktionen umschalten",toggleQuickSwitcherIcons:"Schnellauswahlsymbole umschalten",toggleBiggerSearchResults:"Gr\xF6\xDFere Suchergebnisse umschalten",changeIconCurrentFile:"Symbol der aktuellen Datei \xE4ndern"},settings:{values:{on:"Ein",off:"Aus",desktop:"Nur Desktop",mobile:"Nur Mobilger\xE4t",list:"Farbliste",rgb:"RGB-Auswahl"},rulebook:{name:"Regelbuch",desc:"Automatisierte Regeln f\xFCr Datei- und Ordnersymbole einrichten.",manage:"Verwalten"},headingSidebarAndTabIcons:"Seitenleisten- und Registerkartensymbole",biggerIcons:{name:"Gr\xF6\xDFere Symbole",desc:"Gr\xF6\xDFere Symbole als die Standard-Benutzeroberfl\xE4che anzeigen."},clickableIcons:{nameDesktop:"Anklickbare Symbole",nameMobile:"Tippbare Symbole",descDesktop:"Klicken Sie auf ein Symbol, um die Symbolauswahl zu \xF6ffnen.",descMobile:"Tippen Sie auf ein Symbol, um die Symbolauswahl zu \xF6ffnen."},showAllFileIcons:{name:"Alle Dateisymbole anzeigen",desc:"Symbole f\xFCr Dateien anzeigen, die kein benutzerdefiniertes Symbol haben."},showAllFolderIcons:{name:"Alle Ordnersymbole anzeigen",desc:"Symbole f\xFCr Ordner anzeigen, die kein benutzerdefiniertes Symbol haben."},minimalFolderIcons:{name:"Minimale Ordnersymbole",desc:"Ordnerpfeile durch Ihre Ordnersymbole ersetzen."},showMarkdownTabIcons:{name:"Markdown-Tabsymbole anzeigen",desc:"Tabsymbole f\xFCr Markdown-Dateien anzeigen."},headingMenusAndDialogs:"Men\xFCs & Dialoge",showMenuActions:{name:"Men\xFCaktionen anzeigen",desc:"Symbolbezogene Aktionen in Kontextmen\xFCs anzeigen."},showQuickSwitcherIcons:{name:"Schnellauswahlsymbole anzeigen",desc:"Symbole in den Suchergebnissen von Schnellauswahl anzeigen."},headingIconPicker:"Symbolauswahl",showItemName:{name:"Elementnamen anzeigen",desc:"Den Namen des bearbeiteten Elements anzeigen."},biggerSearchResults:{name:"Gr\xF6\xDFere Suchergebnisse",desc:"Gr\xF6\xDFere Symbole in Suchergebnissen anzeigen."},maxSearchResults:{name:"Maximale Suchergebnisse",desc:"W\xE4hlen Sie aus, wie viele Symbole gleichzeitig angezeigt werden sollen."},colorPicker1:{name:"Hauptfarbauswahl",descDesktop:"Erscheint, wenn Sie auf die Farbblase klicken.",descMobile:"Erscheint, wenn Sie die Farbblase ber\xFChren."},colorPicker2:{name:"Zweiter Farbw\xE4hler",descDesktop:"Erscheint, wenn Sie mit der rechten Maustaste auf die Farbblase klicken.",descMobile:"Erscheint, wenn Sie die Farbblase gedr\xFCckt halten."},headingAdvanced:"Erweitert",uncolorHover:{name:"Farbloses Hovern",desc:"Symbolfarbe deaktivieren, w\xE4hrend \xFCber einem Element schwebt."},uncolorDrag:{name:"Farbloses Ziehen",desc:"Symbolfarbe deaktivieren, wenn ein Element gezogen wird."},uncolorSelect:{name:"Farblose Auswahl",desc:"Symbolfarbe deaktivieren, w\xE4hrend das Element ausgew\xE4hlt ist."},uncolorQuick:{name:"Farblose Ribbon-Schaltfl\xE4che",desc:"Symbolfarbe deaktivieren, f\xFCr die Schnellzugriff zu Ribbon-Schaltfl\xE4che auf Mobilger\xE4ten."},rememberDeletedItems:{name:"Symbole gel\xF6schter Elemente merken",desc:"Alle benutzerdefinierten Symbole werden wieder angezeigt, wenn ihr Element wieder existiert."}}}});var Pe=N((ji,ft)=>{ft.exports={menu:{resetColor:"Reset colour",resetColors:"Reset colours"},iconPicker:{changeColor:"Change colour",resetColor:"Reset colour",colors:{gray:"Grey"}},ruleEditor:{source:{color:"Colour"}},settings:{values:{list:"List of colours"},colorPicker1:{name:"Main colour picker",descDesktop:"Appears when you click the colour bubble.",descMobile:"Appears when you tap the colour bubble."},colorPicker2:{name:"Second colour picker",descDesktop:"Appears when you secondary-click the colour bubble.",descMobile:"Appears when you press & hold the colour bubble."},uncolorHover:{name:"Colourless hover",desc:"Disable icon colour while hovering an item."},uncolorDrag:{name:"Colourless drag",desc:"Disable icon colour while dragging an item."},uncolorQuick:{name:"Colourless ribbon button",desc:"Disable icon colour for the quick access ribbon button on mobile."},uncolorSelect:{name:"Colourless selection",desc:"Disable icon colour while item is selected."}}}});var De=N((zi,bt)=>{bt.exports={appItems:{help:"Abrir ayuda",settings:"Abrir ajustes",pin:"Cambiar estado de fijado",sidebarLeft:"Alternar barra lateral izquierda",sidebarRight:"Alternar barra lateral derecha",minimize:"Minimizar",maximize:"Maximizar",unmaximize:"Restaurar",close:"Cerrar ventana"},menu:{changeIcon:"Cambiar \xEDcono...",changeIcons:"Cambiar {#} \xEDconos...",removeIcon:"Eliminar \xEDcono",removeIcons:"Eliminar {#} \xEDconos",resetColor:"Restablecer color",resetColors:"Restablecer {#} colores",editRule:"Editar regla..."},iconPicker:{changeIcon:"Cambiar \xEDcono",changeIcons:"Cambiar {#} \xEDconos",changeEmoji:"Cambiar emoji",changeEmojis:"Cambiar {#} emojis",changeMix:"Cambiar \xEDcono/emoji",changeMixes:"Cambiar {#} \xEDconos/emojis",overrulePrefix:"Tu regla ",overruleSuffix:" est\xE1 anulando este \xEDcono.",overrules:"Tu libro de reglas est\xE1 anulando algunos de estos \xEDconos.",search:"Buscar",searchIcons:"Buscar \xEDconos...",searchEmojis:"Buscar emojis...",searchMix:"Buscar \xEDconos/emojis...",changeColor:"Cambiar color",resetColor:"Restablecer color",toggleIcons:"Alternar \xEDconos",toggleEmojis:"Alternar emojis",icons:"\xCDconos",emojis:"Emojis",mixed:"Mixto",cancel:"Cancelar",save:"Guardar",colors:{red:"Rojo",orange:"Naranja",yellow:"Amarillo",green:"Verde",cyan:"Cian",blue:"Azul",purple:"P\xFArpura",pink:"Rosa",gray:"Gris"}},categories:{item:"Elemento",items:"Elementos",appItem:"Bot\xF3n",appItems:"Botones",tab:"Pesta\xF1a",tabs:"Pesta\xF1as",file:"Archivo",files:"Archivos",folder:"Carpeta",folders:"Carpetas",group:"Grupo",groups:"Grupos",search:"Consulta",searches:"Consultas",graph:"Gr\xE1fica",graphs:"Gr\xE1ficos",url:"URL",urls:"URL",tag:"Etiqueta",tags:"Etiquetas",property:"Propiedad",properties:"Propiedades",ribbonItem:"Comando de cinta",ribbonItems:"Comandos de cinta",rule:"Regla",rules:"Reglas"},rulePicker:{selectPage:"Seleccionar p\xE1gina",fileRules:"Reglas de archivo",folderRules:"Reglas de carpeta",rules:"Reglas",addRule:"Agregar regla",editRule:"Editar regla",removeRule:"Eliminar regla",untitledRule:"Regla sin t\xEDtulo",drag:"Arrastre para reordenar"},ruleEditor:{fileRule:"Regla de archivo",folderRule:"Regla de carpeta",conditions:"Condiciones",addCondition:"A\xF1adir condici\xF3n",resetCondition:"Restablecer condici\xF3n",removeCondition:"Eliminar condici\xF3n",removeRule:"Eliminar regla",buttonMatch:"1 coincidencia",buttonMatches:"{#} coincidencias",buttonNoMatches:"Ninguna coincidencia",enterName:"Dale un nombre a esta regla",enterValue:"Ingresa un valor",enterRegex:"Ingresa una expresi\xF3n regular",enterHexCode:"Ingresa un #c\xF3digohexadecimal",enterNumber:"Ingresa un n\xFAmero",matchConditions:{name:"Condiciones de coincidencia",desc:"Elige cu\xE1ntas condiciones deben coincidir",all:"Todas",any:"Cualquiera",none:"Ninguno"},source:{icon:"\xCDcono",color:"Color",name:"Nombre",filename:"Nombre de archivo",extension:"Extensi\xF3n",tree:"\xC1rbol de carpetas",path:"Ruta en el almac\xE9n",headings:"Encabezados",links:"Enlaces",tags:"Etiquetas",properties:"Propiedades...",created:"Fecha de creaci\xF3n",modified:"Fecha de modificaci\xF3n",clock:"Reloj del sistema"},operator:{is:"es","!is":"no es",contains:"contiene",startsWith:"comienza con",endsWith:"termina con",matches:"coincide con regex","!contains":"no contiene","!startsWith":"no comienza con","!endsWith":"no termina con","!matches":"no coincide con regex",includes:"incluye el elemento","!includes":"no incluye el elemento",allAre:"todos son",allContain:"todos contienen",allStartWith:"todos comienzan con",allEndWith:"todos terminan con",allMatch:"todos coinciden con regex",anyContain:"cualquiera contiene",anyStartWith:"cualquiera comienza con",anyEndWith:"cualquiera termina con",anyMatch:"cualquiera coincide regex",noneContain:"ninguno contiene",noneStartWith:"ninguno empieza con",noneEndWith:"ninguno termina con",noneMatch:"ninguno coincide con regex",countIs:"conteo es","!countIs":"conteo no es",countIsLess:"conteo es menor que",countIsMore:"conteo es mayor que",isTrue:"es verdadero","!isTrue":"no es verdadero",isFalse:"es falso","!isFalse":"no es falso",equals:"es igual a","!equals":"no es igual a",isLess:"es menor que",isMore:"es mayor que",isDivisible:"es divisible entre","!isLess":"no es menor que","!isMore":"no es mayor que","!isDivisible":"no es divisible entre",isBefore:"es antes",isAfter:"es despu\xE9s",isNow:"es ahora","!isNow":"no es ahora",isBeforeNow:"es antes de ahora",isAfterNow:"es despu\xE9s de ahora",timeIs:"tiempo es","!timeIs":"tiempo no es",timeIsBefore:"tiempo es antes",timeIsAfter:"tiempo es despu\xE9s",timeIsNow:"tiempo es ahora","!timeIsNow":"tiempo no es ahora",timeIsBeforeNow:"tiempo es antes de ahora",timeIsAfterNow:"tiempo es despu\xE9s de ahora",dateIs:"fecha es","!dateIs":"fecha no es",dateIsBefore:"fecha es antes",dateIsAfter:"fecha es despu\xE9s",isToday:"fecha es hoy","!isToday":"fecha no es hoy",isBeforeToday:"fecha es anterior a hoy",isAfterToday:"fecha es posterior a hoy",isLessDaysAgo:"hace menos de X d\xEDas",isLessDaysAway:"faltan menos de X d\xEDas",isMoreDaysAgo:"hace m\xE1s de X d\xEDas",isMoreDaysAway:"faltan m\xE1s de X d\xEDas",weekdayIs:"d\xEDa de semana es","!weekdayIs":"d\xEDa de semana no es",weekdayIsBefore:"d\xEDa de semana antes",weekdayIsAfter:"d\xEDa de semana despu\xE9s",monthdayIs:"d\xEDa del mes es","!monthdayIs":"d\xEDa del mes no es",monthdayIsBefore:"d\xEDa del mes antes",monthdayIsAfter:"d\xEDa del mes despu\xE9s",monthIs:"mes es","!monthIs":"mes no es",monthIsBefore:"mes es antes",monthIsAfter:"mes es despu\xE9s",yearIs:"a\xF1o es","!yearIs":"a\xF1o no es",yearIsBefore:"a\xF1o es antes",yearIsAfter:"a\xF1o es despu\xE9s",iconIs:"ID es","!iconIs":"ID no es",nameIs:"nombre es","!nameIs":"nombre no es",nameContains:"nombre contiene",nameStartsWith:"nombre empieza con",nameEndsWith:"nombre termina con",nameMatches:"nombre coincide con regex","!nameContains":"nombre no contiene","!nameStartsWith":"nombre no empieza con","!nameEndsWith":"nombre no termina con","!nameMatches":"nombre no coincide con regex",colorIs:"es","!colorIs":"no es",hexIs:"c\xF3digo hex es","!hexIs":"c\xF3digo hex no es",hasValue:"tiene alg\xFAn valor","!hasValue":"no tiene ning\xFAn valor",hasProperty:"propiedad est\xE1 presente","!hasProperty":"propiedad no est\xE1 presente"},weekday:{"1":"Lunes","2":"Martes","3":"Mi\xE9rcoles","4":"Jueves","5":"Viernes","6":"S\xE1bado","7":"Domingo"},month:{"1":"Enero","2":"Febrero","3":"Marzo","4":"Abril","5":"Mayo","6":"Junio","7":"Julio","8":"Agosto","9":"Septiembre","10":"Octubre","11":"Noviembre","12":"Diciembre"}},ruleChecker:{fileMatch:"1 archivo coincidente",folderMatch:"1 carpeta coincidente",filesMatch:"{#} archivos coincidentes",foldersMatch:"{#} carpetas coincidentes",highlight:"Resaltar",headingMatches:"Coincidencias"},commands:{openRulebook:"Abrir libro de reglas",toggleBiggerIcons:"Alternar \xEDconos m\xE1s grandes",toggleClickableIcons:{desktop:"Alternar \xEDconos en los que se puede hacer clic",mobile:"Alternar \xEDconos que se pueden tocar"},toggleAllFileIcons:"Alternar todos los \xEDconos de archivos",toggleAllFolderIcons:"Alternar todos los \xEDconos de carpetas",toggleMinimalFolderIcons:"Alternar \xEDconos de carpeta m\xEDnimos",toggleMarkdownTabIcons:"Alternar \xEDconos de pesta\xF1as de Markdown",toggleMenuActions:"Alternar acciones del men\xFA",toggleQuickSwitcherIcons:"Alternar \xEDconos del selector r\xE1pido",toggleBiggerSearchResults:"Alternar resultados de b\xFAsqueda m\xE1s grandes",changeIconCurrentFile:"Cambiar el \xEDcono del archivo actual"},settings:{values:{on:"Activado",off:"Desactivado",desktop:"Solo escritorio",mobile:"Solo m\xF3vil",list:"Lista de colores",rgb:"Selector RGB"},rulebook:{name:"Libro de reglas",desc:"Configurar reglas automatizadas para los \xEDconos de archivos y carpetas",manage:"Administrar"},headingSidebarAndTabIcons:"\xCDconos de la barra lateral y de las pesta\xF1as",biggerIcons:{name:"\xCDconos m\xE1s grandes",desc:"Mostrar \xEDconos m\xE1s grandes que la interfaz de usuario predeterminada."},clickableIcons:{nameDesktop:"\xCDconos en los que se puede hacer clic",nameMobile:"\xCDconos que se pueden tocar",descDesktop:"Haga clic en un \xEDcono para abrir el selector de \xEDconos.",descMobile:"Toque un \xEDcono para abrir el selector de \xEDconos."},showAllFileIcons:{name:"Mostrar todos los \xEDconos de archivos",desc:"Mostrar \xEDconos para archivos sin un \xEDcono personalizado."},showAllFolderIcons:{name:"Mostrar todos los \xEDconos de carpetas",desc:"Mostrar \xEDconos para carpetas que no tienen \xEDconos personalizados."},minimalFolderIcons:{name:"\xCDconos de carpeta m\xEDnimos",desc:"Reemplazar las flechas de carpeta con los \xEDconos de carpeta."},showMarkdownTabIcons:{name:"Mostrar \xEDconos de pesta\xF1as de Markdown",desc:"Mostrar \xEDconos de pesta\xF1as para archivos Markdown."},headingMenusAndDialogs:"Men\xFAs y di\xE1logos",showMenuActions:{name:"Mostrar acciones de men\xFA",desc:"Mostrar acciones relacionadas con \xEDconos en los men\xFAs contextuales."},showQuickSwitcherIcons:{name:"Mostrar \xEDconos del selector r\xE1pido",desc:"Mostrar \xEDconos en los resultados de b\xFAsqueda de los selectores r\xE1pidos."},headingIconPicker:"Selector de \xEDconos",showItemName:{name:"Mostrar el nombre del elemento",desc:"Mostrar el nombre del elemento que se est\xE1 editando."},biggerSearchResults:{name:"Resultados de b\xFAsqueda m\xE1s grandes",desc:"Mostrar \xEDconos m\xE1s grandes en los resultados de b\xFAsqueda."},maxSearchResults:{name:"Resultados de b\xFAsqueda m\xE1ximos",desc:"Elige cu\xE1ntos \xEDconos quieres mostrar a la vez."},colorPicker1:{name:"Selector de color principal",descDesktop:"Aparece cuando hace clic en la burbuja de color.",descMobile:"Aparece cuando toca la burbuja de color."},colorPicker2:{name:"Segundo selector de color",descDesktop:"Aparece cuando haces clic secundario en la burbuja de color.",descMobile:"Aparece cuando mantienes presionada la burbuja de color."},headingAdvanced:"Avanzado",uncolorHover:{name:"Flotador incoloro",desc:"Desactivar el color del \xEDcono al pasar el cursor sobre un elemento."},uncolorDrag:{name:"Arrastre incolora",desc:"Desactivar el color del \xEDcono al arrastrar un elemento."},uncolorSelect:{name:"Selecci\xF3n incolora",desc:"Desactivar el color del \xEDcono mientras el elemento est\xE1 seleccionado."},uncolorQuick:{name:"Bot\xF3n de cinta incolora",desc:"Desactivar el color del \xEDcono para el bot\xF3n de cinta de acceso r\xE1pido en m\xF3vile."},rememberDeletedItems:{name:"Recordar \xEDconos de elementos eliminados",desc:"Cualquier \xEDcono personalizado reaparecer\xE1 cuando su elemento vuelva a existir."}}}});var Be=N((Vi,It)=>{It.exports={appItems:{help:"Ouvrir l'aide",settings:"Ouvrir les param\xE8tres",pin:"Basculer l'\xE9pingle",sidebarLeft:"Basculer la barre lat\xE9rale gauche",sidebarRight:"Basculer la barre lat\xE9rale droite",minimize:"Minimiser",maximize:"Maximiser",unmaximize:"Restaurer",close:"Fermer la fen\xEAtre"},menu:{changeIcon:"Modifier l'ic\xF4ne...",changeIcons:"Modifier {#} ic\xF4nes...",removeIcon:"Supprimer l'ic\xF4ne",removeIcons:"Supprimer {#} ic\xF4nes",resetColor:"R\xE9initialiser la couleur",resetColors:"R\xE9initialiser {#} couleurs",editRule:"Modifier la r\xE8gle..."},iconPicker:{changeIcon:"Changer l'ic\xF4ne",changeIcons:"Changer {#} ic\xF4nes",changeEmoji:"Changer l'\xE9moji",changeEmojis:"Changer {#} \xE9mojis",changeMix:"Changer l'ic\xF4ne / l'emoji",changeMixes:"Changer {#} ic\xF4nes / emojis",overrulePrefix:"Votre r\xE8gle ",overruleSuffix:" annule cette ic\xF4ne.",overrules:"Votre livre de r\xE8gles annule certaines de ces ic\xF4nes.",search:"Rechercher",searchIcons:"Rechercher des ic\xF4nes...",searchEmojis:"Rechercher des \xE9mojis...",searchMix:"Rechercher des ic\xF4nes / emojis...",changeColor:"Changer la couleur",resetColor:"R\xE9initialiser la couleur",toggleIcons:"Basculer les ic\xF4nes",toggleEmojis:"Basculer les emojis",icons:"Ic\xF4nes",emojis:"\xC9mojis",mixed:"M\xE9lange",cancel:"Annuler",save:"Sauvegarder",colors:{red:"Rouge",orange:"Orange",yellow:"Jaune",green:"Vert",cyan:"Cyan",blue:"Bleu",purple:"Violet",pink:"Rose",gray:"Gris"}},categories:{item:"\xC9l\xE9ment",items:"\xC9l\xE9ments",appItem:"Bouton",appItems:"Boutons",tab:"Onglet",tabs:"Onglets",file:"Fichier",files:"Fichiers",folder:"Dossier",folders:"Dossiers",group:"Groupe",groups:"Groupes",search:"Requ\xEAte",searches:"Requ\xEAtes",graph:"Graphique",graphs:"Graphiques",url:"URL",urls:"URL",tag:"Mot-cl\xE9",tags:"Mots-cl\xE9s",property:"Propri\xE9t\xE9",properties:"Propri\xE9t\xE9s",ribbonItem:"Commande du ruban",ribbonItems:"Commandes du ruban",rule:"R\xE8gle",rules:"R\xE8gles"},rulePicker:{selectPage:"S\xE9lectionner une page",fileRules:"R\xE8gles pour les fichiers",folderRules:"R\xE8gles pour les dossiers",rules:"R\xE8gles",addRule:"Ajouter une r\xE8gle",editRule:"Modifier la r\xE8gle",removeRule:"Supprimer la r\xE8gle",untitledRule:"R\xE8gle sans titre",drag:"Glisser pour r\xE9organiser"},ruleEditor:{fileRule:"R\xE8gle de fichier",folderRule:"R\xE8gle de dossier",conditions:"Conditions",addCondition:"Ajouter une condition",resetCondition:"R\xE9initialiser la condition",removeCondition:"Supprimer la condition",removeRule:"Supprimer la r\xE8gle",buttonMatch:"1 correspondance",buttonMatches:"{#} correspondances",buttonNoMatches:"Aucune correspondance",enterName:"Donnez un nom \xE0 cette r\xE8gle",enterValue:"Entrez une valeur",enterRegex:"Entrez une expression r\xE9guli\xE8re",enterHexCode:"Entrez un #hexcode",enterNumber:"Entrez un nombre",matchConditions:{name:"Conditions de correspondance",desc:"Choisissez le nombre de conditions \xE0 respecter.",all:"Toutes",any:"Tout",none:"Aucune"},source:{icon:"Ic\xF4ne",color:"Couleur",name:"Nom",filename:"Nom de fichier",extension:"Extension",tree:"Chemin du dossier",path:"Chemin dans le coffre",headings:"Sous-titres",links:"Liens",tags:"Tags",properties:"Propri\xE9t\xE9s...",created:"Date de cr\xE9ation",modified:"Date de modification",clock:"Heure syst\xE8me"},operator:{is:"est","!is":"n'est pas",contains:"contient",startsWith:"commence par",endsWith:"se termine par",matches:"valid\xE9 par regex","!contains":"ne contient pas","!startsWith":"ne commence pas par","!endsWith":"ne se termine pas par","!matches":"invalid\xE9 par regex",includes:"inclut l'\xE9l\xE9ment","!includes":"n'inclut pas l'\xE9l\xE9ment",allAre:"tous sont",allContain:"tous contiennent",allStartWith:"tous commencent par",allEndWith:"tous se terminent par",allMatch:"tous valid\xE9s par regex",anyContain:"l'un contient",anyStartWith:"l'un commence par",anyEndWith:"l'un se termine par",anyMatch:"l'un valid\xE9 par regex",noneContain:"aucun ne contient",noneStartWith:"aucun ne commence par",noneEndWith:"aucun ne se termine par",noneMatch:"aucun valid\xE9 par regex",countIs:"nombre est","!countIs":"nombre n'est pas",countIsLess:"nombre est inf\xE9rieur \xE0",countIsMore:"nombre est sup\xE9rieur \xE0",isTrue:"est vrai","!isTrue":"n'est pas vrai",isFalse:"est faux","!isFalse":"n'est pas faux",equals:"\xE9gale","!equals":"n'est pas \xE9gal \xE0",isLess:"est inf\xE9rieur \xE0",isMore:"est sup\xE9rieur \xE0",isDivisible:"est divisible par","!isLess":"n'est pas inf\xE9rieur \xE0","!isMore":"n'est pas sup\xE9rieur \xE0","!isDivisible":"n'est pas divisible par",isBefore:"est avant",isAfter:"est apr\xE8s",isNow:"est maintenant","!isNow":"n'est pas maintenant",isBeforeNow:"est avant maintenant",isAfterNow:"est apr\xE8s maintenant",timeIs:"heure est","!timeIs":"heure n'est pas",timeIsBefore:"heure est avant",timeIsAfter:"heure est apr\xE8s",timeIsNow:"heure est maintenant","!timeIsNow":"heure n'est pas maintenant",timeIsBeforeNow:"heure est avant maintenant",timeIsAfterNow:"heure est apr\xE8s maintenant",dateIs:"date est","!dateIs":"date n'est pas",dateIsBefore:"date est avant",dateIsAfter:"date est apr\xE8s",isToday:"date est aujourd'hui","!isToday":"date n'est pas aujourd'hui",isBeforeToday:"date est avant aujourd'hui",isAfterToday:"date est apr\xE8s aujourd'hui",isLessDaysAgo:"il y a moins de X jours",isLessDaysAway:"dans moins de X jours",isMoreDaysAgo:"il y a plus de X jours",isMoreDaysAway:"dans plus de X jours",weekdayIs:"jour de la semaine est","!weekdayIs":"jour de la semaine n'est pas",weekdayIsBefore:"jour de la semaine est avant",weekdayIsAfter:"jour de la semaine est apr\xE8s",monthdayIs:"jour du mois est","!monthdayIs":"jour du mois n'est pas",monthdayIsBefore:"jour du mois est avant",monthdayIsAfter:"jour du mois est apr\xE8s",monthIs:"mois est","!monthIs":"mois n'est pas",monthIsBefore:"mois est avant",monthIsAfter:"mois est apr\xE8s",yearIs:"ann\xE9e est","!yearIs":"ann\xE9e n'est pas",yearIsBefore:"ann\xE9e est avant",yearIsAfter:"ann\xE9e est apr\xE8s",iconIs:"ID est","!iconIs":"ID n'est pas",nameIs:"nom est","!nameIs":"nom n'est pas",nameContains:"nom contient",nameStartsWith:"nom commence par",nameEndsWith:"nom se termine par",nameMatches:"nom valid\xE9 par regex","!nameContains":"nom ne contient pas","!nameStartsWith":"nom ne commence pas par","!nameEndsWith":"nom ne se termine pas par","!nameMatches":"nom invalid\xE9 par regex",colorIs:"est","!colorIs":"n'est pas",hexIs:"code hex est","!hexIs":"code hex n'est pas",hasValue:"a une valeur","!hasValue":"n'a pas de valeur",hasProperty:"propri\xE9t\xE9 est pr\xE9sente","!hasProperty":"propri\xE9t\xE9 est manquante"},weekday:{"1":"Lundi","2":"Mardi","3":"Mercredi","4":"Jeudi","5":"Vendredi","6":"Samedi","7":"Dimanche"},month:{"1":"Janvier","2":"F\xE9vrier","3":"Mars","4":"Avril","5":"Mai","6":"Juin","7":"Juillet","8":"Ao\xFBt","9":"Septembre","10":"Octobre","11":"Novembre","12":"D\xE9cembre"}},ruleChecker:{fileMatch:"1 fichier correspondant",folderMatch:"1 dossier correspondant",filesMatch:"{#} fichiers correspondants",foldersMatch:"{#} dossiers correspondants",highlight:"Surligner",headingMatches:"Correspondances"},commands:{openRulebook:"Ouvrir le livre de r\xE8gles",toggleBiggerIcons:"Basculer les plus grandes ic\xF4nes",toggleClickableIcons:{desktop:"Basculer les ic\xF4nes cliquables",mobile:"Basculer les ic\xF4nes tactiles"},toggleAllFileIcons:"Basculer toutes les ic\xF4nes de fichier",toggleAllFolderIcons:"Basculer toutes les ic\xF4nes de dossier",toggleMinimalFolderIcons:"Basculer les ic\xF4nes de dossier minimales",toggleMarkdownTabIcons:"Basculer les ic\xF4nes d'onglets Markdown",toggleMenuActions:"Bascular les actions du menu",toggleQuickSwitcherIcons:"Bascular les ic\xF4nes de s\xE9lecteur rapide",toggleBiggerSearchResults:"Basculer les r\xE9sultats de recherche plus grands",changeIconCurrentFile:"Changer l'ic\xF4ne du fichier actuel"},settings:{values:{on:"Activ\xE9",off:"D\xE9sactiv\xE9",desktop:"Bureau uniquement",mobile:"Mobile uniquement",list:"Liste de couleurs",rgb:"S\xE9lecteur RVB"},rulebook:{name:"Livre de r\xE8gles",desc:"Configurer des r\xE8gles automatis\xE9es pour les ic\xF4nes de fichiers et de dossiers.",manage:"G\xE9rer"},headingSidebarAndTabIcons:"Ic\xF4nes de la barre lat\xE9rale et des onglets",biggerIcons:{name:"Ic\xF4nes plus grandes",desc:"Afficher des ic\xF4nes plus grandes que l'interface utilisateur par d\xE9faut."},clickableIcons:{nameDesktop:"Ic\xF4nes cliquables",nameMobile:"Ic\xF4nes tactiles",descDesktop:"Cliquez sur une ic\xF4ne pour ouvrir le s\xE9lecteur d'ic\xF4nes.",descMobile:"Appuyez sur une ic\xF4ne pour ouvrir le s\xE9lecteur d'ic\xF4nes."},showAllFileIcons:{name:"Afficher toutes les ic\xF4nes de fichiers",desc:"Afficher les ic\xF4nes des fichiers qui n'ont pas d'ic\xF4ne personnalis\xE9e."},showAllFolderIcons:{name:"Afficher toutes les ic\xF4nes de dossiers",desc:"Afficher les ic\xF4nes des dossiers qui n'ont pas d'ic\xF4ne personnalis\xE9e."},minimalFolderIcons:{name:"Ic\xF4nes de dossier minimales",desc:"Remplacez les fl\xE8ches de dossier par vos ic\xF4nes de dossier."},showMarkdownTabIcons:{name:"Afficher les ic\xF4nes des onglets Markdown",desc:"Afficher les ic\xF4nes des onglets pour les fichiers Markdown."},headingMenusAndDialogs:"Menus et bo\xEEtes de dialogue",showMenuActions:{name:"Afficher les actions des menus",desc:"Afficher les actions li\xE9es aux ic\xF4nes dans les menus contextuels."},showQuickSwitcherIcons:{name:"Afficher les ic\xF4nes des s\xE9lecteurs rapides",desc:"Afficher les ic\xF4nes dans les r\xE9sultats de recherche des s\xE9lecteurs rapides."},headingIconPicker:"S\xE9lecteur d'ic\xF4nes",showItemName:{name:"Afficher le nom de l'\xE9l\xE9ment",desc:"Afficher le nom de l'\xE9l\xE9ment en cours de modification."},biggerSearchResults:{name:"R\xE9sultats de recherche plus grands.",desc:"Afficher des ic\xF4nes plus grandes dans les r\xE9sultats de recherche."},maxSearchResults:{name:"R\xE9sultats de recherche maximaux",desc:"Choisissez le nombre d'ic\xF4nes \xE0 afficher simultan\xE9ment."},colorPicker1:{name:"S\xE9lecteur de couleurs principal",descDesktop:"S'affiche lorsque vous cliquez sur la bulle de couleur.",descMobile:"S'affiche lorsque vous touchez la bulle de couleur."},colorPicker2:{name:"Deuxi\xE8me s\xE9lecteur de couleurs",descDesktop:"Appara\xEEt lorsque vous cliquez avec le bouton droit sur la bulle de couleur.",descMobile:"Appara\xEEt lorsque vous appuyez et maintenez la bulle de couleur."},headingAdvanced:"Avanc\xE9",uncolorHover:{name:"Survol incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque vous survolez un \xE9l\xE9ment."},uncolorDrag:{name:"Glissement incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque vous faites glisser un \xE9l\xE9ment."},uncolorSelect:{name:"S\xE9lection incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne lorsque l'\xE9l\xE9ment est s\xE9lectionn\xE9."},uncolorQuick:{name:"Bouton de ruban incolore",desc:"D\xE9sactiver la couleur de l'ic\xF4ne pour le bouton de ruban d'acc\xE8s rapide sur mobile."},rememberDeletedItems:{name:"M\xE9moriser les ic\xF4nes des \xE9l\xE9ments supprim\xE9s",desc:"Toutes les ic\xF4nes personnalis\xE9es r\xE9appara\xEEtront lorsque leur \xE9l\xE9ment existera \xE0 nouveau."}}}});var Le=N((qi,kt)=>{kt.exports={appItems:{help:"Buka bantuan",settings:"Buka pengaturan",pin:"Aktifkan/Matikan sematan",sidebarLeft:"Buka/Tutup bilah sisi kiri",sidebarRight:"Buka/Tutup bilah sisi kanan",minimize:"Minimalkan",maximize:"Maksimalkan",unmaximize:"Kecilkan",close:"Tutup jendela"},menu:{changeIcon:"Ubah ikon...",changeIcons:"Ubah {#} ikon...",removeIcon:"Hapus ikon",removeIcons:"Hapus {#} ikon",resetColor:"Atur ulang warna",resetColors:"Atur ulang {#} warna",editRule:"Edit aturan..."},iconPicker:{changeIcon:"Ubah ikon",changeIcons:"Ubah {#} ikon",changeEmoji:"Ubah emoji",changeEmojis:"Ubah {#} emoji",changeMix:"Ubah ikon / emoji",changeMixes:"Ubah {#} ikon / emoji",overrulePrefix:"Aturan Anda ",overruleSuffix:" mengesampingkan ikon ini.",overrules:"Buku aturan Anda mengesampingkan beberapa ikon ini.",search:"Search",searchIcons:"Cari ikon...",searchEmojis:"Cari emoji...",searchMix:"Cari ikon / emoji...",changeColor:"Ganti warna",resetColor:"Atur ulang warna",toggleIcons:"Beralih ikon",toggleEmojis:"Beralih emoji",icons:"Ikon",emojis:"Emoji",mixed:"Campuran",cancel:"Batal",save:"Simpan",colors:{red:"Merah",orange:"Oranye",yellow:"Kuning",green:"Hijau",cyan:"Sian",blue:"Biru",purple:"Ungu",pink:"Merah muda",gray:"Abu-abu"}},categories:{item:"Item",items:"Item",appItem:"Tombol",appItems:"Tombol",tab:"Tab",tabs:"Tab",file:"Berkas",files:"Berkas",folder:"Folder",folders:"Folder",group:"Grup",groups:"Grup",search:"Kueri",searches:"Kueri",graph:"Grafik",graphs:"Grafik",url:"URL",urls:"URL",tag:"Tag",tags:"Tag",property:"Properti",properties:"Properti",ribbonItem:"Perintah ribbon",ribbonItems:"Perintah ribbon",rule:"Aturan",rules:"Aturan"},rulePicker:{selectPage:"Pilih halaman",fileRules:"Aturan berkas",folderRules:"Aturan folder",rules:"Aturan",addRule:"Tambah aturan",editRule:"Edit aturan",removeRule:"Hapus aturan",untitledRule:"Aturan tanpa judul",drag:"Seret untuk menata"},ruleEditor:{fileRule:"Aturan berkas",folderRule:"Aturan folder",conditions:"Kondisi",addCondition:"Tambahkan kondisi",resetCondition:"Atur ulang kondisi",removeCondition:"Hapus kondisi",removeRule:"Hapus aturan",buttonMatch:"1 kecocokan",buttonMatches:"{#} kecocokan",buttonNoMatches:"Tidak ada kecocokan",enterName:"Beri nama pada aturan ini",enterValue:"Masukkan nilai",enterRegex:"Masukkan regex",enterHexCode:"Masukkan #hexcode",enterNumber:"Masukkan angka",matchConditions:{name:"Kecocokan kondisi",desc:"Pilih berapa banyak kondisi yang perlu dicocokkan.",all:"Semua",any:"Apa pun",none:"Tidak ada"},source:{icon:"Ikon",color:"Warna",name:"Nama",filename:"Nama berkas",extension:"Ekstensi",tree:"Pohon folder",path:"Jalur dalam brankas",headings:"Judul",links:"Tautan",tags:"Tag",properties:"Properti...",created:"Tanggal dibuat",modified:"Tanggal diubah",clock:"Jam sistem"},operator:{is:"adalah","!is":"bukan",contains:"berisi",startsWith:"dimulai dengan",endsWith:"diakhiri dengan",matches:"cocok dengan regex","!contains":"tidak berisi","!startsWith":"tidak dimulai dengan","!endsWith":"tidak diakhiri dengan","!matches":"tidak cocok regex",includes:"termasuk item","!includes":"tidak termasuk item",allAre:"semua adalah",allContain:"semua berisi",allStartWith:"semua dimulai dengan",allEndWith:"semua diakhiri dengan",allMatch:"semua cocok regex",anyContain:"ada berisi",anyStartWith:"ada mulai dengan",anyEndWith:"ada diakhiri dengan",anyMatch:"ada cocok regex",noneContain:"tidak ada berisi",noneStartWith:"tidak ada mulai dengan",noneEndWith:"tidak ada diakhiri dengan",noneMatch:"tidak ada cocok regex",countIs:"jumlahnya","!countIs":"jumlahnya tidak",countIsLess:"jumlahnya kurang dari",countIsMore:"jumlahnya lebih dari",isTrue:"benar","!isTrue":"tidak benar",isFalse:"salah","!isFalse":"tidak salah",equals:"sama dengan","!equals":"tidak sama dengan",isLess:"kurang dari",isMore:"lebih dari",isDivisible:"dapat dibagi oleh","!isLess":"tidak kurang dari","!isMore":"tidak lebih dari","!isDivisible":"tidak dapat dibagi oleh",isBefore:"sebelum",isAfter:"setelah",isNow:"sekarang","!isNow":"bukan sekarang",isBeforeNow:"sebelum sekarang",isAfterNow:"setelah sekarang",timeIs:"waktu adalah","!timeIs":"waktu bukan",timeIsBefore:"waktu adalah sebelum",timeIsAfter:"waktu adalah setelah",timeIsNow:"waktu adalah sekarang","!timeIsNow":"waktu bukan sekarang",timeIsBeforeNow:"waktu adalah sebelum sekarang",timeIsAfterNow:"waktu adalah setelah sekarang",dateIs:"tanggal adalah","!dateIs":"tanggal bukan",dateIsBefore:"tanggal adalah sebelum",dateIsAfter:"tanggal adalah setelah",isToday:"tanggal adalah hari ini","!isToday":"tanggal bukan hari ini",isBeforeToday:"tanggal sebelum hari ini",isAfterToday:"tanggal setelah hari ini",isLessDaysAgo:"kurang dari X hari lalu",isLessDaysAway:"kurang dari X hari lagi",isMoreDaysAgo:"lebih dari X hari lalu",isMoreDaysAway:"lebih dari X hari lagi",weekdayIs:"hari minggu","!weekdayIs":"hari minggu bukan",weekdayIsBefore:"hari sebelum minggu",weekdayIsAfter:"hari setelah minggu",monthdayIs:"hari bulan bukan","!monthdayIs":"hari bulan",monthdayIsBefore:"hari sebelum bulan",monthdayIsAfter:"hari setelah bulan",monthIs:"bulan adalah","!monthIs":"bulan bukan",monthIsBefore:"bulan sebelum",monthIsAfter:"bulan setelah",yearIs:"tahun adalah","!yearIs":"tahun bukan",yearIsBefore:"tahun sebelum",yearIsAfter:"tahun setelah",iconIs:"ID adalah","!iconIs":"ID bukan",nameIs:"nama adalah","!nameIs":"nama bukan",nameContains:"nama berisi",nameStartsWith:"nama dimulai dengan",nameEndsWith:"nama diakhiri dengan",nameMatches:"nama cocok regex","!nameContains":"nama tidak berisi","!nameStartsWith":"nama tidak dimulai dengan","!nameEndsWith":"nama tidak diakhiri dengan","!nameMatches":"nama tidak cocok regex",colorIs:"adalah","!colorIs":"bukan",hexIs:"kode heks","!hexIs":"kode heks tidak ada",hasValue:"ada nilai","!hasValue":"tidak ada nilai",hasProperty:"properti ada","!hasProperty":"properti tidak ada"},weekday:{"1":"Senin","2":"Selasa","3":"Rabu","4":"Kamis","5":"Jumat","6":"Sabtu","7":"Minggu"},month:{"1":"Januari","2":"Februari","3":"Maret","4":"April","5":"Mei","6":"Juni","7":"Juli","8":"Agustus","9":"September","10":"Oktober","11":"November","12":"Desember"}},ruleChecker:{fileMatch:"1 file yang cocok",folderMatch:"1 folder yang cocok",filesMatch:"{#} file yang cocok",foldersMatch:"{#} folder yang cocok",highlight:"Sorot",headingMatches:"Cocok"},commands:{openRulebook:"Buka buku aturan",toggleBiggerIcons:"Alihkan ikon yang lebih besar",toggleClickableIcons:{desktop:"Alihkan ikon yang dapat diklik",mobile:"Alihkan ikon yang dapat diketuk"},toggleAllFileIcons:"Beralih semua ikon berkas",toggleAllFolderIcons:"Beralih semua ikon folder",toggleMinimalFolderIcons:"Beralih ikon folder minimal",toggleMarkdownTabIcons:"Beralih ikon tab Markdown",toggleMenuActions:"Beralih tindakan menu",toggleQuickSwitcherIcons:"Beralih ikon peralih cepat",toggleBiggerSearchResults:"Beralih hasil pencarian yang lebih besar",changeIconCurrentFile:"Ubah ikon file saat ini"},settings:{values:{on:"Aktif",off:"Nonaktif",desktop:"Hanya desktop",mobile:"Hanya seluler",list:"Daftar warna",rgb:"Pemilih RGB"},rulebook:{name:"Buku aturan",desc:"Siapkan aturan otomatis untuk ikon berkas dan folder.",manage:"Kelola"},headingSidebarAndTabIcons:"Ikon bilah sisi & tab",biggerIcons:{name:"Ikon yang lebih besar",desc:"Tampilkan ikon yang lebih besar daripada UI default."},clickableIcons:{nameDesktop:"Ikon yang dapat diklik",nameMobile:"Ikon yang dapat diketuk",descDesktop:"Klik ikon untuk membuka pemilih ikon.",descMobile:"Ketuk ikon untuk membuka pemilih ikon."},showAllFileIcons:{name:"Tampilkan semua ikon berkas",desc:"Tampilkan ikon untuk berkas yang tidak memiliki ikon khusus."},showAllFolderIcons:{name:"Tampilkan semua ikon folder",desc:"Tampilkan ikon untuk folder yang tidak memiliki ikon khusus."},minimalFolderIcons:{name:"Ikon folder minimal",desc:"Ganti tanda panah folder dengan ikon folder Anda."},showMarkdownTabIcons:{name:"Tampilkan ikon tab Markdown",desc:"Tampilkan ikon tab untuk file Markdown."},headingMenusAndDialogs:"Menu & dialog",showMenuActions:{name:"Tampilkan tindakan menu",desc:"Tampilkan tindakan terkait ikon dalam menu konteks."},showQuickSwitcherIcons:{name:"Tampilkan ikon peralih cepat",desc:"Tampilkan ikon dalam hasil pencarian peralih cepat."},headingIconPicker:"Pemilih ikon",showItemName:{name:"Tampilkan nama item",desc:"Tampilkan nama item yang sedang diedit."},biggerSearchResults:{name:"Hasil pencarian yang lebih besar",desc:"Tampilkan ikon yang lebih besar dalam hasil pencarian."},maxSearchResults:{name:"Hasil pencarian maksimal",desc:"Pilih berapa banyak ikon yang akan ditampilkan sekaligus."},colorPicker1:{name:"Pemilih warna utama",descDesktop:"Muncul saat Anda mengklik gelembung warna.",descMobile:"Muncul saat Anda menyentuh gelembung warna."},colorPicker2:{name:"Pemilih warna kedua",descDesktop:"Muncul saat Anda mengklik kedua gelembung warna.",descMobile:"Muncul saat Anda menekan & menahan gelembung warna."},headingAdvanced:"Lanjutan",uncolorHover:{name:"Arahkan tanpa warna",desc:"Nonaktifkan warna ikon saat mengarahkan kursor ke item."},uncolorDrag:{name:"Seret tanpa warna",desc:"Nonaktifkan warna ikon saat menyeret item."},uncolorSelect:{name:"Pilihan tanpa warna",desc:"Nonaktifkan warna ikon saat item dipilih."},uncolorQuick:{name:"Tombol ribbon tanpa warna",desc:"Nonaktifkan warna ikon untuk akses cepat tombol ribbon di ponsel."},rememberDeletedItems:{name:"Ingat ikon item yang dihapus",desc:"Ikon khusus apa pun akan muncul kembali ketika itemnya ada lagi."}}}});var We=N((Gi,yt)=>{yt.exports={appItems:{help:"\u30D8\u30EB\u30D7\u3092\u958B\u304F",settings:"\u8A2D\u5B9A\u3092\u958B\u304F",pin:"\u30D4\u30F3\u3092\u30C8\u30B0\u30EB",sidebarLeft:"\u5DE6\u306E\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u9589",sidebarRight:"\u53F3\u306E\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u9589",minimize:"\u6700\u5C0F\u5316",maximize:"\u6700\u5927\u5316",unmaximize:"\u5143\u306E\u30B5\u30A4\u30BA\u306B\u623B\u3059",close:"\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u9589\u3058\u308B"},menu:{changeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u2026",changeIcons:"\u30A2\u30A4\u30B3\u30F3\u3092 {#} \u500B\u5909\u66F4\u2026",removeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u524A\u9664",removeIcons:"\u30A2\u30A4\u30B3\u30F3\u3092 {#} \u500B\u524A\u9664",resetColor:"\u8272\u3092\u30EA\u30BB\u30C3\u30C8",resetColors:"\u8272\u3092 {#} \u500B\u30EA\u30BB\u30C3\u30C8",editRule:"\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6\u2026"},iconPicker:{changeIcon:"\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4",changeIcons:"{#}\u500B\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u3059\u308B",changeEmoji:"\u7D75\u6587\u5B57\u3092\u5909\u66F4\u3059\u308B",changeEmojis:"\u7D75\u6587\u5B57\u3092 {#} \u500B\u5909\u66F4",changeMix:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092\u5909\u66F4",changeMixes:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092 {#} \u500B\u5909\u66F4",overrulePrefix:"\u3042\u306A\u305F\u306E\u30EB\u30FC\u30EB ",overruleSuffix:" \u304C\u3053\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u7121\u52B9\u306B\u3057\u3066\u3044\u307E\u3059\u3002",overrules:"\u3042\u306A\u305F\u306E\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u304C\u3053\u308C\u3089\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u3044\u304F\u3064\u304B\u3092\u7121\u52B9\u306B\u3057\u3066\u3044\u307E\u3059\u3002",search:"\u691C\u7D22",searchIcons:"\u30A2\u30A4\u30B3\u30F3\u3092\u691C\u7D22\u2026",searchEmojis:"\u7D75\u6587\u5B57\u3092\u691C\u7D22\u2026",searchMix:"\u30A2\u30A4\u30B3\u30F3/\u7D75\u6587\u5B57\u3092\u691C\u7D22\u2026",changeColor:"\u8272\u3092\u5909\u3048\u308B",resetColor:"\u8272\u3092\u30EA\u30BB\u30C3\u30C8",toggleIcons:"\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleEmojis:"\u7D75\u6587\u5B57\u3092\u5207\u308A\u66FF\u3048\u308B",icons:"\u30A2\u30A4\u30B3\u30F3",emojis:"\u7D75\u6587\u5B57",mixed:"\u6DF7\u5408",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",save:"\u4FDD\u5B58",colors:{red:"\u8D64",orange:"\u30AA\u30EC\u30F3\u30B8",yellow:"\u9EC4\u8272",green:"\u7DD1",cyan:"\u30B7\u30A2\u30F3",blue:"\u9752",purple:"\u7D2B",pink:"\u30D4\u30F3\u30AF",gray:"\u7070\u8272"}},categories:{item:"\u9805\u76EE",items:"\u9805\u76EE",appItem:"\u30DC\u30BF\u30F3",appItems:"\u30DC\u30BF\u30F3",tab:"\u30BF\u30D6",tabs:"\u30BF\u30D6",file:"\u30D5\u30A1\u30A4\u30EB",files:"\u30D5\u30A1\u30A4\u30EB",folder:"\u30D5\u30A9\u30EB\u30C0",folders:"\u30D5\u30A9\u30EB\u30C0",group:"\u30B0\u30EB\u30FC\u30D7",groups:"\u30B0\u30EB\u30FC\u30D7",search:"\u30AF\u30A8\u30EA",searches:"\u30AF\u30A8\u30EA",graph:"\u30B0\u30E9\u30D5",graphs:"\u30B0\u30E9\u30D5",url:"URL",urls:"URL",tag:"\u30BF\u30B0",tags:"\u30BF\u30B0",property:"\u30D7\u30ED\u30D1\u30C6\u30A3",properties:"\u30D7\u30ED\u30D1\u30C6\u30A3",ribbonItem:"\u30EA\u30DC\u30F3\u30B3\u30DE\u30F3\u30C9",ribbonItems:"\u30EA\u30DC\u30F3\u30B3\u30DE\u30F3\u30C9",rule:"\u30EB\u30FC\u30EB",rules:"\u30EB\u30FC\u30EB"},rulePicker:{selectPage:"\u30DA\u30FC\u30B8\u3092\u9078\u629E",fileRules:"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB",folderRules:"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB",rules:"\u30EB\u30FC\u30EB",addRule:"\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0",editRule:"\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6",removeRule:"\u30EB\u30FC\u30EB\u3092\u524A\u9664",untitledRule:"\u7121\u984C\u306E\u30EB\u30FC\u30EB",drag:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u9806\u756A\u3092\u5909\u66F4"},ruleEditor:{fileRule:"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB",folderRule:"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB",conditions:"\u6761\u4EF6",addCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",resetCondition:"\u6761\u4EF6\u3092\u30EA\u30BB\u30C3\u30C8",removeCondition:"\u6761\u4EF6\u3092\u524A\u9664",removeRule:"\u30EB\u30FC\u30EB\u3092\u524A\u9664",buttonMatch:"1 \u4EF6\u306E\u4E00\u81F4",buttonMatches:"{#} \u4EF6\u306E\u4E00\u81F4",buttonNoMatches:"\u4E00\u81F4\u306A\u3057",enterName:"\u3053\u306E\u30EB\u30FC\u30EB\u306B\u540D\u524D\u3092\u4ED8\u3051\u307E\u3059",enterValue:"\u5024\u3092\u5165\u529B\u3057\u307E\u3059",enterRegex:"\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B\u3057\u307E\u3059",enterHexCode:"#16 \u9032\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u307E\u3059",enterNumber:"\u6570\u5024\u3092\u5165\u529B\u3057\u307E\u3059",matchConditions:{name:"\u4E00\u81F4\u6761\u4EF6",desc:"\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u6761\u4EF6\u306E\u6570\u3092\u9078\u629E\u3057\u307E\u3059\u3002",all:"\u3059\u3079\u3066",any:"\u4EFB\u610F",none:"\u306A\u3057"},source:{icon:"\u30A2\u30A4\u30B3\u30F3",color:"\u8272",name:"\u540D\u524D",filename:"\u30D5\u30A1\u30A4\u30EB\u540D",extension:"\u62E1\u5F35\u5B50",tree:"\u30D5\u30A9\u30EB\u30C0\u30C4\u30EA\u30FC",path:"\u30DC\u30FC\u30EB\u30C8\u5185\u306E\u30D1\u30B9",headings:"\u898B\u51FA\u3057",links:"\u30EA\u30F3\u30AF",tags:"\u30BF\u30B0",properties:"\u30D7\u30ED\u30D1\u30C6\u30A3\u2026",created:"\u4F5C\u6210\u65E5\u6642",modified:"\u5909\u66F4\u65E5\u6642",clock:"\u30B7\u30B9\u30C6\u30E0\u30AF\u30ED\u30C3\u30AF"},operator:{is:"\u3067\u3059","!is":"\u3067\u306F\u306A\u3044",contains:"\u542B\u3080",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",matches:"\u6B63\u898F\u8868\u73FE\u4E00\u81F4","!contains":"\u542B\u307E\u306A\u3044","!startsWith":"\u3067\u59CB\u307E\u3089\u306A\u3044","!endsWith":"\u3067\u7D42\u308F\u3089\u306A\u3044","!matches":"\u6B63\u898F\u8868\u73FE\u4E00\u81F4\u3057\u306A\u3044",includes:"\u9805\u76EE\u3092\u542B\u3080","!includes":"\u9805\u76EE\u3092\u542B\u307E\u306A\u3044",allAre:"\u3059\u3079\u3066\u306F",allContain:"\u3059\u3079\u3066\u542B\u3080",allStartWith:"\u3059\u3079\u3066\u3067\u59CB\u307E\u308B",allEndWith:"\u3059\u3079\u3066\u3067\u7D42\u308F\u308B",allMatch:"\u3059\u3079\u3066\u6B63\u898F\u8868\u73FE\u4E00\u81F4",anyContain:"\u4EFB\u610F\u306E\u3082\u306E\u304C\u542B\u3080",anyStartWith:"\u4EFB\u610F\u306E\u3082\u306E\u3067\u59CB\u307E\u308B",anyEndWith:"\u4EFB\u610F\u306E\u3082\u306E\u3067\u7D42\u308F\u308B",anyMatch:"\u4EFB\u610F\u306E\u6B63\u898F\u8868\u73FE\u4E00\u81F4",noneContain:"\u306A\u3057\u542B\u307E\u306A\u3044",noneStartWith:"\u306A\u3057\u3067\u59CB\u307E\u3089\u306A\u3044",noneEndWith:"\u306A\u3057\u3067\u7D42\u308F\u3089\u306A\u3044",noneMatch:"\u306A\u3057\u6B63\u898F\u8868\u73FE\u4E00\u81F4\u3057\u306A\u3044",countIs:"\u30AB\u30A6\u30F3\u30C8\u306F","!countIs":"\u30AB\u30A6\u30F3\u30C8\u306F\u306A\u3044",countIsLess:"\u30AB\u30A6\u30F3\u30C8\u306F\u672A\u6E80",countIsMore:"\u30AB\u30A6\u30F3\u30C8\u306F\u3088\u308A\u591A\u3044",isTrue:"\u771F","!isTrue":"\u771F\u3067\u306F\u306A\u3044",isFalse:"\u507D","!isFalse":"\u507D\u3067\u306F\u306A\u3044",equals:"\u7B49\u3057\u3044","!equals":"\u7B49\u3057\u304F\u306A\u3044",isLess:"\u3088\u308A\u5C0F\u3055\u3044",isMore:"\u3088\u308A\u5927\u304D\u3044",isDivisible:"\u5272\u308A\u5207\u308C\u308B","!isLess":"\u3088\u308A\u5C0F\u3055\u304F\u306A\u3044","!isMore":"\u3088\u308A\u5927\u304D\u304F\u306A\u3044","!isDivisible":"\u5272\u308A\u5207\u308C\u306A\u3044",isBefore:"\u524D\u3067\u3059",isAfter:"\u5F8C\u3067\u3059",isNow:"\u4ECA\u3067\u3059","!isNow":"\u4ECA\u3067\u306F\u3042\u308A\u307E\u305B\u3093",isBeforeNow:"\u4ECA\u3088\u308A\u524D\u3067\u3059",isAfterNow:"\u4ECA\u3088\u308A\u5F8C\u3067\u3059",timeIs:"\u6642\u523B\u306F","!timeIs":"\u6642\u523B\u3067\u306F\u306A\u3044",timeIsBefore:"\u6642\u523B\u306F\u524D\u3067\u3059",timeIsAfter:"\u6642\u523B\u306F\u5F8C\u3067\u3059",timeIsNow:"\u6642\u523B\u306F\u73FE\u5728\u3067\u3059","!timeIsNow":"\u6642\u523B\u3067\u306F\u3042\u308A\u307E\u305B\u3093",timeIsBeforeNow:"\u6642\u523B\u306F\u73FE\u5728\u3088\u308A\u524D\u3067\u3059",timeIsAfterNow:"\u6642\u523B\u306F\u73FE\u5728\u3088\u308A\u5F8C\u3067\u3059",dateIs:"\u65E5\u4ED8\u306F","!dateIs":"\u65E5\u4ED8\u3067\u306F\u306A\u3044",dateIsBefore:"\u65E5\u4ED8\u306F\u524D\u3067\u3059",dateIsAfter:"\u65E5\u4ED8\u306F\u5F8C\u3067\u3059",isToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3067\u3059","!isToday":"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3067\u306F\u3042\u308A\u307E\u305B\u3093",isBeforeToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3088\u308A\u524D\u3067\u3059",isAfterToday:"\u65E5\u4ED8\u306F\u4ECA\u65E5\u3088\u308A\u5F8C\u3067\u3059",isLessDaysAgo:"X \u65E5\u672A\u6E80",isLessDaysAway:"X \u65E5\u4EE5\u5185",isMoreDaysAgo:"X \u65E5\u8D85\u904E",isMoreDaysAway:"X \u65E5\u4EE5\u4E0A",weekdayIs:"\u66DC\u65E5\u306F","!weekdayIs":"\u66DC\u65E5\u306F\u3067\u306F\u306A\u3044",weekdayIsBefore:"\u66DC\u65E5\u306F\u524D\u3067\u3059",weekdayIsAfter:"\u66DC\u65E5\u306F\u5F8C\u3067\u3059",monthdayIs:"\u6708\u306E\u65E5\u306F","!monthdayIs":"\u6708\u306E\u65E5\u306F\u3067\u306F\u306A\u3044",monthdayIsBefore:"\u6708\u306E\u65E5\u306F\u524D\u3067\u3059",monthdayIsAfter:"\u6708\u306E\u65E5\u306F\u5F8C\u3067\u3059",monthIs:"\u6708\u306F","!monthIs":"\u6708\u306F\u3067\u306F\u306A\u3044",monthIsBefore:"\u6708\u306F\u524D\u3067\u3059",monthIsAfter:"\u6708\u306F\u5F8C\u3067\u3059",yearIs:"\u5E74\u306F","!yearIs":"\u5E74\u306F\u3067\u306F\u306A\u3044",yearIsBefore:"\u5E74\u306F\u524D\u3067\u3059",yearIsAfter:"\u5E74\u306F\u5F8C\u3067\u3059",iconIs:"ID \u3067\u3059","!iconIs":"ID \u3067\u306F\u3042\u308A\u307E\u305B\u3093",nameIs:"\u540D\u524D\u3067\u3042\u308B","!nameIs":"\u540D\u524D\u3067\u306F\u306A\u3044",nameContains:"\u540D\u524D\u3092\u542B\u3080",nameStartsWith:"\u540D\u524D\u3067\u59CB\u307E\u308B",nameEndsWith:"\u540D\u524D\u3067\u7D42\u308F\u308B",nameMatches:"\u540D\u524D\u4E00\u81F4","!nameContains":"\u540D\u524D\u3092\u542B\u307E\u306A\u3044","!nameStartsWith":"\u540D\u524D\u3067\u59CB\u307E\u3089\u306A\u3044","!nameEndsWith":"\u540D\u524D\u3067\u7D42\u308F\u3089\u306A\u3044","!nameMatches":"\u540D\u524D\u4E00\u81F4\u3057\u306A\u3044",colorIs:"\u3067\u3059","!colorIs":"\u3067\u306F\u3042\u308A\u307E\u305B\u3093",hexIs:"16\u9032\u30B3\u30FC\u30C9\u306F","!hexIs":"16\u9032\u30B3\u30FC\u30C9\u3067\u306F\u306A\u3044",hasValue:"\u5024\u304C\u3042\u308B","!hasValue":"\u5024\u304C\u306A\u3044",hasProperty:"\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u3042\u308B","!hasProperty":"\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u306A\u3044"},weekday:{"1":"\u6708\u66DC\u65E5","2":"\u706B\u66DC\u65E5","3":"\u6C34\u66DC\u65E5","4":"\u6728\u66DC\u65E5","5":"\u91D1\u66DC\u65E5","6":"\u571F\u66DC\u65E5","7":"\u65E5\u66DC\u65E5"},month:{"1":"1\u6708","2":"2\u6708","3":"3\u6708","4":"4\u6708","5":"5\u6708","6":"6\u6708","7":"7\u6708","8":"8\u6708","9":"9\u6708","10":"10\u6708","11":"11\u6708","12":"12\u6708"}},ruleChecker:{fileMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB 1 \u4EF6",folderMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A9\u30EB\u30C0 1 \u4EF6",filesMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB {#} \u4EF6",foldersMatch:"\u4E00\u81F4\u3059\u308B\u30D5\u30A9\u30EB\u30C0 {#} \u4EF6",highlight:"\u30CF\u30A4\u30E9\u30A4\u30C8",headingMatches:"\u4E00\u81F4"},commands:{openRulebook:"\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u3092\u958B\u304F",toggleBiggerIcons:"\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleClickableIcons:{desktop:"\u30AF\u30EA\u30C3\u30AF\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",mobile:"\u30BF\u30C3\u30D7\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B"},toggleAllFileIcons:"\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleAllFolderIcons:"\u3059\u3079\u3066\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleMinimalFolderIcons:"\u6700\u5C0F\u9650\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleMarkdownTabIcons:"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30BF\u30D6\u30A2\u30A4\u30B3\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B",toggleMenuActions:"\u30E1\u30CB\u30E5\u30FC\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u5207\u308A\u66FF\u3048",toggleQuickSwitcherIcons:"\u30AF\u30A4\u30C3\u30AF\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u30A2\u30A4\u30B3\u30F3\u306E\u5207\u308A\u66FF\u3048",toggleBiggerSearchResults:"\u691C\u7D22\u7D50\u679C\u3092\u5927\u304D\u304F\u5207\u308A\u66FF\u3048\u307E\u3059",changeIconCurrentFile:"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4\u3059\u308B"},settings:{values:{on:"\u30AA\u30F3",off:"\u30AA\u30D5",desktop:"\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u306E\u307F",mobile:"\u30E2\u30D0\u30A4\u30EB\u306E\u307F",list:"\u8272\u306E\u30EA\u30B9\u30C8",rgb:"RGB \u30D4\u30C3\u30AB\u30FC"},rulebook:{name:"\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF",desc:"\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u81EA\u52D5\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002",manage:"\u7BA1\u7406"},headingSidebarAndTabIcons:"\u30B5\u30A4\u30C9\u30D0\u30FC\u3068\u30BF\u30D6\u306E\u30A2\u30A4\u30B3\u30F3",biggerIcons:{name:"\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3",desc:"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E UI \u3088\u308A\u3082\u5927\u304D\u306A\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},clickableIcons:{nameDesktop:"\u30AF\u30EA\u30C3\u30AF\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3",nameMobile:"\u30BF\u30C3\u30D7\u53EF\u80FD\u306A\u30A2\u30A4\u30B3\u30F3",descDesktop:"\u30A2\u30A4\u30B3\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30A2\u30A4\u30B3\u30F3\u30D4\u30C3\u30AB\u30FC\u304C\u958B\u304D\u307E\u3059\u3002",descMobile:"\u30A2\u30A4\u30B3\u30F3\u3092\u30BF\u30C3\u30D7\u3059\u308B\u3068\u30A2\u30A4\u30B3\u30F3\u30D4\u30C3\u30AB\u30FC\u304C\u958B\u304D\u307E\u3059\u3002"},showAllFileIcons:{name:"\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306E\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},showAllFolderIcons:{name:"\u3059\u3079\u3066\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306E\u306A\u3044\u30D5\u30A9\u30EB\u30C0\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},minimalFolderIcons:{name:"\u6700\u5C0F\u9650\u306E\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3",desc:"\u30D5\u30A9\u30EB\u30C0\u306E\u77E2\u5370\u3092\u30D5\u30A9\u30EB\u30C0\u30A2\u30A4\u30B3\u30F3\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002"},showMarkdownTabIcons:{name:"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30BF\u30D6\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A",desc:"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30D6\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},headingMenusAndDialogs:"\u30E1\u30CB\u30E5\u30FC\u3068\u30C0\u30A4\u30A2\u30ED\u30B0",showMenuActions:{name:"\u30E1\u30CB\u30E5\u30FC\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8868\u793A",desc:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30E1\u30CB\u30E5\u30FC\u306B\u30A2\u30A4\u30B3\u30F3\u95A2\u9023\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},showQuickSwitcherIcons:{name:"\u30AF\u30A4\u30C3\u30AF\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A",desc:"\u30AF\u30A4\u30C3\u30AF\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u306E\u691C\u7D22\u7D50\u679C\u306B\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},headingIconPicker:"\u30A2\u30A4\u30B3\u30F3 \u30D4\u30C3\u30AB\u30FC",showItemName:{name:"\u30A2\u30A4\u30C6\u30E0\u540D\u3092\u8868\u793A\u3057\u307E\u3059",desc:"\u7DE8\u96C6\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u540D\u524D\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},biggerSearchResults:{name:"\u691C\u7D22\u7D50\u679C\u3092\u5927\u304D\u304F\u3059\u308B",desc:"\u691C\u7D22\u7D50\u679C\u306B\u5927\u304D\u3044\u30A2\u30A4\u30B3\u30F3\u3092\u8868\u793A\u3057\u307E\u3059\u3002"},maxSearchResults:{name:"\u691C\u7D22\u7D50\u679C\u306E\u6700\u5927\u6570",desc:"\u4E00\u5EA6\u306B\u8868\u793A\u3059\u308B\u30A2\u30A4\u30B3\u30F3\u306E\u6570\u3092\u9078\u629E\u3057\u307E\u3059\u3002"},colorPicker1:{name:"\u30E1\u30A4\u30F3 \u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC",descDesktop:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002",descMobile:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30BF\u30C3\u30C1\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002"},colorPicker2:{name:"2 \u756A\u76EE\u306E\u30AB\u30E9\u30FC \u30D4\u30C3\u30AB\u30FC",descDesktop:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u30BB\u30AB\u30F3\u30C0\u30EA \u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002",descMobile:"\u30AB\u30E9\u30FC \u30D0\u30D6\u30EB\u3092\u9577\u62BC\u3057\u3059\u308B\u3068\u8868\u793A\u3055\u308C\u307E\u3059\u3002"},headingAdvanced:"\u8A73\u7D30",uncolorHover:{name:"\u7121\u8272\u306E\u30DB\u30D0\u30FC",desc:"\u30A2\u30A4\u30C6\u30E0\u3092\u30DB\u30D0\u30FC\u3057\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorDrag:{name:"\u7121\u8272\u306E\u30C9\u30E9\u30C3\u30B0",desc:"\u30A2\u30A4\u30C6\u30E0\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorSelect:{name:"\u7121\u8272\u306E\u9078\u629E",desc:"\u30A2\u30A4\u30C6\u30E0\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u9593\u306F\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},uncolorQuick:{name:"\u7121\u8272\u306E\u30EA\u30DC\u30F3 \u30DC\u30BF\u30F3",desc:"\u30E2\u30D0\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF \u30A2\u30AF\u30BB\u30B9 \u30EA\u30DC\u30F3 \u30DC\u30BF\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u306E\u8272\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\u3002"},rememberDeletedItems:{name:"\u524A\u9664\u3057\u305F\u30A2\u30A4\u30C6\u30E0\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u8A18\u61B6\u3059\u308B",desc:"\u30AB\u30B9\u30BF\u30E0\u30A2\u30A4\u30B3\u30F3\u306F\u3001\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u518D\u3073\u5B58\u5728\u3059\u308B\u3068\u304D\u306B\u518D\u8868\u793A\u3055\u308C\u307E\u3059\u3002"}}}});var Ne=N((Ki,vt)=>{vt.exports={appItems:{help:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443",settings:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438",pin:"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u0432\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0435\u043D\u0438\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",sidebarLeft:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C/\u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043B\u0435\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",sidebarRight:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C/\u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u0440\u0430\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",minimize:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",maximize:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C",unmaximize:"\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043E\u043A\u043D\u043E"},menu:{changeIcon:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A...",changeIcons:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432...",removeIcon:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",removeIcons:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432",resetColor:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0446\u0432\u0435\u0442",resetColors:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C {#} \u0446\u0432\u0435\u0442\u043E\u0432",editRule:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E..."},iconPicker:{changeIcon:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",changeIcons:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432",changeEmoji:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u044D\u043C\u043E\u0434\u0437\u0438",changeEmojis:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u044D\u043C\u043E\u0434\u0437\u0438",changeMix:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A / \u044D\u043C\u043E\u0434\u0437\u0438",changeMixes:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {#} \u0437\u043D\u0430\u0447\u043A\u043E\u0432 / \u044D\u043C\u043E\u0434\u0437\u0438",overrulePrefix:"\u0412\u0430\u0448\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E ",overruleSuffix:" \u043E\u0442\u043C\u0435\u043D\u044F\u0435\u0442 \u044D\u0442\u043E\u0442 \u0437\u043D\u0430\u0447\u043E\u043A.",overrules:"\u0412\u0430\u0448 \u0441\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B \u043E\u0442\u043C\u0435\u043D\u044F\u0435\u0442 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437 \u044D\u0442\u0438\u0445 \u0437\u043D\u0430\u0447\u043A\u043E\u0432.",search:"\u041F\u043E\u0438\u0441\u043A",searchIcons:"\u041F\u043E\u0438\u0441\u043A \u0437\u043D\u0430\u0447\u043A\u043E\u0432...",searchEmojis:"\u041F\u043E\u0438\u0441\u043A \u044D\u043C\u043E\u0434\u0437\u0438...",searchMix:"\u041F\u043E\u0438\u0441\u043A \u0437\u043D\u0430\u0447\u043A\u043E\u0432 / \u044D\u043C\u043E\u0434\u0437\u0438...",changeColor:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0446\u0432\u0435\u0442",resetColor:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0446\u0432\u0435\u0442",toggleIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438",toggleEmojis:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u044D\u043C\u043E\u0434\u0437\u0438",icons:"\u0417\u043D\u0430\u0447\u043A\u0438",emojis:"\u042D\u043C\u043E\u0434\u0437\u0438",mixed:"\u0421\u043C\u0435\u0448\u0430\u043D\u043D\u044B\u0439",cancel:"\u041E\u0442\u043C\u0435\u043D\u0430",save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",colors:{red:"\u041A\u0440\u0430\u0441\u043D\u044B\u0439",orange:"\u041E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439",yellow:"\u0416\u0435\u043B\u0442\u044B\u0439",green:"\u0417\u0435\u043B\u0435\u043D\u044B\u0439",cyan:"\u0413\u043E\u043B\u0443\u0431\u043E\u0439",blue:"\u0421\u0438\u043D\u0438\u0439",purple:"\u0424\u0438\u043E\u043B\u0435\u0442\u043E\u0432\u044B\u0439",pink:"\u0420\u043E\u0437\u043E\u0432\u044B\u0439",gray:"\u0421\u0435\u0440\u044B\u0439"}},categories:{item:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442",items:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",appItem:"\u041A\u043D\u043E\u043F\u043A\u0430",appItems:"\u041A\u043D\u043E\u043F\u043A\u0438",tab:"\u0412\u043A\u043B\u0430\u0434\u043A\u0430",tabs:"\u0412\u043A\u043B\u0430\u0434\u043A\u0438",file:"\u0424\u0430\u0439\u043B",files:"\u0424\u0430\u0439\u043B\u044B",folder:"\u041F\u0430\u043F\u043A\u0430",folders:"\u041F\u0430\u043F\u043A\u0438",group:"\u0413\u0440\u0443\u043F\u043F\u0430",groups:"\u0413\u0440\u0443\u043F\u043F\u044B",search:"\u0417\u0430\u043F\u0440\u043E\u0441",searches:"\u0417\u0430\u043F\u0440\u043E\u0441\u044B",graph:"\u0413\u0440\u0430\u0444",graphs:"\u0413\u0440\u0430\u0444\u043E\u0432",url:"URL",urls:"URL",tag:"\u0422\u0435\u0433",tags:"\u0422\u0435\u0433\u0438",property:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E",properties:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432",ribbonItem:"\u041B\u0435\u043D\u0442\u043E\u0447\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430",ribbonItems:"\u041B\u0435\u043D\u0442\u043E\u0447\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u044B",rule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430"},rulePicker:{selectPage:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443",fileRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0430\u0439\u043B\u043E\u0432",folderRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u043F\u0430\u043F\u043E\u043A",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430",addRule:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",editRule:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",removeRule:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",untitledRule:"\u0411\u0435\u0437\u044B\u043C\u044F\u043D\u043D\u043E\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",drag:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044C"},ruleEditor:{fileRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u0444\u0430\u0439\u043B\u0430",folderRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u043F\u0430\u043F\u043A\u0438",conditions:"\u0423\u0441\u043B\u043E\u0432\u0438\u044F",addCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",resetCondition:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",removeCondition:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",removeRule:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",buttonMatch:"1 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",buttonMatches:"{#} \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",buttonNoMatches:"\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",enterName:"\u0414\u0430\u0439\u0442\u0435 \u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0430\u0432\u0438\u043B\u0443 \u0438\u043C\u044F",enterValue:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",enterRegex:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u0435 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435",enterHexCode:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 #hexcode",enterNumber:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E",matchConditions:{name:"\u0423\u0441\u043B\u043E\u0432\u0438\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F",desc:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u0439 \u0434\u043E\u043B\u0436\u043D\u043E \u0441\u043E\u0432\u043F\u0430\u0441\u0442\u044C.",all:"\u0412\u0441\u0435",any:"\u041B\u044E\u0431\u043E\u0439",none:"\u041D\u0435\u0442"},source:{icon:"\u0417\u043D\u0430\u0447\u043E\u043A",color:"\u0426\u0432\u0435\u0442",name:"\u0418\u043C\u044F",filename:"\u0418\u043C\u044F \u0444\u0430\u0439\u043B\u0430",extension:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435",tree:"\u0414\u0435\u0440\u0435\u0432\u043E \u043F\u0430\u043F\u043E\u043A",path:"\u041F\u0443\u0442\u044C \u0432 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435",headings:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438",links:"\u0421\u0441\u044B\u043B\u043A\u0438",tags:"\u0422\u0435\u0433\u0438",properties:"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430...",created:"\u0414\u0430\u0442\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F",modified:"\u0414\u0430\u0442\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",clock:"\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0435 \u0447\u0430\u0441\u044B"},operator:{is:"\u0435\u0441\u0442\u044C","!is":"\u043D\u0435 \u0435\u0441\u0442\u044C",contains:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",startsWith:"\u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",endsWith:"\u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",matches:"\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex","!contains":"\u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","!startsWith":"\u043D\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441","!endsWith":"\u043D\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430","!matches":"\u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",includes:"\u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","!includes":"\u043D\u0435 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442",allAre:"\u0432\u0441\u0435 \u0435\u0441\u0442\u044C",allContain:"\u0432\u0441\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442",allStartWith:"\u0432\u0441\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u044E\u0442\u0441\u044F \u0441",allEndWith:"\u0432\u0441\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0430",allMatch:"\u0432\u0441\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0442 regex",anyContain:"\u043B\u044E\u0431\u043E\u0439 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",anyStartWith:"\u043B\u044E\u0431\u043E\u0439 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",anyEndWith:"\u043B\u044E\u0431\u043E\u0439 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",anyMatch:"\u043B\u044E\u0431\u043E\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",noneContain:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",noneStartWith:"\u043D\u0438 \u043E\u0434\u043D\u043E \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",noneEndWith:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",noneMatch:"\u043D\u0438 \u043E\u0434\u043D\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",countIs:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0440\u0430\u0432\u043D\u043E","!countIs":"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u043E",countIsLess:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043C\u0435\u043D\u044C\u0448\u0435",countIsMore:"\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0431\u043E\u043B\u044C\u0448\u0435",isTrue:"\u0438\u0441\u0442\u0438\u043D\u0430","!isTrue":"\u043D\u0435 \u0438\u0441\u0442\u0438\u043D\u0430",isFalse:"\u043B\u043E\u0436\u044C","!isFalse":"\u043D\u0435 \u043B\u043E\u0436\u044C",equals:"\u0440\u0430\u0432\u043D\u043E","!equals":"\u043D\u0435 \u0440\u0430\u0432\u043D\u043E",isLess:"\u043C\u0435\u043D\u044C\u0448\u0435",isMore:"\u0431\u043E\u043B\u044C\u0448\u0435",isDivisible:"\u0434\u0435\u043B\u0438\u0442\u0441\u044F \u043D\u0430","!isLess":"\u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435","!isMore":"\u043D\u0435 \u0431\u043E\u043B\u044C\u0448\u0435","!isDivisible":"\u043D\u0435 \u0434\u0435\u043B\u0438\u0442\u0441\u044F \u043D\u0430",isBefore:"\u0434\u043E",isAfter:"\u043F\u043E\u0441\u043B\u0435",isNow:"\u0441\u0435\u0439\u0447\u0430\u0441","!isNow":"\u043D\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",isBeforeNow:"\u0434\u043E \u0441\u0435\u0439\u0447\u0430\u0441",isAfterNow:"\u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",timeIs:"\u0432\u0440\u0435\u043C\u044F","!timeIs":"\u0432\u0440\u0435\u043C\u044F \u043D\u0435",timeIsBefore:"\u0432\u0440\u0435\u043C\u044F \u0434\u043E",timeIsAfter:"\u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435",timeIsNow:"\u0432\u0440\u0435\u043C\u044F \u0441\u0435\u0439\u0447\u0430\u0441","!timeIsNow":"\u0432\u0440\u0435\u043C\u044F \u043D\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",timeIsBeforeNow:"\u0432\u0440\u0435\u043C\u044F \u0434\u043E \u0441\u0435\u0439\u0447\u0430\u0441",timeIsAfterNow:"\u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0439\u0447\u0430\u0441",dateIs:"\u0434\u0430\u0442\u0430","!dateIs":"\u0434\u0430\u0442\u0430 \u043D\u0435",dateIsBefore:"\u0434\u0430\u0442\u0430 \u0434\u043E",dateIsAfter:"\u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u043B\u0435",isToday:"\u0434\u0430\u0442\u0430 \u0441\u0435\u0433\u043E\u0434\u043D\u044F","!isToday":"\u0434\u0430\u0442\u0430 \u043D\u0435 \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isBeforeToday:"\u0434\u0430\u0442\u0430 \u0434\u043E \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isAfterToday:"\u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u043B\u0435 \u0441\u0435\u0433\u043E\u0434\u043D\u044F",isLessDaysAgo:"\u043C\u0435\u043D\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isLessDaysAway:"\u043C\u0435\u043D\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isMoreDaysAgo:"\u0431\u043E\u043B\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",isMoreDaysAway:"\u0431\u043E\u043B\u0435\u0435 X \u0434\u043D\u0435\u0439 \u043D\u0430\u0437\u0430\u0434",weekdayIs:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438","!weekdayIs":"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u043D\u0435",weekdayIsBefore:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u0434\u043E",weekdayIsAfter:"\u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438 \u043F\u043E\u0441\u043B\u0435",monthdayIs:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430","!monthdayIs":"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u043D\u0435",monthdayIsBefore:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u0434\u043E",monthdayIsAfter:"\u0434\u0435\u043D\u044C \u043C\u0435\u0441\u044F\u0446\u0430 \u043F\u043E\u0441\u043B\u0435",monthIs:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C","!monthIs":"\u043C\u0435\u0441\u044F\u0446 \u043D\u0435\u0442",monthIsBefore:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C \u0434\u043E",monthIsAfter:"\u043C\u0435\u0441\u044F\u0446 \u0435\u0441\u0442\u044C \u043F\u043E\u0441\u043B\u0435",yearIs:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C","!yearIs":"\u0433\u043E\u0434 \u043D\u0435\u0442",yearIsBefore:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C \u0434\u043E",yearIsAfter:"\u0433\u043E\u0434 \u0435\u0441\u0442\u044C \u043F\u043E\u0441\u043B\u0435",iconIs:"ID \u0435\u0441\u0442\u044C","!iconIs":"ID \u043D\u0435\u0442",nameIs:"\u0438\u043C\u044F \u0435\u0441\u0442\u044C","!nameIs":"\u0438\u043C\u044F \u043D\u0435\u0442",nameContains:"\u0438\u043C\u044F \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",nameStartsWith:"\u0438\u043C\u044F \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",nameEndsWith:"\u0438\u043C\u044F \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",nameMatches:"\u0438\u043C\u044F \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex","!nameContains":"\u0438\u043C\u044F \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","!nameStartsWith":"\u0438\u043C\u044F \u043D\u0435 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441","!nameEndsWith":"\u0438\u043C\u044F \u043D\u0435 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430","!nameMatches":"\u0438\u043C\u044F \u043D\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 regex",colorIs:"\u0435\u0441\u0442\u044C","!colorIs":"\u043D\u0435\u0442",hexIs:"hex \u0435\u0441\u0442\u044C","!hexIs":"hex \u043D\u0435\u0442",hasValue:"\u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435","!hasValue":"\u043D\u0435 \u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",hasProperty:"\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442","!hasProperty":"\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442"},weekday:{"1":"\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","2":"\u0412\u0442\u043E\u0440\u043D\u0438\u043A","3":"\u0421\u0440\u0435\u0434\u0430","4":"\u0427\u0435\u0442\u0432\u0435\u0440\u0433","5":"\u041F\u044F\u0442\u043D\u0438\u0446\u0430","6":"\u0421\u0443\u0431\u0431\u043E\u0442\u0430","7":"\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435"},month:{"1":"\u042F\u043D\u0432\u0430\u0440\u044C","2":"\u0424\u0435\u0432\u0440\u0430\u043B\u044C","3":"\u041C\u0430\u0440\u0442","4":"\u0410\u043F\u0440\u0435\u043B\u044C","5":"\u041C\u0430\u0439","6":"\u0418\u044E\u043D\u044C","7":"\u0418\u044E\u043B\u044C","8":"\u0410\u0432\u0433\u0443\u0441\u0442","9":"\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","10":"\u041E\u043A\u0442\u044F\u0431\u0440\u044C","11":"\u041D\u043E\u044F\u0431\u0440\u044C","12":"\u0414\u0435\u043A\u0430\u0431\u0440\u044C"}},ruleChecker:{fileMatch:"1 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 \u0444\u0430\u0439\u043B",folderMatch:"1 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F \u043F\u0430\u043F\u043A\u0430",filesMatch:"{#} \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432",foldersMatch:"{#} \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0445 \u043F\u0430\u043F\u043E\u043A",highlight:"\u0412\u044B\u0434\u0435\u043B\u0438\u0442\u044C",headingMatches:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u044F"},commands:{openRulebook:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",toggleBiggerIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",toggleClickableIcons:{desktop:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043B\u0438\u043A\u0430\u0431\u0435\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",mobile:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0435\u043D\u0441\u043E\u0440\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438"},toggleAllFileIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432",toggleAllFolderIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",toggleMinimalFolderIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",toggleMarkdownTabIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A Markdown",toggleMenuActions:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043C\u0435\u043D\u044E",toggleQuickSwitcherIcons:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u043F\u0435\u0440\u0435\u0445\u043E\u0434",toggleBiggerSearchResults:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",changeIconCurrentFile:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430"},settings:{values:{on:"\u0412\u043A\u043B",off:"\u0412\u044B\u043A\u043B",desktop:"\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043D\u0430\u0441\u0442\u043E\u043B\u044C\u043D\u044B\u0445 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u0432",mobile:"\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432",list:"\u0421\u043F\u0438\u0441\u043E\u043A \u0446\u0432\u0435\u0442\u043E\u0432",rgb:"\u0412\u044B\u0431\u043E\u0440 RGB"},rulebook:{name:"\u0421\u0432\u043E\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",desc:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u043E\u0432 \u0444\u0430\u0439\u043B\u043E\u0432 \u0438 \u043F\u0430\u043F\u043E\u043A.",manage:"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C"},headingSidebarAndTabIcons:"\u0417\u043D\u0430\u0447\u043A\u0438 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A",biggerIcons:{name:"\u0411\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0431\u043E\u043B\u044C\u0448\u0435\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430, \u0447\u0435\u043C \u0432 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u043C \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E."},clickableIcons:{nameDesktop:"\u041A\u043B\u0438\u043A\u0430\u0435\u043C\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",nameMobile:"\u0421\u0435\u043D\u0441\u043E\u0440\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438",descDesktop:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0437\u043D\u0430\u0447\u043E\u043A, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432.",descMobile:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0437\u043D\u0430\u0447\u043E\u043A, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E \u0432\u044B\u0431\u043E\u0440\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432."},showAllFileIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432, \u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},showAllFolderIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A, \u0443 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},minimalFolderIcons:{name:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A",desc:"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u0435\u043B\u043A\u0438 \u043F\u0430\u043F\u043E\u043A \u043D\u0430 \u0432\u0430\u0448\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u0430\u043F\u043E\u043A."},showMarkdownTabIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A Markdown",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A \u0434\u043B\u044F \u0444\u0430\u0439\u043B\u043E\u0432 Markdown."},headingMenusAndDialogs:"\u041C\u0435\u043D\u044E \u0438 \u0434\u0438\u0430\u043B\u043E\u0433\u0438",showMenuActions:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043C\u0435\u043D\u044E",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F, \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441\u043E \u0437\u043D\u0430\u0447\u043A\u0430\u043C\u0438, \u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u044B\u0445 \u043C\u0435\u043D\u044E."},showQuickSwitcherIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430\u0445 \u043F\u043E\u0438\u0441\u043A\u0430 \u0431\u044B\u0441\u0442\u0440\u044B\u0445 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u0435\u0439."},headingIconPicker:"\u0412\u044B\u0431\u043E\u0440 \u0437\u043D\u0430\u0447\u043A\u043E\u0432",showItemName:{name:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043C\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043C\u044F \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},biggerSearchResults:{name:"\u0411\u043E\u043B\u044C\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",desc:"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430\u0445 \u043F\u043E\u0438\u0441\u043A\u0430."},maxSearchResults:{name:"\u041C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E\u0438\u0441\u043A\u0430",desc:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u0447\u043A\u043E\u0432 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E"},colorPicker1:{name:"\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430",descDesktop:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0443\u0437\u044B\u0440\u044C",descMobile:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043A\u0430\u0441\u0430\u043D\u0438\u0438 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0443\u0437\u044B\u0440\u044F"},colorPicker2:{name:"\u0412\u0442\u043E\u0440\u043E\u0439 \u0432\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430",descDesktop:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0443\u0437\u044B\u0440\u044C",descMobile:"\u041F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043D\u0438\u0438 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0443\u0437\u044B\u0440\u044F"},headingAdvanced:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E",uncolorHover:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u044B\u0439 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442."},uncolorDrag:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u043E\u0435 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},uncolorSelect:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u044B\u0439 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430."},uncolorQuick:{name:"\u0411\u0435\u0441\u0446\u0432\u0435\u0442\u043D\u0430\u044F \u043A\u043D\u043E\u043F\u043A\u0430 \u043B\u0435\u043D\u0442\u044B",desc:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0432\u0435\u0442 \u0437\u043D\u0430\u0447\u043A\u0430 \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 \u043B\u0435\u043D\u0442\u044B \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0430 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0435."},rememberDeletedItems:{name:"\u0417\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432",desc:"\u041B\u044E\u0431\u044B\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u043D\u0430\u0447\u043A\u0438 \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0441\u043D\u043E\u0432\u0430, \u043A\u043E\u0433\u0434\u0430 \u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043D\u043E\u0432\u0430 \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F."}}}});var Oe=N((Ui,Et)=>{Et.exports={appItems:{help:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0434\u043E\u0432\u0456\u0434\u043A\u0443",settings:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F",pin:"\u0417\u0430\u043A\u0440\u0456\u043F\u0438\u0442\u0438/\u0432\u0456\u0434\u043A\u0440\u0456\u043F\u0438\u0442\u0438",sidebarLeft:"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438/\u0440\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043B\u0456\u0432\u0443 \u0431\u0456\u0447\u043D\u0443 \u043F\u0430\u043D\u0435\u043B\u044C",sidebarRight:"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438/\u0440\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0440\u0430\u0432\u0443 \u0431\u0456\u0447\u043D\u0443 \u043F\u0430\u043D\u0435\u043B\u044C",minimize:"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438",maximize:"\u0420\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438",unmaximize:"\u0412\u0456\u0434\u043D\u043E\u0432\u0438\u0442\u0438",close:"\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0432\u0456\u043A\u043D\u043E"},menu:{changeIcon:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0437\u043D\u0430\u0447\u043E\u043A\u2026",changeIcons:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 {#} \u0437\u043D\u0430\u0447\u043A\u0456\u0432\u2026",removeIcon:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0437\u043D\u0430\u0447\u043E\u043A",removeIcons:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 {#} \u0437\u043D\u0430\u0447\u043A\u0456\u0432",resetColor:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440",resetColors:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 {#} \u043A\u043E\u043B\u044C\u043E\u0440\u0456\u0432",editRule:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E\u2026"},iconPicker:{changeIcon:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0437\u043D\u0430\u0447\u043E\u043A",changeIcons:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 {#} \u0437\u043D\u0430\u0447\u043A\u0456\u0432",changeEmoji:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0435\u043C\u043E\u0434\u0436\u0456",changeEmojis:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 {#} \u0435\u043C\u043E\u0434\u0436\u0456",changeMix:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0437\u043D\u0430\u0447\u043E\u043A/\u0435\u043C\u043E\u0434\u0436\u0456",changeMixes:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 {#} \u0437\u043D\u0430\u0447\u043A\u0456\u0432/\u0435\u043C\u043E\u0434\u0436\u0456",overrulePrefix:"\u0412\u0430\u0448\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E ",overruleSuffix:" \u0443\u0441\u043E\u0432\u0443\u0454 \u0446\u0435\u0439 \u0437\u043D\u0430\u0447\u043E\u043A.",overrules:"\u0412\u0430\u0448 \u0437\u0432\u0456\u0434 \u043F\u0440\u0430\u0432\u0438\u043B \u0443\u0441\u0443\u0432\u0430\u0454 \u0434\u0435\u044F\u043A\u0456 \u0437 \u0446\u0438\u0445 \u0437\u043D\u0430\u0447\u043A\u0456\u0432.",search:"\u041F\u043E\u0448\u0443\u043A",searchIcons:"\u041F\u043E\u0448\u0443\u043A \u0437\u043D\u0430\u0447\u043A\u0456\u0432\u2026",searchEmojis:"\u041F\u043E\u0448\u0443\u043A \u0435\u043C\u043E\u0434\u0436\u0456\u2026",searchMix:"\u041F\u043E\u0448\u0443\u043A \u0437\u043D\u0430\u0447\u043A\u0456\u0432/\u0435\u043C\u043E\u0434\u0436\u0456\u2026",changeColor:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u043A\u043E\u043B\u0456\u0440",resetColor:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440",toggleIcons:"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438",toggleEmojis:"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438 \u0435\u043C\u043E\u0434\u0437\u0456",icons:"\u0417\u043D\u0430\u0447\u043A\u0438",emojis:"\u0415\u043C\u043E\u0434\u0436\u0456",mixed:"\u0417\u043C\u0456\u0448\u0430\u043D\u0435",cancel:"\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",save:"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",colors:{red:"\u0427\u0435\u0440\u0432\u043E\u043D\u0438\u0439",orange:"\u041F\u043E\u043C\u0430\u0440\u0430\u043D\u0447\u0435\u0432\u0438\u0439",yellow:"\u0416\u043E\u0432\u0442\u0438\u0439",green:"\u0417\u0435\u043B\u0435\u043D\u0438\u0439",cyan:"\u0411\u0456\u0440\u044E\u0437\u043E\u0432\u0438\u0439",blue:"\u0421\u0438\u043D\u0456\u0439",purple:"\u0424\u0456\u043E\u043B\u0435\u0442\u043E\u0432\u0438\u0439",pink:"\u0420\u043E\u0436\u0435\u0432\u0438\u0439",gray:"\u0421\u0456\u0440\u0438\u0439"}},categories:{item:"\u0415\u043B\u0435\u043C\u0435\u043D\u0442",items:"\u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0438",appItem:"\u041A\u043D\u043E\u043F\u043A\u0430",appItems:"\u041A\u043D\u043E\u043F\u043A\u0438",tab:"\u0412\u043A\u043B\u0430\u0434\u043A\u0430",tabs:"\u0412\u043A\u043B\u0430\u0434\u043A\u0438",file:"\u0424\u0430\u0439\u043B",files:"\u0424\u0430\u0439\u043B\u0438",folder:"\u0422\u0435\u043A\u0430",folders:"\u0422\u0435\u043A\u0438",group:"\u0413\u0440\u0443\u043F\u0430",groups:"\u0413\u0440\u0443\u043F\u0438",search:"\u0417\u0430\u043F\u0438\u0442",searches:"\u0417\u0430\u043F\u0438\u0442\u0438",graph:"\u0413\u0440\u0430\u0444",graphs:"\u0413\u0440\u0430\u0444\u0438",url:"URL",urls:"URL-\u0430\u0434\u0440\u0435\u0441\u0438",tag:"\u041C\u0456\u0442\u043A\u0430",tags:"\u041C\u0456\u0442\u043A\u0438",property:"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C",properties:"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456",ribbonItem:"\u041A\u043E\u043C\u0430\u043D\u0434\u0430 \u0443 \u0441\u0442\u0440\u0456\u0447\u0446\u0456",ribbonItems:"\u041A\u043E\u043C\u0430\u043D\u0434\u0438 \u0443 \u0441\u0442\u0440\u0456\u0447\u0446\u0456",rule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430"},rulePicker:{selectPage:"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0443",fileRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0430\u0439\u043B\u0443",folderRules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0442\u0435\u043A\u0438",rules:"\u041F\u0440\u0430\u0432\u0438\u043B\u0430",addRule:"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",editRule:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",removeRule:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",untitledRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u0431\u0435\u0437 \u043D\u0430\u0437\u0432\u0438",drag:"\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u043F\u043E\u0440\u044F\u0434\u043E\u043A"},ruleEditor:{fileRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u0444\u0430\u0439\u043B\u0443",folderRule:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u0442\u0435\u043A\u0438",conditions:"\u0423\u043C\u043E\u0432\u0438",addCondition:"\u0414\u043E\u0434\u0430\u0442\u0438 \u0443\u043C\u043E\u0432\u0443",resetCondition:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0443\u043C\u043E\u0432\u0443",removeCondition:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0443\u043C\u043E\u0432\u0443",removeRule:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",buttonMatch:"1 \u0437\u0431\u0456\u0433",buttonMatches:"{#} \u0437\u0431\u0456\u0433\u0456\u0432",buttonNoMatches:"\u041D\u0435\u043C\u0430\u0454 \u0437\u0431\u0456\u0433\u0456\u0432",enterName:"\u0406\u043C\u0435\u043D\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u043E",enterValue:"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u044F",enterRegex:"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u0438\u0439 \u0432\u0438\u0440\u0430\u0437",enterHexCode:"\u0412\u0432\u0435\u0434\u0456\u0442\u044C #hex-\u043A\u043E\u0434",enterNumber:"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u0447\u0438\u0441\u043B\u043E",matchConditions:{name:"\u0412\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443\u043C\u043E\u0432",desc:"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u0441\u043A\u0456\u043B\u044C\u043A\u0438 \u0443\u043C\u043E\u0432 \u043C\u0430\u0454 \u0432\u0438\u043A\u043E\u043D\u0443\u0432\u0430\u0442\u0438\u0441\u044F.",all:"\u0423\u0441\u0456",any:"\u0425\u043E\u0447\u0430 \u0431 \u043E\u0434\u043D\u0430",none:"\u0416\u043E\u0434\u043D\u043E\u0457"},source:{icon:"\u0417\u043D\u0430\u0447\u043E\u043A",color:"\u041A\u043E\u043B\u0456\u0440",name:"\u0406\u043C'\u044F",filename:"\u0406\u043C'\u044F \u0444\u0430\u0439\u043B\u0443",extension:"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u043D\u044F",tree:"\u0414\u0435\u0440\u0435\u0432\u043E \u0442\u0435\u043A",path:"\u0428\u043B\u044F\u0445 \u0443 \u0441\u0445\u043E\u0432\u0438\u0449\u0456",headings:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438",links:"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",tags:"\u041C\u0456\u0442\u043A\u0438",properties:"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456\u2026",created:"\u0414\u0430\u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F",modified:"\u0414\u0430\u0442\u0430 \u0437\u043C\u0456\u043D\u0435\u043D\u043D\u044F",clock:"\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0438\u0439 \u0433\u043E\u0434\u0438\u043D\u043D\u0438\u043A"},operator:{is:"\u0454","!is":"\u043D\u0435 \u0454",contains:"\u043C\u0456\u0441\u0442\u0438\u0442\u044C",startsWith:"\u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437",endsWith:"\u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430",matches:"\u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443","!contains":"\u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","!startsWith":"\u043D\u0435 \u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437","!endsWith":"\u043D\u0435 \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430","!matches":"\u043D\u0435 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443",includes:"\u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0435\u043B\u0435\u043C\u0435\u043D\u0442","!includes":"\u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0435\u043B\u0435\u043C\u0435\u043D\u0442",allAre:"\u0443\u0441\u0456 \u0454",allContain:"\u0443\u0441\u0456 \u043C\u0456\u0441\u0442\u044F\u0442\u044C",allStartWith:"\u0443\u0441\u0456 \u043F\u043E\u0447\u0438\u043D\u0430\u044E\u0442\u044C\u0441\u044F \u0437",allEndWith:"\u0443\u0441\u0456 \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u044E\u0442\u044C\u0441\u044F \u043D\u0430",allMatch:"\u0443\u0441\u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443",anyContain:"\u0445\u043E\u0447\u0430 \u0431 \u043E\u0434\u0438\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u044C",anyStartWith:"\u0445\u043E\u0447\u0430 \u0431 \u043E\u0434\u0438\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437",anyEndWith:"\u0445\u043E\u0447\u0430 \u0431 \u043E\u0434\u0438\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430",anyMatch:"\u0445\u043E\u0447\u0430 \u0431 \u043E\u0434\u0438\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443",noneContain:"\u0436\u043E\u0434\u0435\u043D \u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C",noneStartWith:"\u0436\u043E\u0434\u0435\u043D \u043D\u0435 \u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437",noneEndWith:"\u0436\u043E\u0434\u0435\u043D \u043D\u0435 \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430",noneMatch:"\u0436\u043E\u0434\u0435\u043D \u043D\u0435 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443",countIs:"\u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!countIs":"\u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",countIsLess:"\u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u043C\u0435\u043D\u0448\u0430 \u0437\u0430",countIsMore:"\u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0431\u0456\u043B\u044C\u0448\u0430 \u0437\u0430",isTrue:"\u0454 \u0456\u0441\u0442\u0438\u043D\u043E\u044E","!isTrue":"\u043D\u0435 \u0454 \u0456\u0441\u0442\u0438\u043D\u043E\u044E",isFalse:"\u0454 \u0445\u0438\u0431\u043D\u0438\u043C","!isFalse":"\u043D\u0435 \u0454 \u0445\u0438\u0431\u043D\u0438\u043C",equals:"\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!equals":"\u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",isLess:"\u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436",isMore:"\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436",isDivisible:"\u0434\u0456\u043B\u0438\u0442\u044C\u0441\u044F \u043D\u0430","!isLess":"\u043D\u0435 \u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436","!isMore":"\u043D\u0435 \u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436","!isDivisible":"\u043D\u0435 \u0434\u0456\u043B\u0438\u0442\u044C\u0441\u044F \u043D\u0430",isBefore:"\u0434\u043E",isAfter:"\u043F\u0456\u0441\u043B\u044F",isNow:"\u0437\u0430\u0440\u0430\u0437","!isNow":"\u043D\u0435 \u0437\u0430\u0440\u0430\u0437",isBeforeNow:"\u0434\u043E\u043D\u0438\u043D\u0456",isAfterNow:"\u0432\u0456\u0434\u043D\u0438\u043D\u0456",timeIs:"\u0447\u0430\u0441 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!timeIs":"\u0447\u0430\u0441 \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",timeIsBefore:"\u0447\u0430\u0441 \u0434\u043E",timeIsAfter:"\u0447\u0430\u0441 \u043F\u0456\u0441\u043B\u044F",timeIsNow:"\u0447\u0430\u0441 \u0437\u0430\u0440\u0430\u0437","!timeIsNow":"\u0447\u0430\u0441 \u043D\u0435 \u0437\u0430\u0440\u0430\u0437",timeIsBeforeNow:"\u0447\u0430\u0441 \u0434\u043E\u043D\u0438\u043D\u0456",timeIsAfterNow:"\u0447\u0430\u0441 \u0432\u0456\u0434\u043D\u0438\u043D\u0456",dateIs:"\u0434\u0430\u0442\u0430 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!dateIs":"\u0434\u0430\u0442\u0430 \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",dateIsBefore:"\u0434\u0430\u0442\u0430 \u0434\u043E",dateIsAfter:"\u0434\u0430\u0442\u0430 \u043F\u0456\u0441\u043B\u044F",isToday:"\u0434\u0430\u0442\u0430 \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456","!isToday":"\u0434\u0430\u0442\u0430 \u043D\u0435 \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456",isBeforeToday:"\u0434\u0430\u0442\u0430 \u0434\u043E \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456",isAfterToday:"\u0434\u0430\u0442\u0430 \u043F\u0456\u0441\u043B\u044F \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456",isLessDaysAgo:"\u0434\u043E X \u0434\u043D\u0456\u0432 \u0442\u043E\u043C\u0443",isLessDaysAway:"\u0434\u043E X \u0434\u043D\u0456\u0432 \u0434\u043E",isMoreDaysAgo:"\u043F\u043E\u043D\u0430\u0434 X \u0434\u043D\u0456\u0432 \u0442\u043E\u043C\u0443",isMoreDaysAway:"\u043F\u043E\u043D\u0430\u0434 X \u0434\u043D\u0456\u0432 \u0434\u043E",weekdayIs:"\u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F \u0454","!weekdayIs":"\u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F \u043D\u0435 \u0454",weekdayIsBefore:"\u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F \u0434\u043E",weekdayIsAfter:"\u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F \u043F\u0456\u0441\u043B\u044F",monthdayIs:"\u0434\u0435\u043D\u044C \u043C\u0456\u0441\u044F\u0446\u044F \u0454","!monthdayIs":"\u0434\u0435\u043D\u044C \u043C\u0456\u0441\u044F\u0446\u044F \u043D\u0435 \u0454",monthdayIsBefore:"\u0434\u0435\u043D\u044C \u043C\u0456\u0441\u044F\u0446\u044F \u0434\u043E",monthdayIsAfter:"\u0434\u0435\u043D\u044C \u043C\u0456\u0441\u044F\u0446\u044F \u043F\u0456\u0441\u043B\u044F",monthIs:"\u043C\u0456\u0441\u044F\u0446\u044C \u0454","!monthIs":"\u043C\u0456\u0441\u044F\u0446\u044C \u043D\u0435 \u0454",monthIsBefore:"\u043C\u0456\u0441\u044F\u0446\u044C \u0434\u043E",monthIsAfter:"\u043C\u0456\u0441\u044F\u0446\u044C \u043F\u0456\u0441\u043B\u044F",yearIs:"\u0440\u0456\u043A \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!yearIs":"\u0440\u0456\u043A \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",yearIsBefore:"\u0440\u0456\u043A \u0434\u043E",yearIsAfter:"\u0440\u0456\u043A \u043F\u0456\u0441\u043B\u044F",iconIs:"ID \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!iconIs":"ID \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",nameIs:"\u0456\u043C'\u044F \u0454","!nameIs":"\u0456\u043C'\u044F \u043D\u0435 \u0454",nameContains:"\u0456\u043C'\u044F \u043C\u0456\u0441\u0442\u0438\u0442\u044C",nameStartsWith:"\u0456\u043C'\u044F \u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437",nameEndsWith:"\u0456\u043C'\u044F \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430",nameMatches:"\u0456\u043C'\u044F \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443","!nameContains":"\u0456\u043C'\u044F \u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","!nameStartsWith":"\u0456\u043C'\u044F \u043D\u0435 \u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437","!nameEndsWith":"\u0456\u043C'\u044F \u043D\u0435 \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430","!nameMatches":"\u0456\u043C'\u044F \u043D\u0435 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0454 \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u043E\u043C\u0443 \u0432\u0438\u0440\u0430\u0437\u0443",colorIs:"\u0454","!colorIs":"\u043D\u0435 \u0454",hexIs:"hex-\u043A\u043E\u0434 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454","!hexIs":"hex-\u043A\u043E\u0434 \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",hasValue:"\u043C\u0430\u0454 \u0431\u0443\u0434\u044C-\u044F\u043A\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","!hasValue":"\u043D\u0435 \u043C\u0430\u0454 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F",hasProperty:"\u043F\u0440\u0438\u0441\u0443\u0442\u043D\u044F \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C","!hasProperty":"\u0432\u0456\u0434\u0441\u0443\u0442\u043D\u044F \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C"},weekday:{"1":"\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","2":"\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","3":"\u0421\u0435\u0440\u0435\u0434\u0430","4":"\u0427\u0435\u0442\u0432\u0435\u0440","5":"\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","6":"\u0421\u0443\u0431\u043E\u0442\u0430","7":"\u041D\u0435\u0434\u0456\u043B\u044F"},month:{"1":"\u0421\u0456\u0447\u0435\u043D\u044C","2":"\u041B\u044E\u0442\u0438\u0439","3":"\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","4":"\u041A\u0432\u0456\u0442\u0435\u043D\u044C","5":"\u0422\u0440\u0430\u0432\u0435\u043D\u044C","6":"\u0427\u0435\u0440\u0432\u0435\u043D\u044C","7":"\u041B\u0438\u043F\u0435\u043D\u044C","8":"\u0421\u0435\u0440\u043F\u0435\u043D\u044C","9":"\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","10":"\u0416\u043E\u0432\u0442\u0435\u043D\u044C","11":"\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","12":"\u0413\u0440\u0443\u0434\u0435\u043D\u044C"}},ruleChecker:{fileMatch:"1 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0439 \u0444\u0430\u0439\u043B",folderMatch:"1 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0430 \u0442\u0435\u043A\u0430",filesMatch:"\u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0456\u0432: {#}",foldersMatch:"\u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0442\u0435\u043A: {#}",highlight:"\u0412\u0438\u0434\u0456\u043B\u0438\u0442\u0438",headingMatches:"\u0417\u0431\u0456\u0433\u0438"},commands:{openRulebook:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0437\u0432\u0456\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",toggleBiggerIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0431\u0456\u043B\u044C\u0448\u0456 \u0437\u043D\u0430\u0447\u043A\u0438",toggleClickableIcons:{desktop:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438, \u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u044E\u0442\u044C\u0441\u044F",mobile:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438, \u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u044E\u0442\u044C\u0441\u044F"},toggleAllFileIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0443\u0441\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u0456\u0432",toggleAllFolderIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0443\u0441\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0442\u0435\u043A",toggleMinimalFolderIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0430\u0439\u043C\u0435\u043D\u0448\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0442\u0435\u043A",toggleMarkdownTabIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u0432\u043A\u043B\u0430\u0434\u043E\u043A Markdown",toggleMenuActions:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0434\u0456\u0439 \u043C\u0435\u043D\u044E",toggleQuickSwitcherIcons:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0448\u0432\u0438\u0434\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u0445\u0456\u0434",toggleBiggerSearchResults:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0431\u0456\u043B\u044C\u0448\u0456 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043F\u043E\u0448\u0443\u043A\u0443",changeIconCurrentFile:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0437\u043D\u0430\u0447\u043E\u043A \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443"},settings:{values:{on:"\u0423\u0432\u0456\u043C\u043A",off:"\u0412\u0438\u043C\u043A",desktop:"\u041B\u0438\u0448\u0435 \u0434\u043B\u044F \u043A\u043E\u043C\u043F'\u044E\u0442\u0435\u0440\u0456\u0432",mobile:"\u041B\u0438\u0448\u0435 \u0434\u043B\u044F \u043C\u043E\u0431\u0456\u043B\u044C\u043D\u0438\u0445",list:"\u0421\u043F\u0438\u0441\u043E\u043A \u043A\u043E\u043B\u044C\u043E\u0440\u0456\u0432",rgb:"\u041F\u0456\u043F\u0435\u0442\u043A\u0430 RGB"},rulebook:{name:"\u0417\u0432\u0456\u0434 \u043F\u0440\u0430\u0432\u0438\u043B",desc:"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u0444\u0430\u0439\u043B\u0456\u0432 \u0442\u0430 \u0442\u0435\u043A.",manage:"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438"},headingSidebarAndTabIcons:"\u0417\u043D\u0430\u0447\u043A\u0438 \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 \u0442\u0430 \u0432\u043A\u043B\u0430\u0434\u043E\u043A",biggerIcons:{name:"\u0412\u0435\u043B\u0438\u043A\u0456 \u0437\u043D\u0430\u0447\u043A\u0438",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0431\u0456\u043B\u044C\u0448\u0456 \u0437\u043D\u0430\u0447\u043A\u0438, \u043D\u0456\u0436 \u0443 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u043E\u043C\u0443 \u0456\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0456."},clickableIcons:{nameDesktop:"\u0417\u043D\u0430\u0447\u043A\u0438, \u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u044E\u0442\u044C\u0441\u044F",nameMobile:"\u0417\u043D\u0430\u0447\u043A\u0438, \u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u044E\u0442\u044C\u0441\u044F",descDesktop:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043D\u0430 \u0437\u043D\u0430\u0447\u043E\u043A, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432\u0456\u043A\u043D\u043E \u0432\u0438\u0431\u043E\u0440\u0443 \u0437\u043D\u0430\u0447\u043A\u0456\u0432.",descMobile:"\u0422\u043E\u0440\u043A\u043D\u0456\u0442\u044C\u0441\u044F \u0437\u043D\u0430\u0447\u043A\u0430, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432\u0456\u043A\u043D\u043E \u0432\u0438\u0431\u043E\u0440\u0443 \u0437\u043D\u0430\u0447\u043A\u0456\u0432."},showAllFileIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0443\u0441\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0444\u0430\u0439\u043B\u0456\u0432",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0434\u043B\u044F \u0444\u0430\u0439\u043B\u0456\u0432, \u044F\u043A\u0456 \u043D\u0435 \u043C\u0430\u044E\u0442\u044C \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},showAllFolderIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0443\u0441\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0442\u0435\u043A",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0434\u043B\u044F \u0442\u0435\u043A, \u044F\u043A\u0456 \u043D\u0435 \u043C\u0430\u044E\u0442\u044C \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u043A\u0430."},minimalFolderIcons:{name:"\u041D\u0430\u0439\u043C\u0435\u043D\u0448\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0442\u0435\u043A",desc:"\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0441\u0442\u0440\u0456\u043B\u043A\u0438 \u0442\u0435\u043A \u0432\u0430\u0448\u0438\u043C\u0438 \u0437\u043D\u0430\u0447\u043A\u0430\u043C\u0438."},showMarkdownTabIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A Markdown",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u043A\u043B\u0430\u0434\u043E\u043A \u0434\u043B\u044F \u0444\u0430\u0439\u043B\u0456\u0432 Markdown."},headingMenusAndDialogs:"\u041C\u0435\u043D\u044E \u0442\u0430 \u0434\u0456\u0430\u043B\u043E\u0433\u043E\u0432\u0456 \u0432\u0456\u043A\u043D\u0430",showMenuActions:{name:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0434\u0456\u0457 \u043C\u0435\u043D\u044E",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0434\u0456\u0457, \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0456 \u0437\u043D\u0430\u0447\u043A\u0430\u043C\u0438, \u0443 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u0438\u0445 \u043C\u0435\u043D\u044E."},showQuickSwitcherIcons:{name:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0448\u0432\u0438\u0434\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u0445\u0456\u0434",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430\u0445 \u043F\u043E\u0448\u0443\u043A\u0443 \u0448\u0432\u0438\u0434\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u0445\u0456\u0434."},headingIconPicker:"\u0412\u0438\u0431\u0456\u0440 \u0437\u043D\u0430\u0447\u043A\u0456\u0432",showItemName:{name:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043D\u0430\u0437\u0432\u0443 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",desc:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0437\u0432\u0443 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0443, \u0449\u043E \u0440\u0435\u0434\u0430\u0433\u0443\u0454\u0442\u044C\u0441\u044F."},biggerSearchResults:{name:"\u0411\u0456\u043B\u044C\u0448\u0456 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043F\u043E\u0448\u0443\u043A\u0443",desc:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0431\u0456\u043B\u044C\u0448\u0456 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430\u0445 \u043F\u043E\u0448\u0443\u043A\u0443."},maxSearchResults:{name:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430 \u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043F\u043E\u0448\u0443\u043A\u0443",desc:"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0447\u0430\u0441\u043D\u043E\u0433\u043E \u043F\u043E\u043A\u0430\u0437\u0443."},colorPicker1:{name:"\u0413\u043E\u043B\u043E\u0432\u043D\u0430 \u043F\u0430\u043B\u0456\u0442\u0440\u0430",descDesktop:"\u0417'\u044F\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F \u043F\u0456\u0441\u043B\u044F \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u044F \u043D\u0430 \u043A\u043E\u043B\u0456\u0440\u043D\u0435 \u043A\u043E\u043B\u043E.",descMobile:"\u0417'\u044F\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F \u043F\u0456\u0441\u043B\u044F \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u044F \u043D\u0430 \u043A\u043E\u043B\u0456\u0440\u043D\u0435 \u043A\u043E\u043B\u043E."},colorPicker2:{name:"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0430 \u043F\u0430\u043B\u0456\u0442\u0440\u0430",descDesktop:"\u0417'\u044F\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F \u043F\u0456\u0441\u043B\u044F \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u044F \u041F\u041A\u041C \u043D\u0430 \u043A\u043E\u043B\u0456\u0440\u043D\u0435 \u043A\u043E\u043B\u043E.",descMobile:"\u0417'\u044F\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F \u043F\u0456\u0441\u043B\u044F \u0437\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u044F \u043A\u043E\u043B\u0456\u0440\u043D\u043E\u0433\u043E \u043A\u043E\u043B\u0430."},headingAdvanced:"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0456",uncolorHover:{name:"\u0411\u0435\u0437\u0431\u0430\u0440\u0432\u043D\u0435 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u044F",desc:"\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440 \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u0456 \u043D\u0430 \u0435\u043B\u0435\u043C\u0435\u043D\u0442."},uncolorDrag:{name:"\u0411\u0435\u0437\u0431\u0430\u0440\u0432\u043D\u0435 \u043F\u0435\u0440\u0435\u0442\u044F\u0433\u0443\u0432\u0430\u043D\u043D\u044F",desc:"\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440 \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0442\u044F\u0433\u0443\u0432\u0430\u043D\u043D\u0456 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0443."},uncolorSelect:{name:"\u0411\u0435\u0437\u0431\u0430\u0440\u0432\u043D\u0438\u0439 \u0432\u0438\u0431\u0456\u0440",desc:"\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440 \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u0443 \u043E\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432."},uncolorQuick:{name:"\u0411\u0435\u0437\u0431\u0430\u0440\u0432\u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0430 \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0456",desc:"\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043B\u0456\u0440 \u0437\u043D\u0430\u0447\u043A\u0456\u0432 \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0443 \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0456 \u043D\u0430 \u043C\u043E\u0431\u0456\u043B\u044C\u043D\u043E\u043C\u0443 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456."},rememberDeletedItems:{name:"\u0417\u0430\u043F\u0430\u043C'\u044F\u0442\u0430\u0442\u0438 \u0437\u043D\u0430\u0447\u043A\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",desc:"\u041F\u0440\u0438 \u043F\u043E\u044F\u0432\u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u043E\u0433\u043E \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0443 \u0431\u0443\u0434\u044C-\u044F\u043A\u0438\u0439 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439 \u0437\u043D\u0430\u0447\u043E\u043A \u0431\u0443\u0434\u0435 \u0432\u0456\u0434\u043D\u043E\u0432\u043B\u0435\u043D\u043E."}}}});var He=N((Xi,wt)=>{wt.exports={appItems:{help:"\u67E5\u770B\u5E2E\u52A9",settings:"\u6253\u5F00\u8BBE\u7F6E",pin:"\u89E3\u9501/\u9501\u5B9A",sidebarLeft:"\u6298\u53E0/\u5C55\u5F00\u5DE6\u4FA7\u8FB9\u680F",sidebarRight:"\u6298\u53E0/\u5C55\u5F00\u53F3\u4FA7\u8FB9\u680F",minimize:"\u6700\u5C0F\u5316",maximize:"\u6700\u5927\u5316",unmaximize:"\u5411\u4E0B\u8FD8\u539F",close:"\u5173\u95ED"},menu:{changeIcon:"\u66F4\u6539\u56FE\u6807\u2026\u2026",changeIcons:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807\u2026\u2026",removeIcon:"\u5220\u9664\u56FE\u6807",removeIcons:"\u5220\u9664 {#} \u4E2A\u56FE\u6807",resetColor:"\u91CD\u7F6E\u989C\u8272",resetColors:"\u91CD\u7F6E {#} \u79CD\u989C\u8272",editRule:"\u7F16\u8F91\u89C4\u5219\u2026\u2026"},iconPicker:{changeIcon:"\u66F4\u6539\u56FE\u6807",changeIcons:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807",changeEmoji:"\u66F4\u6539\u8868\u60C5\u7B26\u53F7",changeEmojis:"\u66F4\u6362 {#} \u4E2A\u8868\u60C5\u7B26\u53F7",changeMix:"\u66F4\u6539\u56FE\u6807/\u8868\u60C5\u7B26\u53F7",changeMixes:"\u66F4\u6539 {#} \u4E2A\u56FE\u6807/\u8868\u60C5\u7B26\u53F7",overrulePrefix:"\u8986\u76D6",overruleSuffix:" \u8986\u76D6",overrules:"\u60A8\u7684\u89C4\u5219\u4E66\u6B63\u5728\u8986\u76D6\u8FD9\u4E9B\u56FE\u6807\u4E2D\u7684\u4E00\u4E9B\u3002",search:"\u641C\u7D22",searchIcons:"\u641C\u7D22\u56FE\u6807\u2026\u2026",searchEmojis:"\u641C\u7D22\u8868\u60C5\u7B26\u53F7\u2026\u2026",searchMix:"\u641C\u7D22\u56FE\u6807/\u8868\u60C5\u7B26\u53F7\u2026\u2026",changeColor:"\u6362\u989C\u8272",resetColor:"\u91CD\u7F6E\u989C\u8272",toggleIcons:"\u5207\u6362\u56FE\u6807",toggleEmojis:"\u5207\u6362\u8868\u60C5\u7B26\u53F7",icons:"\u56FE\u6807",emojis:"\u8868\u60C5\u7B26\u53F7",mixed:"\u6DF7\u5408",cancel:"\u53D6\u6D88",save:"\u4FDD\u5B58",colors:{red:"\u7EA2\u8272",orange:"\u6A59\u8272",yellow:"\u9EC4\u8272",green:"\u7EFF\u8272",cyan:"\u9752\u8272",blue:"\u84DD\u8272",purple:"\u7D2B\u8272",pink:"\u7C89\u7EA2\u8272",gray:"\u7070\u8272"}},categories:{item:"\u9879",items:"\u9879",appItem:"\u6309\u94AE",appItems:"\u6309\u94AE",tab:"\u6807\u7B7E",tabs:"\u6807\u7B7E",file:"\u6587\u4EF6",files:"\u6587\u4EF6",folder:"\u6587\u4EF6\u5939",folders:"\u6587\u4EF6\u5939",group:"\u4E66\u7B7E\u7EC4",groups:"\u4E66\u7B7E\u7EC4",search:"\u67E5\u8BE2",searches:"\u67E5\u8BE2",graph:"\u5173\u7CFB\u56FE\u8C31",graphs:"\u5173\u7CFB\u56FE\u8C31",url:"URL",urls:"URL",tag:"\u6807\u7B7E",tags:"\u6807\u7B7E",property:"\u6587\u6863\u5C5E\u6027",properties:"\u6587\u6863\u5C5E\u6027",ribbonItem:"\u5DE5\u5177\u680F\u547D\u4EE4",ribbonItems:"\u5DE5\u5177\u680F\u547D\u4EE4",rule:"\u89C4\u5219",rules:"\u89C4\u5219"},rulePicker:{selectPage:"\u9009\u62E9\u9875\u9762",fileRules:"\u6587\u4EF6\u89C4\u5219",folderRules:"\u6587\u4EF6\u5939\u89C4\u5219",rules:"\u89C4\u5219",addRule:"\u6DFB\u52A0\u89C4\u5219",editRule:"\u7F16\u8F91\u89C4\u5219",removeRule:"\u5220\u9664\u89C4\u5219",untitledRule:"\u65E0\u6807\u9898\u89C4\u5219",drag:"\u62D6\u52A8\u53EF\u8C03\u6574\u5E03\u5C40"},ruleEditor:{fileRule:"\u6587\u4EF6\u89C4\u5219",folderRule:"\u6587\u4EF6\u5939\u89C4\u5219",conditions:"\u6761\u4EF6",addCondition:"\u6DFB\u52A0\u6761\u4EF6",resetCondition:"\u91CD\u7F6E\u6761\u4EF6",removeCondition:"\u5220\u9664\u6761\u4EF6",removeRule:"\u5220\u9664\u89C4\u5219",buttonMatch:"1 \u4E2A\u5339\u914D",buttonMatches:"{#} \u4E2A\u5339\u914D",buttonNoMatches:"\u65E0\u5339\u914D",enterName:"\u4E3A\u8BE5\u89C4\u5219\u547D\u540D",enterValue:"\u8F93\u5165\u4E00\u4E2A\u503C",enterRegex:"\u8F93\u5165\u4E00\u4E2A\u6B63\u5219\u8868\u8FBE\u5F0F",enterHexCode:"\u8F93\u5165\u4E00\u4E2A\u5341\u516D\u8FDB\u5236\u4EE3\u7801",enterNumber:"\u8F93\u5165\u4E00\u4E2A\u6570\u5B57",matchConditions:{name:"\u5339\u914D\u6761\u4EF6",desc:"\u9009\u62E9\u9700\u8981\u5339\u914D\u7684\u6761\u4EF6\u6570\u91CF\u3002",all:"\u5168\u90E8",any:"\u4EFB\u610F",none:"\u65E0"},source:{icon:"\u56FE\u6807",color:"\u989C\u8272",name:"\u540D\u79F0",filename:"\u6587\u4EF6\u540D",extension:"\u6269\u5C55\u540D",tree:"\u6587\u4EF6\u5939\u6811",path:"\u6587\u4EF6\u5E93\u4E2D\u7684\u8DEF\u5F84",headings:"\u6807\u9898",links:"\u94FE\u63A5",tags:"\u6807\u7B7E",properties:"\u5C5E\u6027\u2026\u2026",created:"\u521B\u5EFA\u65E5\u671F",modified:"\u4FEE\u6539\u65E5\u671F",clock:"\u7CFB\u7EDF\u65F6\u949F"},operator:{is:"\u662F","!is":"\u4E0D\u662F",contains:"\u5305\u542B",startsWith:"\u4EE5...\u5F00\u5934",endsWith:"\u4EE5...\u7ED3\u5C3E",matches:"\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F","!contains":"\u4E0D\u5305\u542B","!startsWith":"\u4E0D\u4EE5...\u5F00\u5934","!endsWith":"\u4E0D\u4EE5...\u7ED3\u5C3E","!matches":"\u4E0D\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",includes:"\u5305\u542B\u9879\u76EE","!includes":"\u4E0D\u5305\u62EC\u9879\u76EE",allAre:"\u5168\u90E8\u662F",allContain:"\u5168\u90E8\u5305\u542B",allStartWith:"\u5168\u90E8\u4EE5...\u5F00\u5934",allEndWith:"\u5168\u90E8\u4EE5...\u7ED3\u5C3E",allMatch:"\u5168\u90E8\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",anyContain:"\u4EFB\u4F55\u5305\u542B",anyStartWith:"\u4EFB\u4F55\u4EE5...\u5F00\u5934",anyEndWith:"\u4EFB\u4F55\u4EE5...\u7ED3\u5C3E",anyMatch:"\u4EFB\u4F55\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",noneContain:"\u4E0D\u5305\u542B",noneStartWith:"\u4E0D\u4EE5...\u5F00\u5934",noneEndWith:"\u4E0D\u4EE5...\u7ED3\u5C3E",noneMatch:"\u4E0D\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F",countIs:"\u8BA1\u6570\u662F","!countIs":"\u8BA1\u6570\u4E0D\u662F",countIsLess:"\u8BA1\u6570\u5C0F\u4E8E",countIsMore:"\u8BA1\u6570\u5927\u4E8E",isTrue:"\u4E3A\u771F","!isTrue":"\u4E0D\u4E3A\u771F",isFalse:"\u4E3A\u5047","!isFalse":"\u4E0D\u4E3A\u5047",equals:"\u7B49\u4E8E","!equals":"\u4E0D\u7B49\u4E8E",isLess:"\u5C0F\u4E8E",isMore:"\u5927\u4E8E",isDivisible:"\u80FD\u88AB...\u6574\u9664","!isLess":"\u4E0D\u5C0F\u4E8E","!isMore":"\u4E0D\u5927\u4E8E","!isDivisible":"\u4E0D\u80FD\u88AB...\u6574\u9664",isBefore:"\u5728...\u4E4B\u524D",isAfter:"\u5728...\u4E4B\u540E",isNow:"\u662F\u73B0\u5728\u7684","!isNow":"\u4E0D\u662F\u73B0\u5728\u7684",isBeforeNow:"\u5728\u73B0\u5728\u4E4B\u524D",isAfterNow:"\u5728\u73B0\u5728\u4E4B\u540E",timeIs:"\u65F6\u95F4\u662F","!timeIs":"\u65F6\u95F4\u4E0D\u662F",timeIsBefore:"\u65F6\u95F4\u5728\u4E4B\u524D",timeIsAfter:"\u65F6\u95F4\u5728\u4E4B\u540E",timeIsNow:"\u65F6\u95F4\u662F\u73B0\u5728","!timeIsNow":"\u65F6\u95F4\u4E0D\u662F\u73B0\u5728",timeIsBeforeNow:"\u65F6\u95F4\u5728\u73B0\u5728\u4E4B\u524D",timeIsAfterNow:"\u65F6\u95F4\u5728\u73B0\u5728\u4E4B\u540E",dateIs:"\u65E5\u671F\u662F","!dateIs":"\u65E5\u671F\u4E0D\u662F",dateIsBefore:"\u65E5\u671F\u5728\u4E4B\u524D",dateIsAfter:"\u65E5\u671F\u5728\u4E4B\u540E",isToday:"\u65E5\u671F\u662F\u4ECA\u5929","!isToday":"\u65E5\u671F\u4E0D\u662F\u4ECA\u5929",isBeforeToday:"\u65E5\u671F\u5728\u4ECA\u5929\u4E4B\u524D",isAfterToday:"\u65E5\u671F\u5728\u4ECA\u5929\u4E4B\u540E",isLessDaysAgo:"\u5C11\u4E8E...\u5929\u524D",isLessDaysAway:"\u8DDD\u79BB...\u5929\u8FD8\u4E0D\u5230",isMoreDaysAgo:"\u8D85\u8FC7...\u5929\u524D",isMoreDaysAway:"\u8DDD\u79BB...\u5929\u8FD8\u8D85\u8FC7",weekdayIs:"\u661F\u671F\u51E0\u662F","!weekdayIs":"\u661F\u671F\u51E0\u4E0D\u662F",weekdayIsBefore:"\u661F\u671F\u51E0\u5728\u4E4B\u524D",weekdayIsAfter:"\u661F\u671F\u51E0\u5728\u4E4B\u540E",monthdayIs:"\u6708\u4EFD\u7684\u65E5\u671F\u662F","!monthdayIs":"\u6708\u4EFD\u7684\u65E5\u671F\u4E0D\u662F",monthdayIsBefore:"\u6708\u4EFD\u7684\u65E5\u671F\u662F\u4E4B\u524D",monthdayIsAfter:"\u6708\u4EFD\u7684\u65E5\u671F\u662F\u4E4B\u540E",monthIs:"\u6708\u4EFD\u662F","!monthIs":"\u6708\u4EFD\u4E0D\u662F",monthIsBefore:"\u6708\u4EFD\u5728\u4E4B\u524D",monthIsAfter:"\u6708\u4EFD\u5728\u4E4B\u540E",yearIs:"\u5E74\u4EFD\u5728","!yearIs":"\u5E74\u4EFD\u4E0D\u5728",yearIsBefore:"\u5E74\u4EFD\u5728\u4E4B\u524D",yearIsAfter:"\u5E74\u4EFD\u5728\u4E4B\u540E",iconIs:"\u56FE\u6807\u662F","!iconIs":"\u56FE\u6807\u4E0D\u662F",nameIs:"\u540D\u79F0\u662F","!nameIs":"\u540D\u79F0\u4E0D\u662F",nameContains:"\u540D\u79F0\u5305\u542B",nameStartsWith:"\u540D\u79F0\u4EE5...\u5F00\u5934",nameEndsWith:"\u540D\u79F0\u4EE5...\u7ED3\u5C3E",nameMatches:"\u540D\u79F0\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D","!nameContains":"\u540D\u79F0\u4E0D\u5305\u542B","!nameStartsWith":"\u540D\u79F0\u4E0D\u4EE5...\u5F00\u5934","!nameEndsWith":"\u540D\u79F0\u4E0D\u4EE5...\u7ED3\u5C3E","!nameMatches":"\u540D\u79F0\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u4E0D\u5339\u914D",colorIs:"\u662F","!colorIs":"\u4E0D\u662F",hexIs:"\u5341\u516D\u8FDB\u5236\u989C\u8272\u662F","!hexIs":"\u5341\u516D\u8FDB\u5236\u989C\u8272\u4E0D\u662F",hasValue:"\u6709\u4EFB\u4F55\u503C","!hasValue":"\u6CA1\u6709\u503C",hasProperty:"\u6709\u5C5E\u6027","!hasProperty":"\u6CA1\u6709\u5C5E\u6027"},weekday:{"1":"\u661F\u671F\u4E00","2":"\u661F\u671F\u4E8C","3":"\u661F\u671F\u4E09","4":"\u661F\u671F\u56DB","5":"\u661F\u671F\u4E94","6":"\u661F\u671F\u516D","7":"\u661F\u671F\u65E5"},month:{"1":"\u4E00\u6708","2":"\u4E8C\u6708","3":"\u4E09\u6708","4":"\u56DB\u6708","5":"\u4E94\u6708","6":"\u516D\u6708","7":"\u4E03\u6708","8":"\u516B\u6708","9":"\u4E5D\u6708","10":"\u5341\u6708","11":"\u5341\u4E00\u6708","12":"\u5341\u4E8C\u6708"}},ruleChecker:{fileMatch:"1 \u4E2A\u5339\u914D\u6587\u4EF6",folderMatch:"1 \u4E2A\u5339\u914D\u6587\u4EF6\u5939",filesMatch:"{#} \u4E2A\u5339\u914D\u6587\u4EF6",foldersMatch:"{#} \u4E2A\u5339\u914D\u6587\u4EF6\u5939",highlight:"\u7A81\u51FA\u663E\u793A",headingMatches:"\u5339\u914D"},commands:{openRulebook:"\u6253\u5F00\u89C4\u5219\u4E66",toggleBiggerIcons:"\u5207\u6362\u66F4\u5927\u56FE\u6807",toggleClickableIcons:{desktop:"\u5207\u6362\u53EF\u70B9\u51FB\u56FE\u6807",mobile:"\u5207\u6362\u53EF\u89E6\u6478\u56FE\u6807"},toggleAllFileIcons:"\u5207\u6362\u6240\u6709\u6587\u4EF6\u56FE\u6807",toggleAllFolderIcons:"\u5207\u6362\u6240\u6709\u6587\u4EF6\u5939\u56FE\u6807",toggleMinimalFolderIcons:"\u5207\u6362\u6781\u7B80\u6587\u4EF6\u5939\u56FE\u6807",toggleMarkdownTabIcons:"\u5207\u6362 Markdown \u6807\u7B7E\u56FE\u6807",toggleMenuActions:"\u5207\u6362\u83DC\u5355\u64CD\u4F5C",toggleQuickSwitcherIcons:"\u5207\u6362\u5FEB\u901F\u5207\u6362\u56FE\u6807",toggleBiggerSearchResults:"\u5207\u6362\u66F4\u5927\u7684\u641C\u7D22\u7ED3\u679C",changeIconCurrentFile:"\u66F4\u6539\u5F53\u524D\u6587\u4EF6\u7684\u56FE\u6807"},settings:{values:{on:"\u5F00\u542F",off:"\u5173\u95ED",desktop:"\u4EC5\u9650\u684C\u9762",mobile:"\u4EC5\u9650\u79FB\u52A8\u8BBE\u5907",list:"\u989C\u8272\u5217\u8868",rgb:"RGB \u9009\u62E9\u5668"},rulebook:{name:"\u89C4\u5219\u4E66",desc:"\u4E3A\u6587\u4EF6\u548C\u6587\u4EF6\u5939\u56FE\u6807\u8BBE\u7F6E\u81EA\u52A8\u89C4\u5219\u3002",manage:"\u7BA1\u7406"},headingSidebarAndTabIcons:"\u4FA7\u8FB9\u680F\u548C\u6807\u7B7E\u56FE\u6807",biggerIcons:{name:"\u66F4\u5927\u7684\u56FE\u6807",desc:"\u663E\u793A\u6BD4\u9ED8\u8BA4 UI \u66F4\u5927\u7684\u56FE\u6807\u3002"},clickableIcons:{nameDesktop:"\u53EF\u70B9\u51FB\u7684\u56FE\u6807",nameMobile:"\u53EF\u89E6\u6478\u56FE\u6807",descDesktop:"\u5355\u51FB\u56FE\u6807\u4EE5\u6253\u5F00\u56FE\u6807\u9009\u62E9\u5668\u3002",descMobile:"\u70B9\u51FB\u56FE\u6807\u4EE5\u6253\u5F00\u56FE\u6807\u9009\u62E9\u5668\u3002"},showAllFileIcons:{name:"\u663E\u793A\u6240\u6709\u6587\u4EF6\u56FE\u6807",desc:"\u663E\u793A\u6CA1\u6709\u81EA\u5B9A\u4E49\u56FE\u6807\u7684\u6587\u4EF6\u56FE\u6807\u3002"},showAllFolderIcons:{name:"\u663E\u793A\u6240\u6709\u6587\u4EF6\u5939\u56FE\u6807",desc:"\u663E\u793A\u6CA1\u6709\u81EA\u5B9A\u4E49\u56FE\u6807\u7684\u6587\u4EF6\u5939\u56FE\u6807\u3002"},minimalFolderIcons:{name:"\u6700\u5C0F\u6587\u4EF6\u5939\u56FE\u6807",desc:"\u7528\u60A8\u7684\u6587\u4EF6\u5939\u56FE\u6807\u66FF\u6362\u6587\u4EF6\u5939\u7BAD\u5934\u3002"},showMarkdownTabIcons:{name:"\u663E\u793A Markdown \u6807\u7B7E\u56FE\u6807",desc:"\u663E\u793A Markdown \u6587\u4EF6\u7684\u6807\u7B7E\u56FE\u6807\u3002"},headingMenusAndDialogs:"\u83DC\u5355\u548C\u5BF9\u8BDD\u6846",showMenuActions:{name:"\u663E\u793A\u83DC\u5355\u64CD\u4F5C",desc:"\u5728\u4E0A\u4E0B\u6587\u83DC\u5355\u4E2D\u663E\u793A\u4E0E\u56FE\u6807\u76F8\u5173\u7684\u64CD\u4F5C\u3002"},showQuickSwitcherIcons:{name:"\u663E\u793A\u5FEB\u901F\u5207\u6362\u5668\u56FE\u6807",desc:"\u5728\u5FEB\u901F\u5207\u6362\u5668\u7684\u641C\u7D22\u7ED3\u679C\u4E2D\u663E\u793A\u56FE\u6807\u3002"},headingIconPicker:"\u56FE\u6807\u9009\u62E9\u5668",showItemName:{name:"\u663E\u793A\u9879\u76EE\u540D\u79F0",desc:"\u663E\u793A\u6B63\u5728\u7F16\u8F91\u7684\u9879\u76EE\u7684\u540D\u79F0\u3002"},biggerSearchResults:{name:"\u66F4\u5927\u7684\u641C\u7D22\u7ED3\u679C",desc:"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u663E\u793A\u66F4\u5927\u7684\u56FE\u6807\u3002"},maxSearchResults:{name:"\u6700\u5927\u641C\u7D22\u7ED3\u679C",desc:"\u9009\u62E9\u4E00\u6B21\u663E\u793A\u591A\u5C11\u4E2A\u56FE\u6807\u3002"},colorPicker1:{name:"\u4E3B\u989C\u8272\u9009\u62E9\u5668",descDesktop:"\u5355\u51FB\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002",descMobile:"\u89E6\u6478\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002"},colorPicker2:{name:"\u7B2C\u4E8C\u4E2A\u989C\u8272\u9009\u62E9\u5668",descDesktop:"\u5F53\u60A8\u53CC\u51FB\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002",descMobile:"\u5F53\u60A8\u6309\u4F4F\u989C\u8272\u6C14\u6CE1\u65F6\u663E\u793A\u3002"},headingAdvanced:"\u9AD8\u7EA7",uncolorHover:{name:"\u65E0\u8272\u60AC\u505C",desc:"\u60AC\u505C\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorDrag:{name:"\u65E0\u8272\u62D6\u52A8",desc:"\u62D6\u52A8\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorSelect:{name:"\u65E0\u8272\u9009\u62E9",desc:"\u9009\u62E9\u9879\u76EE\u65F6\u7981\u7528\u56FE\u6807\u989C\u8272\u3002"},uncolorQuick:{name:"\u65E0\u8272\u529F\u80FD\u533A\u6309\u94AE",desc:"\u7981\u7528\u79FB\u52A8\u8BBE\u5907\u4E0A\u5FEB\u901F\u8BBF\u95EE\u529F\u80FD\u533A\u6309\u94AE\u7684\u56FE\u6807\u989C\u8272\u3002"},rememberDeletedItems:{name:"\u8BB0\u4F4F\u5DF2\u5220\u9664\u9879\u76EE\u7684\u56FE\u6807",desc:"\u5F53\u9879\u76EE\u518D\u6B21\u5B58\u5728\u65F6\uFF0C\u4EFB\u4F55\u81EA\u5B9A\u4E49\u56FE\u6807\u90FD\u4F1A\u91CD\u65B0\u51FA\u73B0\u3002"}}}});var Bt={};Ze(Bt,{EMOJIS:()=>D,FILE_TAB_TYPES:()=>le,ICONS:()=>B,STRINGS:()=>s,default:()=>pe});module.exports=$e(Bt);var A=require("obsidian");var y=require("obsidian");var q=require("obsidian");var he=new Map([["red","--color-red"],["orange","--color-orange"],["yellow","--color-yellow"],["green","--color-green"],["cyan","--color-cyan"],["blue","--color-blue"],["purple","--color-purple"],["pink","--color-pink"],["gray","--color-base-70"]]),Ae=new Map([["aliceblue","#f0f8ff"],["antiquewhite","#faebd7"],["aqua","#00ffff"],["aquamarine","#7fffd4"],["azure","#f0ffff"],["beige","#f5f5dc"],["bisque","#ffe4c4"],["black","#000000"],["blanchedalmond","#ffebcd"],["blue","#0000ff"],["blueviolet","#8a2be2"],["brown","#a52a2a"],["burlywood","#deb887"],["cadetblue","#5f9ea0"],["chartreuse","#7fff00"],["chocolate","#d2691e"],["coral","#ff7f50"],["cornflowerblue","#6495ed"],["cornsilk","#fff8dc"],["crimson","#dc143c"],["cyan","#00ffff"],["darkblue","#00008b"],["darkcyan","#008b8b"],["darkgoldenrod","#b8860b"],["darkgray","#a9a9a9"],["darkgreen","#006400"],["darkgrey","#a9a9a9"],["darkkhaki","#bdb76b"],["darkmagenta","#8b008b"],["darkolivegreen","#556b2f"],["darkorange","#ff8c00"],["darkorchid","#9932cc"],["darkred","#8b0000"],["darksalmon","#e9967a"],["darkseagreen","#8fbc8f"],["darkslateblue","#483d8b"],["darkslategray","#2f4f4f"],["darkslategrey","#2f4f4f"],["darkturquoise","#00ced1"],["darkviolet","#9400d3"],["deeppink","#ff1493"],["deepskyblue","#00bfff"],["dimgray","#696969"],["dimgrey","#696969"],["dodgerblue","#1e90ff"],["firebrick","#b22222"],["floralwhite","#fffaf0"],["forestgreen","#228b22"],["fuchsia","#ff00ff"],["gainsboro","#dcdcdc"],["ghostwhite","#f8f8ff"],["gold","#ffd700"],["goldenrod","#daa520"],["gray","#808080"],["green","#008000"],["greenyellow","#adff2f"],["grey","#808080"],["honeydew","#f0fff0"],["hotpink","#ff69b4"],["indianred","#cd5c5c"],["indigo","#4b0082"],["ivory","#fffff0"],["khaki","#f0e68c"],["lavender","#e6e6fa"],["lavenderblush","#fff0f5"],["lawngreen","#7cfc00"],["lemonchiffon","#fffacd"],["lightblue","#add8e6"],["lightcoral","#f08080"],["lightcyan","#e0ffff"],["lightgoldenrodyellow","#fafad2"],["lightgray","#d3d3d3"],["lightgreen","#90ee90"],["lightgrey","#d3d3d3"],["lightpink","#ffb6c1"],["lightsalmon","#ffa07a"],["lightseagreen","#20b2aa"],["lightskyblue","#87cefa"],["lightslategray","#778899"],["lightslategrey","#778899"],["lightsteelblue","#b0c4de"],["lightyellow","#ffffe0"],["lime","#00ff00"],["limegreen","#32cd32"],["linen","#faf0e6"],["magenta","#ff00ff"],["maroon","#800000"],["mediumaquamarine","#66cdaa"],["mediumblue","#0000cd"],["mediumorchid","#ba55d3"],["mediumpurple","#9370db"],["mediumseagreen","#3cb371"],["mediumslateblue","#7b68ee"],["mediumspringgreen","#00fa9a"],["mediumturquoise","#48d1cc"],["mediumvioletred","#c71585"],["midnightblue","#191970"],["mintcream","#f5fffa"],["mistyrose","#ffe4e1"],["moccasin","#ffe4b5"],["navajowhite","#ffdead"],["navy","#000080"],["oldlace","#fdf5e6"],["olive","#808000"],["olivedrab","#6b8e23"],["orange","#ffa500"],["orangered","#ff4500"],["orchid","#da70d6"],["palegoldenrod","#eee8aa"],["palegreen","#98fb98"],["paleturquoise","#afeeee"],["palevioletred","#db7093"],["papayawhip","#ffefd5"],["peachpuff","#ffdab9"],["peru","#cd853f"],["pink","#ffc0cb"],["plum","#dda0dd"],["powderblue","#b0e0e6"],["purple","#800080"],["rebeccapurple","#663399"],["red","#ff0000"],["rosybrown","#bc8f8f"],["royalblue","#4169e1"],["saddlebrown","#8b4513"],["salmon","#fa8072"],["sandybrown","#f4a460"],["seagreen","#2e8b57"],["seashell","#fff5ee"],["sienna","#a0522d"],["silver","#c0c0c0"],["skyblue","#87ceeb"],["slateblue","#6a5acd"],["slategray","#708090"],["slategrey","#708090"],["snow","#fffafa"],["springgreen","#00ff7f"],["steelblue","#4682b4"],["tan","#d2b48c"],["teal","#008080"],["thistle","#d8bfd8"],["tomato","#ff6347"],["transparent","#00000000"],["turquoise","#40e0d0"],["violet","#ee82ee"],["wheat","#f5deb3"],["white","#ffffff"],["whitesmoke","#f5f5f5"],["yellow","#ffff00"],["yellowgreen","#9acd32"]]),fe="rgb(128, 128, 128)",_e=/color-mix\(in srgb, rgba?\((\d+), (\d+), (\d+)(?:, ([\d.]+))?\)(?: (\d+)%)?, rgba?\((\d+), (\d+), ([\d.]+)(?:, ([\d.]+))?\)(?: ([\d.]+)%)?\)/,C=class{static toRgb(a){let e="--icon-color",t=fe;if(!a)t=getComputedStyle(document.body).getPropertyValue(e);else if(he.has(a))e=he.get(a)??e,t=window.getComputedStyle(document.body).getPropertyValue(e);else if(Ae.has(a))t=Ae.get(a)??t;else if(CSS.supports("color",a))t=a;else return fe;this.convertEl.style.color=t;let i=this.convertEl.style.color;return i.startsWith("color-mix")?this.mixToRgb(i):i.startsWith("rgb")?i:fe}static toRgbObject(a){let[e,t,i]=this.toRgb(a).replaceAll(/[^\d.,]/g,"").split(",").map(Number);return{r:e,g:t,b:i}}static toHslArray(a){let[e,t,i]=this.toRgb(a).replaceAll(/[^\d.,]/g,"").split(",").map(Number);e=Math.max(Math.min(e,255),0)/255,t=Math.max(Math.min(t,255),0)/255,i=Math.max(Math.min(i,255),0)/255;let n=Math.max(e,t,i),o=Math.min(e,t,i),r=n-o,d=(n+o)/2,l=Number.isInteger(d)?0:(n-d)/Math.min(d,1-d),h=0;if(r>0)switch(n){case e:h=(t-i)/r%6;break;case t:h=(i-e)/r+2;break;case i:h=(e-t)/r+4;break}return[Math.round(h*60),Math.round(l*100),Math.round(d*100)]}static mixToRgb(a){let e=a.match(_e);if(!e)return"rgb(0, 0, 0)";let[,t,i,n,o,r,d,l,h,g,m]=e.map(Number);r=isNaN(r)?isNaN(m)?50:100-m:r,m=isNaN(m)?100-r:m;let c=r+m;c!==100&&(r=r/c*100,m=m/c*100);let u=Math.round((t*r+d*m)/100),w=Math.round((i*r+l*m)/100),b=Math.round((n*r+h*m)/100);o=isNaN(o)?1:o,g=isNaN(g)?1:g;let f=(o*r+g*m)/100;return f!==1?`rgba(${u}, ${w}, ${b}, ${f})`:`rgb(${u}, ${w}, ${b})`}};C.convertEl=document.createElement("div");var Y=require("obsidian");var E=class{constructor(a){this.eventListeners=new Map;this.mutationObservers=new Map;this.app=a.app,this.plugin=a}refreshIcon(a,e,t){if(e.addClass("iconic-icon"),a.icon){if(B.has(a.icon))(0,Y.setIcon)(e,a.icon);else if(D.has(a.icon)){e.empty();let n=e.createDiv({cls:"iconic-emoji",text:a.icon});a.color&&E.colorFilter(n,a.color)}e.show()}else e.hasClass("collapse-icon")?(this.plugin.settings.showAllFolderIcons&&"iconDefault"in a&&a.iconDefault?(0,Y.setIcon)(e,a.iconDefault):((0,Y.setIcon)(e,"right-triangle"),e.removeClass("iconic-icon")),e.show()):"iconDefault"in a&&a.iconDefault?((0,Y.setIcon)(e,a.iconDefault),e.show()):(e.removeClass("iconic-icon"),e.hide());let i=e.find(".svg-icon");i&&(a.color?i.style.setProperty("color",C.toRgb(a.color)):i.style.removeProperty("color")),t?this.setEventListener(e,"click",t,{capture:!0}):this.stopEventListener(e,"click")}static colorFilter(a,e){let[t,i]=C.toHslArray(e);a.style.filter=`grayscale() sepia() hue-rotate(${t-50}deg) saturate(${i*5}%)`}setEventListener(a,e,t,i){this.eventListeners.has(e)||this.eventListeners.set(e,new Map);let n=this.eventListeners.get(e);if(n.has(a)){let{listener:o,options:r}=n.get(a);a.removeEventListener(e,o,r)}this.plugin.registerDomEvent(a,e,t,i),n.set(a,{listener:t,options:i})}stopEventListener(a,e){if(!a)return;let t=this.eventListeners.get(e);if(t?.has(a)){let{listener:i,options:n}=t.get(a);a.removeEventListener(e,i,n),t.delete(a)}}stopEventListeners(){for(let[a,e]of this.eventListeners)for(let[t,{listener:i,options:n}]of e)t.removeEventListener(a,i,n),e.delete(t)}setMutationObserver(a,e,t){this.setMutationsObserver(a,e,i=>{for(let n of i)t(n)})}setMutationsObserver(a,e,t){if(!a)return;let i=new MutationObserver(t);this.mutationObservers.has(a)&&this.mutationObservers.get(a)?.disconnect(),i.observe(a,e),this.mutationObservers.set(a,i)}stopMutationObserver(a){this.mutationObservers.get(a)?.disconnect(),this.mutationObservers.delete(a)}stopMutationObservers(){for(let[a,e]of this.mutationObservers)e.disconnect(),this.mutationObservers.delete(a)}unload(){this.stopEventListeners(),this.stopMutationObservers()}};var M=require("obsidian");var Z=require("obsidian");var K=class extends Z.Modal{constructor(e,t,i){super(e.app);this.plugin=e,this.page=t,this.matches=i;for(let n of this.plugin.dialogCommands)if(n.callback){let o=this.app.hotkeyManager?.customKeys?.[n.id]??[];for(let r of o)this.scope.register(r.modifiers,r.key,n.callback)}}static open(e,t,i){new K(e,t,i).open()}onOpen(){switch(this.page){case"file":{this.setTitle(this.matches.length===1?s.ruleChecker.fileMatch:s.ruleChecker.filesMatch.replace("{#}",this.matches.length.toString()));break}case"folder":this.setTitle(this.matches.length===1?s.ruleChecker.folderMatch:s.ruleChecker.foldersMatch.replace("{#}",this.matches.length.toString()))}this.containerEl.addClass("mod-confirmation"),this.contentEl.addClass("iconic-highlight-tree");let e=[];new Z.Setting(this.contentEl).setName(s.ruleChecker.highlight).addButton(i=>{i.setButtonText(s.ruleEditor.source.tree).onClick(()=>{e.forEach(n=>n.buttonEl.removeClass("iconic-button-selected")),i.buttonEl.addClass("iconic-button-selected"),this.contentEl.addClass("iconic-highlight-tree"),this.contentEl.removeClasses(["iconic-highlight-name","iconic-highlight-extension"])}),i.buttonEl.addClass("iconic-button-selected"),e.push(i)}).addButton(i=>{i.setButtonText(s.ruleEditor.source.name).onClick(()=>{e.forEach(n=>n.buttonEl.removeClass("iconic-button-selected")),i.buttonEl.addClass("iconic-button-selected"),this.contentEl.removeClasses(["iconic-highlight-tree","iconic-highlight-extension"]),this.contentEl.addClass("iconic-highlight-name")}),e.push(i)}).addButton(i=>{i.setButtonText(s.ruleEditor.source.extension).setDisabled(this.page!=="file").onClick(()=>{e.forEach(n=>n.buttonEl.removeClass("iconic-button-selected")),i.buttonEl.addClass("iconic-button-selected"),this.contentEl.removeClasses(["iconic-highlight-tree","iconic-highlight-name"]),this.contentEl.addClass("iconic-highlight-extension")}),e.push(i)}),new Z.Setting(this.contentEl).setHeading().setName(s.ruleChecker.headingMatches);let t=this.contentEl.createEl("ol",{cls:"iconic-matches"});for(let i of this.matches){let{tree:n,basename:o,extension:r}=this.plugin.splitFilePath(i.id),d=t.createEl("li",{cls:"iconic-match"});n&&d.createSpan({cls:"iconic-match-tree",text:n}),o&&d.createSpan({cls:"iconic-match-name",text:o}),r&&(d.createSpan({text:"."}),d.createSpan({cls:"iconic-match-extension",text:r}))}}};var v=require("obsidian");var L=[...he.keys()],be=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},I=class extends v.Modal{constructor(e,t,i,n){super(e.app);this.colorPickerPaused=!1;this.colorPickerHovered=!1;this.searchResults=[];this.plugin=e,this.iconManager=new be(e),this.items=t,this.icon=this.items.every(o=>o.icon===this.items[0].icon)?this.items[0].icon:void 0,this.color=this.items.every(o=>o.color===this.items[0].color)?this.items[0].color:void 0,this.callback=i,this.multiCallback=n;for(let o of this.plugin.dialogCommands)if(o.callback){let r=this.app.hotkeyManager?.customKeys?.[o.id]??[];for(let d of r)this.scope.register(d.modifiers,d.key,o.callback)}this.scope.register(null,"ArrowUp",o=>this.nudgeFocus(o)),this.scope.register(null,"ArrowDown",o=>this.nudgeFocus(o)),this.scope.register(null,"ArrowLeft",o=>this.nudgeFocus(o)),this.scope.register(null,"ArrowRight",o=>this.nudgeFocus(o)),this.scope.register(null,"Enter",o=>this.confirmFocus(o)),this.scope.register(null," ",o=>this.confirmFocus(o)),this.scope.register(null,"Delete",o=>this.deleteFocus(o)),this.scope.register(null,"Backspace",o=>this.deleteFocus(o)),this.iconManager.setEventListener(this.modalEl,"pointerdown",()=>{this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null}),this.iconManager.setMutationObserver(activeDocument.body,{childList:!0},o=>{for(let r of o.addedNodes)r instanceof HTMLElement&&r.hasClass("tooltip")&&this.colorPickerHovered&&this.updateColorTooltip()})}nudgeFocus(e){if(!(e.target instanceof HTMLElement))return;let t=null;switch(e.key){case"ArrowUp":this.previousColor();return;case"ArrowDown":this.nextColor();return;case"ArrowLeft":{this.searchResultsSetting.settingEl.contains(e.target)&&(e.target!==this.searchResultsSetting.settingEl&&e.target.previousElementSibling?t=e.target.previousElementSibling:e.repeat||(t=this.searchResultsSetting.controlEl.lastElementChild));break}case"ArrowRight":this.searchResultsSetting.settingEl.contains(e.target)&&(e.target!==this.searchResultsSetting.settingEl&&e.target.nextElementSibling?t=e.target.nextElementSibling:e.repeat||(t=this.searchResultsSetting.controlEl.firstElementChild))}t instanceof HTMLElement&&(e.preventDefault(),t.focus())}confirmFocus(e){if(e.target instanceof HTMLElement)if(e.target.hasClass("extra-setting-button"))e.preventDefault(),e.target.click();else if(e.target===this.colorPickerEl){e.preventDefault();let t=this.colorPickerEl.getBoundingClientRect(),i=t.x+t.width/4,n=t.y+t.height/4;this.openColorMenu(i,n)}else e.target===this.searchField.inputEl&&e.key==="Enter"&&this.searchResults.length>0&&(e.preventDefault(),this.closeAndSave(this.searchResults[0][0],this.color))}deleteFocus(e){e.target instanceof HTMLElement&&e.target!==this.searchField.inputEl&&(e.target===this.colorResetButton.extraSettingsEl&&this.colorPickerEl.focus(),this.resetColor())}static openSingle(e,t,i){new I(e,[t],i,null).open()}static openMulti(e,t,i){new I(e,t,null,i).open()}onOpen(){let{dialogState:e}=this.plugin.settings;if(this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-icon-picker"),this.setTitle(this.items.length===1?s.iconPicker.changeIcon:s.iconPicker.changeIcons.replace("{#}",this.items.length.toString())),this.updateOverruleReminder(),this.plugin.settings.showItemName==="on"||v.Platform.isDesktop&&this.plugin.settings.showItemName==="desktop"||v.Platform.isMobile&&this.plugin.settings.showItemName==="mobile"){let r=new v.Setting(this.contentEl).addText(l=>l.setValue(this.items.map(h=>h.name).join(", "))).setDisabled(!0),d=this.items.every(l=>l.category===this.items[0].category)?this.items[0].category:null;if(this.items.length===1)switch(d){default:r.setName(s.categories.item);break;case"app":r.setName(s.categories.appItem);break;case"tab":r.setName(s.categories.tab);break;case"file":r.setName(s.categories.file);break;case"folder":r.setName(s.categories.folder);break;case"group":r.setName(s.categories.group);break;case"search":r.setName(s.categories.search);break;case"graph":r.setName(s.categories.graph);break;case"url":r.setName(s.categories.url);break;case"tag":r.setName(s.categories.tag);break;case"property":r.setName(s.categories.property);break;case"ribbon":r.setName(s.categories.ribbonItem);break;case"rule":r.setName(s.categories.rule);break}else switch(d){default:r.setName(s.categories.items);break;case"app":r.setName(s.categories.appItems);break;case"tab":r.setName(s.categories.tabs);break;case"file":r.setName(s.categories.files);break;case"folder":r.setName(s.categories.folders);break;case"group":r.setName(s.categories.groups);break;case"search":r.setName(s.categories.searches);break;case"graph":r.setName(s.categories.graphs);break;case"url":r.setName(s.categories.urls);break;case"tag":r.setName(s.categories.tags);break;case"property":r.setName(s.categories.properties);break;case"ribbon":r.setName(s.categories.ribbonItems);break;case"rule":r.setName(s.categories.rules);break}}this.searchSetting=new v.Setting(this.contentEl).addExtraButton(r=>{r.setIcon("lucide-rotate-ccw").setTooltip(s.iconPicker.resetColor).onClick(()=>this.resetColor()),r.extraSettingsEl.addClass("iconic-reset-color"),r.extraSettingsEl.toggleClass("iconic-invisible",this.color===null),r.extraSettingsEl.tabIndex=this.color===null?-1:0,this.iconManager.setEventListener(r.extraSettingsEl,"pointerdown",d=>{d.preventDefault()}),this.colorResetButton=r}).addColorPicker(r=>{r.setValueRgb(C.toRgbObject(this.color)).onChange(d=>{this.colorPickerPaused||(this.color=d,this.colorPickerEl.ariaLabel=this.color,this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=0,this.updateSearchResults())}),this.colorPicker=r}).addSearch(r=>{r.setPlaceholder(s.iconPicker.searchIcons).onChange(()=>this.updateSearchResults()),r.inputEl.enterKeyHint="go",this.searchField=r}),v.Platform.isPhone||this.searchSetting.setName(s.iconPicker.search);let i=!1;this.colorPickerEl=this.searchSetting.controlEl.find('input[type="color"]'),this.colorPickerEl.dataset.tooltipDelay="300",this.iconManager.setEventListener(this.colorPickerEl,"pointerenter",()=>this.colorPickerHovered=!0),this.iconManager.setEventListener(this.colorPickerEl,"pointerleave",()=>this.colorPickerHovered=!1),this.iconManager.setEventListener(this.colorPickerEl,"click",r=>{i===!0?i=!1:this.plugin.settings.colorPicker1==="list"&&(this.openColorMenu(r.x,r.y),r.preventDefault())}),this.iconManager.setEventListener(this.colorPickerEl,"contextmenu",r=>{navigator?.vibrate(100),this.plugin.settings.colorPicker2==="rgb"?(i=!0,this.colorPickerEl.click()):this.plugin.settings.colorPicker2==="list"&&(this.openColorMenu(r.x,r.y),r.preventDefault())}),this.iconManager.setEventListener(this.colorPickerEl,"wheel",r=>{r.deltaY+r.deltaX<0?this.previousColor():this.nextColor()},{passive:!0}),this.updateColorPicker(),this.searchResultsSetting=new v.Setting(this.contentEl),this.searchResultsSetting.settingEl.addClass("iconic-search-results"),this.searchResultsSetting.settingEl.tabIndex=0,this.iconManager.setEventListener(this.searchResultsSetting.settingEl,"wheel",r=>{activeDocument.body.hasClass("mod-rtl")?this.searchResultsSetting.settingEl.scrollLeft-=r.deltaY:this.searchResultsSetting.settingEl.scrollLeft+=r.deltaY},{passive:!0}),this.iconManager.setEventListener(this.searchResultsSetting.settingEl,"scroll",()=>{this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null},{passive:!0});let n=this.modalEl.createDiv({cls:"modal-button-container"}),o=v.Platform.isMobile?n.createDiv({cls:"iconic-button-row"}):null;(this.icon!==null||this.color!==null)&&new v.ButtonComponent(o??n).setButtonText(this.items.length===1?s.menu.removeIcon:s.menu.removeIcons.replace("{#}",this.items.length.toString())).onClick(()=>this.closeAndSave(null,null)).buttonEl.addClasses(v.Platform.isPhone?["mod-warning"]:["mod-secondary","mod-destructive"]),this.icon?B.has(this.icon)?(e.iconMode=!0,this.searchField.setValue(B.get(this.icon)??"")):D.has(this.icon)?(e.emojiMode=!0,this.searchField.setValue(D.get(this.icon)??"")):this.searchField.setValue(this.icon):!e.iconMode&&!e.emojiMode&&(e.iconMode=!0),v.Platform.isMobile&&o?(this.mobileModeButton=new v.ButtonComponent(o).onClick(()=>this.toggleMobileSearchMode()),this.iconManager.setEventListener(this.mobileModeButton.buttonEl,"pointerdown",r=>{r.preventDefault()}),this.updateMobileSearchMode()):(this.iconModeButton=new v.ExtraButtonComponent(n).setTooltip(s.iconPicker.toggleIcons,{placement:"top"}).onClick(()=>{e.iconMode=!e.iconMode,this.updateDesktopSearchMode()}),this.iconModeButton.extraSettingsEl.tabIndex=0,this.emojiModeButton=new v.ExtraButtonComponent(n).setTooltip(s.iconPicker.toggleEmojis,{placement:"top"}).onClick(()=>{e.emojiMode=!e.emojiMode,this.updateDesktopSearchMode()}),this.emojiModeButton.extraSettingsEl.tabIndex=0,this.iconManager.setEventListener(this.iconModeButton.extraSettingsEl,"pointerdown",r=>{r.preventDefault()}),this.iconManager.setEventListener(this.emojiModeButton.extraSettingsEl,"pointerdown",r=>{r.preventDefault()}),this.updateDesktopSearchMode()),new v.ButtonComponent(v.Platform.isPhone?this.modalEl:n).setButtonText(s.iconPicker.cancel).onClick(()=>this.close()).buttonEl.addClasses(v.Platform.isPhone?["modal-nav-action","mod-secondary"]:["mod-cancel"]),new v.ButtonComponent(v.Platform.isPhone?this.modalEl:n).setButtonText(s.iconPicker.save).onClick(()=>this.closeAndSave(this.icon,this.color)).buttonEl.addClasses(v.Platform.isPhone?["modal-nav-action","mod-cta"]:["mod-cta"]),activeWindow.requestAnimationFrame(()=>this.searchField.inputEl.select()),this.updateSearchResults()}openColorMenu(e,t){let i=new v.Menu;for(let n of L)i.addItem(o=>{o.setTitle(s.iconPicker.colors[n]).setChecked(n===this.color).setSection("color").onClick(()=>{this.color===n?(this.color=null,this.colorResetButton.extraSettingsEl.addClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=-1):(this.color=n,this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=0),this.updateColorPicker(),this.updateSearchResults()}),this.iconManager.refreshIcon({icon:"lucide-paint-bucket",color:n},o.iconEl)});i.showAtPosition({x:e,y:t})}previousColor(){let e=L.length-1;this.color&&L.includes(this.color)&&this.color!==L.first()&&(e=L.indexOf(this.color)-1),this.color=L[e],this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=0,this.updateColorPicker(),this.updateSearchResults()}nextColor(){let e=0;this.color&&L.includes(this.color)&&this.color!==L.last()&&(e=L.indexOf(this.color)+1),this.color=L[e],this.colorResetButton.extraSettingsEl.removeClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=0,this.updateColorPicker(),this.updateSearchResults()}resetColor(){this.color=null,this.colorResetButton.extraSettingsEl.addClass("iconic-invisible"),this.colorResetButton.extraSettingsEl.tabIndex=-1,this.updateColorPicker(),this.updateColorTooltip(),this.updateSearchResults()}toggleMobileSearchMode(){let{dialogState:e}=this.plugin.settings;e.iconMode&&e.emojiMode?(e.iconMode=!0,e.emojiMode=!1):e.iconMode?(e.iconMode=!1,e.emojiMode=!0):(e.iconMode=!0,e.emojiMode=!0),this.updateMobileSearchMode()}updateMobileSearchMode(){let{dialogState:e}=this.plugin.settings;e.iconMode&&e.emojiMode?(this.setTitle(this.items.length===1?s.iconPicker.changeMix:s.iconPicker.changeMixes.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchMix),this.mobileModeButton?.setButtonText(s.iconPicker.icons)):e.iconMode?(this.setTitle(this.items.length===1?s.iconPicker.changeIcon:s.iconPicker.changeIcons.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchIcons),this.mobileModeButton?.setButtonText(s.iconPicker.emojis)):(this.setTitle(this.items.length===1?s.iconPicker.changeEmoji:s.iconPicker.changeEmojis.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchEmojis),this.mobileModeButton?.setButtonText(s.iconPicker.mixed)),this.updateSearchResults()}updateDesktopSearchMode(){let{dialogState:e}=this.plugin.settings;this.iconModeButton.setIcon(e.iconMode?"lucide-image":"lucide-square"),this.emojiModeButton.setIcon(e.emojiMode?"lucide-smile":"lucide-circle"),this.iconModeButton.extraSettingsEl.toggleClass("iconic-mode-selected",e.iconMode),this.emojiModeButton.extraSettingsEl.toggleClass("iconic-mode-selected",e.emojiMode),e.iconMode&&e.emojiMode?(this.setTitle(this.items.length===1?s.iconPicker.changeMix:s.iconPicker.changeMixes.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchMix)):e.iconMode?(this.setTitle(this.items.length===1?s.iconPicker.changeIcon:s.iconPicker.changeIcons.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchIcons)):(this.setTitle(this.items.length===1?s.iconPicker.changeEmoji:s.iconPicker.changeEmojis.replace("{#}",this.items.length.toString())),this.searchField.setPlaceholder(s.iconPicker.searchEmojis)),this.updateSearchResults()}updateColorPicker(){this.colorPickerPaused=!0,this.colorPicker.setValueRgb(C.toRgbObject(this.color)),this.colorPickerPaused=!1,this.color?L.includes(this.color)?this.colorPickerEl.ariaLabel=s.iconPicker.colors[this.color]:this.colorPickerEl.ariaLabel=this.color:this.colorPickerEl.ariaLabel=s.iconPicker.changeColor,this.colorPickerHovered&&this.updateColorTooltip()}updateColorTooltip(){let e=activeDocument.body.find(":scope > .tooltip");e&&e.firstChild&&(e.style.removeProperty("width"),e.firstChild.nodeValue=this.colorPickerEl.ariaLabel)}setMobileTooltip(e,t){this.mobileTooltipEl?.remove(),this.mobileTooltipEl=null;let i=e.getBoundingClientRect(),n=Math.max(0,i.left+i.width/2),o=i.top-48;this.mobileTooltipEl=activeDocument.body.createDiv({cls:["tooltip","mod-top"],text:t}),this.mobileTooltipEl.createDiv("tooltip-arrow"),this.mobileTooltipEl.style.fontSize="var(--font-ui-medium)",this.mobileTooltipEl.style.left=n+"px",this.mobileTooltipEl.style.top=o+"px",this.mobileTooltipEl.style.width="auto",this.mobileTooltipEl.style.whiteSpace="nowrap";let r=this.mobileTooltipEl.getBoundingClientRect();r.left<0&&(this.mobileTooltipEl.style.left=n+r.left+"px")}updateSearchResults(){let e=this.searchField.getValue(),t=(0,v.prepareFuzzySearch)(e),i=[],n=[...this.plugin.settings.dialogState.iconMode?B:[],...this.plugin.settings.dialogState.emojiMode?D:[]];if(e)for(let[g,m]of n)if(e===g)i.push([0,[g,m]]);else{let c=t(m);c&&i.push([c.score,[g,m]])}i.sort(([g],[m])=>g>m?-1:1),this.searchResults.length=0;for(let[,g]of i)if(this.searchResults.push(g),this.searchResults.length===this.plugin.settings.maxSearchResults)break;let{controlEl:o,settingEl:r}=this.searchResultsSetting,d=activeDocument.activeElement,l=d?o.indexOf(d):-1,h=r.scrollLeft;this.searchResultsSetting.clear();for(let g of this.searchResults){let[m,c]=g;this.searchResultsSetting.addExtraButton(u=>{u.setTooltip(c,{delay:300});let w=u.extraSettingsEl;w.addClass("iconic-search-result"),w.tabIndex=-1,this.iconManager.refreshIcon({icon:m,color:this.color??null},w,()=>{this.closeAndSave(m,this.color)}),v.Platform.isMobile&&this.iconManager.setEventListener(w,"contextmenu",()=>{navigator?.vibrate(100),this.setMobileTooltip(w,c)})})}if(l>-1){let g=o.children[l];g instanceof HTMLElement&&g.focus()}r.scrollLeft=h,this.searchResults.length===0&&this.searchResultsSetting.addExtraButton(g=>{g.extraSettingsEl.addClasses(["iconic-invisible","iconic-search-result"])})}updateOverruleReminder(){this.overruleEl?.remove();let e,t=null;if(this.items.length>1){for(let i of this.items)if(t=this.plugin.ruleManager.checkRuling(i.category,i.id),e=i.category,t)break}else{let i=this.items[0];t=this.plugin.ruleManager.checkRuling(i.category,i.id),e=i.category}if(t){let i=C.toRgbObject(this.items.length===1?t.color:"gray"),n=`${i.r}, ${i.g}, ${i.b}`;this.overruleEl=createDiv({cls:"callout",attr:{style:"--callout-color: "+n}});let o=this.overruleEl.createDiv({cls:"callout-title"}),r=o.createDiv({cls:"callout-icon"}),d=o.createDiv({cls:"callout-title-inner"});if(this.items.length>1)this.iconManager.refreshIcon({icon:"lucide-book-image",color:"gray"},r),d.setText(s.iconPicker.overrules);else{this.iconManager.refreshIcon(t,r),d.setText(s.iconPicker.overrulePrefix);let l=d.createEl("a",{text:t.name});d.appendText(s.iconPicker.overruleSuffix),this.iconManager.setEventListener(l,"click",()=>{e&&t&&R.open(this.plugin,e,t,h=>{if(!t)return;(h?this.plugin.ruleManager.saveRule(e,h):this.plugin.ruleManager.deleteRule(e,t.id))&&(e==="file"&&this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()),this.updateOverruleReminder()})})}this.contentEl.prepend(this.overruleEl)}}closeAndSave(e,t){this.callback?this.callback(e??null,t??null):this.multiCallback&&this.multiCallback(e,t),this.close()}onClose(){this.contentEl.empty(),this.mobileTooltipEl?.remove(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers(),this.plugin.saveSettings()}};var x=class{constructor(a){this.options=a}has(a){return this.options.hasOwnProperty(a)}get(){let a={};for(let[e,t]of Object.entries(this.options))a[e]=t();return a}plus(a){return new x({...this.options,...a.options})}},xe=new x({icon:()=>s.ruleEditor.source.icon,color:()=>s.ruleEditor.source.color,name:()=>s.ruleEditor.source.name,filename:()=>s.ruleEditor.source.filename,extension:()=>s.ruleEditor.source.extension,tree:()=>s.ruleEditor.source.tree,path:()=>s.ruleEditor.source.path,headings:()=>s.ruleEditor.source.headings,links:()=>s.ruleEditor.source.links,tags:()=>s.ruleEditor.source.tags,properties:()=>s.ruleEditor.source.properties,created:()=>s.ruleEditor.source.created,modified:()=>s.ruleEditor.source.modified,clock:()=>s.ruleEditor.source.clock}),et=new x({icon:()=>s.ruleEditor.source.icon,color:()=>s.ruleEditor.source.color,name:()=>s.ruleEditor.source.name,tree:()=>s.ruleEditor.source.tree,path:()=>s.ruleEditor.source.path,created:()=>s.ruleEditor.source.created,modified:()=>s.ruleEditor.source.modified,clock:()=>s.ruleEditor.source.clock}),X=new x({is:()=>s.ruleEditor.operator.is,"!is":()=>s.ruleEditor.operator["!is"],contains:()=>s.ruleEditor.operator.contains,startsWith:()=>s.ruleEditor.operator.startsWith,endsWith:()=>s.ruleEditor.operator.endsWith,matches:()=>s.ruleEditor.operator.matches,"!contains":()=>s.ruleEditor.operator["!contains"],"!startsWith":()=>s.ruleEditor.operator["!startsWith"],"!endsWith":()=>s.ruleEditor.operator["!endsWith"],"!matches":()=>s.ruleEditor.operator["!matches"]}),J=new x({includes:()=>s.ruleEditor.operator.includes,"!includes":()=>s.ruleEditor.operator["!includes"],allAre:()=>s.ruleEditor.operator.allAre,allContain:()=>s.ruleEditor.operator.allContain,allStartWith:()=>s.ruleEditor.operator.allStartWith,allEndWith:()=>s.ruleEditor.operator.allEndWith,allMatch:()=>s.ruleEditor.operator.allMatch,anyContain:()=>s.ruleEditor.operator.anyContain,anyStartWith:()=>s.ruleEditor.operator.anyStartWith,anyEndWith:()=>s.ruleEditor.operator.anyEndWith,anyMatch:()=>s.ruleEditor.operator.anyMatch,noneContain:()=>s.ruleEditor.operator.noneContain,noneStartWith:()=>s.ruleEditor.operator.noneStartWith,noneEndWith:()=>s.ruleEditor.operator.noneEndWith,noneMatch:()=>s.ruleEditor.operator.noneMatch,countIs:()=>s.ruleEditor.operator.countIs,"!countIs":()=>s.ruleEditor.operator["!countIs"],countIsLess:()=>s.ruleEditor.operator.countIsLess,countIsMore:()=>s.ruleEditor.operator.countIsMore}),tt=new x({equals:()=>s.ruleEditor.operator.equals,"!equals":()=>s.ruleEditor.operator["!equals"],isLess:()=>s.ruleEditor.operator.isLess,isMore:()=>s.ruleEditor.operator.isMore,isDivisible:()=>s.ruleEditor.operator.isDivisible,"!isLess":()=>s.ruleEditor.operator["!isLess"],"!isMore":()=>s.ruleEditor.operator["!isMore"],"!isDivisible":()=>s.ruleEditor.operator["!isDivisible"]}),it=new x({isTrue:()=>s.ruleEditor.operator.isTrue,"!isTrue":()=>s.ruleEditor.operator["!isTrue"],isFalse:()=>s.ruleEditor.operator.isFalse,"!isFalse":()=>s.ruleEditor.operator["!isFalse"]}),st=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,isNow:()=>s.ruleEditor.operator.isNow,"!isNow":()=>s.ruleEditor.operator["!isNow"],isBeforeNow:()=>s.ruleEditor.operator.isBeforeNow,isAfterNow:()=>s.ruleEditor.operator.isAfterNow,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,timeIsNow:()=>s.ruleEditor.operator.timeIsNow,"!timeIsNow":()=>s.ruleEditor.operator["!timeIsNow"],timeIsBeforeNow:()=>s.ruleEditor.operator.timeIsBeforeNow,timeIsAfterNow:()=>s.ruleEditor.operator.timeIsAfterNow,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isBeforeToday:()=>s.ruleEditor.operator.isBeforeToday,isAfterToday:()=>s.ruleEditor.operator.isAfterToday,isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isLessDaysAway:()=>s.ruleEditor.operator.isLessDaysAway,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,isMoreDaysAway:()=>s.ruleEditor.operator.isMoreDaysAway,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),nt=new x({dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator.dateIs,dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isBeforeToday:()=>s.ruleEditor.operator.isBeforeToday,isAfterToday:()=>s.ruleEditor.operator.isAfterToday,isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isLessDaysAway:()=>s.ruleEditor.operator.isLessDaysAway,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,isMoreDaysAway:()=>s.ruleEditor.operator.isMoreDaysAway,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),Te=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,timeIsNow:()=>s.ruleEditor.operator.timeIsNow,"!timeIsNow":()=>s.ruleEditor.operator["!timeIsNow"],timeIsBeforeNow:()=>s.ruleEditor.operator.timeIsBeforeNow,timeIsAfterNow:()=>s.ruleEditor.operator.timeIsAfterNow,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,isToday:()=>s.ruleEditor.operator.isToday,"!isToday":()=>s.ruleEditor.operator["!isToday"],isLessDaysAgo:()=>s.ruleEditor.operator.isLessDaysAgo,isMoreDaysAgo:()=>s.ruleEditor.operator.isMoreDaysAgo,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),ot=new x({datetimeIs:()=>s.ruleEditor.operator.is,"!datetimeIs":()=>s.ruleEditor.operator["!is"],datetimeIsBefore:()=>s.ruleEditor.operator.isBefore,datetimeIsAfter:()=>s.ruleEditor.operator.isAfter,timeIs:()=>s.ruleEditor.operator.timeIs,"!timeIs":()=>s.ruleEditor.operator["!timeIs"],timeIsBefore:()=>s.ruleEditor.operator.timeIsBefore,timeIsAfter:()=>s.ruleEditor.operator.timeIsAfter,dateIs:()=>s.ruleEditor.operator.dateIs,"!dateIs":()=>s.ruleEditor.operator["!dateIs"],dateIsBefore:()=>s.ruleEditor.operator.dateIsBefore,dateIsAfter:()=>s.ruleEditor.operator.dateIsAfter,weekdayIs:()=>s.ruleEditor.operator.weekdayIs,"!weekdayIs":()=>s.ruleEditor.operator["!weekdayIs"],weekdayIsBefore:()=>s.ruleEditor.operator.weekdayIsBefore,weekdayIsAfter:()=>s.ruleEditor.operator.weekdayIsAfter,monthdayIs:()=>s.ruleEditor.operator.monthdayIs,"!monthdayIs":()=>s.ruleEditor.operator["!monthdayIs"],monthdayIsBefore:()=>s.ruleEditor.operator.monthdayIsBefore,monthdayIsAfter:()=>s.ruleEditor.operator.monthdayIsAfter,monthIs:()=>s.ruleEditor.operator.monthIs,"!monthIs":()=>s.ruleEditor.operator["!monthIs"],monthIsBefore:()=>s.ruleEditor.operator.monthIsBefore,monthIsAfter:()=>s.ruleEditor.operator.monthIsAfter,yearIs:()=>s.ruleEditor.operator.yearIs,"!yearIs":()=>s.ruleEditor.operator["!yearIs"],yearIsBefore:()=>s.ruleEditor.operator.yearIsBefore,yearIsAfter:()=>s.ruleEditor.operator.yearIsAfter}),at=new x({iconIs:()=>s.ruleEditor.operator.iconIs,"!iconIs":()=>s.ruleEditor.operator["!iconIs"],nameIs:()=>s.ruleEditor.operator.nameIs,"!nameIs":()=>s.ruleEditor.operator["!nameIs"],nameContains:()=>s.ruleEditor.operator.nameContains,nameStartsWith:()=>s.ruleEditor.operator.nameStartsWith,nameEndsWith:()=>s.ruleEditor.operator.nameEndsWith,nameMatches:()=>s.ruleEditor.operator.nameMatches,"!nameContains":()=>s.ruleEditor.operator["!nameContains"],"!nameStartsWith":()=>s.ruleEditor.operator["!nameStartsWith"],"!nameEndsWith":()=>s.ruleEditor.operator["!nameEndsWith"],"!nameMatches":()=>s.ruleEditor.operator["!nameMatches"]}),rt=new x({colorIs:()=>s.ruleEditor.operator.colorIs,"!colorIs":()=>s.ruleEditor.operator["!colorIs"],hexIs:()=>s.ruleEditor.operator.hexIs,"!hexIs":()=>s.ruleEditor.operator["!hexIs"]}),Ie=new x({hasValue:()=>s.ruleEditor.operator.hasValue,"!hasValue":()=>s.ruleEditor.operator["!hasValue"]}),lt=new x({hasProperty:()=>s.ruleEditor.operator.hasProperty,"!hasProperty":()=>s.ruleEditor.operator["!hasProperty"]}),ct=new x({1:()=>s.ruleEditor.weekday[1],2:()=>s.ruleEditor.weekday[2],3:()=>s.ruleEditor.weekday[3],4:()=>s.ruleEditor.weekday[4],5:()=>s.ruleEditor.weekday[5],6:()=>s.ruleEditor.weekday[6],7:()=>s.ruleEditor.weekday[7]}),dt=new x({1:()=>s.ruleEditor.month[1],2:()=>s.ruleEditor.month[2],3:()=>s.ruleEditor.month[3],4:()=>s.ruleEditor.month[4],5:()=>s.ruleEditor.month[5],6:()=>s.ruleEditor.month[6],7:()=>s.ruleEditor.month[7],8:()=>s.ruleEditor.month[8],9:()=>s.ruleEditor.month[9],10:()=>s.ruleEditor.month[10],11:()=>s.ruleEditor.month[11],12:()=>s.ruleEditor.month[12]}),ht=new x({red:()=>s.iconPicker.colors.red,orange:()=>s.iconPicker.colors.orange,yellow:()=>s.iconPicker.colors.yellow,green:()=>s.iconPicker.colors.green,cyan:()=>s.iconPicker.colors.cyan,blue:()=>s.iconPicker.colors.blue,purple:()=>s.iconPicker.colors.purple,pink:()=>s.iconPicker.colors.pink,gray:()=>s.iconPicker.colors.gray}),ut={icon:at.plus(Ie),color:rt.plus(Ie),name:X,filename:X,extension:X,tree:X,path:X,headings:J,links:J,tags:J,created:Te,modified:Te,clock:ot},gt={is:"text","!is":"text",contains:"text",startsWith:"text",endsWith:"text",matches:"text","!contains":"text","!startsWith":"text","!endsWith":"text","!matches":"text",includes:"text","!includes":"text",allAre:"text",allContain:"text",allStartWith:"text",allEndWith:"text",allMatch:"text",anyContain:"text",anyStartWith:"text",anyEndWith:"text",anyMatch:"text",noneContain:"text",noneStartWith:"text",noneEndWith:"text",noneMatch:"text",countIs:"number",countIsLess:"number",countIsMore:"number",equals:"number","!equals":"number",isLess:"number",isMore:"number",isDivisible:"number","!isLess":"number","!isMore":"number","!isDivisible":"number",isLessDaysAgo:"number",isLessDaysAway:"number",isMoreDaysAgo:"number",isMoreDaysAway:"number",datetimeIs:"datetime","!datetimeIs":"datetime",datetimeIsBefore:"datetime",datetimeIsAfter:"datetime",timeIs:"time","!timeIs":"time",timeIsBefore:"time",timeIsAfter:"time",dateIs:"date","!dateIs":"date",dateIsBefore:"date",dateIsAfter:"date",weekdayIs:"weekday","!weekdayIs":"weekday",weekdayIsBefore:"weekday",weekdayIsAfter:"weekday",monthdayIs:"number","!monthdayIs":"number",monthdayIsBefore:"number",monthdayIsAfter:"number",monthIs:"month","!monthIs":"month",monthIsBefore:"month",monthIsAfter:"month",yearIs:"number","!yearIs":"number",yearIsBefore:"number",yearIsAfter:"number",iconIs:"text","!iconIs":"text",nameIs:"text","!nameIs":"text",nameContains:"text",nameStartsWith:"text",nameEndsWith:"text",nameMatches:"text","!nameContains":"text","!nameStartsWith":"text","!nameEndsWith":"text","!nameMatches":"text",colorIs:"color","!colorIs":"color",hexIs:"text","!hexIs":"text"},ke=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},R=class extends M.Modal{constructor(e,t,i,n){super(e.app);this.matches=[];this.condEls=[];this.plugin=e,this.iconManager=new ke(e),this.page=t,this.rule=window.structuredClone(i),this.callback=n;for(let o of this.plugin.dialogCommands)if(o.callback){let r=this.app.hotkeyManager?.customKeys?.[o.id]??[];for(let d of r)this.scope.register(d.modifiers,d.key,o.callback)}}static open(e,t,i,n){new R(e,t,i,n).open()}onOpen(){switch(this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-rule-editor"),this.page){case"file":this.setTitle(s.ruleEditor.fileRule);break;case"folder":this.setTitle(s.ruleEditor.folderRule);break;default:this.setTitle(s.categories.rule);break}let e=new M.Setting(this.contentEl);e.infoEl.remove(),e.addExtraButton(o=>{o.setIcon(this.rule.icon??this.plugin.ruleManager.getPageIcon(this.page)).setTooltip(s.iconPicker.changeIcon).onClick(()=>I.openSingle(this.plugin,this.rule,(r,d)=>{this.iconManager.refreshIcon({icon:r??this.plugin.ruleManager.getPageIcon(this.page),color:d},o.extraSettingsEl),this.rule.icon=r,this.rule.color=d})),this.iconManager.refreshIcon({icon:this.rule.icon??this.plugin.ruleManager.getPageIcon(this.page),color:this.rule.color},o.extraSettingsEl),o.extraSettingsEl.addClass("iconic-rule-icon")}),e.addText(o=>{o.setValue(this.rule.name).setPlaceholder(s.ruleEditor.enterName),this.iconManager.setEventListener(o.inputEl,"keydown",r=>{r.key==="Enter"&&this.closeAndSave(this.rule)}),this.nameField=o}),e.addToggle(o=>{o.setValue(this.rule.enabled).onChange(r=>this.rule.enabled=r)});let t=[];new M.Setting(this.contentEl).setName(s.ruleEditor.matchConditions.name).setDesc(s.ruleEditor.matchConditions.desc).addButton(o=>{o.setButtonText(s.ruleEditor.matchConditions.all).setTooltip("All conditions must match").buttonEl.toggleClass("iconic-button-selected",this.rule.match==="all"),this.iconManager.setEventListener(o.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("iconic-button-selected")),o.buttonEl.addClass("iconic-button-selected"),this.rule.match="all",this.updateMatchesButton()}),t.push(o.buttonEl)}).addButton(o=>{o.setButtonText(s.ruleEditor.matchConditions.any).setTooltip("At least 1 condition must match").buttonEl.toggleClass("iconic-button-selected",this.rule.match==="any"),this.iconManager.setEventListener(o.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("iconic-button-selected")),o.buttonEl.addClass("iconic-button-selected"),this.rule.match="any",this.updateMatchesButton()}),t.push(o.buttonEl)}).addButton(o=>{o.setButtonText(s.ruleEditor.matchConditions.none).setTooltip("All conditions must fail"),o.buttonEl.toggleClass("iconic-button-selected",this.rule.match==="none"),this.iconManager.setEventListener(o.buttonEl,"pointerdown",()=>{t.forEach(r=>r.removeClass("iconic-button-selected")),o.buttonEl.addClass("iconic-button-selected"),this.rule.match="none",this.updateMatchesButton()}),t.push(o.buttonEl)}),new M.Setting(this.contentEl).setHeading().setName(s.ruleEditor.conditions);for(let o of this.rule.conditions)this.appendCondition(o);this.addCondSetting=new M.Setting(this.contentEl).addExtraButton(o=>{o.setIcon("lucide-circle-plus").setTooltip(s.ruleEditor.addCondition).onClick(()=>this.newCondition()).extraSettingsEl.style.color=C.toRgb("green")}),this.addCondSetting.settingEl.addClass("iconic-add"),this.addCondSetting.infoEl.remove();let i=this.modalEl.createDiv({cls:"modal-button-container"}),n=M.Platform.isMobile?i.createDiv({cls:"iconic-button-row"}):null;new M.ButtonComponent(n??i).setButtonText(s.ruleEditor.removeRule).onClick(()=>this.closeAndSave(null)).buttonEl.addClasses(M.Platform.isPhone?["mod-warning"]:["mod-secondary","mod-destructive"]),this.matchesButton=new M.ButtonComponent(n||i).setButtonText(s.ruleEditor.buttonNoMatches).onClick(()=>K.open(this.plugin,this.page,this.matches)).setDisabled(this.rule.conditions===null).setTooltip(this.rule.conditions===null?"No conditions added":"",{placement:"top",delay:100}),new M.ButtonComponent(M.Platform.isPhone?this.modalEl:i).setButtonText(s.iconPicker.cancel).onClick(()=>this.close()).buttonEl.addClasses(M.Platform.isPhone?["modal-nav-action","mod-secondary"]:["mod-cancel"]),new M.ButtonComponent(M.Platform.isPhone?this.modalEl:i).setButtonText(s.iconPicker.save).onClick(()=>this.closeAndSave(this.rule)).buttonEl.addClasses(M.Platform.isPhone?["modal-nav-action","mod-cta"]:["mod-cta"]),this.updateMatchesButton()}appendCondition(e){let t=new ye(this.contentEl,this.plugin,this.iconManager,this.page,e,this.condEls,()=>this.updateMatchesButton(),i=>this.moveCondition(e,i),()=>this.removeCondition(e));this.condEls.push(t.settingEl),this.addCondSetting&&t.settingEl.insertAdjacentElement("afterend",this.addCondSetting.settingEl),this.updateMatchesButton()}newCondition(){let e=this.rule.conditions.last(),t=e?{source:e.source,operator:e.operator,value:""}:{source:"name",operator:"contains",value:""};this.rule.conditions.push(t),this.appendCondition(t),this.addCondSetting&&this.addCondSetting.settingEl.scrollIntoView({behavior:"smooth"})}moveCondition(e,t){let i=this.rule.conditions.indexOf(e);i<0||(this.rule.conditions.splice(i,1),this.rule.conditions.splice(t,0,e))}removeCondition(e){this.rule.conditions.remove(e),this.updateMatchesButton()}async updateMatchesButton(){if(!this.matchesButton)return;let e=setTimeout(()=>{this.matchesButton.setLoading(!0),this.matchesButton.setDisabled(!0)},100);switch(this.page){case"file":this.matches=this.plugin.ruleManager.judgeFiles(this.rule,new Date,!0);break;case"folder":this.matches=this.plugin.ruleManager.judgeFolders(this.rule,new Date,!0);break}switch(clearTimeout(e),this.matches.length){case 0:this.matchesButton.setButtonText(s.ruleEditor.buttonNoMatches);break;case 1:this.matchesButton.setButtonText(s.ruleEditor.buttonMatch);break;default:{this.matchesButton.setButtonText(s.ruleEditor.buttonMatches.replace("{#}",this.matches.length.toString()));break}}this.matchesButton.setLoading(!1),this.matchesButton.setDisabled(this.matches.length===0)}closeAndSave(e){this.close(),e&&(e.name=this.nameField.getValue()||e.name),this.callback&&this.callback(e)}onClose(){this.condEls.length=0,this.contentEl.empty(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers();for(let e of activeDocument.body.findAll(":scope > .drag-reorder-ghost"))e.remove()}},ye=class extends M.Setting{constructor(e,t,i,n,o,r,d,l,h){super(e);this.plugin=t,this.page=n,this.condition=o,this.condEls=r,this.onChange=d,this.onMove=l,this.onRemove=h,this.settingEl.addClass("iconic-condition"),this.infoEl.remove(),this.addExtraButton(c=>{c.setIcon("lucide-circle-minus").setTooltip(s.ruleEditor.removeCondition).onClick(()=>{this.settingEl.remove(),this.onRemove()}).extraSettingsEl.style.color=C.toRgb("red"),this.removeButton=c});let g=M.Platform.isPhone?this.controlEl.createDiv({cls:"iconic-control-column"}):this.controlEl,m=M.Platform.isPhone?g.createDiv({cls:"iconic-dropdown-row"}):this.controlEl;this.srcDropdown=new M.DropdownComponent(m).onChange(c=>{this.condition.source=c,c==="properties"||c.startsWith("property:")?this.refreshPropertyDropdowns():this.refreshDropdowns()}),this.opDropdown=new M.DropdownComponent(m).onChange(c=>{this.condition.operator=c,this.refreshValue()}),this.valField=new M.TextComponent(g).onChange(c=>{this.condition.value=c,this.onChange()}),this.valDropdown=new M.DropdownComponent(g).onChange(c=>{this.condition.value=c,this.onChange()}),this.addExtraButton(c=>{c.setIcon("lucide-menu").setTooltip(s.rulePicker.drag).extraSettingsEl.addClass("iconic-drag"),i.setEventListener(c.extraSettingsEl,"pointerdown",()=>{this.settingEl.draggable=!0}),i.setEventListener(this.settingEl,"dragstart",u=>{this.onDragStart(u.clientX,u.clientY,c.extraSettingsEl)}),i.setEventListener(this.settingEl,"drag",u=>{this.onDrag(u.clientX,u.clientY,c.extraSettingsEl)}),i.setEventListener(this.settingEl,"dragend",()=>this.onDragEnd()),i.setEventListener(c.extraSettingsEl,"touchstart",u=>{u.preventDefault();let w=u.targetTouches[0];this.onDragStart(w.clientX,w.clientY,c.extraSettingsEl)}),i.setEventListener(c.extraSettingsEl,"touchmove",u=>{u.preventDefault();let w=u.targetTouches[0];this.onDrag(w.clientX,w.clientY,c.extraSettingsEl)}),i.setEventListener(c.extraSettingsEl,"touchend",()=>this.onDragEnd()),i.setEventListener(c.extraSettingsEl,"touchcancel",()=>this.onDragEnd())}),this.condition.source.startsWith("property:")?this.refreshPropertyDropdowns():this.refreshDropdowns()}onDragStart(e,t,i){navigator?.vibrate(100),this.ghostCondEl=activeDocument.body.createDiv({cls:"drag-reorder-ghost"}),this.ghostCondEl.setCssStyles({width:this.settingEl.clientWidth+"px",height:this.settingEl.clientHeight+"px",left:activeDocument.body.hasClass("mod-rtl")?e-i.clientWidth/2+"px":e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"}),this.ghostCondEl.appendChild(this.settingEl.cloneNode(!0));let n=this.ghostCondEl.findAll("select");n[0]&&(n[0].value=this.condition.source),n[1]&&(n[1].value=this.condition.operator),this.settingEl.addClass("drag-ghost-hidden"),this.settingEl.style.opacity="0%",activeWindow.requestAnimationFrame(()=>this.settingEl.style.removeProperty("opacity"))}onDrag(e,t,i){if(e===0&&t===0)return;this.ghostCondEl?.setCssStyles({left:activeDocument.body.hasClass("mod-rtl")?e-i.clientWidth/2+"px":e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"});let n=this.condEls.indexOf(this.settingEl),o=this.condEls[n-1],r=o?.clientHeight*.25||0;o&&td.getBoundingClientRect().top+l&&(navigator?.vibrate(100),d.insertAdjacentElement("afterend",this.settingEl),this.condEls.splice(n,1),this.condEls.splice(n+1,0,this.settingEl))}onDragEnd(){this.ghostCondEl?.remove(),delete this.ghostCondEl,this.settingEl.removeClass("drag-ghost-hidden"),this.settingEl.removeAttribute("draggable");let e=this.condEls.indexOf(this.settingEl);e>-1&&this.onMove(e)}refreshDropdowns(){let e;switch(this.page){default:e=xe;break;case"file":e=xe;break;case"folder":e=et;break}this.srcDropdown.selectEl.empty(),this.srcDropdown.addOptions(e?.get()??{}),e.has(this.condition.source)||(this.condition.source=this.srcDropdown.getValue()),this.srcDropdown.setValue(this.condition.source);let t=ut[this.condition.source];this.opDropdown.selectEl.empty(),this.opDropdown.addOptions(t?.get()??{}),t.has(this.condition.operator)||(this.condition.operator=this.opDropdown.getValue()),this.opDropdown.setValue(this.condition.operator),this.refreshValue()}refreshPropertyDropdowns(){this.removeButton.setIcon("lucide-archive"),this.removeButton.setTooltip(s.ruleEditor.resetCondition),this.removeButton.onClick(()=>{this.removeButton.setIcon("lucide-circle-minus").setTooltip(s.ruleEditor.removeCondition).onClick(()=>{this.settingEl.remove(),this.onRemove()}),this.condition.source="name",this.condition.operator="is",this.refreshDropdowns()});let e=this.plugin.getPropertyItems().sort((r,d)=>r.id["property:"+r.id,()=>r.name])));this.srcDropdown.selectEl.empty(),this.srcDropdown.addOptions(t.get()),this.condition.source=t.has(this.condition.source)?this.condition.source:this.srcDropdown.getValue(),this.srcDropdown.setValue(this.condition.source);let i=this.condition.source.replace("property:",""),n=this.plugin.getPropertyItem(i);if(!n)return;let o;switch(n.type){default:o=X;break;case"multitext":o=J;break;case"number":o=tt;break;case"checkbox":o=it;break;case"date":o=nt;break;case"datetime":o=st;break;case"aliases":o=J;break;case"tags":o=J;break}o=o.plus(Ie).plus(lt),this.opDropdown.selectEl.empty(),this.opDropdown.addOptions(o.get()),this.condition.operator=o.has(this.condition.operator)?this.condition.operator:this.opDropdown.getValue(),this.opDropdown.setValue(this.condition.operator),this.refreshValue()}refreshValue(){let e=!this.valField.getValue()&&!this.valDropdown.getValue(),t=this.condition.operator.replace("!",""),i,n,o;switch(gt[t]){case"text":{switch(i="text",t){default:n=s.ruleEditor.enterValue;break;case"matches":n=s.ruleEditor.enterRegex;break;case"anyMatch":n=s.ruleEditor.enterRegex;break;case"allMatch":n=s.ruleEditor.enterRegex;break;case"noneMatch":n=s.ruleEditor.enterRegex;break;case"nameMatches":n=s.ruleEditor.enterRegex;break;case"colorHexIs":n=s.ruleEditor.enterHexCode;break}break}case"number":{i="number",n=s.ruleEditor.enterNumber;break}case"datetime":i="datetime-local";break;case"date":i="date";break;case"time":i="time";break;case"weekday":o=ct;break;case"month":o=dt;break;case"color":o=ht;break}i?((i!==this.valField.inputEl.type||!this.valField.inputEl.isShown())&&!e&&(this.condition.value=""),this.valField.inputEl.type=i,this.valField.setPlaceholder(n??""),this.valField.setValue(this.condition.value),this.valField.inputEl.show()):this.valField.inputEl.hide(),o?(this.valOptions?(this.valOptions!==o||!this.valDropdown.selectEl.isShown())&&(this.valDropdown.selectEl.empty(),this.valDropdown.addOptions(o.get()),this.condition.value=this.valDropdown.getValue()):(this.valDropdown.addOptions(o.get()),o.has(this.condition.value)?this.valDropdown.setValue(this.condition.value):this.condition.value=this.valDropdown.getValue()),this.valOptions=o,this.valDropdown.selectEl.show()):this.valDropdown.selectEl.hide(),this.onChange()}};var ve=class extends E{constructor(a){super(a)}refreshIcon(a,e,t){super.refreshIcon(a,e,t)}setEventListener(a,e,t,i){super.setEventListener(a,e,t,i)}stopEventListeners(){super.stopEventListeners()}setMutationObserver(a,e,t){super.setMutationObserver(a,e,t)}stopMutationObservers(){super.stopMutationObservers()}},H=class extends q.Modal{constructor(e){super(e.app);this.ruleEls=[];this.plugin=e,this.iconManager=new ve(e);for(let t of this.plugin.dialogCommands)if(t.callback){let i=this.app.hotkeyManager?.customKeys?.[t.id]??[];for(let n of i)this.scope.register(n.modifiers,n.key,t.callback)}}static open(e){e.ruleManager&&new H(e).open()}onOpen(){let{dialogState:e}=this.plugin.settings;this.containerEl.addClass("mod-confirmation"),this.modalEl.addClass("iconic-rule-picker"),this.setTitle(s.settings.rulebook.name),new q.Setting(this.contentEl).setName(s.rulePicker.selectPage).addDropdown(i=>{i.addOptions({file:s.rulePicker.fileRules,folder:s.rulePicker.folderRules}).onChange(n=>{e.rulePage=n,this.refreshRules()}).setValue(e.rulePage)}),new q.Setting(this.contentEl).setHeading().setName(s.rulePicker.rules),this.addRuleSetting=new q.Setting(this.contentEl).addExtraButton(i=>{i.setIcon("lucide-circle-plus").setTooltip(s.rulePicker.addRule).onClick(()=>this.addRule()).extraSettingsEl.style.color=C.toRgb("green")}),this.addRuleSetting.settingEl.addClass("iconic-add"),this.addRuleSetting.infoEl.remove();let t=[];switch(e.rulePage){case"file":t.push(...this.plugin.ruleManager.getRules(e.rulePage));break;case"folder":t.push(...this.plugin.ruleManager.getRules(e.rulePage));break}for(let i of t)this.appendRule(i)}refreshRules(){for(let e of this.ruleEls)e.remove();this.ruleEls.length=0;for(let e of this.plugin.ruleManager.getRules(this.plugin.settings.dialogState.rulePage))this.appendRule(e)}refreshPageManagers(){switch(this.plugin.settings.dialogState.rulePage){case"file":this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons();case"folder":this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}}appendRule(e,t){let i=new Ee(this.contentEl,this.plugin,this.iconManager,this.plugin.settings.dialogState.rulePage,e,this.ruleEls,()=>this.refreshPageManagers(),t);this.ruleEls.push(i.settingEl),this.iconManager.setEventListener(i.settingEl,"contextmenu",n=>{let o=new q.Menu;o.addItem(r=>{r.setIcon("lucide-trash-2").setTitle(s.rulePicker.removeRule).onClick(()=>{i.settingEl.remove(),this.ruleEls.remove(i.settingEl);let d=this.plugin.settings.dialogState.rulePage;this.plugin.ruleManager.deleteRule(d,e.id)&&this.refreshPageManagers()})}),o.showAtMouseEvent(n)}),i.settingEl.insertAdjacentElement("afterend",this.addRuleSetting.settingEl)}addRule(){let e=this.plugin.ruleManager.newRule(this.plugin.settings.dialogState.rulePage);this.appendRule(e,!0),this.addRuleSetting.settingEl.scrollIntoView({behavior:"smooth"})}onClose(){this.ruleEls.length=0,this.contentEl.empty(),this.iconManager.stopEventListeners(),this.iconManager.stopMutationObservers();for(let e of activeDocument.body.findAll(":scope > .drag-reorder-ghost"))e.remove();this.plugin.saveSettings()}},Ee=class extends q.Setting{constructor(e,t,i,n,o,r,d,l=!1){super(e);this.plugin=t,this.page=n,this.rule=o,this.ruleEls=r,this.onRulingChange=d,this.settingEl.addClass("iconic-rule");let h,g;this.addExtraButton(m=>{m.setTooltip(s.iconPicker.changeIcon).onClick(()=>I.openSingle(t,o,(c,u)=>{i.refreshIcon({icon:c??t.ruleManager.getPageIcon(n),color:u},m.extraSettingsEl),o.icon=c,o.color=u,t.ruleManager.saveRule(n,o)&&d()})),i.refreshIcon({icon:o.icon??t.ruleManager.getPageIcon(n),color:o.color},m.extraSettingsEl),m.extraSettingsEl.addClass("iconic-rule-icon"),this.settingEl.prepend(m.extraSettingsEl),h=m}),this.setName(o.name),this.nameEl.addClass("iconic-rule-name"),i.setEventListener(this.nameEl,"click",()=>this.toggleEditable(this.nameEl,!0)),i.setEventListener(this.nameEl,"blur",()=>{this.toggleEditable(this.nameEl,!1),this.nameEl.getText()?(o.name=this.nameEl.getText(),t.ruleManager.saveRule(n,o)):this.nameEl.setText(o.name)}),i.setEventListener(this.nameEl,"keydown",m=>{m.key==="Enter"&&this.nameEl.blur()}),l&&this.toggleEditable(this.nameEl,!0),this.addExtraButton(m=>{m.setIcon("lucide-settings").setTooltip(s.rulePicker.editRule).onClick(()=>R.open(t,n,o,c=>{let u;c?(o=c,this.setName(c.name),i.refreshIcon({icon:c.icon??t.ruleManager.getPageIcon(n),color:c.color},h.extraSettingsEl),g.setValue(c.enabled),u=t.ruleManager.saveRule(n,c)):(this.settingEl.remove(),this.ruleEls.remove(this.settingEl),u=t.ruleManager.deleteRule(n,o.id)),u&&d()}))}),this.addToggle(m=>{m.setValue(o.enabled).onChange(c=>{o.enabled=c,t.ruleManager.saveRule(n,o)&&d()}),g=m}),this.addExtraButton(m=>{m.setIcon("lucide-menu").setTooltip(s.rulePicker.drag).extraSettingsEl.addClass("iconic-drag"),i.setEventListener(m.extraSettingsEl,"pointerdown",()=>{this.settingEl.draggable=!0}),i.setEventListener(this.settingEl,"dragstart",c=>{this.onDragStart(c.clientX,c.clientY,m.extraSettingsEl)}),i.setEventListener(this.settingEl,"drag",c=>{this.onDrag(c.clientX,c.clientY,m.extraSettingsEl)}),i.setEventListener(this.settingEl,"dragend",()=>this.onDragEnd()),i.setEventListener(m.extraSettingsEl,"touchstart",c=>{c.preventDefault();let u=c.targetTouches[0];this.onDragStart(u.clientX,u.clientY,m.extraSettingsEl)}),i.setEventListener(m.extraSettingsEl,"touchmove",c=>{c.preventDefault();let u=c.targetTouches[0];this.onDrag(u.clientX,u.clientY,m.extraSettingsEl)}),i.setEventListener(m.extraSettingsEl,"touchend",()=>this.onDragEnd()),i.setEventListener(m.extraSettingsEl,"touchcancel",()=>this.onDragEnd())})}onDragStart(e,t,i){navigator?.vibrate(100),this.ghostRuleEl=activeDocument.body.createDiv({cls:"drag-reorder-ghost"}),this.ghostRuleEl.setCssStyles({width:this.settingEl.clientWidth+"px",height:this.settingEl.clientHeight+"px",left:activeDocument.body.hasClass("mod-rtl")?e-i.clientWidth/2+"px":e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"}),this.ghostRuleEl.appendChild(this.settingEl.cloneNode(!0)),this.settingEl.addClass("drag-ghost-hidden"),this.settingEl.style.opacity="0%",activeWindow.requestAnimationFrame(()=>this.settingEl.style.removeProperty("opacity"))}onDrag(e,t,i){if(e===0&&t===0)return;this.ghostRuleEl?.setCssStyles({left:activeDocument.body.hasClass("mod-rtl")?e-i.clientWidth/2+"px":e-this.settingEl.clientWidth+i.clientWidth/2+"px",top:t-this.settingEl.clientHeight/2+"px"});let n=this.ruleEls.indexOf(this.settingEl),o=this.ruleEls[n-1],r=o?.clientHeight*.25||0;o&&td.getBoundingClientRect().top+l&&(navigator?.vibrate(100),d.insertAdjacentElement("afterend",this.settingEl),this.ruleEls.splice(n,1),this.ruleEls.splice(n+1,0,this.settingEl))}onDragEnd(){this.ghostRuleEl?.remove(),delete this.ghostRuleEl,this.settingEl.removeClass("drag-ghost-hidden"),this.settingEl.removeAttribute("draggable");let e=this.ruleEls.indexOf(this.settingEl);e>-1&&this.plugin.ruleManager.moveRule(this.page,this.rule,e)}toggleEditable(e,t){if(t?e.contentEditable="true":e.removeAttribute("contenteditable"),t&&e!==activeDocument.activeElement){let i=activeDocument.createRange(),n=activeWindow.getSelection();i.selectNodeContents(e),n?.removeAllRanges(),n?.addRange(i)}}};var $=class extends y.PluginSettingTab{constructor(e){super(e.app,e);this.indicators={biggerIcons:void 0,clickableIcons:void 0,showItemName:void 0,biggerSearchResults:void 0,colorPicker1:void 0,colorPicker2:void 0};this.plugin=e}display(){this.containerEl.empty(),new y.Setting(this.containerEl).setName(s.settings.rulebook.name).setDesc(s.settings.rulebook.desc).addButton(e=>{e.setButtonText(s.settings.rulebook.manage).onClick(()=>{this.plugin.ruleManager&&(this.app.setting.close(),H.open(this.plugin))})}),new y.Setting(this.containerEl).setName(s.settings.headingSidebarAndTabIcons).setHeading(),new y.Setting(this.containerEl).setName(s.settings.biggerIcons.name).setDesc(s.settings.biggerIcons.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.biggerIcons=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.biggerIcons).onChange(t=>{this.refreshIndicator(this.indicators.biggerIcons,t),this.plugin.settings.biggerIcons=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.biggerIcons,e.getValue())}),new y.Setting(this.containerEl).setName(y.Platform.isDesktop?s.settings.clickableIcons.nameDesktop:s.settings.clickableIcons.nameMobile).setDesc(y.Platform.isDesktop?s.settings.clickableIcons.descDesktop:s.settings.clickableIcons.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.clickableIcons=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.clickableIcons).onChange(t=>{this.refreshIndicator(this.indicators.clickableIcons,t),this.plugin.settings.clickableIcons=t,this.plugin.saveSettings(),this.plugin.refreshManagers(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.clickableIcons,e.getValue())}),new y.Setting(this.containerEl).setName(s.settings.showAllFileIcons.name).setDesc(s.settings.showAllFileIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showAllFileIcons).onChange(t=>{this.plugin.settings.showAllFileIcons=t,this.plugin.saveSettings(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})),new y.Setting(this.containerEl).setName(s.settings.showAllFolderIcons.name).setDesc(s.settings.showAllFolderIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showAllFolderIcons).onChange(t=>{this.plugin.settings.showAllFolderIcons=t,this.plugin.saveSettings(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),new y.Setting(this.containerEl).setName(s.settings.minimalFolderIcons.name).setDesc(s.settings.minimalFolderIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.minimalFolderIcons).onChange(t=>{this.plugin.settings.minimalFolderIcons=t,this.plugin.saveSettings(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),new y.Setting(this.containerEl).setName(s.settings.showMarkdownTabIcons.name).setDesc(s.settings.showMarkdownTabIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showMarkdownTabIcons).onChange(t=>{this.plugin.settings.showMarkdownTabIcons=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new y.Setting(this.containerEl).setHeading().setName(s.settings.headingMenusAndDialogs),new y.Setting(this.containerEl).setName(s.settings.showMenuActions.name).setDesc(s.settings.showMenuActions.desc).addToggle(e=>e.setValue(this.plugin.settings.showMenuActions).onChange(t=>{this.plugin.settings.showMenuActions=t,this.plugin.saveSettings(),this.plugin.refreshManagers()})),new y.Setting(this.containerEl).setName(s.settings.showQuickSwitcherIcons.name).setDesc(s.settings.showQuickSwitcherIcons.desc).addToggle(e=>e.setValue(this.plugin.settings.showQuickSwitcherIcons).onChange(t=>{this.plugin.settings.showQuickSwitcherIcons=t,this.plugin.saveSettings()})),new y.Setting(this.containerEl).setName(s.settings.headingIconPicker).setHeading(),new y.Setting(this.containerEl).setName(s.settings.showItemName.name).setDesc(s.settings.showItemName.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.showItemName=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.showItemName).onChange(t=>{this.refreshIndicator(this.indicators.showItemName,t),this.plugin.settings.showItemName=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.showItemName,e.getValue())}),new y.Setting(this.containerEl).setName(s.settings.biggerSearchResults.name).setDesc(s.settings.biggerSearchResults.desc).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.biggerSearchResults=e}).addDropdown(e=>{e.addOption("on",s.settings.values.on).addOption("desktop",s.settings.values.desktop).addOption("mobile",s.settings.values.mobile).addOption("off",s.settings.values.off).setValue(this.plugin.settings.biggerSearchResults).onChange(t=>{this.refreshIndicator(this.indicators.biggerSearchResults,t),this.plugin.settings.biggerSearchResults=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()}),this.refreshIndicator(this.indicators.biggerSearchResults,e.getValue())}),new y.Setting(this.containerEl).setName(s.settings.maxSearchResults.name).setDesc(s.settings.maxSearchResults.desc).addSlider(e=>e.setLimits(10,300,10).setValue(this.plugin.settings.maxSearchResults).setDynamicTooltip().onChange(t=>{this.plugin.settings.maxSearchResults=t,this.plugin.saveSettings()})),new y.Setting(this.containerEl).setName(s.settings.colorPicker1.name).setDesc(y.Platform.isDesktop?s.settings.colorPicker1.descDesktop:s.settings.colorPicker1.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.colorPicker1=e}).addDropdown(e=>{e.addOption("list",s.settings.values.list).addOption("rgb",s.settings.values.rgb).setValue(this.plugin.settings.colorPicker1).onChange(t=>{this.refreshIndicator(this.indicators.colorPicker1,t),this.plugin.settings.colorPicker1=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.colorPicker1,e.getValue())}),new y.Setting(this.containerEl).setName(s.settings.colorPicker2.name).setDesc(y.Platform.isDesktop?s.settings.colorPicker2.descDesktop:s.settings.colorPicker2.descMobile).addExtraButton(e=>{e.extraSettingsEl.addClass("iconic-indicator"),this.indicators.colorPicker2=e}).addDropdown(e=>{e.addOption("list",s.settings.values.list).addOption("rgb",s.settings.values.rgb).setValue(this.plugin.settings.colorPicker2).onChange(t=>{this.refreshIndicator(this.indicators.colorPicker2,t),this.plugin.settings.colorPicker2=t,this.plugin.saveSettings()}),this.refreshIndicator(this.indicators.colorPicker2,e.getValue())}),new y.Setting(this.containerEl).setHeading().setName(s.settings.headingAdvanced),new y.Setting(this.containerEl).setName(s.settings.uncolorHover.name).setDesc(s.settings.uncolorHover.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorHover).onChange(t=>{this.plugin.settings.uncolorHover=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new y.Setting(this.containerEl).setName(s.settings.uncolorDrag.name).setDesc(s.settings.uncolorDrag.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorDrag).onChange(t=>{this.plugin.settings.uncolorDrag=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new y.Setting(this.containerEl).setName(s.settings.uncolorSelect.name).setDesc(s.settings.uncolorSelect.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorSelect).onChange(t=>{this.plugin.settings.uncolorSelect=t,this.plugin.saveSettings(),this.plugin.refreshBodyClasses()})),new y.Setting(this.containerEl).setName(s.settings.uncolorQuick.name).setDesc(s.settings.uncolorQuick.desc).addToggle(e=>e.setValue(this.plugin.settings.uncolorQuick).onChange(t=>{this.plugin.settings.uncolorQuick=t,this.plugin.saveSettings(),this.plugin.ribbonIconManager?.refreshIcons()})),new y.Setting(this.containerEl).setName(s.settings.rememberDeletedItems.name).setDesc(s.settings.rememberDeletedItems.desc).addToggle(e=>e.setValue(this.plugin.settings.rememberDeletedItems).onChange(t=>{this.plugin.settings.rememberDeletedItems=t,this.plugin.saveSettings()}))}refreshIndicator(e,t){switch(t){case"desktop":e.setIcon("lucide-monitor");break;case"mobile":e.setIcon("lucide-tablet-smartphone");break;case"list":e.setIcon("lucide-paint-bucket");break;case"rgb":e.setIcon("lucide-pipette");break;default:e.extraSettingsEl.hide();return}e.extraSettingsEl.show()}};var D=new Map([["\u{1F600}","Grinning face"],["\u{1F603}","Grinning face with big eyes"],["\u{1F604}","Grinning face with smiling eyes"],["\u{1F601}","Beaming face with smiling eyes"],["\u{1F606}","Grinning squinting face"],["\u{1F605}","Grinning face with sweat"],["\u{1F923}","Rolling on the floor laughing"],["\u{1F602}","Face with tears of joy"],["\u{1F642}","Slightly smiling face"],["\u{1F643}","Upside-down face"],["\u{1FAE0}","Melting face"],["\u{1F609}","Winking face"],["\u{1F60A}","Smiling face with smiling eyes"],["\u{1F607}","Smiling face with halo"],["\u{1F970}","Smiling face with hearts"],["\u{1F60D}","Smiling face with heart-eyes"],["\u{1F929}","Star-struck"],["\u{1F618}","Face blowing a kiss"],["\u{1F617}","Kissing face"],["\u263A\uFE0F","Smiling face"],["\u{1F61A}","Kissing face with closed eyes"],["\u{1F619}","Kissing face with smiling eyes"],["\u{1F972}","Smiling face with tear"],["\u{1F60B}","Face savoring food"],["\u{1F61B}","Face with tongue"],["\u{1F61C}","Winking face with tongue"],["\u{1F92A}","Zany face"],["\u{1F61D}","Squinting face with tongue"],["\u{1F911}","Money-mouth face"],["\u{1F917}","Smiling face with open hands"],["\u{1F92D}","Face with hand over mouth"],["\u{1FAE2}","Face with open eyes and hand over mouth"],["\u{1FAE3}","Face with peeking eye"],["\u{1F92B}","Shushing face"],["\u{1F914}","Thinking face"],["\u{1FAE1}","Saluting face"],["\u{1F910}","Zipper-mouth face"],["\u{1F928}","Face with raised eyebrow"],["\u{1F610}","Neutral face"],["\u{1F611}","Expressionless face"],["\u{1F636}","Face without mouth"],["\u{1FAE5}","Dotted line face"],["\u{1F636}\u200D\u{1F32B}\uFE0F","Face in clouds"],["\u{1F60F}","Smirking face"],["\u{1F612}","Unamused face"],["\u{1F644}","Face with rolling eyes"],["\u{1F62C}","Grimacing face"],["\u{1F62E}\u200D\u{1F4A8}","Face exhaling"],["\u{1F925}","Lying face"],["\u{1FAE8}","Shaking face"],["\u{1F642}\u200D\u2194\uFE0F","Head shaking horizontally"],["\u{1F642}\u200D\u2195\uFE0F","Head shaking vertically"],["\u{1F60C}","Relieved face"],["\u{1F614}","Pensive face"],["\u{1F62A}","Sleepy face"],["\u{1F924}","Drooling face"],["\u{1F634}","Sleeping face"],["\u{1FAE9}","Face with bags under eyes"],["\u{1F637}","Face with medical mask"],["\u{1F912}","Face with thermometer"],["\u{1F915}","Face with head-bandage"],["\u{1F922}","Nauseated face"],["\u{1F92E}","Face vomiting"],["\u{1F927}","Sneezing face"],["\u{1F975}","Hot face"],["\u{1F976}","Cold face"],["\u{1F974}","Woozy face"],["\u{1F635}","Face with crossed-out eyes"],["\u{1F635}\u200D\u{1F4AB}","Face with spiral eyes"],["\u{1F92F}","Exploding head"],["\u{1F920}","Cowboy hat face"],["\u{1F973}","Partying face"],["\u{1F978}","Disguised face"],["\u{1F60E}","Smiling face with sunglasses"],["\u{1F913}","Nerd face"],["\u{1F9D0}","Face with monocle"],["\u{1F615}","Confused face"],["\u{1FAE4}","Face with diagonal mouth"],["\u{1F61F}","Worried face"],["\u{1F641}","Slightly frowning face"],["\u2639\uFE0F","Frowning face"],["\u{1F62E}","Face with open mouth"],["\u{1F62F}","Hushed face"],["\u{1F632}","Astonished face"],["\u{1F633}","Flushed face"],["\u{1F97A}","Pleading face"],["\u{1F979}","Face holding back tears"],["\u{1F626}","Frowning face with open mouth"],["\u{1F627}","Anguished face"],["\u{1F628}","Fearful face"],["\u{1F630}","Anxious face with sweat"],["\u{1F625}","Sad but relieved face"],["\u{1F622}","Crying face"],["\u{1F62D}","Loudly crying face"],["\u{1F631}","Face screaming in fear"],["\u{1F616}","Confounded face"],["\u{1F623}","Persevering face"],["\u{1F61E}","Disappointed face"],["\u{1F613}","Downcast face with sweat"],["\u{1F629}","Weary face"],["\u{1F62B}","Tired face"],["\u{1F971}","Yawning face"],["\u{1F624}","Face with steam from nose"],["\u{1F621}","Enraged face"],["\u{1F620}","Angry face"],["\u{1F92C}","Face with symbols on mouth"],["\u{1F608}","Smiling face with horns"],["\u{1F47F}","Angry face with horns"],["\u{1F480}","Skull"],["\u2620\uFE0F","Skull and crossbones"],["\u{1F4A9}","Pile of poo"],["\u{1F921}","Clown face"],["\u{1F479}","Ogre"],["\u{1F47A}","Goblin"],["\u{1F47B}","Ghost"],["\u{1F47D}","Alien"],["\u{1F47E}","Alien monster"],["\u{1F916}","Robot"],["\u{1F63A}","Grinning cat"],["\u{1F638}","Grinning cat with smiling eyes"],["\u{1F639}","Cat with tears of joy"],["\u{1F63B}","Smiling cat with heart-eyes"],["\u{1F63C}","Cat with wry smile"],["\u{1F63D}","Kissing cat"],["\u{1F640}","Weary cat"],["\u{1F63F}","Crying cat"],["\u{1F63E}","Pouting cat"],["\u{1F648}","See-no-evil monkey"],["\u{1F649}","Hear-no-evil monkey"],["\u{1F64A}","Speak-no-evil monkey"],["\u{1F48C}","Love letter"],["\u{1F498}","Heart with arrow"],["\u{1F49D}","Heart with ribbon"],["\u{1F496}","Sparkling heart"],["\u{1F497}","Growing heart"],["\u{1F493}","Beating heart"],["\u{1F49E}","Revolving hearts"],["\u{1F495}","Two hearts"],["\u{1F49F}","Heart decoration"],["\u2763\uFE0F","Heart exclamation"],["\u{1F494}","Broken heart"],["\u2764\uFE0F\u200D\u{1F525}","Heart on fire"],["\u2764\uFE0F\u200D\u{1FA79}","Mending heart"],["\u2764\uFE0F","Red heart"],["\u{1FA77}","Pink heart"],["\u{1F9E1}","Orange heart"],["\u{1F49B}","Yellow heart"],["\u{1F49A}","Green heart"],["\u{1F499}","Blue heart"],["\u{1FA75}","Light blue heart"],["\u{1F49C}","Purple heart"],["\u{1F90E}","Brown heart"],["\u{1F5A4}","Black heart"],["\u{1FA76}","Grey heart"],["\u{1F90D}","White heart"],["\u{1F48B}","Kiss mark"],["\u{1F4AF}","Hundred points"],["\u{1F4A2}","Anger symbol"],["\u{1F4A5}","Collision"],["\u{1F4AB}","Dizzy"],["\u{1F4A6}","Sweat droplets"],["\u{1F4A8}","Dashing away"],["\u{1F573}\uFE0F","Hole"],["\u{1F4AC}","Speech balloon"],["\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F","Eye in speech bubble"],["\u{1F5E8}\uFE0F","Left speech bubble"],["\u{1F5EF}\uFE0F","Right anger bubble"],["\u{1F4AD}","Thought balloon"],["\u{1F4A4}","ZZZ"],["\u{1F44B}","Waving hand"],["\u{1F91A}","Raised back of hand"],["\u{1F590}\uFE0F","Hand with fingers splayed"],["\u270B","Raised hand"],["\u{1F596}","Vulcan salute"],["\u{1FAF1}","Rightwards hand"],["\u{1FAF2}","Leftwards hand"],["\u{1FAF3}","Palm down hand"],["\u{1FAF4}","Palm up hand"],["\u{1FAF7}","Leftwards pushing hand"],["\u{1FAF8}","Rightwards pushing hand"],["\u{1F44C}","OK hand"],["\u{1F90C}","Pinched fingers"],["\u{1F90F}","Pinching hand"],["\u270C\uFE0F","Victory hand"],["\u{1F91E}","Crossed fingers"],["\u{1FAF0}","Hand with index finger and thumb crossed"],["\u{1F91F}","Love-you gesture"],["\u{1F918}","Sign of the horns"],["\u{1F919}","Call me hand"],["\u{1F448}","Backhand index pointing left"],["\u{1F449}","Backhand index pointing right"],["\u{1F446}","Backhand index pointing up"],["\u{1F595}","Middle finger"],["\u{1F447}","Backhand index pointing down"],["\u261D\uFE0F","Index pointing up"],["\u{1FAF5}","Index pointing at the viewer"],["\u{1F44D}","Thumbs up"],["\u{1F44E}","Thumbs down"],["\u270A","Raised fist"],["\u{1F44A}","Oncoming fist"],["\u{1F91B}","Left-facing fist"],["\u{1F91C}","Right-facing fist"],["\u{1F44F}","Clapping hands"],["\u{1F64C}","Raising hands"],["\u{1FAF6}","Heart hands"],["\u{1F450}","Open hands"],["\u{1F932}","Palms up together"],["\u{1F91D}","Handshake"],["\u{1F64F}","Folded hands"],["\u270D\uFE0F","Writing hand"],["\u{1F485}","Nail polish"],["\u{1F933}","Selfie"],["\u{1F4AA}","Flexed biceps"],["\u{1F9BE}","Mechanical arm"],["\u{1F9BF}","Mechanical leg"],["\u{1F9B5}","Leg"],["\u{1F9B6}","Foot"],["\u{1F442}","Ear"],["\u{1F9BB}","Ear with hearing aid"],["\u{1F443}","Nose"],["\u{1F9E0}","Brain"],["\u{1FAC0}","Anatomical heart"],["\u{1FAC1}","Lungs"],["\u{1F9B7}","Tooth"],["\u{1F9B4}","Bone"],["\u{1F440}","Eyes"],["\u{1F441}\uFE0F","Eye"],["\u{1F445}","Tongue"],["\u{1F444}","Mouth"],["\u{1FAE6}","Biting lip"],["\u{1F476}","Baby"],["\u{1F9D2}","Child"],["\u{1F466}","Boy"],["\u{1F467}","Girl"],["\u{1F9D1}","Person"],["\u{1F471}","Person: blond hair"],["\u{1F468}","Man"],["\u{1F9D4}","Person: beard"],["\u{1F9D4}\u200D\u2642\uFE0F","Man: beard"],["\u{1F9D4}\u200D\u2640\uFE0F","Woman: beard"],["\u{1F468}\u200D\u{1F9B0}","Man: red hair"],["\u{1F468}\u200D\u{1F9B1}","Man: curly hair"],["\u{1F468}\u200D\u{1F9B3}","Man: white hair"],["\u{1F468}\u200D\u{1F9B2}","Man: bald"],["\u{1F469}","Woman"],["\u{1F469}\u200D\u{1F9B0}","Woman: red hair"],["\u{1F9D1}\u200D\u{1F9B0}","Person: red hair"],["\u{1F469}\u200D\u{1F9B1}","Woman: curly hair"],["\u{1F9D1}\u200D\u{1F9B1}","Person: curly hair"],["\u{1F469}\u200D\u{1F9B3}","Woman: white hair"],["\u{1F9D1}\u200D\u{1F9B3}","Person: white hair"],["\u{1F469}\u200D\u{1F9B2}","Woman: bald"],["\u{1F9D1}\u200D\u{1F9B2}","Person: bald"],["\u{1F471}\u200D\u2640\uFE0F","Woman: blond hair"],["\u{1F471}\u200D\u2642\uFE0F","Man: blond hair"],["\u{1F9D3}","Older person"],["\u{1F474}","Old man"],["\u{1F475}","Old woman"],["\u{1F64D}","Person frowning"],["\u{1F64D}\u200D\u2642\uFE0F","Man frowning"],["\u{1F64D}\u200D\u2640\uFE0F","Woman frowning"],["\u{1F64E}","Person pouting"],["\u{1F64E}\u200D\u2642\uFE0F","Man pouting"],["\u{1F64E}\u200D\u2640\uFE0F","Woman pouting"],["\u{1F645}","Person gesturing NO"],["\u{1F645}\u200D\u2642\uFE0F","Man gesturing NO"],["\u{1F645}\u200D\u2640\uFE0F","Woman gesturing NO"],["\u{1F646}","Person gesturing OK"],["\u{1F646}\u200D\u2642\uFE0F","Man gesturing OK"],["\u{1F646}\u200D\u2640\uFE0F","Woman gesturing OK"],["\u{1F481}","Person tipping hand"],["\u{1F481}\u200D\u2642\uFE0F","Man tipping hand"],["\u{1F481}\u200D\u2640\uFE0F","Woman tipping hand"],["\u{1F64B}","Person raising hand"],["\u{1F64B}\u200D\u2642\uFE0F","Man raising hand"],["\u{1F64B}\u200D\u2640\uFE0F","Woman raising hand"],["\u{1F9CF}","Deaf person"],["\u{1F9CF}\u200D\u2642\uFE0F","Deaf man"],["\u{1F9CF}\u200D\u2640\uFE0F","Deaf woman"],["\u{1F647}","Person bowing"],["\u{1F647}\u200D\u2642\uFE0F","Man bowing"],["\u{1F647}\u200D\u2640\uFE0F","Woman bowing"],["\u{1F926}","Person facepalming"],["\u{1F926}\u200D\u2642\uFE0F","Man facepalming"],["\u{1F926}\u200D\u2640\uFE0F","Woman facepalming"],["\u{1F937}","Person shrugging"],["\u{1F937}\u200D\u2642\uFE0F","Man shrugging"],["\u{1F937}\u200D\u2640\uFE0F","Woman shrugging"],["\u{1F9D1}\u200D\u2695\uFE0F","Health worker"],["\u{1F468}\u200D\u2695\uFE0F","Man health worker"],["\u{1F469}\u200D\u2695\uFE0F","Woman health worker"],["\u{1F9D1}\u200D\u{1F393}","Student"],["\u{1F468}\u200D\u{1F393}","Man student"],["\u{1F469}\u200D\u{1F393}","Woman student"],["\u{1F9D1}\u200D\u{1F3EB}","Teacher"],["\u{1F468}\u200D\u{1F3EB}","Man teacher"],["\u{1F469}\u200D\u{1F3EB}","Woman teacher"],["\u{1F9D1}\u200D\u2696\uFE0F","Judge"],["\u{1F468}\u200D\u2696\uFE0F","Man judge"],["\u{1F469}\u200D\u2696\uFE0F","Woman judge"],["\u{1F9D1}\u200D\u{1F33E}","Farmer"],["\u{1F468}\u200D\u{1F33E}","Man farmer"],["\u{1F469}\u200D\u{1F33E}","Woman farmer"],["\u{1F9D1}\u200D\u{1F373}","Cook"],["\u{1F468}\u200D\u{1F373}","Man cook"],["\u{1F469}\u200D\u{1F373}","Woman cook"],["\u{1F9D1}\u200D\u{1F527}","Mechanic"],["\u{1F468}\u200D\u{1F527}","Man mechanic"],["\u{1F469}\u200D\u{1F527}","Woman mechanic"],["\u{1F9D1}\u200D\u{1F3ED}","Factory worker"],["\u{1F468}\u200D\u{1F3ED}","Man factory worker"],["\u{1F469}\u200D\u{1F3ED}","Woman factory worker"],["\u{1F9D1}\u200D\u{1F4BC}","Office worker"],["\u{1F468}\u200D\u{1F4BC}","Man office worker"],["\u{1F469}\u200D\u{1F4BC}","Woman office worker"],["\u{1F9D1}\u200D\u{1F52C}","Scientist"],["\u{1F468}\u200D\u{1F52C}","Man scientist"],["\u{1F469}\u200D\u{1F52C}","Woman scientist"],["\u{1F9D1}\u200D\u{1F4BB}","Technologist"],["\u{1F468}\u200D\u{1F4BB}","Man technologist"],["\u{1F469}\u200D\u{1F4BB}","Woman technologist"],["\u{1F9D1}\u200D\u{1F3A4}","Singer"],["\u{1F468}\u200D\u{1F3A4}","Man singer"],["\u{1F469}\u200D\u{1F3A4}","Woman singer"],["\u{1F9D1}\u200D\u{1F3A8}","Artist"],["\u{1F468}\u200D\u{1F3A8}","Man artist"],["\u{1F469}\u200D\u{1F3A8}","Woman artist"],["\u{1F9D1}\u200D\u2708\uFE0F","Pilot"],["\u{1F468}\u200D\u2708\uFE0F","Man pilot"],["\u{1F469}\u200D\u2708\uFE0F","Woman pilot"],["\u{1F9D1}\u200D\u{1F680}","Astronaut"],["\u{1F468}\u200D\u{1F680}","Man astronaut"],["\u{1F469}\u200D\u{1F680}","Woman astronaut"],["\u{1F9D1}\u200D\u{1F692}","Firefighter"],["\u{1F468}\u200D\u{1F692}","Man firefighter"],["\u{1F469}\u200D\u{1F692}","Woman firefighter"],["\u{1F46E}","Police officer"],["\u{1F46E}\u200D\u2642\uFE0F","Man police officer"],["\u{1F46E}\u200D\u2640\uFE0F","Woman police officer"],["\u{1F575}\uFE0F","Detective"],["\u{1F575}\uFE0F\u200D\u2642\uFE0F","Man detective"],["\u{1F575}\uFE0F\u200D\u2640\uFE0F","Woman detective"],["\u{1F482}","Guard"],["\u{1F482}\u200D\u2642\uFE0F","Man guard"],["\u{1F482}\u200D\u2640\uFE0F","Woman guard"],["\u{1F977}","Ninja"],["\u{1F477}","Construction worker"],["\u{1F477}\u200D\u2642\uFE0F","Man construction worker"],["\u{1F477}\u200D\u2640\uFE0F","Woman construction worker"],["\u{1FAC5}","Person with crown"],["\u{1F934}","Prince"],["\u{1F478}","Princess"],["\u{1F473}","Person wearing turban"],["\u{1F473}\u200D\u2642\uFE0F","Man wearing turban"],["\u{1F473}\u200D\u2640\uFE0F","Woman wearing turban"],["\u{1F472}","Person with skullcap"],["\u{1F9D5}","Woman with headscarf"],["\u{1F935}","Person in tuxedo"],["\u{1F935}\u200D\u2642\uFE0F","Man in tuxedo"],["\u{1F935}\u200D\u2640\uFE0F","Woman in tuxedo"],["\u{1F470}","Person with veil"],["\u{1F470}\u200D\u2642\uFE0F","Man with veil"],["\u{1F470}\u200D\u2640\uFE0F","Woman with veil"],["\u{1F930}","Pregnant woman"],["\u{1FAC3}","Pregnant man"],["\u{1FAC4}","Pregnant person"],["\u{1F931}","Breast-feeding"],["\u{1F469}\u200D\u{1F37C}","Woman feeding baby"],["\u{1F468}\u200D\u{1F37C}","Man feeding baby"],["\u{1F9D1}\u200D\u{1F37C}","Person feeding baby"],["\u{1F47C}","Baby angel"],["\u{1F385}","Santa Claus"],["\u{1F936}","Mrs. Claus"],["\u{1F9D1}\u200D\u{1F384}","Mx. Claus"],["\u{1F9B8}","Superhero"],["\u{1F9B8}\u200D\u2642\uFE0F","Man superhero"],["\u{1F9B8}\u200D\u2640\uFE0F","Woman superhero"],["\u{1F9B9}","Supervillain"],["\u{1F9B9}\u200D\u2642\uFE0F","Man supervillain"],["\u{1F9B9}\u200D\u2640\uFE0F","Woman supervillain"],["\u{1F9D9}","Mage"],["\u{1F9D9}\u200D\u2642\uFE0F","Man mage"],["\u{1F9D9}\u200D\u2640\uFE0F","Woman mage"],["\u{1F9DA}","Fairy"],["\u{1F9DA}\u200D\u2642\uFE0F","Man fairy"],["\u{1F9DA}\u200D\u2640\uFE0F","Woman fairy"],["\u{1F9DB}","Vampire"],["\u{1F9DB}\u200D\u2642\uFE0F","Man vampire"],["\u{1F9DB}\u200D\u2640\uFE0F","Woman vampire"],["\u{1F9DC}","Merperson"],["\u{1F9DC}\u200D\u2642\uFE0F","Merman"],["\u{1F9DC}\u200D\u2640\uFE0F","Mermaid"],["\u{1F9DD}","Elf"],["\u{1F9DD}\u200D\u2642\uFE0F","Man elf"],["\u{1F9DD}\u200D\u2640\uFE0F","Woman elf"],["\u{1F9DE}","Genie"],["\u{1F9DE}\u200D\u2642\uFE0F","Man genie"],["\u{1F9DE}\u200D\u2640\uFE0F","Woman genie"],["\u{1F9DF}","Zombie"],["\u{1F9DF}\u200D\u2642\uFE0F","Man zombie"],["\u{1F9DF}\u200D\u2640\uFE0F","Woman zombie"],["\u{1F9CC}","Troll"],["\u{1F486}","Person getting massage"],["\u{1F486}\u200D\u2642\uFE0F","Man getting massage"],["\u{1F486}\u200D\u2640\uFE0F","Woman getting massage"],["\u{1F487}","Person getting haircut"],["\u{1F487}\u200D\u2642\uFE0F","Man getting haircut"],["\u{1F487}\u200D\u2640\uFE0F","Woman getting haircut"],["\u{1F6B6}","Person walking"],["\u{1F6B6}\u200D\u2642\uFE0F","Man walking"],["\u{1F6B6}\u200D\u2640\uFE0F","Woman walking"],["\u{1F6B6}\u200D\u27A1\uFE0F","Person walking facing right"],["\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman walking facing right"],["\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man walking facing right"],["\u{1F9CD}","Person standing"],["\u{1F9CD}\u200D\u2642\uFE0F","Man standing"],["\u{1F9CD}\u200D\u2640\uFE0F","Woman standing"],["\u{1F9CE}","Person kneeling"],["\u{1F9CE}\u200D\u2642\uFE0F","Man kneeling"],["\u{1F9CE}\u200D\u2640\uFE0F","Woman kneeling"],["\u{1F9CE}\u200D\u27A1\uFE0F","Person kneeling facing right"],["\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman kneeling facing right"],["\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man kneeling facing right"],["\u{1F9D1}\u200D\u{1F9AF}","Person with white cane"],["\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Person with white cane facing right"],["\u{1F468}\u200D\u{1F9AF}","Man with white cane"],["\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Man with white cane facing right"],["\u{1F469}\u200D\u{1F9AF}","Woman with white cane"],["\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F","Woman with white cane facing right"],["\u{1F9D1}\u200D\u{1F9BC}","Person in motorized wheelchair"],["\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Person in motorized wheelchair facing right"],["\u{1F468}\u200D\u{1F9BC}","Man in motorized wheelchair"],["\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Man in motorized wheelchair facing right"],["\u{1F469}\u200D\u{1F9BC}","Woman in motorized wheelchair"],["\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F","Woman in motorized wheelchair facing right"],["\u{1F9D1}\u200D\u{1F9BD}","Person in manual wheelchair"],["\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Person in manual wheelchair facing right"],["\u{1F468}\u200D\u{1F9BD}","Man in manual wheelchair"],["\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Man in manual wheelchair facing right"],["\u{1F469}\u200D\u{1F9BD}","Woman in manual wheelchair"],["\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F","Woman in manual wheelchair facing right"],["\u{1F3C3}","Person running"],["\u{1F3C3}\u200D\u2642\uFE0F","Man running"],["\u{1F3C3}\u200D\u2640\uFE0F","Woman running"],["\u{1F3C3}\u200D\u27A1\uFE0F","Person running facing right"],["\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F","Woman running facing right"],["\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F","Man running facing right"],["\u{1F483}","Woman dancing"],["\u{1F57A}","Man dancing"],["\u{1F574}\uFE0F","Person in suit levitating"],["\u{1F46F}","People with bunny ears"],["\u{1F46F}\u200D\u2642\uFE0F","Men with bunny ears"],["\u{1F46F}\u200D\u2640\uFE0F","Women with bunny ears"],["\u{1F9D6}","Person in steamy room"],["\u{1F9D6}\u200D\u2642\uFE0F","Man in steamy room"],["\u{1F9D6}\u200D\u2640\uFE0F","Woman in steamy room"],["\u{1F9D7}","Person climbing"],["\u{1F9D7}\u200D\u2642\uFE0F","Man climbing"],["\u{1F9D7}\u200D\u2640\uFE0F","Woman climbing"],["\u{1F93A}","Person fencing"],["\u{1F3C7}","Horse racing"],["\u26F7\uFE0F","Skier"],["\u{1F3C2}","Snowboarder"],["\u{1F3CC}\uFE0F","Person golfing"],["\u{1F3CC}\uFE0F\u200D\u2642\uFE0F","Man golfing"],["\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","Woman golfing"],["\u{1F3C4}","Person surfing"],["\u{1F3C4}\u200D\u2642\uFE0F","Man surfing"],["\u{1F3C4}\u200D\u2640\uFE0F","Woman surfing"],["\u{1F6A3}","Person rowing boat"],["\u{1F6A3}\u200D\u2642\uFE0F","Man rowing boat"],["\u{1F6A3}\u200D\u2640\uFE0F","Woman rowing boat"],["\u{1F3CA}","Person swimming"],["\u{1F3CA}\u200D\u2642\uFE0F","Man swimming"],["\u{1F3CA}\u200D\u2640\uFE0F","Woman swimming"],["\u26F9\uFE0F","Person bouncing ball"],["\u26F9\uFE0F\u200D\u2642\uFE0F","Man bouncing ball"],["\u26F9\uFE0F\u200D\u2640\uFE0F","Woman bouncing ball"],["\u{1F3CB}\uFE0F","Person lifting weights"],["\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","Man lifting weights"],["\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","Woman lifting weights"],["\u{1F6B4}","Person biking"],["\u{1F6B4}\u200D\u2642\uFE0F","Man biking"],["\u{1F6B4}\u200D\u2640\uFE0F","Woman biking"],["\u{1F6B5}","Person mountain biking"],["\u{1F6B5}\u200D\u2642\uFE0F","Man mountain biking"],["\u{1F6B5}\u200D\u2640\uFE0F","Woman mountain biking"],["\u{1F938}","Person cartwheeling"],["\u{1F938}\u200D\u2642\uFE0F","Man cartwheeling"],["\u{1F938}\u200D\u2640\uFE0F","Woman cartwheeling"],["\u{1F93C}","People wrestling"],["\u{1F93C}\u200D\u2642\uFE0F","Men wrestling"],["\u{1F93C}\u200D\u2640\uFE0F","Women wrestling"],["\u{1F93D}","Person playing water polo"],["\u{1F93D}\u200D\u2642\uFE0F","Man playing water polo"],["\u{1F93D}\u200D\u2640\uFE0F","Woman playing water polo"],["\u{1F93E}","Person playing handball"],["\u{1F93E}\u200D\u2642\uFE0F","Man playing handball"],["\u{1F93E}\u200D\u2640\uFE0F","Woman playing handball"],["\u{1F939}","Person juggling"],["\u{1F939}\u200D\u2642\uFE0F","Man juggling"],["\u{1F939}\u200D\u2640\uFE0F","Woman juggling"],["\u{1F9D8}","Person in lotus position"],["\u{1F9D8}\u200D\u2642\uFE0F","Man in lotus position"],["\u{1F9D8}\u200D\u2640\uFE0F","Woman in lotus position"],["\u{1F6C0}","Person taking bath"],["\u{1F6CC}","Person in bed"],["\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}","People holding hands"],["\u{1F46D}","Women holding hands"],["\u{1F46B}","Woman and man holding hands"],["\u{1F46C}","Men holding hands"],["\u{1F48F}","Kiss"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","Kiss: woman, man"],["\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","Kiss: man, man"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}","Kiss: woman, woman"],["\u{1F491}","Couple with heart"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","Couple with heart: woman, man"],["\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","Couple with heart: man, man"],["\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","Couple with heart: woman, woman"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","Family: man, woman, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","Family: man, woman, girl"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: man, woman, girl, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: man, woman, boy, boy"],["\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: man, woman, girl, girl"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","Family: man, man, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","Family: man, man, girl"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","Family: man, man, girl, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","Family: man, man, boy, boy"],["\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","Family: man, man, girl, girl"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","Family: woman, woman, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","Family: woman, woman, girl"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: woman, woman, girl, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: woman, woman, boy, boy"],["\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: woman, woman, girl, girl"],["\u{1F468}\u200D\u{1F466}","Family: man, boy"],["\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","Family: man, boy, boy"],["\u{1F468}\u200D\u{1F467}","Family: man, girl"],["\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","Family: man, girl, boy"],["\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","Family: man, girl, girl"],["\u{1F469}\u200D\u{1F466}","Family: woman, boy"],["\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","Family: woman, boy, boy"],["\u{1F469}\u200D\u{1F467}","Family: woman, girl"],["\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","Family: woman, girl, boy"],["\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","Family: woman, girl, girl"],["\u{1F5E3}\uFE0F","Speaking head"],["\u{1F464}","Bust in silhouette"],["\u{1F465}","Busts in silhouette"],["\u{1FAC2}","People hugging"],["\u{1F46A}","Family"],["\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}","Family: adult, adult, child"],["\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}","Family: adult, adult, child, child"],["\u{1F9D1}\u200D\u{1F9D2}","Family: adult, child"],["\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}","Family: adult, child, child"],["\u{1F463}","Footprints"],["\u{1FAC6}","Fingerprint"],["\u{1F3FB}","Light skin tone"],["\u{1F3FC}","Medium-light skin tone"],["\u{1F3FD}","Medium skin tone"],["\u{1F3FE}","Medium-dark skin tone"],["\u{1F3FF}","Dark skin tone"],["\u{1F9B0}","Red hair"],["\u{1F9B1}","Curly hair"],["\u{1F9B3}","White hair"],["\u{1F9B2}","Bald"],["\u{1F435}","Monkey face"],["\u{1F412}","Monkey"],["\u{1F98D}","Gorilla"],["\u{1F9A7}","Orangutan"],["\u{1F436}","Dog face"],["\u{1F415}","Dog"],["\u{1F9AE}","Guide dog"],["\u{1F415}\u200D\u{1F9BA}","Service dog"],["\u{1F429}","Poodle"],["\u{1F43A}","Wolf"],["\u{1F98A}","Fox"],["\u{1F99D}","Raccoon"],["\u{1F431}","Cat face"],["\u{1F408}","Cat"],["\u{1F408}\u200D\u2B1B","Black cat"],["\u{1F981}","Lion"],["\u{1F42F}","Tiger face"],["\u{1F405}","Tiger"],["\u{1F406}","Leopard"],["\u{1F434}","Horse face"],["\u{1FACE}","Moose"],["\u{1FACF}","Donkey"],["\u{1F40E}","Horse"],["\u{1F984}","Unicorn"],["\u{1F993}","Zebra"],["\u{1F98C}","Deer"],["\u{1F9AC}","Bison"],["\u{1F42E}","Cow face"],["\u{1F402}","Ox"],["\u{1F403}","Water buffalo"],["\u{1F404}","Cow"],["\u{1F437}","Pig face"],["\u{1F416}","Pig"],["\u{1F417}","Boar"],["\u{1F43D}","Pig nose"],["\u{1F40F}","Ram"],["\u{1F411}","Ewe"],["\u{1F410}","Goat"],["\u{1F42A}","Camel"],["\u{1F42B}","Two-hump camel"],["\u{1F999}","Llama"],["\u{1F992}","Giraffe"],["\u{1F418}","Elephant"],["\u{1F9A3}","Mammoth"],["\u{1F98F}","Rhinoceros"],["\u{1F99B}","Hippopotamus"],["\u{1F42D}","Mouse face"],["\u{1F401}","Mouse"],["\u{1F400}","Rat"],["\u{1F439}","Hamster"],["\u{1F430}","Rabbit face"],["\u{1F407}","Rabbit"],["\u{1F43F}\uFE0F","Chipmunk"],["\u{1F9AB}","Beaver"],["\u{1F994}","Hedgehog"],["\u{1F987}","Bat"],["\u{1F43B}","Bear"],["\u{1F43B}\u200D\u2744\uFE0F","Polar bear"],["\u{1F428}","Koala"],["\u{1F43C}","Panda"],["\u{1F9A5}","Sloth"],["\u{1F9A6}","Otter"],["\u{1F9A8}","Skunk"],["\u{1F998}","Kangaroo"],["\u{1F9A1}","Badger"],["\u{1F43E}","Paw prints"],["\u{1F983}","Turkey"],["\u{1F414}","Chicken"],["\u{1F413}","Rooster"],["\u{1F423}","Hatching chick"],["\u{1F424}","Baby chick"],["\u{1F425}","Front-facing baby chick"],["\u{1F426}","Bird"],["\u{1F427}","Penguin"],["\u{1F54A}\uFE0F","Dove"],["\u{1F985}","Eagle"],["\u{1F986}","Duck"],["\u{1F9A2}","Swan"],["\u{1F989}","Owl"],["\u{1F9A4}","Dodo"],["\u{1FAB6}","Feather"],["\u{1F9A9}","Flamingo"],["\u{1F99A}","Peacock"],["\u{1F99C}","Parrot"],["\u{1FABD}","Wing"],["\u{1F426}\u200D\u2B1B","Black bird"],["\u{1FABF}","Goose"],["\u{1F426}\u200D\u{1F525}","Phoenix"],["\u{1F438}","Frog"],["\u{1F40A}","Crocodile"],["\u{1F422}","Turtle"],["\u{1F98E}","Lizard"],["\u{1F40D}","Snake"],["\u{1F432}","Dragon face"],["\u{1F409}","Dragon"],["\u{1F995}","Sauropod"],["\u{1F996}","T-Rex"],["\u{1F433}","Spouting whale"],["\u{1F40B}","Whale"],["\u{1F42C}","Dolphin"],["\u{1F9AD}","Seal"],["\u{1F41F}","Fish"],["\u{1F420}","Tropical fish"],["\u{1F421}","Blowfish"],["\u{1F988}","Shark"],["\u{1F419}","Octopus"],["\u{1F41A}","Spiral shell"],["\u{1FAB8}","Coral"],["\u{1FABC}","Jellyfish"],["\u{1F40C}","Snail"],["\u{1F98B}","Butterfly"],["\u{1F41B}","Bug"],["\u{1F41C}","Ant"],["\u{1F41D}","Honeybee"],["\u{1FAB2}","Beetle"],["\u{1F41E}","Lady beetle"],["\u{1F997}","Cricket"],["\u{1FAB3}","Cockroach"],["\u{1F577}\uFE0F","Spider"],["\u{1F578}\uFE0F","Spider web"],["\u{1F982}","Scorpion"],["\u{1F99F}","Mosquito"],["\u{1FAB0}","Fly"],["\u{1FAB1}","Worm"],["\u{1F9A0}","Microbe"],["\u{1F490}","Bouquet"],["\u{1F338}","Cherry blossom"],["\u{1F4AE}","White flower"],["\u{1FAB7}","Lotus"],["\u{1F3F5}\uFE0F","Rosette"],["\u{1F339}","Rose"],["\u{1F940}","Wilted flower"],["\u{1F33A}","Hibiscus"],["\u{1F33B}","Sunflower"],["\u{1F33C}","Blossom"],["\u{1F337}","Tulip"],["\u{1FABB}","Hyacinth"],["\u{1F331}","Seedling"],["\u{1FAB4}","Potted plant"],["\u{1F332}","Evergreen tree"],["\u{1F333}","Deciduous tree"],["\u{1F334}","Palm tree"],["\u{1F335}","Cactus"],["\u{1F33E}","Sheaf of rice"],["\u{1F33F}","Herb"],["\u2618\uFE0F","Shamrock"],["\u{1F340}","Four leaf clover"],["\u{1F341}","Maple leaf"],["\u{1F342}","Fallen leaf"],["\u{1F343}","Leaf fluttering in wind"],["\u{1FAB9}","Empty nest"],["\u{1FABA}","Nest with eggs"],["\u{1F344}","Mushroom"],["\u{1FABE}","Leafless tree"],["\u{1F347}","Grapes"],["\u{1F348}","Melon"],["\u{1F349}","Watermelon"],["\u{1F34A}","Tangerine"],["\u{1F34B}","Lemon"],["\u{1F34B}\u200D\u{1F7E9}","Lime"],["\u{1F34C}","Banana"],["\u{1F34D}","Pineapple"],["\u{1F96D}","Mango"],["\u{1F34E}","Red apple"],["\u{1F34F}","Green apple"],["\u{1F350}","Pear"],["\u{1F351}","Peach"],["\u{1F352}","Cherries"],["\u{1F353}","Strawberry"],["\u{1FAD0}","Blueberries"],["\u{1F95D}","Kiwi fruit"],["\u{1F345}","Tomato"],["\u{1FAD2}","Olive"],["\u{1F965}","Coconut"],["\u{1F951}","Avocado"],["\u{1F346}","Eggplant"],["\u{1F954}","Potato"],["\u{1F955}","Carrot"],["\u{1F33D}","Ear of corn"],["\u{1F336}\uFE0F","Hot pepper"],["\u{1FAD1}","Bell pepper"],["\u{1F952}","Cucumber"],["\u{1F96C}","Leafy green"],["\u{1F966}","Broccoli"],["\u{1F9C4}","Garlic"],["\u{1F9C5}","Onion"],["\u{1F95C}","Peanuts"],["\u{1FAD8}","Beans"],["\u{1F330}","Chestnut"],["\u{1FADA}","Ginger root"],["\u{1FADB}","Pea pod"],["\u{1F344}\u200D\u{1F7EB}","Brown mushroom"],["\u{1FADC}","Root vegetable"],["\u{1F35E}","Bread"],["\u{1F950}","Croissant"],["\u{1F956}","Baguette bread"],["\u{1FAD3}","Flatbread"],["\u{1F968}","Pretzel"],["\u{1F96F}","Bagel"],["\u{1F95E}","Pancakes"],["\u{1F9C7}","Waffle"],["\u{1F9C0}","Cheese wedge"],["\u{1F356}","Meat on bone"],["\u{1F357}","Poultry leg"],["\u{1F969}","Cut of meat"],["\u{1F953}","Bacon"],["\u{1F354}","Hamburger"],["\u{1F35F}","French fries"],["\u{1F355}","Pizza"],["\u{1F32D}","Hot dog"],["\u{1F96A}","Sandwich"],["\u{1F32E}","Taco"],["\u{1F32F}","Burrito"],["\u{1FAD4}","Tamale"],["\u{1F959}","Stuffed flatbread"],["\u{1F9C6}","Falafel"],["\u{1F95A}","Egg"],["\u{1F373}","Cooking"],["\u{1F958}","Shallow pan of food"],["\u{1F372}","Pot of food"],["\u{1FAD5}","Fondue"],["\u{1F963}","Bowl with spoon"],["\u{1F957}","Green salad"],["\u{1F37F}","Popcorn"],["\u{1F9C8}","Butter"],["\u{1F9C2}","Salt"],["\u{1F96B}","Canned food"],["\u{1F371}","Bento box"],["\u{1F358}","Rice cracker"],["\u{1F359}","Rice ball"],["\u{1F35A}","Cooked rice"],["\u{1F35B}","Curry rice"],["\u{1F35C}","Steaming bowl"],["\u{1F35D}","Spaghetti"],["\u{1F360}","Roasted sweet potato"],["\u{1F362}","Oden"],["\u{1F363}","Sushi"],["\u{1F364}","Fried shrimp"],["\u{1F365}","Fish cake with swirl"],["\u{1F96E}","Moon cake"],["\u{1F361}","Dango"],["\u{1F95F}","Dumpling"],["\u{1F960}","Fortune cookie"],["\u{1F961}","Takeout box"],["\u{1F980}","Crab"],["\u{1F99E}","Lobster"],["\u{1F990}","Shrimp"],["\u{1F991}","Squid"],["\u{1F9AA}","Oyster"],["\u{1F366}","Soft ice cream"],["\u{1F367}","Shaved ice"],["\u{1F368}","Ice cream"],["\u{1F369}","Doughnut"],["\u{1F36A}","Cookie"],["\u{1F382}","Birthday cake"],["\u{1F370}","Shortcake"],["\u{1F9C1}","Cupcake"],["\u{1F967}","Pie"],["\u{1F36B}","Chocolate bar"],["\u{1F36C}","Candy"],["\u{1F36D}","Lollipop"],["\u{1F36E}","Custard"],["\u{1F36F}","Honey pot"],["\u{1F37C}","Baby bottle"],["\u{1F95B}","Glass of milk"],["\u2615","Hot beverage"],["\u{1FAD6}","Teapot"],["\u{1F375}","Teacup without handle"],["\u{1F376}","Sake"],["\u{1F37E}","Bottle with popping cork"],["\u{1F377}","Wine glass"],["\u{1F378}","Cocktail glass"],["\u{1F379}","Tropical drink"],["\u{1F37A}","Beer mug"],["\u{1F37B}","Clinking beer mugs"],["\u{1F942}","Clinking glasses"],["\u{1F943}","Tumbler glass"],["\u{1FAD7}","Pouring liquid"],["\u{1F964}","Cup with straw"],["\u{1F9CB}","Bubble tea"],["\u{1F9C3}","Beverage box"],["\u{1F9C9}","Mate"],["\u{1F9CA}","Ice"],["\u{1F962}","Chopsticks"],["\u{1F37D}\uFE0F","Fork and knife with plate"],["\u{1F374}","Fork and knife"],["\u{1F944}","Spoon"],["\u{1F52A}","Kitchen knife"],["\u{1FAD9}","Jar"],["\u{1F3FA}","Amphora"],["\u{1F30D}","Globe showing Europe-Africa"],["\u{1F30E}","Globe showing Americas"],["\u{1F30F}","Globe showing Asia-Australia"],["\u{1F310}","Globe with meridians"],["\u{1F5FA}\uFE0F","World map"],["\u{1F5FE}","Map of Japan"],["\u{1F9ED}","Compass"],["\u{1F3D4}\uFE0F","Snow-capped mountain"],["\u26F0\uFE0F","Mountain"],["\u{1F30B}","Volcano"],["\u{1F5FB}","Mount Fuji"],["\u{1F3D5}\uFE0F","Camping"],["\u{1F3D6}\uFE0F","Beach with umbrella"],["\u{1F3DC}\uFE0F","Desert"],["\u{1F3DD}\uFE0F","Desert island"],["\u{1F3DE}\uFE0F","National park"],["\u{1F3DF}\uFE0F","Stadium"],["\u{1F3DB}\uFE0F","Classical building"],["\u{1F3D7}\uFE0F","Building construction"],["\u{1F9F1}","Brick"],["\u{1FAA8}","Rock"],["\u{1FAB5}","Wood"],["\u{1F6D6}","Hut"],["\u{1F3D8}\uFE0F","Houses"],["\u{1F3DA}\uFE0F","Derelict house"],["\u{1F3E0}","House"],["\u{1F3E1}","House with garden"],["\u{1F3E2}","Office building"],["\u{1F3E3}","Japanese post office"],["\u{1F3E4}","Post office"],["\u{1F3E5}","Hospital"],["\u{1F3E6}","Bank"],["\u{1F3E8}","Hotel"],["\u{1F3E9}","Love hotel"],["\u{1F3EA}","Convenience store"],["\u{1F3EB}","School"],["\u{1F3EC}","Department store"],["\u{1F3ED}","Factory"],["\u{1F3EF}","Japanese castle"],["\u{1F3F0}","Castle"],["\u{1F492}","Wedding"],["\u{1F5FC}","Tokyo Tower"],["\u{1F5FD}","Statue of Liberty"],["\u26EA","Church"],["\u{1F54C}","Mosque"],["\u{1F6D5}","Hindu temple"],["\u{1F54D}","Synagogue"],["\u26E9\uFE0F","Shinto shrine"],["\u{1F54B}","Kaaba"],["\u26F2","Fountain"],["\u26FA","Tent"],["\u{1F301}","Foggy"],["\u{1F303}","Night with stars"],["\u{1F3D9}\uFE0F","Cityscape"],["\u{1F304}","Sunrise over mountains"],["\u{1F305}","Sunrise"],["\u{1F306}","Cityscape at dusk"],["\u{1F307}","Sunset"],["\u{1F309}","Bridge at night"],["\u2668\uFE0F","Hot springs"],["\u{1F3A0}","Carousel horse"],["\u{1F6DD}","Playground slide"],["\u{1F3A1}","Ferris wheel"],["\u{1F3A2}","Roller coaster"],["\u{1F488}","Barber pole"],["\u{1F3AA}","Circus tent"],["\u{1F682}","Locomotive"],["\u{1F683}","Railway car"],["\u{1F684}","High-speed train"],["\u{1F685}","Bullet train"],["\u{1F686}","Train"],["\u{1F687}","Metro"],["\u{1F688}","Light rail"],["\u{1F689}","Station"],["\u{1F68A}","Tram"],["\u{1F69D}","Monorail"],["\u{1F69E}","Mountain railway"],["\u{1F68B}","Tram car"],["\u{1F68C}","Bus"],["\u{1F68D}","Oncoming bus"],["\u{1F68E}","Trolleybus"],["\u{1F690}","Minibus"],["\u{1F691}","Ambulance"],["\u{1F692}","Fire engine"],["\u{1F693}","Police car"],["\u{1F694}","Oncoming police car"],["\u{1F695}","Taxi"],["\u{1F696}","Oncoming taxi"],["\u{1F697}","Automobile"],["\u{1F698}","Oncoming automobile"],["\u{1F699}","Sport utility vehicle"],["\u{1F6FB}","Pickup truck"],["\u{1F69A}","Delivery truck"],["\u{1F69B}","Articulated lorry"],["\u{1F69C}","Tractor"],["\u{1F3CE}\uFE0F","Racing car"],["\u{1F3CD}\uFE0F","Motorcycle"],["\u{1F6F5}","Motor scooter"],["\u{1F9BD}","Manual wheelchair"],["\u{1F9BC}","Motorized wheelchair"],["\u{1F6FA}","Auto rickshaw"],["\u{1F6B2}","Bicycle"],["\u{1F6F4}","Kick scooter"],["\u{1F6F9}","Skateboard"],["\u{1F6FC}","Roller skate"],["\u{1F68F}","Bus stop"],["\u{1F6E3}\uFE0F","Motorway"],["\u{1F6E4}\uFE0F","Railway track"],["\u{1F6E2}\uFE0F","Oil drum"],["\u26FD","Fuel pump"],["\u{1F6DE}","Wheel"],["\u{1F6A8}","Police car light"],["\u{1F6A5}","Horizontal traffic light"],["\u{1F6A6}","Vertical traffic light"],["\u{1F6D1}","Stop sign"],["\u{1F6A7}","Construction"],["\u2693","Anchor"],["\u{1F6DF}","Ring buoy"],["\u26F5","Sailboat"],["\u{1F6F6}","Canoe"],["\u{1F6A4}","Speedboat"],["\u{1F6F3}\uFE0F","Passenger ship"],["\u26F4\uFE0F","Ferry"],["\u{1F6E5}\uFE0F","Motor boat"],["\u{1F6A2}","Ship"],["\u2708\uFE0F","Airplane"],["\u{1F6E9}\uFE0F","Small airplane"],["\u{1F6EB}","Airplane departure"],["\u{1F6EC}","Airplane arrival"],["\u{1FA82}","Parachute"],["\u{1F4BA}","Seat"],["\u{1F681}","Helicopter"],["\u{1F69F}","Suspension railway"],["\u{1F6A0}","Mountain cableway"],["\u{1F6A1}","Aerial tramway"],["\u{1F6F0}\uFE0F","Satellite"],["\u{1F680}","Rocket"],["\u{1F6F8}","Flying saucer"],["\u{1F6CE}\uFE0F","Bellhop bell"],["\u{1F9F3}","Luggage"],["\u231B","Hourglass done"],["\u23F3","Hourglass not done"],["\u231A","Watch"],["\u23F0","Alarm clock"],["\u23F1\uFE0F","Stopwatch"],["\u23F2\uFE0F","Timer clock"],["\u{1F570}\uFE0F","Mantelpiece clock"],["\u{1F55B}","Twelve o'clock"],["\u{1F567}","Twelve-thirty"],["\u{1F550}","One o'clock"],["\u{1F55C}","One-thirty"],["\u{1F551}","Two o'clock"],["\u{1F55D}","Two-thirty"],["\u{1F552}","Three o'clock"],["\u{1F55E}","Three-thirty"],["\u{1F553}","Four o'clock"],["\u{1F55F}","Four-thirty"],["\u{1F554}","Five o'clock"],["\u{1F560}","Five-thirty"],["\u{1F555}","Six o'clock"],["\u{1F561}","Six-thirty"],["\u{1F556}","Seven o'clock"],["\u{1F562}","Seven-thirty"],["\u{1F557}","Eight o'clock"],["\u{1F563}","Eight-thirty"],["\u{1F558}","Nine o'clock"],["\u{1F564}","Nine-thirty"],["\u{1F559}","Ten o'clock"],["\u{1F565}","Ten-thirty"],["\u{1F55A}","Eleven o'clock"],["\u{1F566}","Eleven-thirty"],["\u{1F311}","New moon"],["\u{1F312}","Waxing crescent moon"],["\u{1F313}","First quarter moon"],["\u{1F314}","Waxing gibbous moon"],["\u{1F315}","Full moon"],["\u{1F316}","Waning gibbous moon"],["\u{1F317}","Last quarter moon"],["\u{1F318}","Waning crescent moon"],["\u{1F319}","Crescent moon"],["\u{1F31A}","New moon face"],["\u{1F31B}","First quarter moon face"],["\u{1F31C}","Last quarter moon face"],["\u{1F321}\uFE0F","Thermometer"],["\u2600\uFE0F","Sun"],["\u{1F31D}","Full moon face"],["\u{1F31E}","Sun with face"],["\u{1FA90}","Ringed planet"],["\u2B50","Star"],["\u{1F31F}","Glowing star"],["\u{1F320}","Shooting star"],["\u{1F30C}","Milky way"],["\u2601\uFE0F","Cloud"],["\u26C5","Sun behind cloud"],["\u26C8\uFE0F","Cloud with lightning and rain"],["\u{1F324}\uFE0F","Sun behind small cloud"],["\u{1F325}\uFE0F","Sun behind large cloud"],["\u{1F326}\uFE0F","Sun behind rain cloud"],["\u{1F327}\uFE0F","Cloud with rain"],["\u{1F328}\uFE0F","Cloud with snow"],["\u{1F329}\uFE0F","Cloud with lightning"],["\u{1F32A}\uFE0F","Tornado"],["\u{1F32B}\uFE0F","Fog"],["\u{1F32C}\uFE0F","Wind face"],["\u{1F300}","Cyclone"],["\u{1F308}","Rainbow"],["\u{1F302}","Closed umbrella"],["\u2602\uFE0F","Umbrella"],["\u2614","Umbrella with rain drops"],["\u26F1\uFE0F","Umbrella on ground"],["\u26A1","High voltage"],["\u2744\uFE0F","Snowflake"],["\u2603\uFE0F","Snowman"],["\u26C4","Snowman without snow"],["\u2604\uFE0F","Comet"],["\u{1F525}","Fire"],["\u{1F4A7}","Droplet"],["\u{1F30A}","Water wave"],["\u{1F383}","Jack-o-lantern"],["\u{1F384}","Christmas tree"],["\u{1F386}","Fireworks"],["\u{1F387}","Sparkler"],["\u{1F9E8}","Firecracker"],["\u2728","Sparkles"],["\u{1F388}","Balloon"],["\u{1F389}","Party popper"],["\u{1F38A}","Confetti ball"],["\u{1F38B}","Tanabata tree"],["\u{1F38D}","Pine decoration"],["\u{1F38E}","Japanese dolls"],["\u{1F38F}","Carp streamer"],["\u{1F390}","Wind chime"],["\u{1F391}","Moon viewing ceremony"],["\u{1F9E7}","Red envelope"],["\u{1F380}","Ribbon"],["\u{1F381}","Wrapped gift"],["\u{1F397}\uFE0F","Reminder ribbon"],["\u{1F39F}\uFE0F","Admission tickets"],["\u{1F3AB}","Ticket"],["\u{1F396}\uFE0F","Military medal"],["\u{1F3C6}","Trophy"],["\u{1F3C5}","Sports medal"],["\u{1F947}","1st place medal"],["\u{1F948}","2nd place medal"],["\u{1F949}","3rd place medal"],["\u26BD","Soccer ball"],["\u26BE","Baseball"],["\u{1F94E}","Softball"],["\u{1F3C0}","Basketball"],["\u{1F3D0}","Volleyball"],["\u{1F3C8}","American football"],["\u{1F3C9}","Rugby football"],["\u{1F3BE}","Tennis"],["\u{1F94F}","Flying disc"],["\u{1F3B3}","Bowling"],["\u{1F3CF}","Cricket game"],["\u{1F3D1}","Field hockey"],["\u{1F3D2}","Ice hockey"],["\u{1F94D}","Lacrosse"],["\u{1F3D3}","Ping pong"],["\u{1F3F8}","Badminton"],["\u{1F94A}","Boxing glove"],["\u{1F94B}","Martial arts uniform"],["\u{1F945}","Goal net"],["\u26F3","Flag in hole"],["\u26F8\uFE0F","Ice skate"],["\u{1F3A3}","Fishing pole"],["\u{1F93F}","Diving mask"],["\u{1F3BD}","Running shirt"],["\u{1F3BF}","Skis"],["\u{1F6F7}","Sled"],["\u{1F94C}","Curling stone"],["\u{1F3AF}","Bullseye"],["\u{1FA80}","Yo-yo"],["\u{1FA81}","Kite"],["\u{1F52B}","Water pistol"],["\u{1F3B1}","Pool 8 ball"],["\u{1F52E}","Crystal ball"],["\u{1FA84}","Magic wand"],["\u{1F3AE}","Video game"],["\u{1F579}\uFE0F","Joystick"],["\u{1F3B0}","Slot machine"],["\u{1F3B2}","Game die"],["\u{1F9E9}","Puzzle piece"],["\u{1F9F8}","Teddy bear"],["\u{1FA85}","Pi\xF1ata"],["\u{1FAA9}","Mirror ball"],["\u{1FA86}","Nesting dolls"],["\u2660\uFE0F","Spade suit"],["\u2665\uFE0F","Heart suit"],["\u2666\uFE0F","Diamond suit"],["\u2663\uFE0F","Club suit"],["\u265F\uFE0F","Chess pawn"],["\u{1F0CF}","Joker"],["\u{1F004}","Mahjong red dragon"],["\u{1F3B4}","Flower playing cards"],["\u{1F3AD}","Performing arts"],["\u{1F5BC}\uFE0F","Framed picture"],["\u{1F3A8}","Artist palette"],["\u{1F9F5}","Thread"],["\u{1FAA1}","Sewing needle"],["\u{1F9F6}","Yarn"],["\u{1FAA2}","Knot"],["\u{1F453}","Glasses"],["\u{1F576}\uFE0F","Sunglasses"],["\u{1F97D}","Goggles"],["\u{1F97C}","Lab coat"],["\u{1F9BA}","Safety vest"],["\u{1F454}","Necktie"],["\u{1F455}","T-shirt"],["\u{1F456}","Jeans"],["\u{1F9E3}","Scarf"],["\u{1F9E4}","Gloves"],["\u{1F9E5}","Coat"],["\u{1F9E6}","Socks"],["\u{1F457}","Dress"],["\u{1F458}","Kimono"],["\u{1F97B}","Sari"],["\u{1FA71}","One-piece swimsuit"],["\u{1FA72}","Briefs"],["\u{1FA73}","Shorts"],["\u{1F459}","Bikini"],["\u{1F45A}","Woman's clothes"],["\u{1FAAD}","Folding hand fan"],["\u{1F45B}","Purse"],["\u{1F45C}","Handbag"],["\u{1F45D}","Clutch bag"],["\u{1F6CD}\uFE0F","Shopping bags"],["\u{1F392}","Backpack"],["\u{1FA74}","Thong sandal"],["\u{1F45E}","Man's shoe"],["\u{1F45F}","Running shoe"],["\u{1F97E}","Hiking boot"],["\u{1F97F}","Flat shoe"],["\u{1F460}","High-heeled shoe"],["\u{1F461}","Woman's sandal"],["\u{1FA70}","Ballet shoes"],["\u{1F462}","Woman's boot"],["\u{1FAAE}","Hair pick"],["\u{1F451}","Crown"],["\u{1F452}","Woman's hat"],["\u{1F3A9}","Top hat"],["\u{1F393}","Graduation cap"],["\u{1F9E2}","Billed cap"],["\u{1FA96}","Military helmet"],["\u26D1\uFE0F","Rescue worker's helmet"],["\u{1F4FF}","Prayer beads"],["\u{1F484}","Lipstick"],["\u{1F48D}","Ring"],["\u{1F48E}","Gem stone"],["\u{1F507}","Muted speaker"],["\u{1F508}","Speaker low volume"],["\u{1F509}","Speaker medium volume"],["\u{1F50A}","Speaker high volume"],["\u{1F4E2}","Loudspeaker"],["\u{1F4E3}","Megaphone"],["\u{1F4EF}","Postal horn"],["\u{1F514}","Bell"],["\u{1F515}","Bell with slash"],["\u{1F3BC}","Musical score"],["\u{1F3B5}","Musical note"],["\u{1F3B6}","Musical notes"],["\u{1F399}\uFE0F","Studio microphone"],["\u{1F39A}\uFE0F","Level slider"],["\u{1F39B}\uFE0F","Control knobs"],["\u{1F3A4}","Microphone"],["\u{1F3A7}","Headphone"],["\u{1F4FB}","Radio"],["\u{1F3B7}","Saxophone"],["\u{1FA97}","Accordion"],["\u{1F3B8}","Guitar"],["\u{1F3B9}","Musical keyboard"],["\u{1F3BA}","Trumpet"],["\u{1F3BB}","Violin"],["\u{1FA95}","Banjo"],["\u{1F941}","Drum"],["\u{1FA98}","Long drum"],["\u{1FA87}","Maracas"],["\u{1FA88}","Flute"],["\u{1FA89}","Harp"],["\u{1F4F1}","Mobile phone"],["\u{1F4F2}","Mobile phone with arrow"],["\u260E\uFE0F","Telephone"],["\u{1F4DE}","Telephone receiver"],["\u{1F4DF}","Pager"],["\u{1F4E0}","Fax machine"],["\u{1F50B}","Battery"],["\u{1FAAB}","Low battery"],["\u{1F50C}","Electric plug"],["\u{1F4BB}","Laptop"],["\u{1F5A5}\uFE0F","Desktop computer"],["\u{1F5A8}\uFE0F","Printer"],["\u2328\uFE0F","Keyboard"],["\u{1F5B1}\uFE0F","Computer mouse"],["\u{1F5B2}\uFE0F","Trackball"],["\u{1F4BD}","Computer disk"],["\u{1F4BE}","Floppy disk"],["\u{1F4BF}","Optical disk"],["\u{1F4C0}","DVD"],["\u{1F9EE}","Abacus"],["\u{1F3A5}","Movie camera"],["\u{1F39E}\uFE0F","Film frames"],["\u{1F4FD}\uFE0F","Film projector"],["\u{1F3AC}","Clapper board"],["\u{1F4FA}","Television"],["\u{1F4F7}","Camera"],["\u{1F4F8}","Camera with flash"],["\u{1F4F9}","Video camera"],["\u{1F4FC}","Videocassette"],["\u{1F50D}","Magnifying glass tilted left"],["\u{1F50E}","Magnifying glass tilted right"],["\u{1F56F}\uFE0F","Candle"],["\u{1F4A1}","Light bulb"],["\u{1F526}","Flashlight"],["\u{1F3EE}","Red paper lantern"],["\u{1FA94}","Diya lamp"],["\u{1F4D4}","Notebook with decorative cover"],["\u{1F4D5}","Closed book"],["\u{1F4D6}","Open book"],["\u{1F4D7}","Green book"],["\u{1F4D8}","Blue book"],["\u{1F4D9}","Orange book"],["\u{1F4DA}","Books"],["\u{1F4D3}","Notebook"],["\u{1F4D2}","Ledger"],["\u{1F4C3}","Page with curl"],["\u{1F4DC}","Scroll"],["\u{1F4C4}","Page facing up"],["\u{1F4F0}","Newspaper"],["\u{1F5DE}\uFE0F","Rolled-up newspaper"],["\u{1F4D1}","Bookmark tabs"],["\u{1F516}","Bookmark"],["\u{1F3F7}\uFE0F","Label"],["\u{1F4B0}","Money bag"],["\u{1FA99}","Coin"],["\u{1F4B4}","Yen banknote"],["\u{1F4B5}","Dollar banknote"],["\u{1F4B6}","Euro banknote"],["\u{1F4B7}","Pound banknote"],["\u{1F4B8}","Money with wings"],["\u{1F4B3}","Credit card"],["\u{1F9FE}","Receipt"],["\u{1F4B9}","Chart increasing with yen"],["\u2709\uFE0F","Envelope"],["\u{1F4E7}","E-mail"],["\u{1F4E8}","Incoming envelope"],["\u{1F4E9}","Envelope with arrow"],["\u{1F4E4}","Outbox tray"],["\u{1F4E5}","Inbox tray"],["\u{1F4E6}","Package"],["\u{1F4EB}","Closed mailbox with raised flag"],["\u{1F4EA}","Closed mailbox with lowered flag"],["\u{1F4EC}","Open mailbox with raised flag"],["\u{1F4ED}","Open mailbox with lowered flag"],["\u{1F4EE}","Postbox"],["\u{1F5F3}\uFE0F","Ballot box with ballot"],["\u270F\uFE0F","Pencil"],["\u2712\uFE0F","Black nib"],["\u{1F58B}\uFE0F","Fountain pen"],["\u{1F58A}\uFE0F","Pen"],["\u{1F58C}\uFE0F","Paintbrush"],["\u{1F58D}\uFE0F","Crayon"],["\u{1F4DD}","Memo"],["\u{1F4BC}","Briefcase"],["\u{1F4C1}","File folder"],["\u{1F4C2}","Open file folder"],["\u{1F5C2}\uFE0F","Card index dividers"],["\u{1F4C5}","Calendar"],["\u{1F4C6}","Tear-off calendar"],["\u{1F5D2}\uFE0F","Spiral notepad"],["\u{1F5D3}\uFE0F","Spiral calendar"],["\u{1F4C7}","Card index"],["\u{1F4C8}","Chart increasing"],["\u{1F4C9}","Chart decreasing"],["\u{1F4CA}","Bar chart"],["\u{1F4CB}","Clipboard"],["\u{1F4CC}","Pushpin"],["\u{1F4CD}","Round pushpin"],["\u{1F4CE}","Paperclip"],["\u{1F587}\uFE0F","Linked paperclips"],["\u{1F4CF}","Straight ruler"],["\u{1F4D0}","Triangular ruler"],["\u2702\uFE0F","Scissors"],["\u{1F5C3}\uFE0F","Card file box"],["\u{1F5C4}\uFE0F","File cabinet"],["\u{1F5D1}\uFE0F","Wastebasket"],["\u{1F512}","Locked"],["\u{1F513}","Unlocked"],["\u{1F50F}","Locked with pen"],["\u{1F510}","Locked with key"],["\u{1F511}","Key"],["\u{1F5DD}\uFE0F","Old key"],["\u{1F528}","Hammer"],["\u{1FA93}","Axe"],["\u26CF\uFE0F","Pick"],["\u2692\uFE0F","Hammer and pick"],["\u{1F6E0}\uFE0F","Hammer and wrench"],["\u{1F5E1}\uFE0F","Dagger"],["\u2694\uFE0F","Crossed swords"],["\u{1F4A3}","Bomb"],["\u{1FA83}","Boomerang"],["\u{1F3F9}","Bow and arrow"],["\u{1F6E1}\uFE0F","Shield"],["\u{1FA9A}","Carpentry saw"],["\u{1F527}","Wrench"],["\u{1FA9B}","Screwdriver"],["\u{1F529}","Nut and bolt"],["\u2699\uFE0F","Gear"],["\u{1F5DC}\uFE0F","Clamp"],["\u2696\uFE0F","Balance scale"],["\u{1F9AF}","White cane"],["\u{1F517}","Link"],["\u26D3\uFE0F\u200D\u{1F4A5}","Broken chain"],["\u26D3\uFE0F","Chains"],["\u{1FA9D}","Hook"],["\u{1F9F0}","Toolbox"],["\u{1F9F2}","Magnet"],["\u{1FA9C}","Ladder"],["\u{1FA8F}","Shovel"],["\u2697\uFE0F","Alembic"],["\u{1F9EA}","Test tube"],["\u{1F9EB}","Petri dish"],["\u{1F9EC}","DNA"],["\u{1F52C}","Microscope"],["\u{1F52D}","Telescope"],["\u{1F4E1}","Satellite antenna"],["\u{1F489}","Syringe"],["\u{1FA78}","Drop of blood"],["\u{1F48A}","Pill"],["\u{1FA79}","Adhesive bandage"],["\u{1FA7C}","Crutch"],["\u{1FA7A}","Stethoscope"],["\u{1FA7B}","X-ray"],["\u{1F6AA}","Door"],["\u{1F6D7}","Elevator"],["\u{1FA9E}","Mirror"],["\u{1FA9F}","Window"],["\u{1F6CF}\uFE0F","Bed"],["\u{1F6CB}\uFE0F","Couch and lamp"],["\u{1FA91}","Chair"],["\u{1F6BD}","Toilet"],["\u{1FAA0}","Plunger"],["\u{1F6BF}","Shower"],["\u{1F6C1}","Bathtub"],["\u{1FAA4}","Mouse trap"],["\u{1FA92}","Razor"],["\u{1F9F4}","Lotion bottle"],["\u{1F9F7}","Safety pin"],["\u{1F9F9}","Broom"],["\u{1F9FA}","Basket"],["\u{1F9FB}","Roll of paper"],["\u{1FAA3}","Bucket"],["\u{1F9FC}","Soap"],["\u{1FAE7}","Bubbles"],["\u{1FAA5}","Toothbrush"],["\u{1F9FD}","Sponge"],["\u{1F9EF}","Fire extinguisher"],["\u{1F6D2}","Shopping cart"],["\u{1F6AC}","Cigarette"],["\u26B0\uFE0F","Coffin"],["\u{1FAA6}","Headstone"],["\u26B1\uFE0F","Funeral urn"],["\u{1F9FF}","Nazar amulet"],["\u{1FAAC}","Hamsa"],["\u{1F5FF}","Moai"],["\u{1FAA7}","Placard"],["\u{1FAAA}","Identification card"],["\u{1F3E7}","ATM sign"],["\u{1F6AE}","Litter in bin sign"],["\u{1F6B0}","Potable water"],["\u267F","Wheelchair symbol"],["\u{1F6B9}","Men's room"],["\u{1F6BA}","Women's room"],["\u{1F6BB}","Restroom"],["\u{1F6BC}","Baby symbol"],["\u{1F6BE}","Water closet"],["\u{1F6C2}","Passport control"],["\u{1F6C3}","Customs"],["\u{1F6C4}","Baggage claim"],["\u{1F6C5}","Left luggage"],["\u26A0\uFE0F","Warning"],["\u{1F6B8}","Children crossing"],["\u26D4","No entry"],["\u{1F6AB}","Prohibited"],["\u{1F6B3}","No bicycles"],["\u{1F6AD}","No smoking"],["\u{1F6AF}","No littering"],["\u{1F6B1}","Non-potable water"],["\u{1F6B7}","No pedestrians"],["\u{1F4F5}","No mobile phones"],["\u{1F51E}","No one under eighteen"],["\u2622\uFE0F","Radioactive"],["\u2623\uFE0F","Biohazard"],["\u2B06\uFE0F","Up arrow"],["\u2197\uFE0F","Up-right arrow"],["\u27A1\uFE0F","Right arrow"],["\u2198\uFE0F","Down-right arrow"],["\u2B07\uFE0F","Down arrow"],["\u2199\uFE0F","Down-left arrow"],["\u2B05\uFE0F","Left arrow"],["\u2196\uFE0F","Up-left arrow"],["\u2195\uFE0F","Up-down arrow"],["\u2194\uFE0F","Left-right arrow"],["\u21A9\uFE0F","Right arrow curving left"],["\u21AA\uFE0F","Left arrow curving right"],["\u2934\uFE0F","Right arrow curving up"],["\u2935\uFE0F","Right arrow curving down"],["\u{1F503}","Clockwise vertical arrows"],["\u{1F504}","Counterclockwise arrows button"],["\u{1F519}","BACK arrow"],["\u{1F51A}","END arrow"],["\u{1F51B}","ON! arrow"],["\u{1F51C}","SOON arrow"],["\u{1F51D}","TOP arrow"],["\u{1F6D0}","Place of worship"],["\u269B\uFE0F","Atom symbol"],["\u{1F549}\uFE0F","Om"],["\u2721\uFE0F","Star of David"],["\u2638\uFE0F","Wheel of dharma"],["\u262F\uFE0F","Yin yang"],["\u271D\uFE0F","Latin cross"],["\u2626\uFE0F","Orthodox cross"],["\u262A\uFE0F","Star and crescent"],["\u262E\uFE0F","Peace symbol"],["\u{1F54E}","Menorah"],["\u{1F52F}","Dotted six-pointed star"],["\u{1FAAF}","Khanda"],["\u2648","Aries"],["\u2649","Taurus"],["\u264A","Gemini"],["\u264B","Cancer"],["\u264C","Leo"],["\u264D","Virgo"],["\u264E","Libra"],["\u264F","Scorpio"],["\u2650","Sagittarius"],["\u2651","Capricorn"],["\u2652","Aquarius"],["\u2653","Pisces"],["\u26CE","Ophiuchus"],["\u{1F500}","Shuffle tracks button"],["\u{1F501}","Repeat button"],["\u{1F502}","Repeat single button"],["\u25B6\uFE0F","Play button"],["\u23E9","Fast-forward button"],["\u23ED\uFE0F","Next track button"],["\u23EF\uFE0F","Play or pause button"],["\u25C0\uFE0F","Reverse button"],["\u23EA","Fast reverse button"],["\u23EE\uFE0F","Last track button"],["\u{1F53C}","Upwards button"],["\u23EB","Fast up button"],["\u{1F53D}","Downwards button"],["\u23EC","Fast down button"],["\u23F8\uFE0F","Pause button"],["\u23F9\uFE0F","Stop button"],["\u23FA\uFE0F","Record button"],["\u23CF\uFE0F","Eject button"],["\u{1F3A6}","Cinema"],["\u{1F505}","Dim button"],["\u{1F506}","Bright button"],["\u{1F4F6}","Antenna bars"],["\u{1F6DC}","Wireless"],["\u{1F4F3}","Vibration mode"],["\u{1F4F4}","Mobile phone off"],["\u2640\uFE0F","Female sign"],["\u2642\uFE0F","Male sign"],["\u26A7\uFE0F","Transgender symbol"],["\u2716\uFE0F","Multiply"],["\u2795","Plus"],["\u2796","Minus"],["\u2797","Divide"],["\u{1F7F0}","Heavy equals sign"],["\u267E\uFE0F","Infinity"],["\u203C\uFE0F","Double exclamation mark"],["\u2049\uFE0F","Exclamation question mark"],["\u2753","Red question mark"],["\u2754","White question mark"],["\u2755","White exclamation mark"],["\u2757","Red exclamation mark"],["\u3030\uFE0F","Wavy dash"],["\u{1F4B1}","Currency exchange"],["\u{1F4B2}","Heavy dollar sign"],["\u2695\uFE0F","Medical symbol"],["\u267B\uFE0F","Recycling symbol"],["\u269C\uFE0F","Fleur-de-lis"],["\u{1F531}","Trident emblem"],["\u{1F4DB}","Name badge"],["\u{1F530}","Japanese symbol for beginner"],["\u2B55","Hollow red circle"],["\u2705","Check mark button"],["\u2611\uFE0F","Check box with check"],["\u2714\uFE0F","Check mark"],["\u274C","Cross mark"],["\u274E","Cross mark button"],["\u27B0","Curly loop"],["\u27BF","Double curly loop"],["\u303D\uFE0F","Part alternation mark"],["\u2733\uFE0F","Eight-spoked asterisk"],["\u2734\uFE0F","Eight-pointed star"],["\u2747\uFE0F","Sparkle"],["\xA9\uFE0F","Copyright"],["\xAE\uFE0F","Registered"],["\u2122\uFE0F","Trade mark"],["\u{1FADF}","Splatter"],["#\uFE0F\u20E3","Keycap: #"],["*\uFE0F\u20E3","Keycap: *"],["0\uFE0F\u20E3","Keycap: 0"],["1\uFE0F\u20E3","Keycap: 1"],["2\uFE0F\u20E3","Keycap: 2"],["3\uFE0F\u20E3","Keycap: 3"],["4\uFE0F\u20E3","Keycap: 4"],["5\uFE0F\u20E3","Keycap: 5"],["6\uFE0F\u20E3","Keycap: 6"],["7\uFE0F\u20E3","Keycap: 7"],["8\uFE0F\u20E3","Keycap: 8"],["9\uFE0F\u20E3","Keycap: 9"],["\u{1F51F}","Keycap: 10"],["\u{1F520}","Input latin uppercase"],["\u{1F521}","Input latin lowercase"],["\u{1F522}","Input numbers"],["\u{1F523}","Input symbols"],["\u{1F524}","Input latin letters"],["\u{1F170}\uFE0F","A button (blood type)"],["\u{1F18E}","AB button (blood type)"],["\u{1F171}\uFE0F","B button (blood type)"],["\u{1F191}","CL button"],["\u{1F192}","COOL button"],["\u{1F193}","FREE button"],["\u2139\uFE0F","Information"],["\u{1F194}","ID button"],["\u24C2\uFE0F","Circled M"],["\u{1F195}","NEW button"],["\u{1F196}","NG button"],["\u{1F17E}\uFE0F","O button (blood type)"],["\u{1F197}","OK button"],["\u{1F17F}\uFE0F","P button"],["\u{1F198}","SOS button"],["\u{1F199}","UP! button"],["\u{1F19A}","VS button"],["\u{1F201}","Japanese \u201Chere\u201D button"],["\u{1F202}\uFE0F","Japanese \u201Cservice charge\u201D button"],["\u{1F237}\uFE0F","Japanese \u201Cmonthly amount\u201D button"],["\u{1F236}","Japanese \u201Cnot free of charge\u201D button"],["\u{1F22F}","Japanese \u201Creserved\u201D button"],["\u{1F250}","Japanese \u201Cbargain\u201D button"],["\u{1F239}","Japanese \u201Cdiscount\u201D button"],["\u{1F21A}","Japanese \u201Cfree of charge\u201D button"],["\u{1F232}","Japanese \u201Cprohibited\u201D button"],["\u{1F251}","Japanese \u201Cacceptable\u201D button"],["\u{1F238}","Japanese \u201Capplication\u201D button"],["\u{1F234}","Japanese \u201Cpassing grade\u201D button"],["\u{1F233}","Japanese \u201Cvacancy\u201D button"],["\u3297\uFE0F","Japanese \u201Ccongratulations\u201D button"],["\u3299\uFE0F","Japanese \u201Csecret\u201D button"],["\u{1F23A}","Japanese \u201Copen for business\u201D button"],["\u{1F235}","Japanese \u201Cno vacancy\u201D button"],["\u{1F534}","Red circle"],["\u{1F7E0}","Orange circle"],["\u{1F7E1}","Yellow circle"],["\u{1F7E2}","Green circle"],["\u{1F535}","Blue circle"],["\u{1F7E3}","Purple circle"],["\u{1F7E4}","Brown circle"],["\u26AB","Black circle"],["\u26AA","White circle"],["\u{1F7E5}","Red square"],["\u{1F7E7}","Orange square"],["\u{1F7E8}","Yellow square"],["\u{1F7E9}","Green square"],["\u{1F7E6}","Blue square"],["\u{1F7EA}","Purple square"],["\u{1F7EB}","Brown square"],["\u2B1B","Black large square"],["\u2B1C","White large square"],["\u25FC\uFE0F","Black medium square"],["\u25FB\uFE0F","White medium square"],["\u25FE","Black medium-small square"],["\u25FD","White medium-small square"],["\u25AA\uFE0F","Black small square"],["\u25AB\uFE0F","White small square"],["\u{1F536}","Large orange diamond"],["\u{1F537}","Large blue diamond"],["\u{1F538}","Small orange diamond"],["\u{1F539}","Small blue diamond"],["\u{1F53A}","Red triangle pointed up"],["\u{1F53B}","Red triangle pointed down"],["\u{1F4A0}","Diamond with a dot"],["\u{1F518}","Radio button"],["\u{1F533}","White square button"],["\u{1F532}","Black square button"],["\u{1F3C1}","Chequered flag"],["\u{1F6A9}","Triangular flag"],["\u{1F38C}","Crossed flags"],["\u{1F3F4}","Black flag"],["\u{1F3F3}\uFE0F","White flag"],["\u{1F3F3}\uFE0F\u200D\u{1F308}","Rainbow flag"],["\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F","Transgender flag"],["\u{1F3F4}\u200D\u2620\uFE0F","Pirate flag"],["\u{1F1E6}\u{1F1E8}","Flag: Ascension Island"],["\u{1F1E6}\u{1F1E9}","Flag: Andorra"],["\u{1F1E6}\u{1F1EA}","Flag: United Arab Emirates"],["\u{1F1E6}\u{1F1EB}","Flag: Afghanistan"],["\u{1F1E6}\u{1F1EC}","Flag: Antigua & Barbuda"],["\u{1F1E6}\u{1F1EE}","Flag: Anguilla"],["\u{1F1E6}\u{1F1F1}","Flag: Albania"],["\u{1F1E6}\u{1F1F2}","Flag: Armenia"],["\u{1F1E6}\u{1F1F4}","Flag: Angola"],["\u{1F1E6}\u{1F1F6}","Flag: Antarctica"],["\u{1F1E6}\u{1F1F7}","Flag: Argentina"],["\u{1F1E6}\u{1F1F8}","Flag: American Samoa"],["\u{1F1E6}\u{1F1F9}","Flag: Austria"],["\u{1F1E6}\u{1F1FA}","Flag: Australia"],["\u{1F1E6}\u{1F1FC}","Flag: Aruba"],["\u{1F1E6}\u{1F1FD}","Flag: \xC5land Islands"],["\u{1F1E6}\u{1F1FF}","Flag: Azerbaijan"],["\u{1F1E7}\u{1F1E6}","Flag: Bosnia & Herzegovina"],["\u{1F1E7}\u{1F1E7}","Flag: Barbados"],["\u{1F1E7}\u{1F1E9}","Flag: Bangladesh"],["\u{1F1E7}\u{1F1EA}","Flag: Belgium"],["\u{1F1E7}\u{1F1EB}","Flag: Burkina Faso"],["\u{1F1E7}\u{1F1EC}","Flag: Bulgaria"],["\u{1F1E7}\u{1F1ED}","Flag: Bahrain"],["\u{1F1E7}\u{1F1EE}","Flag: Burundi"],["\u{1F1E7}\u{1F1EF}","Flag: Benin"],["\u{1F1E7}\u{1F1F1}","Flag: St. Barth\xE9lemy"],["\u{1F1E7}\u{1F1F2}","Flag: Bermuda"],["\u{1F1E7}\u{1F1F3}","Flag: Brunei"],["\u{1F1E7}\u{1F1F4}","Flag: Bolivia"],["\u{1F1E7}\u{1F1F6}","Flag: Caribbean Netherlands"],["\u{1F1E7}\u{1F1F7}","Flag: Brazil"],["\u{1F1E7}\u{1F1F8}","Flag: Bahamas"],["\u{1F1E7}\u{1F1F9}","Flag: Bhutan"],["\u{1F1E7}\u{1F1FB}","Flag: Bouvet Island"],["\u{1F1E7}\u{1F1FC}","Flag: Botswana"],["\u{1F1E7}\u{1F1FE}","Flag: Belarus"],["\u{1F1E7}\u{1F1FF}","Flag: Belize"],["\u{1F1E8}\u{1F1E6}","Flag: Canada"],["\u{1F1E8}\u{1F1E8}","Flag: Cocos (Keeling) Islands"],["\u{1F1E8}\u{1F1E9}","Flag: Congo - Kinshasa"],["\u{1F1E8}\u{1F1EB}","Flag: Central African Republic"],["\u{1F1E8}\u{1F1EC}","Flag: Congo - Brazzaville"],["\u{1F1E8}\u{1F1ED}","Flag: Switzerland"],["\u{1F1E8}\u{1F1EE}","Flag: C\xF4te d'Ivoire"],["\u{1F1E8}\u{1F1F0}","Flag: Cook Islands"],["\u{1F1E8}\u{1F1F1}","Flag: Chile"],["\u{1F1E8}\u{1F1F2}","Flag: Cameroon"],["\u{1F1E8}\u{1F1F3}","Flag: China"],["\u{1F1E8}\u{1F1F4}","Flag: Colombia"],["\u{1F1E8}\u{1F1F5}","Flag: Clipperton Island"],["\u{1F1E8}\u{1F1F6}","Flag: Sark"],["\u{1F1E8}\u{1F1F7}","Flag: Costa Rica"],["\u{1F1E8}\u{1F1FA}","Flag: Cuba"],["\u{1F1E8}\u{1F1FB}","Flag: Cape Verde"],["\u{1F1E8}\u{1F1FC}","Flag: Cura\xE7ao"],["\u{1F1E8}\u{1F1FD}","Flag: Christmas Island"],["\u{1F1E8}\u{1F1FE}","Flag: Cyprus"],["\u{1F1E8}\u{1F1FF}","Flag: Czechia"],["\u{1F1E9}\u{1F1EA}","Flag: Germany"],["\u{1F1E9}\u{1F1EC}","Flag: Diego Garcia"],["\u{1F1E9}\u{1F1EF}","Flag: Djibouti"],["\u{1F1E9}\u{1F1F0}","Flag: Denmark"],["\u{1F1E9}\u{1F1F2}","Flag: Dominica"],["\u{1F1E9}\u{1F1F4}","Flag: Dominican Republic"],["\u{1F1E9}\u{1F1FF}","Flag: Algeria"],["\u{1F1EA}\u{1F1E6}","Flag: Ceuta & Melilla"],["\u{1F1EA}\u{1F1E8}","Flag: Ecuador"],["\u{1F1EA}\u{1F1EA}","Flag: Estonia"],["\u{1F1EA}\u{1F1EC}","Flag: Egypt"],["\u{1F1EA}\u{1F1ED}","Flag: Western Sahara"],["\u{1F1EA}\u{1F1F7}","Flag: Eritrea"],["\u{1F1EA}\u{1F1F8}","Flag: Spain"],["\u{1F1EA}\u{1F1F9}","Flag: Ethiopia"],["\u{1F1EA}\u{1F1FA}","Flag: European Union"],["\u{1F1EB}\u{1F1EE}","Flag: Finland"],["\u{1F1EB}\u{1F1EF}","Flag: Fiji"],["\u{1F1EB}\u{1F1F0}","Flag: Falkland Islands"],["\u{1F1EB}\u{1F1F2}","Flag: Micronesia"],["\u{1F1EB}\u{1F1F4}","Flag: Faroe Islands"],["\u{1F1EB}\u{1F1F7}","Flag: France"],["\u{1F1EC}\u{1F1E6}","Flag: Gabon"],["\u{1F1EC}\u{1F1E7}","Flag: United Kingdom"],["\u{1F1EC}\u{1F1E9}","Flag: Grenada"],["\u{1F1EC}\u{1F1EA}","Flag: Georgia"],["\u{1F1EC}\u{1F1EB}","Flag: French Guiana"],["\u{1F1EC}\u{1F1EC}","Flag: Guernsey"],["\u{1F1EC}\u{1F1ED}","Flag: Ghana"],["\u{1F1EC}\u{1F1EE}","Flag: Gibraltar"],["\u{1F1EC}\u{1F1F1}","Flag: Greenland"],["\u{1F1EC}\u{1F1F2}","Flag: Gambia"],["\u{1F1EC}\u{1F1F3}","Flag: Guinea"],["\u{1F1EC}\u{1F1F5}","Flag: Guadeloupe"],["\u{1F1EC}\u{1F1F6}","Flag: Equatorial Guinea"],["\u{1F1EC}\u{1F1F7}","Flag: Greece"],["\u{1F1EC}\u{1F1F8}","Flag: South Georgia & South Sandwich Islands"],["\u{1F1EC}\u{1F1F9}","Flag: Guatemala"],["\u{1F1EC}\u{1F1FA}","Flag: Guam"],["\u{1F1EC}\u{1F1FC}","Flag: Guinea-Bissau"],["\u{1F1EC}\u{1F1FE}","Flag: Guyana"],["\u{1F1ED}\u{1F1F0}","Flag: Hong Kong SAR China"],["\u{1F1ED}\u{1F1F2}","Flag: Heard & McDonald Islands"],["\u{1F1ED}\u{1F1F3}","Flag: Honduras"],["\u{1F1ED}\u{1F1F7}","Flag: Croatia"],["\u{1F1ED}\u{1F1F9}","Flag: Haiti"],["\u{1F1ED}\u{1F1FA}","Flag: Hungary"],["\u{1F1EE}\u{1F1E8}","Flag: Canary Islands"],["\u{1F1EE}\u{1F1E9}","Flag: Indonesia"],["\u{1F1EE}\u{1F1EA}","Flag: Ireland"],["\u{1F1EE}\u{1F1F1}","Flag: Israel"],["\u{1F1EE}\u{1F1F2}","Flag: Isle of Man"],["\u{1F1EE}\u{1F1F3}","Flag: India"],["\u{1F1EE}\u{1F1F4}","Flag: British Indian Ocean Territory"],["\u{1F1EE}\u{1F1F6}","Flag: Iraq"],["\u{1F1EE}\u{1F1F7}","Flag: Iran"],["\u{1F1EE}\u{1F1F8}","Flag: Iceland"],["\u{1F1EE}\u{1F1F9}","Flag: Italy"],["\u{1F1EF}\u{1F1EA}","Flag: Jersey"],["\u{1F1EF}\u{1F1F2}","Flag: Jamaica"],["\u{1F1EF}\u{1F1F4}","Flag: Jordan"],["\u{1F1EF}\u{1F1F5}","Flag: Japan"],["\u{1F1F0}\u{1F1EA}","Flag: Kenya"],["\u{1F1F0}\u{1F1EC}","Flag: Kyrgyzstan"],["\u{1F1F0}\u{1F1ED}","Flag: Cambodia"],["\u{1F1F0}\u{1F1EE}","Flag: Kiribati"],["\u{1F1F0}\u{1F1F2}","Flag: Comoros"],["\u{1F1F0}\u{1F1F3}","Flag: St. Kitts & Nevis"],["\u{1F1F0}\u{1F1F5}","Flag: North Korea"],["\u{1F1F0}\u{1F1F7}","Flag: South Korea"],["\u{1F1F0}\u{1F1FC}","Flag: Kuwait"],["\u{1F1F0}\u{1F1FE}","Flag: Cayman Islands"],["\u{1F1F0}\u{1F1FF}","Flag: Kazakhstan"],["\u{1F1F1}\u{1F1E6}","Flag: Laos"],["\u{1F1F1}\u{1F1E7}","Flag: Lebanon"],["\u{1F1F1}\u{1F1E8}","Flag: St. Lucia"],["\u{1F1F1}\u{1F1EE}","Flag: Liechtenstein"],["\u{1F1F1}\u{1F1F0}","Flag: Sri Lanka"],["\u{1F1F1}\u{1F1F7}","Flag: Liberia"],["\u{1F1F1}\u{1F1F8}","Flag: Lesotho"],["\u{1F1F1}\u{1F1F9}","Flag: Lithuania"],["\u{1F1F1}\u{1F1FA}","Flag: Luxembourg"],["\u{1F1F1}\u{1F1FB}","Flag: Latvia"],["\u{1F1F1}\u{1F1FE}","Flag: Libya"],["\u{1F1F2}\u{1F1E6}","Flag: Morocco"],["\u{1F1F2}\u{1F1E8}","Flag: Monaco"],["\u{1F1F2}\u{1F1E9}","Flag: Moldova"],["\u{1F1F2}\u{1F1EA}","Flag: Montenegro"],["\u{1F1F2}\u{1F1EB}","Flag: St. Martin"],["\u{1F1F2}\u{1F1EC}","Flag: Madagascar"],["\u{1F1F2}\u{1F1ED}","Flag: Marshall Islands"],["\u{1F1F2}\u{1F1F0}","Flag: North Macedonia"],["\u{1F1F2}\u{1F1F1}","Flag: Mali"],["\u{1F1F2}\u{1F1F2}","Flag: Myanmar (Burma)"],["\u{1F1F2}\u{1F1F3}","Flag: Mongolia"],["\u{1F1F2}\u{1F1F4}","Flag: Macao SAR China"],["\u{1F1F2}\u{1F1F5}","Flag: Northern Mariana Islands"],["\u{1F1F2}\u{1F1F6}","Flag: Martinique"],["\u{1F1F2}\u{1F1F7}","Flag: Mauritania"],["\u{1F1F2}\u{1F1F8}","Flag: Montserrat"],["\u{1F1F2}\u{1F1F9}","Flag: Malta"],["\u{1F1F2}\u{1F1FA}","Flag: Mauritius"],["\u{1F1F2}\u{1F1FB}","Flag: Maldives"],["\u{1F1F2}\u{1F1FC}","Flag: Malawi"],["\u{1F1F2}\u{1F1FD}","Flag: Mexico"],["\u{1F1F2}\u{1F1FE}","Flag: Malaysia"],["\u{1F1F2}\u{1F1FF}","Flag: Mozambique"],["\u{1F1F3}\u{1F1E6}","Flag: Namibia"],["\u{1F1F3}\u{1F1E8}","Flag: New Caledonia"],["\u{1F1F3}\u{1F1EA}","Flag: Niger"],["\u{1F1F3}\u{1F1EB}","Flag: Norfolk Island"],["\u{1F1F3}\u{1F1EC}","Flag: Nigeria"],["\u{1F1F3}\u{1F1EE}","Flag: Nicaragua"],["\u{1F1F3}\u{1F1F1}","Flag: Netherlands"],["\u{1F1F3}\u{1F1F4}","Flag: Norway"],["\u{1F1F3}\u{1F1F5}","Flag: Nepal"],["\u{1F1F3}\u{1F1F7}","Flag: Nauru"],["\u{1F1F3}\u{1F1FA}","Flag: Niue"],["\u{1F1F3}\u{1F1FF}","Flag: New Zealand"],["\u{1F1F4}\u{1F1F2}","Flag: Oman"],["\u{1F1F5}\u{1F1E6}","Flag: Panama"],["\u{1F1F5}\u{1F1EA}","Flag: Peru"],["\u{1F1F5}\u{1F1EB}","Flag: French Polynesia"],["\u{1F1F5}\u{1F1EC}","Flag: Papua New Guinea"],["\u{1F1F5}\u{1F1ED}","Flag: Philippines"],["\u{1F1F5}\u{1F1F0}","Flag: Pakistan"],["\u{1F1F5}\u{1F1F1}","Flag: Poland"],["\u{1F1F5}\u{1F1F2}","Flag: St. Pierre & Miquelon"],["\u{1F1F5}\u{1F1F3}","Flag: Pitcairn Islands"],["\u{1F1F5}\u{1F1F7}","Flag: Puerto Rico"],["\u{1F1F5}\u{1F1F8}","Flag: Palestinian Territories"],["\u{1F1F5}\u{1F1F9}","Flag: Portugal"],["\u{1F1F5}\u{1F1FC}","Flag: Palau"],["\u{1F1F5}\u{1F1FE}","Flag: Paraguay"],["\u{1F1F6}\u{1F1E6}","Flag: Qatar"],["\u{1F1F7}\u{1F1EA}","Flag: R\xE9union"],["\u{1F1F7}\u{1F1F4}","Flag: Romania"],["\u{1F1F7}\u{1F1F8}","Flag: Serbia"],["\u{1F1F7}\u{1F1FA}","Flag: Russia"],["\u{1F1F7}\u{1F1FC}","Flag: Rwanda"],["\u{1F1F8}\u{1F1E6}","Flag: Saudi Arabia"],["\u{1F1F8}\u{1F1E7}","Flag: Solomon Islands"],["\u{1F1F8}\u{1F1E8}","Flag: Seychelles"],["\u{1F1F8}\u{1F1E9}","Flag: Sudan"],["\u{1F1F8}\u{1F1EA}","Flag: Sweden"],["\u{1F1F8}\u{1F1EC}","Flag: Singapore"],["\u{1F1F8}\u{1F1ED}","Flag: St. Helena"],["\u{1F1F8}\u{1F1EE}","Flag: Slovenia"],["\u{1F1F8}\u{1F1EF}","Flag: Svalbard & Jan Mayen"],["\u{1F1F8}\u{1F1F0}","Flag: Slovakia"],["\u{1F1F8}\u{1F1F1}","Flag: Sierra Leone"],["\u{1F1F8}\u{1F1F2}","Flag: San Marino"],["\u{1F1F8}\u{1F1F3}","Flag: Senegal"],["\u{1F1F8}\u{1F1F4}","Flag: Somalia"],["\u{1F1F8}\u{1F1F7}","Flag: Suriname"],["\u{1F1F8}\u{1F1F8}","Flag: South Sudan"],["\u{1F1F8}\u{1F1F9}","Flag: S\xE3o Tom\xE9 & Pr\xEDncipe"],["\u{1F1F8}\u{1F1FB}","Flag: El Salvador"],["\u{1F1F8}\u{1F1FD}","Flag: Sint Maarten"],["\u{1F1F8}\u{1F1FE}","Flag: Syria"],["\u{1F1F8}\u{1F1FF}","Flag: Eswatini"],["\u{1F1F9}\u{1F1E6}","Flag: Tristan da Cunha"],["\u{1F1F9}\u{1F1E8}","Flag: Turks & Caicos Islands"],["\u{1F1F9}\u{1F1E9}","Flag: Chad"],["\u{1F1F9}\u{1F1EB}","Flag: French Southern Territories"],["\u{1F1F9}\u{1F1EC}","Flag: Togo"],["\u{1F1F9}\u{1F1ED}","Flag: Thailand"],["\u{1F1F9}\u{1F1EF}","Flag: Tajikistan"],["\u{1F1F9}\u{1F1F0}","Flag: Tokelau"],["\u{1F1F9}\u{1F1F1}","Flag: Timor-Leste"],["\u{1F1F9}\u{1F1F2}","Flag: Turkmenistan"],["\u{1F1F9}\u{1F1F3}","Flag: Tunisia"],["\u{1F1F9}\u{1F1F4}","Flag: Tonga"],["\u{1F1F9}\u{1F1F7}","Flag: T\xFCrkiye"],["\u{1F1F9}\u{1F1F9}","Flag: Trinidad & Tobago"],["\u{1F1F9}\u{1F1FB}","Flag: Tuvalu"],["\u{1F1F9}\u{1F1FC}","Flag: Taiwan"],["\u{1F1F9}\u{1F1FF}","Flag: Tanzania"],["\u{1F1FA}\u{1F1E6}","Flag: Ukraine"],["\u{1F1FA}\u{1F1EC}","Flag: Uganda"],["\u{1F1FA}\u{1F1F2}","Flag: U.S. Outlying Islands"],["\u{1F1FA}\u{1F1F3}","Flag: United Nations"],["\u{1F1FA}\u{1F1F8}","Flag: United States"],["\u{1F1FA}\u{1F1FE}","Flag: Uruguay"],["\u{1F1FA}\u{1F1FF}","Flag: Uzbekistan"],["\u{1F1FB}\u{1F1E6}","Flag: Vatican City"],["\u{1F1FB}\u{1F1E8}","Flag: St. Vincent & Grenadines"],["\u{1F1FB}\u{1F1EA}","Flag: Venezuela"],["\u{1F1FB}\u{1F1EC}","Flag: British Virgin Islands"],["\u{1F1FB}\u{1F1EE}","Flag: U.S. Virgin Islands"],["\u{1F1FB}\u{1F1F3}","Flag: Vietnam"],["\u{1F1FB}\u{1F1FA}","Flag: Vanuatu"],["\u{1F1FC}\u{1F1EB}","Flag: Wallis & Futuna"],["\u{1F1FC}\u{1F1F8}","Flag: Samoa"],["\u{1F1FD}\u{1F1F0}","Flag: Kosovo"],["\u{1F1FE}\u{1F1EA}","Flag: Yemen"],["\u{1F1FE}\u{1F1F9}","Flag: Mayotte"],["\u{1F1FF}\u{1F1E6}","Flag: South Africa"],["\u{1F1FF}\u{1F1F2}","Flag: Zambia"],["\u{1F1FF}\u{1F1FC}","Flag: Zimbabwe"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}","Flag: England"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}","Flag: Scotland"],["\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}","Flag: Wales"]]);var we=class{static async localize(){let a;switch(window.localStorage.language){case"ar":a=await Promise.resolve().then(()=>O(Re()));break;case"de":a=await Promise.resolve().then(()=>O(Fe()));break;case"en-GB":a=await Promise.resolve().then(()=>O(Pe()));break;case"es":a=await Promise.resolve().then(()=>O(De()));break;case"fr":a=await Promise.resolve().then(()=>O(Be()));break;case"id":a=await Promise.resolve().then(()=>O(Le()));break;case"ja":a=await Promise.resolve().then(()=>O(We()));break;case"ru":a=await Promise.resolve().then(()=>O(Ne()));break;case"uk":a=await Promise.resolve().then(()=>O(Oe()));break;case"zh":a=await Promise.resolve().then(()=>O(He()));break;default:return}this.localizeDefaultStrings(this,a)}static localizeDefaultStrings(a,e){for(let[t,i]of Object.entries(e))typeof a[t]=="object"?typeof i=="object"&&this.localizeDefaultStrings(a[t],i):typeof i=="string"&&(a[t]=i)}},s=we;s.appItems={help:"Open help",settings:"Open settings",pin:"Toggle pin",sidebarLeft:"Toggle left sidebar",sidebarRight:"Toggle right sidebar",minimize:"Minimize",maximize:"Maximize",unmaximize:"Restore down",close:"Close window"},s.menu={changeIcon:"Change icon...",changeIcons:"Change {#} icons...",removeIcon:"Remove icon",removeIcons:"Remove {#} icons",resetColor:"Reset color",resetColors:"Reset {#} colors",editRule:"Edit rule..."},s.rulePicker={selectPage:"Select a page",fileRules:"File rules",folderRules:"Folder rules",rules:"Rules",addRule:"Add rule",editRule:"Edit rule",removeRule:"Remove rule",untitledRule:"Untitled rule",drag:"Drag to rearrange"},s.ruleEditor={fileRule:"File rule",folderRule:"Folder rule",conditions:"Conditions",addCondition:"Add condition",resetCondition:"Reset condition",removeCondition:"Remove condition",removeRule:"Remove rule",buttonMatch:"1 match",buttonMatches:"{#} matches",buttonNoMatches:"No matches",enterName:"Give this rule a name",enterValue:"Enter a value",enterRegex:"Enter a regex",enterHexCode:"Enter a #hexcode",enterNumber:"Enter a number",matchConditions:{name:"Match conditions",desc:"Choose how many conditions need to match.",all:"All",any:"Any",none:"None"},source:{icon:"Icon",color:"Color",name:"Name",filename:"Filename",extension:"Extension",tree:"Folder tree",path:"Path in vault",headings:"Headings",links:"Links",tags:"Tags",properties:"Properties...",created:"Date created",modified:"Date modified",clock:"System clock"},operator:{is:"is","!is":"is not",contains:"contains",startsWith:"starts with",endsWith:"ends with",matches:"matches regex","!contains":"does not contain","!startsWith":"does not start with","!endsWith":"does not end with","!matches":"does not match regex",includes:"includes item","!includes":"does not include item",allAre:"all are",allContain:"all contain",allStartWith:"all start with",allEndWith:"all end with",allMatch:"all match regex",anyContain:"any contain",anyStartWith:"any start with",anyEndWith:"any end with",anyMatch:"any match regex",noneContain:"none contain",noneStartWith:"none start with",noneEndWith:"none end with",noneMatch:"none match regex",countIs:"count is","!countIs":"count is not",countIsLess:"count is less than",countIsMore:"count is more than",isTrue:"is true","!isTrue":"is not true",isFalse:"is false","!isFalse":"is not false",equals:"equals","!equals":"does not equal",isLess:"is less than",isMore:"is more than",isDivisible:"is divisible by","!isLess":"is not less than","!isMore":"is not more than","!isDivisible":"is not divisible by",isBefore:"is before",isAfter:"is after",isNow:"is now","!isNow":"is not now",isBeforeNow:"is before now",isAfterNow:"is after now",timeIs:"time is","!timeIs":"time is not",timeIsBefore:"time is before",timeIsAfter:"time is after",timeIsNow:"time is now","!timeIsNow":"time is not now",timeIsBeforeNow:"time is before now",timeIsAfterNow:"time is after now",dateIs:"date is","!dateIs":"date is not",dateIsBefore:"date is before",dateIsAfter:"date is after",isToday:"date is today","!isToday":"date is not today",isBeforeToday:"date is before today",isAfterToday:"date is after today",isLessDaysAgo:"is under X days ago",isLessDaysAway:"is under X days away",isMoreDaysAgo:"is over X days ago",isMoreDaysAway:"is over X days away",weekdayIs:"day of week is","!weekdayIs":"day of week is not",weekdayIsBefore:"day of week is before",weekdayIsAfter:"day of week is after",monthdayIs:"day of month is","!monthdayIs":"day of month is not",monthdayIsBefore:"day of month is before",monthdayIsAfter:"day of month is after",monthIs:"month is","!monthIs":"month is not",monthIsBefore:"month is before",monthIsAfter:"month is after",yearIs:"year is","!yearIs":"year is not",yearIsBefore:"year is before",yearIsAfter:"year is after",iconIs:"ID is","!iconIs":"ID is not",nameIs:"name is","!nameIs":"name is not",nameContains:"name contains",nameStartsWith:"name starts with",nameEndsWith:"name ends with",nameMatches:"name matches regex","!nameContains":"name does not contain","!nameStartsWith":"name does not start with","!nameEndsWith":"name does not end with","!nameMatches":"name does not match regex",colorIs:"is","!colorIs":"is not",hexIs:"hexcode is","!hexIs":"hexcode is not",hasValue:"has any value","!hasValue":"has no value",hasProperty:"property is present","!hasProperty":"property is missing"},weekday:{1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday",7:"Sunday"},month:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"}},s.ruleChecker={fileMatch:"1 matching file",folderMatch:"1 matching folder",filesMatch:"{#} matching files",foldersMatch:"{#} matching folders",highlight:"Highlight",headingMatches:"Matches"},s.iconPicker={changeIcon:"Change icon",changeIcons:"Change {#} icons",changeEmoji:"Change emoji",changeEmojis:"Change {#} emojis",changeMix:"Change icon / emoji",changeMixes:"Change {#} icons / emojis",overrulePrefix:"Your rule ",overruleSuffix:" is overruling this icon.",overrules:"Your rulebook is overruling some of these icons.",search:"Search",searchIcons:"Search icons...",searchEmojis:"Search emojis...",searchMix:"Search icons / emojis...",changeColor:"Change color",resetColor:"Reset color",toggleIcons:"Toggle icons",toggleEmojis:"Toggle emojis",icons:"Icons",emojis:"Emojis",mixed:"Mixed",cancel:"Cancel",save:"Save",colors:{red:"Red",orange:"Orange",yellow:"Yellow",green:"Green",cyan:"Cyan",blue:"Blue",purple:"Purple",pink:"Pink",gray:"Gray"}},s.categories={item:"Item",items:"Items",appItem:"Button",appItems:"Buttons",tab:"Tab",tabs:"Tabs",file:"File",files:"Files",folder:"Folder",folders:"Folders",group:"Group",groups:"Groups",search:"Query",searches:"Queries",graph:"Graph",graphs:"Graphs",url:"URL",urls:"URLs",tag:"Tag",tags:"Tags",property:"Property",properties:"Properties",ribbonItem:"Ribbon command",ribbonItems:"Ribbon commands",rule:"Rule",rules:"Rules"},s.commands={openRulebook:"Open rulebook",toggleBiggerIcons:"Toggle bigger icons",toggleClickableIcons:{desktop:"Toggle clickable icons",mobile:"Toggle tappable icons"},toggleAllFileIcons:"Toggle all file icons",toggleAllFolderIcons:"Toggle all folder icons",toggleMinimalFolderIcons:"Toggle minimal folder icons",toggleMarkdownTabIcons:"Toggle Markdown tab icons",toggleMenuActions:"Toggle menu actions",toggleQuickSwitcherIcons:"Toggle quick switcher icons",toggleBiggerSearchResults:"Toggle bigger search results",changeIconCurrentFile:"Change icon of the current file"},s.settings={values:{on:"On",off:"Off",desktop:"Desktop only",mobile:"Mobile only",list:"List of colors",rgb:"RGB picker"},rulebook:{name:"Rulebook",desc:"Set up automated rules for file and folder icons.",manage:"Manage"},headingSidebarAndTabIcons:"Sidebar & tab icons",biggerIcons:{name:"Bigger icons",desc:"Show bigger icons than the default UI."},clickableIcons:{nameDesktop:"Clickable icons",nameMobile:"Tappable icons",descDesktop:"Click an icon to open the icon picker.",descMobile:"Tap an icon to open the icon picker."},showAllFileIcons:{name:"Show all file icons",desc:"Show icons for files that have no custom icon."},showAllFolderIcons:{name:"Show all folder icons",desc:"Show icons for folders that have no custom icon."},minimalFolderIcons:{name:"Minimal folder icons",desc:"Replace folder arrows with your folder icons."},showMarkdownTabIcons:{name:"Show Markdown tab icons",desc:"Show tab icons for Markdown files."},headingMenusAndDialogs:"Menus & dialogs",showMenuActions:{name:"Show menu actions",desc:"Show icon-related actions in context menus."},showQuickSwitcherIcons:{name:"Show quick switcher icons",desc:"Show icons in search results of quick switchers."},headingIconPicker:"Icon picker",showItemName:{name:"Show item name",desc:"Show the name of the item being edited."},biggerSearchResults:{name:"Bigger search results",desc:"Show bigger icons in search results."},maxSearchResults:{name:"Maximum search results",desc:"Choose how many icons to show at once."},colorPicker1:{name:"Main color picker",descDesktop:"Appears when you click the color bubble.",descMobile:"Appears when you tap the color bubble."},colorPicker2:{name:"Second color picker",descDesktop:"Appears when you secondary-click the color bubble.",descMobile:"Appears when you press & hold the color bubble."},headingAdvanced:"Advanced",uncolorHover:{name:"Colorless hover",desc:"Disable icon color while hovering an item."},uncolorDrag:{name:"Colorless drag",desc:"Disable icon color while dragging an item."},uncolorSelect:{name:"Colorless selection",desc:"Disable icon color while item is selected."},uncolorQuick:{name:"Colorless ribbon button",desc:"Disable icon color for the quick access ribbon button on mobile."},rememberDeletedItems:{name:"Remember icons of deleted items",desc:"Any custom icons will reappear when their item exists again."}},(()=>{we.localize()})();var Q=require("obsidian"),_=class{constructor(){this.queuedActions=[];let a=this;this.showAtPositionOriginal=Q.Menu.prototype.showAtPosition,this.showAtPositionProxy=new Proxy(Q.Menu.prototype.showAtPosition,{apply(e,t,i){return a.menu=t,a.queuedActions.length>0&&a.runQueuedActions.call(a),e.call(t,...i)}}),Q.Menu.prototype.showAtPosition=this.showAtPositionProxy}runQueuedActions(){let a=this.queuedActions;this.queuedActions=[];for(let e of a)e()}addItem(a){return this.menu?this.menu.addItem(a):this.queuedActions.push(()=>this.addItem(a)),this}addItemAfter(a,e){return this.menu?(typeof a=="string"&&(a=[a]),this.menu.addItem(t=>{e(t);let i=t.section,n=this.menu?.sections??[],o=0;for(let r of a)if(n.includes(r)){o=n.lastIndexOf(r)+1;break}n.remove(i),n.splice(o,0,i)})):this.queuedActions.push(()=>this.addItemAfter(a,e)),this}addSeparator(){return this.menu?this.menu.addSeparator():this.queuedActions.push(()=>this.addSeparator()),this}forSection(a,e){if(this.menu){let t=this.menu.items.filter(i=>i.section===a);for(let i=0;ithis.forSection(a,e));return this}flush(){this.queuedActions.length=0}closeAndFlush(){this.menu?.close(),this.menu=null,this.flush()}unload(){Q.Menu.prototype.showAtPosition===this.showAtPositionProxy&&(Q.Menu.prototype.showAtPosition=this.showAtPositionOriginal)}};var ue=require("obsidian");var j="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",p=class{constructor(a){this.fileRulings=new Map;this.folderRulings=new Map;this.fileTriggers=new Set;this.folderTriggers=new Set;this.plugin=a,this.updateRulings("file"),this.updateRulings("folder"),this.startTriggerTimer()}async startTriggerTimer(){if(this.triggerTimerId){let e=864e5-Date.now()%864e5<36e5;(this.fileTriggers.has("time")||this.fileTriggers.has("date")&&e)&&this.triggerRulings("file","time")&&(this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}let a=6e4-Date.now()%6e4;this.triggerTimerId=activeWindow.setTimeout(()=>{this.startTriggerTimer()},a)}getRules(a){switch(a){case"file":return this.plugin.settings.fileRules.map(e=>this.defineRule(e));case"folder":return this.plugin.settings.folderRules.map(e=>this.defineRule(e));default:return[]}}getRule(a,e){let t;switch(a){case"file":t=this.plugin.settings.fileRules;break;case"folder":t=this.plugin.settings.folderRules;break;default:t=[]}let i=t.find(n=>n.id===e);return i?this.defineRule(i):null}getRuleBases(a){switch(a){default:return this.plugin.settings.fileRules;case"file":return this.plugin.settings.fileRules;case"folder":return this.plugin.settings.folderRules}}getPageIcon(a){switch(a){default:return"lucide-file";case"file":return"lucide-file";case"folder":return"lucide-folder"}}defineRule(a){return{id:a.id??"0",name:a.name??"",category:"rule",iconDefault:"lucide-file",icon:a.icon??null,color:a.color??null,match:a.match??"all",conditions:a.conditions??[],enabled:a.enabled??!1}}newRuleId(a){let e=this.getRuleBases(a).map(n=>n.id),t,i=0;do t=j.charAt(Math.floor(Math.random()*j.length))+j.charAt(Math.floor(Math.random()*j.length))+j.charAt(Math.floor(Math.random()*j.length))+j.charAt(Math.floor(Math.random()*j.length))+j.charAt(Math.floor(Math.random()*j.length));while(e.includes(t)&&++i<10);return t}newRule(a){let e={id:this.newRuleId(a),name:s.rulePicker.untitledRule,category:"rule",iconDefault:null,icon:null,color:null,match:"all",conditions:[{source:"name",operator:"contains",value:""}],enabled:!0};return this.saveRule(a,e),e}moveRule(a,e,t){let i=this.getRuleBases(a),n=i.find(r=>r.id===e.id);if(!n)return!1;let o=i.indexOf(n);return i.splice(o,1),i.splice(t,0,n),this.plugin.saveSettings(),this.updateRulings(a)}saveRule(a,e){let t=this.getRuleBases(a),i=t.find(n=>n.id===e.id);return i||(i={id:e.id},t.push({id:e.id})),e.name?i.name=e.name:delete i.name,e.icon?i.icon=e.icon:delete i.icon,e.color?i.color=e.color:delete i.color,e.match?i.match=e.match:delete i.match,e.conditions.length>0?i.conditions=e.conditions.map(({source:n,operator:o,value:r})=>{let d={};return n&&(d.source=n),o&&(d.operator=o),r&&(d.value=r),d}):delete i.conditions,typeof e.enabled=="boolean"?i.enabled=e.enabled:delete i.enabled,this.plugin.saveSettings(),this.updateRulings(a)}deleteRule(a,e){let t=this.getRuleBases(a),i=t.findIndex(n=>n.id===e);return i===-1?!1:(t.splice(i,1),this.plugin.saveSettings(),this.updateRulings(a))}checkRuling(a,e,t){if(t)return null;switch(a){case"file":return this.fileRulings.get(e)??null;case"folder":return this.folderRulings.get(e)??null;default:return null}}updateRulings(a){let e=new Date,t=this.getRules(a).filter(r=>r.enabled);if(t.length===0){switch(a){case"file":if(this.fileRulings.size>0)return this.fileRulings.clear(),this.fileTriggers.clear(),!0;case"folder":if(this.folderRulings.size>0)return this.folderRulings.clear(),this.folderTriggers.clear(),!0}return!1}let i,n,o=!1;switch(a){case"file":{let r=this.plugin.getFileItems().filter(l=>!l.items),d=r.map(l=>l.id);for(let[l]of this.fileRulings)d.contains(l)||(this.fileRulings.delete(l),o=!0);for(let l of r){n=void 0;for(let h of t)if(this.judgeFile(l,h,e)){n=h;break}i=this.fileRulings.get(l.id),n?(this.fileRulings.set(l.id,n),o=o||p.distinguish(i,n)):i&&(this.fileRulings.delete(l.id),o=o||!0)}this.fileTriggers.clear();for(let l of t)for(let h of l.conditions)this.updateTriggers(a,h);break}case"folder":{let r=this.plugin.getFileItems().filter(l=>l.items),d=r.map(l=>l.id);for(let[l]of this.folderRulings)d.contains(l)||(this.folderRulings.delete(l),o=!0);for(let l of r){n=void 0;for(let h of t)if(this.judgeFile(l,h,e)){n=h;break}i=this.folderRulings.get(l.id),n?(this.folderRulings.set(l.id,n),o=o||p.distinguish(i,n)):i&&(this.folderRulings.delete(l.id),o=o||!0)}this.folderTriggers.clear();for(let l of t)for(let h of l.conditions)this.updateTriggers(a,h);break}}return o}updateTriggers(a,e){let t;switch(a){case"file":t=this.fileTriggers;break;case"folder":t=this.folderTriggers;break;default:return}switch(e.source){case"icon":t.add("icon");break;case"color":t.add("color");break;case"name":{t.add("rename"),t.add("move");break}case"filename":{t.add("rename"),t.add("move");break}case"extension":{t.add("rename"),t.add("move");break}case"tree":{t.add("rename"),t.add("move");break}case"path":{t.add("rename"),t.add("move");break}case"headings":t.add("modify");break;case"links":t.add("modify");break;case"tags":t.add("modify");break;case"modified":t.add("modify");break;case"clock":{switch(e.operator){case"is":t.add("time");break;case"!is":t.add("time");break;case"isBefore":t.add("time");break;case"timeIs":t.add("time");break;case"!timeIs":t.add("time");break;case"timeIsBefore":t.add("time");break;case"timeIsAfter":t.add("time");break;default:t.add("date");break}break}default:{e.source.startsWith("property:")&&t.add("modify");break}}switch(e.operator){case"isNow":t.add("time");break;case"!isNow":t.add("time");break;case"isBeforeNow":t.add("time");break;case"isAfterNow":t.add("time");break;case"isToday":t.add("date");break;case"!isToday":t.add("date");break;case"isBeforeToday":t.add("date");break;case"isAfterToday":t.add("date");break;case"isLessDaysAgo":t.add("date");break;case"isLessDaysAway":t.add("date");break;case"isMoreDaysAgo":t.add("date");break;case"isMoreDaysAway":t.add("date");break}}static distinguish(a,e){return a===void 0!=(e===void 0)||a?.enabled!==e?.enabled||a?.id!==e?.id||a?.name!==e?.name||a?.icon!==e?.icon||a?.color!==e?.color||a?.match!==e?.match||a?.conditions?.length!==e?.conditions?.length||a?.conditions?.some((t,i)=>t.source!==e?.conditions[i].source||t.operator!==e?.conditions[i].operator||t.value!==e?.conditions[i].value)===!0}triggerRulings(a,...e){switch(a){case"file":for(let t of e)if(this.fileTriggers.has(t))return this.updateRulings(a);case"folder":for(let t of e)if(this.folderTriggers.has(t))return this.updateRulings(a);default:return!1}}judgeFiles(a,e,t){let i=this.plugin.getFileItems().filter(o=>!o.items),n=[];for(let o of i)this.judgeFile(o,a,e,t)&&n.push(o);return n}judgeFolders(a,e,t){let i=this.plugin.getFileItems().filter(o=>o.items),n=[];for(let o of i)this.judgeFile(o,a,e,t)&&n.push(o);return n}judgeFile(a,e,t,i){if(!a.id||e.conditions.length===0||!e.enabled&&!i)return!1;let{basename:n,filename:o,extension:r,path:d,tree:l}=this.plugin.splitFilePath(a.id),h=this.plugin.app.vault.getAbstractFileByPath(d);if(!h)return!1;let g=h instanceof ue.TFile?this.plugin.app.metadataCache.getFileCache(h):null;for(let m of e.conditions){let c=!1,u,w=m.operator.startsWith("!"),b=m.operator.replace("!",""),f=m.value;if(m.source.startsWith("property:")){let W=m.source.replace("property:","");u=g?.frontmatter?.hasOwnProperty(W)?g.frontmatter[W]??null:void 0}else switch(m.source){case"icon":{!a.icon||b==="iconIs"||b==="hasValue"?u=a.icon:B.has(a.icon)?u=B.get(a.icon)??null:D.get(a.icon)&&(u=D.get(a.icon)??null);break}case"color":u=a.color;break;case"name":u=n;break;case"filename":u=o;break;case"extension":u=r;break;case"tree":u=l;break;case"path":u=d;break;case"headings":u=g?.headings?.map(W=>W.heading)??[];break;case"links":u=g?.links?.map(W=>W.link)??[];break;case"tags":{u=[];let W=g?.frontmatter?.tags??[],Ke=g?.tags?.map(ce=>ce.tag.replace("#",""))??[];for(let ce of[...W,...Ke])u.includes(ce)||u.push(ce);break}case"created":h instanceof ue.TFile&&(u=h.stat.ctime);break;case"modified":h instanceof ue.TFile&&(u=h.stat.mtime);break;case"clock":u=t.getTime();break}let F=String.isString(u)?u.toLowerCase():"",P=Array.isArray(u)?u.map(W=>String(W).toLowerCase()):[],S=String.isString(f)?f.toLowerCase():"";if(b==="hasValue")c=u!=null;else if(b==="hasProperty")c=u!==void 0;else if(isBoolean(u))switch(b){case"isTrue":c=u===!0;break;case"isFalse":c=u===!1;break}else if(String.isString(u))switch(b){case"is":c=F===S;break;case"contains":c=S!==""&&F.includes(S);break;case"startsWith":c=S!==""&&F.startsWith(S);break;case"endsWith":c=S!==""&&F.endsWith(S);break;case"matches":{try{c=f!==""&&p.unwrapRegex(f).test(u)}catch{}break}case"datetimeIs":c=p.compareDatetimes(u,b,f);break;case"datetimeIsBefore":c=p.compareDatetimes(u,b,f);break;case"datetimeIsAfter":c=p.compareDatetimes(u,b,f);break;case"isNow":c=p.compareDatetimes(u,"datetimeIs",t);break;case"isBeforeNow":c=p.compareDatetimes(u,"datetimeIsBefore",f);break;case"isAfterNow":c=p.compareDatetimes(u,"datetimeIsAfter",f);break;case"timeIs":c=p.compareTimes(u,b,f);break;case"timeIsBefore":c=p.compareTimes(u,b,f);break;case"timeIsAfter":c=p.compareTimes(u,b,f);break;case"timeIsNow":c=p.compareTimes(u,"timeIs",t);break;case"timeIsBeforeNow":c=p.compareTimes(u,"timeIsBefore",t);break;case"timeIsAfterNow":c=p.compareTimes(u,"timeIsAfter",t);break;case"dateIs":c=p.compareDates(u,b,f);break;case"dateIsBefore":c=p.compareDates(u,b,f);break;case"dateIsAfter":c=p.compareDates(u,b,f);break;case"isToday":c=p.compareDates(u,"dateIs",t);break;case"isBeforeToday":c=p.compareDates(u,"dateIsBefore",t);break;case"isAfterToday":c=p.compareDates(u,"dateIsAfter",t);break;case"isLessDaysAgo":c=p.compareRelativeDates(u,b,f,t);break;case"isLessDaysAway":c=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAgo":c=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAway":c=p.compareRelativeDates(u,b,f,t);break;case"weekdayIs":c=p.compareWeekdays(u,b,f);break;case"weekdayIsBefore":c=p.compareWeekdays(u,b,f);break;case"weekdayIsAfter":c=p.compareWeekdays(u,b,f);break;case"monthdayIs":c=p.compareMonthdays(u,b,f);break;case"monthdayIsBefore":c=p.compareMonthdays(u,b,f);break;case"monthdayIsAfter":c=p.compareMonthdays(u,b,f);break;case"monthIs":c=p.compareMonths(u,b,f);break;case"monthIsBefore":c=p.compareMonths(u,b,f);break;case"monthIsAfter":c=p.compareMonths(u,b,f);break;case"yearIs":c=p.compareYears(u,b,f);break;case"yearIsBefore":c=p.compareYears(u,b,f);break;case"yearIsAfter":c=p.compareYears(u,b,f);break;case"iconIs":c=F===S;break;case"nameIs":c=F===S;break;case"nameContains":c=S!==""&&F.includes(S);break;case"nameStartsWith":c=S!==""&&F.startsWith(S);break;case"nameEndsWith":c=S!==""&&F.endsWith(S);break;case"nameMatches":{try{c=f!==""&&p.unwrapRegex(f).test(u)}catch{}break}case"colorIs":c=F===S;break;case"hexIs":c=F===S;break}else if(Number.isNumber(u))switch(b){case"equals":c=u===Number(f);break;case"isLess":c=uNumber(f);break;case"isDivisible":c=u/Number(f)%1===0;break;case"datetimeIs":c=p.compareDatetimes(u,b,f);break;case"datetimeIsBefore":c=p.compareDatetimes(u,b,f);break;case"datetimeIsAfter":c=p.compareDatetimes(u,b,f);break;case"isNow":c=p.compareDatetimes(u,"datetimeIs",t);break;case"isBeforeNow":c=p.compareDatetimes(u,"datetimeIsBefore",f);break;case"isAfterNow":c=p.compareDatetimes(u,"datetimeIsAfter",f);break;case"timeIs":c=p.compareTimes(u,b,f);break;case"timeIsBefore":c=p.compareTimes(u,b,f);break;case"timeIsAfter":c=p.compareTimes(u,b,f);break;case"dateIs":c=p.compareDates(u,b,f);break;case"dateIsBefore":c=p.compareDates(u,b,f);break;case"dateIsAfter":c=p.compareDates(u,b,f);break;case"isToday":c=p.compareDates(u,"dateIs",t);break;case"isBeforeToday":c=p.compareDates(u,"dateIsBefore",t);break;case"isAfterToday":c=p.compareDates(u,"dateIsAfter",t);break;case"isLessDaysAgo":c=p.compareRelativeDates(u,b,f,t);break;case"isMoreDaysAgo":c=p.compareRelativeDates(u,b,f,t);break;case"weekdayIs":c=p.compareWeekdays(u,b,f);break;case"weekdayIsBefore":c=p.compareWeekdays(u,b,f);break;case"weekdayIsAfter":c=p.compareWeekdays(u,b,f);break;case"monthdayIs":c=p.compareMonthdays(u,b,f);break;case"monthdayIsBefore":c=p.compareMonthdays(u,b,f);break;case"monthdayIsAfter":c=p.compareMonthdays(u,b,f);break;case"monthIs":c=p.compareMonths(u,b,f);break;case"monthIsBefore":c=p.compareMonths(u,b,f);break;case"monthIsAfter":c=p.compareMonths(u,b,f);break;case"yearIs":c=p.compareYears(u,b,f);break;case"yearIsBefore":c=p.compareYears(u,b,f);break;case"yearIsAfter":c=p.compareYears(u,b,f);break}else if(Array.isArray(u))switch(b){case"includes":c=P.includes(S);break;case"allAre":c=p.all(P,"are",S);break;case"allContain":c=p.all(P,"contain",S);break;case"allStartWith":c=p.all(P,"startWith",S);break;case"allEndWith":c=p.all(P,"endWith",S);break;case"allMatch":c=p.all(u,"match",f);break;case"anyContain":c=p.any(P,"contain",S);break;case"anyStartWith":c=p.any(P,"startWith",S);break;case"anyEndWith":c=p.any(P,"endWith",S);break;case"anyMatch":c=p.any(u,"match",f);break;case"noneContain":c=p.none(P,"contain",f);break;case"noneStartWith":c=p.none(P,"startWith",f);break;case"noneEndWith":c=p.none(P,"endWith",f);break;case"noneMatch":c=p.none(u,"match",f);break;case"countIs":c=f!==""&&u.length===Number(f);break;case"countIsLess":c=f!==""&&u.lengthNumber(f);break}if(c=c!==w,e.match==="all"&&!c)return!1;if(e.match==="any"&&c)return!0;if(e.match==="none"&&c)return!1}return e.match!=="any"}static unwrapRegex(a){return a.startsWith("/")&&a.endsWith("/")?new RegExp(a.slice(1,-1)):new RegExp(a)}static compareDatetimes(a,e,t){if(t==="")return!1;let i=new Date(a),n=new Date(t);switch(i.setSeconds(0),n.setSeconds(0),i.setMilliseconds(0),n.setMilliseconds(0),e){case"datetimeIs":return i.getTime()===n.getTime();case"datetimeIsBefore":return in}}static compareTimes(a,e,t){if(t==="")return!1;let i=new Date(a),n=String.isString(t)?new Date("1970T"+t):new Date(t);switch(i.setFullYear(1970,0,1),n.setFullYear(1970,0,1),i.setSeconds(0),n.setSeconds(0),i.setMilliseconds(0),n.setMilliseconds(0),e){case"timeIs":return i.getTime()===n.getTime();case"timeIsBefore":return in}}static compareDates(a,e,t){if(t==="")return!1;let i=new Date(a),n=new Date(t);switch(i.setHours(0,0,0,0),n.setHours(0,0,0,0),e){case"dateIs":return i.getTime()===n.getTime();case"dateIsBefore":return in}}static compareRelativeDates(a,e,t,i){if(t==="")return!1;let n=new Date(a),o=new Date(i);switch(n.setHours(0,0,0,0),o.setHours(0,0,0,0),o.setDate(e==="isLessDaysAgo"||e==="isMoreDaysAgo"?o.getDate()-Number(t):o.getDate()+Number(t)),e){case"isLessDaysAgo":return n>o;case"isLessDaysAway":return no}}static compareWeekdays(a,e,t){if(t==="")return!1;let i=new Date(a),n=i.getDay()!==0?i.getDay():7,o=Number(t);switch(e){case"weekdayIs":return n===o;case"weekdayIsBefore":return no}}static compareMonthdays(a,e,t){if(t==="")return!1;let i=new Date(a).getDate(),n=Number(t);switch(e){case"monthdayIs":return i===n;case"monthdayIsBefore":return in}}static compareMonths(a,e,t){if(t==="")return!1;let i=new Date(a).getMonth()+1,n=Number(t);switch(e){case"monthIs":return i===n;case"monthIsBefore":return in}}static compareYears(a,e,t){if(t==="")return!1;let i=new Date(a).getFullYear(),n=Number(t);switch(e){case"yearIs":return i===n;case"yearIsBefore":return in}}static all(a,e,t){if(a.length===0||t==="")return!1;switch(e){case"are":for(let i of a)if(i!==t)return!1;break;case"contain":for(let i of a)if(!String(i).includes(t))return!1;break;case"startWith":for(let i of a)if(!String(i).startsWith(t))return!1;break;case"endWith":for(let i of a)if(!String(i).endsWith(t))return!1;break;case"match":{try{let i=p.unwrapRegex(t);for(let n of a)if(!i.test(String(n)))return!1}catch{}break}}return!0}static any(a,e,t){if(t==="")return!1;switch(e){case"are":for(let i of a)if(i===t)return!0;break;case"contain":for(let i of a)if(String(i).includes(t))return!0;break;case"startWith":for(let i of a)if(String(i).startsWith(t))return!0;break;case"endWith":for(let i of a)if(String(i).endsWith(t))return!0;break;case"match":{try{let i=p.unwrapRegex(t);for(let n of a)if(i.test(String(n)))return!0}catch{}break}}return!1}static none(a,e,t){if(t==="")return!1;switch(e){case"are":for(let i of a)if(i===t)return!1;break;case"contain":for(let i of a)if(String(i).includes(t))return!1;break;case"startWith":for(let i of a)if(String(i).startsWith(t))return!1;break;case"endWith":for(let i of a)if(String(i).endsWith(t))return!1;break;case"match":{try{let i=p.unwrapRegex(t);for(let n of a)if(i.test(String(n)))return!1}catch{}break}}return!0}unload(){activeWindow.clearTimeout(this.triggerTimerId)}};var G=require("obsidian");var Me={attr:{"aria-hidden":!1,width:12,height:12,viewBox:"0 0 12 12"}},Mt={attr:{fill:"currentColor",width:10,height:1,x:1,y:6}},St={attr:{width:9,height:9,x:1.5,y:1.5,fill:"none",stroke:"currentColor"}},Ct={attr:{d:"M1.5 3.5H8.5V10.5H1.5V3.5Z",stroke:"currentColor"}},At={attr:{d:"M4 2H10V8H9V9H11V1H3V3H4V2Z",fill:"currentColor"}},xt={attr:{fill:"currentColor","fill-rule":"evenodd",d:"M10.052 10.968 1.03 1.93l.849-.848 9.023 9.037-.849.848Z"}},Tt={attr:{fill:"currentColor","fill-rule":"evenodd",d:"M1.023 10.112 10.06 1.09l.848.85-9.037 9.023-.848-.85Z"}},ee=class extends E{constructor(e){super(e);this.pinEls=[];this.sidebarLeftEls=[];this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>this.refreshIcons())),this.refreshIcons()}refreshIcons(e){if(G.Platform.isDesktop&&(activeDocument.contains(this.helpEl)||(this.stopEventListener(this.helpEl,"contextmenu"),this.helpEl=fish(".workspace-drawer-vault-actions > .clickable-icon:has(.svg-icon.help)")),this.helpEl)){let t=this.plugin.getAppItem("help",e);this.refreshIcon(t,this.helpEl),this.plugin.settings.showMenuActions?this.setEventListener(this.helpEl,"contextmenu",i=>{this.onContextMenu("help",i)}):this.stopEventListener(this.helpEl,"contextmenu")}if(activeDocument.contains(this.settingsEl)||(this.stopEventListener(this.settingsEl,"contextmenu"),this.settingsEl=G.Platform.isDesktop?fish(".workspace-drawer-vault-actions > .clickable-icon:has(.svg-icon.lucide-settings)"):fish(".workspace-drawer-header-icon.mod-settings")),this.settingsEl){let t=this.plugin.getAppItem("settings",e);this.refreshIcon(t,this.settingsEl),this.plugin.settings.showMenuActions?this.setEventListener(this.settingsEl,"contextmenu",i=>{this.onContextMenu("settings",i)}):this.stopEventListener(this.settingsEl,"contextmenu")}if(G.Platform.isMobile){if(this.pinEls.length===0||this.pinEls.some(t=>!activeDocument.contains(t))){for(let t of this.pinEls)this.stopEventListener(t,"contextmenu");this.pinEls=fishAll(".workspace-drawer-header-icon.mod-pin")}for(let t of this.pinEls){let i=this.plugin.getAppItem("pin",e);this.refreshIcon(i,t),this.plugin.settings.showMenuActions?this.setEventListener(t,"contextmenu",n=>{this.onContextMenu("pin",n)}):this.stopEventListener(t,"contextmenu")}}if(this.sidebarLeftEls.length===0||this.sidebarLeftEls.some(t=>!activeDocument.contains(t))){for(let t of this.sidebarLeftEls)this.stopEventListener(t,"contextmenu");this.sidebarLeftEls=fishAll(".sidebar-toggle-button.mod-left").concat(fishAll(".view-action.clickable-icon.mod-left-split-toggle"))}for(let t of this.sidebarLeftEls){let i=t.hasClass("clickable-icon")?t:t.find(":scope > .clickable-icon");if(i){let n=this.plugin.getAppItem("sidebarLeft",e);this.refreshIcon(n,i),this.plugin.settings.showMenuActions?this.setEventListener(t,"contextmenu",o=>{this.onContextMenu("sidebarLeft",o)}):this.stopEventListener(t,"contextmenu")}}if(activeDocument.contains(this.sidebarRightEl)||(this.stopEventListener(this.sidebarRightEl,"contextmenu"),this.sidebarRightEl=fish(".sidebar-toggle-button.mod-right")),this.sidebarRightEl){let t=this.sidebarRightEl.find(":scope > .clickable-icon");if(t){let i=this.plugin.getAppItem("sidebarRight",e);this.refreshIcon(i,t),this.plugin.settings.showMenuActions?this.setEventListener(this.sidebarRightEl,"contextmenu",n=>{this.onContextMenu("sidebarRight",n)}):this.stopEventListener(this.sidebarRightEl,"contextmenu")}}if(G.Platform.isDesktop){if(activeDocument.contains(this.minimizeEl)||(this.stopEventListener(this.minimizeEl,"contextmenu"),this.minimizeEl=fish(".titlebar-button.mod-minimize")),this.minimizeEl){let t=this.plugin.getAppItem("minimize",e);if(t.icon)this.refreshIcon(t,this.minimizeEl);else{this.minimizeEl.empty(),this.minimizeEl.removeClass("iconic-icon");let i=this.minimizeEl.createSvg("svg",Me).createSvg("rect",Mt);t.color&&(i.style.fill=C.toRgb(t.color))}this.plugin.settings.showMenuActions?this.setEventListener(this.minimizeEl,"contextmenu",i=>{this.onContextMenu("minimize",i)}):this.stopEventListener(this.minimizeEl,"contextmenu")}if(this.refreshMaximizeIcon(e),activeDocument.contains(this.closeEl)||(this.stopEventListener(this.closeEl,"contextmenu"),this.closeEl=fish(".titlebar-button.mod-close")),this.closeEl){let t=this.plugin.getAppItem("close",e);if(t.icon)this.refreshIcon(t,this.closeEl);else{this.closeEl.empty(),this.closeEl.removeClass("iconic-icon");let i=this.closeEl.createSvg("svg",Me),n=i.createSvg("path",xt),o=i.createSvg("path",Tt);t.color&&(n.style.fill=C.toRgb(t.color),o.style.fill=C.toRgb(t.color))}this.plugin.settings.showMenuActions?this.setEventListener(this.closeEl,"contextmenu",i=>{this.onContextMenu("close",i)}):this.stopEventListener(this.closeEl,"contextmenu")}}}refreshMaximizeIcon(e){let t=activeWindow.electron.remote.getCurrentWindow().isMaximized()??!0;if(this.maximizeEl&&this.stopMutationObserver(this.maximizeEl),activeDocument.contains(this.maximizeEl)||(this.stopEventListener(this.maximizeEl,"contextmenu"),this.maximizeEl=fish(".titlebar-button.mod-maximize")),this.maximizeEl){let i=this.plugin.getAppItem(t?"unmaximize":"maximize",e);if(i.icon)this.refreshIcon(i,this.maximizeEl);else{this.maximizeEl.empty(),this.maximizeEl.removeClass("iconic-icon");let n=this.maximizeEl.createSvg("svg",Me);if(t){n.style.fill="none";let o=n.createSvg("path",Ct),r=n.createSvg("path",At);i.color&&(o.style.stroke=C.toRgb(i.color),r.style.fill=C.toRgb(i.color))}else{let o=n.createSvg("rect",St);i.color&&(o.style.stroke=C.toRgb(i.color))}}this.plugin.settings.showMenuActions?this.setEventListener(this.maximizeEl,"contextmenu",n=>{this.onContextMenu(t?"unmaximize":"maximize",n)}):this.stopEventListener(this.maximizeEl,"contextmenu"),this.setMutationsObserver(this.maximizeEl,{childList:!0},()=>{this.refreshMaximizeIcon()})}}onContextMenu(e,t){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let i=this.plugin.getAppItem(e),n=e.startsWith("sidebar")&&!G.Platform.isPhone?this.plugin.menuManager:new G.Menu;e.startsWith("sidebar")&&n.addSeparator(),n.addItem(o=>o.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").onClick(()=>I.openSingle(this.plugin,i,(r,d)=>{this.plugin.saveAppIcon(i,r,d),this.refreshIcons()}))),(i.icon||i.color)&&n.addItem(o=>o.setTitle(i.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(i.icon?"lucide-image-minus":"lucide-rotate-ccw").onClick(()=>{this.plugin.saveAppIcon(i,null,null),this.refreshIcons()})),n instanceof G.Menu&&n.showAtMouseEvent(t)}unload(){this.refreshIcons(!0),super.unload()}};var je=require("obsidian");var te=class extends E{constructor(a){super(a),this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>this.refreshIcons())),this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",()=>this.refreshIcons()));let e=activeDocument.body.find(".mod-root .workspace-tab-header-tab-list > .clickable-icon");e&&this.setEventListener(e,"click",()=>{let t=this.plugin.getTabItems().filter(i=>i.isRoot);this.plugin.menuManager.forSection("tablist",(i,n)=>{let o=t[n];o&&(o.iconDefault=o.iconDefault??"lucide-file",this.refreshIcon(o,i.iconEl))})}),this.refreshIcons()}refreshIcons(a){let e=this.plugin.getTabItems(a);for(let t of e){let i=t.tabEl,n=t.iconEl;if(!i||!n||t.id==="webviewer")continue;let o=t.category==="file"?this.plugin.ruleManager.checkRuling("file",t.id,a)??t:t;if(t.isRoot&&this.plugin.isSettingEnabled("clickableIcons"))if(t.category==="file"){let d=this.plugin.getFileItem(t.id);this.refreshIcon(o,n,l=>{I.openSingle(this.plugin,d,(h,g)=>{this.plugin.saveFileIcon(d,h,g),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}),l.stopPropagation()})}else this.refreshIcon(o,n,d=>{I.openSingle(this.plugin,t,(l,h)=>{this.plugin.saveTabIcon(t,l,h),this.refreshIcons()}),d.stopPropagation()});else this.refreshIcon(o,n);this.setEventListener(i,"dragstart",()=>{if(o.icon||o.iconDefault){let d=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-icon");d&&this.refreshIcon({icon:o.icon??o.iconDefault,color:o.color},d)}}),!this.plugin.settings.showMenuActions||t.category==="file"&&(t.isActive||t.isStacked)?this.stopEventListener(i,"contextmenu"):this.setEventListener(i,"contextmenu",()=>this.onContextMenu(t.id,t.category));let r=i.find(":scope > .workspace-tab-header-inner > .workspace-tab-header-status-container");if(this.setMutationObserver(r,{childList:!0},d=>{for(let l of d.addedNodes)if(l instanceof HTMLElement&&l.hasClass("mod-pinned")){this.refreshIcons();return}for(let l of d.removedNodes)if(l instanceof HTMLElement&&l.hasClass("mod-pinned")){this.refreshIcons();return}}),je.Platform.isMobile){if(this.setEventListener(this.app.workspace.leftSplit.activeTabSelectEl,"change",()=>this.refreshIcons()),this.setEventListener(this.app.workspace.rightSplit.activeTabSelectEl,"change",()=>this.refreshIcons()),this.app.workspace.leftSplit.activeTabIconEl===n){let d=this.app.workspace.leftSplit.activeTabHeaderEl;this.plugin.settings.showMenuActions?this.setEventListener(d,"contextmenu",()=>{this.onContextMenu(t.id,t.category)}):this.stopEventListener(d,"contextmenu")}else if(this.app.workspace.rightSplit.activeTabIconEl===n){let d=this.app.workspace.rightSplit.activeTabHeaderEl;this.plugin.settings.showMenuActions?this.setEventListener(d,"contextmenu",()=>{this.onContextMenu(t.id,t.category)}):this.stopEventListener(d,"contextmenu")}}}}onContextMenu(a,e){if(this.plugin.menuManager.closeAndFlush(),e==="file")this.onFileContextMenu(this.plugin.getFileItem(a));else{let t=this.plugin.getTabItem(a);t&&this.onTabContextMenu(t)}}onTabContextMenu(a){this.plugin.menuManager.flush(),this.plugin.menuManager.addItemAfter("close",e=>e.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,a,(t,i)=>{this.plugin.saveTabIcon(a,t,i),this.refreshIcons()}))),(a.icon||a.color)&&this.plugin.menuManager.addItem(e=>e.setTitle(a.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(a.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTabIcon(a,null,null),this.refreshIcons()}))}onFileContextMenu(a){this.plugin.menuManager.flush(),this.plugin.menuManager.addItemAfter("close",t=>t.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,a,(i,n)=>{this.plugin.saveFileIcon(a,i,n),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}))),(a.icon||a.color)&&this.plugin.menuManager.addItem(t=>t.setTitle(a.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(a.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveFileIcon(a,null,null),this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}));let e=this.plugin.ruleManager.checkRuling("file",a.id);e&&this.plugin.menuManager.addItem(t=>{t.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>R.open(this.plugin,"file",e,i=>{(i?this.plugin.ruleManager.saveRule("file",i):this.plugin.ruleManager.deleteRule("file",e.id))&&(this.refreshIcons(),this.plugin.fileIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}))})}unload(){this.refreshIcons(!0),super.unload()}};var ie=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("file-menu",(t,i)=>{this.plugin.settings.showMenuActions&&this.onContextMenu(i.path)})),this.plugin.registerEvent(this.app.workspace.on("files-menu",(t,i)=>{this.plugin.settings.showMenuActions&&this.onContextMenu(...i.map(n=>n.path))})),this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="file-explorer"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .nav-files-container > div"),this.setMutationsObserver(this.containerEl,{subtree:!0,childList:!0,attributeFilter:["data-path"]},t=>{for(let i of t)if(i.attributeName==="data-path"){this.refreshIcons();return}else for(let n of i.addedNodes)if(n instanceof HTMLElement&&n.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getFileItems(e),i=this.containerEl?.findAll(":scope > .tree-item");i&&this.refreshChildIcons(t,i,e)}refreshChildIcons(e,t,i){for(let n of t){n.addClass("iconic-item");let o=n.find(":scope > .tree-item-self"),r=e.find(c=>c.id===o?.dataset.path);if(!r)continue;let d=r.items?"folder":"file",l=this.plugin.ruleManager.checkRuling(d,r.id,i)??r;if(r.items){if(!n.hasClass("is-collapsed")){let c=n.findAll(":scope > .tree-item-children > .tree-item");c&&this.refreshChildIcons(r.items,c,i)}this.setMutationsObserver(n,{subtree:!0,attributeFilter:["class","data-path"],attributeOldValue:!0},c=>{let u=!1,w=!1;for(let b of c){if(b.attributeName==="data-path"){w=!0;break}if(b.attributeName==="class"&&b.target instanceof HTMLElement){let f=b.oldValue?.includes("is-collapsed"),F=b.target.hasClass("is-collapsed");f&&!F?(u=!0,w=!0):!f&&F&&(w=!0)}}if(w&&this.refreshChildIcons([r],[n]),u){let b=n.findAll(":scope > .tree-item-children > .tree-item");r.items&&b&&this.debouncedRefresh(r.items,b)}})}let h=o.find(":scope > .tree-item-icon")??o.createDiv({cls:"tree-item-icon"}),g=o.find(".tree-item-inner");h!==g?.previousElementSibling&&g?.insertAdjacentElement("beforebegin",h),r.items&&r.iconDefault&&(r.iconDefault=h.hasClass("is-collapsed")?"lucide-folder-closed":"lucide-folder-open");let m=o.find(":scope > .iconic-sidekick:not(.tree-item-icon)");if(this.plugin.settings.minimalFolderIcons||!this.plugin.settings.showAllFolderIcons&&!l.icon&&!l.iconDefault)m?.remove();else{let c=l.icon||l.iconDefault?null:l.color;this.refreshIcon({icon:null,color:c},h),m=m??o.createDiv({cls:"iconic-sidekick"}),h.nextElementSibling!==m&&h.insertAdjacentElement("afterend",m),h=m}h.hasClass("collapse-icon")&&!l.icon&&!l.iconDefault?this.refreshIcon(l,h):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(l,h,c=>{I.openSingle(this.plugin,r,(u,w)=>{this.plugin.saveFileIcon(r,u,w),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}),c.stopPropagation()}):this.refreshIcon(l,h),this.setEventListener(o,"dragstart",()=>{if(l.icon||l.iconDefault||l.color){let c=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-self");if(c){let u=c.find("span"),w=r.category==="folder"&&l.icon===null?"lucide-folder-open":l.icon||l.iconDefault;this.refreshIcon({icon:w,color:l.color},c),c.appendChild(u)}}})}}debouncedRefresh(e,t){window.clearTimeout(this.refreshTimerId),this.refreshTimerId=window.setTimeout(()=>{this.refreshChildIcons(e,t)},100)}onContextMenu(...e){this.plugin.menuManager.closeAndFlush();let t=[];for(let l of e)t.push(this.plugin.getFileItem(l));let i=t.length===1?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",t.length.toString());this.plugin.menuManager.addItemAfter(["action-primary","close","open"],l=>l.setTitle(i).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{t.length===1?I.openSingle(this.plugin,t[0],(h,g)=>{this.plugin.saveFileIcon(t[0],h,g),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()}):I.openMulti(this.plugin,t,(h,g)=>{this.plugin.saveFileIcons(t,h,g),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})}));let n=t.some(l=>l.icon),o=t.some(l=>l.color),r=t.length===1?t[0].icon?s.menu.removeIcon:s.menu.resetColor:n?s.menu.removeIcons.replace("{#}",t.length.toString()):s.menu.resetColors.replace("{#}",t.length.toString()),d=n?"lucide-image-minus":"lucide-rotate-ccw";if((n||o)&&this.plugin.menuManager.addItem(l=>l.setTitle(r).setIcon(d).setSection("icon").onClick(()=>{t.length===1?this.plugin.saveFileIcon(t[0],null,null):this.plugin.saveFileIcons(t,null,null),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons()})),t.length===1){let l=t[0].items?"folder":"file",h=this.plugin.ruleManager.checkRuling(l,t[0].id);h&&this.plugin.menuManager.addItem(g=>{g.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>R.open(this.plugin,l,h,m=>{(m?this.plugin.ruleManager.saveRule(l,m):this.plugin.ruleManager.deleteRule(l,h.id))&&(this.refreshIcons(),l==="file"&&this.plugin.tabIconManager?.refreshIcons(),this.plugin.bookmarkIconManager?.refreshIcons())}))})}}unload(){window.clearTimeout(this.refreshTimerId),this.refreshIcons(!0),super.unload()}};var se=class extends E{constructor(e){super(e);this.isTouchActive=!1;this.selectionLookup=new Map;this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.plugin.isPluginEnabled("obsidian-icon-folder")&&this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",()=>{this.refreshIcons()})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="bookmarks"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .view-content > div"),this.setMutationObserver(this.containerEl,{subtree:!0,childList:!0,attributeFilter:["class"],attributeOldValue:!0},t=>{if(t.attributeName==="class"&&t.target instanceof HTMLElement&&t.oldValue?.includes("is-being-renamed")&&!t.target.hasClass("is-being-renamed")){this.refreshIcons();return}for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getBookmarkItems(e),i=this.containerEl?.findAll(":scope > .tree-item");i&&(this.selectionLookup.clear(),this.refreshChildIcons(t,i,e))}refreshChildIcons(e,t,i){for(let n of t){n.addClass("iconic-item");let o=e[t.indexOf(n)];if(!o||o.category==="url")continue;let r=o;if((o.category==="file"||o.category==="folder")&&(r=this.plugin.ruleManager.checkRuling(o.category,o.id,i)??o),o.items){if(!n.hasClass("is-collapsed")){let h=n.findAll(":scope > .tree-item-children > .tree-item");h&&this.refreshChildIcons(o.items,h,i)}this.setMutationObserver(n,{attributeFilter:["class"],attributeOldValue:!0},h=>{if(h.target instanceof HTMLElement&&h.target.hasClass("is-collapsed")!==h.oldValue?.includes("is-collapsed")){let g=n.findAll(":scope > .tree-item-children > .tree-item");o.items&&g&&this.refreshChildIcons([o,...o.items],[n,...g])}})}let d=n.find(":scope > .tree-item-self"),l=d.find(":scope > .tree-item-icon")??d.createDiv({cls:"tree-item-icon"});if(o.items){o.iconDefault&&(o.iconDefault=l.hasClass("is-collapsed")?"lucide-folder-closed":"lucide-folder-open");let h=d.find(":scope > .iconic-sidekick:not(.tree-item-icon)");if(this.plugin.settings.minimalFolderIcons||!this.plugin.settings.showAllFolderIcons&&!r.icon&&!r.iconDefault)h?.remove();else{let g=r.icon||r.iconDefault?null:r.color;this.refreshIcon({icon:null,color:g},l),h=h??d.createDiv({cls:"iconic-sidekick"}),l.nextElementSibling!==h&&l.insertAdjacentElement("afterend",h),l=h}}l.hasClass("collapse-icon")&&!r.icon&&!r.iconDefault?this.refreshIcon(o,l):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,l,h=>{I.openSingle(this.plugin,o,(g,m)=>{this.plugin.saveBookmarkIcon(o,g,m),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()}),h.stopPropagation()}):this.refreshIcon(r,l),d&&(this.selectionLookup.set(d,o),this.setEventListener(d,"touchstart",()=>this.isTouchActive=!0),this.plugin.settings.showMenuActions?this.setEventListener(d,"contextmenu",()=>{this.isTouchActive?this.isTouchActive=!1:this.onContextMenu(o.id,o.category)},{capture:!0}):this.stopEventListener(d,"contextmenu")),this.setEventListener(d,"dragstart",()=>{if(r.icon||r.iconDefault||r.color){let h=activeDocument.body.find(":scope > .drag-ghost > .drag-ghost-self");if(h){let g=h.find("span"),m=o.category==="group"&&r.icon===null?"lucide-bookmark":r.icon||r.iconDefault;this.refreshIcon({icon:m,color:r.color},h),h.appendChild(g)}}})}}onContextMenu(e,t){this.plugin.menuManager.closeAndFlush();let i=this.plugin.getBookmarkItem(e,t),n=[];for(let[g,m]of this.selectionLookup)g.hasClass("is-selected")&&n.push(this.plugin.getBookmarkItem(m.id,m.category));n.some(g=>g.id===i.id)||(n.length=0);let o=n.length<2?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",n.length.toString());this.plugin.menuManager.addItemAfter("open",g=>g.setTitle(o).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{n.length<2?I.openSingle(this.plugin,i,(m,c)=>{this.plugin.saveBookmarkIcon(i,m,c),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()}):I.openMulti(this.plugin,n,(m,c)=>{this.plugin.saveBookmarkIcons(n,m,c),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})}));let r=n.some(g=>g.icon||g.color),d=n.some(g=>g.icon),l=n.length<2?i.icon?s.menu.removeIcon:s.menu.resetColor:d?s.menu.removeIcons.replace("{#}",n.length.toString()):s.menu.resetColors.replace("{#}",n.length.toString()),h=i.icon||d?"lucide-image-minus":"lucide-rotate-ccw";if((i.icon||i.color||r)&&this.plugin.menuManager.addItem(g=>g.setTitle(l).setIcon(h).setSection("icon").onClick(()=>{n.length<2?this.plugin.saveBookmarkIcon(i,null,null):this.plugin.saveBookmarkIcons(n,null,null),this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons()})),n.length<2){let g=i.category==="file"||i.category==="folder"?this.plugin.ruleManager.checkRuling(i.category,i.id):null;g&&this.plugin.menuManager.addItem(m=>{m.setTitle(s.menu.editRule).setIcon("lucide-image-play").setSection("icon").onClick(()=>R.open(this.plugin,"file",g,c=>{(c?this.plugin.ruleManager.saveRule("file",c):this.plugin.ruleManager.deleteRule("file",g.id))&&(this.refreshIcons(),this.plugin.tabIconManager?.refreshIcons(),this.plugin.fileIconManager?.refreshIcons())}))})}}unload(){this.refreshIcons(!0),super.unload()}};var Se=require("obsidian");var ne=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="tag"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .tag-container > div"),this.setMutationsObserver(this.containerEl,{subtree:!0,childList:!0},t=>{for(let i of t)for(let n of i.addedNodes)if(n instanceof HTMLElement&&n.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){let t=this.plugin.getTagItems(e),i=this.containerEl?.findAll(".tree-item")??[];i&&this.refreshChildIcons(t,i)}refreshChildIcons(e,t){for(let i of t){i.addClass("iconic-item");let n=i.find(":scope > .tree-item-self");if(!n)continue;let o=n.find(":scope > .tree-item-inner > .tree-item-inner-text")?.getText();if(!o)continue;let r=e.find(l=>l.id===o);if(!r)continue;let d=n.find(":scope > .tree-item-icon")??n.createDiv({cls:"tree-item-icon"});d.hasClass("collapse-icon")&&!r.icon&&!r.iconDefault?this.refreshIcon(r,d):this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,d,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.saveTagIcon(r,h,g),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,d),this.plugin.settings.showMenuActions&&n?this.setEventListener(n,"contextmenu",l=>{this.onContextMenu(r.id,l)}):this.stopEventListener(n,"contextmenu")}}onContextMenu(e,t){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let i=this.plugin.getTagItem(e);if(!i)return;let n=this.plugin.isPluginEnabled("tag-wrangler")?this.plugin.menuManager:new Se.Menu;n.addItem(o=>o.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,i,(r,d)=>{this.plugin.saveTagIcon(i,r,d),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}))),(i.icon||i.color)&&n.addItem(o=>o.setTitle(i.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(i.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTagIcon(i,null,null),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()})),n instanceof Se.Menu&&n.showAtMouseEvent(t)}unload(){this.refreshIcons(!0),super.unload()}};var oe=class extends E{constructor(e){super(e);this.plugin.registerEvent(this.app.workspace.on("layout-change",()=>{activeDocument.contains(this.containerEl)||this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))})),this.app.workspace.iterateAllLeaves(t=>this.manageLeaf(t))}manageLeaf(e){e.getViewState().type==="all-properties"&&(this.stopMutationObserver(this.containerEl),this.containerEl=e.view.containerEl.find(":scope > .view-content > div"),this.setMutationObserver(this.containerEl,{subtree:!0,childList:!0},t=>{for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshIcons();return}}),this.refreshIcons())}refreshIcons(e){this.stopMutationObserver(this.containerEl);let t=this.plugin.getPropertyItems(e),i=this.containerEl?.findAll(":scope > .tree-item")??[];for(let n of i){n.addClass("iconic-item");let o=n.find(".tree-item-self > .tree-item-inner > .tree-item-inner-text"),r=t.find(l=>l.id===o?.getText());if(!r)continue;let d=n.find(".tree-item-self > .tree-item-icon");d&&(this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,d,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.savePropertyIcon(r,h,g),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,d),this.plugin.settings.showMenuActions?this.setEventListener(n,"contextmenu",()=>this.onContextMenu(r.id),{capture:!0}):this.stopEventListener(n,"contextmenu"))}this.setMutationsObserver(this.containerEl,{subtree:!0,childList:!0},()=>this.refreshIcons())}onContextMenu(e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getPropertyItem(e),i=[];for(let h of this.containerEl?.findAll(".tree-item-self.is-selected")??[]){let g=h.find(":scope > .tree-item-inner > .tree-item-inner-text");g?.textContent&&i.push(this.plugin.getPropertyItem(g.textContent))}i.some(h=>h.id===t.id)||(i.length=0);let n=i.length<2?s.menu.changeIcon:s.menu.changeIcons.replace("{#}",i.length.toString());this.plugin.menuManager.addItemAfter(["action.changeType","action"],h=>h.setTitle(n).setIcon("lucide-image-plus").setSection("icon").onClick(()=>{i.length<2?I.openSingle(this.plugin,t,(g,m)=>{this.plugin.savePropertyIcon(t,g,m),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}):I.openMulti(this.plugin,i,(g,m)=>{this.plugin.savePropertyIcons(i,g,m),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()})}));let o=i.some(h=>h.icon),r=i.some(h=>h.color),d=i.length<2?t.icon?s.menu.removeIcon:s.menu.resetColor:o?s.menu.removeIcons.replace("{#}",i.length.toString()):s.menu.resetColors.replace("{#}",i.length.toString()),l=t.icon||o?"lucide-image-minus":"lucide-rotate-ccw";(t.icon||t.color||o||r)&&this.plugin.menuManager.addItem(h=>h.setTitle(d).setIcon(l).setSection("icon").onClick(()=>{i.length<2?this.plugin.savePropertyIcon(t,null,null):this.plugin.savePropertyIcons(i,null,null),this.refreshIcons(),this.plugin.editorIconManager?.refreshIcons()}))}unload(){this.refreshIcons(!0),super.unload()}};var z=require("obsidian");var V=class extends E{constructor(a){super(a),this.setMutationObserver(activeDocument.body,{childList:!0},e=>{let t=activeDocument.activeElement;if(t){for(let i of e.addedNodes)if(i instanceof HTMLElement&&i.hasClass("suggestion-container")){t.hasClass("metadata-property-key-input")?this.onPropertySuggestionMenu(i):t.hasClass("multi-select-input")&&t.closest('.metadata-property[data-property-key="tags"]')&&this.onTagSuggestionMenu(i);break}}}),this.plugin.registerMarkdownPostProcessor(e=>{let t=this.plugin.getTagItems();if(t.length===0)return;let i=e.findAll("a.tag");for(let n of i){let o=n.getAttribute("href")?.replace("#","");if(!o)continue;let r=t.find(l=>l.id===o);if(!r)continue;V.setTagColor(r,n);let d=n.find(".iconic-icon")??createSpan();n.prepend(d),this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,d,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.saveTagIcon(r,h,g),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,d),this.plugin.settings.showMenuActions?this.setEventListener(n,"contextmenu",l=>{this.onTagNewContextMenu(r.id,l)}):this.stopEventListener(n,"contextmenu")}});for(let e of this.app.workspace.getLeavesOfType("markdown"))e.view instanceof z.MarkdownView&&(this.observeViewIcons(e.view),this.refreshViewIcons(e.view));this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",()=>{this.refreshIcons()})),this.plugin.registerEvent(this.app.vault.on("modify",()=>{this.refreshIcons()}))}observeViewIcons(a){this.observeContainer(a.containerEl,a);let e=a.metadataEditor?.propertyListEl;if(!e)return;this.observeProperties(e,a);let t=e.find('.metadata-property[data-property-key="tags"] .multi-select-container');t&&this.observeTagsProperty(t,a)}observeContainer(a,e){this.setMutationsObserver(a,{attributeFilter:["data-mode"]},()=>{this.refreshViewIcons(e)})}observeProperties(a,e){this.setMutationObserver(a,{childList:!0,subtree:!0},t=>{if(t.target instanceof HTMLElement&&t.target.hasClass("metadata-property-icon")){this.refreshViewIcons(e);return}for(let i of t.addedNodes)if(i instanceof HTMLElement&&i.hasClass("tree-item")){this.refreshViewIcons(e);return}}),this.setEventListener(a,"click",t=>{let i=activeDocument.elementsFromPoint(t.x,t.y),n=i.find(r=>r.hasClass("metadata-property-icon")),o=i.find(r=>r.hasClass("metadata-property"));if(n&&o instanceof HTMLElement){let r=o.dataset.propertyKey?this.plugin.getPropertyItem(o.dataset.propertyKey):null;if(!r)return;this.plugin.isSettingEnabled("clickableIcons")?(I.openSingle(this.plugin,r,(d,l)=>{this.plugin.savePropertyIcon(r,d,l),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}),t.stopPropagation()):this.onPropertyContextMenu(r.id)}},{capture:!0}),this.plugin.settings.showMenuActions?this.setEventListener(a,"contextmenu",t=>{let i=activeDocument.elementsFromPoint(t.x,t.y),n=i.find(r=>r.hasClass("metadata-property-icon")),o=i.find(r=>r.hasClass("metadata-property"));if(n&&o instanceof HTMLElement){let r=o.dataset.propertyKey?this.plugin.getPropertyItem(o.dataset.propertyKey):null;r&&this.onPropertyContextMenu(r.id)}},{capture:!0}):this.stopEventListener(a,"contextmenu")}observeTagsProperty(a,e){this.setMutationsObserver(a,{childList:!0},()=>this.refreshViewIcons(e))}refreshIcons(a){for(let e of this.app.workspace.getLeavesOfType("markdown"))e.view instanceof z.MarkdownView&&this.refreshViewIcons(e.view,a)}refreshViewIcons(a,e){a.currentMode instanceof z.MarkdownPreviewView&&a.currentMode.rerender(!0);let t=this.plugin.getPropertyItems(e),i=this.plugin.getTagItems(e);this.refreshPropertyIcons(t,a),this.refreshTagIcons(i,a)}refreshPropertyIcons(a,e){let t=e.metadataEditor?.propertyListEl;if(!t)return;let i=t.findAll(":scope > .metadata-property");for(let n of i){let o=a.find(l=>l.id===n.dataset.propertyKey);if(!o)return;let d=n.find(":scope > .metadata-property-key")?.find(":scope > .metadata-property-icon");d&&this.refreshIcon(o,d)}}refreshTagIcons(a,e){if(!e.metadataEditor?.propertyListEl)return;let i=e.contentEl.findAll('.metadata-property[data-property-key="tags"] .multi-select-pill');if(i){for(let n of i){let o=n.find(":scope > .multi-select-pill-content")?.getText();if(!o)continue;let r=a.find(d=>d.id===o);if(r){if(r.icon){let d=n.find(".iconic-icon")??createSpan();d!==n.firstChild&&n.insertBefore(d,n.firstChild),this.plugin.isSettingEnabled("clickableIcons")?this.refreshIcon(r,d,l=>{I.openSingle(this.plugin,r,(h,g)=>{this.plugin.saveTagIcon(r,h,g),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}),l.stopPropagation()}):this.refreshIcon(r,d)}else n.find(".iconic-icon")?.remove();V.setTagColor(r,n),this.plugin.settings.showMenuActions?this.setEventListener(n,"contextmenu",()=>this.onTagContextMenu(r.id)):this.stopEventListener(n,"contextmenu")}}if(e.getMode()==="source"){let n;for(let r of e.contentEl.children)if(r instanceof HTMLElement&&r.hasClass("markdown-source-view")){n=r;break}let o=n?.findAll(".cm-hashtag-end")??[];for(let r of o){let d=r.getText();if(!d)continue;let l=a.find(g=>g.id===d);if(!l)continue;let h=r.previousElementSibling;h instanceof HTMLElement&&h.hasClass("cm-hashtag-begin")&&(V.setTagColor(l,h),this.plugin.settings.showMenuActions?this.setEventListener(h,"contextmenu",g=>{z.Platform.isDesktop&&this.onTagContextMenu(l.id,!0),z.Platform.isMobile&&this.onTagNewContextMenu(l.id,g)}):this.stopEventListener(h,"contextmenu")),V.setTagColor(l,r),this.plugin.settings.showMenuActions?this.setEventListener(r,"contextmenu",g=>{z.Platform.isDesktop&&this.onTagContextMenu(l.id,!0),z.Platform.isMobile&&this.onTagNewContextMenu(l.id,g)}):this.stopEventListener(r,"contextmenu")}}}}onPropertyContextMenu(a){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let e=this.plugin.getPropertyItem(a);this.plugin.menuManager.addItemAfter(["action.changeType","action"],t=>t.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,e,(i,n)=>{this.plugin.savePropertyIcon(e,i,n),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}))),(e.icon||e.color)&&this.plugin.menuManager.addItem(t=>t.setTitle(e.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(e.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.savePropertyIcon(e,null,null),this.refreshIcons(),this.plugin.propertyIconManager?.refreshIcons()}))}onTagContextMenu(a,e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getTagItem(a);t&&(this.plugin.menuManager.addItemAfter(e?[]:"selection",i=>i.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,t,(n,o)=>{this.plugin.saveTagIcon(t,n,o),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()}))),(t.icon||t.color)&&this.plugin.menuManager.addItem(i=>i.setTitle(t.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(t.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveTagIcon(t,null,null),this.refreshIcons(),this.plugin.tagIconManager?.refreshIcons()})))}onTagNewContextMenu(a,e){this.plugin.tagIconManager?.onContextMenu(a,e)}onPropertySuggestionMenu(a){this.stopMutationObserver(a);let e=a.findAll(":scope > .suggestion > .suggestion-item");for(let t of e){let i=t.find(":scope > .suggestion-content > .suggestion-title")?.getText();if(i){let n=this.plugin.getPropertyItem(i),o=t.find(":scope > .suggestion-icon > .suggestion-flair");o&&this.refreshIcon(n,o)}}this.setMutationsObserver(a,{subtree:!0,childList:!0},()=>this.onPropertySuggestionMenu(a))}onTagSuggestionMenu(a){this.stopMutationObserver(a);let e=a.findAll(":scope > .suggestion > .suggestion-item"),t=this.plugin.getTagItems();for(let i of e){let n=i.getText(),o=t.find(r=>r.id===n);if(o){i.addClass("mod-complex"),i.empty();let r=i.createDiv({cls:"suggestion-icon"}).createSpan({cls:"suggestion-flair"});i.createDiv({cls:"suggestion-content"}).createDiv({cls:"suggestion-title",text:n}),r&&this.refreshIcon(o,r)}}this.setMutationsObserver(a,{subtree:!0,childList:!0},()=>this.onTagSuggestionMenu(a))}static setTagColor(a,e){if(a.color){let t=C.toRgb(a.color),i=t.replace("rgb(","rgba(").replace(")","");e.style.setProperty("color",t),e.style.setProperty("background-color",i+", 0.1)"),e.style.setProperty("--tag-border-color",i+", 0.25)"),e.style.setProperty("--tag-border-color-hover",i+", 0.5)"),e.hasClass("multi-select-pill")&&e.style.setProperty("--pill-color-remove",t)}else e.style.removeProperty("color"),e.style.removeProperty("background-color"),e.style.removeProperty("--tag-border-color"),e.style.removeProperty("--tag-border-color-hover"),e.hasClass("multi-select-pill")&&e.style.removeProperty("--pill-color-remove")}unload(){this.refreshIcons(!0),super.unload()}};var U=require("obsidian");var ae=class extends E{constructor(a){super(a),this.refreshIcons();let e=this.app.workspace.leftRibbon.ribbonItemsEl;this.setEventListener(e,"auxclick",i=>{i.stopPropagation()},{capture:!0}),this.setMutationsObserver(e,{childList:!0},()=>this.refreshIcons());let t=activeDocument.body.find(U.Platform.isDesktop?".side-dock-ribbon.mod-left.workspace-ribbon":".side-dock-ribbon.mod-left.workspace-drawer-ribbon");t&&this.setEventListener(t,"contextmenu",()=>{let i=this.plugin.getRibbonItems();this.plugin.menuManager.forSection("order",n=>{let o=i[0];o&&n.iconEl.childElementCount>0&&(n.setIcon(o.icon),this.refreshIcon(o,n.iconEl),i.shift())})}),this.setMutationObserver(activeDocument.body,{childList:!0},i=>{for(let n of i.addedNodes)n instanceof HTMLElement&&n.hasClass("modal-container")&&n.find(".modal-content > div > .mobile-option-setting-item")&&n.find(".modal-content > .modal-button-container")&&this.refreshConfigIcons(n)})}refreshIcons(a){if(U.Platform.isPhone){let e=this.app.mobileNavbar.ribbonMenuItemEl;if(!e)return;let t=this.app.vault.getConfig("mobileQuickRibbonItem"),i=()=>{let n=this.plugin.getRibbonItems().filter(o=>!o.isHidden);this.plugin.menuManager.forSection("",o=>{let r=n[0];r&&(o.setIcon(r.icon),this.refreshIcon(r,o.iconEl),n.shift())})};if(t){let n=this.plugin.getRibbonItem(t);this.plugin.settings.uncolorQuick&&(n.color=null),this.refreshIcon(n,e)}else this.setEventListener(e,"click",i);this.setEventListener(e,"contextmenu",i)}else{let e=this.plugin.getRibbonItems(a);for(let t of e){let i=t.iconEl;!i||i.hasClass("ribbon-divider")||(t.isHidden&&(t.icon=null,t.iconDefault=null),this.refreshIcon(t,i),this.plugin.settings.showMenuActions?this.setEventListener(i,"contextmenu",n=>{this.onContextMenu(t.id,n)},{capture:!0}):this.stopEventListener(i,"contextmenu"))}}}refreshConfigIcons(a){if(U.Platform.isPhone){let l=a.find(".setting-item-control > .dropdown");l&&this.setEventListener(l,"change",()=>{this.refreshIcons(),this.refreshConfigIcons(a)});let h=this.app.vault.getConfig("mobileQuickRibbonItem");if(h){let g=this.plugin.getRibbonItem(h),m=a.find(".setting-item-control > .extra-setting-button");this.refreshIcon(g,m,()=>{I.openSingle(this.plugin,g,(c,u)=>{this.plugin.saveRibbonIcon(g,c,u),this.refreshConfigIcons(a),this.refreshIcons()})})}}if(a.findAll(".mobile-option-setting-item-option-icon:not(.mobile-option-setting-drag-icon)").length===0)return;let t=this.plugin.getRibbonItems(),i=t.filter(l=>!l.isHidden),n=t.filter(l=>l.isHidden),o=a.findAll(".mobile-option-setting-item:has(.mobile-option-setting-item-remove-icon)"),r=a.findAll(".mobile-option-setting-item:has(.mobile-option-setting-item-add-icon)"),d=[...i.map((l,h)=>[l,o[h],"mobile-option-setting-item-remove-icon"]),...n.map((l,h)=>[l,r[h],"mobile-option-setting-item-add-icon"])];for(let[l,h,g]of d){let m=h.find(":scope > .mobile-option-setting-item-option-icon");if(!m||m.childElementCount===0)continue;let c=h.find(":scope > ."+g);this.refreshIcon(l,m,u=>{I.openSingle(this.plugin,l,(w,b)=>{this.plugin.saveRibbonIcon(l,w,b),this.refreshIcons(),this.refreshConfigIcons(a)}),u.stopPropagation()}),this.setEventListener(c,"click",()=>this.refreshConfigIcons(a))}}onContextMenu(a,e){navigator?.vibrate(100),this.plugin.menuManager.closeAndFlush();let t=this.plugin.getRibbonItem(a),i;a.startsWith("periodic-notes:")?(i=this.plugin.menuManager,i.forSection("",n=>n.setSection("open"))):i=new U.Menu,i.addItem(n=>n.setTitle(s.menu.changeIcon).setIcon("lucide-image-plus").setSection("icon").onClick(()=>I.openSingle(this.plugin,t,(o,r)=>{this.plugin.saveRibbonIcon(t,o,r),this.refreshIcons()}))),(t.icon||t.color)&&i.addItem(n=>n.setTitle(t.icon?s.menu.removeIcon:s.menu.resetColor).setIcon(t.icon?"lucide-image-minus":"lucide-rotate-ccw").setSection("icon").onClick(()=>{this.plugin.saveRibbonIcon(t,null,null),this.refreshIcons()})),i instanceof U.Menu&&i.showAtMouseEvent(e)}unload(){this.refreshIcons(!0),super.unload()}};var T=require("obsidian");function Rt(k){return k.plugin instanceof T.Plugin}var ze="qs",Ve="qs++",qe="aqs",re=class extends E{constructor(e){super(e);let t=this;this.onOpenOriginal=T.SuggestModal.prototype.onOpen,this.setInstructionsOriginal=T.SuggestModal.prototype.setInstructions,this.onOpenProxy=new Proxy(T.SuggestModal.prototype.onOpen,{apply(i,n,o){if(t.isDisabled())return i.call(n,...o);let r=t.getModalType(n);return r?(n.renderSuggestion=new Proxy(n.renderSuggestion,{apply(d,l,h){let[g,m]=h;switch(r){case ze:{l.modalEl.addClass("iconic-quick-switcher"),t.refreshSuggestionIcon(g,m);break}case Ve:{l.modalEl.addClass("iconic-quick-switcher"),t.refreshSuggestionIconQSPP(g,m);break}}return d.call(l,...h)}}),i.call(n,...o)):i.call(n,...o)}}),this.setInstructionsProxy=new Proxy(T.SuggestModal.prototype.setInstructions,{apply(i,n,o){return t.isDisabled()?i.call(n,...o):t.getModalType(n)!==qe?i.call(n,...o):(n.renderSuggestion=new Proxy(n.renderSuggestion,{apply(d,l,h){if(t.isDisabled())return d.call(l,...h);let[g,m]=h,c=d.call(l,...h);return l.modalEl.addClass("iconic-another-quick-switcher"),t.refreshSuggestionIconAQS(g,m),c}}),i.call(n,...o))}}),T.SuggestModal.prototype.onOpen=this.onOpenProxy,T.SuggestModal.prototype.setInstructions=this.setInstructionsProxy}getModalType(e){return e.modalEl.hasClass("another-quick-switcher__modal-prompt")?qe:Rt(e)&&e.plugin.manifest.id==="darlal-switcher-plus"?Ve:"shouldShowMarkdown"in e?ze:null}refreshSuggestionIcon(e,t){switch(e?.type){case"file":{if(e.file instanceof T.TFile){let i=this.plugin.getFileItem(e.file.path),n=this.plugin.ruleManager.checkRuling("file",i.id)??i;if(n.icon||n.color){let o=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(n,o)}}break}case"bookmark":{let i=e.item;if(i.type==="file"){let n=this.plugin.getFileItem(i.path),o=this.plugin.ruleManager.checkRuling("file",n.id)??n;if(o.icon||o.color){let r=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(o,r)}}break}}}refreshSuggestionIconQSPP(e,t){switch(e?.type){case"file":{if(e.file instanceof T.TFile){let i=this.plugin.getFileItem(e.file.path),n=this.plugin.ruleManager.checkRuling("file",i.id)??i;if(n.icon||n.color){let o=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(n,o)}}break}case"bookmark":{let i=e.item;if(i.type==="file"||i.type==="folder"){let n=this.plugin.getFileItem(i.path),o=this.plugin.ruleManager.checkRuling(i.type,n.id)??n;if(o.icon||o.color){let r=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(o,r)}}break}case"editorList":{if(!(e.item instanceof T.WorkspaceLeaf))break;let i=e.item.view.getViewType(),n=e.item.view.getIcon();if(le.includes(i)&&e.file instanceof T.TFile){let o=this.plugin.getFileItem(e.file.path),r=this.plugin.ruleManager.checkRuling("file",o.id)??o;if(r.icon||r.color){let d=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(r,d)}}else{let o=this.plugin.getTabItem(i);if(o){o.iconDefault=n;let r=t.find(".iconic-icon")??t.createDiv();this.refreshIcon(o,r)}}break}}}refreshSuggestionIconAQS(e,t){let i=e.file;if(i instanceof T.TFile){let n=t.find(".another-quick-switcher__item"),o=this.plugin.getFileItem(i.path);if(o.icon||o.color){let r=n.find(".iconic-icon")??n.createDiv();n.prepend(r),this.refreshIcon(o,r)}}}isDisabled(){return!this.plugin.settings.showQuickSwitcherIcons}unload(){super.unload(),T.SuggestModal.prototype.onOpen===this.onOpenProxy&&(T.SuggestModal.prototype.onOpen=this.onOpenOriginal),T.SuggestModal.prototype.setInstructions===this.setInstructionsProxy&&(T.SuggestModal.prototype.setInstructions=this.setInstructionsOriginal)}};var B=new Map;var le=["markdown","canvas","bases","image","audio","video","pdf"],Ft=["image","audio","video","pdf","unsupported"],ge=["bmp","png","jpg","jpeg","gif","svg","webp","avif"],me=["mp3","wav","m4a","3gp","flac","ogg","oga","opus"],Ge=["mp4","webm","ogv","mov","mkv"],Pt=["md","canvas","pdf"].concat(ge).concat(me).concat(Ge),Dt={biggerIcons:"mobile",clickableIcons:"desktop",showAllFileIcons:!1,showAllFolderIcons:!1,minimalFolderIcons:!0,showMarkdownTabIcons:!0,showMenuActions:!0,showQuickSwitcherIcons:!0,showItemName:"desktop",biggerSearchResults:"mobile",maxSearchResults:50,colorPicker1:"list",colorPicker2:"rgb",uncolorHover:!1,uncolorDrag:!1,uncolorSelect:!1,uncolorQuick:!1,rememberDeletedItems:!1,dialogState:{iconMode:!0,emojiMode:!1,rulePage:"file"},appIcons:{},tabIcons:{},fileIcons:{},bookmarkIcons:{},tagIcons:{},propertyIcons:{},ribbonIcons:{},fileRules:[],folderRules:[]},pe=class extends A.Plugin{constructor(){super(...arguments);this.dialogCommands=[]}async onload(){await this.loadSettings(),this.addSettingTab(new $(this)),this.app.workspace.onLayoutReady(()=>{(0,A.getIconIds)().map(e=>{switch(e){default:{let t=e.replace(/^lucide-/,"").replaceAll("-"," "),i=t[0]?.toUpperCase()+t.slice(1);return[e,i]}case"lucide-app-window-mac":return[e,"App window Mac"];case"lucide-archive-x":return[e,"Archive X"];case"lucide-arrow-down-az":return[e,"Arrow down AZ"];case"lucide-arrow-down-za":return[e,"Arrow down ZA"];case"lucide-arrow-up-az":return[e,"Arrow up AZ"];case"lucide-arrow-up-za":return[e,"Arrow up ZA"];case"lucide-axis-3d":return[e,"Axis 3D"];case"lucide-badge-indian-rupee":return[e,"Badge Indian rupee"];case"lucide-badge-japanese-yen":return[e,"Badge Japanese yen"];case"lucide-badge-russian-ruble":return[e,"Badge Russian ruble"];case"lucide-badge-swiss-franc":return[e,"Badge Swiss franc"];case"lucide-badge-x":return[e,"Badge X"];case"lucide-book-a":return[e,"Book A"];case"lucide-book-x":return[e,"Book X"];case"lucide-calendar-x":return[e,"Calendar X"];case"lucide-calendar-x2":return[e,"Calendar X 2"];case"lucide-cctv":return[e,"CCTV"];case"lucide-chart-gantt":return[e,"Chart Gantt"];case"lucide-chart-no-axes-gantt":return[e,"Chart no axes Gantt"];case"lucide-circle-x":return[e,"Circle X"];case"lucide-clipboard-x":return[e,"Clipboard X"];case"lucide-code-xml":return[e,"Code XML"];case"lucide-copy-x":return[e,"Copy X"];case"lucide-cpu":return[e,"CPU"];case"lucide-creative-commons":return[e,"Creative Commons"];case"lucide-dna":return[e,"DNA"];case"lucide-dna-off":return[e,"DNA off"];case"lucide-file-axis-3d":return[e,"File axis 3D"];case"lucide-file-json":return[e,"File JSON"];case"lucide-file-json-2":return[e,"File JSON 2"];case"lucide-file-x":return[e,"File X"];case"lucide-file-x2":return[e,"File X 2"];case"lucide-filter-x":return[e,"Filter X"];case"lucide-folder-git":return[e,"Folder Git"];case"lucide-folder-git-2":return[e,"Folder Git 2"];case"lucide-folder-x":return[e,"Folder X"];case"lucide-github":return[e,"GitHub"];case"lucide-gitlab":return[e,"GitLab"];case"lucide-grid-2x-2":return[e,"Grid 2x2"];case"lucide-grid-2x-2check":return[e,"Grid 2x2 check"];case"lucide-grid-2x-2plus":return[e,"Grid 2x2 plus"];case"lucide-grid-2x-2x":return[e,"Grid 2x2 X"];case"lucide-grid-3x-3":return[e,"Grid 3x3"];case"lucide-hdmi-port":return[e,"HDMI port"];case"lucide-id-card":return[e,"ID card"];case"lucide-iteration-ccw":return[e,"Iteration CCW"];case"lucide-iteration-cw":return[e,"Iteration CW"];case"lucide-linkedin":return[e,"LinkedIn"];case"lucide-list-x":return[e,"List X"];case"lucide-mail-x":return[e,"Mail X"];case"lucide-map-pin-x":return[e,"Map pin X"];case"lucide-map-pin-xinside":return[e,"Map pin X inside"];case"lucide-message-circle-x":return[e,"Message circle X"];case"lucide-message-square-x":return[e,"Message square X"];case"lucide-monitor-x":return[e,"Monitor X"];case"lucide-move-3d":return[e,"Move 3D"];case"lucide-navigation-2off":return[e,"Navigation 2 off"];case"lucide-nfc":return[e,"NFC"];case"lucide-octagon-x":return[e,"Octagon X"];case"lucide-package-x":return[e,"Package X"];case"lucide-pc-case":return[e,"PC case"];case"lucide-qr-code":return[e,"QR code"];case"lucide-receipt-indian-rupee":return[e,"Receipt Indian rupee"];case"lucide-receipt-japanese-yen":return[e,"Receipt Japanese yen"];case"lucide-receipt-russian-ruble":return[e,"Receipt Russian ruble"];case"lucide-receipt-swiss-franc":return[e,"Receipt Swiss franc"];case"lucide-refresh-ccw":return[e,"Refresh CCW"];case"lucide-refresh-ccw-dot":return[e,"Refresh CCW dot"];case"lucide-refresh-cw":return[e,"Refresh CW"];case"lucide-refresh-cw-off":return[e,"Refresh CW off"];case"lucide-square-chart-gantt":return[e,"Square chart Gantt"];case"lucide-square-gantt-chart":return[e,"Square Gantt chart"];case"lucide-square-m":return[e,"Square M"];case"lucide-square-x":return[e,"Square X"];case"lucide-ticket-x":return[e,"Ticket X"];case"lucide-rotate-3d":return[e,"Rotate 3D"];case"lucide-rotate-ccw":return[e,"Rotate CCW"];case"lucide-rotate-ccw-square":return[e,"Rotate CCW square"];case"lucide-rotate-cw":return[e,"Rotate CW"];case"lucide-rotate-cw-square":return[e,"Rotate CW square"];case"lucide-tv":return[e,"TV"];case"lucide-tv-2":return[e,"TV 2"];case"lucide-tv-minimal":return[e,"TV minimal"];case"lucide-tv-minimal-play":return[e,"TV minimal play"];case"lucide-rss":return[e,"RSS"];case"lucide-scale-3d":return[e,"Scale 3D"];case"lucide-scan-qr-code":return[e,"Scan QR code"];case"lucide-search-x":return[e,"Search X"];case"lucide-shield-x":return[e,"Shield X"];case"lucide-smartphone-nfc":return[e,"Smartphone NFC"];case"lucide-user-x":return[e,"User X"];case"lucide-user-x2":return[e,"User X 2"];case"lucide-user-round-x":return[e,"User round X"];case"lucide-wifi":return[e,"WiFi"];case"lucide-wifi-high":return[e,"WiFi high"];case"lucide-wifi-low":return[e,"WiFi low"];case"lucide-wifi-off":return[e,"WiFi off"];case"lucide-wifi-zero":return[e,"WiFi zero"];case"refresh-cw-off":return[e,"Refresh CW off"];case"uppercase-lowercase-a":return[e,"Uppercase lowercase A"]}}).sort(([,e],[,t])=>e.localeCompare(t)).forEach(([e,t])=>B.set(e,t)),this.startManagers(),this.refreshBodyClasses(),this.registerEvent(this.app.vault.on("create",e=>{let t=e instanceof A.TFile?"file":"folder";this.ruleManager.triggerRulings(t,"rename","move","modify")&&(t==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons())})),this.registerEvent(this.app.vault.on("rename",(e,t)=>{let{path:i}=e,n=this.settings.fileIcons[t];n&&(this.settings.fileIcons[i]=n,delete this.settings.fileIcons[t],this.saveSettings());let{filename:o,tree:r}=this.splitFilePath(i),{filename:d,tree:l}=this.splitFilePath(t),h=e instanceof A.TFile?"file":"folder";o!==d&&this.ruleManager.triggerRulings(h,"rename")?(h==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons()):r!==l&&this.ruleManager.triggerRulings(h,"move")&&(h==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons())})),this.registerEvent(this.app.vault.on("modify",e=>{this.onFileModify(e)})),this.registerEvent(this.app.metadataCache.on("changed",e=>{this.onFileModify(e)})),this.registerEvent(this.app.vault.on("delete",e=>{let{path:t}=e;this.settings.rememberDeletedItems===!1&&(delete this.settings.fileIcons[t],this.saveSettings());let i=e instanceof A.TFile?"file":"folder";this.ruleManager.checkRuling(i,t)&&this.ruleManager.updateRulings(i)}))}),this.registerEvent(this.app.workspace.on("css-change",()=>{this.refreshManagers(),this.refreshBodyClasses()})),this.addRibbonIcon("lucide-book-image",s.commands.openRulebook,()=>H.open(this)),this.addCommand({id:"open-rulebook",name:s.commands.openRulebook,callback:()=>H.open(this)}),this.dialogCommands.push(this.addCommand({id:"toggle-bigger-icons",name:s.commands.toggleBiggerIcons,callback:()=>{A.Platform.isDesktop?this.settings.biggerIcons==="on"?this.settings.biggerIcons="mobile":this.settings.biggerIcons==="desktop"?this.settings.biggerIcons="off":this.settings.biggerIcons==="mobile"?this.settings.biggerIcons="on":this.settings.biggerIcons==="off"&&(this.settings.biggerIcons="desktop"):this.settings.biggerIcons==="on"?this.settings.biggerIcons="desktop":this.settings.biggerIcons==="desktop"?this.settings.biggerIcons="on":this.settings.biggerIcons==="mobile"?this.settings.biggerIcons="off":this.settings.biggerIcons==="off"&&(this.settings.biggerIcons="mobile"),this.saveSettings(),this.refreshBodyClasses()}})),this.dialogCommands.push(this.addCommand({id:"toggle-clickable-icons",name:A.Platform.isDesktop?s.commands.toggleClickableIcons.desktop:s.commands.toggleClickableIcons.mobile,callback:()=>{A.Platform.isDesktop?this.settings.clickableIcons==="on"?this.settings.clickableIcons="mobile":this.settings.clickableIcons==="desktop"?this.settings.clickableIcons="off":this.settings.clickableIcons==="mobile"?this.settings.clickableIcons="on":this.settings.clickableIcons==="off"&&(this.settings.clickableIcons="desktop"):this.settings.clickableIcons==="on"?this.settings.clickableIcons="desktop":this.settings.clickableIcons==="desktop"?this.settings.clickableIcons="on":this.settings.clickableIcons==="mobile"?this.settings.clickableIcons="off":this.settings.clickableIcons==="off"&&(this.settings.clickableIcons="mobile"),this.saveSettings(),this.refreshManagers(),this.refreshBodyClasses()}})),this.dialogCommands.push(this.addCommand({id:"toggle-all-file-icons",name:s.commands.toggleAllFileIcons,callback:()=>{this.settings.showAllFileIcons=!this.settings.showAllFileIcons,this.saveSettings(),this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons()}})),this.dialogCommands.push(this.addCommand({id:"toggle-all-folder-icons",name:s.commands.toggleAllFolderIcons,callback:()=>{this.settings.showAllFolderIcons=!this.settings.showAllFolderIcons,this.saveSettings(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons()}})),this.dialogCommands.push(this.addCommand({id:"toggle-minimal.folder-icons",name:s.commands.toggleMinimalFolderIcons,callback:()=>{this.settings.minimalFolderIcons=!this.settings.minimalFolderIcons,this.saveSettings(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons()}})),this.addCommand({id:"toggle-markdown-tab-icons",name:s.commands.toggleMarkdownTabIcons,callback:()=>{this.settings.showMarkdownTabIcons=!this.settings.showMarkdownTabIcons,this.saveSettings(),this.refreshBodyClasses()}}),this.addCommand({id:"toggle-menu-actions",name:s.commands.toggleMenuActions,callback:()=>{this.settings.showMenuActions=!this.settings.showMenuActions,this.saveSettings(),this.refreshManagers(),this.menuManager.closeAndFlush()}}),this.dialogCommands.push(this.addCommand({id:"toggle-bigger-search-results",name:s.commands.toggleBiggerSearchResults,callback:()=>{A.Platform.isDesktop?this.settings.biggerSearchResults==="on"?this.settings.biggerSearchResults="mobile":this.settings.biggerSearchResults==="desktop"?this.settings.biggerSearchResults="off":this.settings.biggerSearchResults==="mobile"?this.settings.biggerSearchResults="on":this.settings.biggerSearchResults==="off"&&(this.settings.biggerSearchResults="desktop"):this.settings.biggerSearchResults==="on"?this.settings.biggerSearchResults="desktop":this.settings.biggerSearchResults==="desktop"?this.settings.biggerSearchResults="on":this.settings.biggerSearchResults==="mobile"?this.settings.biggerSearchResults="off":this.settings.biggerSearchResults==="off"&&(this.settings.biggerSearchResults="mobile"),this.saveSettings(),this.refreshBodyClasses()}})),this.addCommand({id:"change-icon-current-file",name:s.commands.changeIconCurrentFile,checkCallback:e=>{let t=this.app.workspace.getActiveFile();if(t===null)return!1;let i=this.getFileItem(t.path);if(e)return i!==null;I.openSingle(this,i,(n,o)=>{this.saveFileIcon(i,n,o),this.fileIconManager?.refreshIcons(),this.tabIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons()})}})}async onExternalSettingsChange(){await this.loadSettings(),this.refreshManagers(),this.refreshBodyClasses()}onFileModify(e){let t=e instanceof A.TFile?"file":"folder";this.ruleManager.triggerRulings(t,"modify")&&(t==="file"&&this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons())}startManagers(){this.menuManager=new _,this.ruleManager=new p(this);try{this.appIconManager=new ee(this)}catch(e){console.error(e)}try{this.tabIconManager=new te(this)}catch(e){console.error(e)}try{this.fileIconManager=new ie(this)}catch(e){console.error(e)}try{this.tagIconManager=new ne(this)}catch(e){console.error(e)}try{this.bookmarkIconManager=new se(this)}catch(e){console.error(e)}try{this.propertyIconManager=new oe(this)}catch(e){console.error(e)}try{this.editorIconManager=new V(this)}catch(e){console.error(e)}try{this.ribbonIconManager=new ae(this)}catch(e){console.error(e)}try{this.quickSwitcherIconManager=new re(this)}catch(e){console.error(e)}}refreshManagers(){this.appIconManager?.refreshIcons(),this.tabIconManager?.refreshIcons(),this.fileIconManager?.refreshIcons(),this.bookmarkIconManager?.refreshIcons(),this.tagIconManager?.refreshIcons(),this.propertyIconManager?.refreshIcons(),this.editorIconManager?.refreshIcons(),this.ribbonIconManager?.refreshIcons()}refreshBodyClasses(e){let{body:t}=activeDocument;t.toggleClass("iconic-bigger-icons",e?!1:this.isSettingEnabled("biggerIcons")),t.toggleClass("iconic-clickable-icons",e?!1:this.isSettingEnabled("clickableIcons")),t.toggleClass("iconic-markdown-tab-icons",e?!1:this.settings.showMarkdownTabIcons),t.toggleClass("iconic-bigger-search-results",e?!1:this.isSettingEnabled("biggerSearchResults")),t.toggleClass("iconic-uncolor-hover",e?!1:this.settings.uncolorHover),t.toggleClass("iconic-uncolor-drag",e?!1:this.settings.uncolorDrag),t.toggleClass("iconic-uncolor-select",e?!1:this.settings.uncolorSelect);let i=this.app.customCss?.theme;t.toggleClass("iconic-theme-btopaz",e?!1:i==="Blue Topaz"),t.toggleClass("iconic-theme-cat",e?!1:i==="Catppuccin"),t.toggleClass("iconic-theme-cglow",e?!1:i==="Cyber Glow"),t.toggleClass("iconic-theme-discord",e?!1:i==="Discordian"),t.toggleClass("iconic-theme-its",e?!1:i==="ITS Theme"),t.toggleClass("iconic-theme-lyt",e?!1:i==="LYT Mode"),t.toggleClass("iconic-theme-mflow",e?!1:i==="Mado Miniflow"),t.toggleClass("iconic-theme-medge",e?!1:i==="Minimal Edge"),t.toggleClass("iconic-theme-sanctum",e?!1:i==="Sanctum"),t.toggleClass("iconic-theme-shiba",e?!1:i==="Shiba Inu"),t.toggleClass("iconic-theme-shimmer",e?!1:i==="Shimmering Focus"),t.toggleClass("iconic-theme-sodalite",e?!1:i==="Sodalite"),t.toggleClass("iconic-theme-spectrum",e?!1:i==="Spectrum"),t.toggleClass("iconic-theme-terminal",e?!1:i==="Terminal"),t.toggleClass("iconic-theme-ukiyo",e?!1:i==="Ukiyo")}isSettingEnabled(e){let t=this.settings[e];return t==="on"||A.Platform.isDesktop&&t==="desktop"||A.Platform.isMobile&&t==="mobile"}isPluginEnabled(e){return this.app.plugins?.plugins?.hasOwnProperty(e)===!0}getAppItem(e,t){let i=this.settings.appIcons[e]??{},n,o;switch(e){case"help":{n=s.appItems.help,o="help";break}case"settings":{n=s.appItems.settings,o="lucide-settings";break}case"pin":{n=s.appItems.pin,o="lucide-pin";break}case"sidebarLeft":{n=s.appItems.sidebarLeft,o="sidebar-left";break}case"sidebarRight":{n=s.appItems.sidebarRight,o="sidebar-right";break}case"minimize":n=s.appItems.minimize;break;case"maximize":n=s.appItems.maximize;break;case"unmaximize":n=s.appItems.unmaximize;break;case"close":n=s.appItems.close;break}return{id:e,name:n??"",category:"app",iconDefault:o??null,icon:t?null:i.icon??null,color:t?null:i.color??null}}getTabItems(e){let t=[];return this.app.workspace.iterateAllLeaves(i=>{t.push(this.defineTabItem(i,e))}),t}getTabItem(e,t){let i=null;return this.app.workspace.iterateAllLeaves(n=>{if(i)return;let o=n.view.getViewType();(o===e||le.includes(o)&&n.view.getState().file===e)&&(i=this.defineTabItem(n,t))}),i}defineTabItem(e,t){let i=e.tabHeaderInnerIconEl;A.Platform.isMobile&&(e.containerEl?.parentElement===this.app.workspace.leftSplit.activeTabContentEl?i=this.app.workspace.leftSplit.activeTabIconEl:e.containerEl?.parentElement===this.app.workspace.rightSplit.activeTabContentEl&&(i=this.app.workspace.rightSplit.activeTabIconEl));let n=e.view.getViewType(),o=e.view===this.app.workspace.getActiveViewOfType(A.View)||e.tabHeaderEl?.hasClass("is-active"),r=e.getRoot()===this.app.workspace.rootSplit,d=e.parent?.isStacked===!0;if(le.includes(n)){let l=e.view.getState().file,h=typeof l=="string"?l:"",g=this.settings.fileIcons[h]??{},m=n==="markdown";return{id:h,name:e.getDisplayText(),category:"file",iconDefault:r&&m&&!d&&!g.color&&!this.settings.showAllFileIcons?null:e.view.getIcon(),icon:t?null:g.icon??null,color:t?null:g.color??null,isActive:o,isRoot:r,isStacked:d,iconEl:i??null,tabEl:e.tabHeaderEl??null}}else{let l=this.settings.tabIcons[n]??{},h;switch(n){case"empty":h=!r||d||l.color?e.view.getIcon():null;break;case"release-notes":h=t?e.view.getIcon():"lucide-sparkle";break;default:h=e.view.getIcon();break}return{id:n,name:e.getDisplayText(),category:"tab",iconDefault:h,icon:t?null:l.icon??null,color:t?null:l.color??null,isActive:o,isRoot:r,isStacked:d,iconEl:i??null,tabEl:e.tabHeaderEl??null}}}getFileItems(e){let t=this.app.vault.getAllLoadedFiles(),i=t.find(n=>n.path==="/");return i&&t.remove(i),t.map(n=>this.defineFileItem(n,n.path,e))}getFileItem(e,t){let{path:i}=this.splitFilePath(e),n=this.app.vault.getAbstractFileByPath(i);return this.defineFileItem(n,e,t)}defineFileItem(e,t,i){let{filename:n,basename:o,extension:r}=this.splitFilePath(t),d=this.settings.fileIcons[t]??{},l=null;return e instanceof A.TFile&&(d.color||this.settings.showAllFileIcons)?r==="canvas"?l="lucide-layout-dashboard":r==="pdf"?l="lucide-file-text":ge.includes(r)?l="lucide-image":me.includes(r)?l="lucide-file-audio":l="lucide-file":e instanceof A.TFolder&&(d.color&&!this.settings.minimalFolderIcons||this.settings.showAllFolderIcons)&&(l="lucide-folder-closed"),{id:t,name:r==="md"?o:n,category:e instanceof A.TFolder?"folder":"file",iconDefault:i?null:l,icon:i?null:d.icon??null,color:i?null:d.color??null,items:e instanceof A.TFolder?e.children.map(h=>this.defineFileItem(h,h.path,i)):null}}splitFilePath(e=""){let i=Math.max(...["md","pdf"].map(m=>{let c=e.lastIndexOf(`.${m}#`);return c>-1?c+m.length+1:-1})),n=i>-1?e.substring(i,e.length):"",o=i>-1?e.substring(0,i):e,[,r="",d]=o.match(/^(.*\/)?(.*)$/s)??[],l=d.lastIndexOf("."),h=d.substring(l>-1?l+1:d.length)||"",g=d.substring(0,l>-1?l:d.length)||"";return{path:o,tree:r,filename:d,basename:g,extension:h,subpath:n}}getBookmarkItems(e){return(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]).map(i=>this.defineBookmarkItem(i,e))}getBookmarkItem(e,t,i){let o=this.flattenBookmarks(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]).find(r=>{switch(t){case"file":case"folder":return r.path+(r.subpath??"")===e;default:return r.ctime===e}})??{};return this.defineBookmarkItem(o,i)}defineBookmarkItem(e,t){let{path:i,filename:n,basename:o,extension:r}=this.splitFilePath(e.path),d=e.subpath??"",l,h,g,m=null;switch(e.type){case"file":{l=i+d,h=(r==="md"?o:n)+d,r==="canvas"?m="lucide-layout-dashboard":d.startsWith("#^")?m="lucide-toy-brick":d.startsWith("#")?m="lucide-heading":(m="lucide-file",t||(r==="pdf"?m="lucide-file-text":ge.includes(r)?m="lucide-image":me.includes(r)&&(m="lucide-file-audio"))),g=this.settings.fileIcons[l]??{};break}case"folder":{l=i,h=o,g=this.settings.fileIcons[l]??{},m="lucide-folder";break}case"group":{l=e.ctime,h=e.title,g=this.settings.bookmarkIcons[l]??{},(g.color&&!this.settings.minimalFolderIcons||this.settings.showAllFolderIcons)&&(m="lucide-folder-closed");break}case"search":{l=e.ctime,h=e.query,g=this.settings.bookmarkIcons[l]??{},m="lucide-search";break}case"graph":{l=e.ctime,h=e.title,g=this.settings.bookmarkIcons[l]??{},m="lucide-git-fork";break}case"url":{l=e.ctime,h=e.url,g=this.settings.bookmarkIcons[l]??{},m="lucide-globe-2";break}}return{id:l,name:h,category:e.type??"file",iconDefault:m,icon:t?null:g?.icon??null,color:t?null:g?.color??null,items:e.items?.map(c=>this.defineBookmarkItem(c,t))??null}}flattenBookmarks(e){let t=[];for(let i of e)t.push(i),i.items&&t.push(...this.flattenBookmarks(i.items));return t}getTagItems(e){return(Object.keys(this.app.metadataCache.getTags())??[]).map(n=>({id:n.replace("#",""),name:n})).map(n=>this.defineTagItem(n,e))}getTagItem(e,t){let i="#"+e;return(Object.keys(this.app.metadataCache.getTags())??[]).includes(i)?this.defineTagItem({id:e,name:i},t):null}defineTagItem(e,t){let i=this.settings.tagIcons[e.id]??{};return{id:e.id,name:e.name,category:"tag",iconDefault:null,icon:t?null:i.icon??null,color:t?null:i.color??null}}getPropertyItems(e){return(Object.values(this.app.metadataTypeManager?.properties)??[]).map(i=>this.definePropertyItem(i,e))}getPropertyItem(e,t){let n=(Object.values(this.app.metadataTypeManager?.properties)??[]).find(o=>o.name===e)??{};return this.definePropertyItem(n,t)}definePropertyItem(e,t){let i=this.settings.propertyIcons[e.name]??{},n;switch(e.widget??e.type){case"text":n="lucide-text";break;case"multitext":n="lucide-list";break;case"number":n="lucide-binary";break;case"checkbox":n="lucide-check-square";break;case"date":n="lucide-calendar";break;case"datetime":n="lucide-clock";break;case"aliases":n="lucide-forward";break;case"tags":n="lucide-tags";break;default:n="lucide-file-question";break}return{id:e.name,name:e.name,category:"property",iconDefault:n,icon:t?null:i.icon??null,color:t?null:i.color??null,type:e.widget??e.type??null}}getRibbonItems(e){return(this.app.workspace.leftRibbon.items??[]).map(i=>this.defineRibbonItem(i,e))}getRibbonItem(e,t){let i=this.app.workspace.leftRibbon.items?.find(n=>n?.id===e)??{};return this.defineRibbonItem(i,t)}defineRibbonItem(e,t){let i=this.settings.ribbonIcons[e.id]??{};return{id:e.id,name:e.title??null,category:"ribbon",iconDefault:e.icon??null,icon:t?null:i.icon??null,color:t?null:i.color??null,isHidden:e.hidden??!1,iconEl:e.buttonEl??null}}saveAppIcon(e,t,i){this.updateIconSetting(this.settings.appIcons,e.id,t,i),this.saveSettings()}saveTabIcon(e,t,i){this.updateIconSetting(this.settings.tabIcons,e.id,t,i),this.saveSettings()}saveFileIcon(e,t,i){let n=new Set,o=this.settings.fileIcons[e.id];t!==o?.icon&&n.add("icon"),i!==o?.color&&n.add("color"),this.updateIconSetting(this.settings.fileIcons,e.id,t,i),this.saveSettings(),this.ruleManager.triggerRulings("file",...n)}saveFileIcons(e,t,i){let n=new Set;for(let o of e){t!==void 0&&(o.icon=t),i!==void 0&&(o.color=i);let r=this.settings.fileIcons[o.id];t!==r?.icon&&n.add("icon"),i!==r?.color&&n.add("color"),this.updateIconSetting(this.settings.fileIcons,o.id,o.icon,o.color)}this.saveSettings(),this.ruleManager.triggerRulings("file",...n)}saveBookmarkIcon(e,t,i){let n=new Set;switch(e.category){case"file":case"folder":{let o=this.settings.fileIcons[e.id];t!==o?.icon&&n.add("icon"),i!==o?.color&&n.add("color"),this.updateIconSetting(this.settings.fileIcons,e.id,t,i)}default:this.updateIconSetting(this.settings.bookmarkIcons,e.id,t,i)}this.saveSettings(),this.ruleManager.triggerRulings("file",...n)}saveBookmarkIcons(e,t,i){let n=new Set;for(let o of e)switch(t!==void 0&&(o.icon=t),i!==void 0&&(o.color=i),o.category){case"file":case"folder":{let r=this.settings.fileIcons[o.id];t!==r?.icon&&n.add("icon"),i!==r?.color&&n.add("color"),this.updateIconSetting(this.settings.fileIcons,o.id,o.icon,o.color)}default:this.updateIconSetting(this.settings.bookmarkIcons,o.id,o.icon,o.color)}this.saveSettings(),this.ruleManager.triggerRulings("file",...n)}saveTagIcon(e,t,i){this.updateIconSetting(this.settings.tagIcons,e.id,t,i),this.saveSettings()}savePropertyIcon(e,t,i){this.updateIconSetting(this.settings.propertyIcons,e.id,t,i),this.saveSettings()}savePropertyIcons(e,t,i){for(let n of e)t!==void 0&&(n.icon=t),i!==void 0&&(n.color=i),this.updateIconSetting(this.settings.propertyIcons,n.id,n.icon,n.color);this.saveSettings()}saveRibbonIcon(e,t,i){this.updateIconSetting(this.settings.ribbonIcons,e.id,t,i),this.saveSettings()}updateIconSetting(e,t,i,n){i||n?(e[t]||(e[t]={}),i?e[t].icon=i:delete e[t].icon,n?e[t].color=n:delete e[t].color):delete e[t]}async loadSettings(){this.settings=Object.assign({},Dt,await this.loadData()),"groupIcons"in this.settings&&(Object.keys(this.settings.bookmarkIcons).length===0&&(this.settings.bookmarkIcons=this.settings.groupIcons??{}),delete this.settings.groupIcons)}async saveSettings(){this.pruneSettings(),this.settings.appIcons=Object.fromEntries(Object.entries(this.settings.appIcons).sort()),this.settings.tabIcons=Object.fromEntries(Object.entries(this.settings.tabIcons).sort()),this.settings.fileIcons=Object.fromEntries(Object.entries(this.settings.fileIcons).sort()),this.settings.bookmarkIcons=Object.fromEntries(Object.entries(this.settings.bookmarkIcons).sort()),this.settings.propertyIcons=Object.fromEntries(Object.entries(this.settings.propertyIcons).sort()),this.settings.ribbonIcons=Object.fromEntries(Object.entries(this.settings.ribbonIcons).sort()),await this.saveData(this.settings)}pruneSettings(){this.updateUnsyncedFiles();let e=this.app.internalPlugins?.plugins?.sync?.instance?.syncing===!0,t=this.app.internalPlugins?.plugins?.sync?.instance?.pause===!0;if(e||t||this.settings.rememberDeletedItems)return;let i=this.app.appId,n=this.flattenBookmarks(this.app.internalPlugins?.plugins?.bookmarks?.instance?.items??[]),o=this.app.metadataTypeManager?.properties??[],r=Object.entries(this.settings.fileIcons).filter(([d,l])=>l.unsynced?.every(h=>h===i)??!0);for(let[d]of r){let{path:l,subpath:h}=this.splitFilePath(d),g=h.replaceAll(/(?m.path===l&&m.subpath===g)&&delete this.settings.fileIcons[d]:delete this.settings.fileIcons[d]}if(n.length>0){let d=n.filter(l=>l.type!=="file"&&l.type!=="folder").map(l=>l.ctime.toString());for(let l in this.settings.bookmarkIcons)d.includes(l)||delete this.settings.bookmarkIcons[l]}if(o.length>0){let d=Object.keys(o);for(let l in this.settings.propertyIcons)d.includes(l)||delete this.settings.propertyIcons[l]}}updateUnsyncedFiles(){let e=this.app.appId,t=this.app.internalPlugins?.plugins?.sync?.instance?.ignoreFolders??[],i=Ft.filter(n=>!this.app.internalPlugins?.plugins?.sync?.instance?.allowTypes.has(n));for(let[n,o]of Object.entries(this.settings.fileIcons)){Array.isArray(o.unsynced)||delete o.unsynced;let{extension:r}=this.splitFilePath(n);t.some(l=>l===n||n.startsWith(l+"/"))||i.includes("unsupported")&&!Pt.includes(r)||i.includes("image")&&ge.includes(r)||i.includes("audio")&&me.includes(r)||i.includes("video")&&Ge.includes(r)||i.includes("pdf")&&r==="pdf"?(o.unsynced=o.unsynced??[],o.unsynced.includes(e)||o.unsynced.push(e)):(o.unsynced?.includes(e)&&o.unsynced?.remove(e),o.unsynced?.length===0&&delete o.unsynced)}}onunload(){this.menuManager.unload(),this.ruleManager.unload(),this.appIconManager?.unload(),this.tabIconManager?.unload(),this.fileIconManager?.unload(),this.bookmarkIconManager?.unload(),this.tagIconManager?.unload(),this.propertyIconManager?.unload(),this.editorIconManager?.unload(),this.ribbonIconManager?.unload(),this.quickSwitcherIconManager?.unload(),this.refreshBodyClasses(!0)}}; /* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/iconic/manifest.json b/.obsidian/plugins/iconic/manifest.json index 9fc740d..a662254 100644 --- a/.obsidian/plugins/iconic/manifest.json +++ b/.obsidian/plugins/iconic/manifest.json @@ -1,9 +1,9 @@ { "id": "iconic", "name": "Iconic", - "version": "1.1.0", + "version": "1.1.2", "minAppVersion": "1.6.0", - "description": "Customize your icons and their colors directly from the UI, including tabs, files, bookmarks, tags, properties, and ribbon commands.", + "description": "Customize your icons and their colors directly from the UI, including tabs, files & folders, bookmarks, tags, properties, and ribbon commands.", "author": "Holo", "authorUrl": "https://github.com/gfxholo", "isDesktopOnly": false diff --git a/.obsidian/plugins/iconic/styles.css b/.obsidian/plugins/iconic/styles.css index 354a34c..8455bc8 100644 --- a/.obsidian/plugins/iconic/styles.css +++ b/.obsidian/plugins/iconic/styles.css @@ -15,7 +15,9 @@ body { } /* RGB converter */ -.iconic-rgb-converter { display: none; } +.iconic-rgb-converter { + display: none; +} /* Window controls */ .titlebar-button.iconic-icon { @@ -23,7 +25,7 @@ body { } /* Tabs */ -.workspace .mod-root .workspace-tab-header[data-type="markdown"] .workspace-tab-header-inner-icon, +.iconic-markdown-tab-icons .workspace .mod-root .workspace-tab-header[data-type="markdown"] .workspace-tab-header-inner-icon, .workspace .mod-root .workspace-tab-header[data-type="empty"] .workspace-tab-header-inner-icon { display: flex; } @@ -119,17 +121,73 @@ a.tag { cursor: var(--cursor-link); } +/* Quick Switcher */ +.iconic-quick-switcher .iconic-icon { + height: var(--icon-size); +} +.iconic-quick-switcher .prompt-input { + padding-inline-start: calc(var(--icon-size) + var(--size-4-8)); +} +.iconic-quick-switcher .suggestion-item { + align-items: center; +} +.iconic-quick-switcher .suggestion-content { + padding-inline-start: calc(var(--icon-size) + var(--size-4-2)); +} +.iconic-quick-switcher .iconic-icon + .suggestion-content { + padding-inline-start: var(--size-4-2); +} + +/* Another Quick Switcher */ +.iconic-another-quick-switcher .iconic-icon { + height: var(--icon-size); +} +.iconic-another-quick-switcher .another-quick-switcher__item { + flex-direction: row; + padding-inline-start: var(--size-4-5); +} +.iconic-another-quick-switcher .another-quick-switcher__starred_item, +.iconic-another-quick-switcher .another-quick-switcher__phantom_item { + padding-inline-start: var(--size-4-3); +} +.iconic-another-quick-switcher .another-quick-switcher__item > .another-quick-switcher__item__entry { + padding-inline-start: calc(var(--icon-size) + var(--size-4-2)); +} +.iconic-another-quick-switcher .another-quick-switcher__item > .iconic-icon + .another-quick-switcher__item__entry { + padding-inline-start: var(--size-4-2); +} +.iconic-another-quick-switcher .another-quick-switcher__starred_item > .another-quick-switcher__item__entry, +.iconic-another-quick-switcher .another-quick-switcher__phantom_item > .another-quick-switcher__item__entry { + padding-inline-start: calc(var(--icon-size) + var(--size-4-2)); +} +.iconic-another-quick-switcher .another-quick-switcher__item::before { + margin-left: -1rem; + margin-right: var(--size-4-2); +} + /* Icon picker */ .is-mobile .mod-confirmation > .modal.iconic-icon-picker { background-color: var(--modal-background); } -.iconic-icon-picker .callout + .setting-item { border-top: none; } +.iconic-icon-picker .callout + .setting-item { + border-top: none; +} .iconic-icon-picker .setting-item-control input[type="color"] { height: auto; width: auto; } -.iconic-icon-picker .setting-item-control input[type="text"] { width: 100%; } -.iconic-icon-picker .setting-item-control .search-input-container { width: 100%; } +.iconic-icon-picker .setting-item-control input[type="text"] { + width: 100%; +} +.iconic-icon-picker .setting-item-control .search-input-container { + width: 100%; +} +.iconic-icon-picker .extra-setting-button:focus-visible { + box-shadow: none; + opacity: var(--icon-opacity-hover); + color: var(--icon-color-hover); + background-color: var(--background-modifier-hover); +} .theme-dark .iconic-icon-picker .iconic-mode-selected { color: var(--interactive-accent-hover); } @@ -149,11 +207,24 @@ a.tag { } /* Search results container */ -.iconic-search-results { overflow-x: scroll; } -.iconic-search-results > .setting-item-info { display: none; } -.iconic-search-results > .setting-item-control { justify-content: center; } -.is-phone .iconic-search-results { flex-direction: row !important; } -.is-phone .iconic-search-results > .setting-item-control { width: auto !important; } +.iconic-search-results { + overflow-x: scroll; +} +.iconic-search-results > .setting-item-info { + display: none; +} +.iconic-search-results > .setting-item-control { + justify-content: center; +} +.iconic-search-results:focus-visible { + box-shadow: 0 0 0 2px var(--background-modifier-border-focus); +} +.is-phone .iconic-search-results { + flex-direction: row !important; +} +.is-phone .iconic-search-results > .setting-item-control { + width: auto !important; +} /* Search result */ .iconic-search-result > * { @@ -205,10 +276,14 @@ a.tag { .iconic-add > .setting-item-control { justify-content: flex-start; } -.drag-reorder-ghost > .iconic-rule, -.drag-reorder-ghost > .iconic-condition { +.drag-reorder-ghost .iconic-rule, +.drag-reorder-ghost .iconic-condition { padding: 0.75em 0; } +.mod-rtl .drag-reorder-ghost .iconic-rule, +.mod-rtl .drag-reorder-ghost .iconic-condition { + direction: rtl; +} .iconic-rule-picker .drag-ghost-hidden + .setting-item, .iconic-rule-editor .drag-ghost-hidden + .setting-item { border-top-color: transparent; @@ -218,7 +293,13 @@ a.tag { .is-mobile .mod-confirmation > .modal.iconic-rule-editor { background-color: var(--modal-background); } -.iconic-rule-editor .setting-item:first-child input[type="text"] { width: 100%; } +.iconic-rule-editor .setting-item:first-child input[type="text"] { + width: 100%; +} +.setting-item-control > .iconic-button-selected { + color: var(--text-on-accent); + background-color: var(--interactive-accent); +} .iconic-condition input[type="time"] { border: var(--input-border-width) solid var(--background-modifier-border); border-radius: var(--input-radius); @@ -237,7 +318,9 @@ a.tag { width: 0; flex: 1 1 fit-content; } -.iconic-condition .iconic-control-column > input { height: var(--input-height); } +.iconic-condition .iconic-control-column > input { + height: var(--input-height); +} .iconic-condition .iconic-control-column { display: flex; flex-direction: column; @@ -265,6 +348,7 @@ a.tag { } .iconic-match { padding: var(--size-4-1); + white-space: nowrap; } .iconic-highlight-tree .iconic-match-tree, .iconic-highlight-name .iconic-match-name, @@ -273,11 +357,17 @@ a.tag { } /* Indicators */ -.iconic-indicator { pointer-events: none; } +.iconic-indicator { + pointer-events: none; +} /* Invisibility */ -.iconic-invisible { visibility: hidden; } -.is-phone .iconic-reset-color.iconic-invisible { display: none; } +.iconic-invisible { + visibility: hidden; +} +.is-phone .iconic-reset-color.iconic-invisible { + display: none; +} /* Colorless settings */ .iconic-uncolor-hover .workspace-tab-header:hover .iconic-icon > .svg-icon, @@ -311,21 +401,6 @@ a.tag { display: flex; } -/* Theme: Border */ -.iconic-theme-border .workspace-leaf-content:is([data-type="file-explorer"], [data-type="bookmarks"]) .nav-file-title::before { - display: none; -} -.iconic-theme-border .workspace-leaf-content:is([data-type="file-explorer"], [data-type="bookmarks"]) .tree-item > .tree-item-self.mod-collapsible > .collapse-icon { - -webkit-mask-image: none; - background-color: transparent; -} -.iconic-theme-border .workspace-leaf-content:is([data-type="file-explorer"], [data-type="bookmarks"]) .tree-item-self.mod-collapsible > .collapse-icon > .svg-icon { - color: unset; -} -.iconic-theme-border .workspace-leaf-content[data-type="file-explorer"] .tree-item > .tree-item-self:is(.nav-file-title, .nav-folder.mod-root > .nav-folder-title)::before { - display: none; -} - /* Theme: Catppuccin */ .iconic-theme-cat .workspace-leaf-content[data-type="file-explorer"] .nav-folder-title-content::before { display: none; @@ -401,6 +476,11 @@ a.tag { display: flex; } +/* Theme: Minimal Edge */ +.iconic-theme-medge .tree-item-self .tree-item-icon { + display: unset; +} + /* Theme: Sanctum */ .iconic-theme-sanctum .workspace-leaf-content[data-type="file-explorer"] .nav-folder-title:has(.iconic-sidekick) > .nav-folder-title-content::before { display: none; @@ -431,18 +511,6 @@ a.tag { display: none; } -/* Theme: Shimmering Focus */ -.iconic-theme-shimmer :is(.style-settings-collapse-indicator, .collapse-icon) > .svg-icon.svg-icon.svg-icon.svg-icon { - width: var(--icon-xs); - stroke-width: var(--icon-xs-stroke-width); - height: unset; - margin-left: unset; -} -.iconic-theme-shimmer.iconic-bigger-icons :is(.style-settings-collapse-indicator, .collapse-icon) > .svg-icon.svg-icon.svg-icon.svg-icon { - width: var(--icon-s); - stroke-width: var(--icon-s-stroke-width); -} - /* Theme: Sodalite */ .iconic-theme-sodalite .workspace-leaf-content[data-type="file-explorer"] .nav-files-container { padding-inline-start: var(--size-4-3); diff --git a/.obsidian/plugins/lazy-plugins/main.js b/.obsidian/plugins/lazy-plugins/main.js index c843d00..5bdbbc8 100644 --- a/.obsidian/plugins/lazy-plugins/main.js +++ b/.obsidian/plugins/lazy-plugins/main.js @@ -30,7 +30,7 @@ var require_manifest = __commonJS({ module2.exports = { id: "lazy-plugins", name: "Lazy Plugin Loader", - version: "1.0.18", + version: "1.0.21", minAppVersion: "1.6.0", description: "Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time.", author: "Alan Grainger", @@ -58,6 +58,7 @@ var DEFAULT_DEVICE_SETTINGS = { // milliseconds defaultStartupType: null, showDescriptions: true, + enableDependencies: false, plugins: {} }; var DEFAULT_SETTINGS = { @@ -75,12 +76,15 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { constructor(app, plugin) { super(app, plugin); this.dropdowns = []; + this.pluginSettings = {}; this.app = app; this.lazyPlugin = plugin; + this.pluginSettings = this.lazyPlugin.settings.plugins; } async display() { const { containerEl } = this; this.containerEl = containerEl; + this.lazyPlugin.updateManifests(); await this.lazyPlugin.loadSettings(); this.buildDom(); } @@ -88,7 +92,6 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { * Build the Settings modal DOM elements */ buildDom() { - const pluginSettings = this.lazyPlugin.settings.plugins; this.containerEl.empty(); new import_obsidian.Setting(this.containerEl).setName("Separate desktop/mobile configuration").setDesc(`Enable this if you want to have different settings depending whether you're using a desktop or mobile device. All of the settings below can be configured differently on desktop and mobile. You're currently using the ${this.lazyPlugin.device} settings.`).addToggle((toggle) => { toggle.setValue(this.lazyPlugin.data.dualConfigs).onChange(async (value) => { @@ -128,7 +131,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { this.addDelayOptions(dropdown); dropdown.onChange(async (value) => { this.lazyPlugin.manifests.forEach((plugin) => { - pluginSettings[plugin.id] = { startupType: value }; + this.pluginSettings[plugin.id] = { startupType: value }; }); this.dropdowns.forEach((dropdown2) => dropdown2.setValue(value)); dropdown.setValue(""); @@ -139,11 +142,22 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { this.addFilterButton(setting.descEl, "All"); Object.keys(LoadingMethods).forEach((key) => this.addFilterButton(setting.descEl, LoadingMethods[key], key)); }); + new import_obsidian.Setting(this.containerEl).addText((text) => text.setPlaceholder("Type to filter list").onChange((value) => { + this.filterString = value; + this.buildPluginList(); + })); + this.pluginListContainer = this.containerEl.createEl("div"); + this.buildPluginList(); + } + buildPluginList() { + this.pluginListContainer.textContent = ""; this.lazyPlugin.manifests.forEach((plugin) => { const currentValue = this.lazyPlugin.getPluginStartup(plugin.id); - if (this.filter && currentValue !== this.filter) + if (this.filterMethod && currentValue !== this.filterMethod) return; - new import_obsidian.Setting(this.containerEl).setName(plugin.name).addDropdown((dropdown) => { + if (this.filterString && !plugin.name.toLowerCase().includes(this.filterString.toLowerCase())) + return; + new import_obsidian.Setting(this.pluginListContainer).setName(plugin.name).addDropdown((dropdown) => { this.dropdowns.push(dropdown); this.addDelayOptions(dropdown); dropdown.setValue(currentValue).onChange(async (value) => { @@ -172,8 +186,8 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { const link = el.createEl("button", { text }); link.addClass("lazy-plugin-filter"); link.onclick = () => { - this.filter = value; - this.buildDom(); + this.filterMethod = value; + this.buildPluginList(); }; } }; @@ -188,8 +202,7 @@ var LazyPlugin = class extends import_obsidian2.Plugin { } async onload() { await this.loadSettings(); - this.manifests = Object.values(this.app.plugins.manifests).filter((plugin) => plugin.id !== lazyPluginId && // Filter out the Lazy Loader plugin - !(import_obsidian2.Platform.isMobile && plugin.isDesktopOnly)).sort((a, b) => a.name.localeCompare(b.name)); + this.updateManifests(); await this.setInitialPluginsConfiguration(); this.addSettingTab(new SettingsTab(this.app, this)); this.manifests.forEach((plugin) => this.setPluginStartup(plugin.id)); @@ -247,7 +260,7 @@ var LazyPlugin = class extends import_obsidian2.Plugin { this.data.desktop = Object.assign({}, DEFAULT_DEVICE_SETTINGS, this.data.desktop); if (this.data.dualConfigs && import_obsidian2.Platform.isMobile) { if (!this.data.mobile) { - this.data.mobile = Object.assign({}, this.data.desktop); + this.data.mobile = JSON.parse(JSON.stringify(this.data.desktop)); } else { this.data.mobile = Object.assign({}, DEFAULT_DEVICE_SETTINGS, this.data.mobile); } @@ -281,6 +294,13 @@ var LazyPlugin = class extends import_obsidian2.Plugin { this.settings.plugins[pluginId] = { startupType }; await this.saveSettings(); } + updateManifests() { + this.manifests = Object.values(this.app.plugins.manifests).filter((plugin) => ( + // Filter out the Lazy Loader plugin + plugin.id !== lazyPluginId && // Filter out desktop-only plugins from mobile + !(import_obsidian2.Platform.isMobile && plugin.isDesktopOnly) + )).sort((a, b) => a.name.localeCompare(b.name)); + } /* * Originally this was set up so that when the plugin unloaded, it would enablePluginAndSave() * the other plugins based on their Lazy Loader startup config. diff --git a/.obsidian/plugins/lazy-plugins/manifest.json b/.obsidian/plugins/lazy-plugins/manifest.json index d4fd569..f4bf8eb 100644 --- a/.obsidian/plugins/lazy-plugins/manifest.json +++ b/.obsidian/plugins/lazy-plugins/manifest.json @@ -1,7 +1,7 @@ { "id": "lazy-plugins", "name": "Lazy Plugin Loader", - "version": "1.0.18", + "version": "1.0.21", "minAppVersion": "1.6.0", "description": "Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time.", "author": "Alan Grainger", diff --git a/.obsidian/plugins/lineage/data.json b/.obsidian/plugins/lineage/data.json index 2658c93..fc5f6a5 100644 --- a/.obsidian/plugins/lineage/data.json +++ b/.obsidian/plugins/lineage/data.json @@ -2,8 +2,8 @@ "documents": { "Campagnes/Absolue Nécessité/AN-0.md": { "documentFormat": "sections", - "viewType": "markdown", - "activeSection": "2.1.1.1", + "viewType": "lineage", + "activeSection": "2", "pinnedSections": { "sections": [] } @@ -13,8 +13,10 @@ "viewType": "lineage", "activeSection": "1", "pinnedSections": { - "sections": [], - "activeSection": null + "sections": [] + }, + "outline": { + "collapsedSections": [] } }, "Campagnes/Absolue Nécessité/Personnages/Althéa.md": { @@ -59,12 +61,21 @@ "outlineMode": false, "nodeIndentationWidth": 160, "maintainEditMode": false, - "alwaysShowCardButtons": false + "alwaysShowCardButtons": false, + "h1FontSize_em": 1.802, + "hiddenVerticalToolbarButtons": [] }, "general": { - "defaultDocumentFormat": "outline" + "defaultDocumentFormat": "outline", + "linkPaneType": "tab" }, "styleRules": { - "documents": {} + "documents": {}, + "global": { + "rules": [] + }, + "settings": { + "activeTab": "global-rules" + } } } \ No newline at end of file diff --git a/.obsidian/plugins/lineage/main.js b/.obsidian/plugins/lineage/main.js index 833e77f..3d054ac 100644 --- a/.obsidian/plugins/lineage/main.js +++ b/.obsidian/plugins/lineage/main.js @@ -123,10 +123,10 @@ __export(main_exports, { default: () => Lineage }); module.exports = __toCommonJS(main_exports); -var import_obsidian45 = require("obsidian"); +var import_obsidian41 = require("obsidian"); // src/view/view.ts -var import_obsidian37 = require("obsidian"); +var import_obsidian34 = require("obsidian"); // node_modules/svelte/src/runtime/internal/utils.js function noop() { @@ -666,7 +666,7 @@ function outro_and_destroy_block(block, lookup) { lookup.delete(block.key); }); } -function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block18, next, get_context) { +function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block22, next, get_context) { let o = old_blocks.length; let n = list.length; let i = o; @@ -683,7 +683,7 @@ function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, looku const key = get_key(child_ctx); let block = lookup.get(key); if (!block) { - block = create_each_block18(key, child_ctx); + block = create_each_block22(key, child_ctx); block.c(); } else if (dynamic) { updates.push(() => block.p(child_ctx, dirty)); @@ -842,7 +842,7 @@ function make_dirty(component, i) { } component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init(component, options, instance111, create_fragment114, not_equal, props, append_styles2 = null, dirty = [-1]) { +function init(component, options, instance123, create_fragment125, not_equal, props, append_styles2 = null, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { @@ -868,7 +868,7 @@ function init(component, options, instance111, create_fragment114, not_equal, pr }; append_styles2 && append_styles2($$.root); let ready = false; - $$.ctx = instance111 ? instance111(component, options.props || {}, (i, ret, ...rest) => { + $$.ctx = instance123 ? instance123(component, options.props || {}, (i, ret, ...rest) => { const value = rest.length ? rest[0] : ret; if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { if (!$$.skip_bound && $$.bound[i]) @@ -881,7 +881,7 @@ function init(component, options, instance111, create_fragment114, not_equal, pr $$.update(); ready = true; run_all($$.before_update); - $$.fragment = create_fragment114 ? create_fragment114($$.ctx) : false; + $$.fragment = create_fragment125 ? create_fragment125($$.ctx) : false; if (options.target) { if (options.hydrate) { start_hydrating(); @@ -1173,85 +1173,101 @@ var lang = { cmd_create_new_document: "Create new document", ocm_new_document: "New document", ocm_import_from_gingko: "Import from Gingko", - // add cards - hk_add_below_and_split: "Add card below and split at cursor", - card_btn_add_card_below: "Add card below", - hk_add_above_and_split: "Add card above and split at cursor", - card_btn_add_card_above: "Add card above", - hk_add_child_and_split: "Add child card and split at cursor", - card_btn_add_child_card: "Add child card", - hkg_create_cards: "Create cards", - modals_snapshots_created_card: "Created card ", + // add sections + hk_add_below_and_split: "Add section after and split at cursor", + card_btn_add_node_below: "Add section after", + hk_add_above_and_split: "Add section before and split at cursor", + card_btn_add_node_above: "Add section before", + hk_add_parent_sibling: "Add section after parent", + hk_add_child_and_split: "Add subsection and split at cursor", + card_btn_add_child_node: "Add subsection", + hkg_create_nodes: "Create", + modals_snapshots_created_node: "Created section ", // edit - settings_general_maintain_edit_mode: "Maintain edit mode", - settings_general_maintain_edit_mode_desc: "Keeps edit mode active when switching to a different card using the mouse or keyboard", + settings_general_maintain_edit_mode: "Maintain editing mode", + settings_general_maintain_edit_mode_desc: "Maintain editing mode when switching to a different card using the mouse or keyboard", card_btn_edit: "Edit", - hk_enable_edit_mode: "Edit card", - hk_enable_edit_mode_and_place_cursor_at_start: "Edit card and place cursor at the start", - hk_enable_edit_mode_and_place_cursor_at_end: "Edit card and place cursor at the end", - hkg_edit_cards: "Edit cards", - modals_snapshots_updated_card: "Updated card ", + hk_enable_edit_mode: "Edit section", + hk_enable_edit_mode_and_place_cursor_at_start: "Edit section and place cursor at the start", + hk_enable_edit_mode_and_place_cursor_at_end: "Edit section and place cursor at the end", + hkg_edit_nodes: "Edit", + modals_snapshots_updated_node: "Updated section ", modal_hk_editor_state_on: "Enable only when the editor is active", modal_hk_editor_state_off: "Enable only when the editor is inactive", - modal_hk_editor_state_both: "Enable regardless of the editor's state", + modal_hk_editor_state_both: "Enable regardless of the editor state", // save card_btn_save: "Save", - hk_save_changes: "Save changes and exit card", + hk_save_changes: "Save changes and exit editor", hk_disable_edit_mode: "Cancel changes", // delete card_btn_delete: "Delete", - hk_delete_card: "Delete card", - error_delete_last_node: "Cannot delete this card", - hkg_delete_cards: "Delete cards", - modals_snapshots_deleted_card: "Deleted card ", - // copy + hk_delete_section: "Delete section", + error_delete_last_node: "Cannot delete this section", + hkg_delete_nodes: "Delete", + modals_snapshots_deleted_section: "Deleted section ", + // clipboard cm_copy: "Copy", cm_copy_branches: "Copy branches", cm_copy_branch: "Copy branch", - cm_copy_branches_wo_formatting: "Copy branches without formatting", - cm_copy_branch_wo_formatting: "Copy branch without formatting", - cm_copy_section_wo_subitems: "Copy sections without sub-items", - cm_copy_sections_wo_subitems: "Copy section without sub-items", + cm_copy_branches_wo_formatting: "Copy branches as plain text", + cm_copy_branch_wo_formatting: "Copy branch as plain text", + cm_copy_node_wo_subitems: "Copy sections", + cm_copy_nodes_wo_subitems: "Copy section", hk_copy_node: "Copy branch", - hk_copy_node_unformatted: "Copy branch without formatting", - hk_copy_node_without_subitems: "Copy without subitems", + hk_copy_node_unformatted: "Copy branch as plain text", + hk_copy_node_without_subitems: "Copy section", cm_copy_link_to_block: "Copy link to block", + toolbar_copy_search_results: "Copy search results", + toolbar_copy_search_results_wo_subitems: "Copy search results without sub-items", + toolbar_cut_search_results: "Cut search results", hkg_clipboard: "Clipboard", - hk_notice_copy: (size, formatted, type) => { - if (size === 0) - return null; - return type === "branch" ? size === 1 ? formatted ? null : "Unformatted branch copied to clipboard" : formatted ? `${size} branches copied to clipboard` : `${size} unformatted branches copied to clipboard` : size === 1 ? null : size + " sections copied to clipboard"; - }, - // cut paste - cm_cut: "Cut branch", + modals_snapshots_cut_section: "Cut section ", + cm_cut: "Cut", hk_cut_node: "Cut branch", cm_paste: "Paste", hk_paste_node: "Paste branch", - modals_snapshots_cut_card: "Cut card ", - modals_snapshots_pasted_card: "Pasted card ", + modals_snapshots_pasted_section: "Pasted section ", error_cant_paste: "Paste command failed. Try pasting directly into a card", + /*hk_notice_copy: ( + size: number, + formatted: boolean, + type: 'branch' | 'section', + ) => { + if (size === 0) return null; + return type === 'branch' + ? size === 1 + ? formatted + ? null + : 'Unformatted branch copied to clipboard' + : formatted + ? `${size} branches copied to clipboard` + : `${size} unformatted branches copied to clipboard` + : size === 1 + ? null + : size + ' sections copied to clipboard'; + },*/ // merge cm_merge_above: "Merge with branch above", cm_merge_below: "Merge with branch below", hk_merge_with_node_above: "Merge with branch above", hk_merge_with_node_below: "Merge with branch below", - error_hk_cant_merge_multiple_nodes: "Cannot merge multiple cards", - hkg_merge_cards: "Merge cards", - modals_snapshots_merged_card: "Merged card ", + error_hk_cant_merge_multiple_nodes: "Cannot merge multiple branches", + hkg_merge_nodes: "Merge", + modals_snapshots_merged_node: "Merged section ", // move hk_move_node_up: "Move branch up", hk_move_node_down: "Move branch down", hk_move_node_right: "Move branch right", hk_move_node_left: "Move branch left", - hkg_move_cards: "Move cards", - modals_snapshots_moved_card: "Moved branch ", + hkg_move_nodes: "Move", + modals_snapshots_moved_node: "Moved section ", // dnd - modals_snapshots_dropped_card: "Dropped card ", + modals_snapshots_dropped_node: "Dropped section ", // split - cm_split_card: "Split card", - error_cm_cant_split_card_that_has_children: "Cannot split a card that has children", - error_cm_cant_split_card_identical: "The result is the same as the input", - modals_snapshots_split_card: "Split card ", + cm_split_node: "Split section", + error_cm_cant_split_node_that_has_children: "Cannot split a section that has sub-items", + error_cm_cant_split_node_identical: "The result is the same as the input", + modals_snapshots_split_node: "Split section ", // undo controls_history: "History", controls_history_undo: "Undo", @@ -1263,13 +1279,20 @@ var lang = { // extract cmd_extract_branch: "Extract branch to a new document", cm_extract_branch: "Extract branch", - modals_snapshots_extracted_card: "Extracted card ", + cm_extract_section: "Extract section", + modals_snapshots_extracted_node: "Extracted section ", // export cm_export_document: "Export document", - cm_export_column: "Export column", + cm_eject_document: "Eject document", + cm_export_selection: "Export", + cm_export_section: "Export section", + cm_export_branch_with_subitems: "Export branch", + cm_export_branch_wo_subitems: "Export section", + cmd_export_branches_with_subitems: "Export branches", + cmd_export_nodes_wo_subitems: "Export sections", // document format settings_general_default_format: "Default format", - settings_general_default_format_desc: "Applies to new documents", + cm_document_format: "Document format", settings_format_html_elements: "HTML elements (experimental)", settings_format_html_comments: "HTML comments", settings_format_outline: "Outline", @@ -1281,7 +1304,7 @@ var lang = { modals_snapshots_formatted_headings: "Formatted headings", // search tlb_search_toggle: "Toggle search input", - tlb_search_show_all_cards: "Show all cards", + tlb_search_show_all_nodes: "Show all sections", tlb_search_fuzzy_search: "Fuzzy search", tlb_search_previous_result: "Previous result", tlb_search_next_result: "Next result", @@ -1295,10 +1318,11 @@ var lang = { hk_extend_select_to_end_of_group: "Extend selection to end of group", hk_extend_select_to_start_of_column: "Extend selection to start of column", hk_extend_select_to_end_of_column: "Extend selection to end of column", - hkg_selection: "Selection", + hkg_selection: "Select", + hk_select_all: "Select all sections", // navigate spatially - hk_navigate_to_next_node: "Select next card", - hk_navigate_to_previous_node: "Select previous card", + hk_navigate_to_next_node: "Select next section", + hk_navigate_to_previous_node: "Select previous section", hk_go_up: "Go up", hk_go_down: "Go down", hk_go_right: "Go right", @@ -1307,8 +1331,8 @@ var lang = { hk_go_to_end_of_group: "Go to end of group", hk_go_to_beginning_of_column: "Go to start of column", hk_go_to_end_of_column: "Go to end of column", - hk_select_parent: "Select parent card", - hkg_navigation: "Navigation", + hk_select_parent: "Select parent section", + hkg_navigation: "Navigate", hk_select_previous_sibling: "Select previous sibling", hk_select_next_sibling: "Select next sibling", // navigate node history @@ -1320,7 +1344,7 @@ var lang = { controls_zoom_in: "Zoom in", controls_zoom_out: "Zoom out", controls_zoom_reset: "Reset (hold shift to undo)", - controls_zoom_presets: "", + controls_zoom_presets: "Zoom menu", hk_zoom_in: "Zoom in", hk_zoom_out: "Zoom out", hk_zoom_reset: "Reset zoom", @@ -1330,18 +1354,19 @@ var lang = { hk_scroll_right: "Scroll right", hk_scroll_up: "Scroll up", hk_scroll_down: "Scroll down", - hk_align_branch: "Align active branch", + hk_align_branch: "Center active branch", controls_toggle_scrolling_mode_horizontal: "Always center active card horizontally", controls_toggle_scrolling_mode_vertical: "Always center active card vertically", cmd_toggle_horizontal_scrolling_mode: `Toggle 'always center active card horizontally'`, cmd_toggle_vertical_scrolling_mode: `Toggle 'always center active card vertically'`, - card_btn_scroll_to_reveal: "Scroll to reveal", - hkg_scrolling: "Align branch", + card_btn_scroll_to_reveal: "Reveal", + hkg_scrolling: "Scroll", // theme settings_theme_bg: "Background color", settings_theme_active_branch_bg: "Active branch background color", settings_theme_active_branch_color: "Active branch text color", settings_appearance_font_size: "Font size", + settings_appearance_headings_font_size: "Headings font size (em)", settings_appearance_inactive_node_opacity: "Inactive cards opacity", // layout settings_layout_card_width: "Card width", @@ -1350,45 +1375,61 @@ var lang = { settings_always_show_card_buttons_desc: "Show card buttons on all cards, not just the active one", // outline settings_layout_indentation_width: "Card indentation", - settings_layout_indentation_width_desc: "Applicable in 'outline mode'", controls_single_column: "Outline mode", hk_toggle_outline_mode: `Toggle outline mode`, - card_btn_collapse_card: "Collapse", - card_btn_expand_card: "Expand", - hk_outline_toggle_collapse: "Collapse/expand card", - hk_outline_toggle_collapse_all: "Collapse/expand all cards", + card_btn_collapse_node: "Collapse", + card_btn_expand_node: "Expand", + hk_outline_toggle_collapse: "Collapse/expand section", + hk_outline_toggle_collapse_all: "Collapse/expand all sections", hkg_outline: "Outline", + // toolbar + settings_vertical_toolbar_icons: "Vertical toolbar buttons", + settings_vertical_toolbar_icons_desc: "Configure what buttons appear in the vertical toolbar", // space between cards controls_gap_between_cards: "Space between cards", cmd_space_between_cards: `Toggle 'space between cards'`, settings_layout_space_between_cards: "Space between cards", - settings_layout_space_between_cards_desc: "Applicable when spaces are enabled", // sidebar toolbar_toggle_left_sidebar: "Left sidebar", controls_toggle_minimap: "Document minimap", cmd_toggle_minimap: "Toggle document minimap", cmd_toggle_left_sidebar: "Toggle left sidebar", - // recent cards - sidebar_tab_recent_cards: "Recent cards", - sidebar_no_recent_cards: "No recent cards", - // pin cards + // recent sections + sidebar_tab_recent_nodes: "Recently selected sections", + sidebar_no_recent_nodes: "No recent sections", + // pin sections cm_unpin_from_left_sidebar: "Unpin from left sidebar", cm_pin_in_left_sidebar: "Pin in left sidebar", - cmd_toggle_pin_in_left_sidebar: `Toggle 'pin card in left sidebar'`, - sidebar_tab_pinned_cards: "Pinned cards", - sidebar_no_pinned_cards: "No pinned cards", + cmd_toggle_pin_in_left_sidebar: `Toggle 'pin section in left sidebar'`, + sidebar_tab_pinned_nodes: "Pinned sections", + sidebar_no_pinned_nodes: "No pinned sections", // rules - modals_rules_add_rule: "Add rule", + modals_rules_add_rule: "New rule", modals_rules_no_rules: "No rules", - controls_rules: "Rule-based styles", + controls_rules: "Card style rules", modals_rules_matches: "Number of matches", modals_rules_drag_handle: "Change priority", + modals_rules_tab_global_rules: "Global rules", + modals_rules_tab_document_rules: "Document rules", + modals_rules_rule_cm_move_to_document: "Move to document rules", + modals_rules_rule_cm_move_to_global: "Move to global rules", + // sort + cmd_sort_child_nodes_asc: "Sort subsections: ascending order", + cmd_sort_child_nodes_desc: "Sort subsections: descending order", + cm_sort_child: "Sort subsections", + cm_sort_child_nodes_asc: "Ascending order", + cm_sort_child_nodes_desc: "Descending order", + modals_snapshots_sorted_child_nodes: "Sorted subsections of section ", // settings controls_settings: "Settings", controls_toggle_bar: "Toggle controls bar", settings_appearance: "Appearance", settings_layout: "Layout", settings_reset: "Reset", + // general settings + settings_general_link_split: "Open in new split", + settings_general_link_tab: "Open in new tab", + settings_general_link_behavior: "Default link behavior", // hotkeys modals_hk_input_placeholder: "Filter", modals_hk_editor_cancel: "Cancel", @@ -1764,7 +1805,7 @@ var Icon = class extends SvelteComponent { }; var Icon_default = Icon; -// node_modules/lucide-svelte/dist/icons/arrow-left.svelte +// node_modules/lucide-svelte/dist/icons/arrow-down-wide-narrow.svelte function create_default_slot(ctx) { let current; const default_slot_template = ( @@ -1834,7 +1875,7 @@ function create_fragment2(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "arrow-left" }, + { name: "arrow-down-wide-narrow" }, /*$$props*/ ctx[1], { iconNode: ( @@ -1896,7 +1937,13 @@ function create_fragment2(ctx) { } function instance2($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "m12 19-7-7 7-7" }], ["path", { "d": "M19 12H5" }]]; + const iconNode = [ + ["path", { "d": "m3 16 4 4 4-4" }], + ["path", { "d": "M7 20V4" }], + ["path", { "d": "M11 4h10" }], + ["path", { "d": "M11 8h7" }], + ["path", { "d": "M11 12h4" }] + ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -1905,15 +1952,15 @@ function instance2($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Arrow_left = class extends SvelteComponent { +var Arrow_down_wide_narrow = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance2, create_fragment2, safe_not_equal, {}); } }; -var arrow_left_default = Arrow_left; +var arrow_down_wide_narrow_default = Arrow_down_wide_narrow; -// node_modules/lucide-svelte/dist/icons/arrow-right.svelte +// node_modules/lucide-svelte/dist/icons/arrow-left.svelte function create_default_slot2(ctx) { let current; const default_slot_template = ( @@ -1983,7 +2030,7 @@ function create_fragment3(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "arrow-right" }, + { name: "arrow-left" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2045,7 +2092,7 @@ function create_fragment3(ctx) { } function instance3($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "m12 5 7 7-7 7" }]]; + const iconNode = [["path", { "d": "m12 19-7-7 7-7" }], ["path", { "d": "M19 12H5" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2054,15 +2101,15 @@ function instance3($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Arrow_right = class extends SvelteComponent { +var Arrow_left = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance3, create_fragment3, safe_not_equal, {}); } }; -var arrow_right_default = Arrow_right; +var arrow_left_default = Arrow_left; -// node_modules/lucide-svelte/dist/icons/chevron-down.svelte +// node_modules/lucide-svelte/dist/icons/arrow-right.svelte function create_default_slot3(ctx) { let current; const default_slot_template = ( @@ -2132,7 +2179,7 @@ function create_fragment4(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "chevron-down" }, + { name: "arrow-right" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2194,7 +2241,7 @@ function create_fragment4(ctx) { } function instance4($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "m6 9 6 6 6-6" }]]; + const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "m12 5 7 7-7 7" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2203,15 +2250,15 @@ function instance4($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Chevron_down = class extends SvelteComponent { +var Arrow_right = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance4, create_fragment4, safe_not_equal, {}); } }; -var chevron_down_default = Chevron_down; +var arrow_right_default = Arrow_right; -// node_modules/lucide-svelte/dist/icons/chevron-right.svelte +// node_modules/lucide-svelte/dist/icons/arrow-up-narrow-wide.svelte function create_default_slot4(ctx) { let current; const default_slot_template = ( @@ -2281,7 +2328,7 @@ function create_fragment5(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "chevron-right" }, + { name: "arrow-up-narrow-wide" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2343,7 +2390,13 @@ function create_fragment5(ctx) { } function instance5($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "m9 18 6-6-6-6" }]]; + const iconNode = [ + ["path", { "d": "m3 8 4-4 4 4" }], + ["path", { "d": "M7 4v16" }], + ["path", { "d": "M11 12h4" }], + ["path", { "d": "M11 16h7" }], + ["path", { "d": "M11 20h10" }] + ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2352,15 +2405,15 @@ function instance5($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Chevron_right = class extends SvelteComponent { +var Arrow_up_narrow_wide = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance5, create_fragment5, safe_not_equal, {}); } }; -var chevron_right_default = Chevron_right; +var arrow_up_narrow_wide_default = Arrow_up_narrow_wide; -// node_modules/lucide-svelte/dist/icons/chevron-up.svelte +// node_modules/lucide-svelte/dist/icons/chevron-down.svelte function create_default_slot5(ctx) { let current; const default_slot_template = ( @@ -2430,7 +2483,7 @@ function create_fragment6(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "chevron-up" }, + { name: "chevron-down" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2492,7 +2545,7 @@ function create_fragment6(ctx) { } function instance6($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "m18 15-6-6-6 6" }]]; + const iconNode = [["path", { "d": "m6 9 6 6 6-6" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2501,15 +2554,15 @@ function instance6($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Chevron_up = class extends SvelteComponent { +var Chevron_down = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance6, create_fragment6, safe_not_equal, {}); } }; -var chevron_up_default = Chevron_up; +var chevron_down_default = Chevron_down; -// node_modules/lucide-svelte/dist/icons/clipboard-paste.svelte +// node_modules/lucide-svelte/dist/icons/chevron-right.svelte function create_default_slot6(ctx) { let current; const default_slot_template = ( @@ -2579,7 +2632,7 @@ function create_fragment7(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "clipboard-paste" }, + { name: "chevron-right" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2641,21 +2694,7 @@ function create_fragment7(ctx) { } function instance7($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [ - [ - "path", - { - "d": "M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z" - } - ], - [ - "path", - { - "d": "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10" - } - ], - ["path", { "d": "m17 10 4 4-4 4" }] - ]; + const iconNode = [["path", { "d": "m9 18 6-6-6-6" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2664,15 +2703,15 @@ function instance7($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Clipboard_paste = class extends SvelteComponent { +var Chevron_right = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance7, create_fragment7, safe_not_equal, {}); } }; -var clipboard_paste_default = Clipboard_paste; +var chevron_right_default = Chevron_right; -// node_modules/lucide-svelte/dist/icons/clock.svelte +// node_modules/lucide-svelte/dist/icons/chevron-up.svelte function create_default_slot7(ctx) { let current; const default_slot_template = ( @@ -2742,7 +2781,7 @@ function create_fragment8(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "clock" }, + { name: "chevron-up" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2804,10 +2843,7 @@ function create_fragment8(ctx) { } function instance8($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [ - ["circle", { "cx": "12", "cy": "12", "r": "10" }], - ["polyline", { "points": "12 6 12 12 16 14" }] - ]; + const iconNode = [["path", { "d": "m18 15-6-6-6 6" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -2816,15 +2852,15 @@ function instance8($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Clock = class extends SvelteComponent { +var Chevron_up = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance8, create_fragment8, safe_not_equal, {}); } }; -var clock_default = Clock; +var chevron_up_default = Chevron_up; -// node_modules/lucide-svelte/dist/icons/eye.svelte +// node_modules/lucide-svelte/dist/icons/clipboard-paste.svelte function create_default_slot8(ctx) { let current; const default_slot_template = ( @@ -2894,7 +2930,7 @@ function create_fragment9(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "eye" }, + { name: "clipboard-paste" }, /*$$props*/ ctx[1], { iconNode: ( @@ -2960,10 +2996,16 @@ function instance9($$self, $$props, $$invalidate) { [ "path", { - "d": "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" + "d": "M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z" } ], - ["circle", { "cx": "12", "cy": "12", "r": "3" }] + [ + "path", + { + "d": "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10" + } + ], + ["path", { "d": "m17 10 4 4-4 4" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -2973,15 +3015,15 @@ function instance9($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Eye = class extends SvelteComponent { +var Clipboard_paste = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance9, create_fragment9, safe_not_equal, {}); } }; -var eye_default = Eye; +var clipboard_paste_default = Clipboard_paste; -// node_modules/lucide-svelte/dist/icons/file-minus.svelte +// node_modules/lucide-svelte/dist/icons/clock.svelte function create_default_slot9(ctx) { let current; const default_slot_template = ( @@ -3051,7 +3093,7 @@ function create_fragment10(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-minus" }, + { name: "clock" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3114,14 +3156,8 @@ function create_fragment10(ctx) { function instance10($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - [ - "path", - { - "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" - } - ], - ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], - ["path", { "d": "M9 15h6" }] + ["circle", { "cx": "12", "cy": "12", "r": "10" }], + ["polyline", { "points": "12 6 12 12 16 14" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3131,15 +3167,15 @@ function instance10($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_minus = class extends SvelteComponent { +var Clock = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance10, create_fragment10, safe_not_equal, {}); } }; -var file_minus_default = File_minus; +var clock_default = Clock; -// node_modules/lucide-svelte/dist/icons/file-output.svelte +// node_modules/lucide-svelte/dist/icons/copy.svelte function create_default_slot10(ctx) { let current; const default_slot_template = ( @@ -3209,7 +3245,7 @@ function create_fragment11(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-output" }, + { name: "copy" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3272,21 +3308,23 @@ function create_fragment11(ctx) { function instance11($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], [ - "path", + "rect", { - "d": "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2" + "width": "14", + "height": "14", + "x": "8", + "y": "8", + "rx": "2", + "ry": "2" } ], [ "path", { - "d": "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6" + "d": "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" } - ], - ["path", { "d": "m5 11-3 3" }], - ["path", { "d": "m5 17-3-3h10" }] + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3296,15 +3334,15 @@ function instance11($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_output = class extends SvelteComponent { +var Copy = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance11, create_fragment11, safe_not_equal, {}); } }; -var file_output_default = File_output; +var copy_default = Copy; -// node_modules/lucide-svelte/dist/icons/file-pen.svelte +// node_modules/lucide-svelte/dist/icons/eye.svelte function create_default_slot11(ctx) { let current; const default_slot_template = ( @@ -3374,7 +3412,7 @@ function create_fragment12(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-pen" }, + { name: "eye" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3440,16 +3478,10 @@ function instance12($$self, $$props, $$invalidate) { [ "path", { - "d": "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v10" + "d": "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" } ], - ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], - [ - "path", - { - "d": "M10.4 12.6a2 2 0 1 1 3 3L8 21l-4 1 1-4Z" - } - ] + ["circle", { "cx": "12", "cy": "12", "r": "3" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3459,15 +3491,15 @@ function instance12($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_pen = class extends SvelteComponent { +var Eye = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance12, create_fragment12, safe_not_equal, {}); } }; -var file_pen_default = File_pen; +var eye_default = Eye; -// node_modules/lucide-svelte/dist/icons/file-plus.svelte +// node_modules/lucide-svelte/dist/icons/file-minus.svelte function create_default_slot12(ctx) { let current; const default_slot_template = ( @@ -3537,7 +3569,7 @@ function create_fragment13(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-plus" }, + { name: "file-minus" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3607,8 +3639,7 @@ function instance13($$self, $$props, $$invalidate) { } ], ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], - ["path", { "d": "M9 15h6" }], - ["path", { "d": "M12 18v-6" }] + ["path", { "d": "M9 15h6" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3618,15 +3649,15 @@ function instance13($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_plus = class extends SvelteComponent { +var File_minus = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance13, create_fragment13, safe_not_equal, {}); } }; -var file_plus_default = File_plus; +var file_minus_default = File_minus; -// node_modules/lucide-svelte/dist/icons/file-symlink.svelte +// node_modules/lucide-svelte/dist/icons/file-output.svelte function create_default_slot13(ctx) { let current; const default_slot_template = ( @@ -3696,7 +3727,7 @@ function create_fragment14(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-symlink" }, + { name: "file-output" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3759,14 +3790,21 @@ function create_fragment14(ctx) { function instance14($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "m10 18 3-3-3-3" }], ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], [ "path", { - "d": "M4 11V4a2 2 0 0 1 2-2h9l5 5v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7" + "d": "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2" } - ] + ], + [ + "path", + { + "d": "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6" + } + ], + ["path", { "d": "m5 11-3 3" }], + ["path", { "d": "m5 17-3-3h10" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3776,15 +3814,15 @@ function instance14($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_symlink = class extends SvelteComponent { +var File_output = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance14, create_fragment14, safe_not_equal, {}); } }; -var file_symlink_default = File_symlink; +var file_output_default = File_output; -// node_modules/lucide-svelte/dist/icons/file-up.svelte +// node_modules/lucide-svelte/dist/icons/file-pen.svelte function create_default_slot14(ctx) { let current; const default_slot_template = ( @@ -3854,7 +3892,7 @@ function create_fragment15(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "file-up" }, + { name: "file-pen" }, /*$$props*/ ctx[1], { iconNode: ( @@ -3920,12 +3958,16 @@ function instance15($$self, $$props, $$invalidate) { [ "path", { - "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" + "d": "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v10" } ], ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], - ["path", { "d": "M12 12v6" }], - ["path", { "d": "m15 15-3-3-3 3" }] + [ + "path", + { + "d": "M10.4 12.6a2 2 0 1 1 3 3L8 21l-4 1 1-4Z" + } + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -3935,15 +3977,15 @@ function instance15($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var File_up = class extends SvelteComponent { +var File_pen = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance15, create_fragment15, safe_not_equal, {}); } }; -var file_up_default = File_up; +var file_pen_default = File_pen; -// node_modules/lucide-svelte/dist/icons/focus.svelte +// node_modules/lucide-svelte/dist/icons/file-plus.svelte function create_default_slot15(ctx) { let current; const default_slot_template = ( @@ -4013,7 +4055,7 @@ function create_fragment16(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "focus" }, + { name: "file-plus" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4076,11 +4118,15 @@ function create_fragment16(ctx) { function instance16($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "12", "cy": "12", "r": "3" }], - ["path", { "d": "M3 7V5a2 2 0 0 1 2-2h2" }], - ["path", { "d": "M17 3h2a2 2 0 0 1 2 2v2" }], - ["path", { "d": "M21 17v2a2 2 0 0 1-2 2h-2" }], - ["path", { "d": "M7 21H5a2 2 0 0 1-2-2v-2" }] + [ + "path", + { + "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" + } + ], + ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], + ["path", { "d": "M9 15h6" }], + ["path", { "d": "M12 18v-6" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4090,15 +4136,15 @@ function instance16($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Focus = class extends SvelteComponent { +var File_plus = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance16, create_fragment16, safe_not_equal, {}); } }; -var focus_default = Focus; +var file_plus_default = File_plus; -// node_modules/lucide-svelte/dist/icons/grip-vertical.svelte +// node_modules/lucide-svelte/dist/icons/file-symlink.svelte function create_default_slot16(ctx) { let current; const default_slot_template = ( @@ -4168,7 +4214,7 @@ function create_fragment17(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "grip-vertical" }, + { name: "file-symlink" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4231,12 +4277,14 @@ function create_fragment17(ctx) { function instance17($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "9", "cy": "12", "r": "1" }], - ["circle", { "cx": "9", "cy": "5", "r": "1" }], - ["circle", { "cx": "9", "cy": "19", "r": "1" }], - ["circle", { "cx": "15", "cy": "12", "r": "1" }], - ["circle", { "cx": "15", "cy": "5", "r": "1" }], - ["circle", { "cx": "15", "cy": "19", "r": "1" }] + ["path", { "d": "m10 18 3-3-3-3" }], + ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], + [ + "path", + { + "d": "M4 11V4a2 2 0 0 1 2-2h9l5 5v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7" + } + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4246,15 +4294,15 @@ function instance17($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Grip_vertical = class extends SvelteComponent { +var File_symlink = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance17, create_fragment17, safe_not_equal, {}); } }; -var grip_vertical_default = Grip_vertical; +var file_symlink_default = File_symlink; -// node_modules/lucide-svelte/dist/icons/heading-1.svelte +// node_modules/lucide-svelte/dist/icons/file-text.svelte function create_default_slot17(ctx) { let current; const default_slot_template = ( @@ -4324,7 +4372,7 @@ function create_fragment18(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "heading-1" }, + { name: "file-text" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4387,10 +4435,16 @@ function create_fragment18(ctx) { function instance18($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M4 12h8" }], - ["path", { "d": "M4 18V6" }], - ["path", { "d": "M12 18V6" }], - ["path", { "d": "m17 12 3-2v8" }] + [ + "path", + { + "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" + } + ], + ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], + ["path", { "d": "M10 9H8" }], + ["path", { "d": "M16 13H8" }], + ["path", { "d": "M16 17H8" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4400,15 +4454,15 @@ function instance18($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Heading_1 = class extends SvelteComponent { +var File_text = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance18, create_fragment18, safe_not_equal, {}); } }; -var heading_1_default = Heading_1; +var file_text_default = File_text; -// node_modules/lucide-svelte/dist/icons/history.svelte +// node_modules/lucide-svelte/dist/icons/file-up.svelte function create_default_slot18(ctx) { let current; const default_slot_template = ( @@ -4478,7 +4532,7 @@ function create_fragment19(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "history" }, + { name: "file-up" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4544,11 +4598,12 @@ function instance19($$self, $$props, $$invalidate) { [ "path", { - "d": "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" + "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" } ], - ["path", { "d": "M3 3v5h5" }], - ["path", { "d": "M12 7v5l4 2" }] + ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], + ["path", { "d": "M12 12v6" }], + ["path", { "d": "m15 15-3-3-3 3" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4558,15 +4613,15 @@ function instance19($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var History = class extends SvelteComponent { +var File_up = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance19, create_fragment19, safe_not_equal, {}); } }; -var history_default = History; +var file_up_default = File_up; -// node_modules/lucide-svelte/dist/icons/info.svelte +// node_modules/lucide-svelte/dist/icons/focus.svelte function create_default_slot19(ctx) { let current; const default_slot_template = ( @@ -4636,7 +4691,7 @@ function create_fragment20(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "info" }, + { name: "focus" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4699,9 +4754,11 @@ function create_fragment20(ctx) { function instance20($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "12", "cy": "12", "r": "10" }], - ["path", { "d": "M12 16v-4" }], - ["path", { "d": "M12 8h.01" }] + ["circle", { "cx": "12", "cy": "12", "r": "3" }], + ["path", { "d": "M3 7V5a2 2 0 0 1 2-2h2" }], + ["path", { "d": "M17 3h2a2 2 0 0 1 2 2v2" }], + ["path", { "d": "M21 17v2a2 2 0 0 1-2 2h-2" }], + ["path", { "d": "M7 21H5a2 2 0 0 1-2-2v-2" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4711,15 +4768,15 @@ function instance20($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Info = class extends SvelteComponent { +var Focus = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance20, create_fragment20, safe_not_equal, {}); } }; -var info_default = Info; +var focus_default = Focus; -// node_modules/lucide-svelte/dist/icons/keyboard.svelte +// node_modules/lucide-svelte/dist/icons/globe.svelte function create_default_slot20(ctx) { let current; const default_slot_template = ( @@ -4789,7 +4846,7 @@ function create_fragment21(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "keyboard" }, + { name: "globe" }, /*$$props*/ ctx[1], { iconNode: ( @@ -4852,24 +4909,14 @@ function create_fragment21(ctx) { function instance21($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M10 8h.01" }], - ["path", { "d": "M12 12h.01" }], - ["path", { "d": "M14 8h.01" }], - ["path", { "d": "M16 12h.01" }], - ["path", { "d": "M18 8h.01" }], - ["path", { "d": "M6 8h.01" }], - ["path", { "d": "M7 16h10" }], - ["path", { "d": "M8 12h.01" }], + ["circle", { "cx": "12", "cy": "12", "r": "10" }], [ - "rect", + "path", { - "x": "2", - "y": "4", - "width": "20", - "height": "16", - "rx": "2" + "d": "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" } - ] + ], + ["path", { "d": "M2 12h20" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -4879,15 +4926,15 @@ function instance21($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Keyboard = class extends SvelteComponent { +var Globe = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance21, create_fragment21, safe_not_equal, {}); } }; -var keyboard_default = Keyboard; +var globe_default = Globe; -// node_modules/lucide-svelte/dist/icons/merge.svelte +// node_modules/lucide-svelte/dist/icons/grip-vertical.svelte function create_default_slot21(ctx) { let current; const default_slot_template = ( @@ -4957,7 +5004,7 @@ function create_fragment22(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "merge" }, + { name: "grip-vertical" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5020,14 +5067,12 @@ function create_fragment22(ctx) { function instance22($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "m8 6 4-4 4 4" }], - [ - "path", - { - "d": "M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22" - } - ], - ["path", { "d": "m20 22-5-5" }] + ["circle", { "cx": "9", "cy": "12", "r": "1" }], + ["circle", { "cx": "9", "cy": "5", "r": "1" }], + ["circle", { "cx": "9", "cy": "19", "r": "1" }], + ["circle", { "cx": "15", "cy": "12", "r": "1" }], + ["circle", { "cx": "15", "cy": "5", "r": "1" }], + ["circle", { "cx": "15", "cy": "19", "r": "1" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -5037,15 +5082,15 @@ function instance22($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Merge = class extends SvelteComponent { +var Grip_vertical = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance22, create_fragment22, safe_not_equal, {}); } }; -var merge_default = Merge; +var grip_vertical_default = Grip_vertical; -// node_modules/lucide-svelte/dist/icons/minus.svelte +// node_modules/lucide-svelte/dist/icons/heading-1.svelte function create_default_slot22(ctx) { let current; const default_slot_template = ( @@ -5115,7 +5160,7 @@ function create_fragment23(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "minus" }, + { name: "heading-1" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5177,7 +5222,12 @@ function create_fragment23(ctx) { } function instance23($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "M5 12h14" }]]; + const iconNode = [ + ["path", { "d": "M4 12h8" }], + ["path", { "d": "M4 18V6" }], + ["path", { "d": "M12 18V6" }], + ["path", { "d": "m17 12 3-2v8" }] + ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -5186,15 +5236,15 @@ function instance23($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Minus = class extends SvelteComponent { +var Heading_1 = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance23, create_fragment23, safe_not_equal, {}); } }; -var minus_default = Minus; +var heading_1_default = Heading_1; -// node_modules/lucide-svelte/dist/icons/more-vertical.svelte +// node_modules/lucide-svelte/dist/icons/history.svelte function create_default_slot23(ctx) { let current; const default_slot_template = ( @@ -5264,7 +5314,7 @@ function create_fragment24(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "more-vertical" }, + { name: "history" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5327,9 +5377,14 @@ function create_fragment24(ctx) { function instance24($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "12", "cy": "12", "r": "1" }], - ["circle", { "cx": "12", "cy": "5", "r": "1" }], - ["circle", { "cx": "12", "cy": "19", "r": "1" }] + [ + "path", + { + "d": "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" + } + ], + ["path", { "d": "M3 3v5h5" }], + ["path", { "d": "M12 7v5l4 2" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -5339,15 +5394,15 @@ function instance24($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var More_vertical = class extends SvelteComponent { +var History = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance24, create_fragment24, safe_not_equal, {}); } }; -var more_vertical_default = More_vertical; +var history_default = History; -// node_modules/lucide-svelte/dist/icons/palette.svelte +// node_modules/lucide-svelte/dist/icons/info.svelte function create_default_slot24(ctx) { let current; const default_slot_template = ( @@ -5417,7 +5472,7 @@ function create_fragment25(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "palette" }, + { name: "info" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5480,48 +5535,9 @@ function create_fragment25(ctx) { function instance25($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - [ - "circle", - { - "cx": "13.5", - "cy": "6.5", - "r": ".5", - "fill": "currentColor" - } - ], - [ - "circle", - { - "cx": "17.5", - "cy": "10.5", - "r": ".5", - "fill": "currentColor" - } - ], - [ - "circle", - { - "cx": "8.5", - "cy": "7.5", - "r": ".5", - "fill": "currentColor" - } - ], - [ - "circle", - { - "cx": "6.5", - "cy": "12.5", - "r": ".5", - "fill": "currentColor" - } - ], - [ - "path", - { - "d": "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z" - } - ] + ["circle", { "cx": "12", "cy": "12", "r": "10" }], + ["path", { "d": "M12 16v-4" }], + ["path", { "d": "M12 8h.01" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -5531,15 +5547,15 @@ function instance25($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Palette = class extends SvelteComponent { +var Info = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance25, create_fragment25, safe_not_equal, {}); } }; -var palette_default = Palette; +var info_default = Info; -// node_modules/lucide-svelte/dist/icons/panel-left-dashed.svelte +// node_modules/lucide-svelte/dist/icons/keyboard.svelte function create_default_slot25(ctx) { let current; const default_slot_template = ( @@ -5609,7 +5625,7 @@ function create_fragment26(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "panel-left-dashed" }, + { name: "keyboard" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5672,20 +5688,24 @@ function create_fragment26(ctx) { function instance26($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ + ["path", { "d": "M10 8h.01" }], + ["path", { "d": "M12 12h.01" }], + ["path", { "d": "M14 8h.01" }], + ["path", { "d": "M16 12h.01" }], + ["path", { "d": "M18 8h.01" }], + ["path", { "d": "M6 8h.01" }], + ["path", { "d": "M7 16h10" }], + ["path", { "d": "M8 12h.01" }], [ "rect", { - "width": "18", - "height": "18", - "x": "3", - "y": "3", + "x": "2", + "y": "4", + "width": "20", + "height": "16", "rx": "2" } - ], - ["path", { "d": "M9 14v1" }], - ["path", { "d": "M9 19v2" }], - ["path", { "d": "M9 3v2" }], - ["path", { "d": "M9 9v1" }] + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -5695,15 +5715,15 @@ function instance26($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Panel_left_dashed = class extends SvelteComponent { +var Keyboard = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance26, create_fragment26, safe_not_equal, {}); } }; -var panel_left_dashed_default = Panel_left_dashed; +var keyboard_default = Keyboard; -// node_modules/lucide-svelte/dist/icons/panel-right-dashed.svelte +// node_modules/lucide-svelte/dist/icons/merge.svelte function create_default_slot26(ctx) { let current; const default_slot_template = ( @@ -5773,7 +5793,7 @@ function create_fragment27(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "panel-right-dashed" }, + { name: "merge" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5836,20 +5856,14 @@ function create_fragment27(ctx) { function instance27($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ + ["path", { "d": "m8 6 4-4 4 4" }], [ - "rect", + "path", { - "width": "18", - "height": "18", - "x": "3", - "y": "3", - "rx": "2" + "d": "M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22" } ], - ["path", { "d": "M15 14v1" }], - ["path", { "d": "M15 19v2" }], - ["path", { "d": "M15 3v2" }], - ["path", { "d": "M15 9v1" }] + ["path", { "d": "m20 22-5-5" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -5859,15 +5873,15 @@ function instance27($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Panel_right_dashed = class extends SvelteComponent { +var Merge = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance27, create_fragment27, safe_not_equal, {}); } }; -var panel_right_dashed_default = Panel_right_dashed; +var merge_default = Merge; -// node_modules/lucide-svelte/dist/icons/pen.svelte +// node_modules/lucide-svelte/dist/icons/minus.svelte function create_default_slot27(ctx) { let current; const default_slot_template = ( @@ -5937,7 +5951,7 @@ function create_fragment28(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "pen" }, + { name: "minus" }, /*$$props*/ ctx[1], { iconNode: ( @@ -5999,14 +6013,7 @@ function create_fragment28(ctx) { } function instance28($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [ - [ - "path", - { - "d": "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" - } - ] - ]; + const iconNode = [["path", { "d": "M5 12h14" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -6015,15 +6022,15 @@ function instance28($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Pen = class extends SvelteComponent { +var Minus = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance28, create_fragment28, safe_not_equal, {}); } }; -var pen_default = Pen; +var minus_default = Minus; -// node_modules/lucide-svelte/dist/icons/pencil.svelte +// node_modules/lucide-svelte/dist/icons/more-vertical.svelte function create_default_slot28(ctx) { let current; const default_slot_template = ( @@ -6093,7 +6100,7 @@ function create_fragment29(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "pencil" }, + { name: "more-vertical" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6156,13 +6163,9 @@ function create_fragment29(ctx) { function instance29($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - [ - "path", - { - "d": "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" - } - ], - ["path", { "d": "m15 5 4 4" }] + ["circle", { "cx": "12", "cy": "12", "r": "1" }], + ["circle", { "cx": "12", "cy": "5", "r": "1" }], + ["circle", { "cx": "12", "cy": "19", "r": "1" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -6172,15 +6175,15 @@ function instance29($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Pencil = class extends SvelteComponent { +var More_vertical = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance29, create_fragment29, safe_not_equal, {}); } }; -var pencil_default = Pencil; +var more_vertical_default = More_vertical; -// node_modules/lucide-svelte/dist/icons/pin.svelte +// node_modules/lucide-svelte/dist/icons/palette.svelte function create_default_slot29(ctx) { let current; const default_slot_template = ( @@ -6250,7 +6253,7 @@ function create_fragment30(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "pin" }, + { name: "palette" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6314,18 +6317,45 @@ function instance30($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ [ - "line", + "circle", { - "x1": "12", - "x2": "12", - "y1": "17", - "y2": "22" + "cx": "13.5", + "cy": "6.5", + "r": ".5", + "fill": "currentColor" + } + ], + [ + "circle", + { + "cx": "17.5", + "cy": "10.5", + "r": ".5", + "fill": "currentColor" + } + ], + [ + "circle", + { + "cx": "8.5", + "cy": "7.5", + "r": ".5", + "fill": "currentColor" + } + ], + [ + "circle", + { + "cx": "6.5", + "cy": "12.5", + "r": ".5", + "fill": "currentColor" } ], [ "path", { - "d": "M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z" + "d": "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z" } ] ]; @@ -6337,15 +6367,15 @@ function instance30($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Pin = class extends SvelteComponent { +var Palette = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance30, create_fragment30, safe_not_equal, {}); } }; -var pin_default = Pin; +var palette_default = Palette; -// node_modules/lucide-svelte/dist/icons/plus.svelte +// node_modules/lucide-svelte/dist/icons/panel-left-dashed.svelte function create_default_slot30(ctx) { let current; const default_slot_template = ( @@ -6415,7 +6445,7 @@ function create_fragment31(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "plus" }, + { name: "panel-left-dashed" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6477,7 +6507,22 @@ function create_fragment31(ctx) { } function instance31($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "M12 5v14" }]]; + const iconNode = [ + [ + "rect", + { + "width": "18", + "height": "18", + "x": "3", + "y": "3", + "rx": "2" + } + ], + ["path", { "d": "M9 14v1" }], + ["path", { "d": "M9 19v2" }], + ["path", { "d": "M9 3v2" }], + ["path", { "d": "M9 9v1" }] + ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -6486,15 +6531,15 @@ function instance31($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Plus = class extends SvelteComponent { +var Panel_left_dashed = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance31, create_fragment31, safe_not_equal, {}); } }; -var plus_default = Plus; +var panel_left_dashed_default = Panel_left_dashed; -// node_modules/lucide-svelte/dist/icons/redo-2.svelte +// node_modules/lucide-svelte/dist/icons/panel-right-dashed.svelte function create_default_slot31(ctx) { let current; const default_slot_template = ( @@ -6564,7 +6609,7 @@ function create_fragment32(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "redo-2" }, + { name: "panel-right-dashed" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6627,13 +6672,20 @@ function create_fragment32(ctx) { function instance32($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "m15 14 5-5-5-5" }], [ - "path", + "rect", { - "d": "M20 9H9.5A5.5 5.5 0 0 0 4 14.5v0A5.5 5.5 0 0 0 9.5 20H13" + "width": "18", + "height": "18", + "x": "3", + "y": "3", + "rx": "2" } - ] + ], + ["path", { "d": "M15 14v1" }], + ["path", { "d": "M15 19v2" }], + ["path", { "d": "M15 3v2" }], + ["path", { "d": "M15 9v1" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -6643,15 +6695,15 @@ function instance32($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Redo_2 = class extends SvelteComponent { +var Panel_right_dashed = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance32, create_fragment32, safe_not_equal, {}); } }; -var redo_2_default = Redo_2; +var panel_right_dashed_default = Panel_right_dashed; -// node_modules/lucide-svelte/dist/icons/rotate-ccw.svelte +// node_modules/lucide-svelte/dist/icons/pen.svelte function create_default_slot32(ctx) { let current; const default_slot_template = ( @@ -6721,7 +6773,7 @@ function create_fragment33(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "rotate-ccw" }, + { name: "pen" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6787,10 +6839,9 @@ function instance33($$self, $$props, $$invalidate) { [ "path", { - "d": "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" + "d": "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" } - ], - ["path", { "d": "M3 3v5h5" }] + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -6800,15 +6851,15 @@ function instance33($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Rotate_ccw = class extends SvelteComponent { +var Pen = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance33, create_fragment33, safe_not_equal, {}); } }; -var rotate_ccw_default = Rotate_ccw; +var pen_default = Pen; -// node_modules/lucide-svelte/dist/icons/rotate-cw.svelte +// node_modules/lucide-svelte/dist/icons/pencil.svelte function create_default_slot33(ctx) { let current; const default_slot_template = ( @@ -6878,7 +6929,7 @@ function create_fragment34(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "rotate-cw" }, + { name: "pencil" }, /*$$props*/ ctx[1], { iconNode: ( @@ -6944,10 +6995,10 @@ function instance34($$self, $$props, $$invalidate) { [ "path", { - "d": "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8" + "d": "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" } ], - ["path", { "d": "M21 3v5h-5" }] + ["path", { "d": "m15 5 4 4" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -6957,15 +7008,15 @@ function instance34($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Rotate_cw = class extends SvelteComponent { +var Pencil = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance34, create_fragment34, safe_not_equal, {}); } }; -var rotate_cw_default = Rotate_cw; +var pencil_default = Pencil; -// node_modules/lucide-svelte/dist/icons/save.svelte +// node_modules/lucide-svelte/dist/icons/pin.svelte function create_default_slot34(ctx) { let current; const default_slot_template = ( @@ -7035,7 +7086,7 @@ function create_fragment35(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "save" }, + { name: "pin" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7099,13 +7150,20 @@ function instance35($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ [ - "path", + "line", { - "d": "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" + "x1": "12", + "x2": "12", + "y1": "17", + "y2": "22" } ], - ["polyline", { "points": "17 21 17 13 7 13 7 21" }], - ["polyline", { "points": "7 3 7 8 15 8" }] + [ + "path", + { + "d": "M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z" + } + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -7115,15 +7173,15 @@ function instance35($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Save = class extends SvelteComponent { +var Pin = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance35, create_fragment35, safe_not_equal, {}); } }; -var save_default = Save; +var pin_default = Pin; -// node_modules/lucide-svelte/dist/icons/scan-search.svelte +// node_modules/lucide-svelte/dist/icons/plus.svelte function create_default_slot35(ctx) { let current; const default_slot_template = ( @@ -7193,7 +7251,7 @@ function create_fragment36(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "scan-search" }, + { name: "plus" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7255,14 +7313,7 @@ function create_fragment36(ctx) { } function instance36($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; - const iconNode = [ - ["path", { "d": "M3 7V5a2 2 0 0 1 2-2h2" }], - ["path", { "d": "M17 3h2a2 2 0 0 1 2 2v2" }], - ["path", { "d": "M21 17v2a2 2 0 0 1-2 2h-2" }], - ["path", { "d": "M7 21H5a2 2 0 0 1-2-2v-2" }], - ["circle", { "cx": "12", "cy": "12", "r": "3" }], - ["path", { "d": "m16 16-1.9-1.9" }] - ]; + const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "M12 5v14" }]]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); if ("$$scope" in $$new_props) @@ -7271,15 +7322,15 @@ function instance36($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Scan_search = class extends SvelteComponent { +var Plus = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance36, create_fragment36, safe_not_equal, {}); } }; -var scan_search_default = Scan_search; +var plus_default = Plus; -// node_modules/lucide-svelte/dist/icons/scissors.svelte +// node_modules/lucide-svelte/dist/icons/redo-2.svelte function create_default_slot36(ctx) { let current; const default_slot_template = ( @@ -7349,7 +7400,7 @@ function create_fragment37(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "scissors" }, + { name: "redo-2" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7412,11 +7463,13 @@ function create_fragment37(ctx) { function instance37($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "6", "cy": "6", "r": "3" }], - ["path", { "d": "M8.12 8.12 12 12" }], - ["path", { "d": "M20 4 8.12 15.88" }], - ["circle", { "cx": "6", "cy": "18", "r": "3" }], - ["path", { "d": "M14.8 14.8 20 20" }] + ["path", { "d": "m15 14 5-5-5-5" }], + [ + "path", + { + "d": "M20 9H9.5A5.5 5.5 0 0 0 4 14.5v0A5.5 5.5 0 0 0 9.5 20H13" + } + ] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -7426,15 +7479,15 @@ function instance37($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Scissors = class extends SvelteComponent { +var Redo_2 = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance37, create_fragment37, safe_not_equal, {}); } }; -var scissors_default = Scissors; +var redo_2_default = Redo_2; -// node_modules/lucide-svelte/dist/icons/search.svelte +// node_modules/lucide-svelte/dist/icons/rotate-ccw.svelte function create_default_slot37(ctx) { let current; const default_slot_template = ( @@ -7504,7 +7557,7 @@ function create_fragment38(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "search" }, + { name: "rotate-ccw" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7567,8 +7620,13 @@ function create_fragment38(ctx) { function instance38($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["circle", { "cx": "11", "cy": "11", "r": "8" }], - ["path", { "d": "m21 21-4.3-4.3" }] + [ + "path", + { + "d": "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" + } + ], + ["path", { "d": "M3 3v5h5" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -7578,15 +7636,15 @@ function instance38($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Search = class extends SvelteComponent { +var Rotate_ccw = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance38, create_fragment38, safe_not_equal, {}); } }; -var search_default = Search; +var rotate_ccw_default = Rotate_ccw; -// node_modules/lucide-svelte/dist/icons/settings.svelte +// node_modules/lucide-svelte/dist/icons/rotate-cw.svelte function create_default_slot38(ctx) { let current; const default_slot_template = ( @@ -7656,7 +7714,7 @@ function create_fragment39(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "settings" }, + { name: "rotate-cw" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7722,10 +7780,10 @@ function instance39($$self, $$props, $$invalidate) { [ "path", { - "d": "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" + "d": "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8" } ], - ["circle", { "cx": "12", "cy": "12", "r": "3" }] + ["path", { "d": "M21 3v5h-5" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -7735,15 +7793,15 @@ function instance39($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Settings = class extends SvelteComponent { +var Rotate_cw = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance39, create_fragment39, safe_not_equal, {}); } }; -var settings_default = Settings; +var rotate_cw_default = Rotate_cw; -// node_modules/lucide-svelte/dist/icons/split.svelte +// node_modules/lucide-svelte/dist/icons/save.svelte function create_default_slot39(ctx) { let current; const default_slot_template = ( @@ -7813,7 +7871,7 @@ function create_fragment40(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "split" }, + { name: "save" }, /*$$props*/ ctx[1], { iconNode: ( @@ -7876,15 +7934,14 @@ function create_fragment40(ctx) { function instance40($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M16 3h5v5" }], - ["path", { "d": "M8 3H3v5" }], [ "path", { - "d": "M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3" + "d": "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" } ], - ["path", { "d": "m15 9 6-6" }] + ["polyline", { "points": "17 21 17 13 7 13 7 21" }], + ["polyline", { "points": "7 3 7 8 15 8" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -7894,15 +7951,15 @@ function instance40($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Split = class extends SvelteComponent { +var Save = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance40, create_fragment40, safe_not_equal, {}); } }; -var split_default = Split; +var save_default = Save; -// node_modules/lucide-svelte/dist/icons/text.svelte +// node_modules/lucide-svelte/dist/icons/scan-search.svelte function create_default_slot40(ctx) { let current; const default_slot_template = ( @@ -7972,7 +8029,7 @@ function create_fragment41(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "text" }, + { name: "scan-search" }, /*$$props*/ ctx[1], { iconNode: ( @@ -8035,9 +8092,12 @@ function create_fragment41(ctx) { function instance41($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M17 6.1H3" }], - ["path", { "d": "M21 12.1H3" }], - ["path", { "d": "M15.1 18H3" }] + ["path", { "d": "M3 7V5a2 2 0 0 1 2-2h2" }], + ["path", { "d": "M17 3h2a2 2 0 0 1 2 2v2" }], + ["path", { "d": "M21 17v2a2 2 0 0 1-2 2h-2" }], + ["path", { "d": "M7 21H5a2 2 0 0 1-2-2v-2" }], + ["circle", { "cx": "12", "cy": "12", "r": "3" }], + ["path", { "d": "m16 16-1.9-1.9" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -8047,15 +8107,15 @@ function instance41($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Text = class extends SvelteComponent { +var Scan_search = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance41, create_fragment41, safe_not_equal, {}); } }; -var text_default = Text; +var scan_search_default = Scan_search; -// node_modules/lucide-svelte/dist/icons/trash.svelte +// node_modules/lucide-svelte/dist/icons/scissors.svelte function create_default_slot41(ctx) { let current; const default_slot_template = ( @@ -8125,7 +8185,7 @@ function create_fragment42(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "trash" }, + { name: "scissors" }, /*$$props*/ ctx[1], { iconNode: ( @@ -8188,19 +8248,11 @@ function create_fragment42(ctx) { function instance42($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M3 6h18" }], - [ - "path", - { - "d": "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" - } - ], - [ - "path", - { - "d": "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" - } - ] + ["circle", { "cx": "6", "cy": "6", "r": "3" }], + ["path", { "d": "M8.12 8.12 12 12" }], + ["path", { "d": "M20 4 8.12 15.88" }], + ["circle", { "cx": "6", "cy": "18", "r": "3" }], + ["path", { "d": "M14.8 14.8 20 20" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -8210,15 +8262,15 @@ function instance42($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Trash = class extends SvelteComponent { +var Scissors = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance42, create_fragment42, safe_not_equal, {}); } }; -var trash_default = Trash; +var scissors_default = Scissors; -// node_modules/lucide-svelte/dist/icons/undo-2.svelte +// node_modules/lucide-svelte/dist/icons/search.svelte function create_default_slot42(ctx) { let current; const default_slot_template = ( @@ -8288,7 +8340,7 @@ function create_fragment43(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "undo-2" }, + { name: "search" }, /*$$props*/ ctx[1], { iconNode: ( @@ -8351,13 +8403,8 @@ function create_fragment43(ctx) { function instance43($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [ - ["path", { "d": "M9 14 4 9l5-5" }], - [ - "path", - { - "d": "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5v0a5.5 5.5 0 0 1-5.5 5.5H11" - } - ] + ["circle", { "cx": "11", "cy": "11", "r": "8" }], + ["path", { "d": "m21 21-4.3-4.3" }] ]; $$self.$$set = ($$new_props) => { $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); @@ -8367,15 +8414,15 @@ function instance43($$self, $$props, $$invalidate) { $$props = exclude_internal_props($$props); return [iconNode, $$props, slots, $$scope]; } -var Undo_2 = class extends SvelteComponent { +var Search = class extends SvelteComponent { constructor(options) { super(); init(this, options, instance43, create_fragment43, safe_not_equal, {}); } }; -var undo_2_default = Undo_2; +var search_default = Search; -// node_modules/lucide-svelte/dist/icons/x.svelte +// node_modules/lucide-svelte/dist/icons/settings.svelte function create_default_slot43(ctx) { let current; const default_slot_template = ( @@ -8445,7 +8492,7 @@ function create_fragment44(ctx) { let icon; let current; const icon_spread_levels = [ - { name: "x" }, + { name: "settings" }, /*$$props*/ ctx[1], { iconNode: ( @@ -8506,6 +8553,795 @@ function create_fragment44(ctx) { }; } function instance44($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" + } + ], + ["circle", { "cx": "12", "cy": "12", "r": "3" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Settings = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance44, create_fragment44, safe_not_equal, {}); + } +}; +var settings_default = Settings; + +// node_modules/lucide-svelte/dist/icons/split.svelte +function create_default_slot44(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment45(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "split" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot44] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance45($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M16 3h5v5" }], + ["path", { "d": "M8 3H3v5" }], + [ + "path", + { + "d": "M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3" + } + ], + ["path", { "d": "m15 9 6-6" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Split = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance45, create_fragment45, safe_not_equal, {}); + } +}; +var split_default = Split; + +// node_modules/lucide-svelte/dist/icons/text.svelte +function create_default_slot45(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment46(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "text" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot45] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance46($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M17 6.1H3" }], + ["path", { "d": "M21 12.1H3" }], + ["path", { "d": "M15.1 18H3" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Text = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance46, create_fragment46, safe_not_equal, {}); + } +}; +var text_default = Text; + +// node_modules/lucide-svelte/dist/icons/trash.svelte +function create_default_slot46(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment47(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "trash" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot46] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance47($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M3 6h18" }], + [ + "path", + { + "d": "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" + } + ], + [ + "path", + { + "d": "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Trash = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance47, create_fragment47, safe_not_equal, {}); + } +}; +var trash_default = Trash; + +// node_modules/lucide-svelte/dist/icons/undo-2.svelte +function create_default_slot47(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment48(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "undo-2" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot47] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance48($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M9 14 4 9l5-5" }], + [ + "path", + { + "d": "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5v0a5.5 5.5 0 0 1-5.5 5.5H11" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Undo_2 = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance48, create_fragment48, safe_not_equal, {}); + } +}; +var undo_2_default = Undo_2; + +// node_modules/lucide-svelte/dist/icons/x.svelte +function create_default_slot48(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment49(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "x" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot48] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance49($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; const iconNode = [["path", { "d": "M18 6 6 18" }], ["path", { "d": "m6 6 12 12" }]]; $$self.$$set = ($$new_props) => { @@ -8519,7 +9355,7 @@ function instance44($$self, $$props, $$invalidate) { var X = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance44, create_fragment44, safe_not_equal, {}); + init(this, options, instance49, create_fragment49, safe_not_equal, {}); } }; var x_default = X; @@ -8532,50 +9368,6 @@ var getView = () => { return getContext("view"); }; -// src/lib/store/derived.ts -var derived = (source, mapper) => { - const subscribers = /* @__PURE__ */ new Set(); - let derivedValue; - let unsubFromSource = null; - return { - subscribe: (run2) => { - subscribers.add(run2); - if (!unsubFromSource) { - unsubFromSource = source.subscribe( - (value, action, initialRun) => { - if (action || initialRun) { - const newValue = mapper(value, action); - if (newValue !== derivedValue) { - derivedValue = newValue; - for (const sub of subscribers) { - sub(derivedValue, action, initialRun); - } - } - } - } - ); - } - return () => { - subscribers.delete(run2); - if (unsubFromSource && subscribers.size === 0) { - unsubFromSource(); - unsubFromSource = null; - } - }; - } - }; -}; - -// src/stores/document/derived/history-store.ts -var historyStore = (view) => { - return derived(view.documentStore, (state2) => { - return state2.history; - }); -}; - -// src/view/components/container/controls-bar/controls-container.svelte -var import_obsidian3 = require("obsidian"); - // node_modules/svelte/src/runtime/store/index.js var subscriber_queue = []; function readable(value, start) { @@ -8624,7 +9416,7 @@ function writable(value, start = noop) { } return { set, update: update2, subscribe: subscribe2 }; } -function derived2(stores, fn, initial_value) { +function derived(stores, fn, initial_value) { const single = !Array.isArray(stores); const stores_array = single ? [stores] : stores; if (!stores_array.every(Boolean)) { @@ -8673,11 +9465,47 @@ function derived2(stores, fn, initial_value) { }); } +// src/lib/store/derived.ts +var derived2 = (source, mapper) => { + const subscribers = /* @__PURE__ */ new Set(); + let derivedValue; + let unsubFromSource = null; + return { + subscribe: (run2) => { + subscribers.add(run2); + if (!unsubFromSource) { + unsubFromSource = source.subscribe( + (value, action, initialRun) => { + if (action || initialRun) { + const newValue = mapper(value, action); + if (newValue !== derivedValue) { + derivedValue = newValue; + for (const sub of subscribers) { + sub(derivedValue, action, initialRun); + } + } + } + } + ); + } else { + run2(derivedValue, void 0, true); + } + return () => { + subscribers.delete(run2); + if (unsubFromSource && subscribers.size === 0) { + unsubFromSource(); + unsubFromSource = null; + } + }; + } + }; +}; + // src/stores/view/derived/ui-controls-store.ts -var uiControlsStore = (view) => derived(view.viewStore, (state2) => state2.ui.controls); +var uiControlsStore = (view) => derived2(view.viewStore, (state2) => state2.ui.controls); // src/view/components/container/shared/button.svelte -function create_fragment45(ctx) { +function create_fragment50(ctx) { let button; let button_class_value; let current; @@ -8821,7 +9649,7 @@ function create_fragment45(ctx) { } }; } -function instance45($$self, $$props, $$invalidate) { +function instance50($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; let { label } = $$props; let { tooltipPosition } = $$props; @@ -8859,7 +9687,7 @@ function instance45($$self, $$props, $$invalidate) { var Button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance45, create_fragment45, safe_not_equal, { + init(this, options, instance50, create_fragment50, safe_not_equal, { label: 0, tooltipPosition: 1, disabled: 2, @@ -8871,8 +9699,20 @@ var Button = class extends SvelteComponent { var button_default = Button; // src/stores/settings/derived/scrolling-store.ts -var ScrollSettingsStore = (view) => derived(view.plugin.settings, (state2) => state2.view.scrolling); -var showMinimapStore = (view) => derived(view.plugin.settings, (state2) => state2.view.showMinimap); +var ScrollSettingsStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.scrolling); +var showMinimapStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.showMinimap); + +// src/stores/settings/derived/view-settings-store.ts +var ShowLeftSidebarStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.showLeftSidebar); +var LeftSidebarActiveTabStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.leftSidebarActiveTab); +var ApplyGapBetweenCardsStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.applyGapBetweenCards); +var OutlineModeStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.outlineMode); +var MaintainEditMode = (view) => derived2(view.plugin.settings, (state2) => state2.view.maintainEditMode); +var AlwaysShowCardButtons = (view) => derived2(view.plugin.settings, (state2) => state2.view.alwaysShowCardButtons); +var HiddenVerticalToolbarButtons = (plugin) => derived2( + plugin.settings, + (state2) => state2.view.hiddenVerticalToolbarButtons +); // src/helpers/load-custom-icons.ts var import_obsidian = require("obsidian"); @@ -8967,65 +9807,698 @@ var loadCustomIcons = () => { } }; -// src/stores/settings/derived/view-settings-store.ts -var ShowLeftSidebarStore = (view) => derived(view.plugin.settings, (state2) => state2.view.showLeftSidebar); -var LeftSidebarActiveTabStore = (view) => derived(view.plugin.settings, (state2) => state2.view.leftSidebarActiveTab); -var ApplyGapBetweenCardsStore = (view) => derived(view.plugin.settings, (state2) => state2.view.applyGapBetweenCards); -var OutlineModeStore = (view) => derived(view.plugin.settings, (state2) => state2.view.outlineMode); -var MaintainEditMode = (view) => derived(view.plugin.settings, (state2) => state2.view.maintainEditMode); -var AlwaysShowCardButtons = (view) => derived(view.plugin.settings, (state2) => state2.view.alwaysShowCardButtons); - -// node_modules/tslib/tslib.es6.mjs -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); +// src/view/components/container/toolbar-vertical/vertical-toolbar-actions.ts +var VerticalToolbarActions = class { + constructor(view) { + this.view = view; + this.toggleHelp = () => { + this.view.viewStore.dispatch({ type: "view/hotkeys/toggle-modal" }); + }; + this.toggleStyleRules = () => { + this.view.viewStore.dispatch({ + type: "view/style-rules/toggle-modal" + }); + }; + this.toggleSettings = () => { + this.view.viewStore.dispatch({ type: "view/settings/toggle-modal" }); + }; + this.toggleMinimap = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/toggle-minimap" + }); + }; + this.toggleScrollModeH = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/toggle-horizontal-scrolling-mode" + }); + }; + this.toggleScrollModeV = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/toggle-vertical-scrolling-mode" + }); + }; + this.toggleGap = () => { + this.view.plugin.settings.dispatch({ + type: "view/modes/gap-between-cards/toggle" + }); + }; + this.toggleOutlineMode = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/modes/toggle-outline-mode" + }); + }; + this.zoomIn = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/set-zoom-level", + payload: { direction: "in" } + }); + }; + this.zoomOut = () => { + this.view.plugin.settings.dispatch({ + type: "settings/view/set-zoom-level", + payload: { direction: "out" } + }); + }; } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -// src/stores/view/derived/zoom-level-store.ts -var zoomLevelStore = (view) => derived(view.plugin.settings, (state2) => state2.view.zoomLevel); - -// src/stores/settings/reducers/change-zoom-level.ts -var formatNumber = (num) => parseFloat(num.toFixed(3)); -var zoomStep = 0.1; -var maxZoomLevel = 2; -var minZoomLevel = 0.05; -var changeZoomLevel = (state2, payload) => { - if ("value" in payload) { - state2.view.zoomLevel = payload.value; - } else { - state2.view.zoomLevel = payload.direction === "in" ? Math.min(state2.view.zoomLevel + zoomStep, maxZoomLevel) : Math.max(state2.view.zoomLevel - zoomStep, minZoomLevel); - } - state2.view.zoomLevel = formatNumber(state2.view.zoomLevel); }; -// src/view/components/container/controls-bar/components/helpers/create-zoom-menu.ts +// src/view/components/container/toolbar-vertical/vertical-toolbar-buttons-list.ts +var VerticalToolbarButtonsList = (view) => { + const hiddenControlsBarButtons = HiddenVerticalToolbarButtons(view.plugin); + const h = new VerticalToolbarActions(view); + return derived([hiddenControlsBarButtons], ([hiddenControlsBarButtons2]) => { + const set = new Set(hiddenControlsBarButtons2); + const buttons = [ + { + id: "minimap", + buttons: [ + { + label: lang.controls_toggle_minimap, + onClick: h.toggleMinimap, + icon: panel_right_dashed_default, + id: "minimap" + } + ] + }, + { + id: "settings", + buttons: [ + { + label: lang.controls_settings, + onClick: h.toggleSettings, + icon: settings_default, + id: "settings" + }, + { + label: lang.controls_hotkeys, + onClick: h.toggleHelp, + icon: keyboard_default, + id: "hotkeys" + }, + { + label: lang.controls_rules, + onClick: h.toggleStyleRules, + icon: palette_default, + id: "style-rules" + } + ] + }, + { + id: "scroll", + buttons: [ + { + label: lang.controls_toggle_scrolling_mode_horizontal, + onClick: h.toggleScrollModeH, + icon: customIcons.alignH, + id: "center-active-node-h" + }, + { + label: lang.controls_toggle_scrolling_mode_vertical, + onClick: h.toggleScrollModeV, + icon: customIcons.alignV, + id: "center-active-node-v" + }, + { + label: lang.controls_single_column, + onClick: h.toggleOutlineMode, + icon: customIcons.outline, + id: "outline-mode" + }, + { + label: lang.controls_gap_between_cards, + onClick: h.toggleGap, + icon: customIcons.gap, + id: "space-between-cards" + } + ] + } + ]; + return buttons.map((group) => { + return { + id: group.id, + buttons: group.buttons.filter((b) => !set.has(b.id)) + }; + }).filter((g) => g.buttons.length > 0); + }); +}; + +// src/view/components/container/toolbar-vertical/vertical-toolbar.svelte +function add_css(target) { + append_styles(target, "svelte-101pjig", ".controls-container.svelte-101pjig{right:var(--size-4-2);top:var(--size-4-2);gap:var(--size-4-2);display:flex;flex-direction:column;position:absolute;z-index:2}.controls-toggle.svelte-101pjig{display:none}.is-mobile{& .controls-toggle {\n display: block;\n };& .buttons-group[data-visible='false'] {\n display: none;\n }}"); +} +function get_each_context2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; +} +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[16] = list[i]; + return child_ctx; +} +function create_default_slot_1(ctx) { + let morevertical; + let current; + morevertical = new more_vertical_default({ props: { class: "svg-icon" } }); + return { + c() { + create_component(morevertical.$$.fragment); + }, + m(target, anchor) { + mount_component(morevertical, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(morevertical.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(morevertical.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(morevertical, detaching); + } + }; +} +function create_else_block(ctx) { + let switch_instance; + let switch_instance_anchor; + let current; + var switch_value = ( + /*button*/ + ctx[16].icon + ); + function switch_props(ctx2, dirty) { + return { props: { class: "svg-icon" } }; + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx)); + } + return { + c() { + if (switch_instance) + create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); + }, + m(target, anchor) { + if (switch_instance) + mount_component(switch_instance, target, anchor); + insert(target, switch_instance_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 2 && switch_value !== (switch_value = /*button*/ + ctx2[16].icon)) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + check_outros(); + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx2, dirty)); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { + } + }, + i(local) { + if (current) + return; + if (switch_instance) + transition_in(switch_instance.$$.fragment, local); + current = true; + }, + o(local) { + if (switch_instance) + transition_out(switch_instance.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(switch_instance_anchor); + } + if (switch_instance) + destroy_component(switch_instance, detaching); + } + }; +} +function create_if_block(ctx) { + let html_tag; + let raw_value = ( + /*button*/ + ctx[16].icon.svg + "" + ); + let html_anchor; + return { + c() { + html_tag = new HtmlTag(false); + html_anchor = empty(); + html_tag.a = html_anchor; + }, + m(target, anchor) { + html_tag.m(raw_value, target, anchor); + insert(target, html_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 2 && raw_value !== (raw_value = /*button*/ + ctx2[16].icon.svg + "")) + html_tag.p(raw_value); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(html_anchor); + html_tag.d(); + } + } + }; +} +function create_default_slot49(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block, create_else_block]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ("svg" in /*button*/ + ctx2[16].icon) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); + } + }; +} +function create_each_block_1(key_1, ctx) { + let first; + let button_1; + let current; + button_1 = new button_default({ + props: { + active: ( + /*$activeStates*/ + ctx[2][ + /*button*/ + ctx[16].id + ] + ), + classes: "control-item", + label: ( + /*button*/ + ctx[16].label + ), + tooltipPosition: "left", + $$slots: { default: [create_default_slot49] }, + $$scope: { ctx } + } + }); + button_1.$on("click", function() { + if (is_function( + /*button*/ + ctx[16].onClick + )) + ctx[16].onClick.apply(this, arguments); + }); + return { + key: key_1, + first: null, + c() { + first = empty(); + create_component(button_1.$$.fragment); + this.first = first; + }, + m(target, anchor) { + insert(target, first, anchor); + mount_component(button_1, target, anchor); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const button_1_changes = {}; + if (dirty & /*$activeStates, $buttons*/ + 6) + button_1_changes.active = /*$activeStates*/ + ctx[2][ + /*button*/ + ctx[16].id + ]; + if (dirty & /*$buttons*/ + 2) + button_1_changes.label = /*button*/ + ctx[16].label; + if (dirty & /*$$scope, $buttons*/ + 524290) { + button_1_changes.$$scope = { dirty, ctx }; + } + button_1.$set(button_1_changes); + }, + i(local) { + if (current) + return; + transition_in(button_1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(button_1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(first); + } + destroy_component(button_1, detaching); + } + }; +} +function create_each_block2(key_1, ctx) { + let div; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let t; + let current; + let each_value_1 = ensure_array_like( + /*group*/ + ctx[13].buttons + ); + const get_key = (ctx2) => ( + /*button*/ + ctx2[16].label + ); + for (let i = 0; i < each_value_1.length; i += 1) { + let child_ctx = get_each_context_1(ctx, each_value_1, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block_1(key, child_ctx)); + } + return { + key: key_1, + first: null, + c() { + div = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + t = space(); + attr(div, "class", "buttons-group buttons-group--vertical"); + attr( + div, + "data-visible", + /*$showControls*/ + ctx[0] + ); + this.first = div; + }, + m(target, anchor) { + insert(target, div, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div, null); + } + } + append(div, t); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*$activeStates, $buttons*/ + 6) { + each_value_1 = ensure_array_like( + /*group*/ + ctx[13].buttons + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_1, each_1_lookup, div, outro_and_destroy_block, create_each_block_1, t, get_each_context_1); + check_outros(); + } + if (!current || dirty & /*$showControls*/ + 1) { + attr( + div, + "data-visible", + /*$showControls*/ + ctx[0] + ); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; +} +function create_fragment51(ctx) { + let div1; + let div0; + let button_1; + let t; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let current; + button_1 = new button_default({ + props: { + active: ( + /*$showControls*/ + ctx[0] + ), + label: lang.controls_toggle_bar, + tooltipPosition: "left", + $$slots: { default: [create_default_slot_1] }, + $$scope: { ctx } + } + }); + button_1.$on( + "click", + /*toggleShowControls*/ + ctx[4] + ); + let each_value = ensure_array_like( + /*$buttons*/ + ctx[1] + ); + const get_key = (ctx2) => ( + /*group*/ + ctx2[13].id + ); + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context2(ctx, each_value, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block2(key, child_ctx)); + } + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(button_1.$$.fragment); + t = space(); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "buttons-group controls-toggle svelte-101pjig"); + attr(div1, "class", "controls-container svelte-101pjig"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(button_1, div0, null); + append(div1, t); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div1, null); + } + } + current = true; + }, + p(ctx2, [dirty]) { + const button_1_changes = {}; + if (dirty & /*$showControls*/ + 1) + button_1_changes.active = /*$showControls*/ + ctx2[0]; + if (dirty & /*$$scope*/ + 524288) { + button_1_changes.$$scope = { dirty, ctx: ctx2 }; + } + button_1.$set(button_1_changes); + if (dirty & /*$showControls, $buttons, $activeStates*/ + 7) { + each_value = ensure_array_like( + /*$buttons*/ + ctx2[1] + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div1, outro_and_destroy_block, create_each_block2, null, get_each_context2); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(button_1.$$.fragment, local); + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + transition_out(button_1.$$.fragment, local); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div1); + } + destroy_component(button_1); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; +} +function instance51($$self, $$props, $$invalidate) { + let $showControls; + let $buttons; + let $activeStates; + const view = getView(); + const showControls = writable(false); + component_subscribe($$self, showControls, (value) => $$invalidate(0, $showControls = value)); + const toggleShowControls = () => { + showControls.update((v) => !v); + }; + const controls = uiControlsStore(view); + const showMinimap = showMinimapStore(view); + const scrollSettingsStore = ScrollSettingsStore(view); + const applyGapBetweenCards = ApplyGapBetweenCardsStore(view); + const outlineMode = OutlineModeStore(view); + const buttons = VerticalToolbarButtonsList(view); + component_subscribe($$self, buttons, (value) => $$invalidate(1, $buttons = value)); + const activeStates = derived([showMinimap, controls, scrollSettingsStore, outlineMode, applyGapBetweenCards], ([ + showMinimap2, + controls2, + scrollSettingsStore2, + outlineMode2, + applyGapBetweenCards2 + ]) => { + return { + minimap: showMinimap2, + settings: controls2.showSettingsSidebar, + hotkeys: controls2.showHelpSidebar, + "style-rules": controls2.showStyleRulesModal, + "center-active-node-h": scrollSettingsStore2.centerActiveNodeH, + "center-active-node-v": scrollSettingsStore2.centerActiveNodeV, + "outline-mode": outlineMode2, + "space-between-cards": applyGapBetweenCards2 + }; + }); + component_subscribe($$self, activeStates, (value) => $$invalidate(2, $activeStates = value)); + return [ + $showControls, + $buttons, + $activeStates, + showControls, + toggleShowControls, + buttons, + activeStates + ]; +} +var Vertical_toolbar = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance51, create_fragment51, safe_not_equal, {}, add_css); + } +}; +var vertical_toolbar_default = Vertical_toolbar; + +// src/stores/view/derived/zoom-level-store.ts +var zoomLevelStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.zoomLevel); + +// src/view/components/container/toolbar-vertical/helpers/create-zoom-menu.ts var import_obsidian2 = require("obsidian"); // node_modules/tiny-invariant/dist/esm/tiny-invariant.js -var isProduction = false; +var isProduction = true; var prefix = "Invariant failed"; function invariant(condition, message) { if (condition) { @@ -9061,16 +10534,16 @@ var combineRects = (rect1, rect2) => { return new DOMRect(left, top, width, height); }; -// src/view/components/container/controls-bar/components/helpers/fit-document-height-into-view.ts +// src/view/components/container/toolbar-vertical/helpers/fit-document-height-into-view.ts var fitDocumentHeightIntoView = async (view) => { invariant(view.container); const initialZoomLevel = get_store_value(zoomLevelStore(view)); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: 1 } }); const columns = Array.from( - view.containerEl.querySelectorAll(".column") + view.container.querySelectorAll(".column") ); let result = 1; if (columns.length) { @@ -9081,37 +10554,38 @@ var fitDocumentHeightIntoView = async (view) => { }).sort((a, b) => a - b); const height = groupHeights[groupHeights.length - 1]; const width = getCombinedBoundingClientRect(columns).width; - const heightScale = view.container.getBoundingClientRect().height / (height + 100); - const widthScale = view.container.getBoundingClientRect().width / (width + 100); + const boundingClientRect = view.container.getBoundingClientRect(); + const heightScale = boundingClientRect.height / (height + 100); + const widthScale = boundingClientRect.width / (width + 100); result = Math.min(heightScale, widthScale); } view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: initialZoomLevel } }); return result; }; -// src/view/components/container/controls-bar/components/helpers/fit-branch-into-view.ts +// src/view/components/container/toolbar-vertical/helpers/fit-branch-into-view.ts var fitBranchIntoView = async (view) => { invariant(view.container); const initialZoomLevel = get_store_value(zoomLevelStore(view)); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: 1 } }); let result = 1; const parents = Array.from( - view.containerEl.querySelectorAll(".active-parent") + view.container.querySelectorAll(".active-parent") ); - const activeNode = view.containerEl.querySelector( + const activeNode = view.container.querySelector( ".active-node" ); const children2 = Array.from( - view.containerEl.querySelectorAll(".active-child") + view.container.querySelectorAll(".active-child") ); const siblings = Array.from( - view.containerEl.querySelectorAll(".active-sibling") + view.container.querySelectorAll(".active-sibling") ); const combinedRect = getCombinedBoundingClientRect([ ...parents, @@ -9119,41 +10593,42 @@ var fitBranchIntoView = async (view) => { ...siblings, ...children2 ]); - const heightScale = view.container.getBoundingClientRect().height / (combinedRect.height + 100); - const widthScale = view.container.getBoundingClientRect().width / (combinedRect.width + 100); + const boundingClientRect = view.container.getBoundingClientRect(); + const heightScale = boundingClientRect.height / (combinedRect.height + 100); + const widthScale = boundingClientRect.width / (combinedRect.width + 100); result = Math.min(heightScale, widthScale); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: initialZoomLevel } }); return result; }; -// src/view/components/container/controls-bar/components/helpers/create-zoom-menu.ts +// src/view/components/container/toolbar-vertical/helpers/create-zoom-menu.ts var staticZoomOptions = [ - { label: "5%", scale: 0.05 }, - { label: "10%", scale: 0.1 }, - { label: "20%", scale: 0.2 }, - { label: "30%", scale: 0.3 }, - { label: "40%", scale: 0.4 }, - { label: "50%", scale: 0.5 }, - { label: "60%", scale: 0.6 }, - { label: "70%", scale: 0.7 }, - { label: "80%", scale: 0.8 }, - { label: "90%", scale: 0.9 }, - { label: "100%", scale: 1 }, - { label: "125%", scale: 1.25 }, - { label: "150%", scale: 1.5 }, + { label: "200%", scale: 2 }, { label: "175%", scale: 1.75 }, - { label: "200%", scale: 2 } + { label: "150%", scale: 1.5 }, + { label: "125%", scale: 1.25 }, + { label: "100%", scale: 1 }, + { label: "90%", scale: 0.9 }, + { label: "80%", scale: 0.8 }, + { label: "70%", scale: 0.7 }, + { label: "60%", scale: 0.6 }, + { label: "50%", scale: 0.5 }, + { label: "40%", scale: 0.4 }, + { label: "30%", scale: 0.3 }, + { label: "20%", scale: 0.2 }, + { label: "10%", scale: 0.1 }, + { label: "5%", scale: 0.05 } ]; var dynamicZoomOptions = [ { - label: "Fit document height into view", + label: "Fit document", scale: fitDocumentHeightIntoView }, { - label: "Fit active branch into view", + label: "Fit active branch", scale: fitBranchIntoView } ]; @@ -9168,7 +10643,7 @@ var createZoomMenu = (props) => { hoverZoom = newValue; } props.view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: newValue } @@ -9201,7 +10676,7 @@ var createZoomMenu = (props) => { menuDom.addEventListener("mouseleave", () => { if (hoverZoom !== lastClickedZoom) { props.view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: lastClickedZoom } }); } @@ -9216,117 +10691,245 @@ var createZoomMenu = (props) => { menu.close(); } const buttonRect = props.event.target.getBoundingClientRect(); + const viewRect = props.view.container.getBoundingClientRect(); menu.showAtPosition({ x: get_store_value(showMinimapStore(props.view)) ? buttonRect.left - props.state.menuWidth - 10 : buttonRect.left - 10, - y: buttonRect.top + buttonRect.height / 2 - props.state.menuHeight / 2 + y: viewRect.bottom - 10 - props.state.menuHeight }); menu.onHide(() => { props.state.lastMenuHideEvent_ms = Date.now(); }); }; -// src/stores/view/derived/keyboard-store.ts -var KeyboardStore = (view) => derived(view.viewStore, (state2) => state2.keyboard); +// src/stores/settings/reducers/change-zoom-level.ts +var formatNumber = (num) => parseFloat(num.toFixed(3)); +var zoomStep = 0.1; +var maxZoomLevel = 2; +var minZoomLevel = 0.05; +var changeZoomLevel = (state2, payload) => { + if ("value" in payload) { + state2.view.zoomLevel = payload.value; + } else { + state2.view.zoomLevel = payload.direction === "in" ? Math.min(state2.view.zoomLevel + zoomStep, maxZoomLevel) : Math.max(state2.view.zoomLevel - zoomStep, minZoomLevel); + } + state2.view.zoomLevel = formatNumber(state2.view.zoomLevel); +}; -// src/view/components/container/controls-bar/components/zoom-buttons.svelte -function create_default_slot_3(ctx) { - let zoomin; - let current; - zoomin = new plus_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(zoomin.$$.fragment); - }, - m(target, anchor) { - mount_component(zoomin, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(zoomin.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(zoomin.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(zoomin, detaching); - } - }; +// src/view/components/container/toolbar-vertical/zoom-buttons/zoom-buttons-list.ts +var ZoomButtonsList = (view, restoreZoom, showZoomPopupMenu) => { + const hiddenControlsBarButtons = HiddenVerticalToolbarButtons(view.plugin); + const h = new VerticalToolbarActions(view); + return derived([hiddenControlsBarButtons], ([hiddenControlsBarButtons2]) => { + const set = new Set(hiddenControlsBarButtons2); + const buttons = [ + { + id: "zoom", + buttons: [ + { + label: lang.controls_zoom_in, + onClick: h.zoomIn, + icon: plus_default, + id: "zoom-in" + }, + { + label: lang.controls_zoom_reset, + onClick: restoreZoom, + icon: rotate_ccw_default, + id: "zoom-reset" + }, + { + label: lang.controls_zoom_presets, + onClick: showZoomPopupMenu, + icon: scan_search_default, + id: "zoom-presets" + }, + { + label: lang.controls_zoom_out, + onClick: h.zoomOut, + icon: minus_default, + id: "zoom-out" + } + ] + } + ]; + return buttons.map((group) => { + return { + id: group.id, + buttons: group.buttons.filter((b) => !set.has(b.id)) + }; + }).filter((g) => g.buttons.length > 0); + }); +}; + +// src/stores/view/derived/keyboard-store.ts +var KeyboardStore = (view) => derived2(view.viewStore, (state2) => state2.keyboard); + +// src/view/components/container/toolbar-vertical/zoom-buttons/zoom-buttons.svelte +function add_css2(target) { + append_styles(target, "svelte-12oedbu", ".zoom-buttons-container.svelte-12oedbu{right:var(--size-4-2);bottom:var(--size-4-2);gap:var(--size-4-2);display:flex;flex-direction:column;position:absolute;z-index:2}"); } -function create_else_block(ctx) { - let rotateccw; +function get_each_context3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[19] = list[i]; + return child_ctx; +} +function create_if_block2(ctx) { + let div; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); let current; - rotateccw = new rotate_ccw_default({ props: { class: "svg-icon" } }); + let each_value = ensure_array_like( + /*$buttons*/ + ctx[0][0].buttons + ); + const get_key = (ctx2) => ( + /*button*/ + ctx2[19].label + ); + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context3(ctx, each_value, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block3(key, child_ctx)); + } return { c() { - create_component(rotateccw.$$.fragment); + div = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div, "class", "buttons-group buttons-group--vertical"); }, m(target, anchor) { - mount_component(rotateccw, target, anchor); + insert(target, div, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div, null); + } + } current = true; }, + p(ctx2, dirty) { + if (dirty & /*$activeStates, $buttons, $disabledStates, $showUndoRestZoomButton*/ + 15) { + each_value = ensure_array_like( + /*$buttons*/ + ctx2[0][0].buttons + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div, outro_and_destroy_block, create_each_block3, null, get_each_context3); + check_outros(); + } + }, i(local) { if (current) return; - transition_in(rotateccw.$$.fragment, local); + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } current = true; }, o(local) { - transition_out(rotateccw.$$.fragment, local); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } current = false; }, d(detaching) { - destroy_component(rotateccw, detaching); + if (detaching) { + detach(div); + } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } } }; } -function create_if_block(ctx) { - let rotatecw; +function create_else_block_1(ctx) { + let switch_instance; + let switch_instance_anchor; let current; - rotatecw = new rotate_cw_default({ props: { class: "svg-icon" } }); + var switch_value = ( + /*button*/ + ctx[19].icon + ); + function switch_props(ctx2, dirty) { + return { props: { class: "svg-icon" } }; + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx)); + } return { c() { - create_component(rotatecw.$$.fragment); + if (switch_instance) + create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); }, m(target, anchor) { - mount_component(rotatecw, target, anchor); + if (switch_instance) + mount_component(switch_instance, target, anchor); + insert(target, switch_instance_anchor, anchor); current = true; }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 1 && switch_value !== (switch_value = /*button*/ + ctx2[19].icon)) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + check_outros(); + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx2, dirty)); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { + } + }, i(local) { if (current) return; - transition_in(rotatecw.$$.fragment, local); + if (switch_instance) + transition_in(switch_instance.$$.fragment, local); current = true; }, o(local) { - transition_out(rotatecw.$$.fragment, local); + if (switch_instance) + transition_out(switch_instance.$$.fragment, local); current = false; }, d(detaching) { - destroy_component(rotatecw, detaching); + if (detaching) { + detach(switch_instance_anchor); + } + if (switch_instance) + destroy_component(switch_instance, detaching); } }; } -function create_default_slot_2(ctx) { +function create_if_block_2(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block, create_else_block]; + const if_block_creators = [create_if_block_3, create_else_block2]; const if_blocks = []; - function select_block_type(ctx2, dirty) { + function select_block_type_1(ctx2, dirty) { if ( - /*showUndoRestZoomButton*/ - ctx2[1] + /*$showUndoRestZoomButton*/ + ctx2[3] ) return 0; return 1; } - current_block_type_index = select_block_type(ctx, -1); + current_block_type_index = select_block_type_1(ctx, -1); if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); return { c() { @@ -9340,7 +10943,7 @@ function create_default_slot_2(ctx) { }, p(ctx2, dirty) { let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); + current_block_type_index = select_block_type_1(ctx2, dirty); if (current_block_type_index !== previous_block_index) { group_outros(); transition_out(if_blocks[previous_block_index], 1, 1, () => { @@ -9375,333 +10978,410 @@ function create_default_slot_2(ctx) { } }; } -function create_default_slot_1(ctx) { - let scansearch; - let current; - scansearch = new scan_search_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(scansearch.$$.fragment); - }, - m(target, anchor) { - mount_component(scansearch, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(scansearch.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(scansearch.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(scansearch, detaching); - } - }; -} -function create_default_slot44(ctx) { - let zoomout; - let current; - zoomout = new minus_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(zoomout.$$.fragment); - }, - m(target, anchor) { - mount_component(zoomout, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(zoomout.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(zoomout.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(zoomout, detaching); - } - }; -} -function create_fragment46(ctx) { - let div; - let button0; - let t0; - let button1; - let t1; - let button2; - let t2; - let button3; - let current; - button0 = new button_default({ - props: { - classes: "control-item", - disabled: ( - /*$zoomLevel*/ - ctx[2] >= maxZoomLevel - ), - label: lang.controls_zoom_in, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_3] }, - $$scope: { ctx } - } - }); - button0.$on( - "click", - /*zoomIn*/ - ctx[4] +function create_if_block_1(ctx) { + let html_tag; + let raw_value = ( + /*button*/ + ctx[19].icon.svg + "" ); - button1 = new button_default({ + let html_anchor; + return { + c() { + html_tag = new HtmlTag(false); + html_anchor = empty(); + html_tag.a = html_anchor; + }, + m(target, anchor) { + html_tag.m(raw_value, target, anchor); + insert(target, html_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 1 && raw_value !== (raw_value = /*button*/ + ctx2[19].icon.svg + "")) + html_tag.p(raw_value); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(html_anchor); + html_tag.d(); + } + } + }; +} +function create_else_block2(ctx) { + let rotateccw; + let current; + rotateccw = new rotate_ccw_default({ props: { class: "svg-icon" } }); + return { + c() { + create_component(rotateccw.$$.fragment); + }, + m(target, anchor) { + mount_component(rotateccw, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(rotateccw.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(rotateccw.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(rotateccw, detaching); + } + }; +} +function create_if_block_3(ctx) { + let rotatecw; + let current; + rotatecw = new rotate_cw_default({ props: { class: "svg-icon" } }); + return { + c() { + create_component(rotatecw.$$.fragment); + }, + m(target, anchor) { + mount_component(rotatecw, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(rotatecw.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(rotatecw.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(rotatecw, detaching); + } + }; +} +function create_default_slot50(ctx) { + let current_block_type_index; + let if_block; + let t; + let current; + const if_block_creators = [create_if_block_1, create_if_block_2, create_else_block_1]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ("svg" in /*button*/ + ctx2[19].icon) + return 0; + if ( + /*button*/ + ctx2[19].id === "zoom-reset" + ) + return 1; + return 2; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + t = space(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, t, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(t.parentNode, t); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(t); + } + if_blocks[current_block_type_index].d(detaching); + } + }; +} +function create_each_block3(key_1, ctx) { + let first; + let button_1; + let current; + button_1 = new button_default({ props: { - classes: "control-item", - disabled: ( - /*showUndoRestZoomButton*/ - ctx[1] ? false : ( - /*$zoomLevel*/ - ctx[2] === 1 - ) - ), - label: lang.controls_zoom_reset, active: ( - /*showUndoRestZoomButton*/ - ctx[1] ? true : ( - /*$zoomLevel*/ - ctx[2] !== 1 - ) + /*$activeStates*/ + ctx[1][ + /*button*/ + ctx[19].id + ] + ), + classes: "control-item", + label: ( + /*button*/ + ctx[19].label ), tooltipPosition: "left", - $$slots: { default: [create_default_slot_2] }, - $$scope: { ctx } - } - }); - button1.$on( - "click", - /*restoreZoom*/ - ctx[6] - ); - button2 = new button_default({ - props: { - classes: "control-item", - label: lang.controls_zoom_presets, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_1] }, - $$scope: { ctx } - } - }); - button2.$on( - "click", - /*showZoomPopupMenu*/ - ctx[8] - ); - button3 = new button_default({ - props: { - classes: "control-item", disabled: ( - /*$zoomLevel*/ - ctx[2] <= minZoomLevel + /*$disabledStates*/ + ctx[2][ + /*button*/ + ctx[19].id + ] ), - label: lang.controls_zoom_out, - tooltipPosition: "left", - $$slots: { default: [create_default_slot44] }, + $$slots: { default: [create_default_slot50] }, $$scope: { ctx } } }); - button3.$on( - "click", - /*zoomOut*/ - ctx[5] + button_1.$on("click", function() { + if (is_function( + /*button*/ + ctx[19].onClick + )) + ctx[19].onClick.apply(this, arguments); + }); + return { + key: key_1, + first: null, + c() { + first = empty(); + create_component(button_1.$$.fragment); + this.first = first; + }, + m(target, anchor) { + insert(target, first, anchor); + mount_component(button_1, target, anchor); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const button_1_changes = {}; + if (dirty & /*$activeStates, $buttons*/ + 3) + button_1_changes.active = /*$activeStates*/ + ctx[1][ + /*button*/ + ctx[19].id + ]; + if (dirty & /*$buttons*/ + 1) + button_1_changes.label = /*button*/ + ctx[19].label; + if (dirty & /*$disabledStates, $buttons*/ + 5) + button_1_changes.disabled = /*$disabledStates*/ + ctx[2][ + /*button*/ + ctx[19].id + ]; + if (dirty & /*$$scope, $buttons, $showUndoRestZoomButton*/ + 4194313) { + button_1_changes.$$scope = { dirty, ctx }; + } + button_1.$set(button_1_changes); + }, + i(local) { + if (current) + return; + transition_in(button_1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(button_1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(first); + } + destroy_component(button_1, detaching); + } + }; +} +function create_fragment52(ctx) { + let div; + let current; + let if_block = ( + /*$buttons*/ + ctx[0].length > 0 && create_if_block2(ctx) ); return { c() { div = element("div"); - create_component(button0.$$.fragment); - t0 = space(); - create_component(button1.$$.fragment); - t1 = space(); - create_component(button2.$$.fragment); - t2 = space(); - create_component(button3.$$.fragment); - attr(div, "class", "buttons-group buttons-group--vertical"); - attr( - div, - "data-visible", - /*showControls*/ - ctx[0] - ); + if (if_block) + if_block.c(); + attr(div, "class", "zoom-buttons-container svelte-12oedbu"); }, m(target, anchor) { insert(target, div, anchor); - mount_component(button0, div, null); - append(div, t0); - mount_component(button1, div, null); - append(div, t1); - mount_component(button2, div, null); - append(div, t2); - mount_component(button3, div, null); + if (if_block) + if_block.m(div, null); current = true; }, p(ctx2, [dirty]) { - const button0_changes = {}; - if (dirty & /*$zoomLevel*/ - 4) - button0_changes.disabled = /*$zoomLevel*/ - ctx2[2] >= maxZoomLevel; - if (dirty & /*$$scope*/ - 8192) { - button0_changes.$$scope = { dirty, ctx: ctx2 }; - } - button0.$set(button0_changes); - const button1_changes = {}; - if (dirty & /*showUndoRestZoomButton, $zoomLevel*/ - 6) - button1_changes.disabled = /*showUndoRestZoomButton*/ - ctx2[1] ? false : ( - /*$zoomLevel*/ - ctx2[2] === 1 - ); - if (dirty & /*showUndoRestZoomButton, $zoomLevel*/ - 6) - button1_changes.active = /*showUndoRestZoomButton*/ - ctx2[1] ? true : ( - /*$zoomLevel*/ - ctx2[2] !== 1 - ); - if (dirty & /*$$scope, showUndoRestZoomButton*/ - 8194) { - button1_changes.$$scope = { dirty, ctx: ctx2 }; - } - button1.$set(button1_changes); - const button2_changes = {}; - if (dirty & /*$$scope*/ - 8192) { - button2_changes.$$scope = { dirty, ctx: ctx2 }; - } - button2.$set(button2_changes); - const button3_changes = {}; - if (dirty & /*$zoomLevel*/ - 4) - button3_changes.disabled = /*$zoomLevel*/ - ctx2[2] <= minZoomLevel; - if (dirty & /*$$scope*/ - 8192) { - button3_changes.$$scope = { dirty, ctx: ctx2 }; - } - button3.$set(button3_changes); - if (!current || dirty & /*showControls*/ - 1) { - attr( - div, - "data-visible", - /*showControls*/ - ctx2[0] - ); + if ( + /*$buttons*/ + ctx2[0].length > 0 + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty & /*$buttons*/ + 1) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block2(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div, null); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); } }, i(local) { if (current) return; - transition_in(button0.$$.fragment, local); - transition_in(button1.$$.fragment, local); - transition_in(button2.$$.fragment, local); - transition_in(button3.$$.fragment, local); + transition_in(if_block); current = true; }, o(local) { - transition_out(button0.$$.fragment, local); - transition_out(button1.$$.fragment, local); - transition_out(button2.$$.fragment, local); - transition_out(button3.$$.fragment, local); + transition_out(if_block); current = false; }, d(detaching) { if (detaching) { detach(div); } - destroy_component(button0); - destroy_component(button1); - destroy_component(button2); - destroy_component(button3); + if (if_block) + if_block.d(); } }; } -function instance46($$self, $$props, $$invalidate) { +function instance52($$self, $$props, $$invalidate) { let $keyboardStore; - let $zoomLevel; - let { showControls } = $$props; + let $buttons; + let $activeStates; + let $disabledStates; + let $showUndoRestZoomButton; const view = getView(); const keyboardStore = KeyboardStore(view); component_subscribe($$self, keyboardStore, (value) => $$invalidate(10, $keyboardStore = value)); - const zoomIn = () => { - view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", - payload: { direction: "in" } - }); - }; - const zoomOut = () => { - view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", - payload: { direction: "out" } - }); - }; + const zoomLevel = zoomLevelStore(view); + const showUndoRestZoomButton = writable(false); + component_subscribe($$self, showUndoRestZoomButton, (value) => $$invalidate(3, $showUndoRestZoomButton = value)); let zoomValueBeforeReset = -1; + let clearSavedZoomTimeoutRef = null; + const clearSavedZoomValue = () => { + if (clearSavedZoomTimeoutRef) + clearTimeout(clearSavedZoomTimeoutRef); + $$invalidate(9, zoomValueBeforeReset = -1); + }; + const saveZoomValue = () => { + clearSavedZoomValue(); + $$invalidate(9, zoomValueBeforeReset = get_store_value(zoomLevelStore(view))); + clearSavedZoomTimeoutRef = setTimeout( + () => { + $$invalidate(9, zoomValueBeforeReset = -1); + }, + 1e3 * 120 + ); + }; const restoreZoom = () => { - if (showUndoRestZoomButton) { + if (get_store_value(showUndoRestZoomButton)) { view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: zoomValueBeforeReset } }); - $$invalidate(9, zoomValueBeforeReset = -1); + clearSavedZoomValue(); } else { - $$invalidate(9, zoomValueBeforeReset = get_store_value(zoomLevelStore(view))); + saveZoomValue(); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: 1 } }); } }; - const zoomLevel = zoomLevelStore(view); - component_subscribe($$self, zoomLevel, (value) => $$invalidate(2, $zoomLevel = value)); const zoomMenuState = { menuHeight: 0, menuWidth: 0, lastMenuHideEvent_ms: 0 }; - const showZoomPopupMenu = (event) => __awaiter(void 0, void 0, void 0, function* () { + const showZoomPopupMenu = (event) => { if (Date.now() - zoomMenuState.lastMenuHideEvent_ms < 100) return; createZoomMenu({ event, view, state: zoomMenuState }); - }); - let showUndoRestZoomButton = false; - $$self.$$set = ($$props2) => { - if ("showControls" in $$props2) - $$invalidate(0, showControls = $$props2.showControls); }; + const buttons = ZoomButtonsList(view, restoreZoom, showZoomPopupMenu); + component_subscribe($$self, buttons, (value) => $$invalidate(0, $buttons = value)); + const activeStates = derived([zoomLevel, showUndoRestZoomButton], ([zoomLevel2, showUndoRestZoomButton2]) => { + return { + "zoom-reset": showUndoRestZoomButton2 ? true : zoomLevel2 !== 1 + }; + }); + component_subscribe($$self, activeStates, (value) => $$invalidate(1, $activeStates = value)); + const disabledStates = derived([zoomLevel, showUndoRestZoomButton], ([zoomLevel2, showUndoRestZoomButton2]) => { + return { + "zoom-in": zoomLevel2 >= maxZoomLevel, + "zoom-out": zoomLevel2 <= minZoomLevel, + "zoom-reset": showUndoRestZoomButton2 ? false : zoomLevel2 === 1 + }; + }); + component_subscribe($$self, disabledStates, (value) => $$invalidate(2, $disabledStates = value)); $$self.$$.update = () => { if ($$self.$$.dirty & /*$keyboardStore, zoomValueBeforeReset*/ 1536) { $: { - $$invalidate(1, showUndoRestZoomButton = $keyboardStore.shift && zoomValueBeforeReset !== -1); + showUndoRestZoomButton.set($keyboardStore.shift && zoomValueBeforeReset !== -1); } } }; return [ - showControls, - showUndoRestZoomButton, - $zoomLevel, + $buttons, + $activeStates, + $disabledStates, + $showUndoRestZoomButton, keyboardStore, - zoomIn, - zoomOut, - restoreZoom, - zoomLevel, - showZoomPopupMenu, + showUndoRestZoomButton, + buttons, + activeStates, + disabledStates, zoomValueBeforeReset, $keyboardStore ]; @@ -9709,1037 +11389,11 @@ function instance46($$self, $$props, $$invalidate) { var Zoom_buttons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance46, create_fragment46, safe_not_equal, { showControls: 0 }); + init(this, options, instance52, create_fragment52, safe_not_equal, {}, add_css2); } }; var zoom_buttons_default = Zoom_buttons; -// src/view/components/container/controls-bar/controls-container.svelte -function add_css(target) { - append_styles(target, "svelte-1316cva", ".controls-container.svelte-1316cva{right:var(--size-4-2);top:var(--size-4-2);gap:var(--size-4-2);display:flex;flex-direction:column;position:absolute;z-index:2}.controls-toggle.svelte-1316cva{display:none}.is-mobile{& .controls-toggle {\n display: block;\n };& .buttons-group[data-visible='false'] {\n display: none;\n }}"); -} -function create_default_slot_11(ctx) { - let morevertical; - let current; - morevertical = new more_vertical_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(morevertical.$$.fragment); - }, - m(target, anchor) { - mount_component(morevertical, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(morevertical.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(morevertical.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(morevertical, detaching); - } - }; -} -function create_default_slot_10(ctx) { - let panelright; - let current; - panelright = new panel_right_dashed_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(panelright.$$.fragment); - }, - m(target, anchor) { - mount_component(panelright, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(panelright.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(panelright.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(panelright, detaching); - } - }; -} -function create_default_slot_9(ctx) { - let settings; - let current; - settings = new settings_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(settings.$$.fragment); - }, - m(target, anchor) { - mount_component(settings, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(settings.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(settings.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(settings, detaching); - } - }; -} -function create_default_slot_8(ctx) { - let keyboard; - let current; - keyboard = new keyboard_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(keyboard.$$.fragment); - }, - m(target, anchor) { - mount_component(keyboard, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(keyboard.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(keyboard.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(keyboard, detaching); - } - }; -} -function create_default_slot_7(ctx) { - let palette; - let current; - palette = new palette_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(palette.$$.fragment); - }, - m(target, anchor) { - mount_component(palette, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(palette.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(palette.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(palette, detaching); - } - }; -} -function create_default_slot_6(ctx) { - let html_tag; - let raw_value = customIcons.alignH.svg + ""; - let html_anchor; - return { - c() { - html_tag = new HtmlTag(false); - html_anchor = empty(); - html_tag.a = html_anchor; - }, - m(target, anchor) { - html_tag.m(raw_value, target, anchor); - insert(target, html_anchor, anchor); - }, - p: noop, - d(detaching) { - if (detaching) { - detach(html_anchor); - html_tag.d(); - } - } - }; -} -function create_default_slot_5(ctx) { - let html_tag; - let raw_value = customIcons.alignV.svg + ""; - let html_anchor; - return { - c() { - html_tag = new HtmlTag(false); - html_anchor = empty(); - html_tag.a = html_anchor; - }, - m(target, anchor) { - html_tag.m(raw_value, target, anchor); - insert(target, html_anchor, anchor); - }, - p: noop, - d(detaching) { - if (detaching) { - detach(html_anchor); - html_tag.d(); - } - } - }; -} -function create_default_slot_4(ctx) { - let html_tag; - let raw_value = customIcons.outline.svg + ""; - let html_anchor; - return { - c() { - html_tag = new HtmlTag(false); - html_anchor = empty(); - html_tag.a = html_anchor; - }, - m(target, anchor) { - html_tag.m(raw_value, target, anchor); - insert(target, html_anchor, anchor); - }, - p: noop, - d(detaching) { - if (detaching) { - detach(html_anchor); - html_tag.d(); - } - } - }; -} -function create_default_slot_32(ctx) { - let html_tag; - let raw_value = customIcons.gap.svg + ""; - let html_anchor; - return { - c() { - html_tag = new HtmlTag(false); - html_anchor = empty(); - html_tag.a = html_anchor; - }, - m(target, anchor) { - html_tag.m(raw_value, target, anchor); - insert(target, html_anchor, anchor); - }, - p: noop, - d(detaching) { - if (detaching) { - detach(html_anchor); - html_tag.d(); - } - } - }; -} -function create_default_slot_22(ctx) { - let historyicon; - let current; - historyicon = new history_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(historyicon.$$.fragment); - }, - m(target, anchor) { - mount_component(historyicon, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(historyicon.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(historyicon.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(historyicon, detaching); - } - }; -} -function create_default_slot_12(ctx) { - let undoicon; - let current; - undoicon = new undo_2_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(undoicon.$$.fragment); - }, - m(target, anchor) { - mount_component(undoicon, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(undoicon.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(undoicon.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(undoicon, detaching); - } - }; -} -function create_default_slot45(ctx) { - let redoicon; - let current; - redoicon = new redo_2_default({ props: { class: "svg-icon" } }); - return { - c() { - create_component(redoicon.$$.fragment); - }, - m(target, anchor) { - mount_component(redoicon, target, anchor); - current = true; - }, - p: noop, - i(local) { - if (current) - return; - transition_in(redoicon.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(redoicon.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(redoicon, detaching); - } - }; -} -function create_fragment47(ctx) { - let div6; - let div0; - let button0; - let t0; - let div1; - let button1; - let t1; - let div2; - let button2; - let t2; - let button3; - let t3; - let button4; - let t4; - let div3; - let button5; - let t5; - let button6; - let t6; - let div4; - let button7; - let t7; - let button8; - let t8; - let div5; - let button9; - let t9; - let button10; - let t10; - let button11; - let t11; - let zoombuttons; - let current; - button0 = new button_default({ - props: { - active: ( - /*$showControls*/ - ctx[0] - ), - label: lang.controls_toggle_bar, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_11] }, - $$scope: { ctx } - } - }); - button0.$on( - "click", - /*toggleShowControls*/ - ctx[16] - ); - button1 = new button_default({ - props: { - active: ( - /*$showMinimap*/ - ctx[1] - ), - classes: "control-item", - label: lang.controls_toggle_minimap, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_10] }, - $$scope: { ctx } - } - }); - button1.$on( - "click", - /*toggleMinimap*/ - ctx[18] - ); - button2 = new button_default({ - props: { - active: ( - /*$controls*/ - ctx[2].showSettingsSidebar - ), - classes: "control-item", - label: lang.controls_settings, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_9] }, - $$scope: { ctx } - } - }); - button2.$on( - "click", - /*toggleSettings*/ - ctx[13] - ); - button3 = new button_default({ - props: { - active: ( - /*$controls*/ - ctx[2].showHelpSidebar - ), - classes: "control-item", - label: lang.controls_hotkeys, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_8] }, - $$scope: { ctx } - } - }); - button3.$on( - "click", - /*toggleHelp*/ - ctx[11] - ); - button4 = new button_default({ - props: { - active: ( - /*$controls*/ - ctx[2].showStyleRulesModal - ), - classes: "control-item", - label: lang.controls_rules, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_7] }, - $$scope: { ctx } - } - }); - button4.$on( - "click", - /*toggleStyleRules*/ - ctx[12] - ); - button5 = new button_default({ - props: { - active: ( - /*$scrollSettingsStore*/ - ctx[3].centerActiveNodeH - ), - classes: "control-item", - label: lang.controls_toggle_scrolling_mode_horizontal, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_6] }, - $$scope: { ctx } - } - }); - button5.$on( - "click", - /*toggleScrollModeH*/ - ctx[19] - ); - button6 = new button_default({ - props: { - active: ( - /*$scrollSettingsStore*/ - ctx[3].centerActiveNodeV - ), - classes: "control-item", - label: lang.controls_toggle_scrolling_mode_vertical, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_5] }, - $$scope: { ctx } - } - }); - button6.$on( - "click", - /*toggleScrollModeV*/ - ctx[20] - ); - button7 = new button_default({ - props: { - active: ( - /*$outlineMode*/ - ctx[4] - ), - classes: "control-item", - label: lang.controls_single_column, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_4] }, - $$scope: { ctx } - } - }); - button7.$on( - "click", - /*toggleOutlineMode*/ - ctx[25] - ); - button8 = new button_default({ - props: { - active: ( - /*$applyGapBetweenCards*/ - ctx[5] - ), - classes: "control-item", - label: lang.controls_gap_between_cards, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_32] }, - $$scope: { ctx } - } - }); - button8.$on( - "click", - /*toggleGap*/ - ctx[23] - ); - button9 = new button_default({ - props: { - active: ( - /*$controls*/ - ctx[2].showHistorySidebar - ), - classes: "control-item", - disabled: ( - /*$history*/ - ctx[6].items.length === 0 - ), - label: lang.controls_history, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_22] }, - $$scope: { ctx } - } - }); - button9.$on( - "click", - /*click_handler*/ - ctx[26] - ); - button10 = new button_default({ - props: { - classes: "control-item", - disabled: !/*$history*/ - ctx[6].state.canGoBack, - label: lang.controls_history_undo, - tooltipPosition: "left", - $$slots: { default: [create_default_slot_12] }, - $$scope: { ctx } - } - }); - button10.$on( - "click", - /*handlePreviousClick*/ - ctx[10] - ); - button11 = new button_default({ - props: { - classes: "control-item", - disabled: !/*$history*/ - ctx[6].state.canGoForward, - label: lang.controls_history_redo, - tooltipPosition: "left", - $$slots: { default: [create_default_slot45] }, - $$scope: { ctx } - } - }); - button11.$on( - "click", - /*handleNextClick*/ - ctx[9] - ); - zoombuttons = new zoom_buttons_default({ - props: { showControls: ( - /*$showControls*/ - ctx[0] - ) } - }); - return { - c() { - div6 = element("div"); - div0 = element("div"); - create_component(button0.$$.fragment); - t0 = space(); - div1 = element("div"); - create_component(button1.$$.fragment); - t1 = space(); - div2 = element("div"); - create_component(button2.$$.fragment); - t2 = space(); - create_component(button3.$$.fragment); - t3 = space(); - create_component(button4.$$.fragment); - t4 = space(); - div3 = element("div"); - create_component(button5.$$.fragment); - t5 = space(); - create_component(button6.$$.fragment); - t6 = space(); - div4 = element("div"); - create_component(button7.$$.fragment); - t7 = space(); - create_component(button8.$$.fragment); - t8 = space(); - div5 = element("div"); - create_component(button9.$$.fragment); - t9 = space(); - create_component(button10.$$.fragment); - t10 = space(); - create_component(button11.$$.fragment); - t11 = space(); - create_component(zoombuttons.$$.fragment); - attr(div0, "class", "buttons-group controls-toggle svelte-1316cva"); - attr(div1, "class", "buttons-group buttons-group--vertical"); - attr( - div1, - "data-visible", - /*$showControls*/ - ctx[0] - ); - attr(div2, "class", "buttons-group buttons-group--vertical"); - attr( - div2, - "data-visible", - /*$showControls*/ - ctx[0] - ); - attr(div3, "class", "buttons-group buttons-group--vertical"); - attr( - div3, - "data-visible", - /*$showControls*/ - ctx[0] - ); - attr(div4, "class", "buttons-group buttons-group--vertical"); - attr( - div4, - "data-visible", - /*$showControls*/ - ctx[0] - ); - attr(div5, "class", "buttons-group buttons-group--vertical"); - attr( - div5, - "data-visible", - /*$showControls*/ - ctx[0] - ); - attr(div6, "class", "controls-container svelte-1316cva"); - }, - m(target, anchor) { - insert(target, div6, anchor); - append(div6, div0); - mount_component(button0, div0, null); - append(div6, t0); - append(div6, div1); - mount_component(button1, div1, null); - append(div6, t1); - append(div6, div2); - mount_component(button2, div2, null); - append(div2, t2); - mount_component(button3, div2, null); - append(div2, t3); - mount_component(button4, div2, null); - append(div6, t4); - append(div6, div3); - mount_component(button5, div3, null); - append(div3, t5); - mount_component(button6, div3, null); - append(div6, t6); - append(div6, div4); - mount_component(button7, div4, null); - append(div4, t7); - mount_component(button8, div4, null); - append(div6, t8); - append(div6, div5); - mount_component(button9, div5, null); - append(div5, t9); - mount_component(button10, div5, null); - append(div5, t10); - mount_component(button11, div5, null); - append(div6, t11); - mount_component(zoombuttons, div6, null); - current = true; - }, - p(ctx2, [dirty]) { - const button0_changes = {}; - if (dirty & /*$showControls*/ - 1) - button0_changes.active = /*$showControls*/ - ctx2[0]; - if (dirty & /*$$scope*/ - 536870912) { - button0_changes.$$scope = { dirty, ctx: ctx2 }; - } - button0.$set(button0_changes); - const button1_changes = {}; - if (dirty & /*$showMinimap*/ - 2) - button1_changes.active = /*$showMinimap*/ - ctx2[1]; - if (dirty & /*$$scope*/ - 536870912) { - button1_changes.$$scope = { dirty, ctx: ctx2 }; - } - button1.$set(button1_changes); - if (!current || dirty & /*$showControls*/ - 1) { - attr( - div1, - "data-visible", - /*$showControls*/ - ctx2[0] - ); - } - const button2_changes = {}; - if (dirty & /*$controls*/ - 4) - button2_changes.active = /*$controls*/ - ctx2[2].showSettingsSidebar; - if (dirty & /*$$scope*/ - 536870912) { - button2_changes.$$scope = { dirty, ctx: ctx2 }; - } - button2.$set(button2_changes); - const button3_changes = {}; - if (dirty & /*$controls*/ - 4) - button3_changes.active = /*$controls*/ - ctx2[2].showHelpSidebar; - if (dirty & /*$$scope*/ - 536870912) { - button3_changes.$$scope = { dirty, ctx: ctx2 }; - } - button3.$set(button3_changes); - const button4_changes = {}; - if (dirty & /*$controls*/ - 4) - button4_changes.active = /*$controls*/ - ctx2[2].showStyleRulesModal; - if (dirty & /*$$scope*/ - 536870912) { - button4_changes.$$scope = { dirty, ctx: ctx2 }; - } - button4.$set(button4_changes); - if (!current || dirty & /*$showControls*/ - 1) { - attr( - div2, - "data-visible", - /*$showControls*/ - ctx2[0] - ); - } - const button5_changes = {}; - if (dirty & /*$scrollSettingsStore*/ - 8) - button5_changes.active = /*$scrollSettingsStore*/ - ctx2[3].centerActiveNodeH; - if (dirty & /*$$scope*/ - 536870912) { - button5_changes.$$scope = { dirty, ctx: ctx2 }; - } - button5.$set(button5_changes); - const button6_changes = {}; - if (dirty & /*$scrollSettingsStore*/ - 8) - button6_changes.active = /*$scrollSettingsStore*/ - ctx2[3].centerActiveNodeV; - if (dirty & /*$$scope*/ - 536870912) { - button6_changes.$$scope = { dirty, ctx: ctx2 }; - } - button6.$set(button6_changes); - if (!current || dirty & /*$showControls*/ - 1) { - attr( - div3, - "data-visible", - /*$showControls*/ - ctx2[0] - ); - } - const button7_changes = {}; - if (dirty & /*$outlineMode*/ - 16) - button7_changes.active = /*$outlineMode*/ - ctx2[4]; - if (dirty & /*$$scope*/ - 536870912) { - button7_changes.$$scope = { dirty, ctx: ctx2 }; - } - button7.$set(button7_changes); - const button8_changes = {}; - if (dirty & /*$applyGapBetweenCards*/ - 32) - button8_changes.active = /*$applyGapBetweenCards*/ - ctx2[5]; - if (dirty & /*$$scope*/ - 536870912) { - button8_changes.$$scope = { dirty, ctx: ctx2 }; - } - button8.$set(button8_changes); - if (!current || dirty & /*$showControls*/ - 1) { - attr( - div4, - "data-visible", - /*$showControls*/ - ctx2[0] - ); - } - const button9_changes = {}; - if (dirty & /*$controls*/ - 4) - button9_changes.active = /*$controls*/ - ctx2[2].showHistorySidebar; - if (dirty & /*$history*/ - 64) - button9_changes.disabled = /*$history*/ - ctx2[6].items.length === 0; - if (dirty & /*$$scope*/ - 536870912) { - button9_changes.$$scope = { dirty, ctx: ctx2 }; - } - button9.$set(button9_changes); - const button10_changes = {}; - if (dirty & /*$history*/ - 64) - button10_changes.disabled = !/*$history*/ - ctx2[6].state.canGoBack; - if (dirty & /*$$scope*/ - 536870912) { - button10_changes.$$scope = { dirty, ctx: ctx2 }; - } - button10.$set(button10_changes); - const button11_changes = {}; - if (dirty & /*$history*/ - 64) - button11_changes.disabled = !/*$history*/ - ctx2[6].state.canGoForward; - if (dirty & /*$$scope*/ - 536870912) { - button11_changes.$$scope = { dirty, ctx: ctx2 }; - } - button11.$set(button11_changes); - if (!current || dirty & /*$showControls*/ - 1) { - attr( - div5, - "data-visible", - /*$showControls*/ - ctx2[0] - ); - } - const zoombuttons_changes = {}; - if (dirty & /*$showControls*/ - 1) - zoombuttons_changes.showControls = /*$showControls*/ - ctx2[0]; - zoombuttons.$set(zoombuttons_changes); - }, - i(local) { - if (current) - return; - transition_in(button0.$$.fragment, local); - transition_in(button1.$$.fragment, local); - transition_in(button2.$$.fragment, local); - transition_in(button3.$$.fragment, local); - transition_in(button4.$$.fragment, local); - transition_in(button5.$$.fragment, local); - transition_in(button6.$$.fragment, local); - transition_in(button7.$$.fragment, local); - transition_in(button8.$$.fragment, local); - transition_in(button9.$$.fragment, local); - transition_in(button10.$$.fragment, local); - transition_in(button11.$$.fragment, local); - transition_in(zoombuttons.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(button0.$$.fragment, local); - transition_out(button1.$$.fragment, local); - transition_out(button2.$$.fragment, local); - transition_out(button3.$$.fragment, local); - transition_out(button4.$$.fragment, local); - transition_out(button5.$$.fragment, local); - transition_out(button6.$$.fragment, local); - transition_out(button7.$$.fragment, local); - transition_out(button8.$$.fragment, local); - transition_out(button9.$$.fragment, local); - transition_out(button10.$$.fragment, local); - transition_out(button11.$$.fragment, local); - transition_out(zoombuttons.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) { - detach(div6); - } - destroy_component(button0); - destroy_component(button1); - destroy_component(button2); - destroy_component(button3); - destroy_component(button4); - destroy_component(button5); - destroy_component(button6); - destroy_component(button7); - destroy_component(button8); - destroy_component(button9); - destroy_component(button10); - destroy_component(button11); - destroy_component(zoombuttons); - } - }; -} -function instance47($$self, $$props, $$invalidate) { - let $showControls; - let $showMinimap; - let $controls; - let $scrollSettingsStore; - let $outlineMode; - let $applyGapBetweenCards; - let $history; - const view = getView(); - const viewStore = view.viewStore; - const documentStore = view.documentStore; - const history = historyStore(view); - component_subscribe($$self, history, (value) => $$invalidate(6, $history = value)); - const handleNextClick = () => { - if (viewStore.getValue().document.editing.activeNodeId) - new import_obsidian3.Notice(lang.error_apply_snapshot_while_editing); - else - documentStore.dispatch({ type: "HISTORY/APPLY_NEXT_SNAPSHOT" }); - }; - const handlePreviousClick = () => { - if (viewStore.getValue().document.editing.activeNodeId) - new import_obsidian3.Notice(lang.error_apply_snapshot_while_editing); - else - documentStore.dispatch({ type: "HISTORY/APPLY_PREVIOUS_SNAPSHOT" }); - }; - const toggleHelp = () => { - viewStore.dispatch({ type: "UI/TOGGLE_HELP_SIDEBAR" }); - }; - const toggleStyleRules = () => { - viewStore.dispatch({ type: "view/modals/toggle-style-rules" }); - }; - const toggleSettings = () => { - viewStore.dispatch({ type: "UI/TOGGLE_SETTINGS_SIDEBAR" }); - }; - const controls = uiControlsStore(view); - component_subscribe($$self, controls, (value) => $$invalidate(2, $controls = value)); - const showControls = writable(false); - component_subscribe($$self, showControls, (value) => $$invalidate(0, $showControls = value)); - const toggleShowControls = () => { - showControls.update((v) => !v); - }; - const showMinimap = showMinimapStore(view); - component_subscribe($$self, showMinimap, (value) => $$invalidate(1, $showMinimap = value)); - const toggleMinimap = () => { - view.plugin.settings.dispatch({ type: "VIEW/TOGGLE_MINIMAP" }); - }; - const toggleScrollModeH = () => { - view.plugin.settings.dispatch({ - type: "VIEW/SCROLLING/TOGGLE_SCROLLING_MODE" - }); - }; - const toggleScrollModeV = () => { - view.plugin.settings.dispatch({ - type: "settings/view/scrolling/toggle-vertical-scrolling-mode" - }); - }; - const scrollSettingsStore = ScrollSettingsStore(view); - component_subscribe($$self, scrollSettingsStore, (value) => $$invalidate(3, $scrollSettingsStore = value)); - const applyGapBetweenCards = ApplyGapBetweenCardsStore(view); - component_subscribe($$self, applyGapBetweenCards, (value) => $$invalidate(5, $applyGapBetweenCards = value)); - const toggleGap = () => { - view.plugin.settings.dispatch({ - type: "view/modes/gap-between-cards/toggle" - }); - }; - const outlineMode = OutlineModeStore(view); - component_subscribe($$self, outlineMode, (value) => $$invalidate(4, $outlineMode = value)); - const toggleOutlineMode = () => { - view.plugin.settings.dispatch({ - type: "settings/view/modes/toggle-outline-mode" - }); - }; - const click_handler = () => { - viewStore.dispatch({ type: "UI/TOGGLE_HISTORY_SIDEBAR" }); - }; - return [ - $showControls, - $showMinimap, - $controls, - $scrollSettingsStore, - $outlineMode, - $applyGapBetweenCards, - $history, - viewStore, - history, - handleNextClick, - handlePreviousClick, - toggleHelp, - toggleStyleRules, - toggleSettings, - controls, - showControls, - toggleShowControls, - showMinimap, - toggleMinimap, - toggleScrollModeH, - toggleScrollModeV, - scrollSettingsStore, - applyGapBetweenCards, - toggleGap, - outlineMode, - toggleOutlineMode, - click_handler - ]; -} -var Controls_container = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance47, create_fragment47, safe_not_equal, {}, add_css); - } -}; -var controls_container_default = Controls_container; - // src/lib/tree-utils/find/find-node-column.ts var findNodeColumn = (columns, nodeId) => { for (let i = 0; i < columns.length; i++) { @@ -10813,7 +11467,7 @@ var draggable = (node, data) => { false ); viewStore.dispatch({ - type: "SET_DRAG_STARTED", + type: "view/dnd/set-drag-started", payload: { nodeId: data.id, childGroups } }); toggleDraggedNodeVisibility(node, data, false); @@ -10824,7 +11478,7 @@ var draggable = (node, data) => { }; node.addEventListener("dragstart", handleDragstart); const handleDragEnd = () => { - viewStore.dispatch({ type: "DOCUMENT/SET_DRAG_ENDED" }); + viewStore.dispatch({ type: "view/dnd/set-drag-ended" }); toggleDraggedNodeVisibility(node, data, true); }; node.addEventListener("dragend", handleDragEnd); @@ -10837,10 +11491,10 @@ var draggable = (node, data) => { }; // src/view/components/container/column/components/group/components/card/components/dnd/draggable.svelte -function add_css2(target) { +function add_css3(target) { append_styles(target, "svelte-gtjx2q", ".draggable.svelte-gtjx2q.svelte-gtjx2q{width:100%;background-color:transparent;display:flex;position:relative}.drag-handle.svelte-gtjx2q.svelte-gtjx2q{height:100%;width:6px;background-color:transparent;cursor:grab;position:absolute;left:-5px;z-index:10}.active-node .drag-handle.svelte-gtjx2q.svelte-gtjx2q{left:0}.draggable.svelte-gtjx2q:hover .drag-handle.svelte-gtjx2q{background-size:2px 4px;background-image:linear-gradient(\n 0deg,\n hsla(0, 0%, 60%, 0.5) 20%,\n transparent 40%\n )}.content.svelte-gtjx2q.svelte-gtjx2q{width:100%\n }"); } -function create_if_block2(ctx) { +function create_if_block3(ctx) { let div; return { c() { @@ -10857,7 +11511,7 @@ function create_if_block2(ctx) { } }; } -function create_fragment48(ctx) { +function create_fragment53(ctx) { let div1; let t; let div0; @@ -10866,7 +11520,7 @@ function create_fragment48(ctx) { let mounted; let dispose; let if_block = !/*isInSidebar*/ - ctx[0] && create_if_block2(ctx); + ctx[0] && create_if_block3(ctx); const default_slot_template = ( /*#slots*/ ctx[3].default @@ -10919,7 +11573,7 @@ function create_fragment48(ctx) { ctx2[0]) { if (if_block) { } else { - if_block = create_if_block2(ctx2); + if_block = create_if_block3(ctx2); if_block.c(); if_block.m(div1, t); } @@ -10986,7 +11640,7 @@ function create_fragment48(ctx) { } }; } -function instance48($$self, $$props, $$invalidate) { +function instance53($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; let { isInSidebar } = $$props; let { nodeId } = $$props; @@ -11003,7 +11657,7 @@ function instance48($$self, $$props, $$invalidate) { var Draggable = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance48, create_fragment48, safe_not_equal, { isInSidebar: 0, nodeId: 1 }, add_css2); + init(this, options, instance53, create_fragment53, safe_not_equal, { isInSidebar: 0, nodeId: 1 }, add_css3); } }; var draggable_default = Draggable; @@ -11022,7 +11676,7 @@ var loadInlineEditor = (target, nodeId) => { }; // src/stores/settings/derived/limit-preview-height-store.ts -var limitPreviewHeightStore = (view) => derived(view.plugin.settings, (state2) => state2.view.limitPreviewHeight); +var limitPreviewHeightStore = (view) => derived2(view.plugin.settings, (state2) => state2.view.limitPreviewHeight); // src/view/actions/inline-editor/expandable-textarea-action.ts var deletionKeys = /* @__PURE__ */ new Set(["Backspace", "Delete", "x", " "]); @@ -11030,6 +11684,8 @@ var AdjustHeight = (view, el) => { let previousScrollHeight = 0; let x; const limitCardHeight = get_store_value(limitPreviewHeightStore(view)); + const viewState = view.viewStore.getValue(); + const isInSidebar = viewState.document.editing.isInSidebar; return (e) => { if (!x) { x = el.querySelector(".cm-scroller"); @@ -11044,7 +11700,7 @@ var AdjustHeight = (view, el) => { previousScrollHeight = x.scrollHeight; el.style.height = previousScrollHeight + "px"; x.style.height = ""; - if (limitCardHeight && scrollHeightChange) { + if (!isInSidebar && limitCardHeight && scrollHeightChange) { view.alignBranch.align({ type: "view/align-branch/reveal-node" }); @@ -11065,10 +11721,10 @@ var expandableTextareaAction = (el) => { }; // src/view/components/container/column/components/group/components/card/components/content/inline-editor.svelte -function add_css3(target) { +function add_css4(target) { append_styles(target, "svelte-lini95", ".editor-container.svelte-lini95{width:100%;min-height:var(--min-node-height);height:fit-content;overflow:hidden;display:flex}.apply-style-rule.svelte-lini95{& .view-content {\n background-color: transparent !important;\n }}"); } -function create_fragment49(ctx) { +function create_fragment54(ctx) { let div; let div_class_value; let expandableTextareaAction_action; @@ -11121,7 +11777,7 @@ function create_fragment49(ctx) { } }; } -function instance49($$self, $$props, $$invalidate) { +function instance54($$self, $$props, $$invalidate) { let { nodeId } = $$props; let { style } = $$props; $$self.$$set = ($$props2) => { @@ -11135,19 +11791,19 @@ function instance49($$self, $$props, $$invalidate) { var Inline_editor = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance49, create_fragment49, safe_not_equal, { nodeId: 0, style: 1 }, add_css3); + init(this, options, instance54, create_fragment54, safe_not_equal, { nodeId: 0, style: 1 }, add_css4); } }; var inline_editor_default = Inline_editor; // src/view/actions/markdown-preview/markdown-preview-action.ts -var import_obsidian4 = require("obsidian"); +var import_obsidian3 = require("obsidian"); // src/stores/document/derived/content-store.ts var contentStore = (view, nodeId) => { let nodeContent; let documentContent; - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { if (!nodeContent || documentContent !== state2.document.content || nodeContent !== documentContent[nodeId]) { documentContent = state2.document.content; nodeContent = documentContent[nodeId]; @@ -11158,7 +11814,7 @@ var contentStore = (view, nodeId) => { }); }; var documentContentStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return state2.document.content; }); }; @@ -11214,25 +11870,24 @@ var formatText = (text2) => { var markdownPreviewAction = (element2, nodeId) => { const plugin = getPlugin(); const view = getView(); - const store = view.documentStore; - const render = (content) => { + const render2 = (content) => { if (view && element2) { element2.empty(); if (content.length > 0) { content = formatText(content); } - import_obsidian4.MarkdownRenderer.render( + import_obsidian3.MarkdownRenderer.render( plugin.app, content, element2, - store.getValue().file.path, + view.file.path, view ); } }; const $content = contentStore(view, nodeId); const unsub = $content.subscribe((content) => { - render(content); + render2(content); }); return { destroy: () => { @@ -11241,7 +11896,7 @@ var markdownPreviewAction = (element2, nodeId) => { }; }; -// src/view/components/container/column/components/group/components/card/components/content/event-handlers/helpers/get-existing-right-tab-group.ts +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/helpers/get-existing-right-tab-group.ts var getExistingRightTabGroup = (view) => { const rootSplit = view.plugin.app.workspace.rootSplit; if (!("children" in rootSplit)) @@ -11262,7 +11917,7 @@ var getExistingRightTabGroup = (view) => { } }; -// src/view/components/container/column/components/group/components/card/components/content/event-handlers/helpers/open-file-in-existing-right-tab-group.ts +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/helpers/open-file-in-existing-right-tab-group.ts var openFileInExistingRightTabGroup = (view, link, activeFilePath) => { const rightTabGroup = getExistingRightTabGroup(view); if (!rightTabGroup) @@ -11274,20 +11929,77 @@ var openFileInExistingRightTabGroup = (view, link, activeFilePath) => { rightTabGroup ); if (newLeaf) { - const linkedFile = view.plugin.app.metadataCache.getFirstLinkpathDest( - link, - activeFilePath - ); - if (linkedFile) { - newLeaf.openFile(linkedFile); - return true; + if (link.contains("#")) { + view.plugin.app.workspace.openLinkText( + link, + activeFilePath, + "split", + newLeaf.getViewState() + ); + } else { + const linkedFile = view.plugin.app.metadataCache.getFirstLinkpathDest( + link, + activeFilePath + ); + if (linkedFile) { + newLeaf.openFile(linkedFile); + workspace.setActiveLeaf(newLeaf); + return true; + } } } return false; }; -// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links.ts -var selectCard = (view, id2) => { +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/block-link/handle-global-block-link.ts +var getLinkPaneType = (view, modKey2) => { + const linkPaneType = view.plugin.settings.getValue().general.linkPaneType; + if (modKey2) { + return linkPaneType === "tab" ? "split" : "tab"; + } else { + return linkPaneType; + } +}; +var handleGlobalBlockLink = (view, link, modKey2) => { + view.plugin.app.workspace.openLinkText( + link, + view.file.basename, + getLinkPaneType(view, modKey2) + ); +}; + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/file-link/handle-file-link.ts +var handleFileLink = (view, link, modKey2) => { + const path = view.file?.path; + if (!link || !path) + return; + const paneType = getLinkPaneType(view, modKey2); + if (paneType === "tab") { + view.plugin.app.workspace.openLinkText(link, path, "tab"); + } else { + const success = openFileInExistingRightTabGroup(view, link, path); + if (!success) { + view.plugin.app.workspace.openLinkText(link, path, "split"); + } + } +}; + +// src/helpers/delay.ts +var delay = async (milliseconds, signal) => { + return new Promise((resolve) => { + const timeout = setTimeout(() => resolve(), milliseconds); + if (signal) { + signal.addEventListener("abort", () => { + clearTimeout(timeout); + resolve(); + }); + } + }); +}; + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/helpers/select-card.ts +var selectCard = async (view, id2) => { + await delay(16); view.viewStore.dispatch({ type: "view/set-active-node/mouse", payload: { @@ -11295,68 +12007,91 @@ var selectCard = (view, id2) => { } }); }; -var handleFile = (view, link) => { - const path = view.documentStore.getValue().file.path; - if (!link || !path) + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/heading-link/handle-local-heading-link.ts +var handleLocalHeadingLink = (view, link) => { + const match = /#+(.*)$/.exec(link); + if (!match) return; - const success = openFileInExistingRightTabGroup(view, link, path); - if (!success) { - view.plugin.app.workspace.openLinkText(link, path, "split"); - } -}; -var handleHeading = (view, link) => { - const levelMatch = /(#+)/.exec(link); - if (levelMatch) { - for (let level2 = 1; level2 <= 6; level2++) { - const headings = Array.from( - view.containerEl.querySelectorAll("h" + level2) - ); - const heading = headings.find( - (h) => "#" + h.dataset.heading === link - ); - if (heading) { - const card = heading.closest(".lineage-card"); - if (card && card.id) { - selectCard(view, card.id); - break; - } + const headingText = match[1].trimStart(); + for (let level2 = 1; level2 <= 6; level2++) { + const headings = Array.from( + view.containerEl.querySelectorAll("h" + level2) + ); + const heading = headings.find((h) => h.dataset.heading === headingText); + if (heading) { + const card = heading.closest(".lineage-card"); + if (card && card.id) { + selectCard(view, card.id); + break; } } } }; -var handleBlockLink = (view, link) => { - const match = /#\^([a-zA-Z0-9]{4,})$/.exec(link); + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/heading-link/handle-heading.ts +var handleHeading = (view, link, modKey2) => { + const file = link.split("#")[0]; + if (file && file !== view.file.basename) { + handleGlobalBlockLink(view, link, modKey2); + } else { + handleLocalHeadingLink(view, link); + } +}; + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/block-link/handle-local-block-link.ts +var handleLocalBlockLink = (view, id2) => { + const element2 = view.container.querySelector( + `[data-block-id="^${id2}"` + ); + if (element2) { + const card = element2.closest(".lineage-card"); + if (card && card.id) { + selectCard(view, card.id); + return true; + } + } +}; + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/block-link/handle-block-link.ts +var handleBlockLink = (view, link, modKey2) => { + const viewFilePath = view.file.basename; + const match = /(.*)#\^(\S{4,})$/.exec(link); if (match) { - const id2 = match[1]; - if (id2) { - const element2 = view.containerEl.querySelector( - `[data-block-id="^${id2}"` - ); - if (element2) { - const card = element2.closest(".lineage-card"); - if (card && card.id) { - selectCard(view, card.id); - } - } + const file = match[1]; + const id2 = match[2]; + if (!file.trim() || file === viewFilePath) { + handleLocalBlockLink(view, id2); + } else { + handleGlobalBlockLink(view, link, modKey2); } } }; + +// src/view/actions/keyboard-shortcuts/helpers/keyboard-events/mod-key.ts +var import_obsidian4 = require("obsidian"); +var isMacLike = import_obsidian4.Platform.isMacOS || import_obsidian4.Platform.isIosApp; +var modKey = isMacLike ? "Cmd" : "Ctrl"; + +// src/view/components/container/column/components/group/components/card/components/content/event-handlers/handle-links/handle-links.ts var handleLinks = (view, e) => { if (!(e.target instanceof HTMLAnchorElement)) return; if (!e.target.hasClass("internal-link")) return; const link = e.target.dataset.href; + const modKey2 = isMacLike ? e.metaKey : e.ctrlKey; if (!link) return; if (link.contains("#^")) { e.stopPropagation(); - handleBlockLink(view, link); - } else if (link.startsWith("#")) { + handleBlockLink(view, link, modKey2); + } else if (link.contains("#")) { e.stopPropagation(); - handleHeading(view, link); + handleHeading(view, link, modKey2); } else { - handleFile(view, link); + e.stopPropagation(); + handleFileLink(view, link, modKey2); } }; @@ -11401,11 +12136,6 @@ var setActiveSidebarNode = (view, id2) => { }); }; -// src/view/actions/keyboard-shortcuts/helpers/keyboard-events/mod-key.ts -var import_obsidian5 = require("obsidian"); -var isMacLike = import_obsidian5.Platform.isMacOS || import_obsidian5.Platform.isIosApp; -var modKey = isMacLike ? "Cmd" : "Ctrl"; - // src/view/components/container/column/components/group/components/card/components/content/store-actions/set-active-main-split-node.ts var setActiveMainSplitNode = (view, nodeId, e) => { const silent = isMacLike ? e.metaKey : e.ctrlKey; @@ -11420,7 +12150,7 @@ var enableEditModeInSidebar = (view, nodeId) => { const settings = view.plugin.settings.getValue(); const activeSidebarTab = settings.view.leftSidebarActiveTab; view.viewStore.dispatch({ - type: "view/sidebar/enable-edit", + type: "view/editor/enable-sidebar-editor", payload: { id: nodeId }, @@ -11433,7 +12163,7 @@ var enableEditModeInSidebar = (view, nodeId) => { // src/view/components/container/column/components/group/components/card/components/content/store-actions/enable-edit-mode-in-main-split.ts var enableEditModeInMainSplit = (view, nodeId) => { view.viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId } @@ -11441,10 +12171,10 @@ var enableEditModeInMainSplit = (view, nodeId) => { }; // src/view/components/container/column/components/group/components/card/components/content/content.svelte -function add_css4(target) { +function add_css5(target) { append_styles(target, "svelte-1wqkxy4", ".lng-prev.svelte-1wqkxy4{width:100%;min-height:var(--min-node-height);font-size:var(--font-text-size);padding:6px 6px 10px 12px;color-scheme:light}"); } -function create_fragment50(ctx) { +function create_fragment55(ctx) { let div; let div_class_value; let markdownPreviewAction_action; @@ -11501,7 +12231,7 @@ function create_fragment50(ctx) { } }; } -function instance50($$self, $$props, $$invalidate) { +function instance55($$self, $$props, $$invalidate) { let { nodeId } = $$props; let { isInSidebar } = $$props; let { active } = $$props; @@ -11564,14 +12294,14 @@ function instance50($$self, $$props, $$invalidate) { var Content = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance50, create_fragment50, safe_not_equal, { nodeId: 0, isInSidebar: 3, active: 4 }, add_css4); + init(this, options, instance55, create_fragment55, safe_not_equal, { nodeId: 0, isInSidebar: 3, active: 4 }, add_css5); } }; var content_default = Content; // src/view/components/container/column/components/group/components/card/components/card-buttons/shared/floating-button.svelte var import_classnames = __toESM(require_classnames()); -function create_fragment51(ctx) { +function create_fragment56(ctx) { let button; let button_class_value; let current; @@ -11694,7 +12424,7 @@ function create_fragment51(ctx) { } }; } -function instance51($$self, $$props, $$invalidate) { +function instance56($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; let { classes = "" } = $$props; let { position } = $$props; @@ -11725,7 +12455,7 @@ function instance51($$self, $$props, $$invalidate) { var Floating_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance51, create_fragment51, safe_not_equal, { classes: 0, position: 1, label: 2 }); + init(this, options, instance56, create_fragment56, safe_not_equal, { classes: 0, position: 1, label: 2 }); } }; var floating_button_default = Floating_button; @@ -11737,18 +12467,18 @@ var deleteNode = (view, nodeId, includeSelection = false) => { if (viewState.document.pendingConfirmation.deleteNode.has(nodeId)) { const selectedNodes = includeSelection ? viewState.document.selectedNodes : void 0; documentStore.dispatch({ - type: "DOCUMENT/DELETE_NODE", + type: "document/delete-node", payload: { activeNodeId: nodeId, selectedNodes } }); view.viewStore.dispatch({ - type: "view/confirmation/reset/delete-node" + type: "view/delete-node/reset-confirmation" }); } else { view.viewStore.dispatch({ - type: "view/confirmation/confirm/delete-node", + type: "view/delete-node/confirm", payload: { id: nodeId, includeSelection @@ -11758,7 +12488,7 @@ var deleteNode = (view, nodeId, includeSelection = false) => { }; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/components/delete-node-button.svelte -function create_default_slot46(ctx) { +function create_default_slot51(ctx) { let trashicon; let current; trashicon = new trash_default({ props: { class: "svg-con" } }); @@ -11786,7 +12516,7 @@ function create_default_slot46(ctx) { } }; } -function create_fragment52(ctx) { +function create_fragment57(ctx) { let floatingbutton; let current; floatingbutton = new floating_button_default({ @@ -11794,7 +12524,7 @@ function create_fragment52(ctx) { label: lang.card_btn_delete, position: "up-right", classes: "delete-card-button", - $$slots: { default: [create_default_slot46] }, + $$slots: { default: [create_default_slot51] }, $$scope: { ctx } } }); @@ -11834,7 +12564,7 @@ function create_fragment52(ctx) { } }; } -function instance52($$self, $$props, $$invalidate) { +function instance57($$self, $$props, $$invalidate) { let { nodeId } = $$props; const view = getView(); const _deleteNode = (e) => { @@ -11850,7 +12580,7 @@ function instance52($$self, $$props, $$invalidate) { var Delete_node_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance52, create_fragment52, safe_not_equal, { nodeId: 1 }); + init(this, options, instance57, create_fragment57, safe_not_equal, { nodeId: 1 }); } }; var delete_node_button_default = Delete_node_button; @@ -11862,14 +12592,14 @@ var saveNodeContent = (view, modKey2 = false) => { const isInSidebar = view.viewStore.getValue().document.editing.isInSidebar; if (isInSidebar) { view.viewStore.dispatch({ - type: "view/sidebar/disable-edit", + type: "view/editor/disable-sidebar-editor", context: { modKey: modKey2 } }); } else { view.viewStore.dispatch({ - type: "view/main/disable-edit", + type: "view/editor/disable-main-editor", context: { modKey: modKey2 } @@ -11879,7 +12609,7 @@ var saveNodeContent = (view, modKey2 = false) => { }; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/components/edit-node-button.svelte -function create_else_block2(ctx) { +function create_else_block3(ctx) { let pencilicon; let current; pencilicon = new pencil_default({ props: { class: "svg-icon" } }); @@ -11906,7 +12636,7 @@ function create_else_block2(ctx) { } }; } -function create_if_block3(ctx) { +function create_if_block4(ctx) { let saveicon; let current; saveicon = new save_default({ props: { class: "svg-con" } }); @@ -11933,12 +12663,12 @@ function create_if_block3(ctx) { } }; } -function create_default_slot47(ctx) { +function create_default_slot52(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block3, create_else_block2]; + const if_block_creators = [create_if_block4, create_else_block3]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -11997,7 +12727,7 @@ function create_default_slot47(ctx) { } }; } -function create_fragment53(ctx) { +function create_fragment58(ctx) { let floatingbutton; let current; floatingbutton = new floating_button_default({ @@ -12007,7 +12737,7 @@ function create_fragment53(ctx) { ctx[0] ? lang.card_btn_save : lang.card_btn_edit ), position: "down-right", - $$slots: { default: [create_default_slot47] }, + $$slots: { default: [create_default_slot52] }, $$scope: { ctx } } }); @@ -12051,7 +12781,7 @@ function create_fragment53(ctx) { } }; } -function instance53($$self, $$props, $$invalidate) { +function instance58($$self, $$props, $$invalidate) { let { editing } = $$props; let { nodeId } = $$props; let { isInSidebar } = $$props; @@ -12089,7 +12819,7 @@ function instance53($$self, $$props, $$invalidate) { var Edit_node_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance53, create_fragment53, safe_not_equal, { editing: 0, nodeId: 2, isInSidebar: 3 }); + init(this, options, instance58, create_fragment58, safe_not_equal, { editing: 0, nodeId: 2, isInSidebar: 3 }); } }; var edit_node_button_default = Edit_node_button; @@ -12106,7 +12836,7 @@ var saveNodeAndInsertNode = (view, direction, content = "", activeNodeId) => { } const nodeId = activeNodeId || view.viewStore.getValue().document.activeNode; view.documentStore.dispatch({ - type: "DOCUMENT/INSERT_NODE", + type: "document/add-node", payload: { position: direction, content, @@ -12114,14 +12844,15 @@ var saveNodeAndInsertNode = (view, direction, content = "", activeNodeId) => { } }); if (content) { + const newNodeId = view.viewStore.getValue().document.activeNode; if (direction === "down" || direction === "right") { - view.inlineEditor.setNodeCursor(nodeId, { line: 0, ch: 0 }); + view.inlineEditor.setNodeCursor(newNodeId, { line: 0, ch: 0 }); } } }; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/components/create-card-button.svelte -function create_default_slot48(ctx) { +function create_default_slot53(ctx) { let switch_instance; let switch_instance_anchor; let current; @@ -12197,7 +12928,7 @@ function create_default_slot48(ctx) { } }; } -function create_fragment54(ctx) { +function create_fragment59(ctx) { let floatingbutton; let current; floatingbutton = new floating_button_default({ @@ -12213,7 +12944,7 @@ function create_fragment54(ctx) { /*position*/ ctx[0] ), - $$slots: { default: [create_default_slot48] }, + $$slots: { default: [create_default_slot53] }, $$scope: { ctx } } }); @@ -12264,7 +12995,7 @@ function create_fragment54(ctx) { } }; } -function instance54($$self, $$props, $$invalidate) { +function instance59($$self, $$props, $$invalidate) { let { nodeId } = $$props; let { position } = $$props; const view = getView(); @@ -12278,9 +13009,9 @@ function instance54($$self, $$props, $$invalidate) { down: chevron_down_default }; const label = { - "up": lang.card_btn_add_card_above, - "down": lang.card_btn_add_card_below, - "right": lang.card_btn_add_child_card + "up": lang.card_btn_add_node_above, + "down": lang.card_btn_add_node_below, + "right": lang.card_btn_add_child_node }; $$self.$$set = ($$props2) => { if ("nodeId" in $$props2) @@ -12293,18 +13024,18 @@ function instance54($$self, $$props, $$invalidate) { var Create_card_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance54, create_fragment54, safe_not_equal, { nodeId: 4, position: 0 }); + init(this, options, instance59, create_fragment59, safe_not_equal, { nodeId: 4, position: 0 }); } }; var create_card_button_default = Create_card_button; // src/stores/view/subscriptions/effects/focus-container.ts -var import_obsidian6 = require("obsidian"); +var import_obsidian5 = require("obsidian"); var focusContainer = (view) => { setTimeout(() => { if (view.container) { const isEditing2 = Boolean(view.inlineEditor.nodeId); - const isEditingOnMobile = import_obsidian6.Platform.isMobile && isEditing2; + const isEditingOnMobile = import_obsidian5.Platform.isMobile && isEditing2; if (!isEditingOnMobile) { if (isEditing2) view.inlineEditor.focus(); @@ -12316,7 +13047,7 @@ var focusContainer = (view) => { }; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/components/focus-card-button.svelte -function create_default_slot49(ctx) { +function create_default_slot54(ctx) { let focus; let current; focus = new focus_default({ props: { class: "svg-icon" } }); @@ -12344,14 +13075,14 @@ function create_default_slot49(ctx) { } }; } -function create_fragment55(ctx) { +function create_fragment60(ctx) { let floatingbutton; let current; floatingbutton = new floating_button_default({ props: { label: lang.card_btn_scroll_to_reveal, position: "up-right", - $$slots: { default: [create_default_slot49] }, + $$slots: { default: [create_default_slot54] }, $$scope: { ctx } } }); @@ -12391,7 +13122,7 @@ function create_fragment55(ctx) { } }; } -function instance55($$self, $$props, $$invalidate) { +function instance60($$self, $$props, $$invalidate) { let { nodeId } = $$props; const view = getView(); const focusCard = () => { @@ -12410,13 +13141,13 @@ function instance55($$self, $$props, $$invalidate) { var Focus_card_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance55, create_fragment55, safe_not_equal, { nodeId: 1 }); + init(this, options, instance60, create_fragment60, safe_not_equal, { nodeId: 1 }); } }; var focus_card_button_default = Focus_card_button; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/components/collapse-card-button.svelte -function create_else_block3(ctx) { +function create_else_block4(ctx) { let minus; let current; minus = new minus_default({ props: { class: "svg-icon" } }); @@ -12443,7 +13174,7 @@ function create_else_block3(ctx) { } }; } -function create_if_block4(ctx) { +function create_if_block5(ctx) { let plus; let current; plus = new plus_default({ props: { class: "svg-icon" } }); @@ -12470,12 +13201,12 @@ function create_if_block4(ctx) { } }; } -function create_default_slot50(ctx) { +function create_default_slot55(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block4, create_else_block3]; + const if_block_creators = [create_if_block5, create_else_block4]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -12534,17 +13265,17 @@ function create_default_slot50(ctx) { } }; } -function create_fragment56(ctx) { +function create_fragment61(ctx) { let floatingbutton; let current; floatingbutton = new floating_button_default({ props: { label: ( /*collapsed*/ - ctx[0] ? lang.card_btn_collapse_card : lang.card_btn_expand_card + ctx[0] ? lang.card_btn_expand_node : lang.card_btn_collapse_node ), position: "collapse", - $$slots: { default: [create_default_slot50] }, + $$slots: { default: [create_default_slot55] }, $$scope: { ctx } } }); @@ -12566,7 +13297,7 @@ function create_fragment56(ctx) { if (dirty & /*collapsed*/ 1) floatingbutton_changes.label = /*collapsed*/ - ctx2[0] ? lang.card_btn_collapse_card : lang.card_btn_expand_card; + ctx2[0] ? lang.card_btn_expand_node : lang.card_btn_collapse_node; if (dirty & /*$$scope, collapsed*/ 17) { floatingbutton_changes.$$scope = { dirty, ctx: ctx2 }; @@ -12588,17 +13319,14 @@ function create_fragment56(ctx) { } }; } -function instance56($$self, $$props, $$invalidate) { +function instance61($$self, $$props, $$invalidate) { let { nodeId } = $$props; let { collapsed } = $$props; const view = getView(); const toggleCollapse = () => { view.viewStore.dispatch({ type: "view/outline/toggle-collapse-node", - payload: { - id: nodeId, - columns: view.documentStore.getValue().document.columns - } + payload: { id: nodeId } }); }; $$self.$$set = ($$props2) => { @@ -12612,18 +13340,18 @@ function instance56($$self, $$props, $$invalidate) { var Collapse_card_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance56, create_fragment56, safe_not_equal, { nodeId: 2, collapsed: 0 }); + init(this, options, instance61, create_fragment61, safe_not_equal, { nodeId: 2, collapsed: 0 }); } }; var collapse_card_button_default = Collapse_card_button; // src/view/components/container/column/components/group/components/card/components/card-buttons/card-buttons/card-buttons.svelte -function create_if_block_1(ctx) { +function create_if_block_12(ctx) { let t; let editnodebutton; let current; let if_block = !/*editing*/ - ctx[0] && create_if_block_2(ctx); + ctx[0] && create_if_block_22(ctx); editnodebutton = new edit_node_button_default({ props: { editing: ( @@ -12664,7 +13392,7 @@ function create_if_block_1(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block_2(ctx2); + if_block = create_if_block_22(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(t.parentNode, t); @@ -12713,12 +13441,12 @@ function create_if_block_1(ctx) { } }; } -function create_if_block_2(ctx) { +function create_if_block_22(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block_3, create_else_block4]; + const if_block_creators = [create_if_block_32, create_else_block5]; const if_blocks = []; function select_block_type(ctx2, dirty) { if (!/*isInSidebar*/ @@ -12778,7 +13506,7 @@ function create_if_block_2(ctx) { } }; } -function create_else_block4(ctx) { +function create_else_block5(ctx) { let focuscardbutton; let current; focuscardbutton = new focus_card_button_default({ props: { nodeId: ( @@ -12816,7 +13544,7 @@ function create_else_block4(ctx) { } }; } -function create_if_block_3(ctx) { +function create_if_block_32(ctx) { let createcardbutton0; let t0; let createcardbutton1; @@ -12931,7 +13659,7 @@ function create_if_block_3(ctx) { } }; } -function create_if_block5(ctx) { +function create_if_block6(ctx) { let collapsecardbutton; let current; collapsecardbutton = new collapse_card_button_default({ @@ -12981,19 +13709,19 @@ function create_if_block5(ctx) { } }; } -function create_fragment57(ctx) { +function create_fragment62(ctx) { let t; let if_block1_anchor; let current; let if_block0 = ( /*active*/ (ctx[5] === "node" /* node */ || /*alwaysShowCardButtons*/ - ctx[6]) && create_if_block_1(ctx) + ctx[6]) && create_if_block_12(ctx) ); let if_block1 = ( /*outlineMode*/ ctx[7] && /*hasChildren*/ - ctx[2] && create_if_block5(ctx) + ctx[2] && create_if_block6(ctx) ); return { c() { @@ -13026,7 +13754,7 @@ function create_fragment57(ctx) { transition_in(if_block0, 1); } } else { - if_block0 = create_if_block_1(ctx2); + if_block0 = create_if_block_12(ctx2); if_block0.c(); transition_in(if_block0, 1); if_block0.m(t.parentNode, t); @@ -13050,7 +13778,7 @@ function create_fragment57(ctx) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block5(ctx2); + if_block1 = create_if_block6(ctx2); if_block1.c(); transition_in(if_block1, 1); if_block1.m(if_block1_anchor.parentNode, if_block1_anchor); @@ -13087,7 +13815,7 @@ function create_fragment57(ctx) { } }; } -function instance57($$self, $$props, $$invalidate) { +function instance62($$self, $$props, $$invalidate) { let { editing } = $$props; let { nodeId } = $$props; let { hasChildren } = $$props; @@ -13128,7 +13856,7 @@ function instance57($$self, $$props, $$invalidate) { var Card_buttons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance57, create_fragment57, safe_not_equal, { + init(this, options, instance62, create_fragment62, safe_not_equal, { editing: 0, nodeId: 1, hasChildren: 2, @@ -13146,16 +13874,16 @@ var card_buttons_default = Card_buttons; var import_classnames2 = __toESM(require_classnames()); // src/view/components/container/column/components/group/components/card/components/bridges/bridges.svelte -function add_css5(target) { - append_styles(target, "svelte-1bkhe9s", ".active-node-bridge.svelte-1bkhe9s,.active-parent-bridge-right.svelte-1bkhe9s,.active-parent-bridge-left.svelte-1bkhe9s{height:100%;width:10px;position:absolute;top:0}.active-parent-bridge-right.svelte-1bkhe9s{right:-10px;background-color:var(--bg-color)}.active-parent-bridge-left.svelte-1bkhe9s{left:-10px;background-color:var(--bg-color)}.active-node-bridge.svelte-1bkhe9s{right:-10px;background-color:var(--bg-color)}"); +function add_css6(target) { + append_styles(target, "svelte-7f61s4", ".active-node-bridge.svelte-7f61s4,.active-parent-bridge-right.svelte-7f61s4,.active-parent-bridge-left.svelte-7f61s4{height:100%;width:10px;position:absolute;top:0}.active-parent-bridge-right.svelte-7f61s4{right:-10px;background-color:var(--bg-color)}.active-parent-bridge-left.svelte-7f61s4{width:7px;left:-12px;background-color:var(--bg-color)}.active-node-bridge.svelte-7f61s4{right:-10px;background-color:var(--bg-color)}"); } -function create_if_block_12(ctx) { +function create_if_block_13(ctx) { let div; let div_class_value; let t; let if_block_anchor; let if_block = !/*firstColumn*/ - ctx[3] && create_if_block_22(ctx); + ctx[3] && create_if_block_23(ctx); return { c() { div = element("div"); @@ -13163,7 +13891,7 @@ function create_if_block_12(ctx) { if (if_block) if_block.c(); if_block_anchor = empty(); - attr(div, "class", div_class_value = null_to_empty("active-parent-bridge-right") + " svelte-1bkhe9s"); + attr(div, "class", div_class_value = null_to_empty("active-parent-bridge-right") + " svelte-7f61s4"); set_style( div, "--bg-color", @@ -13201,7 +13929,7 @@ function create_if_block_12(ctx) { if (if_block) { if_block.p(ctx2, dirty); } else { - if_block = create_if_block_22(ctx2); + if_block = create_if_block_23(ctx2); if_block.c(); if_block.m(if_block_anchor.parentNode, if_block_anchor); } @@ -13221,12 +13949,12 @@ function create_if_block_12(ctx) { } }; } -function create_if_block6(ctx) { +function create_if_block7(ctx) { let div; return { c() { div = element("div"); - attr(div, "class", "active-node-bridge svelte-1bkhe9s"); + attr(div, "class", "active-node-bridge svelte-7f61s4"); set_style( div, "--bg-color", @@ -13257,12 +13985,12 @@ function create_if_block6(ctx) { } }; } -function create_if_block_22(ctx) { +function create_if_block_23(ctx) { let div; return { c() { div = element("div"); - attr(div, "class", "active-parent-bridge-left svelte-1bkhe9s"); + attr(div, "class", "active-parent-bridge-left svelte-7f61s4"); set_style( div, "--bg-color", @@ -13299,19 +14027,19 @@ function create_if_block_22(ctx) { } }; } -function create_fragment58(ctx) { +function create_fragment63(ctx) { let if_block_anchor; function select_block_type(ctx2, dirty) { if (!/*editing*/ ctx2[0] && /*hasActiveChildren*/ ctx2[1] && /*active*/ ctx2[2] === "node" /* node */) - return create_if_block6; + return create_if_block7; if ( /*active*/ ctx2[2] === "parent" /* parent */ ) - return create_if_block_12; + return create_if_block_13; } let current_block_type = select_block_type(ctx, -1); let if_block = current_block_type && current_block_type(ctx); @@ -13351,7 +14079,7 @@ function create_fragment58(ctx) { } }; } -function instance58($$self, $$props, $$invalidate) { +function instance63($$self, $$props, $$invalidate) { let { editing } = $$props; let { hasActiveChildren } = $$props; let { active } = $$props; @@ -13377,8 +14105,8 @@ var Bridges = class extends SvelteComponent { init( this, options, - instance58, - create_fragment58, + instance63, + create_fragment63, safe_not_equal, { editing: 0, @@ -13387,7 +14115,7 @@ var Bridges = class extends SvelteComponent { firstColumn: 3, style: 4 }, - add_css5 + add_css6 ); } }; @@ -13486,16 +14214,16 @@ var droppable = (node) => { const sections = documentStore.getValue().sections; if (isId.node(data) && sections.id_section[data]) { documentStore.dispatch({ - type: "DOCUMENT/DROP_NODE", + type: "document/drop-node", payload: { droppedNodeId: data, targetNodeId: targetCard.id, position: getDropPosition(event, targetCard) } }); - } else { + } else if (!view.viewStore.getValue().document.editing.activeNodeId) { documentStore.dispatch({ - type: "DOCUMENT/PASTE_NODE", + type: "document/paste-node", payload: { targetNodeId: targetCard.id, text: data, @@ -13504,7 +14232,7 @@ var droppable = (node) => { }); } viewStore.dispatch({ - type: "DOCUMENT/SET_DRAG_ENDED" + type: "view/dnd/set-drag-ended" }); } node.addEventListener("dragleave", HandleDragLeave); @@ -13519,11 +14247,41 @@ var droppable = (node) => { }; }; -// src/obsidian/events/workspace/helpers/get-document-format.ts -var getDocumentFormat = (view) => { +// node_modules/tslib/tslib.es6.mjs +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +// src/obsidian/events/workspace/helpers/get-persisted-document-format.ts +var getPersistedDocumentFormat = (view, fail = true) => { invariant(view.file); const format2 = view.plugin.settings.getValue().documents[view.file.path]?.documentFormat; - invariant(format2); + if (fail) + invariant(format2); return format2; }; @@ -13624,9 +14382,9 @@ var extractFrontmatter = (markdown) => { if (match) { const frontmatter = match[0]; const data = markdown.slice(frontmatter.length); - return { data, frontmatter: frontmatter.trim() + "\n" }; + return { body: data, frontmatter: frontmatter.trim() + "\n" }; } else { - return { data: markdown, frontmatter: "" }; + return { body: markdown, frontmatter: "" }; } }; @@ -13650,10 +14408,10 @@ var findOutlinePosition = (view, nodeId) => { } }; -// src/obsidian/events/workspace/actions/set-view-type.ts +// src/stores/settings/actions/set-view-type.ts var setViewType = (plugin, path, type) => { plugin.settings.dispatch({ - type: "SET_VIEW_TYPE", + type: "settings/documents/set-view-type", payload: { path, type @@ -13690,9 +14448,9 @@ var openFileAndJumpToLine = async (view, line, ch) => { }; // src/lib/data-conversion/helpers/html-element-marker/parse-html-element-marker.ts -var htmlCommentRegex2 = //; +var htmlElementRegex = /|><\/span>)/; var parseHtmlElementMarker = (line) => { - const results = htmlCommentRegex2.exec(line); + const results = htmlElementRegex.exec(line); if (results) { const result = results[1]; const split2 = result.split("."); @@ -13718,10 +14476,10 @@ var findHtmlElementPosition = (view, nodeId) => { }; // src/view/components/container/column/components/group/components/card/components/card-buttons/pin-indicator.svelte -function add_css6(target) { +function add_css7(target) { append_styles(target, "svelte-180w9t5", ".pin-indicator.svelte-180w9t5{position:absolute;left:-20px;top:0px;cursor:default;& svg {\n fill: var(--text-muted);\n color: var(--text-muted);\n width:16px !important;\n height:16px !important;\n\n }}"); } -function create_fragment59(ctx) { +function create_fragment64(ctx) { let span; let pin; let current; @@ -13759,16 +14517,16 @@ function create_fragment59(ctx) { var Pin_indicator = class extends SvelteComponent { constructor(options) { super(); - init(this, options, null, create_fragment59, safe_not_equal, {}, add_css6); + init(this, options, null, create_fragment64, safe_not_equal, {}, add_css7); } }; var pin_indicator_default = Pin_indicator; // src/view/components/container/column/components/group/components/card/components/card-buttons/tree-index-button.svelte -function add_css7(target) { +function add_css8(target) { append_styles(target, "svelte-1cmrwyv", ".tree-index.svelte-1cmrwyv{position:absolute;bottom:3px;right:8px;opacity:0.8;font-size:12px;cursor:pointer}.is-active.svelte-1cmrwyv{opacity:0.3}.is-active-child.svelte-1cmrwyv{opacity:0.3}.is-active-parent.svelte-1cmrwyv{opacity:0.6}"); } -function create_if_block_13(ctx) { +function create_if_block8(ctx) { let pin; let current; pin = new pin_indicator_default({}); @@ -13795,23 +14553,7 @@ function create_if_block_13(ctx) { } }; } -function create_if_block7(ctx) { - let t; - return { - c() { - t = text("."); - }, - m(target, anchor) { - insert(target, t, anchor); - }, - d(detaching) { - if (detaching) { - detach(t); - } - } - }; -} -function create_fragment60(ctx) { +function create_fragment65(ctx) { let div; let t0; let span; @@ -13821,32 +14563,26 @@ function create_fragment60(ctx) { let current; let mounted; let dispose; - let if_block0 = ( + let if_block = ( /*pinned*/ - ctx[3] && create_if_block_13(ctx) - ); - let if_block1 = ( - /*hasChildren*/ - ctx[2] && create_if_block7(ctx) + ctx[2] && create_if_block8(ctx) ); return { c() { div = element("div"); - if (if_block0) - if_block0.c(); + if (if_block) + if_block.c(); t0 = space(); span = element("span"); t1 = text( /*section*/ ctx[1] ); - if (if_block1) - if_block1.c(); attr(span, "aria-label", span_aria_label_value = lang.card_btn_reveal_in_editor); attr(div, "class", div_class_value = null_to_empty("tree-index " + /*activeStatus*/ (ctx[0] ? ( /*classes*/ - ctx[5][ + ctx[4][ /*activeStatus*/ ctx[0] ] @@ -13854,20 +14590,18 @@ function create_fragment60(ctx) { }, m(target, anchor) { insert(target, div, anchor); - if (if_block0) - if_block0.m(div, null); + if (if_block) + if_block.m(div, null); append(div, t0); append(div, span); append(span, t1); - if (if_block1) - if_block1.m(span, null); current = true; if (!mounted) { dispose = listen( span, "click", /*openFile*/ - ctx[4] + ctx[3] ); mounted = true; } @@ -13875,23 +14609,23 @@ function create_fragment60(ctx) { p(ctx2, [dirty]) { if ( /*pinned*/ - ctx2[3] + ctx2[2] ) { - if (if_block0) { + if (if_block) { if (dirty & /*pinned*/ - 8) { - transition_in(if_block0, 1); + 4) { + transition_in(if_block, 1); } } else { - if_block0 = create_if_block_13(ctx2); - if_block0.c(); - transition_in(if_block0, 1); - if_block0.m(div, t0); + if_block = create_if_block8(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div, t0); } - } else if (if_block0) { + } else if (if_block) { group_outros(); - transition_out(if_block0, 1, 1, () => { - if_block0 = null; + transition_out(if_block, 1, 1, () => { + if_block = null; }); check_outros(); } @@ -13902,25 +14636,11 @@ function create_fragment60(ctx) { /*section*/ ctx2[1] ); - if ( - /*hasChildren*/ - ctx2[2] - ) { - if (if_block1) { - } else { - if_block1 = create_if_block7(ctx2); - if_block1.c(); - if_block1.m(span, null); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } if (!current || dirty & /*activeStatus*/ 1 && div_class_value !== (div_class_value = null_to_empty("tree-index " + /*activeStatus*/ (ctx2[0] ? ( /*classes*/ - ctx2[5][ + ctx2[4][ /*activeStatus*/ ctx2[0] ] @@ -13931,37 +14651,34 @@ function create_fragment60(ctx) { i(local) { if (current) return; - transition_in(if_block0); + transition_in(if_block); current = true; }, o(local) { - transition_out(if_block0); + transition_out(if_block); current = false; }, d(detaching) { if (detaching) { detach(div); } - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); + if (if_block) + if_block.d(); mounted = false; dispose(); } }; } -function instance59($$self, $$props, $$invalidate) { +function instance64($$self, $$props, $$invalidate) { const view = getView(); let { nodeId } = $$props; let { activeStatus } = $$props; let { section } = $$props; - let { hasChildren } = $$props; let { pinned } = $$props; const openFile2 = () => __awaiter(void 0, void 0, void 0, function* () { if (!view.file) return; - const format2 = getDocumentFormat(view); + const format2 = getPersistedDocumentFormat(view); const i = format2 === "sections" ? findSectionPosition(view, nodeId) : format2 === "html-element" ? findHtmlElementPosition(view, nodeId) : findOutlinePosition(view, nodeId); if (typeof i === "undefined") return; @@ -13978,17 +14695,15 @@ function instance59($$self, $$props, $$invalidate) { }; $$self.$$set = ($$props2) => { if ("nodeId" in $$props2) - $$invalidate(6, nodeId = $$props2.nodeId); + $$invalidate(5, nodeId = $$props2.nodeId); if ("activeStatus" in $$props2) $$invalidate(0, activeStatus = $$props2.activeStatus); if ("section" in $$props2) $$invalidate(1, section = $$props2.section); - if ("hasChildren" in $$props2) - $$invalidate(2, hasChildren = $$props2.hasChildren); if ("pinned" in $$props2) - $$invalidate(3, pinned = $$props2.pinned); + $$invalidate(2, pinned = $$props2.pinned); }; - return [activeStatus, section, hasChildren, pinned, openFile2, classes, nodeId]; + return [activeStatus, section, pinned, openFile2, classes, nodeId]; } var Tree_index_button = class extends SvelteComponent { constructor(options) { @@ -13996,24 +14711,23 @@ var Tree_index_button = class extends SvelteComponent { init( this, options, - instance59, - create_fragment60, + instance64, + create_fragment65, safe_not_equal, { - nodeId: 6, + nodeId: 5, activeStatus: 0, section: 1, - hasChildren: 2, - pinned: 3 + pinned: 2 }, - add_css7 + add_css8 ); } }; var tree_index_button_default = Tree_index_button; // src/view/components/container/column/components/group/components/card/components/card-style.svelte -function create_fragment61(ctx) { +function create_fragment66(ctx) { let div; let div_style_value; let div_class_value; @@ -14049,7 +14763,7 @@ function create_fragment61(ctx) { } }; } -function instance60($$self, $$props, $$invalidate) { +function instance65($$self, $$props, $$invalidate) { let { style } = $$props; $$self.$$set = ($$props2) => { if ("style" in $$props2) @@ -14060,13 +14774,13 @@ function instance60($$self, $$props, $$invalidate) { var Card_style = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance60, create_fragment61, safe_not_equal, { style: 0 }); + init(this, options, instance65, create_fragment66, safe_not_equal, { style: 0 }); } }; var card_style_default = Card_style; // src/view/components/container/column/components/group/components/card/card.svelte -function add_css8(target) { +function add_css9(target) { append_styles(target, "svelte-1nruoli", ":root{--node-width:400px;--min-node-height:100px}.lineage-card.svelte-1nruoli{width:var(--node-width);height:fit-content;display:flex;position:relative;font-size:16px;--scrollbar-thumb-bg:var(--color-base-30);--scrollbar-active-thumb-bg:var(--color-base-40)}.lineage-card.svelte-1nruoli:hover{z-index:10}.lineage-card.svelte-1nruoli::-webkit-scrollbar{display:initial}"); } function create_if_block_14(ctx) { @@ -14107,7 +14821,7 @@ function create_if_block_14(ctx) { } }; } -function create_else_block5(ctx) { +function create_else_block6(ctx) { let draggable2; let current; draggable2 = new draggable_default({ @@ -14120,7 +14834,7 @@ function create_else_block5(ctx) { /*isInSidebar*/ ctx[11] ), - $$slots: { default: [create_default_slot51] }, + $$slots: { default: [create_default_slot56] }, $$scope: { ctx } } }); @@ -14163,7 +14877,7 @@ function create_else_block5(ctx) { } }; } -function create_if_block8(ctx) { +function create_if_block9(ctx) { let inlineeditor; let current; inlineeditor = new inline_editor_default({ @@ -14213,7 +14927,7 @@ function create_if_block8(ctx) { } }; } -function create_default_slot51(ctx) { +function create_default_slot56(ctx) { let content; let current; content = new content_default({ @@ -14271,7 +14985,7 @@ function create_default_slot51(ctx) { } }; } -function create_fragment62(ctx) { +function create_fragment67(ctx) { let div; let t0; let current_block_type_index; @@ -14292,7 +15006,7 @@ function create_fragment62(ctx) { /*style*/ ctx[13] && create_if_block_14(ctx) ); - const if_block_creators = [create_if_block8, create_else_block5]; + const if_block_creators = [create_if_block9, create_else_block6]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -14355,10 +15069,6 @@ function create_fragment62(ctx) { /*section*/ ctx[8] ), - hasChildren: ( - /*hasChildren*/ - ctx[4] - ), pinned: ( /*pinned*/ ctx[10] @@ -14555,10 +15265,6 @@ function create_fragment62(ctx) { 256) treeindex_changes.section = /*section*/ ctx2[8]; - if (dirty & /*hasChildren*/ - 16) - treeindex_changes.hasChildren = /*hasChildren*/ - ctx2[4]; if (dirty & /*pinned*/ 1024) treeindex_changes.pinned = /*pinned*/ @@ -14672,7 +15378,7 @@ function create_fragment62(ctx) { } }; } -function instance61($$self, $$props, $$invalidate) { +function instance66($$self, $$props, $$invalidate) { let { node } = $$props; let { editing } = $$props; let { active } = $$props; @@ -14772,8 +15478,8 @@ var Card = class extends SvelteComponent { init( this, options, - instance61, - create_fragment62, + instance66, + create_fragment67, safe_not_equal, { node: 0, @@ -14795,7 +15501,7 @@ var Card = class extends SvelteComponent { hidden: 16, alwaysShowCardButtons: 17 }, - add_css8 + add_css9 ); } }; @@ -14811,7 +15517,7 @@ var findColumn = (columns, columnId) => { var groupsStore = (view, columnId) => { let column; let columns; - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { if (!column || columns !== state2.document.columns) { columns = state2.document.columns; column = findColumn(columns, columnId); @@ -14822,7 +15528,7 @@ var groupsStore = (view, columnId) => { }); }; var singleColumnGroupStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return state2.document.columns.length > 0 ? state2.document.columns[0].groups : []; }); }; @@ -14868,7 +15574,7 @@ var findGroup = (columns, columnId, groupId) => { var nodesStore = (view, columnId, groupId) => { let group; let columns; - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { if (!group || columns !== state2.document.columns) { columns = state2.document.columns; group = findGroup(columns, columnId, groupId); @@ -14879,18 +15585,18 @@ var nodesStore = (view, columnId, groupId) => { }); }; var singleColumnNodesStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return sortTreeNodes(state2.document.columns); }); }; // src/view/components/container/column/components/group/group.svelte -function get_each_context2(ctx, list, i) { +function get_each_context4(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[27] = list[i]; return child_ctx; } -function create_if_block9(ctx) { +function create_if_block10(ctx) { let div; let each_blocks = []; let each_1_lookup = /* @__PURE__ */ new Map(); @@ -14906,9 +15612,9 @@ function create_if_block9(ctx) { ctx2[27] ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context2(ctx, each_value, i); + let child_ctx = get_each_context4(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block2(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block4(key, child_ctx)); } return { c() { @@ -14953,7 +15659,7 @@ function create_if_block9(ctx) { ctx2[22] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div, outro_and_destroy_block, create_each_block2, null, get_each_context2); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div, outro_and_destroy_block, create_each_block4, null, get_each_context4); check_outros(); } if (!current || dirty & /*activeChildGroups, groupId, outlineMode, activeGroup*/ @@ -15276,7 +15982,7 @@ function create_if_block_15(ctx) { } }; } -function create_each_block2(key_1, ctx) { +function create_each_block4(key_1, ctx) { let first; let show_if = ( /*searchQuery*/ @@ -15369,7 +16075,7 @@ function create_each_block2(key_1, ctx) { } }; } -function create_fragment63(ctx) { +function create_fragment68(ctx) { let show_if = ( /*$nodes*/ ctx[22].length > 0 && /*searchQuery*/ @@ -15383,7 +16089,7 @@ function create_fragment63(ctx) { ); let if_block_anchor; let current; - let if_block = show_if && create_if_block9(ctx); + let if_block = show_if && create_if_block10(ctx); return { c() { if (if_block) @@ -15416,7 +16122,7 @@ function create_fragment63(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block9(ctx2); + if_block = create_if_block10(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(if_block_anchor.parentNode, if_block_anchor); @@ -15448,7 +16154,7 @@ function create_fragment63(ctx) { } }; } -function instance62($$self, $$props, $$invalidate) { +function instance67($$self, $$props, $$invalidate) { let $nodes; let { groupId } = $$props; let { columnId } = $$props; @@ -15557,7 +16263,7 @@ function instance62($$self, $$props, $$invalidate) { var Group = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance62, create_fragment63, safe_not_equal, { + init(this, options, instance67, create_fragment68, safe_not_equal, { groupId: 0, columnId: 24, activeChildGroups: 1, @@ -15587,15 +16293,15 @@ var Group = class extends SvelteComponent { var group_default = Group; // src/view/components/container/column/column.svelte -function add_css9(target) { +function add_css10(target) { append_styles(target, "svelte-f71k1e", ".column.svelte-f71k1e::-webkit-scrollbar{display:none}.column-buffer.svelte-f71k1e{height:90%;min-width:var(--node-width)}"); } -function get_each_context3(ctx, list, i) { +function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[26] = list[i]; return child_ctx; } -function create_if_block10(ctx) { +function create_if_block11(ctx) { let group_1; let current; group_1 = new group_default({ @@ -15813,7 +16519,7 @@ function create_if_block10(ctx) { } }; } -function create_each_block3(key_1, ctx) { +function create_each_block5(key_1, ctx) { let first; let show_if = !/*dndChildGroups*/ ctx[2].has( @@ -15822,7 +16528,7 @@ function create_each_block3(key_1, ctx) { ); let if_block_anchor; let current; - let if_block = show_if && create_if_block10(ctx); + let if_block = show_if && create_if_block11(ctx); return { key: key_1, first: null, @@ -15857,7 +16563,7 @@ function create_each_block3(key_1, ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block10(ctx); + if_block = create_if_block11(ctx); if_block.c(); transition_in(if_block, 1); if_block.m(if_block_anchor.parentNode, if_block_anchor); @@ -15890,7 +16596,7 @@ function create_each_block3(key_1, ctx) { } }; } -function create_fragment64(ctx) { +function create_fragment69(ctx) { let div2; let div0; let t0; @@ -15908,9 +16614,9 @@ function create_fragment64(ctx) { ctx2[26].parentId ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context3(ctx, each_value, i); + let child_ctx = get_each_context5(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block3(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block5(key, child_ctx)); } return { c() { @@ -15953,7 +16659,7 @@ function create_fragment64(ctx) { ctx2[23] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div2, outro_and_destroy_block, create_each_block3, t1, get_each_context3); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div2, outro_and_destroy_block, create_each_block5, t1, get_each_context5); check_outros(); } if (!current || dirty & /*columnId*/ @@ -15990,7 +16696,7 @@ function create_fragment64(ctx) { } }; } -function instance63($$self, $$props, $$invalidate) { +function instance68($$self, $$props, $$invalidate) { let $groups; let { columnId } = $$props; let { activeChildGroups } = $$props; @@ -16100,8 +16806,8 @@ var Column = class extends SvelteComponent { init( this, options, - instance63, - create_fragment64, + instance68, + create_fragment69, safe_not_equal, { columnId: 0, @@ -16128,7 +16834,7 @@ var Column = class extends SvelteComponent { hiddenNodes: 21, alwaysShowCardButtons: 22 }, - add_css9 + add_css10 ); } }; @@ -16235,14 +16941,14 @@ var scrollOnDndX = (container) => { }; // src/stores/document/derived/columns-store.ts -var columnsStore = (view) => derived(view.documentStore, (state2) => state2.document.columns); -var singleColumnStore = (view) => derived(view.documentStore, (state2) => { +var columnsStore = (view) => derived2(view.documentStore, (state2) => state2.document.columns); +var singleColumnStore = (view) => derived2(view.documentStore, (state2) => { const column = state2.document.columns[0]; return column ? [column] : []; }); // src/view/components/container/buffers/columns-buffer.svelte -function create_fragment65(ctx) { +function create_fragment70(ctx) { let div; return { c() { @@ -16267,56 +16973,56 @@ function create_fragment65(ctx) { var Columns_buffer = class extends SvelteComponent { constructor(options) { super(); - init(this, options, null, create_fragment65, safe_not_equal, {}); + init(this, options, null, create_fragment70, safe_not_equal, {}); } }; var columns_buffer_default = Columns_buffer; // src/stores/view/derived/dnd-store.ts -var dndStore = (view) => derived(view.viewStore, (state2) => state2.document.dnd); +var dndStore = (view) => derived2(view.viewStore, (state2) => state2.document.dnd); // src/stores/view/derived/active-branch-store.ts -var activeBranchStore = (view) => derived(view.viewStore, (state2) => state2.document.activeBranch); +var activeBranchStore = (view) => derived2(view.viewStore, (state2) => state2.document.activeBranch); // src/stores/view/derived/active-node-store.ts -var activeNodeStore = (view) => derived(view.viewStore, (state2) => state2.document.activeNode); +var activeNodeStore = (view) => derived2(view.viewStore, (state2) => state2.document.activeNode); // src/stores/view/derived/editing-store.ts -var documentStateStore = (view) => derived(view.viewStore, (state2) => state2.document.editing); +var documentStateStore = (view) => derived2(view.viewStore, (state2) => state2.document.editing); // src/stores/view/derived/search-store.ts -var searchStore = (view) => derived(view.viewStore, (state2) => state2.search); +var searchStore = (view) => derived2(view.viewStore, (state2) => state2.search); // src/stores/document/derived/id-section-store.ts var IdSectionStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return state2.sections.id_section; }); }; // src/stores/view/derived/selected-nodes-store.ts -var selectedNodesStore = (view) => derived(view.viewStore, (state2) => state2.document.selectedNodes); +var selectedNodesStore = (view) => derived2(view.viewStore, (state2) => state2.document.selectedNodes); // src/stores/document/derived/pinned-nodes-store.ts var PinnedNodesStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return state2.pinnedNodes.Ids; }); }; // src/stores/document/derived/meta.ts var GroupParentIdsStore = (view) => { - return derived(view.documentStore, (state2) => { + return derived2(view.documentStore, (state2) => { return state2.meta.groupParentIds; }); }; // src/stores/view/derived/pending-confirmation.ts -var PendingConfirmationStore = (view) => derived(view.viewStore, (state2) => state2.document.pendingConfirmation); +var PendingConfirmationStore = (view) => derived2(view.viewStore, (state2) => state2.document.pendingConfirmation); // src/stores/view/derived/style-rules.ts -var NodeStylesStore = (view) => derived(view.viewStore, (state2) => state2.styleRules.nodeStyles); -var AllRuleMatchesStore = (view) => derived(view.viewStore, (state2) => state2.styleRules.allMatches); +var NodeStylesStore = (view) => derived2(view.viewStore, (state2) => state2.styleRules.nodeStyles); +var AllRuleMatchesStore = (view) => derived2(view.viewStore, (state2) => state2.styleRules.allMatches); // src/lib/tree-utils/get/get-all-children.ts var getAllChildren = (columns, nodeId) => { @@ -16343,7 +17049,7 @@ var textIsSelected = () => { }; // src/stores/view/derived/outline-store.ts -var OutlineStore = (view) => derived(view.viewStore, (state2) => state2.outline); +var OutlineStore = (view) => derived2(view.viewStore, (state2) => state2.outline); // src/view/actions/hide-floating-buttons.ts var toggleHideButtons = (element2, hide) => { @@ -16372,18 +17078,10 @@ var hideFloatingButtons = (element2) => { resetHideButtons(); delayedHideButtons(); }; - const view = getView(); - const subscription = AlwaysShowCardButtons(view).subscribe((show) => { - if (show) { - element2.addEventListener("mousemove", onMousemove); - } else { - element2.removeEventListener("mousemove", onMousemove); - } - }); + element2.addEventListener("mousemove", onMousemove); return { destroy: () => { resetHideButtons(); - subscription(); element2.removeEventListener("mousemove", onMousemove); } }; @@ -16475,16 +17173,16 @@ var scrollOnDndY = (container) => { }; // src/view/components/container/container.svelte -function add_css10(target) { +function add_css11(target) { append_styles(target, "svelte-1dkv8lc", ".columns-container.svelte-1dkv8lc{--scrollbar-thumb-bg:transparent;--scrollbar-active-thumb-bg:transparent;--scrollbar-bg:transparent}.columns-container.svelte-1dkv8lc::-webkit-scrollbar{display:none}"); } -function get_each_context4(ctx, list, i) { +function get_each_context6(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[43] = list[i]; child_ctx[45] = i; return child_ctx; } -function create_each_block4(key_1, ctx) { +function create_each_block6(key_1, ctx) { let first; let column_1; let current; @@ -16712,7 +17410,7 @@ function create_each_block4(key_1, ctx) { } }; } -function create_fragment66(ctx) { +function create_fragment71(ctx) { let div1; let div0; let columnsbuffer0; @@ -16738,9 +17436,9 @@ function create_fragment66(ctx) { ctx2[43].id ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context4(ctx, each_value, i); + let child_ctx = get_each_context6(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block4(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block6(key, child_ctx)); } columnsbuffer1 = new columns_buffer_default({}); return { @@ -16806,7 +17504,7 @@ function create_fragment66(ctx) { ctx2[10] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block4, t1, get_each_context4); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block6, t1, get_each_context6); check_outros(); } if (!current || dirty[0] & /*$limitPreviewHeight, $applyGap, outlineMode, $zoom*/ @@ -16851,7 +17549,7 @@ function create_fragment66(ctx) { } }; } -function instance64($$self, $$props, $$invalidate) { +function instance69($$self, $$props, $$invalidate) { let pinnedNodes; let $dnd; let $pinnedNodesArray; @@ -16916,11 +17614,13 @@ function instance64($$self, $$props, $$invalidate) { if (textIsSelected()) return; const editingState = view.viewStore.getValue().document.editing; - if (editingState.activeNodeId && !editingState.isInSidebar) { + if (editingState.activeNodeId) { saveNodeContent(view, true); } }; const centerActiveNode = (event) => { + if (!event.shiftKey) + return; const target = event.target; if (target.closest(".lng-prev") || target.closest(".active-node")) { return; @@ -17015,13 +17715,13 @@ function instance64($$self, $$props, $$invalidate) { var Container = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance64, create_fragment66, safe_not_equal, { outlineMode: 0 }, add_css10, [-1, -1]); + init(this, options, instance69, create_fragment71, safe_not_equal, { outlineMode: 0 }, add_css11, [-1, -1]); } }; var container_default = Container; // src/view/components/container/container-wrapper.svelte -function create_if_block11(ctx) { +function create_if_block12(ctx) { let container; let current; container = new container_default({ @@ -17061,11 +17761,11 @@ function create_if_block11(ctx) { } }; } -function create_fragment67(ctx) { +function create_fragment72(ctx) { let if_block_anchor; let current; let if_block = !/*unmounting*/ - ctx[0] && create_if_block11(ctx); + ctx[0] && create_if_block12(ctx); return { c() { if (if_block) @@ -17088,7 +17788,7 @@ function create_fragment67(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block11(ctx2); + if_block = create_if_block12(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(if_block_anchor.parentNode, if_block_anchor); @@ -17120,7 +17820,7 @@ function create_fragment67(ctx) { } }; } -function instance65($$self, $$props, $$invalidate) { +function instance70($$self, $$props, $$invalidate) { let $outlineMode; const view = getView(); let unmounting = false; @@ -17148,22 +17848,22 @@ function instance65($$self, $$props, $$invalidate) { var Container_wrapper = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance65, create_fragment67, safe_not_equal, {}); + init(this, options, instance70, create_fragment72, safe_not_equal, {}); } }; var container_wrapper_default = Container_wrapper; // src/view/components/container/breadcrumbs/breadcrumbs-item.svelte -function add_css11(target) { - append_styles(target, "svelte-1q9w33n", ".separator.svelte-1q9w33n{padding:2px 1px;color:var(--text-faint);min-width:8px}.breadcrumbs-item.svelte-1q9w33n{height:30px;border-bottom:1px solid var(--background-modifier-border);color:var(--text-muted);background-color:var(--interactive-normal);cursor:pointer;padding:2px 4px;border-radius:var(--radius-s);max-width:350px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:25px}.breadcrumbs-item.svelte-1q9w33n:hover{background-color:var(--interactive-hover)}.breadcrumbs-item.svelte-1q9w33n:last-child{border-bottom:none}.section-number.svelte-1q9w33n{font-style:italic;color:var(--text-faint)}"); +function add_css12(target) { + append_styles(target, "svelte-pls2d1", ".separator.svelte-pls2d1{padding:2px 1px;color:var(--text-faint);min-width:8px}.breadcrumbs-item.svelte-pls2d1{height:30px;color:var(--text-muted);cursor:pointer;padding:2px 6px;max-width:350px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;line-height:25px}.breadcrumbs-item.svelte-pls2d1:hover{background-color:var(--interactive-hover)}.breadcrumbs-item.svelte-pls2d1:first-child{padding-left:8px}.breadcrumbs-item.svelte-pls2d1:last-child{padding-right:8px}.section-number.svelte-pls2d1{font-style:italic;color:var(--text-faint)}"); } -function create_if_block12(ctx) { +function create_if_block13(ctx) { let span; return { c() { span = element("span"); span.textContent = "/"; - attr(span, "class", "separator svelte-1q9w33n"); + attr(span, "class", "separator svelte-pls2d1"); }, m(target, anchor) { insert(target, span, anchor); @@ -17175,7 +17875,7 @@ function create_if_block12(ctx) { } }; } -function create_fragment68(ctx) { +function create_fragment73(ctx) { let t0; let span; let t1_value = ( @@ -17190,7 +17890,7 @@ function create_fragment68(ctx) { let dispose; let if_block = ( /*index*/ - ctx[0] > 0 && create_if_block12(ctx) + ctx[0] > 0 && create_if_block13(ctx) ); return { c() { @@ -17203,7 +17903,7 @@ function create_fragment68(ctx) { ctx[1] + "\n" + /*content*/ ctx[2]); attr(span, "class", span_class_value = null_to_empty(`breadcrumbs-item ${/*content*/ - ctx[2] ? "" : "section-number"}`) + " svelte-1q9w33n"); + ctx[2] ? "" : "section-number"}`) + " svelte-pls2d1"); attr(span, "data-tooltip-position", "top"); }, m(target, anchor) { @@ -17229,7 +17929,7 @@ function create_fragment68(ctx) { ) { if (if_block) { } else { - if_block = create_if_block12(ctx2); + if_block = create_if_block13(ctx2); if_block.c(); if_block.m(t0.parentNode, t0); } @@ -17250,7 +17950,7 @@ function create_fragment68(ctx) { } if (dirty & /*content*/ 4 && span_class_value !== (span_class_value = null_to_empty(`breadcrumbs-item ${/*content*/ - ctx2[2] ? "" : "section-number"}`) + " svelte-1q9w33n")) { + ctx2[2] ? "" : "section-number"}`) + " svelte-pls2d1")) { attr(span, "class", span_class_value); } }, @@ -17268,7 +17968,7 @@ function create_fragment68(ctx) { } }; } -function instance66($$self, $$props, $$invalidate) { +function instance71($$self, $$props, $$invalidate) { let { parentId } = $$props; let { index } = $$props; let { section } = $$props; @@ -17299,8 +17999,8 @@ var Breadcrumbs_item = class extends SvelteComponent { init( this, options, - instance66, - create_fragment68, + instance71, + create_fragment73, safe_not_equal, { parentId: 4, @@ -17308,23 +18008,23 @@ var Breadcrumbs_item = class extends SvelteComponent { section: 1, content: 2 }, - add_css11 + add_css12 ); } }; var breadcrumbs_item_default = Breadcrumbs_item; // src/view/components/container/breadcrumbs/breadcrumbs.svelte -function add_css12(target) { - append_styles(target, "svelte-576atj", ".breadcrumbs-container.svelte-576atj{z-index:var(--z-index-breadcrumbs);left:var(--size-4-2);bottom:var(--size-4-2);display:flex;position:absolute;max-width:calc(100% - var(--size-4-2) * 2)}.breadcrumbs.svelte-576atj{display:flex;align-items:center;justify-content:center;border-radius:var(--radius-s);background-color:var(--interactive-normal);box-shadow:var(--input-shadow);max-width:100%;overflow:auto;font-size:var(--file-header-font-size);color:var(--text-muted);gap:0}"); +function add_css13(target) { + append_styles(target, "svelte-1uz8lgp", ".breadcrumbs-container.svelte-1uz8lgp{z-index:var(--z-index-breadcrumbs);left:0;bottom:0;display:flex;position:absolute;max-width:calc(100% - var(--size-4-2) * 2 - 34px)}.breadcrumbs.svelte-1uz8lgp{display:flex;align-items:center;justify-content:center;border-style:solid;border-width:1px 1px 0 0;border-color:var(--status-bar-border-color);border-radius:0 6px 0 0;background-color:var(--status-bar-background);max-width:100%;overflow:hidden;font-size:var(--file-header-font-size);color:var(--text-muted);gap:0}"); } -function get_each_context5(ctx, list, i) { +function get_each_context7(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[7] = list[i]; child_ctx[9] = i; return child_ctx; } -function create_each_block5(key_1, ctx) { +function create_each_block7(key_1, ctx) { let first; let item; let current; @@ -17412,7 +18112,7 @@ function create_each_block5(key_1, ctx) { } }; } -function create_fragment69(ctx) { +function create_fragment74(ctx) { let div1; let div0; let each_blocks = []; @@ -17427,9 +18127,9 @@ function create_fragment69(ctx) { ctx2[7] ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context5(ctx, each_value, i); + let child_ctx = get_each_context7(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block5(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block7(key, child_ctx)); } return { c() { @@ -17438,8 +18138,8 @@ function create_fragment69(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div0, "class", "breadcrumbs svelte-576atj"); - attr(div1, "class", "breadcrumbs-container svelte-576atj"); + attr(div0, "class", "breadcrumbs svelte-1uz8lgp"); + attr(div1, "class", "breadcrumbs-container svelte-1uz8lgp"); }, m(target, anchor) { insert(target, div1, anchor); @@ -17459,7 +18159,7 @@ function create_fragment69(ctx) { ctx2[0].sortedParentNodes ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block5, null, get_each_context5); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block7, null, get_each_context7); check_outros(); } }, @@ -17487,7 +18187,7 @@ function create_fragment69(ctx) { } }; } -function instance67($$self, $$props, $$invalidate) { +function instance72($$self, $$props, $$invalidate) { let $activeBranch; let $contents; let $sections; @@ -17503,19 +18203,19 @@ function instance67($$self, $$props, $$invalidate) { var Breadcrumbs = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance67, create_fragment69, safe_not_equal, {}, add_css12); + init(this, options, instance72, create_fragment74, safe_not_equal, {}, add_css13); } }; var breadcrumbs_default = Breadcrumbs; // src/stores/view/derived/navigation-history-store.ts -var navigationHistoryStore = (view) => derived(view.viewStore, (state2) => state2.navigationHistory); +var navigationHistoryStore = (view) => derived2(view.viewStore, (state2) => state2.navigationHistory); // src/view/components/container/toolbar/components/navigation-buttons.svelte -function add_css13(target) { +function add_css14(target) { append_styles(target, "svelte-13yyztm", ".navigation-history.svelte-13yyztm{display:flex;align-items:center;justify-content:center}"); } -function create_default_slot_13(ctx) { +function create_default_slot_12(ctx) { let arrowleft; let current; arrowleft = new arrow_left_default({ props: { class: "svg-icon", size: "12" } }); @@ -17543,7 +18243,7 @@ function create_default_slot_13(ctx) { } }; } -function create_default_slot52(ctx) { +function create_default_slot57(ctx) { let arrowright; let current; arrowright = new arrow_right_default({ props: { class: "svg-icon", size: "12" } }); @@ -17571,7 +18271,7 @@ function create_default_slot52(ctx) { } }; } -function create_fragment70(ctx) { +function create_fragment75(ctx) { let div; let button0; let t; @@ -17583,7 +18283,7 @@ function create_fragment70(ctx) { ctx[0].state.canGoBack, label: lang.tlb_navigation_navigate_back, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot_13] }, + $$slots: { default: [create_default_slot_12] }, $$scope: { ctx } } }); @@ -17598,7 +18298,7 @@ function create_fragment70(ctx) { ctx[0].state.canGoForward, label: lang.tlb_navigation_navigate_forward, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot52] }, + $$slots: { default: [create_default_slot57] }, $$scope: { ctx } } }); @@ -17665,17 +18365,21 @@ function create_fragment70(ctx) { } }; } -function instance68($$self, $$props, $$invalidate) { +function instance73($$self, $$props, $$invalidate) { let $navigationHistory; const view = getView(); const viewStore = view.viewStore; const navigationHistory = navigationHistoryStore(view); component_subscribe($$self, navigationHistory, (value) => $$invalidate(0, $navigationHistory = value)); const click_handler = () => { - viewStore.dispatch({ type: "NAVIGATION/NAVIGATE_BACK" }); + viewStore.dispatch({ + type: "view/set-active-node/history/select-previous" + }); }; const click_handler_1 = () => { - viewStore.dispatch({ type: "NAVIGATION/NAVIGATE_FORWARD" }); + viewStore.dispatch({ + type: "view/set-active-node/history/select-next" + }); }; return [ $navigationHistory, @@ -17688,16 +18392,16 @@ function instance68($$self, $$props, $$invalidate) { var Navigation_buttons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance68, create_fragment70, safe_not_equal, {}, add_css13); + init(this, options, instance73, create_fragment75, safe_not_equal, {}, add_css14); } }; var navigation_buttons_default = Navigation_buttons; // src/view/components/container/toolbar/components/search-toggle.svelte -function add_css14(target) { +function add_css15(target) { append_styles(target, "svelte-17l9x5j", ".search-container.svelte-17l9x5j{display:flex;align-items:center;justify-content:center;gap:var(--size-4-2)}"); } -function create_default_slot53(ctx) { +function create_default_slot58(ctx) { let search_1; let current; search_1 = new search_default({ props: { class: "svg-icon", size: "12" } }); @@ -17725,7 +18429,7 @@ function create_default_slot53(ctx) { } }; } -function create_fragment71(ctx) { +function create_fragment76(ctx) { let div; let button; let current; @@ -17737,7 +18441,7 @@ function create_fragment71(ctx) { ), label: lang.tlb_search_toggle, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot53] }, + $$slots: { default: [create_default_slot58] }, $$scope: { ctx } } }); @@ -17787,30 +18491,30 @@ function create_fragment71(ctx) { } }; } -function instance69($$self, $$props, $$invalidate) { +function instance74($$self, $$props, $$invalidate) { let $search; const view = getView(); const viewStore = view.viewStore; const search2 = searchStore(view); component_subscribe($$self, search2, (value) => $$invalidate(0, $search = value)); const click_handler = () => { - viewStore.dispatch({ type: "SEARCH/TOGGLE_INPUT" }); + viewStore.dispatch({ type: "view/search/toggle-input" }); }; return [$search, viewStore, search2, click_handler]; } var Search_toggle = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance69, create_fragment71, safe_not_equal, {}, add_css14); + init(this, options, instance74, create_fragment76, safe_not_equal, {}, add_css15); } }; var search_toggle_default = Search_toggle; // src/view/components/container/toolbar/components/search-input.svelte -function add_css15(target) { +function add_css16(target) { append_styles(target, "svelte-krr6j1", ".search-input-element.svelte-krr6j1{height:34px;padding-right:74px !important;padding-left:12px;min-width:250px}@media(max-width: 568px){.search-input-element.svelte-krr6j1{width:100%;min-width:50px}.search-input-wrapper.svelte-krr6j1{width:100%}}.search-input-wrapper.svelte-krr6j1{max-width:100%}.search-input-container.svelte-krr6j1::before{display:none}.no-results.svelte-krr6j1{box-shadow:0 0 0 2px var(--color-red) !important}"); } -function create_if_block13(ctx) { +function create_if_block14(ctx) { let div; let eye; let div_aria_label_value; @@ -17823,7 +18527,7 @@ function create_if_block13(ctx) { c() { div = element("div"); create_component(eye.$$.fragment); - attr(div, "aria-label", div_aria_label_value = lang.tlb_search_show_all_cards); + attr(div, "aria-label", div_aria_label_value = lang.tlb_search_show_all_nodes); attr(div, "class", div_class_value = null_to_empty("input-right-decorator clickable-icon" + /*$search*/ (ctx[0].showAllNodes ? " is-active" : "")) + " svelte-krr6j1"); set_style(div, "right", "28px"); @@ -17869,7 +18573,7 @@ function create_if_block13(ctx) { } }; } -function create_fragment72(ctx) { +function create_fragment77(ctx) { let div2; let input; let input_autofocus_value; @@ -17891,7 +18595,7 @@ function create_fragment72(ctx) { let dispose; let if_block = ( /*$search*/ - ctx[0].query.length > 0 && create_if_block13(ctx) + ctx[0].query.length > 0 && create_if_block14(ctx) ); text_1 = new text_default({ props: { class: "svg-icon" } }); return { @@ -17909,7 +18613,8 @@ function create_fragment72(ctx) { input.autofocus = input_autofocus_value = true; attr(input, "class", input_class_value = null_to_empty("search-input search-input-element" + /*$search*/ (ctx[0].query && /*$search*/ - ctx[0].results.size === 0 ? " no-results" : "")) + " svelte-krr6j1"); + ctx[0].results.size === 0 && !/*$search*/ + ctx[0].searching ? " no-results" : "")) + " svelte-krr6j1"); attr(input, "enterkeyhint", "search"); attr(input, "placeholder", input_placeholder_value = "search"); attr(input, "spellcheck", "false"); @@ -17968,7 +18673,8 @@ function create_fragment72(ctx) { if (!current || dirty & /*$search*/ 1 && input_class_value !== (input_class_value = null_to_empty("search-input search-input-element" + /*$search*/ (ctx2[0].query && /*$search*/ - ctx2[0].results.size === 0 ? " no-results" : "")) + " svelte-krr6j1")) { + ctx2[0].results.size === 0 && !/*$search*/ + ctx2[0].searching ? " no-results" : "")) + " svelte-krr6j1")) { attr(input, "class", input_class_value); } if (!current || dirty & /*$search*/ @@ -17992,7 +18698,7 @@ function create_fragment72(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block13(ctx2); + if_block = create_if_block14(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(div2, t2); @@ -18034,7 +18740,7 @@ function create_fragment72(ctx) { } }; } -function instance70($$self, $$props, $$invalidate) { +function instance75($$self, $$props, $$invalidate) { let $search; const view = getView(); const viewStore = view.viewStore; @@ -18044,24 +18750,26 @@ function instance70($$self, $$props, $$invalidate) { // eslint-disable-next-line no-undef (e) => { viewStore.dispatch({ - type: "SEARCH/SET_QUERY", + type: "view/search/set-query", payload: { query: e.currentTarget.value } }); } ); const click_handler = () => { viewStore.dispatch({ - type: "SEARCH/SET_QUERY", + type: "view/search/set-query", payload: { query: "" } }); }; const click_handler_1 = () => { - viewStore.dispatch({ type: "search/toggle-show-all-nodes" }); + viewStore.dispatch({ + type: "search/view/toggle-show-all-nodes" + }); }; const click_handler_2 = () => { - viewStore.dispatch({ type: "SEARCH/TOGGLE_FUZZY_MODE" }); + viewStore.dispatch({ type: "view/search/toggle-fuzzy-mode" }); viewStore.dispatch({ - type: "SEARCH/SET_QUERY", + type: "view/search/set-query", payload: { query: viewStore.getValue().search.query } }); }; @@ -18078,16 +18786,16 @@ function instance70($$self, $$props, $$invalidate) { var Search_input = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance70, create_fragment72, safe_not_equal, {}, add_css15); + init(this, options, instance75, create_fragment77, safe_not_equal, {}, add_css16); } }; var search_input_default = Search_input; // src/view/components/container/toolbar/components/left-sidebar-toggle.svelte -function add_css16(target) { +function add_css17(target) { append_styles(target, "svelte-lmpj5w", ".badge-container.svelte-lmpj5w{position:relative;display:inline-block}"); } -function create_default_slot54(ctx) { +function create_default_slot59(ctx) { let panelleftdashed; let current; panelleftdashed = new panel_left_dashed_default({ props: { class: "svg-icon", size: "32" } }); @@ -18115,7 +18823,7 @@ function create_default_slot54(ctx) { } }; } -function create_fragment73(ctx) { +function create_fragment78(ctx) { let div1; let div0; let button; @@ -18128,7 +18836,7 @@ function create_fragment73(ctx) { ), label: lang.toolbar_toggle_left_sidebar, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot54] }, + $$slots: { default: [create_default_slot59] }, $$scope: { ctx } } }); @@ -18182,7 +18890,7 @@ function create_fragment73(ctx) { } }; } -function instance71($$self, $$props, $$invalidate) { +function instance76($$self, $$props, $$invalidate) { let $show; const view = getView(); const show = ShowLeftSidebarStore(view); @@ -18195,12 +18903,12 @@ function instance71($$self, $$props, $$invalidate) { var Left_sidebar_toggle = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance71, create_fragment73, safe_not_equal, {}, add_css16); + init(this, options, instance76, create_fragment78, safe_not_equal, {}, add_css17); } }; var left_sidebar_toggle_default = Left_sidebar_toggle; -// src/helpers/sort-sections.ts +// src/lib/tree-utils/sort/sort-sections.ts var sortSections = (keys) => { return keys.sort((a, b) => { const aParts = a.split("."); @@ -18218,22 +18926,18 @@ var sortSections = (keys) => { }); }; -// src/stores/document/reducers/pinned-nodes/pin-node.ts +// src/lib/tree-utils/sort/sort-node-ids-by-section-number.ts var sortNodeIdsBySectionNumber = (sections, ids) => { const pinnedSections = ids.map((id2) => sections.id_section[id2]); const sortedSections = sortSections(pinnedSections); return sortedSections.map((section) => sections.section_id[section]); }; -var pinNode = (sections, pinnedNodes, id2) => { - pinnedNodes.Ids.push(id2); - pinnedNodes.Ids = sortNodeIdsBySectionNumber(sections, pinnedNodes.Ids); -}; // src/view/components/container/toolbar/components/search/search-navigation-buttons.svelte -function add_css17(target) { +function add_css18(target) { append_styles(target, "svelte-1owtmzs", ".search-container.svelte-1owtmzs{display:flex;align-items:center;justify-content:center}.search-stats.svelte-1owtmzs{color:var(--text-muted);font-size:var(--status-bar-font-size);font-variant-numeric:tabular-nums;padding:5px 10px;border-left:1px solid var(--text-faint)}"); } -function create_default_slot_14(ctx) { +function create_default_slot_13(ctx) { let chevronup; let current; chevronup = new chevron_up_default({ props: { class: "svg-icon", size: "12" } }); @@ -18261,7 +18965,7 @@ function create_default_slot_14(ctx) { } }; } -function create_default_slot55(ctx) { +function create_default_slot60(ctx) { let chevrondown; let current; chevrondown = new chevron_down_default({ props: { class: "svg-icon", size: "12" } }); @@ -18289,7 +18993,7 @@ function create_default_slot55(ctx) { } }; } -function create_fragment74(ctx) { +function create_fragment79(ctx) { let div1; let button0; let t0; @@ -18312,7 +19016,7 @@ function create_fragment74(ctx) { ), label: lang.tlb_search_previous_result, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot_14] }, + $$slots: { default: [create_default_slot_13] }, $$scope: { ctx } } }); @@ -18329,7 +19033,7 @@ function create_fragment74(ctx) { ), label: lang.tlb_search_next_result, tooltipPosition: "bottom", - $$slots: { default: [create_default_slot55] }, + $$slots: { default: [create_default_slot60] }, $$scope: { ctx } } }); @@ -18411,7 +19115,7 @@ function create_fragment74(ctx) { } }; } -function instance72($$self, $$props, $$invalidate) { +function instance77($$self, $$props, $$invalidate) { let $activeNode; const view = getView(); let { results } = $$props; @@ -18462,16 +19166,607 @@ function instance72($$self, $$props, $$invalidate) { var Search_navigation_buttons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance72, create_fragment74, safe_not_equal, { results: 5 }, add_css17); + init(this, options, instance77, create_fragment79, safe_not_equal, { results: 5 }, add_css18); } }; var search_navigation_buttons_default = Search_navigation_buttons; -// src/view/components/container/toolbar/toolbar.svelte -function add_css18(target) { - append_styles(target, "svelte-zbwcn1", ".navigation-history-container.svelte-zbwcn1{z-index:var(--z-index-breadcrumbs);left:var(--size-4-2);top:var(--size-4-2);display:flex;position:absolute;gap:var(--size-4-2);flex-wrap:wrap;max-width:90%\n }"); +// src/stores/document/derived/history-store.ts +var historyStore = (view) => { + return derived2(view.documentStore, (state2) => { + return state2.history; + }); +}; + +// src/view/components/container/toolbar/components/document-history-buttons.svelte +var import_obsidian6 = require("obsidian"); +function add_css19(target) { + append_styles(target, "svelte-5lrsw4", ".navigation-history.svelte-5lrsw4{display:flex;align-items:center;justify-content:center}"); } -function create_if_block14(ctx) { +function create_default_slot_2(ctx) { + let historyicon; + let current; + historyicon = new history_default({ props: { class: "svg-icon", size: "12" } }); + return { + c() { + create_component(historyicon.$$.fragment); + }, + m(target, anchor) { + mount_component(historyicon, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(historyicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(historyicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(historyicon, detaching); + } + }; +} +function create_default_slot_14(ctx) { + let undoicon; + let current; + undoicon = new undo_2_default({ props: { class: "svg-icon", size: "12" } }); + return { + c() { + create_component(undoicon.$$.fragment); + }, + m(target, anchor) { + mount_component(undoicon, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(undoicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(undoicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(undoicon, detaching); + } + }; +} +function create_default_slot61(ctx) { + let redoicon; + let current; + redoicon = new redo_2_default({ props: { class: "svg-icon", size: "12" } }); + return { + c() { + create_component(redoicon.$$.fragment); + }, + m(target, anchor) { + mount_component(redoicon, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(redoicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(redoicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(redoicon, detaching); + } + }; +} +function create_fragment80(ctx) { + let div; + let button0; + let t0; + let button1; + let t1; + let button2; + let current; + button0 = new button_default({ + props: { + disabled: ( + /*$history*/ + ctx[0].items.length === 0 + ), + label: lang.controls_history, + tooltipPosition: "bottom", + $$slots: { default: [create_default_slot_2] }, + $$scope: { ctx } + } + }); + button0.$on( + "click", + /*toggleSnapshotsModal*/ + ctx[2] + ); + button1 = new button_default({ + props: { + disabled: !/*$history*/ + ctx[0].state.canGoBack, + label: lang.controls_history_undo, + tooltipPosition: "bottom", + $$slots: { default: [create_default_slot_14] }, + $$scope: { ctx } + } + }); + button1.$on( + "click", + /*selectPreviousSnapshot*/ + ctx[4] + ); + button2 = new button_default({ + props: { + disabled: !/*$history*/ + ctx[0].state.canGoForward, + label: lang.controls_history_redo, + tooltipPosition: "bottom", + $$slots: { default: [create_default_slot61] }, + $$scope: { ctx } + } + }); + button2.$on( + "click", + /*selectNextSnapshot*/ + ctx[3] + ); + return { + c() { + div = element("div"); + create_component(button0.$$.fragment); + t0 = space(); + create_component(button1.$$.fragment); + t1 = space(); + create_component(button2.$$.fragment); + attr(div, "class", "navigation-history buttons-group svelte-5lrsw4"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(button0, div, null); + append(div, t0); + mount_component(button1, div, null); + append(div, t1); + mount_component(button2, div, null); + current = true; + }, + p(ctx2, [dirty]) { + const button0_changes = {}; + if (dirty & /*$history*/ + 1) + button0_changes.disabled = /*$history*/ + ctx2[0].items.length === 0; + if (dirty & /*$$scope*/ + 128) { + button0_changes.$$scope = { dirty, ctx: ctx2 }; + } + button0.$set(button0_changes); + const button1_changes = {}; + if (dirty & /*$history*/ + 1) + button1_changes.disabled = !/*$history*/ + ctx2[0].state.canGoBack; + if (dirty & /*$$scope*/ + 128) { + button1_changes.$$scope = { dirty, ctx: ctx2 }; + } + button1.$set(button1_changes); + const button2_changes = {}; + if (dirty & /*$history*/ + 1) + button2_changes.disabled = !/*$history*/ + ctx2[0].state.canGoForward; + if (dirty & /*$$scope*/ + 128) { + button2_changes.$$scope = { dirty, ctx: ctx2 }; + } + button2.$set(button2_changes); + }, + i(local) { + if (current) + return; + transition_in(button0.$$.fragment, local); + transition_in(button1.$$.fragment, local); + transition_in(button2.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(button0.$$.fragment, local); + transition_out(button1.$$.fragment, local); + transition_out(button2.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(button0); + destroy_component(button1); + destroy_component(button2); + } + }; +} +function instance78($$self, $$props, $$invalidate) { + let $history; + const view = getView(); + const history = historyStore(view); + component_subscribe($$self, history, (value) => $$invalidate(0, $history = value)); + const isEditing2 = (view2) => view2.viewStore.getValue().document.editing.activeNodeId; + const toggleSnapshotsModal = () => view.viewStore.dispatch({ type: "view/snapshots/toggle-modal" }); + const selectNextSnapshot = () => { + if (isEditing2(view)) + new import_obsidian6.Notice(lang.error_apply_snapshot_while_editing); + else + view.documentStore.dispatch({ + type: "document/history/select-next-snapshot" + }); + }; + const selectPreviousSnapshot = () => { + if (isEditing2(view)) + new import_obsidian6.Notice(lang.error_apply_snapshot_while_editing); + else + view.documentStore.dispatch({ + type: "document/history/select-previous-snapshot" + }); + }; + return [ + $history, + history, + toggleSnapshotsModal, + selectNextSnapshot, + selectPreviousSnapshot + ]; +} +var Document_history_buttons = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance78, create_fragment80, safe_not_equal, {}, add_css19); + } +}; +var document_history_buttons_default = Document_history_buttons; + +// src/view/components/container/toolbar/components/search-actions.svelte +var import_obsidian7 = require("obsidian"); + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/get-text-of-flat-nodes.ts +var getTextOfFlatNodes = (view, nodes, copyAsOutline = false) => { + if (nodes.length === 1) + copyAsOutline = false; + const documentState = view.documentStore.getValue(); + const documentContent = documentState.document.content; + const sortedNodes = sortNodeIdsBySectionNumber( + documentState.sections, + nodes + ); + return sortedNodes.map((id2) => { + const content = documentContent[id2].content; + return (copyAsOutline ? "- " : "") + content; + }).join(copyAsOutline ? "\n" : "\n\n"); +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-flat-nodes-to-clipboard.ts +var copyFlatNodesToClipboard = async (view, nodes, copyAsOutline = false) => { + const text2 = getTextOfFlatNodes(view, nodes, copyAsOutline); + await navigator.clipboard.writeText(text2); +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-flat-search-results-to-clipboard.ts +var copyFlatSearchResultsToClipboard = async (view) => { + const results = Array.from(view.viewStore.getValue().search.results.keys()); + await copyFlatNodesToClipboard(view, results, true); +}; + +// src/lib/tree-utils/get/get-sorted-child-groups.ts +var getSortedChildGroups = (columns, currentParentNode, remove = false) => { + const childGroupsArray = traverseDown(columns, currentParentNode, false); + const childGroups = new Set(childGroupsArray); + const sortedChildGroups = []; + for (const column of columns) { + const childGroupsOfColumns = []; + const groups = []; + for (const group of column.groups) { + if (childGroups.has(group.parentId)) { + childGroupsOfColumns.push(group); + } else { + groups.push(group); + } + } + if (remove) + column.groups = groups; + if (childGroupsOfColumns.length > 0) + sortedChildGroups.push(childGroupsOfColumns); + } + return sortedChildGroups; +}; + +// src/lib/tree-utils/delete/delete-node-by-id.ts +var deleteNodeById = (columns, content, nodeId) => { + for (const column of columns) { + for (const group of column.groups) { + for (let i = 0; i < group.nodes.length; i++) { + const _nodeId2 = group.nodes[i]; + if (_nodeId2 === nodeId) { + group.nodes.splice(i, 1); + group.nodes = [...group.nodes]; + if (content) + delete content[_nodeId2]; + return; + } + } + } + } +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/get-branch.ts +var getBranch = (columns, content, nodeId, mode) => { + const cut = mode === "cut"; + const sortedChildGroups = getSortedChildGroups(columns, nodeId, cut); + const newContent = {}; + for (const sortedChildGroup of sortedChildGroups) { + for (const group of sortedChildGroup) { + for (const node of group.nodes) { + if (node in content) { + newContent[node] = content[node]; + if (cut) + delete content[node]; + } + } + } + } + newContent[nodeId] = content[nodeId]; + const branch = { + sortedChildGroups, + content: newContent, + nodeId, + mode + }; + if (cut) + deleteNodeById(columns, content, nodeId); + return clone(branch); +}; + +// src/lib/tree-utils/create/create-column.ts +var createColumn = () => ({ + id: id.column(), + groups: [] +}); + +// src/lib/tree-utils/create/create-group.ts +var createGroup = (parentId) => ({ + nodes: [], + parentId +}); + +// src/lib/data-conversion/x-to-json/branch-to-json.ts +var branchToColumns = (branch) => { + const columns = []; + columns.push(createColumn()); + columns[columns.length - 1].groups.push(createGroup("root")); + columns[columns.length - 1].groups[0].nodes.push(branch.nodeId); + for (const groups of branch.sortedChildGroups) { + columns.push(createColumn()); + for (const group of groups) { + columns[columns.length - 1].groups.push(group); + } + } + return columns; +}; +var branchToJson = (branches) => { + const trees = []; + for (const branch of branches) { + const tree = columnsToJson(branchToColumns(branch), branch.content); + trees.push(tree[0]); + } + return trees; +}; + +// src/lib/data-conversion/branch-to-x/branch-to-outline.ts +var branchToOutline = (branches) => { + return jsonToOutline(branchToJson(branches)); +}; + +// src/lib/tree-utils/sort/sort-sections-by-depth.ts +var sortSectionsByDepthDesc = (keys) => { + return keys.sort((a, b) => { + const aParts = a.split("."); + const bParts = b.split("."); + return bParts.length - aParts.length; + }); +}; + +// src/lib/tree-utils/sort/sort-node-ids-by-depth-desc.ts +var sortNodeIdsByDepthDesc = (sections, ids) => { + const sectionNumbers = ids.map((id2) => sections.id_section[id2]); + const sortedSections = sortSectionsByDepthDesc(sectionNumbers); + return sortedSections.map((section) => sections.section_id[section]); +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/get-search-results-from-document.ts +var getSearchResultsFromDocument = (results, document2, sections) => { + const sortedByDepth = sortNodeIdsByDepthDesc(sections, results); + const documentClone = clone(document2); + const branches = sortedByDepth.map( + (node) => getBranch(documentClone.columns, documentClone.content, node, "cut") + ); + const branchesMap = new Map( + branches.map((branch) => [branch.nodeId, branch]) + ); + const rootNodes = Array.from(branchesMap.keys()); + const sortedBranches = sortNodeIdsBySectionNumber(sections, rootNodes).map( + (id2) => branchesMap.get(id2) + ); + const isASingleNode = branches.length === 1 && branches[0].sortedChildGroups.length === 0; + return isASingleNode ? branches[0].content[branches[0].nodeId].content : branchToOutline(sortedBranches); +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-search-results-to-clipboard.ts +var copySearchResultsToClipboard = async (view) => { + const results = Array.from(view.viewStore.getValue().search.results.keys()); + const documentState = view.documentStore.getValue(); + const outline2 = getSearchResultsFromDocument( + results, + documentState.document, + documentState.sections + ); + await navigator.clipboard.writeText(outline2); +}; + +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/cut-search-results.ts +var cutSearchResults = async (view) => { + copySearchResultsToClipboard(view); + const viewState = view.viewStore.getValue(); + const documentState = view.documentStore.getValue(); + const results = Array.from(viewState.search.results.keys()); + if (results.length === 0) + return; + const sections = documentState.sections; + const sortedByDepth = sortNodeIdsByDepthDesc(sections, results); + const activeNodeIsAMatch = viewState.search.results.has( + viewState.document.activeNode + ); + const activeSearchNode = activeNodeIsAMatch ? viewState.document.activeNode : sortNodeIdsBySectionNumber(sections, results)[0]; + view.documentStore.dispatch({ + type: "document/cut-node", + payload: { + nodeId: activeSearchNode, + selectedNodes: new Set(sortedByDepth) + } + }); +}; + +// src/view/components/container/toolbar/components/search-actions.svelte +function add_css20(target) { + append_styles(target, "svelte-17l9x5j", ".search-container.svelte-17l9x5j{display:flex;align-items:center;justify-content:center;gap:var(--size-4-2)}"); +} +function create_default_slot62(ctx) { + let copy; + let current; + copy = new copy_default({ props: { class: "svg-icon", size: "12" } }); + return { + c() { + create_component(copy.$$.fragment); + }, + m(target, anchor) { + mount_component(copy, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(copy.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(copy.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(copy, detaching); + } + }; +} +function create_fragment81(ctx) { + let div; + let button; + let current; + button = new button_default({ + props: { + label: "Search actions", + tooltipPosition: "bottom", + $$slots: { default: [create_default_slot62] }, + $$scope: { ctx } + } + }); + button.$on( + "click", + /*showContextMenu*/ + ctx[0] + ); + return { + c() { + div = element("div"); + create_component(button.$$.fragment); + attr(div, "class", "search-container buttons-group svelte-17l9x5j"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(button, div, null); + current = true; + }, + p(ctx2, [dirty]) { + const button_changes = {}; + if (dirty & /*$$scope*/ + 4) { + button_changes.$$scope = { dirty, ctx: ctx2 }; + } + button.$set(button_changes); + }, + i(local) { + if (current) + return; + transition_in(button.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(button.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(button); + } + }; +} +function instance79($$self) { + const view = getView(); + const showContextMenu2 = (e) => { + const menu = new import_obsidian7.Menu(); + menu.addItem((item) => { + item.setTitle(lang.toolbar_copy_search_results); + item.setIcon("copy"); + item.onClick(() => copySearchResultsToClipboard(view)); + }); + menu.addItem((item) => { + item.setTitle(lang.toolbar_copy_search_results_wo_subitems); + item.setIcon("copy"); + item.onClick(() => copyFlatSearchResultsToClipboard(view)); + }); + menu.addItem((item) => { + item.setTitle(lang.toolbar_cut_search_results); + item.setIcon("scissors"); + item.onClick(() => cutSearchResults(view)); + }); + menu.showAtMouseEvent(e); + }; + return [showContextMenu2]; +} +var Search_actions = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance79, create_fragment81, safe_not_equal, {}, add_css20); + } +}; +var search_actions_default = Search_actions; + +// src/view/components/container/toolbar/toolbar.svelte +function add_css21(target) { + append_styles(target, "svelte-scr2c", ".navigation-history-container.svelte-scr2c{z-index:var(--z-index-breadcrumbs);left:var(--size-4-2);top:var(--size-4-2);display:flex;position:absolute;gap:var(--size-4-2);flex-wrap:wrap;max-width:90%}"); +} +function create_if_block15(ctx) { let searchinput; let t; let if_block_anchor; @@ -18547,21 +19842,35 @@ function create_if_block14(ctx) { } function create_if_block_16(ctx) { let searchnavigationbuttons; + let t; + let if_block_anchor; let current; searchnavigationbuttons = new search_navigation_buttons_default({ props: { results: Array.from( /*$search*/ - ctx[0].results + ctx[0].results.keys() ) } }); + let if_block = ( + /*$search*/ + ctx[0].results.size > 0 && create_if_block_24(ctx) + ); return { c() { create_component(searchnavigationbuttons.$$.fragment); + t = space(); + if (if_block) + if_block.c(); + if_block_anchor = empty(); }, m(target, anchor) { mount_component(searchnavigationbuttons, target, anchor); + insert(target, t, anchor); + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); current = true; }, p(ctx2, dirty) { @@ -18570,40 +19879,100 @@ function create_if_block_16(ctx) { 1) searchnavigationbuttons_changes.results = Array.from( /*$search*/ - ctx2[0].results + ctx2[0].results.keys() ); searchnavigationbuttons.$set(searchnavigationbuttons_changes); + if ( + /*$search*/ + ctx2[0].results.size > 0 + ) { + if (if_block) { + if (dirty & /*$search*/ + 1) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_24(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } }, i(local) { if (current) return; transition_in(searchnavigationbuttons.$$.fragment, local); + transition_in(if_block); current = true; }, o(local) { transition_out(searchnavigationbuttons.$$.fragment, local); + transition_out(if_block); current = false; }, d(detaching) { + if (detaching) { + detach(t); + detach(if_block_anchor); + } destroy_component(searchnavigationbuttons, detaching); + if (if_block) + if_block.d(detaching); } }; } -function create_fragment75(ctx) { +function create_if_block_24(ctx) { + let searchactions; + let current; + searchactions = new search_actions_default({}); + return { + c() { + create_component(searchactions.$$.fragment); + }, + m(target, anchor) { + mount_component(searchactions, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(searchactions.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(searchactions.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(searchactions, detaching); + } + }; +} +function create_fragment82(ctx) { let div; let leftsidebartoggle; let t0; let navigationhistory; let t1; - let searchtoggle; + let documenthistorybuttons; let t2; + let searchtoggle; + let t3; let current; leftsidebartoggle = new left_sidebar_toggle_default({}); navigationhistory = new navigation_buttons_default({}); + documenthistorybuttons = new document_history_buttons_default({}); searchtoggle = new search_toggle_default({}); let if_block = ( /*$search*/ - ctx[0].showInput && create_if_block14(ctx) + ctx[0].showInput && create_if_block15(ctx) ); return { c() { @@ -18612,11 +19981,13 @@ function create_fragment75(ctx) { t0 = space(); create_component(navigationhistory.$$.fragment); t1 = space(); - create_component(searchtoggle.$$.fragment); + create_component(documenthistorybuttons.$$.fragment); t2 = space(); + create_component(searchtoggle.$$.fragment); + t3 = space(); if (if_block) if_block.c(); - attr(div, "class", "navigation-history-container svelte-zbwcn1"); + attr(div, "class", "navigation-history-container svelte-scr2c"); }, m(target, anchor) { insert(target, div, anchor); @@ -18624,8 +19995,10 @@ function create_fragment75(ctx) { append(div, t0); mount_component(navigationhistory, div, null); append(div, t1); - mount_component(searchtoggle, div, null); + mount_component(documenthistorybuttons, div, null); append(div, t2); + mount_component(searchtoggle, div, null); + append(div, t3); if (if_block) if_block.m(div, null); current = true; @@ -18642,7 +20015,7 @@ function create_fragment75(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block14(ctx2); + if_block = create_if_block15(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(div, null); @@ -18660,6 +20033,7 @@ function create_fragment75(ctx) { return; transition_in(leftsidebartoggle.$$.fragment, local); transition_in(navigationhistory.$$.fragment, local); + transition_in(documenthistorybuttons.$$.fragment, local); transition_in(searchtoggle.$$.fragment, local); transition_in(if_block); current = true; @@ -18667,6 +20041,7 @@ function create_fragment75(ctx) { o(local) { transition_out(leftsidebartoggle.$$.fragment, local); transition_out(navigationhistory.$$.fragment, local); + transition_out(documenthistorybuttons.$$.fragment, local); transition_out(searchtoggle.$$.fragment, local); transition_out(if_block); current = false; @@ -18677,13 +20052,14 @@ function create_fragment75(ctx) { } destroy_component(leftsidebartoggle); destroy_component(navigationhistory); + destroy_component(documenthistorybuttons); destroy_component(searchtoggle); if (if_block) if_block.d(); } }; } -function instance73($$self, $$props, $$invalidate) { +function instance80($$self, $$props, $$invalidate) { let $search; const view = getView(); const search2 = searchStore(view); @@ -18693,13 +20069,13 @@ function instance73($$self, $$props, $$invalidate) { var Toolbar = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance73, create_fragment75, safe_not_equal, {}, add_css18); + init(this, options, instance80, create_fragment82, safe_not_equal, {}, add_css21); } }; var toolbar_default = Toolbar; // src/view/actions/settings/components/shared/range-setting.ts -var import_obsidian7 = require("obsidian"); +var import_obsidian8 = require("obsidian"); var RangeSetting = (element2, settingsStore, props) => { let input; let resetButton; @@ -18716,7 +20092,7 @@ var RangeSetting = (element2, settingsStore, props) => { input.setValue(currentValue); updateExtraButton(currentValue); }; - const setting = new import_obsidian7.Setting(element2); + const setting = new import_obsidian8.Setting(element2); setting.setName(props.label); if (props.desc) { setting.setDesc(props.desc); @@ -18744,7 +20120,7 @@ var FontSize = (element2, settingsStore) => { defaultValue: 16, onChange: (value) => { settingsStore.dispatch({ - type: "SET_FONT_SIZE", + type: "settings/view/theme/set-font-size", payload: { fontSize: value } @@ -18787,7 +20163,7 @@ var getDefaultTheme = () => { }; // src/view/actions/settings/components/shared/color-setting.ts -var import_obsidian8 = require("obsidian"); +var import_obsidian9 = require("obsidian"); var ColorSetting = (container, settingsStore, props) => { let input; let resetButton; @@ -18809,7 +20185,7 @@ var ColorSetting = (container, settingsStore, props) => { }); updateExtraButton(currentValue); }; - new import_obsidian8.Setting(container).setName(props.label).addColorPicker((cb) => { + new import_obsidian9.Setting(container).setName(props.label).addColorPicker((cb) => { input = cb; }).addExtraButton((cb) => { resetButton = cb; @@ -18829,7 +20205,7 @@ var BackgroundColor = (container, settingsStore) => { valueSelector: (settings) => settings.view.theme.containerBg, onChange: (color) => { settingsStore.dispatch({ - type: "SET_CONTAINER_BG", + type: "settings/view/theme/set-container-bg-color", payload: { backgroundColor: color } @@ -18846,7 +20222,7 @@ var ActiveBranchBackground = (container, settingsStore) => { valueSelector: (settings) => settings.view.theme.activeBranchBg, onChange: (color) => { settingsStore.dispatch({ - type: "SET_ACTIVE_BRANCH_BG", + type: "settings/view/theme/set-active-branch-bg-color", payload: { backgroundColor: color } @@ -18857,9 +20233,10 @@ var ActiveBranchBackground = (container, settingsStore) => { // src/stores/settings/default-settings.ts var DEFAULT_CARD_WIDTH = 550; -var DEFAULT_CARDS_GAP = 100; +var DEFAULT_CARDS_GAP = 50; var DEFAULT_INDENTATION_WIDTH = 60; var DEFAULT_INACTIVE_NODE_OPACITY = 25; +var DEFAULT_H1_FONT_SIZE_EM = 1.802; var DEFAULT_SETTINGS = () => ({ documents: {}, hotkeys: { @@ -18867,6 +20244,7 @@ var DEFAULT_SETTINGS = () => ({ }, view: { fontSize: 16, + h1FontSize_em: DEFAULT_H1_FONT_SIZE_EM, theme: { inactiveNodeOpacity: DEFAULT_INACTIVE_NODE_OPACITY }, @@ -18885,14 +20263,22 @@ var DEFAULT_SETTINGS = () => ({ applyGapBetweenCards: false, outlineMode: false, nodeIndentationWidth: DEFAULT_INDENTATION_WIDTH, - maintainEditMode: true, - alwaysShowCardButtons: false + maintainEditMode: false, + alwaysShowCardButtons: false, + hiddenVerticalToolbarButtons: [] }, general: { - defaultDocumentFormat: "sections" + defaultDocumentFormat: "sections", + linkPaneType: "tab" }, styleRules: { - documents: {} + documents: {}, + global: { + rules: [] + }, + settings: { + activeTab: "global-rules" + } } }); @@ -18902,7 +20288,7 @@ var CardWidth = (element2, settingsStore) => { defaultValue: DEFAULT_CARD_WIDTH, onChange: (value) => { settingsStore.dispatch({ - type: "SET_CARD_WIDTH", + type: "settings/view/layout/set-card-width", payload: { width: value } @@ -18917,14 +20303,14 @@ var CardWidth = (element2, settingsStore) => { }; // src/view/actions/settings/components/limit-card-height.ts -var import_obsidian9 = require("obsidian"); +var import_obsidian10 = require("obsidian"); var LimitCardHeight = (element2, settingsStore) => { const settingsState = settingsStore.getValue(); - new import_obsidian9.Setting(element2).setName(lang.settings_layout_limit_card_height).addToggle((cb) => { + new import_obsidian10.Setting(element2).setName(lang.settings_layout_limit_card_height).addToggle((cb) => { cb.setValue(settingsState.view.limitPreviewHeight).onChange( (limit) => { settingsStore.dispatch({ - type: "SET_LIMIT_PREVIEW_HEIGHT", + type: "settings/view/layout/set-limit-card-height", payload: { limit } @@ -18935,13 +20321,12 @@ var LimitCardHeight = (element2, settingsStore) => { }; // src/view/actions/settings/components/default-document-format.ts -var import_obsidian10 = require("obsidian"); +var import_obsidian11 = require("obsidian"); var DefaultDocumentFormat = (element2, settingsStore) => { const settingsState = settingsStore.getValue(); - const setting = new import_obsidian10.Setting(element2).setName( + const setting = new import_obsidian11.Setting(element2).setName( lang.settings_general_default_format ); - setting.setDesc(lang.settings_general_default_format_desc); setting.addDropdown((cb) => { const value = settingsState.general.defaultDocumentFormat; cb.addOptions({ @@ -18950,7 +20335,7 @@ var DefaultDocumentFormat = (element2, settingsStore) => { outline: lang.settings_format_outline }).setValue(value).onChange((value2) => { settingsStore.dispatch({ - type: "GENERAL/SET_DEFAULT_DOCUMENT_FORMAT", + type: "settings/general/set-default-document-format", payload: { format: value2 } @@ -18965,7 +20350,7 @@ var CardsGap = (element2, settingsStore) => { defaultValue: DEFAULT_CARDS_GAP, onChange: (value) => { settingsStore.dispatch({ - type: "SET_CARDS_GAP", + type: "settings/view/layout/set-cards-gap", payload: { gap: value } @@ -18973,7 +20358,6 @@ var CardsGap = (element2, settingsStore) => { }, valueSelector: (settingsState) => settingsState.view.cardsGap, label: lang.settings_layout_space_between_cards, - desc: lang.settings_layout_space_between_cards_desc, max: 500, min: 0, step: 10 @@ -18993,7 +20377,6 @@ var CardIndentationWidth = (element2, settingsStore) => { }); }, valueSelector: (settingsState) => settingsState.view.nodeIndentationWidth, - desc: lang.settings_layout_indentation_width_desc, label: lang.settings_layout_indentation_width, max: 1e3, min: 0, @@ -19002,10 +20385,10 @@ var CardIndentationWidth = (element2, settingsStore) => { }; // src/view/actions/settings/components/maintain-edit-mode.ts -var import_obsidian11 = require("obsidian"); +var import_obsidian12 = require("obsidian"); var MaintainEditMode2 = (element2, settingsStore) => { const settingsState = settingsStore.getValue(); - new import_obsidian11.Setting(element2).setName(lang.settings_general_maintain_edit_mode).setDesc(lang.settings_general_maintain_edit_mode_desc).addToggle((cb) => { + new import_obsidian12.Setting(element2).setName(lang.settings_general_maintain_edit_mode).setDesc(lang.settings_general_maintain_edit_mode_desc).addToggle((cb) => { cb.setValue(settingsState.view.maintainEditMode).onChange( (maintain) => { settingsStore.dispatch({ @@ -19019,9 +20402,6 @@ var MaintainEditMode2 = (element2, settingsStore) => { }); }; -// src/view/actions/settings/render-settings.ts -var import_obsidian13 = require("obsidian"); - // src/view/actions/settings/components/inactive-card-opacity.ts var InactiveCardOpacity = (element2, settingsStore) => { RangeSetting(element2, settingsStore, { @@ -19060,10 +20440,10 @@ var ActiveBranchColor = (container, settingsStore) => { }; // src/view/actions/settings/components/always-show-card-buttons.ts -var import_obsidian12 = require("obsidian"); +var import_obsidian13 = require("obsidian"); var AlwaysShowCardButtons2 = (element2, settingsStore) => { const settingsState = settingsStore.getValue(); - new import_obsidian12.Setting(element2).setName(lang.settings_always_show_card_buttons).setDesc(lang.settings_always_show_card_buttons_desc).addToggle((cb) => { + new import_obsidian13.Setting(element2).setName(lang.settings_always_show_card_buttons).setDesc(lang.settings_always_show_card_buttons_desc).addToggle((cb) => { cb.setValue(settingsState.view.alwaysShowCardButtons).onChange( (show) => { settingsStore.dispatch({ @@ -19077,77 +20457,1001 @@ var AlwaysShowCardButtons2 = (element2, settingsStore) => { }); }; -// src/view/actions/settings/render-settings.ts -var renderSettings = (element2) => { - const view = getView(); - const settingsStore = view.plugin.settings; - const render = () => { - DefaultDocumentFormat(element2, settingsStore); - MaintainEditMode2(element2, settingsStore); - AlwaysShowCardButtons2(element2, settingsStore); - new import_obsidian13.Setting(element2).setHeading().setName(lang.settings_appearance); - BackgroundColor(element2, settingsStore); - ActiveBranchBackground(element2, settingsStore); - ActiveBranchColor(element2, settingsStore); - InactiveCardOpacity(element2, settingsStore); - FontSize(element2, settingsStore); - new import_obsidian13.Setting(element2).setHeading().setName(lang.settings_layout); - CardWidth(element2, settingsStore); - CardsGap(element2, settingsStore); - CardIndentationWidth(element2, settingsStore); - LimitCardHeight(element2, settingsStore); - }; - render(); - return { - update: () => { - render(); - } - }; -}; +// src/view/actions/settings/components/controls-bar-buttons/controls-bar-buttons.ts +var import_obsidian15 = require("obsidian"); -// src/view/components/container/controls-bar/modals/settings/settings.svelte -function add_css19(target) { - append_styles(target, "svelte-1ggfir8", ".setting-items.svelte-1ggfir8{display:flex;flex-direction:column;padding:20px;width:500px;overflow-y:auto;& .setting-item {\n padding: 10px 0;\n };& .setting-item-heading {\n margin-top: 22px;\n\n & .setting-item-name {\n font-size: 17px;\n }\n }}@media(max-width: 720px){.setting-items.svelte-1ggfir8{width:initial}}.is-mobile{& .setting-items {\n padding: 5px 10px;\n };& :global(.setting-item) {\n display: flex;\n flex-direction: column;\n gap: 4px;\n };& :global(.setting-item-control) {\n width: 100%;\n justify-content: center;\n }}"); +// src/view/modals/vertical-toolbar-buttons/vertical-toolbar-buttons-modal.ts +var import_obsidian14 = require("obsidian"); + +// src/view/modals/vertical-toolbar-buttons/vertical-toolbar-buttons.ts +var verticalToolbarButtons = [ + { + id: "settings", + buttons: [ + { + id: "hotkeys", + label: lang.controls_hotkeys, + icon: keyboard_default + }, + { + id: "style-rules", + label: lang.controls_rules, + icon: palette_default + } + ] + }, + { + id: "scroll", + buttons: [ + { + id: "center-active-node-h", + label: lang.controls_toggle_scrolling_mode_horizontal, + icon: customIcons.alignH + }, + { + id: "center-active-node-v", + label: lang.controls_toggle_scrolling_mode_vertical, + icon: customIcons.alignV + } + ] + }, + { + id: "display", + buttons: [ + { + id: "outline-mode", + label: lang.controls_single_column, + icon: customIcons.outline + }, + { + id: "space-between-cards", + label: lang.controls_gap_between_cards, + icon: customIcons.gap + } + ] + }, + { + id: "zoom", + buttons: [ + { + id: "zoom-in", + label: lang.controls_zoom_in, + icon: plus_default + }, + { + id: "zoom-reset", + label: lang.controls_zoom_reset, + icon: rotate_ccw_default + }, + { + id: "zoom-presets", + label: lang.controls_zoom_presets, + icon: scan_search_default + }, + { + id: "zoom-out", + label: lang.controls_zoom_out, + icon: minus_default + } + ] + } +]; + +// src/view/modals/vertical-toolbar-buttons/components/vertical-toolbar-icons-selection-modal.svelte +function add_css22(target) { + append_styles(target, "svelte-1nwvm61", ".buttons-list.svelte-1nwvm61{display:flex;flex-direction:column;& button {\n background-color: transparent;\n cursor: initial;\n }}.button-list-item.svelte-1nwvm61{display:flex;gap:5px;align-items:center;border-top:1px solid var(--background-modifier-border);padding:6px 14px}.button-list-item.svelte-1nwvm61:first-child{border-top:none}.toolbar-icon-label.svelte-1nwvm61{color:var(--text-normal)}"); } -function create_fragment76(ctx) { - let div1; - let div0; - let renderSettings_action; - let mounted; - let dispose; +function get_each_context8(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[6] = list[i]; + return child_ctx; +} +function get_each_context_12(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + return child_ctx; +} +function create_else_block7(ctx) { + let switch_instance; + let switch_instance_anchor; + let current; + var switch_value = ( + /*button*/ + ctx[9].icon + ); + function switch_props(ctx2, dirty) { + return { props: { class: "svg-icon" } }; + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx)); + } return { c() { - div1 = element("div"); - div0 = element("div"); - attr(div0, "class", "setting-items svelte-1ggfir8"); - attr(div1, "class", "lineage-modal"); - attr(div1, "id", "lineage-view-settings"); - attr(div1, "tabindex", "0"); + if (switch_instance) + create_component(switch_instance.$$.fragment); + switch_instance_anchor = empty(); }, m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - if (!mounted) { - dispose = action_destroyer(renderSettings_action = renderSettings.call(null, div0)); - mounted = true; + if (switch_instance) + mount_component(switch_instance, target, anchor); + insert(target, switch_instance_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 2 && switch_value !== (switch_value = /*button*/ + ctx2[9].icon)) { + if (switch_instance) { + group_outros(); + const old_component = switch_instance; + transition_out(old_component.$$.fragment, 1, 0, () => { + destroy_component(old_component, 1); + }); + check_outros(); + } + if (switch_value) { + switch_instance = construct_svelte_component(switch_value, switch_props(ctx2, dirty)); + create_component(switch_instance.$$.fragment); + transition_in(switch_instance.$$.fragment, 1); + mount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor); + } else { + switch_instance = null; + } + } else if (switch_value) { } }, - p: noop, + i(local) { + if (current) + return; + if (switch_instance) + transition_in(switch_instance.$$.fragment, local); + current = true; + }, + o(local) { + if (switch_instance) + transition_out(switch_instance.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(switch_instance_anchor); + } + if (switch_instance) + destroy_component(switch_instance, detaching); + } + }; +} +function create_if_block16(ctx) { + let html_tag; + let raw_value = ( + /*button*/ + ctx[9].icon.svg + "" + ); + let html_anchor; + return { + c() { + html_tag = new HtmlTag(false); + html_anchor = empty(); + html_tag.a = html_anchor; + }, + m(target, anchor) { + html_tag.m(raw_value, target, anchor); + insert(target, html_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty & /*$buttons*/ + 2 && raw_value !== (raw_value = /*button*/ + ctx2[9].icon.svg + "")) + html_tag.p(raw_value); + }, i: noop, o: noop, d(detaching) { if (detaching) { + detach(html_anchor); + html_tag.d(); + } + } + }; +} +function create_default_slot63(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block16, create_else_block7]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ("svg" in /*button*/ + ctx2[9].icon) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); + } + }; +} +function create_each_block_12(key_1, ctx) { + let div; + let input; + let input_checked_value; + let t0; + let button_1; + let t1; + let span; + let t2_value = ( + /*button*/ + ctx[9].label + "" + ); + let t2; + let t3; + let current; + let mounted; + let dispose; + function change_handler(...args) { + return ( + /*change_handler*/ + ctx[5]( + /*button*/ + ctx[9], + ...args + ) + ); + } + button_1 = new button_default({ + props: { + classes: "control-item", + label: ( + /*button*/ + ctx[9].label + ), + tooltipPosition: "left", + $$slots: { default: [create_default_slot63] }, + $$scope: { ctx } + } + }); + return { + key: key_1, + first: null, + c() { + div = element("div"); + input = element("input"); + t0 = space(); + create_component(button_1.$$.fragment); + t1 = space(); + span = element("span"); + t2 = text(t2_value); + t3 = space(); + attr(input, "type", "checkbox"); + input.checked = input_checked_value = !/*button*/ + ctx[9].hidden; + attr(span, "class", "toolbar-icon-label svelte-1nwvm61"); + attr(div, "class", "button-list-item svelte-1nwvm61"); + this.first = div; + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, input); + append(div, t0); + mount_component(button_1, div, null); + append(div, t1); + append(div, span); + append(span, t2); + append(div, t3); + current = true; + if (!mounted) { + dispose = listen(input, "change", change_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (!current || dirty & /*$buttons*/ + 2 && input_checked_value !== (input_checked_value = !/*button*/ + ctx[9].hidden)) { + input.checked = input_checked_value; + } + const button_1_changes = {}; + if (dirty & /*$buttons*/ + 2) + button_1_changes.label = /*button*/ + ctx[9].label; + if (dirty & /*$$scope, $buttons*/ + 4098) { + button_1_changes.$$scope = { dirty, ctx }; + } + button_1.$set(button_1_changes); + if ((!current || dirty & /*$buttons*/ + 2) && t2_value !== (t2_value = /*button*/ + ctx[9].label + "")) + set_data(t2, t2_value); + }, + i(local) { + if (current) + return; + transition_in(button_1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(button_1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(button_1); + mounted = false; + dispose(); + } + }; +} +function create_each_block8(key_1, ctx) { + let first; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let each_1_anchor; + let current; + let each_value_1 = ensure_array_like( + /*group*/ + ctx[6].buttons + ); + const get_key = (ctx2) => ( + /*button*/ + ctx2[9].label + ); + for (let i = 0; i < each_value_1.length; i += 1) { + let child_ctx = get_each_context_12(ctx, each_value_1, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block_12(key, child_ctx)); + } + return { + key: key_1, + first: null, + c() { + first = empty(); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + each_1_anchor = empty(); + this.first = first; + }, + m(target, anchor) { + insert(target, first, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } + } + insert(target, each_1_anchor, anchor); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*$buttons, onChange*/ + 10) { + each_value_1 = ensure_array_like( + /*group*/ + ctx[6].buttons + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_1, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block_12, each_1_anchor, get_each_context_12); + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(first); + detach(each_1_anchor); + } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(detaching); + } + } + }; +} +function create_fragment83(ctx) { + let div0; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let t0; + let div1; + let button_1; + let current; + let mounted; + let dispose; + let each_value = ensure_array_like( + /*$buttons*/ + ctx[1] + ); + const get_key = (ctx2) => ( + /*group*/ + ctx2[6].id + ); + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context8(ctx, each_value, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block8(key, child_ctx)); + } + return { + c() { + div0 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + t0 = space(); + div1 = element("div"); + button_1 = element("button"); + button_1.textContent = "Done"; + attr(div0, "class", "buttons-list svelte-1nwvm61"); + attr(button_1, "class", "mod-cta"); + attr(div1, "class", "modal-button-container"); + }, + m(target, anchor) { + insert(target, div0, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div0, null); + } + } + insert(target, t0, anchor); + insert(target, div1, anchor); + append(div1, button_1); + current = true; + if (!mounted) { + dispose = listen(button_1, "click", function() { + if (is_function( + /*close*/ + ctx[0] + )) + ctx[0].apply(this, arguments); + }); + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + if (dirty & /*$buttons, onChange*/ + 10) { + each_value = ensure_array_like( + /*$buttons*/ + ctx[1] + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block8, null, get_each_context8); + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div0); + detach(t0); detach(div1); } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } mounted = false; dispose(); } }; } +function instance81($$self, $$props, $$invalidate) { + let $buttons; + let { close } = $$props; + let { plugin } = $$props; + const buttons = derived([HiddenVerticalToolbarButtons(plugin)], ([hidden]) => { + const set = new Set(hidden); + if (set.size > 0) { + return verticalToolbarButtons.map((bs) => ({ + id: bs.id, + buttons: bs.buttons.map((b) => Object.assign(Object.assign({}, b), { hidden: set.has(b.id) })) + })); + } else + return verticalToolbarButtons; + }); + component_subscribe($$self, buttons, (value) => $$invalidate(1, $buttons = value)); + const onChange = (button, hidden) => { + plugin.settings.dispatch({ + type: "settings/view/vertical-toolbar/set-hidden-button", + payload: { id: button, hide: hidden } + }); + }; + const change_handler = (button, e) => { + onChange(button.id, !e.currentTarget.checked); + }; + $$self.$$set = ($$props2) => { + if ("close" in $$props2) + $$invalidate(0, close = $$props2.close); + if ("plugin" in $$props2) + $$invalidate(4, plugin = $$props2.plugin); + }; + return [close, $buttons, buttons, onChange, plugin, change_handler]; +} +var Vertical_toolbar_icons_selection_modal = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance81, create_fragment83, safe_not_equal, { close: 0, plugin: 4 }, add_css22); + } +}; +var vertical_toolbar_icons_selection_modal_default = Vertical_toolbar_icons_selection_modal; + +// src/view/modals/vertical-toolbar-buttons/vertical-toolbar-buttons-modal.ts +var VerticalToolbarButtonsModal = class extends import_obsidian14.Modal { + constructor(props) { + super(props.plugin.app); + this.props = props; + this.subscriptions = /* @__PURE__ */ new Set(); + this.open = () => { + this.setTitle(lang.settings_vertical_toolbar_icons_desc); + this.initState(); + new vertical_toolbar_icons_selection_modal_default({ + target: this.contentEl, + props: { + plugin: this.props.plugin, + close: this.close + } + }); + const promise = new Promise((resolve) => { + this.resolve = resolve; + }); + super.open(); + return promise; + }; + this.close = () => { + this.resolve(void 0); + super.close(); + for (const unsub of this.subscriptions) { + unsub(); + } + }; + this.initState = () => { + }; + } +}; + +// src/view/actions/settings/components/controls-bar-buttons/controls-bar-buttons.ts +var ControlsBarButtons = (container, view) => { + new import_obsidian15.Setting(container).setName(lang.settings_vertical_toolbar_icons).setDesc(lang.settings_vertical_toolbar_icons_desc).addButton((cb) => { + cb.setButtonText("Manage"); + cb.onClick(() => { + const modal = new VerticalToolbarButtonsModal({ + plugin: view.plugin + }); + modal.open(); + }); + }); +}; + +// src/view/actions/settings/components/headings-font-size.ts +var HeadingsFontSize = (element2, settingsStore) => { + RangeSetting(element2, settingsStore, { + defaultValue: DEFAULT_H1_FONT_SIZE_EM, + onChange: (value) => { + settingsStore.dispatch({ + type: "settings/view/theme/set-h1-font-size", + payload: { + fontSize_em: value + } + }); + }, + valueSelector: (settingsState) => settingsState.view.h1FontSize_em, + label: lang.settings_appearance_headings_font_size, + max: 4, + min: 1, + step: 0.1 + }); +}; + +// src/view/actions/settings/components/link-pane-type.ts +var import_obsidian16 = require("obsidian"); +var LinkPaneType = (element2, settingsStore) => { + const settingsState = settingsStore.getValue(); + const setting = new import_obsidian16.Setting(element2).setName( + lang.settings_general_link_behavior + ); + setting.setDesc( + `Hold '${isMacLike ? "cmd" : "control"}' to use the other option` + ); + setting.addDropdown((cb) => { + const value = settingsState.general.linkPaneType; + cb.addOptions({ + split: lang.settings_general_link_split, + tab: lang.settings_general_link_tab + }).setValue(value).onChange((value2) => { + settingsStore.dispatch({ + type: "settings/general/set-link-pane-type", + payload: { + position: value2 + } + }); + }); + }); +}; + +// src/view/actions/settings/render-settings.ts +var setVisibleTab = (tabs, activeTab) => { + for (const tab of tabs) { + if (tab.name === activeTab) { + tab.element.style.visibility = "visible"; + } else { + tab.element.style.visibility = "hidden"; + } + } +}; +var render = (view, element2, tabs) => { + const settingsStore = view.plugin.settings; + const generalTab = activeDocument.createElement("div"); + const appearanceTab = activeDocument.createElement("div"); + const layoutTab = activeDocument.createElement("div"); + tabs.push({ element: generalTab, name: "General" }); + tabs.push({ element: appearanceTab, name: "Appearance" }); + tabs.push({ element: layoutTab, name: "Layout" }); + DefaultDocumentFormat(generalTab, settingsStore); + LinkPaneType(generalTab, settingsStore); + MaintainEditMode2(generalTab, settingsStore); + AlwaysShowCardButtons2(generalTab, settingsStore); + ControlsBarButtons(generalTab, view); + BackgroundColor(appearanceTab, settingsStore); + ActiveBranchBackground(appearanceTab, settingsStore); + ActiveBranchColor(appearanceTab, settingsStore); + InactiveCardOpacity(appearanceTab, settingsStore); + FontSize(appearanceTab, settingsStore); + HeadingsFontSize(appearanceTab, settingsStore); + CardWidth(layoutTab, settingsStore); + CardsGap(layoutTab, settingsStore); + CardIndentationWidth(layoutTab, settingsStore); + LimitCardHeight(layoutTab, settingsStore); + element2.append(generalTab, appearanceTab, layoutTab); +}; +var renderSettings = (element2, tab) => { + const tabs = []; + const view = getView(); + render(view, element2, tabs); + setVisibleTab(tabs, tab); + return { + update: (tab2) => { + setVisibleTab(tabs, tab2); + } + }; +}; + +// src/view/components/container/modals/settings/vertical-tab-header.svelte +function add_css23(target) { + append_styles(target, "svelte-1m3tx9d", ".lineage-vertical-tab-header.svelte-1m3tx9d{width:250px;padding:var(--size-4-3);background-color:var(--background-secondary)}"); +} +function get_each_context9(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[4] = list[i]; + return child_ctx; +} +function create_each_block9(ctx) { + let div; + let t0_value = ( + /*tab*/ + ctx[4] + "" + ); + let t0; + let t1; + let div_class_value; + let mounted; + let dispose; + function click_handler() { + return ( + /*click_handler*/ + ctx[3]( + /*tab*/ + ctx[4] + ) + ); + } + return { + c() { + div = element("div"); + t0 = text(t0_value); + t1 = space(); + attr(div, "class", div_class_value = null_to_empty("vertical-tab-nav-item" + /*tab*/ + (ctx[4] === /*activeTab*/ + ctx[1] ? " is-active" : "")) + " svelte-1m3tx9d"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t0); + append(div, t1); + if (!mounted) { + dispose = listen(div, "click", click_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*activeTab*/ + 2 && div_class_value !== (div_class_value = null_to_empty("vertical-tab-nav-item" + /*tab*/ + (ctx[4] === /*activeTab*/ + ctx[1] ? " is-active" : "")) + " svelte-1m3tx9d")) { + attr(div, "class", div_class_value); + } + }, + d(detaching) { + if (detaching) { + detach(div); + } + mounted = false; + dispose(); + } + }; +} +function create_fragment84(ctx) { + let div2; + let div1; + let div0; + let each_value = ensure_array_like( + /*tabs*/ + ctx[2] + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block9(get_each_context9(ctx, each_value, i)); + } + return { + c() { + div2 = element("div"); + div1 = element("div"); + div0 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "vertical-tab-header-group-items"); + attr(div1, "class", "vertical-tab-header-group"); + attr(div2, "class", "lineage-vertical-tab-header svelte-1m3tx9d"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div1); + append(div1, div0); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div0, null); + } + } + }, + p(ctx2, [dirty]) { + if (dirty & /*tabs, activeTab, setActiveTab*/ + 7) { + each_value = ensure_array_like( + /*tabs*/ + ctx2[2] + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context9(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block9(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_each(each_blocks, detaching); + } + }; +} +function instance82($$self, $$props, $$invalidate) { + let { setActiveTab } = $$props; + let { activeTab } = $$props; + const tabs = ["General", "Appearance", "Layout"]; + const click_handler = (tab) => setActiveTab(tab); + $$self.$$set = ($$props2) => { + if ("setActiveTab" in $$props2) + $$invalidate(0, setActiveTab = $$props2.setActiveTab); + if ("activeTab" in $$props2) + $$invalidate(1, activeTab = $$props2.activeTab); + }; + return [setActiveTab, activeTab, tabs, click_handler]; +} +var Vertical_tab_header = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance82, create_fragment84, safe_not_equal, { setActiveTab: 0, activeTab: 1 }, add_css23); + } +}; +var vertical_tab_header_default = Vertical_tab_header; + +// src/view/components/container/modals/settings/active-settings-tab-store.ts +var ActiveSettingsTabStore = writable("General"); + +// src/view/components/container/modals/settings/settings.svelte +function add_css24(target) { + append_styles(target, "svelte-rqy3yr", ".lineage-vertical-tabs-container.svelte-rqy3yr{display:flex}.lineage-vertical-tab-content.svelte-rqy3yr{height:auto;display:grid;flex-direction:column;width:500px;overflow-y:auto;padding-top:var(--size-4-8);padding-bottom:var(--size-4-12);padding-inline-start:var(--size-4-12);padding-inline-end:var(--size-4-12);grid-template-areas:'main';& > div {\n grid-area: main;\n }}"); +} +function create_fragment85(ctx) { + let div2; + let div1; + let verticaltabheader; + let t; + let div0; + let renderSettings_action; + let current; + let mounted; + let dispose; + verticaltabheader = new vertical_tab_header_default({ + props: { + setActiveTab: ( + /*setActiveTab*/ + ctx[1] + ), + activeTab: ( + /*$ActiveSettingsTabStore*/ + ctx[0] + ) + } + }); + return { + c() { + div2 = element("div"); + div1 = element("div"); + create_component(verticaltabheader.$$.fragment); + t = space(); + div0 = element("div"); + attr(div0, "class", "lineage-vertical-tab-content svelte-rqy3yr"); + attr(div1, "class", "lineage-vertical-tabs-container svelte-rqy3yr"); + attr(div2, "class", "lineage-modal"); + attr(div2, "id", "lineage-view-settings"); + attr(div2, "tabindex", "0"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div1); + mount_component(verticaltabheader, div1, null); + append(div1, t); + append(div1, div0); + current = true; + if (!mounted) { + dispose = action_destroyer(renderSettings_action = renderSettings.call( + null, + div0, + /*$ActiveSettingsTabStore*/ + ctx[0] + )); + mounted = true; + } + }, + p(ctx2, [dirty]) { + const verticaltabheader_changes = {}; + if (dirty & /*$ActiveSettingsTabStore*/ + 1) + verticaltabheader_changes.activeTab = /*$ActiveSettingsTabStore*/ + ctx2[0]; + verticaltabheader.$set(verticaltabheader_changes); + if (renderSettings_action && is_function(renderSettings_action.update) && dirty & /*$ActiveSettingsTabStore*/ + 1) + renderSettings_action.update.call( + null, + /*$ActiveSettingsTabStore*/ + ctx2[0] + ); + }, + i(local) { + if (current) + return; + transition_in(verticaltabheader.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(verticaltabheader.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_component(verticaltabheader); + mounted = false; + dispose(); + } + }; +} +function instance83($$self, $$props, $$invalidate) { + let $ActiveSettingsTabStore; + component_subscribe($$self, ActiveSettingsTabStore, ($$value) => $$invalidate(0, $ActiveSettingsTabStore = $$value)); + const setActiveTab = (tab) => { + ActiveSettingsTabStore.set(tab); + }; + return [$ActiveSettingsTabStore, setActiveTab]; +} var Settings2 = class extends SvelteComponent { constructor(options) { super(); - init(this, options, null, create_fragment76, safe_not_equal, {}, add_css19); + init(this, options, instance83, create_fragment85, safe_not_equal, {}, add_css24); } }; var settings_default2 = Settings2; @@ -19174,63 +21478,70 @@ var relativeTime = (updated) => { // src/lang/snapshot-action-lang.ts var snapshotActionLang = { - "DOCUMENT/SET_NODE_CONTENT": (snapshot) => ({ - label: lang.modals_snapshots_updated_card + snapshot.context.affectedSection, + "document/update-node-content": (snapshot) => ({ + label: lang.modals_snapshots_updated_node + snapshot.context.affectedSection, icon: file_pen_default }), - "DOCUMENT/INSERT_NODE": (snapshot) => ({ - label: lang.modals_snapshots_created_card + snapshot.context.affectedSection, + "document/add-node": (snapshot) => ({ + label: lang.modals_snapshots_created_node + snapshot.context.affectedSection, icon: file_plus_default }), - "DOCUMENT/DROP_NODE": (snapshot) => ({ - label: lang.modals_snapshots_dropped_card + snapshot.context.affectedSection, + "document/drop-node": (snapshot) => ({ + label: lang.modals_snapshots_dropped_node + snapshot.context.affectedSection, icon: file_output_default }), - "DOCUMENT/LOAD_FILE": () => ({ + "document/file/load-from-disk": () => ({ label: lang.modals_snapshots_document_loaded, icon: file_up_default }), - "DOCUMENT/DELETE_NODE": (snapshot) => ({ - label: lang.modals_snapshots_deleted_card + snapshot.context.affectedSection, + "document/delete-node": (snapshot) => ({ + label: lang.modals_snapshots_deleted_section + snapshot.context.affectedSection, icon: file_minus_default }), - "DOCUMENT/MOVE_NODE": (snapshot) => ({ - label: lang.modals_snapshots_moved_card + snapshot.context.affectedSection, + "document/move-node": (snapshot) => ({ + label: lang.modals_snapshots_moved_node + snapshot.context.affectedSection, icon: file_output_default }), - "DOCUMENT/MERGE_NODE": (snapshot) => ({ - label: lang.modals_snapshots_merged_card + snapshot.context.affectedSection, + "document/merge-node": (snapshot) => ({ + label: lang.modals_snapshots_merged_node + snapshot.context.affectedSection, icon: merge_default }), - "DOCUMENT/FORMAT_HEADINGS": () => ({ + "document/format-headings": () => ({ label: lang.modals_snapshots_formatted_headings, icon: heading_1_default }), - "DOCUMENT/CUT_NODE": (snapshot) => ({ - label: lang.modals_snapshots_cut_card + snapshot.context.affectedSection, + "document/cut-node": (snapshot) => ({ + label: lang.modals_snapshots_cut_section + snapshot.context.affectedSection, icon: scissors_default }), - "DOCUMENT/PASTE_NODE": (snapshot) => ({ - label: lang.modals_snapshots_pasted_card + snapshot.context.affectedSection, + "document/paste-node": (snapshot) => ({ + label: lang.modals_snapshots_pasted_section + snapshot.context.affectedSection, icon: clipboard_paste_default }), - "DOCUMENT/EXTRACT_BRANCH": (snapshot) => ({ - label: lang.modals_snapshots_extracted_card + snapshot.context.affectedSection, + "document/extract-node": (snapshot) => ({ + label: lang.modals_snapshots_extracted_node + snapshot.context.affectedSection, icon: file_symlink_default, iconHtml: customIcons.cards.svg }), - "DOCUMENT/SPLIT_NODE": (snapshot) => ({ - label: lang.modals_snapshots_split_card + snapshot.context.affectedSection, + "document/split-node": (snapshot) => ({ + label: lang.modals_snapshots_split_node + snapshot.context.affectedSection, icon: split_default - }) + }), + "document/sort-direct-child-nodes": (snapshot) => { + const action = snapshot.context.action; + return { + label: lang.modals_snapshots_sorted_child_nodes + snapshot.context.affectedSection, + icon: action.payload.order === "descending" ? arrow_down_wide_narrow_default : arrow_up_narrow_wide_default + }; + } }; -// src/view/components/container/controls-bar/modals/snapshots-list/components/snapshot-button.svelte -var import_obsidian14 = require("obsidian"); -function add_css20(target) { +// src/view/components/container/modals/snapshots-list/components/snapshot-button.svelte +var import_obsidian17 = require("obsidian"); +function add_css25(target) { append_styles(target, "svelte-8u3rmg", ":root{--icon-wrapper-width:32px}.snapshot.svelte-8u3rmg{padding:var(--size-4-2);cursor:pointer;display:flex;align-items:center;border-radius:4px;gap:4px;height:66px;flex:1;background-color:var(--background-secondary)}.selected.svelte-8u3rmg{background-color:var(--nav-item-background-selected)}.icon-wrapper.svelte-8u3rmg{width:32px;display:flex;align-items:center;justify-content:center}.snapshot-content.svelte-8u3rmg{display:flex;flex-direction:column;gap:5px;flex:1}.snapshot-body.svelte-8u3rmg{display:flex;justify-content:space-between;gap:5px;width:100%}.snapshot-label.svelte-8u3rmg{font-size:14px;color:var(--color-base-70);display:block;flex:1;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snapshot-card-content.svelte-8u3rmg{font-size:14px;color:var(--color-base-60);display:block;white-space:nowrap;overflow:hidden;max-width:200px;text-overflow:ellipsis;font-style:italic;opacity:0.9}@media(max-width: 720px){.snapshot-card-content.svelte-8u3rmg{max-width:30vw}}.snapshot-context.svelte-8u3rmg{display:flex;flex-direction:column;align-items:end;height:100%;justify-content:space-between}.snapshot-section-number.svelte-8u3rmg{font-size:11px;color:var(--color-base-60);min-width:16px;text-align:left;margin-left:auto}.snapshot-time.svelte-8u3rmg{font-size:11px;color:var(--color-base-60)}"); } -function create_else_block6(ctx) { +function create_else_block8(ctx) { let switch_instance; let switch_instance_anchor; let current; @@ -19299,7 +21610,7 @@ function create_else_block6(ctx) { } }; } -function create_if_block15(ctx) { +function create_if_block17(ctx) { let html_tag; let raw_value = ( /*info*/ @@ -19327,7 +21638,7 @@ function create_if_block15(ctx) { } }; } -function create_fragment77(ctx) { +function create_fragment86(ctx) { let div6; let div0; let current_block_type_index; @@ -19360,7 +21671,7 @@ function create_fragment77(ctx) { let current; let mounted; let dispose; - const if_block_creators = [create_if_block15, create_else_block6]; + const if_block_creators = [create_if_block17, create_else_block8]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ("iconHtml" in /*info*/ @@ -19499,7 +21810,7 @@ function create_fragment77(ctx) { } }; } -function instance74($$self, $$props, $$invalidate) { +function instance84($$self, $$props, $$invalidate) { let { snapshot } = $$props; let { active } = $$props; const view = getView(); @@ -19510,14 +21821,14 @@ function instance74($$self, $$props, $$invalidate) { const info = infoFactory(snapshot); const numberOfCharacters = snapshot.context.numberOfCharacters; const numberOfSections = snapshot.context.numberOfSections; - const sections = `${numberOfSections} card${numberOfSections === 1 ? "" : "s"}`; + const sections = `${numberOfSections} section${numberOfSections === 1 ? "" : "s"}`; const chars = `${numberOfCharacters} char${numberOfCharacters === 1 ? "" : "s"}`; const click_handler = () => { if (viewStore.getValue().document.editing.activeNodeId) - new import_obsidian14.Notice(lang.error_apply_snapshot_while_editing); + new import_obsidian17.Notice(lang.error_apply_snapshot_while_editing); else documentStore.dispatch({ - type: "HISTORY/SELECT_SNAPSHOT", + type: "document/history/select-snapshot", payload: { snapshotId: snapshot.id } }); }; @@ -19541,7 +21852,7 @@ function instance74($$self, $$props, $$invalidate) { var Snapshot_button = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance74, create_fragment77, safe_not_equal, { snapshot: 0, active: 1 }, add_css20); + init(this, options, instance84, create_fragment86, safe_not_equal, { snapshot: 0, active: 1 }, add_css25); } }; var snapshot_button_default = Snapshot_button; @@ -19565,17 +21876,17 @@ var updateRelativeTime = (element2) => { }; }; -// src/view/components/container/controls-bar/modals/snapshots-list/file-histoy.svelte -function add_css21(target) { - append_styles(target, "svelte-1dzm90d", ".snapshots-list.svelte-1dzm90d{width:400px;display:flex;flex-direction:column;gap:var(--size-4-2);height:fit-content;max-height:400px;overflow-y:auto;padding-left:var(--size-4-2);padding-right:var(--size-4-2)}@media(max-width: 720px){.snapshots-list.svelte-1dzm90d{width:initial}}"); +// src/view/components/container/modals/snapshots-list/file-histoy.svelte +function add_css26(target) { + append_styles(target, "svelte-1eg4s92", ".snapshots-list.svelte-1eg4s92{width:400px;display:flex;flex-direction:column;gap:var(--size-4-2);height:fit-content;max-height:400px;overflow-y:auto;padding-left:var(--size-4-2);padding-right:var(--size-4-2)}.snapshots-modal.svelte-1eg4s92{left:var(--size-4-2);top:50px}@media(max-width: 720px){.snapshots-list.svelte-1eg4s92{width:initial}}"); } -function get_each_context6(ctx, list, i) { +function get_each_context10(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[3] = list[i]; child_ctx[5] = i; return child_ctx; } -function create_each_block6(key_1, ctx) { +function create_each_block10(key_1, ctx) { let first; let snapshotbutton; let current; @@ -19639,7 +21950,7 @@ function create_each_block6(key_1, ctx) { } }; } -function create_fragment78(ctx) { +function create_fragment87(ctx) { let div1; let div0; let each_blocks = []; @@ -19655,9 +21966,9 @@ function create_fragment78(ctx) { ctx2[3].id ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context6(ctx, each_value, i); + let child_ctx = get_each_context10(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block6(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block10(key, child_ctx)); } return { c() { @@ -19666,8 +21977,8 @@ function create_fragment78(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div0, "class", "snapshots-list svelte-1dzm90d"); - attr(div1, "class", "lineage-modal"); + attr(div0, "class", "snapshots-list svelte-1eg4s92"); + attr(div1, "class", "lineage-modal snapshots-modal svelte-1eg4s92"); set_style(div1, "padding-left", "0"); set_style(div1, "padding-right", "0"); attr(div1, "tabindex", "0"); @@ -19692,7 +22003,7 @@ function create_fragment78(ctx) { each_value = ensure_array_like([.../*$history*/ ctx2[0].items].sort(func)); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block6, null, get_each_context6); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block10, null, get_each_context10); check_outros(); } }, @@ -19723,7 +22034,7 @@ function create_fragment78(ctx) { }; } var func = (a, b) => b.created - a.created; -function instance75($$self, $$props, $$invalidate) { +function instance85($$self, $$props, $$invalidate) { let $history; const view = getView(); const history = historyStore(view); @@ -19733,7 +22044,7 @@ function instance75($$self, $$props, $$invalidate) { var File_histoy = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance75, create_fragment78, safe_not_equal, {}, add_css21); + init(this, options, instance85, create_fragment87, safe_not_equal, {}, add_css26); } }; var file_histoy_default = File_histoy; @@ -19747,12 +22058,11 @@ var modKeyDictionary = { Shift: "Shift" }; -// src/view/components/container/controls-bar/modals/hotkeys/components/hotkey/editor-state/render-editor-state.svelte -var import_obsidian15 = require("obsidian"); -function add_css22(target) { +// src/view/components/container/modals/hotkeys/components/hotkey/editor-state/render-editor-state.svelte +function add_css27(target) { append_styles(target, "svelte-12gga04", ".editor-state.svelte-12gga04{display:flex;align-items:center;justify-content:center;padding:2px;background-color:var(--color-base-100);color:var(--color-base-00);& svg {\n width: 14px;\n height: 14px;\n }}"); } -function create_fragment79(ctx) { +function create_fragment88(ctx) { let kbd; let raw_value = ( /*cursorIcon*/ @@ -19829,7 +22139,7 @@ function create_fragment79(ctx) { } }; } -function instance76($$self, $$props, $$invalidate) { +function instance86($$self, $$props, $$invalidate) { let { hotkey } = $$props; let { onClick = void 0 } = $$props; const classes = { @@ -19847,19 +22157,9 @@ function instance76($$self, $$props, $$invalidate) { "editor-on": lang.modal_hk_editor_state_on, "editor-off": lang.modal_hk_editor_state_off }; - let notice; const wrappedOnClick = () => { if (onClick) { onClick(); - setTimeout( - () => { - if (notice) { - notice.hide(); - } - notice = new import_obsidian15.Notice(label[hotkey.editorState]); - }, - 16 - ); } }; $$self.$$set = ($$props2) => { @@ -19873,21 +22173,21 @@ function instance76($$self, $$props, $$invalidate) { var Render_editor_state = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance76, create_fragment79, safe_not_equal, { hotkey: 0, onClick: 5 }, add_css22); + init(this, options, instance86, create_fragment88, safe_not_equal, { hotkey: 0, onClick: 5 }, add_css27); } }; var render_editor_state_default = Render_editor_state; -// src/view/components/container/controls-bar/modals/hotkeys/components/hotkey/render-hotkey.svelte -function add_css23(target) { +// src/view/components/container/modals/hotkeys/components/hotkey/render-hotkey.svelte +function add_css28(target) { append_styles(target, "svelte-sbdud0", ".hotkey-buttons.svelte-sbdud0{width:100%;height:100%;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:5px;opacity:0;background-color:var(--color-base-70)}.hotkey-button.svelte-sbdud0{border:none;width:16px;height:16px;box-shadow:none;padding:2px;cursor:pointer}.hotkey-buttons.svelte-sbdud0:hover{opacity:0.8}.hotkey-key.svelte-sbdud0{color:var(--text-on-accent);background-color:#175c5a}.blank-hotkey.svelte-sbdud0{background-color:var(--color-base-30)}"); } -function get_each_context7(ctx, list, i) { +function get_each_context11(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[3] = list[i]; return child_ctx; } -function create_if_block_23(ctx) { +function create_if_block_25(ctx) { let button; let trash; let current; @@ -19938,7 +22238,7 @@ function create_if_block_23(ctx) { } }; } -function create_else_block7(ctx) { +function create_else_block9(ctx) { let t0; let kbd; let t1_value = ( @@ -19959,7 +22259,7 @@ function create_else_block7(ctx) { ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block7(get_each_context7(ctx, each_value, i)); + each_blocks[i] = create_each_block11(get_each_context11(ctx, each_value, i)); } return { c() { @@ -20026,11 +22326,11 @@ function create_else_block7(ctx) { ); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context7(ctx2, each_value, i); + const child_ctx = get_each_context11(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); } else { - each_blocks[i] = create_each_block7(child_ctx); + each_blocks[i] = create_each_block11(child_ctx); each_blocks[i].c(); each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); } @@ -20064,7 +22364,7 @@ function create_else_block7(ctx) { } }; } -function create_if_block16(ctx) { +function create_if_block18(ctx) { let kbd; return { c() { @@ -20123,7 +22423,7 @@ function create_if_block_17(ctx) { } }; } -function create_each_block7(ctx) { +function create_each_block11(ctx) { let kbd; let t_value = modKeyDictionary[ /*modifier*/ @@ -20154,7 +22454,7 @@ function create_each_block7(ctx) { } }; } -function create_fragment80(ctx) { +function create_fragment89(ctx) { let div; let button; let pen; @@ -20169,9 +22469,9 @@ function create_fragment80(ctx) { pen = new pen_default({ props: { class: "svg-icon", size: 8 } }); let if_block0 = ( /*hotkey*/ - ctx[2].key && create_if_block_23(ctx) + ctx[2].key && create_if_block_25(ctx) ); - const if_block_creators = [create_if_block16, create_else_block7]; + const if_block_creators = [create_if_block18, create_else_block9]; const if_blocks = []; function select_block_type(ctx2, dirty) { if (!/*hotkey*/ @@ -20230,7 +22530,7 @@ function create_fragment80(ctx) { transition_in(if_block0, 1); } } else { - if_block0 = create_if_block_23(ctx); + if_block0 = create_if_block_25(ctx); if_block0.c(); transition_in(if_block0, 1); if_block0.m(div, null); @@ -20292,7 +22592,7 @@ function create_fragment80(ctx) { } }; } -function instance77($$self, $$props, $$invalidate) { +function instance87($$self, $$props, $$invalidate) { let { enableEditing } = $$props; let { makeBlank } = $$props; let { hotkey } = $$props; @@ -20312,15 +22612,15 @@ var Render_hotkey = class extends SvelteComponent { init( this, options, - instance77, - create_fragment80, + instance87, + create_fragment89, safe_not_equal, { enableEditing: 0, makeBlank: 1, hotkey: 2 }, - add_css23 + add_css28 ); } }; @@ -20348,8 +22648,8 @@ var updateViewHotkeysDictionary = (hotkeys) => { } }; -// src/view/components/container/controls-bar/modals/hotkeys/components/hotkey/editor-state/edit-editor-state.svelte -function create_fragment81(ctx) { +// src/view/components/container/modals/hotkeys/components/hotkey/editor-state/edit-editor-state.svelte +function create_fragment90(ctx) { let editorstate; let current; editorstate = new render_editor_state_default({ @@ -20395,7 +22695,7 @@ function create_fragment81(ctx) { } }; } -function instance78($$self, $$props, $$invalidate) { +function instance88($$self, $$props, $$invalidate) { let { hotkey } = $$props; let { commandName } = $$props; let { isPrimary } = $$props; @@ -20422,16 +22722,16 @@ function instance78($$self, $$props, $$invalidate) { var Edit_editor_state = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance78, create_fragment81, safe_not_equal, { hotkey: 0, commandName: 2, isPrimary: 3 }); + init(this, options, instance88, create_fragment90, safe_not_equal, { hotkey: 0, commandName: 2, isPrimary: 3 }); } }; var edit_editor_state_default = Edit_editor_state; -// src/view/components/container/controls-bar/modals/hotkeys/components/hotkey/edit-hotkey.svelte -function add_css24(target) { +// src/view/components/container/modals/hotkeys/components/hotkey/edit-hotkey.svelte +function add_css29(target) { append_styles(target, "svelte-1xi2oy8", ".container.svelte-1xi2oy8{display:flex;gap:5px;align-items:center;justify-content:center}.hotkey-container.svelte-1xi2oy8{display:flex;flex-direction:column;align-items:center;gap:5px}.input.svelte-1xi2oy8{width:115px;height:25px;text-align:center;font-size:14px}.modifiers.svelte-1xi2oy8{display:flex;gap:5px;width:100%;justify-content:center}.disabled.svelte-1xi2oy8{background-color:var(--color-base-50)}button.svelte-1xi2oy8:disabled{cursor:not-allowed}.save-and-cancel-buttons.svelte-1xi2oy8{display:flex;gap:5px;flex-direction:column}.hotkey-button.svelte-1xi2oy8{background-color:transparent;color:var(--color-base-25);border:none;width:20px;height:20px;box-shadow:none;padding:2px;cursor:pointer}.hotkey-key.svelte-1xi2oy8{color:lightgrey;background-color:#175c5a;border-color:#227f7d}"); } -function create_if_block17(ctx) { +function create_if_block19(ctx) { let kbd; let t_value = "Ctrl" /* Ctrl */ + ""; let t; @@ -20474,7 +22774,7 @@ function create_if_block17(ctx) { } }; } -function create_fragment82(ctx) { +function create_fragment91(ctx) { let div3; let editeditorstate; let t0; @@ -20526,7 +22826,7 @@ function create_fragment82(ctx) { ) } }); - let if_block = isMacLike && create_if_block17(ctx); + let if_block = isMacLike && create_if_block19(ctx); x = new x_default({ props: { class: "svg-icon", size: 8 } }); rotateccw = new rotate_ccw_default({ props: { class: "svg-icon", size: 8 } }); return { @@ -20736,7 +23036,7 @@ function create_fragment82(ctx) { } }; } -function instance79($$self, $$props, $$invalidate) { +function instance89($$self, $$props, $$invalidate) { let { hotkey } = $$props; let { commandName } = $$props; let { isPrimary } = $$props; @@ -20847,8 +23147,8 @@ var Edit_hotkey = class extends SvelteComponent { init( this, options, - instance79, - create_fragment82, + instance89, + create_fragment91, safe_not_equal, { hotkey: 0, @@ -20856,18 +23156,18 @@ var Edit_hotkey = class extends SvelteComponent { isPrimary: 2, onCancel: 3 }, - add_css24 + add_css29 ); } }; var edit_hotkey_default = Edit_hotkey; -// src/view/components/container/controls-bar/modals/hotkeys/components/hotkey/hotkey.svelte +// src/view/components/container/modals/hotkeys/components/hotkey/hotkey.svelte var import_classnames4 = __toESM(require_classnames()); -function add_css25(target) { +function add_css30(target) { append_styles(target, "svelte-1ctyvzu", ".hotkey.svelte-1ctyvzu{padding:5px;background-color:var(--color-base-50);display:flex;gap:5px;border-radius:3px;width:fit-content;position:relative}.editing.svelte-1ctyvzu{background-color:var(--color-base-60)}.hotkey--is-custom.svelte-1ctyvzu{background-color:var(--custom-hotkey-bg)}.obsidian-conflict.svelte-1ctyvzu{background-color:var(--color-red)}.plugin-conflict.svelte-1ctyvzu{background-color:var(--color-orange)}"); } -function create_else_block8(ctx) { +function create_else_block10(ctx) { let renderhotkey; let current; renderhotkey = new render_hotkey_default({ @@ -20917,7 +23217,7 @@ function create_else_block8(ctx) { } }; } -function create_if_block18(ctx) { +function create_if_block20(ctx) { let edithotkey; let current; edithotkey = new edit_hotkey_default({ @@ -20979,14 +23279,14 @@ function create_if_block18(ctx) { } }; } -function create_fragment83(ctx) { +function create_fragment92(ctx) { let div; let current_block_type_index; let if_block; let div_aria_label_value; let div_class_value; let current; - const if_block_creators = [create_if_block18, create_else_block8]; + const if_block_creators = [create_if_block20, create_else_block10]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -21090,7 +23390,7 @@ function create_fragment83(ctx) { } }; } -function instance80($$self, $$props, $$invalidate) { +function instance90($$self, $$props, $$invalidate) { let $editing; let { hotkey } = $$props; let { commandName } = $$props; @@ -21132,7 +23432,7 @@ function instance80($$self, $$props, $$invalidate) { var Hotkey = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance80, create_fragment83, safe_not_equal, { hotkey: 0, commandName: 1, isPrimary: 2 }, add_css25); + init(this, options, instance90, create_fragment92, safe_not_equal, { hotkey: 0, commandName: 1, isPrimary: 2 }, add_css30); } }; var hotkey_default = Hotkey; @@ -21144,13 +23444,13 @@ var hotkeysLang = { enable_edit_mode_and_place_cursor_at_start: lang.hk_enable_edit_mode_and_place_cursor_at_start, enable_edit_mode_and_place_cursor_at_end: lang.hk_enable_edit_mode_and_place_cursor_at_end, disable_edit_mode: lang.hk_disable_edit_mode, - add_child: lang.card_btn_add_child_card, - add_below: lang.card_btn_add_card_below, - add_above: lang.card_btn_add_card_above, + add_child: lang.card_btn_add_child_node, + add_below: lang.card_btn_add_node_below, + add_above: lang.card_btn_add_node_above, add_child_and_split: lang.hk_add_child_and_split, add_below_and_split: lang.hk_add_below_and_split, add_above_and_split: lang.hk_add_above_and_split, - delete_card: lang.hk_delete_card, + delete_card: lang.hk_delete_section, go_up: lang.hk_go_up, go_down: lang.hk_go_down, go_right: lang.hk_go_right, @@ -21194,13 +23494,15 @@ var hotkeysLang = { zoom_reset: lang.hk_zoom_reset, toggle_collapse: lang.hk_outline_toggle_collapse, toggle_collapse_all: lang.hk_outline_toggle_collapse_all, - toggle_outline_mode: lang.hk_toggle_outline_mode + toggle_outline_mode: lang.hk_toggle_outline_mode, + add_parent_sibling: lang.hk_add_parent_sibling, + select_all_nodes: lang.hk_select_all }; -// src/view/components/container/controls-bar/modals/hotkeys/components/helpers/get-dynamic-label.ts +// src/view/components/container/modals/hotkeys/components/helpers/get-dynamic-label.ts var HotkeysThatBehaveDifferentlyInOutlineMode = /* @__PURE__ */ new Set(["go_down", "go_up", "go_left", "go_right"]); -var getDynamicLabel = (state2, name) => { - if (state2.outlineMode) { +var getDynamicLabel = (name, outlineMode) => { + if (outlineMode) { if (name === "go_down") { return hotkeysLang["navigate_to_previous_node"]; } else if (name === "go_up") { @@ -21214,17 +23516,17 @@ var getDynamicLabel = (state2, name) => { return hotkeysLang[name]; }; -// src/view/components/container/controls-bar/modals/hotkeys/components/command.svelte -function add_css26(target) { +// src/view/components/container/modals/hotkeys/components/command.svelte +function add_css31(target) { append_styles(target, "svelte-1qxnonu", ".command.svelte-1qxnonu{padding:8px;display:flex;align-items:center;justify-content:space-between;border-radius:4px;gap:8px;background-color:var(--color-base-30);flex-wrap:wrap}.hotkeys.svelte-1qxnonu{display:flex;flex-direction:column;align-items:end;gap:5px}.label.svelte-1qxnonu{font-size:14px;color:var(--text-normal);position:relative;display:flex;align-items:center;gap:5px}.info-icon.svelte-1qxnonu{color:#4973A1FF;margin-bottom:-4px;& svg {\n width: 12px;\n height: 12px;\n }}"); } -function get_each_context8(ctx, list, i) { +function get_each_context12(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[2] = list[i]; child_ctx[4] = i; return child_ctx; } -function create_if_block19(ctx) { +function create_if_block21(ctx) { let span; let info; let current; @@ -21259,7 +23561,7 @@ function create_if_block19(ctx) { } }; } -function create_each_block8(ctx) { +function create_each_block12(ctx) { let hotkey_1; let current; hotkey_1 = new hotkey_default({ @@ -21313,14 +23615,14 @@ function create_each_block8(ctx) { } }; } -function create_fragment84(ctx) { +function create_fragment93(ctx) { let div1; let span; let t0_value = getDynamicLabel( - /*labelState*/ - ctx[1], /*commandHotkeys*/ - ctx[0].name + ctx[0].name, + /*labelState*/ + ctx[1].outlineMode ) + ""; let t0; let t1; @@ -21331,14 +23633,14 @@ function create_fragment84(ctx) { let t2; let div0; let current; - let if_block = show_if && create_if_block19(ctx); + let if_block = show_if && create_if_block21(ctx); let each_value = ensure_array_like( /*commandHotkeys*/ ctx[0].hotkeys ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block8(get_each_context8(ctx, each_value, i)); + each_blocks[i] = create_each_block12(get_each_context12(ctx, each_value, i)); } const out = (i) => transition_out(each_blocks[i], 1, 1, () => { each_blocks[i] = null; @@ -21377,12 +23679,12 @@ function create_fragment84(ctx) { current = true; }, p(ctx2, [dirty]) { - if ((!current || dirty & /*labelState, commandHotkeys*/ + if ((!current || dirty & /*commandHotkeys, labelState*/ 3) && t0_value !== (t0_value = getDynamicLabel( - /*labelState*/ - ctx2[1], /*commandHotkeys*/ - ctx2[0].name + ctx2[0].name, + /*labelState*/ + ctx2[1].outlineMode ) + "")) set_data(t0, t0_value); if (dirty & /*commandHotkeys*/ @@ -21398,7 +23700,7 @@ function create_fragment84(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block19(ctx2); + if_block = create_if_block21(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(span, null); @@ -21418,12 +23720,12 @@ function create_fragment84(ctx) { ); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context8(ctx2, each_value, i); + const child_ctx = get_each_context12(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); transition_in(each_blocks[i], 1); } else { - each_blocks[i] = create_each_block8(child_ctx); + each_blocks[i] = create_each_block12(child_ctx); each_blocks[i].c(); transition_in(each_blocks[i], 1); each_blocks[i].m(div0, null); @@ -21463,7 +23765,7 @@ function create_fragment84(ctx) { } }; } -function instance81($$self, $$props, $$invalidate) { +function instance91($$self, $$props, $$invalidate) { let { commandHotkeys } = $$props; let { labelState } = $$props; $$self.$$set = ($$props2) => { @@ -21477,21 +23779,22 @@ function instance81($$self, $$props, $$invalidate) { var Command = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance81, create_fragment84, safe_not_equal, { commandHotkeys: 0, labelState: 1 }, add_css26); + init(this, options, instance91, create_fragment93, safe_not_equal, { commandHotkeys: 0, labelState: 1 }, add_css31); } }; var command_default = Command; -// src/view/components/container/controls-bar/modals/hotkeys/group.svelte -function add_css27(target) { - append_styles(target, "svelte-1njqf5r", ".hotkey-group.svelte-1njqf5r{background-color:var(--background-secondary);padding:var(--size-4-2);border-radius:3px}.hotkeys-list.svelte-1njqf5r{display:flex;flex-direction:column;gap:var(--size-4-2);overflow-y:auto}.hotkey-group-name.svelte-1njqf5r{padding-bottom:10px;padding-left:5px;font-size:16px;color:var(--color-base-70)}"); +// src/view/components/container/modals/hotkeys/group.svelte +function add_css32(target) { + append_styles(target, "svelte-1ct7tgv", ".hotkey-group.svelte-1ct7tgv{background-color:var(--background-secondary);padding:var(--size-4-2);border-radius:3px}.hotkeys-list.svelte-1ct7tgv{display:flex;flex-direction:column;gap:var(--size-4-2);overflow-y:auto}.hotkey-group-name.svelte-1ct7tgv{padding-bottom:10px;padding-left:5px;font-size:16px;color:var(--color-base-70)}"); } -function get_each_context9(ctx, list, i) { +function get_each_context13(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[3] = list[i]; return child_ctx; } -function create_if_block20(ctx) { +function create_each_block13(key_1, ctx) { + let first; let hotkey; let current; hotkey = new command_default({ @@ -21507,23 +23810,29 @@ function create_if_block20(ctx) { } }); return { + key: key_1, + first: null, c() { + first = empty(); create_component(hotkey.$$.fragment); + this.first = first; }, m(target, anchor) { + insert(target, first, anchor); mount_component(hotkey, target, anchor); current = true; }, - p(ctx2, dirty) { + p(new_ctx, dirty) { + ctx = new_ctx; const hotkey_changes = {}; if (dirty & /*group*/ 1) hotkey_changes.commandHotkeys = /*commandHotkeys*/ - ctx2[3]; + ctx[3]; if (dirty & /*labelState*/ 2) hotkey_changes.labelState = /*labelState*/ - ctx2[1]; + ctx[1]; hotkey.$set(hotkey_changes); }, i(local) { @@ -21537,82 +23846,14 @@ function create_if_block20(ctx) { current = false; }, d(detaching) { + if (detaching) { + detach(first); + } destroy_component(hotkey, detaching); } }; } -function create_each_block9(key_1, ctx) { - let first; - let if_block_anchor; - let current; - let if_block = !/*labelState*/ - (ctx[1].outlineMode && /*commandHotkeys*/ - (ctx[3].name === "navigate_to_next_node" || /*commandHotkeys*/ - ctx[3].name === "navigate_to_previous_node")) && create_if_block20(ctx); - return { - key: key_1, - first: null, - c() { - first = empty(); - if (if_block) - if_block.c(); - if_block_anchor = empty(); - this.first = first; - }, - m(target, anchor) { - insert(target, first, anchor); - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (!/*labelState*/ - (ctx[1].outlineMode && /*commandHotkeys*/ - (ctx[3].name === "navigate_to_next_node" || /*commandHotkeys*/ - ctx[3].name === "navigate_to_previous_node"))) { - if (if_block) { - if_block.p(ctx, dirty); - if (dirty & /*labelState, group*/ - 3) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block20(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) { - detach(first); - detach(if_block_anchor); - } - if (if_block) - if_block.d(detaching); - } - }; -} -function create_fragment85(ctx) { +function create_fragment94(ctx) { let div2; let div0; let t0; @@ -21630,9 +23871,9 @@ function create_fragment85(ctx) { ctx2[3].name ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context9(ctx, each_value, i); + let child_ctx = get_each_context13(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block9(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block13(key, child_ctx)); } return { c() { @@ -21647,9 +23888,9 @@ function create_fragment85(ctx) { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div0, "class", "hotkey-group-name svelte-1njqf5r"); - attr(div1, "class", "hotkeys-list svelte-1njqf5r"); - attr(div2, "class", "hotkey-group svelte-1njqf5r"); + attr(div0, "class", "hotkey-group-name svelte-1ct7tgv"); + attr(div1, "class", "hotkeys-list svelte-1ct7tgv"); + attr(div2, "class", "hotkey-group svelte-1ct7tgv"); }, m(target, anchor) { insert(target, div2, anchor); @@ -21679,7 +23920,7 @@ function create_fragment85(ctx) { ctx2[0] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div1, outro_and_destroy_block, create_each_block9, null, get_each_context9); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div1, outro_and_destroy_block, create_each_block13, null, get_each_context13); check_outros(); } }, @@ -21707,7 +23948,7 @@ function create_fragment85(ctx) { } }; } -function instance82($$self, $$props, $$invalidate) { +function instance92($$self, $$props, $$invalidate) { let { group } = $$props; let { labelState } = $$props; let { groupName } = $$props; @@ -21724,16 +23965,16 @@ function instance82($$self, $$props, $$invalidate) { var Group2 = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance82, create_fragment85, safe_not_equal, { group: 0, labelState: 1, groupName: 2 }, add_css27); + init(this, options, instance92, create_fragment94, safe_not_equal, { group: 0, labelState: 1, groupName: 2 }, add_css32); } }; var group_default2 = Group2; -// src/view/components/container/controls-bar/modals/hotkeys/front.svelte -function add_css28(target) { +// src/view/components/container/modals/hotkeys/front.svelte +function add_css33(target) { append_styles(target, "svelte-105pskz", ".front.svelte-105pskz{display:flex;justify-content:space-between;align-items:center;width:100%}.search-input-container.svelte-105pskz{width:100%}"); } -function create_fragment86(ctx) { +function create_fragment95(ctx) { let div2; let div1; let input; @@ -21811,7 +24052,7 @@ function create_fragment86(ctx) { } }; } -function instance83($$self, $$props, $$invalidate) { +function instance93($$self, $$props, $$invalidate) { let searchTerm = ""; const view = getView(); function input_input_handler() { @@ -21837,13 +24078,13 @@ function instance83($$self, $$props, $$invalidate) { var Front = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance83, create_fragment86, safe_not_equal, {}, add_css28); + init(this, options, instance93, create_fragment95, safe_not_equal, {}, add_css33); } }; var front_default = Front; -// src/view/components/container/controls-bar/modals/hotkeys/status-bar.svelte -var import_obsidian16 = require("obsidian"); +// src/view/components/container/modals/hotkeys/status-bar.svelte +var import_obsidian18 = require("obsidian"); // src/view/actions/keyboard-shortcuts/helpers/commands/presets/alt-primary-modifier.ts var AltPrimaryModifier = { @@ -21906,14 +24147,24 @@ var AltPrimaryModifier = { key: "ArrowRight", modifiers: ["Alt"] } + }, + add_parent_sibling: { + secondary: { + key: "H", + modifiers: ["Alt"] + }, + primary: { + key: "ArrowLeft", + modifiers: ["Alt"] + } } }; -// src/view/components/container/controls-bar/modals/hotkeys/status-bar.svelte -function add_css29(target) { +// src/view/components/container/modals/hotkeys/status-bar.svelte +function add_css34(target) { append_styles(target, "svelte-183y6er", ".hotkeys-status-bar.svelte-183y6er{display:flex;align-items:center}.conflicts-indicator.svelte-183y6er{font-size:12px;color:var(--color-red)}.hotkeys-menu.svelte-183y6er{margin-left:auto;padding:3px;cursor:pointer;transition:opacity ease 100ms;opacity:0.7;& svg {\n width: 14px;\n height: 14px;\n };&:hover {\n opacity: 1;\n }}"); } -function create_if_block21(ctx) { +function create_if_block22(ctx) { let span; let t0; let t1; @@ -21962,7 +24213,7 @@ function create_if_block21(ctx) { } }; } -function create_fragment87(ctx) { +function create_fragment96(ctx) { let div; let t; let span; @@ -21972,7 +24223,7 @@ function create_fragment87(ctx) { let dispose; let if_block = ( /*conflicts*/ - ctx[0] && create_if_block21(ctx) + ctx[0] && create_if_block22(ctx) ); settings = new settings_default({ props: { class: "svg-icon" } }); return { @@ -22012,7 +24263,7 @@ function create_fragment87(ctx) { if (if_block) { if_block.p(ctx2, dirty); } else { - if_block = create_if_block21(ctx2); + if_block = create_if_block22(ctx2); if_block.c(); if_block.m(div, t); } @@ -22043,11 +24294,11 @@ function create_fragment87(ctx) { } }; } -function instance84($$self, $$props, $$invalidate) { +function instance94($$self, $$props, $$invalidate) { let { conflicts } = $$props; const view = getView(); const showMenu = (e) => { - const menu = new import_obsidian16.Menu(); + const menu = new import_obsidian18.Menu(); menu.addItem((item) => { item.setTitle(lang.modals_hk_reset_hotkeys); item.onClick(() => { @@ -22074,7 +24325,7 @@ function instance84($$self, $$props, $$invalidate) { var Status_bar = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance84, create_fragment87, safe_not_equal, { conflicts: 0 }, add_css29); + init(this, options, instance94, create_fragment96, safe_not_equal, { conflicts: 0 }, add_css34); } }; var status_bar_default = Status_bar; @@ -22098,10 +24349,9 @@ var maybeEnableEditMode = (view) => { var spatialNavigation = (view, direction) => { maybeEnableEditMode(view); view.viewStore.dispatch({ - type: "DOCUMENT/NAVIGATE_USING_KEYBOARD", + type: "view/set-active-node/keyboard", payload: { - direction, - columns: view.documentStore.getValue().document.columns + direction }, context: { outlineMode: outlineModeSelector(view) @@ -22111,7 +24361,7 @@ var spatialNavigation = (view, direction) => { var sequentialNavigation = (view, direction) => { maybeEnableEditMode(view); view.viewStore.dispatch({ - type: "NAVIGATION/SELECT_NEXT_NODE", + type: "view/set-active-node/sequential/select-next", payload: { direction, sections: view.documentStore.getValue().sections @@ -22124,10 +24374,9 @@ var sequentialNavigation = (view, direction) => { var jump = (view, target) => { maybeEnableEditMode(view); view.viewStore.dispatch({ - type: "DOCUMENT/JUMP_TO_NODE", + type: "view/set-active-node/keyboard-jump", payload: { - target, - columns: view.documentStore.getValue().document.columns + target } }); }; @@ -22265,7 +24514,7 @@ var navigateCommands = () => { callback: (view, event) => { event.preventDefault(); view.viewStore.dispatch({ - type: "NAVIGATION/NAVIGATE_BACK" + type: "view/set-active-node/history/select-previous" }); }, hotkeys: [{ key: "J", modifiers: ["Alt"], editorState: "both" }] @@ -22275,7 +24524,7 @@ var navigateCommands = () => { callback: (view, event) => { event.preventDefault(); view.viewStore.dispatch({ - type: "NAVIGATION/NAVIGATE_FORWARD" + type: "view/set-active-node/history/select-next" }); }, hotkeys: [{ key: "K", modifiers: ["Alt"], editorState: "both" }] @@ -22291,21 +24540,21 @@ var cancelChanges = (view) => { view.inlineEditor.unloadNode(void 0, true); if (documentViewState.editing.isInSidebar) { view.viewStore.dispatch({ - type: "view/sidebar/disable-edit" + type: "view/editor/disable-sidebar-editor" }); } else { view.viewStore.dispatch({ - type: "view/main/disable-edit" + type: "view/editor/disable-main-editor" }); } } else { view.inlineEditor.onNextChange(() => { view.viewStore.dispatch({ - type: "view/confirmation/reset/disable-edit" + type: "view/editor/disable/reset-confirmation" }); }); view.viewStore.dispatch({ - type: "view/confirmation/confirm/disable-edit", + type: "view/editor/disable/confirm", payload: { id: documentViewState.editing.activeNodeId } @@ -22321,7 +24570,7 @@ var editCommands = () => { callback: (view, event) => { event.preventDefault(); view.viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId: view.viewStore.getValue().document.activeNode } @@ -22338,7 +24587,7 @@ var editCommands = () => { const nodeId = view.viewStore.getValue().document.activeNode; view.inlineEditor.setNodeCursor(nodeId, { line: 0, ch: 0 }); view.viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId } @@ -22359,7 +24608,7 @@ var editCommands = () => { const nodeId = view.viewStore.getValue().document.activeNode; view.inlineEditor.deleteNodeCursor(nodeId); view.viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId } @@ -22468,6 +24717,24 @@ var createCommands = () => { } ] }, + { + name: "add_parent_sibling", + callback: (view) => { + saveNodeAndInsertNode(view, "left"); + }, + hotkeys: [ + { + key: "ArrowLeft", + modifiers: ["Mod"], + editorState: "editor-off" + }, + { + key: "H", + modifiers: ["Mod"], + editorState: "both" + } + ] + }, { name: "add_above_and_split", callback: (view) => { @@ -22505,7 +24772,7 @@ var createCommands = () => { var restoreEditingState = (view, state2) => { setTimeout(() => { view.viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId: state2.editedNode } @@ -22522,7 +24789,7 @@ var moveNode = async (view, direction) => { saveNodeContent(view); const document2 = view.viewStore.getValue().document; view.documentStore.dispatch({ - type: "DOCUMENT/MOVE_NODE", + type: "document/move-node", payload: { direction, activeNodeId: document2.activeNode, @@ -22602,7 +24869,7 @@ var mergeNode = (view, direction) => { throw new Error(lang.error_hk_cant_merge_multiple_nodes); } view.documentStore.dispatch({ - type: "DOCUMENT/MERGE_NODE", + type: "document/merge-node", payload: { direction, activeNodeId: view.viewStore.getValue().document.activeNode @@ -22658,16 +24925,14 @@ var historyCommands = () => { { name: "undo_change", callback: (view) => { - const path = view.documentStore.getValue().file.path; - if (path) - view.documentStore.dispatch({ - type: "HISTORY/APPLY_PREVIOUS_SNAPSHOT" - }); + view.documentStore.dispatch({ + type: "document/history/select-previous-snapshot" + }); }, hotkeys: [ { key: "Z", - modifiers: ["Mod", "Shift"], + modifiers: ["Mod"], editorState: "editor-off" } ] @@ -22675,15 +24940,18 @@ var historyCommands = () => { { name: "redo_change", callback: (view) => { - const path = view.documentStore.getValue().file.path; - if (path) - view.documentStore.dispatch({ - type: "HISTORY/APPLY_NEXT_SNAPSHOT" - }); + view.documentStore.dispatch({ + type: "document/history/select-next-snapshot" + }); }, hotkeys: [ { key: "Y", + modifiers: ["Mod"], + editorState: "editor-off" + }, + { + key: "Z", modifiers: ["Mod", "Shift"], editorState: "editor-off" } @@ -22692,75 +24960,6 @@ var historyCommands = () => { ]; }; -// src/lib/tree-utils/get/get-sorted-child-groups.ts -var getSortedChildGroups = (columns, currentParentNode, remove = false) => { - const childGroupsArray = traverseDown(columns, currentParentNode, false); - const childGroups = new Set(childGroupsArray); - const sortedChildGroups = []; - for (const column of columns) { - const childGroupsOfColumns = []; - const groups = []; - for (const group of column.groups) { - if (childGroups.has(group.parentId)) { - childGroupsOfColumns.push(group); - } else { - groups.push(group); - } - } - if (remove) - column.groups = groups; - if (childGroupsOfColumns.length > 0) - sortedChildGroups.push(childGroupsOfColumns); - } - return sortedChildGroups; -}; - -// src/lib/tree-utils/delete/delete-node-by-id.ts -var deleteNodeById = (columns, content, nodeId) => { - for (const column of columns) { - for (const group of column.groups) { - for (let i = 0; i < group.nodes.length; i++) { - const _nodeId2 = group.nodes[i]; - if (_nodeId2 === nodeId) { - group.nodes.splice(i, 1); - group.nodes = [...group.nodes]; - if (content) - delete content[_nodeId2]; - return; - } - } - } - } -}; - -// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/get-branch.ts -var getBranch = (columns, content, nodeId, mode) => { - const cut = mode === "cut"; - const sortedChildGroups = getSortedChildGroups(columns, nodeId, cut); - const newContent = {}; - for (const sortedChildGroup of sortedChildGroups) { - for (const group of sortedChildGroup) { - for (const node of group.nodes) { - if (node in content) { - newContent[node] = content[node]; - if (cut) - delete content[node]; - } - } - } - } - newContent[nodeId] = content[nodeId]; - const branch = { - sortedChildGroups, - content: newContent, - nodeId, - mode - }; - if (cut) - deleteNodeById(columns, content, nodeId); - return clone(branch); -}; - // src/lib/data-conversion/helpers/html-comment-marker/create-html-comment-marker.ts var level = (parentNumber, index) => `${parentNumber ? parentNumber + "." : ""}${index}`; var createHtmlCommentMarker = (parentNumber, index) => ` @@ -22791,53 +24990,13 @@ var jsonToHtmlComment = (tree, parentNumber = "", text2 = "", includeStructure = return text2; }; -// src/lib/tree-utils/create/create-column.ts -var createColumn = () => ({ - id: id.column(), - groups: [] -}); - -// src/lib/tree-utils/create/create-group.ts -var createGroup = (parentId) => ({ - nodes: [], - parentId -}); - -// src/lib/data-conversion/x-to-json/branch-to-json.ts -var branchToColumns = (branch) => { - const columns = []; - columns.push(createColumn()); - columns[columns.length - 1].groups.push(createGroup("root")); - columns[columns.length - 1].groups[0].nodes.push(branch.nodeId); - for (const groups of branch.sortedChildGroups) { - columns.push(createColumn()); - for (const group of groups) { - columns[columns.length - 1].groups.push(group); - } - } - return columns; -}; -var branchToJson = (branches) => { - const trees = []; - for (const branch of branches) { - const tree = columnsToJson(branchToColumns(branch), branch.content); - trees.push(tree[0]); - } - return trees; -}; - // src/lib/data-conversion/branch-to-x/branch-to-html-comment.ts var branchToHtmlComment = (branches) => { return jsonToHtmlComment(branchToJson(branches)); }; -// src/lib/data-conversion/branch-to-x/branch-to-outline.ts -var branchToOutline = (branches) => { - return jsonToOutline(branchToJson(branches)); -}; - -// src/lib/data-conversion/helpers/html-element-marker/create-html-element-marker.ts -var createHtmlElementMarker = (parentNumber, index) => ``; +// src/lib/data-conversion/helpers/html-element-marker/collapsed-span-marker.ts +var expandedSpanMarker = (parentNumber, index) => ``; // src/lib/data-conversion/json-to-x/json-to-html-element.ts var jsonToHtmlElement = (tree, parentNumber = "", text2 = "") => { @@ -22847,33 +25006,37 @@ var jsonToHtmlElement = (tree, parentNumber = "", text2 = "") => { if (text2) text2 = text2 + "\n\n"; let content = node.content.trimStart(); - const marker = createHtmlElementMarker(parentNumber, index); - if (content.match(/^#+ /)) { - const headingLevel = content.match(/^#+/)?.[0]; - content = `${headingLevel} ${marker}${content.slice(headingLevel.length).trim()}`; - } else if (content.match(/^#[^\s#\uFEFF\u200B]+/)) { - const tag = content.match(/^#[^\s#\uFEFF\u200B]+/)?.[0]; - content = `${tag}${marker}${content.slice(tag.length)}`; + const expandedSpan = expandedSpanMarker(parentNumber, index); + if (/^#+ /.test(content)) { + content = `${expandedSpan} +${content}`; + } else if (/^#[^\s#\uFEFF\u200B]+/.test(content)) { + content = `${expandedSpan} +${content}`; } else if (content.startsWith(">")) { - content = `> ${marker}${content.slice(1).trim()}`; - } else if (content.match(/^[-*+]\s\[.\]\s/)) { - const taskPrefix = content.match(/^[-*+]\s\[.\]\s/)?.[0]; - content = `${taskPrefix}${marker}${content.slice(taskPrefix.length).trim()}`; - } else if (content.match(/^[-*+]\s/)) { - const bullet = content.match(/^[-*+]\s/)?.[0]; - content = `${bullet}${marker}${content.slice(bullet.length).trim()}`; - } else if (content.match(/^\d+\.\s/)) { - const number = content.match(/^\d+\.\s/)?.[0]; - content = `${number} ${marker}${content.slice(number.length).trim()}`; + content = `${expandedSpan} +${content}`; + } else if (/^[-*+]\s\[.\]\s/.test(content)) { + content = `${expandedSpan} +${content}`; + } else if (/^[-*+]\s/.test(content)) { + content = `${expandedSpan} +${content}`; + } else if (/^\d+\.\s/.test(content)) { + content = `${expandedSpan} +${content}`; } else if (content.startsWith("```")) { - content = `${marker} + content = `${expandedSpan} ${content}`; } else if (content.startsWith("|")) { - content = `${marker} + content = `${expandedSpan} +${content}`; + } else if (/^!?\[\[/.test(content)) { + content = `${expandedSpan} ${content}`; } else { - content = `${marker}${content}`; + content = `${expandedSpan}${content}`; } text2 += content; if (node.children.length > 0) { @@ -22923,28 +25086,43 @@ var mapBranchesToText = (document2, nodes, format2) => { } }; +// src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/get-active-nodes.ts +var getActiveNodes = (view, isInSidebar) => { + const viewState = view.viewStore.getValue(); + const documentState = viewState.document; + let activeNode = ""; + if (isInSidebar) { + const activeSidebarTab = view.plugin.settings.getValue().view.leftSidebarActiveTab; + if (activeSidebarTab === "recent-cards") { + activeNode = viewState.recentNodes.activeNode; + } else if (activeSidebarTab === "pinned-cards") { + activeNode = viewState.pinnedNodes.activeNode; + } + return [activeNode]; + } else if (documentState.selectedNodes.size > 0) { + return Array.from(documentState.selectedNodes); + } else { + return [documentState.activeNode]; + } +}; + // src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-active-branches-to-clipboard.ts -var import_obsidian17 = require("obsidian"); -var copyActiveBranchesToClipboard = async (view, formatted) => { - const document2 = view.viewStore.getValue().document; - const nodes = document2.selectedNodes.size > 0 ? Array.from(document2.selectedNodes) : [document2.activeNode]; +var copyActiveBranchesToClipboard = async (view, formatted, isInSidebar) => { + const nodes = getActiveNodes(view, isInSidebar); const text2 = mapBranchesToText( view.documentStore.getValue().document, nodes, - formatted ? getDocumentFormat(view) : "unformatted-text" + formatted ? getPersistedDocumentFormat(view) : "unformatted-text" ); await navigator.clipboard.writeText(text2); - const message = lang.hk_notice_copy(nodes.length, formatted, "branch"); - if (message) - new import_obsidian17.Notice(message); }; // src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/cut-node.ts var cutNode = async (view) => { const document2 = view.viewStore.getValue().document; - await copyActiveBranchesToClipboard(view, true); + await copyActiveBranchesToClipboard(view, true, false); view.documentStore.dispatch({ - type: "DOCUMENT/CUT_NODE", + type: "document/cut-node", payload: { nodeId: document2.activeNode, selectedNodes: document2.selectedNodes @@ -22953,7 +25131,7 @@ var cutNode = async (view) => { }; // src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/paste-node.ts -var import_obsidian18 = require("obsidian"); +var import_obsidian19 = require("obsidian"); var pasteNode = async (view) => { const viewState = view.viewStore.getValue(); const clipboardItems = await navigator.clipboard.read(); @@ -22965,14 +25143,14 @@ var pasteNode = async (view) => { } } if (containsImage) { - new import_obsidian18.Notice(lang.error_cant_paste); + new import_obsidian19.Notice(lang.error_cant_paste); } else { const text2 = (await navigator.clipboard.readText()).replace( /\r\n/g, "\n" ); view.documentStore.dispatch({ - type: "DOCUMENT/PASTE_NODE", + type: "document/paste-node", payload: { targetNodeId: viewState.document.activeNode, text: text2 @@ -22982,17 +25160,9 @@ var pasteNode = async (view) => { }; // src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-active-nodes-to-clipboard.ts -var import_obsidian19 = require("obsidian"); -var copyActiveNodesToClipboard = async (view) => { - const document2 = view.viewStore.getValue().document; - const nodes = document2.selectedNodes.size > 0 ? Array.from(document2.selectedNodes) : [document2.activeNode]; - const text2 = nodes.map((id2) => view.documentStore.getValue().document.content[id2].content).join("\n\n"); - await navigator.clipboard.writeText(text2); - if (nodes.length > 1) { - const message = lang.hk_notice_copy(nodes.length, false, "section"); - if (message) - new import_obsidian19.Notice(message); - } +var copyActiveNodesToClipboard = async (view, isInSidebar) => { + const nodes = getActiveNodes(view, isInSidebar); + await copyFlatNodesToClipboard(view, nodes); }; // src/view/actions/keyboard-shortcuts/helpers/commands/commands/clipboard-commands.ts @@ -23006,7 +25176,7 @@ var clipboardCommands = () => { return; } event.preventDefault(); - copyActiveBranchesToClipboard(view, true); + copyActiveBranchesToClipboard(view, true, false); }, hotkeys: [ { key: "C", modifiers: ["Mod"], editorState: "editor-off" } @@ -23016,7 +25186,7 @@ var clipboardCommands = () => { name: "copy_node_unformatted", callback: async (view, event) => { event.preventDefault(); - copyActiveBranchesToClipboard(view, false); + copyActiveBranchesToClipboard(view, false, false); }, hotkeys: [ { @@ -23030,7 +25200,7 @@ var clipboardCommands = () => { name: "copy_node_without_subitems", callback: async (view, event) => { event.preventDefault(); - copyActiveNodesToClipboard(view); + copyActiveNodesToClipboard(view, false); }, hotkeys: [ { @@ -23071,15 +25241,31 @@ var clipboardCommands = () => { var selectionCommands = () => { const commands = []; commands.push( + { + name: "select_all_nodes", + callback: (view, e) => { + e.preventDefault(); + e.stopPropagation(); + view.viewStore.dispatch({ + type: "view/selection/select-all" + }); + }, + hotkeys: [ + { + key: "a", + modifiers: ["Mod"], + editorState: "editor-off" + } + ] + }, { name: "extend_select_up", callback: (view, event) => { event.preventDefault(); view.viewStore.dispatch({ - type: "DOCUMENT/NAVIGATE_USING_KEYBOARD", + type: "view/set-active-node/keyboard", payload: { - direction: "up", - columns: view.documentStore.getValue().document.columns + direction: "up" }, context: { shiftKey: true, @@ -23101,10 +25287,9 @@ var selectionCommands = () => { callback: (view, event) => { event.preventDefault(); view.viewStore.dispatch({ - type: "DOCUMENT/NAVIGATE_USING_KEYBOARD", + type: "view/set-active-node/keyboard", payload: { - direction: "down", - columns: view.documentStore.getValue().document.columns + direction: "down" }, context: { shiftKey: true, @@ -23127,10 +25312,9 @@ var selectionCommands = () => { e.preventDefault(); e.stopPropagation(); view.viewStore.dispatch({ - type: "DOCUMENT/JUMP_TO_NODE", + type: "view/set-active-node/keyboard-jump", payload: { - target: "end-of-column", - columns: view.documentStore.getValue().document.columns + target: "end-of-column" }, context: { shiftKey: true @@ -23147,10 +25331,9 @@ var selectionCommands = () => { e.preventDefault(); e.stopPropagation(); view.viewStore.dispatch({ - type: "DOCUMENT/JUMP_TO_NODE", + type: "view/set-active-node/keyboard-jump", payload: { - target: "start-of-column", - columns: view.documentStore.getValue().document.columns + target: "start-of-column" }, context: { shiftKey: true @@ -23171,10 +25354,9 @@ var selectionCommands = () => { e.preventDefault(); e.stopPropagation(); view.viewStore.dispatch({ - type: "DOCUMENT/JUMP_TO_NODE", + type: "view/set-active-node/keyboard-jump", payload: { - target: "end-of-group", - columns: view.documentStore.getValue().document.columns + target: "end-of-group" }, context: { shiftKey: true @@ -23195,10 +25377,9 @@ var selectionCommands = () => { e.preventDefault(); e.stopPropagation(); view.viewStore.dispatch({ - type: "DOCUMENT/JUMP_TO_NODE", + type: "view/set-active-node/keyboard-jump", payload: { - target: "start-of-group", - columns: view.documentStore.getValue().document.columns + target: "start-of-group" }, context: { shiftKey: true @@ -23314,8 +25495,10 @@ var defaultViewHotkeys = () => [ ...scrollCommands(), { name: "delete_card", - callback: (view) => { + callback: (view, e) => { const document2 = view.viewStore.getValue().document; + e.preventDefault(); + e.stopPropagation(); deleteNode(view, document2.activeNode, true); }, hotkeys: [ @@ -23327,7 +25510,7 @@ var defaultViewHotkeys = () => [ callback: (view, e) => { e.preventDefault(); e.stopPropagation(); - view.viewStore.dispatch({ type: "SEARCH/TOGGLE_INPUT" }); + view.viewStore.dispatch({ type: "view/search/toggle-input" }); }, hotkeys: [ { key: "/", modifiers: [], editorState: "editor-off" }, @@ -23339,7 +25522,7 @@ var defaultViewHotkeys = () => [ callback: (view, e) => { e.preventDefault(); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { direction: "in" } }); }, @@ -23350,7 +25533,7 @@ var defaultViewHotkeys = () => [ callback: (view, e) => { e.preventDefault(); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { direction: "out" } }); }, @@ -23361,7 +25544,7 @@ var defaultViewHotkeys = () => [ callback: (view, e) => { e.preventDefault(); view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { value: 1 } }); }, @@ -23385,8 +25568,7 @@ var defaultViewHotkeys = () => [ view.viewStore.dispatch({ type: "view/outline/toggle-collapse-node", payload: { - id: view.viewStore.getValue().document.activeNode, - columns: view.documentStore.getValue().document.columns + id: view.viewStore.getValue().document.activeNode } }); }, @@ -23399,10 +25581,7 @@ var defaultViewHotkeys = () => [ if (!get_store_value(singleColumnStore(view))) return; view.viewStore.dispatch({ - type: "view/outline/toggle-collapse-all", - payload: { - columns: view.documentStore.getValue().document.columns - } + type: "view/outline/toggle-collapse-all" }); }, hotkeys: [{ key: "=", modifiers: ["Alt", "Mod"], editorState: "both" }] @@ -23411,32 +25590,33 @@ var defaultViewHotkeys = () => [ // src/lang/hotkey-groups.ts var hotkeyGroups = { - [lang.hkg_create_cards]: /* @__PURE__ */ new Set([ + [lang.hkg_create_nodes]: /* @__PURE__ */ new Set([ "add_child", "add_below", "add_above", + "add_parent_sibling", "add_child_and_split", "add_below_and_split", "add_above_and_split" ]), - [lang.hkg_edit_cards]: /* @__PURE__ */ new Set([ + [lang.hkg_edit_nodes]: /* @__PURE__ */ new Set([ "enable_edit_mode", "enable_edit_mode_and_place_cursor_at_start", "enable_edit_mode_and_place_cursor_at_end", "disable_edit_mode", "save_changes_and_exit_card" ]), - [lang.hkg_move_cards]: /* @__PURE__ */ new Set([ + [lang.hkg_move_nodes]: /* @__PURE__ */ new Set([ "move_node_up", "move_node_down", "move_node_right", "move_node_left" ]), - [lang.hkg_merge_cards]: /* @__PURE__ */ new Set([ + [lang.hkg_merge_nodes]: /* @__PURE__ */ new Set([ "merge_with_node_above", "merge_with_node_below" ]), - [lang.hkg_delete_cards]: /* @__PURE__ */ new Set(["delete_card"]), + [lang.hkg_delete_nodes]: /* @__PURE__ */ new Set(["delete_card"]), [lang.hkg_navigation]: /* @__PURE__ */ new Set([ "go_up", "go_down", @@ -23458,7 +25638,8 @@ var hotkeyGroups = { "extend_select_to_start_of_group", "extend_select_to_end_of_group", "extend_select_to_start_of_column", - "extend_select_to_end_of_column" + "extend_select_to_end_of_column", + "select_all_nodes" ]), [lang.hkg_history]: /* @__PURE__ */ new Set(["undo_change", "redo_change"]), [lang.hkg_search]: /* @__PURE__ */ new Set(["toggle_search_input"]), @@ -23488,10 +25669,10 @@ var hotkeysGroups = Object.fromEntries( ); // src/stores/view/derived/hotkeys-store.ts -var ConflictingHotkeys = (view) => derived(view.viewStore, (state2) => state2.hotkeys.conflictingHotkeys); -var HotkeysSearchTerm = (view) => derived(view.viewStore, (state2) => state2.hotkeys.searchTerm); +var ConflictingHotkeys = (view) => derived2(view.viewStore, (state2) => state2.hotkeys.conflictingHotkeys); +var HotkeysSearchTerm = (view) => derived2(view.viewStore, (state2) => state2.hotkeys.searchTerm); -// src/helpers/group-array-by-property.ts +// src/helpers/array-helpers/group-array-by-property.ts var groupArrayByProperty = (array, property, grouped = {}) => { for (const item of array) { const key = String(item[property]); @@ -23509,8 +25690,8 @@ var groupArrayByProperty = (array, property, grouped = {}) => { }; // src/stores/settings/derived/view-hotkeys-store.ts -var CustomHotkeysStore = (plugin) => derived2(plugin.settings, (state2) => state2.hotkeys.customHotkeys); -var ViewHotkeysStore = (plugin) => derived2([CustomHotkeysStore(plugin)], ([customHotkeys]) => { +var CustomHotkeysStore = (plugin) => derived(plugin.settings, (state2) => state2.hotkeys.customHotkeys); +var ViewHotkeysStore = (plugin) => derived([CustomHotkeysStore(plugin)], ([customHotkeys]) => { const viewHotkeys2 = []; for (const defaultViewHotkey of defaultViewHotkeys()) { const customHotkey = customHotkeys[defaultViewHotkey.name]; @@ -23544,7 +25725,7 @@ var ViewHotkeysStore = (plugin) => derived2([CustomHotkeysStore(plugin)], ([cust } return viewHotkeys2; }); -var ConflictLabeledHotkeysStore = (view) => derived2( +var ConflictLabeledHotkeysStore = (view) => derived( [ViewHotkeysStore(view.plugin), ConflictingHotkeys(view)], ([hotkeys, conflicts]) => { let numberOfConflictingHotkeys = 0; @@ -23596,24 +25777,31 @@ var ConflictLabeledHotkeysStore = (view) => derived2( }; } ); -var FilteredHotkeysStore = (view) => derived2( - [ConflictLabeledHotkeysStore(view), HotkeysSearchTerm(view)], - ([hotkeys, searchTerm]) => { +var FilteredHotkeysStore = (view) => derived( + [ + ConflictLabeledHotkeysStore(view), + HotkeysSearchTerm(view), + OutlineModeStore(view) + ], + ([hotkeys, searchTerm, outlineMode]) => { let array = []; if (searchTerm) { array = hotkeys.hotkeys.filter((c) => { - const fullName = hotkeysLang[c.name].toLowerCase(); + const fullName = getDynamicLabel( + c.name, + outlineMode + ).toLowerCase(); return fullName.includes(searchTerm) || c.group.toLowerCase().includes(searchTerm); }); } else array = hotkeys.hotkeys; return { hotkeys: groupArrayByProperty(array, "group", { - [lang.hkg_create_cards]: [], - [lang.hkg_edit_cards]: [], - [lang.hkg_move_cards]: [], - [lang.hkg_merge_cards]: [], - [lang.hkg_delete_cards]: [], + [lang.hkg_create_nodes]: [], + [lang.hkg_edit_nodes]: [], + [lang.hkg_move_nodes]: [], + [lang.hkg_merge_nodes]: [], + [lang.hkg_delete_nodes]: [], [lang.hkg_clipboard]: [], [lang.hkg_navigation]: [], [lang.hkg_selection]: [], @@ -23628,17 +25816,17 @@ var FilteredHotkeysStore = (view) => derived2( } ); -// src/view/components/container/controls-bar/modals/hotkeys/hotkeys.svelte -function add_css30(target) { +// src/view/components/container/modals/hotkeys/hotkeys.svelte +function add_css35(target) { append_styles(target, "svelte-1kffelc", ".groups.svelte-1kffelc{width:500px;display:flex;flex-direction:column;gap:var(--size-4-2);overflow-y:auto;flex:1\n }@media(max-width: 720px){.groups.svelte-1kffelc{width:fit-content}}"); } -function get_each_context10(ctx, list, i) { +function get_each_context14(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[6] = list[i][0]; child_ctx[7] = list[i][1]; return child_ctx; } -function create_each_block10(key_1, ctx) { +function create_each_block14(key_1, ctx) { let first; let group_1; let current; @@ -23706,7 +25894,7 @@ function create_each_block10(key_1, ctx) { } }; } -function create_fragment88(ctx) { +function create_fragment97(ctx) { let div1; let front; let t0; @@ -23726,9 +25914,9 @@ function create_fragment88(ctx) { ctx2[6] ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context10(ctx, each_value, i); + let child_ctx = get_each_context14(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block10(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block14(key, child_ctx)); } numberofconflicts = new status_bar_default({ props: { @@ -23774,7 +25962,7 @@ function create_fragment88(ctx) { ctx2[1].hotkeys )); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block10, null, get_each_context10); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block14, null, get_each_context14); check_outros(); } const numberofconflicts_changes = {}; @@ -23814,7 +26002,7 @@ function create_fragment88(ctx) { } }; } -function instance85($$self, $$props, $$invalidate) { +function instance95($$self, $$props, $$invalidate) { let $outlineMode; let $store; const view = getView(); @@ -23836,7 +26024,7 @@ function instance85($$self, $$props, $$invalidate) { var Hotkeys = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance85, create_fragment88, safe_not_equal, {}, add_css30); + init(this, options, instance95, create_fragment97, safe_not_equal, {}, add_css35); } }; var hotkeys_default = Hotkeys; @@ -23869,33 +26057,33 @@ var handleEscapeKey = (view) => { const selection = value.document.selectedNodes; if (controls.showHelpSidebar || controls.showHistorySidebar || controls.showSettingsSidebar || controls.showStyleRulesModal) { viewStore.dispatch({ - type: "CLOSE_MODALS", + type: "view/close-modals", payload: { closeAllModals: true } }); return true; + } else if (value.document.pendingConfirmation.deleteNode.size > 0) { + viewStore.dispatch({ + type: "view/delete-node/reset-confirmation" + }); + return true; + } else if (selection.size > 0) { + viewStore.dispatch({ + type: "view/selection/clear-selection" + }); + return true; } else if (search2.query) { viewStore.dispatch({ - type: "SEARCH/SET_QUERY", + type: "view/search/set-query", payload: { query: "" } }); return true; - } else if (value.document.pendingConfirmation.deleteNode.size > 0) { - viewStore.dispatch({ - type: "view/confirmation/reset/delete-node" - }); - return true; } else if (search2.showInput) { viewStore.dispatch({ - type: "SEARCH/TOGGLE_INPUT" - }); - return true; - } else if (selection.size > 1) { - viewStore.dispatch({ - type: "DOCUMENT/CLEAR_SELECTION" + type: "view/search/toggle-input" }); return true; } @@ -23909,7 +26097,7 @@ var SilentError = class extends Error { var import_obsidian20 = require("obsidian"); // src/helpers/logger.ts -var __dev__ = true; +var __dev__ = false; var createLogger = () => { const debug = (...message) => { if (__dev__) { @@ -24006,7 +26194,7 @@ var mouseWheelZoom = (element2, view) => { return; const delta = e.deltaY; view.plugin.settings.dispatch({ - type: "UI/CHANGE_ZOOM_LEVEL", + type: "settings/view/set-zoom-level", payload: { direction: delta < 0 ? "in" : "out" } @@ -24045,10 +26233,11 @@ var LINE_HEIGHT_DPX = cpx_to_dpx(LINE_HEIGHT_CPX); var onCanvasClick = (e, view) => { const minimapStore = view.getMinimapStore(); const dom = view.getMinimapDom(); - const rect = dom.canvas.getBoundingClientRect(); + const rect = dom.canvasContainer.getBoundingClientRect(); const domY = e.clientY - rect.top; + const minimapState = minimapStore.getValue(); const y = dpx_to_cpx(domY); - const ranges = minimapStore.getValue().ranges.cards; + const ranges = minimapState.ranges.cards; const cardId = findCardAtPosition(y, ranges); if (cardId) { view.viewStore.dispatch({ @@ -24062,18 +26251,18 @@ var onCanvasClick = (e, view) => { }; // src/stores/minimap/derived/minimap-ranges.ts -var MinimapRangesStore = (view) => derived(view.getMinimapStore(), (state2) => state2.ranges.cards); +var MinimapRangesStore = (view) => derived2(view.getMinimapStore(), (state2) => state2.ranges.cards); // src/view/components/container/minimap/components/indicators.svelte -function add_css31(target) { +function add_css36(target) { append_styles(target, "svelte-1be7f7d", ".active-card-indicator.svelte-1be7f7d{left:-3px;width:180px;position:absolute;background-color:var(--color-base-70);opacity:0.3;mix-blend-mode:lighten}.search-result-indicator.svelte-1be7f7d{left:-3px;width:180px;position:absolute;background-color:var(--color-yellow);opacity:0.3}"); } -function get_each_context11(ctx, list, i) { +function get_each_context15(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[8] = list[i]; return child_ctx; } -function create_each_block11(ctx) { +function create_each_block15(ctx) { let div; let div_style_value; return { @@ -24102,7 +26291,7 @@ function create_each_block11(ctx) { } }; } -function create_fragment89(ctx) { +function create_fragment98(ctx) { let div1; let div0; let div0_style_value; @@ -24113,7 +26302,7 @@ function create_fragment89(ctx) { ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block11(get_each_context11(ctx, each_value, i)); + each_blocks[i] = create_each_block15(get_each_context15(ctx, each_value, i)); } return { c() { @@ -24154,11 +26343,11 @@ function create_fragment89(ctx) { ); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context11(ctx2, each_value, i); + const child_ctx = get_each_context15(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); } else { - each_blocks[i] = create_each_block11(child_ctx); + each_blocks[i] = create_each_block15(child_ctx); each_blocks[i].c(); each_blocks[i].m(div1, null); } @@ -24179,14 +26368,14 @@ function create_fragment89(ctx) { } }; } -function instance86($$self, $$props, $$invalidate) { +function instance96($$self, $$props, $$invalidate) { let $activeCardRange; let $searchResultsRanges; const view = getView(); const activeCard = activeNodeStore(view); const searchResults = searchStore(view); const ranges = MinimapRangesStore(view); - const activeCardRange = derived2([activeCard, ranges], ([activeCard2, ranges2]) => { + const activeCardRange = derived([activeCard, ranges], ([activeCard2, ranges2]) => { if (activeCard2) { const range = ranges2 === null || ranges2 === void 0 ? void 0 : ranges2[activeCard2]; if (range) { @@ -24201,9 +26390,9 @@ function instance86($$self, $$props, $$invalidate) { return { y_start: 0, height: 0 }; }); component_subscribe($$self, activeCardRange, (value) => $$invalidate(0, $activeCardRange = value)); - const searchResultsRanges = derived2([searchResults, ranges], ([searchResults2, ranges2]) => { + const searchResultsRanges = derived([searchResults, ranges], ([searchResults2, ranges2]) => { if (searchResults2) { - const searchResultsRanges2 = Array.from(searchResults2.results).map((searchResult) => { + const searchResultsRanges2 = Array.from(searchResults2.results.keys()).map((searchResult) => { const range = ranges2 === null || ranges2 === void 0 ? void 0 : ranges2[searchResult]; if (range) { const y_start = cpx_to_dpx(range.y_start); @@ -24224,7 +26413,7 @@ function instance86($$self, $$props, $$invalidate) { var Indicators = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance86, create_fragment89, safe_not_equal, {}, add_css31); + init(this, options, instance96, create_fragment98, safe_not_equal, {}, add_css36); } }; var indicators_default = Indicators; @@ -24232,23 +26421,10 @@ var indicators_default = Indicators; // src/view/components/container/minimap/event-handlers/on-canvas-wheel.ts var onCanvasWheel = (e, view) => { e.preventDefault(); - const minimapStore = view.getMinimapStore(); - const state2 = minimapStore.getValue().scrollInfo; - const dom = view.getMinimapDom(); - const minimapContainer = dom.canvasContainer.parentElement; - invariant(minimapContainer); - const scrollAmount_cpx = dpx_to_cpx(e.deltaY); - const containerHeight_cpx = dpx_to_cpx(minimapContainer.clientHeight); - minimapStore.dispatch({ - type: "minimap/set-scroll-position", + view.getMinimapStore().dispatch({ + type: "minimap/mouse-wheel-scroll", payload: { - position_cpx: Math.max( - 0, - Math.min( - state2.totalDrawnHeight_cpx - containerHeight_cpx, - state2.scrollPosition_cpx + scrollAmount_cpx - ) - ) + delta_y_dpx: e.deltaY } }); }; @@ -24288,18 +26464,23 @@ var createOnCanvasMousemove = (view) => { // src/lib/store/store.ts var NO_UPDATE = Symbol("NO_UPDATE"); var Store = class { - constructor(initialValue, reducer, onError) { + constructor(initialValue, reducer, onError, context) { this.subscribers = /* @__PURE__ */ new Set(); this.isProcessing = false; this.actionQueue = []; this.reducer = () => this.value; // eslint-disable-next-line no-console this.onError = (error) => console.error(error); + this.setContext = (context) => { + this.context = context; + }; this.value = initialValue; if (reducer) this.reducer = reducer; if (onError) this.onError = onError; + if (context) + this.context = context; } getValue() { return this.value; @@ -24334,7 +26515,11 @@ var Store = class { while (this.actionQueue.length > 0) { const action = this.actionQueue.shift(); try { - const newValue = this.reducer(this.value, action); + const newValue = this.reducer( + this.value, + action, + this.context + ); if (newValue !== NO_UPDATE) { this.value = newValue; this.notifySubscribers(action); @@ -24360,24 +26545,96 @@ var Store = class { var defaultMinimapState = () => ({ canvasId: id.canvas(), activeCardId: "", - scrollInfo: { + scrollbar: { totalDrawnHeight_cpx: 0, - scrollPosition_cpx: 0 + scrollPosition_cpx: 0, + containerHeight_cpx: 0 }, ranges: { cards: {} } }); +// src/stores/minimap/reducers/update-scroll-position.ts +var updateScrollPosition = (state2, delta_y_dpx) => { + const delta_y_cpx = dpx_to_cpx(delta_y_dpx); + if (state2.scrollbar.containerHeight_cpx === 0) + return; + state2.scrollbar.scrollPosition_cpx = Math.max( + 0, + Math.min( + state2.scrollbar.totalDrawnHeight_cpx - state2.scrollbar.containerHeight_cpx, + state2.scrollbar.scrollPosition_cpx + delta_y_cpx + ) + ); +}; + +// src/stores/minimap/subscriptions/actions/set-scrollbar-position/calculate-scroll-delta-to-active-card.ts +var calculateScrollDeltaToActiveCard = (y_start_cpx, y_end_cpx, totalDrawnHeight_cpx, scrollPosition_cpx, containerHeight_cpx) => { + const contentFitsContainer = totalDrawnHeight_cpx <= containerHeight_cpx; + if (contentFitsContainer) { + return null; + } + const currentScroll_cpx = scrollPosition_cpx; + const visibleStart_cpx = currentScroll_cpx; + const visibleEnd_cpx = currentScroll_cpx + containerHeight_cpx; + const startIsVisible = y_start_cpx > visibleStart_cpx && y_start_cpx < visibleEnd_cpx; + const endIsVisible = y_end_cpx > visibleStart_cpx && y_end_cpx < visibleEnd_cpx; + if (startIsVisible && endIsVisible) { + return null; + } + let newScroll_cpx = 0; + const range_height_cpx = y_end_cpx - y_start_cpx; + const rangeIsTallerThanContainer = range_height_cpx > containerHeight_cpx; + if (rangeIsTallerThanContainer) { + newScroll_cpx = y_start_cpx; + } else { + if (!startIsVisible) { + newScroll_cpx = y_start_cpx - 10; + } else if (!endIsVisible) { + newScroll_cpx = y_end_cpx - containerHeight_cpx + 10; + } + } + const maxScroll_cpx = totalDrawnHeight_cpx - containerHeight_cpx; + newScroll_cpx = Math.max(0, Math.min(newScroll_cpx, maxScroll_cpx)); + return newScroll_cpx; +}; + +// src/stores/minimap/reducers/derive-scroll-position.ts +var deriveScrollPosition = (state2) => { + const activeCardRange = state2.ranges.cards[state2.activeCardId]; + if (!activeCardRange) + return; + const delta_cpx = calculateScrollDeltaToActiveCard( + activeCardRange.y_start, + activeCardRange.y_end, + state2.scrollbar.totalDrawnHeight_cpx, + state2.scrollbar.scrollPosition_cpx, + state2.scrollbar.containerHeight_cpx + ); + if (typeof delta_cpx === "number") { + state2.scrollbar.scrollPosition_cpx = delta_cpx; + } +}; + // src/stores/minimap/minimap-reducer.ts var updateDocumentState = (state2, action) => { if (action.type === "minimap/set-card-ranges") { state2.ranges.cards = action.payload.ranges; - state2.scrollInfo.totalDrawnHeight_cpx = action.payload.height_cpx; + const newDocumentHeight = state2.scrollbar.totalDrawnHeight_cpx !== action.payload.height_cpx; + if (newDocumentHeight) { + state2.scrollbar.scrollPosition_cpx = 0; + } + state2.scrollbar.totalDrawnHeight_cpx = action.payload.height_cpx; + deriveScrollPosition(state2); } else if (action.type === "minimap/set-active-node") { state2.activeCardId = action.payload.id; - } else if (action.type === "minimap/set-scroll-position") { - state2.scrollInfo.scrollPosition_cpx = action.payload.position_cpx; + deriveScrollPosition(state2); + } else if (action.type === "minimap/set-container-height") { + state2.scrollbar.containerHeight_cpx = action.payload.height_cpx; + deriveScrollPosition(state2); + } else if (action.type === "minimap/mouse-wheel-scroll") { + updateScrollPosition(state2, action.payload.delta_y_dpx); } }; var minimapReducer = (store, action) => { @@ -24434,7 +26691,7 @@ var themes = { // brighter red ["heading" /* heading */]: "#44cf6e77", // brighter green - ["bullet" /* bullet */]: "#fa99cd66", + ["bullet" /* bullet */]: "#E3BFD466", // brighter pink ["tag" /* tag */]: "#e9973f77", // brighter orange @@ -24463,7 +26720,7 @@ var themes = { // brighter red ["heading" /* heading */]: "#08b94e77", // brighter green - ["bullet" /* bullet */]: "#d5398477", + ["bullet" /* bullet */]: "#E77EB277", // brighter pink ["tag" /* tag */]: "#ec750077", // brighter orange @@ -24485,16 +26742,32 @@ var refreshMinimapTheme = () => { minimapTheme.current = themes[getTheme()]; }; -// src/helpers/debounce.ts -var debounce2 = (func2, delay2) => { - let timeoutId = null; - return (...args) => { - if (timeoutId) - clearTimeout(timeoutId); - timeoutId = setTimeout(() => { - func2(...args); - }, delay2); +// src/stores/minimap/subscriptions/effects/set-minimap-dom.ts +var setMinimapDom = (view) => { + const minimapContainer = view.contentEl.querySelector( + ".minimap-container" + ); + if (!minimapContainer) + throw new SilentError("minimapContainer is undefined"); + const canvasContainer = minimapContainer.querySelector( + ".canvas-container" + ); + invariant(canvasContainer); + const scrollIndicator = minimapContainer.querySelector( + "#scrollIndicator" + ); + const canvas = minimapContainer.querySelector("canvas"); + invariant(scrollIndicator); + invariant(canvas); + canvas.width = CANVAS_WIDTH_CPX; + const offscreen = canvas.transferControlToOffscreen(); + const dom = { + offscreen, + canvas, + scrollIndicator, + canvasContainer }; + view.setMinimapDom(dom); }; // inline-worker:__inline-worker @@ -24508,12 +26781,12 @@ function inlineWorker(scriptText) { // src/stores/minimap/subscriptions/effects/minimap-canvas/worker/minimap-renderer.worker.ts function Worker2() { - return inlineWorker('var C=class{constructor(){this.caches={};this.getCachedResult=(t,i,r,s)=>{let c=this.caches[t];if(!c)return;let o=c.get(i);if(o){if(o.availableLineCharacters===s&&o.content===r)return o.result;c.delete(i)}};this.cacheResult=(t,i,r,s,c)=>{this.caches[t]||(this.caches[t]=new Map),this.caches[t].set(i,{availableLineCharacters:s,content:r,result:c})};this.deleteCanvasCache=t=>{delete this.caches[t]}}},d=new C;var A={"#":"heading","-":"bullet",".":"period","=":"highlight","*":"bold_italic",_:"bold_italic","[":"wikilink","]":"wikilink","~":"strikethrough",",":"comma"},X=/\\b(dr|mr|mrs|ms|e\\.g|e\\.i|sr|jr|st|ave|rd|no|vs|etc|vol|ed|pp)\\b/i,W=new Set(["^",".","!","`","*","%","?",\'"\',"~","@","\'","(",")","!","{","}","[","]","^","%","$","+","=","\\\\"]),v=(n,t,i,r)=>{let s=d.getCachedResult(r,i,n,t);if(s)return s;let c=!n.trim();c&&(n="empty");let o=[],e={chunk:{chunk:"",length_chars:-1,line:0,type:null,x_chars:0},x:0,line:0,type:null,previousType:null,previousLine:0,category:null,isSpace:!1,isAfterOpeningElement:!1,lineType:null};for(let a=0;at?(e.line++,e.x=0,e.lineType=null):!e.type&&e.lineType&&(e.type=e.lineType),e.line!==e.previousLine?(e.chunk.length_chars=e.chunk.chunk.length,e.chunk.length_chars>0&&o.push(e.chunk),e.chunk={chunk:l,line:e.line,x_chars:0,length_chars:-1,type:e.type},e.previousLine=e.line):e.isSpace?(e.chunk.length_chars=e.chunk.chunk.length,e.chunk.length_chars>0&&o.push(e.chunk),e.chunk={chunk:"",line:e.line,x_chars:e.x+1,length_chars:-1,type:e.type},e.isSpace=!1,e.category=null):e.type!==e.previousType||e.category==="single_character"?(e.chunk.length_chars=e.chunk.chunk.length,e.chunk.length_chars>0&&o.push(e.chunk),e.chunk={chunk:l,line:e.line,x_chars:e.x,length_chars:-1,type:e.type},e.category==="single_character"&&(e.type=null)):e.chunk.chunk+=l,e.x++,e.previousType=e.type}e.chunk.length_chars=e.chunk.chunk.length,e.chunk.length_chars>0&&o.push(e.chunk);let u={chunks:o,totalLines:e.line+1,empty:c};return d.cacheResult(r,i,n,t,u),u};var I=58.666666666666664,b=2;var T=6,B=6,m=T+B;var G=1,w=(n,t,i)=>{var u;let r=I-t.depth*b,s=v(n.content,r,n.id,i),c={indentationLines:[],lineNumber:t.nextLineOffset,wordBlocks:[],depth:t.depth,nodeId:n.id,y_px:10*t.nextLineOffset};t.lines.push(c);let o=((u=s.chunks[0])==null?void 0:u.line)||0;for(let a of s.chunks){let l=t.nextLineOffset+a.line;a.line>o&&(c={indentationLines:[],lineNumber:l,wordBlocks:[],depth:t.depth,nodeId:n.id,y_px:10*l},t.lines.push(c),o=a.line),c.wordBlocks.push({width_px:a.length_chars*6,x_px:t.depth*m+a.x_chars*6,empty:s.empty,chunkType:a.type})}t.nextLineOffset=t.nextLineOffset+s.totalLines+1;let e=t.depth;t.depth=e+1;for(let a of n.children)w(a,t,i);t.depth=e},R=(n,t)=>{let i={nextLineOffset:G,depth:0,lines:[]};for(let r of n)w(r,i,t);return{lines:i.lines,totalLines:i.nextLineOffset+1}};var E=n=>{for(let t=0;t({id:n,content:t.trim(),children:[]}),D=(n,t)=>{var s;let i={};for(let c of n)for(let o of c.groups)for(let e of o.nodes){let u=P(e,(s=t[e])==null?void 0:s.content),a=i[o.parentId];a||(a=P(o.parentId),i[o.parentId]=a),a.children.push(u),i[e]=u}let r=[];if(n[0])for(let c of n[0].groups)for(let o of c.nodes){let e=i[o];if(e)r.push(e);else throw new Error(`could not find node ${o}`)}return r};var H=n=>{let t={};for(let i of n){let r=i.y_px,s=i.y_px+10;t[i.nodeId]?t[i.nodeId]={y_start:Math.min(r,t[i.nodeId].y_start),y_end:Math.max(s,t[i.nodeId].y_end),cardId:i.nodeId}:t[i.nodeId]={y_start:r,y_end:s,cardId:i.nodeId}}return t};var g=class{constructor(){this.lines=[];this.totalLines=0;this.cardRanges={}}calculateDocument(t,i){let r=D(t.columns,t.content),s=R(r,i);return this.lines=s.lines,this.totalLines=s.totalLines,E(s.lines),this.cardRanges=H(this.lines),{totalLines:this.totalLines,totalDrawnHeight_cpx:this.totalLines*10,cardRanges:this.cardRanges}}getLines(){return this.lines}getTotalLines(){return this.totalLines}getCardRange(t){return this.cardRanges[t]}getCardRanges(){return this.cardRanges}};var K=6,M=(n,t,i)=>{let r="",s="";for(let c=0;c<=t.length-1;c++){let o=t[c];for(let e of o.wordBlocks)e.empty||(s=e.chunkType?i.chars[e.chunkType]:i.wordBlock,s!==r&&(r=s,n.fillStyle=s),n.fillRect(e.x_px,o.y_px,e.width_px,K));r="",n.fillStyle=i.indentLine;for(let e of o.indentationLines)n.fillRect(e.x_px,o.y_px,T,e.height_px)}};var f=class{constructor(t,i,r){this.drawDocument=t=>{let i=this.shapes.getTotalLines()*10;this.canvas.height=i,M(this.ctx,this.shapes.getLines(),t)};this.ctx=t,this.canvas=i,this.shapes=r}};var F={dark:{isLightTheme:!1,card_active:"#a9a9a9a",card_searchResult:"#e0de7177",wordBlock:"#99999966",indentLine:"#ffffff55",chars:{highlight:"#e0de7177",wikilink:"#027aff77",bold_italic:"#fb464c66",heading:"#44cf6e77",bullet:"#fa99cd66",tag:"#e9973f77",period:"#ffffff88",strikethrough:"#a882ff66",task:"#17e7e077",comma:"#17e7e088"}},light:{isLightTheme:!0,wordBlock:"#70707088",card_active:"#aaaaaa",card_searchResult:"#e0ac0077",indentLine:"#777777aa",chars:{highlight:"#e0ac0077",wikilink:"#086ddd77",bold_italic:"#e9314777",heading:"#08b94e77",bullet:"#d5398477",tag:"#ec750077",period:"#777777ee",strikethrough:"#7852ee77",task:"#17e7e077",comma:"#11b3b3"}}},O={current:F.dark};var _=class{constructor(t,i,r){this.state={theme:O.current};this.setTheme=t=>{this.state.theme=t};this.setDocument=(t,i)=>{let r=this.shapes.calculateDocument(t,i);return this.renderer.drawDocument(this.state.theme),{totalDrawnHeight_cpx:r.totalDrawnHeight_cpx,cardRanges:r.cardRanges}};this.shapes=new g,this.renderer=new f(t,i,this.shapes),this.state.theme=r}};var L={canvases:{}};self.onmessage=n=>{let t=n.data.payload,i=null;if(t.type==="worker/initialize"){let r=t.payload.canvas.getContext("2d");r&&(L.canvases[t.payload.canvasId]={minimap:new _(r,t.payload.canvas,t.payload.theme)})}else if(t.type==="worker/destroy")delete L.canvases[t.payload.canvasId],d.deleteCanvasCache(t.payload.canvasId);else{let r=L.canvases[t.payload.canvasId];if(!r)throw new Error("no canvas context");t.type==="minimap/update-theme"?r.minimap.setTheme(t.payload.theme):t.type==="minimap/set/document"&&(i=r.minimap.setDocument(t.payload.document,t.payload.canvasId))}self.postMessage({id:n.data.id,payload:i})};\n'); + return inlineWorker('var K=(a,t,n)=>{if(!t.has(a))throw TypeError("Cannot "+n)};var h=(a,t,n)=>(K(a,t,"read from private field"),n?n.call(a):t.get(a)),x=(a,t,n)=>{if(t.has(a))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(a):t.set(a,n)},N=(a,t,n,i)=>(K(a,t,"write to private field"),i?i.call(a,n):t.set(a,n),n);var w=class{constructor(){this.caches={};this.getCachedResult=(t,n,i,s)=>{let l=this.caches[t];if(!l)return;let r=l.get(n);if(r){if(r.availableLineCharacters===s&&r.content===i)return r.result;l.delete(n)}};this.cacheResult=(t,n,i,s,l)=>{this.caches[t]||(this.caches[t]=new Map),this.caches[t].set(n,{availableLineCharacters:s,content:i,result:l})};this.deleteCanvasCache=t=>{delete this.caches[t]}}},k=new w;var se={"#":"heading","-":"bullet",".":"period","=":"highlight","*":"bold_italic",_:"bold_italic","[":"wikilink","]":"wikilink","~":"strikethrough",",":"comma"},re=/\\b(dr|mr|mrs|ms|e\\.g|e\\.i|sr|jr|st|ave|rd|no|vs|etc|vol|ed|pp)\\b/i,le=new Set(["^",".","!","`","*","%","?",\'"\',"~","@","\'","(",")","!","{","}","[","]","^","%","$","+","=","\\\\"]),F=(a,t,n,i)=>{var o,C,B,O,X,W;let s=k.getCachedResult(i,n,a,t);if(s)return s;let l=!a.trim();l&&(a="empty");let r=[],e={element:{chunk:"",length_chars:-1,line:0,type:null,x_chars:0},elementMeta:null,parentElementMeta:null,closingTagLength:0,x:0,lineNumber:0};for(let c=0;ct?(e.lineNumber++,e.x=0):e.closingTagLength===0&&!e.elementMeta&&e.parentElementMeta&&(e.elementMeta=e.parentElementMeta,e.parentElementMeta=null),e.lineNumber!==e.element.line?(e.element.length_chars=e.element.chunk.length,e.element.length_chars>0&&r.push(e.element),e.element={chunk:m,line:e.lineNumber,x_chars:0,length_chars:-1,type:e.elementMeta?e.elementMeta.elementName:null}):m===" "&&(!e.elementMeta||(X=e.elementMeta)!=null&&X.noSpaces)?(e.element.length_chars=e.element.chunk.length,e.element.length_chars>0&&r.push(e.element),e.element={chunk:"",line:e.lineNumber,x_chars:e.x+1,length_chars:-1,type:null},e.elementMeta=null):((W=e.elementMeta)==null?void 0:W.scope)==="character"?(e.element.length_chars=e.element.chunk.length,e.element.length_chars>0&&r.push(e.element),r.push({chunk:m,line:e.lineNumber,x_chars:e.x,length_chars:1,type:e.elementMeta.elementName}),e.elementMeta=null,e.element={chunk:"",line:e.lineNumber,x_chars:e.x+1,length_chars:-1,type:null}):e.elementMeta&&e.elementMeta.elementName!==e.element.type?(e.element.length_chars=e.element.chunk.length,e.element.length_chars>0&&r.push(e.element),e.element={chunk:m,line:e.lineNumber,x_chars:e.x,length_chars:-1,type:e.elementMeta.elementName}):e.element.chunk+=m,e.closingTagLength>0&&(e.closingTagLength--,e.closingTagLength===0&&(e.parentElementMeta?(e.elementMeta=e.parentElementMeta,e.parentElementMeta=null):e.elementMeta=null)),e.x++}e.element.length_chars=e.element.chunk.length,e.element.length_chars>0&&r.push(e.element);let p={chunks:r,totalLines:e.lineNumber+1,empty:l};return k.cacheResult(i,n,a,t,p),p};var Y=58.666666666666664,z=2;var D=6,oe=6,L=D+oe,S=3100;var me=1,$=(a,t,n)=>{var p;let i=Y-t.depth*z,s=F(a.content,i,a.id,n),l={indentationLines:[],lineNumber:t.nextLineOffset,wordBlocks:[],depth:t.depth,nodeId:a.id,y_px:10*t.nextLineOffset};t.lines.push(l);let r=((p=s.chunks[0])==null?void 0:p.line)||0;for(let o of s.chunks){let C=t.nextLineOffset+o.line;o.line>r&&(l={indentationLines:[],lineNumber:C,wordBlocks:[],depth:t.depth,nodeId:a.id,y_px:10*C},t.lines.push(l),r=o.line),l.wordBlocks.push({width_px:o.length_chars*6,x_px:t.depth*L+o.x_chars*6,empty:s.empty,chunkType:o.type})}t.nextLineOffset=t.nextLineOffset+s.totalLines+1;let e=t.depth;t.depth=e+1;for(let o of a.children)$(o,t,n);t.depth=e},j=(a,t)=>{let n={nextLineOffset:me,depth:0,lines:[]};for(let i of a)$(i,n,t);return{lines:n.lines,totalLines:n.nextLineOffset+1}};var Z=a=>{for(let t=0;t({id:a,content:t.trim(),children:[]}),Q=(a,t)=>{var s;let n={};for(let l of a)for(let r of l.groups)for(let e of r.nodes){let p=q(e,(s=t[e])==null?void 0:s.content),o=n[r.parentId];o||(o=q(r.parentId),n[r.parentId]=o),o.children.push(p),n[e]=p}let i=[];if(a[0])for(let l of a[0].groups)for(let r of l.nodes){let e=n[r];if(e)i.push(e);else throw new Error(`could not find node ${r}`)}return i};var U=a=>{let t={};for(let n of a){let i=n.y_px,s=n.y_px+10;t[n.nodeId]?t[n.nodeId]={y_start:Math.min(i,t[n.nodeId].y_start),y_end:Math.max(s,t[n.nodeId].y_end),cardId:n.nodeId}:t[n.nodeId]={y_start:i,y_end:s,cardId:n.nodeId}}return t};var M,T,b,y,v=class{constructor(){x(this,M,[]);x(this,T,!0);x(this,b,0);x(this,y,{})}calculateDocument(t,n){let i=Q(t.columns,t.content),s=j(i,n);return N(this,M,s.lines),N(this,b,s.totalLines),Z(s.lines),N(this,T,s.lines.length===0||s.lines.every(l=>l.wordBlocks.length===1&&l.wordBlocks[0].empty)),N(this,y,U(h(this,M))),{totalLines:h(this,b),totalDrawnHeight_cpx:h(this,b)*10,cardRanges:h(this,y)}}get lines(){return h(this,M)}get isEmpty(){return h(this,T)}};M=new WeakMap,T=new WeakMap,b=new WeakMap,y=new WeakMap;var ce=6,ee=(a,t,n,i)=>{let s="",l="";for(let r=0;r<=t.length-1;r++){let e=t[r],p=e.y_px;if(!(pi.end_cpx)break;i.start_cpx>0&&(p=p-i.start_cpx);for(let o of e.wordBlocks)o.empty||(l=o.chunkType?n.chars[o.chunkType]:n.wordBlock,l!==s&&(s=l,a.fillStyle=l),a.fillRect(o.x_px,p,o.width_px,ce));s="",a.fillStyle=n.indentLine;for(let o of e.indentationLines)a.fillRect(o.x_px,p,D,o.height_px)}}};var I=class{constructor(t,n,i){this.drawDocument=(t,n)=>{this.canvas.height=n.end_cpx-n.start_cpx,this.shapes.isEmpty?this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height):ee(this.ctx,this.shapes.lines,t,n)};this.ctx=t,this.canvas=n,this.shapes=i}};var pe={dark:{isLightTheme:!1,card_active:"#a9a9a9a",card_searchResult:"#e0de7177",wordBlock:"#99999966",indentLine:"#ffffff55",chars:{highlight:"#e0de7177",wikilink:"#027aff77",bold_italic:"#fb464c66",heading:"#44cf6e77",bullet:"#E3BFD466",tag:"#e9973f77",period:"#ffffff88",strikethrough:"#a882ff66",task:"#17e7e077",comma:"#17e7e088"}},light:{isLightTheme:!0,wordBlock:"#70707088",card_active:"#aaaaaa",card_searchResult:"#e0ac0077",indentLine:"#777777aa",chars:{highlight:"#e0ac0077",wikilink:"#086ddd77",bold_italic:"#e9314777",heading:"#08b94e77",bullet:"#E77EB277",tag:"#ec750077",period:"#777777ee",strikethrough:"#7852ee77",task:"#17e7e077",comma:"#11b3b3"}}},te={current:pe.dark};var E,R=class{constructor(t){x(this,E,void 0);this.canvas_height_cpx=t,this.calculateRenderedRange(0)}updateScrollPosition(t){let n=t,i=t+this.canvas_height_cpx;return nh(this,E).end_cpx?(this.calculateRenderedRange(t),!0):!1}calculateRenderedRange(t){let n=Math.max(0,t-S),i=t+this.canvas_height_cpx+S;N(this,E,{start_cpx:n,end_cpx:i})}get visibleRange(){return h(this,E)}};E=new WeakMap;var P=class{constructor(t,n,i,s){this.state={theme:te.current};this.setTheme=t=>{this.state.theme=t};this.setDocument=(t,n)=>{let i=this.shapes.calculateDocument(t,n);return this.renderer.drawDocument(this.state.theme,this.range.visibleRange),{totalDrawnHeight_cpx:i.totalDrawnHeight_cpx,cardRanges:i.cardRanges}};this.drawDocument=()=>{this.renderer.drawDocument(this.state.theme,this.range.visibleRange)};this.setScrollPosition=t=>this.range.updateScrollPosition(t)?this.range.visibleRange:null;this.shapes=new v,this.renderer=new I(t,n,this.shapes),this.range=new R(s),this.state.theme=i}};var A={canvases:{}};self.onmessage=a=>{let t=a.data.payload,n=null;if(t.type==="worker/initialize"){let i=t.payload.canvas.getContext("2d");i&&(A.canvases[t.payload.canvasId]={minimap:new P(i,t.payload.canvas,t.payload.theme,t.payload.canvas_height_cpx)})}else if(t.type==="worker/destroy")delete A.canvases[t.payload.canvasId],k.deleteCanvasCache(t.payload.canvasId);else{let i=A.canvases[t.payload.canvasId];if(!i)throw new Error("no canvas context");t.type==="minimap/update-theme"?i.minimap.setTheme(t.payload.theme):t.type==="minimap/set/document"?n=i.minimap.setDocument(t.payload.document,t.payload.canvasId):t.type==="minimap/set/scroll-position"?n=i.minimap.setScrollPosition(t.payload.scroll_position_cpx):t.type==="minimap/draw-document"&&i.minimap.drawDocument()}self.postMessage({id:a.data.id,payload:n})};\n'); } // src/stores/view/subscriptions/effects/style-rules/workers/style-rules.worker.ts function Worker3() { - return inlineWorker('var C=(r,u)=>{for(let e of r)for(let t of e.groups)if(t.parentId===u)return t};var y=(r,u)=>{var e,t;return(t=(e=C(r,u))==null?void 0:e.nodes.length)!=null?t:0};var g=r=>r.split(`\n`).filter(u=>u.trim().length>0).length;var N=/(?:[0-9]+(?:(?:,|.)[0-9]+)*|[-\'\u2019A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\u0B80-\u0BFF\uAC00-\uD7A3\uA960-\uA97C\uD7B0-\uD7C6])+|[\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u4E00-\\u9FD5\\uAC00-\\uD7A3\\uA960-\\uA97C\\uD7B0-\\uD7C6]/g,f=r=>{N.lastIndex=0;let u=r.match(N);return u?u.length:0};var I=/(?:[0-9]+(?:(?:,|.)[0-9]+)*|[-\'\u2019A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\u0B80-\u0BFF\uAC00-\uD7A3\uA960-\uA97C\uD7B0-\uD7C6])+|[\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u4E00-\\u9FD5\\uAC00-\\uD7A3\\uA960-\\uA97C\\uD7B0-\\uD7C6]/g,S=r=>r.length-r.replace(/--/g,"##").replace(I,"").length;var l=(r,u)=>{for(let e=0;en===u))return e}return-1};var D=(r,u)=>{let e=l(r,u),t=new Set([u]);for(let o=e+1;oD(r,u).length;var O=r=>{var e;return((e=r.match(/^#{1,6} .*/gm))!=null?e:[]).map(t=>t.replace(/^#{1,6} /,""))};var E=new Set(["HISTORY/APPLY_NEXT_SNAPSHOT","HISTORY/APPLY_PREVIOUS_SNAPSHOT","HISTORY/SELECT_SNAPSHOT","DOCUMENT/LOAD_FILE","RESET_STORE","DOCUMENT/MERGE_NODE","DOCUMENT/SPLIT_NODE","DOCUMENT/DELETE_NODE","DOCUMENT/EXTRACT_BRANCH","DOCUMENT/CUT_NODE"]);var p=new Set(["DOCUMENT/DROP_NODE","DOCUMENT/MOVE_NODE","DOCUMENT/INSERT_NODE","DOCUMENT/PASTE_NODE"]);var R=()=>({headings:{},content:{},"line-count":{},"character-count":{},"word-count":{},"headings-word-count":{},"direct-children-count":{},"total-children-count":{},depth:{}}),B=class{constructor(u,e){this.isEmpty=!0;this.resetCache=(u,e,t)=>{this.columns=e,this.content=t,!this.isEmpty&&(E.has(u.type)?(this.cache=R(),this.isEmpty=!0):p.has(u.type)?(this.cache.depth={},this.cache["direct-children-count"]={},this.cache["total-children-count"]={}):u.type==="DOCUMENT/SET_NODE_CONTENT"?(delete this.cache.headings[u.payload.nodeId],delete this.cache.content[u.payload.nodeId],delete this.cache["line-count"][u.payload.nodeId],delete this.cache["character-count"][u.payload.nodeId],delete this.cache["word-count"][u.payload.nodeId],delete this.cache["headings-word-count"][u.payload.nodeId]):u.type==="DOCUMENT/FORMAT_HEADINGS"&&(this.cache.headings={},this.cache.content={},this.cache["line-count"]={},this.cache["character-count"]={},this.cache["word-count"]={},this.cache["headings-word-count"]={}))};this.columns=u,this.content=e,this.cache=R()}cacheResult(u,e,t){this.isEmpty&&(this.isEmpty=!1),this.cache[e][u]=t}getProperty(u,e){var o,n,A,s;if(this.cache[e][u]!==void 0)return this.cache[e][u];let t;switch(e){case"direct-children-count":t=y(this.columns,u);break;case"total-children-count":t=T(this.columns,u);break;case"line-count":t=g((o=this.content[u])==null?void 0:o.content);break;case"word-count":t=f((n=this.content[u])==null?void 0:n.content);break;case"character-count":t=S((A=this.content[u])==null?void 0:A.content);break;case"depth":t=l(this.columns,u)+1;break;case"headings":t=O((s=this.content[u])==null?void 0:s.content).join(" ").toLowerCase();break;case"headings-word-count":t=f(this.getProperty(u,"headings"));break;default:throw new Error(`Unsupported property: ${e}`)}return this.cacheResult(u,e,t),t}};var v=(r,u)=>{for(let e of r)for(let t of e.groups)for(let o of t.nodes)if(o===u)return t};var w=(r,u)=>{for(let e=0;e{let e=[],t=w(r,u);if(!t)return e;let o=t[1],n=t[0];for(let A=n-1;A>=0&&o;A--){e.push(o);let s;for(let c of r[A].groups){for(let i of c.nodes)if(i===o){s=c.parentId;break}if(s)break}o=s}return e};var P=()=>({self:{},"direct-parent":{},"any-parent":{},"direct-children":{},"any-children":{}}),m=class{constructor(u){this.isEmpty=!0;this.resetCache=(u,e)=>{this.columns=e,!this.isEmpty&&(E.has(u.type)||p.has(u.type))&&(this.cache=P(),this.isEmpty=!0)};this.columns=u,this.cache=P()}cacheResult(u,e,t){this.isEmpty&&(this.isEmpty=!1),this.cache[e][u]=t}getTargetNodes(u,e){var o;if(this.cache[u][e]!==void 0)return this.cache[u][e];let t;switch(u){case"self":t=[e];break;case"direct-parent":{let n=v(this.columns,e);t=n?[n.parentId]:[];break}case"any-parent":t=b(this.columns,e);break;case"direct-children":{let n=C(this.columns,e);t=(o=n==null?void 0:n.nodes)!=null?o:[];break}case"any-children":t=D(this.columns,e);break;default:t=[]}return this.cacheResult(e,u,t),t}};var x=new Set(["equals","not-equals","empty","not-empty"]);var _=(r,u,e)=>{switch(u){case"equals":return r===e;case"not-equals":return r!==e;case"empty":return!r;case"not-empty":return!!r;case"contains":return r.includes(e);case"not-contains":return!r.includes(e);case"starts-with":return r.startsWith(e);case"not-starts-with":return!r.startsWith(e);case"ends-with":return r.endsWith(e);case"not-ends-with":return!r.endsWith(e);case"matches-regex":return new RegExp(e).test(r);case"not-matches-regex":return!new RegExp(e).test(r);default:return!1}};var M=(r,u,e,t)=>{switch(u){case"equals":return r===e;case"not-equals":return r!==e;case"empty":return r===0;case"not-empty":return r!==0;case"greater-than":return r>e;case"less-than":return r=e&&r<=t;case"not-between":return t!==void 0&&(rt);default:return!1}};var U=(r,u,e,t,o)=>{var A,s;if(!u.enabled)return!1;let n=t.getTargetNodes(u.scope,r);for(let c of n){let i=(s=(A=e[c])==null?void 0:A.content)!=null?s:"";if("value"in u){let a=!1;if(u.property==="content"||u.property==="headings"){let F=u.property==="content"?i.toLowerCase():o.getProperty(r,"headings");a=_(F,u.operator,u.value.toLowerCase())}else{let F=o.getProperty(c,u.property);if(F===null)throw new Error("Value is null:"+u.property+" - "+c);a=M(F,u.operator,u.value,u.valueB)}if(a)return!0}}return!1};var L=(r,u,e,t)=>{let o={nodeStyles:new Map,allMatches:new Map},n=[...u].sort((A,s)=>A.priority-s.priority);for(let A of r.columns)for(let s of A.groups)for(let c of s.nodes)for(let i of n){if(!i.enabled||typeof i.condition.value=="string"&&i.condition.value.length===0&&!x.has(i.condition.operator))continue;if(U(c,i.condition,r.content,t,e)){o.nodeStyles.has(c)||o.nodeStyles.set(c,i.style);let F=o.allMatches.get(i.id);F||(F=[],o.allMatches.set(i.id,F)),F.push(c)}}return o};var d=class{constructor(){this.processStyleRules=(u,e,t)=>(!this.propertyResolver||!this.targetResolver?this.initialize(u):t&&this.resetResolversCache(u,t),L(u,e,this.propertyResolver,this.targetResolver));this.resetResolversCache=(u,e)=>{this.targetResolver.resetCache(e,u.columns),this.propertyResolver.resetCache(e,u.columns,u.content)};this.initialize=u=>{this.targetResolver=new m(u.columns),this.propertyResolver=new B(u.columns,u.content)}}};var h={};self.onmessage=r=>{let u=r.data,{id:e,payload:t}=u,o=null;switch(t.type){case"destroy":{delete h[t.payload.viewId];break}case"process-rules":{h[t.payload.viewId]||(h[t.payload.viewId]=new d),o=h[t.payload.viewId].processStyleRules(t.payload.document,t.payload.rules,t.payload.action);break}default:throw new Error(`Unhandled event type: ${t.type}`)}self.postMessage({id:e,payload:o})};\n'); + return inlineWorker('var l=(o,u)=>{for(let e of o)for(let t of e.groups)if(t.parentId===u)return t};var S=(o,u)=>{var e,t;return(t=(e=l(o,u))==null?void 0:e.nodes.length)!=null?t:0};var R=o=>o.split(`\n`).filter(u=>u.trim().length>0).length;var N=/(?:[0-9]+(?:(?:,|.)[0-9]+)*|[-\'\u2019A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\u0B80-\u0BFF\uAC00-\uD7A3\uA960-\uA97C\uD7B0-\uD7C6])+|[\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u4E00-\\u9FD5\\uAC00-\\uD7A3\\uA960-\\uA97C\\uD7B0-\\uD7C6]/g,y=o=>{N.lastIndex=0;let u=o.match(N);return u?u.length:0};var G=/(?:[0-9]+(?:(?:,|.)[0-9]+)*|[-\'\u2019A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\u0B80-\u0BFF\uAC00-\uD7A3\uA960-\uA97C\uD7B0-\uD7C6])+|[\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u4E00-\\u9FD5\\uAC00-\\uD7A3\\uA960-\\uA97C\\uD7B0-\\uD7C6]/g,b=o=>o.length-o.replace(/--/g,"##").replace(G,"").length;var C=(o,u)=>{for(let e=0;eA===u))return e}return-1};var F=(o,u)=>{let e=C(o,u),t=new Set([u]);for(let r=e+1;rF(o,u).length;var x=o=>{var e;return((e=o.match(/^#{1,6} .*/gm))!=null?e:[]).map(t=>t.replace(/^#{1,6} /,""))};var _={"document/update-node-content":{content:!0},"document/format-headings":{content:!0},"document/add-node":{createOrDelete:!0},"document/delete-node":{createOrDelete:!0},"document/merge-node":{createOrDelete:!0},"document/file/load-from-disk":{createOrDelete:!0},"document/extract-node":{createOrDelete:!0},"document/split-node":{createOrDelete:!0},"document/drop-node":{dropOrMove:!0},"document/move-node":{dropOrMove:!0},"document/sort-direct-child-nodes":{dropOrMove:!0},"document/history/select-next-snapshot":{changeHistory:!0},"document/history/select-previous-snapshot":{changeHistory:!0},"document/history/select-snapshot":{changeHistory:!0},"document/paste-node":{clipboard:!0},"document/cut-node":{clipboard:!0}},Q=new Map(Object.entries(_));var d=new Set(["document/history/select-next-snapshot","document/history/select-previous-snapshot","document/history/select-snapshot","document/file/load-from-disk","document/merge-node","document/split-node","document/delete-node","document/extract-node","document/cut-node"]);var D=new Set(["document/drop-node","document/move-node","document/add-node","document/paste-node","document/sort-direct-child-nodes"]);var w=()=>({headings:{},content:{},"line-count":{},"character-count":{},"word-count":{},"headings-word-count":{},"direct-children-count":{},"total-children-count":{},depth:{}}),B=class{constructor(u,e){this.isEmpty=!0;this.resetCache=(u,e,t)=>{this.columns=e,this.content=t,!this.isEmpty&&(d.has(u.type)?(this.cache=w(),this.isEmpty=!0):D.has(u.type)?(this.cache.depth={},this.cache["direct-children-count"]={},this.cache["total-children-count"]={}):u.type==="document/update-node-content"?(delete this.cache.headings[u.payload.nodeId],delete this.cache.content[u.payload.nodeId],delete this.cache["line-count"][u.payload.nodeId],delete this.cache["character-count"][u.payload.nodeId],delete this.cache["word-count"][u.payload.nodeId],delete this.cache["headings-word-count"][u.payload.nodeId]):u.type==="document/format-headings"&&(this.cache.headings={},this.cache.content={},this.cache["line-count"]={},this.cache["character-count"]={},this.cache["word-count"]={},this.cache["headings-word-count"]={}))};this.columns=u,this.content=e,this.cache=w()}cacheResult(u,e,t){this.isEmpty&&(this.isEmpty=!1),this.cache[e][u]=t}getProperty(u,e){var r,A,n,s;if(this.cache[e][u]!==void 0)return this.cache[e][u];let t;switch(e){case"direct-children-count":t=S(this.columns,u);break;case"total-children-count":t=v(this.columns,u);break;case"line-count":t=R((r=this.content[u])==null?void 0:r.content);break;case"word-count":t=y((A=this.content[u])==null?void 0:A.content);break;case"character-count":t=b((n=this.content[u])==null?void 0:n.content);break;case"depth":t=C(this.columns,u)+1;break;case"headings":t=x((s=this.content[u])==null?void 0:s.content).join(" ").toLowerCase();break;case"headings-word-count":t=y(this.getProperty(u,"headings"));break;default:throw new Error(`Unsupported property: ${e}`)}return this.cacheResult(u,e,t),t}};var f=(o,u)=>{for(let e of o)for(let t of e.groups)for(let r of t.nodes)if(r===u)return t};var T=(o,u)=>{for(let e=0;e{let e=[],t=T(o,u);if(!t)return e;let r=t[1],A=t[0];for(let n=A-1;n>=0&&r;n--){e.push(r);let s;for(let c of o[n].groups){for(let i of c.nodes)if(i===r){s=c.parentId;break}if(s)break}r=s}return e};var O=()=>({self:{},"direct-parent":{},"any-parent":{},"direct-children":{},"any-children":{},"self-or-any-parent":{},"self-or-direct-parent":{},"self-or-any-children":{},"self-or-direct-children":{}}),m=class{constructor(u){this.isEmpty=!0;this.resetCache=(u,e)=>{this.columns=e,!this.isEmpty&&(d.has(u.type)||D.has(u.type))&&(this.cache=O(),this.isEmpty=!0)};this.columns=u,this.cache=O()}cacheResult(u,e,t){this.isEmpty&&(this.isEmpty=!1),this.cache[e][u]=t}getTargetNodes(u,e){if(this.cache[u][e]!==void 0)return this.cache[u][e];let t;switch(u){case"self":t=[e];break;case"direct-parent":{let r=f(this.columns,e);t=r?[r.parentId]:[];break}case"self-or-direct-parent":{let r=f(this.columns,e);t=r?[r.parentId,e]:[e];break}case"any-parent":{t=g(this.columns,e);break}case"self-or-any-parent":{t=[...g(this.columns,e),e];break}case"direct-children":{let r=l(this.columns,e);t=r?r.nodes:[];break}case"self-or-direct-children":{let r=l(this.columns,e);t=r?[e,...r.nodes]:[e];break}case"any-children":{t=F(this.columns,e);break}case"self-or-any-children":{t=[e,...F(this.columns,e)];break}}return this.cacheResult(e,u,t),t}};var P=new Set(["equals","not-equals","empty","not-empty"]);var k=(o,u,e)=>{switch(u){case"equals":return o===e;case"not-equals":return o!==e;case"empty":return!o;case"not-empty":return!!o;case"contains":return o.includes(e);case"not-contains":return!o.includes(e);case"starts-with":return o.startsWith(e);case"not-starts-with":return!o.startsWith(e);case"ends-with":return o.endsWith(e);case"not-ends-with":return!o.endsWith(e);case"matches-regex":return new RegExp(e).test(o);case"not-matches-regex":return!new RegExp(e).test(o);default:return!1}};var L=(o,u,e,t)=>{switch(u){case"equals":return o===e;case"not-equals":return o!==e;case"empty":return o===0;case"not-empty":return o!==0;case"greater-than":return o>e;case"less-than":return o=e&&o<=t;case"not-between":return t!==void 0&&(ot);default:return!1}};var M=(o,u,e,t,r)=>{var n,s;if(!u.enabled)return!1;let A=t.getTargetNodes(u.scope,o);for(let c of A){let i=(s=(n=e[c])==null?void 0:n.content)!=null?s:"";if("value"in u){let p=!1;if(u.property==="content"||u.property==="headings"){let a=u.property==="content"?i.toLowerCase():r.getProperty(o,"headings");p=k(a,u.operator,u.value.toLowerCase())}else{let a=r.getProperty(c,u.property);if(a===null)throw new Error("Value is null:"+u.property+" - "+c);p=L(a,u.operator,u.value,u.valueB)}if(p)return!0}}return!1};var U=(o,u,e,t)=>{let r={nodeStyles:new Map,allMatches:new Map},A=[...u].sort((n,s)=>n.global&&!s.global?1:n.priority-s.priority);for(let n of o.columns)for(let s of n.groups)for(let c of s.nodes)for(let i of A){if(!i.enabled||typeof i.condition.value=="string"&&i.condition.value.length===0&&!P.has(i.condition.operator))continue;if(M(c,i.condition,o.content,t,e)){r.nodeStyles.has(c)||r.nodeStyles.set(c,i.style);let a=r.allMatches.get(i.id);a||(a=[],r.allMatches.set(i.id,a)),a.push(c)}}return r};var E=class{constructor(){this.processStyleRules=(u,e,t)=>(!this.propertyResolver||!this.targetResolver?this.initialize(u):t&&this.resetResolversCache(u,t),U(u,e,this.propertyResolver,this.targetResolver));this.resetResolversCache=(u,e)=>{this.targetResolver.resetCache(e,u.columns),this.propertyResolver.resetCache(e,u.columns,u.content)};this.initialize=u=>{this.targetResolver=new m(u.columns),this.propertyResolver=new B(u.columns,u.content)}}};var h={};self.onmessage=o=>{let u=o.data,{id:e,payload:t}=u,r=null;switch(t.type){case"destroy":{delete h[t.payload.viewId];break}case"process-rules":{h[t.payload.viewId]||(h[t.payload.viewId]=new E),r=h[t.payload.viewId].processStyleRules(t.payload.document,t.payload.rules,t.payload.action);break}default:throw new Error(`Unhandled event type: ${t.type}`)}self.postMessage({id:e,payload:r})};\n'); } // src/helpers/worker-promise.ts @@ -24559,69 +26832,20 @@ var minimapWorker = new WorkerPromise(new Worker2()); var rulesWorker = new WorkerPromise(new Worker3()); var statusBarWorker = new WorkerPromise(new Worker4()); -// src/stores/minimap/subscriptions/effects/draw-document.ts -var drawDocument = async (view) => { - const minimapStore = view.getMinimapStore(); - const state2 = minimapStore.getValue(); - const lineageDocument = view.documentStore.getValue().document; - const canvasId = state2.canvasId; - const activeCardId = state2.activeCardId; - const payload = await minimapWorker.run({ - type: "minimap/set/document", - payload: { - document: lineageDocument, - canvasId, - activeNodeId: activeCardId - } - }); - invariant(payload); - minimapStore.dispatch({ - type: "minimap/set-card-ranges", - payload: { - ranges: payload.cardRanges, - height_cpx: payload.totalDrawnHeight_cpx - } - }); -}; -var debouncedDrawDocument = debounce2(drawDocument, 100); - -// src/stores/minimap/subscriptions/effects/set-minimap-dom.ts -var setMinimapDom = (view) => { - const minimapContainer = view.contentEl.querySelector( - ".minimap-container" - ); - if (!minimapContainer) - throw new SilentError("minimapContainer is undefined"); - const canvasContainer = minimapContainer.querySelector( - ".canvas-container" - ); - invariant(canvasContainer); - const scrollIndicator = minimapContainer.querySelector( - "#scrollIndicator" - ); - const canvas = minimapContainer.querySelector("canvas"); - invariant(scrollIndicator); - invariant(canvas); - canvas.width = CANVAS_WIDTH_CPX; - const offscreen = canvas.transferControlToOffscreen(); - const dom = { - offscreen, - canvas, - scrollIndicator, - canvasContainer - }; - view.setMinimapDom(dom); -}; - // src/stores/minimap/subscriptions/effects/initialize-minimap-worker.ts var initializeMinimapWorker = async (view) => { + const canvasContainer = view.getMinimapDom().canvasContainer.parentElement; + const canvas_height_cpx = dpx_to_cpx( + canvasContainer.getBoundingClientRect().height + ); await minimapWorker.run( { type: "worker/initialize", payload: { canvas: view.getMinimapDom().offscreen, canvasId: view.getMinimapStore().getValue().canvasId, - theme: minimapTheme.current + theme: minimapTheme.current, + canvas_height_cpx } }, view.getMinimapDom().offscreen @@ -24638,56 +26862,56 @@ var setMinimapActiveNode = (view) => { }); }; -// src/stores/minimap/subscriptions/effects/scroll-indicator/apply-scroll-position.ts -var import_obsidian22 = require("obsidian"); -var getContainerDimensions = (dom) => { - const minimapContainer = dom.scrollIndicator.parentElement; - if (!minimapContainer) - return null; - return { - clientHeight_dpx: minimapContainer.clientHeight, - containerHeight_cpx: dpx_to_cpx(minimapContainer.clientHeight) - }; +// src/stores/minimap/subscriptions/effects/draw-document.ts +var drawDocument = async (view) => { + const minimapStore = view.getMinimapStore(); + const state2 = minimapStore.getValue(); + const lineageDocument = view.documentStore.getValue().document; + const canvasId = state2.canvasId; + const activeCardId = state2.activeCardId; + const payload = await minimapWorker.run({ + type: "minimap/set/document", + payload: { + document: lineageDocument, + canvasId, + activeNodeId: activeCardId + } + }); + invariant(payload); + if ("cardRanges" in payload) { + minimapStore.dispatch({ + type: "minimap/set-card-ranges", + payload: { + ranges: payload.cardRanges, + height_cpx: payload.totalDrawnHeight_cpx + } + }); + } }; -var calculateScrollDimensions = (state2, clientHeight_dpx, containerHeight_cpx) => { - const indicatorHeight_cpx = containerHeight_cpx / state2.totalDrawnHeight_cpx * containerHeight_cpx; - const maxScroll_cpx = state2.totalDrawnHeight_cpx - containerHeight_cpx; - const scrollPercent = state2.scrollPosition_cpx / maxScroll_cpx; - const indicatorHeight_dpx = cpx_to_dpx(indicatorHeight_cpx); - const indicatorPosition_dpx = scrollPercent * (clientHeight_dpx - indicatorHeight_dpx); - const scrollPosition_dpx = cpx_to_dpx(state2.scrollPosition_cpx); - return { - indicatorHeight_dpx, - indicatorPosition_dpx, - scrollPosition_dpx - }; + +// src/stores/minimap/subscriptions/actions/set-client-height.ts +var getActiveView = async (view) => { + for (let i = 0; i < 10; i++) { + const activeView = view.plugin.app.workspace.getActiveViewOfType(LineageView); + if (activeView) { + return activeView; + } else { + await delay(500); + } + } }; -var applyDomUpdates = (dom, dimensions) => { - requestAnimationFrame(() => { - dom.scrollIndicator.style.height = `${dimensions.indicatorHeight_dpx}px`; - dom.scrollIndicator.style.transform = `translateY(${dimensions.indicatorPosition_dpx}px)`; - dom.canvasContainer.style.transform = `translateY(${-dimensions.scrollPosition_dpx}px)`; +var setClientHeight = async (view) => { + const activeView = await getActiveView(view); + if (!activeView) + return; + const minimapContainer = activeView.getMinimapDom().scrollIndicator.parentElement; + invariant(minimapContainer); + const containerHeight = minimapContainer.clientHeight; + view.getMinimapStore().dispatch({ + type: "minimap/set-container-height", + payload: { height_cpx: dpx_to_cpx(containerHeight) } }); }; -var applyScrollPosition = (state2, dom) => { - const dimensions = getContainerDimensions(dom); - if (!dimensions) - return; - const isScrollIndicatorHidden = state2.totalDrawnHeight_cpx <= dimensions.containerHeight_cpx; - if (isScrollIndicatorHidden) { - dom.scrollIndicator.style.display = "none"; - dom.canvasContainer.style.transform = "translateY(0)"; - return; - } - dom.scrollIndicator.style.display = "block"; - const scrollDimensions = calculateScrollDimensions( - state2, - dimensions.clientHeight_dpx, - dimensions.containerHeight_cpx - ); - applyDomUpdates(dom, scrollDimensions); -}; -var debouncedApplyScrollPosition = (0, import_obsidian22.debounce)(applyScrollPosition, 16); // src/stores/minimap/subscriptions/on-minimap-mount.ts var onMinimapMount = async (view) => { @@ -24697,93 +26921,34 @@ var onMinimapMount = async (view) => { setMinimapDom(view); initializeMinimapWorker(view); setMinimapActiveNode(view); + setClientHeight(view); await drawDocument(view); - debouncedApplyScrollPosition( - minimapStore.getValue().scrollInfo, - view.getMinimapDom() - ); }; -// src/stores/minimap/subscriptions/actions/set-scrollbar-position/calculate-scroll-delta-to-active-card.ts -var calculateScrollDeltaToActiveCard = (y_start_cpx, y_end_cpx, totalDrawnHeight_cpx, scrollPosition_cpx, clientHeight_dpx) => { - const containerHeight_cpx = dpx_to_cpx(clientHeight_dpx); - const contentFitsContainer = totalDrawnHeight_cpx <= containerHeight_cpx; - if (contentFitsContainer) { - return null; - } - const currentScroll_cpx = scrollPosition_cpx; - const visibleStart_cpx = currentScroll_cpx; - const visibleEnd_cpx = currentScroll_cpx + containerHeight_cpx; - const startIsVisible = y_start_cpx > visibleStart_cpx && y_start_cpx < visibleEnd_cpx; - const endIsVisible = y_end_cpx > visibleStart_cpx && y_end_cpx < visibleEnd_cpx; - if (startIsVisible && endIsVisible) { - return null; - } - let newScroll_cpx = 0; - const range_height_cpx = y_end_cpx - y_start_cpx; - const rangeIsTallerThanContainer = range_height_cpx > containerHeight_cpx; - if (rangeIsTallerThanContainer) { - newScroll_cpx = y_start_cpx; - } else { - if (!startIsVisible) { - newScroll_cpx = y_start_cpx - 10; - } else if (!endIsVisible) { - newScroll_cpx = y_end_cpx - containerHeight_cpx + 10; - } - } - const maxScroll_cpx = totalDrawnHeight_cpx - containerHeight_cpx; - newScroll_cpx = Math.max(0, Math.min(newScroll_cpx, maxScroll_cpx)); - return newScroll_cpx; -}; - -// src/stores/minimap/subscriptions/actions/set-scrollbar-position/set-scrollbar-position.ts -var setScrollbarPosition = debounce2((view) => { - const minimapStore = view.getMinimapStore(); - const state2 = minimapStore.getValue(); - const activeCardRange = state2.ranges.cards[state2.activeCardId]; - invariant(activeCardRange); - const minimapContainer = view.getMinimapDom().canvasContainer.parentElement; - invariant(minimapContainer); - const delta_cpx = calculateScrollDeltaToActiveCard( - activeCardRange.y_start, - activeCardRange.y_end, - state2.scrollInfo.totalDrawnHeight_cpx, - state2.scrollInfo.scrollPosition_cpx, - minimapContainer.clientHeight - ); - if (typeof delta_cpx === "number") { - minimapStore.dispatch({ - type: "minimap/set-scroll-position", - payload: { - position_cpx: Number(delta_cpx) - } - }); - } -}, 16); - // src/stores/minimap/subscriptions/on-minimap-state-update.ts -var onMinimapStateUpdate = (view, action, state2) => { +var onMinimapStateUpdate = (view, action, state2, localState) => { const minimapStore = view.minimapStore; invariant(minimapStore); - if (action.type === "minimap/set-card-ranges") { - setScrollbarPosition(view); - } else if (action.type === "minimap/set-active-node") { - if (state2.ranges.cards[state2.activeCardId]) { - setScrollbarPosition(view); + if (action.type === "minimap/set-active-node" || action.type === "minimap/set-container-height" || action.type === "minimap/mouse-wheel-scroll" || action.type === "minimap/set-card-ranges") { + const scrollPosition = state2.scrollbar.scrollPosition_cpx; + if (scrollPosition !== localState.previousScrollPosition) { + localState.previousScrollPosition = scrollPosition; + view.minimapEffects.updateVisibleRange(view); } - } else if (action.type === "minimap/set-scroll-position") { - debouncedApplyScrollPosition(state2.scrollInfo, view.getMinimapDom()); } }; // src/stores/minimap/subscriptions/minimap-subscriptions.ts var minimapSubscriptions = (view) => { + const localState = { + previousScrollPosition: 0 + }; const unsub = view.minimapStore.subscribe( (viewState, action, initialRun) => { if (initialRun) { onMinimapMount(view); } else if (action) { - onMinimapStateUpdate(view, action, viewState); + onMinimapStateUpdate(view, action, viewState, localState); } } ); @@ -24797,18 +26962,50 @@ var minimapSubscriptions = (view) => { }; }; +// src/stores/minimap/derived/scrollbar-stores.ts +var calculateThumbHeightDpx = (state2) => { + const isScrollIndicatorHidden = state2.totalDrawnHeight_cpx <= state2.containerHeight_cpx; + if (isScrollIndicatorHidden) + return 0; + const indicatorHeight_cpx = state2.containerHeight_cpx / state2.totalDrawnHeight_cpx * state2.containerHeight_cpx; + return cpx_to_dpx(indicatorHeight_cpx); +}; +var ScrollThumbHeightStore = (view) => { + return derived2(view.getMinimapStore(), (state2) => { + return calculateThumbHeightDpx(state2.scrollbar); + }); +}; +var ScrollThumbPositionStore = (view) => { + return derived2(view.getMinimapStore(), (_state) => { + const state2 = _state.scrollbar; + const indicatorHeight_dpx = calculateThumbHeightDpx(state2); + if (indicatorHeight_dpx === 0) + return 0; + const maxScroll_cpx = state2.totalDrawnHeight_cpx - state2.containerHeight_cpx; + const scrollPercent = state2.scrollPosition_cpx / maxScroll_cpx; + const containerHeight_dpx = cpx_to_dpx(state2.containerHeight_cpx); + return scrollPercent * (containerHeight_dpx - indicatorHeight_dpx); + }); +}; +var MinimapScrollOffsetStore = (view) => derived2(view.getMinimapStore(), (state2) => { + const offset = cpx_to_dpx(state2.scrollbar.scrollPosition_cpx); + return offset > 0 ? -1 * offset : offset; +}); + // src/view/components/container/minimap/minimap.svelte -function add_css32(target) { +function add_css37(target) { append_styles(target, "svelte-lp1si7", ":root{--scroll-indicator-color:rgba(255, 255, 255, 0.2)}.minimap-container.svelte-lp1si7{position:relative;height:100%;width:184px;padding:4px;background:var(--background-primary);overflow:hidden;flex:0 0 auto}canvas.svelte-lp1si7{width:176px;margin-right:4px}.canvas-container.svelte-lp1si7{transition:transform 0.1s ease-out;width:176px}.scroll-indicator.svelte-lp1si7{position:absolute;right:0;top:0;width:4px;background:var(--color-base-50);border-radius:2px;transition:transform 0.1s ease-out}"); } -function create_fragment90(ctx) { +function create_fragment99(ctx) { let div2; let div0; let indicators; let t0; let canvas; + let div0_style_value; let t1; let div1; + let div1_style_value; let current; let mounted; let dispose; @@ -24825,8 +27022,13 @@ function create_fragment90(ctx) { attr(canvas, "id", "minimap"); attr(canvas, "class", "svelte-lp1si7"); attr(div0, "class", "canvas-container svelte-lp1si7"); + attr(div0, "style", div0_style_value = `transform: translateY(${/*$containerOffset*/ + ctx[0]}px)`); attr(div1, "class", "scroll-indicator svelte-lp1si7"); attr(div1, "id", "scrollIndicator"); + attr(div1, "style", div1_style_value = `height: ${/*$thumbHeight*/ + ctx[1]}px; transform: translateY(${/*$thumbPosition*/ + ctx[2]}px)`); attr(div2, "class", "minimap-container svelte-lp1si7"); }, m(target, anchor) { @@ -24844,25 +27046,37 @@ function create_fragment90(ctx) { div0, "click", /*onClick*/ - ctx[0] + ctx[3] ), listen( div0, "mousemove", /*onMousemove*/ - ctx[2] + ctx[5] ), listen( div2, "wheel", /*onWheel*/ - ctx[1] + ctx[4] ) ]; mounted = true; } }, - p: noop, + p(ctx2, [dirty]) { + if (!current || dirty & /*$containerOffset*/ + 1 && div0_style_value !== (div0_style_value = `transform: translateY(${/*$containerOffset*/ + ctx2[0]}px)`)) { + attr(div0, "style", div0_style_value); + } + if (!current || dirty & /*$thumbHeight, $thumbPosition*/ + 6 && div1_style_value !== (div1_style_value = `height: ${/*$thumbHeight*/ + ctx2[1]}px; transform: translateY(${/*$thumbPosition*/ + ctx2[2]}px)`)) { + attr(div1, "style", div1_style_value); + } + }, i(local) { if (current) return; @@ -24883,7 +27097,10 @@ function create_fragment90(ctx) { } }; } -function instance87($$self) { +function instance97($$self, $$props, $$invalidate) { + let $containerOffset; + let $thumbHeight; + let $thumbPosition; const view = getView(); view.minimapStore = new Store(defaultMinimapState(), minimapReducer, this.onViewStoreError); const onClick = (e) => onCanvasClick(e, view); @@ -24902,21 +27119,37 @@ function instance87($$self) { unsub(); }; }); - return [onClick, onWheel, onMousemove]; + const thumbHeight = ScrollThumbHeightStore(view); + component_subscribe($$self, thumbHeight, (value) => $$invalidate(1, $thumbHeight = value)); + const thumbPosition = ScrollThumbPositionStore(view); + component_subscribe($$self, thumbPosition, (value) => $$invalidate(2, $thumbPosition = value)); + const containerOffset = MinimapScrollOffsetStore(view); + component_subscribe($$self, containerOffset, (value) => $$invalidate(0, $containerOffset = value)); + return [ + $containerOffset, + $thumbHeight, + $thumbPosition, + onClick, + onWheel, + onMousemove, + thumbHeight, + thumbPosition, + containerOffset + ]; } var Minimap = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance87, create_fragment90, safe_not_equal, {}, add_css32); + init(this, options, instance97, create_fragment99, safe_not_equal, {}, add_css37); } }; var minimap_default = Minimap; // src/view/components/container/right-sidebar/right-sidebar.svelte -function add_css33(target) { +function add_css38(target) { append_styles(target, "svelte-wtyjlq", ".lineage-right-sidebar.svelte-wtyjlq{--node-width:calc(var(--sidebar-width) - 40px);flex:0 0 auto;width:var(--animated-sidebar-width);position:relative;overflow:hidden;transition:width 0.3s ease}"); } -function create_if_block22(ctx) { +function create_if_block23(ctx) { let minimap; let current; minimap = new minimap_default({}); @@ -24943,14 +27176,14 @@ function create_if_block22(ctx) { } }; } -function create_fragment91(ctx) { +function create_fragment100(ctx) { let div; let div_class_value; let div_style_value; let current; let if_block = ( /*showMinimap*/ - ctx[2] && create_if_block22(ctx) + ctx[2] && create_if_block23(ctx) ); return { c() { @@ -24979,7 +27212,7 @@ function create_fragment91(ctx) { transition_in(if_block, 1); } } else { - if_block = create_if_block22(ctx2); + if_block = create_if_block23(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(div, null); @@ -25018,7 +27251,7 @@ function create_fragment91(ctx) { }; } var MIN_WIDTH = 184; -function instance88($$self, $$props, $$invalidate) { +function instance98($$self, $$props, $$invalidate) { let $showSidebarStore; let animatedSidebarWidth = 0; let sidebarWidth = MIN_WIDTH; @@ -25080,7 +27313,7 @@ function instance88($$self, $$props, $$invalidate) { var Right_sidebar = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance88, create_fragment91, safe_not_equal, {}, add_css33); + init(this, options, instance98, create_fragment100, safe_not_equal, {}, add_css38); } }; var right_sidebar_default = Right_sidebar; @@ -25184,55 +27417,29 @@ var clickAndDrag = (element2, view) => { }; // src/view/components/container/left-sidebar/components/tab-header/components/clickable-icon.svelte -function add_css34(target) { - append_styles(target, "svelte-1uy9r89", ".asterisk.svelte-1uy9r89{position:absolute;top:1px;right:1px;opacity:0.8}.theme-dark{& .clickable-icon {\n color: var(--color-base-60);\n };& .clickable-icon:active {\n color: var(--icon-color-active);\n }}.theme-light{& .lineage-view .sidebar-tabs-header .clickable-icon {\n color: var(--color-base-10);\n };& .lineage-view .sidebar-tabs-header .clickable-icon:active {\n color: var(--icon-color-active);\n }}.clickable-icon--active.svelte-1uy9r89{color:var(--icon-color-active);background-color:rgba(0, 0, 0, 0.3);background-blend-mode:multiply}"); +function add_css39(target) { + append_styles(target, "svelte-1scmxe1", ".lineage-view .clickable-icon.svelte-1scmxe1{cursor:pointer}.theme-dark{& .lineage-view .sidebar-tabs-header .clickable-icon {\n color: var(--color-base-60);\n };& .lineage-view .sidebar-tabs-header .clickable-icon:active {\n color: var(--icon-color-active);\n }}.theme-light{& .lineage-view .sidebar-tabs-header .clickable-icon {\n color: var(--color-base-10);\n };& .lineage-view .sidebar-tabs-header .clickable-icon:active {\n color: var(--color-base-10);\n }}.clickable-icon--active.svelte-1scmxe1{color:var(--icon-color-active);background-color:rgba(0, 0, 0, 0.3);background-blend-mode:multiply}"); } -function create_if_block23(ctx) { - let span; - return { - c() { - span = element("span"); - span.textContent = "*"; - attr(span, "class", "asterisk svelte-1uy9r89"); - }, - m(target, anchor) { - insert(target, span, anchor); - }, - d(detaching) { - if (detaching) { - detach(span); - } - } - }; -} -function create_fragment92(ctx) { +function create_fragment101(ctx) { let button; - let t; let button_class_value; let current; let mounted; let dispose; - let if_block = ( - /*hasEnabledItems*/ - ctx[3] && create_if_block23(ctx) - ); const default_slot_template = ( /*#slots*/ - ctx[6].default + ctx[4].default ); const default_slot = create_slot( default_slot_template, ctx, /*$$scope*/ - ctx[5], + ctx[3], null ); return { c() { button = element("button"); - if (if_block) - if_block.c(); - t = space(); if (default_slot) default_slot.c(); attr( @@ -25242,16 +27449,11 @@ function create_fragment92(ctx) { ctx[1] ); attr(button, "class", button_class_value = null_to_empty("clickable-icon nav-action-button " + /*isActive*/ - (ctx[2] ? "clickable-icon--active " : "")) + " svelte-1uy9r89"); - button.disabled = /*disabled*/ - ctx[4]; + (ctx[2] ? "clickable-icon--active " : "")) + " svelte-1scmxe1"); set_style(button, "position", "relative"); }, m(target, anchor) { insert(target, button, anchor); - if (if_block) - if_block.m(button, null); - append(button, t); if (default_slot) { default_slot.m(button, null); } @@ -25269,36 +27471,22 @@ function create_fragment92(ctx) { }, p(new_ctx, [dirty]) { ctx = new_ctx; - if ( - /*hasEnabledItems*/ - ctx[3] - ) { - if (if_block) { - } else { - if_block = create_if_block23(ctx); - if_block.c(); - if_block.m(button, t); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } if (default_slot) { if (default_slot.p && (!current || dirty & /*$$scope*/ - 32)) { + 8)) { update_slot_base( default_slot, default_slot_template, ctx, /*$$scope*/ - ctx[5], + ctx[3], !current ? get_all_dirty_from_scope( /*$$scope*/ - ctx[5] + ctx[3] ) : get_slot_changes( default_slot_template, /*$$scope*/ - ctx[5], + ctx[3], dirty, null ), @@ -25317,14 +27505,9 @@ function create_fragment92(ctx) { } if (!current || dirty & /*isActive*/ 4 && button_class_value !== (button_class_value = null_to_empty("clickable-icon nav-action-button " + /*isActive*/ - (ctx[2] ? "clickable-icon--active " : "")) + " svelte-1uy9r89")) { + (ctx[2] ? "clickable-icon--active " : "")) + " svelte-1scmxe1")) { attr(button, "class", button_class_value); } - if (!current || dirty & /*disabled*/ - 16) { - button.disabled = /*disabled*/ - ctx[4]; - } }, i(local) { if (current) @@ -25340,8 +27523,6 @@ function create_fragment92(ctx) { if (detaching) { detach(button); } - if (if_block) - if_block.d(); if (default_slot) default_slot.d(detaching); mounted = false; @@ -25349,13 +27530,11 @@ function create_fragment92(ctx) { } }; } -function instance89($$self, $$props, $$invalidate) { +function instance99($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; let { onClick } = $$props; let { label } = $$props; let { isActive = false } = $$props; - let { hasEnabledItems = false } = $$props; - let { disabled = false } = $$props; $$self.$$set = ($$props2) => { if ("onClick" in $$props2) $$invalidate(0, onClick = $$props2.onClick); @@ -25363,39 +27542,21 @@ function instance89($$self, $$props, $$invalidate) { $$invalidate(1, label = $$props2.label); if ("isActive" in $$props2) $$invalidate(2, isActive = $$props2.isActive); - if ("hasEnabledItems" in $$props2) - $$invalidate(3, hasEnabledItems = $$props2.hasEnabledItems); - if ("disabled" in $$props2) - $$invalidate(4, disabled = $$props2.disabled); if ("$$scope" in $$props2) - $$invalidate(5, $$scope = $$props2.$$scope); + $$invalidate(3, $$scope = $$props2.$$scope); }; - return [onClick, label, isActive, hasEnabledItems, disabled, $$scope, slots]; + return [onClick, label, isActive, $$scope, slots]; } var Clickable_icon = class extends SvelteComponent { constructor(options) { super(); - init( - this, - options, - instance89, - create_fragment92, - safe_not_equal, - { - onClick: 0, - label: 1, - isActive: 2, - hasEnabledItems: 3, - disabled: 4 - }, - add_css34 - ); + init(this, options, instance99, create_fragment101, safe_not_equal, { onClick: 0, label: 1, isActive: 2 }, add_css39); } }; var clickable_icon_default = Clickable_icon; // src/view/components/container/left-sidebar/components/tab-header/tab-header.svelte -function add_css35(target) { +function add_css40(target) { append_styles(target, "svelte-rqh5hd", ".sidebar-tabs-header.svelte-rqh5hd{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;align-self:center;justify-self:center;box-sizing:border-box;height:auto}.tab-header-buttons.svelte-rqh5hd{display:flex;align-items:center;justify-content:center;gap:5px}"); } function create_default_slot_15(ctx) { @@ -25426,7 +27587,7 @@ function create_default_slot_15(ctx) { } }; } -function create_default_slot56(ctx) { +function create_default_slot64(ctx) { let clock; let current; clock = new clock_default({ props: { class: "svg-icon" } }); @@ -25454,7 +27615,7 @@ function create_default_slot56(ctx) { } }; } -function create_fragment93(ctx) { +function create_fragment102(ctx) { let div1; let div0; let clickableicon0; @@ -25463,12 +27624,11 @@ function create_fragment93(ctx) { let current; clickableicon0 = new clickable_icon_default({ props: { - hasEnabledItems: false, isActive: ( /*$activeTab*/ ctx[0] === "pinned-cards" ), - label: lang.sidebar_tab_pinned_cards, + label: lang.sidebar_tab_pinned_nodes, onClick: ( /*func*/ ctx[3] @@ -25479,17 +27639,16 @@ function create_fragment93(ctx) { }); clickableicon1 = new clickable_icon_default({ props: { - hasEnabledItems: false, isActive: ( /*$activeTab*/ ctx[0] === "recent-cards" ), - label: lang.sidebar_tab_recent_cards, + label: lang.sidebar_tab_recent_nodes, onClick: ( /*func_1*/ ctx[4] ), - $$slots: { default: [create_default_slot56] }, + $$slots: { default: [create_default_slot64] }, $$scope: { ctx } } }); @@ -25554,7 +27713,7 @@ function create_fragment93(ctx) { } }; } -function instance90($$self, $$props, $$invalidate) { +function instance100($$self, $$props, $$invalidate) { let $activeTab; const view = getView(); const activeTab = LeftSidebarActiveTabStore(view); @@ -25572,20 +27731,20 @@ function instance90($$self, $$props, $$invalidate) { var Tab_header = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance90, create_fragment93, safe_not_equal, {}, add_css35); + init(this, options, instance100, create_fragment102, safe_not_equal, {}, add_css40); } }; var tab_header_default = Tab_header; // src/stores/view/derived/pinned-cards-sidebar.ts -var ActivePinnedCardStore = (view) => derived(view.viewStore, (state2) => state2.pinnedNodes.activeNode); +var ActivePinnedCardStore = (view) => derived2(view.viewStore, (state2) => state2.pinnedNodes.activeNode); // src/view/components/container/left-sidebar/components/no-items/no-items.svelte -function create_fragment94(ctx) { +function create_fragment103(ctx) { let div; let t_value = ( /*variant*/ - (ctx[0] === "pinned" ? lang.sidebar_no_pinned_cards : lang.sidebar_no_recent_cards) + "" + (ctx[0] === "pinned" ? lang.sidebar_no_pinned_nodes : lang.sidebar_no_recent_nodes) + "" ); let t; return { @@ -25601,7 +27760,7 @@ function create_fragment94(ctx) { p(ctx2, [dirty]) { if (dirty & /*variant*/ 1 && t_value !== (t_value = /*variant*/ - (ctx2[0] === "pinned" ? lang.sidebar_no_pinned_cards : lang.sidebar_no_recent_cards) + "")) + (ctx2[0] === "pinned" ? lang.sidebar_no_pinned_nodes : lang.sidebar_no_recent_nodes) + "")) set_data(t, t_value); }, i: noop, @@ -25613,7 +27772,7 @@ function create_fragment94(ctx) { } }; } -function instance91($$self, $$props, $$invalidate) { +function instance101($$self, $$props, $$invalidate) { let { variant } = $$props; $$self.$$set = ($$props2) => { if ("variant" in $$props2) @@ -25624,7 +27783,7 @@ function instance91($$self, $$props, $$invalidate) { var No_items = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance91, create_fragment94, safe_not_equal, { variant: 0 }); + init(this, options, instance101, create_fragment103, safe_not_equal, { variant: 0 }); } }; var no_items_default = No_items; @@ -25679,15 +27838,15 @@ var scrollActivePinnedNode = (containerRef) => { }; // src/view/components/container/left-sidebar/components/pinned-cards/pinned-cards-sidebar.svelte -function add_css36(target) { - append_styles(target, "svelte-1l2hv0v", ".pinned-cards-container.svelte-1l2hv0v{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1 1 auto;padding-bottom:10px}"); +function add_css41(target) { + append_styles(target, "svelte-1ymcixr", ".pinned-cards-container.svelte-1ymcixr{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1 1 auto;padding-bottom:10px;overflow-y:auto}"); } -function get_each_context12(ctx, list, i) { +function get_each_context16(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[13] = list[i]; return child_ctx; } -function create_else_block9(ctx) { +function create_else_block11(ctx) { let noitems; let current; noitems = new no_items_default({ props: { variant: "pinned" } }); @@ -25729,9 +27888,9 @@ function create_if_block24(ctx) { ctx2[13] ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context12(ctx, each_value, i); + let child_ctx = get_each_context16(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block12(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block16(key, child_ctx)); } return { c() { @@ -25757,7 +27916,7 @@ function create_if_block24(ctx) { ctx2[0] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block12, each_1_anchor, get_each_context12); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block16, each_1_anchor, get_each_context16); check_outros(); } }, @@ -25785,7 +27944,7 @@ function create_if_block24(ctx) { } }; } -function create_each_block12(key_1, ctx) { +function create_each_block16(key_1, ctx) { let first; let node_1; let current; @@ -25927,7 +28086,7 @@ function create_each_block12(key_1, ctx) { } }; } -function create_fragment95(ctx) { +function create_fragment104(ctx) { let div; let current_block_type_index; let if_block; @@ -25935,7 +28094,7 @@ function create_fragment95(ctx) { let current; let mounted; let dispose; - const if_block_creators = [create_if_block24, create_else_block9]; + const if_block_creators = [create_if_block24, create_else_block11]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -25951,7 +28110,7 @@ function create_fragment95(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "pinned-cards-container svelte-1l2hv0v"); + attr(div, "class", "pinned-cards-container svelte-1ymcixr"); }, m(target, anchor) { insert(target, div, anchor); @@ -26004,7 +28163,7 @@ function create_fragment95(ctx) { } }; } -function instance92($$self, $$props, $$invalidate) { +function instance102($$self, $$props, $$invalidate) { let $pinnedNodesArray; let $activePinnedCard; let $editingStateStore; @@ -26042,15 +28201,15 @@ function instance92($$self, $$props, $$invalidate) { var Pinned_cards_sidebar = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance92, create_fragment95, safe_not_equal, {}, add_css36); + init(this, options, instance102, create_fragment104, safe_not_equal, {}, add_css41); } }; var pinned_cards_sidebar_default = Pinned_cards_sidebar; // src/stores/view/derived/recent-nodes.ts -var ActiveRecentNodeStore = (view) => derived(view.viewStore, (state2) => state2.recentNodes.activeNode); +var ActiveRecentNodeStore = (view) => derived2(view.viewStore, (state2) => state2.recentNodes.activeNode); -// src/helpers/remove-duplicates-from-array.ts +// src/helpers/array-helpers/remove-duplicates-from-array.ts var removeDuplicatesFromArray = (array, reverse = false) => { const uniqueItems = /* @__PURE__ */ new Set(); const newArray = []; @@ -26065,15 +28224,15 @@ var removeDuplicatesFromArray = (array, reverse = false) => { }; // src/view/components/container/left-sidebar/components/recent-cards/recent-cards.svelte -function add_css37(target) { - append_styles(target, "svelte-uest1q", ".recent-cards-container.svelte-uest1q{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1 1 auto;padding-bottom:10px}"); +function add_css42(target) { + append_styles(target, "svelte-gdogae", ".recent-cards-container.svelte-gdogae{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1 1 auto;padding-bottom:10px;overflow-y:auto}"); } -function get_each_context13(ctx, list, i) { +function get_each_context17(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[15] = list[i]; return child_ctx; } -function create_else_block10(ctx) { +function create_else_block12(ctx) { let noitems; let current; noitems = new no_items_default({ props: { variant: "recent" } }); @@ -26115,9 +28274,9 @@ function create_if_block25(ctx) { ctx2[15] ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context13(ctx, each_value, i); + let child_ctx = get_each_context17(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block13(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block17(key, child_ctx)); } return { c() { @@ -26143,7 +28302,7 @@ function create_if_block25(ctx) { ctx2[0] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block13, each_1_anchor, get_each_context13); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block17, each_1_anchor, get_each_context17); check_outros(); } }, @@ -26171,7 +28330,7 @@ function create_if_block25(ctx) { } }; } -function create_each_block13(key_1, ctx) { +function create_each_block17(key_1, ctx) { let first; let node_1; let current; @@ -26313,12 +28472,12 @@ function create_each_block13(key_1, ctx) { } }; } -function create_fragment96(ctx) { +function create_fragment105(ctx) { let div; let current_block_type_index; let if_block; let current; - const if_block_creators = [create_if_block25, create_else_block10]; + const if_block_creators = [create_if_block25, create_else_block12]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -26334,7 +28493,7 @@ function create_fragment96(ctx) { c() { div = element("div"); if_block.c(); - attr(div, "class", "recent-cards-container svelte-uest1q"); + attr(div, "class", "recent-cards-container svelte-gdogae"); }, m(target, anchor) { insert(target, div, anchor); @@ -26384,7 +28543,7 @@ function create_fragment96(ctx) { }; } var RECENT_NODES_LIMIT = 30; -function instance93($$self, $$props, $$invalidate) { +function instance103($$self, $$props, $$invalidate) { let $activeRecentCard; let $editingStateStore; let $pendingConfirmation; @@ -26454,13 +28613,13 @@ function instance93($$self, $$props, $$invalidate) { var Recent_cards = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance93, create_fragment96, safe_not_equal, {}, add_css37); + init(this, options, instance103, create_fragment105, safe_not_equal, {}, add_css42); } }; var recent_cards_default = Recent_cards; // src/view/components/container/left-sidebar/left-sidebar.svelte -function add_css38(target) { +function add_css43(target) { append_styles(target, "svelte-11s0o0n", ".sidebar.svelte-11s0o0n{--node-width:calc(var(--sidebar-width) - 40px);flex:0 0 auto;width:var(--animated-sidebar-width);position:relative;overflow:hidden;background-color:rgba(0, 0, 0, 0.2);background-blend-mode:multiply;display:flex;flex-direction:column;padding:10px 0;gap:10px}.width-transition.svelte-11s0o0n{transition:width 0.3s ease}.resizer.svelte-11s0o0n{position:absolute;top:0;height:100%;bottom:0;background-color:transparent;transition:background-color 0.2s;cursor:col-resize;right:0px;width:4px}.resizer.svelte-11s0o0n:hover{background-color:var(--color-accent)}.limit-card-height.svelte-11s0o0n{& .lng-prev {\n max-height: 65vh;\n };& .editor-container {\n max-height: 65vh;\n }}"); } function create_if_block_18(ctx) { @@ -26517,7 +28676,7 @@ function create_if_block26(ctx) { } }; } -function create_fragment97(ctx) { +function create_fragment106(ctx) { let div1; let tabheader; let t0; @@ -26649,7 +28808,7 @@ function create_fragment97(ctx) { }; } var MIN_WIDTH2 = 250; -function instance94($$self, $$props, $$invalidate) { +function instance104($$self, $$props, $$invalidate) { let $limitPreviewHeight; let $activeTab; let animatedSidebarWidth = 0; @@ -26716,15 +28875,15 @@ function instance94($$self, $$props, $$invalidate) { var Left_sidebar = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance94, create_fragment97, safe_not_equal, {}, add_css38); + init(this, options, instance104, create_fragment106, safe_not_equal, {}, add_css43); } }; var left_sidebar_default = Left_sidebar; -// src/view/actions/context-menu/context-menu.ts -var import_obsidian29 = require("obsidian"); +// src/view/actions/context-menu/show-context-menu.ts +var import_obsidian27 = require("obsidian"); -// src/view/actions/context-menu/helpers/on-long-press.ts +// src/helpers/on-long-press.ts var onLongPress = (element2, callback, preventDefaultPredicate) => { const state2 = { timer: null, longPress: false }; const onTouchEnd = (e) => { @@ -26756,6 +28915,65 @@ var onLongPress = (element2, callback, preventDefaultPredicate) => { }; }; +// src/obsidian/context-menu/render-context-menu.ts +var import_obsidian22 = require("obsidian"); +var addMenuItem = (menu, menuItem) => { + if ("type" in menuItem && menuItem.type === "separator") { + menu.addSeparator(); + } else if ("title" in menuItem) { + menu.addItem((item) => { + item.setTitle(menuItem.title).setIcon(menuItem.icon).setDisabled(menuItem.disabled || false).setChecked(menuItem.checked || false); + if ("submenu" in menuItem) { + const subMenu = item.setSubmenu(); + for (const subItem of menuItem.submenu) { + addMenuItem(subMenu, subItem); + } + } else { + item.onClick(menuItem.action); + } + if (menuItem.dangerous) { + if ("dom" in item) { + item.dom.classList.add("is-warning"); + } + } + }); + } +}; +var renderContextMenu = (event, menuItems) => { + const menu = new import_obsidian22.Menu(); + for (const menuItem of menuItems) { + addMenuItem(menu, menuItem); + } + menu.showAtMouseEvent(event); +}; + +// src/obsidian/context-menu/select-inactive-card.ts +var selectInactiveCard = (view, closestCardElement, isInSidebar, isInRecentCardsList) => { + const id2 = closestCardElement?.id; + if (!isInSidebar) { + view.viewStore.dispatch({ + type: "view/set-active-node/mouse-silent", + payload: { + id: id2 + } + }); + } else if (isInRecentCardsList) { + view.viewStore.dispatch({ + type: "view/recent-nodes/set-active-node", + payload: { + id: id2 + } + }); + } else { + view.viewStore.dispatch({ + type: "view/pinned-nodes/set-active-node", + payload: { + id: id2 + } + }); + } +}; + // src/obsidian/events/workspace/effects/create-new-file.ts var import_obsidian23 = require("obsidian"); @@ -26809,115 +29027,202 @@ var openFile = async (plugin, file, newLeaf) => { return leaf; }; -// src/obsidian/events/workspace/effects/toggle-obsidian-view-type.ts -var toggleObsidianViewType = (plugin, leaf, type) => { - setTimeout(() => { - leaf.setViewState({ - type, - popstate: true, - state: leaf.view.getState() - }); - const activeLeaf = plugin.app.workspace.getLeaf(); - if (activeLeaf !== leaf) { - plugin.app.workspace.revealLeaf(leaf); - } - plugin.app.workspace.setActiveLeaf(leaf); - }, 0); -}; - -// src/obsidian/events/workspace/actions/set-document-format.ts -var setDocumentFormat = (plugin, path, type) => { - plugin.settings.dispatch({ - type: "SET_DOCUMENT_TYPE", - payload: { - path, - format: type - } - }); -}; - -// src/obsidian/events/workspace/effects/open-file-in-lineage.ts -var openFileInLineage = async (plugin, file, type, newLeaf) => { - const leaf = await openFile(plugin, file, newLeaf); - toggleObsidianViewType(plugin, leaf, "lineage"); - setDocumentFormat(plugin, file.path, type); -}; - -// src/obsidian/commands/helpers/extract-branch/helpers/get-file-name-of-extracted-branch/get-file-name-from-content.ts -var getFileNameFromContent = (text2) => { - const lines = text2.split("\n").map((line) => line.trim().replace(/\s+/g, " ")).filter((line) => line); - if (lines.length === 0) +// src/view/actions/context-menu/card-context-menu/helpers/export-selection.ts +var exportSelection = async (view, includeSubItems) => { + const viewState = view.viewStore.getValue(); + const isEditing2 = Boolean(viewState.document.editing.activeNodeId); + if (isEditing2) { + saveNodeContent(view); + setTimeout(() => { + exportSelection(view, includeSubItems); + }, 100); return; - let result = void 0; - const headingLine = lines.find((line) => /^(#+)\s(.+)/.test(line)); - if (headingLine) { - const headingMatch = headingLine.match(/^(#+)\s(.+)/); - result = headingMatch[2]; - } else if (lines[0].startsWith("- ")) { - result = lines[0].replace(/^- /, ""); - } else { - result = lines.join(" "); } - return result.substring(0, 100).trim(); + let text2 = ""; + const nodes = getActiveNodes(view, false); + if (includeSubItems) { + text2 = mapBranchesToText( + view.documentStore.getValue().document, + nodes, + "unformatted-text" + ); + } else { + text2 = getTextOfFlatNodes(view, nodes, false); + } + const file = view.file; + const newFile = await createNewFile( + view.plugin, + file.parent, + text2, + `${file.basename} - exported selection` + ); + await openFile(view.plugin, newFile, "split"); }; -// src/obsidian/commands/helpers/extract-branch/helpers/get-file-name-of-extracted-branch/get-file-name-of-extracted-branch.ts -var getFileNameOfExtractedBranch = (nodeContent, currentFileName, sectionNumber) => { - const name = getFileNameFromContent(nodeContent); - if (name) - return name; - return `${currentFileName.trim()} - ${sectionNumber}`; -}; - -// src/obsidian/commands/helpers/extract-branch/extract-branch.ts -var extractBranch = async (view) => { - try { - invariant(view.file); - invariant(view.file.parent); - const viewState = view.viewStore.getValue(); - const isEditing2 = Boolean(viewState.document.editing.activeNodeId); - if (isEditing2) { - saveNodeContent(view); - setTimeout(() => { - extractBranch(view); - }, 100); - return; +// src/view/actions/context-menu/card-context-menu/create-multiple-nodes-context-menu.ts +var createMultipleNodesContextMenu = (view) => { + const menuItems = [ + { + title: lang.cm_copy, + icon: "documents", + submenu: [ + { + title: lang.cm_copy_branches, + icon: "lineage-cards", + action: () => copyActiveBranchesToClipboard(view, true, false) + }, + { + title: lang.cm_copy_branches_wo_formatting, + icon: "file-text", + action: () => copyActiveBranchesToClipboard(view, false, false) + }, + { + title: lang.cm_copy_node_wo_subitems, + icon: "file-text", + action: () => copyActiveNodesToClipboard(view, false) + } + ] + }, + { + title: lang.cm_cut, + icon: "scissors", + action: () => cutNode(view) + }, + { type: "separator" }, + { + title: lang.cm_export_selection, + icon: "file-text", + submenu: [ + { + title: lang.cmd_export_branches_with_subitems, + icon: "file-text", + action: () => exportSelection(view, true) + }, + { + title: lang.cmd_export_nodes_wo_subitems, + icon: "file-text", + action: () => exportSelection(view, false) + } + ] } - const documentState = view.documentStore.getValue(); - const branch = getBranch( - documentState.document.columns, - documentState.document.content, - viewState.document.activeNode, - "copy" - ); - const format2 = getDocumentFormat(view); - const text2 = format2 === "outline" ? branchToOutline([branch]) : format2 === "html-element" ? branchToHtmlElement([branch]) : branchToHtmlComment([branch]); - const fileName = getFileNameOfExtractedBranch( - branch.content[branch.nodeId].content, - view.file.basename, - documentState.sections.id_section[branch.nodeId] - ); - const newFile = await createNewFile( - view.plugin, - view.file.parent, - text2, - fileName - ); - await openFileInLineage(view.plugin, newFile, format2, "split"); + ]; + return menuItems; +}; + +// src/view/actions/context-menu/card-context-menu/helpers/insert-block-id.ts +var getExistingBlockId = (lines) => { + const reversed = [...lines].reverse(); + for (let line of reversed) { + line = line.trim(); + const match = /\s+\^([a-zA-Z0-9]{4,})$/.exec(line); + if (match) { + return match[1]; + } + } +}; +var generateBlockId = () => Math.random().toString(36).substring(2, 8); +var insertBlockId = (text2, __id__) => { + const lines = text2.trimEnd().split("\n"); + const existingId = getExistingBlockId(lines); + if (existingId) { + return { + blockId: existingId, + text: text2 + }; + } else { + const lastLine = lines[lines.length - 1]; + let blockId = null; + if (lastLine) { + blockId = __id__ || generateBlockId(); + lines[lines.length - 1] = lines[lines.length - 1] + ` ^${blockId}`; + return { + blockId, + text: lines.join("\n") + }; + } + } +}; + +// src/view/actions/context-menu/card-context-menu/helpers/copy-link-to-block.ts +var import_obsidian24 = require("obsidian"); +var copyLinkToBlock = async (view, isInSidebar) => { + const file = view.file; + if (!file) + return; + const viewState = view.viewStore.getValue(); + const activeTab = view.plugin.settings.getValue().view.leftSidebarActiveTab; + const activeNode = isInSidebar ? activeTab === "pinned-cards" ? viewState.pinnedNodes.activeNode : viewState.recentNodes.activeNode : viewState.document.activeNode; + const isEditing2 = Boolean(viewState.document.editing.activeNodeId); + if (isEditing2) { + saveNodeContent(view); + setTimeout(() => { + copyLinkToBlock(view, isInSidebar); + }, 100); + return; + } + const documentState = view.documentStore.getValue(); + const content = documentState.document.content[activeNode]; + const text2 = content?.content; + const output = insertBlockId(text2); + if (output) { + const fileName = file.basename; view.documentStore.dispatch({ - type: "DOCUMENT/EXTRACT_BRANCH", + type: "document/update-node-content", payload: { - nodeId: branch.nodeId, - documentName: newFile.basename + content: output.text, + nodeId: activeNode + }, + context: { + isInSidebar: viewState.document.editing.isInSidebar } }); - } catch (e) { - onPluginError(e, "command", { type: "extract-branch" }); + const link = `[[${fileName}#^${output.blockId}]]`; + await navigator.clipboard.writeText(link); + new import_obsidian24.Notice("Copied"); + } else { + new import_obsidian24.Notice("Could not copy link to clipboard"); } }; +// src/view/actions/context-menu/card-context-menu/create-sidebar-context-menu-items.ts +var togglePinNode = (view, activeNode, isPinned, isInSidebar) => { + const viewState = view.viewStore.getValue(); + const id2 = isInSidebar ? viewState.pinnedNodes.activeNode : activeNode; + view.documentStore.dispatch({ + type: isPinned ? "document/pinned-nodes/unpin" : "document/pinned-nodes/pin", + payload: { id: id2 } + }); +}; +var createSidebarContextMenuItems = (view, { isPinned, activeNode, isInRecentCardsList }) => { + const menuItems = [ + { + title: lang.cm_copy_link_to_block, + icon: "links-coming-in", + action: () => copyLinkToBlock(view, true) + }, + { type: "separator" }, + { + title: lang.cm_copy, + icon: "documents", + action: () => copyActiveNodesToClipboard(view, true) + }, + { type: "separator" }, + { + title: isPinned ? lang.cm_unpin_from_left_sidebar : lang.cm_pin_in_left_sidebar, + icon: isPinned ? "pin-off" : "pin", + action: () => togglePinNode(view, activeNode, isPinned, true), + disabled: isInRecentCardsList + }, + { type: "separator" } + ]; + return menuItems; +}; + +// src/view/actions/context-menu/card-context-menu/create-single-node-context-menu-items.ts +var import_obsidian26 = require("obsidian"); + // src/view/modals/split-node-modal/split-node-modal.ts -var import_obsidian24 = require("obsidian"); +var import_obsidian25 = require("obsidian"); // src/view/modals/split-node-modal/helpers/get-modal-state.ts var getModalState = () => { @@ -26925,7 +29230,7 @@ var getModalState = () => { }; // src/view/modals/split-node-modal/components/components/content-preview.svelte -function add_css39(target) { +function add_css44(target) { append_styles(target, "svelte-20u69o", ".preview.svelte-20u69o{flex-grow:1;max-height:500px;overflow:auto}"); } function create_if_block27(ctx) { @@ -26933,7 +29238,7 @@ function create_if_block27(ctx) { return { c() { p = element("p"); - p.textContent = "This card's content does not match any splitting pattern"; + p.textContent = "This section does not match any splitting pattern"; attr(p, "class", "mod-warning"); }, m(target, anchor) { @@ -26946,7 +29251,7 @@ function create_if_block27(ctx) { } }; } -function create_fragment98(ctx) { +function create_fragment107(ctx) { let div0; let t; let div1; @@ -27002,7 +29307,7 @@ function create_fragment98(ctx) { } }; } -function instance95($$self, $$props, $$invalidate) { +function instance105($$self, $$props, $$invalidate) { let $mode; let $content; const state2 = getModalState(); @@ -27015,7 +29320,7 @@ function instance95($$self, $$props, $$invalidate) { var Content_preview = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance95, create_fragment98, safe_not_equal, {}, add_css39); + init(this, options, instance105, create_fragment107, safe_not_equal, {}, add_css44); } }; var content_preview_default = Content_preview; @@ -27026,15 +29331,15 @@ var getModalProps = () => { }; // src/view/modals/split-node-modal/components/components/modal-buttons.svelte -function add_css40(target) { +function add_css45(target) { append_styles(target, "svelte-6fani8", ".split-content-footer.svelte-6fani8{display:flex;align-items:center;justify-content:space-between}.modes-container.svelte-6fani8{height:50px;display:flex;align-items:center}.buttons-container.svelte-6fani8{display:flex;gap:5px;width:fit-content}label.svelte-6fani8{display:block;text-transform:capitalize}label[data-disabled='true'].svelte-6fani8{opacity:0.6}"); } -function get_each_context14(ctx, list, i) { +function get_each_context18(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[10] = list[i]; return child_ctx; } -function create_each_block14(ctx) { +function create_each_block18(ctx) { let label; let input; let input_checked_value; @@ -27110,7 +29415,7 @@ function create_each_block14(ctx) { } }; } -function create_fragment99(ctx) { +function create_fragment108(ctx) { let div2; let div0; let t0; @@ -27128,7 +29433,7 @@ function create_fragment99(ctx) { ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block14(get_each_context14(ctx, each_value, i)); + each_blocks[i] = create_each_block18(get_each_context18(ctx, each_value, i)); } return { c() { @@ -27194,11 +29499,11 @@ function create_fragment99(ctx) { ); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context14(ctx2, each_value, i); + const child_ctx = get_each_context18(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); } else { - each_blocks[i] = create_each_block14(child_ctx); + each_blocks[i] = create_each_block18(child_ctx); each_blocks[i].c(); each_blocks[i].m(div0, null); } @@ -27226,7 +29531,7 @@ function create_fragment99(ctx) { } }; } -function instance96($$self, $$props, $$invalidate) { +function instance106($$self, $$props, $$invalidate) { let $mode; const state2 = getModalState(); const props = getModalProps(); @@ -27255,16 +29560,16 @@ function instance96($$self, $$props, $$invalidate) { var Modal_buttons = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance96, create_fragment99, safe_not_equal, {}, add_css40); + init(this, options, instance106, create_fragment108, safe_not_equal, {}, add_css45); } }; var modal_buttons_default = Modal_buttons; // src/view/modals/split-node-modal/components/modal-content.svelte -function add_css41(target) { +function add_css46(target) { append_styles(target, "svelte-1axt1o3", ".split-content-modal.svelte-1axt1o3{display:flex;flex-direction:column}"); } -function create_fragment100(ctx) { +function create_fragment109(ctx) { let div; let content; let t; @@ -27309,7 +29614,7 @@ function create_fragment100(ctx) { } }; } -function instance97($$self, $$props, $$invalidate) { +function instance107($$self, $$props, $$invalidate) { let { state: state2 } = $$props; let { props } = $$props; setContext("modal-state", state2); @@ -27325,7 +29630,7 @@ function instance97($$self, $$props, $$invalidate) { var Modal_content = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance97, create_fragment100, safe_not_equal, { state: 0, props: 1 }, add_css41); + init(this, options, instance107, create_fragment109, safe_not_equal, { state: 0, props: 1 }, add_css46); } }; var modal_content_default = Modal_content; @@ -27992,13 +30297,13 @@ var mapContent = (text2, mode) => { var hasNParagraph = (text2, n = 2) => splitByParagraph(text2).length >= n; // src/view/modals/split-node-modal/split-node-modal.ts -var SplitNodeModal = class extends import_obsidian24.Modal { +var SplitNodeModal = class extends import_obsidian25.Modal { constructor(props) { super(props.plugin.app); this.props = props; this.subscriptions = /* @__PURE__ */ new Set(); this.open = () => { - this.setTitle("Choose how to split this card"); + this.setTitle("Choose how to split this section"); this.initState(); new modal_content_default({ target: this.contentEl, @@ -28081,7 +30386,7 @@ var openSplitNodeModal = async (view) => { const mode = get_store_value(modal.state.mode); if (mode && newContent !== nodeContent) { view.documentStore.dispatch({ - type: "DOCUMENT/SPLIT_NODE", + type: "document/split-node", payload: { target: activeNode, mode @@ -28098,174 +30403,261 @@ var openSplitNodeModal = async (view) => { await modal.open(); }; -// src/view/actions/context-menu/card-context-menu/helpers/insert-block-id.ts -var getExistingBlockId = (lines) => { - const reversed = [...lines].reverse(); - for (let line of reversed) { - line = line.trim(); - const match = /\s+\^([a-zA-Z0-9]{4,})$/.exec(line); - if (match) { - return match[1]; +// src/view/actions/context-menu/card-context-menu/helpers/sort-child-nodes.ts +var sortChildNodes = (view, activeNode, order) => { + view.documentStore.dispatch({ + type: "document/sort-direct-child-nodes", + payload: { + id: activeNode, + order } - } -}; -var generateBlockId = () => Math.random().toString(36).substring(2, 8); -var insertBlockId = (text2, __id__) => { - const lines = text2.trimEnd().split("\n"); - const existingId = getExistingBlockId(lines); - if (existingId) { - return { - blockId: existingId, - text: text2 - }; - } else { - const lastLine = lines[lines.length - 1]; - let blockId = null; - if (lastLine) { - blockId = __id__ || generateBlockId(); - lines[lines.length - 1] = lines[lines.length - 1] + ` ^${blockId}`; - return { - blockId, - text: lines.join("\n") - }; - } - } + }); }; -// src/view/actions/context-menu/card-context-menu/helpers/copy-link-to-block.ts -var import_obsidian25 = require("obsidian"); -var copyLinkToBlock = async (view) => { - const file = view.file; - if (!file) - return; - const viewState = view.viewStore.getValue(); - const activeNode = viewState.document.activeNode; - const isEditing2 = Boolean(viewState.document.editing.activeNodeId); - if (isEditing2) { - saveNodeContent(view); - setTimeout(() => { - copyLinkToBlock(view); - }, 100); +// src/obsidian/events/workspace/effects/toggle-obsidian-view-type.ts +var toggleObsidianViewType = (plugin, leaf, type) => { + setTimeout(() => { + leaf.setViewState({ + type, + popstate: true, + state: leaf.view.getState() + }); + plugin.app.workspace.setActiveLeaf(leaf); + }, 0); +}; + +// src/stores/settings/actions/set-document-format.ts +var setDocumentFormat = (plugin, path, type) => { + plugin.settings.dispatch({ + type: "settings/documents/set-document-format", + payload: { + path, + format: type + } + }); +}; + +// src/obsidian/events/workspace/effects/open-file-in-lineage.ts +var openFileInLineage = async (plugin, file, type, newLeaf) => { + const leaf = await openFile(plugin, file, newLeaf); + toggleObsidianViewType(plugin, leaf, "lineage"); + setDocumentFormat(plugin, file.path, type); +}; + +// src/obsidian/commands/helpers/extract-branch/helpers/get-file-name-of-extracted-branch/get-file-name-from-content.ts +var getFileNameFromContent = (text2) => { + const lines = text2.split("\n").map((line) => line.trim().replace(/\s+/g, " ")).filter((line) => line); + if (lines.length === 0) return; + let result = void 0; + const headingLine = lines.find((line) => /^(#+)\s(.+)/.test(line)); + if (headingLine) { + const headingMatch = headingLine.match(/^(#+)\s(.+)/); + result = headingMatch[2]; + } else if (lines[0].startsWith("- ")) { + result = lines[0].replace(/^- /, ""); + } else { + result = lines.join(" "); } - const documentState = view.documentStore.getValue(); - const content = documentState.document.content[activeNode]; - const text2 = content?.content; - const output = insertBlockId(text2); - if (output) { - const fileName = file.basename; + return result.substring(0, 100).trim(); +}; + +// src/obsidian/commands/helpers/extract-branch/helpers/get-file-name-of-extracted-branch/get-file-name-of-extracted-branch.ts +var getFileNameOfExtractedBranch = (nodeContent, currentFileName, sectionNumber) => { + const name = getFileNameFromContent(nodeContent); + if (name) + return name; + return `${currentFileName.trim()} - ${sectionNumber}`; +}; + +// src/obsidian/commands/helpers/extract-branch/extract-branch.ts +var extractBranch = async (view) => { + try { + invariant(view.file); + invariant(view.file.parent); + const viewState = view.viewStore.getValue(); + const isEditing2 = Boolean(viewState.document.editing.activeNodeId); + if (isEditing2) { + saveNodeContent(view); + setTimeout(() => { + extractBranch(view); + }, 100); + return; + } + const documentState = view.documentStore.getValue(); + const branch = getBranch( + documentState.document.columns, + documentState.document.content, + viewState.document.activeNode, + "copy" + ); + const format2 = getPersistedDocumentFormat(view); + const text2 = format2 === "outline" ? branchToOutline([branch]) : format2 === "html-element" ? branchToHtmlElement([branch]) : branchToHtmlComment([branch]); + const fileName = getFileNameOfExtractedBranch( + branch.content[branch.nodeId].content, + view.file.basename, + documentState.sections.id_section[branch.nodeId] + ); + const newFile = await createNewFile( + view.plugin, + view.file.parent, + text2, + fileName + ); + await openFileInLineage(view.plugin, newFile, format2, "split"); view.documentStore.dispatch({ - type: "DOCUMENT/SET_NODE_CONTENT", + type: "document/extract-node", payload: { - content: output.text, - nodeId: activeNode - }, - context: { - isInSidebar: viewState.document.editing.isInSidebar + nodeId: branch.nodeId, + documentName: newFile.basename } }); - const link = `[[${fileName}#^${output.blockId}]]`; - await navigator.clipboard.writeText(link); - new import_obsidian25.Notice("Link copied to clipboard"); - } else { - new import_obsidian25.Notice("Could not copy link to clipboard"); + } catch (e) { + onPluginError(e, "command", { type: "extract-branch" }); } }; -// src/view/actions/context-menu/card-context-menu/helpers/export-column.ts -var import_obsidian26 = require("obsidian"); -var exportColumn = async (view) => { - const viewState = view.viewStore.getValue(); - const isEditing2 = Boolean(viewState.document.editing.activeNodeId); - if (isEditing2) { - saveNodeContent(view); - setTimeout(() => { - exportColumn(view); - }, 100); - return; - } - const activeNode = viewState.document.activeNode; - invariant(activeNode); - const document2 = view.documentStore.getValue().document; - const columnIndex = findNodeColumn(document2.columns, activeNode); - const column = document2.columns[columnIndex]; - invariant(column); - const nodes = column.groups.map((g) => g.nodes).flat(); - const content = nodes.map((n) => document2.content[n].content); - const text2 = content.filter((c) => c.trim().length > 0).join("\n\n"); - if (!text2.trim()) { - new import_obsidian26.Notice("This column is empty"); - return; - } - const file = view.file; - invariant(file); - invariant(file.parent); - const newFile = await createNewFile( - view.plugin, - file.parent, - text2, - `${file.basename} - column ${columnIndex + 1}` - ); - await openFile(view.plugin, newFile, "split"); -}; - -// src/obsidian/context-menu/render-context-menu.ts -var import_obsidian27 = require("obsidian"); -var addMenuItem = (menu, menuItem) => { - if ("type" in menuItem && menuItem.type === "separator") { - menu.addSeparator(); - } else if ("title" in menuItem) { - menu.addItem((item) => { - item.setTitle(menuItem.title).setIcon(menuItem.icon).setDisabled(menuItem.disabled || false).setChecked(menuItem.checked || false); - if ("submenu" in menuItem) { - const subMenu = item.setSubmenu(); - for (const subItem of menuItem.submenu) { - addMenuItem(subMenu, subItem); +// src/view/actions/context-menu/card-context-menu/create-single-node-context-menu-items.ts +var createSingleNodeContextMenuItems = (view, { hasChildren, isPinned, activeNode }) => { + const menuItems = [ + { + title: lang.cm_split_node, + icon: customIcons.split.name, + action: () => { + if (hasChildren) { + new import_obsidian26.Notice(lang.error_cm_cant_split_node_that_has_children); + } else { + openSplitNodeModal(view); } - } else { - item.onClick(menuItem.action); } - }); - } -}; -var renderContextMenu = (event, menuItems) => { - const menu = new import_obsidian27.Menu(); - for (const menuItem of menuItems) { - addMenuItem(menu, menuItem); - } - menu.showAtMouseEvent(event); + }, + { + title: lang.cm_sort_child, + icon: "sort-asc", + disabled: !hasChildren, + submenu: [ + { + title: lang.cm_sort_child_nodes_asc, + icon: "sort-asc", + action: () => sortChildNodes(view, activeNode, "ascending") + }, + { + title: lang.cm_sort_child_nodes_desc, + icon: "sort-desc", + action: () => sortChildNodes(view, activeNode, "descending") + } + ] + }, + { type: "separator" }, + { + title: lang.cm_merge_above, + icon: "merge", + action: () => mergeNode(view, "up") + }, + { + title: lang.cm_merge_below, + icon: "merge", + action: () => mergeNode(view, "down") + }, + { type: "separator" }, + { + title: lang.cm_copy_link_to_block, + icon: "links-coming-in", + action: () => copyLinkToBlock(view, false) + }, + { type: "separator" }, + !hasChildren ? { + title: lang.cm_copy, + icon: "documents", + action: () => copyActiveNodesToClipboard(view, false) + } : { + title: lang.cm_copy, + icon: "documents", + submenu: [ + { + title: lang.cm_copy_branch, + icon: "lineage-cards", + action: () => copyActiveBranchesToClipboard(view, true, false) + }, + { + title: lang.cm_copy_branch_wo_formatting, + icon: "file-text", + action: () => copyActiveBranchesToClipboard(view, false, false) + }, + { + title: lang.cm_copy_nodes_wo_subitems, + icon: "file-text", + action: () => copyActiveNodesToClipboard(view, false) + } + ] + }, + { + title: lang.cm_cut, + icon: "scissors", + action: () => cutNode(view) + }, + { + title: lang.cm_paste, + icon: "paste", + action: () => pasteNode(view) + }, + { type: "separator" }, + { + title: isPinned ? lang.cm_unpin_from_left_sidebar : lang.cm_pin_in_left_sidebar, + icon: isPinned ? "pin-off" : "pin", + action: () => { + togglePinNode(view, activeNode, false, false); + } + }, + { type: "separator" }, + { + title: hasChildren ? lang.cm_extract_branch : lang.cm_extract_section, + icon: customIcons.cards.name, + action: () => extractBranch(view) + }, + !hasChildren ? { + title: lang.cm_export_section, + icon: "file-text", + action: () => exportSelection(view, false) + } : { + title: lang.cm_export_selection, + icon: "file-text", + submenu: [ + { + title: lang.cm_export_branch_with_subitems, + icon: "file-text", + action: () => exportSelection(view, true) + }, + { + title: lang.cm_export_branch_wo_subitems, + icon: "file-text", + action: () => exportSelection(view, false) + } + ] + } + ]; + return menuItems; }; -// src/obsidian/context-menu/select-inactive-card.ts -var selectInactiveCard = (view, closestCardElement, isInSidebar, isInRecentCardsList) => { - const id2 = closestCardElement?.id; - if (!isInSidebar) { - view.viewStore.dispatch({ - type: "view/set-active-node/mouse-silent", - payload: { - id: id2 - } - }); - } else if (isInRecentCardsList) { - view.viewStore.dispatch({ - type: "view/recent-nodes/set-active-node", - payload: { - id: id2 - } - }); - } else { - view.viewStore.dispatch({ - type: "view/pinned-nodes/set-active-node", - payload: { - id: id2 - } - }); - } +// src/view/actions/context-menu/card-context-menu/show-node-context-menu.ts +var getContextMenuContext = (view, isInSidebar, isInRecentCardsList) => { + const viewState = view.viewStore.getValue(); + const multipleNodesAreSelected = !isInSidebar && viewState.document.selectedNodes.size > 1; + const documentStore = view.documentStore; + const documentState = documentStore.getValue(); + const activeNode = viewState.document.activeNode; + const isPinned = isInSidebar && !isInRecentCardsList || documentState.pinnedNodes.Ids.includes(activeNode); + const hasChildren = documentState.meta.groupParentIds.has(activeNode); + return { + activeNode, + isPinned, + isInSidebar, + isInRecentCardsList, + multipleNodesAreSelected, + hasChildren + }; }; - -// src/view/actions/context-menu/card-context-menu/show-card-context-menu.ts -var import_obsidian28 = require("obsidian"); -var showCardContextMenu = (event, view) => { +var showNodeContextMenu = (event, view) => { const target = event.target; const closestCardElement = target.closest( ".lineage-card" @@ -28285,121 +30677,30 @@ var showCardContextMenu = (event, view) => { isInRecentCardsList ); } - const viewState = view.viewStore.getValue(); - const multipleNodesAreSelected = !isInSidebar && viewState.document.selectedNodes.size > 1; - const documentStore = view.documentStore; - const documentState = documentStore.getValue(); - const activeNode = viewState.document.activeNode; - const isPinned = isInSidebar && !isInRecentCardsList || documentState.pinnedNodes.Ids.includes(activeNode); - const hasChildren = documentState.meta.groupParentIds.has(activeNode); - const menuItems = [ - { - title: lang.cm_split_card, - icon: customIcons.split.name, - action: () => { - if (hasChildren) { - new import_obsidian28.Notice(lang.error_cm_cant_split_card_that_has_children); - } else { - openSplitNodeModal(view); - } - }, - disabled: multipleNodesAreSelected || isInSidebar - }, - { type: "separator" }, - { - title: lang.cm_merge_above, - icon: "merge", - action: () => mergeNode(view, "up"), - disabled: multipleNodesAreSelected || isInSidebar - }, - { - title: lang.cm_merge_below, - icon: "merge", - action: () => mergeNode(view, "down"), - disabled: multipleNodesAreSelected || isInSidebar - }, - { type: "separator" }, - { - title: lang.cm_copy_link_to_block, - icon: "links-coming-in", - action: () => copyLinkToBlock(view), - disabled: multipleNodesAreSelected - }, - { type: "separator" }, - !multipleNodesAreSelected && !hasChildren ? { - title: lang.cm_copy, - icon: "documents", - action: () => copyActiveNodesToClipboard(view) - } : { - title: lang.cm_copy, - icon: "documents", - submenu: [ - { - title: multipleNodesAreSelected ? lang.cm_copy_branches : lang.cm_copy_branch, - icon: "lineage-cards", - action: () => copyActiveBranchesToClipboard(view, true) - }, - { - title: multipleNodesAreSelected ? lang.cm_copy_branches_wo_formatting : lang.cm_copy_branch_wo_formatting, - icon: "file-text", - action: () => copyActiveBranchesToClipboard(view, false) - }, - { - title: multipleNodesAreSelected ? lang.cm_copy_section_wo_subitems : lang.cm_copy_sections_wo_subitems, - icon: "file-text", - action: () => copyActiveNodesToClipboard(view) - } - ] - }, - { - title: lang.cm_cut, - icon: "scissors", - action: () => cutNode(view), - disabled: isInSidebar - }, - { - title: lang.cm_paste, - icon: "paste", - action: () => pasteNode(view), - disabled: isInSidebar - }, - { type: "separator" }, - { - title: isPinned ? lang.cm_unpin_from_left_sidebar : lang.cm_pin_in_left_sidebar, - icon: isPinned ? "pin-off" : "pin", - action: () => { - documentStore.dispatch({ - type: isPinned ? "document/pinned-nodes/unpin" : "document/pinned-nodes/pin", - payload: { id: activeNode } - }); - }, - disabled: isInRecentCardsList || multipleNodesAreSelected - }, - { type: "separator" }, - { - title: lang.cm_extract_branch, - icon: customIcons.cards.name, - action: () => extractBranch(view), - disabled: multipleNodesAreSelected || isInSidebar - }, - { - title: lang.cm_export_column, - icon: "file-text", - action: () => exportColumn(view), - disabled: multipleNodesAreSelected || isInSidebar - } - ]; + const context = getContextMenuContext( + view, + isInSidebar, + isInRecentCardsList + ); + let menuItems; + if (context.isInSidebar) { + menuItems = createSidebarContextMenuItems(view, context); + } else if (context.multipleNodesAreSelected) { + menuItems = createMultipleNodesContextMenu(view); + } else { + menuItems = createSingleNodeContextMenuItems(view, context); + } renderContextMenu(event, menuItems); }; -// src/view/actions/context-menu/card-context-menu/card-context-menu-predicate.ts -var cardContextMenuPredicate = (e) => { +// src/view/actions/context-menu/card-context-menu/should-show-node-context-menu.ts +var shouldShowNodeContextMenu = (e) => { const target = e.target; return !target.hasClass("drag-handle") && Boolean(target.closest(".lineage-card")); }; -// src/view/actions/context-menu/view-context-menu/view-context-menu-predicate.ts -var viewContextMenuPredicate = (e) => { +// src/view/actions/context-menu/view-context-menu/should-show-view-context-menu.ts +var shouldShowViewContextMenu = (e) => { const target = e.target; return target.hasClass("column-buffer") || target.hasClass("column") || target.hasClass("group") || target.hasClass("columns") || target.hasClass("columns-container"); }; @@ -28500,7 +30801,7 @@ var htmlElementToJson = (text2) => { const [parent, , full] = sectionNumber; const isASibling = parent === currentParentNumber; const newNode = { - content: line.replace(htmlCommentRegex2, ""), + content: line.replace(htmlElementRegex, ""), children: [] }; map[full] = newNode; @@ -28560,9 +30861,9 @@ var htmlElementToJson = (text2) => { }; // src/obsidian/commands/helpers/export-document/map-document-to-text.ts -var mapDocumentToText = (fileData, basename, format2) => { - const { data, frontmatter } = extractFrontmatter(fileData); - const tree = format2 === "outline" ? outlineToJson(data) : format2 === "html-element" ? htmlElementToJson(data) : htmlCommentToJson(data); +var mapDocumentToText = (fileData, format2) => { + const { body, frontmatter } = extractFrontmatter(fileData); + const tree = format2 === "outline" ? outlineToJson(body) : format2 === "html-element" ? htmlElementToJson(body) : htmlCommentToJson(body); return (frontmatter ? frontmatter + "\n" : "") + jsonToText(tree); }; @@ -28584,8 +30885,8 @@ var exportDocument = async (view) => { return; } const fileData = await view.plugin.app.vault.read(file); - const format2 = getDocumentFormat(view); - const output = mapDocumentToText(fileData, file.basename, format2); + const format2 = getPersistedDocumentFormat(view); + const output = mapDocumentToText(fileData, format2); const newFile = await createNewFile( view.plugin, file.parent, @@ -28600,12 +30901,40 @@ var exportDocument = async (view) => { } }; +// src/obsidian/commands/helpers/export-document/eject-document.ts +var ejectDocument = async (view) => { + try { + const file = view.file; + if (!file) + return; + if (!file.parent) + return; + const viewState = view.viewStore.getValue(); + const isEditing2 = Boolean(viewState.document.editing.activeNodeId); + if (isEditing2) { + saveNodeContent(view); + setTimeout(() => { + ejectDocument(view); + }, 100); + return; + } + const fileData = await view.plugin.app.vault.read(file); + const format2 = getPersistedDocumentFormat(view); + const text2 = mapDocumentToText(fileData, format2); + await view.plugin.app.vault.modify(file, text2); + toggleObsidianViewType(view.plugin, view.leaf, "markdown"); + setViewType(view.plugin, file.path, "markdown"); + } catch (e) { + onPluginError(e, "command", { type: "export-document" }); + } +}; + // src/view/actions/context-menu/view-context-menu/show-view-context-menu.ts var showViewContextMenu = (event, view) => { const file = view.file; if (!file) return; - const format2 = getDocumentFormat(view); + const format2 = getPersistedDocumentFormat(view); const isOutline2 = format2 === "outline"; const isHtmlElement = format2 === "html-element"; const isHtmlComments = format2 === "sections"; @@ -28617,35 +30946,45 @@ var showViewContextMenu = (event, view) => { action: () => { saveNodeContent(view); view.documentStore.dispatch({ - type: "DOCUMENT/FORMAT_HEADINGS" + type: "document/format-headings" }); }, disabled: !_hasHeading }, { type: "separator" }, { - title: lang.cm_change_format_to_html_element, + title: lang.cm_document_format, icon: "file-cog", - action: () => { - setDocumentFormat(view.plugin, file.path, "html-element"); - }, - checked: isHtmlElement - }, - { - title: lang.cm_change_format_to_document, - icon: "file-cog", - action: () => { - setDocumentFormat(view.plugin, file.path, "sections"); - }, - checked: isHtmlComments - }, - { - title: lang.cm_change_format_to_outline, - icon: "file-cog", - action: () => { - setDocumentFormat(view.plugin, file.path, "outline"); - }, - checked: isOutline2 + submenu: [ + { + title: lang.settings_format_html_elements, + icon: "file-cog", + action: () => { + setDocumentFormat( + view.plugin, + file.path, + "html-element" + ); + }, + checked: isHtmlElement + }, + { + title: lang.settings_format_html_comments, + icon: "file-cog", + action: () => { + setDocumentFormat(view.plugin, file.path, "sections"); + }, + checked: isHtmlComments + }, + { + title: lang.settings_format_outline, + icon: "file-cog", + action: () => { + setDocumentFormat(view.plugin, file.path, "outline"); + }, + checked: isOutline2 + } + ] }, { type: "separator" }, { @@ -28654,20 +30993,28 @@ var showViewContextMenu = (event, view) => { action: () => { exportDocument(view); } + }, + { + title: lang.cm_eject_document, + icon: "file-text", + action: () => { + ejectDocument(view); + }, + dangerous: true } ]; renderContextMenu(event, menuItems); }; -// src/view/actions/context-menu/context-menu.ts -var contextMenu = (element2, view) => { +// src/view/actions/context-menu/show-context-menu.ts +var showContextMenu = (element2, view) => { const listener = (e) => { - if (cardContextMenuPredicate(e)) { + if (shouldShowNodeContextMenu(e)) { if (e.instanceOf(MouseEvent)) - showCardContextMenu(e, view); + showNodeContextMenu(e, view); else - showCardContextMenu(new MouseEvent("contextmenu", e), view); - } else if (viewContextMenuPredicate(e)) { + showNodeContextMenu(new MouseEvent("contextmenu", e), view); + } else if (shouldShowViewContextMenu(e)) { if (e.instanceOf(MouseEvent)) showViewContextMenu(e, view); else @@ -28676,11 +31023,11 @@ var contextMenu = (element2, view) => { }; element2.addEventListener("contextmenu", listener); let unsubFromLongPress = null; - if (import_obsidian29.Platform.isMobile) { + if (import_obsidian27.Platform.isMobile) { unsubFromLongPress = onLongPress( element2, listener, - cardContextMenuPredicate + shouldShowNodeContextMenu ); } return { @@ -28694,10 +31041,10 @@ var contextMenu = (element2, view) => { }; // src/view/components/container/dnd/dnd-edges.svelte -function add_css42(target) { +function add_css47(target) { append_styles(target, "svelte-gs5nl7", ".hide.svelte-gs5nl7{display:none}#dnd-edge-top.svelte-gs5nl7,#dnd-edge-bottom.svelte-gs5nl7{height:40px;position:absolute;left:0;right:0;z-index:100;background-color:var(--color-base-20);opacity:0.1}#dnd-edge-top.svelte-gs5nl7{top:0}#dnd-edge-bottom.svelte-gs5nl7{bottom:0}#dnd-edge-left.svelte-gs5nl7,#dnd-edge-right.svelte-gs5nl7{width:40px;position:absolute;top:40px;bottom:40px;z-index:100;background-color:var(--color-base-20);opacity:0.1}#dnd-edge-left.svelte-gs5nl7{left:0}#dnd-edge-right.svelte-gs5nl7{right:0}"); } -function create_fragment101(ctx) { +function create_fragment110(ctx) { let div0; let div0_class_value; let t0; @@ -28793,7 +31140,7 @@ function create_fragment101(ctx) { } }; } -function instance98($$self, $$props, $$invalidate) { +function instance108($$self, $$props, $$invalidate) { let $dnd; const view = getView(); const dnd = dndStore(view); @@ -28803,23 +31150,29 @@ function instance98($$self, $$props, $$invalidate) { var Dnd_edges = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance98, create_fragment101, safe_not_equal, {}, add_css42); + init(this, options, instance108, create_fragment110, safe_not_equal, {}, add_css47); } }; var dnd_edges_default = Dnd_edges; // src/stores/settings/derived/style-rules.ts -var DocumentStyleRulesStore = (view) => derived(view.plugin.settings, (state2) => { - if (!view.file?.path) - return []; - return state2.styleRules.documents[view.file.path]?.rules || []; +var DocumentStyleRulesStore = (view) => derived2(view.plugin.settings, (state2) => { + invariant(view.file?.path); + const documentRules = state2.styleRules.documents[view.file.path]; + return documentRules ? documentRules.rules : []; +}); +var GlobalStyleRulesStore = (view) => derived2(view.plugin.settings, (state2) => { + return state2.styleRules.global.rules; +}); +var ActiveStyleRulesTab = (view) => derived2(view.plugin.settings, (state2) => { + return state2.styleRules.settings.activeTab; }); // src/view/components/container/style-rules/components/style-rules-list/components/style-rule/components/rule-info.svelte -function add_css43(target) { +function add_css48(target) { append_styles(target, "svelte-1pay5a3", ".rule-info.svelte-1pay5a3{width:fit-content;padding-top:4px;padding-bottom:4px;padding-right:8px;border-right:1px solid var(--text-faint);display:flex;align-items:center;justify-content:center}"); } -function create_fragment102(ctx) { +function create_fragment111(ctx) { let div; let navigationbuttons; let current; @@ -28866,7 +31219,7 @@ function create_fragment102(ctx) { } }; } -function instance99($$self, $$props, $$invalidate) { +function instance109($$self, $$props, $$invalidate) { let { rule } = $$props; let { results } = $$props; $$self.$$set = ($$props2) => { @@ -28880,7 +31233,7 @@ function instance99($$self, $$props, $$invalidate) { var Rule_info = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance99, create_fragment102, safe_not_equal, { rule: 1, results: 0 }, add_css43); + init(this, options, instance109, create_fragment111, safe_not_equal, { rule: 1, results: 0 }, add_css48); } }; var rule_info_default = Rule_info; @@ -28888,10 +31241,14 @@ var rule_info_default = Rule_info; // src/view/components/container/style-rules/helpers/constants.ts var targets = [ "self", - "direct-parent", + "self-or-any-parent", + "self-or-any-children", + "self-or-direct-parent", + "self-or-direct-children", "any-parent", - "direct-children", - "any-children" + "any-children", + "direct-parent", + "direct-children" ]; var stringOperators = [ "contains", @@ -28980,10 +31337,14 @@ var ruleEditorEventHandlers = (view, ruleId) => { // src/lang/style-rules-lang.ts var styleRulesLang = { targets: { - self: "Of card", - "direct-parent": "Of immediate parent", + self: "Of section", + "self-or-direct-parent": "Of section or direct parent", + "self-or-any-parent": "Of section or any parent", + "self-or-direct-children": "Of section or direct child", + "self-or-any-children": "Of section or any child", + "direct-parent": "Of direct parent", "any-parent": "Of any parent", - "direct-children": "Of immediate child", + "direct-children": "Of direct child", "any-children": "Of any child" }, operators: { @@ -29022,15 +31383,15 @@ var styleRulesLang = { }; // src/view/components/container/style-rules/components/style-rules-list/components/style-rule/components/rule-editor.svelte -function add_css44(target) { +function add_css49(target) { append_styles(target, "svelte-1yba036", ".rule-editor.svelte-1yba036{display:flex;gap:8px;align-items:center;position:relative;width:90%;flex:1;flex-wrap:wrap}.select-elements.svelte-1yba036{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;& select {\n font-size: 12px;\n width: 130px;\n }}.input-elements.svelte-1yba036{width:130px;display:flex;gap:8px;align-items:center;justify-content:space-between;& input {\n font-size: 12px;\n width: 100%;\n }}"); } -function get_each_context_1(ctx, list, i) { +function get_each_context_13(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[5] = list[i]; return child_ctx; } -function get_each_context15(ctx, list, i) { +function get_each_context19(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[5] = list[i]; return child_ctx; @@ -29095,12 +31456,12 @@ function create_each_block_2(ctx) { } }; } -function create_else_block11(ctx) { +function create_else_block13(ctx) { let each_1_anchor; let each_value_1 = ensure_array_like(numericOperators); let each_blocks = []; for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + each_blocks[i] = create_each_block_13(get_each_context_13(ctx, each_value_1, i)); } return { c() { @@ -29125,12 +31486,12 @@ function create_else_block11(ctx) { } }; } -function create_if_block_24(ctx) { +function create_if_block_26(ctx) { let each_1_anchor; let each_value = ensure_array_like(stringOperators); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block15(get_each_context15(ctx, each_value, i)); + each_blocks[i] = create_each_block19(get_each_context19(ctx, each_value, i)); } return { c() { @@ -29155,7 +31516,7 @@ function create_if_block_24(ctx) { } }; } -function create_each_block_1(ctx) { +function create_each_block_13(ctx) { let option; let option_value_value; return { @@ -29180,7 +31541,7 @@ function create_each_block_1(ctx) { } }; } -function create_each_block15(ctx) { +function create_each_block19(ctx) { let option; let option_value_value; return { @@ -29333,7 +31694,7 @@ function create_if_block28(ctx) { } }; } -function create_fragment103(ctx) { +function create_fragment112(ctx) { let div2; let div0; let select0; @@ -29368,8 +31729,8 @@ function create_fragment103(ctx) { /*isStringCondition*/ ctx2[1] ) - return create_if_block_24; - return create_else_block11; + return create_if_block_26; + return create_else_block13; } let current_block_type = select_block_type(ctx, -1); let if_block0 = current_block_type(ctx); @@ -29561,7 +31922,7 @@ function create_fragment103(ctx) { } }; } -function instance100($$self, $$props, $$invalidate) { +function instance110($$self, $$props, $$invalidate) { let operatorIsBetween; let isStringCondition; let { rule } = $$props; @@ -29588,7 +31949,7 @@ function instance100($$self, $$props, $$invalidate) { var Rule_editor = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance100, create_fragment103, safe_not_equal, { rule: 0 }, add_css44); + init(this, options, instance110, create_fragment112, safe_not_equal, { rule: 0 }, add_css49); } }; var rule_editor_default = Rule_editor; @@ -29619,15 +31980,15 @@ var ruleStyleEditorEventHandlers = (view, ruleId) => { }; // src/view/components/container/style-rules/components/style-rules-list/components/style-rule/components/rule-style-editor.svelte -function add_css45(target) { +function add_css50(target) { append_styles(target, "svelte-13w1xs", ".rule-style-config.svelte-13w1xs{width:fit-content;padding:4px;padding-right:0px;border-left:1px solid var(--text-faint);display:flex;align-items:center;gap:8px;justify-content:center}.select-elements.svelte-13w1xs{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;& select {\n font-size: 12px;\n width: 130px;\n }}"); } -function get_each_context16(ctx, list, i) { +function get_each_context20(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[3] = list[i]; return child_ctx; } -function create_each_block16(ctx) { +function create_each_block20(ctx) { let option; let option_value_value; return { @@ -29652,7 +32013,7 @@ function create_each_block16(ctx) { } }; } -function create_fragment104(ctx) { +function create_fragment113(ctx) { let div1; let input; let input_value_value; @@ -29665,7 +32026,7 @@ function create_fragment104(ctx) { let each_value = ensure_array_like(styleVariants); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block16(get_each_context16(ctx, each_value, i)); + each_blocks[i] = create_each_block20(get_each_context20(ctx, each_value, i)); } return { c() { @@ -29745,7 +32106,7 @@ function create_fragment104(ctx) { } }; } -function instance101($$self, $$props, $$invalidate) { +function instance111($$self, $$props, $$invalidate) { let { rule } = $$props; const view = getView(); const h = ruleStyleEditorEventHandlers(view, rule.id); @@ -29758,7 +32119,7 @@ function instance101($$self, $$props, $$invalidate) { var Rule_style_editor = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance101, create_fragment104, safe_not_equal, { rule: 0 }, add_css45); + init(this, options, instance111, create_fragment113, safe_not_equal, { rule: 0 }, add_css50); } }; var rule_style_editor_default = Rule_style_editor; @@ -29842,41 +32203,42 @@ var ruleDndAction = (element2, { }; // src/view/components/container/style-rules/components/style-rules-list/components/style-rule/components/rule-actions.svelte -function add_css46(target) { - append_styles(target, "svelte-g9rst9", ".rule-actions.svelte-g9rst9{display:flex;align-items:center;gap:8px;padding-top:4px;padding-bottom:4px;padding-left:8px;border-left:1px solid var(--text-faint);justify-content:center}.delete-button.svelte-g9rst9{color:var(--color-red)\n }"); +var import_obsidian28 = require("obsidian"); +function add_css51(target) { + append_styles(target, "svelte-1gydyks", ".rule-actions.svelte-1gydyks{display:flex;align-items:center;padding-top:4px;padding-bottom:4px;padding-left:8px;border-left:1px solid var(--text-faint);justify-content:center}"); } -function create_fragment105(ctx) { +function create_fragment114(ctx) { let div1; let input; let input_checked_value; let t; let div0; - let trash; + let morevertical; let current; let mounted; let dispose; - trash = new trash_default({ props: { class: "svg-icon" } }); + morevertical = new more_vertical_default({ props: { class: "svg-icon" } }); return { c() { div1 = element("div"); input = element("input"); t = space(); div0 = element("div"); - create_component(trash.$$.fragment); + create_component(morevertical.$$.fragment); attr(input, "type", "checkbox"); input.checked = input_checked_value = /*rule*/ ctx[0].enabled; attr(input, "aria-label", "Enable"); - attr(div0, "class", "clickable-icon delete-button svelte-g9rst9"); - attr(div0, "aria-label", "Delete"); - attr(div1, "class", "rule-actions svelte-g9rst9"); + attr(div0, "class", "clickable-icon"); + attr(div0, "aria-label", "Actions"); + attr(div1, "class", "rule-actions svelte-1gydyks"); }, m(target, anchor) { insert(target, div1, anchor); append(div1, input); append(div1, t); append(div1, div0); - mount_component(trash, div0, null); + mount_component(morevertical, div0, null); current = true; if (!mounted) { dispose = [ @@ -29889,7 +32251,7 @@ function create_fragment105(ctx) { listen( div0, "click", - /*deleteRule*/ + /*showContextMenu*/ ctx[2] ) ]; @@ -29906,24 +32268,24 @@ function create_fragment105(ctx) { i(local) { if (current) return; - transition_in(trash.$$.fragment, local); + transition_in(morevertical.$$.fragment, local); current = true; }, o(local) { - transition_out(trash.$$.fragment, local); + transition_out(morevertical.$$.fragment, local); current = false; }, d(detaching) { if (detaching) { detach(div1); } - destroy_component(trash); + destroy_component(morevertical); mounted = false; run_all(dispose); } }; } -function instance102($$self, $$props, $$invalidate) { +function instance112($$self, $$props, $$invalidate) { let { rule } = $$props; const view = getView(); const toggleRule = (e) => { @@ -29945,25 +32307,78 @@ function instance102($$self, $$props, $$invalidate) { } }); }; + const moveRule = () => { + const activeTab = get_store_value(ActiveStyleRulesTab(view)); + const activeTabIsGlobal = activeTab === "global-rules"; + view.plugin.settings.dispatch({ + type: "settings/style-rules/toggle-global", + payload: { + id: rule.id, + documentPath: view.file.path + } + }); + view.plugin.settings.dispatch({ + type: "settings/style-rules/set-active-tab", + payload: { + tab: activeTabIsGlobal ? "document-rules" : "global-rules" + } + }); + }; + const duplicateRule = () => { + view.plugin.settings.dispatch({ + type: "settings/style-rules/duplicate-rule", + payload: { + id: rule.id, + documentPath: view.file.path + } + }); + }; + const showContextMenu2 = (e) => { + const target = e.target; + if (target.localName === "input") + return; + const menu = new import_obsidian28.Menu(); + const activeTab = get_store_value(ActiveStyleRulesTab(view)); + const activeTabIsGlobal = activeTab === "global-rules"; + menu.addItem((item) => { + item.setTitle(activeTabIsGlobal ? lang.modals_rules_rule_cm_move_to_document : lang.modals_rules_rule_cm_move_to_global); + item.setIcon(activeTabIsGlobal ? "file-text" : "globe"); + item.onClick(moveRule); + }); + menu.addItem((item) => { + item.setTitle("Duplicate"); + item.setIcon("copy"); + item.onClick(duplicateRule); + }); + menu.addItem((item) => { + item.setTitle("Delete"); + item.setIcon("trash"); + item.onClick(deleteRule); + if ("dom" in item) { + item.dom.addClass("is-warning"); + } + }); + menu.showAtMouseEvent(e); + }; $$self.$$set = ($$props2) => { if ("rule" in $$props2) $$invalidate(0, rule = $$props2.rule); }; - return [rule, toggleRule, deleteRule]; + return [rule, toggleRule, showContextMenu2]; } var Rule_actions = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance102, create_fragment105, safe_not_equal, { rule: 0 }, add_css46); + init(this, options, instance112, create_fragment114, safe_not_equal, { rule: 0 }, add_css51); } }; var rule_actions_default = Rule_actions; // src/view/components/container/style-rules/components/style-rules-list/components/style-rule/style-rule.svelte -function add_css47(target) { +function add_css52(target) { append_styles(target, "svelte-13uscz", ".rule-container.svelte-13uscz{margin-top:10px;display:flex;border-radius:4px;overflow:hidden;background-color:var(--color-base-20);padding:12px;gap:8px;flex-wrap:wrap}.drag-handle.svelte-13uscz{cursor:grab;color:var(--text-muted);padding:4px;display:flex;align-items:center}.drag-handle.svelte-13uscz:hover{color:var(--text-normal)}.rule-container.svelte-13uscz:nth-child(-n + 1){margin-top:0}"); } -function create_fragment106(ctx) { +function create_fragment115(ctx) { let div1; let div0; let gripvertical; @@ -30148,7 +32563,7 @@ function create_fragment106(ctx) { } }; } -function instance103($$self, $$props, $$invalidate) { +function instance113($$self, $$props, $$invalidate) { let { setDraggedRule } = $$props; let { setDropTarget } = $$props; let { resetDragState } = $$props; @@ -30175,8 +32590,8 @@ var Style_rule = class extends SvelteComponent { init( this, options, - instance103, - create_fragment106, + instance113, + create_fragment115, safe_not_equal, { setDraggedRule: 0, @@ -30185,14 +32600,14 @@ var Style_rule = class extends SvelteComponent { rule: 3, results: 4 }, - add_css47 + add_css52 ); } }; var style_rule_default = Style_rule; // src/view/components/container/style-rules/components/style-rules-list/components/drop-target.svelte -function add_css48(target) { +function add_css53(target) { append_styles(target, "svelte-1xjkxat", ".drop-target.svelte-1xjkxat{height:50px;background-color:var(--interactive-hover);border-radius:4px}"); } function create_if_block_110(ctx) { @@ -30263,7 +32678,7 @@ function create_if_block29(ctx) { } }; } -function create_fragment107(ctx) { +function create_fragment116(ctx) { let t0; let t1; let if_block1_anchor; @@ -30394,7 +32809,7 @@ function create_fragment107(ctx) { } var dragover_handler = (e) => e.preventDefault(); var dragover_handler_1 = (e) => e.preventDefault(); -function instance104($$self, $$props, $$invalidate) { +function instance114($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; var _a; let { rule } = $$props; @@ -30449,8 +32864,8 @@ var Drop_target = class extends SvelteComponent { init( this, options, - instance104, - create_fragment107, + instance114, + create_fragment116, safe_not_equal, { rule: 2, @@ -30458,17 +32873,17 @@ var Drop_target = class extends SvelteComponent { dropPosition: 0, draggedRule: 4 }, - add_css48 + add_css53 ); } }; var drop_target_default = Drop_target; // src/view/components/container/style-rules/components/style-rules-list/components/empty-list.svelte -function add_css49(target) { +function add_css54(target) { append_styles(target, "svelte-1tkjjmq", ".pane-empty.svelte-1tkjjmq{height:100%;flex:1;display:flex;align-items:center;justify-content:center}"); } -function create_fragment108(ctx) { +function create_fragment117(ctx) { let div2; let div0; let stylerulecontainer; @@ -30537,7 +32952,7 @@ function create_fragment108(ctx) { } }; } -function instance105($$self) { +function instance115($$self) { const rule = { style: { color: "", styleVariant: "left-border" }, enabled: false, @@ -30560,21 +32975,21 @@ function instance105($$self) { var Empty_list = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance105, create_fragment108, safe_not_equal, {}, add_css49); + init(this, options, instance115, create_fragment117, safe_not_equal, {}, add_css54); } }; var empty_list_default = Empty_list; // src/view/components/container/style-rules/components/style-rules-list/style-rules-list.svelte -function add_css50(target) { +function add_css55(target) { append_styles(target, "svelte-1se33m3", ".rules-list.svelte-1se33m3{padding:10px;height:100%}.rules-list.dragging.svelte-1se33m3{background-color:var(--interactive-hover)}"); } -function get_each_context17(ctx, list, i) { +function get_each_context21(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[9] = list[i]; return child_ctx; } -function create_else_block12(ctx) { +function create_else_block14(ctx) { let each_blocks = []; let each_1_lookup = /* @__PURE__ */ new Map(); let each_1_anchor; @@ -30588,9 +33003,9 @@ function create_else_block12(ctx) { ctx2[9].id ); for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context17(ctx, each_value, i); + let child_ctx = get_each_context21(ctx, each_value, i); let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block17(key, child_ctx)); + each_1_lookup.set(key, each_blocks[i] = create_each_block21(key, child_ctx)); } return { c() { @@ -30616,7 +33031,7 @@ function create_else_block12(ctx) { ctx2[0] ); group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block17, each_1_anchor, get_each_context17); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, each_1_anchor.parentNode, outro_and_destroy_block, create_each_block21, each_1_anchor, get_each_context21); check_outros(); } }, @@ -30672,7 +33087,7 @@ function create_if_block30(ctx) { } }; } -function create_if_block_25(ctx) { +function create_if_block_27(ctx) { let stylerulecontainer; let current; stylerulecontainer = new style_rule_default({ @@ -30761,7 +33176,7 @@ function create_if_block_111(ctx) { /*$dragState*/ ctx[1].draggedRule ), - $$slots: { default: [create_default_slot57] }, + $$slots: { default: [create_default_slot65] }, $$scope: { ctx } } }); @@ -30808,7 +33223,7 @@ function create_if_block_111(ctx) { } }; } -function create_default_slot57(ctx) { +function create_default_slot65(ctx) { let stylerulecontainer; let t; let current; @@ -30882,13 +33297,13 @@ function create_default_slot57(ctx) { } }; } -function create_each_block17(key_1, ctx) { +function create_each_block21(key_1, ctx) { let first; let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block_111, create_if_block_25]; + const if_block_creators = [create_if_block_111, create_if_block_27]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { if ( @@ -30978,7 +33393,7 @@ function create_each_block17(key_1, ctx) { } }; } -function create_fragment109(ctx) { +function create_fragment118(ctx) { let div; let current_block_type_index; let if_block; @@ -30986,7 +33401,7 @@ function create_fragment109(ctx) { let current; let mounted; let dispose; - const if_block_creators = [create_if_block30, create_else_block12]; + const if_block_creators = [create_if_block30, create_else_block14]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -31066,7 +33481,7 @@ function create_fragment109(ctx) { } }; } -function instance106($$self, $$props, $$invalidate) { +function instance116($$self, $$props, $$invalidate) { let $dragState; let $allMatches; let { rules } = $$props; @@ -31114,16 +33529,16 @@ function instance106($$self, $$props, $$invalidate) { var Style_rules_list = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance106, create_fragment109, safe_not_equal, { rules: 0 }, add_css50); + init(this, options, instance116, create_fragment118, safe_not_equal, { rules: 0 }, add_css55); } }; var style_rules_list_default = Style_rules_list; // src/view/components/container/style-rules/components/style-rules-footer.svelte -function add_css51(target) { - append_styles(target, "svelte-n13666", ".modal-footer.svelte-n13666{width:100%;padding-bottom:10px;display:flex;justify-content:end}.add-rule.svelte-n13666{border:none;border-radius:4px;cursor:pointer;align-self:end;margin-right:10px;padding:8px}"); +function add_css56(target) { + append_styles(target, "svelte-77s61g", ".modal-footer.svelte-77s61g{width:100%;padding-bottom:10px;display:flex;justify-content:end}.add-rule.svelte-77s61g{border:none;border-radius:4px;cursor:pointer;align-self:end;margin-right:10px;padding:8px}"); } -function create_fragment110(ctx) { +function create_fragment119(ctx) { let div; let button; let mounted; @@ -31133,8 +33548,8 @@ function create_fragment110(ctx) { div = element("div"); button = element("button"); button.textContent = `${lang.modals_rules_add_rule}`; - attr(button, "class", "add-rule svelte-n13666"); - attr(div, "class", "modal-footer svelte-n13666"); + attr(button, "class", "add-rule svelte-77s61g"); + attr(div, "class", "modal-footer svelte-77s61g"); }, m(target, anchor) { insert(target, div, anchor); @@ -31161,7 +33576,7 @@ function create_fragment110(ctx) { } }; } -function instance107($$self) { +function instance117($$self) { const view = getView(); const addRule = () => { var _a; @@ -31176,16 +33591,16 @@ function instance107($$self) { var Style_rules_footer = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance107, create_fragment110, safe_not_equal, {}, add_css51); + init(this, options, instance117, create_fragment119, safe_not_equal, {}, add_css56); } }; var style_rules_footer_default = Style_rules_footer; // src/view/components/container/shared/draggable-modal/draggable-modal.svelte -function add_css52(target) { +function add_css57(target) { append_styles(target, "svelte-1l68k51", ".drag-handle.svelte-1l68k51.svelte-1l68k51{position:absolute;left:0;top:0;bottom:0;width:8px;cursor:grab;background-color:transparent;z-index:1}.lineage-modal.svelte-1l68k51:hover .drag-handle.svelte-1l68k51{background-size:2px 4px;background-image:linear-gradient(\n 0deg,\n hsla(0, 0%, 60%, 0.35) 20%,\n transparent 40%\n )}.drag-handle.svelte-1l68k51.svelte-1l68k51:active{cursor:grabbing}"); } -function create_fragment111(ctx) { +function create_fragment120(ctx) { let div1; let div0; let t; @@ -31280,7 +33695,7 @@ function create_fragment111(ctx) { } }; } -function instance108($$self, $$props, $$invalidate) { +function instance118($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; let modal; let startX; @@ -31336,77 +33751,511 @@ function instance108($$self, $$props, $$invalidate) { var Draggable_modal = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance108, create_fragment111, safe_not_equal, {}, add_css52); + init(this, options, instance118, create_fragment120, safe_not_equal, {}, add_css57); } }; var draggable_modal_default = Draggable_modal; -// src/view/components/container/style-rules/style-rules.svelte -function add_css53(target) { - append_styles(target, "svelte-rft3in", ".modal-content.svelte-rft3in{max-width:100%;height:230px;overflow:auto}"); +// src/view/components/container/style-rules/components/tab-header/components/clickable-icon.svelte +function add_css58(target) { + append_styles(target, "svelte-y9i24n", ".lineage-view .clickable-icon.svelte-y9i24n{cursor:pointer}.clickable-icon--active.svelte-y9i24n{color:var(--icon-color-active);background-color:rgba(0, 0, 0, 0.3);background-blend-mode:multiply}"); } -function create_default_slot58(ctx) { - let div; - let styleruleslist; - let t; - let stylerulesfooter; +function create_fragment121(ctx) { + let button; + let button_class_value; let current; - styleruleslist = new style_rules_list_default({ props: { rules: ( - /*$rulesStore*/ - ctx[0] - ) } }); - stylerulesfooter = new style_rules_footer_default({}); + let mounted; + let dispose; + const default_slot_template = ( + /*#slots*/ + ctx[4].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); return { c() { - div = element("div"); - create_component(styleruleslist.$$.fragment); - t = space(); - create_component(stylerulesfooter.$$.fragment); - attr(div, "class", "modal-content svelte-rft3in"); + button = element("button"); + if (default_slot) + default_slot.c(); + attr( + button, + "aria-label", + /*label*/ + ctx[1] + ); + attr(button, "class", button_class_value = null_to_empty("clickable-icon nav-action-button " + /*isActive*/ + (ctx[2] ? "clickable-icon--active " : "")) + " svelte-y9i24n"); + set_style(button, "position", "relative"); }, m(target, anchor) { - insert(target, div, anchor); - mount_component(styleruleslist, div, null); - insert(target, t, anchor); - mount_component(stylerulesfooter, target, anchor); + insert(target, button, anchor); + if (default_slot) { + default_slot.m(button, null); + } + current = true; + if (!mounted) { + dispose = listen(button, "click", function() { + if (is_function( + /*onClick*/ + ctx[0] + )) + ctx[0].apply(this, arguments); + }); + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx[3], + dirty, + null + ), + null + ); + } + } + if (!current || dirty & /*label*/ + 2) { + attr( + button, + "aria-label", + /*label*/ + ctx[1] + ); + } + if (!current || dirty & /*isActive*/ + 4 && button_class_value !== (button_class_value = null_to_empty("clickable-icon nav-action-button " + /*isActive*/ + (ctx[2] ? "clickable-icon--active " : "")) + " svelte-y9i24n")) { + attr(button, "class", button_class_value); + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + if (default_slot) + default_slot.d(detaching); + mounted = false; + dispose(); + } + }; +} +function instance119($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + let { onClick } = $$props; + let { label } = $$props; + let { isActive = false } = $$props; + $$self.$$set = ($$props2) => { + if ("onClick" in $$props2) + $$invalidate(0, onClick = $$props2.onClick); + if ("label" in $$props2) + $$invalidate(1, label = $$props2.label); + if ("isActive" in $$props2) + $$invalidate(2, isActive = $$props2.isActive); + if ("$$scope" in $$props2) + $$invalidate(3, $$scope = $$props2.$$scope); + }; + return [onClick, label, isActive, $$scope, slots]; +} +var Clickable_icon2 = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance119, create_fragment121, safe_not_equal, { onClick: 0, label: 1, isActive: 2 }, add_css58); + } +}; +var clickable_icon_default2 = Clickable_icon2; + +// src/view/components/container/style-rules/components/tab-header/tab-header.svelte +function add_css59(target) { + append_styles(target, "svelte-1e75r2m", ".style-rules-tabs-header.svelte-1e75r2m{display:flex;flex-direction:column;align-items:center;justify-content:start;width:100%;align-self:center;justify-self:center;box-sizing:border-box;height:auto;padding-top:10px}.tab-header-buttons.svelte-1e75r2m{display:flex;align-items:center;justify-content:center;gap:5px}"); +} +function create_default_slot_16(ctx) { + let globe; + let current; + globe = new globe_default({ props: { class: "svg-icon" } }); + return { + c() { + create_component(globe.$$.fragment); + }, + m(target, anchor) { + mount_component(globe, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(globe.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(globe.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(globe, detaching); + } + }; +} +function create_default_slot66(ctx) { + let filetext; + let current; + filetext = new file_text_default({ props: { class: "svg-icon" } }); + return { + c() { + create_component(filetext.$$.fragment); + }, + m(target, anchor) { + mount_component(filetext, target, anchor); + current = true; + }, + p: noop, + i(local) { + if (current) + return; + transition_in(filetext.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(filetext.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(filetext, detaching); + } + }; +} +function create_fragment122(ctx) { + let div1; + let div0; + let clickableicon0; + let t; + let clickableicon1; + let current; + clickableicon0 = new clickable_icon_default2({ + props: { + isActive: ( + /*$activeTab*/ + ctx[0] === "global-rules" + ), + label: lang.modals_rules_tab_global_rules, + onClick: ( + /*func*/ + ctx[3] + ), + $$slots: { default: [create_default_slot_16] }, + $$scope: { ctx } + } + }); + clickableicon1 = new clickable_icon_default2({ + props: { + isActive: ( + /*$activeTab*/ + ctx[0] === "document-rules" + ), + label: lang.modals_rules_tab_document_rules, + onClick: ( + /*func_1*/ + ctx[4] + ), + $$slots: { default: [create_default_slot66] }, + $$scope: { ctx } + } + }); + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(clickableicon0.$$.fragment); + t = space(); + create_component(clickableicon1.$$.fragment); + attr(div0, "class", "tab-header-buttons svelte-1e75r2m"); + attr(div1, "class", "style-rules-tabs-header svelte-1e75r2m"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(clickableicon0, div0, null); + append(div0, t); + mount_component(clickableicon1, div0, null); + current = true; + }, + p(ctx2, [dirty]) { + const clickableicon0_changes = {}; + if (dirty & /*$activeTab*/ + 1) + clickableicon0_changes.isActive = /*$activeTab*/ + ctx2[0] === "global-rules"; + if (dirty & /*$$scope*/ + 64) { + clickableicon0_changes.$$scope = { dirty, ctx: ctx2 }; + } + clickableicon0.$set(clickableicon0_changes); + const clickableicon1_changes = {}; + if (dirty & /*$activeTab*/ + 1) + clickableicon1_changes.isActive = /*$activeTab*/ + ctx2[0] === "document-rules"; + if (dirty & /*$$scope*/ + 64) { + clickableicon1_changes.$$scope = { dirty, ctx: ctx2 }; + } + clickableicon1.$set(clickableicon1_changes); + }, + i(local) { + if (current) + return; + transition_in(clickableicon0.$$.fragment, local); + transition_in(clickableicon1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(clickableicon0.$$.fragment, local); + transition_out(clickableicon1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div1); + } + destroy_component(clickableicon0); + destroy_component(clickableicon1); + } + }; +} +function instance120($$self, $$props, $$invalidate) { + let $activeTab; + const view = getView(); + const activeTab = ActiveStyleRulesTab(view); + component_subscribe($$self, activeTab, (value) => $$invalidate(0, $activeTab = value)); + const setActiveTab = (tab) => { + view.plugin.settings.dispatch({ + type: "settings/style-rules/set-active-tab", + payload: { tab } + }); + }; + const func2 = () => setActiveTab("global-rules"); + const func_1 = () => setActiveTab("document-rules"); + return [$activeTab, activeTab, setActiveTab, func2, func_1]; +} +var Tab_header2 = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance120, create_fragment122, safe_not_equal, {}, add_css59); + } +}; +var tab_header_default2 = Tab_header2; + +// src/view/components/container/style-rules/style-rules.svelte +function add_css60(target) { + append_styles(target, "svelte-rft3in", ".modal-content.svelte-rft3in{max-width:100%;height:230px;overflow:auto}"); +} +function create_else_block15(ctx) { + let styleruleslist; + let current; + styleruleslist = new style_rules_list_default({ + props: { rules: ( + /*$globalRules*/ + ctx[2] + ) } + }); + return { + c() { + create_component(styleruleslist.$$.fragment); + }, + m(target, anchor) { + mount_component(styleruleslist, target, anchor); current = true; }, p(ctx2, dirty) { const styleruleslist_changes = {}; - if (dirty & /*$rulesStore*/ - 1) - styleruleslist_changes.rules = /*$rulesStore*/ - ctx2[0]; + if (dirty & /*$globalRules*/ + 4) + styleruleslist_changes.rules = /*$globalRules*/ + ctx2[2]; styleruleslist.$set(styleruleslist_changes); }, i(local) { if (current) return; transition_in(styleruleslist.$$.fragment, local); - transition_in(stylerulesfooter.$$.fragment, local); current = true; }, o(local) { transition_out(styleruleslist.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(styleruleslist, detaching); + } + }; +} +function create_if_block31(ctx) { + let styleruleslist; + let current; + styleruleslist = new style_rules_list_default({ + props: { rules: ( + /*$documentRules*/ + ctx[1] + ) } + }); + return { + c() { + create_component(styleruleslist.$$.fragment); + }, + m(target, anchor) { + mount_component(styleruleslist, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const styleruleslist_changes = {}; + if (dirty & /*$documentRules*/ + 2) + styleruleslist_changes.rules = /*$documentRules*/ + ctx2[1]; + styleruleslist.$set(styleruleslist_changes); + }, + i(local) { + if (current) + return; + transition_in(styleruleslist.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(styleruleslist.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(styleruleslist, detaching); + } + }; +} +function create_default_slot67(ctx) { + let tabheader; + let t0; + let div; + let current_block_type_index; + let if_block; + let t1; + let stylerulesfooter; + let current; + tabheader = new tab_header_default2({}); + const if_block_creators = [create_if_block31, create_else_block15]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*$activeTab*/ + ctx2[0] === "document-rules" + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + stylerulesfooter = new style_rules_footer_default({}); + return { + c() { + create_component(tabheader.$$.fragment); + t0 = space(); + div = element("div"); + if_block.c(); + t1 = space(); + create_component(stylerulesfooter.$$.fragment); + attr(div, "class", "modal-content svelte-rft3in"); + }, + m(target, anchor) { + mount_component(tabheader, target, anchor); + insert(target, t0, anchor); + insert(target, div, anchor); + if_blocks[current_block_type_index].m(div, null); + insert(target, t1, anchor); + mount_component(stylerulesfooter, target, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(div, null); + } + }, + i(local) { + if (current) + return; + transition_in(tabheader.$$.fragment, local); + transition_in(if_block); + transition_in(stylerulesfooter.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(tabheader.$$.fragment, local); + transition_out(if_block); transition_out(stylerulesfooter.$$.fragment, local); current = false; }, d(detaching) { if (detaching) { + detach(t0); detach(div); - detach(t); + detach(t1); } - destroy_component(styleruleslist); + destroy_component(tabheader, detaching); + if_blocks[current_block_type_index].d(); destroy_component(stylerulesfooter, detaching); } }; } -function create_fragment112(ctx) { +function create_fragment123(ctx) { let draggablemodal; let current; draggablemodal = new draggable_modal_default({ props: { - $$slots: { default: [create_default_slot58] }, + $$slots: { default: [create_default_slot67] }, $$scope: { ctx } } }); @@ -31420,8 +34269,8 @@ function create_fragment112(ctx) { }, p(ctx2, [dirty]) { const draggablemodal_changes = {}; - if (dirty & /*$$scope, $rulesStore*/ - 9) { + if (dirty & /*$$scope, $documentRules, $activeTab, $globalRules*/ + 135) { draggablemodal_changes.$$scope = { dirty, ctx: ctx2 }; } draggablemodal.$set(draggablemodal_changes); @@ -31441,26 +34290,39 @@ function create_fragment112(ctx) { } }; } -function instance109($$self, $$props, $$invalidate) { - let $rulesStore; +function instance121($$self, $$props, $$invalidate) { + let $activeTab; + let $documentRules; + let $globalRules; const view = getView(); - const rulesStore = DocumentStyleRulesStore(view); - component_subscribe($$self, rulesStore, (value) => $$invalidate(0, $rulesStore = value)); - return [$rulesStore, rulesStore]; + const activeTab = ActiveStyleRulesTab(view); + component_subscribe($$self, activeTab, (value) => $$invalidate(0, $activeTab = value)); + const documentRules = DocumentStyleRulesStore(view); + component_subscribe($$self, documentRules, (value) => $$invalidate(1, $documentRules = value)); + const globalRules = GlobalStyleRulesStore(view); + component_subscribe($$self, globalRules, (value) => $$invalidate(2, $globalRules = value)); + return [ + $activeTab, + $documentRules, + $globalRules, + activeTab, + documentRules, + globalRules + ]; } var Style_rules = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance109, create_fragment112, safe_not_equal, {}, add_css53); + init(this, options, instance121, create_fragment123, safe_not_equal, {}, add_css60); } }; var style_rules_default = Style_rules; // src/view/components/container/main.svelte -function add_css54(target) { +function add_css61(target) { append_styles(target, "svelte-1g9h6to", ".lineage-main.svelte-1g9h6to{--z-index-breadcrumbs:10;display:flex;height:100%;flex:1 1 auto;width:0;position:relative}.lineage-view.svelte-1g9h6to{background-color:var(--background-container);display:flex;height:100%;width:100%}"); } -function create_if_block_32(ctx) { +function create_if_block_33(ctx) { let stylerules; let current; stylerules = new style_rules_default({}); @@ -31487,7 +34349,7 @@ function create_if_block_32(ctx) { } }; } -function create_if_block_26(ctx) { +function create_if_block_28(ctx) { let settings; let current; settings = new settings_default2({}); @@ -31541,7 +34403,7 @@ function create_if_block_112(ctx) { } }; } -function create_if_block31(ctx) { +function create_if_block32(ctx) { let filehistory; let current; filehistory = new file_histoy_default({}); @@ -31568,7 +34430,7 @@ function create_if_block31(ctx) { } }; } -function create_fragment113(ctx) { +function create_fragment124(ctx) { let div1; let leftsidebar; let t0; @@ -31579,19 +34441,21 @@ function create_fragment113(ctx) { let t2; let breadcrumbs; let t3; - let controlsbar; + let verticaltoolbar; let t4; + let zoombuttons; + let t5; let current_block_type_index; let if_block; - let t5; + let t6; let dndedges; let div0_class_value; let mouseWheelZoom_action; let clickAndDrag_action; - let t6; + let t7; let rightsidebar; let viewHotkeysAction_action; - let contextMenu_action; + let showContextMenu_action; let current; let mounted; let dispose; @@ -31599,8 +34463,9 @@ function create_fragment113(ctx) { container = new container_wrapper_default({}); toolbar = new toolbar_default({}); breadcrumbs = new breadcrumbs_default({}); - controlsbar = new controls_container_default({}); - const if_block_creators = [create_if_block31, create_if_block_112, create_if_block_26, create_if_block_32]; + verticaltoolbar = new vertical_toolbar_default({}); + zoombuttons = new zoom_buttons_default({}); + const if_block_creators = [create_if_block32, create_if_block_112, create_if_block_28, create_if_block_33]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( @@ -31642,13 +34507,15 @@ function create_fragment113(ctx) { t2 = space(); create_component(breadcrumbs.$$.fragment); t3 = space(); - create_component(controlsbar.$$.fragment); + create_component(verticaltoolbar.$$.fragment); t4 = space(); + create_component(zoombuttons.$$.fragment); + t5 = space(); if (if_block) if_block.c(); - t5 = space(); - create_component(dndedges.$$.fragment); t6 = space(); + create_component(dndedges.$$.fragment); + t7 = space(); create_component(rightsidebar.$$.fragment); attr(div0, "class", div0_class_value = null_to_empty(`lineage-main`) + " svelte-1g9h6to"); attr(div1, "class", "lineage-view svelte-1g9h6to"); @@ -31665,14 +34532,16 @@ function create_fragment113(ctx) { append(div0, t2); mount_component(breadcrumbs, div0, null); append(div0, t3); - mount_component(controlsbar, div0, null); + mount_component(verticaltoolbar, div0, null); append(div0, t4); + mount_component(zoombuttons, div0, null); + append(div0, t5); if (~current_block_type_index) { if_blocks[current_block_type_index].m(div0, null); } - append(div0, t5); + append(div0, t6); mount_component(dndedges, div0, null); - append(div1, t6); + append(div1, t7); mount_component(rightsidebar, div1, null); current = true; if (!mounted) { @@ -31693,7 +34562,7 @@ function create_fragment113(ctx) { /*view*/ ctx[0] ) })), - action_destroyer(contextMenu_action = contextMenu.call( + action_destroyer(showContextMenu_action = showContextMenu.call( null, div1, /*view*/ @@ -31722,7 +34591,7 @@ function create_fragment113(ctx) { } else { } transition_in(if_block, 1); - if_block.m(div0, t5); + if_block.m(div0, t6); } else { if_block = null; } @@ -31747,9 +34616,9 @@ function create_fragment113(ctx) { /*view*/ ctx2[0] ) }); - if (contextMenu_action && is_function(contextMenu_action.update) && dirty & /*view*/ + if (showContextMenu_action && is_function(showContextMenu_action.update) && dirty & /*view*/ 1) - contextMenu_action.update.call( + showContextMenu_action.update.call( null, /*view*/ ctx2[0] @@ -31762,7 +34631,8 @@ function create_fragment113(ctx) { transition_in(container.$$.fragment, local); transition_in(toolbar.$$.fragment, local); transition_in(breadcrumbs.$$.fragment, local); - transition_in(controlsbar.$$.fragment, local); + transition_in(verticaltoolbar.$$.fragment, local); + transition_in(zoombuttons.$$.fragment, local); transition_in(if_block); transition_in(dndedges.$$.fragment, local); transition_in(rightsidebar.$$.fragment, local); @@ -31773,7 +34643,8 @@ function create_fragment113(ctx) { transition_out(container.$$.fragment, local); transition_out(toolbar.$$.fragment, local); transition_out(breadcrumbs.$$.fragment, local); - transition_out(controlsbar.$$.fragment, local); + transition_out(verticaltoolbar.$$.fragment, local); + transition_out(zoombuttons.$$.fragment, local); transition_out(if_block); transition_out(dndedges.$$.fragment, local); transition_out(rightsidebar.$$.fragment, local); @@ -31787,7 +34658,8 @@ function create_fragment113(ctx) { destroy_component(container); destroy_component(toolbar); destroy_component(breadcrumbs); - destroy_component(controlsbar); + destroy_component(verticaltoolbar); + destroy_component(zoombuttons); if (~current_block_type_index) { if_blocks[current_block_type_index].d(); } @@ -31798,7 +34670,7 @@ function create_fragment113(ctx) { } }; } -function instance110($$self, $$props, $$invalidate) { +function instance122($$self, $$props, $$invalidate) { let $controls; let { plugin } = $$props; let { view } = $$props; @@ -31817,7 +34689,7 @@ function instance110($$self, $$props, $$invalidate) { var Main = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance110, create_fragment113, safe_not_equal, { plugin: 3, view: 0 }, add_css54); + init(this, options, instance122, create_fragment124, safe_not_equal, { plugin: 3, view: 0 }, add_css61); } }; var main_default = Main; @@ -31896,35 +34768,66 @@ var findGroupByParentId = (columns, parentId) => { } }; +// src/lib/tree-utils/find/find-node-column-and-parent.ts +var findNodeColumnAndParent = (columns, nodeId) => { + for (let i = 0; i < columns.length; i++) { + const column = columns[i]; + for (const group of column.groups) { + for (const node of group.nodes) { + if (node === nodeId) { + return [i, group.parentId]; + } + } + } + } + return null; +}; + +// src/lib/tree-utils/insert/insert-node-after-parent.ts +var insertNodeAfterParent = (document2, nodeId, newNodeId) => { + const column = findNodeColumnAndParent(document2.columns, nodeId); + if (!column) + throw new Error("could not find parent column"); + if (column[0] === 0) { + throw new SilentError( + "can't create parent sibling for first column nodes" + ); + } + const parentId = column[1]; + const parentGroup = findGroupByNodeId(document2.columns, parentId); + if (!parentGroup) + throw new Error("could not find group of parent node"); + parentGroup.nodes = parentGroup.nodes.reduce((nodes, nodeId2) => { + nodes.push(nodeId2); + if (nodeId2 === parentId) { + nodes.push(newNodeId); + } + return nodes; + }, []); +}; + // src/stores/document/reducers/insert-node/insert-node.ts -var insertNode = (document2, action, newNodeId = id.node()) => { - const payload = action.payload; - invariant(payload.activeNodeId); - if (payload.position === "right") { - insertChild( - document2, - payload.activeNodeId, - newNodeId, - !!action.payload.content - ); +var insertNode = (document2, position, activeNodeId, content, newNodeId = id.node()) => { + invariant(activeNodeId); + if (position === "right") { + insertChild(document2, activeNodeId, newNodeId, !!content); + } else if (position === "right-last") { + insertChild(document2, activeNodeId, newNodeId, false); + } else if (position === "left") { + insertNodeAfterParent(document2, activeNodeId, newNodeId); } else { - const columnIndex = findNodeColumn( - document2.columns, - payload.activeNodeId - ); + const columnIndex = findNodeColumn(document2.columns, activeNodeId); const column = document2.columns[columnIndex]; invariant(column); - const group = findGroupByNodeId([column], payload.activeNodeId); - invariant(group, "could not find group of " + payload.activeNodeId); - const groupIndex = group.nodes.findIndex( - (c) => c === payload.activeNodeId - ); - const insertionIndex = action.payload.position === "up" ? groupIndex : groupIndex + 1; + const group = findGroupByNodeId([column], activeNodeId); + invariant(group, "could not find group of " + activeNodeId); + const groupIndex = group.nodes.findIndex((c) => c === activeNodeId); + const insertionIndex = position === "up" ? groupIndex : groupIndex + 1; group.nodes.splice(insertionIndex, 0, newNodeId); group.nodes = [...group.nodes]; } document2.content[newNodeId] = { - content: action.payload.content || "" + content: content || "" }; return newNodeId; }; @@ -32119,9 +35022,9 @@ var jsonToColumns = (tree, parentId = id.rootNode(), columns = [], content = {}, // src/lib/tree-utils/insert/insert-first-node.ts var insertFirstNode = (columns, content) => { + const rootId = id.rootNode(); + const createdNode = id.node(); if (columns.length === 0) { - const rootId = id.rootNode(); - const createdNode = id.node(); content[createdNode] = { content: "" }; columns.push({ id: id.column(), @@ -32132,7 +35035,12 @@ var insertFirstNode = (columns, content) => { } ] }); - } + } else if (columns.length === 1 && columns[0].groups.length === 1 && columns[0].groups[0].nodes.length === 0) { + content[createdNode] = { content: "" }; + columns[0].groups[0].nodes = [createdNode]; + } else + throw new Error("document is not empty"); + return createdNode; }; // src/stores/document/reducers/load-document-from-file/load-document-from-file.ts @@ -32145,7 +35053,7 @@ var loadDocumentFromFile = (state2, action) => { if (emptyTree) { insertFirstNode(state2.document.columns, state2.document.content); } - if (action.type === "DOCUMENT/LOAD_FILE") + if (action.type === "document/file/load-from-disk") state2.file.frontmatter = action.payload.document.frontmatter; const activeNode = state2.document.columns[0].groups[0].nodes[0]; invariant(activeNode); @@ -32229,61 +35137,24 @@ var findNextNodeAfterDeletion = (columns, node) => { return nextNode; }; -// src/lib/tree-utils/find/find-node-to-jump-to.ts -var findNodeToJumpTo = (columns, node, target) => { - const columnIndex = findNodeColumn(columns, node); - const column = columns[columnIndex]; - if (target === "start-of-column") { - return column.groups[0].nodes[0]; - } else if (target === "end-of-column") { - const nodeGroup = column.groups[column.groups.length - 1]; - return nodeGroup.nodes[nodeGroup.nodes.length - 1]; - } else { - const group = column.groups.find((g) => g.nodes.includes(node)); - if (group) { - if (target === "start-of-group") - return group.nodes[0]; - else if (target === "end-of-group") { - return group.nodes[group.nodes.length - 1]; - } - } - } -}; - -// src/lib/tree-utils/find/find-next-active-node.ts -var findNextActiveNode = (columns, node, action) => { - if (action.type === "DOCUMENT/DELETE_NODE") { - return findNextNodeAfterDeletion(columns, node); - } else if (action.type === "DOCUMENT/JUMP_TO_NODE") { - return findNodeToJumpTo(columns, node, action.payload.target); - } -}; - // src/stores/document/reducers/delete-node/delete-node.ts var deleteNode2 = (document2, nodeId, selectedNodes) => { invariant(nodeId); - const isSelection = selectedNodes && selectedNodes.size > 1; + const isSelection = selectedNodes && selectedNodes.size > 0; const nodes = isSelection ? [...selectedNodes] : [nodeId]; let nextNode = void 0; - for (const nodeId2 of nodes) { - const lastNode = isLastRootNode(document2.columns, nodeId2); - if (lastNode) { - if (isSelection) - break; - else - throw new Error(lang.error_delete_last_node); + for (let i = 0; i < nodes.length; i++) { + const nodeId2 = nodes[i]; + if (i === nodes.length - 1 && !isLastRootNode(document2.columns, nodeId2)) { + nextNode = findNextNodeAfterDeletion(document2.columns, nodeId2); } - nextNode = findNextActiveNode(document2.columns, nodeId2, { - type: "DOCUMENT/DELETE_NODE", - payload: { - activeNodeId: nodeId2 - } - }); - invariant(nextNode); deleteChildNodes(document2, nodeId2); deleteNodeById(document2.columns, document2.content, nodeId2); cleanAndSortColumns(document2); } + if (!nextNode) { + nextNode = insertFirstNode(document2.columns, document2.content); + } invariant(nextNode); return nextNode; }; @@ -32340,21 +35211,6 @@ var findAdjacentNodeOfSelection = (document2, activeNodeId, selectedNodes, direc return findAdjacentNode(searchColumns, activeNodeId, direction); }; -// src/lib/tree-utils/find/find-node-column-and-parent.ts -var findNodeColumnAndParent = (columns, nodeId) => { - for (let i = 0; i < columns.length; i++) { - const column = columns[i]; - for (const group of column.groups) { - for (const node of group.nodes) { - if (node === nodeId) { - return [i, group.parentId]; - } - } - } - } - return null; -}; - // src/lib/tree-utils/find/find-adjacent-parent.ts var findAdjacentParent = (columns, nodeToMove, direction) => { const [columnIndex, parentId] = findNodeColumnAndParent( @@ -32553,8 +35409,8 @@ var addSnapshot = (document2, history, context) => { const activeIndex = history.state.activeIndex; const activeSnapshot = items[activeIndex]; removeObsoleteHistoryItems(history); - removeOldHistoryItems(history, 50); - if (activeSnapshot && context.action.type === "DOCUMENT/LOAD_FILE") { + removeOldHistoryItems(history, 200); + if (activeSnapshot && context.action.type === "document/file/load-from-disk") { const snapshotContent = JSON.stringify( Object.values(JSON.parse(activeSnapshot.data.content)) ); @@ -32608,51 +35464,28 @@ var undoAction = (document2, history) => { }; // src/stores/view/helpers/get-document-event-type.ts -var contentEvents = /* @__PURE__ */ new Set([ - "DOCUMENT/SET_NODE_CONTENT", - "DOCUMENT/FORMAT_HEADINGS" -]); -var createAndDelete = /* @__PURE__ */ new Set([ - "DOCUMENT/INSERT_NODE", - "DOCUMENT/DELETE_NODE", - "DOCUMENT/MERGE_NODE", - "DOCUMENT/LOAD_FILE", - "DOCUMENT/EXTRACT_BRANCH", - "DOCUMENT/SPLIT_NODE" -]); -var dropAndMoveEvents = /* @__PURE__ */ new Set([ - "DOCUMENT/DROP_NODE", - "DOCUMENT/MOVE_NODE" -]); -var historyEvents = /* @__PURE__ */ new Set([ - "HISTORY/APPLY_NEXT_SNAPSHOT", - "HISTORY/APPLY_PREVIOUS_SNAPSHOT", - "HISTORY/SELECT_SNAPSHOT" -]); -var clipboardEvents = /* @__PURE__ */ new Set([ - "DOCUMENT/PASTE_NODE", - "DOCUMENT/CUT_NODE" -]); -var cachedResults = {}; +var eventTypesDictionary = { + "document/update-node-content": { content: true }, + "document/format-headings": { content: true }, + "document/add-node": { createOrDelete: true }, + "document/delete-node": { createOrDelete: true }, + "document/merge-node": { createOrDelete: true }, + "document/file/load-from-disk": { createOrDelete: true }, + "document/extract-node": { createOrDelete: true }, + "document/split-node": { createOrDelete: true }, + "document/drop-node": { dropOrMove: true }, + "document/move-node": { dropOrMove: true }, + "document/sort-direct-child-nodes": { dropOrMove: true }, + "document/history/select-next-snapshot": { changeHistory: true }, + "document/history/select-previous-snapshot": { changeHistory: true }, + "document/history/select-snapshot": { changeHistory: true }, + "document/paste-node": { clipboard: true }, + "document/cut-node": { clipboard: true } +}; +var documentEventTypes = new Map(Object.entries(eventTypesDictionary)); +var none = {}; var getDocumentEventType = (type) => { - if (cachedResults[type]) { - return cachedResults[type]; - } - let result = null; - if (contentEvents.has(type)) - result = { content: true }; - else if (createAndDelete.has(type)) - result = { createOrDelete: true }; - else if (dropAndMoveEvents.has(type)) - result = { dropOrMove: true }; - else if (historyEvents.has(type)) - result = { changeHistory: true }; - else if (clipboardEvents.has(type)) - result = { clipboard: true }; - if (!result) - result = {}; - cachedResults[type] = result; - return result; + return documentEventTypes.get(type) || none; }; // src/stores/document/reducers/history/redo-action.ts @@ -32667,39 +35500,6 @@ var redoAction = (document2, history) => { loadDocumentFromSnapshot(document2, snapshot, history); }; -// src/stores/document/default-document-state.ts -var defaultDocumentState = () => ({ - document: { - columns: [], - content: {} - }, - sections: { - id_section: {}, - section_id: {} - }, - file: { - path: null, - frontmatter: "" - }, - history: { - items: [], - state: { - activeIndex: -1, - canGoBack: false, - canGoForward: false - }, - context: { - activeSection: "" - } - }, - pinnedNodes: { - Ids: [] - }, - meta: { - groupParentIds: /* @__PURE__ */ new Set() - } -}); - // src/stores/document/reducers/content/format-content/helpers/format-headings.ts var formatHeadings = (content, treeIndexDict) => { for (const nodeId in content) { @@ -32803,12 +35603,12 @@ var hasNHtmlElementMarker = (input, n = 2) => { // src/lib/format-detection/detect-document-format.ts var detectDocumentFormat = (text2, strict = true) => { - const { data } = extractFrontmatter(text2); - if (hasNHtmlCommentMarker(data, 1)) + const { body } = extractFrontmatter(text2); + if (hasNHtmlCommentMarker(body, 1)) return "sections"; - if (hasNHtmlElementMarker(data, 1)) + if (hasNHtmlElementMarker(body, 1)) return "html-element"; - if (isOutline(data)) + if (isOutline(body)) return "outline"; if (!strict) { if (hasNBulletListItems(text2, 1)) @@ -32843,13 +35643,9 @@ var pasteNode2 = (document2, action) => { for (const branch of branches.reverse()) { insertNode( document2, - { - payload: { - activeNodeId: targetNode, - position, - content: branch.content[branch.nodeId]?.content - } - }, + position === "right" ? "right-last" : position, + targetNode, + branch.content[branch.nodeId]?.content, branch.nodeId ); pastChildGroups(document2, branch); @@ -32858,7 +35654,7 @@ var pasteNode2 = (document2, action) => { invariant(nextNode); return { nextNode, - rootNodes: branches.map((b) => b.nodeId) + rootNodes: branches.map((b) => b.nodeId).reverse() }; }; @@ -32923,10 +35719,10 @@ var splitNode = (document2, action) => { throw new SilentError("empty node"); const sections = splitText(content?.content, action.payload.mode); if (sections === content.content) - throw new Error(lang.error_cm_cant_split_card_identical); + throw new Error(lang.error_cm_cant_split_node_identical); const childGroup = findChildGroup(document2.columns, targetNode); if (childGroup) - throw new Error(lang.error_cm_cant_split_card_that_has_children); + throw new Error(lang.error_cm_cant_split_node_that_has_children); const result = pasteNode2(document2, { payload: { position: "down", @@ -32938,6 +35734,12 @@ var splitNode = (document2, action) => { return result.nextNode; }; +// src/stores/document/reducers/pinned-nodes/pin-node.ts +var pinNode = (sections, pinnedNodes, id2) => { + pinnedNodes.Ids.push(id2); + pinnedNodes.Ids = sortNodeIdsBySectionNumber(sections, pinnedNodes.Ids); +}; + // src/stores/document/reducers/pinned-nodes/unpin-node.ts var unpinNode = (pinnedNodes, id2) => { pinnedNodes.Ids = pinnedNodes.Ids.filter((_id) => _id !== id2); @@ -32974,20 +35776,47 @@ var loadDocumentFromJSON = (state2, document2) => { return activeNode; }; +// src/stores/document/reducers/sort/sort-direct-child-nodes.ts +var sortDirectChildNodes = (document2, payload) => { + const group = findGroupByParentId(document2.columns, payload.id); + invariant(group); + const copy = [...group.group.nodes]; + const sorted = payload.order === "ascending" ? copy.sort((a, b) => { + const content_a = document2.content[a].content; + const content_b = document2.content[b].content; + return content_a.localeCompare(content_b, void 0, { + numeric: true + }); + }) : copy.sort((a, b) => { + const content_a = document2.content[a].content; + const content_b = document2.content[b].content; + return content_b.localeCompare(content_a, void 0, { + numeric: true + }); + }); + group.group.nodes = sorted; + cleanAndSortColumns(document2); +}; + // src/stores/document/document-reducer.ts var updateDocumentState2 = (state2, action) => { let newActiveNodeId = null; let affectedNodeId = null; let affectedNodeContent = null; let affectedNodes = void 0; - if (action.type === "DOCUMENT/SET_NODE_CONTENT") { + if (action.type === "document/update-node-content") { const update2 = setNodeContent(state2.document.content, action); if (!update2) return NO_UPDATE; newActiveNodeId = action.payload.nodeId; - } else if (action.type === "DOCUMENT/INSERT_NODE") { - newActiveNodeId = insertNode(state2.document, action); - } else if (action.type === "DOCUMENT/DELETE_NODE") { + } else if (action.type === "document/add-node") { + newActiveNodeId = insertNode( + state2.document, + action.payload.position, + action.payload.activeNodeId, + action.payload.content + ); + } else if (action.type === "document/delete-node") { affectedNodeContent = state2.document.content[action.payload.activeNodeId]; newActiveNodeId = deleteNode2( state2.document, @@ -32995,7 +35824,7 @@ var updateDocumentState2 = (state2, action) => { action.payload.selectedNodes ); affectedNodeId = action.payload.activeNodeId; - } else if (action.type === "DOCUMENT/EXTRACT_BRANCH") { + } else if (action.type === "document/extract-node") { affectedNodeContent = state2.document.content[action.payload.nodeId]; const update2 = setNodeContent(state2.document.content, { payload: { @@ -33007,22 +35836,26 @@ var updateDocumentState2 = (state2, action) => { return NO_UPDATE; removeExtractedBranch(state2.document, action); newActiveNodeId = action.payload.nodeId; - } else if (action.type === "DOCUMENT/SPLIT_NODE") { + } else if (action.type === "document/split-node") { affectedNodeId = action.payload.target; affectedNodeContent = state2.document.content[affectedNodeId]; newActiveNodeId = splitNode(state2.document, action); - } else if (action.type === "DOCUMENT/DROP_NODE") { + } else if (action.type === "document/drop-node") { dropNode(state2.document, action); newActiveNodeId = action.payload.droppedNodeId; - } else if (action.type === "DOCUMENT/MOVE_NODE") { + } else if (action.type === "document/move-node") { moveNode2(state2.document, action); newActiveNodeId = action.payload.activeNodeId; affectedNodeId = newActiveNodeId; - } else if (action.type === "DOCUMENT/MERGE_NODE") { + } else if (action.type === "document/merge-node") { affectedNodeContent = state2.document.content[action.payload.activeNodeId]; newActiveNodeId = mergeNode2(state2.document, action); affectedNodeId = action.payload.activeNodeId; - } else if (action.type === "DOCUMENT/LOAD_FILE") { + } else if (action.type === "document/sort-direct-child-nodes") { + sortDirectChildNodes(state2.document, action.payload); + newActiveNodeId = action.payload.id; + affectedNodeId = newActiveNodeId; + } else if (action.type === "document/file/load-from-disk") { if (action.payload.__test_document__) { newActiveNodeId = loadDocumentFromJSON( state2, @@ -33031,33 +35864,26 @@ var updateDocumentState2 = (state2, action) => { } else { newActiveNodeId = loadDocumentFromFile(state2, action); } - } else if (action.type === "RESET_STORE") { - const newState = defaultDocumentState(); - state2.document = newState.document; - state2.history = newState.history; - state2.file = newState.file; - } else if (action.type === "HISTORY/SELECT_SNAPSHOT") { + } else if (action.type === "document/history/select-snapshot") { selectSnapshot(state2.document, state2.history, action); state2.history = { ...state2.history }; - } else if (action.type === "HISTORY/APPLY_PREVIOUS_SNAPSHOT") { + } else if (action.type === "document/history/select-previous-snapshot") { undoAction(state2.document, state2.history); state2.history = { ...state2.history }; - } else if (action.type === "HISTORY/APPLY_NEXT_SNAPSHOT") { + } else if (action.type === "document/history/select-next-snapshot") { redoAction(state2.document, state2.history); state2.history = { ...state2.history }; - } else if (action.type === "FS/SET_FILE_PATH") { - state2.file.path = action.payload.path; - } else if (action.type === "DOCUMENT/FORMAT_HEADINGS") { + } else if (action.type === "document/format-headings") { formatHeadings2(state2.document.content, state2.sections); newActiveNodeId = getIdOfSection( state2.sections, state2.history.context.activeSection ); - } else if (action.type === "DOCUMENT/PASTE_NODE") { + } else if (action.type === "document/paste-node") { const result = pasteNode2(state2.document, action); newActiveNodeId = result.nextNode; affectedNodes = result.rootNodes; - } else if (action.type === "DOCUMENT/CUT_NODE") { + } else if (action.type === "document/cut-node") { affectedNodeContent = state2.document.content[action.payload.nodeId]; newActiveNodeId = deleteNode2( state2.document, @@ -33065,7 +35891,7 @@ var updateDocumentState2 = (state2, action) => { action.payload.selectedNodes ); affectedNodeId = action.payload.nodeId; - } else if (action.type === "FILE/UPDATE_FRONTMATTER") { + } else if (action.type === "document/file/update-frontmatter") { state2.file.frontmatter = action.payload.frontmatter; return; } else if (action.type === "document/pinned-nodes/pin") { @@ -33084,7 +35910,7 @@ var updateDocumentState2 = (state2, action) => { action.payload.sections ); return; - } else if (action.type === "META/REFRESH_GROUP_PARENT_IDS") { + } else if (action.type === "document/meta/refresh-group-parent-ids") { refreshGroupParentIds(state2.document.columns, state2.meta); return; } @@ -33096,7 +35922,7 @@ var updateDocumentState2 = (state2, action) => { if (e.dropOrMove || e.createOrDelete || e.changeHistory || e.clipboard) { updateSectionsDictionary(state2); } - if (action.type === "DOCUMENT/LOAD_FILE") { + if (action.type === "document/file/load-from-disk") { const activeSection = action.payload.activeSection; if (activeSection) { const id2 = state2.sections.section_id[activeSection]; @@ -33133,11 +35959,43 @@ var documentReducer = (store, action) => { return store; }; +// src/stores/document/default-document-state.ts +var defaultDocumentState = () => ({ + document: { + columns: [], + content: {} + }, + sections: { + id_section: {}, + section_id: {} + }, + file: { + frontmatter: "" + }, + history: { + items: [], + state: { + activeIndex: -1, + canGoBack: false, + canGoForward: false + }, + context: { + activeSection: "" + } + }, + pinnedNodes: { + Ids: [] + }, + meta: { + groupParentIds: /* @__PURE__ */ new Set() + } +}); + // src/stores/view/default-view-state.ts var defaultViewState = () => ({ search: { query: "", - results: /* @__PURE__ */ new Set(), + results: /* @__PURE__ */ new Map(), searching: false, showInput: false, fuzzySearch: false, @@ -33211,14 +36069,14 @@ var defaultViewState = () => ({ var setSearchQuery = (state2, query) => { state2.search.query = query; if (!query) - state2.search.results = /* @__PURE__ */ new Set(); + state2.search.results = /* @__PURE__ */ new Map(); state2.search.searching = query.length > 0; state2.search = { ...state2.search }; }; // src/stores/view/reducers/search/set-search-results.ts var setSearchResults = (state2, results) => { - state2.search.results = new Set(results); + state2.search.results = new Map(results); state2.search.searching = false; state2.search = { ...state2.search }; }; @@ -33245,7 +36103,7 @@ var enableEditMode = (state2, nodeId, isInSidebar = false) => { if (state2.editing.activeNodeId) { if (state2.editing.activeNodeId === nodeId) { throw new Error( - `This card is being edited in the ${state2.editing.isInSidebar ? "sidebar" : "main view"}` + `This section is being edited in the ${state2.editing.isInSidebar ? "sidebar" : "main view"}` ); } } @@ -33347,8 +36205,34 @@ var removeStaleActiveNodes = (columns, activeNodes) => { return result; }; +// src/stores/view/reducers/document/helpers/compare-active-branch.ts +var compareActiveBranch = (a, b) => { + if (a === b) + return true; + if (a.group !== b.group || a.column !== b.column || a.node !== b.node) { + return false; + } + if (a.sortedParentNodes.length !== b.sortedParentNodes.length) { + return false; + } + if (a.childGroups.size !== b.childGroups.size) { + return false; + } + for (let i = 0; i < a.sortedParentNodes.length; i++) { + if (a.sortedParentNodes[i] !== b.sortedParentNodes[i]) { + return false; + } + } + for (const item of a.childGroups) { + if (!b.childGroups.has(item)) { + return false; + } + } + return true; +}; + // src/stores/view/reducers/document/helpers/update-active-branch.ts -var updateActiveBranch = (state2, columns, changeType) => { +var updateActiveBranch = (state2, columns, isDocumentAction) => { if (!state2.activeNode) return; const sortedParents = traverseUp(columns, state2.activeNode).reverse(); @@ -33357,24 +36241,21 @@ var updateActiveBranch = (state2, columns, changeType) => { if (!group) throw new Error("could not find group for node " + state2.activeNode); const columnId = columns[findNodeColumn(columns, state2.activeNode)].id; - const needsUpdate = state2.activeNode !== state2.activeBranch.node || childGroups.length !== state2.activeBranch.childGroups.size || sortedParents.length !== state2.activeBranch.sortedParentNodes.length || group.parentId !== state2.activeBranch.group || columnId !== state2.activeBranch.column || childGroups.some( - (group2) => !state2.activeBranch.childGroups.has(group2) - ) || sortedParents.some( - (node, i) => node !== state2.activeBranch.sortedParentNodes[i] - ); - if (needsUpdate) { - state2.activeBranch = { - childGroups: new Set(childGroups), - sortedParentNodes: sortedParents, - group: group.parentId, - column: columnId, - node: state2.activeNode - }; + const newActiveBranch = { + childGroups: new Set(childGroups), + sortedParentNodes: sortedParents, + group: group.parentId, + column: columnId, + node: state2.activeNode + }; + const same = compareActiveBranch(state2.activeBranch, newActiveBranch); + if (!same) { + state2.activeBranch = newActiveBranch; } if (!state2.activeNodesOfColumn[columnId]) state2.activeNodesOfColumn[columnId] = {}; state2.activeNodesOfColumn[columnId][group.parentId] = state2.activeNode; - if (changeType === "structure") { + if (isDocumentAction) { state2.activeNodesOfColumn = removeStaleActiveNodes( columns, state2.activeNodesOfColumn @@ -33553,12 +36434,10 @@ var resetSelectionState = (documentState) => { }; // src/stores/view/reducers/document/helpers/update-selection-state.ts -var updateSelectionState = (documentState, nextNode, action) => { - const isJump = action.type === "DOCUMENT/JUMP_TO_NODE"; - const isVerticalStep = action.type === "DOCUMENT/NAVIGATE_USING_KEYBOARD" && (action.payload.direction === "up" || action.payload.direction === "down"); - if (action.context?.shiftKey && (isJump || isVerticalStep)) { - const columnIndex = findNodeColumn(action.payload.columns, nextNode); - const column = action.payload.columns[columnIndex]; +var updateSelectionState = (columns, documentState, nextNode, isVertical, shiftKey) => { + if (shiftKey && isVertical) { + const columnIndex = findNodeColumn(columns, nextNode); + const column = columns[columnIndex]; invariant(column); updateSelectedNodes( column, @@ -33573,9 +36452,9 @@ var updateSelectionState = (documentState, nextNode, action) => { }; // src/stores/view/reducers/document/navigate-using-keyboard.ts -var navigateUsingKeyboard = (documentState, state2, action) => { +var navigateUsingKeyboard = (documentState, state2, action, columns) => { const nextNode = findNextActiveNodeOnKeyboardNavigation( - action.payload.columns, + columns, documentState.activeNode, action.payload.direction, documentState.activeNodesOfColumn, @@ -33583,7 +36462,13 @@ var navigateUsingKeyboard = (documentState, state2, action) => { action.context.shiftKey ); if (nextNode) { - updateSelectionState(documentState, nextNode, action); + updateSelectionState( + columns, + documentState, + nextNode, + action.payload.direction === "up" || action.payload.direction === "down", + Boolean(action.context.shiftKey) + ); updateActiveNode(documentState, nextNode, state2); } }; @@ -33599,18 +36484,46 @@ var navigateActiveNodeHistory = (documentState, state2, forward = false) => { state2.navigationHistory = { ...state2.navigationHistory }; updateActiveNode(documentState, newItem, null); state2.recentNodes.activeNode = newItem; + resetSelectionState(documentState); + } +}; + +// src/lib/tree-utils/find/find-node-to-jump-to.ts +var findNodeToJumpTo = (columns, node, target) => { + const columnIndex = findNodeColumn(columns, node); + const column = columns[columnIndex]; + if (target === "start-of-column") { + return column.groups[0].nodes[0]; + } else if (target === "end-of-column") { + const nodeGroup = column.groups[column.groups.length - 1]; + return nodeGroup.nodes[nodeGroup.nodes.length - 1]; + } else { + const group = column.groups.find((g) => g.nodes.includes(node)); + if (group) { + if (target === "start-of-group") + return group.nodes[0]; + else if (target === "end-of-group") { + return group.nodes[group.nodes.length - 1]; + } + } } }; // src/stores/view/reducers/document/jump-to-node.ts -var jumpToNode = (documentViewState, state2, action) => { - const nextNode = findNextActiveNode( - action.payload.columns, +var jumpToNode = (documentViewState, state2, action, columns) => { + const nextNode = findNodeToJumpTo( + columns, documentViewState.activeNode, - action + action.payload.target ); if (nextNode) { - updateSelectionState(documentViewState, nextNode, action); + updateSelectionState( + columns, + documentViewState, + nextNode, + true, + Boolean(action.context?.shiftKey) + ); updateActiveNode(documentViewState, nextNode, state2); } }; @@ -33666,8 +36579,10 @@ var navigateActiveNode = (documentState, state2, action) => { action.payload.direction, action.context.outlineMode ? state2.outline.hiddenNodes : null ); - if (nextNode && nextNode !== documentState.activeNode) + if (nextNode && nextNode !== documentState.activeNode) { updateActiveNode(documentState, nextNode, state2); + resetSelectionState(documentState); + } }; // src/stores/view/reducers/pinned-cards/set-active-pinned-node.ts @@ -33740,11 +36655,16 @@ var toggleCollapseNode = (state2, columns, id2) => { // src/stores/view/reducers/outline/expand-parents-of-active-node.ts var expandParentsOfActiveNode = (state2, columns) => { const parents = state2.document.activeBranch.sortedParentNodes; + let update2 = false; for (const parent of parents) { if (state2.outline.collapsedParents.has(parent)) { expandNode(state2, columns, parent); + update2 = true; } } + if (update2) { + state2.outline = { ...state2.outline }; + } }; // src/stores/view/reducers/outline/refresh-collapsed-nodes.ts @@ -33784,19 +36704,60 @@ var toggleCollapseAllNodes = (state2, columns) => { state2.outline = { ...state2.outline }; }; +// src/stores/view/reducers/selection/select-all-nodes.ts +var compareSetToArray = (set, array) => { + return set.size === array.length && array.every((node) => set.has(node)); +}; +var selectAllNodes = (state2, columns) => { + const firstColumnNodes = columns[0].groups[0].nodes; + const rootColumnIsSelected = compareSetToArray( + state2.selectedNodes, + firstColumnNodes + ); + if (rootColumnIsSelected) { + return; + } + const column = columns[findNodeColumn(columns, state2.activeNode)]; + invariant(column); + const nodeColumnNodes = column.groups.flatMap((g) => g.nodes); + const columnIsSelected = compareSetToArray( + state2.selectedNodes, + nodeColumnNodes + ); + if (columnIsSelected) { + state2.selectedNodes = new Set(firstColumnNodes); + state2.activeNode = state2.activeBranch.sortedParentNodes[0]; + return; + } + const nodeGroup = findGroupByNodeId(columns, state2.activeNode); + invariant(nodeGroup); + const groupIsSelected = compareSetToArray( + state2.selectedNodes, + nodeGroup.nodes + ); + if (groupIsSelected) { + state2.selectedNodes = new Set(nodeColumnNodes); + return; + } + state2.selectedNodes = new Set(nodeGroup.nodes); +}; + // src/stores/view/view-reducer.ts -var updateDocumentState3 = (state2, action) => { +var updateDocumentState3 = (state2, action, context) => { + const activeNode = state2.document.activeNode; if (action.type === "view/set-active-node/mouse" || action.type === "view/set-active-node/mouse-silent" || action.type === "view/set-active-node/document" || action.type === "view/set-active-node/search") { updateActiveNode(state2.document, action.payload.id, state2); - } else if (action.type === "DOCUMENT/NAVIGATE_USING_KEYBOARD") { - navigateUsingKeyboard(state2.document, state2, action); - } else if (action.type === "SEARCH/SET_QUERY") { + if (!state2.document.selectedNodes.has(state2.document.activeNode)) + resetSelectionState(state2.document); + } else if (action.type === "view/set-active-node/keyboard") { + navigateUsingKeyboard(state2.document, state2, action, context.columns); + } else if (action.type === "view/search/set-query") { setSearchQuery(state2, action.payload.query); - } else if (action.type === "SEARCH/SET_RESULTS") { + } else if (action.type === "view/search/set-results") { setSearchResults(state2, action.payload.results); - } else if (action.type === "SEARCH/TOGGLE_INPUT") { + } else if (action.type === "view/search/toggle-input") { toggleSearchInput(state2); - } else if (action.type === "UI/TOGGLE_HISTORY_SIDEBAR") { + } else if (action.type === "view/snapshots/toggle-modal") { const showHistorySidebar = state2.ui.controls.showHistorySidebar; state2.ui.controls = { showHistorySidebar: !showHistorySidebar, @@ -33804,7 +36765,7 @@ var updateDocumentState3 = (state2, action) => { showSettingsSidebar: false, showStyleRulesModal: false }; - } else if (action.type === "UI/TOGGLE_HELP_SIDEBAR") { + } else if (action.type === "view/hotkeys/toggle-modal") { const showHelpSidebar = state2.ui.controls.showHelpSidebar; state2.ui.controls = { showHistorySidebar: false, @@ -33812,7 +36773,7 @@ var updateDocumentState3 = (state2, action) => { showSettingsSidebar: false, showStyleRulesModal: false }; - } else if (action.type === "UI/TOGGLE_SETTINGS_SIDEBAR") { + } else if (action.type === "view/settings/toggle-modal") { const showSettingsSidebar = state2.ui.controls.showSettingsSidebar; state2.ui.controls = { showHistorySidebar: false, @@ -33820,19 +36781,19 @@ var updateDocumentState3 = (state2, action) => { showSettingsSidebar: !showSettingsSidebar, showStyleRulesModal: false }; - } else if (action.type === "CLOSE_MODALS") { + } else if (action.type === "view/close-modals") { state2.ui.controls = { showHistorySidebar: false, showHelpSidebar: action.payload?.closeAllModals ? false : state2.ui.controls.showHelpSidebar, showSettingsSidebar: false, showStyleRulesModal: false }; - } else if (action.type === "view/main/enable-edit") { + } else if (action.type === "view/editor/enable-main-editor") { if (state2.document.activeNode !== action.payload.nodeId) { updateActiveNode(state2.document, action.payload.nodeId, state2); } enableEditMode(state2.document, action.payload.nodeId); - } else if (action.type === "view/sidebar/enable-edit") { + } else if (action.type === "view/editor/enable-sidebar-editor") { if (action.context.activeSidebarTab === "pinned-cards") { if (state2.pinnedNodes.activeNode !== action.payload.id) { setActivePinnedNode( @@ -33851,45 +36812,43 @@ var updateDocumentState3 = (state2, action) => { } } enableEditMode(state2.document, action.payload.id, true); - } else if (action.type === "view/confirmation/reset/disable-edit") { + } else if (action.type === "view/editor/disable/reset-confirmation") { resetPendingConfirmation(state2.document); - } else if (action.type === "view/confirmation/reset/delete-node") { + } else if (action.type === "view/delete-node/reset-confirmation") { resetPendingConfirmation(state2.document); - } else if (action.type === "view/confirmation/confirm/delete-node") { + } else if (action.type === "view/delete-node/confirm") { state2.document.pendingConfirmation = { ...state2.document.pendingConfirmation, deleteNode: action.payload.includeSelection && state2.document.selectedNodes.size > 1 ? new Set(state2.document.selectedNodes) : /* @__PURE__ */ new Set([action.payload.id]) }; - } else if (action.type === "view/confirmation/confirm/disable-edit") { + } else if (action.type === "view/editor/disable/confirm") { state2.document.pendingConfirmation = { ...state2.document.pendingConfirmation, disableEdit: action.payload.id }; - } else if (action.type === "view/main/disable-edit" || action.type === "view/sidebar/disable-edit") { + } else if (action.type === "view/editor/disable-main-editor" || action.type === "view/editor/disable-sidebar-editor") { disableEditMode(state2.document); - } else if (action.type === "SET_DRAG_STARTED") { + } else if (action.type === "view/dnd/set-drag-started") { onDragStart(state2.document, action); - } else if (action.type === "DOCUMENT/SET_DRAG_ENDED") { + } else if (action.type === "view/dnd/set-drag-ended") { onDragEnd(state2.document); - } else if (action.type === "UPDATE_ACTIVE_BRANCH") { - updateActiveBranch( - state2.document, - action.payload.columns, - action.context.changeType - ); - } else if (action.type === "NAVIGATION/NAVIGATE_FORWARD") { + } else if (action.type === "view/update-active-branch?source=document") { + updateActiveBranch(state2.document, context.columns, true); + } else if (action.type === "view/set-active-node/history/select-next") { navigateActiveNodeHistory(state2.document, state2, true); - } else if (action.type === "NAVIGATION/NAVIGATE_BACK") { + } else if (action.type === "view/set-active-node/history/select-previous") { navigateActiveNodeHistory(state2.document, state2); - } else if (action.type === "DOCUMENT/JUMP_TO_NODE") { - jumpToNode(state2.document, state2, action); - } else if (action.type === "NAVIGATION/REMOVE_OBSOLETE") { + } else if (action.type === "view/set-active-node/keyboard-jump") { + jumpToNode(state2.document, state2, action, context.columns); + } else if (action.type === "view/active-node-history/delete-obsolete") { removeDeletedNavigationItems(state2, action.payload.content); - } else if (action.type === "SEARCH/TOGGLE_FUZZY_MODE") { + } else if (action.type === "view/search/toggle-fuzzy-mode") { toggleFuzzySearch(state2); - } else if (action.type === "DOCUMENT/CLEAR_SELECTION") { + } else if (action.type === "view/selection/clear-selection") { resetSelectionState(state2.document); - } else if (action.type === "NAVIGATION/SELECT_NEXT_NODE") { + } else if (action.type === "view/selection/select-all") { + selectAllNodes(state2.document, context.columns); + } else if (action.type === "view/set-active-node/sequential/select-next") { navigateActiveNode(state2.document, state2, action); } else if (action.type === "view/pinned-nodes/set-active-node") { setActivePinnedNode( @@ -33903,9 +36862,9 @@ var updateDocumentState3 = (state2, action) => { state2.recentNodes, action.payload.id ); - } else if (action.type === "search/toggle-show-all-nodes") { + } else if (action.type === "search/view/toggle-show-all-nodes") { toggleShowAllNodes(state2); - } else if (action.type === "view/modals/toggle-style-rules") { + } else if (action.type === "view/style-rules/toggle-modal") { const showStyleRulesModal = state2.ui.controls.showStyleRulesModal; state2.ui.controls = { showHistorySidebar: false, @@ -33932,39 +36891,30 @@ var updateDocumentState3 = (state2, action) => { } else if (action.type === "view/hotkeys/update-conflicts") { state2.hotkeys.conflictingHotkeys = action.payload.conflicts; } else if (action.type === "view/outline/toggle-collapse-node") { - toggleCollapseNode(state2, action.payload.columns, action.payload.id); + toggleCollapseNode(state2, context.columns, action.payload.id); } else if (action.type === "view/outline/refresh-collapsed-nodes") { - refreshCollapsedNodes(state2, action.payload.columns); + refreshCollapsedNodes(state2, context.columns); } else if (action.type === "view/outline/toggle-collapse-all") { - toggleCollapseAllNodes(state2, action.payload.columns); + toggleCollapseAllNodes(state2, context.columns); } else if (action.type === "view/selection/set-selection") { state2.document.selectedNodes = new Set(action.payload.ids); - } else if (action.type === "view/persisted-state/load-persisted-collapsed-parents") { + } else if (action.type === "view/outline/load-persisted-collapsed-parents") { for (const id2 of action.payload.collapsedIds) { - collapseNode(state2, action.context.columns, id2); + collapseNode(state2, context.columns, id2); } - expandParentsOfActiveNode(state2, action.context.columns); + expandParentsOfActiveNode(state2, context.columns); state2.outline = { ...state2.outline }; } + if (activeNode !== state2.document.activeNode) { + updateActiveBranch(state2.document, context.columns, false); + expandParentsOfActiveNode(state2, context.columns); + } }; -var viewReducer = (store, action) => { - updateDocumentState3(store, action); +var viewReducer = (store, action, context) => { + updateDocumentState3(store, action, context); return store; }; -// src/stores/view/subscriptions/actions/update-active-branch.ts -var updateActiveBranch2 = (viewStore, documentState, changeType) => { - viewStore.dispatch({ - type: "UPDATE_ACTIVE_BRANCH", - payload: { - columns: documentState.document.columns - }, - context: { - changeType - } - }); -}; - // src/stores/view/subscriptions/helpers/is-empty-document.ts var isEmptyDocument = (content) => { const values = Object.values(content); @@ -33974,7 +36924,7 @@ var isEmptyDocument = (content) => { // src/stores/view/subscriptions/actions/enable-edit-mode.ts var enableEditMode2 = (viewStore, documentState) => { viewStore.dispatch({ - type: "view/main/enable-edit", + type: "view/editor/enable-main-editor", payload: { nodeId: getIdOfSection( documentState.sections, @@ -34051,16 +37001,19 @@ var setInitialActiveNode = (view) => { const settings = view.plugin.settings.getValue(); const path = view.file.path; const persistedSection = settings.documents[path]?.activeSection; - const sections = documentState.sections; if (persistedSection) { - id2 = maybeGetIdOfSection(sections, persistedSection); + id2 = maybeGetIdOfSection(documentState.sections, persistedSection); } const mostRecentActiveSection = documentState.history.context.activeSection; if (!id2 && mostRecentActiveSection) { - id2 = maybeGetIdOfSection(sections, mostRecentActiveSection); + id2 = maybeGetIdOfSection( + documentState.sections, + mostRecentActiveSection + ); } if (!id2) return; + viewStore.setContext(documentState.document); viewStore.dispatch({ type: "view/set-active-node/document", payload: { @@ -34069,9 +37022,6 @@ var setInitialActiveNode = (view) => { }); }; -// src/stores/view/subscriptions/effects/mark-unresolved-links/mark-unresolved-links.ts -var import_obsidian30 = require("obsidian"); - // src/stores/view/subscriptions/effects/mark-unresolved-links/helpers/filter-non-existent-links.ts var filterNonExistentLinks = (plugin, links, filePath) => { return links.map((link) => link.link.split("#")[0]).filter( @@ -34119,7 +37069,6 @@ var markUnresolvedLinks = (view) => { } } }; -var debounced = (0, import_obsidian30.debounce)(markUnresolvedLinks, 100); // src/stores/view/subscriptions/event-listeners/attach-hover-preview-listener.ts var getLink = (el) => { @@ -34195,7 +37144,7 @@ var loadPinnedNodesToDocument = (view) => { const settingsStore = view.plugin.settings; const settingsState = settingsStore.getValue(); const persistedDocuments = settingsState.documents; - const persistedDocument = persistedDocuments[documentState.file.path]; + const persistedDocument = persistedDocuments[view.file.path]; if (!persistedDocument?.pinnedSections) return; if (persistedDocument.pinnedSections.sections.length === 0) { @@ -34230,7 +37179,7 @@ var attachCloseModalsListener = (view) => { const isInsideModal = target.closest(".lineage-modal"); const isInsideControlsBar = !isInsideModal && target.closest(".controls-container"); if (e.button === 0 && !(isInsideModal || isInsideControlsBar)) { - view.viewStore.dispatch({ type: "CLOSE_MODALS" }); + view.viewStore.dispatch({ type: "view/close-modals" }); view.contentEl.removeEventListener("click", listener); } }; @@ -34297,7 +37246,6 @@ var updateCheckbox = (taskIndex, content, checked) => { }; // src/stores/view/subscriptions/effects/checkbox-listener/attach-checkbox-listener.ts -var import_obsidian31 = require("obsidian"); var handleCheckboxChange = (event, view) => { const checkbox = event.target; if (!checkbox?.classList.contains("task-list-item-checkbox")) { @@ -34325,13 +37273,10 @@ var handleCheckboxChange = (event, view) => { ); if (content) { view.documentStore.dispatch({ - type: "DOCUMENT/SET_NODE_CONTENT", + type: "document/update-node-content", payload: { nodeId: cardId, content: content.content }, context: { isInSidebar: !!card.closest(".sidebar") } }); - new import_obsidian31.Notice( - `"${content.task}" has been ${checkbox.checked ? "checked" : "unchecked"}` - ); } }; var attachCheckboxListener = (view) => { @@ -34355,13 +37300,14 @@ var applyViewSize = (view) => { ); if (!viewElement) return; + const rect = viewElement.getBoundingClientRect(); view.containerEl.style.setProperty( cssVariables.viewWidth, - `${viewElement.innerWidth - PADDING_H}px` + `${rect.width - PADDING_H}px` ); view.containerEl.style.setProperty( cssVariables.viewHeight, - `${viewElement.innerHeight - PADDING_V}px` + `${rect.height - PADDING_V}px` ); }; @@ -34402,21 +37348,63 @@ var loadCollapsedSectionsFromSettings = (view) => { }).filter((x) => x); if (collapsedIds.length > 0) { viewStore.dispatch({ - type: "view/persisted-state/load-persisted-collapsed-parents", + type: "view/outline/load-persisted-collapsed-parents", payload: { collapsedIds - }, - context: { - columns: documentState.document.columns } }); } }; +// src/helpers/round-up.ts +var roundUp = (value, precision) => { + precision = Math.pow(10, precision); + return Math.ceil(value * precision) / precision; +}; + +// src/stores/view/subscriptions/effects/css-variables/apply-headings-font-size.ts +var variables = [ + "--h2-size", + "--h3-size", + "--h4-size", + "--h5-size", + "--h6-size" +]; +var BASE_MULTIPLIER = 1.125; +var MIN_HEADING_SIZE = 1; +var adjustMultiplier = (h1_em) => { + const subtracted = (DEFAULT_H1_FONT_SIZE_EM - h1_em) * 0.2; + return h1_em < DEFAULT_H1_FONT_SIZE_EM ? BASE_MULTIPLIER - Math.min(subtracted, 0.125) : BASE_MULTIPLIER; +}; +var calculateFontSize = (h1_em, multiplier, level2) => { + return Math.max( + roundUp(h1_em * Math.pow(1 / multiplier, level2), 3), + MIN_HEADING_SIZE + ); +}; +var applyHeadingsFontSize = (view, h1_em) => { + const el = view.containerEl; + if (h1_em === DEFAULT_H1_FONT_SIZE_EM) { + el.style.removeProperty("--h1-size"); + for (const key of variables) { + el.style.removeProperty(key); + } + } else { + el.style.setProperty("--h1-size", `${h1_em}em`); + const adjustedMultiplier = adjustMultiplier(h1_em); + for (let i = 0; i < variables.length; i++) { + const key = variables[i]; + const value = calculateFontSize(h1_em, adjustedMultiplier, i + 1); + el.style.setProperty(key, `${value}em`); + } + } +}; + // src/stores/view/subscriptions/on-view-mount.ts var applySettingsToView = (view) => { const state2 = view.plugin.settings.getValue(); applyFontSize(view, state2.view.fontSize); + applyHeadingsFontSize(view, state2.view.h1FontSize_em); applyInactiveNodeOpacity(view, state2.view.theme.inactiveNodeOpacity); applyCssColor(view, "containerBg"); applyCssColor(view, "activeBranchBg"); @@ -34438,7 +37426,6 @@ var onViewMount = (view) => { return subscriptions; setInitialActiveNode(view); loadCollapsedSectionsFromSettings(view); - updateActiveBranch2(viewStore, documentState, "none"); if (view.isActive && isEmptyDocument(documentState.document.content)) { enableEditMode2(viewStore, documentState); } @@ -34446,95 +37433,57 @@ var onViewMount = (view) => { if (view.isActive) focusContainer(view); loadPinnedNodesToDocument(view); - debounced(view); + markUnresolvedLinks(view); applySettingsToView(view); attachHoverPreviewListener(view); attachWheelScrollListener(view); - documentStore.dispatch({ type: "META/REFRESH_GROUP_PARENT_IDS" }); + documentStore.dispatch({ type: "document/meta/refresh-group-parent-ids" }); attachCloseModalsListener(view); view.rulesProcessor.onRulesUpdate(); view.zoomFactor = view.plugin.settings.getValue().view.zoomLevel; - view.alignBranch.align({ type: "view/life-cycle/mount" }); subscriptions.add(watchViewSize(view)); return subscriptions; }; // src/stores/view/helpers/get-view-event-type.ts -var navigationEvents = /* @__PURE__ */ new Set([ - "NAVIGATION/NAVIGATE_BACK", - "NAVIGATION/NAVIGATE_FORWARD", - "NAVIGATION/SELECT_NEXT_NODE" -]); -var searchEvents = /* @__PURE__ */ new Set([ - "SEARCH/SET_QUERY", - "SEARCH/SET_RESULTS", - "SEARCH/TOGGLE_INPUT" -]); -var stateEvents = /* @__PURE__ */ new Set([ - "view/set-active-node/document", - "view/set-active-node/mouse", - "view/set-active-node/mouse-silent", - "view/set-active-node/search", - "DOCUMENT/NAVIGATE_USING_KEYBOARD", - "DOCUMENT/JUMP_TO_NODE" -]); -var editMainSplitEvents = /* @__PURE__ */ new Set([ - "view/main/enable-edit", - "view/main/disable-edit" -]); -var editSidebarEvents = /* @__PURE__ */ new Set([ - "view/sidebar/enable-edit", - "view/sidebar/disable-edit" -]); -var cachedResults2 = {}; +var eventTypesDictionary2 = { + "view/set-active-node/history/select-previous": { + activeNodeHistory: true + }, + "view/set-active-node/history/select-next": { activeNodeHistory: true }, + "view/set-active-node/sequential/select-next": { + activeNodeHistory: true + }, + "view/search/set-query": { search: true }, + "view/search/set-results": { search: true }, + "view/search/toggle-input": { search: true }, + "view/set-active-node/document": { activeNode: true }, + "view/set-active-node/mouse": { activeNode: true }, + "view/set-active-node/mouse-silent": { activeNode: true }, + "view/set-active-node/search": { activeNode: true }, + "view/set-active-node/keyboard": { activeNode: true }, + "view/set-active-node/keyboard-jump": { activeNode: true }, + "view/selection/select-all": { activeNode: true }, + "view/editor/enable-main-editor": { mainEditor: true }, + "view/editor/disable-main-editor": { mainEditor: true }, + "view/editor/enable-sidebar-editor": { sidebarEditor: true }, + "view/editor/disable-sidebar-editor": { sidebarEditor: true } +}; +var viewEventTypes = new Map(Object.entries(eventTypesDictionary2)); +var none2 = {}; var getViewEventType = (type) => { - if (cachedResults2[type]) { - return cachedResults2[type]; - } - let result = null; - if (navigationEvents.has(type)) - result = { activeNodeHistory: true }; - else if (stateEvents.has(type)) - result = { activeNode: true }; - else if (searchEvents.has(type)) - result = { search: true }; - else if (editMainSplitEvents.has(type)) - result = { editMainSplit: true }; - else if (editSidebarEvents.has(type)) - result = { editSidebar: true }; - if (!result) - result = {}; - cachedResults2[type] = result; - return result; -}; - -// src/stores/view/subscriptions/actions/clear-selected-nodes.ts -var clearSelectedNodes = (view) => { - view.viewStore.dispatch({ type: "DOCUMENT/CLEAR_SELECTION" }); -}; - -// src/stores/view/subscriptions/actions/maybe-clear-selection.ts -var maybeClearSelection = (view, action) => { - const selectedNodes = view.viewStore.getValue().document.selectedNodes; - if (selectedNodes.size > 1) { - const selectedNodeIsWithinSelection = action.type.startsWith("view/set-active-node") && // @ts-ignore - selectedNodes.has(action.payload.id); - if (!selectedNodeIsWithinSelection) { - clearSelectedNodes(view); - } - } + return viewEventTypes.get(type) || none2; }; // src/stores/view/subscriptions/actions/update-search-results.ts var updateActiveNodeAfterSearch = (view, results) => { - const shouldUpdateActiveNode = results.length > 0 && !results.find( - (r) => r.item.id === view.viewStore.getValue().document.activeNode - ); + const activeNode = view.viewStore.getValue().document.activeNode; + const shouldUpdateActiveNode = results.length > 0 && !results.find((r) => r === activeNode); if (shouldUpdateActiveNode) { view.viewStore.dispatch({ type: "view/set-active-node/search", payload: { - id: results[0].item.id + id: results[0] } }); } @@ -34544,18 +37493,17 @@ var updateSearchResults = (view) => { const query = viewState.search.query; if (!query) return; - const search2 = view.documentSearch.search(query); - const results = search2.map((r) => r.item.id); + const results = view.documentSearch.search(query); view.viewStore.dispatch({ - type: "SEARCH/SET_RESULTS", + type: "view/search/set-results", payload: { results } }); - const newSearchResults = Array.from(results).sort().join(""); - const previousSearchResults = Array.from(viewState.search.results).sort().join(""); + const newSearchResults = Array.from(results.keys()).sort().join(""); + const previousSearchResults = Array.from(viewState.search.results.keys()).sort().join(""); if (previousSearchResults !== newSearchResults) { - updateActiveNodeAfterSearch(view, search2); + updateActiveNodeAfterSearch(view, Array.from(results.keys())); } }; @@ -34586,15 +37534,13 @@ var persistActiveNodeInPluginSettings = (view) => { // src/stores/view/subscriptions/actions/persist-active-pinned-node.ts var persistActivePinnedNode = (view) => { const documentState = view.documentStore.getValue(); - if (!documentState.file.path) - return; const sections = documentState.sections; const viewState = view.viewStore.getValue(); const section = sections.id_section[viewState.pinnedNodes.activeNode]; view.plugin.settings.dispatch({ type: "settings/pinned-nodes/persist-active-node", payload: { - filePath: documentState.file.path, + filePath: view.file.path, section } }); @@ -34609,12 +37555,16 @@ var showSearchResultsInMinimap = (view) => { if (viewState.search.showInput) { if (!settingsState.view.showMinimap) { if (viewState.search.results.size > 0) { - settingsStore.dispatch({ type: "VIEW/TOGGLE_MINIMAP" }); + settingsStore.dispatch({ + type: "settings/view/toggle-minimap" + }); view.documentSearch.searchTriggeredMinimap = true; } } } else if (view.documentSearch.searchTriggeredMinimap) { - settingsStore.dispatch({ type: "VIEW/TOGGLE_MINIMAP" }); + if (settingsState.view.showMinimap) { + settingsStore.dispatch({ type: "settings/view/toggle-minimap" }); + } view.documentSearch.searchTriggeredMinimap = false; } }; @@ -34669,22 +37619,17 @@ var persistCollapsedSections = (view) => { // src/stores/view/subscriptions/on-view-state-update.ts var onViewStateUpdate = (view, action, localState) => { - const documentStore = view.documentStore; - const documentState = documentStore.getValue(); const viewStore = view.viewStore; const viewState = viewStore.getValue(); const container = view.container; const type = action.type; - const e = getViewEventType( - type - ); + const e = getViewEventType(type); const activeNodeChange = e.activeNode || e.activeNodeHistory; const activeNodeHasChanged = localState.previousActiveNode !== viewState.document.activeNode; if (activeNodeHasChanged) { localState.previousActiveNode = viewState.document.activeNode; } if (activeNodeChange && activeNodeHasChanged) { - updateActiveBranch2(viewStore, documentState, "none"); persistActiveNodeInPluginSettings(view); view.plugin.statusBar.updateProgressIndicatorAndChildCount(view); } @@ -34698,35 +37643,32 @@ var onViewStateUpdate = (view, action, localState) => { }); } } - if (activeNodeChange && activeNodeHasChanged && type !== "DOCUMENT/NAVIGATE_USING_KEYBOARD" && type !== "DOCUMENT/JUMP_TO_NODE") { - maybeClearSelection(view, action); - } - if (action.type === "SEARCH/SET_QUERY") { + if (action.type === "view/search/set-query") { updateSearchResults(view); } - if (activeNodeChange || e.search || e.editMainSplit) { + if (e.search || e.mainEditor || action.type === "view/update-active-branch?source=document" || activeNodeChange && activeNodeHasChanged) { view.alignBranch.align(action); } if (!container || !view.isViewOfFile) return; - if (type === "SEARCH/TOGGLE_FUZZY_MODE") { + if (type === "view/search/toggle-fuzzy-mode") { view.documentSearch.resetIndex(); } - if (action.type === "view/main/disable-edit" || action.type === "view/sidebar/disable-edit" || action.type === "NAVIGATION/NAVIGATE_FORWARD" || action.type === "NAVIGATION/NAVIGATE_BACK") { + if (action.type === "view/editor/disable-main-editor" || action.type === "view/editor/disable-sidebar-editor" || action.type === "view/set-active-node/history/select-next" || action.type === "view/set-active-node/history/select-previous") { focusContainer(view); } - if (action.type === "SEARCH/TOGGLE_INPUT") { + if (action.type === "view/search/toggle-input") { if (!viewState.search.showInput) { focusContainer(view); } } - if (action.type === "SEARCH/SET_RESULTS" || action.type === "SEARCH/TOGGLE_INPUT" || action.type === "SEARCH/SET_QUERY") { + if (action.type === "view/search/set-results" || action.type === "view/search/toggle-input" || action.type === "view/search/set-query") { showSearchResultsInMinimap(view); } if (type === "view/pinned-nodes/set-active-node") { persistActivePinnedNode(view); } - if (action.type === "UI/TOGGLE_HELP_SIDEBAR") { + if (action.type === "view/hotkeys/toggle-modal") { if (viewState.ui.controls.showHelpSidebar) { view.viewStore.dispatch({ type: "view/hotkeys/update-conflicts", @@ -34753,14 +37695,14 @@ var setActiveNode = (view, action) => { let newActiveSection = documentState.history.context.activeSection; let shouldSetActiveNode = true; if (activeNodeExists) { - if (action.type === "HISTORY/APPLY_PREVIOUS_SNAPSHOT") { + if (action.type === "document/history/select-previous-snapshot") { const state2 = documentState.history.state; const previousSnapshot = documentState.history.items[state2.activeIndex + 1]; const affectedSection = previousSnapshot.context.affectedSection; if (section_id[affectedSection]) { newActiveSection = affectedSection; } - } else if (view.isViewOfFile && (action.type === "DOCUMENT/DROP_NODE" || action.type === "DOCUMENT/MOVE_NODE")) { + } else if (view.isViewOfFile && (action.type === "document/drop-node" || action.type === "document/move-node")) { shouldSetActiveNode = false; } else if (!view.isActive) { shouldSetActiveNode = false; @@ -34779,7 +37721,7 @@ var setActiveNode = (view, action) => { // src/stores/view/subscriptions/actions/remove-obsolete-navigation-items.ts var removeObsoleteNavigationItems = (viewStore, documentState) => { viewStore.dispatch({ - type: "NAVIGATION/REMOVE_OBSOLETE", + type: "view/active-node-history/delete-obsolete", payload: { content: documentState.document.content } @@ -34789,8 +37731,6 @@ var removeObsoleteNavigationItems = (viewStore, documentState) => { // src/stores/view/subscriptions/actions/persist-pinned-nodes.ts var persistPinnedNodes = (view) => { const documentState = view.documentStore.getValue(); - if (!documentState.file.path) - return; const viewState = view.viewStore.getValue(); const pinnedNodes = documentState.pinnedNodes; const sections = documentState.sections; @@ -34800,7 +37740,7 @@ var persistPinnedNodes = (view) => { type: "settings/pinned-nodes/persist", payload: { sections: pinnedSections, - filePath: documentState.file.path, + filePath: view.file.path, section } }); @@ -34818,11 +37758,16 @@ var updateStaleActivePinnedNode = (view) => { } }; +// src/stores/view/subscriptions/actions/clear-selected-nodes.ts +var clearSelectedNodes = (view) => { + view.viewStore.dispatch({ type: "view/selection/clear-selection" }); +}; + // src/stores/view/subscriptions/actions/update-selected-nodes.ts var updateSelectedNodes2 = (view, action, changeHistory) => { const documentState = view.documentStore.getValue(); let clear = true; - if (action.type === "DOCUMENT/PASTE_NODE" || changeHistory) { + if (action.type === "document/paste-node" || changeHistory) { const history = documentState.history; const snapshot = history.items[history.state.activeIndex]; if (snapshot.context.affectedSections) { @@ -34849,56 +37794,60 @@ var onDocumentStateUpdate = (view, action) => { const documentState = documentStore.getValue(); const viewStore = view.viewStore; const container = view.container; + viewStore.setContext(documentState.document); const type = action.type; - const e = getDocumentEventType( - type - ); - if (type === "DOCUMENT/LOAD_FILE") { + const e = getDocumentEventType(type); + if (type === "document/file/load-from-disk") { view.inlineEditor.unloadNode(); } const structuralChange = e.createOrDelete || e.dropOrMove || e.changeHistory || e.clipboard; if (structuralChange) { setActiveNode(view, action); - updateActiveBranch2(viewStore, documentState, "structure"); viewStore.dispatch({ - type: "view/outline/refresh-collapsed-nodes", - payload: { - columns: documentState.document.columns + type: "view/update-active-branch?source=document", + context: { + documentAction: action } }); + viewStore.dispatch({ + type: "view/outline/refresh-collapsed-nodes" + }); documentStore.dispatch({ type: "document/pinned-nodes/remove-stale-nodes" }); - documentStore.dispatch({ type: "META/REFRESH_GROUP_PARENT_IDS" }); + documentStore.dispatch({ + type: "document/meta/refresh-group-parent-ids" + }); } - if (structuralChange && type !== "DOCUMENT/MOVE_NODE") { + if (structuralChange && type !== "document/move-node") { updateSelectedNodes2(view, action, e.changeHistory); } - if (type === "DOCUMENT/INSERT_NODE" && view.isActive) { + if (type === "document/add-node" && view.isActive) { enableEditMode2(viewStore, documentState); } - if (type === "DOCUMENT/DELETE_NODE" || type === "DOCUMENT/CUT_NODE" || e.changeHistory || type === "DOCUMENT/EXTRACT_BRANCH" || type === "DOCUMENT/LOAD_FILE" || type === "DOCUMENT/SPLIT_NODE") { + if (type === "document/delete-node" || type === "document/cut-node" || e.changeHistory || type === "document/extract-node" || type === "document/file/load-from-disk" || type === "document/split-node") { removeObsoleteNavigationItems(viewStore, documentState); } - if (structuralChange || e.content) { + if (e.content) { view.alignBranch.align(action); + } + if (structuralChange || e.content) { view.rulesProcessor.onDocumentUpdate(action); } if (!container || !view.isViewOfFile) return; if (e.content || structuralChange) { - const maybeViewIsClosing = !view.isActive; - view.saveDocument(maybeViewIsClosing); + view.saveDocument(); } if (e.content || structuralChange) { if (view.minimapStore) { - debouncedDrawDocument(view); + view.minimapEffects.drawDocument(view); } view.documentSearch.resetIndex(); const query = viewStore.getValue().search.query; if (query) { view.viewStore.dispatch({ - type: "SEARCH/SET_QUERY", + type: "view/search/set-query", payload: { query } @@ -34930,20 +37879,22 @@ var onPluginSettingsUpdate = (view, state2, action) => { if (!view.container) return; const type = action.type; - if (type === "SET_FONT_SIZE") { + if (type === "settings/view/theme/set-font-size") { applyFontSize(view, state2.view.fontSize); - } else if (type === "SET_CONTAINER_BG") { + } else if (type === "settings/view/theme/set-h1-font-size") { + applyHeadingsFontSize(view, state2.view.h1FontSize_em); + } else if (type === "settings/view/theme/set-container-bg-color") { applyCssColor(view, "containerBg"); - } else if (type === "SET_ACTIVE_BRANCH_BG") { + } else if (type === "settings/view/theme/set-active-branch-bg-color") { applyCssColor(view, "activeBranchBg"); - } else if (type === "SET_CARD_WIDTH") { + } else if (type === "settings/view/layout/set-card-width") { applyCardWidth(view, state2.view.cardWidth); - } else if (type === "SET_CARDS_GAP") { + } else if (type === "settings/view/layout/set-cards-gap") { applyCardsGap(view, state2.view.cardsGap); - } else if (action.type === "UI/CHANGE_ZOOM_LEVEL") { + } else if (action.type === "settings/view/set-zoom-level") { applyZoomLevel(view, state2.view.zoomLevel); view.zoomFactor = state2.view.zoomLevel; - } else if (action.type === "SET_DOCUMENT_TYPE") { + } else if (action.type === "settings/documents/set-document-format") { view.saveDocument(); } else if (type === "settings/view/set-node-indentation-width") { applyCardIndentationWidth(view, state2.view.nodeIndentationWidth); @@ -34960,38 +37911,34 @@ var onPluginSettingsUpdate = (view, state2, action) => { }); } else if (type === "settings/view/modes/toggle-outline-mode") { if (state2.view.outlineMode) { - const columns = view.documentStore.getValue().document.columns; view.viewStore.dispatch({ - type: "view/outline/refresh-collapsed-nodes", - payload: { - columns - } + type: "view/outline/refresh-collapsed-nodes" }); } } - const shouldAlign = type === "view/left-sidebar/toggle" || type === "view/left-sidebar/set-width" || type === "UI/CHANGE_ZOOM_LEVEL" || type === "SET_CARD_WIDTH" || type === "SET_LIMIT_PREVIEW_HEIGHT" || type === "VIEW/TOGGLE_MINIMAP" || type === "VIEW/SCROLLING/TOGGLE_SCROLLING_MODE" || type === "settings/view/scrolling/toggle-vertical-scrolling-mode" || type === "SET_CARDS_GAP" || type === "view/modes/gap-between-cards/toggle" || type === "settings/view/set-node-indentation-width"; + const shouldAlign = type === "view/left-sidebar/toggle" || type === "view/left-sidebar/set-width" || type === "settings/view/set-zoom-level" || type === "settings/view/layout/set-card-width" || type === "settings/view/layout/set-limit-card-height" || type === "settings/view/toggle-minimap" || type === "settings/view/toggle-horizontal-scrolling-mode" || type === "settings/view/toggle-vertical-scrolling-mode" || type === "settings/view/layout/set-cards-gap" || type === "view/modes/gap-between-cards/toggle" || type === "settings/view/set-node-indentation-width"; if (shouldAlign) { view.alignBranch.align(action); } - if (view.isActive && type === "UI/CHANGE_ZOOM_LEVEL") { + if (view.isActive && type === "settings/view/set-zoom-level") { focusContainer(view); } - const shouldUpdateStyleRules = type === "settings/style-rules/add" || type === "settings/style-rules/update" || type === "settings/style-rules/delete" || type === "settings/style-rules/update-condition" || type === "settings/style-rules/enable-rule" || type === "settings/style-rules/disable-rule" || type === "settings/style-rules/move" || type === "settings/style-rules/update-style"; + const shouldUpdateStyleRules = type === "settings/style-rules/add" || type === "settings/style-rules/update" || type === "settings/style-rules/delete" || type === "settings/style-rules/update-condition" || type === "settings/style-rules/enable-rule" || type === "settings/style-rules/disable-rule" || type === "settings/style-rules/move" || type === "settings/style-rules/update-style" || type === "settings/style-rules/toggle-global"; if (shouldUpdateStyleRules) { view.rulesProcessor.onRulesUpdate(); } }; -// src/stores/view/subscriptions/on-documents-state-update.ts -var onDocumentsStateUpdate = (view, action) => { +// src/stores/view/subscriptions/on-plugin-state-update.ts +var onPluginStateUpdate = (view, action) => { if (!view.container) return; - if (action.type === "WORKSPACE/ACTIVE_LEAF_CHANGE") { + if (action.type === "plugin/echo/workspace/active-leaf-change") { if (view.viewStore.getValue().document.editing.activeNodeId) { saveNodeContent(view); } } - if (action.type === "WORKSPACE/SET_ACTIVE_LINEAGE_VIEW" || action.type === "WORKSPACE/RESIZE") { + if (action.type === "plugin/documents/update-active-view-of-document" || action.type === "plugin/echo/workspace/resize") { if (view.isActive) { focusContainer(view); view.plugin.statusBar.updateAll(view); @@ -35001,17 +37948,17 @@ var onDocumentsStateUpdate = (view, action) => { }; // src/stores/view/subscriptions/on-metadata-cache.ts -var import_obsidian32 = require("obsidian"); +var import_obsidian29 = require("obsidian"); var metadataCallback = (view, updatedFile) => { const viewFile = view.file; if (!viewFile) return; if (updatedFile === viewFile) { - debounced(view); + markUnresolvedLinks(view); } }; var vaultCallback = (view, affectedFile) => { - if (!(affectedFile instanceof import_obsidian32.TFile)) + if (!(affectedFile instanceof import_obsidian29.TFile)) return; const viewFile = view.file; if (!viewFile) @@ -35028,7 +37975,7 @@ var vaultCallback = (view, affectedFile) => { } } if (affectedFileIsALink) { - debounced(view); + markUnresolvedLinks(view); } }; var onMetadataCache = (view) => { @@ -35074,10 +38021,10 @@ var viewSubscriptions = (view) => { } } ); - const unsubFromDocuments = view.plugin.documents.subscribe((_, action) => { + const unsubFromDocuments = view.plugin.store.subscribe((_, action) => { if (!action) return; - onDocumentsStateUpdate(view, action); + onPluginStateUpdate(view, action); }); const unsubFromSettings = view.plugin.settings.subscribe( (state2, action) => { @@ -35101,7 +38048,7 @@ var viewSubscriptions = (view) => { }; // src/obsidian/helpers/inline-editor/inline-editor.ts -var import_obsidian35 = require("obsidian"); +var import_obsidian32 = require("obsidian"); // src/obsidian/helpers/inline-editor/helpers/vim-enter-insert-mode.ts var vimEnterInsertMode = (plugin, view) => { @@ -35162,13 +38109,13 @@ var fixVimCursorWhenZooming = (view) => { }; // src/obsidian/helpers/inline-editor/helpers/lock-file.ts -var import_obsidian33 = require("obsidian"); +var import_obsidian30 = require("obsidian"); var noop2 = async () => { }; var lockFile = (view) => { view.plugin.app.workspace.iterateAllLeaves((e) => { const leafView = e.view; - if (leafView instanceof import_obsidian33.MarkdownView) { + if (leafView instanceof import_obsidian30.MarkdownView) { if (leafView.file === view.file) { leafView.__setViewData__ = leafView.setViewData; leafView.setViewData = noop2; @@ -35178,11 +38125,11 @@ var lockFile = (view) => { }; // src/obsidian/helpers/inline-editor/helpers/unlock-file.ts -var import_obsidian34 = require("obsidian"); +var import_obsidian31 = require("obsidian"); var unlockFile = (view) => { view.plugin.app.workspace.iterateAllLeaves((e) => { const leafView = e.view; - if (leafView instanceof import_obsidian34.MarkdownView) { + if (leafView instanceof import_obsidian31.MarkdownView) { if (leafView.file === view.file) { if ("__setViewData__" in leafView) { leafView.setViewData = leafView.__setViewData__; @@ -35196,13 +38143,14 @@ var unlockFile = (view) => { // src/obsidian/helpers/inline-editor/inline-editor.ts var noop3 = async () => { }; -var _nodeId; +var _nodeId, _mounting; var InlineEditor = class { constructor(view) { this.view = view; __privateAdd(this, _nodeId, null); this.target = null; this.onChangeSubscriptions = /* @__PURE__ */ new Set(); + __privateAdd(this, _mounting, Promise.resolve()); this.subscriptions = /* @__PURE__ */ new Set(); this.cursorPositions = /* @__PURE__ */ new Map(); this.focus = () => { @@ -35233,10 +38181,10 @@ var InlineEditor = class { } }; this.setActiveEditor = () => { - this.view.plugin.app.workspace.activeEditor = this.inlineView; + this.view.plugin.app.workspace._activeEditor = this.inlineView; }; this.invokeAndDeleteOnChangeSubscriptions = () => { - if (this.onChangeSubscriptions.size) + if (this.onChangeSubscriptions.size > 0) for (const subscription of this.onChangeSubscriptions) { subscription(); this.onChangeSubscriptions.delete(subscription); @@ -35249,7 +38197,7 @@ var InlineEditor = class { const content = this.getContent(); const viewState = this.view.viewStore.getValue(); this.view.documentStore.dispatch({ - type: "DOCUMENT/SET_NODE_CONTENT", + type: "document/update-node-content", payload: { nodeId, content @@ -35260,6 +38208,9 @@ var InlineEditor = class { }); }; this.fixVimWhenZooming = () => { + const viewState = this.view.viewStore.getValue(); + if (viewState.document.editing.isInSidebar) + return; const unsub = fixVimCursorWhenZooming(this.view); if (unsub) { this.subscriptions.add(unsub); @@ -35272,12 +38223,18 @@ var InlineEditor = class { set nodeId(value) { __privateSet(this, _nodeId, value); } + get mounting() { + return __privateGet(this, _mounting); + } getContent() { return this.inlineView.editor.getValue(); } getCursor() { return this.inlineView.editor.getCursor(); } + getEditor() { + return this.inlineView.editor; + } deleteNodeCursor(nodeId) { this.cursorPositions.delete(nodeId); } @@ -35296,6 +38253,11 @@ var InlineEditor = class { if (this.nodeId) { this.unloadNode(); } + let resolve = () => { + }; + __privateSet(this, _mounting, new Promise((_resolve) => { + resolve = _resolve; + })); const content = this.view.documentStore.getValue().document.content[nodeId]?.content; this.setContent(content); target.append(this.containerEl); @@ -35311,6 +38273,7 @@ var InlineEditor = class { this.restoreCursor(); this.lockFile(); this.fixVimWhenZooming(); + setTimeout(() => resolve(), Math.max(16, content.length / 60)); } unloadNode(nodeId, discardChanges = false) { const currentNodeId = this.nodeId; @@ -35338,7 +38301,7 @@ var InlineEditor = class { const workspace = this.view.plugin.app.workspace; this.containerEl = document.createElement("div"); this.containerEl.addClasses(["lineage-inline-editor"]); - this.inlineView = new import_obsidian35.MarkdownView({ + this.inlineView = new import_obsidian32.MarkdownView({ containerEl: this.containerEl, app: this.view.plugin.app, workspace @@ -35384,6 +38347,7 @@ var InlineEditor = class { } }; _nodeId = new WeakMap(); +_mounting = new WeakMap(); // src/view/helpers/stringify-document.ts var stringifyDocument = (document2, format2) => { @@ -35397,35 +38361,6 @@ var stringifyDocument = (document2, format2) => { } }; -// src/obsidian/events/workspace/helpers/maybe-get-document-format.ts -var maybeGetDocumentFormat = (view) => { - invariant(view.file); - return view.plugin.settings.getValue().documents[view.file.path]?.documentFormat; -}; - -// src/obsidian/events/workspace/helpers/get-or-detect-document-format.ts -var getOrDetectDocumentFormat = (view, data) => { - const format2 = maybeGetDocumentFormat(view); - if (format2) { - return format2; - } - const detected = detectDocumentFormat(view.data); - if (detected) - return detected; - const defaultFormat = view.plugin.settings.getValue().general.defaultDocumentFormat; - if (defaultFormat === "outline") { - if (!data.trim()) - return "outline"; - try { - const tree = outlineToJson(data); - if (tree.length <= 1 && tree[0]?.children?.length === 0) - return "outline"; - } catch { - } - } - return defaultFormat; -}; - // node_modules/fuse.js/dist/fuse.mjs function isArray(value) { return !Array.isArray ? getTag(value) === "[object Array]" : Array.isArray(value); @@ -36735,7 +39670,7 @@ Fuse.config = Config; register(ExtendedSearch); } -// src/view/helpers/document-search.ts +// src/stores/view/subscriptions/effects/document-search/document-search.ts var _searchTriggeredMinimap; var DocumentSearch = class { constructor(view) { @@ -36756,7 +39691,7 @@ var DocumentSearch = class { } this.fuse = new Fuse(items, { keys: ["content"], - threshold: viewState.search.fuzzySearch ? 0.4 : 0.1, + threshold: viewState.search.fuzzySearch ? 0.4 : 0, shouldSort: true, isCaseSensitive: false, ignoreLocation: true @@ -36769,7 +39704,12 @@ var DocumentSearch = class { if (!this.fuse) { this.updateIndex(); } - return this.fuse.search(query); + const results = this.fuse.search(query); + const map = /* @__PURE__ */ new Map(); + for (const result of results) { + map.set(result.item.id, result); + } + return map; }; } get searchTriggeredMinimap() { @@ -36782,7 +39722,7 @@ var DocumentSearch = class { _searchTriggeredMinimap = new WeakMap(); // src/stores/view/subscriptions/effects/style-rules/style-rules-processor.ts -var import_obsidian36 = require("obsidian"); +var import_obsidian33 = require("obsidian"); var StyleRulesProcessor = class { constructor(view) { this.rules = []; @@ -36806,7 +39746,7 @@ var StyleRulesProcessor = class { }); this.rules = []; }; - this.processRules = (0, import_obsidian36.debounce)( + this.processRules = (0, import_obsidian33.debounce)( async (action) => { let results = null; if (this.rules.length > 0) { @@ -36833,51 +39773,50 @@ var StyleRulesProcessor = class { this.setRules = () => { const path = this.view.file?.path; invariant(path); - const rules = this.view.plugin.settings.getValue().styleRules.documents[path]; - this.rules = rules?.rules ?? []; + const settings = this.view.plugin.settings.getValue(); + const documentRules = settings.styleRules.documents[path]; + const globalRules = settings.styleRules.global; + this.rules = []; + if (documentRules) { + this.rules.push(...documentRules.rules); + } + this.rules.push( + ...globalRules.rules.map((r) => ({ ...r, global: true })) + ); }; this.view = view; } }; -// src/helpers/delay.ts -var delay = async (milliseconds) => { - return new Promise((resolve) => setTimeout(resolve, milliseconds)); -}; - // src/stores/view/subscriptions/effects/align-branch/helpers/delay-align.ts var delayAlign = (action) => { let delay2 = 0; - if (action.type === "view/left-sidebar/toggle" || action.type === "VIEW/TOGGLE_MINIMAP") { + if (action.type === "view/left-sidebar/toggle" || action.type === "settings/view/toggle-minimap") { delay2 = 300; - } else if (action.type === "DOCUMENT/DROP_NODE") { - delay2 = 32; + } else if (action.type === "plugin/echo/workspace/resize") { + delay2 = 50; + } else if (action.type === "view/life-cycle/mount") { + delay2 = 16; + } else if (action.type === "view/update-active-branch?source=document") { + const documentAction = action.context.documentAction; + if (documentAction.type === "document/add-node" || documentAction.type === "document/drop-node") { + delay2 = 16; + } else if (documentAction.type === "document/move-node") { + const horizontalMove = documentAction.payload.direction === "left" || documentAction.payload.direction === "right"; + if (horizontalMove) + delay2 = 16; + } } return delay2; }; -// src/stores/view/subscriptions/effects/align-branch/helpers/adjust-scroll-behavior.ts -var adjustScrollBehavior = (action) => { - let behavior = "smooth"; - if (action?.type === "DOCUMENT/MOVE_NODE") { - const verticalMove = action.payload.direction === "down" || action.payload.direction === "up"; - if (verticalMove) - behavior = "instant"; - } else if (action.type === "DOCUMENT/LOAD_FILE") { - behavior = "instant"; - } else if (action.type === "UI/CHANGE_ZOOM_LEVEL") { - behavior = "instant"; - } - return behavior; -}; - // src/stores/view/subscriptions/effects/align-branch/create-align-branch-actions/force-center-active-node-v.ts var forceCenterActiveNodeV = (action) => { let centerActiveNodeV = false; - centerActiveNodeV = action.type === "view/life-cycle/mount" || action.type === "DOCUMENT/LOAD_FILE"; + centerActiveNodeV = action.type === "view/life-cycle/mount" || action.type === "document/file/load-from-disk"; if (!centerActiveNodeV) { const type = getDocumentEventType(action.type); - centerActiveNodeV = !!type.dropOrMove || !!type.changeHistory || !!type.createOrDelete && action.type !== "DOCUMENT/INSERT_NODE"; + centerActiveNodeV = !!type.dropOrMove || !!type.changeHistory || !!type.createOrDelete && action.type !== "document/add-node"; } return centerActiveNodeV; }; @@ -36885,7 +39824,7 @@ var forceCenterActiveNodeV = (action) => { // src/stores/view/subscriptions/effects/align-branch/create-align-branch-actions/lazy-vertical-scrolling-mode.ts var lazyVerticalScrollingMode = (context, action) => { const actions = []; - if (action.type === "DOCUMENT/INSERT_NODE") { + if (action.type === "document/add-node") { if (action.payload.position === "right") { actions.push({ action: "20/active-node/vertical/align-with-parent" @@ -36893,6 +39832,14 @@ var lazyVerticalScrollingMode = (context, action) => { } else { actions.push({ action: "20/active-node/vertical/reveal" }); } + } else if (action.type === "plugin/echo/workspace/resize" || action.type === "plugin/echo/workspace/active-leaf-change" || action.type === "view/left-sidebar/toggle" || action.type === "view/left-sidebar/set-width") { + actions.push({ action: "20/active-node/vertical/reveal" }); + actions.push({ + action: "30/parents/vertical/align-with-active-node" + }); + actions.push({ + action: "40/children/vertical/align-with-active-node" + }); } else { actions.push({ action: "20/active-node/vertical/reveal" }); const previousActiveBranch = context.previousActiveBranch; @@ -36922,7 +39869,7 @@ var lazyVerticalScrollingMode = (context, action) => { var outlineScrollingActions = (context, action) => { const actions = []; const settings = context.alignBranchSettings; - const forceCenterActiveNodeV2 = action.type === "view/life-cycle/mount" || action.type === "DOCUMENT/LOAD_FILE"; + const forceCenterActiveNodeV2 = action.type === "view/life-cycle/mount" || action.type === "document/file/load-from-disk"; if (forceCenterActiveNodeV2) { actions.push({ action: "20/active-node/horizontal/center" }); actions.push({ action: "20/active-node/vertical/center" }); @@ -36956,6 +39903,9 @@ var forceCenterActiveNodeH = (context, action) => { // src/stores/view/subscriptions/effects/align-branch/create-align-branch-actions/create-align-branch-actions.ts var createAlignBranchActions = (context, action) => { const actions = []; + if (action.type === "view/update-active-branch?source=document") { + action = action.context.documentAction; + } if (action.type === "view/align-branch/reveal-node") { actions.push({ action: "20/active-node/vertical/reveal" }); actions.push({ action: "20/active-node/horizontal/reveal" }); @@ -36985,10 +39935,10 @@ var createAlignBranchActions = (context, action) => { } else { actions.push(...lazyVerticalScrollingMode(context, action)); } - if (action.type === "view/life-cycle/mount" || action.type === "DOCUMENT/SPLIT_NODE" || action.type === "DOCUMENT/LOAD_FILE") { + if (action.type === "view/life-cycle/mount" || action.type === "document/split-node" || action.type === "document/file/load-from-disk") { actions.push({ action: "50/inactive-columns/vertical/move-up" }); } - if (!settings.centerActiveNodeH && (action.type === "view/life-cycle/mount" || action.type === "UI/CHANGE_ZOOM_LEVEL")) { + if (!settings.centerActiveNodeH && (action.type === "view/life-cycle/mount" || action.type === "settings/view/set-zoom-level")) { actions.push({ action: "10/first-column/horizontal/move-to-the-left" }); @@ -37243,10 +40193,12 @@ var alignInactiveColumns = (context) => { }; // src/stores/view/subscriptions/effects/align-branch/run-align-branch-actions/run-align-branch-actions.ts -var runAlignBranchActions = (context, actions) => { +var runAlignBranchActions = (context, actions, signal) => { actions = actions.sort((a, b) => a.action.localeCompare(b.action)); const activeNode = context.activeBranch.node; for (const action of actions) { + if (signal.aborted) + return; const type = action.action; if (type === "10/first-column/horizontal/move-to-the-left") { scrollFirstColumnToTheLeft(context); @@ -37281,7 +40233,7 @@ var runAlignBranchActions = (context, actions) => { // src/stores/view/subscriptions/effects/align-branch/helpers/skip-align.ts var skipAlign = (view, action) => { - if (action.type === "DOCUMENT/SET_NODE_CONTENT" && action.context.isInSidebar) + if (action.type === "document/update-node-content" && action.context.isInSidebar) return true; if (action.type === "view/set-active-node/mouse-silent") return true; @@ -37294,160 +40246,11 @@ var skipAlign = (view, action) => { } }; -// src/stores/view/subscriptions/effects/align-branch/constants/action-category.ts -var actionCategoryDict = { - "view/align-branch/center-node": "manual", - "view/align-branch/reveal-node": "manual", - "DOCUMENT/LOAD_FILE": "document/reset", - RESET_STORE: "document/reset", - "DOCUMENT/INSERT_NODE": "document/structure", - "DOCUMENT/DROP_NODE": "document/structure", - "DOCUMENT/DELETE_NODE": "document/structure", - "DOCUMENT/MERGE_NODE": "document/structure", - "DOCUMENT/MOVE_NODE": "document/structure", - "DOCUMENT/SPLIT_NODE": "document/structure", - "DOCUMENT/PASTE_NODE": "document/structure", - "DOCUMENT/EXTRACT_BRANCH": "document/structure", - "DOCUMENT/CUT_NODE": "document/structure", - "HISTORY/APPLY_PREVIOUS_SNAPSHOT": "document/structure", - "HISTORY/APPLY_NEXT_SNAPSHOT": "document/structure", - "HISTORY/SELECT_SNAPSHOT": "document/structure", - "DOCUMENT/SET_NODE_CONTENT": "document/content", - "DOCUMENT/FORMAT_HEADINGS": "document/content", - "view/main/disable-edit": "view/editor", - "view/main/enable-edit": "view/editor", - "DOCUMENT/JUMP_TO_NODE": "view/active-node/keyboard", - "DOCUMENT/NAVIGATE_USING_KEYBOARD": "view/active-node/keyboard", - "NAVIGATION/SELECT_NEXT_NODE": "view/active-node/mouse", - "NAVIGATION/NAVIGATE_BACK": "view/active-node/mouse", - "NAVIGATION/NAVIGATE_FORWARD": "view/active-node/mouse", - "view/outline/toggle-collapse-node": "view/outline", - "view/outline/refresh-collapsed-nodes": "view/outline", - "view/outline/toggle-collapse-all": "view/outline", - // todo: add a separate event for effect source - "view/set-active-node/mouse": "view/active-node/mouse", - "view/set-active-node/mouse-silent": "other", - "view/set-active-node/document": "view/active-node/document", - "view/set-active-node/search": "view/active-node/search", - "view/left-sidebar/set-width": "settings/layout", - "WORKSPACE/ACTIVE_LEAF_CHANGE": "view/life-cycle", - "WORKSPACE/RESIZE": "view/resize", - "WORKSPACE/LAYOUT_READY": "view/life-cycle", - "WORKSPACE/SET_ACTIVE_LINEAGE_VIEW": "view/life-cycle", - "view/life-cycle/mount": "view/life-cycle", - "VIEW/TOGGLE_MINIMAP": "settings/layout", - "view/left-sidebar/toggle": "settings/layout", - SET_CARD_WIDTH: "settings/layout", - SET_CARDS_GAP: "settings/layout", - SET_MIN_CARD_HEIGHT: "settings/layout", - "VIEW/SCROLLING/TOGGLE_SCROLLING_MODE": "settings/scrolling", - "settings/view/scrolling/toggle-vertical-scrolling-mode": "settings/scrolling", - SET_LIMIT_PREVIEW_HEIGHT: "settings/layout", - "UI/CHANGE_ZOOM_LEVEL": "settings/zoom", - "view/modes/gap-between-cards/toggle": "settings/layout", - "settings/view/modes/toggle-outline-mode": "settings/layout", - "settings/view/set-node-indentation-width": "settings/layout", - "SEARCH/SET_RESULTS": "view/active-node/search", - "search/toggle-show-all-nodes": "view/active-node/search", - "SEARCH/SET_QUERY": "view/active-node/search", - "SEARCH/TOGGLE_INPUT": "view/active-node/search", - "SEARCH/TOGGLE_FUZZY_MODE": "view/active-node/search", - "FS/SET_FILE_PATH": "other", - "DOCUMENT/COPY_NODE": "other", - "FILE/UPDATE_FRONTMATTER": "other", - "document/pinned-nodes/pin": "other", - "document/pinned-nodes/unpin": "other", - "document/pinned-nodes/remove-stale-nodes": "other", - "document/pinned-nodes/load-from-settings": "other", - "META/REFRESH_GROUP_PARENT_IDS": "other", - SET_DRAG_STARTED: "other", - "DOCUMENT/SET_DRAG_ENDED": "other", - UPDATE_ACTIVE_BRANCH: "other", - "view/confirmation/reset/disable-edit": "other", - "view/confirmation/reset/delete-node": "other", - "view/confirmation/confirm/delete-node": "other", - "view/confirmation/confirm/disable-edit": "other", - "DOCUMENT/CLEAR_SELECTION": "other", - "UI/TOGGLE_HELP_SIDEBAR": "other", - "UI/TOGGLE_HISTORY_SIDEBAR": "other", - "UI/TOGGLE_SETTINGS_SIDEBAR": "other", - CLOSE_MODALS: "other", - "view/modals/toggle-style-rules": "other", - "NAVIGATION/REMOVE_OBSOLETE": "other", - "view/pinned-nodes/set-active-node": "other", - "view/recent-nodes/set-active-node": "other", - "view/sidebar/enable-edit": "other", - "view/sidebar/disable-edit": "other", - "view/style-rules/update-results": "other", - "view/keyboard/shift/down": "other", - "view/keyboard/shift/up": "other", - "view/hotkeys/set-search-term": "other", - "view/hotkeys/update-conflicts": "other", - "view/selection/set-selection": "other", - SET_DOCUMENT_TYPE: "other", - SET_VIEW_TYPE: "other", - DELETE_DOCUMENT_PREFERENCES: "other", - "HISTORY/UPDATE_DOCUMENT_PATH": "other", - SET_CUSTOM_HOTKEYS: "other", - SET_FONT_SIZE: "other", - SET_CONTAINER_BG: "other", - SET_ACTIVE_BRANCH_BG: "other", - UPDATE_DOCUMENTS_DICTIONARY: "other", - "settings/document/persist-active-section": "other", - "GENERAL/SET_DEFAULT_DOCUMENT_FORMAT": "other", - "view/left-sidebar/set-active-tab": "other", - "settings/pinned-nodes/persist": "other", - "settings/pinned-nodes/persist-active-node": "other", - "settings/style-rules/add": "other", - "settings/style-rules/update": "other", - "settings/style-rules/delete": "other", - "settings/style-rules/move": "other", - "settings/style-rules/update-condition": "other", - "settings/style-rules/enable-rule": "other", - "settings/style-rules/disable-rule": "other", - "settings/view/set-maintain-edit-mode": "other", - "settings/view/theme/set-inactive-node-opacity": "other", - "settings/view/theme/set-active-branch-color": "other", - "settings/hotkeys/set-custom-hotkey": "other", - "settings/hotkeys/reset-custom-hotkey": "other", - "settings/hotkeys/reset-all": "other", - "settings/hotkeys/apply-preset": "other", - "settings/hotkeys/toggle-editor-state": "other", - "settings/hotkeys/set-blank": "other", - "DOCUMENTS/DELETE_DOCUMENT": "other", - "DOCUMENTS/UPDATE_DOCUMENT_PATH": "other", - "DOCUMENTS/ADD_DOCUMENT": "other" -}; -var actionCategory = new Map( - Object.entries(actionCategoryDict) -); -var actionCategoryPriorityDict = { - "document/reset": 100, - "view/life-cycle": 100, - "view/active-node/keyboard": 90, - "view/active-node/mouse": 90, - "document/structure": 80, - "document/content": 70, - "view/active-node/document": 30, - "view/active-node/search": 30, - "view/resize": 20, - "view/editor": 20, - "view/outline": 20, - "settings/zoom": 20, - "settings/layout": 20, - "settings/scrolling": 20, - manual: 10, - other: 0 -}; -var actionCategoryPriority = new Map( - Object.entries(actionCategoryPriorityDict) -); - // src/lib/align-element/helpers/wait-for-active-node-to-stop-moving.ts var LOOP_DELAY_MS = 10; var MAX_ATTEMPTS = 100; -var REQUIRED_MATCHES = 5; -var waitForActiveNodeToStopMoving = async (view) => { +var REQUIRED_MATCHES = 20; +var waitForActiveNodeToStopMoving = async (view, signal) => { const activeBranch = view.viewStore.getValue().document.activeBranch; let columnEl; let retries = 0; @@ -37455,7 +40258,7 @@ var waitForActiveNodeToStopMoving = async (view) => { let lastScrollTop = -1; let lastScrollLeft = -1; const container = view.container; - while (retries < MAX_ATTEMPTS) { + while (retries < MAX_ATTEMPTS && !signal.aborted) { if (!columnEl) { columnEl = getElementById(container, activeBranch.column); } else { @@ -37475,92 +40278,266 @@ var waitForActiveNodeToStopMoving = async (view) => { } }; +// src/stores/view/subscriptions/effects/align-branch/helpers/adjust-scroll-behavior.ts +var adjustScrollBehavior = (action) => { + let behavior = "smooth"; + if (action.type === "view/update-active-branch?source=document") { + const documentAction = action.context.documentAction; + const documentEvent = documentAction.type; + if (documentEvent === "document/file/load-from-disk") { + behavior = "instant"; + } else if (documentEvent === "document/move-node") { + const verticalMove = documentAction.payload.direction === "down" || documentAction.payload.direction === "up"; + if (verticalMove) + behavior = "instant"; + } + } else if (action.type === "settings/view/set-zoom-level") { + behavior = "instant"; + } + return behavior; +}; + +// src/stores/view/subscriptions/effects/align-branch/helpers/create-context.ts +var createContext = (view, action, previousActiveBranch) => { + const settings = view.plugin.settings.getValue(); + const container = view.container; + const documentState = view.documentStore.getValue(); + const viewState = view.viewStore.getValue(); + const activeBranch = viewState.document.activeBranch; + const behavior = adjustScrollBehavior(action); + const context = { + previousActiveBranch, + activeBranch, + columns: documentState.document.columns, + container, + activeNodesOfColumn: viewState.document.activeNodesOfColumn, + containerRect: container.getBoundingClientRect(), + outlineMode: settings.view.outlineMode, + alignBranchSettings: { + centerActiveNodeH: settings.view.scrolling.centerActiveNodeH, + centerActiveNodeV: settings.view.scrolling.centerActiveNodeV, + zoomLevel: settings.view.zoomLevel, + behavior + }, + state: { + rects: /* @__PURE__ */ new Map() + } + }; + return context; +}; + +// src/stores/view/subscriptions/effects/align-branch/constants/action-priority.ts +var actionPriorityRecord = { + "view/life-cycle/mount": 100, + "view/update-active-branch?source=document": 90, + "view/set-active-node/keyboard-jump": 90, + "view/set-active-node/sequential/select-next": 90, + "view/set-active-node/keyboard": 90, + "view/set-active-node/history/select-previous": 90, + "view/set-active-node/history/select-next": 90, + "view/set-active-node/mouse": 90, + "view/set-active-node/mouse-silent": 0, + "view/set-active-node/search": 30, + "view/align-branch/center-node": 30, + "view/align-branch/reveal-node": 30, + "view/selection/select-all": 30, + "document/update-node-content": 30, + "view/set-active-node/document": 20, + "view/editor/disable-main-editor": 20, + "view/editor/enable-main-editor": 20, + "view/outline/toggle-collapse-node": 10, + "view/outline/refresh-collapsed-nodes": 10, + "view/outline/toggle-collapse-all": 10, + "document/format-headings": 10, + "view/left-sidebar/set-width": 10, + "plugin/echo/workspace/active-leaf-change": 10, + "plugin/echo/workspace/resize": 10, + "plugin/echo/workspace/layout-ready": 10, + "plugin/documents/update-active-view-of-document": 10, + "settings/view/toggle-minimap": 10, + "view/left-sidebar/toggle": 10, + "settings/view/layout/set-card-width": 10, + "settings/view/layout/set-cards-gap": 10, + "settings/view/layout/set-min-card-height": 10, + "view/modes/gap-between-cards/toggle": 10, + "view/search/set-results": 10, + "search/view/toggle-show-all-nodes": 10, + "view/search/set-query": 10, + "view/search/toggle-input": 10, + "view/search/toggle-fuzzy-mode": 10, + "settings/view/toggle-horizontal-scrolling-mode": 10, + "settings/view/toggle-vertical-scrolling-mode": 10, + "settings/view/layout/set-limit-card-height": 10, + "settings/view/set-zoom-level": 10, + "settings/view/modes/toggle-outline-mode": 10, + "settings/view/set-node-indentation-width": 10 +}; +var actionPriority = new Map( + Object.entries(actionPriorityRecord) +); + // src/stores/view/subscriptions/effects/align-branch/align-branch.ts var AlignBranch = class { constructor(view) { this.view = view; - this.previousActiveBranch = null; this.previousEvent = null; - this.align = async (action) => { - if (skipAlign(this.view, action)) - return; - const delay_ms = delayAlign(action); - if (delay_ms > 0) - await delay(delay_ms); - await this.waitForPreviousEvent(action); - const context = this.createContext(action); - const actions = createAlignBranchActions(context, action); - requestAnimationFrame(() => { - runAlignBranchActions(context, actions); - }); - this.saveActiveBranch(context); - }; - this.createContext = (action) => { - const settings = this.view.plugin.settings.getValue(); - const container = this.view.container; - const documentState = this.view.documentStore.getValue(); - const viewState = this.view.viewStore.getValue(); - const activeBranch = viewState.document.activeBranch; - const behavior = adjustScrollBehavior(action); - const context = { - previousActiveBranch: this.previousActiveBranch, - activeBranch, - columns: documentState.document.columns, - container, - activeNodesOfColumn: viewState.document.activeNodesOfColumn, - containerRect: container.getBoundingClientRect(), - outlineMode: settings.view.outlineMode, - alignBranchSettings: { - centerActiveNodeH: settings.view.scrolling.centerActiveNodeH, - centerActiveNodeV: settings.view.scrolling.centerActiveNodeV, - zoomLevel: settings.view.zoomLevel, - behavior - }, - state: { - rects: /* @__PURE__ */ new Map() + this.previousActiveBranch = null; + this.align = (action) => { + const priority = actionPriority.get(action.type); + if (typeof priority !== "number") { + throw new SilentError(action.type + " not allowed"); + } + if (this.previousEvent && !this.previousEvent.completed) { + if (priority >= this.previousEvent.priority) { + this.previousEvent.controller.abort(); + } else { + return; } - }; - return context; - }; - this.waitForPreviousEvent = async (action) => { - const category = actionCategory.get(action.type); - if (category === "other") { - throw new SilentError("unsupported event: " + action.type); } const event = { - action: action.type, - category, - priority: actionCategoryPriority.get(category), - ts: Date.now() + action, + priority, + controller: new AbortController(), + completed: false }; - if (this.previousEvent) { - if (event.priority < this.previousEvent.priority) { - if (event.ts - this.previousEvent.ts < 500) { - await waitForActiveNodeToStopMoving(this.view); - } - } - } + this.run(event); this.previousEvent = event; }; + this.run = async (event) => { + try { + if (skipAlign(this.view, event.action)) { + event.completed = true; + return; + } + const delay_ms = delayAlign(event.action); + if (delay_ms > 0) { + await delay(delay_ms, event.controller.signal); + } + await this.view.inlineEditor.mounting; + const context = createContext( + this.view, + event.action, + this.previousActiveBranch + ); + this.previousActiveBranch = context.activeBranch; + const actions = createAlignBranchActions(context, event.action); + if (!event.controller.signal.aborted) { + requestAnimationFrame(() => { + runAlignBranchActions( + context, + actions, + event.controller.signal + ); + }); + if (context.alignBranchSettings.behavior === "smooth") { + await waitForActiveNodeToStopMoving( + this.view, + event.controller.signal + ); + } + } + } catch (e) { + logger.error(e); + } + event.completed = true; + }; } - saveActiveBranch(context) { - this.previousActiveBranch = context.activeBranch; +}; + +// src/helpers/debounce.ts +var debounce3 = (func2, delay2) => { + let timeoutId = null; + return (...args) => { + if (timeoutId) + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + func2(...args); + }, delay2); + }; +}; + +// src/stores/minimap/subscriptions/effects/update-visible-range.ts +var updateVisibleRange = async (view) => { + const minimapStore = view.getMinimapStore(); + const state2 = minimapStore.getValue(); + const canvasId = state2.canvasId; + const payload = await minimapWorker.run({ + type: "minimap/set/scroll-position", + payload: { + canvasId, + scroll_position_cpx: state2.scrollbar.scrollPosition_cpx + } + }); + if (payload && "start_cpx" in payload) { + const dom = view.getMinimapDom(); + const canvas = dom.canvas; + requestAnimationFrame(async () => { + const marginTop = cpx_to_dpx(payload.start_cpx) + "px"; + await minimapWorker.run({ + type: "minimap/draw-document", + payload: { + canvasId + } + }); + canvas.style.marginTop = marginTop; + }); } }; +// src/stores/minimap/subscriptions/effects/debounced-minimap-effects.ts +var DebouncedMinimapEffects = class { + constructor() { + this.drawDocument = debounce3(drawDocument, 100); + this.updateVisibleRange = debounce3(updateVisibleRange, 16); + } +}; + +// src/stores/view/subscriptions/actions/document/update-frontmatter.ts +var updateFrontmatter = (view, frontmatter) => { + view.documentStore.dispatch({ + type: "document/file/update-frontmatter", + payload: { + frontmatter + } + }); +}; + +// src/stores/view/subscriptions/actions/document/load-full-document.ts +var loadFullDocument = (view, data, frontmatter, format2, activeSection) => { + view.documentStore.dispatch({ + payload: { + document: { data, frontmatter, position: null }, + format: format2, + activeSection + }, + type: "document/file/load-from-disk" + }); +}; + +// src/stores/plugin/actions/refresh-active-view-of-document.ts +var refreshActiveViewOfDocument = (view) => { + const views = view.plugin.app.workspace.getLeavesOfType(LINEAGE_VIEW_TYPE).map( + (leaf) => leaf.view instanceof LineageView && leaf.view !== view && leaf.view.file ? [leaf.view.id, leaf.view.file.path] : null + ).filter((x) => x); + view.plugin.store.dispatch({ + type: "plugin/documents/refresh-active-view-of-document", + payload: { views } + }); +}; + // src/view/view.ts var LINEAGE_VIEW_TYPE = "lineage"; -var LineageView = class _LineageView extends import_obsidian37.TextFileView { +var LineageView = class _LineageView extends import_obsidian34.TextFileView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; this.minimapDom = null; this.onDestroyCallbacks = /* @__PURE__ */ new Set(); this.onViewStoreError = (error, location, action) => { - if (action && action.type === "DOCUMENT/LOAD_FILE") { + if (action && action.type === "document/file/load-from-disk") { if (this.file) { - this.plugin.documents.dispatch({ - type: "DOCUMENTS/DELETE_DOCUMENT", + this.plugin.store.dispatch({ + type: "plugin/documents/unregister-document-store", payload: { path: this.file.path } }); setViewType(this.plugin, this.file.path, "markdown"); @@ -37573,30 +40550,28 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { } onPluginError(error, location, action); }; - this.saveDocument = async (immediate = false) => { + this.saveDocument = async () => { invariant(this.file); const state2 = clone(this.documentStore.getValue()); - const data = state2.file.frontmatter + stringifyDocument(state2.document, getDocumentFormat(this)); + const data = state2.file.frontmatter + stringifyDocument(state2.document, getPersistedDocumentFormat(this)); if (data !== this.data) { if (data.trim().length === 0) { throw new Error(lang.error_save_empty_data); } this.data = data; - if (immediate) - await this.save(); - else - this.requestSave(); + this.requestSave(); } }; this.loadInitialData = async () => { invariant(this.file); - const fileHasAStore = this.plugin.documents.getValue().documents[this.file.path]; + const pluginState = this.plugin.store.getValue(); + const fileHasAStore = pluginState.documents[this.file.path]; if (fileHasAStore) { this.useExistingStore(); } else { this.createStore(); } - this.loadDocumentToStore(true); + this.loadDocumentToStore("view-mount"); if (!this.inlineEditor) { this.inlineEditor = new InlineEditor(this); await this.inlineEditor.onload(); @@ -37614,64 +40589,42 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { }; this.createStore = () => { invariant(this.file); - this.plugin.documents.dispatch({ - type: "DOCUMENTS/ADD_DOCUMENT", + this.plugin.store.dispatch({ + type: "plugin/documents/register-new-document-store", payload: { path: this.file.path, documentStore: this.documentStore, viewId: this.id } }); - this.documentStore.dispatch({ - type: "FS/SET_FILE_PATH", - payload: { - path: this.file.path - } - }); }; this.useExistingStore = () => { if (!this.file) return; - this.documentStore = this.plugin.documents.getValue().documents[this.file.path].documentStore; + this.documentStore = this.plugin.store.getValue().documents[this.file.path].documentStore; }; - this.loadDocumentToStore = (isInitialLoad = false) => { - const { data, frontmatter } = extractFrontmatter(this.data); - const state2 = this.documentStore.getValue(); - const format2 = getOrDetectDocumentFormat(this, data); - const existingData = stringifyDocument(state2.document, format2); - const bodyHasChanged = existingData !== data; - const frontmatterHasChanged = !bodyHasChanged && frontmatter !== state2.file.frontmatter; - if (!existingData || bodyHasChanged || frontmatterHasChanged) { - const isEditing2 = this.viewStore.getValue().document.editing.activeNodeId; - if (frontmatterHasChanged && !isInitialLoad) { - this.documentStore.dispatch({ - type: "FILE/UPDATE_FRONTMATTER", - payload: { - frontmatter - } - }); - } else if (!isEditing2) { - const activeNode = this.viewStore.getValue().document.activeNode; - const activeSection = activeNode ? this.documentStore.getValue().sections.id_section[activeNode] : null; - this.documentStore.dispatch({ - payload: { - document: { data, frontmatter, position: null }, - format: format2, - activeSection - }, - type: "DOCUMENT/LOAD_FILE" - }); - if (this.isActive && !isInitialLoad && existingData && bodyHasChanged) { - new import_obsidian37.Notice("Document reloaded due to external changes"); - } - if (!maybeGetDocumentFormat(this)) { - invariant(this.file); - setDocumentFormat(this.plugin, this.file.path, format2); - } + this.loadDocumentToStore = (event) => { + const { body, frontmatter } = extractFrontmatter(this.data); + const documentState = this.documentStore.getValue(); + const viewState = this.viewStore.getValue(); + const format2 = this.getDocumentFormat(body); + const emptyStore = documentState.history.items.length === 0; + const existingBody = stringifyDocument(documentState.document, format2); + const bodyHasChanged = existingBody !== body; + const frontmatterHasChanged = frontmatter !== documentState.file.frontmatter; + const isEditing2 = Boolean(viewState.document.editing.activeNodeId); + const activeNode = viewState.document.activeNode; + const activeSection = activeNode ? documentState.sections.id_section[activeNode] : null; + if (emptyStore || bodyHasChanged && !isEditing2) { + loadFullDocument(this, body, frontmatter, format2, activeSection); + if (this.isActive && event !== "view-mount") { + new import_obsidian34.Notice("Document updated externally"); } + } else if (frontmatterHasChanged) { + updateFrontmatter(this, frontmatter); } }; - this.debouncedLoadDocumentToStore = (0, import_obsidian37.debounce)( + this.debouncedLoadDocumentToStore = (0, import_obsidian34.debounce)( this.loadDocumentToStore, 250 ); @@ -37683,19 +40636,21 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { this.viewStore = new Store( defaultViewState(), viewReducer, - this.onViewStoreError + this.onViewStoreError, + this.documentStore.getValue().document ); this.id = id.view(); this.documentSearch = new DocumentSearch(this); this.rulesProcessor = new StyleRulesProcessor(this); this.alignBranch = new AlignBranch(this); + this.minimapEffects = new DebouncedMinimapEffects(); } get isActive() { return this === this.plugin.app.workspace.getActiveViewOfType(_LineageView); } get isViewOfFile() { const path = this.file?.path; - return path ? this.id === this.plugin.documents.getValue().documents[path]?.viewId : false; + return path ? this.id === this.plugin.store.getValue().documents[path]?.viewId : false; } getViewData() { return this.data; @@ -37704,20 +40659,10 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { if (!this.activeFilePath && this.file) { this.activeFilePath = this.file?.path; this.loadInitialData(); - } else if (this.file && data.trim().length === 0) { - this.plugin.app.vault.adapter.read(this.file.path).then((content) => { - if (content.trim().length !== 0) { - throw new Error(lang.error_set_empty_data); - } else { - this.data = data; - this.debouncedLoadDocumentToStore(); - } - }).catch((error) => { - logger.error("Error reading file:", error); - }); } else { this.data = data; - this.debouncedLoadDocumentToStore(); + if (this.isViewOfFile) + this.debouncedLoadDocumentToStore(); } } async onUnloadFile() { @@ -37736,6 +40681,7 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { for (const s of this.onDestroyCallbacks) { s(); } + refreshActiveViewOfDocument(this); } clear() { this.data = ""; @@ -37751,23 +40697,19 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { } async onOpen() { } - /*private destroyStore = () => { - const leavesOfType = this.plugin.app.workspace - .getLeavesOfType(FILE_VIEW_TYPE) - .filter( - (l) => - l.view instanceof LineageView && - l.view.file?.path === this.activeFilePath && - l.view !== this, - ); - if (leavesOfType.length === 0) { - this.store.dispatch({ type: 'RESET_STORE' }); - if (this.file) delete stores[this.file.path]; - } - };*/ async onClose() { return this.onUnloadFile(); } + getDocumentFormat(body) { + let format2; + format2 = getPersistedDocumentFormat(this, false); + if (format2) { + return format2; + } + format2 = detectDocumentFormat(body) || this.plugin.settings.getValue().general.defaultDocumentFormat; + setDocumentFormat(this.plugin, this.file.path, format2); + return format2; + } setMinimapDom(dom) { this.minimapDom = dom; } @@ -37781,28 +40723,24 @@ var LineageView = class _LineageView extends import_obsidian37.TextFileView { } }; -// src/stores/settings/subscriptions/effects/update-file-view-type-cache.ts -var fileViewTypeCache = {}; -var updateFileViewTypeCache = (state2) => { - fileViewTypeCache = state2; -}; - -// src/obsidian/patches/set-view-state.ts -function setViewState(next) { - return function(state2, ...rest) { - const isMarkdownView = state2.type === "markdown"; - const path = state2?.state?.file; - if (isMarkdownView && // @ts-ignore - fileViewTypeCache[path]?.viewType === LINEAGE_VIEW_TYPE && // @ts-ignore - !state2.state.inlineEditor) { - const newState = { - ...state2, - type: LINEAGE_VIEW_TYPE - }; - return next.apply(this, [newState, ...rest]); - } else { - return next.apply(this, [state2, ...rest]); - } +// src/obsidian/patches/create-set-view-state.ts +function createSetViewState(plugin) { + return function(next) { + return function(state2, ...rest) { + const isMarkdownView = state2.type === "markdown"; + const path = state2?.state?.file; + if (isMarkdownView && // @ts-ignore + plugin.viewType[path]?.viewType === LINEAGE_VIEW_TYPE && // @ts-ignore + !state2.state.inlineEditor) { + const newState = { + ...state2, + type: LINEAGE_VIEW_TYPE + }; + return next.apply(this, [newState, ...rest]); + } else { + return next.apply(this, [state2, ...rest]); + } + }; }; } @@ -37864,7 +40802,7 @@ var fixConditionTypes = (rule) => { } }; -// src/helpers/move-array-item.ts +// src/helpers/array-helpers/move-array-item.ts var moveArrayItem = (array, fromIndex, toIndex) => { const newArray = array.slice(); const element2 = newArray[fromIndex]; @@ -37893,18 +40831,25 @@ var handleDND = (rules, payload) => { return rules; }; +// src/helpers/array-helpers/insert-item-at-index.ts +var insertItemAtIndex = (array, item, index) => { + const copy = [...array]; + copy.splice(index, 0, item); + return copy; +}; + // src/stores/settings/reducers/update-style-rules/update-style-rules.ts var updateStyleRules = (settings, action) => { - let state2; - state2 = settings.styleRules.documents[action.payload.documentPath]; - if (!state2) { + let rulesContainer; + rulesContainer = settings.styleRules.settings.activeTab === "global-rules" ? settings.styleRules.global : settings.styleRules.documents[action.payload.documentPath]; + if (!rulesContainer) { if (action.type !== "settings/style-rules/add") { throw new Error("Document does not have any style rules"); } settings.styleRules.documents[action.payload.documentPath] = { rules: [] }; - state2 = settings.styleRules.documents[action.payload.documentPath]; + rulesContainer = settings.styleRules.documents[action.payload.documentPath]; } if (action.type === "settings/style-rules/add") { const newRule = { @@ -37920,66 +40865,111 @@ var updateStyleRules = (settings, action) => { enabled: true }, style: { - color: "#fff", - styleVariant: "left-border" + color: getTheme() === "light" ? "#b2ccf5" : "#274462", + styleVariant: "background-color" }, priority: 0 }; - state2.rules = [...state2.rules, newRule]; + rulesContainer.rules = [...rulesContainer.rules, newRule]; } else if (action.type === "settings/style-rules/update") { const { id: id2, rule } = action.payload; - const index = state2.rules.findIndex((r) => r.id === id2); + const index = rulesContainer.rules.findIndex((r) => r.id === id2); if (index !== -1) { - state2.rules[index] = { ...state2.rules[index], ...rule }; - fixConditionTypes(state2.rules[index]); - state2.rules = [...state2.rules]; + rulesContainer.rules[index] = { + ...rulesContainer.rules[index], + ...rule + }; + fixConditionTypes(rulesContainer.rules[index]); + rulesContainer.rules = [...rulesContainer.rules]; } } else if (action.type === "settings/style-rules/delete") { - state2.rules = state2.rules.filter( + rulesContainer.rules = rulesContainer.rules.filter( (rule) => rule.id !== action.payload.id ); } else if (action.type === "settings/style-rules/move") { - state2.rules = handleDND(state2.rules, action.payload); + rulesContainer.rules = handleDND(rulesContainer.rules, action.payload); } else if (action.type === "settings/style-rules/update-style") { - const index = state2.rules.findIndex((r) => r.id === action.payload.id); + const index = rulesContainer.rules.findIndex( + (r) => r.id === action.payload.id + ); if (index !== -1) { - state2.rules[index] = { - ...state2.rules[index], + rulesContainer.rules[index] = { + ...rulesContainer.rules[index], // @ts-ignore style: { - ...state2.rules[index].style, + ...rulesContainer.rules[index].style, ...action.payload.style } }; - state2.rules = [...state2.rules]; + rulesContainer.rules = [...rulesContainer.rules]; } } else if (action.type === "settings/style-rules/update-condition") { const { ruleId, updates } = action.payload; - const index = state2.rules.findIndex((r) => r.id === ruleId); + const index = rulesContainer.rules.findIndex((r) => r.id === ruleId); if (index !== -1) { - state2.rules[index] = { - ...state2.rules[index], + rulesContainer.rules[index] = { + ...rulesContainer.rules[index], // @ts-ignore condition: { - ...state2.rules[index].condition, + ...rulesContainer.rules[index].condition, ...updates } }; - fixConditionTypes(state2.rules[index]); - state2.rules = [...state2.rules]; + fixConditionTypes(rulesContainer.rules[index]); + rulesContainer.rules = [...rulesContainer.rules]; } } else if (action.type === "settings/style-rules/enable-rule") { - const index = state2.rules.findIndex((r) => r.id === action.payload.id); + const index = rulesContainer.rules.findIndex( + (r) => r.id === action.payload.id + ); if (index !== -1) { - state2.rules[index].enabled = true; - state2.rules = [...state2.rules]; + rulesContainer.rules[index].enabled = true; + rulesContainer.rules = [...rulesContainer.rules]; } } else if (action.type === "settings/style-rules/disable-rule") { - const index = state2.rules.findIndex((r) => r.id === action.payload.id); + const index = rulesContainer.rules.findIndex( + (r) => r.id === action.payload.id + ); if (index !== -1) { - state2.rules[index].enabled = false; - state2.rules = [...state2.rules]; + rulesContainer.rules[index].enabled = false; + rulesContainer.rules = [...rulesContainer.rules]; } + } else if (action.type === "settings/style-rules/toggle-global") { + const rule = rulesContainer.rules.find( + (r) => r.id === action.payload.id + ); + invariant(rule); + rulesContainer.rules = rulesContainer.rules.filter( + (r) => r.id !== action.payload.id + ); + if (settings.styleRules.settings.activeTab === "global-rules") { + let documentRules = settings.styleRules.documents[action.payload.documentPath]; + if (!documentRules) { + settings.styleRules.documents[action.payload.documentPath] = { + rules: [] + }; + documentRules = settings.styleRules.documents[action.payload.documentPath]; + } + documentRules.rules = [...documentRules.rules, rule]; + } else { + settings.styleRules.global.rules = [ + ...settings.styleRules.global.rules, + rule + ]; + } + } else if (action.type === "settings/style-rules/duplicate-rule") { + const index = rulesContainer.rules.findIndex( + (r) => r.id === action.payload.id + ); + const rule = rulesContainer.rules[index]; + rulesContainer.rules = insertItemAtIndex( + rulesContainer.rules, + { + ...rule, + id: id.styleRule() + }, + index + 1 + ); } }; @@ -38066,10 +41056,10 @@ var persistCollapsedSections2 = (state2, action) => { // src/stores/settings/settings-reducer.ts var updateState = (store, action) => { - if (action.type === "DELETE_DOCUMENT_PREFERENCES") { + if (action.type === "settings/documents/delete-document-preferences") { delete store.documents[action.payload.path]; delete store.styleRules.documents[action.payload.path]; - } else if (action.type === "SET_DOCUMENT_TYPE") { + } else if (action.type === "settings/documents/set-document-format") { if (!store.documents[action.payload.path]) { store.documents[action.payload.path] = { documentFormat: action.payload.format, @@ -38086,7 +41076,7 @@ var updateState = (store, action) => { } else { store.documents[action.payload.path].documentFormat = action.payload.format; } - } else if (action.type === "SET_VIEW_TYPE") { + } else if (action.type === "settings/documents/set-view-type") { if (store.documents[action.payload.path]) { store.documents[action.payload.path].viewType = action.payload.type; } @@ -38094,7 +41084,7 @@ var updateState = (store, action) => { if (store.documents[action.payload.path]) { store.documents[action.payload.path].activeSection = action.payload.sectionNumber; } - } else if (action.type === "HISTORY/UPDATE_DOCUMENT_PATH") { + } else if (action.type === "settings/documents/update-document-path") { const preferences = store.documents[action.payload.oldPath]; delete store.documents[action.payload.oldPath]; store.documents[action.payload.newPath] = preferences; @@ -38103,27 +41093,29 @@ var updateState = (store, action) => { delete store.styleRules.documents[action.payload.oldPath]; store.styleRules.documents[action.payload.newPath] = rules; } - } else if (action.type === "SET_CUSTOM_HOTKEYS") { + } else if (action.type === "settings/hotkeys/update-custom-hotkeys") { store.hotkeys.customHotkeys = action.payload.customHotkeys; - } else if (action.type === "SET_FONT_SIZE") { + } else if (action.type === "settings/view/theme/set-font-size") { store.view.fontSize = action.payload.fontSize; - } else if (action.type === "SET_CONTAINER_BG") { + } else if (action.type === "settings/view/theme/set-h1-font-size") { + store.view.h1FontSize_em = action.payload.fontSize_em; + } else if (action.type === "settings/view/theme/set-container-bg-color") { store.view.theme.containerBg = action.payload.backgroundColor; - } else if (action.type === "SET_ACTIVE_BRANCH_BG") { + } else if (action.type === "settings/view/theme/set-active-branch-bg-color") { store.view.theme.activeBranchBg = action.payload.backgroundColor; - } else if (action.type === "SET_CARD_WIDTH") { + } else if (action.type === "settings/view/layout/set-card-width") { store.view.cardWidth = action.payload.width; - } else if (action.type === "SET_MIN_CARD_HEIGHT") { + } else if (action.type === "settings/view/layout/set-min-card-height") { store.view.minimumCardHeight = action.payload.height; - } else if (action.type === "SET_LIMIT_PREVIEW_HEIGHT") { + } else if (action.type === "settings/view/layout/set-limit-card-height") { store.view.limitPreviewHeight = action.payload.limit; - } else if (action.type === "UPDATE_DOCUMENTS_DICTIONARY") { - store.documents = action.payload.documents; - } else if (action.type === "UI/CHANGE_ZOOM_LEVEL") { + } else if (action.type === "settings/documents/remove-stale-documents") { + store.documents = { ...action.payload.documents }; + } else if (action.type === "settings/view/set-zoom-level") { changeZoomLevel(store, action.payload); - } else if (action.type === "GENERAL/SET_DEFAULT_DOCUMENT_FORMAT") { + } else if (action.type === "settings/general/set-default-document-format") { store.general.defaultDocumentFormat = action.payload.format; - } else if (action.type === "VIEW/TOGGLE_MINIMAP") { + } else if (action.type === "settings/view/toggle-minimap") { store.view.showMinimap = !store.view.showMinimap; } else if (action.type === "view/left-sidebar/toggle") { store.view.showLeftSidebar = !store.view.showLeftSidebar; @@ -38146,17 +41138,17 @@ var updateState = (store, action) => { }; } document2.pinnedSections.activeSection = action.payload.section; - } else if (action.type === "VIEW/SCROLLING/TOGGLE_SCROLLING_MODE") { + } else if (action.type === "settings/view/toggle-horizontal-scrolling-mode") { store.view.scrolling.centerActiveNodeH = !store.view.scrolling.centerActiveNodeH; store.view.scrolling = { ...store.view.scrolling }; - } else if (action.type === "settings/view/scrolling/toggle-vertical-scrolling-mode") { + } else if (action.type === "settings/view/toggle-vertical-scrolling-mode") { store.view.scrolling.centerActiveNodeV = !store.view.scrolling.centerActiveNodeV; store.view.scrolling = { ...store.view.scrolling }; - } else if (action.type === "SET_CARDS_GAP") { + } else if (action.type === "settings/view/layout/set-cards-gap") { store.view.cardsGap = action.payload.gap; } else if (action.type === "view/left-sidebar/set-width") { if (action.payload.width > 0) { @@ -38231,6 +41223,23 @@ var updateState = (store, action) => { persistCollapsedSections2(store, action); } else if (action.type === "settings/view/set-always-show-card-buttons") { store.view.alwaysShowCardButtons = action.payload.show; + } else if (action.type === "settings/view/vertical-toolbar/set-hidden-button") { + if (action.payload.hide) { + store.view.hiddenVerticalToolbarButtons = Array.from( + /* @__PURE__ */ new Set([ + ...store.view.hiddenVerticalToolbarButtons, + action.payload.id + ]) + ); + } else { + store.view.hiddenVerticalToolbarButtons = store.view.hiddenVerticalToolbarButtons.filter( + (b) => b !== action.payload.id + ); + } + } else if (action.type === "settings/style-rules/set-active-tab") { + store.styleRules.settings.activeTab = action.payload.tab; + } else if (action.type === "settings/general/set-link-pane-type") { + store.general.linkPaneType = action.payload.position; } else if (action.type.startsWith("settings/style-rules")) { updateStyleRules(store, action); } @@ -38262,7 +41271,7 @@ var deepMerge = (target, ...sources) => { }; // src/obsidian/events/workspace/register-file-menu-event.ts -var import_obsidian40 = require("obsidian"); +var import_obsidian37 = require("obsidian"); // src/obsidian/events/workspace/helpers/get-leaf-of-file.ts var getLeafOfFile = (plugin, file, viewType) => { @@ -38323,7 +41332,7 @@ var addFolderContextMenuItems = (menu, plugin, folder) => { }; // src/obsidian/events/workspace/effects/import-from-gingko/import-from-gingko.ts -var import_obsidian39 = require("obsidian"); +var import_obsidian36 = require("obsidian"); // src/obsidian/events/workspace/effects/import-from-gingko/helpers/verify-json-file.ts var verifyJsonFile = (tree) => { @@ -38366,10 +41375,10 @@ var mapFilesToGingkoFiles = async (plugin, files) => { }; // src/obsidian/events/workspace/effects/create-new-folder.ts -var import_obsidian38 = require("obsidian"); +var import_obsidian35 = require("obsidian"); var createNewFolder = async (plugin, folder, basename) => { invariant(folder); - const children2 = folder.children.map((c) => c instanceof import_obsidian38.TFolder ? c.name : null).filter((f) => f); + const children2 = folder.children.map((c) => c instanceof import_obsidian35.TFolder ? c.name : null).filter((f) => f); const path = getUniqueFileName(folder.path, children2, basename); const createdFolder = await plugin.app.vault.createFolder(path); invariant(createdFolder); @@ -38417,7 +41426,7 @@ var importFromGingko = async (plugin, files) => { gingkoFiles, parentFolder ); - new import_obsidian39.Notice( + new import_obsidian36.Notice( `Imported ${gingkoFiles.length} Gingko file${gingkoFiles.length === 1 ? "" : "s"}` ); } catch (e) { @@ -38445,10 +41454,10 @@ var registerFileMenuEvent = (plugin) => { plugin.app.workspace.on( "file-menu", (menu, abstractFile, source, leaf) => { - if (abstractFile instanceof import_obsidian40.TFile) { + if (abstractFile instanceof import_obsidian37.TFile) { addToggleViewMenuItem(menu, plugin, abstractFile, leaf); addImportGinkgoMenuItem(menu, plugin, [abstractFile]); - } else if (abstractFile instanceof import_obsidian40.TFolder) { + } else if (abstractFile instanceof import_obsidian37.TFolder) { addFolderContextMenuItems(menu, plugin, abstractFile); } } @@ -38456,58 +41465,6 @@ var registerFileMenuEvent = (plugin) => { ); }; -// src/obsidian/events/vault/register-file-move-event.ts -var import_obsidian41 = require("obsidian"); -var registerFileRenameEvent = (plugin) => { - plugin.registerEvent( - plugin.app.vault.on("rename", (file, oldPath) => { - if (file instanceof import_obsidian41.TFile) { - if (fileViewTypeCache[oldPath]) { - plugin.documents.dispatch({ - type: "DOCUMENTS/UPDATE_DOCUMENT_PATH", - payload: { - newPath: file.path, - oldPath - } - }); - plugin.settings.dispatch({ - type: "HISTORY/UPDATE_DOCUMENT_PATH", - payload: { - newPath: file.path, - oldPath - } - }); - } - } - }) - ); -}; - -// src/obsidian/events/vault/register-file-delete-event.ts -var import_obsidian42 = require("obsidian"); -var registerFileDeleteEvent = (plugin) => { - plugin.registerEvent( - plugin.app.vault.on("delete", (file) => { - if (file instanceof import_obsidian42.TFile) { - if (fileViewTypeCache[file.path]) { - plugin.documents.dispatch({ - type: "DOCUMENTS/DELETE_DOCUMENT", - payload: { - path: file.path - } - }); - plugin.settings.dispatch({ - type: "DELETE_DOCUMENT_PREFERENCES", - payload: { - path: file.path - } - }); - } - } - }) - ); -}; - // src/helpers/slugify.ts var slugify = (inputString) => { return inputString.toLowerCase().replace(/[^a-z0-9]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, ""); @@ -38581,7 +41538,7 @@ var createCommands2 = (plugin) => { return Boolean(getActiveLineageView(plugin)); } plugin.settings.dispatch({ - type: "VIEW/SCROLLING/TOGGLE_SCROLLING_MODE" + type: "settings/view/toggle-horizontal-scrolling-mode" }); } }); @@ -38593,12 +41550,12 @@ var createCommands2 = (plugin) => { return Boolean(getActiveLineageView(plugin)); } plugin.settings.dispatch({ - type: "settings/view/scrolling/toggle-vertical-scrolling-mode" + type: "settings/view/toggle-vertical-scrolling-mode" }); } }); commands.push({ - name: lang.cm_split_card, + name: lang.cm_split_node, icon: customIcons.split.name, checkCallback: (checking) => { const view = getActiveLineageView(plugin); @@ -38608,6 +41565,38 @@ var createCommands2 = (plugin) => { openSplitNodeModal(view); } }); + commands.push({ + name: lang.cmd_sort_child_nodes_asc, + icon: "sort-asc", + checkCallback: (checking) => { + const view = getActiveLineageView(plugin); + if (checking) { + return Boolean(view); + } + invariant(view); + sortChildNodes( + view, + view.viewStore.getValue().document.activeNode, + "ascending" + ); + } + }); + commands.push({ + name: lang.cmd_sort_child_nodes_desc, + icon: "sort-desc", + checkCallback: (checking) => { + const view = getActiveLineageView(plugin); + if (checking) { + return Boolean(view); + } + invariant(view); + sortChildNodes( + view, + view.viewStore.getValue().document.activeNode, + "descending" + ); + } + }); commands.push({ name: lang.cm_copy_link_to_block, icon: "links-coming-in", @@ -38616,7 +41605,7 @@ var createCommands2 = (plugin) => { if (checking) { return Boolean(view); } - copyLinkToBlock(view); + copyLinkToBlock(view, false); } }); commands.push({ @@ -38652,14 +41641,25 @@ var createCommands2 = (plugin) => { } }); commands.push({ - name: lang.cm_export_column, + name: lang.cmd_export_branches_with_subitems, icon: "file-text", checkCallback: (checking) => { const view = getActiveLineageView(plugin); if (checking) { return Boolean(view); } - exportColumn(view); + exportSelection(view, true); + } + }); + commands.push({ + name: lang.cmd_export_nodes_wo_subitems, + icon: "file-text", + checkCallback: (checking) => { + const view = getActiveLineageView(plugin); + if (checking) { + return Boolean(view); + } + exportSelection(view, false); } }); commands.push({ @@ -38673,6 +41673,17 @@ var createCommands2 = (plugin) => { exportDocument(view); } }); + commands.push({ + name: lang.cm_eject_document, + icon: "file-text", + checkCallback: (checking) => { + const view = getActiveLineageView(plugin); + if (checking) { + return Boolean(view); + } + ejectDocument(view); + } + }); commands.push({ name: lang.cmd_toggle_minimap, icon: "panel-right", @@ -38682,7 +41693,7 @@ var createCommands2 = (plugin) => { return Boolean(view); } plugin.settings.dispatch({ - type: "VIEW/TOGGLE_MINIMAP" + type: "settings/view/toggle-minimap" }); } }); @@ -38733,7 +41744,7 @@ var addCommands = (plugin) => { // src/stores/settings/subscriptions/settings-subscriptions.ts var settingsSubscriptions = (plugin) => { return plugin.settings.subscribe((state2, action, initialRun) => { - updateFileViewTypeCache(state2.documents); + plugin.viewType = state2.documents; if (initialRun) { updateViewHotkeysDictionary(get_store_value(ViewHotkeysStore(plugin))); } else if (action) { @@ -38744,49 +41755,47 @@ var settingsSubscriptions = (plugin) => { }); }; -// src/stores/documents/documents-reducer.ts -var updateDocumentsState = (state2, action) => { - if (action.type === "DOCUMENTS/DELETE_DOCUMENT") { +// src/stores/plugin/plugin-reducer.ts +var updateState2 = (state2, action) => { + if (action.type === "plugin/documents/unregister-document-store") { const path = action.payload.path; if (path in state2.documents) { const oldEntry = state2.documents[path]; - oldEntry.documentStore.dispatch({ - type: "RESET_STORE" - }); + oldEntry.documentStore.set(defaultDocumentState()); delete state2.documents[path]; } - } else if (action.type === "DOCUMENTS/UPDATE_DOCUMENT_PATH") { + } else if (action.type === "plugin/documents/update-document-path") { const oldPath = action.payload.oldPath; const newPath = action.payload.newPath; if (oldPath in state2.documents) { const oldEntry = state2.documents[oldPath]; delete state2.documents[oldPath]; state2.documents[newPath] = oldEntry; - oldEntry.documentStore.dispatch({ - type: "FS/SET_FILE_PATH", - payload: { - path: newPath - } - }); } - } else if (action.type === "DOCUMENTS/ADD_DOCUMENT") { + } else if (action.type === "plugin/documents/register-new-document-store") { state2.documents[action.payload.path] = { documentStore: action.payload.documentStore, viewId: action.payload.viewId }; - } else if (action.type === "WORKSPACE/SET_ACTIVE_LINEAGE_VIEW") { + } else if (action.type === "plugin/documents/update-active-view-of-document") { if (state2.documents[action.payload.path]) { state2.documents[action.payload.path].viewId = action.payload.viewId; } + } else if (action.type === "plugin/documents/refresh-active-view-of-document") { + for (const [viewId, filePath] of action.payload.views) { + if (state2.documents[filePath]) { + state2.documents[filePath].viewId = viewId; + } + } } }; -var documentsReducer = (store, action) => { - updateDocumentsState(store, action); +var pluginReducer = (store, action) => { + updateState2(store, action); return store; }; -// src/stores/documents/default-documents-state.ts -var DefaultDocumentsState = () => ({ +// src/stores/plugin/default-plugin-state.ts +var DefaultPluginState = () => ({ documents: {} }); @@ -38803,7 +41812,7 @@ var StatusBar = class { view.documentStore.getValue().document.content ).length; this.elements.numberOfCards.setText( - cards2 + " card" + (cards2 === 1 ? "" : "s") + cards2 + " section" + (cards2 === 1 ? "" : "s") ); }; this.updateProgressIndicatorAndChildCount = async (view) => { @@ -38814,15 +41823,6 @@ var StatusBar = class { activeNode }); this.elements.documentProgress.setText(result.progress + " %"); - const totalChildCount = result.totalChildCount; - if (totalChildCount > 0) { - this.elements.numberOfChildren.setText( - totalChildCount + " child card" + (totalChildCount === 1 ? "" : "s") - ); - this.setElementVisibility(this.elements.numberOfChildren, true); - } else { - this.setElementVisibility(this.elements.numberOfChildren, false); - } }; this.onload(); } @@ -38830,13 +41830,11 @@ var StatusBar = class { this.container = this.plugin.addStatusBarItem(); this.elements = { numberOfCards: this.container.createDiv(), - numberOfChildren: this.container.createDiv(), + // numberOfChildren: this.container.createDiv(), documentProgress: this.container.createDiv() }; this.elements.numberOfCards.style.marginRight = "5px"; - this.elements.numberOfChildren.style.marginRight = "5px"; this.elements.documentProgress.ariaLabel = "Progress through the document"; - this.elements.documentProgress.ariaLabel = "Total number of child cards"; this.plugin.registerEvent( this.plugin.app.workspace.on("active-leaf-change", (x) => { const visible = Boolean(x && x.view instanceof LineageView); @@ -38852,117 +41850,6 @@ var StatusBar = class { } }; -// src/stores/documents/subscriptions/effects/remove-stale-documents/helpers/filter-stale-documents.ts -var filterStaleDocuments = (settings, allFiles) => { - if (allFiles.size === 0) - return 0; - const paths = Object.keys(settings.documents); - const deletedPaths = /* @__PURE__ */ new Set(); - for (const path of paths) { - if (!allFiles.has(path)) { - deletedPaths.add(path); - delete settings.documents[path]; - delete settings.styleRules.documents[path]; - } - } - return deletedPaths.size; -}; - -// src/stores/documents/subscriptions/effects/remove-stale-documents/helpers/get-all-loaded-files.ts -var import_obsidian43 = require("obsidian"); -var getAllLoadedFiles = (plugin) => { - const allFiles = plugin.app.vault.getAllLoadedFiles(); - const allPaths = /* @__PURE__ */ new Set(); - for (const maybeFile of allFiles) { - if (maybeFile instanceof import_obsidian43.TFile) { - allPaths.add(maybeFile.path); - } - } - return allPaths; -}; - -// src/stores/documents/subscriptions/effects/remove-stale-documents/remove-stale-documents.ts -var processStaleDocuments = (plugin) => { - const settings = plugin.settings.getValue(); - const allLoadedFiles = getAllLoadedFiles(plugin); - const deleted = filterStaleDocuments(settings, allLoadedFiles); - if (deleted === 0) - return; - logger.debug(`[lineage] removed ${deleted} stale documents`); - plugin.settings.dispatch({ - type: "UPDATE_DOCUMENTS_DICTIONARY", - payload: { - documents: settings.documents - } - }); -}; -var removeStaleDocuments = (plugin) => { - plugin.registerTimeout( - setTimeout(() => processStaleDocuments(plugin), 1e3 * 60 * 5) - ); -}; - -// src/obsidian/events/workspace/actions/set-active-lineage-view.ts -var setActiveLineageView = (view) => { - invariant(view.file); - view.plugin.documents.dispatch({ - type: "WORKSPACE/SET_ACTIVE_LINEAGE_VIEW", - payload: { - path: view.file?.path, - viewId: view.id - } - }); -}; - -// src/obsidian/events/workspace/actions/set-active-leaf-changed.ts -var setActiveLeafChanged = (plugin) => { - plugin.documents.dispatch({ - type: "WORKSPACE/ACTIVE_LEAF_CHANGE" - }); -}; - -// src/obsidian/events/workspace/register-active-leaf-change.ts -var registerActiveLeafChange = (plugin) => { - plugin.registerEvent( - plugin.app.workspace.on("active-leaf-change", (leaf) => { - if (leaf?.view instanceof LineageView && leaf.view.file?.path) { - setActiveLineageView(leaf.view); - } - setActiveLeafChanged(plugin); - }) - ); -}; - -// src/obsidian/events/workspace/actions/on-workspace-resize.ts -var onWorkspaceResize = (plugin) => { - plugin.documents.dispatch({ - type: "WORKSPACE/RESIZE" - }); -}; - -// src/obsidian/events/workspace/register-workspace-resize.ts -var registerWorkspaceResize = (plugin) => { - plugin.registerEvent( - plugin.app.workspace.on("resize", () => { - onWorkspaceResize(plugin); - }) - ); -}; - -// src/obsidian/events/workspace/actions/set-workspace-layout-ready.ts -var setWorkspaceLayoutReady = (plugin) => { - plugin.documents.dispatch({ - type: "WORKSPACE/LAYOUT_READY" - }); -}; - -// src/obsidian/events/workspace/register-layout-ready.ts -var registerLayoutReady = (plugin) => { - plugin.app.workspace.onLayoutReady(() => { - setWorkspaceLayoutReady(plugin); - }); -}; - // src/obsidian/patches/set-active-leaf.ts function setActiveLeaf(next) { return function(leaf, param) { @@ -38992,11 +41879,11 @@ var migrateSettings = (settings) => { }; // src/obsidian/events/workspace/register-files-menu-event.ts -var import_obsidian44 = require("obsidian"); +var import_obsidian38 = require("obsidian"); var registerFilesMenuEvent = (plugin) => { plugin.registerEvent( plugin.app.workspace.on("files-menu", (menu, abstractFile) => { - const allFiles = abstractFile.every((af) => af instanceof import_obsidian44.TFile); + const allFiles = abstractFile.every((af) => af instanceof import_obsidian38.TFile); if (allFiles) addImportGinkgoMenuItem(menu, plugin, abstractFile); }) @@ -39024,17 +41911,148 @@ var removeHtmlElementMarkerInPreviewMode = (el) => { } }; +// src/stores/plugin/subscriptions/on-vault-event.ts +var import_obsidian39 = require("obsidian"); +var onVaultEvent = (plugin) => { + const onDeleteRef = plugin.app.vault.on("delete", (file) => { + if (file instanceof import_obsidian39.TFile) { + if (plugin.viewType[file.path]) { + plugin.store.dispatch({ + type: "plugin/documents/unregister-document-store", + payload: { + path: file.path + } + }); + plugin.settings.dispatch({ + type: "settings/documents/delete-document-preferences", + payload: { + path: file.path + } + }); + } + } + }); + const onRenameRef = plugin.app.vault.on("rename", (file, oldPath) => { + if (file instanceof import_obsidian39.TFile) { + if (plugin.viewType[oldPath]) { + plugin.store.dispatch({ + type: "plugin/documents/update-document-path", + payload: { + newPath: file.path, + oldPath + } + }); + plugin.settings.dispatch({ + type: "settings/documents/update-document-path", + payload: { + newPath: file.path, + oldPath + } + }); + } + } + }); + plugin.registerEvent(onDeleteRef); + plugin.registerEvent(onRenameRef); +}; + +// src/stores/plugin/subscriptions/effects/remove-stale-documents/helpers/filter-stale-documents.ts +var filterStaleDocuments = (settings, allFiles) => { + if (allFiles.size === 0) + return 0; + const paths = Object.keys(settings.documents); + const deletedPaths = /* @__PURE__ */ new Set(); + for (const path of paths) { + if (!allFiles.has(path)) { + deletedPaths.add(path); + delete settings.documents[path]; + delete settings.styleRules.documents[path]; + } + } + return deletedPaths.size; +}; + +// src/stores/plugin/subscriptions/effects/remove-stale-documents/helpers/get-all-loaded-files.ts +var import_obsidian40 = require("obsidian"); +var getAllLoadedFiles = (plugin) => { + const allFiles = plugin.app.vault.getAllLoadedFiles(); + const allPaths = /* @__PURE__ */ new Set(); + for (const maybeFile of allFiles) { + if (maybeFile instanceof import_obsidian40.TFile) { + allPaths.add(maybeFile.path); + } + } + return allPaths; +}; + +// src/stores/plugin/subscriptions/effects/remove-stale-documents/remove-stale-documents.ts +var processStaleDocuments = (plugin) => { + const settings = plugin.settings.getValue(); + const allLoadedFiles = getAllLoadedFiles(plugin); + const deleted = filterStaleDocuments(settings, allLoadedFiles); + if (deleted === 0) + return; + logger.debug(`[lineage] removed ${deleted} stale documents`); + plugin.settings.dispatch({ + type: "settings/documents/remove-stale-documents", + payload: { + documents: settings.documents + } + }); +}; +var removeStaleDocuments = (plugin) => { + plugin.registerTimeout( + setTimeout(() => processStaleDocuments(plugin), 1e3 * 60 * 5) + ); +}; + +// src/stores/plugin/subscriptions/on-workspace-event.ts +var onWorkspaceEvent = (plugin) => { + const onActiveLeafChangeRef = plugin.app.workspace.on( + "active-leaf-change", + (leaf) => { + const view = leaf?.view; + if (view instanceof LineageView && view.file?.path) { + view.plugin.store.dispatch({ + type: "plugin/documents/update-active-view-of-document", + payload: { + path: view.file?.path, + viewId: view.id + } + }); + } + plugin.store.dispatch({ + type: "plugin/echo/workspace/active-leaf-change" + }); + } + ); + const onResizeRef = plugin.app.workspace.on("resize", () => { + plugin.store.dispatch({ + type: "plugin/echo/workspace/resize" + }); + }); + plugin.app.workspace.onLayoutReady(() => { + plugin.store.dispatch({ + type: "plugin/echo/workspace/layout-ready" + }); + removeStaleDocuments(plugin); + }); + plugin.registerEvent(onActiveLeafChangeRef); + plugin.registerEvent(onResizeRef); +}; + // src/main.ts -var Lineage = class extends import_obsidian45.Plugin { +var Lineage = class extends import_obsidian41.Plugin { constructor() { super(...arguments); this.timeoutReferences = /* @__PURE__ */ new Set(); + this.viewType = {}; } async onload() { await this.loadSettings(); - this.documents = new Store( - DefaultDocumentsState(), - documentsReducer, + this.store = new Store( + DefaultPluginState(), + pluginReducer, onPluginError ); loadCustomIcons(); @@ -39044,7 +42062,6 @@ var Lineage = class extends import_obsidian45.Plugin { ); addCommands(this); this.registerPatches(); - this.registerEffects(); this.registerEvents(); this.statusBar = new StatusBar(this); this.loadRibbonIcon(); @@ -39072,21 +42089,16 @@ var Lineage = class extends import_obsidian45.Plugin { registerEvents() { registerFileMenuEvent(this); registerFilesMenuEvent(this); - registerFileRenameEvent(this); - registerFileDeleteEvent(this); - registerActiveLeafChange(this); - registerWorkspaceResize(this); - registerLayoutReady(this); + onVaultEvent(this); + onWorkspaceEvent(this); } registerTimeout(timeout) { this.timeoutReferences.add(timeout); } - registerEffects() { - removeStaleDocuments(this); - } registerPatches() { this.register(around(this.app.workspace, { setActiveLeaf })); - this.register(around(import_obsidian45.WorkspaceLeaf.prototype, { setViewState })); + const setViewState = createSetViewState(this); + this.register(around(import_obsidian41.WorkspaceLeaf.prototype, { setViewState })); } loadRibbonIcon() { this.addRibbonIcon( @@ -39128,6 +42140,14 @@ lucide-svelte/dist/defaultAttributes.js: * See the LICENSE file in the root directory of this source tree. *) +lucide-svelte/dist/icons/arrow-down-wide-narrow.svelte: + (** + * @license lucide-svelte v0.344.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + lucide-svelte/dist/icons/arrow-left.svelte: (** * @license lucide-svelte v0.344.0 - ISC @@ -39144,6 +42164,14 @@ lucide-svelte/dist/icons/arrow-right.svelte: * See the LICENSE file in the root directory of this source tree. *) +lucide-svelte/dist/icons/arrow-up-narrow-wide.svelte: + (** + * @license lucide-svelte v0.344.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + lucide-svelte/dist/icons/chevron-down.svelte: (** * @license lucide-svelte v0.344.0 - ISC @@ -39184,6 +42212,14 @@ lucide-svelte/dist/icons/clock.svelte: * See the LICENSE file in the root directory of this source tree. *) +lucide-svelte/dist/icons/copy.svelte: + (** + * @license lucide-svelte v0.344.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + lucide-svelte/dist/icons/eye.svelte: (** * @license lucide-svelte v0.344.0 - ISC @@ -39232,6 +42268,14 @@ lucide-svelte/dist/icons/file-symlink.svelte: * See the LICENSE file in the root directory of this source tree. *) +lucide-svelte/dist/icons/file-text.svelte: + (** + * @license lucide-svelte v0.344.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + lucide-svelte/dist/icons/file-up.svelte: (** * @license lucide-svelte v0.344.0 - ISC @@ -39248,6 +42292,14 @@ lucide-svelte/dist/icons/focus.svelte: * See the LICENSE file in the root directory of this source tree. *) +lucide-svelte/dist/icons/globe.svelte: + (** + * @license lucide-svelte v0.344.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + lucide-svelte/dist/icons/grip-vertical.svelte: (** * @license lucide-svelte v0.344.0 - ISC diff --git a/.obsidian/plugins/lineage/manifest.json b/.obsidian/plugins/lineage/manifest.json index 549d288..9a68414 100644 --- a/.obsidian/plugins/lineage/manifest.json +++ b/.obsidian/plugins/lineage/manifest.json @@ -1,7 +1,7 @@ { "id": "lineage", "name": "Lineage", - "version": "0.8.0", + "version": "0.8.4", "minAppVersion": "0.15.0", "description": "Edit Markdown in a keyboard-centric Miller columns interface. Inspired by Gingko Writer.", "author": "ycnmhd", diff --git a/.obsidian/plugins/lineage/styles.css b/.obsidian/plugins/lineage/styles.css index 4027575..52a64f5 100644 --- a/.obsidian/plugins/lineage/styles.css +++ b/.obsidian/plugins/lineage/styles.css @@ -1,5 +1,5 @@ /* src/styles/theme/theme.css */ -.lineage-main { +.lineage-view { --lineage-accent: #55b1ae; --lineage-color-selection: #418cff; } @@ -206,14 +206,28 @@ } /* src/styles/card/dnd.css */ +.lineage-view { + --lng-box-shadow-dnd-above: inset 2px 51px 19px -28px var(--lineage-accent); + --lng-box-shadow-dnd-below: inset 2px -51px 19px -28px var(--lineage-accent); + --lng-box-shadow-dnd-under: inset -51px 2px 19px -28px var(--lineage-accent) ; +} .lineage__drop-node-above { - box-shadow: inset 2px 51px 19px -28px var(--lineage-accent) !important; + box-shadow: var(--lng-box-shadow-dnd-above) !important; + & .card-background-style { + box-shadow: var(--lng-box-shadow-dnd-above) !important; + } } .lineage__drop-node-below { - box-shadow: inset 2px -51px 19px -28px var(--lineage-accent) !important; + box-shadow: var(--lng-box-shadow-dnd-below) !important; + & .card-background-style { + box-shadow: var(--lng-box-shadow-dnd-below) !important; + } } .lineage__drop-node-under { - box-shadow: inset -51px 2px 19px -28px var(--lineage-accent) !important; + box-shadow: var(--lng-box-shadow-dnd-under) !important; + & .card-background-style { + box-shadow: var(--lng-box-shadow-dnd-under) !important; + } } .inactive-node-hover { opacity: 0.8 !important; @@ -227,6 +241,7 @@ left: -5px; height: 100%; top: 0; + z-index: 1; } .card-background-style { position: absolute; @@ -454,18 +469,11 @@ span[data-section] { line-height: var(--line-height-tight); opacity: 0.7; position: absolute; - left: 0; - top: 0; - line-height: var(--line-height-tight); - padding-top: calc(var(--font-text-size)/3); cursor: pointer; &:hover { opacity: 1; } } -.markdown-source-view span[data-section] { - transform: translateX(calc(-100% - 50px)); -} span[data-section]::before { content: attr(data-section); color: var(--text-muted); @@ -473,6 +481,18 @@ span[data-section]::before { padding: 3px 6px; border-radius: 6px; } +.markdown-source-view span[data-section] { + left: 0; + top: 0; + padding-top: calc(var(--font-text-size)/3); + transform: translateX(calc(-100% - 50px)); +} +.markdown-reading-view span[data-section] { + transform: translateX(calc(-100% - 20px)); +} +.markdown-embed span[data-section] { + display: none; +} /* src/styles/overrides.css */ .lineage-view__content-el--minimap-on { @@ -515,7 +535,7 @@ span[data-section]::before { padding: 6px; } .group-has-active-child { - margin-bottom: 3px; + margin-bottom: 2px; } .group-has-active-child:last-child { margin-bottom: 0; @@ -620,6 +640,10 @@ span[data-section]::before { display: none; } } + .inactive-node:not(.inactive-node-hover) { + opacity: var(--inactive-card-opacity) !important; + cursor: none !important; + } } /* src/styles/styles.css */ diff --git a/.obsidian/plugins/obsidian-meta-bind-plugin/main.js b/.obsidian/plugins/obsidian-meta-bind-plugin/main.js index 70ba3f8..08684e0 100644 --- a/.obsidian/plugins/obsidian-meta-bind-plugin/main.js +++ b/.obsidian/plugins/obsidian-meta-bind-plugin/main.js @@ -3,8 +3,8 @@ Meta Bind - Release Build ------------------------------------------- By: Moritz Jung (https://www.moritzjung.dev/) -Time: Wed, 15 Jan 2025 13:02:01 GMT -Version: 1.3.1 +Time: Wed, 28 May 2025 10:09:10 GMT +Version: 1.4.2 ------------------------------------------- THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin @@ -18,119 +18,103 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY You should have received a copy of the GNU General Public License along with this program. If not, see . */ -"use strict";var H7=Object.create;var od=Object.defineProperty;var G7=Object.getOwnPropertyDescriptor;var W7=Object.getOwnPropertyNames;var Y7=Object.getPrototypeOf,j7=Object.prototype.hasOwnProperty;var ai=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Z7=(t,e)=>{for(var r in e)od(t,r,{get:e[r],enumerable:!0})},LC=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of W7(e))!j7.call(t,i)&&i!==r&&od(t,i,{get:()=>e[i],enumerable:!(n=G7(e,i))||n.enumerable});return t};var zr=(t,e,r)=>(r=t!=null?H7(Y7(t)):{},LC(e||!t||!t.__esModule?od(r,"default",{value:t,enumerable:!0}):r,t)),J7=t=>LC(od({},"__esModule",{value:!0}),t);var mp=ai((Wx,Ac)=>{(function(t,e){typeof Wx=="object"&&typeof Ac<"u"?Ac.exports=e():typeof define=="function"&&define.amd?define(e):t.moment=e()})(Wx,function(){"use strict";var t;function e(){return t.apply(null,arguments)}function r(g){t=g}function n(g){return g instanceof Array||Object.prototype.toString.call(g)==="[object Array]"}function i(g){return g!=null&&Object.prototype.toString.call(g)==="[object Object]"}function a(g,S){return Object.prototype.hasOwnProperty.call(g,S)}function o(g){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(g).length===0;var S;for(S in g)if(a(g,S))return!1;return!0}function s(g){return g===void 0}function l(g){return typeof g=="number"||Object.prototype.toString.call(g)==="[object Number]"}function u(g){return g instanceof Date||Object.prototype.toString.call(g)==="[object Date]"}function c(g,S){var I=[],$,H=g.length;for($=0;$>>0,$;for($=0;$0)for(I=0;I=0;return(oe?I?"+":"":"-")+Math.pow(10,Math.max(0,H)).toString().substr(1)+$}var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,X=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ae={},J={};function U(g,S,I,$){var H=$;typeof $=="string"&&(H=function(){return this[$]()}),g&&(J[g]=H),S&&(J[S[0]]=function(){return W(H.apply(this,arguments),S[1],S[2])}),I&&(J[I]=function(){return this.localeData().ordinal(H.apply(this,arguments),g)})}function de(g){return g.match(/\[[\s\S]/)?g.replace(/^\[|\]$/g,""):g.replace(/\\/g,"")}function we(g){var S=g.match(O),I,$;for(I=0,$=S.length;I<$;I++)J[S[I]]?S[I]=J[S[I]]:S[I]=de(S[I]);return function(H){var oe="",Me;for(Me=0;Me<$;Me++)oe+=C(S[Me])?S[Me].call(H,g):S[Me];return oe}}function se(g,S){return g.isValid()?(S=be(S,g.localeData()),ae[S]=ae[S]||we(S),ae[S](g)):g.localeData().invalidDate()}function be(g,S){var I=5;function $(H){return S.longDateFormat(H)||H}for(X.lastIndex=0;I>=0&&X.test(g);)g=g.replace(X,$),X.lastIndex=0,I-=1;return g}var K={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function j(g){var S=this._longDateFormat[g],I=this._longDateFormat[g.toUpperCase()];return S||!I?S:(this._longDateFormat[g]=I.match(O).map(function($){return $==="MMMM"||$==="MM"||$==="DD"||$==="dddd"?$.slice(1):$}).join(""),this._longDateFormat[g])}var ne="Invalid date";function pe(){return this._invalidDate}var fe="%d",Ae=/\d{1,2}/;function _e(g){return this._ordinal.replace("%d",g)}var G={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Z(g,S,I,$){var H=this._relativeTime[I];return C(H)?H(g,S,I,$):H.replace(/%d/i,g)}function ge(g,S){var I=this._relativeTime[g>0?"future":"past"];return C(I)?I(S):I.replace(/%s/i,S)}var xe={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function Ee(g){return typeof g=="string"?xe[g]||xe[g.toLowerCase()]:void 0}function Be(g){var S={},I,$;for($ in g)a(g,$)&&(I=Ee($),I&&(S[I]=g[$]));return S}var Ve={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function et(g){var S=[],I;for(I in g)a(g,I)&&S.push({unit:I,priority:Ve[I]});return S.sort(function($,H){return $.priority-H.priority}),S}var St=/\d/,Ye=/\d\d/,ur=/\d{3}/,Jt=/\d{4}/,He=/[+-]?\d{6}/,at=/\d\d?/,Q=/\d\d\d\d?/,me=/\d\d\d\d\d\d?/,he=/\d{1,3}/,Fe=/\d{1,4}/,ke=/[+-]?\d{1,6}/,Se=/\d+/,Xe=/[+-]?\d+/,F=/Z|[+-]\d\d:?\d\d/gi,Y=/Z|[+-]\d\d(?::?\d\d)?/gi,ie=/[+-]?\d+(\.\d{1,3})?/,Ce=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,tt=/^[1-9]\d?/,xt=/^([1-9]\d|\d)/,_r;_r={};function qe(g,S,I){_r[g]=C(S)?S:function($,H){return $&&I?I:S}}function Ti(g,S){return a(_r,g)?_r[g](S._strict,S._locale):new RegExp(Gi(g))}function Gi(g){return un(g.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(S,I,$,H,oe){return I||$||H||oe}))}function un(g){return g.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function jn(g){return g<0?Math.ceil(g)||0:Math.floor(g)}function gr(g){var S=+g,I=0;return S!==0&&isFinite(S)&&(I=jn(S)),I}var lu={};function kr(g,S){var I,$=S,H;for(typeof g=="string"&&(g=[g]),l(S)&&($=function(oe,Me){Me[S]=gr(oe)}),H=g.length,I=0;I68?1900:2e3)};var bs=Ko("FullYear",!0);function lc(){return Da(this.year())}function Ko(g,S){return function(I){return I!=null?(cc(this,g,I),e.updateOffset(this,S),this):Do(this,g)}}function Do(g,S){if(!g.isValid())return NaN;var I=g._d,$=g._isUTC;switch(S){case"Milliseconds":return $?I.getUTCMilliseconds():I.getMilliseconds();case"Seconds":return $?I.getUTCSeconds():I.getSeconds();case"Minutes":return $?I.getUTCMinutes():I.getMinutes();case"Hours":return $?I.getUTCHours():I.getHours();case"Date":return $?I.getUTCDate():I.getDate();case"Day":return $?I.getUTCDay():I.getDay();case"Month":return $?I.getUTCMonth():I.getMonth();case"FullYear":return $?I.getUTCFullYear():I.getFullYear();default:return NaN}}function cc(g,S,I){var $,H,oe,Me,gt;if(!(!g.isValid()||isNaN(I))){switch($=g._d,H=g._isUTC,S){case"Milliseconds":return void(H?$.setUTCMilliseconds(I):$.setMilliseconds(I));case"Seconds":return void(H?$.setUTCSeconds(I):$.setSeconds(I));case"Minutes":return void(H?$.setUTCMinutes(I):$.setMinutes(I));case"Hours":return void(H?$.setUTCHours(I):$.setHours(I));case"Date":return void(H?$.setUTCDate(I):$.setDate(I));case"FullYear":break;default:return}oe=I,Me=g.month(),gt=g.date(),gt=gt===29&&Me===1&&!Da(oe)?28:gt,H?$.setUTCFullYear(oe,Me,gt):$.setFullYear(oe,Me,gt)}}function fc(g){return g=Ee(g),C(this[g])?this[g]():this}function Kf(g,S){if(typeof g=="object"){g=Be(g);var I=et(g),$,H=I.length;for($=0;$=0?(gt=new Date(g+400,S,I,$,H,oe,Me),isFinite(gt.getFullYear())&>.setFullYear(g)):gt=new Date(g,S,I,$,H,oe,Me),gt}function tp(g){var S,I;return g<100&&g>=0?(I=Array.prototype.slice.call(arguments),I[0]=g+400,S=new Date(Date.UTC.apply(null,I)),isFinite(S.getUTCFullYear())&&S.setUTCFullYear(g)):S=new Date(Date.UTC.apply(null,arguments)),S}function Zm(g,S,I){var $=7+S-I,H=(7+tp(g,0,$).getUTCDay()-S)%7;return-H+$-1}function sC(g,S,I,$,H){var oe=(7+I-$)%7,Me=Zm(g,$,H),gt=1+7*(S-1)+oe+Me,tr,Dr;return gt<=0?(tr=g-1,Dr=xs(tr)+gt):gt>xs(g)?(tr=g+1,Dr=gt-xs(g)):(tr=g,Dr=gt),{year:tr,dayOfYear:Dr}}function rp(g,S,I){var $=Zm(g.year(),S,I),H=Math.floor((g.dayOfYear()-$-1)/7)+1,oe,Me;return H<1?(Me=g.year()-1,oe=H+_s(Me,S,I)):H>_s(g.year(),S,I)?(oe=H-_s(g.year(),S,I),Me=g.year()+1):(Me=g.year(),oe=H),{week:oe,year:Me}}function _s(g,S,I){var $=Zm(g,S,I),H=Zm(g+1,S,I);return(xs(g)-$+H)/7}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),qe("w",at,tt),qe("ww",at,Ye),qe("W",at,tt),qe("WW",at,Ye),aa(["w","ww","W","WW"],function(g,S,I,$){S[$.substr(0,1)]=gr(g)});function F9(g){return rp(g,this._week.dow,this._week.doy).week}var I9={dow:0,doy:6};function P9(){return this._week.dow}function B9(){return this._week.doy}function k9(g){var S=this.localeData().week(this);return g==null?S:this.add((g-S)*7,"d")}function $9(g){var S=rp(this,1,4).week;return g==null?S:this.add((g-S)*7,"d")}U("d",0,"do","day"),U("dd",0,0,function(g){return this.localeData().weekdaysMin(this,g)}),U("ddd",0,0,function(g){return this.localeData().weekdaysShort(this,g)}),U("dddd",0,0,function(g){return this.localeData().weekdays(this,g)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),qe("d",at),qe("e",at),qe("E",at),qe("dd",function(g,S){return S.weekdaysMinRegex(g)}),qe("ddd",function(g,S){return S.weekdaysShortRegex(g)}),qe("dddd",function(g,S){return S.weekdaysRegex(g)}),aa(["dd","ddd","dddd"],function(g,S,I,$){var H=I._locale.weekdaysParse(g,$,I._strict);H!=null?S.d=H:d(I).invalidWeekday=g}),aa(["d","e","E"],function(g,S,I,$){S[$]=gr(g)});function O9(g,S){return typeof g!="string"?g:isNaN(g)?(g=S.weekdaysParse(g),typeof g=="number"?g:null):parseInt(g,10)}function R9(g,S){return typeof g=="string"?S.weekdaysParse(g)%7||7:isNaN(g)?null:g}function gx(g,S){return g.slice(S,7).concat(g.slice(0,S))}var L9="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),uC="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),V9="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),U9=Ce,q9=Ce,z9=Ce;function H9(g,S){var I=n(this._weekdays)?this._weekdays:this._weekdays[g&&g!==!0&&this._weekdays.isFormat.test(S)?"format":"standalone"];return g===!0?gx(I,this._week.dow):g?I[g.day()]:I}function G9(g){return g===!0?gx(this._weekdaysShort,this._week.dow):g?this._weekdaysShort[g.day()]:this._weekdaysShort}function W9(g){return g===!0?gx(this._weekdaysMin,this._week.dow):g?this._weekdaysMin[g.day()]:this._weekdaysMin}function Y9(g,S,I){var $,H,oe,Me=g.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],$=0;$<7;++$)oe=m([2e3,1]).day($),this._minWeekdaysParse[$]=this.weekdaysMin(oe,"").toLocaleLowerCase(),this._shortWeekdaysParse[$]=this.weekdaysShort(oe,"").toLocaleLowerCase(),this._weekdaysParse[$]=this.weekdays(oe,"").toLocaleLowerCase();return I?S==="dddd"?(H=ln.call(this._weekdaysParse,Me),H!==-1?H:null):S==="ddd"?(H=ln.call(this._shortWeekdaysParse,Me),H!==-1?H:null):(H=ln.call(this._minWeekdaysParse,Me),H!==-1?H:null):S==="dddd"?(H=ln.call(this._weekdaysParse,Me),H!==-1||(H=ln.call(this._shortWeekdaysParse,Me),H!==-1)?H:(H=ln.call(this._minWeekdaysParse,Me),H!==-1?H:null)):S==="ddd"?(H=ln.call(this._shortWeekdaysParse,Me),H!==-1||(H=ln.call(this._weekdaysParse,Me),H!==-1)?H:(H=ln.call(this._minWeekdaysParse,Me),H!==-1?H:null)):(H=ln.call(this._minWeekdaysParse,Me),H!==-1||(H=ln.call(this._weekdaysParse,Me),H!==-1)?H:(H=ln.call(this._shortWeekdaysParse,Me),H!==-1?H:null))}function j9(g,S,I){var $,H,oe;if(this._weekdaysParseExact)return Y9.call(this,g,S,I);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),$=0;$<7;$++){if(H=m([2e3,1]).day($),I&&!this._fullWeekdaysParse[$]&&(this._fullWeekdaysParse[$]=new RegExp("^"+this.weekdays(H,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[$]=new RegExp("^"+this.weekdaysShort(H,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[$]=new RegExp("^"+this.weekdaysMin(H,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[$]||(oe="^"+this.weekdays(H,"")+"|^"+this.weekdaysShort(H,"")+"|^"+this.weekdaysMin(H,""),this._weekdaysParse[$]=new RegExp(oe.replace(".",""),"i")),I&&S==="dddd"&&this._fullWeekdaysParse[$].test(g))return $;if(I&&S==="ddd"&&this._shortWeekdaysParse[$].test(g))return $;if(I&&S==="dd"&&this._minWeekdaysParse[$].test(g))return $;if(!I&&this._weekdaysParse[$].test(g))return $}}function Z9(g){if(!this.isValid())return g!=null?this:NaN;var S=Do(this,"Day");return g!=null?(g=O9(g,this.localeData()),this.add(g-S,"d")):S}function J9(g){if(!this.isValid())return g!=null?this:NaN;var S=(this.day()+7-this.localeData()._week.dow)%7;return g==null?S:this.add(g-S,"d")}function X9(g){if(!this.isValid())return g!=null?this:NaN;if(g!=null){var S=R9(g,this.localeData());return this.day(this.day()%7?S:S-7)}else return this.day()||7}function Q9(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||vx.call(this),g?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=U9),this._weekdaysStrictRegex&&g?this._weekdaysStrictRegex:this._weekdaysRegex)}function K9(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||vx.call(this),g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=q9),this._weekdaysShortStrictRegex&&g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function eq(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||vx.call(this),g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=z9),this._weekdaysMinStrictRegex&&g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function vx(){function g(Wi,Ds){return Ds.length-Wi.length}var S=[],I=[],$=[],H=[],oe,Me,gt,tr,Dr;for(oe=0;oe<7;oe++)Me=m([2e3,1]).day(oe),gt=un(this.weekdaysMin(Me,"")),tr=un(this.weekdaysShort(Me,"")),Dr=un(this.weekdays(Me,"")),S.push(gt),I.push(tr),$.push(Dr),H.push(gt),H.push(tr),H.push(Dr);S.sort(g),I.sort(g),$.sort(g),H.sort(g),this._weekdaysRegex=new RegExp("^("+H.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+$.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+I.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+S.join("|")+")","i")}function yx(){return this.hours()%12||12}function tq(){return this.hours()||24}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,yx),U("k",["kk",2],0,tq),U("hmm",0,0,function(){return""+yx.apply(this)+W(this.minutes(),2)}),U("hmmss",0,0,function(){return""+yx.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+W(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)});function lC(g,S){U(g,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),S)})}lC("a",!0),lC("A",!1);function cC(g,S){return S._meridiemParse}qe("a",cC),qe("A",cC),qe("H",at,xt),qe("h",at,tt),qe("k",at,tt),qe("HH",at,Ye),qe("hh",at,Ye),qe("kk",at,Ye),qe("hmm",Q),qe("hmmss",me),qe("Hmm",Q),qe("Hmmss",me),kr(["H","HH"],hn),kr(["k","kk"],function(g,S,I){var $=gr(g);S[hn]=$===24?0:$}),kr(["a","A"],function(g,S,I){I._isPm=I._locale.isPM(g),I._meridiem=g}),kr(["h","hh"],function(g,S,I){S[hn]=gr(g),d(I).bigHour=!0}),kr("hmm",function(g,S,I){var $=g.length-2;S[hn]=gr(g.substr(0,$)),S[ii]=gr(g.substr($)),d(I).bigHour=!0}),kr("hmmss",function(g,S,I){var $=g.length-4,H=g.length-2;S[hn]=gr(g.substr(0,$)),S[ii]=gr(g.substr($,2)),S[kn]=gr(g.substr(H)),d(I).bigHour=!0}),kr("Hmm",function(g,S,I){var $=g.length-2;S[hn]=gr(g.substr(0,$)),S[ii]=gr(g.substr($))}),kr("Hmmss",function(g,S,I){var $=g.length-4,H=g.length-2;S[hn]=gr(g.substr(0,$)),S[ii]=gr(g.substr($,2)),S[kn]=gr(g.substr(H))});function rq(g){return(g+"").toLowerCase().charAt(0)==="p"}var nq=/[ap]\.?m?\.?/i,iq=Ko("Hours",!0);function aq(g,S,I){return g>11?I?"pm":"PM":I?"am":"AM"}var fC={calendar:P,longDateFormat:K,invalidDate:ne,ordinal:fe,dayOfMonthOrdinalParse:Ae,relativeTime:G,months:re,monthsShort:Ne,week:I9,weekdays:L9,weekdaysMin:V9,weekdaysShort:uC,meridiemParse:nq},gn={},np={},ip;function oq(g,S){var I,$=Math.min(g.length,S.length);for(I=0;I<$;I+=1)if(g[I]!==S[I])return I;return $}function pC(g){return g&&g.toLowerCase().replace("_","-")}function sq(g){for(var S=0,I,$,H,oe;S0;){if(H=Jm(oe.slice(0,I).join("-")),H)return H;if($&&$.length>=I&&oq(oe,$)>=I-1)break;I--}S++}return ip}function uq(g){return!!(g&&g.match("^[^/\\\\]*$"))}function Jm(g){var S=null,I;if(gn[g]===void 0&&typeof Ac<"u"&&Ac&&Ac.exports&&uq(g))try{S=ip._abbr,I=require,I("./locale/"+g),cu(S)}catch{gn[g]=null}return gn[g]}function cu(g,S){var I;return g&&(s(S)?I=As(g):I=xx(g,S),I?ip=I:typeof console<"u"&&console.warn&&console.warn("Locale "+g+" not found. Did you forget to load it?")),ip._abbr}function xx(g,S){if(S!==null){var I,$=fC;if(S.abbr=g,gn[g]!=null)N("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),$=gn[g]._config;else if(S.parentLocale!=null)if(gn[S.parentLocale]!=null)$=gn[S.parentLocale]._config;else if(I=Jm(S.parentLocale),I!=null)$=I._config;else return np[S.parentLocale]||(np[S.parentLocale]=[]),np[S.parentLocale].push({name:g,config:S}),null;return gn[g]=new V(R($,S)),np[g]&&np[g].forEach(function(H){xx(H.name,H.config)}),cu(g),gn[g]}else return delete gn[g],null}function lq(g,S){if(S!=null){var I,$,H=fC;gn[g]!=null&&gn[g].parentLocale!=null?gn[g].set(R(gn[g]._config,S)):($=Jm(g),$!=null&&(H=$._config),S=R(H,S),$==null&&(S.abbr=g),I=new V(S),I.parentLocale=gn[g],gn[g]=I),cu(g)}else gn[g]!=null&&(gn[g].parentLocale!=null?(gn[g]=gn[g].parentLocale,g===cu()&&cu(g)):gn[g]!=null&&delete gn[g]);return gn[g]}function As(g){var S;if(g&&g._locale&&g._locale._abbr&&(g=g._locale._abbr),!g)return ip;if(!n(g)){if(S=Jm(g),S)return S;g=[g]}return sq(g)}function cq(){return L(gn)}function bx(g){var S,I=g._a;return I&&d(g).overflow===-2&&(S=I[Zn]<0||I[Zn]>11?Zn:I[oa]<1||I[oa]>q(I[Bn],I[Zn])?oa:I[hn]<0||I[hn]>24||I[hn]===24&&(I[ii]!==0||I[kn]!==0||I[sa]!==0)?hn:I[ii]<0||I[ii]>59?ii:I[kn]<0||I[kn]>59?kn:I[sa]<0||I[sa]>999?sa:-1,d(g)._overflowDayOfYear&&(Soa)&&(S=oa),d(g)._overflowWeeks&&S===-1&&(S=Qf),d(g)._overflowWeekday&&S===-1&&(S=uc),d(g).overflow=S),g}var fq=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pq=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mq=/Z|[+-]\d\d(?::?\d\d)?/,Xm=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],wx=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],dq=/^\/?Date\((-?\d+)/i,hq=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,gq={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function mC(g){var S,I,$=g._i,H=fq.exec($)||pq.exec($),oe,Me,gt,tr,Dr=Xm.length,Wi=wx.length;if(H){for(d(g).iso=!0,S=0,I=Dr;Sxs(Me)||g._dayOfYear===0)&&(d(g)._overflowDayOfYear=!0),I=tp(Me,0,g._dayOfYear),g._a[Zn]=I.getUTCMonth(),g._a[oa]=I.getUTCDate()),S=0;S<3&&g._a[S]==null;++S)g._a[S]=$[S]=H[S];for(;S<7;S++)g._a[S]=$[S]=g._a[S]==null?S===2?1:0:g._a[S];g._a[hn]===24&&g._a[ii]===0&&g._a[kn]===0&&g._a[sa]===0&&(g._nextDay=!0,g._a[hn]=0),g._d=(g._useUTC?tp:N9).apply(null,$),oe=g._useUTC?g._d.getUTCDay():g._d.getDay(),g._tzm!=null&&g._d.setUTCMinutes(g._d.getUTCMinutes()-g._tzm),g._nextDay&&(g._a[hn]=24),g._w&&typeof g._w.d<"u"&&g._w.d!==oe&&(d(g).weekdayMismatch=!0)}}function Sq(g){var S,I,$,H,oe,Me,gt,tr,Dr;S=g._w,S.GG!=null||S.W!=null||S.E!=null?(oe=1,Me=4,I=pc(S.GG,g._a[Bn],rp(cn(),1,4).year),$=pc(S.W,1),H=pc(S.E,1),(H<1||H>7)&&(tr=!0)):(oe=g._locale._week.dow,Me=g._locale._week.doy,Dr=rp(cn(),oe,Me),I=pc(S.gg,g._a[Bn],Dr.year),$=pc(S.w,Dr.week),S.d!=null?(H=S.d,(H<0||H>6)&&(tr=!0)):S.e!=null?(H=S.e+oe,(S.e<0||S.e>6)&&(tr=!0)):H=oe),$<1||$>_s(I,oe,Me)?d(g)._overflowWeeks=!0:tr!=null?d(g)._overflowWeekday=!0:(gt=sC(I,$,H,oe,Me),g._a[Bn]=gt.year,g._dayOfYear=gt.dayOfYear)}e.ISO_8601=function(){},e.RFC_2822=function(){};function Ax(g){if(g._f===e.ISO_8601){mC(g);return}if(g._f===e.RFC_2822){dC(g);return}g._a=[],d(g).empty=!0;var S=""+g._i,I,$,H,oe,Me,gt=S.length,tr=0,Dr,Wi;for(H=be(g._f,g._locale).match(O)||[],Wi=H.length,I=0;I0&&d(g).unusedInput.push(Me),S=S.slice(S.indexOf($)+$.length),tr+=$.length),J[oe]?($?d(g).empty=!1:d(g).unusedTokens.push(oe),Ka(oe,$,g)):g._strict&&!$&&d(g).unusedTokens.push(oe);d(g).charsLeftOver=gt-tr,S.length>0&&d(g).unusedInput.push(S),g._a[hn]<=12&&d(g).bigHour===!0&&g._a[hn]>0&&(d(g).bigHour=void 0),d(g).parsedDateParts=g._a.slice(0),d(g).meridiem=g._meridiem,g._a[hn]=Eq(g._locale,g._a[hn],g._meridiem),Dr=d(g).era,Dr!==null&&(g._a[Bn]=g._locale.erasConvertYear(Dr,g._a[Bn])),_x(g),bx(g)}function Eq(g,S,I){var $;return I==null?S:g.meridiemHour!=null?g.meridiemHour(S,I):(g.isPM!=null&&($=g.isPM(I),$&&S<12&&(S+=12),!$&&S===12&&(S=0)),S)}function Tq(g){var S,I,$,H,oe,Me,gt=!1,tr=g._f.length;if(tr===0){d(g).invalidFormat=!0,g._d=new Date(NaN);return}for(H=0;Hthis?this:g:b()});function vC(g,S){var I,$;if(S.length===1&&n(S[0])&&(S=S[0]),!S.length)return cn();for(I=S[0],$=1;$this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Yq(){if(!s(this._isDSTShifted))return this._isDSTShifted;var g={},S;return A(g,this),g=hC(g),g._a?(S=g._isUTC?m(g._a):cn(g._a),this._isDSTShifted=this.isValid()&&Rq(g._a,S.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function jq(){return this.isValid()?!this._isUTC:!1}function Zq(){return this.isValid()?this._isUTC:!1}function xC(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Jq=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Xq=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Mo(g,S){var I=g,$=null,H,oe,Me;return Km(g)?I={ms:g._milliseconds,d:g._days,M:g._months}:l(g)||!isNaN(+g)?(I={},S?I[S]=+g:I.milliseconds=+g):($=Jq.exec(g))?(H=$[1]==="-"?-1:1,I={y:0,d:gr($[oa])*H,h:gr($[hn])*H,m:gr($[ii])*H,s:gr($[kn])*H,ms:gr(Sx($[sa]*1e3))*H}):($=Xq.exec(g))?(H=$[1]==="-"?-1:1,I={y:al($[2],H),M:al($[3],H),w:al($[4],H),d:al($[5],H),h:al($[6],H),m:al($[7],H),s:al($[8],H)}):I==null?I={}:typeof I=="object"&&("from"in I||"to"in I)&&(Me=Qq(cn(I.from),cn(I.to)),I={},I.ms=Me.milliseconds,I.M=Me.months),oe=new Qm(I),Km(g)&&a(g,"_locale")&&(oe._locale=g._locale),Km(g)&&a(g,"_isValid")&&(oe._isValid=g._isValid),oe}Mo.fn=Qm.prototype,Mo.invalid=Oq;function al(g,S){var I=g&&parseFloat(g.replace(",","."));return(isNaN(I)?0:I)*S}function bC(g,S){var I={};return I.months=S.month()-g.month()+(S.year()-g.year())*12,g.clone().add(I.months,"M").isAfter(S)&&--I.months,I.milliseconds=+S-+g.clone().add(I.months,"M"),I}function Qq(g,S){var I;return g.isValid()&&S.isValid()?(S=Tx(S,g),g.isBefore(S)?I=bC(g,S):(I=bC(S,g),I.milliseconds=-I.milliseconds,I.months=-I.months),I):{milliseconds:0,months:0}}function wC(g,S){return function(I,$){var H,oe;return $!==null&&!isNaN(+$)&&(N(S,"moment()."+S+"(period, number) is deprecated. Please use moment()."+S+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),oe=I,I=$,$=oe),H=Mo(I,$),_C(this,H,g),this}}function _C(g,S,I,$){var H=S._milliseconds,oe=Sx(S._days),Me=Sx(S._months);g.isValid()&&($=$??!0,Me&&iC(g,Do(g,"Month")+Me*I),oe&&cc(g,"Date",Do(g,"Date")+oe*I),H&&g._d.setTime(g._d.valueOf()+H*I),$&&e.updateOffset(g,oe||Me))}var Kq=wC(1,"add"),ez=wC(-1,"subtract");function AC(g){return typeof g=="string"||g instanceof String}function tz(g){return y(g)||u(g)||AC(g)||l(g)||nz(g)||rz(g)||g===null||g===void 0}function rz(g){var S=i(g)&&!o(g),I=!1,$=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],H,oe,Me=$.length;for(H=0;HI.valueOf():I.valueOf()9999?se(I,S?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?S?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",se(I,"Z")):se(I,S?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function vz(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var g="moment",S="",I,$,H,oe;return this.isLocal()||(g=this.utcOffset()===0?"moment.utc":"moment.parseZone",S="Z"),I="["+g+'("]',$=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",H="-MM-DD[T]HH:mm:ss.SSS",oe=S+'[")]',this.format(I+$+H+oe)}function yz(g){g||(g=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var S=se(this,g);return this.localeData().postformat(S)}function xz(g,S){return this.isValid()&&(y(g)&&g.isValid()||cn(g).isValid())?Mo({to:this,from:g}).locale(this.locale()).humanize(!S):this.localeData().invalidDate()}function bz(g){return this.from(cn(),g)}function wz(g,S){return this.isValid()&&(y(g)&&g.isValid()||cn(g).isValid())?Mo({from:this,to:g}).locale(this.locale()).humanize(!S):this.localeData().invalidDate()}function _z(g){return this.to(cn(),g)}function SC(g){var S;return g===void 0?this._locale._abbr:(S=As(g),S!=null&&(this._locale=S),this)}var EC=D("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(g){return g===void 0?this.localeData():this.locale(g)});function TC(){return this._locale}var td=1e3,mc=60*td,rd=60*mc,DC=(365*400+97)*24*rd;function dc(g,S){return(g%S+S)%S}function MC(g,S,I){return g<100&&g>=0?new Date(g+400,S,I)-DC:new Date(g,S,I).valueOf()}function CC(g,S,I){return g<100&&g>=0?Date.UTC(g+400,S,I)-DC:Date.UTC(g,S,I)}function Az(g){var S,I;if(g=Ee(g),g===void 0||g==="millisecond"||!this.isValid())return this;switch(I=this._isUTC?CC:MC,g){case"year":S=I(this.year(),0,1);break;case"quarter":S=I(this.year(),this.month()-this.month()%3,1);break;case"month":S=I(this.year(),this.month(),1);break;case"week":S=I(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":S=I(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":S=I(this.year(),this.month(),this.date());break;case"hour":S=this._d.valueOf(),S-=dc(S+(this._isUTC?0:this.utcOffset()*mc),rd);break;case"minute":S=this._d.valueOf(),S-=dc(S,mc);break;case"second":S=this._d.valueOf(),S-=dc(S,td);break}return this._d.setTime(S),e.updateOffset(this,!0),this}function Sz(g){var S,I;if(g=Ee(g),g===void 0||g==="millisecond"||!this.isValid())return this;switch(I=this._isUTC?CC:MC,g){case"year":S=I(this.year()+1,0,1)-1;break;case"quarter":S=I(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":S=I(this.year(),this.month()+1,1)-1;break;case"week":S=I(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":S=I(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":S=I(this.year(),this.month(),this.date()+1)-1;break;case"hour":S=this._d.valueOf(),S+=rd-dc(S+(this._isUTC?0:this.utcOffset()*mc),rd)-1;break;case"minute":S=this._d.valueOf(),S+=mc-dc(S,mc)-1;break;case"second":S=this._d.valueOf(),S+=td-dc(S,td)-1;break}return this._d.setTime(S),e.updateOffset(this,!0),this}function Ez(){return this._d.valueOf()-(this._offset||0)*6e4}function Tz(){return Math.floor(this.valueOf()/1e3)}function Dz(){return new Date(this.valueOf())}function Mz(){var g=this;return[g.year(),g.month(),g.date(),g.hour(),g.minute(),g.second(),g.millisecond()]}function Cz(){var g=this;return{years:g.year(),months:g.month(),date:g.date(),hours:g.hours(),minutes:g.minutes(),seconds:g.seconds(),milliseconds:g.milliseconds()}}function Nz(){return this.isValid()?this.toISOString():null}function Fz(){return x(this)}function Iz(){return f({},d(this))}function Pz(){return d(this).overflow}function Bz(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}U("N",0,0,"eraAbbr"),U("NN",0,0,"eraAbbr"),U("NNN",0,0,"eraAbbr"),U("NNNN",0,0,"eraName"),U("NNNNN",0,0,"eraNarrow"),U("y",["y",1],"yo","eraYear"),U("y",["yy",2],0,"eraYear"),U("y",["yyy",3],0,"eraYear"),U("y",["yyyy",4],0,"eraYear"),qe("N",Mx),qe("NN",Mx),qe("NNN",Mx),qe("NNNN",Gz),qe("NNNNN",Wz),kr(["N","NN","NNN","NNNN","NNNNN"],function(g,S,I,$){var H=I._locale.erasParse(g,$,I._strict);H?d(I).era=H:d(I).invalidEra=g}),qe("y",Se),qe("yy",Se),qe("yyy",Se),qe("yyyy",Se),qe("yo",Yz),kr(["y","yy","yyy","yyyy"],Bn),kr(["yo"],function(g,S,I,$){var H;I._locale._eraYearOrdinalRegex&&(H=g.match(I._locale._eraYearOrdinalRegex)),I._locale.eraYearOrdinalParse?S[Bn]=I._locale.eraYearOrdinalParse(g,H):S[Bn]=parseInt(g,10)});function kz(g,S){var I,$,H,oe=this._eras||As("en")._eras;for(I=0,$=oe.length;I<$;++I){switch(typeof oe[I].since){case"string":H=e(oe[I].since).startOf("day"),oe[I].since=H.valueOf();break}switch(typeof oe[I].until){case"undefined":oe[I].until=1/0;break;case"string":H=e(oe[I].until).startOf("day").valueOf(),oe[I].until=H.valueOf();break}}return oe}function $z(g,S,I){var $,H,oe=this.eras(),Me,gt,tr;for(g=g.toUpperCase(),$=0,H=oe.length;$=0)return oe[$]}function Oz(g,S){var I=g.since<=g.until?1:-1;return S===void 0?e(g.since).year():e(g.since).year()+(S-g.offset)*I}function Rz(){var g,S,I,$=this.localeData().eras();for(g=0,S=$.length;goe&&(S=oe),e7.call(this,g,S,I,$,H))}function e7(g,S,I,$,H){var oe=sC(g,S,I,$,H),Me=tp(oe.year,0,oe.dayOfYear);return this.year(Me.getUTCFullYear()),this.month(Me.getUTCMonth()),this.date(Me.getUTCDate()),this}U("Q",0,"Qo","quarter"),qe("Q",St),kr("Q",function(g,S){S[Zn]=(gr(g)-1)*3});function t7(g){return g==null?Math.ceil((this.month()+1)/3):this.month((g-1)*3+this.month()%3)}U("D",["DD",2],"Do","date"),qe("D",at,tt),qe("DD",at,Ye),qe("Do",function(g,S){return g?S._dayOfMonthOrdinalParse||S._ordinalParse:S._dayOfMonthOrdinalParseLenient}),kr(["D","DD"],oa),kr("Do",function(g,S){S[oa]=gr(g.match(at)[0])});var FC=Ko("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),qe("DDD",he),qe("DDDD",ur),kr(["DDD","DDDD"],function(g,S,I){I._dayOfYear=gr(g)});function r7(g){var S=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return g==null?S:this.add(g-S,"d")}U("m",["mm",2],0,"minute"),qe("m",at,xt),qe("mm",at,Ye),kr(["m","mm"],ii);var n7=Ko("Minutes",!1);U("s",["ss",2],0,"second"),qe("s",at,xt),qe("ss",at,Ye),kr(["s","ss"],kn);var i7=Ko("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return this.millisecond()*10}),U(0,["SSSSS",5],0,function(){return this.millisecond()*100}),U(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),U(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),U(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),U(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),qe("S",he,St),qe("SS",he,Ye),qe("SSS",he,ur);var fu,IC;for(fu="SSSS";fu.length<=9;fu+="S")qe(fu,Se);function a7(g,S){S[sa]=gr(("0."+g)*1e3)}for(fu="S";fu.length<=9;fu+="S")kr(fu,a7);IC=Ko("Milliseconds",!1),U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");function o7(){return this._isUTC?"UTC":""}function s7(){return this._isUTC?"Coordinated Universal Time":""}var je=w.prototype;je.add=Kq,je.calendar=oz,je.clone=sz,je.diff=dz,je.endOf=Sz,je.format=yz,je.from=xz,je.fromNow=bz,je.to=wz,je.toNow=_z,je.get=fc,je.invalidAt=Pz,je.isAfter=uz,je.isBefore=lz,je.isBetween=cz,je.isSame=fz,je.isSameOrAfter=pz,je.isSameOrBefore=mz,je.isValid=Fz,je.lang=EC,je.locale=SC,je.localeData=TC,je.max=Fq,je.min=Nq,je.parsingFlags=Iz,je.set=Kf,je.startOf=Az,je.subtract=ez,je.toArray=Mz,je.toObject=Cz,je.toDate=Dz,je.toISOString=gz,je.inspect=vz,typeof Symbol<"u"&&Symbol.for!=null&&(je[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),je.toJSON=Nz,je.toString=hz,je.unix=Tz,je.valueOf=Ez,je.creationData=Bz,je.eraName=Rz,je.eraNarrow=Lz,je.eraAbbr=Vz,je.eraYear=Uz,je.year=bs,je.isLeapYear=lc,je.weekYear=jz,je.isoWeekYear=Zz,je.quarter=je.quarters=t7,je.month=aC,je.daysInMonth=D9,je.week=je.weeks=k9,je.isoWeek=je.isoWeeks=$9,je.weeksInYear=Qz,je.weeksInWeekYear=Kz,je.isoWeeksInYear=Jz,je.isoWeeksInISOWeekYear=Xz,je.date=FC,je.day=je.days=Z9,je.weekday=J9,je.isoWeekday=X9,je.dayOfYear=r7,je.hour=je.hours=iq,je.minute=je.minutes=n7,je.second=je.seconds=i7,je.millisecond=je.milliseconds=IC,je.utcOffset=Vq,je.utc=qq,je.local=zq,je.parseZone=Hq,je.hasAlignedHourOffset=Gq,je.isDST=Wq,je.isLocal=jq,je.isUtcOffset=Zq,je.isUtc=xC,je.isUTC=xC,je.zoneAbbr=o7,je.zoneName=s7,je.dates=D("dates accessor is deprecated. Use date instead.",FC),je.months=D("months accessor is deprecated. Use month instead",aC),je.years=D("years accessor is deprecated. Use year instead",bs),je.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Uq),je.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Yq);function u7(g){return cn(g*1e3)}function l7(){return cn.apply(null,arguments).parseZone()}function PC(g){return g}var Or=V.prototype;Or.calendar=k,Or.longDateFormat=j,Or.invalidDate=pe,Or.ordinal=_e,Or.preparse=PC,Or.postformat=PC,Or.relativeTime=Z,Or.pastFuture=ge,Or.set=B,Or.eras=kz,Or.erasParse=$z,Or.erasConvertYear=Oz,Or.erasAbbrRegex=zz,Or.erasNameRegex=qz,Or.erasNarrowRegex=Hz,Or.months=$r,Or.monthsShort=Rn,Or.monthsParse=ws,Or.monthsRegex=C9,Or.monthsShortRegex=M9,Or.week=F9,Or.firstDayOfYear=B9,Or.firstDayOfWeek=P9,Or.weekdays=H9,Or.weekdaysMin=W9,Or.weekdaysShort=G9,Or.weekdaysParse=j9,Or.weekdaysRegex=Q9,Or.weekdaysShortRegex=K9,Or.weekdaysMinRegex=eq,Or.isPM=rq,Or.meridiem=aq;function id(g,S,I,$){var H=As(),oe=m().set($,S);return H[I](oe,g)}function BC(g,S,I){if(l(g)&&(S=g,g=void 0),g=g||"",S!=null)return id(g,S,I,"month");var $,H=[];for($=0;$<12;$++)H[$]=id(g,$,I,"month");return H}function Nx(g,S,I,$){typeof g=="boolean"?(l(S)&&(I=S,S=void 0),S=S||""):(S=g,I=S,g=!1,l(S)&&(I=S,S=void 0),S=S||"");var H=As(),oe=g?H._week.dow:0,Me,gt=[];if(I!=null)return id(S,(I+oe)%7,$,"day");for(Me=0;Me<7;Me++)gt[Me]=id(S,(Me+oe)%7,$,"day");return gt}function c7(g,S){return BC(g,S,"months")}function f7(g,S){return BC(g,S,"monthsShort")}function p7(g,S,I){return Nx(g,S,I,"weekdays")}function m7(g,S,I){return Nx(g,S,I,"weekdaysShort")}function d7(g,S,I){return Nx(g,S,I,"weekdaysMin")}cu("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(g){var S=g%10,I=gr(g%100/10)===1?"th":S===1?"st":S===2?"nd":S===3?"rd":"th";return g+I}}),e.lang=D("moment.lang is deprecated. Use moment.locale instead.",cu),e.langData=D("moment.langData is deprecated. Use moment.localeData instead.",As);var Ss=Math.abs;function h7(){var g=this._data;return this._milliseconds=Ss(this._milliseconds),this._days=Ss(this._days),this._months=Ss(this._months),g.milliseconds=Ss(g.milliseconds),g.seconds=Ss(g.seconds),g.minutes=Ss(g.minutes),g.hours=Ss(g.hours),g.months=Ss(g.months),g.years=Ss(g.years),this}function kC(g,S,I,$){var H=Mo(S,I);return g._milliseconds+=$*H._milliseconds,g._days+=$*H._days,g._months+=$*H._months,g._bubble()}function g7(g,S){return kC(this,g,S,1)}function v7(g,S){return kC(this,g,S,-1)}function $C(g){return g<0?Math.floor(g):Math.ceil(g)}function y7(){var g=this._milliseconds,S=this._days,I=this._months,$=this._data,H,oe,Me,gt,tr;return g>=0&&S>=0&&I>=0||g<=0&&S<=0&&I<=0||(g+=$C(Fx(I)+S)*864e5,S=0,I=0),$.milliseconds=g%1e3,H=jn(g/1e3),$.seconds=H%60,oe=jn(H/60),$.minutes=oe%60,Me=jn(oe/60),$.hours=Me%24,S+=jn(Me/24),tr=jn(OC(S)),I+=tr,S-=$C(Fx(tr)),gt=jn(I/12),I%=12,$.days=S,$.months=I,$.years=gt,this}function OC(g){return g*4800/146097}function Fx(g){return g*146097/4800}function x7(g){if(!this.isValid())return NaN;var S,I,$=this._milliseconds;if(g=Ee(g),g==="month"||g==="quarter"||g==="year")switch(S=this._days+$/864e5,I=this._months+OC(S),g){case"month":return I;case"quarter":return I/3;case"year":return I/12}else switch(S=this._days+Math.round(Fx(this._months)),g){case"week":return S/7+$/6048e5;case"day":return S+$/864e5;case"hour":return S*24+$/36e5;case"minute":return S*1440+$/6e4;case"second":return S*86400+$/1e3;case"millisecond":return Math.floor(S*864e5)+$;default:throw new Error("Unknown unit "+g)}}function Es(g){return function(){return this.as(g)}}var RC=Es("ms"),b7=Es("s"),w7=Es("m"),_7=Es("h"),A7=Es("d"),S7=Es("w"),E7=Es("M"),T7=Es("Q"),D7=Es("y"),M7=RC;function C7(){return Mo(this)}function N7(g){return g=Ee(g),this.isValid()?this[g+"s"]():NaN}function ol(g){return function(){return this.isValid()?this._data[g]:NaN}}var F7=ol("milliseconds"),I7=ol("seconds"),P7=ol("minutes"),B7=ol("hours"),k7=ol("days"),$7=ol("months"),O7=ol("years");function R7(){return jn(this.days()/7)}var Ts=Math.round,hc={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function L7(g,S,I,$,H){return H.relativeTime(S||1,!!I,g,$)}function V7(g,S,I,$){var H=Mo(g).abs(),oe=Ts(H.as("s")),Me=Ts(H.as("m")),gt=Ts(H.as("h")),tr=Ts(H.as("d")),Dr=Ts(H.as("M")),Wi=Ts(H.as("w")),Ds=Ts(H.as("y")),pu=oe<=I.ss&&["s",oe]||oe0,pu[4]=$,L7.apply(null,pu)}function U7(g){return g===void 0?Ts:typeof g=="function"?(Ts=g,!0):!1}function q7(g,S){return hc[g]===void 0?!1:S===void 0?hc[g]:(hc[g]=S,g==="s"&&(hc.ss=S-1),!0)}function z7(g,S){if(!this.isValid())return this.localeData().invalidDate();var I=!1,$=hc,H,oe;return typeof g=="object"&&(S=g,g=!1),typeof g=="boolean"&&(I=g),typeof S=="object"&&($=Object.assign({},hc,S),S.s!=null&&S.ss==null&&($.ss=S.s-1)),H=this.localeData(),oe=V7(this,!I,$,H),I&&(oe=H.pastFuture(+this,oe)),H.postformat(oe)}var Ix=Math.abs;function gc(g){return(g>0)-(g<0)||+g}function ad(){if(!this.isValid())return this.localeData().invalidDate();var g=Ix(this._milliseconds)/1e3,S=Ix(this._days),I=Ix(this._months),$,H,oe,Me,gt=this.asSeconds(),tr,Dr,Wi,Ds;return gt?($=jn(g/60),H=jn($/60),g%=60,$%=60,oe=jn(I/12),I%=12,Me=g?g.toFixed(3).replace(/\.?0+$/,""):"",tr=gt<0?"-":"",Dr=gc(this._months)!==gc(gt)?"-":"",Wi=gc(this._days)!==gc(gt)?"-":"",Ds=gc(this._milliseconds)!==gc(gt)?"-":"",tr+"P"+(oe?Dr+oe+"Y":"")+(I?Dr+I+"M":"")+(S?Wi+S+"D":"")+(H||$||g?"T":"")+(H?Ds+H+"H":"")+($?Ds+$+"M":"")+(g?Ds+Me+"S":"")):"P0D"}var Cr=Qm.prototype;Cr.isValid=$q,Cr.abs=h7,Cr.add=g7,Cr.subtract=v7,Cr.as=x7,Cr.asMilliseconds=RC,Cr.asSeconds=b7,Cr.asMinutes=w7,Cr.asHours=_7,Cr.asDays=A7,Cr.asWeeks=S7,Cr.asMonths=E7,Cr.asQuarters=T7,Cr.asYears=D7,Cr.valueOf=M7,Cr._bubble=y7,Cr.clone=C7,Cr.get=N7,Cr.milliseconds=F7,Cr.seconds=I7,Cr.minutes=P7,Cr.hours=B7,Cr.days=k7,Cr.weeks=R7,Cr.months=$7,Cr.years=O7,Cr.humanize=z7,Cr.toISOString=ad,Cr.toString=ad,Cr.toJSON=ad,Cr.locale=SC,Cr.localeData=TC,Cr.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ad),Cr.lang=EC,U("X",0,0,"unix"),U("x",0,0,"valueOf"),qe("x",Xe),qe("X",ie),kr("X",function(g,S,I){I._d=new Date(parseFloat(g)*1e3)}),kr("x",function(g,S,I){I._d=new Date(gr(g))});return e.version="2.30.1",r(cn),e.fn=je,e.min=Iq,e.max=Pq,e.now=Bq,e.utc=m,e.unix=u7,e.months=c7,e.isDate=u,e.locale=cu,e.invalid=b,e.duration=Mo,e.isMoment=y,e.weekdays=p7,e.parseZone=l7,e.localeData=As,e.isDuration=Km,e.monthsShort=f7,e.weekdaysMin=d7,e.defineLocale=xx,e.updateLocale=lq,e.locales=cq,e.weekdaysShort=m7,e.normalizeUnits=Ee,e.relativeTimeRounding=U7,e.relativeTimeThreshold=q7,e.calendarFormat=az,e.prototype=je,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},e})});var Nd=ai(la=>{"use strict";Object.defineProperty(la,"__esModule",{value:!0});la.P_HELPERS=la.ParserHelpers=la.validateRegexFlags=la.validateRange=la.getIndex=la.arrayUnion=void 0;var Zx=Fd();function cH(t,e){if(t===void 0&&e===void 0)return;if(t===void 0)return e;if(e===void 0)return t;let r=[...t];for(let n of e)r.includes(n)||r.push(n);return r}la.arrayUnion=cH;function fH(t){return t===void 0?-1:t.index}la.getIndex=fH;function pH(t,e){if(e{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.ParserContext=void 0;var Jx=Nd(),Xx=class t{constructor(e,r){this.input=e,this.position=r}moveToPosition(e){return this.position=e,this}copy(){return new t(this.input,{index:this.position.index,column:this.position.column,line:this.position.line})}getPosition(){return{index:this.position.index,column:this.position.column,line:this.position.line}}atEOF(){return this.position.index>=this.input.length}advanceTo(e){if(en)return r;let a=i===n?(0,Jx.arrayUnion)(e.expected,r.expected):e.expected;return r.furthest=e.furthest,r.expected=a,r}};Id.ParserContext=Xx});var Ma=ai(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.P_UTILS=void 0;var Pd=Fd(),en=ca(),Qx=class t{static position(){return new Pd.Parser(e=>e.succeed(e.getPosition()))}static any(){return new Pd.Parser(e=>e.atEOF()?e.fail("any character"):e.succeedOffset(1,e.input[e.position.index]))}static remaining(){return new Pd.Parser(e=>e.succeedAt(e.input.length,e.input.slice(e.position.index)))}static eof(){return new Pd.Parser(e=>e.atEOF()?e.succeed(void 0):e.fail("eof"))}static digit(){return en.P.regexp(/^[0-9]/).describe("a digit")}static digits(){return en.P.regexp(/^[0-9]+/).describe("multiple digits")}static letter(){return en.P.regexp(/^[a-z]/i).describe("a letter")}static letters(){return en.P.regexp(/^[a-z]+/i).describe("multiple letters")}static unicodeLetter(){return en.P.regexp(/^\p{L}/iu).describe("a unicode letter")}static unicodeLetters(){return en.P.regexp(/^\p{L}+/iu).describe("multiple unicode letters")}static unicodeAlphanumeric(){return en.P.regexp(/^[\p{L}\p{N}]/iu).describe("a unicode alphanumeric character")}static unicodeAlphanumerics(){return en.P.regexp(/^[\p{L}\p{N}]+/iu).describe("multiple unicode alphanumeric characters")}static optionalWhitespace(){return en.P.regexp(/^\s*/).describe("optional whitespace")}static whitespace(){return en.P.regexp(/^\s+/).describe("whitespace")}static cr(){return en.P.string("\r")}static lf(){return en.P.string(` -`)}static crlf(){return en.P.string(`\r -`)}static newline(){return en.P.or(this.crlf(),this.lf(),this.cr()).describe("newline")}static prefix(e,r,n){return en.P.sequenceMap((i,a)=>i.reduce((o,s)=>n(s,o),a),e.many(),r)}static postfix(e,r,n){return en.P.sequenceMap((i,a)=>a.reduce((o,s)=>n(s,o),i),r,e.many())}static binaryRight(e,r,n){return en.P.sequenceMap((i,a)=>i.reverse().reduce((o,s)=>{let[l,u]=s;return n(l,u,o)},a),en.P.sequence(r,e.trim(this.optionalWhitespace())).many(),r)}static binaryLeft(e,r,n){return en.P.sequenceMap((i,a)=>a.reduce((o,s)=>{let[l,u]=s;return n(o,l,u)},i),r,en.P.sequence(e.trim(this.optionalWhitespace()),r).many())}static binaryRightRange(e,r,n){return en.P.sequenceMap((i,a,o)=>i.reverse().reduce((s,l)=>{let[u,c,f]=l;return n({from:u,to:o},c,f,s)},a),en.P.sequence(t.position(),r,e.trim(this.optionalWhitespace())).many(),r,t.position())}static binaryLeftRange(e,r,n){return en.P.sequenceMap((i,a,o)=>o.reduce((s,l)=>{let[u,c,f]=l;return n({from:i,to:f},s,u,c)},a),t.position(),r,en.P.sequence(e.trim(this.optionalWhitespace()),r,t.position()).many())}static func(e,r,n){let i=typeof e=="string"?en.P.string(e):e;return en.P.sequenceMap((a,o,s,l,u,c)=>n(a,l),i,en.P.string("("),this.optionalWhitespace(),r,this.optionalWhitespace(),en.P.string(")"))}};Bd.P_UTILS=Qx});var uF=ai(Ec=>{"use strict";Object.defineProperty(Ec,"__esModule",{value:!0});Ec.ParsingError=Ec.createParsingErrorMessage=void 0;function sF(t,e,r){let n=`Expected ${e.expected.sort().join(" or ")}`,i=`Parse Failure: ${n} at index ${e.furthest.index}, line ${e.furthest.line}, column ${e.furthest.column}.`;if(r){let o=t.split(` +"use strict";var g8=Object.create;var Fp=Object.defineProperty;var v8=Object.getOwnPropertyDescriptor;var y8=Object.getOwnPropertyNames;var b8=Object.getPrototypeOf,x8=Object.prototype.hasOwnProperty;var On=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),F_=(t,e)=>{for(var r in e)Fp(t,r,{get:e[r],enumerable:!0})},I_=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of y8(e))!x8.call(t,i)&&i!==r&&Fp(t,i,{get:()=>e[i],enumerable:!(n=v8(e,i))||n.enumerable});return t};var Tr=(t,e,r)=>(r=t!=null?g8(b8(t)):{},I_(e||!t||!t.__esModule?Fp(r,"default",{value:t,enumerable:!0}):r,t)),w8=t=>I_(Fp({},"__esModule",{value:!0}),t);var Bp=On(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.P_HELPERS=Ui.ParserHelpers=Ui.validateRegexFlags=Ui.validateRange=Ui.getIndex=Ui.arrayUnion=void 0;var Ay=kp();function _8(t,e){if(t===void 0&&e===void 0)return;if(t===void 0)return e;if(e===void 0)return t;let r=[...t];for(let n of e)r.includes(n)||r.push(n);return r}Ui.arrayUnion=_8;function A8(t){return t===void 0?-1:t.index}Ui.getIndex=A8;function D8(t,e){if(e{"use strict";Object.defineProperty(Pp,"__esModule",{value:!0});Pp.ParserContext=void 0;var Dy=Bp(),Sy=class t{constructor(e,r){this.input=e,this.position=r}moveToPosition(e){return this.position=e,this}copy(){return new t(this.input,{index:this.position.index,column:this.position.column,line:this.position.line})}getPosition(){return{index:this.position.index,column:this.position.column,line:this.position.line}}atEOF(){return this.position.index>=this.input.length}advanceTo(e){if(en)return r;let a=i===n?(0,Dy.arrayUnion)(e.expected,r.expected):e.expected;return r.furthest=e.furthest,r.expected=a,r}};Pp.ParserContext=Sy});var qi=On(Op=>{"use strict";Object.defineProperty(Op,"__esModule",{value:!0});Op.P=void 0;var aa=kp(),$p=Bp(),Ey=class t{static sequence(...e){if(e.length===0)throw new Error("sequence must have at least one parser argument");return new aa.Parser(function(n){let i,a=new Array(e.length);for(let o=0;oe[a](r,i)),Object.defineProperty(n,a,{get:()=>{if(r[a]!==void 0)return r[a];throw new Error(`Can not access rule '${a}' in language. Rule is not yet defined. Try to access it via 'ref'.`)}});for(let a in e)r[a]=e[a](n,i);return r}static or(...e){if(e.length===0)throw new Error("or must have at least one alternative");return new aa.Parser(function(n){let i;for(let a of e){let o=a,s=n.copy(),l=o.p(s);if(i=n.merge(i,l),i.success)return n.moveToPosition(s.position),i}return i})}static separateBy(e,r){return this.separateByNotEmpty(e,r).or(t.succeed([]))}static separateByNotEmpty(e,r){return this.sequenceMap(function(i,a){return a.unshift(i),a},e,r.then(e).many())}static string(e){let r="'"+e+"'";return new aa.Parser(function(i){for(let a=0;a=0&&l<=s.length){let c=s[0],f=s[l];return a.succeedOffset(c.length,f)}let u="expected valid match group (0 to "+s.length+") in "+n;return a.fail(u)}else return a.fail(n)}):new aa.Parser(function(a){let o=a.input.slice(a.position.index),s=e.exec(o);if(s!==null){let l=s[0];return a.succeedOffset(l.length,l)}else return a.fail(n)})}static succeed(e){return new aa.Parser(function(n){return n.succeed(e)})}static fail(e){return new aa.Parser(function(n){return n.fail(e)})}static oneOf(e){return $p.P_HELPERS.test(function(n){return e.includes(n)}).describe(`one character of '${e}'`)}static noneOf(e){return $p.P_HELPERS.test(function(n){return!e.includes(n)}).describe(`no character of '${e}'`)}static oneStringOf(e){return this.or(...e.map(r=>this.string(r))).describe(e.map(r=>`'${r}'`).join(" or "))}static manyOf(e){return new aa.Parser(function(n){let i=n.position.index;for(;i{"use strict";Object.defineProperty(xl,"__esModule",{value:!0});xl.ParsingError=xl.createParsingErrorMessage=void 0;function k_(t,e,r){let n=`Expected ${e.expected.sort().join(" or ")}`,i=`Parse Failure: ${n} at index ${e.furthest.index}, line ${e.furthest.line}, column ${e.furthest.column}.`;if(r){let o=t.split(` `)[e.furthest.line-1],s=`${e.furthest.line} | `;i+=` ${s}${o}`,i+=` -${" ".repeat(e.furthest.column-1+s.length)}^ (${n})`}return i}Ec.createParsingErrorMessage=sF;var Kx=class extends Error{constructor(e,r){super(sF(e,r,!0))}};Ec.ParsingError=Kx});var Fd=ai(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});kd.Parser=void 0;var dH=oF(),ro=ca(),eb=Nd(),Tc=Ma(),hH=uF(),tb=class t{constructor(e){this.p=e}tryParse(e){return this.p(new dH.ParserContext(e,{index:0,line:1,column:1}))}parse(e){let r=this.tryParse(e);if(r.success)return r.value;throw new hH.ParsingError(e,r)}or(e){return ro.P.or(this,e)}trim(e){return this.wrap(e,e)}trimString(e){return this.trim(ro.P.string(e))}wrap(e,r){let n=this;return new t(function(a){let o=e.p(a);if(!o.success)return o;let s=a.merge(o,n.p(a));if(!s.success)return s;let l=a.merge(s,r.p(a));return l.success?a.merge(l,a.succeed(s.value)):l})}wrapString(e,r){return this.wrap(ro.P.string(e),ro.P.string(r))}then(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let o=i.merge(a,e.p(i));return o.success,o})}skip(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let o=i.merge(a,e.p(i));return o.success?i.merge(o,i.succeed(a.value)):o})}and(e){return ro.P.sequence(this,e)}many(){let e=this;return new t(function(n){let i,a=n.position.index,o=[];for(;;){let s=n.copy(),l=e.p(s);if(i=n.merge(i,l),i.success){if(s.position.index===a)throw new Error("infinite loop in many() parser detected");n.moveToPosition(s.position),o.push(i.value)}else return n.merge(i,n.succeed(o))}})}repeat(e,r){(0,eb.validateRange)(e,r);let n=this;return new t(function(a){let o,s,l=[],u=0;for(;ur.concat(n),this.repeat(e,e),this.many())}separateBy(e){return ro.P.separateBy(this,e)}separateByNotEmpty(e){return ro.P.separateByNotEmpty(this,e)}result(e){return this.map(()=>e)}map(e){let r=this;return new t(function(i){let a=r.p(i);return a.success&&(a.value=e(a.value)),a})}marker(){return ro.P.sequenceMap(function(r,n,i){return{value:n,range:{from:r,to:i}}},Tc.P_UTILS.position(),this,Tc.P_UTILS.position())}namedMarker(e){return ro.P.sequenceMap(function(n,i,a){return{value:i,name:e,range:{from:n,to:a}}},Tc.P_UTILS.position(),this,Tc.P_UTILS.position())}node(e){return ro.P.sequenceMap(function(n,i,a){return e(i,{from:n,to:a})},Tc.P_UTILS.position(),this,Tc.P_UTILS.position())}followedBy(e){return this.skip(eb.P_HELPERS.followedBy(e))}notFollowedBy(e){return this.skip(eb.P_HELPERS.notFollowedBy(e))}describe(e){typeof e=="string"&&(e=[e]);let r=this;return new t(function(i){let a=r.p(i);return a.expected!==void 0&&a.expected.length!==0&&(a.expected=e),a})}box(e){let r=this;return new t(function(i){var a;let o=r.p(i);return o.expected!==void 0&&o.expected.length!==0&&(o.expected=[`(${(a=o.expected)===null||a===void 0?void 0:a.join(" or ")} as part of ${e})`]),o})}optional(e){return this.or(ro.P.succeed(e))}chain(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let s=e(a.value).p(i);return i.merge(a,s)})}thenEof(){let e=this;return new t(function(n){let i=e.p(n);return i.success?n.atEOF()?i:n.merge(i,n.fail("eof")):i})}memorize(){let e=this,r="",n=new Map,i=new Map;return new t(function(o){let s=o.position.index;if(o.input!==r)r=o.input,n.clear(),i.clear();else{let u=n.get(s),c=i.get(s);if(u!==void 0&&c!==void 0)return o.moveToPosition(Object.assign({},c)),Object.assign({},u)}let l=e.p(o);return n.set(s,Object.assign({},l)),i.set(s,o.getPosition()),l})}};kd.Parser=tb});var ca=ai(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});Od.P=void 0;var Ca=Fd(),$d=Nd(),rb=class t{static sequence(...e){if(e.length===0)throw new Error("sequence must have at least one parser argument");return new Ca.Parser(function(n){let i,a=new Array(e.length);for(let o=0;oe[a](r,i)),Object.defineProperty(n,a,{get:()=>{if(r[a]!==void 0)return r[a];throw new Error(`Can not access rule '${a}' in language. Rule is not yet defined. Try to access it via 'ref'.`)}});for(let a in e)r[a]=e[a](n,i);return r}static or(...e){if(e.length===0)throw new Error("or must have at least one alternative");return new Ca.Parser(function(n){let i;for(let a of e){let o=a,s=n.copy(),l=o.p(s);if(i=n.merge(i,l),i.success)return n.moveToPosition(s.position),i}return i})}static separateBy(e,r){return this.separateByNotEmpty(e,r).or(t.succeed([]))}static separateByNotEmpty(e,r){return this.sequenceMap(function(i,a){return a.unshift(i),a},e,r.then(e).many())}static string(e){let r="'"+e+"'";return new Ca.Parser(function(i){for(let a=0;a=0&&l<=s.length){let c=s[0],f=s[l];return a.succeedOffset(c.length,f)}let u="expected valid match group (0 to "+s.length+") in "+n;return a.fail(u)}else return a.fail(n)}):new Ca.Parser(function(a){let o=a.input.slice(a.position.index),s=e.exec(o);if(s!==null){let l=s[0];return a.succeedOffset(l.length,l)}else return a.fail(n)})}static succeed(e){return new Ca.Parser(function(n){return n.succeed(e)})}static fail(e){return new Ca.Parser(function(n){return n.fail(e)})}static oneOf(e){return $d.P_HELPERS.test(function(n){return e.includes(n)}).describe(`one character of '${e}'`)}static noneOf(e){return $d.P_HELPERS.test(function(n){return!e.includes(n)}).describe(`no character of '${e}'`)}static oneStringOf(e){return this.or(...e.map(r=>this.string(r))).describe(e.map(r=>`'${r}'`).join(" or "))}static manyOf(e){return new Ca.Parser(function(n){let i=n.position.index;for(;i{(function(t,e){typeof P0=="object"&&typeof B0<"u"?B0.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self,t["'typed'"]=e())})(P0,function(){"use strict";function t(){return!0}function e(){return!1}function r(){}let n="Argument is not a typed-function.";function i(){function o(Q){return typeof Q=="object"&&Q!==null&&Q.constructor===Object}let s=[{name:"number",test:function(Q){return typeof Q=="number"}},{name:"string",test:function(Q){return typeof Q=="string"}},{name:"boolean",test:function(Q){return typeof Q=="boolean"}},{name:"Function",test:function(Q){return typeof Q=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(Q){return Q instanceof Date}},{name:"RegExp",test:function(Q){return Q instanceof RegExp}},{name:"Object",test:o},{name:"null",test:function(Q){return Q===null}},{name:"undefined",test:function(Q){return Q===void 0}}],l={name:"any",test:t,isAny:!0},u,c,f=0,m={createCount:0};function p(Q){let me=u.get(Q);if(me)return me;let he='Unknown type "'+Q+'"',Fe=Q.toLowerCase(),ke;for(ke of c)if(ke.toLowerCase()===Fe){he+='. Did you mean "'+ke+'" ?';break}throw new TypeError(he)}function d(Q){let me=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any",he=me?p(me).index:c.length,Fe=[];for(let Se=0;Se{let Fe=u.get(he);return!Fe.isAny&&Fe.test(Q)});return me.length?me:["any"]}function T(Q){return Q&&typeof Q=="function"&&"_typedFunctionData"in Q}function v(Q,me,he){if(!T(Q))throw new TypeError(n);let Fe=he&&he.exact,ke=Array.isArray(me)?me.join(","):me,Se=N(ke),Xe=y(Se);if(!Fe||Xe in Q.signatures){let Ce=Q._typedFunctionData.signatureMap.get(Xe);if(Ce)return Ce}let F=Se.length,Y;if(Fe){Y=[];let Ce;for(Ce in Q.signatures)Y.push(Q._typedFunctionData.signatureMap.get(Ce))}else Y=Q._typedFunctionData.signatures;for(let Ce=0;Ce!Ti.has(Gi.name)))continue}xt.push(_r)}}if(Y=xt,Y.length===0)break}let ie;for(ie of Y)if(ie.params.length<=F)return ie;throw new TypeError("Signature not found (signature: "+(Q.name||"unnamed")+"("+y(Se,", ")+"))")}function A(Q,me,he){return v(Q,me,he).implementation}function w(Q,me){let he=p(me);if(he.test(Q))return Q;let Fe=he.conversionsTo;if(Fe.length===0)throw new Error("There are no conversions to "+me+" defined.");for(let ke=0;ke1&&arguments[1]!==void 0?arguments[1]:",";return Q.map(he=>he.name).join(me)}function E(Q){let me=Q.indexOf("...")===0,Fe=(me?Q.length>3?Q.slice(3):"any":Q).split("|").map(F=>p(F.trim())),ke=!1,Se=me?"...":"";return{types:Fe.map(function(F){return ke=F.isAny||ke,Se+=F.name+"|",{name:F.name,typeIndex:F.index,test:F.test,isAny:F.isAny,conversion:null,conversionIndex:-1}}),name:Se.slice(0,-1),hasAny:ke,hasConversion:!1,restParam:me}}function D(Q){let me=Q.types.map(Xe=>Xe.name),he=U(me),Fe=Q.hasAny,ke=Q.name,Se=he.map(function(Xe){let F=p(Xe.from);return Fe=F.isAny||Fe,ke+="|"+Xe.from,{name:Xe.from,typeIndex:F.index,test:F.test,isAny:F.isAny,conversion:Xe,conversionIndex:Xe.index}});return{types:Q.types.concat(Se),name:ke,hasAny:Fe,hasConversion:Se.length>0,restParam:Q.restParam}}function _(Q){return Q.typeSet||(Q.typeSet=new Set,Q.types.forEach(me=>Q.typeSet.add(me.name))),Q.typeSet}function N(Q){let me=[];if(typeof Q!="string")throw new TypeError("Signatures must be strings");let he=Q.trim();if(he==="")return me;let Fe=he.split(",");for(let ke=0;ke=ke+1}}else return Q.length===0?function(Se){return Se.length===0}:Q.length===1?(he=B(Q[0]),function(Se){return he(Se[0])&&Se.length===1}):Q.length===2?(he=B(Q[0]),Fe=B(Q[1]),function(Se){return he(Se[0])&&Fe(Se[1])&&Se.length===2}):(me=Q.map(B),function(Se){for(let Xe=0;Xe{let ke=L(Fe.params,me),Se;for(Se of ke)he.add(Se)}),he.has("any")?["any"]:Array.from(he)}function W(Q,me,he){let Fe,ke,Se=Q||"unnamed",Xe=he,F;for(F=0;F{let _r=V(xt.params,F),qe=B(_r);(F0){let xt=b(me[F]);return Fe=new TypeError("Unexpected type of argument in function "+Se+" (expected: "+ke.join(" or ")+", actual: "+xt.join(" | ")+", index: "+F+")"),Fe.data={category:"wrongType",fn:Se,index:F,actual:xt,expected:ke},Fe}}else Xe=tt}let Y=Xe.map(function(tt){return C(tt.params)?1/0:tt.params.length});if(me.lengthie)return Fe=new TypeError("Too many arguments in function "+Se+" (expected: "+ie+", actual: "+me.length+")"),Fe.data={category:"tooManyArgs",fn:Se,index:me.length,expectedLength:ie},Fe;let Ce=[];for(let tt=0;tt0)return 1;let Fe=X(Q)-X(me);return Fe<0?-1:Fe>0?1:0}function J(Q,me){let he=Q.params,Fe=me.params,ke=G(he),Se=G(Fe),Xe=C(he),F=C(Fe);if(Xe&&ke.hasAny){if(!F||!Se.hasAny)return 1}else if(F&&Se.hasAny)return-1;let Y=0,ie=0,Ce;for(Ce of he)Ce.hasAny&&++Y,Ce.hasConversion&&++ie;let tt=0,xt=0;for(Ce of Fe)Ce.hasAny&&++tt,Ce.hasConversion&&++xt;if(Y!==tt)return Y-tt;if(Xe&&ke.hasConversion){if(!F||!Se.hasConversion)return 1}else if(F&&Se.hasConversion)return-1;if(ie!==xt)return ie-xt;if(Xe){if(!F)return 1}else if(F)return-1;let _r=(he.length-Fe.length)*(Xe?-1:1);if(_r!==0)return _r;let qe=[],Ti=0;for(let un=0;un1&&me.sort((ke,Se)=>ke.index-Se.index);let he=me[0].conversionsTo;if(Q.length===1)return he;he=he.concat([]);let Fe=new Set(Q);for(let ke=1;keke.hasConversion)){let ke=C(Q),Se=Q.map(we);he=function(){let F=[],Y=ke?arguments.length-1:arguments.length;for(let ie=0;ieY.name).join("|"),hasAny:F.some(Y=>Y.isAny),hasConversion:!1,restParam:!0}),Xe.push(Se)}else Xe=Se.types.map(function(F){return{types:[F],name:F.name,hasAny:F.isAny,hasConversion:F.conversion,restParam:!1}});return xe(Xe,function(F){return me(he,Fe+1,ke.concat([F]))})}else return[ke]}return me(Q,0,[])}function be(Q,me){let he=Math.max(Q.length,me.length);for(let F=0;F=Fe:Xe?Fe>=ke:Fe===ke}function K(Q){return Q.map(me=>St(me)?Ve(me.referToSelf.callback):et(me)?Be(me.referTo.references,me.referTo.callback):me)}function j(Q,me,he){let Fe=[],ke;for(ke of Q){let Se=he[ke];if(typeof Se!="number")throw new TypeError('No definition for referenced signature "'+ke+'"');if(Se=me[Se],typeof Se!="function")return!1;Fe.push(Se)}return Fe}function ne(Q,me,he){let Fe=K(Q),ke=new Array(Fe.length).fill(!1),Se=!0;for(;Se;){Se=!1;let Xe=!0;for(let F=0;F{let Fe=Q[he];if(me.test(Fe.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function fe(Q,me){if(m.createCount++,Object.keys(me).length===0)throw new SyntaxError("No signatures provided");m.warnAgainstDeprecatedThis&&pe(me);let he=[],Fe=[],ke={},Se=[],Xe;for(Xe in me){if(!Object.prototype.hasOwnProperty.call(me,Xe))continue;let Ge=N(Xe);if(!Ge)continue;he.forEach(function(Ln){if(be(Ln,Ge))throw new TypeError('Conflicting signatures "'+y(Ln)+'" and "'+y(Ge)+'".')}),he.push(Ge);let zt=Fe.length;Fe.push(me[Xe]);let $r=Ge.map(D),Rn;for(Rn of se($r)){let Ln=y(Rn);Se.push({params:Rn,name:Ln,fn:zt}),Rn.every(ws=>!ws.hasConversion)&&(ke[Ln]=zt)}}Se.sort(J);let F=ne(Fe,ke,Ke),Y;for(Y in ke)Object.prototype.hasOwnProperty.call(ke,Y)&&(ke[Y]=F[ke[Y]]);let ie=[],Ce=new Map;for(Y of Se)Ce.has(Y.name)||(Y.fn=F[Y.fn],ie.push(Y),Ce.set(Y.name,Y));let tt=ie[0]&&ie[0].params.length<=2&&!C(ie[0].params),xt=ie[1]&&ie[1].params.length<=2&&!C(ie[1].params),_r=ie[2]&&ie[2].params.length<=2&&!C(ie[2].params),qe=ie[3]&&ie[3].params.length<=2&&!C(ie[3].params),Ti=ie[4]&&ie[4].params.length<=2&&!C(ie[4].params),Gi=ie[5]&&ie[5].params.length<=2&&!C(ie[5].params),un=tt&&xt&&_r&&qe&&Ti&&Gi;for(let Ge=0;GeGe.test),re=ie.map(Ge=>Ge.implementation),Ne=function(){for(let zt=ep;zty(N(he))),me=G(arguments);if(typeof me!="function")throw new TypeError("Callback function expected as last argument");return Be(Q,me)}function Be(Q,me){return{referTo:{references:Q,callback:me}}}function Ve(Q){if(typeof Q!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:Q}}}function et(Q){return Q&&typeof Q.referTo=="object"&&Array.isArray(Q.referTo.references)&&typeof Q.referTo.callback=="function"}function St(Q){return Q&&typeof Q.referToSelf=="object"&&typeof Q.referToSelf.callback=="function"}function Ye(Q,me){if(!Q)return me;if(me&&me!==Q){let he=new Error("Function names do not match (expected: "+Q+", actual: "+me+")");throw he.data={actual:me,expected:Q},he}return Q}function ur(Q){let me;for(let he in Q)Object.prototype.hasOwnProperty.call(Q,he)&&(T(Q[he])||typeof Q[he].signature=="string")&&(me=Ye(me,Q[he].name));return me}function Jt(Q,me){let he;for(he in me)if(Object.prototype.hasOwnProperty.call(me,he)){if(he in Q&&me[he]!==Q[he]){let Fe=new Error('Signature "'+he+'" is defined twice');throw Fe.data={signature:he,sourceFunction:me[he],destFunction:Q[he]},Fe}Q[he]=me[he]}}let He=m;m=function(Q){let me=typeof Q=="string",he=me?1:0,Fe=me?Q:"",ke={};for(let Se=he;Se1&&arguments[1]!==void 0?arguments[1]:{override:!1};at(Q);let he=p(Q.to),Fe=he.conversionsTo.find(ke=>ke.from===Q.from);if(Fe)if(me&&me.override)m.removeConversion({from:Fe.from,to:Q.to,convert:Fe.convert});else throw new Error('There is already a conversion from "'+Q.from+'" to "'+he.name+'"');he.conversionsTo.push({from:Q.from,convert:Q.convert,index:f++})},m.addConversions=function(Q,me){Q.forEach(he=>m.addConversion(he,me))},m.removeConversion=function(Q){at(Q);let me=p(Q.to),he=ge(me.conversionsTo,ke=>ke.from===Q.from);if(!he)throw new Error("Attempt to remove nonexistent conversion from "+Q.from+" to "+Q.to);if(he.convert!==Q.convert)throw new Error("Conversion to remove does not match existing conversion");let Fe=me.conversionsTo.indexOf(he);me.conversionsTo.splice(Fe,1)},m.resolve=function(Q,me){if(!T(Q))throw new TypeError(n);let he=Q._typedFunctionData.signatures;for(let Fe=0;Fe{n$.exports=function t(e,r){"use strict";var n=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,i=/(^[ ]*|[ ]*$)/g,a=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,o=/^0x[0-9a-f]+$/i,s=/^0/,l=function(v){return t.insensitive&&(""+v).toLowerCase()||""+v},u=l(e).replace(i,"")||"",c=l(r).replace(i,"")||"",f=u.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),m=c.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),p=parseInt(u.match(o),16)||f.length!==1&&u.match(a)&&Date.parse(u),d=parseInt(c.match(o),16)||p&&c.match(a)&&Date.parse(c)||null,h,x;if(d){if(pd)return 1}for(var b=0,T=Math.max(f.length,m.length);bx)return 1}return 0}});var uO=ai((J5e,sO)=>{"use strict";var wS=Object.assign||function(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},r=e.preserveFormatting,n=r===void 0?!1:r,i=e.escapeMapFn,a=i===void 0?lre:i,o=String(t),s="",l=a(wS({},sre),n?wS({},ure):{}),u=Object.keys(l),c=function(){var m=!1;u.forEach(function(p,d){m||o.length>=p.length&&o.slice(0,p.length)===p&&(s+=l[u[d]],o=o.slice(p.length,o.length),m=!0)}),m||(s+=o.slice(0,1),o=o.slice(1,o.length))};o;)c();return s}});var LV=ai((RV,_E)=>{(function(t,e,r){function n(s){var l=this,u=o();l.next=function(){var c=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=c-(l.c=c|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(s),l.s0<0&&(l.s0+=1),l.s1-=u(s),l.s1<0&&(l.s1+=1),l.s2-=u(s),l.s2<0&&(l.s2+=1),u=null}function i(s,l){return l.c=s.c,l.s0=s.s0,l.s1=s.s1,l.s2=s.s2,l}function a(s,l){var u=new n(s),c=l&&l.state,f=u.next;return f.int32=function(){return u.next()*4294967296|0},f.double=function(){return f()+(f()*2097152|0)*11102230246251565e-32},f.quick=f,c&&(typeof c=="object"&&i(c,u),f.state=function(){return i(u,{})}),f}function o(){var s=4022871197,l=function(u){u=String(u);for(var c=0;c>>0,f-=s,f*=s,s=f>>>0,f-=s,s+=f*4294967296}return(s>>>0)*23283064365386963e-26};return l}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.alea=a})(RV,typeof _E=="object"&&_E,typeof define=="function"&&define)});var UV=ai((VV,AE)=>{(function(t,e,r){function n(o){var s=this,l="";s.x=0,s.y=0,s.z=0,s.w=0,s.next=function(){var c=s.x^s.x<<11;return s.x=s.y,s.y=s.z,s.z=s.w,s.w^=s.w>>>19^c^c>>>8},o===(o|0)?s.x=o:l+=o;for(var u=0;u>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xor128=a})(VV,typeof AE=="object"&&AE,typeof define=="function"&&define)});var zV=ai((qV,SE)=>{(function(t,e,r){function n(o){var s=this,l="";s.next=function(){var c=s.x^s.x>>>2;return s.x=s.y,s.y=s.z,s.z=s.w,s.w=s.v,(s.d=s.d+362437|0)+(s.v=s.v^s.v<<4^(c^c<<1))|0},s.x=0,s.y=0,s.z=0,s.w=0,s.v=0,o===(o|0)?s.x=o:l+=o;for(var u=0;u>>4),s.next()}function i(o,s){return s.x=o.x,s.y=o.y,s.z=o.z,s.w=o.w,s.v=o.v,s.d=o.d,s}function a(o,s){var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xorwow=a})(qV,typeof SE=="object"&&SE,typeof define=="function"&&define)});var GV=ai((HV,EE)=>{(function(t,e,r){function n(o){var s=this;s.next=function(){var u=s.x,c=s.i,f,m,p;return f=u[c],f^=f>>>7,m=f^f<<24,f=u[c+1&7],m^=f^f>>>10,f=u[c+3&7],m^=f^f>>>3,f=u[c+4&7],m^=f^f<<7,f=u[c+7&7],f=f^f<<13,m^=f^f<<9,u[c]=m,s.i=c+1&7,m};function l(u,c){var f,m,p=[];if(c===(c|0))m=p[0]=c;else for(c=""+c,f=0;f0;--f)u.next()}l(s,o)}function i(o,s){return s.x=o.x.slice(),s.i=o.i,s}function a(o,s){o==null&&(o=+new Date);var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.x&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xorshift7=a})(HV,typeof EE=="object"&&EE,typeof define=="function"&&define)});var YV=ai((WV,TE)=>{(function(t,e,r){function n(o){var s=this;s.next=function(){var u=s.w,c=s.X,f=s.i,m,p;return s.w=u=u+1640531527|0,p=c[f+34&127],m=c[f=f+1&127],p^=p<<13,m^=m<<17,p^=p>>>15,m^=m>>>12,p=c[f]=p^m,s.i=f,p+(u^u>>>16)|0};function l(u,c){var f,m,p,d,h,x=[],b=128;for(c===(c|0)?(m=c,c=null):(c=c+"\0",m=0,b=Math.max(b,c.length)),p=0,d=-32;d>>15,m^=m<<4,m^=m>>>13,d>=0&&(h=h+1640531527|0,f=x[d&127]^=m+h,p=f==0?p+1:0);for(p>=128&&(x[(c&&c.length||0)&127]=-1),p=127,d=4*128;d>0;--d)m=x[p+34&127],f=x[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,x[p]=m^f;u.w=h,u.X=x,u.i=p}l(s,o)}function i(o,s){return s.i=o.i,s.w=o.w,s.X=o.X.slice(),s}function a(o,s){o==null&&(o=+new Date);var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.X&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xor4096=a})(WV,typeof TE=="object"&&TE,typeof define=="function"&&define)});var ZV=ai((jV,DE)=>{(function(t,e,r){function n(o){var s=this,l="";s.next=function(){var c=s.b,f=s.c,m=s.d,p=s.a;return c=c<<25^c>>>7^f,f=f-m|0,m=m<<24^m>>>8^p,p=p-c|0,s.b=c=c<<20^c>>>12^f,s.c=f=f-m|0,s.d=m<<16^f>>>16^p,s.a=p-c|0},s.a=0,s.b=0,s.c=-1640531527,s.d=1367130551,o===Math.floor(o)?(s.a=o/4294967296|0,s.b=o|0):l+=o;for(var u=0;u>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.tychei=a})(jV,typeof DE=="object"&&DE,typeof define=="function"&&define)});var XV=ai((JV,Ov)=>{(function(t,e,r){var n=256,i=6,a=52,o="random",s=r.pow(n,i),l=r.pow(2,a),u=l*2,c=n-1,f;function m(v,A,w){var y=[];A=A==!0?{entropy:!0}:A||{};var E=x(h(A.entropy?[v,T(e)]:v??b(),3),y),D=new p(y),_=function(){for(var N=D.g(i),C=s,B=0;N=u;)N/=2,C/=2,B>>>=1;return(N+B)/C};return _.int32=function(){return D.g(4)|0},_.quick=function(){return D.g(4)/4294967296},_.double=_,x(T(D.S),e),(A.pass||w||function(N,C,B,R){return R&&(R.S&&d(R,D),N.state=function(){return d(D,{})}),B?(r[o]=N,C):N})(_,E,"global"in A?A.global:this==r,A.state)}function p(v){var A,w=v.length,y=this,E=0,D=y.i=y.j=0,_=y.S=[];for(w||(v=[w++]);E{var Tne=LV(),Dne=UV(),Mne=zV(),Cne=GV(),Nne=YV(),Fne=ZV(),ec=XV();ec.alea=Tne;ec.xor128=Dne;ec.xorwow=Mne;ec.xorshift7=Cne;ec.xor4096=Nne;ec.tychei=Fne;QV.exports=ec});var dse={};Z7(dse,{MetaBindBuild:()=>nC,default:()=>dx});module.exports=J7(dse);var hx=require("obsidian");var Yi=(r=>(r.INLINE="inline",r.BLOCK="block",r))(Yi||{}),vc=(l=>(l.INPUT="INPUT",l.VIEW="VIEW",l.JS_VIEW="JS_VIEW",l.TABLE="TABLE",l.BUTTON_GROUP="BUTTON_GROUP",l.BUTTON="BUTTON",l.EMBED="EMBED",l.EXCLUDED="EXCLUDED",l))(vc||{}),mu=class{constructor(e){this.linePosition=e}getPosition(){return this.linePosition}};function sd(t){return t==="INPUT"||t==="VIEW"||t==="BUTTON_GROUP"}var du=(y=>(y.TOGGLE="toggle",y.SLIDER="slider",y.TEXT="text",y.TEXT_AREA="textArea",y.SELECT="select",y.MULTI_SELECT="multiSelect",y.DATE="date",y.TIME="time",y.DATE_PICKER="datePicker",y.NUMBER="number",y.SUGGESTER="suggester",y.EDITOR="editor",y.IMAGE_SUGGESTER="imageSuggester",y.PROGRESS_BAR="progressBar",y.INLINE_SELECT="inlineSelect",y.LIST="list",y.LIST_SUGGESTER="listSuggester",y.INLINE_LIST_SUGGESTER="inlineListSuggester",y.INLINE_LIST="inlineList",y.IMAGE_LIST_SUGGESTER="imageListSuggester",y.DATE_TIME="dateTime",y.INVALID="invalid",y))(du||{}),fn=(T=>(T.CLASS="class",T.ADD_LABELS="addLabels",T.MIN_VALUE="minValue",T.MAX_VALUE="maxValue",T.STEP_SIZE="stepSize",T.OPTION="option",T.TITLE="title",T.OPTION_QUERY="optionQuery",T.SHOWCASE="showcase",T.ON_VALUE="onValue",T.OFF_VALUE="offValue",T.DEFAULT_VALUE="defaultValue",T.PLACEHOLDER="placeholder",T.USE_LINKS="useLinks",T.LIMIT="limit",T.MULTI_LINE="multiLine",T.ALLOW_OTHER="allowOther",T.INVALID="invalid",T))(fn||{}),ud={toggle:{type:"toggle",allowInBlock:!0,allowInline:!0},slider:{type:"slider",allowInBlock:!0,allowInline:!0},text:{type:"text",allowInBlock:!0,allowInline:!0},textArea:{type:"textArea",allowInBlock:!0,allowInline:!0},select:{type:"select",allowInBlock:!0,allowInline:!1},multiSelect:{type:"multiSelect",allowInBlock:!0,allowInline:!1},date:{type:"date",allowInBlock:!0,allowInline:!0},time:{type:"time",allowInBlock:!0,allowInline:!0},datePicker:{type:"datePicker",allowInBlock:!0,allowInline:!0},number:{type:"number",allowInBlock:!0,allowInline:!0},suggester:{type:"suggester",allowInBlock:!0,allowInline:!0},editor:{type:"editor",allowInBlock:!0,allowInline:!1},imageSuggester:{type:"imageSuggester",allowInBlock:!0,allowInline:!0},progressBar:{type:"progressBar",allowInBlock:!0,allowInline:!1},inlineSelect:{type:"inlineSelect",allowInBlock:!0,allowInline:!0},list:{type:"list",allowInBlock:!0,allowInline:!1},listSuggester:{type:"listSuggester",allowInBlock:!0,allowInline:!1},inlineListSuggester:{type:"inlineListSuggester",allowInBlock:!0,allowInline:!0},inlineList:{type:"inlineList",allowInBlock:!0,allowInline:!0},imageListSuggester:{type:"imageListSuggester",allowInBlock:!0,allowInline:!1},dateTime:{type:"dateTime",allowInBlock:!0,allowInline:!0},invalid:{type:"invalid",allowInBlock:!1,allowInline:!1}};var Nr={addLabels:{type:"addLabels",allowedFieldTypes:["slider","progressBar"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},class:{type:"class",allowedFieldTypes:[],values:[[{name:"className",allowed:[],description:"the name of the css class to add"}]],allowMultiple:!0},defaultValue:{type:"defaultValue",allowedFieldTypes:[],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},maxValue:{type:"maxValue",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the maximally allowed value"}]],allowMultiple:!1},minValue:{type:"minValue",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the minimally allowed value"}]],allowMultiple:!1},stepSize:{type:"stepSize",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the step size for sliders"}]],allowMultiple:!1},offValue:{type:"offValue",allowedFieldTypes:["toggle"],values:[[{name:"value",allowed:[],description:"the value for the off state"}]],allowMultiple:!1},onValue:{type:"onValue",allowedFieldTypes:["toggle"],values:[[{name:"value",allowed:[],description:"the value for the off state"}]],allowMultiple:!1},option:{type:"option",allowedFieldTypes:["select","multiSelect","suggester","imageSuggester","inlineSelect","listSuggester","inlineListSuggester","imageListSuggester"],values:[[{name:"value",allowed:[],description:"the value and display name of the option"}],[{name:"value",allowed:[],description:"the value of the option"},{name:"name",allowed:[],description:"the display name of the option"}]],allowMultiple:!0},optionQuery:{type:"optionQuery",allowedFieldTypes:["suggester","imageSuggester","listSuggester","inlineListSuggester","imageListSuggester"],values:[[{name:"value",allowed:[],description:"the query for options"}]],allowMultiple:!0},placeholder:{type:"placeholder",allowedFieldTypes:["text","textArea","number","list","inlineList"],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},showcase:{type:"showcase",allowedFieldTypes:[],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},title:{type:"title",allowedFieldTypes:[],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},useLinks:{type:"useLinks",allowedFieldTypes:["suggester","listSuggester","inlineListSuggester"],values:[[],[{name:"value",allowed:["true","partial","false"],description:""}]],allowMultiple:!1},limit:{type:"limit",allowedFieldTypes:["text","textArea","list","inlineList"],values:[[{name:"value",allowed:["number"],description:"a character limit for text fields"}]],allowMultiple:!1},multiLine:{type:"multiLine",allowedFieldTypes:["list"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},allowOther:{type:"allowOther",allowedFieldTypes:["suggester","listSuggester","inlineListSuggester"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},invalid:{type:"invalid",allowedFieldTypes:[],values:[[]],allowMultiple:!0}},op=(a=>(a.MATH="math",a.TEXT="text",a.LINK="link",a.IMAGE="image",a.INVALID="invalid",a))(op||{}),sl=(i=>(i.RENDER_MARKDOWN="renderMarkdown",i.HIDDEN="hidden",i.CLASS="class",i.INVALID="invalid",i))(sl||{}),yc={renderMarkdown:{type:"renderMarkdown",allowedFieldTypes:["text"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},hidden:{type:"hidden",allowedFieldTypes:[],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},class:{type:"class",allowedFieldTypes:[],values:[[{name:"className",allowed:[],description:"the name of the css class to add"}]],allowMultiple:!0},invalid:{type:"invalid",allowedFieldTypes:[],values:[[]],allowMultiple:!0}},ld=8;var Jn=class extends Error{constructor(e){super(""),this.errorLevel=e.errorLevel,this.effect=e.effect,this.cause=e.cause,this.tip=e.tip,this.docs=e.docs,this.context=e.context,this.positionContext=e.positionContext,this.updateMessage()}updateMessage(){this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}"`:this.message=`[${this.getErrorType()}] "${this.effect}" caused by "${this.cause}"`}log(){console.log(this.message,this.stack,this.context)}},Gt=class extends Jn{getErrorType(){return"MB_INTERNAL"}},Co=class extends Jn{getErrorType(){return"MB_PARSING"}},Ms=class extends Jn{getErrorType(){return"MB_VALIDATION"}},cd=class extends Jn{getErrorType(){return"MB_BIND_TARGET"}};var Hr=class extends Jn{getErrorType(){return"MB_ARGUMENT"}},No=class extends Jn{getErrorType(){return"MB_JS"}},ul=class extends Jn{getErrorType(){return"MB_EXPRESSION"}};var sp=class extends Jn{getErrorType(){return"MB_EXAMPLE"}};var Cs=class extends Jn{getErrorType(){return"MB_BUTTON"}},ll=class extends Jn{getErrorType(){return"MB_DEPENDENCY"}};var eo=class{static get(e,r){return r.get(e).child}static tryGet(e,r){return r.tryGet(e)?.child}static fullGet(e,r){return r.get(e)}static set(e,r,n){r.set(e,n)}static setAndCreate(e,r,n){r.setAndCreate(e,n)}};var xc=class{constructor(e,r){this.id=e,this.manager=r,this.cache=new Map}validateStoragePath(e,r,n,i){return i.validateStoragePathAsFilePath(e,n)}resolveBindTargetScope(e,r,n){return e}getOrCreateCacheItem(e){let r=this.getCacheItemForStoragePath(e);return r===void 0&&(r=this.getDefaultCacheItem(e),this.cache.set(e,r)),r}subscribe(e){if(e.bindTarget===void 0)throw new Gt({errorLevel:"CRITICAL",effect:"can not subscribe",cause:"subscription bind target undefined"});let r=this.getOrCreateCacheItem(e.bindTarget.storagePath);return r.subscriptions.push(e),r}unsubscribe(e){if(e.bindTarget===void 0)throw new Gt({errorLevel:"CRITICAL",effect:"can not unsubscribe",cause:"subscription bind target undefined"});let r=this.cache.get(e.bindTarget.storagePath);if(r===void 0)throw new Gt({errorLevel:"CRITICAL",effect:"can not unsubscribe",cause:"cache item does not exist"});return r.subscriptions=r.subscriptions.filter(n=>n.uuid!==e.uuid),r}getCacheItemForStoragePath(e){return this.cache.get(e)}onCycle(e){}iterateCacheItems(){return this.cache.values()}shouldDelete(e){return!0}deleteCache(e){this.cache.delete(e.storagePath)}writeCache(e,r){let n=this.getOrCreateCacheItem(r.storagePath);return eo.setAndCreate(n.data,r.storageProp,e),n}writeEntireCache(e,r){r.data=e}readCache(e){if(e.storageType!==this.id)throw new Gt({errorLevel:"ERROR",effect:"can not read cache",cause:`Source "${e.storageType}" does not match`});let r=this.getCacheItemForStoragePath(e.storagePath);return r===void 0?eo.tryGet(this.readExternal(e.storagePath),e.storageProp):this.readCacheItem(r,e.storageProp)}readCacheItem(e,r){return eo.tryGet(e.data,r)}readEntireCacheItem(e){return e.data}};function Xn(t,e){let r=t.tryParse(e);if(r.success)return r.value;throw new up("ERROR","parsiNOM parser",e,r)}var up=class extends Jn{constructor(e,r,n,i){super({errorLevel:e,effect:"Failed to parse. Check that your syntax is correct.",cause:`expected ${i.expected.sort().join(" or ")}`}),this.str=n,this.parseFailure=i,this.source=r,this.updateMessage2()}getErrorType(){return"MB_PARSINOM"}updateMessage2(){this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}" +${" ".repeat(e.furthest.column-1+s.length)}^ (${n})`}return i}xl.createParsingErrorMessage=k_;var Ty=class extends Error{constructor(e,r){super(k_(e,r,!0))}};xl.ParsingError=Ty});var kp=On(Rp=>{"use strict";Object.defineProperty(Rp,"__esModule",{value:!0});Rp.Parser=void 0;var E8=B_(),Na=qi(),My=Bp(),wl=oa(),T8=P_(),Cy=class t{constructor(e){this.p=e}tryParse(e){return this.p(new E8.ParserContext(e,{index:0,line:1,column:1}))}parse(e){let r=this.tryParse(e);if(r.success)return r.value;throw new T8.ParsingError(e,r)}or(e){return Na.P.or(this,e)}trim(e){return this.wrap(e,e)}trimString(e){return this.trim(Na.P.string(e))}wrap(e,r){let n=this;return new t(function(a){let o=e.p(a);if(!o.success)return o;let s=a.merge(o,n.p(a));if(!s.success)return s;let l=a.merge(s,r.p(a));return l.success?a.merge(l,a.succeed(s.value)):l})}wrapString(e,r){return this.wrap(Na.P.string(e),Na.P.string(r))}then(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let o=i.merge(a,e.p(i));return o.success,o})}skip(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let o=i.merge(a,e.p(i));return o.success?i.merge(o,i.succeed(a.value)):o})}and(e){return Na.P.sequence(this,e)}many(){let e=this;return new t(function(n){let i,a=n.position.index,o=[];for(;;){let s=n.copy(),l=e.p(s);if(i=n.merge(i,l),i.success){if(s.position.index===a)throw new Error("infinite loop in many() parser detected");n.moveToPosition(s.position),o.push(i.value)}else return n.merge(i,n.succeed(o))}})}repeat(e,r){(0,My.validateRange)(e,r);let n=this;return new t(function(a){let o,s,l=[],u=0;for(;ur.concat(n),this.repeat(e,e),this.many())}separateBy(e){return Na.P.separateBy(this,e)}separateByNotEmpty(e){return Na.P.separateByNotEmpty(this,e)}result(e){return this.map(()=>e)}map(e){let r=this;return new t(function(i){let a=r.p(i);return a.success&&(a.value=e(a.value)),a})}marker(){return Na.P.sequenceMap(function(r,n,i){return{value:n,range:{from:r,to:i}}},wl.P_UTILS.position(),this,wl.P_UTILS.position())}namedMarker(e){return Na.P.sequenceMap(function(n,i,a){return{value:i,name:e,range:{from:n,to:a}}},wl.P_UTILS.position(),this,wl.P_UTILS.position())}node(e){return Na.P.sequenceMap(function(n,i,a){return e(i,{from:n,to:a})},wl.P_UTILS.position(),this,wl.P_UTILS.position())}followedBy(e){return this.skip(My.P_HELPERS.followedBy(e))}notFollowedBy(e){return this.skip(My.P_HELPERS.notFollowedBy(e))}describe(e){typeof e=="string"&&(e=[e]);let r=this;return new t(function(i){let a=r.p(i);return a.expected!==void 0&&a.expected.length!==0&&(a.expected=e),a})}box(e){let r=this;return new t(function(i){var a;let o=r.p(i);return o.expected!==void 0&&o.expected.length!==0&&(o.expected=[`(${(a=o.expected)===null||a===void 0?void 0:a.join(" or ")} as part of ${e})`]),o})}optional(e){return this.or(Na.P.succeed(e))}chain(e){let r=this;return new t(function(i){let a=r.p(i);if(!a.success)return a;let s=e(a.value).p(i);return i.merge(a,s)})}thenEof(){let e=this;return new t(function(n){let i=e.p(n);return i.success?n.atEOF()?i:n.merge(i,n.fail("eof")):i})}memorize(){let e=this,r="",n=new Map,i=new Map;return new t(function(o){let s=o.position.index;if(o.input!==r)r=o.input,n.clear(),i.clear();else{let u=n.get(s),c=i.get(s);if(u!==void 0&&c!==void 0)return o.moveToPosition(Object.assign({},c)),Object.assign({},u)}let l=e.p(o);return n.set(s,Object.assign({},l)),i.set(s,o.getPosition()),l})}};Rp.Parser=Cy});var oa=On(Vp=>{"use strict";Object.defineProperty(Vp,"__esModule",{value:!0});Vp.P_UTILS=void 0;var Lp=kp(),Hr=qi(),Ny=class t{static position(){return new Lp.Parser(e=>e.succeed(e.getPosition()))}static any(){return new Lp.Parser(e=>e.atEOF()?e.fail("any character"):e.succeedOffset(1,e.input[e.position.index]))}static remaining(){return new Lp.Parser(e=>e.succeedAt(e.input.length,e.input.slice(e.position.index)))}static eof(){return new Lp.Parser(e=>e.atEOF()?e.succeed(void 0):e.fail("eof"))}static digit(){return Hr.P.regexp(/^[0-9]/).describe("a digit")}static digits(){return Hr.P.regexp(/^[0-9]+/).describe("multiple digits")}static letter(){return Hr.P.regexp(/^[a-z]/i).describe("a letter")}static letters(){return Hr.P.regexp(/^[a-z]+/i).describe("multiple letters")}static unicodeLetter(){return Hr.P.regexp(/^\p{L}/iu).describe("a unicode letter")}static unicodeLetters(){return Hr.P.regexp(/^\p{L}+/iu).describe("multiple unicode letters")}static unicodeAlphanumeric(){return Hr.P.regexp(/^[\p{L}\p{N}]/iu).describe("a unicode alphanumeric character")}static unicodeAlphanumerics(){return Hr.P.regexp(/^[\p{L}\p{N}]+/iu).describe("multiple unicode alphanumeric characters")}static optionalWhitespace(){return Hr.P.regexp(/^\s*/).describe("optional whitespace")}static whitespace(){return Hr.P.regexp(/^\s+/).describe("whitespace")}static cr(){return Hr.P.string("\r")}static lf(){return Hr.P.string(` +`)}static crlf(){return Hr.P.string(`\r +`)}static newline(){return Hr.P.or(this.crlf(),this.lf(),this.cr()).describe("newline")}static prefix(e,r,n){return Hr.P.sequenceMap((i,a)=>i.reduce((o,s)=>n(s,o),a),e.many(),r)}static postfix(e,r,n){return Hr.P.sequenceMap((i,a)=>a.reduce((o,s)=>n(s,o),i),r,e.many())}static binaryRight(e,r,n){return Hr.P.sequenceMap((i,a)=>i.reverse().reduce((o,s)=>{let[l,u]=s;return n(l,u,o)},a),Hr.P.sequence(r,e.trim(this.optionalWhitespace())).many(),r)}static binaryLeft(e,r,n){return Hr.P.sequenceMap((i,a)=>a.reduce((o,s)=>{let[l,u]=s;return n(o,l,u)},i),r,Hr.P.sequence(e.trim(this.optionalWhitespace()),r).many())}static binaryRightRange(e,r,n){return Hr.P.sequenceMap((i,a,o)=>i.reverse().reduce((s,l)=>{let[u,c,f]=l;return n({from:u,to:o},c,f,s)},a),Hr.P.sequence(t.position(),r,e.trim(this.optionalWhitespace())).many(),r,t.position())}static binaryLeftRange(e,r,n){return Hr.P.sequenceMap((i,a,o)=>o.reduce((s,l)=>{let[u,c,f]=l;return n({from:i,to:f},s,u,c)},a),t.position(),r,Hr.P.sequence(e.trim(this.optionalWhitespace()),r,t.position()).many())}static func(e,r,n){let i=typeof e=="string"?Hr.P.string(e):e;return Hr.P.sequenceMap((a,o,s,l,u,c)=>n(a,l),i,Hr.P.string("("),this.optionalWhitespace(),r,this.optionalWhitespace(),Hr.P.string(")"))}};Vp.P_UTILS=Ny});var Bf=On((Ib,Xl)=>{(function(t,e){typeof Ib=="object"&&typeof Xl<"u"?Xl.exports=e():typeof define=="function"&&define.amd?define(e):t.moment=e()})(Ib,function(){"use strict";var t;function e(){return t.apply(null,arguments)}function r(g){t=g}function n(g){return g instanceof Array||Object.prototype.toString.call(g)==="[object Array]"}function i(g){return g!=null&&Object.prototype.toString.call(g)==="[object Object]"}function a(g,S){return Object.prototype.hasOwnProperty.call(g,S)}function o(g){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(g).length===0;var S;for(S in g)if(a(g,S))return!1;return!0}function s(g){return g===void 0}function l(g){return typeof g=="number"||Object.prototype.toString.call(g)==="[object Number]"}function u(g){return g instanceof Date||Object.prototype.toString.call(g)==="[object Date]"}function c(g,S){var B=[],$,H=g.length;for($=0;$>>0,$;for($=0;$0)for(B=0;B=0;return(ae?B?"+":"":"-")+Math.pow(10,Math.max(0,H)).toString().substr(1)+$}var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Q=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ne={},X={};function U(g,S,B,$){var H=$;typeof $=="string"&&(H=function(){return this[$]()}),g&&(X[g]=H),S&&(X[S[0]]=function(){return W(H.apply(this,arguments),S[1],S[2])}),B&&(X[B]=function(){return this.localeData().ordinal(H.apply(this,arguments),g)})}function fe(g){return g.match(/\[[\s\S]/)?g.replace(/^\[|\]$/g,""):g.replace(/\\/g,"")}function xe(g){var S=g.match(O),B,$;for(B=0,$=S.length;B<$;B++)X[S[B]]?S[B]=X[S[B]]:S[B]=fe(S[B]);return function(H){var ae="",Te;for(Te=0;Te<$;Te++)ae+=N(S[Te])?S[Te].call(H,g):S[Te];return ae}}function oe(g,S){return g.isValid()?(S=be(S,g.localeData()),ne[S]=ne[S]||xe(S),ne[S](g)):g.localeData().invalidDate()}function be(g,S){var B=5;function $(H){return S.longDateFormat(H)||H}for(Q.lastIndex=0;B>=0&&Q.test(g);)g=g.replace(Q,$),Q.lastIndex=0,B-=1;return g}var ee={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Z(g){var S=this._longDateFormat[g],B=this._longDateFormat[g.toUpperCase()];return S||!B?S:(this._longDateFormat[g]=B.match(O).map(function($){return $==="MMMM"||$==="MM"||$==="DD"||$==="dddd"?$.slice(1):$}).join(""),this._longDateFormat[g])}var re="Invalid date";function me(){return this._invalidDate}var ce="%d",Ae=/\d{1,2}/;function we(g){return this._ordinal.replace("%d",g)}var G={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function J(g,S,B,$){var H=this._relativeTime[B];return N(H)?H(g,S,B,$):H.replace(/%d/i,g)}function ge(g,S){var B=this._relativeTime[g>0?"future":"past"];return N(B)?B(S):B.replace(/%s/i,S)}var ye={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function De(g){return typeof g=="string"?ye[g]||ye[g.toLowerCase()]:void 0}function Ie(g){var S={},B,$;for($ in g)a(g,$)&&(B=De($),B&&(S[B]=g[$]));return S}var Oe={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function Je(g){var S=[],B;for(B in g)a(g,B)&&S.push({unit:B,priority:Oe[B]});return S.sort(function($,H){return $.priority-H.priority}),S}var wt=/\d/,qe=/\d\d/,rr=/\d{3}/,Wt=/\d{4}/,pr=/[+-]?\d{6}/,Pe=/\d\d?/,j=/\d\d\d\d?/,de=/\d\d\d\d\d\d?/,pe=/\d{1,3}/,Ne=/\d{1,4}/,Be=/[+-]?\d{1,6}/,_e=/\d+/,Ge=/[+-]?\d+/,F=/Z|[+-]\d\d:?\d\d/gi,Y=/Z|[+-]\d\d(?::?\d\d)?/gi,ie=/[+-]?\d+(\.\d{1,3})?/,Me=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Qe=/^[1-9]\d?/,gt=/^([1-9]\d|\d)/,hr;hr={};function Ve(g,S,B){hr[g]=N(S)?S:function($,H){return $&&B?B:S}}function si(g,S){return a(hr,g)?hr[g](S._strict,S._locale):new RegExp(Si(g))}function Si(g){return Xr(g.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(S,B,$,H,ae){return B||$||H||ae}))}function Xr(g){return g.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Pn(g){return g<0?Math.ceil(g)||0:Math.floor(g)}function lr(g){var S=+g,B=0;return S!==0&&isFinite(S)&&(B=Pn(S)),B}var Is={};function Nr(g,S){var B,$=S,H;for(typeof g=="string"&&(g=[g]),l(S)&&($=function(ae,Te){Te[S]=lr(ae)}),H=g.length,B=0;B68?1900:2e3)};var Go=wo("FullYear",!0);function pl(){return ia(this.year())}function wo(g,S){return function(B){return B!=null?(ml(this,g,B),e.updateOffset(this,S),this):Ka(this,g)}}function Ka(g,S){if(!g.isValid())return NaN;var B=g._d,$=g._isUTC;switch(S){case"Milliseconds":return $?B.getUTCMilliseconds():B.getMilliseconds();case"Seconds":return $?B.getUTCSeconds():B.getSeconds();case"Minutes":return $?B.getUTCMinutes():B.getMinutes();case"Hours":return $?B.getUTCHours():B.getHours();case"Date":return $?B.getUTCDate():B.getDate();case"Day":return $?B.getUTCDay():B.getDay();case"Month":return $?B.getUTCMonth():B.getMonth();case"FullYear":return $?B.getUTCFullYear():B.getFullYear();default:return NaN}}function ml(g,S,B){var $,H,ae,Te,mt;if(!(!g.isValid()||isNaN(B))){switch($=g._d,H=g._isUTC,S){case"Milliseconds":return void(H?$.setUTCMilliseconds(B):$.setMilliseconds(B));case"Seconds":return void(H?$.setUTCSeconds(B):$.setSeconds(B));case"Minutes":return void(H?$.setUTCMinutes(B):$.setMinutes(B));case"Hours":return void(H?$.setUTCHours(B):$.setHours(B));case"Date":return void(H?$.setUTCDate(B):$.setDate(B));case"FullYear":break;default:return}ae=B,Te=g.month(),mt=g.date(),mt=mt===29&&Te===1&&!ia(ae)?28:mt,H?$.setUTCFullYear(ae,Te,mt):$.setFullYear(ae,Te,mt)}}function dl(g){return g=De(g),N(this[g])?this[g]():this}function Yc(g,S){if(typeof g=="object"){g=Ie(g);var B=Je(g),$,H=B.length;for($=0;$=0?(mt=new Date(g+400,S,B,$,H,ae,Te),isFinite(mt.getFullYear())&&mt.setFullYear(g)):mt=new Date(g,S,B,$,H,ae,Te),mt}function Zc(g){var S,B;return g<100&&g>=0?(B=Array.prototype.slice.call(arguments),B[0]=g+400,S=new Date(Date.UTC.apply(null,B)),isFinite(S.getUTCFullYear())&&S.setUTCFullYear(g)):S=new Date(Date.UTC.apply(null,arguments)),S}function xp(g,S,B){var $=7+S-B,H=(7+Zc(g,0,$).getUTCDay()-S)%7;return-H+$-1}function Kw(g,S,B,$,H){var ae=(7+B-$)%7,Te=xp(g,$,H),mt=1+7*(S-1)+ae+Te,Jt,br;return mt<=0?(Jt=g-1,br=Ho(Jt)+mt):mt>Ho(g)?(Jt=g+1,br=mt-Ho(g)):(Jt=g,br=mt),{year:Jt,dayOfYear:br}}function Jc(g,S,B){var $=xp(g.year(),S,B),H=Math.floor((g.dayOfYear()-$-1)/7)+1,ae,Te;return H<1?(Te=g.year()-1,ae=H+Yo(Te,S,B)):H>Yo(g.year(),S,B)?(ae=H-Yo(g.year(),S,B),Te=g.year()+1):(Te=g.year(),ae=H),{week:ae,year:Te}}function Yo(g,S,B){var $=xp(g,S,B),H=xp(g+1,S,B);return(Ho(g)-$+H)/7}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),Ve("w",Pe,Qe),Ve("ww",Pe,qe),Ve("W",Pe,Qe),Ve("WW",Pe,qe),Ri(["w","ww","W","WW"],function(g,S,B,$){S[$.substr(0,1)]=lr(g)});function nV(g){return Jc(g,this._week.dow,this._week.doy).week}var iV={dow:0,doy:6};function aV(){return this._week.dow}function oV(){return this._week.doy}function sV(g){var S=this.localeData().week(this);return g==null?S:this.add((g-S)*7,"d")}function uV(g){var S=Jc(this,1,4).week;return g==null?S:this.add((g-S)*7,"d")}U("d",0,"do","day"),U("dd",0,0,function(g){return this.localeData().weekdaysMin(this,g)}),U("ddd",0,0,function(g){return this.localeData().weekdaysShort(this,g)}),U("dddd",0,0,function(g){return this.localeData().weekdays(this,g)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),Ve("d",Pe),Ve("e",Pe),Ve("E",Pe),Ve("dd",function(g,S){return S.weekdaysMinRegex(g)}),Ve("ddd",function(g,S){return S.weekdaysShortRegex(g)}),Ve("dddd",function(g,S){return S.weekdaysRegex(g)}),Ri(["dd","ddd","dddd"],function(g,S,B,$){var H=B._locale.weekdaysParse(g,$,B._strict);H!=null?S.d=H:d(B).invalidWeekday=g}),Ri(["d","e","E"],function(g,S,B,$){S[$]=lr(g)});function lV(g,S){return typeof g!="string"?g:isNaN(g)?(g=S.weekdaysParse(g),typeof g=="number"?g:null):parseInt(g,10)}function cV(g,S){return typeof g=="string"?S.weekdaysParse(g)%7||7:isNaN(g)?null:g}function oy(g,S){return g.slice(S,7).concat(g.slice(0,S))}var fV="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),e_="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),pV="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),mV=Me,dV=Me,hV=Me;function gV(g,S){var B=n(this._weekdays)?this._weekdays:this._weekdays[g&&g!==!0&&this._weekdays.isFormat.test(S)?"format":"standalone"];return g===!0?oy(B,this._week.dow):g?B[g.day()]:B}function vV(g){return g===!0?oy(this._weekdaysShort,this._week.dow):g?this._weekdaysShort[g.day()]:this._weekdaysShort}function yV(g){return g===!0?oy(this._weekdaysMin,this._week.dow):g?this._weekdaysMin[g.day()]:this._weekdaysMin}function bV(g,S,B){var $,H,ae,Te=g.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],$=0;$<7;++$)ae=m([2e3,1]).day($),this._minWeekdaysParse[$]=this.weekdaysMin(ae,"").toLocaleLowerCase(),this._shortWeekdaysParse[$]=this.weekdaysShort(ae,"").toLocaleLowerCase(),this._weekdaysParse[$]=this.weekdays(ae,"").toLocaleLowerCase();return B?S==="dddd"?(H=Qr.call(this._weekdaysParse,Te),H!==-1?H:null):S==="ddd"?(H=Qr.call(this._shortWeekdaysParse,Te),H!==-1?H:null):(H=Qr.call(this._minWeekdaysParse,Te),H!==-1?H:null):S==="dddd"?(H=Qr.call(this._weekdaysParse,Te),H!==-1||(H=Qr.call(this._shortWeekdaysParse,Te),H!==-1)?H:(H=Qr.call(this._minWeekdaysParse,Te),H!==-1?H:null)):S==="ddd"?(H=Qr.call(this._shortWeekdaysParse,Te),H!==-1||(H=Qr.call(this._weekdaysParse,Te),H!==-1)?H:(H=Qr.call(this._minWeekdaysParse,Te),H!==-1?H:null)):(H=Qr.call(this._minWeekdaysParse,Te),H!==-1||(H=Qr.call(this._weekdaysParse,Te),H!==-1)?H:(H=Qr.call(this._shortWeekdaysParse,Te),H!==-1?H:null))}function xV(g,S,B){var $,H,ae;if(this._weekdaysParseExact)return bV.call(this,g,S,B);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),$=0;$<7;$++){if(H=m([2e3,1]).day($),B&&!this._fullWeekdaysParse[$]&&(this._fullWeekdaysParse[$]=new RegExp("^"+this.weekdays(H,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[$]=new RegExp("^"+this.weekdaysShort(H,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[$]=new RegExp("^"+this.weekdaysMin(H,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[$]||(ae="^"+this.weekdays(H,"")+"|^"+this.weekdaysShort(H,"")+"|^"+this.weekdaysMin(H,""),this._weekdaysParse[$]=new RegExp(ae.replace(".",""),"i")),B&&S==="dddd"&&this._fullWeekdaysParse[$].test(g))return $;if(B&&S==="ddd"&&this._shortWeekdaysParse[$].test(g))return $;if(B&&S==="dd"&&this._minWeekdaysParse[$].test(g))return $;if(!B&&this._weekdaysParse[$].test(g))return $}}function wV(g){if(!this.isValid())return g!=null?this:NaN;var S=Ka(this,"Day");return g!=null?(g=lV(g,this.localeData()),this.add(g-S,"d")):S}function _V(g){if(!this.isValid())return g!=null?this:NaN;var S=(this.day()+7-this.localeData()._week.dow)%7;return g==null?S:this.add(g-S,"d")}function AV(g){if(!this.isValid())return g!=null?this:NaN;if(g!=null){var S=cV(g,this.localeData());return this.day(this.day()%7?S:S-7)}else return this.day()||7}function DV(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||sy.call(this),g?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=mV),this._weekdaysStrictRegex&&g?this._weekdaysStrictRegex:this._weekdaysRegex)}function SV(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||sy.call(this),g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=dV),this._weekdaysShortStrictRegex&&g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function EV(g){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||sy.call(this),g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=hV),this._weekdaysMinStrictRegex&&g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function sy(){function g(Ei,Qo){return Qo.length-Ei.length}var S=[],B=[],$=[],H=[],ae,Te,mt,Jt,br;for(ae=0;ae<7;ae++)Te=m([2e3,1]).day(ae),mt=Xr(this.weekdaysMin(Te,"")),Jt=Xr(this.weekdaysShort(Te,"")),br=Xr(this.weekdays(Te,"")),S.push(mt),B.push(Jt),$.push(br),H.push(mt),H.push(Jt),H.push(br);S.sort(g),B.sort(g),$.sort(g),H.sort(g),this._weekdaysRegex=new RegExp("^("+H.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+$.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+B.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+S.join("|")+")","i")}function uy(){return this.hours()%12||12}function TV(){return this.hours()||24}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,uy),U("k",["kk",2],0,TV),U("hmm",0,0,function(){return""+uy.apply(this)+W(this.minutes(),2)}),U("hmmss",0,0,function(){return""+uy.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+W(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)});function t_(g,S){U(g,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),S)})}t_("a",!0),t_("A",!1);function r_(g,S){return S._meridiemParse}Ve("a",r_),Ve("A",r_),Ve("H",Pe,gt),Ve("h",Pe,Qe),Ve("k",Pe,Qe),Ve("HH",Pe,qe),Ve("hh",Pe,qe),Ve("kk",Pe,qe),Ve("hmm",j),Ve("hmmss",de),Ve("Hmm",j),Ve("Hmmss",de),Nr(["H","HH"],nn),Nr(["k","kk"],function(g,S,B){var $=lr(g);S[nn]=$===24?0:$}),Nr(["a","A"],function(g,S,B){B._isPm=B._locale.isPM(g),B._meridiem=g}),Nr(["h","hh"],function(g,S,B){S[nn]=lr(g),d(B).bigHour=!0}),Nr("hmm",function(g,S,B){var $=g.length-2;S[nn]=lr(g.substr(0,$)),S[Xn]=lr(g.substr($)),d(B).bigHour=!0}),Nr("hmmss",function(g,S,B){var $=g.length-4,H=g.length-2;S[nn]=lr(g.substr(0,$)),S[Xn]=lr(g.substr($,2)),S[An]=lr(g.substr(H)),d(B).bigHour=!0}),Nr("Hmm",function(g,S,B){var $=g.length-2;S[nn]=lr(g.substr(0,$)),S[Xn]=lr(g.substr($))}),Nr("Hmmss",function(g,S,B){var $=g.length-4,H=g.length-2;S[nn]=lr(g.substr(0,$)),S[Xn]=lr(g.substr($,2)),S[An]=lr(g.substr(H))});function MV(g){return(g+"").toLowerCase().charAt(0)==="p"}var CV=/[ap]\.?m?\.?/i,NV=wo("Hours",!0);function FV(g,S,B){return g>11?B?"pm":"PM":B?"am":"AM"}var n_={calendar:P,longDateFormat:ee,invalidDate:re,ordinal:ce,dayOfMonthOrdinalParse:Ae,relativeTime:G,months:te,monthsShort:Ce,week:iV,weekdays:fV,weekdaysMin:pV,weekdaysShort:e_,meridiemParse:CV},an={},Xc={},Qc;function IV(g,S){var B,$=Math.min(g.length,S.length);for(B=0;B<$;B+=1)if(g[B]!==S[B])return B;return $}function i_(g){return g&&g.toLowerCase().replace("_","-")}function BV(g){for(var S=0,B,$,H,ae;S0;){if(H=wp(ae.slice(0,B).join("-")),H)return H;if($&&$.length>=B&&IV(ae,$)>=B-1)break;B--}S++}return Qc}function kV(g){return!!(g&&g.match("^[^/\\\\]*$"))}function wp(g){var S=null,B;if(an[g]===void 0&&typeof Xl<"u"&&Xl&&Xl.exports&&kV(g))try{S=Qc._abbr,B=require,B("./locale/"+g),Bs(S)}catch{an[g]=null}return an[g]}function Bs(g,S){var B;return g&&(s(S)?B=jo(g):B=ly(g,S),B?Qc=B:typeof console<"u"&&console.warn&&console.warn("Locale "+g+" not found. Did you forget to load it?")),Qc._abbr}function ly(g,S){if(S!==null){var B,$=n_;if(S.abbr=g,an[g]!=null)C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),$=an[g]._config;else if(S.parentLocale!=null)if(an[S.parentLocale]!=null)$=an[S.parentLocale]._config;else if(B=wp(S.parentLocale),B!=null)$=B._config;else return Xc[S.parentLocale]||(Xc[S.parentLocale]=[]),Xc[S.parentLocale].push({name:g,config:S}),null;return an[g]=new L(R($,S)),Xc[g]&&Xc[g].forEach(function(H){ly(H.name,H.config)}),Bs(g),an[g]}else return delete an[g],null}function PV(g,S){if(S!=null){var B,$,H=n_;an[g]!=null&&an[g].parentLocale!=null?an[g].set(R(an[g]._config,S)):($=wp(g),$!=null&&(H=$._config),S=R(H,S),$==null&&(S.abbr=g),B=new L(S),B.parentLocale=an[g],an[g]=B),Bs(g)}else an[g]!=null&&(an[g].parentLocale!=null?(an[g]=an[g].parentLocale,g===Bs()&&Bs(g)):an[g]!=null&&delete an[g]);return an[g]}function jo(g){var S;if(g&&g._locale&&g._locale._abbr&&(g=g._locale._abbr),!g)return Qc;if(!n(g)){if(S=wp(g),S)return S;g=[g]}return BV(g)}function $V(){return V(an)}function cy(g){var S,B=g._a;return B&&d(g).overflow===-2&&(S=B[$n]<0||B[$n]>11?$n:B[Li]<1||B[Li]>z(B[_n],B[$n])?Li:B[nn]<0||B[nn]>24||B[nn]===24&&(B[Xn]!==0||B[An]!==0||B[Vi]!==0)?nn:B[Xn]<0||B[Xn]>59?Xn:B[An]<0||B[An]>59?An:B[Vi]<0||B[Vi]>999?Vi:-1,d(g)._overflowDayOfYear&&(S<_n||S>Li)&&(S=Li),d(g)._overflowWeeks&&S===-1&&(S=Wc),d(g)._overflowWeekday&&S===-1&&(S=fl),d(g).overflow=S),g}var OV=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,RV=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,LV=/Z|[+-]\d\d(?::?\d\d)?/,_p=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],fy=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],VV=/^\/?Date\((-?\d+)/i,UV=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,qV={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function a_(g){var S,B,$=g._i,H=OV.exec($)||RV.exec($),ae,Te,mt,Jt,br=_p.length,Ei=fy.length;if(H){for(d(g).iso=!0,S=0,B=br;SHo(Te)||g._dayOfYear===0)&&(d(g)._overflowDayOfYear=!0),B=Zc(Te,0,g._dayOfYear),g._a[$n]=B.getUTCMonth(),g._a[Li]=B.getUTCDate()),S=0;S<3&&g._a[S]==null;++S)g._a[S]=$[S]=H[S];for(;S<7;S++)g._a[S]=$[S]=g._a[S]==null?S===2?1:0:g._a[S];g._a[nn]===24&&g._a[Xn]===0&&g._a[An]===0&&g._a[Vi]===0&&(g._nextDay=!0,g._a[nn]=0),g._d=(g._useUTC?Zc:rV).apply(null,$),ae=g._useUTC?g._d.getUTCDay():g._d.getDay(),g._tzm!=null&&g._d.setUTCMinutes(g._d.getUTCMinutes()-g._tzm),g._nextDay&&(g._a[nn]=24),g._w&&typeof g._w.d<"u"&&g._w.d!==ae&&(d(g).weekdayMismatch=!0)}}function JV(g){var S,B,$,H,ae,Te,mt,Jt,br;S=g._w,S.GG!=null||S.W!=null||S.E!=null?(ae=1,Te=4,B=hl(S.GG,g._a[_n],Jc(Kr(),1,4).year),$=hl(S.W,1),H=hl(S.E,1),(H<1||H>7)&&(Jt=!0)):(ae=g._locale._week.dow,Te=g._locale._week.doy,br=Jc(Kr(),ae,Te),B=hl(S.gg,g._a[_n],br.year),$=hl(S.w,br.week),S.d!=null?(H=S.d,(H<0||H>6)&&(Jt=!0)):S.e!=null?(H=S.e+ae,(S.e<0||S.e>6)&&(Jt=!0)):H=ae),$<1||$>Yo(B,ae,Te)?d(g)._overflowWeeks=!0:Jt!=null?d(g)._overflowWeekday=!0:(mt=Kw(B,$,H,ae,Te),g._a[_n]=mt.year,g._dayOfYear=mt.dayOfYear)}e.ISO_8601=function(){},e.RFC_2822=function(){};function my(g){if(g._f===e.ISO_8601){a_(g);return}if(g._f===e.RFC_2822){o_(g);return}g._a=[],d(g).empty=!0;var S=""+g._i,B,$,H,ae,Te,mt=S.length,Jt=0,br,Ei;for(H=be(g._f,g._locale).match(O)||[],Ei=H.length,B=0;B0&&d(g).unusedInput.push(Te),S=S.slice(S.indexOf($)+$.length),Jt+=$.length),X[ae]?($?d(g).empty=!1:d(g).unusedTokens.push(ae),Ca(ae,$,g)):g._strict&&!$&&d(g).unusedTokens.push(ae);d(g).charsLeftOver=mt-Jt,S.length>0&&d(g).unusedInput.push(S),g._a[nn]<=12&&d(g).bigHour===!0&&g._a[nn]>0&&(d(g).bigHour=void 0),d(g).parsedDateParts=g._a.slice(0),d(g).meridiem=g._meridiem,g._a[nn]=XV(g._locale,g._a[nn],g._meridiem),br=d(g).era,br!==null&&(g._a[_n]=g._locale.erasConvertYear(br,g._a[_n])),py(g),cy(g)}function XV(g,S,B){var $;return B==null?S:g.meridiemHour!=null?g.meridiemHour(S,B):(g.isPM!=null&&($=g.isPM(B),$&&S<12&&(S+=12),!$&&S===12&&(S=0)),S)}function QV(g){var S,B,$,H,ae,Te,mt=!1,Jt=g._f.length;if(Jt===0){d(g).invalidFormat=!0,g._d=new Date(NaN);return}for(H=0;Hthis?this:g:y()});function l_(g,S){var B,$;if(S.length===1&&n(S[0])&&(S=S[0]),!S.length)return Kr();for(B=S[0],$=1;$this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function bU(){if(!s(this._isDSTShifted))return this._isDSTShifted;var g={},S;return A(g,this),g=s_(g),g._a?(S=g._isUTC?m(g._a):Kr(g._a),this._isDSTShifted=this.isValid()&&cU(g._a,S.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function xU(){return this.isValid()?!this._isUTC:!1}function wU(){return this.isValid()?this._isUTC:!1}function f_(){return this.isValid()?this._isUTC&&this._offset===0:!1}var _U=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,AU=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function eo(g,S){var B=g,$=null,H,ae,Te;return Dp(g)?B={ms:g._milliseconds,d:g._days,M:g._months}:l(g)||!isNaN(+g)?(B={},S?B[S]=+g:B.milliseconds=+g):($=_U.exec(g))?(H=$[1]==="-"?-1:1,B={y:0,d:lr($[Li])*H,h:lr($[nn])*H,m:lr($[Xn])*H,s:lr($[An])*H,ms:lr(dy($[Vi]*1e3))*H}):($=AU.exec(g))?(H=$[1]==="-"?-1:1,B={y:hu($[2],H),M:hu($[3],H),w:hu($[4],H),d:hu($[5],H),h:hu($[6],H),m:hu($[7],H),s:hu($[8],H)}):B==null?B={}:typeof B=="object"&&("from"in B||"to"in B)&&(Te=DU(Kr(B.from),Kr(B.to)),B={},B.ms=Te.milliseconds,B.M=Te.months),ae=new Ap(B),Dp(g)&&a(g,"_locale")&&(ae._locale=g._locale),Dp(g)&&a(g,"_isValid")&&(ae._isValid=g._isValid),ae}eo.fn=Ap.prototype,eo.invalid=lU;function hu(g,S){var B=g&&parseFloat(g.replace(",","."));return(isNaN(B)?0:B)*S}function p_(g,S){var B={};return B.months=S.month()-g.month()+(S.year()-g.year())*12,g.clone().add(B.months,"M").isAfter(S)&&--B.months,B.milliseconds=+S-+g.clone().add(B.months,"M"),B}function DU(g,S){var B;return g.isValid()&&S.isValid()?(S=gy(S,g),g.isBefore(S)?B=p_(g,S):(B=p_(S,g),B.milliseconds=-B.milliseconds,B.months=-B.months),B):{milliseconds:0,months:0}}function m_(g,S){return function(B,$){var H,ae;return $!==null&&!isNaN(+$)&&(C(S,"moment()."+S+"(period, number) is deprecated. Please use moment()."+S+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),ae=B,B=$,$=ae),H=eo(B,$),d_(this,H,g),this}}function d_(g,S,B,$){var H=S._milliseconds,ae=dy(S._days),Te=dy(S._months);g.isValid()&&($=$??!0,Te&&Jw(g,Ka(g,"Month")+Te*B),ae&&ml(g,"Date",Ka(g,"Date")+ae*B),H&&g._d.setTime(g._d.valueOf()+H*B),$&&e.updateOffset(g,ae||Te))}var SU=m_(1,"add"),EU=m_(-1,"subtract");function h_(g){return typeof g=="string"||g instanceof String}function TU(g){return x(g)||u(g)||h_(g)||l(g)||CU(g)||MU(g)||g===null||g===void 0}function MU(g){var S=i(g)&&!o(g),B=!1,$=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],H,ae,Te=$.length;for(H=0;HB.valueOf():B.valueOf()9999?oe(B,S?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):N(Date.prototype.toISOString)?S?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",oe(B,"Z")):oe(B,S?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function zU(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var g="moment",S="",B,$,H,ae;return this.isLocal()||(g=this.utcOffset()===0?"moment.utc":"moment.parseZone",S="Z"),B="["+g+'("]',$=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",H="-MM-DD[T]HH:mm:ss.SSS",ae=S+'[")]',this.format(B+$+H+ae)}function HU(g){g||(g=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var S=oe(this,g);return this.localeData().postformat(S)}function GU(g,S){return this.isValid()&&(x(g)&&g.isValid()||Kr(g).isValid())?eo({to:this,from:g}).locale(this.locale()).humanize(!S):this.localeData().invalidDate()}function WU(g){return this.from(Kr(),g)}function YU(g,S){return this.isValid()&&(x(g)&&g.isValid()||Kr(g).isValid())?eo({from:this,to:g}).locale(this.locale()).humanize(!S):this.localeData().invalidDate()}function jU(g){return this.to(Kr(),g)}function g_(g){var S;return g===void 0?this._locale._abbr:(S=jo(g),S!=null&&(this._locale=S),this)}var v_=T("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(g){return g===void 0?this.localeData():this.locale(g)});function y_(){return this._locale}var Ep=1e3,gl=60*Ep,Tp=60*gl,b_=(365*400+97)*24*Tp;function vl(g,S){return(g%S+S)%S}function x_(g,S,B){return g<100&&g>=0?new Date(g+400,S,B)-b_:new Date(g,S,B).valueOf()}function w_(g,S,B){return g<100&&g>=0?Date.UTC(g+400,S,B)-b_:Date.UTC(g,S,B)}function ZU(g){var S,B;if(g=De(g),g===void 0||g==="millisecond"||!this.isValid())return this;switch(B=this._isUTC?w_:x_,g){case"year":S=B(this.year(),0,1);break;case"quarter":S=B(this.year(),this.month()-this.month()%3,1);break;case"month":S=B(this.year(),this.month(),1);break;case"week":S=B(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":S=B(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":S=B(this.year(),this.month(),this.date());break;case"hour":S=this._d.valueOf(),S-=vl(S+(this._isUTC?0:this.utcOffset()*gl),Tp);break;case"minute":S=this._d.valueOf(),S-=vl(S,gl);break;case"second":S=this._d.valueOf(),S-=vl(S,Ep);break}return this._d.setTime(S),e.updateOffset(this,!0),this}function JU(g){var S,B;if(g=De(g),g===void 0||g==="millisecond"||!this.isValid())return this;switch(B=this._isUTC?w_:x_,g){case"year":S=B(this.year()+1,0,1)-1;break;case"quarter":S=B(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":S=B(this.year(),this.month()+1,1)-1;break;case"week":S=B(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":S=B(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":S=B(this.year(),this.month(),this.date()+1)-1;break;case"hour":S=this._d.valueOf(),S+=Tp-vl(S+(this._isUTC?0:this.utcOffset()*gl),Tp)-1;break;case"minute":S=this._d.valueOf(),S+=gl-vl(S,gl)-1;break;case"second":S=this._d.valueOf(),S+=Ep-vl(S,Ep)-1;break}return this._d.setTime(S),e.updateOffset(this,!0),this}function XU(){return this._d.valueOf()-(this._offset||0)*6e4}function QU(){return Math.floor(this.valueOf()/1e3)}function KU(){return new Date(this.valueOf())}function e5(){var g=this;return[g.year(),g.month(),g.date(),g.hour(),g.minute(),g.second(),g.millisecond()]}function t5(){var g=this;return{years:g.year(),months:g.month(),date:g.date(),hours:g.hours(),minutes:g.minutes(),seconds:g.seconds(),milliseconds:g.milliseconds()}}function r5(){return this.isValid()?this.toISOString():null}function n5(){return b(this)}function i5(){return f({},d(this))}function a5(){return d(this).overflow}function o5(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}U("N",0,0,"eraAbbr"),U("NN",0,0,"eraAbbr"),U("NNN",0,0,"eraAbbr"),U("NNNN",0,0,"eraName"),U("NNNNN",0,0,"eraNarrow"),U("y",["y",1],"yo","eraYear"),U("y",["yy",2],0,"eraYear"),U("y",["yyy",3],0,"eraYear"),U("y",["yyyy",4],0,"eraYear"),Ve("N",yy),Ve("NN",yy),Ve("NNN",yy),Ve("NNNN",v5),Ve("NNNNN",y5),Nr(["N","NN","NNN","NNNN","NNNNN"],function(g,S,B,$){var H=B._locale.erasParse(g,$,B._strict);H?d(B).era=H:d(B).invalidEra=g}),Ve("y",_e),Ve("yy",_e),Ve("yyy",_e),Ve("yyyy",_e),Ve("yo",b5),Nr(["y","yy","yyy","yyyy"],_n),Nr(["yo"],function(g,S,B,$){var H;B._locale._eraYearOrdinalRegex&&(H=g.match(B._locale._eraYearOrdinalRegex)),B._locale.eraYearOrdinalParse?S[_n]=B._locale.eraYearOrdinalParse(g,H):S[_n]=parseInt(g,10)});function s5(g,S){var B,$,H,ae=this._eras||jo("en")._eras;for(B=0,$=ae.length;B<$;++B){switch(typeof ae[B].since){case"string":H=e(ae[B].since).startOf("day"),ae[B].since=H.valueOf();break}switch(typeof ae[B].until){case"undefined":ae[B].until=1/0;break;case"string":H=e(ae[B].until).startOf("day").valueOf(),ae[B].until=H.valueOf();break}}return ae}function u5(g,S,B){var $,H,ae=this.eras(),Te,mt,Jt;for(g=g.toUpperCase(),$=0,H=ae.length;$=0)return ae[$]}function l5(g,S){var B=g.since<=g.until?1:-1;return S===void 0?e(g.since).year():e(g.since).year()+(S-g.offset)*B}function c5(){var g,S,B,$=this.localeData().eras();for(g=0,S=$.length;gae&&(S=ae),E5.call(this,g,S,B,$,H))}function E5(g,S,B,$,H){var ae=Kw(g,S,B,$,H),Te=Zc(ae.year,0,ae.dayOfYear);return this.year(Te.getUTCFullYear()),this.month(Te.getUTCMonth()),this.date(Te.getUTCDate()),this}U("Q",0,"Qo","quarter"),Ve("Q",wt),Nr("Q",function(g,S){S[$n]=(lr(g)-1)*3});function T5(g){return g==null?Math.ceil((this.month()+1)/3):this.month((g-1)*3+this.month()%3)}U("D",["DD",2],"Do","date"),Ve("D",Pe,Qe),Ve("DD",Pe,qe),Ve("Do",function(g,S){return g?S._dayOfMonthOrdinalParse||S._ordinalParse:S._dayOfMonthOrdinalParseLenient}),Nr(["D","DD"],Li),Nr("Do",function(g,S){S[Li]=lr(g.match(Pe)[0])});var A_=wo("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),Ve("DDD",pe),Ve("DDDD",rr),Nr(["DDD","DDDD"],function(g,S,B){B._dayOfYear=lr(g)});function M5(g){var S=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return g==null?S:this.add(g-S,"d")}U("m",["mm",2],0,"minute"),Ve("m",Pe,gt),Ve("mm",Pe,qe),Nr(["m","mm"],Xn);var C5=wo("Minutes",!1);U("s",["ss",2],0,"second"),Ve("s",Pe,gt),Ve("ss",Pe,qe),Nr(["s","ss"],An);var N5=wo("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return this.millisecond()*10}),U(0,["SSSSS",5],0,function(){return this.millisecond()*100}),U(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),U(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),U(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),U(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),Ve("S",pe,wt),Ve("SS",pe,qe),Ve("SSS",pe,rr);var ks,D_;for(ks="SSSS";ks.length<=9;ks+="S")Ve(ks,_e);function F5(g,S){S[Vi]=lr(("0."+g)*1e3)}for(ks="S";ks.length<=9;ks+="S")Nr(ks,F5);D_=wo("Milliseconds",!1),U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");function I5(){return this._isUTC?"UTC":""}function B5(){return this._isUTC?"Coordinated Universal Time":""}var ze=w.prototype;ze.add=SU,ze.calendar=IU,ze.clone=BU,ze.diff=VU,ze.endOf=JU,ze.format=HU,ze.from=GU,ze.fromNow=WU,ze.to=YU,ze.toNow=jU,ze.get=dl,ze.invalidAt=a5,ze.isAfter=kU,ze.isBefore=PU,ze.isBetween=$U,ze.isSame=OU,ze.isSameOrAfter=RU,ze.isSameOrBefore=LU,ze.isValid=n5,ze.lang=v_,ze.locale=g_,ze.localeData=y_,ze.max=nU,ze.min=rU,ze.parsingFlags=i5,ze.set=Yc,ze.startOf=ZU,ze.subtract=EU,ze.toArray=e5,ze.toObject=t5,ze.toDate=KU,ze.toISOString=qU,ze.inspect=zU,typeof Symbol<"u"&&Symbol.for!=null&&(ze[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),ze.toJSON=r5,ze.toString=UU,ze.unix=QU,ze.valueOf=XU,ze.creationData=o5,ze.eraName=c5,ze.eraNarrow=f5,ze.eraAbbr=p5,ze.eraYear=m5,ze.year=Go,ze.isLeapYear=pl,ze.weekYear=x5,ze.isoWeekYear=w5,ze.quarter=ze.quarters=T5,ze.month=Xw,ze.daysInMonth=K4,ze.week=ze.weeks=sV,ze.isoWeek=ze.isoWeeks=uV,ze.weeksInYear=D5,ze.weeksInWeekYear=S5,ze.isoWeeksInYear=_5,ze.isoWeeksInISOWeekYear=A5,ze.date=A_,ze.day=ze.days=wV,ze.weekday=_V,ze.isoWeekday=AV,ze.dayOfYear=M5,ze.hour=ze.hours=NV,ze.minute=ze.minutes=C5,ze.second=ze.seconds=N5,ze.millisecond=ze.milliseconds=D_,ze.utcOffset=pU,ze.utc=dU,ze.local=hU,ze.parseZone=gU,ze.hasAlignedHourOffset=vU,ze.isDST=yU,ze.isLocal=xU,ze.isUtcOffset=wU,ze.isUtc=f_,ze.isUTC=f_,ze.zoneAbbr=I5,ze.zoneName=B5,ze.dates=T("dates accessor is deprecated. Use date instead.",A_),ze.months=T("months accessor is deprecated. Use month instead",Xw),ze.years=T("years accessor is deprecated. Use year instead",Go),ze.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",mU),ze.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",bU);function k5(g){return Kr(g*1e3)}function P5(){return Kr.apply(null,arguments).parseZone()}function S_(g){return g}var Ir=L.prototype;Ir.calendar=k,Ir.longDateFormat=Z,Ir.invalidDate=me,Ir.ordinal=we,Ir.preparse=S_,Ir.postformat=S_,Ir.relativeTime=J,Ir.pastFuture=ge,Ir.set=I,Ir.eras=s5,Ir.erasParse=u5,Ir.erasConvertYear=l5,Ir.erasAbbrRegex=h5,Ir.erasNameRegex=d5,Ir.erasNarrowRegex=g5,Ir.months=Fr,Ir.monthsShort=Mn,Ir.monthsParse=Wo,Ir.monthsRegex=tV,Ir.monthsShortRegex=eV,Ir.week=nV,Ir.firstDayOfYear=oV,Ir.firstDayOfWeek=aV,Ir.weekdays=gV,Ir.weekdaysMin=yV,Ir.weekdaysShort=vV,Ir.weekdaysParse=xV,Ir.weekdaysRegex=DV,Ir.weekdaysShortRegex=SV,Ir.weekdaysMinRegex=EV,Ir.isPM=MV,Ir.meridiem=FV;function Cp(g,S,B,$){var H=jo(),ae=m().set($,S);return H[B](ae,g)}function E_(g,S,B){if(l(g)&&(S=g,g=void 0),g=g||"",S!=null)return Cp(g,S,B,"month");var $,H=[];for($=0;$<12;$++)H[$]=Cp(g,$,B,"month");return H}function xy(g,S,B,$){typeof g=="boolean"?(l(S)&&(B=S,S=void 0),S=S||""):(S=g,B=S,g=!1,l(S)&&(B=S,S=void 0),S=S||"");var H=jo(),ae=g?H._week.dow:0,Te,mt=[];if(B!=null)return Cp(S,(B+ae)%7,$,"day");for(Te=0;Te<7;Te++)mt[Te]=Cp(S,(Te+ae)%7,$,"day");return mt}function $5(g,S){return E_(g,S,"months")}function O5(g,S){return E_(g,S,"monthsShort")}function R5(g,S,B){return xy(g,S,B,"weekdays")}function L5(g,S,B){return xy(g,S,B,"weekdaysShort")}function V5(g,S,B){return xy(g,S,B,"weekdaysMin")}Bs("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(g){var S=g%10,B=lr(g%100/10)===1?"th":S===1?"st":S===2?"nd":S===3?"rd":"th";return g+B}}),e.lang=T("moment.lang is deprecated. Use moment.locale instead.",Bs),e.langData=T("moment.langData is deprecated. Use moment.localeData instead.",jo);var Zo=Math.abs;function U5(){var g=this._data;return this._milliseconds=Zo(this._milliseconds),this._days=Zo(this._days),this._months=Zo(this._months),g.milliseconds=Zo(g.milliseconds),g.seconds=Zo(g.seconds),g.minutes=Zo(g.minutes),g.hours=Zo(g.hours),g.months=Zo(g.months),g.years=Zo(g.years),this}function T_(g,S,B,$){var H=eo(S,B);return g._milliseconds+=$*H._milliseconds,g._days+=$*H._days,g._months+=$*H._months,g._bubble()}function q5(g,S){return T_(this,g,S,1)}function z5(g,S){return T_(this,g,S,-1)}function M_(g){return g<0?Math.floor(g):Math.ceil(g)}function H5(){var g=this._milliseconds,S=this._days,B=this._months,$=this._data,H,ae,Te,mt,Jt;return g>=0&&S>=0&&B>=0||g<=0&&S<=0&&B<=0||(g+=M_(wy(B)+S)*864e5,S=0,B=0),$.milliseconds=g%1e3,H=Pn(g/1e3),$.seconds=H%60,ae=Pn(H/60),$.minutes=ae%60,Te=Pn(ae/60),$.hours=Te%24,S+=Pn(Te/24),Jt=Pn(C_(S)),B+=Jt,S-=M_(wy(Jt)),mt=Pn(B/12),B%=12,$.days=S,$.months=B,$.years=mt,this}function C_(g){return g*4800/146097}function wy(g){return g*146097/4800}function G5(g){if(!this.isValid())return NaN;var S,B,$=this._milliseconds;if(g=De(g),g==="month"||g==="quarter"||g==="year")switch(S=this._days+$/864e5,B=this._months+C_(S),g){case"month":return B;case"quarter":return B/3;case"year":return B/12}else switch(S=this._days+Math.round(wy(this._months)),g){case"week":return S/7+$/6048e5;case"day":return S+$/864e5;case"hour":return S*24+$/36e5;case"minute":return S*1440+$/6e4;case"second":return S*86400+$/1e3;case"millisecond":return Math.floor(S*864e5)+$;default:throw new Error("Unknown unit "+g)}}function Jo(g){return function(){return this.as(g)}}var N_=Jo("ms"),W5=Jo("s"),Y5=Jo("m"),j5=Jo("h"),Z5=Jo("d"),J5=Jo("w"),X5=Jo("M"),Q5=Jo("Q"),K5=Jo("y"),e8=N_;function t8(){return eo(this)}function r8(g){return g=De(g),this.isValid()?this[g+"s"]():NaN}function gu(g){return function(){return this.isValid()?this._data[g]:NaN}}var n8=gu("milliseconds"),i8=gu("seconds"),a8=gu("minutes"),o8=gu("hours"),s8=gu("days"),u8=gu("months"),l8=gu("years");function c8(){return Pn(this.days()/7)}var Xo=Math.round,yl={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function f8(g,S,B,$,H){return H.relativeTime(S||1,!!B,g,$)}function p8(g,S,B,$){var H=eo(g).abs(),ae=Xo(H.as("s")),Te=Xo(H.as("m")),mt=Xo(H.as("h")),Jt=Xo(H.as("d")),br=Xo(H.as("M")),Ei=Xo(H.as("w")),Qo=Xo(H.as("y")),Ps=ae<=B.ss&&["s",ae]||ae0,Ps[4]=$,f8.apply(null,Ps)}function m8(g){return g===void 0?Xo:typeof g=="function"?(Xo=g,!0):!1}function d8(g,S){return yl[g]===void 0?!1:S===void 0?yl[g]:(yl[g]=S,g==="s"&&(yl.ss=S-1),!0)}function h8(g,S){if(!this.isValid())return this.localeData().invalidDate();var B=!1,$=yl,H,ae;return typeof g=="object"&&(S=g,g=!1),typeof g=="boolean"&&(B=g),typeof S=="object"&&($=Object.assign({},yl,S),S.s!=null&&S.ss==null&&($.ss=S.s-1)),H=this.localeData(),ae=p8(this,!B,$,H),B&&(ae=H.pastFuture(+this,ae)),H.postformat(ae)}var _y=Math.abs;function bl(g){return(g>0)-(g<0)||+g}function Np(){if(!this.isValid())return this.localeData().invalidDate();var g=_y(this._milliseconds)/1e3,S=_y(this._days),B=_y(this._months),$,H,ae,Te,mt=this.asSeconds(),Jt,br,Ei,Qo;return mt?($=Pn(g/60),H=Pn($/60),g%=60,$%=60,ae=Pn(B/12),B%=12,Te=g?g.toFixed(3).replace(/\.?0+$/,""):"",Jt=mt<0?"-":"",br=bl(this._months)!==bl(mt)?"-":"",Ei=bl(this._days)!==bl(mt)?"-":"",Qo=bl(this._milliseconds)!==bl(mt)?"-":"",Jt+"P"+(ae?br+ae+"Y":"")+(B?br+B+"M":"")+(S?Ei+S+"D":"")+(H||$||g?"T":"")+(H?Qo+H+"H":"")+($?Qo+$+"M":"")+(g?Qo+Te+"S":"")):"P0D"}var wr=Ap.prototype;wr.isValid=uU,wr.abs=U5,wr.add=q5,wr.subtract=z5,wr.as=G5,wr.asMilliseconds=N_,wr.asSeconds=W5,wr.asMinutes=Y5,wr.asHours=j5,wr.asDays=Z5,wr.asWeeks=J5,wr.asMonths=X5,wr.asQuarters=Q5,wr.asYears=K5,wr.valueOf=e8,wr._bubble=H5,wr.clone=t8,wr.get=r8,wr.milliseconds=n8,wr.seconds=i8,wr.minutes=a8,wr.hours=o8,wr.days=s8,wr.weeks=c8,wr.months=u8,wr.years=l8,wr.humanize=h8,wr.toISOString=Np,wr.toString=Np,wr.toJSON=Np,wr.locale=g_,wr.localeData=y_,wr.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Np),wr.lang=v_,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Ve("x",Ge),Ve("X",ie),Nr("X",function(g,S,B){B._d=new Date(parseFloat(g)*1e3)}),Nr("x",function(g,S,B){B._d=new Date(lr(g))});return e.version="2.30.1",r(Kr),e.fn=ze,e.min=iU,e.max=aU,e.now=oU,e.utc=m,e.unix=k5,e.months=$5,e.isDate=u,e.locale=Bs,e.invalid=y,e.duration=eo,e.isMoment=x,e.weekdays=R5,e.parseZone=P5,e.localeData=jo,e.isDuration=Dp,e.monthsShort=O5,e.weekdaysMin=V5,e.defineLocale=ly,e.updateLocale=PV,e.locales=$V,e.weekdaysShort=L5,e.normalizeUnits=De,e.relativeTimeRounding=m8,e.relativeTimeThreshold=d8,e.calendarFormat=FU,e.prototype=ze,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},e})});var Ih=On((_x,Ax)=>{(function(t,e){typeof _x=="object"&&typeof Ax<"u"?Ax.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self,t["'typed'"]=e())})(_x,function(){"use strict";function t(){return!0}function e(){return!1}function r(){}let n="Argument is not a typed-function.";function i(){function o(j){return typeof j=="object"&&j!==null&&j.constructor===Object}let s=[{name:"number",test:function(j){return typeof j=="number"}},{name:"string",test:function(j){return typeof j=="string"}},{name:"boolean",test:function(j){return typeof j=="boolean"}},{name:"Function",test:function(j){return typeof j=="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(j){return j instanceof Date}},{name:"RegExp",test:function(j){return j instanceof RegExp}},{name:"Object",test:o},{name:"null",test:function(j){return j===null}},{name:"undefined",test:function(j){return j===void 0}}],l={name:"any",test:t,isAny:!0},u,c,f=0,m={createCount:0};function p(j){let de=u.get(j);if(de)return de;let pe='Unknown type "'+j+'"',Ne=j.toLowerCase(),Be;for(Be of c)if(Be.toLowerCase()===Ne){pe+='. Did you mean "'+Be+'" ?';break}throw new TypeError(pe)}function d(j){let de=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"any",pe=de?p(de).index:c.length,Ne=[];for(let _e=0;_e{let Ne=u.get(pe);return!Ne.isAny&&Ne.test(j)});return de.length?de:["any"]}function D(j){return j&&typeof j=="function"&&"_typedFunctionData"in j}function v(j,de,pe){if(!D(j))throw new TypeError(n);let Ne=pe&&pe.exact,Be=Array.isArray(de)?de.join(","):de,_e=C(Be),Ge=x(_e);if(!Ne||Ge in j.signatures){let Me=j._typedFunctionData.signatureMap.get(Ge);if(Me)return Me}let F=_e.length,Y;if(Ne){Y=[];let Me;for(Me in j.signatures)Y.push(j._typedFunctionData.signatureMap.get(Me))}else Y=j._typedFunctionData.signatures;for(let Me=0;Me!si.has(Si.name)))continue}gt.push(hr)}}if(Y=gt,Y.length===0)break}let ie;for(ie of Y)if(ie.params.length<=F)return ie;throw new TypeError("Signature not found (signature: "+(j.name||"unnamed")+"("+x(_e,", ")+"))")}function A(j,de,pe){return v(j,de,pe).implementation}function w(j,de){let pe=p(de);if(pe.test(j))return j;let Ne=pe.conversionsTo;if(Ne.length===0)throw new Error("There are no conversions to "+de+" defined.");for(let Be=0;Be1&&arguments[1]!==void 0?arguments[1]:",";return j.map(pe=>pe.name).join(de)}function E(j){let de=j.indexOf("...")===0,Ne=(de?j.length>3?j.slice(3):"any":j).split("|").map(F=>p(F.trim())),Be=!1,_e=de?"...":"";return{types:Ne.map(function(F){return Be=F.isAny||Be,_e+=F.name+"|",{name:F.name,typeIndex:F.index,test:F.test,isAny:F.isAny,conversion:null,conversionIndex:-1}}),name:_e.slice(0,-1),hasAny:Be,hasConversion:!1,restParam:de}}function T(j){let de=j.types.map(Ge=>Ge.name),pe=U(de),Ne=j.hasAny,Be=j.name,_e=pe.map(function(Ge){let F=p(Ge.from);return Ne=F.isAny||Ne,Be+="|"+Ge.from,{name:Ge.from,typeIndex:F.index,test:F.test,isAny:F.isAny,conversion:Ge,conversionIndex:Ge.index}});return{types:j.types.concat(_e),name:Be,hasAny:Ne,hasConversion:_e.length>0,restParam:j.restParam}}function _(j){return j.typeSet||(j.typeSet=new Set,j.types.forEach(de=>j.typeSet.add(de.name))),j.typeSet}function C(j){let de=[];if(typeof j!="string")throw new TypeError("Signatures must be strings");let pe=j.trim();if(pe==="")return de;let Ne=pe.split(",");for(let Be=0;Be=Be+1}}else return j.length===0?function(_e){return _e.length===0}:j.length===1?(pe=I(j[0]),function(_e){return pe(_e[0])&&_e.length===1}):j.length===2?(pe=I(j[0]),Ne=I(j[1]),function(_e){return pe(_e[0])&&Ne(_e[1])&&_e.length===2}):(de=j.map(I),function(_e){for(let Ge=0;Ge{let Be=V(Ne.params,de),_e;for(_e of Be)pe.add(_e)}),pe.has("any")?["any"]:Array.from(pe)}function W(j,de,pe){let Ne,Be,_e=j||"unnamed",Ge=pe,F;for(F=0;F{let hr=L(gt.params,F),Ve=I(hr);(F0){let gt=y(de[F]);return Ne=new TypeError("Unexpected type of argument in function "+_e+" (expected: "+Be.join(" or ")+", actual: "+gt.join(" | ")+", index: "+F+")"),Ne.data={category:"wrongType",fn:_e,index:F,actual:gt,expected:Be},Ne}}else Ge=Qe}let Y=Ge.map(function(Qe){return N(Qe.params)?1/0:Qe.params.length});if(de.lengthie)return Ne=new TypeError("Too many arguments in function "+_e+" (expected: "+ie+", actual: "+de.length+")"),Ne.data={category:"tooManyArgs",fn:_e,index:de.length,expectedLength:ie},Ne;let Me=[];for(let Qe=0;Qe0)return 1;let Ne=Q(j)-Q(de);return Ne<0?-1:Ne>0?1:0}function X(j,de){let pe=j.params,Ne=de.params,Be=G(pe),_e=G(Ne),Ge=N(pe),F=N(Ne);if(Ge&&Be.hasAny){if(!F||!_e.hasAny)return 1}else if(F&&_e.hasAny)return-1;let Y=0,ie=0,Me;for(Me of pe)Me.hasAny&&++Y,Me.hasConversion&&++ie;let Qe=0,gt=0;for(Me of Ne)Me.hasAny&&++Qe,Me.hasConversion&&++gt;if(Y!==Qe)return Y-Qe;if(Ge&&Be.hasConversion){if(!F||!_e.hasConversion)return 1}else if(F&&_e.hasConversion)return-1;if(ie!==gt)return ie-gt;if(Ge){if(!F)return 1}else if(F)return-1;let hr=(pe.length-Ne.length)*(Ge?-1:1);if(hr!==0)return hr;let Ve=[],si=0;for(let Xr=0;Xr1&&de.sort((Be,_e)=>Be.index-_e.index);let pe=de[0].conversionsTo;if(j.length===1)return pe;pe=pe.concat([]);let Ne=new Set(j);for(let Be=1;BeBe.hasConversion)){let Be=N(j),_e=j.map(xe);pe=function(){let F=[],Y=Be?arguments.length-1:arguments.length;for(let ie=0;ieY.name).join("|"),hasAny:F.some(Y=>Y.isAny),hasConversion:!1,restParam:!0}),Ge.push(_e)}else Ge=_e.types.map(function(F){return{types:[F],name:F.name,hasAny:F.isAny,hasConversion:F.conversion,restParam:!1}});return ye(Ge,function(F){return de(pe,Ne+1,Be.concat([F]))})}else return[Be]}return de(j,0,[])}function be(j,de){let pe=Math.max(j.length,de.length);for(let F=0;F=Ne:Ge?Ne>=Be:Ne===Be}function ee(j){return j.map(de=>wt(de)?Oe(de.referToSelf.callback):Je(de)?Ie(de.referTo.references,de.referTo.callback):de)}function Z(j,de,pe){let Ne=[],Be;for(Be of j){let _e=pe[Be];if(typeof _e!="number")throw new TypeError('No definition for referenced signature "'+Be+'"');if(_e=de[_e],typeof _e!="function")return!1;Ne.push(_e)}return Ne}function re(j,de,pe){let Ne=ee(j),Be=new Array(Ne.length).fill(!1),_e=!0;for(;_e;){_e=!1;let Ge=!0;for(let F=0;F{let Ne=j[pe];if(de.test(Ne.toString()))throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function ce(j,de){if(m.createCount++,Object.keys(de).length===0)throw new SyntaxError("No signatures provided");m.warnAgainstDeprecatedThis&&me(de);let pe=[],Ne=[],Be={},_e=[],Ge;for(Ge in de){if(!Object.prototype.hasOwnProperty.call(de,Ge))continue;let Ue=C(Ge);if(!Ue)continue;pe.forEach(function(Cn){if(be(Cn,Ue))throw new TypeError('Conflicting signatures "'+x(Cn)+'" and "'+x(Ue)+'".')}),pe.push(Ue);let Rt=Ne.length;Ne.push(de[Ge]);let Fr=Ue.map(T),Mn;for(Mn of oe(Fr)){let Cn=x(Mn);_e.push({params:Mn,name:Cn,fn:Rt}),Mn.every(Wo=>!Wo.hasConversion)&&(Be[Cn]=Rt)}}_e.sort(X);let F=re(Ne,Be,je),Y;for(Y in Be)Object.prototype.hasOwnProperty.call(Be,Y)&&(Be[Y]=F[Be[Y]]);let ie=[],Me=new Map;for(Y of _e)Me.has(Y.name)||(Y.fn=F[Y.fn],ie.push(Y),Me.set(Y.name,Y));let Qe=ie[0]&&ie[0].params.length<=2&&!N(ie[0].params),gt=ie[1]&&ie[1].params.length<=2&&!N(ie[1].params),hr=ie[2]&&ie[2].params.length<=2&&!N(ie[2].params),Ve=ie[3]&&ie[3].params.length<=2&&!N(ie[3].params),si=ie[4]&&ie[4].params.length<=2&&!N(ie[4].params),Si=ie[5]&&ie[5].params.length<=2&&!N(ie[5].params),Xr=Qe&>&&hr&&Ve&&si&&Si;for(let Ue=0;UeUe.test),te=ie.map(Ue=>Ue.implementation),Ce=function(){for(let Rt=jc;Rtx(C(pe))),de=G(arguments);if(typeof de!="function")throw new TypeError("Callback function expected as last argument");return Ie(j,de)}function Ie(j,de){return{referTo:{references:j,callback:de}}}function Oe(j){if(typeof j!="function")throw new TypeError("Callback function expected as first argument");return{referToSelf:{callback:j}}}function Je(j){return j&&typeof j.referTo=="object"&&Array.isArray(j.referTo.references)&&typeof j.referTo.callback=="function"}function wt(j){return j&&typeof j.referToSelf=="object"&&typeof j.referToSelf.callback=="function"}function qe(j,de){if(!j)return de;if(de&&de!==j){let pe=new Error("Function names do not match (expected: "+j+", actual: "+de+")");throw pe.data={actual:de,expected:j},pe}return j}function rr(j){let de;for(let pe in j)Object.prototype.hasOwnProperty.call(j,pe)&&(D(j[pe])||typeof j[pe].signature=="string")&&(de=qe(de,j[pe].name));return de}function Wt(j,de){let pe;for(pe in de)if(Object.prototype.hasOwnProperty.call(de,pe)){if(pe in j&&de[pe]!==j[pe]){let Ne=new Error('Signature "'+pe+'" is defined twice');throw Ne.data={signature:pe,sourceFunction:de[pe],destFunction:j[pe]},Ne}j[pe]=de[pe]}}let pr=m;m=function(j){let de=typeof j=="string",pe=de?1:0,Ne=de?j:"",Be={};for(let _e=pe;_e1&&arguments[1]!==void 0?arguments[1]:{override:!1};Pe(j);let pe=p(j.to),Ne=pe.conversionsTo.find(Be=>Be.from===j.from);if(Ne)if(de&&de.override)m.removeConversion({from:Ne.from,to:j.to,convert:Ne.convert});else throw new Error('There is already a conversion from "'+j.from+'" to "'+pe.name+'"');pe.conversionsTo.push({from:j.from,convert:j.convert,index:f++})},m.addConversions=function(j,de){j.forEach(pe=>m.addConversion(pe,de))},m.removeConversion=function(j){Pe(j);let de=p(j.to),pe=ge(de.conversionsTo,Be=>Be.from===j.from);if(!pe)throw new Error("Attempt to remove nonexistent conversion from "+j.from+" to "+j.to);if(pe.convert!==j.convert)throw new Error("Conversion to remove does not match existing conversion");let Ne=de.conversionsTo.indexOf(pe);de.conversionsTo.splice(Ne,1)},m.resolve=function(j,de){if(!D(j))throw new TypeError(n);let pe=j._typedFunctionData.signatures;for(let Ne=0;Ne{DN.exports=function t(e,r){"use strict";var n=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,i=/(^[ ]*|[ ]*$)/g,a=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,o=/^0x[0-9a-f]+$/i,s=/^0/,l=function(v){return t.insensitive&&(""+v).toLowerCase()||""+v},u=l(e).replace(i,"")||"",c=l(r).replace(i,"")||"",f=u.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),m=c.replace(n,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),p=parseInt(u.match(o),16)||f.length!==1&&u.match(a)&&Date.parse(u),d=parseInt(c.match(o),16)||p&&c.match(a)&&Date.parse(c)||null,h,b;if(d){if(pd)return 1}for(var y=0,D=Math.max(f.length,m.length);yb)return 1}return 0}});var qI=On((C4e,UI)=>{"use strict";var Y0=Object.assign||function(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},r=e.preserveFormatting,n=r===void 0?!1:r,i=e.escapeMapFn,a=i===void 0?kJ:i,o=String(t),s="",l=a(Y0({},IJ),n?Y0({},BJ):{}),u=Object.keys(l),c=function(){var m=!1;u.forEach(function(p,d){m||o.length>=p.length&&o.slice(0,p.length)===p&&(s+=l[u[d]],o=o.slice(p.length,o.length),m=!0)}),m||(s+=o.slice(0,1),o=o.slice(1,o.length))};o;)c();return s}});var mR=On((pR,tw)=>{(function(t,e,r){function n(s){var l=this,u=o();l.next=function(){var c=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=c-(l.c=c|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(s),l.s0<0&&(l.s0+=1),l.s1-=u(s),l.s1<0&&(l.s1+=1),l.s2-=u(s),l.s2<0&&(l.s2+=1),u=null}function i(s,l){return l.c=s.c,l.s0=s.s0,l.s1=s.s1,l.s2=s.s2,l}function a(s,l){var u=new n(s),c=l&&l.state,f=u.next;return f.int32=function(){return u.next()*4294967296|0},f.double=function(){return f()+(f()*2097152|0)*11102230246251565e-32},f.quick=f,c&&(typeof c=="object"&&i(c,u),f.state=function(){return i(u,{})}),f}function o(){var s=4022871197,l=function(u){u=String(u);for(var c=0;c>>0,f-=s,f*=s,s=f>>>0,f-=s,s+=f*4294967296}return(s>>>0)*23283064365386963e-26};return l}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.alea=a})(pR,typeof tw=="object"&&tw,typeof define=="function"&&define)});var hR=On((dR,rw)=>{(function(t,e,r){function n(o){var s=this,l="";s.x=0,s.y=0,s.z=0,s.w=0,s.next=function(){var c=s.x^s.x<<11;return s.x=s.y,s.y=s.z,s.z=s.w,s.w^=s.w>>>19^c^c>>>8},o===(o|0)?s.x=o:l+=o;for(var u=0;u>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xor128=a})(dR,typeof rw=="object"&&rw,typeof define=="function"&&define)});var vR=On((gR,nw)=>{(function(t,e,r){function n(o){var s=this,l="";s.next=function(){var c=s.x^s.x>>>2;return s.x=s.y,s.y=s.z,s.z=s.w,s.w=s.v,(s.d=s.d+362437|0)+(s.v=s.v^s.v<<4^(c^c<<1))|0},s.x=0,s.y=0,s.z=0,s.w=0,s.v=0,o===(o|0)?s.x=o:l+=o;for(var u=0;u>>4),s.next()}function i(o,s){return s.x=o.x,s.y=o.y,s.z=o.z,s.w=o.w,s.v=o.v,s.d=o.d,s}function a(o,s){var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xorwow=a})(gR,typeof nw=="object"&&nw,typeof define=="function"&&define)});var bR=On((yR,iw)=>{(function(t,e,r){function n(o){var s=this;s.next=function(){var u=s.x,c=s.i,f,m,p;return f=u[c],f^=f>>>7,m=f^f<<24,f=u[c+1&7],m^=f^f>>>10,f=u[c+3&7],m^=f^f>>>3,f=u[c+4&7],m^=f^f<<7,f=u[c+7&7],f=f^f<<13,m^=f^f<<9,u[c]=m,s.i=c+1&7,m};function l(u,c){var f,m,p=[];if(c===(c|0))m=p[0]=c;else for(c=""+c,f=0;f0;--f)u.next()}l(s,o)}function i(o,s){return s.x=o.x.slice(),s.i=o.i,s}function a(o,s){o==null&&(o=+new Date);var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.x&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xorshift7=a})(yR,typeof iw=="object"&&iw,typeof define=="function"&&define)});var wR=On((xR,aw)=>{(function(t,e,r){function n(o){var s=this;s.next=function(){var u=s.w,c=s.X,f=s.i,m,p;return s.w=u=u+1640531527|0,p=c[f+34&127],m=c[f=f+1&127],p^=p<<13,m^=m<<17,p^=p>>>15,m^=m>>>12,p=c[f]=p^m,s.i=f,p+(u^u>>>16)|0};function l(u,c){var f,m,p,d,h,b=[],y=128;for(c===(c|0)?(m=c,c=null):(c=c+"\0",m=0,y=Math.max(y,c.length)),p=0,d=-32;d>>15,m^=m<<4,m^=m>>>13,d>=0&&(h=h+1640531527|0,f=b[d&127]^=m+h,p=f==0?p+1:0);for(p>=128&&(b[(c&&c.length||0)&127]=-1),p=127,d=4*128;d>0;--d)m=b[p+34&127],f=b[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,b[p]=m^f;u.w=h,u.X=b,u.i=p}l(s,o)}function i(o,s){return s.i=o.i,s.w=o.w,s.X=o.X.slice(),s}function a(o,s){o==null&&(o=+new Date);var l=new n(o),u=s&&s.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.X&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.xor4096=a})(xR,typeof aw=="object"&&aw,typeof define=="function"&&define)});var AR=On((_R,ow)=>{(function(t,e,r){function n(o){var s=this,l="";s.next=function(){var c=s.b,f=s.c,m=s.d,p=s.a;return c=c<<25^c>>>7^f,f=f-m|0,m=m<<24^m>>>8^p,p=p-c|0,s.b=c=c<<20^c>>>12^f,s.c=f=f-m|0,s.d=m<<16^f>>>16^p,s.a=p-c|0},s.a=0,s.b=0,s.c=-1640531527,s.d=1367130551,o===Math.floor(o)?(s.a=o/4294967296|0,s.b=o|0):l+=o;for(var u=0;u>>0)/4294967296};return c.double=function(){do var f=l.next()>>>11,m=(l.next()>>>0)/4294967296,p=(f+m)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&i(u,l),c.state=function(){return i(l,{})}),c}e&&e.exports?e.exports=a:r&&r.amd?r(function(){return a}):this.tychei=a})(_R,typeof ow=="object"&&ow,typeof define=="function"&&define)});var SR=On((DR,mv)=>{(function(t,e,r){var n=256,i=6,a=52,o="random",s=r.pow(n,i),l=r.pow(2,a),u=l*2,c=n-1,f;function m(v,A,w){var x=[];A=A==!0?{entropy:!0}:A||{};var E=b(h(A.entropy?[v,D(e)]:v??y(),3),x),T=new p(x),_=function(){for(var C=T.g(i),N=s,I=0;C=u;)C/=2,N/=2,I>>>=1;return(C+I)/N};return _.int32=function(){return T.g(4)|0},_.quick=function(){return T.g(4)/4294967296},_.double=_,b(D(T.S),e),(A.pass||w||function(C,N,I,R){return R&&(R.S&&d(R,T),C.state=function(){return d(T,{})}),I?(r[o]=C,N):C})(_,E,"global"in A?A.global:this==r,A.state)}function p(v){var A,w=v.length,x=this,E=0,T=x.i=x.j=0,_=x.S=[];for(w||(v=[w++]);E{var XX=mR(),QX=hR(),KX=vR(),eQ=bR(),tQ=wR(),rQ=AR(),ol=SR();ol.alea=XX;ol.xor128=QX;ol.xorwow=KX;ol.xorshift7=eQ;ol.xor4096=tQ;ol.tychei=rQ;ER.exports=ol});var i4=On((wit,mw)=>{function pw(){}pw.prototype={on:function(t,e,r){var n=this.e||(this.e={});return(n[t]||(n[t]=[])).push({fn:e,ctx:r}),this},once:function(t,e,r){var n=this;function i(){n.off(t,i),e.apply(r,arguments)}return i._=e,this.on(t,i,r)},emit:function(t){var e=[].slice.call(arguments,1),r=((this.e||(this.e={}))[t]||[]).slice(),n=0,i=r.length;for(n;niy,default:()=>ay});module.exports=w8($te);var zo=require("obsidian");var J_=Tr(oa());var Ti=(r=>(r.INLINE="inline",r.BLOCK="block",r))(Ti||{}),_l=(l=>(l.INPUT="INPUT",l.VIEW="VIEW",l.JS_VIEW="JS_VIEW",l.TABLE="TABLE",l.BUTTON_GROUP="BUTTON_GROUP",l.BUTTON="BUTTON",l.EMBED="EMBED",l.EXCLUDED="EXCLUDED",l))(_l||{}),$s=class{constructor(e){this.linePosition=e}getPosition(){return this.linePosition}};function Up(t){return t==="INPUT"||t==="VIEW"||t==="BUTTON_GROUP"}var Rn=class extends Error{constructor(e){super(""),this.errorLevel=e.errorLevel,this.effect=e.effect,this.cause=e.cause,this.tip=e.tip,this.docs=e.docs,this.context=e.context,this.positionContext=e.positionContext,this.updateMessage()}updateMessage(){this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}"`:this.message=`[${this.getErrorType()}] "${this.effect}" caused by "${this.cause}"`}log(){console.log(this.message,this.stack,this.context)}},Lt=class extends Rn{getErrorType(){return"MB_INTERNAL"}},to=class extends Rn{getErrorType(){return"MB_PARSING"}},Ko=class extends Rn{getErrorType(){return"MB_VALIDATION"}},qp=class extends Rn{getErrorType(){return"MB_BIND_TARGET"}};var $r=class extends Rn{getErrorType(){return"MB_ARGUMENT"}},ro=class extends Rn{getErrorType(){return"MB_JS"}},vu=class extends Rn{getErrorType(){return"MB_EXPRESSION"}};var ef=class extends Rn{getErrorType(){return"MB_EXAMPLE"}};var es=class extends Rn{getErrorType(){return"MB_BUTTON"}},tf=class extends Rn{getErrorType(){return"MB_DEPENDENCY"}};function on(t,e){let r=t.thenEof().tryParse(e);if(r.success)return r.value;throw new Al("ERROR","parsiNOM parser",e,r)}var Al=class extends Rn{constructor(e,r,n,i){super({errorLevel:e,effect:"Failed to parse. Check that your syntax is correct.",cause:`expected ${i.expected.sort().join(" or ")}`}),this.str=n,this.parseFailure=i,this.source=r,this.updateMessage2()}getErrorType(){return"MB_PARSINOM"}updateMessage2(){this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}" `:this.message=`[${this.getErrorType()}] "${this.effect}" caused by "${this.cause}" `;let r=this.str.split(` `)[this.parseFailure.furthest.line-1],n=`${this.parseFailure.furthest.line} | `;this.positionContext=`${n}${r}`,this.positionContext+=` ${this.getUnderline(n.length)} `,this.message+=` -`+this.positionContext}getUnderline(e){let r=" ".repeat(this.parseFailure.furthest.column+e-1),n=`^ (${this.cause})`;return r+n}},Vn=class extends Jn{constructor(e,r,n,i,a,o){super({errorLevel:e,effect:"Failed to validate the result of the parser.",cause:n,docs:o}),this.str=i,this.position=a,this.source=r,this.updateMessage2()}getErrorType(){return"MB_VALIDATION"}updateMessage2(){if(this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}" +`+this.positionContext}getUnderline(e){let r=" ".repeat(this.parseFailure.furthest.column+e-1),n=`^ (${this.cause})`;return r+n}},Nn=class extends Rn{constructor(e,r,n,i,a,o){super({errorLevel:e,effect:"Failed to validate the result of the parser.",cause:n,docs:o}),this.str=i,this.position=a,this.source=r,this.updateMessage2()}getErrorType(){return"MB_VALIDATION"}updateMessage2(){if(this.cause instanceof Error?this.message=`[${this.getErrorType()}] "${this.effect}" caused by error "${this.cause.message}" `:this.message=`[${this.getErrorType()}] "${this.effect}" caused by "${this.cause}" `,this.str&&this.position){let r=this.str.split(` `)[this.position.from.line-1],n=`${this.position.from.line} | `;this.positionContext=`${n}${r}`,this.positionContext+=` ${this.getUnderline(n.length,r.length)} `,this.message+=` -`+this.positionContext}}getUnderline(e,r){if(this.position===void 0)return"";let n=" ".repeat(this.position.from.column+e-1),i=this.position.to.line===this.position.from.line?this.position.to.column:r,a="^".repeat(i-this.position.from.column);return n+a}};var fd=class extends xc{readExternal(e){return{}}getDefaultCacheItem(e){return{data:{},storagePath:e,...this.manager.getDefaultCacheItem()}}syncExternal(e){}},pd=class{constructor(e,r){this.id=e,this.manager=r,this.cache={data:{},...this.manager.getDefaultCacheItem()}}getOrCreateCacheItem(e){return this.cache}validateStoragePath(e,r,n,i){if(r)throw new Vn("ERROR","Bind target validator","Failed to parse bind target. Bind target storage type 'global_memory' does not support a storage path.",n,e.position);return""}deleteCache(e){}getCacheItemForStoragePath(e){return this.cache}iterateCacheItems(){return[this.cache][Symbol.iterator]()}onCycle(e){}readCache(e){return this.readCacheItem(this.cache,e.storageProp)}readCacheItem(e,r){return eo.tryGet(e.data,r)}shouldDelete(e){return!1}subscribe(e){return this.cache.subscriptions.push(e),this.cache}syncExternal(e){}unsubscribe(e){return this.cache.subscriptions=this.cache.subscriptions.filter(r=>r.uuid!==e.uuid),this.cache}writeCache(e,r){return eo.setAndCreate(this.cache.data,r.storageProp,e),this.cache}writeEntireCache(e,r){r.data=e}readEntireCacheItem(e){return e.data}},md=class{constructor(e,r){this.id=e,this.manager=r}getOrCreateCacheItem(e){throw new Gt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}validateStoragePath(e,r,n,i){if(r)throw new Vn("ERROR","Bind Target Validator","Failed to parse bind target. Bind target storage type 'scope' does not support a storage path.",n,e.position);return""}deleteCache(e){}getCacheItemForStoragePath(e){}iterateCacheItems(){return[][Symbol.iterator]()}onCycle(e){}readCache(e){}readCacheItem(e,r){}shouldDelete(e){return!0}subscribe(e){throw new Gt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}syncExternal(e){}unsubscribe(e){throw new Gt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}writeCache(e,r){throw new Gt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}writeEntireCache(e,r){}readEntireCacheItem(e){throw new Gt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}};var vn=class extends Error{},lp=class extends Error{};var VC=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},X7=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function Q7(t,e,r){let n=r;for(let i of Rr(t))n=e(n,i);return n}function K7(t,e,r){return VC(this,void 0,void 0,function*(){var n,i,a,o;let s=r;try{for(var l=!0,u=X7(Lr(t)),c;c=yield u.next(),n=c.done,!n;l=!0)o=c.value,l=!1,s=yield e(s,o)}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield a.call(u))}finally{if(i)throw i.error}}return s})}function Px(t){switch(!0){case t instanceof Array:return t.length;case es(t):return t.length;case t instanceof Set:return t.size;case t instanceof Map:return t.size}return Q7(t,e=>e+1,0)}function UC(t){return VC(this,void 0,void 0,function*(){switch(!0){case t instanceof Array:case es(t):case t instanceof Set:case t instanceof Map:return Px(t)}return yield K7(t,e=>e+1,0)})}var qC={chunkwise:nN,chunkwiseOverlap:hd,compress:GC,dropWhile:YC,enumerate:sN,filter:tN,flatMap:KC,flatten:Bx,groupBy:vN,keys:fN,limit:aN,map:HC,pairwise:cl,repeat:XC,skip:mN,slice:lN,sort:xN,takeWhile:ZC,values:hN,chunkwiseAsync:iN,chunkwiseOverlapAsync:gd,compressAsync:WC,dropWhileAsync:jC,enumerateAsync:uN,filterAsync:rN,flatMapAsync:eN,flattenAsync:kx,groupByAsync:yN,keysAsync:pN,limitAsync:oN,mapAsync:dd,pairwiseAsync:cp,repeatAsync:QC,skipAsync:dN,sliceAsync:cN,sortAsync:bN,takeWhileAsync:JC,valuesAsync:gN};var zC={allMatch:wN,allUnique:AN,anyMatch:EN,exactlyN:DN,isEmpty:CN,isAsyncIterable:Ns,isIterable:ua,isIterator:to,isReversed:FN,isSorted:PN,isString:es,noneMatch:kN,same:ON,sameCount:LN,allMatchAsync:_N,allUniqueAsync:SN,anyMatchAsync:TN,exactlyNAsync:MN,isEmptyAsync:NN,isReversedAsync:IN,isSortedAsync:BN,noneMatchAsync:$N,sameAsync:RN,sameCountAsync:VN};var bc=function(t){return this instanceof bc?(this.v=t,this):new bc(t)},eH=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(x,b){a.push([p,h,x,b])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof bc?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}},Fo;(function(t){t[t.SHORTEST=0]="SHORTEST",t[t.LONGEST=1]="LONGEST",t[t.STRICT_EQUAL=2]="STRICT_EQUAL"})(Fo||(Fo={}));function*$x(t,e,...r){if(r.length===0)return;let n=[];for(let i of r)n.push(UN(i));e:for(;;){let i=qC.map(n,l=>l.next()),a=[],o=!0,s=!1;for(let l of i){let u;l.done?(o=!1,u=e):(s=!0,u=l.value),a.push(u)}if(!o&&s)switch(t){case Fo.SHORTEST:break e;case Fo.STRICT_EQUAL:throw new lp("Iterators must have equal lengths")}if(!s)break;yield a}}function Ox(t,e,...r){return eH(this,arguments,function*(){if(r.length===0)return yield bc(void 0);let i=[];for(let a of r)i.push(qN(a));e:for(;;){let a=[];for(let u of i){let c=yield bc(u.next());a.push(c)}let o=[],s=!0,l=!1;for(let u of a){let c;u.done?(s=!1,c=e):(l=!0,c=u.value),o.push(c)}if(!s&&l)switch(t){case Fo.SHORTEST:break e;case Fo.STRICT_EQUAL:throw new lp("Iterators must have equal lengths")}if(!l)break;yield yield bc(o)}})}var hu=function(t){return this instanceof hu?(this.v=t,this):new hu(t)},tH=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},rH=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(x,b){a.push([p,h,x,b])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof hu?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*Rx(t,e){let r=new Set;if(t instanceof Map){e===void 0&&(e=n=>n[1]);for(let n of t){let i=e(n);r.has(i)||(yield n,r.add(i))}}else{e===void 0&&(e=n=>n);for(let n of Rr(t)){let i=e(n);r.has(i)||(yield n,r.add(i))}}}function zN(t,e){return rH(this,arguments,function*(){var n,i,a,o;let s=new Set;if(t instanceof Map)for(let f of Rx(t,e))yield yield hu(yield hu(f));else{e===void 0&&(e=f=>f);try{for(var l=!0,u=tH(Lr(t)),c;c=yield hu(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o,m=e(f);s.has(m)||(yield yield hu(f),s.add(m))}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield hu(a.call(u)))}finally{if(i)throw i.error}}}})}var $n=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},it=function(t){return this instanceof it?(this.v=t,this):new it(t)},Qn=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(x,b){a.push([p,h,x,b])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof it?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*HC(t,e){for(let r of Rr(t))yield e(r)}function dd(t,e){return Qn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=$n(Lr(t)),u;u=yield it(l.next()),n=u.done,!n;s=!0)o=u.value,s=!1,yield yield it(yield it(e(o)))}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield it(a.call(l)))}finally{if(i)throw i.error}}})}function*GC(t,e){for(let[r,n]of wc(t,e))n&&(yield r)}function WC(t,e){return Qn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=$n(HN(t,e)),u;u=yield it(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let[c,f]=o;f&&(yield yield it(c))}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield it(a.call(l)))}finally{if(i)throw i.error}}})}function*YC(t,e){let r=!0;for(let n of Rr(t)){if(r){if(!e(n)){r=!1,yield n;continue}continue}yield n}}function jC(t,e){return Qn(this,arguments,function*(){var n,i,a,o;let s=!0;try{for(var l=!0,u=$n(Lr(t)),c;c=yield it(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o;if(s){if(!(yield it(e(f)))){s=!1,yield yield it(f);continue}continue}yield yield it(f)}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield it(a.call(u)))}finally{if(i)throw i.error}}})}function*ZC(t,e){for(let r of Rr(t))if(e(r))yield r;else break}function JC(t,e){return Qn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=$n(Lr(t)),u;u=yield it(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let c=o;if(yield it(e(c)))yield yield it(c);else break}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield it(a.call(l)))}finally{if(i)throw i.error}}})}function*XC(t,e){if(e<0)throw new vn(`Number of repetitions cannot be negative: ${e}`);for(let r=e;r>0;--r)yield t}function QC(t,e){return Qn(this,arguments,function*(){if(e<0)throw new vn(`Number of repetitions cannot be negative: ${e}`);let n=yield it(t);for(let i=e;i>0;--i)yield yield it(n)})}function*KC(t,e){for(let r of Rr(t)){let n=e(r,e);if(ua(n))for(let i of Rr(n))yield i;else yield n}}function eN(t,e){return Qn(this,arguments,function*(){var n,i,a,o,s,l,u,c;try{for(var f=!0,m=$n(Lr(t)),p;p=yield it(m.next()),n=p.done,!n;f=!0){o=p.value,f=!1;let T=yield it(e(o,e));if(ua(T)||Ns(T))try{for(var d=!0,h=(l=void 0,$n(Lr(T))),x;x=yield it(h.next()),s=x.done,!s;d=!0)c=x.value,d=!1,yield yield it(c)}catch(v){l={error:v}}finally{try{!d&&!s&&(u=h.return)&&(yield it(u.call(h)))}finally{if(l)throw l.error}}else yield yield it(T)}}catch(b){i={error:b}}finally{try{!f&&!n&&(a=m.return)&&(yield it(a.call(m)))}finally{if(i)throw i.error}}})}function*Bx(t,e=1/0){if(e<1){for(let r of Rr(t))t instanceof Map&&(r=r[1]),yield r;return}for(let r of Rr(t))if(t instanceof Map&&(r=r[1]),(ua(r)||to(r))&&!es(r))for(let n of Bx(r,e-1))yield n;else yield r}function kx(t){return Qn(this,arguments,function*(r,n=1/0){var i,a,o,s,l,u,c,f,m,p,d,h;if(n<1){try{for(var x=!0,b=$n(Lr(r)),T;T=yield it(b.next()),i=T.done,!i;x=!0){s=T.value,x=!1;let _=s;r instanceof Map&&(_=_[1]),yield yield it(_)}}catch(_){a={error:_}}finally{try{!x&&!i&&(o=b.return)&&(yield it(o.call(b)))}finally{if(a)throw a.error}}return yield it(void 0)}try{for(var v=!0,A=$n(Lr(r)),w;w=yield it(A.next()),l=w.done,!l;v=!0){f=w.value,v=!1;let _=f;if(r instanceof Map&&(_=_[1]),(Ns(_)||ua(_)||to(_))&&!es(_))try{for(var y=!0,E=(p=void 0,$n(kx(_,n-1))),D;D=yield it(E.next()),m=D.done,!m;y=!0)h=D.value,y=!1,yield yield it(h)}catch(N){p={error:N}}finally{try{!y&&!m&&(d=E.return)&&(yield it(d.call(E)))}finally{if(p)throw p.error}}else yield yield it(_)}}catch(_){u={error:_}}finally{try{!v&&!l&&(c=A.return)&&(yield it(c.call(A)))}finally{if(u)throw u.error}}})}function*tN(t,e){for(let r of Rr(t))e(r)&&(yield r)}function rN(t,e){return Qn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=$n(Lr(t)),u;u=yield it(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let c=o;(yield it(e(c)))&&(yield yield it(c))}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield it(a.call(l)))}finally{if(i)throw i.error}}})}function*hd(t,e,r,n=!0){if(e<1)throw new vn(`Chunk size must be \u2265 1. Got ${e}`);if(r>=e)throw new vn("Overlap size must be less than chunk size");let i=[],a=!1;for(let o of Rr(t))a=!1,i.push(o),i.length===e&&(yield i,i=i.slice(e-r),a=!0);!a&&i.length>0&&n&&(yield i)}function gd(t,e,r){return Qn(this,arguments,function*(i,a,o,s=!0){var l,u,c,f;if(a<1)throw new vn(`Chunk size must be \u2265 1. Got ${a}`);if(o>=a)throw new vn("Overlap size must be less than chunk size");let m=[],p=!1;try{for(var d=!0,h=$n(Lr(i)),x;x=yield it(h.next()),l=x.done,!l;d=!0){f=x.value,d=!1;let b=f;p=!1,m.push(b),m.length===a&&(yield yield it(m),m=m.slice(a-o),p=!0)}}catch(b){u={error:b}}finally{try{!d&&!l&&(c=h.return)&&(yield it(c.call(h)))}finally{if(u)throw u.error}}!p&&m.length>0&&s&&(yield yield it(m))})}function*nN(t,e){for(let r of hd(t,e,0))yield r}function iN(t,e){return Qn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=$n(gd(t,e,0)),u;u=yield it(l.next()),n=u.done,!n;s=!0)o=u.value,s=!1,yield yield it(o)}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield it(a.call(l)))}finally{if(i)throw i.error}}})}function*cl(t){let e=hd(t,2,1,!1);for(let r of e)yield r}function cp(t){return Qn(this,arguments,function*(){var r,n,i,a;let o=gd(t,2,1,!1);try{for(var s=!0,l=$n(o),u;u=yield it(l.next()),r=u.done,!r;s=!0)a=u.value,s=!1,yield yield it(a)}catch(c){n={error:c}}finally{try{!s&&!r&&(i=l.return)&&(yield it(i.call(l)))}finally{if(n)throw n.error}}})}function*aN(t,e){if(e<0)throw new vn(`Limit must be \u2265 0. Got ${e}`);let r=0;for(let n of Rr(t)){if(r>=e)return;yield n,++r}}function oN(t,e){return Qn(this,arguments,function*(){var n,i,a,o;if(e<0)throw new vn(`Limit must be \u2265 0. Got ${e}`);let s=0;try{for(var l=!0,u=$n(Lr(t)),c;c=yield it(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o;if(s>=e)return yield it(void 0);yield yield it(f),++s}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield it(a.call(u)))}finally{if(i)throw i.error}}})}function*sN(t){let e=0;for(let r of Rr(t))yield[e++,r]}function uN(t){return Qn(this,arguments,function*(){var r,n,i,a;let o=0;try{for(var s=!0,l=$n(Lr(t)),u;u=yield it(l.next()),r=u.done,!r;s=!0){a=u.value,s=!1;let c=a;yield yield it([o++,c])}}catch(c){n={error:c}}finally{try{!s&&!r&&(i=l.return)&&(yield it(i.call(l)))}finally{if(n)throw n.error}}})}function*lN(t,e=0,r,n=1){if(e<0)throw new vn("Parameter 'start' cannot be negative");if(r!==void 0&&r<0)throw new vn("Parameter 'count' cannot be negative");if(n<=0)throw new vn("Parameter 'step' must be positive");let i=0,a=0;for(let o of Rr(t))if(!(i++=e)&&(yield i),++n}function dN(t,e){return Qn(this,arguments,function*(n,i,a=0){var o,s,l,u;if(i<0||a<0)throw new vn;let c=-a;try{for(var f=!0,m=$n(Lr(n)),p;p=yield it(m.next()),o=p.done,!o;f=!0){u=p.value,f=!1;let d=u;(c<0||c>=i)&&(yield yield it(d)),++c}}catch(d){s={error:d}}finally{try{!f&&!o&&(l=m.return)&&(yield it(l.call(m)))}finally{if(s)throw s.error}}})}function*hN(t){for(let[,e]of Rr(t))yield e}function gN(t){return Qn(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=$n(Lr(t)),l;l=yield it(s.next()),r=l.done,!r;o=!0){a=l.value,o=!1;let[,u]=a;yield yield it(u)}}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield it(i.call(s)))}finally{if(n)throw n.error}}})}function*vN(t,e,r){let n=new Map,i=a=>{n.has(a)||(r!==void 0?n.set(a,{}):n.set(a,[]))};for(let a of Rr(t)){let o=e(a),s=r!==void 0?r(a):void 0,l=(ua(o)||to(o))&&!es(o)?o:[o];for(let u of Rx(l))i(u),s===void 0?n.get(u).push(a):n.get(u)[s]=a}for(let a of n)yield a}function yN(t,e,r){return Qn(this,arguments,function*(){var i,a,o,s,l,u,c,f;let m=new Map,p=A=>{m.has(A)||(r!==void 0?m.set(A,{}):m.set(A,[]))};try{for(var d=!0,h=$n(Lr(t)),x;x=yield it(h.next()),i=x.done,!i;d=!0){s=x.value,d=!1;let A=s,w=yield it(e(A)),y=r!==void 0?yield it(r(A)):void 0,E=(Ns(w)||ua(w)||to(w))&&!es(w)?w:[w];try{for(var b=!0,T=(u=void 0,$n(zN(E))),v;v=yield it(T.next()),l=v.done,!l;b=!0){f=v.value,b=!1;let D=f;p(D),y===void 0?m.get(D).push(A):m.get(D)[y]=A}}catch(D){u={error:D}}finally{try{!b&&!l&&(c=T.return)&&(yield it(c.call(T)))}finally{if(u)throw u.error}}}}catch(A){a={error:A}}finally{try{!d&&!i&&(o=h.return)&&(yield it(o.call(h)))}finally{if(a)throw a.error}}for(let A of m)yield yield it(A)})}function*xN(t,e){let r=Lx(t);e!==void 0?r.sort(e):r.sort();for(let n of r)yield n}function bN(t,e){return Qn(this,arguments,function*(){let n=yield it(fp(t));e!==void 0?n.sort(e):n.sort();for(let i of n)yield yield it(i)})}var Io=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},Fs=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function wN(t,e){for(let r of Rr(t))if(!e(r))return!1;return!0}function _N(t,e){return Io(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=Fs(Lr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,!(yield e(a)))return!1}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!0})}function AN(t){let e=new Set;for(let r of Rr(t)){if(e.has(r))return!1;e.add(r)}return!0}function SN(t){return Io(this,void 0,void 0,function*(){var e,r,n,i;let a=new Set;try{for(var o=!0,s=Fs(Lr(t)),l;l=yield s.next(),e=l.done,!e;o=!0){i=l.value,o=!1;let u=i;if(a.has(u))return!1;a.add(u)}}catch(u){r={error:u}}finally{try{!o&&!e&&(n=s.return)&&(yield n.call(s))}finally{if(r)throw r.error}}return!0})}function EN(t,e){for(let r of Rr(t))if(e(r))return!0;return!1}function TN(t,e){return Io(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=Fs(Lr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,yield e(a))return!0}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!1})}function DN(t,e,r){if(e<0)return!1;r===void 0&&(r=i=>!!i);let n=0;for(let i of Rr(t))if(r(i)&&(n++,n>e))return!1;return n===e}function MN(t,e,r){return Io(this,void 0,void 0,function*(){var n,i,a,o;if(e<0)return!1;r===void 0&&(r=f=>!!f);let s=0;try{for(var l=!0,u=Fs(Lr(t)),c;c=yield u.next(),n=c.done,!n;l=!0)if(o=c.value,l=!1,(yield r(o))&&(s++,s>e))return!1}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield a.call(u))}finally{if(i)throw i.error}}return s===e})}function CN(t){for(let e of Rr(t))return!1;return!0}function NN(t){return Io(this,void 0,void 0,function*(){var e,r,n,i;try{for(var a=!0,o=Fs(Lr(t)),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let l=i;return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}return!0})}function ua(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function Ns(t){return t==null?!1:typeof t[Symbol.asyncIterator]=="function"}function to(t){return t==null?!1:t.next!==void 0&&typeof t.next=="function"}function FN(t){for(let[e,r]of cl(Rr(t)))if(er)return!1;return!0}function BN(t){return Io(this,void 0,void 0,function*(){var e,r,n,i;try{for(var a=!0,o=Fs(cp(Lr(t))),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let[l,u]=i;if(l>u)return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}return!0})}function es(t){return typeof t=="string"||t instanceof String}function kN(t,e){for(let r of Rr(t))if(e(r))return!1;return!0}function $N(t,e){return Io(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=Fs(Lr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,yield e(a))return!1}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!0})}function ON(...t){try{for(let e of GN(...t))for(let[r,n]of cl(e))if(r!==n)return!1}catch{return!1}return!0}function RN(...t){return Io(this,void 0,void 0,function*(){var e,r,n,i;try{try{for(var a=!0,o=Fs(WN(...t)),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let l=i;for(let[u,c]of cl(l))if(u!==c)return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}}catch{return!1}return!0})}function LN(...t){if(t.length<=1)return!0;let e=t.map(r=>Px(r));return new Set(e).size===1}function VN(...t){return Io(this,void 0,void 0,function*(){if(t.length<=1)return!0;let e=yield dd(t,r=>Io(this,void 0,void 0,function*(){return yield UC(r)}));return new Set(yield fp(e)).size===1})}var nH=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},ts=function(t){return this instanceof ts?(this.v=t,this):new ts(t)},Vx=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(x,b){a.push([p,h,x,b])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof ts?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}},YN=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function Rr(t){if(ua(t))return t;if(to(t))return{[Symbol.iterator](){return t}};if(typeof t=="object"&&t!==null)return function*(){for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&(yield[e,t[e]])}();throw new vn("Given collection is not iterable or iterator.")}function Lr(t){if(Ns(t))return t;if(to(t))return{[Symbol.asyncIterator](){return Vx(this,arguments,function*(){for(;;){let r=yield ts(t.next());if(r.done)return yield ts(void 0);yield yield ts(r.value)}})}};if(typeof t=="object"&&t!==null&&(t=Rr(t)),ua(t))return{[Symbol.asyncIterator](){return Vx(this,arguments,function*(){for(let r of t)yield yield ts(r)})}};throw new vn("Given collection is not async iterable or iterator.")}function UN(t){if(to(t))return t;if(ua(t))return function*(){for(let e of t)yield e}();throw new vn("Given collection is not iterable or iterator.")}function qN(t){if((to(t)||ua(t))&&(t=Lr(t)),Ns(t))return function(){return Vx(this,arguments,function*(){var e,r,n,i;try{for(var a=!0,o=YN(t),s;s=yield ts(o.next()),e=s.done,!e;a=!0)i=s.value,a=!1,yield yield ts(i)}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield ts(n.call(o)))}finally{if(r)throw r.error}}})}();throw new vn("Given collection is not iterable or iterator.")}function Lx(t){let e=[];for(let r of Rr(t))e.push(r);return e}function fp(t){return nH(this,void 0,void 0,function*(){var e,r,n,i;let a=[];try{for(var o=!0,s=YN(Lr(t)),l;l=yield s.next(),e=l.done,!e;o=!0){i=l.value,o=!1;let u=i;a.push(u)}}catch(u){r={error:u}}finally{try{!o&&!e&&(n=s.return)&&(yield n.call(s))}finally{if(r)throw r.error}}return a})}var jN=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},Is=function(t){return this instanceof Is?(this.v=t,this):new Is(t)},ZN=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(x,b){a.push([p,h,x,b])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof Is?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*wc(...t){for(let e of $x(Fo.SHORTEST,void 0,...t))yield e}function HN(...t){return ZN(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=jN(Ox(Fo.SHORTEST,void 0,...t)),l;l=yield Is(s.next()),r=l.done,!r;o=!0)a=l.value,o=!1,yield yield Is(a)}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield Is(i.call(s)))}finally{if(n)throw n.error}}})}function*GN(...t){for(let e of $x(Fo.STRICT_EQUAL,void 0,...t))yield e}function WN(...t){return ZN(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=jN(Ox(Fo.STRICT_EQUAL,void 0,...t)),l;l=yield Is(s.next()),r=l.done,!r;o=!0)a=l.value,o=!1,yield yield Is(a)}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield Is(i.call(s)))}finally{if(n)throw n.error}}})}function pp(t,e,r){return Math.min(Math.max(t,e),r)}function yd(t,e,r){return t!==void 0?Math.min(Math.max(t,e),r):void 0}function Ux(t,e,r,n,i){return(t-e)/(r-e)*(i-n)+n}function qx(t,e){return(t%e+e)%e}function vd(t,e){if(t==null&&e==null)return!0;if(t==null||e==null||typeof t!=typeof e)return!1;if(typeof t=="object"&&typeof e=="object"){if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let i=0;ithis.delete())),r.registerListener({callback:()=>void this.computeValue()})}this.computeValue()}async computeValue(){try{let e=await this.computeFunction();this.bindTarget&&this.metadataManager.write(e,this.bindTarget,this.uuid)}catch(e){let r=e instanceof Error?e:String(e);console.warn(new Gt({errorLevel:"ERROR",effect:"Failed to run derived metadata computation",cause:r}))}}unsubscribe(){for(let e of this.dependencySubscriptions)e.unsubscribe();this.metadataManager.unsubscribe(this)}onUpdate(e){}getDependencies(){return this.dependencies}delete(){this.deleted=!0;for(let e of this.dependencySubscriptions)e.deleted||e.delete();this.onDelete(),this.unsubscribe()}};var Sd=class{constructor(e,r,n,i,a,o){this.uuid=e,this.metadataManager=r,this.bindTarget=void 0,this.dependencies=n,this.dependencySignals=i,this.dependencySubscriptions=[],this.effectFunction=a,this.deleted=!1,this.onDelete=o}init(){for(let[e,r]of wc(this.dependencies,this.dependencySignals)){let n=this.uuid+"/"+Fr();this.dependencySubscriptions.push(this.metadataManager.subscribe(n,r,e,()=>this.delete())),r.registerListener({callback:()=>void this.runEffect()})}this.runEffect()}async runEffect(){try{await this.effectFunction()}catch(e){let r=e instanceof Error?e:String(e);console.warn(new Gt({errorLevel:"ERROR",effect:"Failed to run metadata effect",cause:r}))}}unsubscribe(){for(let e of this.dependencySubscriptions)e.unsubscribe();this.metadataManager.unsubscribe(this)}onUpdate(e){}getDependencies(){return this.dependencies}delete(){this.deleted=!0;for(let e of this.dependencySubscriptions)e.deleted||e.delete();this.onDelete(),this.unsubscribe()}};var Ed=class{constructor(e,r,n,i,a){this.uuid=e,this.callbackSignal=r,this.metadataManager=n,this.bindTarget=i,this.onDelete=a,this.deleted=!1}unsubscribe(){this.metadataManager.unsubscribe(this)}write(e){this.metadataManager.write(e,this.bindTarget,this.uuid)}onUpdate(e){try{this.callbackSignal.set(e)}catch(r){let n=r instanceof Error?r:String(r);console.warn(new Gt({errorLevel:"ERROR",effect:"Failed to notify subscription of updated value in the cache",cause:n}))}}getDependencies(){return[]}delete(){this.deleted=!0,this.onDelete()}};var iH=5,aH=5*60;function Gx(t,e){return t===void 0||e===void 0||t.storageType!==e.storageType||t.storagePath!==e.storagePath?!1:QN(t.storageProp,e.storageProp,e.listenToChildren)}function QN(t,e,r){let n=t.path,i=e.path;for(let a=0;ai.length?r:!0}function oH(t){return t===void 0?"undefined":`${t.storagePath}#${t.storageProp.toString()}`}var Td=class{constructor(){this.sources=new Map,this.defaultSource="CHANGE_THE_DEFAULT_SOURCE"}registerSource(e){this.sources.set(e.id,e)}setDefaultSource(e){if(this.sources.has(e))this.defaultSource=e;else throw new Gt({errorLevel:"CRITICAL",effect:"can not set default source",cause:`Source "${e}" does not exist`})}unregisterSource(e){this.sources.delete(e.id)}getSource(e){return this.sources.get(e)}iterateSources(){return this.sources.keys()}subscribe(e,r,n,i){let a=new Ed(e,r,this,n,i);return this.subscribeSubscription(a),a}subscribeDerived(e,r,n,i,a,o){let s=new Ad(e,this,r,n,i,a,o);return this.checkForLoops(s),s.init(),this.subscribeSubscription(s),s}subscribeEffect(e,r,n,i,a){let o=new Sd(e,this,r,n,i,a);return o.init(),this.subscribeSubscription(o),o}unsubscribe(e){if(e.bindTarget===void 0)return;let r=this.getSource(e.bindTarget.storageType);if(r===void 0)throw new Gt({errorLevel:"ERROR",effect:"can not unsubscribe subscription",cause:`Source "${e.bindTarget.storageType}" does not exist`});let n=r.unsubscribe(e);n.subscriptions.length===0&&(n.cyclesWithoutListeners=0)}subscribeSubscription(e){if(e.bindTarget===void 0)return;let r=this.getSource(e.bindTarget.storageType);if(r===void 0)throw new Gt({errorLevel:"ERROR",effect:"can not subscribe subscription",cause:`Source "${e.bindTarget.storageType}" does not exist`});let n=r.subscribe(e);n.cyclesWithoutListeners=0,e.onUpdate(r.readCacheItem(n,e.bindTarget.storageProp))}checkForLoops(e){for(let r of this.getAllSubscriptionsToDependencies(e))this.recCheckForLoops([e,r])}recCheckForLoops(e){let r=e.at(0),n=e.at(-1);if(!(n===void 0||r===void 0)){if(Gx(r.bindTarget,n.bindTarget))throw new cd({errorLevel:"ERROR",effect:"bind target dependency loop detected",cause:`the loop is as follows: ${e.map(i=>`"${oH(i.bindTarget)}"`).join(" -> ")}`,docs:["https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/guides/viewfields/#circular-dependencies"]});for(let i of this.getAllSubscriptionsToDependencies(n))this.recCheckForLoops([...e,i])}}getAllSubscriptionsToDependencies(e){return e.getDependencies().map(r=>this.getAllSubscriptionsToBindTarget(r)).flat()}getAllSubscriptionsToBindTarget(e){if(e===void 0)return[];let r=this.getCacheItemForBindTarget(e);if(!r)return[];let n=[];for(let i of r.subscriptions)Gx(i.bindTarget,e)&&n.push(i);return r.subscriptions.filter(i=>Gx(i.bindTarget,e))}getCacheItemForBindTarget(e){return this.getSource(e.storageType)?.getCacheItemForStoragePath(e.storagePath)}cycle(){for(let e of this.sources.values()){let r=[];for(let n of e.iterateCacheItems()){if(e.onCycle(n),n.dirty){try{e.syncExternal(n)}catch(i){console.warn(`failed to sync changes to external source for ${e.id}`,i)}n.dirty=!1}n.externalWriteLock>0&&(n.externalWriteLock-=1),n.subscriptions.length===0&&(n.cyclesWithoutListeners+=1),n.cyclesWithoutListeners>aH&&e.shouldDelete(n)&&r.push(n)}for(let n of r)e.deleteCache(n)}}write(e,r,n){let i=this.getSource(r.storageType);if(i===void 0)throw new Gt({errorLevel:"ERROR",effect:"can not write to cache",cause:`Source "${r.storageType}" does not exist`});let a=i.writeCache(e,r);a.dirty=!0,a.externalWriteLock=iH,this.notifyListeners(r,n)}read(e){let r=this.getSource(e.storageType);if(r===void 0)throw new Gt({errorLevel:"ERROR",effect:"can not read metadata",cause:`Source "${e.storageType}" does not exist`});return r.readCache(e)}isCacheExternalWriteLocked(e){return e.externalWriteLock>0}notifyListeners(e,r){let n=this.getSource(e.storageType);if(n===void 0)throw new Gt({errorLevel:"ERROR",effect:"can notify listeners metadata",cause:`Source "${e.storageType}" does not exist`});let i=n.getCacheItemForStoragePath(e.storagePath);if(i!==void 0){for(let a of i.subscriptions)if(!(r!==void 0&&r===a.uuid||a.bindTarget===void 0)&&QN(e.storageProp,a.bindTarget.storageProp,a.bindTarget.listenToChildren)){let o=n.readCache(a.bindTarget);a.onUpdate(o)}}}notifyAllListeners(e,r){for(let n of r.subscriptions){if(n.bindTarget===void 0)continue;let i=e.readCache(n.bindTarget);n.onUpdate(i)}}deleteCachesForStoragePath(e){for(let r of this.sources.values()){let n=r.getCacheItemForStoragePath(e);n!==void 0&&(n.subscriptions.forEach(i=>i.delete()),r.deleteCache(n))}}getDefaultCacheItem(){return{subscriptions:[],externalWriteLock:0,dirty:!1,cyclesWithoutListeners:0}}onExternalUpdate(e,r,n){let i=e.getCacheItemForStoragePath(r);if(i===void 0||this.isCacheExternalWriteLocked(i))return;let a=e.readEntireCacheItem(i);e.writeEntireCache(n,i);for(let o of i.subscriptions){if(o.bindTarget===void 0)continue;let s=o.bindTarget.storageProp,l=eo.tryGet(n,s),u=eo.tryGet(a,s);l!==u&&o.onUpdate(l)}}onStoragePathDeleted(e){this.deleteCachesForStoragePath(e)}onStoragePathRenamed(e,r){this.deleteCachesForStoragePath(e)}};var Dd=class{constructor(){this.activeMountables=new Map}unloadFile(e){for(let r of this.activeMountables.values())r.getFilePath()===e&&r.unmount()}unload(){for(let e of this.activeMountables.values())e.unmount()}registerMountable(e){this.activeMountables.set(e.getUuid(),e)}unregisterMountable(e){this.activeMountables.delete(e.getUuid())}};var Yx=zr(mp()),oi=class t{static stringify(e){return e.format(this.dateFormat)}static parse(e){return(0,Yx.default)(e,t.dateFormat)}static getDefaultDate(){return(0,Yx.default)(new Date)}static getDefaultDay(){return new Date().getDate()}static getDefaultMonth(){return 1}static getDefaultYear(){return new Date().getFullYear()}};var KN=["January","February","March","April","May","June","July","August","September","October","November","December"],fl=[{index:0,name:"Sunday",shortName:"Su"},{index:1,name:"Monday",shortName:"Mo"},{index:2,name:"Tuesday",shortName:"Tu"},{index:3,name:"Wednesday",shortName:"We"},{index:4,name:"Thursday",shortName:"Th"},{index:5,name:"Friday",shortName:"Fr"},{index:6,name:"Saturday",shortName:"Sa"}],Po={devMode:!1,ignoreCodeBlockRestrictions:!1,preferredDateFormat:"YYYY-MM-DD",firstWeekday:fl[1],syncInterval:200,minSyncInterval:50,maxSyncInterval:1e3,enableJs:!1,viewFieldDisplayNullAsEmpty:!1,enableSyntaxHighlighting:!0,enableEditorRightClickMenu:!0,inputFieldTemplates:[],buttonTemplates:[],excludedFolders:["templates"]};var eF=zr(mp());var jx=fl[1];function tF(t){jx=t}function rF(t){return KN[t]}function nF(t,e){let r=(0,eF.default)(new Date(e,t)).daysInMonth(),n=new Array(42).fill(0),i=sH(new Date(e,t,1));for(let a=0;a({index:qx(e.index-jx.index,7),name:e.name,shortName:e.shortName})).sort((e,r)=>e.index-r.index).map(e=>e.shortName)}function aF(){let t=0;return()=>++t}function Md(t){var e=t.statementIndent,r=t.jsonld,n=t.json||r,i=t.typescript,a=t.wordCharacters||/[\w$\xa1-\uffff]/,o=function(){function q(Rn){return{type:Rn,style:"keyword"}}var re=q("keyword a"),Ne=q("keyword b"),Ke=q("keyword c"),Ge=q("keyword d"),zt=q("operator"),$r={type:"atom",style:"atom"};return{if:q("if"),while:re,with:re,else:Ne,do:Ne,try:Ne,finally:Ne,return:Ge,break:Ge,continue:Ge,new:q("new"),delete:Ke,void:Ke,throw:Ke,debugger:q("debugger"),var:q("var"),const:q("var"),let:q("var"),function:q("function"),catch:q("catch"),for:q("for"),switch:q("switch"),case:q("case"),default:q("default"),in:zt,typeof:zt,instanceof:zt,true:$r,false:$r,null:$r,undefined:$r,NaN:$r,Infinity:$r,this:q("this"),class:q("class"),super:q("atom"),yield:Ke,export:q("export"),import:q("import"),extends:Ke,await:Ke}}(),s=/[+\-*&%=<>!?|~^@]/,l=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function u(q){for(var re=!1,Ne,Ke=!1;(Ne=q.next())!=null;){if(!re){if(Ne=="/"&&!Ke)return;Ne=="["?Ke=!0:Ke&&Ne=="]"&&(Ke=!1)}re=!re&&Ne=="\\"}}var c,f;function m(q,re,Ne){return c=q,f=Ne,re}function p(q,re){var Ne=q.next();if(Ne=='"'||Ne=="'")return re.tokenize=d(Ne),re.tokenize(q,re);if(Ne=="."&&q.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if(Ne=="."&&q.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Ne))return m(Ne);if(Ne=="="&&q.eat(">"))return m("=>","operator");if(Ne=="0"&&q.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(Ne))return q.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if(Ne=="/")return q.eat("*")?(re.tokenize=h,h(q,re)):q.eat("/")?(q.skipToEnd(),m("comment","comment")):ln(q,re,1)?(u(q),q.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string.special")):(q.eat("="),m("operator","operator",q.current()));if(Ne=="`")return re.tokenize=x,x(q,re);if(Ne=="#"&&q.peek()=="!")return q.skipToEnd(),m("meta","meta");if(Ne=="#"&&q.eatWhile(a))return m("variable","property");if(Ne=="<"&&q.match("!--")||Ne=="-"&&q.match("->")&&!/\S/.test(q.string.slice(0,q.start)))return q.skipToEnd(),m("comment","comment");if(s.test(Ne))return(Ne!=">"||!re.lexical||re.lexical.type!=">")&&(q.eat("=")?(Ne=="!"||Ne=="=")&&q.eat("="):/[<>*+\-|&?]/.test(Ne)&&(q.eat(Ne),Ne==">"&&q.eat(Ne))),Ne=="?"&&q.eat(".")?m("."):m("operator","operator",q.current());if(a.test(Ne)){q.eatWhile(a);var Ke=q.current();if(re.lastType!="."){if(o.propertyIsEnumerable(Ke)){var Ge=o[Ke];return m(Ge.type,Ge.style,Ke)}if(Ke=="async"&&q.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",Ke)}return m("variable","variable",Ke)}}function d(q){return function(re,Ne){var Ke=!1,Ge;if(r&&re.peek()=="@"&&re.match(l))return Ne.tokenize=p,m("jsonld-keyword","meta");for(;(Ge=re.next())!=null&&!(Ge==q&&!Ke);)Ke=!Ke&&Ge=="\\";return Ke||(Ne.tokenize=p),m("string","string")}}function h(q,re){for(var Ne=!1,Ke;Ke=q.next();){if(Ke=="/"&&Ne){re.tokenize=p;break}Ne=Ke=="*"}return m("comment","comment")}function x(q,re){for(var Ne=!1,Ke;(Ke=q.next())!=null;){if(!Ne&&(Ke=="`"||Ke=="$"&&q.eat("{"))){re.tokenize=p;break}Ne=!Ne&&Ke=="\\"}return m("quasi","string.special",q.current())}var b="([{}])";function T(q,re){re.fatArrowAt&&(re.fatArrowAt=null);var Ne=q.string.indexOf("=>",q.start);if(!(Ne<0)){if(i){var Ke=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(q.string.slice(q.start,Ne));Ke&&(Ne=Ke.index)}for(var Ge=0,zt=!1,$r=Ne-1;$r>=0;--$r){var Rn=q.string.charAt($r),Ln=b.indexOf(Rn);if(Ln>=0&&Ln<3){if(!Ge){++$r;break}if(--Ge==0){Rn=="("&&(zt=!0);break}}else if(Ln>=3&&Ln<6)++Ge;else if(a.test(Rn))zt=!0;else if(/["'\/`]/.test(Rn))for(;;--$r){if($r==0)return;var ws=q.string.charAt($r-1);if(ws==Rn&&q.string.charAt($r-2)!="\\"){$r--;break}}else if(zt&&!Ge){++$r;break}}zt&&!Ge&&(re.fatArrowAt=$r)}}var v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function A(q,re,Ne,Ke,Ge,zt){this.indented=q,this.column=re,this.type=Ne,this.prev=Ge,this.info=zt,Ke!=null&&(this.align=Ke)}function w(q,re){for(var Ne=q.localVars;Ne;Ne=Ne.next)if(Ne.name==re)return!0;for(var Ke=q.context;Ke;Ke=Ke.prev)for(var Ne=Ke.vars;Ne;Ne=Ne.next)if(Ne.name==re)return!0}function y(q,re,Ne,Ke,Ge){var zt=q.cc;for(E.state=q,E.stream=Ge,E.marked=null,E.cc=zt,E.style=re,q.lexical.hasOwnProperty("align")||(q.lexical.align=!0);;){var $r=zt.length?zt.pop():n?we:U;if($r(Ne,Ke)){for(;zt.length&&zt[zt.length-1].lex;)zt.pop()();return E.marked?E.marked:Ne=="variable"&&w(q,Ke)?"variableName.local":re}}}var E={state:null,column:null,marked:null,cc:null};function D(){for(var q=arguments.length-1;q>=0;q--)E.cc.push(arguments[q])}function _(){return D.apply(null,arguments),!0}function N(q,re){for(var Ne=re;Ne;Ne=Ne.next)if(Ne.name==q)return!0;return!1}function C(q){var re=E.state;if(E.marked="def",re.context){if(re.lexical.info=="var"&&re.context&&re.context.block){var Ne=B(q,re.context);if(Ne!=null){re.context=Ne;return}}else if(!N(q,re.localVars)){re.localVars=new L(q,re.localVars);return}}t.globalVars&&!N(q,re.globalVars)&&(re.globalVars=new L(q,re.globalVars))}function B(q,re){if(re)if(re.block){var Ne=B(q,re.prev);return Ne?Ne==re.prev?re:new V(Ne,re.vars,!0):null}else return N(q,re.vars)?re:new V(re.prev,new L(q,re.vars),!1);else return null}function R(q){return q=="public"||q=="private"||q=="protected"||q=="abstract"||q=="readonly"}function V(q,re,Ne){this.prev=q,this.vars=re,this.block=Ne}function L(q,re){this.name=q,this.next=re}var P=new L("this",new L("arguments",null));function k(){E.state.context=new V(E.state.context,E.state.localVars,!1),E.state.localVars=P}function W(){E.state.context=new V(E.state.context,E.state.localVars,!0),E.state.localVars=null}k.lex=W.lex=!0;function O(){E.state.localVars=E.state.context.vars,E.state.context=E.state.context.prev}O.lex=!0;function X(q,re){var Ne=function(){var Ke=E.state,Ge=Ke.indented;if(Ke.lexical.type=="stat")Ge=Ke.lexical.indented;else for(var zt=Ke.lexical;zt&&zt.type==")"&&zt.align;zt=zt.prev)Ge=zt.indented;Ke.lexical=new A(Ge,E.stream.column(),q,null,Ke.lexical,re)};return Ne.lex=!0,Ne}function ae(){var q=E.state;q.lexical.prev&&(q.lexical.type==")"&&(q.indented=q.lexical.indented),q.lexical=q.lexical.prev)}ae.lex=!0;function J(q){function re(Ne){return Ne==q?_():q==";"||Ne=="}"||Ne==")"||Ne=="]"?D():_(re)}return re}function U(q,re){return q=="var"?_(X("vardef",re),_r,J(";"),ae):q=="keyword a"?_(X("form"),be,U,ae):q=="keyword b"?_(X("form"),U,ae):q=="keyword d"?E.stream.match(/^\s*$/,!1)?_():_(X("stat"),j,J(";"),ae):q=="debugger"?_(J(";")):q=="{"?_(X("}"),W,Jt,ae,O):q==";"?_():q=="if"?(E.state.lexical.info=="else"&&E.state.cc[E.state.cc.length-1]==ae&&E.state.cc.pop()(),_(X("form"),be,U,ae,gr)):q=="function"?_(Ka):q=="for"?_(X("form"),W,lu,U,O,ae):q=="class"||i&&re=="interface"?(E.marked="keyword",_(X("form",q=="class"?q:re),hn,ae)):q=="variable"?i&&re=="declare"?(E.marked="keyword",_(U)):i&&(re=="module"||re=="enum"||re=="type")&&E.stream.match(/^\s*\w/,!1)?(E.marked="keyword",re=="enum"?_(fc):re=="type"?_(Bn,J("operator"),he,J(";")):_(X("form"),qe,J("{"),X("}"),Jt,ae,ae)):i&&re=="namespace"?(E.marked="keyword",_(X("form"),we,U,ae)):i&&re=="abstract"?(E.marked="keyword",_(U)):_(X("stat"),Ee):q=="switch"?_(X("form"),be,J("{"),X("}","switch"),W,Jt,ae,ae,O):q=="case"?_(we,J(":")):q=="default"?_(J(":")):q=="catch"?_(X("form"),k,de,U,ae,O):q=="export"?_(X("stat"),Qf,ae):q=="import"?_(X("stat"),xs,ae):q=="async"?_(U):re=="@"?_(we,U):D(X("stat"),we,J(";"),ae)}function de(q){if(q=="(")return _(Zn,J(")"))}function we(q,re){return K(q,re,!1)}function se(q,re){return K(q,re,!0)}function be(q){return q!="("?D():_(X(")"),j,J(")"),ae)}function K(q,re,Ne){if(E.state.fatArrowAt==E.stream.start){var Ke=Ne?G:_e;if(q=="(")return _(k,X(")"),Ye(Zn,")"),ae,J("=>"),Ke,O);if(q=="variable")return D(k,qe,J("=>"),Ke,O)}var Ge=Ne?pe:ne;return v.hasOwnProperty(q)?_(Ge):q=="function"?_(Ka,Ge):q=="class"||i&&re=="interface"?(E.marked="keyword",_(X("form"),oa,ae)):q=="keyword c"||q=="async"?_(Ne?se:we):q=="("?_(X(")"),j,J(")"),ae,Ge):q=="operator"||q=="spread"?_(Ne?se:we):q=="["?_(X("]"),cc,ae,Ge):q=="{"?ur(Ve,"}",null,Ge):q=="quasi"?D(fe,Ge):q=="new"?_(Z(Ne)):_()}function j(q){return q.match(/[;\}\)\],]/)?D():D(we)}function ne(q,re){return q==","?_(j):pe(q,re,!1)}function pe(q,re,Ne){var Ke=Ne==!1?ne:pe,Ge=Ne==!1?we:se;if(q=="=>")return _(k,Ne?G:_e,O);if(q=="operator")return/\+\+|--/.test(re)||i&&re=="!"?_(Ke):i&&re=="<"&&E.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?_(X(">"),Ye(he,">"),ae,Ke):re=="?"?_(we,J(":"),Ge):_(Ge);if(q=="quasi")return D(fe,Ke);if(q!=";"){if(q=="(")return ur(se,")","call",Ke);if(q==".")return _(Be,Ke);if(q=="[")return _(X("]"),j,J("]"),ae,Ke);if(i&&re=="as")return E.marked="keyword",_(he,Ke);if(q=="regexp")return E.state.lastType=E.marked="operator",E.stream.backUp(E.stream.pos-E.stream.start-1),_(Ge)}}function fe(q,re){return q!="quasi"?D():re.slice(re.length-2)!="${"?_(fe):_(j,Ae)}function Ae(q){if(q=="}")return E.marked="string.special",E.state.tokenize=x,_(fe)}function _e(q){return T(E.stream,E.state),D(q=="{"?U:we)}function G(q){return T(E.stream,E.state),D(q=="{"?U:se)}function Z(q){return function(re){return re=="."?_(q?xe:ge):re=="variable"&&i?_(Ce,q?pe:ne):D(q?se:we)}}function ge(q,re){if(re=="target")return E.marked="keyword",_(ne)}function xe(q,re){if(re=="target")return E.marked="keyword",_(pe)}function Ee(q){return q==":"?_(ae,U):D(ne,J(";"),ae)}function Be(q){if(q=="variable")return E.marked="property",_()}function Ve(q,re){if(q=="async")return E.marked="property",_(Ve);if(q=="variable"||E.style=="keyword"){if(E.marked="property",re=="get"||re=="set")return _(et);var Ne;return i&&E.state.fatArrowAt==E.stream.start&&(Ne=E.stream.match(/^\s*:\s*/,!1))&&(E.state.fatArrowAt=E.stream.pos+Ne[0].length),_(St)}else{if(q=="number"||q=="string")return E.marked=r?"property":E.style+" property",_(St);if(q=="jsonld-keyword")return _(St);if(i&&R(re))return E.marked="keyword",_(Ve);if(q=="[")return _(we,He,J("]"),St);if(q=="spread")return _(se,St);if(re=="*")return E.marked="keyword",_(Ve);if(q==":")return D(St)}}function et(q){return q!="variable"?D(St):(E.marked="property",_(Ka))}function St(q){if(q==":")return _(se);if(q=="(")return D(Ka)}function Ye(q,re,Ne){function Ke(Ge,zt){if(Ne?Ne.indexOf(Ge)>-1:Ge==","){var $r=E.state.lexical;return $r.info=="call"&&($r.pos=($r.pos||0)+1),_(function(Rn,Ln){return Rn==re||Ln==re?D():D(q)},Ke)}return Ge==re||zt==re?_():Ne&&Ne.indexOf(";")>-1?D(q):_(J(re))}return function(Ge,zt){return Ge==re||zt==re?_():D(q,Ke)}}function ur(q,re,Ne){for(var Ke=3;Ke"),he);if(q=="quasi")return D(Xe,ie)}function Fe(q){if(q=="=>")return _(he)}function ke(q){return q.match(/[\}\)\]]/)?_():q==","||q==";"?_(ke):D(Se,ke)}function Se(q,re){if(q=="variable"||E.style=="keyword")return E.marked="property",_(Se);if(re=="?"||q=="number"||q=="string")return _(Se);if(q==":")return _(he);if(q=="[")return _(J("variable"),at,J("]"),Se);if(q=="(")return D(Da,Se);if(!q.match(/[;\}\)\],]/))return _()}function Xe(q,re){return q!="quasi"?D():re.slice(re.length-2)!="${"?_(Xe):_(he,F)}function F(q){if(q=="}")return E.marked="string.special",E.state.tokenize=x,_(Xe)}function Y(q,re){return q=="variable"&&E.stream.match(/^\s*[?:]/,!1)||re=="?"?_(Y):q==":"?_(he):q=="spread"?_(Y):D(he)}function ie(q,re){if(re=="<")return _(X(">"),Ye(he,">"),ae,ie);if(re=="|"||q=="."||re=="&")return _(he);if(q=="[")return _(he,J("]"),ie);if(re=="extends"||re=="implements")return E.marked="keyword",_(he);if(re=="?")return _(he,J(":"),he)}function Ce(q,re){if(re=="<")return _(X(">"),Ye(he,">"),ae,ie)}function tt(){return D(he,xt)}function xt(q,re){if(re=="=")return _(he)}function _r(q,re){return re=="enum"?(E.marked="keyword",_(fc)):D(qe,He,un,jn)}function qe(q,re){if(i&&R(re))return E.marked="keyword",_(qe);if(q=="variable")return C(re),_();if(q=="spread")return _(qe);if(q=="[")return ur(Gi,"]");if(q=="{")return ur(Ti,"}")}function Ti(q,re){return q=="variable"&&!E.stream.match(/^\s*:/,!1)?(C(re),_(un)):(q=="variable"&&(E.marked="property"),q=="spread"?_(qe):q=="}"?D():q=="["?_(we,J("]"),J(":"),Ti):_(J(":"),qe,un))}function Gi(){return D(qe,un)}function un(q,re){if(re=="=")return _(se)}function jn(q){if(q==",")return _(_r)}function gr(q,re){if(q=="keyword b"&&re=="else")return _(X("form","else"),U,ae)}function lu(q,re){if(re=="await")return _(lu);if(q=="(")return _(X(")"),kr,ae)}function kr(q){return q=="var"?_(_r,aa):q=="variable"?_(aa):D(aa)}function aa(q,re){return q==")"?_():q==";"?_(aa):re=="in"||re=="of"?(E.marked="keyword",_(we,aa)):D(we,aa)}function Ka(q,re){if(re=="*")return E.marked="keyword",_(Ka);if(q=="variable")return C(re),_(Ka);if(q=="(")return _(k,X(")"),Ye(Zn,")"),ae,Q,U,O);if(i&&re=="<")return _(X(">"),Ye(tt,">"),ae,Ka)}function Da(q,re){if(re=="*")return E.marked="keyword",_(Da);if(q=="variable")return C(re),_(Da);if(q=="(")return _(k,X(")"),Ye(Zn,")"),ae,Q,O);if(i&&re=="<")return _(X(">"),Ye(tt,">"),ae,Da)}function Bn(q,re){if(q=="keyword"||q=="variable")return E.marked="type",_(Bn);if(re=="<")return _(X(">"),Ye(tt,">"),ae)}function Zn(q,re){return re=="@"&&_(we,Zn),q=="spread"?_(Zn):i&&R(re)?(E.marked="keyword",_(Zn)):i&&q=="this"?_(He,un):D(qe,He,un)}function oa(q,re){return q=="variable"?hn(q,re):ii(q,re)}function hn(q,re){if(q=="variable")return C(re),_(ii)}function ii(q,re){if(re=="<")return _(X(">"),Ye(tt,">"),ae,ii);if(re=="extends"||re=="implements"||i&&q==",")return re=="implements"&&(E.marked="keyword"),_(i?he:we,ii);if(q=="{")return _(X("}"),kn,ae)}function kn(q,re){if(q=="async"||q=="variable"&&(re=="static"||re=="get"||re=="set"||i&&R(re))&&E.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return E.marked="keyword",_(kn);if(q=="variable"||E.style=="keyword")return E.marked="property",_(sa,kn);if(q=="number"||q=="string")return _(sa,kn);if(q=="[")return _(we,He,J("]"),sa,kn);if(re=="*")return E.marked="keyword",_(kn);if(i&&q=="(")return D(Da,kn);if(q==";"||q==",")return _(kn);if(q=="}")return _();if(re=="@")return _(we,kn)}function sa(q,re){if(re=="!"||re=="?")return _(sa);if(q==":")return _(he,un);if(re=="=")return _(se);var Ne=E.state.lexical.prev,Ke=Ne&&Ne.info=="interface";return D(Ke?Da:Ka)}function Qf(q,re){return re=="*"?(E.marked="keyword",_(Do,J(";"))):re=="default"?(E.marked="keyword",_(we,J(";"))):q=="{"?_(Ye(uc,"}"),Do,J(";")):D(U)}function uc(q,re){if(re=="as")return E.marked="keyword",_(J("variable"));if(q=="variable")return D(se,uc)}function xs(q){return q=="string"?_():q=="("?D(we):q=="."?D(ne):D(bs,lc,Do)}function bs(q,re){return q=="{"?ur(bs,"}"):(q=="variable"&&C(re),re=="*"&&(E.marked="keyword"),_(Ko))}function lc(q){if(q==",")return _(bs,lc)}function Ko(q,re){if(re=="as")return E.marked="keyword",_(bs)}function Do(q,re){if(re=="from")return E.marked="keyword",_(we)}function cc(q){return q=="]"?_():D(Ye(se,"]"))}function fc(){return D(X("form"),qe,J("{"),X("}"),Ye(Kf,"}"),ae,ae)}function Kf(){return D(qe,un)}function ep(q,re){return q.lastType=="operator"||q.lastType==","||s.test(re.charAt(0))||/[,.]/.test(re.charAt(0))}function ln(q,re,Ne){return re.tokenize==p&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(re.lastType)||re.lastType=="quasi"&&/\{\s*$/.test(q.string.slice(0,q.pos-(Ne||0)))}return{name:t.name,startState:function(q){var re={tokenize:p,lastType:"sof",cc:[],lexical:new A(-q,0,"block",!1),localVars:t.localVars,context:t.localVars&&new V(null,null,!1),indented:0};return t.globalVars&&typeof t.globalVars=="object"&&(re.globalVars=t.globalVars),re},token:function(q,re){if(q.sol()&&(re.lexical.hasOwnProperty("align")||(re.lexical.align=!1),re.indented=q.indentation(),T(q,re)),re.tokenize!=h&&q.eatSpace())return null;var Ne=re.tokenize(q,re);return c=="comment"?Ne:(re.lastType=c=="operator"&&(f=="++"||f=="--")?"incdec":c,y(re,Ne,c,f,q))},indent:function(q,re,Ne){if(q.tokenize==h||q.tokenize==x)return null;if(q.tokenize!=p)return 0;var Ke=re&&re.charAt(0),Ge=q.lexical,zt;if(!/^\s*else\b/.test(re))for(var $r=q.cc.length-1;$r>=0;--$r){var Rn=q.cc[$r];if(Rn==ae)Ge=Ge.prev;else if(Rn!=gr&&Rn!=O)break}for(;(Ge.type=="stat"||Ge.type=="form")&&(Ke=="}"||(zt=q.cc[q.cc.length-1])&&(zt==ne||zt==pe)&&!/^[,\.=+\-*:?[\(]/.test(re));)Ge=Ge.prev;e&&Ge.type==")"&&Ge.prev.type=="stat"&&(Ge=Ge.prev);var Ln=Ge.type,ws=Ke==Ln;return Ln=="vardef"?Ge.indented+(q.lastType=="operator"||q.lastType==","?Ge.info.length+1:0):Ln=="form"&&Ke=="{"?Ge.indented:Ln=="form"?Ge.indented+Ne.unit:Ln=="stat"?Ge.indented+(ep(q,re)?e||Ne.unit:0):Ge.info=="switch"&&!ws&&t.doubleIndentSwitch!=!1?Ge.indented+(/^(?:case|default)\b/.test(re)?Ne.unit:2*Ne.unit):Ge.align?Ge.column+(ws?0:1):Ge.indented+(ws?0:Ne.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:n?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}var dp=Md({name:"javascript"}),Iue=Md({name:"json",json:!0}),Pue=Md({name:"json",jsonld:!0}),Bue=Md({name:"typescript",typescript:!0});var uH=["true","false","on","off","yes","no"],lH=new RegExp("\\b(("+uH.join(")|(")+"))$","i"),hp={name:"yaml",token:function(t,e){var r=t.peek(),n=e.escaped;if(e.escaped=!1,r=="#"&&(t.pos==0||/\s/.test(t.string.charAt(t.pos-1))))return t.skipToEnd(),"comment";if(t.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(e.literal&&t.indentation()>e.keyCol)return t.skipToEnd(),"string";if(e.literal&&(e.literal=!1),t.sol()){if(e.keyCol=0,e.pair=!1,e.pairStart=!1,t.match("---")||t.match("..."))return"def";if(t.match(/^\s*-\s+/))return"meta"}if(t.match(/^(\{|\}|\[|\])/))return r=="{"?e.inlinePairs++:r=="}"?e.inlinePairs--:r=="["?e.inlineList++:e.inlineList--,"meta";if(e.inlineList>0&&!n&&r==",")return t.next(),"meta";if(e.inlinePairs>0&&!n&&r==",")return e.keyCol=0,e.pair=!1,e.pairStart=!1,t.next(),"meta";if(e.pairStart){if(t.match(/^\s*(\||\>)\s*/))return e.literal=!0,"meta";if(t.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable";if(e.inlinePairs==0&&t.match(/^\s*-?[0-9\.\,]+\s?$/)||e.inlinePairs>0&&t.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(t.match(lH))return"keyword"}return!e.pair&&t.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(e.pair=!0,e.keyCol=t.indentation(),"atom"):e.pair&&t.match(/^:\s*/)?(e.pairStart=!0,"meta"):(e.pairStart=!1,e.escaped=r=="\\",t.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},languageData:{commentTokens:{line:"#"}}};var Sc=class{constructor(e,r){this.range=e,this.tokenClass=r}};var nb=zr(ca());var Lt=class t{static sequence(...e){return nb.P.sequenceMap((...r)=>r.flat(2).filter(n=>n!==void 0),...e)}static separateBy(e,r){return t.sequence(e,t.sequence(r,e).many()).optional([])}static highlight(e,r){return e.node((n,i)=>[new Sc(i,r)])}static highlightStr(e,r){return t.highlight(nb.P.string(e),r)}};var Ps=class{constructor(e,r,n){this.str=e,this.highlights=r.filter(i=>i.range.from.index!==i.range.to.index),this.parsingError=n}getHighlights(){if(this.parsingError===void 0)return this.highlights;let e;return this.str[this.parsingError.parseFailure.furthest.index]===` -`?e={index:this.parsingError.parseFailure.furthest.index+1,column:1,line:this.parsingError.parseFailure.furthest.line+1}:e={index:this.parsingError.parseFailure.furthest.index+1,column:this.parsingError.parseFailure.furthest.column+1,line:this.parsingError.parseFailure.furthest.line},[new Sc({from:this.parsingError.parseFailure.furthest,to:e},"error")]}};function lF(t){if(!t.settings.enableSyntaxHighlighting)return;window.CodeMirror.defineMode("meta-bind-button",r=>({startState:()=>hp.startState?.(4),blankLine:i=>hp.blankLine?.(i,4),copyState:i=>hp.startState?.(4),token:(i,a)=>`line-HyperMD-codeblock ${hp.token?.(i,a)}`})),window.CodeMirror.defineMode("meta-bind-js-view",r=>({startState:()=>dp.startState?.(4),blankLine:i=>dp.blankLine?.(i,4),copyState:i=>dp.startState?.(4),token:(i,a)=>`line-HyperMD-codeblock ${dp.token?.(i,a)}`}));let e=/^\s*(```+|~~~+)/;window.CodeMirror.defineMode("meta-bind",r=>({startState:()=>({str:void 0,mdrcType:void 0,highlights:void 0,line:1}),token:(i,a)=>{if(a.str===void 0){let l=[i.string],u=1,c=i.lookAhead(u);for(;c!==void 0&&!e.test(c)&&(l.push(c),u+=1,c=i.lookAhead(u),!(u>100)););a.str=l.filter(m=>m.trim()!=="").join(` -`);let f=t.api.isInlineFieldDeclarationAndGetType(a.str.trim());f===void 0?a.highlights=new Ps(a.str,[]):(a.fieldType=f,a.highlights=t.api.syntaxHighlighting.highlight(a.str,a.fieldType,!0))}let s=a.highlights.getHighlights().filter(l=>l.range.from.line===a.line).find(l=>l.range.from.column===i.pos+1);return s===void 0?(i.next(),i.eol()&&(a.line+=1),"line-HyperMD-codeblock"):(i.eatWhile(()=>i.pos+1=r&&i.from<=n)return!0;return!1}static checkRangeOverlap(e,r,n,i){return e<=i&&n<=r}static getContent(e,r,n){return e.sliceDoc(r,n)}static getCurrentFile(e){return e.state.field(cF.editorInfoField).file}static existsDecorationBetween(e,r,n){let i=!1;return e.between(r,n,()=>{i=!0}),i}static existsDecorationOfTypeBetween(e,r,n,i){let a=!1;return e.between(n,i,(o,s,l)=>{l.spec.mb_widgetType===r&&(a=!0)}),a}};function fF(t){return pl.ViewPlugin.fromClass(class{constructor(e){this.component=new Rd.Component,this.component.load(),this.decorations=this.renderWidgets(e)??pl.Decoration.none,e.dom.addEventListener("click",r=>this.handleClick(r))}handleClick(e){if(e.target instanceof HTMLElement){let r=e.target;for(;r!==null;){if(r.classList.contains("mb-input")){e.stopPropagation();break}r=r.parentElement}}}isLivePreview(e){return e.field(Rd.editorLivePreviewField)}update(e){this.decorations=this.decorations.map(e.changes),this.updateWidgets(e.view)}updateWidgets(e){this.decorations=this.decorations.update({filter:(r,n,i)=>zC.anyMatch(e.visibleRanges,o=>Bs.checkRangeOverlap(r,n,o.from,o.to))?!0:(i.spec.mb_unload?.(),!1)});for(let{from:r,to:n}of e.visibleRanges)(0,ib.syntaxTree)(e.state).iterate({from:r,to:n,enter:i=>{let a=i.node,o=this.getRenderInfo(e,a);o.widgetType===void 0||o.content===void 0||(o.shouldRender?(this.removeDecoration(a,"field"),this.addDecoration(a,e,"field",o.content,o.widgetType)):o.shouldHighlight?(this.removeDecoration(a,"highlight"),this.addDecoration(a,e,"highlight",o.content,o.widgetType)):this.removeDecoration(a))}})}removeDecoration(e,r){this.decorations.between(e.from-1,e.to+1,(n,i,a)=>{this.decorations=this.decorations.update({filterFrom:n,filterTo:i,filter:(o,s,l)=>{let u=l.spec;return r&&u.mb_widgetType===r?!0:(u.mb_unload?.(),!1)}})})}addDecoration(e,r,n,i,a){let o=e.from-1,s=e.to+1;if(Bs.existsDecorationOfTypeBetween(this.decorations,n,o,s))return;let l=Bs.getCurrentFile(r);if(!l)return;let u=this.renderWidget(e,a,n,i,l),c=Array.isArray(u)?u:[u];c.length!==0&&(this.decorations=this.decorations.update({add:c}))}getRenderInfo(e,r){let n=new Set(r.type.name?.split("_"));if(n.has("inline-code")&&!n.has("formatting")){let i=Bs.checkSelectionOverlap(e.state.selection,r.from-1,r.to+1),a=this.readNode(e,r.from,r.to),o=this.isLivePreview(e.state),s=!i&&o;return{shouldRender:s,shouldHighlight:!s&&t.settings.enableSyntaxHighlighting,content:a.content,widgetType:a.widgetType}}return{shouldRender:!1,shouldHighlight:!1,content:void 0,widgetType:void 0}}readNode(e,r,n){let i=Bs.getContent(e.state,r,n);return{content:i,widgetType:t.api.isInlineFieldDeclarationAndGetType(i)}}renderWidgets(e){let r=Bs.getCurrentFile(e);if(!r)return;let n=[];for(let i of e.visibleRanges)(0,ib.syntaxTree)(e.state).iterate({from:i.from,to:i.to,enter:a=>{let o=a.node,s=this.getRenderInfo(e,o);if(!s.widgetType||!s.content)return;let l;s.shouldRender&&(l=this.renderWidget(o,s.widgetType,"field",s.content,r)),s.shouldHighlight&&(l=this.renderWidget(o,s.widgetType,"highlight",s.content,r)),l&&(Array.isArray(l)?n.push(...l):n.push(l))}});return pl.Decoration.set(n,!0)}renderWidget(e,r,n,i,a){if(n==="field"){let o=t.api.constructMDRCWidget(r,i,a.path,this.component);return pl.Decoration.replace({widget:o,mb_widgetType:"field",mb_unload:()=>{o.renderChild?.unload()}}).range(e.from-1,e.to+1)}else return t.api.syntaxHighlighting.highlight(i,r,!1).getHighlights().map(s=>pl.Decoration.mark({class:`mb-highlight-${s.tokenClass}`}).range(e.from+s.range.from.index,e.from+s.range.to.index))}destroy(){this.component.unload()}},{decorations:e=>e.decorations})}var Qt=class{constructor(e){this.subject=e,this.errors=[]}add(e){e instanceof Error?(e instanceof Jn?this.errors.push(e):this.otherError=e,console.warn(e)):(console.trace(""),console.warn("[MB_ERROR_CONTAINER] received invalid error type",e))}merge(e){return this.errors=this.errors.concat(e.errors),e.otherError&&(this.otherError=e.otherError),this}hasErrors(){if(this.otherError)return!0;for(let e of this.errors)if(e.errorLevel==="ERROR"||e.errorLevel==="CRITICAL")return!0;return!1}hasCriticalErrors(){if(this.otherError)return!0;for(let e of this.errors)if(e.errorLevel==="CRITICAL")return!0;return!1}hasWarnings(){for(let e of this.errors)if(e.errorLevel==="WARNING")return!0;return!1}isEmpty(){return this.errors.length===0&&!this.otherError}getErrors(){let e=this.errors.filter(r=>r.errorLevel==="ERROR"||r.errorLevel==="CRITICAL");return this.otherError?e.concat([this.otherError]):e}getWarnings(){return this.errors.filter(e=>e.errorLevel==="WARNING")}};var gp=zr(Ma()),vp=zr(ca());var vH=vp.P.sequenceMap((t,e,r,n)=>{let i=parseInt(t),a=parseInt(e),o=parseInt(r);return new Na(i,a,o,n)},gp.P_UTILS.digits().skip(vp.P.string(".")),gp.P_UTILS.digits().skip(vp.P.string(".")),gp.P_UTILS.digits(),vp.P.string("-").then(gp.P_UTILS.remaining()).optional()),Na=class t{constructor(e,r,n,i){this.major=e,this.minor=r,this.patch=n,this.prerelease=i}static fromString(e){return Xn(vH,e)}static lessThan(e,r){return e.majorr.major?!1:e.minorr.minor?!1:e.patchr.patch||e.prerelease===void 0?!1:r.prerelease===void 0?!0:e.prereleasen.pluginId===e);if(r===void 0)throw new ll({errorLevel:"CRITICAL",effect:"Dependency violation detected",cause:`Attempted to access dependency ${e} which is not a listed dependency. Please report this error.`});return r}getPlugin(e){return this.plugin.app.plugins.getPlugin(e)}throwPluginNotFound(e){throw new ll({errorLevel:"ERROR",effect:"Dependency violation detected",cause:`Plugin ${e} is required, but not installed. Please install the plugin.`})}checkDependencyVersion(e,r){if(Na.lessThan(r,e.minVersion))throw new ll({errorLevel:"ERROR",effect:"Dependency violation detected",cause:`Plugin ${e.pluginId} is outdated. Required version is at least ${e.minVersion}, installed version is ${r}. Please update the plugin.`});if(e.maxVersion!==void 0&&(Na.greaterThan(r,e.maxVersion)||Na.equals(r,e.maxVersion)))throw new ll({errorLevel:"ERROR",effect:"Dependency violation detected",cause:`Plugin ${e.pluginId} is too new. Required version is lower than ${e.maxVersion}, installed version is ${r}. Please downgrade the plugin.`})}checkDependency(e){let r=this.getDependency(e),n=this.getPlugin(e);if(n==null)throw this.throwPluginNotFound(e),Error("unreachable");let i=Na.fromString(n.manifest.version);return this.checkDependencyVersion(r,i),n}checkDependencyOnStartup(e){let r=this.getDependency(e);if(!this.plugin.app.plugins.enabledPlugins.has(e))throw this.throwPluginNotFound(e),Error("unreachable");let n=Na.fromString(this.plugin.app.plugins.manifests[e].version);this.checkDependencyVersion(r,n)}checkDependenciesOnStartup(){let e=new Qt("Dependency Validation");for(let r of this.dependencies)if(r.checkOnStartup)try{this.checkDependencyOnStartup(r.pluginId)}catch(n){e.add(n)}return e.hasErrors()?(this.plugin.internal.openErrorCollectionViewModal({text:"The following errors were detected during dependency validation. The plugin won't load until these errors have been resolved. Please install the required plugins and restart Obsidian.",errorCollection:e}),!0):!1}};var gF=require("obsidian");var pF={date:"date",datePicker:"datePicker",dateTime:"dateTime",editor:"editor",imageSuggester:'imageSuggester(optionQuery(""))',imageListSuggester:'imageListSuggester(optionQuery(""))',inlineList:"inlineList",inlineListSuggester:"inlineListSuggester(option(apple), option(banana), option(lemon))",inlineSelect:"inlineSelect(option(apple), option(banana), option(lemon))",list:"list",listSuggester:"listSuggester(option(apple), option(banana), option(lemon))",multiSelect:"multiSelect(option(apple), option(banana), option(lemon))",number:"number",progressBar:"progressBar",select:"select(option(apple), option(banana), option(lemon))",slider:"slider(addLabels)",suggester:"suggester(option(apple), option(banana), option(lemon))",text:"text",textArea:"textArea",time:"time",toggle:"toggle",invalid:""},ab={image:[{title:"Image",declaration:"VIEW[{globalMemory^MB_VF_image_example}][image]",display:"VIEW[{imageExampleProperty}][image]",inputField:'INPUT[imageSuggester(optionQuery("")):globalMemory^MB_VF_image_example]'}],link:[{title:"Link",declaration:"VIEW[{globalMemory^MB_VF_link_example}][link]",display:"VIEW[{linkExampleProperty}][link]",inputField:'INPUT[suggester(optionQuery("")):globalMemory^MB_VF_link_example]'}],math:[{title:"Math",declaration:"VIEW[{globalMemory^MB_VF_math_example} + 2][math]",display:"VIEW[{mathExampleProperty} + 2][math]",inputField:"INPUT[number:globalMemory^MB_VF_math_example]"}],text:[{title:"Text",declaration:"VIEW[some text {globalMemory^MB_VF_text_example}][text]",display:"VIEW[some text {textExampleProperty}][text]",inputField:"INPUT[text:globalMemory^MB_VF_text_example]"},{title:"Markdown",declaration:"VIEW[**some markdown** {globalMemory^MB_VF_text_markdown_example}][text(renderMarkdown)]",display:"VIEW[**some markdown** {markdownExampleProperty}][text(renderMarkdown)]",inputField:"INPUT[text:globalMemory^MB_VF_text_markdown_example]"}],invalid:[]};function mF(t){let e=[];for(let[r,n]of Object.entries(pF)){if(n==="")continue;let i=t.api.inputFieldParser.fromString(`INPUT[${n}]`),a=t.api.inputFieldParser.fromSimpleDeclaration({inputFieldType:void 0,templateName:void 0,bindTarget:void 0,arguments:[{name:"showcase",value:["true"]},{name:"title",value:[r]}]});i=t.api.inputFieldParser.merge(i,a),i.declarationString=`INPUT[${n}]`;let o=t.api.inputFieldParser.validate(i,"",void 0);e.push([r,o])}return e}function dF(t){let e=[];for(let[r,n]of Object.entries(pF)){if(n==="")continue;let i=r,a="";ud[i].allowInline?a=`\`INPUT[${n}:exampleProperty]\``:a=` -\`\`\`meta-bind -INPUT[${n}:exampleProperty] -\`\`\` -`,e.push([i,a])}return e.sort((r,n)=>r[0].localeCompare(n[0])),e}function hF(t){let e=[];for(let r of Object.values(ab))for(let n of r)e.push([n.title,`\`${n.display}\``]);return e.sort((r,n)=>r[0].localeCompare(n[0])),e}function vF(t,e,r){let n=dF(r),i=hF(r);t.addItem(a=>{a.setTitle("Meta Bind"),a.setIcon("blocks");let o=a.setSubmenu();o.addItem(s=>{s.setTitle("Input Field");let l=s.setSubmenu();for(let[u,c]of n)l.addItem(f=>{f.setTitle(u),f.onClick(()=>Vd(e,c))})}),o.addItem(s=>{s.setTitle("View Field");let l=s.setSubmenu();for(let[u,c]of i)l.addItem(f=>{f.setTitle(u),f.onClick(()=>Vd(e,c))})}),o.addItem(s=>{s.setTitle("Inline Button"),s.onClick(()=>{Vd(e,"`BUTTON[example-id]`")})}),o.addItem(s=>{s.setTitle("Button"),s.onClick(()=>{r.internal.openButtonBuilderModal({onOkay:l=>{Vd(e,`\`\`\`meta-bind-button -${(0,gF.stringifyYaml)(l)} -\`\`\``)},submitText:"Insert"})})})})}function Vd(t,e){t.replaceSelection(e)}var m9=require("obsidian");var NF=zr(Ma());var Sn=zr(Ma()),lb=zr(ca());var _F=zr(Ma()),Zi=zr(ca());var yp=zr(Ma()),Fa=zr(ca()),Mi=Fa.P.sequence(Fa.P.or(yp.P_UTILS.unicodeLetter(),Fa.P.oneOf("_$")),Fa.P.or(yp.P_UTILS.unicodeAlphanumeric(),Fa.P.oneOf("-_$")).many()).map(t=>t[0]+t[1].join("")).describe("identifier"),yF=Fa.P.sequenceMap((t,e)=>t+e.map(r=>r[0]+r[1]).join(""),Mi,Fa.P.sequence(yp.P_UTILS.optionalWhitespace(),Mi).many()).describe("identifier with spaces"),yH=Fa.P.string("\\").then(yp.P_UTILS.any()).map(t=>t==="'"?"'":t==="\\"?"\\":"\\"+t);function xF(t){return Fa.P.or(yH,Fa.P.noneOf(t+"\\")).many().map(e=>e.join("")).trim(Fa.P.string(t))}var Ud=xF("'"),bF=xF('"'),Dc=Fa.P.manyNotOf("{}[]#^|:?").box("file path");function ji(t,e){return{value:t,position:e}}function Ia(t){if(t!==void 0)return typeof t=="string"?{value:t}:t}var dl=(r=>(r.OBJECT="object",r.ARRAY="array",r))(dl||{}),qd=class{constructor(e,r,n){this.parent=e,this.access=r,this.child=n}};function xH(t,e){return t[e]}function wF(t,e,r){t[e]=r}var ml=class{constructor(e,r){if(this.type=e,this.prop=e==="object"?r:"",this.index=e==="array"?Number(r):0,Number.isNaN(this.index))throw new Error("can not access array with non number index")}get(e){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");return new qd(e,this,xH(e,this.prop))}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");return new qd(e,this,e[this.index])}}set(e,r){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");wF(e,this.prop,r)}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");e[this.index]=r}}create(e){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");wF(e,this.prop,void 0)}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");e[this.index]=void 0}}};var AF=Mi.node((t,e)=>({type:"object",prop:ji(t,e)})),ob=Zi.P.or(_F.P_UTILS.digits().wrap(Zi.P.string("["),Zi.P.string("]")).node((t,e)=>({type:"array",prop:ji(t,e)})),bF.wrap(Zi.P.string("["),Zi.P.string("]")).node((t,e)=>({type:"object",prop:ji(t,e)}))),bH=Zi.P.or(Zi.P.sequenceMap(t=>({storagePath:void 0,listenToChildren:!1,storageProp:t}),ob.atLeast(1)),Zi.P.sequenceMap((t,e)=>({storagePath:void 0,listenToChildren:!1,storageProp:[t,...e]}),AF,ob.many())),wH=Zi.P.sequenceMap((t,e)=>[t,...e],AF,ob.many()),sb=Zi.P.sequenceMap((t,e)=>(t.storageProp=t.storageProp.concat(e.flat()),t),bH,Zi.P.string(".").then(wH).many()),rs=Zi.P.sequenceMap((t,e,r)=>(r.storageType=t,r.storagePath=e,r),Mi.describe("storage type").node(ji).skip(Zi.P.string("^").describe('storage type separator "^"')).optional(),Dc.describe("storage path").node(ji).skip(Zi.P.string("#").describe('storage/file path separator "#"')).optional(),sb.describe("property path")).box("bind target");var zd=zr(Ma()),ns=zr(ca());var ub=ns.P.regexp(/^[^()',]+/).describe("any character except parentheses, single quotation marks and commas"),_H=ns.P.or(Ud,ub).node(ji),AH=ns.P.separateBy(_H,ns.P.string(",").describe('argument value separator ","').trim(zd.P_UTILS.optionalWhitespace())),SH=ns.P.sequenceMap((t,e)=>({name:t,value:e}),Mi.node(ji),AH.trim(zd.P_UTILS.optionalWhitespace()).wrap(ns.P.string("(").describe('argument value paren "("'),ns.P.string(")").describe('argument value paren ")"')).optional([])),xp=ns.P.separateBy(SH,ns.P.string(",").describe('argument separator ","').trim(zd.P_UTILS.optionalWhitespace()));var fa=zr(Ma()),Un=zr(ca());var EH=Un.P.string("\\").then(fa.P_UTILS.any()).map(t=>t==="["?"[":t==="]"?"]":t==="{"?"{":t==="}"?"}":t==="\\"?"\\":"\\"+t),Hd=Un.P.sequenceMap((t,e)=>t+e.flat().join(""),Un.P.manyNotOf("{}[]\\"),Un.P.sequence(EH,Un.P.manyNotOf("{}[]\\")).many()).box("View Field Content"),TH=Un.P.sequenceMap((t,e)=>[t,...e.flat()],Hd,Un.P.sequence(rs.wrapString("{","}"),Hd).many()),DH=Un.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{viewFieldType:t,writeToBindTarget:n,arguments:e,templateDeclaration:void 0}},Mi.node(ji).trim(fa.P_UTILS.optionalWhitespace()).optional().describe("input field type"),xp.trim(fa.P_UTILS.optionalWhitespace()).wrapString("(",")").trim(fa.P_UTILS.optionalWhitespace()).optional([]),Un.P.sequence(Un.P.string(":").trim(fa.P_UTILS.optionalWhitespace()),rs).trim(fa.P_UTILS.optionalWhitespace()).optional()),SF=Un.P.sequenceMap((t,e,r,n)=>n===void 0?{viewFieldType:void 0,writeToBindTarget:void 0,arguments:[],templateDeclaration:e}:(n.templateDeclaration=e,n),Un.P.string("VIEW"),TH.wrapString("[","]"),fa.P_UTILS.optionalWhitespace(),DH.wrapString("[","]").optional(),fa.P_UTILS.eof()),MH=Un.P.sequenceMap((t,e,r,n)=>(e!==void 0&&(t.listenToChildren=!0),{bindTarget:t,name:n}),rs.wrapString("{","}"),Un.P.string(" and children").optional(),Un.P.string(" as "),Mi),EF=Un.P.sequenceMap((t,e,r,n)=>({bindTargetMappings:t,writeToBindTarget:e,hidden:r!==void 0,code:n}),MH.separateBy(fa.P_UTILS.whitespace()).skip(fa.P_UTILS.whitespace()),Un.P.string("save to ").then(rs.wrapString("{","}")).skip(fa.P_UTILS.whitespace()).optional(),Un.P.string("hidden").skip(fa.P_UTILS.whitespace()).optional(),Un.P.string("---").then(fa.P_UTILS.remaining()));var cb=Lt.highlight(Mi,"ident"),Gd=Lt.highlight(Mi,"keyword"),fb=Lt.highlightStr(",","control"),Wd=Lt.highlightStr("(","control"),Yd=Lt.highlightStr(")","control"),Mc=Lt.highlightStr("[","control"),Cc=Lt.highlightStr("]","control"),CH=Lt.highlight(Ud,"string"),NH=Lt.highlight(ub,"ident"),FH=lb.P.or(NH,CH),IH=Lt.separateBy(FH,fb.trim(Sn.P_UTILS.optionalWhitespace())),PH=Lt.sequence(Gd,Lt.sequence(Wd,IH.trim(Sn.P_UTILS.optionalWhitespace()),Yd).optional()),pb=Lt.separateBy(PH,fb.trim(Sn.P_UTILS.optionalWhitespace())),Nc=Lt.sequence(Lt.sequence(cb,Lt.highlightStr("^","control")).optional(),Lt.sequence(Lt.highlight(Dc,"ident"),Lt.highlightStr("#","control")).optional(),Lt.highlight(sb,"ident")),BH=Lt.sequence(Gd.trim(Sn.P_UTILS.optionalWhitespace()),Lt.sequence(Wd,pb.trim(Sn.P_UTILS.optionalWhitespace()),Yd).trim(Sn.P_UTILS.optionalWhitespace()).optional(),Lt.sequence(Lt.highlightStr(":","control").trim(Sn.P_UTILS.optionalWhitespace()),Nc).trim(Sn.P_UTILS.optionalWhitespace()).optional()),kH=Lt.sequence(Gd.trim(Sn.P_UTILS.optionalWhitespace()).optional(),Lt.sequence(Wd,pb.trim(Sn.P_UTILS.optionalWhitespace()),Yd).trim(Sn.P_UTILS.optionalWhitespace()).optional(),Lt.sequence(Lt.highlightStr(":","control").trim(Sn.P_UTILS.optionalWhitespace()),Nc).trim(Sn.P_UTILS.optionalWhitespace()).optional()),DF=lb.P.or(Lt.sequence(Lt.highlightStr("INPUT","control"),Mc,cb.trim(Sn.P_UTILS.optionalWhitespace()),Cc.skip(Sn.P_UTILS.optionalWhitespace()),Mc,kH,Cc),Lt.sequence(Lt.highlightStr("INPUT","control"),Mc,BH,Cc)),TF=Lt.highlight(Hd,"ident"),$H=Lt.sequence(Lt.highlightStr("{","string"),Nc,Lt.highlightStr("}","string")),OH=Lt.sequence(TF,Lt.sequence($H,TF).many()),RH=Lt.sequence(Gd.trim(Sn.P_UTILS.optionalWhitespace()).optional(),Lt.sequence(Wd,pb.trim(Sn.P_UTILS.optionalWhitespace()).optional(),Yd).trim(Sn.P_UTILS.optionalWhitespace()).optional(),Lt.sequence(Lt.highlightStr(":","control").trim(Sn.P_UTILS.optionalWhitespace()),Nc).trim(Sn.P_UTILS.optionalWhitespace()).optional()),MF=Lt.sequence(Lt.highlightStr("VIEW","control"),Mc,OH,Cc,Lt.sequence(Mc.skip(Sn.P_UTILS.optionalWhitespace()),RH,Cc).optional()),CF=Lt.sequence(Lt.highlightStr("BUTTON","control"),Mc,Lt.separateBy(cb,fb.trim(Sn.P_UTILS.optionalWhitespace())),Cc);var jd=class{constructor(e){this.plugin=e}highlightInputFieldDeclaration(e,r){return this.highlightWithParser(e,r,DF)}highlightViewFieldDeclaration(e,r){return this.highlightWithParser(e,r,MF)}highlightInlineButtonDeclaration(e,r){return this.highlightWithParser(e,r,CF)}highlight(e,r,n){if(r==="INPUT")return this.highlightInputFieldDeclaration(e,n);if(r==="VIEW")return this.highlightViewFieldDeclaration(e,n);if(r==="BUTTON_GROUP")return this.highlightInlineButtonDeclaration(e,n);throw new Error(`Unknown MDRCType ${r}`)}highlightBindTarget(e,r){return this.highlightWithParser(e,r,Nc)}highlightWithParser(e,r,n){try{return r?new Ps(e,Xn(n.trim(NF.P_UTILS.optionalWhitespace()).thenEof(),e)):new Ps(e,Xn(n.thenEof(),e))}catch(i){return i instanceof up?new Ps(e,[],i):(console.error(i),new Ps(e,[]))}}};var on=(i=>(i.DEFAULT="default",i.PRIMARY="primary",i.DESTRUCTIVE="destructive",i.PLAIN="plain",i))(on||{}),Kn=(d=>(d.COMMAND="command",d.JS="js",d.OPEN="open",d.INPUT="input",d.SLEEP="sleep",d.TEMPLATER_CREATE_NOTE="templaterCreateNote",d.RUN_TEMPLATER_FILE="runTemplaterFile",d.UPDATE_METADATA="updateMetadata",d.CREATE_NOTE="createNote",d.REPLACE_IN_NOTE="replaceInNote",d.REGEXP_REPLACE_IN_NOTE="regexpReplaceInNote",d.REPLACE_SELF="replaceSelf",d.INSERT_INTO_NOTE="insertIntoNote",d.INLINE_JS="inlineJS",d))(Kn||{});var Ir;(function(t){t.assertEqual=i=>i;function e(i){}t.assertIs=e;function r(i){throw new Error}t.assertNever=r,t.arrayToEnum=i=>{let a={};for(let o of i)a[o]=o;return a},t.getValidEnumValues=i=>{let a=t.objectKeys(i).filter(s=>typeof i[i[s]]!="number"),o={};for(let s of a)o[s]=i[s];return t.objectValues(o)},t.objectValues=i=>t.objectKeys(i).map(function(a){return i[a]}),t.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{let a=[];for(let o in i)Object.prototype.hasOwnProperty.call(i,o)&&a.push(o);return a},t.find=(i,a)=>{for(let o of i)if(a(o))return o},t.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function n(i,a=" | "){return i.map(o=>typeof o=="string"?`'${o}'`:o).join(a)}t.joinValues=n,t.jsonStringifyReplacer=(i,a)=>typeof a=="bigint"?a.toString():a})(Ir||(Ir={}));var db;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(db||(db={}));var dt=Ir.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),$s=t=>{switch(typeof t){case"undefined":return dt.undefined;case"string":return dt.string;case"number":return isNaN(t)?dt.nan:dt.number;case"boolean":return dt.boolean;case"function":return dt.function;case"bigint":return dt.bigint;case"symbol":return dt.symbol;case"object":return Array.isArray(t)?dt.array:t===null?dt.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?dt.promise:typeof Map<"u"&&t instanceof Map?dt.map:typeof Set<"u"&&t instanceof Set?dt.set:typeof Date<"u"&&t instanceof Date?dt.date:dt.object;default:return dt.unknown}},Ue=Ir.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),LH=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),Pa=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(a){return a.message},n={_errors:[]},i=a=>{for(let o of a.issues)if(o.code==="invalid_union")o.unionErrors.map(i);else if(o.code==="invalid_return_type")i(o.returnTypeError);else if(o.code==="invalid_arguments")i(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let s=n,l=0;for(;lr.message){let r={},n=[];for(let i of this.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};Pa.create=t=>new Pa(t);var Pc=(t,e)=>{let r;switch(t.code){case Ue.invalid_type:t.received===dt.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case Ue.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,Ir.jsonStringifyReplacer)}`;break;case Ue.unrecognized_keys:r=`Unrecognized key(s) in object: ${Ir.joinValues(t.keys,", ")}`;break;case Ue.invalid_union:r="Invalid input";break;case Ue.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Ir.joinValues(t.options)}`;break;case Ue.invalid_enum_value:r=`Invalid enum value. Expected ${Ir.joinValues(t.options)}, received '${t.received}'`;break;case Ue.invalid_arguments:r="Invalid function arguments";break;case Ue.invalid_return_type:r="Invalid function return type";break;case Ue.invalid_date:r="Invalid date";break;case Ue.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:Ir.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case Ue.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case Ue.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case Ue.custom:r="Invalid input";break;case Ue.invalid_intersection_types:r="Intersection results could not be merged";break;case Ue.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case Ue.not_finite:r="Number must be finite";break;default:r=e.defaultError,Ir.assertNever(t)}return{message:r}},PF=Pc;function VH(t){PF=t}function Zd(){return PF}var Jd=t=>{let{data:e,path:r,errorMaps:n,issueData:i}=t,a=[...r,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s="",l=n.filter(u=>!!u).slice().reverse();for(let u of l)s=u(o,{data:e,defaultError:s}).message;return{...i,path:a,message:s}},UH=[];function ct(t,e){let r=Zd(),n=Jd({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===Pc?void 0:Pc].filter(i=>!!i)});t.common.issues.push(n)}var Ci=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let i of r){if(i.status==="aborted")return Zt;i.status==="dirty"&&e.dirty(),n.push(i.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let i of r){let a=await i.key,o=await i.value;n.push({key:a,value:o})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let i of r){let{key:a,value:o}=i;if(a.status==="aborted"||o.status==="aborted")return Zt;a.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof o.value<"u"||i.alwaysSet)&&(n[a.value]=o.value)}return{status:e.value,value:n}}},Zt=Object.freeze({status:"aborted"}),Ic=t=>({status:"dirty",value:t}),Ji=t=>({status:"valid",value:t}),hb=t=>t.status==="aborted",gb=t=>t.status==="dirty",hl=t=>t.status==="valid",_p=t=>typeof Promise<"u"&&t instanceof Promise;function Xd(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)}function BF(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r}var Mt;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(Mt||(Mt={}));var bp,wp,io=class{constructor(e,r,n,i){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},FF=(t,e)=>{if(hl(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Pa(t.common.issues);return this._error=r,this._error}}};function mr(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:i}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(o,s)=>{var l,u;let{message:c}=t;return o.code==="invalid_enum_value"?{message:c??s.defaultError}:typeof s.data>"u"?{message:(l=c??n)!==null&&l!==void 0?l:s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:(u=c??r)!==null&&u!==void 0?u:s.defaultError}},description:i}}var dr=class{get description(){return this._def.description}_getType(e){return $s(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:$s(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Ci,ctx:{common:e.parent.common,data:e.data,parsedType:$s(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(_p(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){var n;let i={common:{issues:[],async:(n=r?.async)!==null&&n!==void 0?n:!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:$s(e)},a=this._parseSync({data:e,path:i.path,parent:i});return FF(i,a)}"~validate"(e){var r,n;let i={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:$s(e)};if(!this["~standard"].async)try{let a=this._parseSync({data:e,path:[],parent:i});return hl(a)?{value:a.value}:{issues:i.common.issues}}catch(a){!((n=(r=a?.message)===null||r===void 0?void 0:r.toLowerCase())===null||n===void 0)&&n.includes("encountered")&&(this["~standard"].async=!0),i.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:i}).then(a=>hl(a)?{value:a.value}:{issues:i.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:$s(e)},i=this._parse({data:e,path:n.path,parent:n}),a=await(_p(i)?i:Promise.resolve(i));return FF(n,a)}refine(e,r){let n=i=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(i):r;return this._refinement((i,a)=>{let o=e(i),s=()=>a.addIssue({code:Ue.custom,...n(i)});return typeof Promise<"u"&&o instanceof Promise?o.then(l=>l?!0:(s(),!1)):o?!0:(s(),!1)})}refinement(e,r){return this._refinement((n,i)=>e(n)?!0:(i.addIssue(typeof r=="function"?r(n,i):r),!1))}_refinement(e){return new Ba({schema:this,typeName:Wt.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return no.create(this,this._def)}nullable(){return as.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Rs.create(this)}promise(){return yu.create(this,this._def)}or(e){return _l.create([this,e],this._def)}and(e){return Al.create(this,e,this._def)}transform(e){return new Ba({...mr(this._def),schema:this,typeName:Wt.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Ml({...mr(this._def),innerType:this,defaultValue:r,typeName:Wt.ZodDefault})}brand(){return new Ap({typeName:Wt.ZodBranded,type:this,...mr(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Cl({...mr(this._def),innerType:this,catchValue:r,typeName:Wt.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Sp.create(this,e)}readonly(){return Nl.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},qH=/^c[^\s-]{8,}$/i,zH=/^[0-9a-z]+$/,HH=/^[0-9A-HJKMNP-TV-Z]{26}$/i,GH=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,WH=/^[a-z0-9_-]{21}$/i,YH=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,jH=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ZH=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,JH="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",mb,XH=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,QH=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,KH=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,eG=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,tG=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,rG=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,kF="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",nG=new RegExp(`^${kF}$`);function $F(t){let e="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`),e}function iG(t){return new RegExp(`^${$F(t)}$`)}function OF(t){let e=`${kF}T${$F(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function aG(t,e){return!!((e==="v4"||!e)&&XH.test(t)||(e==="v6"||!e)&&KH.test(t))}function oG(t,e){if(!YH.test(t))return!1;try{let[r]=t.split("."),n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));return!(typeof i!="object"||i===null||!i.typ||!i.alg||e&&i.alg!==e)}catch{return!1}}function sG(t,e){return!!((e==="v4"||!e)&&QH.test(t)||(e==="v6"||!e)&&eG.test(t))}var gu=class t extends dr{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==dt.string){let a=this._getOrReturnCtx(e);return ct(a,{code:Ue.invalid_type,expected:dt.string,received:a.parsedType}),Zt}let n=new Ci,i;for(let a of this._def.checks)if(a.kind==="min")e.data.lengtha.value&&(i=this._getOrReturnCtx(e,i),ct(i,{code:Ue.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind==="length"){let o=e.data.length>a.value,s=e.data.lengthe.test(i),{validation:r,code:Ue.invalid_string,...Mt.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Mt.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Mt.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Mt.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Mt.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Mt.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Mt.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Mt.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Mt.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Mt.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Mt.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Mt.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Mt.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Mt.errToObj(e)})}datetime(e){var r,n;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:(r=e?.offset)!==null&&r!==void 0?r:!1,local:(n=e?.local)!==null&&n!==void 0?n:!1,...Mt.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Mt.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Mt.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...Mt.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...Mt.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...Mt.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...Mt.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...Mt.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...Mt.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...Mt.errToObj(r)})}nonempty(e){return this.min(1,Mt.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value{var e;return new gu({checks:[],typeName:Wt.ZodString,coerce:(e=t?.coerce)!==null&&e!==void 0?e:!1,...mr(t)})};function uG(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,i=r>n?r:n,a=parseInt(t.toFixed(i).replace(".","")),o=parseInt(e.toFixed(i).replace(".",""));return a%o/Math.pow(10,i)}var gl=class t extends dr{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==dt.number){let a=this._getOrReturnCtx(e);return ct(a,{code:Ue.invalid_type,expected:dt.number,received:a.parsedType}),Zt}let n,i=new Ci;for(let a of this._def.checks)a.kind==="int"?Ir.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.invalid_type,expected:"integer",received:"float",message:a.message}),i.dirty()):a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),i.dirty()):a.kind==="multipleOf"?uG(e.data,a.value)!==0&&(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.not_finite,message:a.message}),i.dirty()):Ir.assertNever(a);return{status:i.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,Mt.toString(r))}gt(e,r){return this.setLimit("min",e,!1,Mt.toString(r))}lte(e,r){return this.setLimit("max",e,!0,Mt.toString(r))}lt(e,r){return this.setLimit("max",e,!1,Mt.toString(r))}setLimit(e,r,n,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:Mt.toString(i)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Mt.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Mt.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Mt.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Mt.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Mt.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:Mt.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:Mt.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Mt.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Mt.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Ir.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew gl({checks:[],typeName:Wt.ZodNumber,coerce:t?.coerce||!1,...mr(t)});var vl=class t extends dr{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==dt.bigint)return this._getInvalidInput(e);let n,i=new Ci;for(let a of this._def.checks)a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),i.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),ct(n,{code:Ue.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):Ir.assertNever(a);return{status:i.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return ct(r,{code:Ue.invalid_type,expected:dt.bigint,received:r.parsedType}),Zt}gte(e,r){return this.setLimit("min",e,!0,Mt.toString(r))}gt(e,r){return this.setLimit("min",e,!1,Mt.toString(r))}lte(e,r){return this.setLimit("max",e,!0,Mt.toString(r))}lt(e,r){return this.setLimit("max",e,!1,Mt.toString(r))}setLimit(e,r,n,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:Mt.toString(i)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Mt.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Mt.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Mt.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Mt.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:Mt.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value{var e;return new vl({checks:[],typeName:Wt.ZodBigInt,coerce:(e=t?.coerce)!==null&&e!==void 0?e:!1,...mr(t)})};var yl=class extends dr{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==dt.boolean){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.boolean,received:n.parsedType}),Zt}return Ji(e.data)}};yl.create=t=>new yl({typeName:Wt.ZodBoolean,coerce:t?.coerce||!1,...mr(t)});var xl=class t extends dr{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==dt.date){let a=this._getOrReturnCtx(e);return ct(a,{code:Ue.invalid_type,expected:dt.date,received:a.parsedType}),Zt}if(isNaN(e.data.getTime())){let a=this._getOrReturnCtx(e);return ct(a,{code:Ue.invalid_date}),Zt}let n=new Ci,i;for(let a of this._def.checks)a.kind==="min"?e.data.getTime()a.value&&(i=this._getOrReturnCtx(e,i),ct(i,{code:Ue.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),n.dirty()):Ir.assertNever(a);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:Mt.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:Mt.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew xl({checks:[],coerce:t?.coerce||!1,typeName:Wt.ZodDate,...mr(t)});var Bc=class extends dr{_parse(e){if(this._getType(e)!==dt.symbol){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.symbol,received:n.parsedType}),Zt}return Ji(e.data)}};Bc.create=t=>new Bc({typeName:Wt.ZodSymbol,...mr(t)});var bl=class extends dr{_parse(e){if(this._getType(e)!==dt.undefined){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.undefined,received:n.parsedType}),Zt}return Ji(e.data)}};bl.create=t=>new bl({typeName:Wt.ZodUndefined,...mr(t)});var wl=class extends dr{_parse(e){if(this._getType(e)!==dt.null){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.null,received:n.parsedType}),Zt}return Ji(e.data)}};wl.create=t=>new wl({typeName:Wt.ZodNull,...mr(t)});var vu=class extends dr{constructor(){super(...arguments),this._any=!0}_parse(e){return Ji(e.data)}};vu.create=t=>new vu({typeName:Wt.ZodAny,...mr(t)});var Os=class extends dr{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ji(e.data)}};Os.create=t=>new Os({typeName:Wt.ZodUnknown,...mr(t)});var Bo=class extends dr{_parse(e){let r=this._getOrReturnCtx(e);return ct(r,{code:Ue.invalid_type,expected:dt.never,received:r.parsedType}),Zt}};Bo.create=t=>new Bo({typeName:Wt.ZodNever,...mr(t)});var kc=class extends dr{_parse(e){if(this._getType(e)!==dt.undefined){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.void,received:n.parsedType}),Zt}return Ji(e.data)}};kc.create=t=>new kc({typeName:Wt.ZodVoid,...mr(t)});var Rs=class t extends dr{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),i=this._def;if(r.parsedType!==dt.array)return ct(r,{code:Ue.invalid_type,expected:dt.array,received:r.parsedType}),Zt;if(i.exactLength!==null){let o=r.data.length>i.exactLength.value,s=r.data.lengthi.maxLength.value&&(ct(r,{code:Ue.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,s)=>i.type._parseAsync(new io(r,o,r.path,s)))).then(o=>Ci.mergeArray(n,o));let a=[...r.data].map((o,s)=>i.type._parseSync(new io(r,o,r.path,s)));return Ci.mergeArray(n,a)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:Mt.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:Mt.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:Mt.toString(r)}})}nonempty(e){return this.min(1,e)}};Rs.create=(t,e)=>new Rs({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Wt.ZodArray,...mr(e)});function Fc(t){if(t instanceof pa){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=no.create(Fc(n))}return new pa({...t._def,shape:()=>e})}else return t instanceof Rs?new Rs({...t._def,type:Fc(t.element)}):t instanceof no?no.create(Fc(t.unwrap())):t instanceof as?as.create(Fc(t.unwrap())):t instanceof is?is.create(t.items.map(e=>Fc(e))):t}var pa=class t extends dr{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Ir.objectKeys(e);return this._cached={shape:e,keys:r}}_parse(e){if(this._getType(e)!==dt.object){let u=this._getOrReturnCtx(e);return ct(u,{code:Ue.invalid_type,expected:dt.object,received:u.parsedType}),Zt}let{status:n,ctx:i}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof Bo&&this._def.unknownKeys==="strip"))for(let u in i.data)o.includes(u)||s.push(u);let l=[];for(let u of o){let c=a[u],f=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new io(i,f,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof Bo){let u=this._def.unknownKeys;if(u==="passthrough")for(let c of s)l.push({key:{status:"valid",value:c},value:{status:"valid",value:i.data[c]}});else if(u==="strict")s.length>0&&(ct(i,{code:Ue.unrecognized_keys,keys:s}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let c of s){let f=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new io(i,f,i.path,c)),alwaysSet:c in i.data})}}return i.common.async?Promise.resolve().then(async()=>{let u=[];for(let c of l){let f=await c.key,m=await c.value;u.push({key:f,value:m,alwaysSet:c.alwaysSet})}return u}).then(u=>Ci.mergeObjectSync(n,u)):Ci.mergeObjectSync(n,l)}get shape(){return this._def.shape()}strict(e){return Mt.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{var i,a,o,s;let l=(o=(a=(i=this._def).errorMap)===null||a===void 0?void 0:a.call(i,r,n).message)!==null&&o!==void 0?o:n.defaultError;return r.code==="unrecognized_keys"?{message:(s=Mt.errToObj(e).message)!==null&&s!==void 0?s:l}:{message:l}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Wt.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};return Ir.objectKeys(e).forEach(n=>{e[n]&&this.shape[n]&&(r[n]=this.shape[n])}),new t({...this._def,shape:()=>r})}omit(e){let r={};return Ir.objectKeys(this.shape).forEach(n=>{e[n]||(r[n]=this.shape[n])}),new t({...this._def,shape:()=>r})}deepPartial(){return Fc(this)}partial(e){let r={};return Ir.objectKeys(this.shape).forEach(n=>{let i=this.shape[n];e&&!e[n]?r[n]=i:r[n]=i.optional()}),new t({...this._def,shape:()=>r})}required(e){let r={};return Ir.objectKeys(this.shape).forEach(n=>{if(e&&!e[n])r[n]=this.shape[n];else{let a=this.shape[n];for(;a instanceof no;)a=a._def.innerType;r[n]=a}}),new t({...this._def,shape:()=>r})}keyof(){return RF(Ir.objectKeys(this.shape))}};pa.create=(t,e)=>new pa({shape:()=>t,unknownKeys:"strip",catchall:Bo.create(),typeName:Wt.ZodObject,...mr(e)});pa.strictCreate=(t,e)=>new pa({shape:()=>t,unknownKeys:"strict",catchall:Bo.create(),typeName:Wt.ZodObject,...mr(e)});pa.lazycreate=(t,e)=>new pa({shape:t,unknownKeys:"strip",catchall:Bo.create(),typeName:Wt.ZodObject,...mr(e)});var _l=class extends dr{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function i(a){for(let s of a)if(s.result.status==="valid")return s.result;for(let s of a)if(s.result.status==="dirty")return r.common.issues.push(...s.ctx.common.issues),s.result;let o=a.map(s=>new Pa(s.ctx.common.issues));return ct(r,{code:Ue.invalid_union,unionErrors:o}),Zt}if(r.common.async)return Promise.all(n.map(async a=>{let o={...r,common:{...r.common,issues:[]},parent:null};return{result:await a._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(i);{let a,o=[];for(let l of n){let u={...r,common:{...r.common,issues:[]},parent:null},c=l._parseSync({data:r.data,path:r.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!a&&(a={result:c,ctx:u}),u.common.issues.length&&o.push(u.common.issues)}if(a)return r.common.issues.push(...a.ctx.common.issues),a.result;let s=o.map(l=>new Pa(l));return ct(r,{code:Ue.invalid_union,unionErrors:s}),Zt}}get options(){return this._def.options}};_l.create=(t,e)=>new _l({options:t,typeName:Wt.ZodUnion,...mr(e)});var ks=t=>t instanceof Sl?ks(t.schema):t instanceof Ba?ks(t.innerType()):t instanceof El?[t.value]:t instanceof Tl?t.options:t instanceof Dl?Ir.objectValues(t.enum):t instanceof Ml?ks(t._def.innerType):t instanceof bl?[void 0]:t instanceof wl?[null]:t instanceof no?[void 0,...ks(t.unwrap())]:t instanceof as?[null,...ks(t.unwrap())]:t instanceof Ap||t instanceof Nl?ks(t.unwrap()):t instanceof Cl?ks(t._def.innerType):[],Qd=class t extends dr{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==dt.object)return ct(r,{code:Ue.invalid_type,expected:dt.object,received:r.parsedType}),Zt;let n=this.discriminator,i=r.data[n],a=this.optionsMap.get(i);return a?r.common.async?a._parseAsync({data:r.data,path:r.path,parent:r}):a._parseSync({data:r.data,path:r.path,parent:r}):(ct(r,{code:Ue.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Zt)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let i=new Map;for(let a of r){let o=ks(a.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let s of o){if(i.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);i.set(s,a)}}return new t({typeName:Wt.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:i,...mr(n)})}};function vb(t,e){let r=$s(t),n=$s(e);if(t===e)return{valid:!0,data:t};if(r===dt.object&&n===dt.object){let i=Ir.objectKeys(e),a=Ir.objectKeys(t).filter(s=>i.indexOf(s)!==-1),o={...t,...e};for(let s of a){let l=vb(t[s],e[s]);if(!l.valid)return{valid:!1};o[s]=l.data}return{valid:!0,data:o}}else if(r===dt.array&&n===dt.array){if(t.length!==e.length)return{valid:!1};let i=[];for(let a=0;a{if(hb(a)||hb(o))return Zt;let s=vb(a.value,o.value);return s.valid?((gb(a)||gb(o))&&r.dirty(),{status:r.value,value:s.data}):(ct(n,{code:Ue.invalid_intersection_types}),Zt)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([a,o])=>i(a,o)):i(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Al.create=(t,e,r)=>new Al({left:t,right:e,typeName:Wt.ZodIntersection,...mr(r)});var is=class t extends dr{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==dt.array)return ct(n,{code:Ue.invalid_type,expected:dt.array,received:n.parsedType}),Zt;if(n.data.lengththis._def.items.length&&(ct(n,{code:Ue.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let a=[...n.data].map((o,s)=>{let l=this._def.items[s]||this._def.rest;return l?l._parse(new io(n,o,n.path,s)):null}).filter(o=>!!o);return n.common.async?Promise.all(a).then(o=>Ci.mergeArray(r,o)):Ci.mergeArray(r,a)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};is.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new is({items:t,typeName:Wt.ZodTuple,rest:null,...mr(e)})};var Kd=class t extends dr{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==dt.object)return ct(n,{code:Ue.invalid_type,expected:dt.object,received:n.parsedType}),Zt;let i=[],a=this._def.keyType,o=this._def.valueType;for(let s in n.data)i.push({key:a._parse(new io(n,s,n.path,s)),value:o._parse(new io(n,n.data[s],n.path,s)),alwaysSet:s in n.data});return n.common.async?Ci.mergeObjectAsync(r,i):Ci.mergeObjectSync(r,i)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof dr?new t({keyType:e,valueType:r,typeName:Wt.ZodRecord,...mr(n)}):new t({keyType:gu.create(),valueType:e,typeName:Wt.ZodRecord,...mr(r)})}},$c=class extends dr{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==dt.map)return ct(n,{code:Ue.invalid_type,expected:dt.map,received:n.parsedType}),Zt;let i=this._def.keyType,a=this._def.valueType,o=[...n.data.entries()].map(([s,l],u)=>({key:i._parse(new io(n,s,n.path,[u,"key"])),value:a._parse(new io(n,l,n.path,[u,"value"]))}));if(n.common.async){let s=new Map;return Promise.resolve().then(async()=>{for(let l of o){let u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return Zt;(u.status==="dirty"||c.status==="dirty")&&r.dirty(),s.set(u.value,c.value)}return{status:r.value,value:s}})}else{let s=new Map;for(let l of o){let u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return Zt;(u.status==="dirty"||c.status==="dirty")&&r.dirty(),s.set(u.value,c.value)}return{status:r.value,value:s}}}};$c.create=(t,e,r)=>new $c({valueType:e,keyType:t,typeName:Wt.ZodMap,...mr(r)});var Oc=class t extends dr{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==dt.set)return ct(n,{code:Ue.invalid_type,expected:dt.set,received:n.parsedType}),Zt;let i=this._def;i.minSize!==null&&n.data.sizei.maxSize.value&&(ct(n,{code:Ue.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),r.dirty());let a=this._def.valueType;function o(l){let u=new Set;for(let c of l){if(c.status==="aborted")return Zt;c.status==="dirty"&&r.dirty(),u.add(c.value)}return{status:r.value,value:u}}let s=[...n.data.values()].map((l,u)=>a._parse(new io(n,l,n.path,u)));return n.common.async?Promise.all(s).then(l=>o(l)):o(s)}min(e,r){return new t({...this._def,minSize:{value:e,message:Mt.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:Mt.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};Oc.create=(t,e)=>new Oc({valueType:t,minSize:null,maxSize:null,typeName:Wt.ZodSet,...mr(e)});var eh=class t extends dr{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==dt.function)return ct(r,{code:Ue.invalid_type,expected:dt.function,received:r.parsedType}),Zt;function n(s,l){return Jd({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Zd(),Pc].filter(u=>!!u),issueData:{code:Ue.invalid_arguments,argumentsError:l}})}function i(s,l){return Jd({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Zd(),Pc].filter(u=>!!u),issueData:{code:Ue.invalid_return_type,returnTypeError:l}})}let a={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof yu){let s=this;return Ji(async function(...l){let u=new Pa([]),c=await s._def.args.parseAsync(l,a).catch(p=>{throw u.addIssue(n(l,p)),u}),f=await Reflect.apply(o,this,c);return await s._def.returns._def.type.parseAsync(f,a).catch(p=>{throw u.addIssue(i(f,p)),u})})}else{let s=this;return Ji(function(...l){let u=s._def.args.safeParse(l,a);if(!u.success)throw new Pa([n(l,u.error)]);let c=Reflect.apply(o,this,u.data),f=s._def.returns.safeParse(c,a);if(!f.success)throw new Pa([i(c,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:is.create(e).rest(Os.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||is.create([]).rest(Os.create()),returns:r||Os.create(),typeName:Wt.ZodFunction,...mr(n)})}},Sl=class extends dr{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Sl.create=(t,e)=>new Sl({getter:t,typeName:Wt.ZodLazy,...mr(e)});var El=class extends dr{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return ct(r,{received:r.data,code:Ue.invalid_literal,expected:this._def.value}),Zt}return{status:"valid",value:e.data}}get value(){return this._def.value}};El.create=(t,e)=>new El({value:t,typeName:Wt.ZodLiteral,...mr(e)});function RF(t,e){return new Tl({values:t,typeName:Wt.ZodEnum,...mr(e)})}var Tl=class t extends dr{constructor(){super(...arguments),bp.set(this,void 0)}_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return ct(r,{expected:Ir.joinValues(n),received:r.parsedType,code:Ue.invalid_type}),Zt}if(Xd(this,bp,"f")||BF(this,bp,new Set(this._def.values),"f"),!Xd(this,bp,"f").has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return ct(r,{received:r.data,code:Ue.invalid_enum_value,options:n}),Zt}return Ji(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};bp=new WeakMap;Tl.create=RF;var Dl=class extends dr{constructor(){super(...arguments),wp.set(this,void 0)}_parse(e){let r=Ir.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==dt.string&&n.parsedType!==dt.number){let i=Ir.objectValues(r);return ct(n,{expected:Ir.joinValues(i),received:n.parsedType,code:Ue.invalid_type}),Zt}if(Xd(this,wp,"f")||BF(this,wp,new Set(Ir.getValidEnumValues(this._def.values)),"f"),!Xd(this,wp,"f").has(e.data)){let i=Ir.objectValues(r);return ct(n,{received:n.data,code:Ue.invalid_enum_value,options:i}),Zt}return Ji(e.data)}get enum(){return this._def.values}};wp=new WeakMap;Dl.create=(t,e)=>new Dl({values:t,typeName:Wt.ZodNativeEnum,...mr(e)});var yu=class extends dr{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==dt.promise&&r.common.async===!1)return ct(r,{code:Ue.invalid_type,expected:dt.promise,received:r.parsedType}),Zt;let n=r.parsedType===dt.promise?r.data:Promise.resolve(r.data);return Ji(n.then(i=>this._def.type.parseAsync(i,{path:r.path,errorMap:r.common.contextualErrorMap})))}};yu.create=(t,e)=>new yu({type:t,typeName:Wt.ZodPromise,...mr(e)});var Ba=class extends dr{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Wt.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:o=>{ct(n,o),o.fatal?r.abort():r.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),i.type==="preprocess"){let o=i.transform(n.data,a);if(n.common.async)return Promise.resolve(o).then(async s=>{if(r.value==="aborted")return Zt;let l=await this._def.schema._parseAsync({data:s,path:n.path,parent:n});return l.status==="aborted"?Zt:l.status==="dirty"||r.value==="dirty"?Ic(l.value):l});{if(r.value==="aborted")return Zt;let s=this._def.schema._parseSync({data:o,path:n.path,parent:n});return s.status==="aborted"?Zt:s.status==="dirty"||r.value==="dirty"?Ic(s.value):s}}if(i.type==="refinement"){let o=s=>{let l=i.refinement(s,a);if(n.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(n.common.async===!1){let s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?Zt:(s.status==="dirty"&&r.dirty(),o(s.value),{status:r.value,value:s.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(s=>s.status==="aborted"?Zt:(s.status==="dirty"&&r.dirty(),o(s.value).then(()=>({status:r.value,value:s.value}))))}if(i.type==="transform")if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!hl(o))return o;let s=i.transform(o.value,a);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:s}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>hl(o)?Promise.resolve(i.transform(o.value,a)).then(s=>({status:r.value,value:s})):o);Ir.assertNever(i)}};Ba.create=(t,e,r)=>new Ba({schema:t,typeName:Wt.ZodEffects,effect:e,...mr(r)});Ba.createWithPreprocess=(t,e,r)=>new Ba({schema:e,effect:{type:"preprocess",transform:t},typeName:Wt.ZodEffects,...mr(r)});var no=class extends dr{_parse(e){return this._getType(e)===dt.undefined?Ji(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};no.create=(t,e)=>new no({innerType:t,typeName:Wt.ZodOptional,...mr(e)});var as=class extends dr{_parse(e){return this._getType(e)===dt.null?Ji(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};as.create=(t,e)=>new as({innerType:t,typeName:Wt.ZodNullable,...mr(e)});var Ml=class extends dr{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===dt.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Ml.create=(t,e)=>new Ml({innerType:t,typeName:Wt.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...mr(e)});var Cl=class extends dr{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},i=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return _p(i)?i.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Pa(n.common.issues)},input:n.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Pa(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Cl.create=(t,e)=>new Cl({innerType:t,typeName:Wt.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...mr(e)});var Rc=class extends dr{_parse(e){if(this._getType(e)!==dt.nan){let n=this._getOrReturnCtx(e);return ct(n,{code:Ue.invalid_type,expected:dt.nan,received:n.parsedType}),Zt}return{status:"valid",value:e.data}}};Rc.create=t=>new Rc({typeName:Wt.ZodNaN,...mr(t)});var lG=Symbol("zod_brand"),Ap=class extends dr{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Sp=class t extends dr{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?Zt:a.status==="dirty"?(r.dirty(),Ic(a.value)):this._def.out._parseAsync({data:a.value,path:n.path,parent:n})})();{let i=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?Zt:i.status==="dirty"?(r.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:Wt.ZodPipeline})}},Nl=class extends dr{_parse(e){let r=this._def.innerType._parse(e),n=i=>(hl(i)&&(i.value=Object.freeze(i.value)),i);return _p(r)?r.then(i=>n(i)):n(r)}unwrap(){return this._def.innerType}};Nl.create=(t,e)=>new Nl({innerType:t,typeName:Wt.ZodReadonly,...mr(e)});function LF(t,e={},r){return t?vu.create().superRefine((n,i)=>{var a,o;if(!t(n)){let s=typeof e=="function"?e(n):typeof e=="string"?{message:e}:e,l=(o=(a=s.fatal)!==null&&a!==void 0?a:r)!==null&&o!==void 0?o:!0,u=typeof s=="string"?{message:s}:s;i.addIssue({code:"custom",...u,fatal:l})}}):vu.create()}var cG={object:pa.lazycreate},Wt;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Wt||(Wt={}));var fG=(t,e={message:`Input not instance of ${t.name}`})=>LF(r=>r instanceof t,e),VF=gu.create,UF=gl.create,pG=Rc.create,mG=vl.create,qF=yl.create,dG=xl.create,hG=Bc.create,gG=bl.create,vG=wl.create,yG=vu.create,xG=Os.create,bG=Bo.create,wG=kc.create,_G=Rs.create,AG=pa.create,SG=pa.strictCreate,EG=_l.create,TG=Qd.create,DG=Al.create,MG=is.create,CG=Kd.create,NG=$c.create,FG=Oc.create,IG=eh.create,PG=Sl.create,BG=El.create,kG=Tl.create,$G=Dl.create,OG=yu.create,IF=Ba.create,RG=no.create,LG=as.create,VG=Ba.createWithPreprocess,UG=Sp.create,qG=()=>VF().optional(),zG=()=>UF().optional(),HG=()=>qF().optional(),GG={string:t=>gu.create({...t,coerce:!0}),number:t=>gl.create({...t,coerce:!0}),boolean:t=>yl.create({...t,coerce:!0}),bigint:t=>vl.create({...t,coerce:!0}),date:t=>xl.create({...t,coerce:!0})},WG=Zt,ve=Object.freeze({__proto__:null,defaultErrorMap:Pc,setErrorMap:VH,getErrorMap:Zd,makeIssue:Jd,EMPTY_PATH:UH,addIssueToContext:ct,ParseStatus:Ci,INVALID:Zt,DIRTY:Ic,OK:Ji,isAborted:hb,isDirty:gb,isValid:hl,isAsync:_p,get util(){return Ir},get objectUtil(){return db},ZodParsedType:dt,getParsedType:$s,ZodType:dr,datetimeRegex:OF,ZodString:gu,ZodNumber:gl,ZodBigInt:vl,ZodBoolean:yl,ZodDate:xl,ZodSymbol:Bc,ZodUndefined:bl,ZodNull:wl,ZodAny:vu,ZodUnknown:Os,ZodNever:Bo,ZodVoid:kc,ZodArray:Rs,ZodObject:pa,ZodUnion:_l,ZodDiscriminatedUnion:Qd,ZodIntersection:Al,ZodTuple:is,ZodRecord:Kd,ZodMap:$c,ZodSet:Oc,ZodFunction:eh,ZodLazy:Sl,ZodLiteral:El,ZodEnum:Tl,ZodNativeEnum:Dl,ZodPromise:yu,ZodEffects:Ba,ZodTransformer:Ba,ZodOptional:no,ZodNullable:as,ZodDefault:Ml,ZodCatch:Cl,ZodNaN:Rc,BRAND:lG,ZodBranded:Ap,ZodPipeline:Sp,ZodReadonly:Nl,custom:LF,Schema:dr,ZodSchema:dr,late:cG,get ZodFirstPartyTypeKind(){return Wt},coerce:GG,any:yG,array:_G,bigint:mG,boolean:qF,date:dG,discriminatedUnion:TG,effect:IF,enum:kG,function:IG,instanceof:fG,intersection:DG,lazy:PG,literal:BG,map:NG,nan:pG,nativeEnum:$G,never:bG,null:vG,nullable:LG,number:UF,object:AG,oboolean:HG,onumber:zG,optional:RG,ostring:qG,pipeline:UG,preprocess:VG,promise:OG,record:CG,set:FG,strictObject:SG,string:VF,symbol:hG,transformer:IF,tuple:MG,undefined:gG,union:EG,unknown:xG,void:wG,NEVER:WG,ZodIssueCode:Ue,quotelessJson:LH,ZodError:Pa});function GF(t,e){return(r,n)=>r[t]===void 0==(r[e]===void 0)?(n.addIssue({code:ve.ZodIssueCode.custom,message:`Either ${t} or ${e} must be used, but not both.`}),!1):!0}function Ot(){return function(t){return t}}function pn(t,e){let r=t.safeParse(e);if(!r.success)throw new Gt({errorLevel:"CRITICAL",effect:"Failed to run function due to invalid arguments. Check that the arguments that you are passing to the function match the type definition of the function.",cause:r.error})}function WF(t,e){return t.safeParse(e,{errorMap:ZG})}var zF=["zeroth","first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth"],HF=["twent","thirt","fort","fift","sixt","sevent","eight","ninet"];function jG(t){return t<20?zF[t]:t%10===0?HF[Math.floor(t/10)-2]+"ieth":HF[Math.floor(t/10)-2]+"y-"+zF[t%10]}var ZG=(t,e)=>({message:`At '${t.path.map(n=>typeof n=="string"?n:jG(n+1)+" element").join(" > ")}'. ${e.defaultError}`});function th(t,e,r){return ve.number({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a number.`})}function si(t,e,r){return ve.string({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a string.`})}function Ls(t,e,r){return ve.boolean({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a boolean.`})}var JG=Ot()(ve.object({type:ve.literal("command"),command:si("command","command","command to run")})),XG=Ot()(ve.object({type:ve.literal("js"),file:si("js","file","file path to the file to run"),args:ve.record(ve.unknown()).optional()})),QG=Ot()(ve.object({type:ve.literal("open"),link:si("open","link","link to open"),newTab:Ls("open","newTab","").optional()})),KG=Ot()(ve.object({type:ve.literal("input"),str:si("input","str","value to input")})),eW=Ot()(ve.object({type:ve.literal("sleep"),ms:th("sleep","ms","duration")})),tW=Ot()(ve.object({type:ve.literal("templaterCreateNote"),templateFile:si("templaterCreateNote","templateFile","template file path"),folderPath:si("templaterCreateNote","folderPath","folder path").optional(),fileName:si("templaterCreateNote","fileName","file name").optional(),openNote:Ls("templaterCreateNote","openNote","value for whether to open the note").optional(),openIfAlreadyExists:Ls("templaterCreateNote","openIfAlreadyExists","value for whether to open the note if it already exists").optional()})),rW=Ot()(ve.object({type:ve.literal("runTemplaterFile"),templateFile:si("runTemplaterFile","templateFile","template file path")})),nW=Ot()(ve.object({type:ve.literal("updateMetadata"),bindTarget:si("updateMetadata","bindTarget","bind target to the metadata to update"),evaluate:Ls("updateMetadata","evaluate","value for whether to evaluate the value as a JavaScript expression"),value:ve.coerce.string({required_error:"The updateMetadata action requires a specified value for the update with the 'value' field.",invalid_type_error:"The updateMetadata action requires the value of the 'value' fields to be a string."})})),iW=Ot()(ve.object({type:ve.literal("createNote"),folderPath:si("createNote","folderPath","folder path").optional(),fileName:si("createNote","fileName","file name"),openNote:Ls("createNote","openNote","value for whether to open the note").optional(),openIfAlreadyExists:Ls("createNote","openIfAlreadyExists","value for whether to open the note if it already exists").optional()})),aW=Ot()(ve.object({type:ve.literal("replaceInNote"),fromLine:th("replaceInNote","fromLine","line to replace from"),toLine:th("replaceInNote","toLine","line to replace to"),replacement:si("replaceInNote","replacement","replacement string"),templater:Ls("replaceInNote","templater","value for whether to use Templater").optional()})),oW=Ot()(ve.object({type:ve.literal("replaceSelf"),replacement:si("replaceSelf","replacement","replacement string"),templater:Ls("replaceSelf","templater","value for whether to use Templater").optional()})),sW=Ot()(ve.object({type:ve.literal("regexpReplaceInNote"),regexp:si("regexpReplaceInNote","regexp","search regular expression"),regexpFlags:si("regexpReplaceInNote","regexpFlags","regular expression flags string").optional(),replacement:si("regexpReplaceInNote","replacement","replacement string")})),uW=Ot()(ve.object({type:ve.literal("insertIntoNote"),line:th("insertIntoNote","line","line to insert at"),value:si("insertIntoNote","value","string to insert"),templater:Ls("insertIntoNote","templater","value for whether to use Templater").optional()})),lW=Ot()(ve.object({type:ve.literal("inlineJS"),code:si("inlineJS","code","code string to run"),args:ve.record(ve.unknown()).optional()})),YF=Ot()(ve.discriminatedUnion("type",[JG,XG,QG,KG,eW,tW,nW,iW,aW,oW,sW,uW,lW,rW])),cW=ve.nativeEnum(on),Lc=Ot()(ve.object({label:ve.string(),icon:ve.string().optional(),style:cW,class:ve.string().optional(),cssStyle:ve.string().optional(),backgroundImage:ve.string().optional(),tooltip:ve.string().optional(),id:ve.string().optional(),hidden:ve.boolean().optional(),action:YF.optional(),actions:YF.array().optional()}).superRefine(GF("action","actions")));var Ni=class{constructor(){this.mounted=!1,this.targetEl=void 0,this.onUnmountCbs=[]}isMounted(){return this.mounted}getTargetEl(){return this.targetEl}mount(e){if(this.mounted||this.targetEl){console.warn("Mountable is already mounted",this);return}if(e===void 0){console.error("Mountable target element is undefined",this);return}this.mounted=!0,this.targetEl=e,this.onMount(e)}unmount(){if(!this.mounted||!this.targetEl){console.warn("Mountable is not mounted",this);return}this.mounted=!1,this.onUnmount(this.targetEl);for(let e of this.onUnmountCbs)e();this.targetEl=void 0}registerUnmountCb(e){this.onUnmountCbs.push(e)}};var qn=class extends Ni{constructor(e,r,n){super(),this.plugin=e,this.filePath=n,this.uuid=r}getUuid(){return this.uuid}getFilePath(){return this.filePath}onMount(e){this.plugin.mountableManager.registerMountable(this)}onUnmount(e){this.plugin.mountableManager.unregisterMountable(this)}};var Vc=class{constructor(e){this.scope=e}};var xu=class t{constructor(e){this.path=e}get(e){if(this.path.length===0)throw new Error("can not use empty path to access object");let r=this.path[0].get(e);for(let n of this.path.slice(1))r=n.get(r.child);return r}tryGet(e){try{return this.get(e)}catch{return}}set(e,r){if(this.path.length===0)throw new Error("can not use empty path to access object");let n=this.path[0].get(e);for(let i of this.path.slice(1))n=i.get(n.child);n.access.set(n.parent,r)}setAndCreate(e,r){if(this.path.length===0)throw new Error("can not use empty path to access object");let n=this.path[0].get(e);n.child===void 0&&(n.access.set(n.parent,this.getNextPathElementValue(0,r)),n=n.access.get(n.parent));for(let i=1;ie.prop)}toString(){return this.toStringArray().join(".")}concat(e){return new t(this.path.concat(e.path))}compareDiffArray(e){let r=Math.min(this.path.length,e.length);for(let n=0;nr.uuid!==e)}unregisterAllListeners(){this.listeners=[]}notifyListeners(e){for(let r of this.listeners)try{r.callback(e)}catch(n){let i=n instanceof Error?n:String(n);console.error(new Gt({errorLevel:"ERROR",effect:"error while calling listener callback",cause:i}))}}},yn=class extends rh{constructor(e){super(),this.value=e}get(){return this.value}set(e){this.value=e,this.notifyListeners(e)}},nh=class extends rh{constructor(e,r){super(),this.value=r(e),this.mapFn=r}get(){return this.value}set(e){this.value=this.mapFn(e),this.notifyListeners(this.value)}setDirect(e){this.value=e,this.notifyListeners(e)}};var $a=Ot()(ve.string()),Uc=Ot()(ve.nativeEnum(Yi)),Ep=Ot()(ve.nativeEnum(vc)),ZF=Ot()(ve.nativeEnum(du)),JF=Ot()(ve.instanceof(HTMLElement)),qc=Ot()(ve.instanceof(Vc)),dce=Ot()(ve.instanceof(yn)),hce=Ot()(ve.function().args().returns(ve.void())),gce=Ot()(ve.instanceof(qn)),XF=Ot()(ve.instanceof(Ni)),QF=Ot()(ve.instanceof(mu)),jF=Ot()(ve.object({index:ve.number(),line:ve.number(),column:ve.number()})),fW=Ot()(ve.object({from:jF,to:jF})),bu=Ot()(ve.object({value:ve.string(),position:fW.optional()})),KF=Ot()(ve.object({name:bu,value:bu.array()})),pW=Ot()(ve.object({type:ve.nativeEnum(dl),prop:bu})),yb=Ot()(ve.object({storageType:bu.optional(),storagePath:bu.optional(),storageProp:pW.array(),listenToChildren:ve.boolean()})),vce=Ot()(ve.object({declarationString:ve.string().optional(),inputFieldType:bu.optional(),templateName:bu.optional(),bindTarget:yb.optional(),arguments:KF.array(),errorCollection:ve.instanceof(Qt)})),yce=Ot()(ve.object({declarationString:ve.string().optional(),templateDeclaration:ve.array(ve.union([ve.string(),yb])).optional(),viewFieldType:bu.optional(),arguments:KF.array(),writeToBindTarget:yb.optional(),errorCollection:ve.instanceof(Qt)})),ka=Ot()(ve.object({storageType:ve.string(),storagePath:ve.string(),storageProp:ve.instanceof(xu),listenToChildren:ve.boolean()})),eI=Ot()(ve.object({name:ve.string(),value:ve.string().array()})),xce=Ot()(ve.object({type:ve.nativeEnum(dl),prop:ve.string()})),tI=Ot()(ve.object({inputFieldType:ZF.optional(),templateName:ve.string().optional(),bindTarget:ka.optional(),arguments:eI.array().optional()})),rI=Ot()(ve.object({viewFieldType:ZF.optional(),templateDeclaration:ve.union([ve.string(),ka]).array().optional(),arguments:eI.array().optional(),writeToBindTarget:ka.optional()})),mW=Ot()(ve.object({bindTarget:ka,name:ve.string()})),dW=Ot()(ve.object({bindTargetMappings:mW.array(),writeToBindTarget:ka.optional(),code:ve.string()})),hW=Ot()(ve.object({referencedButtonIds:ve.string().array()})),nI=Ot()(ve.object({renderChildType:Uc,declaration:ve.union([ve.string(),tI]),scope:qc.optional()})),iI=Ot()(ve.object({renderChildType:Uc,declaration:ve.union([ve.string(),rI]),scope:qc.optional()})),aI=Ot()(ve.object({declaration:ve.union([ve.string(),dW])})),oI=Ot()(ve.object({bindTarget:ka,tableHead:ve.string().array(),columns:ve.array(ve.union([tI,rI,ve.string()]))})),sI=Ot()(ve.object({renderChildType:Uc,declaration:ve.union([ve.string(),hW]),position:QF.optional()})),uI=Ot()(ve.object({declaration:ve.union([ve.string(),Lc]),position:QF.optional(),isPreview:ve.boolean()})),lI=Ot()(ve.object({depth:ve.number(),content:ve.string()}));var Wr=class{constructor(e,r){this.actionType=e,this.plugin=r}};var ih=class extends Wr{constructor(e){super("command",e)}async run(e,r,n,i,a){this.plugin.internal.executeCommandById(r.command)}create(){return{type:"command",command:""}}getActionLabel(){return"Run a command"}};var ah=class extends Wr{constructor(e){super("createNote",e)}async run(e,r,n,i,a){if(r.openIfAlreadyExists){let o=wd(bd(r.folderPath??"",r.fileName),"md");if(await this.plugin.internal.file.exists(o)){this.plugin.internal.file.open(o,"",!1);return}}await this.plugin.internal.file.create(r.folderPath??"",r.fileName,"md",r.openNote??!1)}create(){return{type:"createNote",folderPath:"/",fileName:"Untitled",openNote:!0,openIfAlreadyExists:!1}}getActionLabel(){return"Create a new note"}};var oh=class extends Wr{constructor(e){super("inlineJS",e)}async run(e,r,n,i,a){if(!this.plugin.settings.enableJs)throw new No({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let o={buttonConfig:structuredClone(e),args:structuredClone(r.args),buttonContext:structuredClone(i),click:structuredClone(a)};(await this.plugin.internal.jsEngineRunCode(r.code,n,o))()}create(){return{type:"inlineJS",code:'console.log("Hello world")',args:{}}}getActionLabel(){return"Run JavaScript code"}};var sh=class extends Wr{constructor(e){super("input",e)}async run(e,r,n,i,a){let o=document.activeElement;o&&o instanceof HTMLInputElement&&(o.setRangeText(r.str,o.selectionStart,o.selectionEnd,"end"),o.dispatchEvent(new Event("input",{bubbles:!0})))}create(){return{type:"input",str:""}}getActionLabel(){return"Insert text at cursor"}};var uh=class extends Wr{constructor(e){super("insertIntoNote",e)}async run(e,r,n,i,a){let o=r.templater?await this.plugin.internal.evaluateTemplaterTemplate(this.plugin.api.buttonActionRunner.resolveFilePath(r.value),n):r.value;await this.plugin.internal.file.atomicModify(n,s=>{let l=s.split(` -`);if(r.line<1||r.line>l.length+1)throw new Error("Line number out of bounds");return l=[...l.slice(0,r.line-1),o,...l.slice(r.line-1)],l.join(` -`)})}create(){return{type:"insertIntoNote",line:0,value:"Some text",templater:!1}}getActionLabel(){return"Insert text into the note"}};var lh=class extends Wr{constructor(e){super("js",e)}async run(e,r,n,i,a){if(!this.plugin.settings.enableJs)throw new No({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let o={buttonConfig:structuredClone(e),args:structuredClone(r.args),buttonContext:structuredClone(i),click:structuredClone(a)};(await this.plugin.internal.jsEngineRunFile(r.file,n,o))()}create(){return{type:"js",file:"",args:{}}}getActionLabel(){return"Run a JavaScript file"}};var cI=zr(Ma()),ui=zr(ca());var fI=ui.P.sequence(Dc,ui.P.or(ui.P.string("#").then(ui.P.manyNotOf("[]#|:")),ui.P.string("#").result(void 0),ui.P.succeed(void 0)),ui.P.string("|").then(ui.P.manyNotOf("[]")).optional()),ch=ui.P.or(ui.P.sequenceMap((t,e)=>new Fl(t!==void 0,e[0],e[1],e[2],!0),ui.P.string("!").optional(),fI.wrapString("[[","]]")),ui.P.sequenceMap((t,e,r)=>{let n=!_c(r);return new Fl(t!==void 0,r,void 0,e,n)},ui.P.string("!").optional(),ui.P.manyNotOf("[]").wrapString("[","]"),ui.P.manyNotOf("()").wrapString("(",")"))),gW=ui.P.separateBy(ch,ui.P.string(",").trim(cI.P_UTILS.optionalWhitespace())),Fl=class t{constructor(e,r,n,i,a){this.isEmbed=e,this.target=r,this.block=n,this.alias=i,this.internal=a??!0}static fromUrl(e){return new t(!1,e.href,void 0,e.hostname,!1)}fullTarget(){return this.block?`${this.target}#${this.block}`:this.target}open(e,r,n){this.internal?e.internal.file.open(this.fullTarget(),r,n):xd(this.target)}toString(){let e=this.isEmbed?"!":"";if(this.internal){let r=this.alias?`|${this.alias}`:"";return`${e}[[${this.fullTarget()}${r}]]`}else{let r=this.alias??this.fullTarget();return`${e}[${r}](${this.fullTarget()})`}}},Cn=class t{static parseLink(e){return Xn(ch.thenEof(),e)}static parseLinkList(e){return Xn(gW.thenEof(),e)}static isLink(e){return ch.thenEof().tryParse(e).success}static urlToLink(e){return Fl.fromUrl(e)}static parseLinkOrUrl(e){return _c(e)?t.urlToLink(new URL(e)):t.parseLink(e)}static interpretAsLink(e){let r=ch.thenEof().tryParse(e);if(r.success)return r.value;let n=fI.thenEof().tryParse(e);if(n.success)return new Fl(!1,n.value[0],n.value[1],n.value[2],!0);if(_c(e)){let i=new URL(e);return Fl.fromUrl(i)}}};var fh=class extends Wr{constructor(e){super("open",e)}async run(e,r,n,i,a){let o=a.type==="middle"||a.ctrlKey||(r.newTab??!1),s=Cn.interpretAsLink(r.link);if(!s)throw new Error("Invalid link");s.open(this.plugin,n,o)}create(){return{type:"open",link:"",newTab:!0}}getActionLabel(){return"Open a link"}};var ph=class extends Wr{constructor(e){super("regexpReplaceInNote",e)}async run(e,r,n,i,a){if(r.regexp==="")throw new Error("Regexp cannot be empty");await this.plugin.internal.file.atomicModify(n,o=>o.replace(new RegExp(r.regexp,r.regexpFlags??"g"),r.replacement))}create(){return{type:"regexpReplaceInNote",regexp:"([A-Z])\\w+",replacement:"Replacement text",regexpFlags:"g"}}getActionLabel(){return"Replace text in note using regexp"}};var mh=class extends Wr{constructor(e){super("replaceInNote",e)}async run(e,r,n,i,a){if(r.fromLine>r.toLine)throw new Error("From line cannot be greater than to line");let o=r.templater?await this.plugin.internal.evaluateTemplaterTemplate(this.plugin.api.buttonActionRunner.resolveFilePath(r.replacement),n):r.replacement;await this.plugin.internal.file.atomicModify(n,s=>{let l=s.split(` -`);if(r.fromLine<0||r.toLine>l.length+1)throw new Error("Line numbers out of bounds");return l=[...l.slice(0,r.fromLine-1),o,...l.slice(r.toLine)],l.join(` -`)})}create(){return{type:"replaceInNote",fromLine:0,toLine:0,replacement:"Replacement text",templater:!1}}getActionLabel(){return"Replace text in note"}};var dh=class extends Wr{constructor(e){super("replaceSelf",e)}async run(e,r,n,i,a){if(i.isInline)throw new Error("Replace self action not supported for inline buttons");if(i.position===void 0)throw new Error("Position of the button in the note is unknown");if(i.position.lineStart>i.position.lineEnd)throw new Error("Position of the button in the note is invalid");let o=i.position,s=r.templater?await this.plugin.internal.evaluateTemplaterTemplate(this.plugin.api.buttonActionRunner.resolveFilePath(r.replacement),n):r.replacement;await this.plugin.internal.file.atomicModify(n,l=>{let u=l.split(` -`);if(o.lineStart<0||o.lineEnd>u.length+1)throw new Error("Position of the button in the note is out of bounds");return u=[...u.slice(0,o.lineStart),s,...u.slice(o.lineEnd+1)],u.join(` -`)})}create(){return{type:"replaceSelf",replacement:"Replacement text",templater:!1}}getActionLabel(){return"Replace button with text"}};var hh=class extends Wr{constructor(e){super("runTemplaterFile",e)}async run(e,r,n,i,a){let o=this.plugin.api.buttonActionRunner.resolveFilePath(r.templateFile);await this.plugin.internal.evaluateTemplaterTemplate(o,o)}create(){return{type:"runTemplaterFile",templateFile:""}}getActionLabel(){return"Run a templater file"}};var gh=class extends Wr{constructor(e){super("sleep",e)}async run(e,r,n,i,a){await new Promise(o=>setTimeout(o,r.ms))}create(){return{type:"sleep",ms:0}}getActionLabel(){return"Sleep for some time"}};var vh=class extends Wr{constructor(e){super("templaterCreateNote",e)}async run(e,r,n,i,a){if(r.openIfAlreadyExists&&r.fileName){let o=wd(bd(r.folderPath??"",r.fileName),"md");if(await this.plugin.internal.file.exists(o)){this.plugin.internal.file.open(o,"",!1);return}}await this.plugin.internal.createNoteWithTemplater(r.templateFile,r.folderPath,r.fileName,r.openNote)}create(){return{type:"templaterCreateNote",templateFile:"",folderPath:"/",fileName:"",openNote:!0,openIfAlreadyExists:!1}}getActionLabel(){return"Create a new note using Templater"}};var Tp=zr(Ma()),wu=zr(ca());var dI=wu.P.sequenceMap((t,e)=>t===void 0?e:-e,wu.P.string("-").optional(),wu.P.or(wu.P.sequenceMap((t,e,r)=>Number(t+e+r),Tp.P_UTILS.digits(),wu.P.string("."),Tp.P_UTILS.digits()),Tp.P_UTILS.digits().map(t=>Number(t)))).thenEof(),hI=wu.P.sequenceMap((t,e)=>t===void 0?e:-e,wu.P.string("-").optional(),Tp.P_UTILS.digits().map(t=>Number(t))).thenEof();function Oa(t){if(t.toLowerCase()==="null")return null;if(t==="true")return!0;if(t==="false")return!1;{let e=dI.tryParse(t);return e.success?e.value:t}}function ko(t){return t===void 0||t===null?"":typeof t=="string"?t:typeof t=="boolean"?t?"true":"false":t.toString()}function _u(t){return t===null||typeof t=="string"||typeof t=="boolean"||typeof t=="number"}function ao(t){if(t!=null){if(_u(t))return[t];if(typeof t=="object"&&Array.isArray(t))return t.filter(e=>_u(e))}}function zc(t){if(typeof t=="number")return t;if(typeof t=="string"){let e=dI.tryParse(t);if(e.success)return e.value}}function os(t){return _u(t)?ko(t):void 0}function Au(t){return _u(t)?t:void 0}function Il(t,e){return Array.isArray(t)?t.map(r=>xb(r,e)).filter(r=>r!=="").join(", "):xb(t,e)}function xb(t,e){return t==null?e?"":"null":typeof t=="function"?"":typeof t=="object"||Array.isArray(t)?JSON.stringify(t):t.toString()}function gI(t,e){return Array.isArray(t)?t.map(r=>mI(r,e)).filter(r=>r!==""):mI(t,e)}function mI(t,e){return typeof t=="string"?Cn.isLink(t)?Cn.parseLink(t):_c(t)?Cn.urlToLink(new URL(t)):t:xb(t,e)}var yh=class extends Wr{constructor(e){super("updateMetadata",e)}async run(e,r,n,i,a){let o=this.plugin.api.bindTargetParser.fromStringAndValidate(r.bindTarget,n);if(r.evaluate){if(!this.plugin.settings.enableJs)throw new No({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let s=new Function("x","getMetadata",`return ${r.value};`);this.plugin.api.updateMetadata(o,l=>s(l,u=>this.plugin.api.getMetadata(this.plugin.api.parseBindTarget(u,n))))}else this.plugin.api.setMetadata(o,Oa(r.value))}create(){return{type:"updateMetadata",bindTarget:"",evaluate:!1,value:""}}getActionLabel(){return"Update metadata"}};var xh=class{constructor(e){this.plugin=e,this.actionContexts={command:new ih(e),open:new fh(e),js:new lh(e),input:new sh(e),sleep:new gh(e),templaterCreateNote:new vh(e),updateMetadata:new yh(e),createNote:new ah(e),replaceInNote:new mh(e),replaceSelf:new dh(e),regexpReplaceInNote:new ph(e),insertIntoNote:new uh(e),inlineJS:new oh(e),runTemplaterFile:new hh(e)}}resolveFilePath(e,r){let n=Cn.isLink(e)?Cn.parseLink(e).target:e,i=this.plugin.internal.file.getPathByName(n,r);if(i===void 0)throw new Co({errorLevel:"ERROR",cause:`Could not find a file that matches "${e}".`,effect:`Could not resolve path or link "${e}" relative to "${r}".`});return i}createDefaultButtonConfig(){return{label:"This is a button",icon:"",style:"default",class:"",cssStyle:"",backgroundImage:"",tooltip:"",id:"",hidden:!1,actions:[]}}async runButtonActions(e,r,n,i){try{if(e.action)await this.runAction(e,e.action,r,n,i);else if(e.actions)for(let a of e.actions)await this.runAction(e,a,r,n,i);else console.warn("meta-bind | ButtonMDRC >> no action defined")}catch(a){console.warn("meta-bind | ButtonMDRC >> error while running action",a),this.plugin.internal.showNotice("meta-bind | Error while running button action. Check the console for details.")}}createDefaultAction(e){return this.actionContexts[e].create()}async runAction(e,r,n,i,a){let o=r.type;await this.actionContexts[o].run(e,r,n,i,a)}getActionLabel(e){return this.actionContexts[e].getActionLabel()}mouseEventToClickContext(e,r){return{type:r,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey}}};var vI="5";typeof window<"u"&&(window.__svelte||={v:new Set}).v.add(vI);var Hc="[",Pl="[!",Bl="]",Su={};var zn=Symbol(),Xi=Symbol("filename"),yI=Symbol("hmr");var vW=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory"];var Gfe=[...vW,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject"];var yW=["touchstart","touchmove"];function xI(t){return yW.includes(t)}var Ze=!1;var oo=Array.isArray,bI=Array.prototype.indexOf,Dp=Array.from,bb=Object.keys,gi=Object.defineProperty,$o=Object.getOwnPropertyDescriptor,wb=Object.getOwnPropertyDescriptors,bh=Object.prototype,wI=Array.prototype,Eu=Object.getPrototypeOf;var Ra=()=>{};function Mp(t){for(var e=0;et[0]+t[1].join("")).describe("identifier"),$_=sa.P.sequenceMap((t,e)=>t+e.map(r=>r[0]+r[1]).join(""),Ln,sa.P.sequence(rf.P_UTILS.optionalWhitespace(),Ln).many()).describe("identifier with spaces"),M8=sa.P.string("\\").then(rf.P_UTILS.any()).map(t=>t==="'"?"'":t==="\\"?"\\":"\\"+t);function O_(t){return sa.P.or(M8,sa.P.noneOf(t+"\\")).many().map(e=>e.join("")).trim(sa.P.string(t))}var zp=O_("'"),R_=O_('"'),Dl=sa.P.manyNotOf("{}[]#^|:?").box("file path");function Mi(t,e){return{value:t,position:e}}function Fa(t){if(t!==void 0)return typeof t=="string"?{value:t}:t}var bu=(r=>(r.OBJECT="object",r.ARRAY="array",r))(bu||{}),Hp=class{constructor(e,r,n){this.parent=e,this.access=r,this.child=n}};function C8(t,e){return t[e]}function L_(t,e,r){t[e]=r}var yu=class{constructor(e,r){if(this.type=e,this.prop=e==="object"?r:"",this.index=e==="array"?Number(r):0,Number.isNaN(this.index))throw new Error("can not access array with non number index")}get(e){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");return new Hp(e,this,C8(e,this.prop))}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");return new Hp(e,this,e[this.index])}}set(e,r){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");L_(e,this.prop,r)}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");e[this.index]=r}}create(e){if(this.type==="object"){if(typeof e!="object"||e==null)throw new Error("can not access property of non-object");L_(e,this.prop,void 0)}else{if(typeof e!="object"||e==null||!Array.isArray(e))throw new Error("can not access property of non-array");e[this.index]=void 0}}toUnvalidatedPropAccess(){return this.type==="object"?{type:this.type,prop:{value:this.prop}}:{type:this.type,prop:{value:this.index.toString()}}}};var U_=Ln.node((t,e)=>({type:"object",prop:Mi(t,e)})),Fy=Ci.P.or(V_.P_UTILS.digits().wrap(Ci.P.string("["),Ci.P.string("]")).node((t,e)=>({type:"array",prop:Mi(t,e)})),R_.wrap(Ci.P.string("["),Ci.P.string("]")).node((t,e)=>({type:"object",prop:Mi(t,e)}))),N8=Ci.P.or(Ci.P.sequenceMap(t=>({storagePath:void 0,listenToChildren:!0,storageProp:t}),Fy.atLeast(1)),Ci.P.sequenceMap((t,e)=>({storagePath:void 0,listenToChildren:!0,storageProp:[t,...e]}),U_,Fy.many())),F8=Ci.P.sequenceMap((t,e)=>[t,...e],U_,Fy.many()),Iy=Ci.P.sequenceMap((t,e)=>(t.storageProp=t.storageProp.concat(e.flat()),t),N8,Ci.P.string(".").then(F8).many()),_o=Ci.P.sequenceMap((t,e,r)=>(r.storageType=t,r.storagePath=e,r),Ln.describe("storage type").node(Mi).skip(Ci.P.string("^").describe('storage type separator "^"')).optional(),Dl.describe("storage path").node(Mi).skip(Ci.P.string("#").describe('storage/file path separator "#"')).optional(),Iy.describe("property path")).box("bind target");var Gp=Tr(oa()),Ao=Tr(qi());var By=Ao.P.regexp(/^[^()',]+/).describe("any character except parentheses, single quotation marks and commas"),I8=Ao.P.or(zp,By).node(Mi),B8=Ao.P.separateBy(I8,Ao.P.string(",").describe('argument value separator ","').trim(Gp.P_UTILS.optionalWhitespace())),k8=Ao.P.sequenceMap((t,e)=>({name:t,value:e}),Ln.node(Mi),B8.trim(Gp.P_UTILS.optionalWhitespace()).wrap(Ao.P.string("(").describe('argument value paren "("'),Ao.P.string(")").describe('argument value paren ")"')).optional([])),nf=Ao.P.separateBy(k8,Ao.P.string(",").describe('argument separator ","').trim(Gp.P_UTILS.optionalWhitespace()));var zi=Tr(oa()),Fn=Tr(qi());var P8=Fn.P.string("\\").then(zi.P_UTILS.any()).map(t=>t==="["?"[":t==="]"?"]":t==="{"?"{":t==="}"?"}":t==="\\"?"\\":"\\"+t),Wp=Fn.P.sequenceMap((t,e)=>t+e.flat().join(""),Fn.P.manyNotOf("{}[]\\"),Fn.P.sequence(P8,Fn.P.manyNotOf("{}[]\\")).many()).box("View Field Content"),$8=Fn.P.sequenceMap((t,e)=>[t,...e.flat()],Wp,Fn.P.sequence(_o.wrapString("{","}"),Wp).many()),O8=Fn.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{viewFieldType:t,writeToBindTarget:n,arguments:e,templateDeclaration:void 0}},Ln.node(Mi).trim(zi.P_UTILS.optionalWhitespace()).optional().describe("input field type"),nf.trim(zi.P_UTILS.optionalWhitespace()).wrapString("(",")").trim(zi.P_UTILS.optionalWhitespace()).optional([]),Fn.P.sequence(Fn.P.string(":").trim(zi.P_UTILS.optionalWhitespace()),_o).trim(zi.P_UTILS.optionalWhitespace()).optional()),q_=Fn.P.sequenceMap((t,e,r,n)=>n===void 0?{viewFieldType:void 0,writeToBindTarget:void 0,arguments:[],templateDeclaration:e}:(n.templateDeclaration=e,n),Fn.P.string("VIEW"),$8.wrapString("[","]"),zi.P_UTILS.optionalWhitespace(),O8.wrapString("[","]").optional(),zi.P_UTILS.eof()),R8=Fn.P.sequenceMap((t,e,r,n)=>(e!==void 0&&(t.listenToChildren=!0),{bindTarget:t,name:n}),_o.wrapString("{","}"),Fn.P.string(" and children").optional(),Fn.P.string(" as "),Ln),z_=Fn.P.sequenceMap((t,e,r,n)=>({bindTargetMappings:t,writeToBindTarget:e,hidden:r!==void 0,code:n}),R8.separateBy(zi.P_UTILS.whitespace()).skip(zi.P_UTILS.whitespace()),Fn.P.string("save to ").then(_o.wrapString("{","}")).skip(zi.P_UTILS.whitespace()).optional(),Fn.P.string("hidden").skip(zi.P_UTILS.whitespace()).optional(),Fn.P.string("---").then(zi.P_UTILS.remaining()));var ky=Tr(qi());var Sl=class{constructor(e,r){this.range=e,this.tokenClass=r}};var $t=class t{static sequence(...e){return ky.P.sequenceMap((...r)=>r.flat(2).filter(n=>n!==void 0),...e)}static separateBy(e,r){return t.sequence(e,t.sequence(r,e).many()).optional([])}static highlight(e,r){return e.node((n,i)=>[new Sl(i,r)])}static highlightStr(e,r){return t.highlight(ky.P.string(e),r)}};var $y=$t.highlight(Ln,"ident"),Yp=$t.highlight(Ln,"keyword"),Oy=$t.highlightStr(",","control"),jp=$t.highlightStr("(","control"),Zp=$t.highlightStr(")","control"),El=$t.highlightStr("[","control"),Tl=$t.highlightStr("]","control"),V8=$t.highlight(zp,"string"),U8=$t.highlight(By,"ident"),q8=Py.P.or(U8,V8),z8=$t.separateBy(q8,Oy.trim(mn.P_UTILS.optionalWhitespace())),H8=$t.sequence(Yp,$t.sequence(jp,z8.trim(mn.P_UTILS.optionalWhitespace()),Zp).optional()),Ry=$t.separateBy(H8,Oy.trim(mn.P_UTILS.optionalWhitespace())),Ml=$t.sequence($t.sequence($y,$t.highlightStr("^","control")).optional(),$t.sequence($t.highlight(Dl,"ident"),$t.highlightStr("#","control")).optional(),$t.highlight(Iy,"ident")),G8=$t.sequence(Yp.trim(mn.P_UTILS.optionalWhitespace()),$t.sequence(jp,Ry.trim(mn.P_UTILS.optionalWhitespace()),Zp).trim(mn.P_UTILS.optionalWhitespace()).optional(),$t.sequence($t.highlightStr(":","control").trim(mn.P_UTILS.optionalWhitespace()),Ml).trim(mn.P_UTILS.optionalWhitespace()).optional()),W8=$t.sequence(Yp.trim(mn.P_UTILS.optionalWhitespace()).optional(),$t.sequence(jp,Ry.trim(mn.P_UTILS.optionalWhitespace()),Zp).trim(mn.P_UTILS.optionalWhitespace()).optional(),$t.sequence($t.highlightStr(":","control").trim(mn.P_UTILS.optionalWhitespace()),Ml).trim(mn.P_UTILS.optionalWhitespace()).optional()),G_=Py.P.or($t.sequence($t.highlightStr("INPUT","control"),El,$y.trim(mn.P_UTILS.optionalWhitespace()),Tl.skip(mn.P_UTILS.optionalWhitespace()),El,W8,Tl),$t.sequence($t.highlightStr("INPUT","control"),El,G8,Tl)),H_=$t.highlight(Wp,"ident"),Y8=$t.sequence($t.highlightStr("{","string"),Ml,$t.highlightStr("}","string")),j8=$t.sequence(H_,$t.sequence(Y8,H_).many()),Z8=$t.sequence(Yp.trim(mn.P_UTILS.optionalWhitespace()).optional(),$t.sequence(jp,Ry.trim(mn.P_UTILS.optionalWhitespace()).optional(),Zp).trim(mn.P_UTILS.optionalWhitespace()).optional(),$t.sequence($t.highlightStr(":","control").trim(mn.P_UTILS.optionalWhitespace()),Ml).trim(mn.P_UTILS.optionalWhitespace()).optional()),W_=$t.sequence($t.highlightStr("VIEW","control"),El,j8,Tl,$t.sequence(El.skip(mn.P_UTILS.optionalWhitespace()),Z8,Tl).optional()),Y_=$t.sequence($t.highlightStr("BUTTON","control"),El,$t.separateBy($y,Oy.trim(mn.P_UTILS.optionalWhitespace())),Tl);var ts=class{constructor(e,r,n){this.str=e,this.highlights=r.filter(i=>i.range.from.index!==i.range.to.index),this.parsingError=n}getHighlights(){if(this.parsingError===void 0)return this.highlights;let e;return this.str[this.parsingError.parseFailure.furthest.index]===` +`?e={index:this.parsingError.parseFailure.furthest.index+1,column:1,line:this.parsingError.parseFailure.furthest.line+1}:e={index:this.parsingError.parseFailure.furthest.index+1,column:this.parsingError.parseFailure.furthest.column+1,line:this.parsingError.parseFailure.furthest.line},[new Sl({from:this.parsingError.parseFailure.furthest,to:e},"error")]}};function af(t,e,r){return Math.min(Math.max(t,e),r)}function Jp(t,e,r){return t!==void 0?Math.min(Math.max(t,e),r):void 0}function Ly(t,e,r,n,i){return(t-e)/(r-e)*(i-n)+n}function Vy(t,e){return(t%e+e)%e}function rs(t,e){if(t===null&&e===null)return!0;if(t===null||e===null||typeof t!=typeof e)return!1;if(typeof t=="object"&&typeof e=="object"){if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let i=0;i(i.DEFAULT="default",i.PRIMARY="primary",i.DESTRUCTIVE="destructive",i.PLAIN="plain",i))(Wr||{}),Vn=(d=>(d.COMMAND="command",d.JS="js",d.OPEN="open",d.INPUT="input",d.SLEEP="sleep",d.TEMPLATER_CREATE_NOTE="templaterCreateNote",d.RUN_TEMPLATER_FILE="runTemplaterFile",d.UPDATE_METADATA="updateMetadata",d.CREATE_NOTE="createNote",d.REPLACE_IN_NOTE="replaceInNote",d.REGEXP_REPLACE_IN_NOTE="regexpReplaceInNote",d.REPLACE_SELF="replaceSelf",d.INSERT_INTO_NOTE="insertIntoNote",d.INLINE_JS="inlineJS",d))(Vn||{}),of=class t{constructor(e,r,n,i){this.type=e,this.shiftKey=r,this.ctrlKey=n,this.altKey=i}static fromMouseEvent(e,r){return new t(r,e.shiftKey,e.ctrlKey,e.altKey)}openInNewTab(){return this.type==="middle"||this.ctrlKey}};var Lr=class{constructor(e,r){this.actionType=e,this.mb=r}};var nm=class extends Lr{constructor(e){super("command",e)}async run(e,r,n,i,a){this.mb.internal.executeCommandById(r.command)}create(){return{type:"command",command:""}}getActionLabel(){return"Run a command"}};var im=class extends Lr{constructor(e){super("createNote",e)}async run(e,r,n,i,a){if(r.openIfAlreadyExists){let o=Kp(Qp(r.folderPath??"",r.fileName),"md");if(await this.mb.file.exists(o)){await this.mb.file.open(o,"",!1);return}}await this.mb.file.create(r.folderPath??"",r.fileName,"md",r.openNote??!1,a.openInNewTab())}create(){return{type:"createNote",folderPath:"/",fileName:"Untitled",openNote:!0,openIfAlreadyExists:!1}}getActionLabel(){return"Create a new note"}};var am=class extends Lr{constructor(e){super("inlineJS",e)}async run(e,r,n,i,a){if(!this.mb.getSettings().enableJs)throw new ro({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let o={buttonConfig:structuredClone(e),args:structuredClone(r.args),buttonContext:structuredClone(i),click:structuredClone(a)};(await this.mb.internal.jsEngineRunCode(r.code,n,o))()}create(){return{type:"inlineJS",code:'console.log("Hello world")',args:{}}}getActionLabel(){return"Run JavaScript code"}};var om=class extends Lr{constructor(e){super("input",e)}async run(e,r,n,i,a){let o=document.activeElement;o&&o instanceof HTMLInputElement&&(o.setRangeText(r.str,o.selectionStart,o.selectionEnd,"end"),o.dispatchEvent(new Event("input",{bubbles:!0})))}create(){return{type:"input",str:""}}getActionLabel(){return"Insert text at cursor"}};var Fl=Tr(oa()),ua=Tr(qi());function X_(t){if(t==="+")return"+";if(t==="-")return"-";throw new Error(`Invalid LineNumberOp: ${t}`)}function J8(t){if(t===void 0)return 1;if(t==="+")return 1;if(t==="-")return-1;throw new Error(`Invalid LineNumberOp: ${t}`)}var Nl=class{constructor(e,r,n){this.literal=e,this.op=r,this.number=n}evaluate(e){let r=this.resolveLiteral(e),n=J8(this.op);return r!==void 0&&this.number!==void 0?r+this.number*n:this.number!==void 0?this.number*n:r!==void 0?r:0}resolveLiteral(e){if(this.literal!==void 0&&this.literal in e)return e[this.literal]}};var zy=ua.P.sequenceMap((t,e)=>t===void 0?e:-e,ua.P.string("-").optional(),ua.P.or(ua.P.sequenceMap((t,e,r)=>Number(t+e+r),Fl.P_UTILS.digits(),ua.P.string("."),Fl.P_UTILS.digits()),Fl.P_UTILS.digits().map(t=>Number(t)))).thenEof(),sf=ua.P.sequenceMap((t,e)=>t===void 0?e:-e,ua.P.string("-").optional(),Fl.P_UTILS.digits().map(t=>Number(t))).thenEof(),uf=ua.P.or(ua.P.sequenceMap((t,e,r)=>new Nl(t,X_(e),r),Ln,ua.P.or(ua.P.string("+"),ua.P.string("-")).trim(Fl.P_UTILS.optionalWhitespace()),sf),Ln.map(t=>new Nl(t,void 0,void 0)),sf.map(t=>new Nl(void 0,void 0,t)));var sm=class extends Lr{constructor(e){super("insertIntoNote",e)}async run(e,r,n,i,a){let o=r.templater?await this.mb.internal.evaluateTemplaterTemplate(this.mb.file.resolveFilePathLike(r.value),n):r.value,s=on(uf,r.line.toString());await this.mb.file.atomicModify(n,l=>{let u=l.split(` +`),c=this.mb.file.createLineNumberContext(l,i.position),f=s.evaluate(c);if(f<1||f>u.length)throw new Error("Line number out of bounds");return u=[...u.slice(0,f-1),o,...u.slice(f-1)],u.join(` +`)})}create(){return{type:"insertIntoNote",line:0,value:"Some text",templater:!1}}getActionLabel(){return"Insert text into the note"}};var um=class extends Lr{constructor(e){super("js",e)}async run(e,r,n,i,a){if(!this.mb.getSettings().enableJs)throw new ro({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let o={buttonConfig:structuredClone(e),args:structuredClone(r.args),buttonContext:structuredClone(i),click:structuredClone(a)};(await this.mb.internal.jsEngineRunFile(r.file,n,o))()}create(){return{type:"js",file:"",args:{}}}getActionLabel(){return"Run a JavaScript file"}};var Q_=Tr(oa()),Qn=Tr(qi());var K_=Qn.P.sequence(Dl,Qn.P.or(Qn.P.string("#").then(Qn.P.manyNotOf("[]#|:")),Qn.P.string("#").result(void 0),Qn.P.succeed(void 0)),Qn.P.string("|").then(Qn.P.manyNotOf("[]")).optional()),lm=Qn.P.or(Qn.P.sequenceMap((t,e)=>new xu(t!==void 0,e[0],e[1],e[2],!0),Qn.P.string("!").optional(),K_.wrapString("[[","]]")),Qn.P.sequenceMap((t,e,r)=>{let n=!Cl(r);return new xu(t!==void 0,r,void 0,e,n)},Qn.P.string("!").optional(),Qn.P.manyNotOf("[]").wrapString("[","]"),Qn.P.manyNotOf("()").wrapString("(",")"))),X8=Qn.P.separateBy(lm,Qn.P.string(",").trim(Q_.P_UTILS.optionalWhitespace())),xu=class t{constructor(e,r,n,i,a){this.isEmbed=e,this.target=r,this.block=n,this.alias=i,this.internal=a??!0}static fromUrl(e){return new t(!1,e.href,void 0,e.hostname,!1)}fullTarget(){return this.block?`${this.target}#${this.block}`:this.target}open(e,r,n){this.internal?e.file.open(this.fullTarget(),r,n):Xp(this.target)}toString(){let e=this.isEmbed?"!":"";if(this.internal){let r=this.alias?`|${this.alias}`:"";return`${e}[[${this.fullTarget()}${r}]]`}else{let r=this.alias??this.fullTarget();return`${e}[${r}](${this.fullTarget()})`}}},vn=class t{static parseLink(e){return on(lm.thenEof(),e)}static parseLinkList(e){return on(X8.thenEof(),e)}static isLink(e){return lm.thenEof().tryParse(e).success}static urlToLink(e){return xu.fromUrl(e)}static parseLinkOrUrl(e){return Cl(e)?t.urlToLink(new URL(e)):t.parseLink(e)}static interpretAsLink(e){let r=lm.thenEof().tryParse(e);if(r.success)return r.value;let n=K_.thenEof().tryParse(e);if(n.success)return new xu(!1,n.value[0],n.value[1],n.value[2],!0);if(Cl(e)){let i=new URL(e);return xu.fromUrl(i)}}};var cm=class extends Lr{constructor(e){super("open",e)}async run(e,r,n,i,a){let o=a.openInNewTab()||(r.newTab??!1),s=vn.interpretAsLink(r.link);if(!s)throw new Error("Invalid link");s.open(this.mb,n,o)}create(){return{type:"open",link:"",newTab:!0}}getActionLabel(){return"Open a link"}};var fm=class extends Lr{constructor(e){super("regexpReplaceInNote",e)}async run(e,r,n,i,a){if(r.regexp==="")throw new Error("Regexp cannot be empty");await this.mb.file.atomicModify(n,o=>o.replace(new RegExp(r.regexp,r.regexpFlags??"g"),r.replacement))}create(){return{type:"regexpReplaceInNote",regexp:"([A-Z])\\w+",replacement:"Replacement text",regexpFlags:"g"}}getActionLabel(){return"Replace text in note using regexp"}};var pm=class extends Lr{constructor(e){super("replaceInNote",e)}async run(e,r,n,i,a){let o=r.templater?await this.mb.internal.evaluateTemplaterTemplate(this.mb.file.resolveFilePathLike(r.replacement),n):r.replacement,s=on(uf,r.fromLine.toString()),l=on(uf,r.toLine.toString());await this.mb.file.atomicModify(n,u=>{let c=u.split(` +`),f=this.mb.file.createLineNumberContext(u,i.position),m=s.evaluate(f),p=l.evaluate(f);if(m>p)throw new Error(`From line (${m}) can't be greater than to line (${p})`);if(m<1)throw new Error(`From line (${m}) can't smaller than 1.`);if(p>c.length)throw new Error(`To line (${p}) can't greater than the file length ${c.length}.`);return c=[...c.slice(0,m-1),o,...c.slice(p)],c.join(` +`)})}create(){return{type:"replaceInNote",fromLine:0,toLine:0,replacement:"Replacement text",templater:!1}}getActionLabel(){return"Replace text in note"}};var mm=class extends Lr{constructor(e){super("replaceSelf",e)}async run(e,r,n,i,a){if(i.isInline)throw new Error("Replace self action not supported for inline buttons");if(i.position===void 0)throw new Error("Position of the button in the note is unknown");if(i.position.lineStart>i.position.lineEnd)throw new Error("Position of the button in the note is invalid");let o=i.position,s=r.templater?await this.mb.internal.evaluateTemplaterTemplate(this.mb.file.resolveFilePathLike(r.replacement),n):r.replacement;await this.mb.file.atomicModify(n,l=>{let u=l.split(` +`);if(o.lineStart<0||o.lineEnd>u.length)throw new Error("Position of the button in the note is out of bounds");return u=[...u.slice(0,o.lineStart),s,...u.slice(o.lineEnd+1)],u.join(` +`)})}create(){return{type:"replaceSelf",replacement:"Replacement text",templater:!1}}getActionLabel(){return"Replace button with text"}};var dm=class extends Lr{constructor(e){super("runTemplaterFile",e)}async run(e,r,n,i,a){let o=this.mb.file.resolveFilePathLike(r.templateFile);await this.mb.internal.evaluateTemplaterTemplate(o,n)}create(){return{type:"runTemplaterFile",templateFile:""}}getActionLabel(){return"Run a templater file"}};var hm=class extends Lr{constructor(e){super("sleep",e)}async run(e,r,n,i,a){await new Promise(o=>setTimeout(o,r.ms))}create(){return{type:"sleep",ms:0}}getActionLabel(){return"Sleep for some time"}};var gm=class extends Lr{constructor(e){super("templaterCreateNote",e)}async run(e,r,n,i,a){if(r.openIfAlreadyExists&&r.fileName){let o=Kp(Qp(r.folderPath??"",r.fileName),"md");if(await this.mb.file.exists(o)){await this.mb.file.open(o,"",!1);return}}await this.mb.internal.createNoteWithTemplater(r.templateFile,r.folderPath,r.fileName,r.openNote,a.openInNewTab())}create(){return{type:"templaterCreateNote",templateFile:"",folderPath:"/",fileName:"",openNote:!0,openIfAlreadyExists:!1}}getActionLabel(){return"Create a new note using Templater"}};function la(t){if(t.toLowerCase()==="null")return null;if(t==="true")return!0;if(t==="false")return!1;{let e=zy.tryParse(t);return e.success?e.value:t}}function dn(t){return t===void 0||t===null?"":typeof t=="string"?t:typeof t=="boolean"?t?"true":"false":t.toString()}function Os(t){return t===null||typeof t=="string"||typeof t=="boolean"||typeof t=="number"}function Ia(t){if(t!=null){if(Os(t))return[t];if(typeof t=="object"&&Array.isArray(t))return t.filter(e=>Os(e))}}function Il(t){if(typeof t=="number")return t;if(typeof t=="string"){let e=zy.tryParse(t);if(e.success)return e.value}}function Do(t){return Os(t)?dn(t):void 0}function Rs(t){return Os(t)?t:void 0}function wu(t,e){return Array.isArray(t)?t.map(r=>Hy(r,e)).filter(r=>r!=="").join(", "):Hy(t,e)}function Hy(t,e){return t==null?e?"":"null":typeof t=="function"?"":typeof t=="object"||Array.isArray(t)?JSON.stringify(t):t.toString()}function t1(t,e){return Array.isArray(t)?t.map(r=>e1(r,e)).filter(r=>r!==""):e1(t,e)}function e1(t,e){return typeof t=="string"?vn.isLink(t)?vn.parseLink(t):Cl(t)?vn.urlToLink(new URL(t)):t:Hy(t,e)}var vm=class extends Lr{constructor(e){super("updateMetadata",e)}async run(e,r,n,i,a){let o=this.mb.bindTargetParser.fromStringAndValidate(r.bindTarget,n);if(r.evaluate){if(!this.mb.getSettings().enableJs)throw new ro({errorLevel:"CRITICAL",effect:"Can't run button action that requires JS evaluation.",cause:"JS evaluation is disabled in the plugin settings."});let s=new Function("x","getMetadata",`return ${r.value};`);this.mb.api.updateMetadata(o,l=>s(l,u=>this.mb.api.getMetadata(this.mb.api.parseBindTarget(u,n))))}else this.mb.api.setMetadata(o,la(r.value))}create(){return{type:"updateMetadata",bindTarget:"",evaluate:!1,value:""}}getActionLabel(){return"Update metadata"}};var ym=class{constructor(e){this.mb=e,this.actionContexts={command:new nm(e),open:new cm(e),js:new um(e),input:new om(e),sleep:new hm(e),templaterCreateNote:new gm(e),updateMetadata:new vm(e),createNote:new im(e),replaceInNote:new pm(e),replaceSelf:new mm(e),regexpReplaceInNote:new fm(e),insertIntoNote:new sm(e),inlineJS:new am(e),runTemplaterFile:new dm(e)}}createDefaultButtonConfig(){return{label:"This is a button",icon:"",style:"default",class:"",cssStyle:"",backgroundImage:"",tooltip:"",id:"",hidden:!1,actions:[]}}async runButtonActions(e,r,n,i){try{if(e.action)await this.runAction(e,e.action,r,n,i);else if(e.actions)for(let a of e.actions)await this.runAction(e,a,r,n,i);else console.warn("meta-bind | ButtonMDRC >> no action defined")}catch(a){console.warn("meta-bind | ButtonMDRC >> error while running action",a),this.mb.internal.showNotice("meta-bind | Error while running button action. Check the console for details.")}}createDefaultAction(e){return this.actionContexts[e].create()}async runAction(e,r,n,i,a){let o=r.type;await this.actionContexts[o].run(e,r,n,i,a)}getActionLabel(e){return this.actionContexts[e].getActionLabel()}};var er=class{constructor(e){this.subject=e,this.errors=[]}add(e){e instanceof Error?(e instanceof Rn?this.errors.push(e):this.otherError=e,console.warn(e)):(console.trace(""),console.warn("[MB_ERROR_CONTAINER] received invalid error type",e))}merge(e){return this.errors=this.errors.concat(e.errors),e.otherError&&(this.otherError=e.otherError),this}hasErrors(){if(this.otherError)return!0;for(let e of this.errors)if(e.errorLevel==="ERROR"||e.errorLevel==="CRITICAL")return!0;return!1}hasCriticalErrors(){if(this.otherError)return!0;for(let e of this.errors)if(e.errorLevel==="CRITICAL")return!0;return!1}hasWarnings(){for(let e of this.errors)if(e.errorLevel==="WARNING")return!0;return!1}isEmpty(){return this.errors.length===0&&!this.otherError}getErrors(){let e=this.errors.filter(r=>r.errorLevel==="ERROR"||r.errorLevel==="CRITICAL");return this.otherError?e.concat([this.otherError]):e}getWarnings(){return this.errors.filter(e=>e.errorLevel==="WARNING")}};var bm=class{constructor(e){this.value=e,this.count=1}getValue(){return this.value}increment(){return this.count+=1,this.count}decrement(){return this.count-=1,this.count}getCount(){return this.count}isEmpty(){return this.count===0}};var xm=class{constructor(e){this.mb=e,this.buttons=new Map,this.buttonLoadListeners=new Map,this.buttonTemplates=new Map}setButtonTemplates(e){let r=new Set,n=new er("ButtonManager");this.buttonTemplates.clear();for(let i of e)i.id===void 0||i.id===""?n.add(new es({errorLevel:"ERROR",cause:`Button with label "${i.label}" has no id, but button templates must have an id.`,effect:"Button templates could not be saved."})):r.has(i.id)?n.add(new es({errorLevel:"ERROR",cause:`Button id "${i.id}" is not unique. The same id is used by multiple buttons.`,effect:"Button templates could not be saved."})):(r.add(i.id),this.buttonTemplates.set(i.id,i));return n.hasErrors()&&this.buttonTemplates.clear(),n}registerButtonLoadListener(e,r,n){let i=this.getButton(e,r);i&&n(i),this.buttonLoadListeners.has(e)||this.buttonLoadListeners.set(e,new Map);let a=this.buttonLoadListeners.get(e);a.has(r)||a.set(r,new Map);let o=a.get(r),s=_r();return o.set(s,n),()=>this.removeButtonLoadListener(e,r,s)}notifyButtonLoadListeners(e,r){let n=this.getButton(e,r);if(!n)throw new Error(`ButtonManager | button with id ${r} does not exist`);let i=this.buttonLoadListeners.get(e);if(!i)return;let a=i.get(r);if(a)for(let[o,s]of a)s(n)}removeButtonLoadListener(e,r,n){let i=this.buttonLoadListeners.get(e);if(!i)return;let a=i.get(r);a&&(a.delete(n),a.size===0&&i.delete(r),i.size===0&&this.buttonLoadListeners.delete(e))}addButton(e,r){if(r.id===void 0||r.id==="")throw new Error("ButtonManager | button id is undefined");if(this.buttonTemplates.has(r.id))throw new Error(`ButtonManager | button with id "${r.id}" already exists in the button templates`);this.buttons.has(e)||this.buttons.set(e,new Map),this.buttons.get(e).set(r.id,new bm(r)),this.notifyButtonLoadListeners(e,r.id)}getButton(e,r){if(this.buttonTemplates.has(r))return this.buttonTemplates.get(r);let n=this.buttons.get(e);if(n)return n.get(r)?.getValue()}removeButton(e,r){let n=this.buttons.get(e);n&&(n.get(r)?.decrement(),n.get(r)?.isEmpty()&&n.delete(r),n.size===0&&this.buttons.delete(e))}};var Ls=(x=>(x.TOGGLE="toggle",x.SLIDER="slider",x.TEXT="text",x.TEXT_AREA="textArea",x.SELECT="select",x.MULTI_SELECT="multiSelect",x.DATE="date",x.TIME="time",x.DATE_PICKER="datePicker",x.NUMBER="number",x.SUGGESTER="suggester",x.EDITOR="editor",x.IMAGE_SUGGESTER="imageSuggester",x.PROGRESS_BAR="progressBar",x.INLINE_SELECT="inlineSelect",x.LIST="list",x.LIST_SUGGESTER="listSuggester",x.INLINE_LIST_SUGGESTER="inlineListSuggester",x.INLINE_LIST="inlineList",x.IMAGE_LIST_SUGGESTER="imageListSuggester",x.DATE_TIME="dateTime",x.INVALID="invalid",x))(Ls||{}),en=(D=>(D.CLASS="class",D.ADD_LABELS="addLabels",D.MIN_VALUE="minValue",D.MAX_VALUE="maxValue",D.STEP_SIZE="stepSize",D.OPTION="option",D.TITLE="title",D.OPTION_QUERY="optionQuery",D.SHOWCASE="showcase",D.ON_VALUE="onValue",D.OFF_VALUE="offValue",D.DEFAULT_VALUE="defaultValue",D.PLACEHOLDER="placeholder",D.USE_LINKS="useLinks",D.LIMIT="limit",D.MULTI_LINE="multiLine",D.ALLOW_OTHER="allowOther",D.INVALID="invalid",D))(en||{}),wm={toggle:{type:"toggle",allowInBlock:!0,allowInline:!0},slider:{type:"slider",allowInBlock:!0,allowInline:!0},text:{type:"text",allowInBlock:!0,allowInline:!0},textArea:{type:"textArea",allowInBlock:!0,allowInline:!0},select:{type:"select",allowInBlock:!0,allowInline:!1},multiSelect:{type:"multiSelect",allowInBlock:!0,allowInline:!1},date:{type:"date",allowInBlock:!0,allowInline:!0},time:{type:"time",allowInBlock:!0,allowInline:!0},datePicker:{type:"datePicker",allowInBlock:!0,allowInline:!0},number:{type:"number",allowInBlock:!0,allowInline:!0},suggester:{type:"suggester",allowInBlock:!0,allowInline:!0},editor:{type:"editor",allowInBlock:!0,allowInline:!1},imageSuggester:{type:"imageSuggester",allowInBlock:!0,allowInline:!0},progressBar:{type:"progressBar",allowInBlock:!0,allowInline:!1},inlineSelect:{type:"inlineSelect",allowInBlock:!0,allowInline:!0},list:{type:"list",allowInBlock:!0,allowInline:!1},listSuggester:{type:"listSuggester",allowInBlock:!0,allowInline:!1},inlineListSuggester:{type:"inlineListSuggester",allowInBlock:!0,allowInline:!0},inlineList:{type:"inlineList",allowInBlock:!0,allowInline:!0},imageListSuggester:{type:"imageListSuggester",allowInBlock:!0,allowInline:!1},dateTime:{type:"dateTime",allowInBlock:!0,allowInline:!0},invalid:{type:"invalid",allowInBlock:!1,allowInline:!1}};var Ar={addLabels:{type:"addLabels",allowedFieldTypes:["slider","progressBar"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},class:{type:"class",allowedFieldTypes:[],values:[[{name:"className",allowed:[],description:"the name of the css class to add"}]],allowMultiple:!0},defaultValue:{type:"defaultValue",allowedFieldTypes:[],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},maxValue:{type:"maxValue",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the maximally allowed value"}]],allowMultiple:!1},minValue:{type:"minValue",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the minimally allowed value"}]],allowMultiple:!1},stepSize:{type:"stepSize",allowedFieldTypes:["slider","progressBar"],values:[[{name:"value",allowed:["number"],description:"the step size for sliders"}]],allowMultiple:!1},offValue:{type:"offValue",allowedFieldTypes:["toggle"],values:[[{name:"value",allowed:[],description:"the value for the off state"}]],allowMultiple:!1},onValue:{type:"onValue",allowedFieldTypes:["toggle"],values:[[{name:"value",allowed:[],description:"the value for the off state"}]],allowMultiple:!1},option:{type:"option",allowedFieldTypes:["select","multiSelect","suggester","imageSuggester","inlineSelect","listSuggester","inlineListSuggester","imageListSuggester"],values:[[{name:"value",allowed:[],description:"the value and display name of the option"}],[{name:"value",allowed:[],description:"the value of the option"},{name:"name",allowed:[],description:"the display name of the option"}]],allowMultiple:!0},optionQuery:{type:"optionQuery",allowedFieldTypes:["suggester","imageSuggester","listSuggester","inlineListSuggester","imageListSuggester"],values:[[{name:"value",allowed:[],description:"the query for options"}]],allowMultiple:!0},placeholder:{type:"placeholder",allowedFieldTypes:["text","textArea","number","list","inlineList"],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},showcase:{type:"showcase",allowedFieldTypes:[],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},title:{type:"title",allowedFieldTypes:[],values:[[{name:"value",allowed:[],description:""}]],allowMultiple:!1},useLinks:{type:"useLinks",allowedFieldTypes:["suggester","listSuggester","inlineListSuggester"],values:[[],[{name:"value",allowed:["true","partial","false"],description:""}]],allowMultiple:!1},limit:{type:"limit",allowedFieldTypes:["text","textArea","list","inlineList"],values:[[{name:"value",allowed:["number"],description:"a character limit for text fields"}]],allowMultiple:!1},multiLine:{type:"multiLine",allowedFieldTypes:["list"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},allowOther:{type:"allowOther",allowedFieldTypes:["suggester","listSuggester","inlineListSuggester"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},invalid:{type:"invalid",allowedFieldTypes:[],values:[[]],allowMultiple:!0}},lf=(a=>(a.MATH="math",a.TEXT="text",a.LINK="link",a.IMAGE="image",a.INVALID="invalid",a))(lf||{}),_u=(i=>(i.RENDER_MARKDOWN="renderMarkdown",i.HIDDEN="hidden",i.CLASS="class",i.INVALID="invalid",i))(_u||{}),Bl={renderMarkdown:{type:"renderMarkdown",allowedFieldTypes:["text"],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},hidden:{type:"hidden",allowedFieldTypes:[],values:[[],[{name:"value",allowed:["true","false"],description:""}]],allowMultiple:!1},class:{type:"class",allowedFieldTypes:[],values:[[{name:"className",allowed:[],description:"the name of the css class to add"}]],allowMultiple:!0},invalid:{type:"invalid",allowedFieldTypes:[],values:[[]],allowMultiple:!0}},_m=8;var Xe=!1;var Ba=Array.isArray,r1=Array.prototype.indexOf,cf=Array.from,Gy=Object.keys,ni=Object.defineProperty,ka=Object.getOwnPropertyDescriptor,Wy=Object.getOwnPropertyDescriptors,Am=Object.prototype,n1=Array.prototype,Au=Object.getPrototypeOf,Yy=Object.isExtensible;var ca=()=>{};function ff(t){for(var e=0;e0){let i=r.length>10?r.slice(0,7):r.slice(0,10),a=r.length-i.length,o=i.map(s=>`- ${s}`).join(` +https://svelte.dev/e/state_snapshot_uncloneable`,K8,e6):console.warn("https://svelte.dev/e/state_snapshot_uncloneable")}var t6=[];function ft(t,e=!1){if(Xe&&!e){let r=[],n=mf(t,new Map,"",r);if(r.length===1&&r[0]==="")Zy();else if(r.length>0){let i=r.length>10?r.slice(0,7):r.slice(0,10),a=r.length-i.length,o=i.map(s=>`- ${s}`).join(` `);a>0&&(o+=` -- ...and ${a} more`),Ab(o)}return n}return Cp(t,new Map,"",_W)}function Cp(t,e,r,n,i=null){if(typeof t=="object"&&t!==null){var a=e.get(t);if(a!==void 0)return a;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(oo(t)){var o=Array(t.length);e.set(t,o),i!==null&&e.set(i,o);for(var s=0;s0){let i=Array.from($l);var n=qs;Wc(!0);try{for(let a of i)a.f&1024&&Qi(a,4096),Du(a)&&Ol(a)}finally{Wc(n)}$l.clear()}}return e}function RI(t,e){var r=t.reactions;if(r!==null)for(var n=zs(),i=r.length,a=0;ar.line)return i.component}}return null}var CW=Symbol("ADD_OWNER");function Db(t,e){if(e.owners!==null)for(;t;){if(t.owners===null){e.owners=null;break}for(let r of t.owners)e.owners.add(r);t=t.parent}}function HI(t,e){return t.owners===null?!0:t.owners.has(e)||t.parent!==null&&HI(t.parent,e)}function GI(t){return t?.owners?.values().next().value??GI(t.parent)}var NW=!1;function WI(t){if(NW)return;let e=zI();if(e&&!HI(t,e)){let r=GI(t);r[Xi]!==e[Xi]?Tb(e[Xi],r[Xi]):Tb()}}function Le(t,e=null,r){var n=null;if(Ze&&ss&&(n=Us("CreatedAt")),typeof t!="object"||t===null||La in t)return t;let i=Eu(t);if(i!==bh&&i!==wI)return t;var a=new Map,o=oo(t),s=Hn(0);o&&a.set("length",Hn(t.length,n));var l;if(Ze)if(l={parent:e,owners:null},r){let u=r.v?.[kl]?.owners;l.owners=u?new Set(u):null}else l.owners=e===null?xr!==null?new Set([xr.function]):null:new Set;return new Proxy(t,{defineProperty(u,c,f){(!("value"in f)||f.configurable===!1||f.enumerable===!1||f.writable===!1)&&PI();var m=a.get(c);return m===void 0?(m=Hn(f.value,n),a.set(c,m)):$e(m,Le(f.value,l)),!0},deleteProperty(u,c){var f=a.get(c);if(f===void 0)c in u&&a.set(c,Hn(zn,n));else{if(o&&typeof c=="string"){var m=a.get("length"),p=Number(c);Number.isInteger(p)&&p=v.v&&$e(v,A+1)}YI(s)}return!0},ownKeys(u){z(s);var c=Reflect.ownKeys(u).filter(p=>{var d=a.get(p);return d===void 0||d.v!==zn});for(var[f,m]of a)m.v!==zn&&!(f in u)&&c.push(f);return c},setPrototypeOf(){BI()}})}function YI(t,e=1){$e(t,t.v+e)}function Xc(t){return t!==null&&typeof t=="object"&&La in t?t[La]:t}function Mb(t,e){return Object.is(Xc(t),Xc(e))}function jI(){let t=Array.prototype,e=Array.__svelte_cleanup;e&&e();let{indexOf:r,lastIndexOf:n,includes:i}=t;t.indexOf=function(a,o){let s=r.call(this,a,o);if(s===-1){for(let l=o??0;l{t.indexOf=r,t.lastIndexOf=n,t.includes=i}}var Hs,ZI,JI,XI;function Th(){if(Hs===void 0){Hs=window,ZI=document;var t=Element.prototype,e=Node.prototype;JI=$o(e,"firstChild").get,XI=$o(e,"nextSibling").get,t.__click=void 0,t.__className="",t.__attributes=null,t.__styles=null,t.__e=void 0,Text.prototype.__t=void 0,Ze&&(t.__svelte_meta=null,jI())}}function ha(t=""){return document.createTextNode(t)}function Nn(t){return JI.call(t)}function Ii(t){return XI.call(t)}function ye(t,e){if(!Bt)return Nn(t);var r=Nn(Kt);if(r===null)r=Kt.appendChild(ha());else if(e&&r.nodeType!==3){var n=ha();return r?.before(n),En(n),n}return En(r),r}function Je(t,e){if(!Bt){var r=Nn(t);return r instanceof Comment&&r.data===""?Ii(r):r}if(e&&Kt?.nodeType!==3){var n=ha();return Kt?.before(n),En(n),n}return Kt}function le(t,e=1,r=!1){let n=Bt?Kt:t;for(var i;e--;)i=n,n=Ii(n);if(!Bt)return n;var a=n?.nodeType;if(r&&a!==3){var o=ha();return n===null?i?.after(o):n.before(o),En(o),o}return En(n),n}function Qc(t){t.textContent=""}function Vt(t){var e=2050;rr===null?e|=256:rr.f|=1048576;var r=yr!==null&&yr.f&2?yr:null;let n={children:null,ctx:xr,deps:null,equals:_h,f:e,fn:t,reactions:null,rv:0,v:null,wv:0,parent:r??rr};return Ze&&ss&&(n.created=Us("CreatedAt")),r!==null&&(r.children??=[]).push(n),n}function $p(t){let e=Vt(t);return e.equals=Gc,e}function Nb(t){var e=t.children;if(e!==null){t.children=null;for(var r=0;r{yi(e)}}function t2(t){let e=Ll(64,t,!0);return(r={})=>new Promise(n=>{r.outro?Lo(e,()=>{yi(e),n(void 0)}):(yi(e),n(void 0))})}function va(t){return Ll(4,t,!1)}function da(t){return Ll(8,t,!0)}function Re(t){return Ze&&gi(t,"name",{value:"{expression}"}),ea(t)}function ea(t,e=0){return Ll(24|e,t,!0)}function xi(t,e=!0){return Ll(40,t,!0,e)}function Ob(t){var e=t.teardown;if(e!==null){let r=Ch,n=yr;Bb(!0),Ki(null);try{e.call(null)}finally{Bb(r),Ki(n)}}}function Rb(t){var e=t.deriveds;if(e!==null){t.deriveds=null;for(var r=0;r{yi(t),e&&e()})}function Ub(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function Mh(t,e,r){if(!(t.f&8192)){if(t.f^=8192,t.transitions!==null)for(let o of t.transitions)(o.is_global||r)&&e.push(o);for(var n=t.first;n!==null;){var i=n.next,a=(n.f&65536)!==0||(n.f&32)!==0;Mh(n,e,a?r:!1),n=i}}}function Cu(t){n2(t,!0)}function n2(t,e){if(t.f&8192){Du(t)&&Ol(t),t.f^=8192;for(var r=t.first;r!==null;){var n=r.next,i=(r.f&65536)!==0||(r.f&32)!==0;n2(r,i?e:!1),r=n}if(t.transitions!==null)for(let a of t.transitions)(a.is_global||e)&&a.in()}}var PW=typeof requestIdleCallback>"u"?t=>setTimeout(t,1):requestIdleCallback,Nh=!1,Fh=!1,qb=[],zb=[];function i2(){Nh=!1;let t=qb.slice();qb=[],Mp(t)}function a2(){Fh=!1;let t=zb.slice();zb=[],Mp(t)}function mo(t){Nh||(Nh=!0,queueMicrotask(i2)),qb.push(t)}function o2(t){Fh||(Fh=!0,PW(a2)),zb.push(t)}function s2(){Nh&&i2(),Fh&&a2()}function Rp(t){if(Ze){let e=new Error(`lifecycle_outside_component +`];for(let a=0;at.wv)return!0}(!n||rr!==null&&!Gs)&&Qi(t,1024)}return!1}function l2(t,e){for(var r=e;r!==null;){if(r.f&128)try{r.fn(t);return}catch{r.f^=128}r=r.parent}throw Ih=!1,t}function c2(t){return(t.f&16384)===0&&(t.parent===null||(t.parent.f&128)===0)}function nf(t,e,r,n){if(Ih){if(r===null&&(Ih=!1),c2(e))throw t;return}if(r!==null&&(Ih=!0),!Ze||n===null||!(t instanceof Error)||u2.has(t)){l2(t,e);return}u2.add(t);let i=[],a=e.fn?.name;a&&i.push(a);let o=n;for(;o!==null;){if(Ze){var s=o.function?.[Xi];if(s){let c=s.split("/").pop();i.push(c)}}o=o.p}let l=/Firefox/.test(navigator.userAgent)?" ":" ";gi(t,"message",{value:t.message+` -${i.map(c=>` +https://svelte.dev/e/lifecycle_outside_component`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}var gr=null;function vf(t){gr=t}var io=null;function yf(t){io=t}function Se(t,e=!1,r){var n=gr={p:gr,c:null,d:!1,e:null,m:!1,s:t,x:null,l:null};ns&&!e&&(gr.l={s:null,u:null,r1:[],r2:ao(!1)}),Gi(()=>{n.d=!0}),Xe&&(gr.function=r,io=r)}function Ee(t){let e=gr;if(e!==null){t!==void 0&&(e.x=t);let o=e.e;if(o!==null){var r=Xt,n=fr;e.e=null;try{for(var i=0;i{var u=fr;Un(o);var c=l();return Un(u),c};return n&&r.set("length",it(t.length,a)),new Proxy(t,{defineProperty(l,u,c){(!("value"in c)||c.configurable===!1||c.enumerable===!1||c.writable===!1)&&h1();var f=r.get(u);return f===void 0?(f=s(()=>it(c.value,a)),r.set(u,f)):ke(f,s(()=>dt(c.value))),!0},deleteProperty(l,u){var c=r.get(u);if(c===void 0)u in l&&(r.set(u,s(()=>it(In,a))),Jy(i));else{if(n&&typeof u=="string"){var f=r.get("length"),m=Number(u);Number.isInteger(m)&&mit(dt(m?l[u]:In),a)),r.set(u,f)),f!==void 0){var p=q(f);return p===In?void 0:p}return Reflect.get(l,u,c)},getOwnPropertyDescriptor(l,u){var c=Reflect.getOwnPropertyDescriptor(l,u);if(c&&"value"in c){var f=r.get(u);f&&(c.value=q(f))}else if(c===void 0){var m=r.get(u),p=m?.v;if(m!==void 0&&p!==In)return{enumerable:!0,configurable:!0,value:p,writable:!0}}return c},has(l,u){if(u===Hi)return!0;var c=r.get(u),f=c!==void 0&&c.v!==In||Reflect.has(l,u);if(c!==void 0||Xt!==null&&(!f||ka(l,u)?.writable)){c===void 0&&(c=s(()=>it(f?dt(l[u]):In,a)),r.set(u,c));var m=q(c);if(m===In)return!1}return f},set(l,u,c,f){var m=r.get(u),p=u in l;if(n&&u==="length")for(var d=c;dit(In,a)),r.set(d+"",h))}m===void 0?(!p||ka(l,u)?.writable)&&(m=s(()=>it(void 0,a)),ke(m,s(()=>dt(c))),r.set(u,m)):(p=m.v!==In,ke(m,s(()=>dt(c))));var b=Reflect.getOwnPropertyDescriptor(l,u);if(b?.set&&b.set.call(f,c),!p){if(n&&typeof u=="string"){var y=r.get("length"),D=Number(u);Number.isInteger(D)&&D>=y.v&&ke(y,D+1)}Jy(i)}return!0},ownKeys(l){q(i);var u=Reflect.ownKeys(l).filter(m=>{var p=r.get(m);return p===void 0||p.v!==In});for(var[c,f]of r)f.v!==In&&!(c in l)&&u.push(c);return u},setPrototypeOf(){g1()}})}function Jy(t,e=1){ke(t,t.v+e)}function Pl(t){try{if(t!==null&&typeof t=="object"&&Hi in t)return t[Hi]}catch{}return t}function Xy(t,e){return Object.is(Pl(t),Pl(e))}function zs(t){var e=2050,r=fr!==null&&(fr.f&2)!==0?fr:null;Xt===null||r!==null&&(r.f&256)!==0?e|=256:Xt.f|=1048576;let n={ctx:gr,deps:null,effects:null,equals:Dm,f:e,fn:t,reactions:null,rv:0,v:null,wv:0,parent:r??Xt};return Xe&&So&&(n.created=is("CreatedAt")),n}function cr(t){let e=zs(t);return Mm(e),e}function bf(t){let e=zs(t);return e.equals=kl,e}function Em(t){var e=t.effects;if(e!==null){t.effects=null;for(var r=0;r0){let n=Array.from(Su);for(let i of n)(i.f&1024)!==0&&fi(i,4096),Hs(i)&&Ll(i);Su.clear()}}return e}function w1(t,e){var r=t.reactions;if(r!==null)for(var n=Eo(),i=r.length,a=0;a{t.indexOf=r,t.lastIndexOf=n,t.includes=i}}var us,E1,wf,T1,M1;function Im(){if(us===void 0){us=window,E1=document,wf=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,r=Text.prototype;T1=ka(e,"firstChild").get,M1=ka(e,"nextSibling").get,Yy(t)&&(t.__click=void 0,t.__className=void 0,t.__attributes=null,t.__style=void 0,t.__e=void 0),Yy(r)&&(r.__t=void 0),Xe&&(t.__svelte_meta=null,S1())}}function Wi(t=""){return document.createTextNode(t)}function yn(t){return T1.call(t)}function di(t){return M1.call(t)}function ve(t,e){if(!Tt)return yn(t);var r=yn(jt);if(r===null)r=jt.appendChild(Wi());else if(e&&r.nodeType!==3){var n=Wi();return r?.before(n),un(n),n}return un(r),r}function We(t,e){if(!Tt){var r=yn(t);return r instanceof Comment&&r.data===""?di(r):r}if(e&&jt?.nodeType!==3){var n=Wi();return jt?.before(n),un(n),n}return jt}function ue(t,e=1,r=!1){let n=Tt?jt:t;for(var i;e--;)i=n,n=di(n);if(!Tt)return n;var a=n?.nodeType;if(r&&a!==3){var o=Wi();return n===null?i?.after(o):n.before(o),un(o),o}return un(n),n}function ql(t){t.textContent=""}function F1(t){Xt===null&&fr===null&&u1(t),fr!==null&&(fr.f&256)!==0&&Xt===null&&s1(),Eu&&o1(t)}function a6(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function Mu(t,e,r,n=!0){var i=Xt;if(Xe)for(;i!==null&&(i.f&262144)!==0;)i=i.parent;var a={ctx:gr,deps:null,nodes_start:null,nodes_end:null,f:t|2048,first:null,fn:e,last:null,next:null,parent:i,prev:null,teardown:null,transitions:null,wv:0};if(Xe&&(a.component_function=io),r)try{Ll(a),a.f|=32768}catch(l){throw ci(a),l}else e!==null&&Vl(a);var o=r&&a.deps===null&&a.first===null&&a.nodes_start===null&&a.teardown===null&&(a.f&1048704)===0;if(!o&&n&&(i!==null&&a6(a,i),fr!==null&&(fr.f&2)!==0)){var s=fr;(s.effects??=[]).push(a)}return a}function Gi(t){let e=Mu(8,null,!1);return fi(e,1024),e.teardown=t,e}function Yi(t){F1("$effect");var e=Xt!==null&&(Xt.f&32)!==0&&gr!==null&&!gr.m;if(Xe&&ni(t,"name",{value:"$effect"}),e){var r=gr;(r.e??=[]).push({fn:t,effect:Xt,reaction:fr})}else{var n=Fi(t);return n}}function ob(t){let e=Mu(64,t,!0);return()=>{ci(e)}}function I1(t){let e=Mu(64,t,!0);return(r={})=>new Promise(n=>{r.outro?lo(e,()=>{ci(e),n(void 0)}):(ci(e),n(void 0))})}function Fi(t){return Mu(4,t,!1)}function ma(t){return Mu(8,t,!0)}function Le(t,e=[],r=zs){let n=e.map(r),i=()=>t(...n.map(q));return Xe&&ni(i,"name",{value:"{expression}"}),ji(i)}function ji(t,e=0){return Mu(24|e,t,!0)}function hi(t,e=!0){return Mu(40,t,!0,e)}function sb(t){var e=t.teardown;if(e!==null){let r=Eu,n=fr;ib(!0),Un(null);try{e.call(null)}finally{ib(r),Un(n)}}}function ub(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){var n=r.next;(r.f&64)!==0?r.parent=null:ci(r,e),r=n}}function B1(t){for(var e=t.first;e!==null;){var r=e.next;(e.f&32)===0&&ci(e),e=r}}function ci(t,e=!0){var r=!1;(e||(t.f&524288)!==0)&&t.nodes_start!==null&&(k1(t.nodes_start,t.nodes_end),r=!0),ub(t,e&&!r),Af(t,0),fi(t,16384);var n=t.transitions;if(n!==null)for(let a of n)a.stop();sb(t);var i=t.parent;i!==null&&i.first!==null&&lb(t),Xe&&(t.component_function=null),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes_start=t.nodes_end=null}function k1(t,e){for(;t!==null;){var r=t===e?null:di(t);t.remove(),t=r}}function lb(t){var e=t.parent,r=t.prev,n=t.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=r))}function lo(t,e){var r=[];km(t,r,!0),cb(r,()=>{ci(t),e&&e()})}function cb(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function km(t,e,r){if((t.f&8192)===0){if(t.f^=8192,t.transitions!==null)for(let o of t.transitions)(o.is_global||r)&&e.push(o);for(var n=t.first;n!==null;){var i=n.next,a=(n.f&65536)!==0||(n.f&32)!==0;km(n,e,a?r:!1),n=i}}}function Gs(t){P1(t,!0)}function P1(t,e){if((t.f&8192)!==0){t.f^=8192,(t.f&1024)===0&&(t.f^=1024),Hs(t)&&(fi(t,2048),Vl(t));for(var r=t.first;r!==null;){var n=r.next,i=(r.f&65536)!==0||(r.f&32)!==0;P1(r,i?e:!1),r=n}if(t.transitions!==null)for(let a of t.transitions)(a.is_global||e)&&a.in()}}var o6=typeof requestIdleCallback>"u"?t=>setTimeout(t,1):requestIdleCallback,Df=[],Sf=[];function $1(){var t=Df;Df=[],ff(t)}function O1(){var t=Sf;Sf=[],ff(t)}function Ra(t){Df.length===0&&queueMicrotask($1),Df.push(t)}function R1(t){Sf.length===0&&o6(O1),Sf.push(t)}function L1(){Df.length>0&&$1(),Sf.length>0&&O1()}var V1=new WeakSet,Pm=!1,Hl=!1,Ef=null,Cu=!1,Eu=!1;function ib(t){Eu=t}var Tf=[],Om=[],fr=null,$a=!1;function Un(t){fr=t}var Xt=null;function ii(t){Xt=t}var To=null;function Mm(t){fr!==null&&fr.f&2097152&&(To===null?To=[t]:To.push(t))}var Bi=null,da=0,pa=null;function _1(t){pa=t}var H1=1,Rm=0,as=!1,hf=null;function xf(){return++H1}function Hs(t){var e=t.f;if((e&2048)!==0)return!0;if((e&4096)!==0){var r=t.deps,n=(e&256)!==0;if(r!==null){var i,a,o=(e&512)!==0,s=n&&Xt!==null&&!as,l=r.length;if(o||s){var u=t,c=u.parent;for(i=0;it.wv)return!0}(!n||Xt!==null&&!as)&&fi(t,1024)}return!1}function s6(t,e){for(var r=e;r!==null;){if((r.f&128)!==0)try{r.fn(t);return}catch{r.f^=128}r=r.parent}throw Pm=!1,t}function U1(t){return(t.f&16384)===0&&(t.parent===null||(t.parent.f&128)===0)}function Gl(t,e,r,n){if(Pm){if(r===null&&(Pm=!1),U1(e))throw t;return}if(r!==null&&(Pm=!0),Xe&&n!==null&&t instanceof Error&&!V1.has(t)){V1.add(t);let a=[],o=e.fn?.name;o&&a.push(o);let s=n;for(;s!==null;){var i=s.function?.[no];if(i){let c=i.split("/").pop();a.push(c)}s=s.p}let l=wf?" ":" ";ni(t,"message",{value:t.message+` +${a.map(c=>` ${l}in ${c}`).join("")} -`}),gi(t,"component_stack",{value:i});let u=t.stack;if(u){let c=u.split(` -`),f=[];for(let m=0;m0)for(c.length=qa+ya.length,f=0;ft.fn)),Vp=[]}function g2(){if(rf>1e3){rf=0;try{DI()}catch(t){if(Ze&&gi(t,"stack",{value:""}),tf!==null)if(Ze)try{nf(t,tf,null,null)}catch(e){throw f2(),e}else nf(t,tf,null,null);else throw Ze&&f2(),t}}rf++}function v2(t){var e=t.length;if(e!==0){g2();var r=qs;qs=!0;try{for(var n=0;n1001)return;let t=Vl;Vl=[],v2(t),Lp||(rf=0,tf=null,Ze&&(Vp=[]))}function Pp(t){Ph===m2&&(Lp||(Lp=!0,queueMicrotask(LW))),tf=t;for(var e=t;e.parent!==null;){e=e.parent;var r=e.f;if(r&96){if(!(r&1024))return;e.f^=1024}}Vl.push(e)}function y2(t,e){var r=t.first,n=[];e:for(;r!==null;){var i=r.f,a=(i&32)!==0,o=a&&(i&1024)!==0,s=r.next;if(!o&&!(i&8192))if(i&8){if(a)r.f^=1024;else try{Du(r)&&Ol(r)}catch(f){nf(f,r,null,r.ctx)}var l=r.first;if(l!==null){r=l;continue}}else i&4&&n.push(r);if(s===null){let f=r.parent;for(;f!==null;){if(t===f)break e;var u=f.next;if(u!==null){r=u;continue e}f=f.parent}}r=s}for(var c=0;c0||i.length>0)&&af(),rf=0,tf=null,Ze&&(Vp=[]),n}finally{Ph=e,Vl=r}}function z(t){var e=t.f,r=(e&2)!==0;if(r&&e&16384){var n=Ib(t);return Op(t),n}if(Fp!==null&&Fp.add(t),yr!==null){Oo!==null&&Oo.includes(t)&&kI();var i=yr.deps;t.rv{if(r!==void 0)return r;II(e)},set:n=>{r=n}})}};t("$state"),t("$effect"),t("$derived"),t("$inspect"),t("$props"),t("$bindable")}function On(t){Bt&&Nn(t)!==null&&Qc(t)}var x2=!1;function $h(){x2||(x2=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{if(!t.defaultPrevented)for(let e of t.target.elements)e.__on_r?.()})},{capture:!0}))}function Oh(t){var e=yr,r=rr;Ki(null),ei(null);try{return t()}finally{Ki(e),ei(r)}}function Rh(t,e,r,n=r){t.addEventListener(e,()=>Oh(r));let i=t.__on_r;i?t.__on_r=()=>{i(),n(!0)}:t.__on_r=()=>n(!0),$h()}var Hb=new Set,Lh=new Set;function b2(t,e,r,n){function i(a){if(n.capture||of.call(e,a),!a.cancelBubble)return Oh(()=>r.call(this,a))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?mo(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function Pi(t,e,r,n,i){var a={capture:n,passive:i},o=b2(t,e,r,a);(e===document.body||e===window||e===document)&&po(()=>{e.removeEventListener(t,o,a)})}function kt(t){for(var e=0;e{throw T});throw m}}finally{t.__root=e,delete t.currentTarget,Ki(c),ei(f)}}}var qW;function w2(){qW=void 0}function Up(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function ta(t,e){var r=rr;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function ue(t,e){var r=(e&1)!==0,n=(e&2)!==0,i,a=!t.startsWith("");return()=>{if(Bt)return ta(Kt,null),Kt;i===void 0&&(i=Up(a?t:""+t),r||(i=Nn(i)));var o=n?document.importNode(i,!0):i.cloneNode(!0);if(r){var s=Nn(o),l=o.lastChild;ta(s,l)}else ta(o,o);return o}}function Vh(t,e,r="svg"){var n=!t.startsWith(""),i=(e&1)!==0,a=`<${r}>${n?t:""+t}`,o;return()=>{if(Bt)return ta(Kt,null),Kt;if(!o){var s=Up(a),l=Nn(s);if(i)for(o=document.createDocumentFragment();Nn(l);)o.appendChild(Nn(l));else o=Nn(l)}var u=o.cloneNode(!0);if(i){var c=Nn(u),f=u.lastChild;ta(c,f)}else ta(u,u);return u}}function lr(t=""){if(!Bt){var e=ha(t+"");return ta(e,e),e}var r=Kt;return r.nodeType!==3&&(r.before(r=ha()),En(r)),ta(r,r),r}function Xr(){if(Bt)return ta(Kt,null),Kt;var t=document.createDocumentFragment(),e=document.createComment(""),r=ha();return t.append(e,r),ta(e,r),t}function ee(t,e){if(Bt){rr.nodes_end=Kt,Fi();return}t!==null&&t.before(e)}var Gb=!0;function ht(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=r==null?"":r+"")}function Vr(t,e){return A2(t,e)}function Yb(t,e){Th(),e.intro=e.intro??!1;let r=e.target,n=Bt,i=Kt;try{for(var a=Nn(r);a&&(a.nodeType!==8||a.data!==Hc);)a=Ii(a);if(!a)throw Su;ma(!0),En(a),Fi();let o=A2(t,{...e,anchor:a});if(Kt===null||Kt.nodeType!==8||Kt.data!==Bl)throw Zc(),Su;return ma(!1),o}catch(o){if(o===Su)return e.recover===!1&&MI(),Th(),Qc(r),ma(!1),Vr(t,e);throw o}finally{ma(n),En(i),w2()}}var sf=new Map;function A2(t,{target:e,anchor:r,props:n={},events:i,context:a,intro:o=!0}){Th();var s=new Set,l=f=>{for(var m=0;m{var f=r??e.appendChild(ha());return xi(()=>{if(a){Te({});var m=xr;m.c=a}i&&(n.$$events=i),Bt&&ta(f,null),Gb=o,u=t(f,n)||{},Gb=!0,Bt&&(rr.nodes_end=Kt),a&&De()}),()=>{for(var m of s){e.removeEventListener(m,of);var p=sf.get(m);--p===0?(document.removeEventListener(m,of),sf.delete(m)):sf.set(m,p)}Lh.delete(l),f!==r&&f.parentNode?.removeChild(f)}});return Wb.set(u,c),u}var Wb=new WeakMap;function Ur(t,e){let r=Wb.get(t);return r?(Wb.delete(t),r(e)):(Ze&&qI(),Promise.resolve())}function ot(t,e,r=!1){Bt&&Fi();var n=t,i=null,a=null,o=zn,s=r?65536:0,l=!1;let u=(f,m=!0)=>{l=!0,c(m,f)},c=(f,m)=>{if(o===(o=f))return;let p=!1;if(Bt){let d=n.data===Pl;!!o===d&&(n=Jc(),En(n),ma(!1),p=!0)}o?(i?Cu(i):m&&(i=xi(()=>m(n))),a&&Lo(a,()=>{a=null})):(a?Cu(a):m&&(a=xi(()=>m(n))),i&&Lo(i,()=>{i=null})),p&&ma(!0)};ea(()=>{l=!1,e(u),l||c(null,null)},s),Bt&&(n=Kt)}var qp=null;function er(t,e){return e}function ZW(t,e,r,n){for(var i=[],a=e.length,o=0;o0&&i.length===0&&r!==null;if(s){var l=r.parentNode;Qc(l),l.append(r),n.clear(),Nu(t,e[0].prev,e[a-1].next)}Ub(i,()=>{for(var u=0;u{var p=r();return oo(p)?p:p==null?[]:Dp(p)});ea(()=>{var p=z(m),d=p.length;if(f&&d===0)return;f=d===0;let h=!1;if(Bt){var x=o.data===Pl;x!==(d===0)&&(o=Jc(),En(o),ma(!1),h=!0)}if(Bt){for(var b=null,T,v=0;v0&&En(Jc())}if(!Bt){var y=yr;JW(p,s,o,i,e,(y.f&8192)!==0,n,r)}a!==null&&(d===0?c?Cu(c):c=xi(()=>a(o)):c!==null&&Lo(c,()=>{c=null})),h&&ma(!0),z(m)}),Bt&&(o=Kt)}function JW(t,e,r,n,i,a,o,s){var l=(i&8)!==0,u=(i&3)!==0,c=t.length,f=e.items,m=e.first,p=m,d,h=null,x,b=[],T=[],v,A,w,y;if(l)for(y=0;y0){var V=i&4&&c===0?r:null;if(l){for(y=0;y{if(x!==void 0)for(w of x)w.a?.apply()}),rr.first=e.first&&e.first.e,rr.last=h&&h.e}function XW(t,e,r,n){n&1&&jc(t.v,e),n&2?jc(t.i,r):t.i=r}function T2(t,e,r,n,i,a,o,s,l,u){var c=qp,f=(l&1)!==0,m=(l&16)===0,p=f?m?Tu(i):Hn(i):i,d=l&2?Hn(o):o;Ze&&f&&(p.debug=()=>{var x=typeof d=="number"?o:d.v;u()[x]});var h={i:d,v:p,k:a,a:null,e:null,prev:r,next:n};qp=h;try{return h.e=xi(()=>s(t,p,d),Bt),h.e.prev=r&&r.e,h.e.next=n&&n.e,r===null?e.first=h:(r.next=h,r.e.next=h.e),n!==null&&(n.prev=h,n.e.prev=h.e),h}finally{qp=c}}function S2(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,a=t.e.nodes_start;a!==n;){var o=Ii(a);i.before(a),a=o}}function Nu(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}function ho(t,e,...r){var n=t,i=Ra,a;ea(()=>{i!==(i=e())&&(a&&(yi(a),a=null),Ze&&i==null&&CI(),a=xi(()=>i(n,...r)))},65536),Bt&&(n=Kt)}function M2(t){var e,r,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var i=t.length;for(e=0;e{if(!e){if(e=!0,t.hasAttribute("value")){var n=t.value;wt(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var i=t.checked;wt(t,"checked",null),t.checked=i}}};t.__on_r=r,o2(r),$h()}}function Xb(t,e){var r=t.__attributes??={};r.value===(r.value=e??void 0)||t.value===e&&(e!==0||t.nodeName!=="PROGRESS")||(t.value=e)}function Ys(t,e){var r=t.__attributes??={};r.checked!==(r.checked=e??void 0)&&(t.checked=e)}function wt(t,e,r,n){var i=t.__attributes??={};if(Bt&&(i[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName==="LINK")){n||tY(t,e,r??"");return}i[e]!==(i[e]=r)&&(e==="style"&&"__styles"in t&&(t.__styles={}),e==="loading"&&(t[_I]=r),r==null?t.removeAttribute(e):typeof r!="string"&&eY(t).includes(e)?t[e]=r:t.setAttribute(e,r))}var N2=new Map;function eY(t){var e=N2.get(t.nodeName);if(e)return e;N2.set(t.nodeName,e=[]);for(var r,n=t,i=Element.prototype;i!==n;){r=wb(n);for(var a in r)r[a].set&&e.push(a);n=Eu(n)}return e}function tY(t,e,r){Ze&&(e==="srcset"&&rY(t,r)||Jb(t.getAttribute(e)??"",r)||UI(e,t.outerHTML.replace(t.innerHTML,t.innerHTML&&"..."),String(r)))}function Jb(t,e){return t===e?!0:new URL(t,document.baseURI).href===new URL(e,document.baseURI).href}function F2(t){return t.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function rY(t,e){var r=F2(t.srcset),n=F2(e);return n.length===r.length&&n.every(([i,a],o)=>a===r[o][1]&&(Jb(r[o][0],i)||Jb(i,r[o][0])))}function xa(t,e,r){var n=t.__className,i=nY(e,r);Bt&&t.className===i?t.__className=i:(n!==i||Bt&&t.className!==i)&&(e==null&&!r?t.removeAttribute("class"):t.className=i,t.__className=i)}function nY(t,e){return(t??"")+(e?" "+e:"")}function tn(t,e,r){if(r){if(t.classList.contains(e))return;t.classList.add(e)}else{if(!t.classList.contains(e))return;t.classList.remove(e)}}function Qb(t,e,r,n){var i=t.__styles??={};i[e]!==r&&(i[e]=r,r==null?t.style.removeProperty(e):t.style.setProperty(e,r,n?"important":""))}function _t(t,e,r=e){var n=zs();Rh(t,"input",i=>{Ze&&t.type==="checkbox"&&_b();var a=i?t.defaultValue:t.value;if(a=Kb(t)?e0(a):a,r(a),n&&a!==(a=e())){var o=t.selectionStart,s=t.selectionEnd;t.value=a??"",s!==null&&(t.selectionStart=o,t.selectionEnd=Math.min(s,t.value.length))}}),(Bt&&t.defaultValue!==t.value||xn(e)==null&&t.value)&&r(Kb(t)?e0(t.value):t.value),da(()=>{Ze&&t.type==="checkbox"&&_b();var i=e();Kb(t)&&i===e0(t.value)||t.type==="date"&&!i&&!t.value||i!==t.value&&(t.value=i??"")})}function Kb(t){var e=t.type;return e==="number"||e==="range"}function e0(t){return t===""?null:+t}function qh(t,e,r){if(t.multiple)return oY(t,e);for(var n of t.options){var i=zp(n);if(Mb(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function I2(t,e){let r=!0;va(()=>{e&&qh(t,xn(e),r),r=!1;var n=new MutationObserver(()=>{var i=t.__value;qh(t,i)});return n.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{n.disconnect()}})}function uf(t,e,r=e){var n=!0;Rh(t,"change",i=>{var a=i?"[selected]":":checked",o;if(t.multiple)o=[].map.call(t.querySelectorAll(a),zp);else{var s=t.querySelector(a)??t.querySelector("option:not([disabled])");o=s&&zp(s)}r(o)}),va(()=>{var i=e();if(qh(t,i,n),n&&i===void 0){var a=t.querySelector(":checked");a!==null&&(i=zp(a),r(i))}t.__value=i,n=!1}),I2(t)}function oY(t,e){for(var r of t.options)r.selected=~e.indexOf(zp(r))}function zp(t){return"__value"in t?t.__value:t.value}function P2(t,e){return t===e||t?.[La]===e}function Vo(t={},e,r,n){return va(()=>{var i,a;return da(()=>{i=a,a=n?.()||[],xn(()=>{t!==r(...a)&&(e(t,...a),i&&P2(r(...i),t)&&e(null,...i))})}),()=>{mo(()=>{a&&P2(r(...a),t)&&e(null,...a)})}}),t}function t0(t){xr===null&&Rp("onMount"),Vs&&xr.l!==null?pY(xr).m.push(t):ga(()=>{let e=xn(t);if(typeof e=="function")return e})}function lf(t){xr===null&&Rp("onDestroy"),t0(()=>()=>xn(t))}function pY(t){var e=t.l;return e.u??={a:[],b:[],m:[]}}var zh=!1,Uye=Symbol();function r0(t){var e=zh;try{return zh=!1,[t(),zh]}finally{zh=e}}var bY={get(t,e){if(!t.exclude.includes(e))return t.props[e]},set(t,e){return Ze&&FI(`${t.name}.${String(e)}`),!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.includes(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.includes(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.includes(e))}};function or(t,e,r){return new Proxy(Ze?{props:t,exclude:e,name:r,other:{},to_proxy:[]}:{props:t,exclude:e},bY)}function B2(t){for(var e=rr,r=rr;e!==null&&!(e.f&96);)e=e.parent;try{return ei(e),t()}finally{ei(r)}}function lt(t,e,r,n){var i=(r&1)!==0,a=!Vs||(r&2)!==0,o=(r&8)!==0,s=(r&16)!==0,l=!1,u;o?[u,l]=r0(()=>t[e]):u=t[e];var c=La in t||wh in t,f=o&&($o(t,e)?.set??(c&&e in t&&(E=>t[e]=E)))||void 0,m=n,p=!0,d=!1,h=()=>(d=!0,p&&(p=!1,s?m=xn(n):m=n),m);u===void 0&&n!==void 0&&(f&&a&&NI(e),u=h(),f&&f(u));var x;if(a)x=()=>{var E=t[e];return E===void 0?h():(p=!0,d=!1,E)};else{var b=B2(()=>(i?Vt:$p)(()=>t[e]));b.f|=131072,x=()=>{var E=z(b);return E!==void 0&&(m=void 0),E===void 0?m:E}}if(!(r&4))return x;if(f){var T=t.$$legacy;return function(E,D){return arguments.length>0?((!a||!D||T||l)&&f(D?x():E),E):x()}}var v=!1,A=!1,w=Tu(u),y=B2(()=>Vt(()=>{var E=x(),D=z(w);return v?(v=!1,A=!0,D):(A=!1,w.v=E)}));return i||(y.equals=Gc),function(E,D){if(Fp!==null&&(v=A,x(),z(w)),arguments.length>0){let _=D?z(y):a&&o?Le(E):E;return y.equals(_)||(v=!0,$e(w,_),d&&m!==void 0&&(m=_),xn(()=>z(y))),E}return z(y)}}function k2(t){return new n0(t)}var n0=class{#t;#e;constructor(e){var r=new Map,n=(a,o)=>{var s=Tu(o);return r.set(a,s),s};let i=new Proxy({...e.props||{},$$events:{}},{get(a,o){return z(r.get(o)??n(o,Reflect.get(a,o)))},has(a,o){return o===wh?!0:(z(r.get(o)??n(o,Reflect.get(a,o))),Reflect.has(a,o))},set(a,o,s){return $e(r.get(o)??n(o,s),s),Reflect.set(a,o,s)}});this.#e=(e.hydrate?Yb:Vr)(e.component,{target:e.target,anchor:e.anchor,props:i,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&af(),this.#t=i.$$events;for(let a of Object.keys(this.#e))a==="$set"||a==="$destroy"||a==="$on"||gi(this,a,{get(){return this.#e[a]},set(o){this.#e[a]=o},enumerable:!0});this.#e.$set=a=>{Object.assign(i,a)},this.#e.$destroy=()=>{Ur(this.#e)}}$set(e){this.#e.$set(e)}$on(e,r){this.#t[e]=this.#t[e]||[];let n=(...i)=>r.call(this,...i);return this.#t[e].push(n),()=>{this.#t[e]=this.#t[e].filter(i=>i!==n)}}$destroy(){this.#e.$destroy()}};var DY;typeof HTMLElement=="function"&&(DY=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;constructor(t,e,r){super(),this.$$ctor=t,this.$$s=e,r&&this.attachShadow({mode:"open"})}addEventListener(t,e,r){if(this.$$l[t]=this.$$l[t]||[],this.$$l[t].push(e),this.$$c){let n=this.$$c.$on(t,e);this.$$l_u.set(e,n)}super.addEventListener(t,e,r)}removeEventListener(t,e,r){if(super.removeEventListener(t,e,r),this.$$c){let n=this.$$l_u.get(e);n&&(n(),this.$$l_u.delete(e))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(n){return i=>{let a=document.createElement("slot");n!=="default"&&(a.name=n),ee(i,a)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let e={},r=MY(this);for(let n of this.$$s)n in r&&(n==="default"&&!this.$$d.children?(this.$$d.children=t(n),e.default=!0):e[n]=t(n));for(let n of this.attributes){let i=this.$$g_p(n.name);i in this.$$d||(this.$$d[i]=i0(i,n.value,this.$$p_d,"toProp"))}for(let n in this.$$p_d)!(n in this.$$d)&&this[n]!==void 0&&(this.$$d[n]=this[n],delete this[n]);this.$$c=k2({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:e,$$host:this}}),this.$$me=$b(()=>{da(()=>{this.$$r=!0;for(let n of bb(this.$$c)){if(!this.$$p_d[n]?.reflect)continue;this.$$d[n]=this.$$c[n];let i=i0(n,this.$$d[n],this.$$p_d,"toAttribute");i==null?this.removeAttribute(this.$$p_d[n].attribute||n):this.setAttribute(this.$$p_d[n].attribute||n,i)}this.$$r=!1})});for(let n in this.$$l)for(let i of this.$$l[n]){let a=this.$$c.$on(n,i);this.$$l_u.set(i,a)}this.$$l={}}}attributeChangedCallback(t,e,r){this.$$r||(t=this.$$g_p(t),this.$$d[t]=i0(t,r,this.$$p_d,"toProp"),this.$$c?.$set({[t]:this.$$d[t]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(t){return bb(this.$$p_d).find(e=>this.$$p_d[e].attribute===t||!this.$$p_d[e].attribute&&e.toLowerCase()===t)||t}});function i0(t,e,r,n){let i=r[t]?.type;if(e=i==="Boolean"&&typeof e!="boolean"?e!=null:e,!n||!r[t])return e;if(n==="toAttribute")switch(i){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(i){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function MY(t){let e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}var NY=ue('
');function Yr(t,e){Te(e,!0);let r=lt(e,"iconName",3,""),n=bt(void 0);ga(()=>z(n)?e.plugin.internal.setIcon(z(n),r()):void 0);var i=Xr(),a=Je(i);{var o=s=>{var l=NY();Vo(l,u=>$e(n,u),()=>z(n)),ee(s,l)};ot(a,s=>{r().length>0&&s(o)})}ee(t,i),De()}var FY=(t,e)=>e(t,"left"),IY=ue('');function Hp(t,e){Te(e,!0);let r=lt(e,"variant",19,()=>"default"),n=lt(e,"disabled",7,!1),i=lt(e,"tooltip",3,""),a=lt(e,"label",3,""),o=lt(e,"icon",3,""),s=lt(e,"cssStyle",3,""),l=lt(e,"backgroundImage",3,""),u=lt(e,"error",3,!1),c=lt(e,"onclick",3,()=>{}),f=lt(e,"onauxclick",3,()=>{});async function m(b,T){if(!n()){n(!0);try{T==="left"?await c()(b):T==="middle"&&await f()(b)}catch(v){console.warn("failed to run button component on click",v)}finally{n(!1)}}}var p=IY();p.__click=[FY,m];var d=ye(p);{var h=b=>{Yr(b,{get plugin(){return e.plugin},get iconName(){return o()}})};ot(d,b=>{o()&&b(h)})}var x=le(d);ce(p),Re(()=>{wt(p,"style",s()),wt(p,"aria-label",i()),p.disabled=n(),tn(p,"mod-cta",r()==="primary"),tn(p,"mod-warning",r()==="destructive"),tn(p,"mod-plain",r()==="plain"),tn(p,"disabled",n()),tn(p,"mb-error",u()),Qb(p,"background-image",l()?`url("${l()}")`:void 0),ht(x,` ${a()??""}`)}),Pi("auxclick",p,b=>m(b,"middle")),ee(t,p),De()}kt(["click"]);var Fu=class extends Ni{constructor(e,r,n,i,a,o,s){super(),this.plugin=e,this.config=r,this.filePath=n,this.isInline=i==="inline",this.position=a,this.isInGroup=o,this.isPreview=s}onMount(e){mt.empty(e),mt.removeAllClasses(e),mt.addClasses(e,["mb-button",this.isInline?"mb-button-inline":"mb-button-block"]),!(!this.isInline&&!this.isPreview&&!this.isInGroup&&(this.config.id&&this.plugin.api.buttonManager.addButton(this.filePath,this.config),this.config.hidden))&&(this.config.class&&mt.addClasses(e,this.config.class.split(" ").filter(r=>r!=="")),this.buttonComponent=Vr(Hp,{target:e,props:{plugin:this.plugin,icon:this.config.icon,variant:this.config.style,label:this.config.label,tooltip:zx(this.config.tooltip)?this.config.tooltip:void 0,cssStyle:this.config.cssStyle,backgroundImage:zx(this.config.backgroundImage)?this.plugin.internal.imagePathToUri(this.config.backgroundImage):void 0,onclick:async r=>{await this.plugin.api.buttonActionRunner.runButtonActions(this.config,this.filePath,this.getContext(),this.plugin.api.buttonActionRunner.mouseEventToClickContext(r,"left"))},onauxclick:async r=>{await this.plugin.api.buttonActionRunner.runButtonActions(this.config,this.filePath,this.getContext(),this.plugin.api.buttonActionRunner.mouseEventToClickContext(r,"middle"))}}}))}getContext(){return{position:this.position?.getPosition(),isInGroup:this.isInGroup,isInline:this.isInline}}onUnmount(){this.buttonComponent&&Ur(this.buttonComponent),!this.isInline&&!this.isPreview&&this.config?.id&&this.plugin.api.buttonManager.removeButton(this.filePath,this.config.id)}};var Hh=class extends Ni{constructor(e,r,n,i,a){super(),this.plugin=e,this.referencedIds=r,this.filePath=n,this.renderChildType=i,this.notePosition=a}renderInitialButton(e,r){return mt.removeAllClasses(e),mt.addClasses(e,["mb-button",this.renderChildType==="inline"?"mb-button-inline":"mb-button-block"]),Vr(Hp,{target:e,props:{plugin:this.plugin,variant:"default",label:"Button ID not Found",tooltip:`No button with id '${r}' found`,error:!0,onclick:async()=>{}}})}onMount(e){mt.empty(e),mt.addClasses(e,["mb-button-group",this.renderChildType==="inline"?"mb-button-group-inline":"mb-button-group-block"]);for(let r of this.referencedIds){let n=mt.createElement(e,"span"),i=this.renderInitialButton(n,r),a,o=this.plugin.api.buttonManager.registerButtonLoadListener(this.filePath,r,s=>{i&&Ur(i),i=void 0,a=new Fu(this.plugin,s,this.filePath,this.renderChildType,this.notePosition,!0,!1),a.mount(n)});this.registerUnmountCb(()=>{i&&Ur(i),i=void 0,a?.unmount(),o()})}}onUnmount(e){mt.empty(e)}};var Gh=class extends qn{constructor(e,r,n,i,a,o){super(e,r,n),this.declaration=i,this.errorCollection=new Qt(this.getUuid()),this.errorCollection.merge(i.errorCollection),this.renderChildType=a,this.position=o}onMount(e){if(super.onMount(e),mt.removeAllClasses(e),this.declaration.errorCollection.isEmpty())try{this.buttonField=new Hh(this.plugin,this.declaration.referencedButtonIds,this.getFilePath(),this.renderChildType,this.position),this.buttonField.mount(e)}catch(r){this.errorCollection.add(r),this.renderErrorIndicator(e)}else this.renderErrorIndicator(e)}renderErrorIndicator(e){this.plugin.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declaration.declarationString})}onUnmount(e){super.onUnmount(e),this.buttonField?.unmount(),Di(e,"inline button")}};var Wh=class{constructor(e){this.value=e,this.count=1}getValue(){return this.value}increment(){return this.count+=1,this.count}decrement(){return this.count-=1,this.count}getCount(){return this.count}isEmpty(){return this.count===0}};var Yh=class{constructor(e){this.plugin=e,this.buttons=new Map,this.buttonLoadListeners=new Map,this.buttonTemplates=new Map}setButtonTemplates(e){let r=new Set,n=new Qt("ButtonManager");this.buttonTemplates.clear();for(let i of e)i.id===void 0||i.id===""?n.add(new Cs({errorLevel:"ERROR",cause:`Button with label "${i.label}" has no id, but button templates must have an id.`,effect:"Button templates could not be saved."})):r.has(i.id)?n.add(new Cs({errorLevel:"ERROR",cause:`Button id "${i.id}" is not unique. The same id is used by multiple buttons.`,effect:"Button templates could not be saved."})):(r.add(i.id),this.buttonTemplates.set(i.id,i));return n.hasErrors()&&this.buttonTemplates.clear(),n}registerButtonLoadListener(e,r,n){let i=this.getButton(e,r);i&&n(i),this.buttonLoadListeners.has(e)||this.buttonLoadListeners.set(e,new Map);let a=this.buttonLoadListeners.get(e);a.has(r)||a.set(r,new Map);let o=a.get(r),s=Fr();return o.set(s,n),()=>this.removeButtonLoadListener(e,r,s)}notifyButtonLoadListeners(e,r){let n=this.getButton(e,r);if(!n)throw new Error(`ButtonManager | button with id ${r} does not exist`);let i=this.buttonLoadListeners.get(e);if(!i)return;let a=i.get(r);if(a)for(let[o,s]of a)s(n)}removeButtonLoadListener(e,r,n){let i=this.buttonLoadListeners.get(e);if(!i)return;let a=i.get(r);a&&(a.delete(n),a.size===0&&i.delete(r),i.size===0&&this.buttonLoadListeners.delete(e))}addButton(e,r){if(r.id===void 0||r.id==="")throw new Error("ButtonManager | button id is undefined");if(this.buttonTemplates.has(r.id))throw new Error(`ButtonManager | button with id "${r.id}" already exists in the button templates`);this.buttons.has(e)||this.buttons.set(e,new Map),this.buttons.get(e).set(r.id,new Wh(r)),this.notifyButtonLoadListeners(e,r.id)}getButton(e,r){if(this.buttonTemplates.has(r))return this.buttonTemplates.get(r);let n=this.buttons.get(e);if(n)return n.get(r)?.getValue()}removeButton(e,r){let n=this.buttons.get(e);n&&(n.get(r)?.decrement(),n.get(r)?.isEmpty()&&n.delete(r),n.size===0&&this.buttons.delete(e))}};var jh=class extends qn{constructor(e,r,n,i,a,o){super(e,r,n),this.declaration=i,this.position=a,this.isPreview=o,this.errorCollection=new Qt(this.getUuid()),this.errorCollection.merge(i.errorCollection)}onMount(e){if(super.onMount(e),mt.removeAllClasses(e),this.declaration.config&&this.declaration.errorCollection.isEmpty())try{this.buttonField=new Fu(this.plugin,this.declaration.config,this.getFilePath(),"block",this.position,!1,this.isPreview),this.buttonField.mount(e)}catch(r){this.errorCollection.add(r),this.renderErrorIndicator(e)}else this.renderErrorIndicator(e)}renderErrorIndicator(e){this.plugin.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declaration.declarationString})}onUnmount(e){super.onUnmount(e),this.buttonField?.unmount(),Di(e,"button")}};var Zh=class extends qn{constructor(e,r,n,i,a){super(e,r,n),this.depth=i,this.content=a}async parseContent(){let e=this.content.split(` -`).map(a=>a.trim()).filter(a=>a.length>0);if(e.length===0)return{content:""};if(e.length>1)return{error:"Embed may only contain one link"};let r=e[0],n=Cn.parseLink(r);if(!n.internal)return{error:`${r} is not an internal link`};let i=this.plugin.internal.file.getPathByName(n.target,this.getFilePath());return i===void 0?{error:`"${n.target}" is not created yet`}:{content:await this.plugin.internal.file.read(i)}}exceedsMaxDepth(){return this.depth>ld}createEmbedMessage(e,r){e.createSpan({text:r,cls:"mb-embed-message"})}async renderContent(e){try{if(this.exceedsMaxDepth()){this.createEmbedMessage(e,"Max embed depth exceeded");return}let r=await this.parseContent();if(r.error){this.createEmbedMessage(e,r.error);return}if(r.content===void 0){this.createEmbedMessage(e,"Embed content not found");return}let n=r.content.replace(/(```+|~~~+)meta-bind-embed.*/g,`$1meta-bind-embed-internal-${this.depth+1}`);this.markdownUnloadCallback=await this.plugin.internal.renderMarkdown(n,e,this.getFilePath())}catch(r){let n=new Qt("Embed");n.add(r),this.plugin.internal.createErrorIndicator(e,{errorCollection:n})}}onMount(e){super.onMount(e),e.addClass("mb-embed"),this.renderContent(e)}onUnmount(e){super.onUnmount(e),e.removeClass("mb-embed"),this.markdownUnloadCallback?.(),Di(e,"Embed")}};var Jh=class extends qn{constructor(e,r,n){super(e,r,n)}onMount(e){super.onMount(e),mt.empty(e),mt.createElement(e,"span",{text:"[META_BIND] This folder has been excluded in the settings",class:"mb-error"})}onUnmount(e){super.onUnmount(e),mt.empty(e),Di(e,"Excluded")}};var Xh=class{constructor(e,r,n){this.plugin=e,this.mounted=!1,this.svelteComponent=r,this.onValueChange=n}setValue(e){this.svelteComponentInstance?.setValue(e)}getInstance(){return this.svelteComponentInstance}mount(e,r,n={}){let i=Object.assign({plugin:this.plugin,value:r,onValueChange:this.onValueChange},n);this.svelteComponentInstance=Vr(this.svelteComponent,{target:e,props:i}),this.mounted=!0}unmount(){this.svelteComponentInstance&&Ur(this.svelteComponentInstance),this.mounted=!1}isMounted(){return this.mounted}};var cr=class extends Ni{constructor(e){super(),this.mountable=e,this.plugin=e.plugin,this.svelteWrapper=new Xh(this.plugin,this.getSvelteComponent(),r=>{this.updateDataAttributes(r),this.notifySubscription(this.mapValue(r))}),this.inputSignal=new nh(void 0,r=>{let n=this.filterValue(r);return n!==void 0?n:this.getDefaultValue()})}reverseMapValue(e){let r=this.rawReverseMapValue(e);if(r!==void 0)return r;let n=this.rawReverseMapValue(this.getDefaultValue());return n!==void 0?n:this.getFallbackDefaultValue()}mapValue(e){return this.rawMapValue(e)}getValue(){return this.inputSignal.get()}getInternalValue(){return this.reverseMapValue(this.getValue())}setValue(e){this.inputSignal.setDirect(e),this.notifySubscription(e)}setInternalValue(e){this.setValue(this.mapValue(e))}notifySubscription(e){this.metadataSubscription?.write(e)}getDefaultValue(){let e=this.mountable.getArgument("defaultValue");if(e===void 0)return this.mapValue(this.getFallbackDefaultValue());let r=this.filterValue(e.value);return r!==void 0?r:this.mapValue(this.getFallbackDefaultValue())}updateDataAttributes(e){this.mountTarget&&(this.mountTarget.dataset.internalValue=JSON.stringify(e))}getMountArgs(){return{}}onMount(e){this.mountTarget=e,this.inputSignal.registerListener({callback:n=>this.svelteWrapper.setValue(this.reverseMapValue(n))}),this.inputSignal.registerListener({callback:n=>{this.updateDataAttributes(this.reverseMapValue(n))}});let r=this.mountable.getBindTarget();r&&(this.metadataSubscription=this.mountable.plugin.metadataManager.subscribe(this.mountable.getUuid(),this.inputSignal,r,()=>this.mountable.unmount())),this.svelteWrapper.mount(e,this.reverseMapValue(this.getValue()),this.getMountArgs())}onUnmount(){this.mountTarget=void 0,this.inputSignal.unregisterAllListeners(),this.metadataSubscription?.unsubscribe(),this.svelteWrapper.unmount()}};var PY=(t,e,r,n)=>r.onValueChange(z(n)),BY=ue('');function a0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(o){$e(n,Le(o))}var a=BY();return Tt(a),a.__input=[PY,r,e,n],_t(a,()=>z(n),o=>$e(n,o)),ee(t,a),De({setValue:i})}kt(["input"]);var Qh=class extends cr{filterValue(e){return os(e)}getFallbackDefaultValue(){return oi.stringify(oi.getDefaultDate())}getSvelteComponent(){return a0}rawMapValue(e){return e}rawReverseMapValue(e){return e}};function kY(t,e,r){r.showDatePicker()}function $Y(t,e,r){t.key===" "&&r.showDatePicker()}var OY=ue('
');function o0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(u){$e(n,Le(u))}var a=OY();a.__click=[kY,r,e],a.__keydown=[$Y,r,e];var o=ye(a),s=ye(o,!0);Re(()=>ht(s,z(n)?z(n).format(e.dateFormat):"none")),ce(o);var l=le(o,2);return Yr(l,{get plugin(){return e.plugin},iconName:"calendar"}),ce(a),ee(t,a),De({setValue:i})}kt(["click","keydown"]);var Kh=class extends cr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){if(e===null)return null;if(e===void 0||typeof e!="string")return;let r=oi.parse(e);if(r.isValid())return oi.stringify(r)}getFallbackDefaultValue(){return oi.getDefaultDate()}getSvelteComponent(){return o0}rawMapValue(e){return e===null?null:(console.log("value",e,oi.stringify(e),oi.dateFormat),oi.stringify(e))}rawReverseMapValue(e){if(e===null)return null;let r=oi.parse(e);if(r.isValid())return r}getMountArgs(){return{dateFormat:this.mountable.plugin.settings.preferredDateFormat,showDatePicker:()=>{this.mountable.plugin.internal.openDatePickerModal(this)}}}};var RY=(t,e,r,n)=>r.onValueChange(z(n)),LY=ue('');function s0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(o){$e(n,Le(o))}var a=LY();return Tt(a),a.__input=[RY,r,e,n],_t(a,()=>z(n),o=>$e(n,o)),ee(t,a),De({setValue:i})}kt(["input"]);var eg=class extends cr{filterValue(e){return os(e)}getFallbackDefaultValue(){return oi.stringify(oi.getDefaultDate())}getSvelteComponent(){return s0}rawMapValue(e){return e}rawReverseMapValue(e){return e}};var VY=ue("
");function u0(t,e){Te(e,!0);let r,n;lf(()=>{n?.()});async function i(o){n?.(),n=await e.plugin.internal.renderMarkdown(o,r,e.filePath)}ga(()=>void i(e.value));var a=VY();Vo(a,o=>r=o,()=>r),ee(t,a),De()}var UY=(t,e)=>e(),qY=(t,e)=>e(),zY=(t,e,r,n)=>r.onValueChange(z(n)),HY=ue(""),GY=ue('
');function l0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value)),i=bt(!1);function a(p){$e(n,Le(p))}function o(){$e(i,!1)}function s(){$e(i,!0)}function l(p){p.key===" "&&s()}var u=GY();u.__click=[UY,s];var c=ye(u);{var f=p=>{var d=HY();On(d),d.__focusout=[qY,o],d.__input=[zY,r,e,n],_t(d,()=>z(n),h=>$e(n,h)),ee(p,d)},m=p=>{u0(p,{get value(){return z(n)},get plugin(){return e.plugin},get filePath(){return e.filePath}})};ot(c,p=>{z(i)?p(f):p(m,!1)})}return ce(u),Pi("keypress",u,p=>l(p)),ee(t,u),De({setValue:a})}kt(["click","focusout","input"]);var tg=class extends cr{filterValue(e){return _u(e)?e?.toString():void 0}getFallbackDefaultValue(){return""}getSvelteComponent(){return l0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{render:(e,r)=>void this.renderInElement(e,r),filePath:this.mountable.getFilePath()}}async renderInElement(e,r){this.mdUnloadCallback?.(),e.innerHTML="",this.mdUnloadCallback=await this.mountable.plugin.internal.renderMarkdown(r,e,this.mountable.getFilePath())}onUnmount(){super.onUnmount(),this.mdUnloadCallback?.()}};var WY=ue("");function Et(t,e){Te(e,!0);let r=lt(e,"variant",19,()=>"default"),n=lt(e,"disabled",3,!1),i=lt(e,"tooltip",3,""),a=lt(e,"classes",3,""),o=lt(e,"onclick",3,()=>{});var s=WY();s.__click=function(...u){o()?.apply(this,u)};var l=ye(s);ho(l,()=>e.children),ce(s),Re(()=>{xa(s,`mb-button-inner ${a()??""}`),wt(s,"aria-label",i()),s.disabled=n(),tn(s,"mod-cta",r()==="primary"),tn(s,"mod-warning",r()==="destructive"),tn(s,"mod-plain",r()==="plain"),tn(s,"disabled",n())}),ee(t,s),De()}kt(["click"]);var YY=ue('
'),jY=ue('
',1);function c0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(m){$e(n,Le(m))}function a(m){z(n).push(m),e.onValueChange(z(n))}function o(m){z(n).splice(m,1),e.onValueChange(z(n))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=z(n)[p-1];z(n)[p-1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),p{let h=z(n)[p+1];z(n)[p+1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),d.push({name:"Copy image path",icon:"copy",onclick:()=>{let h=z(n)[p];navigator.clipboard.writeText(h).then(()=>{e.plugin.internal.showNotice("Image path copied to clipboard")}).catch(()=>{e.plugin.internal.showNotice("Failed to copy image path to clipboard")})}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.plugin.internal.createContextMenu(d).showWithEvent(m)}var l=jY(),u=Je(l);Yt(u,21,()=>z(n),er,(m,p,d)=>{var h=YY();h.__contextmenu=A=>s(A,d);var x=ye(h);Re(()=>wt(x,"src",e.plugin.internal.imagePathToUri(z(p))));var b=le(x,2),T=ye(b),v=ye(T,!0);ce(T),ce(b),ce(h),Re(()=>{wt(x,"alt",z(p)),ht(v,z(p))}),ee(m,h)}),ce(u);var c=le(u,2),f=ye(c);return Et(f,{get variant(){return"default"},onclick:()=>e.showSuggester(),children:(m,p)=>{Nt();var d=lr("Add new image");ee(m,d)},$$slots:{default:!0}}),ce(c),ee(t,l),De({setValue:i,pushValue:a})}kt(["contextmenu"]);var rg=class extends cr{filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return c0}rawMapValue(e){return e}rawReverseMapValue(e){return e.map(r=>ko(r)).filter(r=>r!==void 0)}getMountArgs(){return{showSuggester:()=>this.openModal()}}openModal(){this.mountable.plugin.internal.openImageSuggesterModal(this,e=>{this.svelteWrapper.getInstance()?.pushValue(e)})}};var ZY=ue(''),JY=ue('
');function f0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(c){$e(n,Le(c))}function a(){e.showSuggester()}var o=JY(),s=ye(o);{var l=c=>{var f=ZY();Re(()=>wt(f,"src",e.plugin.internal.imagePathToUri(z(n)))),Re(()=>{wt(f,"alt",z(n)),wt(f,"aria-label",z(n))}),ee(c,f)};ot(s,c=>{z(n)&&c(l)})}var u=le(s,2);return Et(u,{get variant(){return"plain"},onclick:a,classes:"mb-image-card-button",tooltip:"Change image",children:(c,f)=>{Yr(c,{iconName:"pencil",get plugin(){return e.plugin}})},$$slots:{default:!0}}),ce(o),ee(t,o),De({setValue:i})}var ng=class extends cr{filterValue(e){return _u(e)?e:void 0}getFallbackDefaultValue(){return""}getSvelteComponent(){return f0}rawMapValue(e){return e}rawReverseMapValue(e){return ko(e)}getMountArgs(){return{showSuggester:()=>this.openModal()}}openModal(){this.mountable.plugin.internal.openImageSuggesterModal(this,e=>this.setInternalValue(e))}};var XY=ue(' '),QY=ue(' ');function js(t,e){Te(e,!0);let r=Vt(()=>e.mdLink.block?`${e.mdLink.target}#${e.mdLink.block}`:e.mdLink.target),n=Vt(()=>e.mdLink.internal?"internal-link":"external-link");var i=Xr(),a=Je(i);{var o=l=>{var u=XY(),c=ye(u,!0);ce(u),Re(()=>{wt(u,"data-href",z(r)),wt(u,"href",z(r)),xa(u,Ws(z(n))),wt(u,"aria-label",z(r)),ht(c,e.mdLink.alias)}),ee(l,u)},s=l=>{var u=QY(),c=ye(u,!0);ce(u),Re(()=>{wt(u,"data-href",z(r)),wt(u,"href",z(r)),xa(u,Ws(z(n))),ht(c,z(r))}),ee(l,u)};ot(a,l=>{e.mdLink.alias?l(o):l(s,!1)})}ee(t,i),De()}var KY=ue(", ",1),ej=ue(" ",1);function Gp(t,e){Te(e,!0);let r=lt(e,"elements",19,()=>[]);var n=ej(),i=Je(n);Yt(i,17,()=>r().slice(0,r().length-1),er,(o,s)=>{var l=KY(),u=Je(l);ho(u,()=>e.children,()=>z(s)),Nt(3),ee(o,l)});var a=le(i,2);ho(a,()=>e.children,()=>r()[r().length-1]),ee(t,n),De()}var tj=ue(' '),rj=ue(" "),nj=ue(""),ij=ue("");function za(t,e){Te(e,!0);let r=lt(e,"value",3,void 0),n=Vt(()=>gI(r(),!1));var i=Xr(),a=Je(i);{var o=l=>{var u=tj(),c=ye(u,!0);ce(u),Re(()=>ht(c,z(n))),ee(l,u)},s=l=>{var u=Xr(),c=Je(u);{var f=p=>{var d=nj(),h=ye(d);Gp(h,{get elements(){return z(n)},children:(b,T=Ra)=>{var v=Xr(),A=Je(v);{var w=E=>{var D=rj(),_=ye(D,!0);ce(D),Re(()=>ht(_,T())),ee(E,D)},y=E=>{js(E,{get mdLink(){return T()}})};ot(A,E=>{typeof T()=="string"?E(w):E(y,!1)})}ee(b,v)},$$slots:{default:!0}}),ce(d),ee(p,d)},m=p=>{var d=ij(),h=ye(d);js(h,{get mdLink(){return z(n)}}),ce(d),ee(p,d)};ot(c,p=>{Array.isArray(z(n))?p(f):p(m,!1)},!0)}ee(l,u)};ot(a,l=>{typeof z(n)=="string"?l(o):l(s,!1)})}ee(t,i),De()}function aj(t,e,r){t.key===" "&&r.showInput()}var oj=ue('
'),sj=(t,e,r)=>r.showInput(),uj=ue('
');function p0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(m){$e(n,Le(m))}function a(m){z(n).push(m),e.onValueChange(z(n))}function o(m){z(n).splice(m,1),e.onValueChange(z(n))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=z(n)[p-1];z(n)[p-1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),p{let h=z(n)[p+1];z(n)[p+1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),d.push({name:"Edit",icon:"pencil",onclick:()=>{e.plugin.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Edit the value of a list item.",value:ko(z(n)[p]),multiline:!1,onSubmit:h=>{z(n)[p]=h,e.onValueChange(z(n))},onCancel:()=>{}})}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.plugin.internal.createContextMenu(d).showWithEvent(m)}var l=uj(),u=ye(l);Yt(u,17,()=>z(n),er,(m,p,d)=>{var h=oj();h.__contextmenu=b=>s(b,d);var x=ye(h);za(x,{get value(){return z(p)}}),ce(h),ee(m,h)});var c=le(u,2);c.__click=[sj,r,e],c.__keydown=[aj,r,e];var f=le(ye(c),2);return Yr(f,{get plugin(){return e.plugin},iconName:"plus"}),ce(c),ce(l),ee(t,l),De({setValue:i,pushValue:a})}kt(["contextmenu","click","keydown"]);var ig=class extends cr{filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return p0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showInput:()=>this.openModal()}}openModal(){this.mountable.plugin.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper.getInstance()?.pushValue(e)},onCancel:()=>{}})}};function lj(t,e,r){if(!r.allowOther){r.showSuggester();return}r.plugin.internal.createContextMenu([{name:"From Options",onclick:()=>r.showSuggester()},{name:"From Text",onclick:()=>r.showTextPrompt()}]).showWithEvent(t)}function cj(t,e,r){t.key===" "&&r.showSuggester()}var fj=ue('
'),pj=ue('
');function m0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(m){$e(n,Le(m))}function a(m){z(n).push(m),e.onValueChange(z(n))}function o(m){z(n).splice(m,1),e.onValueChange(z(n))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=z(n)[p-1];z(n)[p-1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),p{let h=z(n)[p+1];z(n)[p+1]=z(n)[p],z(n)[p]=h,e.onValueChange(z(n))}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.plugin.internal.createContextMenu(d).showWithEvent(m)}var l=pj(),u=ye(l);Yt(u,17,()=>z(n),er,(m,p,d)=>{var h=fj();h.__contextmenu=b=>s(b,d);var x=ye(h);za(x,{get value(){return z(p)}}),ce(h),ee(m,h)});var c=le(u,2);c.__click=[lj,r,e],c.__keydown=[cj,r,e];var f=le(ye(c),2);return Yr(f,{get plugin(){return e.plugin},iconName:"plus"}),ce(c),ce(l),ee(t,l),De({setValue:i,pushValue:a})}kt(["contextmenu","click","keydown"]);var ag=class extends cr{filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return m0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.plugin.internal.openSuggesterModal(this,e=>{this.svelteWrapper.getInstance()?.pushValue(e.value)})}openTextModal(){this.mountable.plugin.internal.openTextPromptModal({title:"Meta Bind List Suggester",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper.getInstance()?.pushValue(e)},onCancel:()=>{}})}};var mj=(t,e)=>e(),dj=ue(""),hj=ue('');function d0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(s){$e(n,Le(s))}function a(){e.onValueChange(z(n))}var o=hj();return o.__change=[mj,a],Yt(o,21,()=>e.options,er,(s,l)=>{var u=dj(),c={},f=ye(u,!0);ce(u),Re(()=>{c!==(c=z(l).value)&&(u.value=(u.__value=z(l).value)==null?"":z(l).value),ht(f,z(l).name)}),ee(s,u)}),ce(o),uf(o,()=>z(n),s=>$e(n,s)),ee(t,o),De({setValue:i})}kt(["change"]);var og=class extends cr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return Au(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return d0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var gj=ue('
'),vj=ue('Empty'),yj=ue(''),xj=(t,e,r)=>{t.key==="Enter"&&z(e).length>0&&r()},bj=ue(''),wj=ue(" "),_j=ue('
',1);function h0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value)),i=bt("");function a(A){$e(n,Le(A))}function o(){z(n).push(z(i)),e.onValueChange(z(n)),$e(i,"")}function s(A){z(n).splice(A,1),e.onValueChange(z(n))}function l(A,w){let y=w.toString();return`${A.toString().padStart(y.length,"0")}/${y}`}function u(A,w){let y=[];w>0&&y.push({name:"Move up",icon:"arrow-up",onclick:()=>{let E=z(n)[w-1];z(n)[w-1]=z(n)[w],z(n)[w]=E,e.onValueChange(z(n))}}),w{let E=z(n)[w+1];z(n)[w+1]=z(n)[w],z(n)[w]=E,e.onValueChange(z(n))}}),y.push({name:"Edit",icon:"pencil",onclick:()=>{e.plugin.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Edit the value of a list item.",value:ko(z(n)[w]),multiline:e.multiLine,onSubmit:E=>{z(n)[w]=E,e.onValueChange(z(n))},onCancel:()=>{}})}}),y.push({name:"Remove",icon:"x",warning:!0,onclick:()=>s(w)}),e.plugin.internal.createContextMenu(y).showWithEvent(A)}var c=_j(),f=Je(c);Yt(f,21,()=>z(n),er,(A,w,y)=>{var E=gj();E.__contextmenu=_=>u(_,y);var D=ye(E);za(D,{get value(){return z(w)}}),ce(E),ee(A,E)},A=>{var w=vj();ee(A,w)}),ce(f);var m=le(f,2),p=ye(m);{var d=A=>{var w=yj();On(w),Re(()=>{wt(w,"placeholder",e.placeholder),wt(w,"maxlength",e.limit)}),_t(w,()=>z(i),y=>$e(i,y)),ee(A,w)},h=A=>{var w=bj();Tt(w),w.__keyup=[xj,i,o],Re(()=>{wt(w,"placeholder",e.placeholder),wt(w,"maxlength",e.limit)}),_t(w,()=>z(i),y=>$e(i,y)),ee(A,w)};ot(p,A=>{e.multiLine?A(d):A(h,!1)})}var x=le(p,2);{var b=A=>{var w=wj(),y=ye(w,!0);Re(()=>ht(y,l(z(n).length,e.limit))),ce(w),Re(()=>xa(w,`mb-content-limit-indicator ${z(n).length>e.limit?"mb-content-limit-indicator-overflow":""}`)),ee(A,w)};ot(x,A=>{e.limit!==void 0&&A(b)})}var T=le(x,2),v=Vt(()=>!z(i));return Et(T,{onclick:()=>o(),get disabled(){return z(v)},children:(A,w)=>{Yr(A,{get plugin(){return e.plugin},iconName:"plus"})},$$slots:{default:!0}}),ce(m),ee(t,c),De({setValue:a})}kt(["contextmenu","keyup"]);var sg=class extends cr{filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return h0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"New Entry...",limit:this.mountable.getArgument("limit")?.value,multiLine:this.mountable.getArgument("multiLine")?.value===!0}}};var Aj=ue('
'),Sj=ue('Empty'),Ej=ue('
',1);function g0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(d){$e(n,Le(d))}function a(d){z(n).push(d),e.onValueChange(z(n))}function o(d){z(n).splice(d,1),e.onValueChange(z(n))}function s(d,h){let x=[];h>0&&x.push({name:"Move up",icon:"arrow-up",onclick:()=>{let b=z(n)[h-1];z(n)[h-1]=z(n)[h],z(n)[h]=b,e.onValueChange(z(n))}}),h{let b=z(n)[h+1];z(n)[h+1]=z(n)[h],z(n)[h]=b,e.onValueChange(z(n))}}),x.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(h)}),e.plugin.internal.createContextMenu(x).showWithEvent(d)}var l=Ej(),u=Je(l);Yt(u,21,()=>z(n),er,(d,h,x)=>{var b=Aj();b.__contextmenu=v=>s(v,x);var T=ye(b);za(T,{get value(){return z(h)}}),ce(b),ee(d,b)},d=>{var h=Sj();ee(d,h)}),ce(u);var c=le(u,2),f=ye(c);Et(f,{get variant(){return"default"},onclick:()=>e.showSuggester(),children:(d,h)=>{Nt();var x=lr("Add new item");ee(d,x)},$$slots:{default:!0}});var m=le(f,2);{var p=d=>{Et(d,{get variant(){return"default"},onclick:()=>e.showTextPrompt(),children:(h,x)=>{Nt();var b=lr("Add other item");ee(h,b)},$$slots:{default:!0}})};ot(m,d=>{e.allowOther&&d(p)})}return ce(c),ee(t,l),De({setValue:i,pushValue:a})}kt(["contextmenu"]);var ug=class extends cr{filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return g0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.plugin.internal.openSuggesterModal(this,e=>{this.svelteWrapper.getInstance()?.pushValue(e.value)})}openTextModal(){this.mountable.plugin.internal.openTextPromptModal({title:"Meta Bind List Suggester",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper.getInstance()?.pushValue(e)},onCancel:()=>{}})}};var Tj=(t,e,r)=>{t.target instanceof HTMLInputElement||e(z(r).value)},Dj=(t,e,r)=>e(z(r).value),Mj=ue('
');function v0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(u){$e(n,Le(u))}function a(u){z(n).includes(u)?$e(n,Le(z(n).filter(c=>c!==u))):z(n).push(u),e.onValueChange(z(n))}function o(u,c){u.key===" "&&a(c)}var s=Xr(),l=Je(s);return Yt(l,17,()=>e.options,er,(u,c)=>{var f=Mj();f.__click=[Tj,a,c];let m=Vt(()=>z(n).includes(z(c).value));Re(()=>tn(f,"is-selected",z(m)));var p=ye(f);Tt(p),Re(()=>Ys(p,z(n).includes(z(c).value))),p.__input=[Dj,a,c];var d=le(p,2);za(d,{get value(){return z(c).name}}),ce(f),Pi("keypress",f,h=>o(h,z(c).value)),ee(u,f)}),ee(t,s),De({setValue:i})}kt(["click","input"]);var lg=class extends cr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return ao(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return v0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var Cj=(t,e,r,n)=>r.onValueChange(z(n)),Nj=ue('');function y0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(o){$e(n,Le(o))}var a=Nj();return Tt(a),a.__input=[Cj,r,e,n],Re(()=>wt(a,"placeholder",e.placeholder)),_t(a,()=>z(n),o=>$e(n,o)),ee(t,a),De({setValue:i})}kt(["input"]);var cg=class extends cr{filterValue(e){return zc(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return y0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Number"}}};function $2(t,e,r){e(),r(t)}var Fj=ue(' ',1),Ij=ue('
');function x0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value)),i=!1,a,o=0,s;function l(y){$e(n,Le(y))}function u(y){$e(n,Le(y)),e.onValueChange(y)}function c(y){return y=pp(y,e.minValue,e.maxValue),Ux(y,e.minValue,e.maxValue,0,100)}function f(){i=!0}function m(){i=!1}function p(y){if(!i)return;y.stopPropagation&&y.stopPropagation(),y.preventDefault&&y.preventDefault();let E=y instanceof TouchEvent?y.touches[0].clientX:y.clientX;d(E)}function d(y){let E=a.getBoundingClientRect();y=pp(y,E.left,E.right);let D=Ux(y,E.left,E.right,e.minValue,e.maxValue);D=h(D,e.stepSize),u(D)}function h(y,E){return Number.parseFloat((Math.round(y/E)*E).toFixed(10))}function x(y){o<50&&(o+=1);let E=Math.ceil(o/5);if(y.key==="ArrowUp"||y.key==="ArrowRight"){let D=pp(z(n)+E,e.minValue,e.maxValue);u(D)}if(y.key==="ArrowDown"||y.key==="ArrowLeft"){let D=pp(z(n)-E,e.minValue,e.maxValue);u(D)}window.clearTimeout(s),s=window.setTimeout(()=>o=1,100)}var b=Ij();Pi("touchmove",Hs,p,void 0,!1),Pi("touchcancel",Hs,m),Pi("touchend",Hs,m),Pi("mousemove",Hs,p),Pi("mouseup",Hs,m),b.__keydown=x,b.__mousedown=[$2,f,p],b.__touchstart=[$2,f,p];var T=ye(b);let v=Vt(()=>`width: ${c(z(n))}%`);Re(()=>wt(T,"aria-label",z(n).toString()));var A=le(T,2);{var w=y=>{var E=Fj(),D=Je(E),_=ye(D,!0);ce(D);var N=le(D,2),C=ye(N,!0);ce(N);var B=le(N,2),R=ye(B,!0);ce(B),Re(()=>{ht(_,z(n)),ht(C,e.minValue),ht(R,e.maxValue)}),ee(y,E)};ot(A,y=>{e.addLabels&&y(w)})}return ce(b),Vo(b,y=>a=y,()=>a),Re(()=>{wt(T,"style",z(v)),wt(T,"aria-valuemin",e.minValue),wt(T,"aria-valuemax",e.maxValue),wt(T,"aria-valuenow",z(n))}),Pi("dragstart",T,()=>i=!0),ee(t,b),De({setValue:l})}kt(["keydown","mousedown","touchstart"]);var fg=class extends cr{constructor(e){if(super(e),this.minValue=this.mountable.getArgument("minValue")?.value??0,this.maxValue=this.mountable.getArgument("maxValue")?.value??100,this.stepSize=this.mountable.getArgument("stepSize")?.value??1,this.minValue>=this.maxValue)throw new Hr({errorLevel:"ERROR",effect:"can not create progress bar input field",cause:`minValue (${this.maxValue}) must be less than maxValue (${this.maxValue})`})}filterValue(e){return yd(zc(e),this.minValue,this.maxValue)}getFallbackDefaultValue(){return this.minValue}getSvelteComponent(){return x0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{minValue:this.minValue,maxValue:this.maxValue,stepSize:this.stepSize,addLabels:(this.mountable.getArgument("addLabels")?.value??!0)===!0}}};var Pj=(t,e,r)=>{t.target instanceof HTMLInputElement||e(z(r).value)},Bj=(t,e,r)=>e(z(r).value),kj=ue('
');function b0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(u){$e(n,Le(u))}function a(u){z(n)===u?$e(n,null):$e(n,Le(u)),e.onValueChange(z(n))}function o(u,c){u.key===" "&&a(c)}var s=Xr(),l=Je(s);return Yt(l,17,()=>e.options,er,(u,c)=>{var f=kj();f.__click=[Pj,a,c];var m=ye(f);Tt(m),m.__input=[Bj,a,c];var p=le(m,2);za(p,{get value(){return z(c).name}}),ce(f),Re(()=>{tn(f,"is-selected",z(c).value===z(n)),Ys(m,z(c).value===z(n))}),Pi("keypress",f,d=>o(d,z(c).value)),ee(u,f)}),ee(t,s),De({setValue:i})}kt(["click","input"]);var pg=class extends cr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return Au(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return b0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var $j=ue(' '),Oj=(t,e,r,n)=>r.onValueChange(z(n)),Rj=ue(' '),Lj=ue(' ',1);function w0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(f){$e(n,Le(f))}var a=Lj(),o=Je(a);{var s=f=>{var m=$j(),p=ye(m,!0);ce(m),Re(()=>ht(p,e.minValue)),ee(f,m)};ot(o,f=>{e.addLabels&&f(s)})}var l=le(o,2);Tt(l),l.__input=[Oj,r,e,n];var u=le(l,2);{var c=f=>{var m=Rj(),p=ye(m,!0);ce(m),Re(()=>ht(p,e.maxValue)),ee(f,m)};ot(u,f=>{e.addLabels&&f(c)})}return Re(()=>{wt(l,"min",e.minValue),wt(l,"max",e.maxValue),wt(l,"step",e.stepSize)}),_t(l,()=>z(n),f=>$e(n,f)),ee(t,a),De({setValue:i})}kt(["input"]);var mg=class extends cr{constructor(e){if(super(e),this.minValue=this.mountable.getArgument("minValue")?.value??0,this.maxValue=this.mountable.getArgument("maxValue")?.value??100,this.stepSize=this.mountable.getArgument("stepSize")?.value??1,this.minValue>=this.maxValue)throw new Hr({errorLevel:"ERROR",effect:"can not create slider input field",cause:`minValue (${this.maxValue}) must be less than maxValue (${this.maxValue})`})}filterValue(e){return yd(zc(e),this.minValue,this.maxValue)}getFallbackDefaultValue(){return this.minValue}getSvelteComponent(){return w0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{minValue:this.minValue,maxValue:this.maxValue,stepSize:this.stepSize,addLabels:this.mountable.getArgument("addLabels")?.value===!0}}};var Vj=ue(" "),Uj=ue('
');function _0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(h){$e(n,Le(h))}let a=Vt(()=>z(n)?.toString()??"null"),o=Vt(()=>{if(Cn.isLink(z(a)))try{return Cn.parseLink(z(a))}catch(h){console.warn(h)}});var s=Uj(),l=ye(s),u=ye(l);{var c=h=>{js(h,{get mdLink(){return z(o)}})},f=h=>{var x=Vj(),b=ye(x,!0);ce(x),Re(()=>ht(b,z(a))),ee(h,x)};ot(u,h=>{z(o)!==void 0?h(c):h(f,!1)})}ce(l);var m=le(l,2);Et(m,{get variant(){return"plain"},get onclick(){return e.showSuggester},children:(h,x)=>{Yr(h,{get plugin(){return e.plugin},iconName:"list"})},$$slots:{default:!0}});var p=le(m,2);{var d=h=>{Et(h,{get variant(){return"plain"},get onclick(){return e.showTextPrompt},children:(x,b)=>{Yr(x,{get plugin(){return e.plugin},iconName:"pencil"})},$$slots:{default:!0}})};ot(p,h=>{e.allowOther&&h(d)})}return ce(s),ee(t,s),De({setValue:i})}var dg=class extends cr{filterValue(e){return Au(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return _0}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.plugin.internal.openSuggesterModal(this,e=>this.setInternalValue(e.value))}openTextModal(){this.mountable.plugin.internal.openTextPromptModal({title:"Meta Bind Suggester",subTitle:"Set the suggester value.",value:"",multiline:!1,onSubmit:e=>{this.setInternalValue(e)},onCancel:()=>{}})}};var qj=(t,e,r,n)=>r.onValueChange(z(n)),zj=ue(" "),Hj=ue(' ',1);function A0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(c){$e(n,Le(c))}function a(c,f){let m=f.toString();return`${c.toString().padStart(m.length,"0")}/${m}`}var o=Hj(),s=Je(o);Tt(s),s.__input=[qj,r,e,n];var l=le(s,2);{var u=c=>{var f=zj(),m=ye(f,!0);Re(()=>ht(m,a(z(n).length,e.limit))),ce(f),Re(()=>xa(f,`mb-content-limit-indicator ${z(n).length>e.limit?"mb-content-limit-indicator-overflow":""}`)),ee(c,f)};ot(l,c=>{e.limit!==void 0&&c(u)})}return Re(()=>{wt(s,"placeholder",e.placeholder),wt(s,"maxlength",e.limit)}),_t(s,()=>z(n),c=>$e(n,c)),ee(t,o),De({setValue:i})}kt(["input"]);var hg=class extends cr{filterValue(e){return os(e)}getFallbackDefaultValue(){return""}getSvelteComponent(){return A0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Text",limit:this.mountable.getArgument("limit")?.value}}};var Gj=(t,e,r,n)=>r.onValueChange(z(n)),Wj=ue('');function S0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(o){$e(n,Le(o))}var a=Wj();return On(a),a.__input=[Gj,r,e,n],Re(()=>{wt(a,"placeholder",e.placeholder),wt(a,"maxlength",e.limit)}),_t(a,()=>z(n),o=>$e(n,o)),ee(t,a),De({setValue:i})}kt(["input"]);var gg=class extends cr{filterValue(e){return os(e)}getFallbackDefaultValue(){return""}getSvelteComponent(){return S0}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Text",limit:this.mountable.getArgument("limit")?.value}}};var Yj=(t,e,r,n)=>r.onValueChange(z(n)),jj=ue('');function E0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(o){$e(n,Le(o))}var a=jj();return Tt(a),a.__input=[Yj,r,e,n],_t(a,()=>z(n),o=>$e(n,o)),ee(t,a),De({setValue:i})}kt(["input"]);var vg=class extends cr{filterValue(e){return os(e)}getFallbackDefaultValue(){return"00:00"}getSvelteComponent(){return E0}rawMapValue(e){return e}rawReverseMapValue(e){return e}};var Zj=(t,e)=>e(),Jj=(t,e)=>e(t),Xj=ue('
');function T0(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]),n=bt(Le(e.value));function i(u){$e(n,Le(u))}function a(){$e(n,!z(n)),e.onValueChange(z(n))}function o(u){u.key===" "&&a()}var s=Xj();s.__click=[Zj,a],s.__keydown=[Jj,o];var l=ye(s);return Tt(l),ce(s),Re(()=>{wt(s,"aria-checked",z(n)),tn(s,"is-enabled",z(n)),Ys(l,z(n))}),ee(t,s),De({setValue:i})}kt(["click","keydown"]);var yg=class extends cr{constructor(e){super(e),this.onValue=this.mountable.getArgument("onValue")?.value??!0,this.offValue=this.mountable.getArgument("offValue")?.value??!1}filterValue(e){return e===this.onValue||e===this.offValue?Au(e):void 0}getFallbackDefaultValue(){return!1}getSvelteComponent(){return T0}rawReverseMapValue(e){return e===this.onValue?!0:(e===this.offValue,!1)}rawMapValue(e){return e?this.onValue:this.offValue}};var jt=class{static linkToInputField(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/inputfields/${e.toLowerCase()}/`}static linkToInputFieldArgument(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/inputfieldarguments/${e.toLowerCase()}/`}static linkToViewField(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/viewfields/${e.toLowerCase()}/`}static linkToViewFieldArgument(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/viewfieldarguments/${e.toLowerCase()}/`}static linkToInputFields(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/inputfields/"}static linkToViewFields(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/viewfields/"}static linkToButtons(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/buttons/#button-configuration"}static linkToButtonConfig(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/buttons/#button-configuration"}static linkToSearch(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/?s=${encodeURIComponent(e)}`}static linkToHome(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/"}static linkToGithub(){return"https://github.com/mProjectsCode/obsidian-meta-bind-plugin"}static linkToIssues(){return"https://github.com/mProjectsCode/obsidian-meta-bind-plugin/issues"}static linkToCanaryBuilds(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/installation/#canary-builds"}static open(e){xd(e)}};var xg=class{constructor(e){this.plugin=e}createInputField(e){let r=e.declaration.inputFieldType,n=e.renderChildType;if(r!=="invalid"&&this.checkRenderChildTypeAllowed(r,n),r==="toggle")return new yg(e);if(r==="slider")return new mg(e);if(r==="text")return new hg(e);if(r==="textArea")return new gg(e);if(r==="select")return new pg(e);if(r==="multiSelect")return new lg(e);if(r==="datePicker")return new Kh(e);if(r==="number")return new cg(e);if(r==="suggester")return new dg(e);if(r==="editor")return new tg(e);if(r==="progressBar")return new fg(e);if(r==="inlineSelect")return new og(e);if(r==="imageSuggester")return new ng(e);if(r==="list")return new sg(e);if(r==="listSuggester")return new ug(e);if(r==="date")return new Qh(e);if(r==="time")return new vg(e);if(r==="inlineListSuggester")return new ag(e);if(r==="inlineList")return new ig(e);if(r==="imageListSuggester")return new rg(e);if(r==="dateTime")return new eg(e);}checkRenderChildTypeAllowed(e,r){if(this.plugin.settings.ignoreCodeBlockRestrictions)return;let n=ud[e];if(r==="block"&&!n.allowInBlock)throw new Co({errorLevel:"ERROR",effect:"can not create input field",cause:`input fields of type '${e}' are not allowed inside of code blocks`,docs:[jt.linkToInputField(e)]});if(r==="inline"&&!n.allowInline)throw new Co({errorLevel:"ERROR",effect:"can not create input field",cause:`input fields of type '${e}' are not allowed inside of inline code blocks`,docs:[jt.linkToInputField(e)]})}};var cf=class extends qn{constructor(e,r,n,i,a){super(e,r,n),this.renderChildType=i,this.declaration=a,this.declarationString=a.declarationString,this.errorCollection=new Qt(this.getUuid()),this.errorCollection.merge(a.errorCollection)}hasArgument(e){return this.getArguments(e).length>0}getArgument(e){return this.getArguments(e).at(0)}getArguments(e){if(this.declaration.errorCollection.hasErrors())throw new Gt({errorLevel:"CRITICAL",effect:"can not retrieve arguments",cause:"inputFieldDeclaration has errors"});return this.declaration.argumentContainer.getAll(e)}getBindTarget(){return this.declaration.bindTarget}shouldAddCardContainer(){let e=this.declaration.inputFieldType==="select"||this.declaration.inputFieldType==="multiSelect"||this.declaration.inputFieldType==="list",r=this.hasArgument("showcase")||this.hasArgument("title");return this.renderChildType==="block"&&(e||r)}createContainer(e){if(this.shouldAddCardContainer()){let r=mt.createElement(e,"div");mt.addClass(r,"mb-card");let n=this.getArgument("title");return n&&mt.createElement(r,"h3",{text:n.value}),r}return e}addShowcase(e){if(this.getArgument("showcase")&&this.shouldAddCardContainer()){let n=mt.createElement(e,"code",{class:"mb-none"}),i=mt.createElement(n,"a",{text:this.declarationString,class:"mb-no-link"});i.href=jt.linkToInputField(this.declaration.inputFieldType)}}createInputField(){if(!this.errorCollection.hasErrors())try{this.inputField=this.plugin.api.inputFieldFactory.createInputField(this)}catch(e){this.errorCollection.add(e)}!this.errorCollection.hasErrors()&&!this.inputField&&this.errorCollection.add(new Gt({errorLevel:"CRITICAL",effect:"can't render input field",cause:"input field is undefined"}))}createErrorIndicator(e){this.plugin.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),mt.empty(e),mt.addClass(e,"mb-input"),this.createInputField(),this.errorCollection.hasErrors()){this.createErrorIndicator(e);return}let r=this.createContainer(e);this.createErrorIndicator(r);let n=mt.createElement(r,"div",{class:"mb-input-wrapper"});this.inputField?.mount(n);let i=this.getArguments("class");for(let a of i)mt.addClasses(n,a.value);mt.addClass(n,`mb-input-type-${this.declaration.inputFieldType}`),this.renderChildType==="block"?mt.addClass(e,"mb-input-block"):mt.addClass(e,"mb-input-inline"),this.addShowcase(r)}onUnmount(e){super.onUnmount(e),this.inputField?.unmount(),Di(e,"input field")}};var Qj=ue("
");function Iu(t,e){Te(e,!0);let r,n;ga(()=>{n?.unmount(),n=e.mountable,n.mount(r)}),lf(()=>{n?.unmount()});var i=Qj();Vo(i,a=>r=a,()=>r),ee(t,i),De()}var Kj=ue(" "),eZ=ue(""),tZ=ue('invalid data'),rZ=ue(''),nZ=ue('
',1);function M0(t,e){Te(e,!0);let r=lt(e,"tableHead",19,()=>[]),n=bt(Le([]));function i(p){$e(n,Le(p))}var a=nZ(),o=Je(a),s=ye(o),l=ye(s),u=ye(l),c=ye(u);Yt(c,17,r,er,(p,d)=>{var h=Kj(),x=ye(h,!0);ce(h),Re(()=>ht(x,z(d))),ee(p,h)}),Nt(),ce(u),ce(l);var f=le(l);Yt(f,21,()=>z(n),p=>p.index,(p,d)=>{var h=rZ(),x=ye(h);{var b=w=>{var y=Xr(),E=Je(y);Yt(E,17,()=>z(d).cells,er,(D,_)=>{var N=eZ(),C=ye(N);Iu(C,{get mountable(){return z(_)}}),ce(N),ee(D,N)}),ee(w,y)},T=w=>{var y=tZ();Re(()=>wt(y,"colspan",r().length)),ee(w,y)};ot(x,w=>{z(d).isValid?w(b):w(T,!1)})}var v=le(x),A=ye(v);Et(A,{onclick:()=>e.table.removeColumn(z(d).index),children:(w,y)=>{Yr(w,{get plugin(){return e.table.plugin},iconName:"x"})},$$slots:{default:!0}}),ce(v),ce(h),ee(p,h)}),ce(f),ce(s),ce(o);var m=le(o,2);return Et(m,{onclick:()=>e.table.addColumn(),children:(p,d)=>{Nt();var h=lr("Add Row");ee(p,h)},$$slots:{default:!0}}),ee(t,a),De({updateTable:i})}function bg(t){return new xu(t.map(e=>hI.tryParse(e).success?new ml("array",e):new ml("object",e)))}var wg=class extends qn{constructor(e,r,n,i,a,o){super(e,r,n),this.bindTarget=i,this.tableHead=a,this.columns=o,this.inputSignal=new yn(void 0),this.outputSignal=new yn(void 0),this.value=void 0}registerSelfToMetadataManager(){this.metadataManagerOutputSignalListener=this.outputSignal.registerListener({callback:this.updateMetadataManager.bind(this)}),this.metadataSubscription=this.plugin.metadataManager.subscribe(this.getUuid(),this.inputSignal,this.bindTarget,()=>this.unmount())}unregisterSelfFromMetadataManager(){this.metadataManagerOutputSignalListener&&this.outputSignal.unregisterListener(this.metadataManagerOutputSignalListener),this.metadataSubscription?.unsubscribe()}updateMetadataManager(e){this.metadataSubscription?.write(e)}updateDisplayValue(e){e=e??[];let r=[];for(let n=0;ntypeof o=="string"?this.plugin.api.createInlineFieldFromString(o,this.getFilePath(),i,"inline"):"inputFieldType"in o?this.plugin.api.createInputFieldMountable(this.getFilePath(),{declaration:o,scope:i,renderChildType:"inline"}):this.plugin.api.createViewFieldMountable(this.getFilePath(),{declaration:o,scope:i,renderChildType:"inline"}));r.push({cells:a,index:n,value:e[n],isValid:!0})}else r.push({cells:[],index:n,value:e[n],isValid:!1});this.tableComponent?.updateTable(r)}createCell(e,r){return e.mount(r),()=>e.unmount()}removeColumn(e){this.value=this.value??[],this.value.splice(e,1),this.updateDisplayValue(this.value),this.outputSignal.set(this.value)}addColumn(){this.value=this.value??[],this.value.push({}),this.updateDisplayValue(this.value),this.outputSignal.set(this.value)}onMount(e){super.onMount(e),this.tableComponent=Vr(M0,{target:e,props:{table:this,tableHead:this.tableHead}}),this.inputSignal.registerListener({callback:r=>{this.value=r,this.updateDisplayValue(r)}}),this.registerSelfToMetadataManager()}onUnmount(e){super.onUnmount(e),this.unregisterSelfFromMetadataManager(),this.tableComponent&&Ur(this.tableComponent),Di(e,"table")}};var _g=class extends qn{constructor(e,r,n,i){super(e,r,n),this.declaration=i,this.declarationString=i.declarationString,this.errorCollection=new Qt(this.getUuid()),this.errorCollection.merge(i.errorCollection),this.variables=[],this.buildVariables()}buildVariables(){if(this.errorCollection.isEmpty())try{for(let e of this.declaration.bindTargetMappings??[])this.variables.push({bindTargetDeclaration:e.bindTarget,metadataSignal:new yn(void 0),uuid:Fr(),contextName:e.name})}catch(e){this.errorCollection.add(e)}}buildContext(){let e={};for(let r of this.variables??[])!r.contextName||!r.metadataSignal||(e[r.contextName]=r.metadataSignal.get()??"");return e}async evaluate(){return this.jsRenderer?.evaluate({bound:this.buildContext()})}registerSelfToMetadataManager(){this.metadataSubscription=this.plugin.metadataManager.subscribeDerived(this.getUuid(),this.declaration.writeToBindTarget,this.variables.map(e=>e.bindTargetDeclaration),this.variables.map(e=>e.metadataSignal),async()=>await this.evaluate(),()=>this.unmount())}unregisterSelfFromMetadataManager(){this.metadataSubscription?.unsubscribe()}createErrorIndicator(e){this.plugin.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),mt.addClass(e,"mb-view"),mt.empty(e),this.plugin.internal.isJsEngineAvailable()||this.errorCollection.add(new No({errorLevel:"ERROR",effect:"can not create js view field",cause:"The JS Engine plugin is not installed and enabled."})),this.plugin.settings.enableJs||this.errorCollection.add(new No({errorLevel:"CRITICAL",effect:"Can't evaluate expression.",cause:"JS evaluation is disabled in the plugin settings."})),this.createErrorIndicator(e),this.errorCollection.hasErrors())return;let r=document.createElement("div");mt.addClass(r,"mb-view-wrapper"),this.jsRenderer=this.plugin.internal.createJsRenderer(r,this.getFilePath(),this.declaration.code,this.declaration.hidden),this.registerSelfToMetadataManager(),e.appendChild(r)}onUnmount(e){super.onUnmount(e),this.unregisterSelfFromMetadataManager(),Di(e,"js view field")}};var fs=class extends Ni{constructor(e){super(),this.mountable=e,this.plugin=e.plugin,this.variables=[],this.hidden=!1}async initialRender(e){mt.addClass(e,"mb-view-text"),this.hidden=this.mountable.getArgument("hidden")?.value??!1,this.hidden&&mt.addClass(e,"mb-view-hidden"),await this.onInitialRender(e)}async rerender(e,r){this.hidden||await this.onRerender(e,r)}onMount(e){this.buildVariables(),this.initialRender(e),this.metadataSubscription=this.mountable.plugin.metadataManager.subscribeDerived(this.mountable.getUuid(),this.mountable.getDeclaration().writeToBindTarget,this.variables.map(r=>r.bindTargetDeclaration),this.variables.map(r=>r.metadataSignal),async()=>{let r=await this.computeValue();return this.rerender(e,r),this.mapValue(r)},()=>this.mountable.unmount())}onUnmount(){this.metadataSubscription?.unsubscribe()}};var iZ=ue('
');function C0(t,e){Te(e,!0);let r=lt(e,"internal",3,!0),n=Vt(()=>r()?e.plugin.internal.imagePathToUri(e.image):e.image);var i=iZ(),a=ye(i);ce(i),Re(()=>{wt(a,"src",z(n)),wt(a,"alt",e.image)}),ee(t,i),De()}var aZ=ue("No images"),oZ=ue('
');function N0(t,e){Te(e,!0);let r=lt(e,"images",23,()=>[]);function n(a){console.warn("updating images"),r(a)}var i=oZ();return Yt(i,21,r,er,(a,o)=>{C0(a,{get plugin(){return e.plugin},get image(){return z(o).link},get internal(){return z(o).internal}})},a=>{var o=aZ();ee(a,o)}),ce(i),ee(t,i),De({updateImages:n})}var Ag=class extends fs{constructor(e){super(e)}buildVariables(){let e=this.mountable.getDeclaration().templateDeclaration.filter(n=>typeof n=="string"?n:!0);if(e.length!==1)throw new Ms({errorLevel:"ERROR",effect:"can not create view field",cause:"image view filed only supports exactly a single bind target and not text content"});let r=e[0];if(typeof r=="string")throw new Ms({errorLevel:"ERROR",effect:"can not create view field",cause:"image view filed only supports exactly a single bind target and not text content"});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new yn(void 0),uuid:Fr(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable)}computeValue(){let e=this.linkVariable.metadataSignal.get();if(typeof e=="string"){let r=Cn.interpretAsLink(e);return r===void 0?void 0:[r]}else return Array.isArray(e)?e.filter(r=>typeof r=="string").map(r=>Cn.interpretAsLink(r)).filter(r=>r!==void 0):void 0}mapValue(e){return e===void 0?"":Array.isArray(e)?e.map(r=>r.toString()):e.toString()}onInitialRender(e){this.component=Vr(N0,{target:e,props:{images:[],plugin:this.mountable.plugin}})}async onRerender(e,r){this.component?.updateImages(_d(r).map(n=>({link:n.target,internal:n.internal})))}onUnmount(){super.onUnmount(),this.component&&Ur(this.component)}};var sZ=ue("");function F0(t,e){Te(e,!0);let r=lt(e,"mdLinkList",7);function n(l){r(l)}var i=Xr(),a=Je(i);{var o=l=>{var u=sZ();ee(l,u)},s=l=>{var u=Xr(),c=Je(u);{var f=p=>{js(p,{get mdLink(){return r()[0]}})},m=p=>{Gp(p,{get elements(){return r()},children:(h,x=Ra)=>{js(h,{get mdLink(){return x()}})},$$slots:{default:!0}})};ot(c,p=>{r().length===1?p(f):p(m,!1)},!0)}ee(l,u)};ot(a,l=>{r().length===0?l(o):l(s,!1)})}return ee(t,i),De({updateList:n})}var Sg=class extends fs{constructor(e){super(e)}buildVariables(){let e=this.mountable.getDeclaration().templateDeclaration.filter(a=>typeof a=="string"?a:!0);if(e.length!==1&&e.length!==2&&e.length!==3)throw new Ms({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}" or "{bindTarget}|{bindTarget}"'});let r=e[0],n=e[1],i=e[2];if(this.variables=[],e.length===1){if(typeof r=="string")throw new Ms({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}" or "{bindTarget}|{bindTarget}"'});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new yn(void 0),uuid:Fr(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable)}else if(e.length===2||e.length===3){if(typeof r=="string"||typeof n!="string")throw new Ms({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}", "{bindTarget}|alias", or "{bindTarget}|{bindTarget}"'});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new yn(void 0),uuid:Fr(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable),e.length===2?this.aliasVariable=n.slice(1):typeof i=="string"?this.aliasVariable=i:(i.listenToChildren=!0,this.aliasVariable={bindTargetDeclaration:i,metadataSignal:new yn(void 0),uuid:Fr(),contextName:"MB_VAR_1"},this.variables.push(this.aliasVariable))}else throw new Error("unreachable")}getAlias(){if(this.aliasVariable)return typeof this.aliasVariable=="string"?this.aliasVariable:Il(this.aliasVariable.metadataSignal.get(),this.mountable.plugin.settings.viewFieldDisplayNullAsEmpty)}computeValue(){let e=this.linkVariable.metadataSignal.get(),r=this.getAlias();if(typeof e=="string"){let n=Cn.interpretAsLink(e);return n===void 0?void 0:(r&&(n.alias=r),[n])}else return Array.isArray(e)?e.filter(n=>typeof n=="string").map(n=>Cn.interpretAsLink(n)).filter(n=>n!==void 0):void 0}mapValue(e){return e===void 0?"":Array.isArray(e)?e.map(r=>r.toString()):e.toString()}onInitialRender(e){this.component=Vr(F0,{target:e,props:{mdLinkList:[]}})}async onRerender(e,r){this.component?.updateList(_d(r))}onUnmount(){super.onUnmount(),this.component&&Ur(this.component)}};function sn(){return sn=Object.assign?Object.assign.bind():function(t){for(var e=1;ethis.has(e)).values()}get(e){return rn(this.wrappedObject,e)}set(e,r){return ps(this.wrappedObject,e,r),this}has(e){return Wp(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return R2(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var r of this.keys())e(this.get(r),r,this)}delete(e){Wp(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}},ff=class{constructor(e,r,n){this.a=e,this.b=r,this.bKeys=n,this[Symbol.iterator]=this.entries}get(e){return this.bKeys.has(e)?this.b.get(e):this.a.get(e)}set(e,r){return this.bKeys.has(e)?this.b.set(e,r):this.a.set(e,r),this}has(e){return this.b.has(e)||this.a.has(e)}keys(){return new Set([...this.a.keys(),...this.b.keys()])[Symbol.iterator]()}entries(){return R2(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var r of this.keys())e(this.get(r),r,this)}delete(e){return this.bKeys.has(e)?this.b.delete(e):this.a.delete(e)}clear(){this.a.clear(),this.b.clear()}get size(){return[...this.keys()].length}};function R2(t,e){return{next:()=>{var r=t.next();return r.done?r:{value:e(r.value),done:!1}}}}function Bu(){return new Map}function Zs(t){if(!t)return Bu();if(Tg(t))return t;if(ku(t))return new Pu(t);throw new Error("createMap can create maps from objects or Maps")}function L2(t){if(t instanceof Pu)return t.wrappedObject;var e={};for(var r of t.keys()){var n=t.get(r);ps(e,r,n)}return e}function At(t){return typeof t=="number"}function ft(t){return!t||typeof t!="object"||typeof t.constructor!="function"?!1:t.isBigNumber===!0&&typeof t.constructor.prototype=="object"&&t.constructor.prototype.isBigNumber===!0||typeof t.constructor.isDecimal=="function"&&t.constructor.isDecimal(t)===!0}function V2(t){return typeof t=="bigint"}function ra(t){return t&&typeof t=="object"&&Object.getPrototypeOf(t).isComplex===!0||!1}function Js(t){return t&&typeof t=="object"&&Object.getPrototypeOf(t).isFraction===!0||!1}function bi(t){return t&&t.constructor.prototype.isUnit===!0||!1}function bn(t){return typeof t=="string"}var vr=Array.isArray;function rt(t){return t&&t.constructor.prototype.isMatrix===!0||!1}function Tn(t){return Array.isArray(t)||rt(t)}function Ul(t){return t&&t.isDenseMatrix&&t.constructor.prototype.isMatrix===!0||!1}function Uo(t){return t&&t.isSparseMatrix&&t.constructor.prototype.isMatrix===!0||!1}function pf(t){return t&&t.constructor.prototype.isRange===!0||!1}function $u(t){return t&&t.constructor.prototype.isIndex===!0||!1}function U2(t){return typeof t=="boolean"}function q2(t){return t&&t.constructor.prototype.isResultSet===!0||!1}function Dg(t){return t&&t.constructor.prototype.isHelp===!0||!1}function z2(t){return typeof t=="function"}function H2(t){return t instanceof Date}function G2(t){return t instanceof RegExp}function ku(t){return!!(t&&typeof t=="object"&&t.constructor===Object&&!ra(t)&&!Js(t))}function Tg(t){return t?t instanceof Map||t instanceof Pu||typeof t.set=="function"&&typeof t.get=="function"&&typeof t.keys=="function"&&typeof t.has=="function":!1}function W2(t){return t===null}function Y2(t){return t===void 0}function Ha(t){return t&&t.isAccessorNode===!0&&t.constructor.prototype.isNode===!0||!1}function wi(t){return t&&t.isArrayNode===!0&&t.constructor.prototype.isNode===!0||!1}function j2(t){return t&&t.isAssignmentNode===!0&&t.constructor.prototype.isNode===!0||!1}function Z2(t){return t&&t.isBlockNode===!0&&t.constructor.prototype.isNode===!0||!1}function J2(t){return t&&t.isConditionalNode===!0&&t.constructor.prototype.isNode===!0||!1}function Ht(t){return t&&t.isConstantNode===!0&&t.constructor.prototype.isNode===!0||!1}function Yp(t){return Ht(t)||Qr(t)&&t.args.length===1&&Ht(t.args[0])&&"-+~".includes(t.op)}function ms(t){return t&&t.isFunctionAssignmentNode===!0&&t.constructor.prototype.isNode===!0||!1}function na(t){return t&&t.isFunctionNode===!0&&t.constructor.prototype.isNode===!0||!1}function go(t){return t&&t.isIndexNode===!0&&t.constructor.prototype.isNode===!0||!1}function nr(t){return t&&t.isNode===!0&&t.constructor.prototype.isNode===!0||!1}function Ou(t){return t&&t.isObjectNode===!0&&t.constructor.prototype.isNode===!0||!1}function Qr(t){return t&&t.isOperatorNode===!0&&t.constructor.prototype.isNode===!0||!1}function _i(t){return t&&t.isParenthesisNode===!0&&t.constructor.prototype.isNode===!0||!1}function X2(t){return t&&t.isRangeNode===!0&&t.constructor.prototype.isNode===!0||!1}function Q2(t){return t&&t.isRelationalNode===!0&&t.constructor.prototype.isNode===!0||!1}function Gr(t){return t&&t.isSymbolNode===!0&&t.constructor.prototype.isNode===!0||!1}function Mg(t){return t&&t.constructor.prototype.isChain===!0||!1}function fr(t){var e=typeof t;return e==="object"?t===null?"null":ft(t)?"BigNumber":t.constructor&&t.constructor.name?t.constructor.name:"Object":e}function yt(t){var e=typeof t;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||t===null||t===void 0)return t;if(typeof t.clone=="function")return t.clone();if(Array.isArray(t))return t.map(function(r){return yt(r)});if(t instanceof Date)return new Date(t.valueOf());if(ft(t))return t;if(ku(t))return fZ(t,yt);if(e==="function")return t;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(t,")"))}function fZ(t,e){var r={};for(var n in t)st(t,n)&&(r[n]=e(t[n]));return r}function Cg(t,e){for(var r in e)st(e,r)&&(t[r]=e[r]);return t}function ba(t,e){var r,n,i;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(n=0,i=t.length;n!mZ(a)).every(a=>r[a]!==void 0);if(!n){var i=e.filter(a=>r[a]===void 0);throw new Error('Cannot create function "'.concat(t,'", ')+"some dependencies are missing: ".concat(i.map(a=>'"'.concat(a,'"')).join(", "),"."))}}function mZ(t){return t&&t[0]==="?"}function dZ(t){return t&&t[0]==="?"?t.slice(1):t}function Qe(t){return typeof t=="boolean"?!0:isFinite(t)?t===Math.round(t):!1}function hZ(t){return/^-?\d+$/.test(t)}function Bi(t,e){return e.number==="bigint"&&!hZ(t)?e.numberFallback:e.number}var vo=Math.sign||function(t){return t>0?1:t<0?-1:0},aP=Math.log2||function(e){return Math.log(e)/Math.LN2},oP=Math.log10||function(e){return Math.log(e)/Math.LN10},Ng=Math.log1p||function(t){return Math.log(t+1)},sP=Math.cbrt||function(e){if(e===0)return e;var r=e<0,n;return r&&(e=-e),isFinite(e)?(n=Math.exp(Math.log(e)/3),n=(e/(n*n)+2*n)/3):n=e,r?-n:n},uP=Math.expm1||function(e){return e>=2e-4||e<=-2e-4?Math.exp(e)-1:e+e*e/2+e*e*e/6};function $0(t,e,r){var n={2:"0b",8:"0o",16:"0x"},i=n[e],a="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!Qe(r))throw new Error("size must be an integer");if(t>2**(r-1)-1||t<-(2**(r-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!Qe(t))throw new Error("Value must be an integer");t<0&&(t=t+2**r),a="i".concat(r)}var o="";return t<0&&(t=-t,o="-"),"".concat(o).concat(i).concat(t.toString(e)).concat(a)}function qo(t,e){if(typeof e=="function")return e(t);if(t===1/0)return"Infinity";if(t===-1/0)return"-Infinity";if(isNaN(t))return"NaN";var{notation:r,precision:n,wordSize:i}=O0(e);switch(r){case"fixed":return R0(t,n);case"exponential":return lP(t,n);case"engineering":return gZ(t,n);case"bin":return $0(t,2,i);case"oct":return $0(t,8,i);case"hex":return $0(t,16,i);case"auto":return vZ(t,n,e).replace(/((\.\d*?)(0+))($|e)/,function(){var a=arguments[2],o=arguments[4];return a!=="."?a+o:o});default:throw new Error('Unknown notation "'+r+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function O0(t){var e="auto",r,n;if(t!==void 0)if(At(t))r=t;else if(ft(t))r=t.toNumber();else if(ku(t))t.precision!==void 0&&(r=nP(t.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),t.wordSize!==void 0&&(n=nP(t.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),t.notation&&(e=t.notation);else throw new Error("Unsupported type of options, number, BigNumber, or object expected");return{notation:e,precision:r,wordSize:n}}function df(t){var e=String(t).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+t);var r=e[1],n=e[2],i=parseFloat(e[4]||"0"),a=n.indexOf(".");i+=a!==-1?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}}function gZ(t,e){if(isNaN(t)||!isFinite(t))return String(t);var r=df(t),n=Fg(r,e),i=n.exponent,a=n.coefficients,o=i%3===0?i:i<0?i-3-i%3:i-i%3;if(At(e))for(;e>a.length||i-o+1>a.length;)a.push(0);else for(var s=Math.abs(i-o)-(a.length-1),l=0;l0;)c++,u--;var f=a.slice(c).join(""),m=At(e)&&f.length||f.match(/[1-9]/)?"."+f:"",p=a.slice(0,c).join("")+m+"e"+(i>=0?"+":"")+o.toString();return n.sign+p}function R0(t,e){if(isNaN(t)||!isFinite(t))return String(t);var r=df(t),n=typeof e=="number"?Fg(r,r.exponent+1+e):r,i=n.coefficients,a=n.exponent+1,o=a+(e||0);return i.length0?"."+i.join(""):"")+"e"+(a>=0?"+":"")+a}function vZ(t,e,r){if(isNaN(t)||!isFinite(t))return String(t);var n=iP(r?.lowerExp,-3),i=iP(r?.upperExp,5),a=df(t),o=e?Fg(a,e):a;if(o.exponent=i)return lP(t,e);var s=o.coefficients,l=o.exponent;s.length0?l:0;return ue){var i=n.splice(e,n.length-e);if(i[0]>=5){var a=e-1;for(n[a]++;n[a]===10;)n.pop(),a===0&&(n.unshift(0),r.exponent++,a++),a--,n[a]++}}return r}function mf(t){for(var e=[],r=0;r2&&arguments[2]!==void 0?arguments[2]:1e-8,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return isNaN(t)||isNaN(e)?!1:!isFinite(t)||!isFinite(e)?t===e:t===e?!0:Math.abs(t-e)<=Math.max(r*Math.max(Math.abs(t),Math.abs(e)),n)}var fP=Math.acosh||function(t){return Math.log(Math.sqrt(t*t-1)+t)},pP=Math.asinh||function(t){return Math.log(Math.sqrt(t*t+1)+t)},mP=Math.atanh||function(t){return Math.log((1+t)/(1-t))/2},Ig=Math.cosh||function(t){return(Math.exp(t)+Math.exp(-t))/2},dP=Math.sinh||function(t){return(Math.exp(t)-Math.exp(-t))/2},Pg=Math.tanh||function(t){var e=Math.exp(2*t);return(e-1)/(e+1)};function hP(t,e){var r=t>0?!0:t<0?!1:1/t===1/0,n=e>0?!0:e<0?!1:1/e===1/0;return r^n?-t:t}function nP(t,e){if(At(t))return t;if(ft(t))return t.toNumber();e()}function iP(t,e){return At(t)?t:ft(t)?t.toNumber():e}var gP=function(){return gP=L0.default.create,L0.default},yZ=["?BigNumber","?Complex","?DenseMatrix","?Fraction"],V0=M("typed",yZ,function(e){var{BigNumber:r,Complex:n,DenseMatrix:i,Fraction:a}=e,o=gP();return o.clear(),o.addTypes([{name:"number",test:At},{name:"Complex",test:ra},{name:"BigNumber",test:ft},{name:"bigint",test:V2},{name:"Fraction",test:Js},{name:"Unit",test:bi},{name:"identifier",test:s=>bn&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(s)},{name:"string",test:bn},{name:"Chain",test:Mg},{name:"Array",test:vr},{name:"Matrix",test:rt},{name:"DenseMatrix",test:Ul},{name:"SparseMatrix",test:Uo},{name:"Range",test:pf},{name:"Index",test:$u},{name:"boolean",test:U2},{name:"ResultSet",test:q2},{name:"Help",test:Dg},{name:"function",test:z2},{name:"Date",test:H2},{name:"RegExp",test:G2},{name:"null",test:W2},{name:"undefined",test:Y2},{name:"AccessorNode",test:Ha},{name:"ArrayNode",test:wi},{name:"AssignmentNode",test:j2},{name:"BlockNode",test:Z2},{name:"ConditionalNode",test:J2},{name:"ConstantNode",test:Ht},{name:"FunctionNode",test:na},{name:"FunctionAssignmentNode",test:ms},{name:"IndexNode",test:go},{name:"Node",test:nr},{name:"ObjectNode",test:Ou},{name:"OperatorNode",test:Qr},{name:"ParenthesisNode",test:_i},{name:"RangeNode",test:X2},{name:"RelationalNode",test:Q2},{name:"SymbolNode",test:Gr},{name:"Map",test:Tg},{name:"Object",test:ku}]),o.addConversions([{from:"number",to:"BigNumber",convert:function(l){if(r||Bg(l),cP(l)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+l+"). Use function bignumber(x) to convert to BigNumber.");return new r(l)}},{from:"number",to:"Complex",convert:function(l){return n||kg(l),new n(l,0)}},{from:"BigNumber",to:"Complex",convert:function(l){return n||kg(l),new n(l.toNumber(),0)}},{from:"bigint",to:"number",convert:function(l){if(l>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+l+")");return Number(l)}},{from:"bigint",to:"BigNumber",convert:function(l){return r||Bg(l),new r(l.toString())}},{from:"bigint",to:"Fraction",convert:function(l){return a||$g(l),new a(l)}},{from:"Fraction",to:"BigNumber",convert:function(l){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(l){return n||kg(l),new n(l.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(l){a||$g(l);var u=new a(l);if(u.valueOf()!==l)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+l+"). Use function fraction(x) to convert to Fraction.");return u}},{from:"string",to:"number",convert:function(l){var u=Number(l);if(isNaN(u))throw new Error('Cannot convert "'+l+'" to a number');return u}},{from:"string",to:"BigNumber",convert:function(l){r||Bg(l);try{return new r(l)}catch{throw new Error('Cannot convert "'+l+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(l){try{return BigInt(l)}catch{throw new Error('Cannot convert "'+l+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(l){a||$g(l);try{return new a(l)}catch{throw new Error('Cannot convert "'+l+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(l){n||kg(l);try{return new n(l)}catch{throw new Error('Cannot convert "'+l+'" to Complex')}}},{from:"boolean",to:"number",convert:function(l){return+l}},{from:"boolean",to:"BigNumber",convert:function(l){return r||Bg(l),new r(+l)}},{from:"boolean",to:"bigint",convert:function(l){return BigInt(+l)}},{from:"boolean",to:"Fraction",convert:function(l){return a||$g(l),new a(+l)}},{from:"boolean",to:"string",convert:function(l){return String(l)}},{from:"Array",to:"Matrix",convert:function(l){return i||xZ(),new i(l)}},{from:"Matrix",to:"Array",convert:function(l){return l.valueOf()}}]),o.onMismatch=(s,l,u)=>{var c=o.createError(s,l,u);if(["wrongType","mismatch"].includes(c.data.category)&&l.length===1&&Tn(l[0])&&u.some(m=>!m.params.includes(","))){var f=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw f.data=c.data,f}throw c},o.onMismatch=(s,l,u)=>{var c=o.createError(s,l,u);if(["wrongType","mismatch"].includes(c.data.category)&&l.length===1&&Tn(l[0])&&u.some(m=>!m.params.includes(","))){var f=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw f.data=c.data,f}throw c},o});function Bg(t){throw new Error("Cannot convert value ".concat(t," into a BigNumber: no class 'BigNumber' provided"))}function kg(t){throw new Error("Cannot convert value ".concat(t," into a Complex number: no class 'Complex' provided"))}function xZ(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}function $g(t){throw new Error("Cannot convert value ".concat(t," into a Fraction, no class 'Fraction' provided."))}var bZ="ResultSet",wZ=[],U0=M(bZ,wZ,()=>{function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return t.prototype.type="ResultSet",t.prototype.isResultSet=!0,t.prototype.valueOf=function(){return this.entries},t.prototype.toString=function(){return"["+this.entries.map(String).join(", ")+"]"},t.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},t.fromJSON=function(e){return new t(e.entries)},t},{isClass:!0});var hf=9e15,Uu=1e9,q0="0123456789abcdef",Rg="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Lg="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",z0={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-hf,maxE:hf,crypto:!1},bP,Xs,ir=!0,Ug="[DecimalError] ",Vu=Ug+"Invalid argument: ",wP=Ug+"Precision limit exceeded",_P=Ug+"crypto unavailable",AP="[object Decimal]",ki=Math.floor,ti=Math.pow,_Z=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,AZ=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,SZ=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,SP=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ho=1e7,Ut=7,EZ=9007199254740991,TZ=Rg.length-1,H0=Lg.length-1,Oe={toStringTag:AP};Oe.absoluteValue=Oe.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Ft(t)};Oe.ceil=function(){return Ft(new this.constructor(this),this.e+1,2)};Oe.clampedTo=Oe.clamp=function(t,e){var r,n=this,i=n.constructor;if(t=new i(t),e=new i(e),!t.s||!e.s)return new i(NaN);if(t.gt(e))throw Error(Vu+e);return r=n.cmp(t),r<0?t:n.cmp(e)>0?e:new i(n)};Oe.comparedTo=Oe.cmp=function(t){var e,r,n,i,a=this,o=a.d,s=(t=new a.constructor(t)).d,l=a.s,u=t.s;if(!o||!s)return!l||!u?NaN:l!==u?l:o===s?0:!o^l<0?1:-1;if(!o[0]||!s[0])return o[0]?l:s[0]?-u:0;if(l!==u)return l;if(a.e!==t.e)return a.e>t.e^l<0?1:-1;for(n=o.length,i=s.length,e=0,r=ns[e]^l<0?1:-1;return n===i?0:n>i^l<0?1:-1};Oe.cosine=Oe.cos=function(){var t,e,r=this,n=r.constructor;return r.d?r.d[0]?(t=n.precision,e=n.rounding,n.precision=t+Math.max(r.e,r.sd())+Ut,n.rounding=1,r=DZ(n,CP(n,r)),n.precision=t,n.rounding=e,Ft(Xs==2||Xs==3?r.neg():r,t,e,!0)):new n(1):new n(NaN)};Oe.cubeRoot=Oe.cbrt=function(){var t,e,r,n,i,a,o,s,l,u,c=this,f=c.constructor;if(!c.isFinite()||c.isZero())return new f(c);for(ir=!1,a=c.s*ti(c.s*c,1/3),!a||Math.abs(a)==1/0?(r=Ai(c.d),t=c.e,(a=(t-r.length+1)%3)&&(r+=a==1||a==-2?"0":"00"),a=ti(r,1/3),t=ki((t+1)/3)-(t%3==(t<0?-1:2)),a==1/0?r="5e"+t:(r=a.toExponential(),r=r.slice(0,r.indexOf("e")+1)+t),n=new f(r),n.s=c.s):n=new f(a.toString()),o=(t=f.precision)+3;;)if(s=n,l=s.times(s).times(s),u=l.plus(c),n=nn(u.plus(c).times(s),u.plus(l),o+2,1),Ai(s.d).slice(0,o)===(r=Ai(n.d)).slice(0,o))if(r=r.slice(o-3,o+1),r=="9999"||!i&&r=="4999"){if(!i&&(Ft(s,t+1,0),s.times(s).times(s).eq(c))){n=s;break}o+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(Ft(n,t+1,1),e=!n.times(n).times(n).eq(c));break}return ir=!0,Ft(n,t,f.rounding,e)};Oe.decimalPlaces=Oe.dp=function(){var t,e=this.d,r=NaN;if(e){if(t=e.length-1,r=(t-ki(this.e/Ut))*Ut,t=e[t],t)for(;t%10==0;t/=10)r--;r<0&&(r=0)}return r};Oe.dividedBy=Oe.div=function(t){return nn(this,new this.constructor(t))};Oe.dividedToIntegerBy=Oe.divToInt=function(t){var e=this,r=e.constructor;return Ft(nn(e,new r(t),0,1,1),r.precision,r.rounding)};Oe.equals=Oe.eq=function(t){return this.cmp(t)===0};Oe.floor=function(){return Ft(new this.constructor(this),this.e+1,3)};Oe.greaterThan=Oe.gt=function(t){return this.cmp(t)>0};Oe.greaterThanOrEqualTo=Oe.gte=function(t){var e=this.cmp(t);return e==1||e===0};Oe.hyperbolicCosine=Oe.cosh=function(){var t,e,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(t=Math.ceil(i/3),e=(1/zg(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),a=gf(o,1,a.times(e),new o(1),!0);for(var l,u=t,c=new o(8);u--;)l=a.times(a),a=s.minus(l.times(c.minus(l.times(c))));return Ft(a,o.precision=r,o.rounding=n,!0)};Oe.hyperbolicSine=Oe.sinh=function(){var t,e,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(e=a.precision,r=a.rounding,a.precision=e+Math.max(i.e,i.sd())+4,a.rounding=1,n=i.d.length,n<3)i=gf(a,2,i,i,!0);else{t=1.4*Math.sqrt(n),t=t>16?16:t|0,i=i.times(1/zg(5,t)),i=gf(a,2,i,i,!0);for(var o,s=new a(5),l=new a(16),u=new a(20);t--;)o=i.times(i),i=i.times(s.plus(o.times(l.times(o).plus(u))))}return a.precision=e,a.rounding=r,Ft(i,e,r,!0)};Oe.hyperbolicTangent=Oe.tanh=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+7,n.rounding=1,nn(r.sinh(),r.cosh(),n.precision=t,n.rounding=e)):new n(r.s)};Oe.inverseCosine=Oe.acos=function(){var t,e=this,r=e.constructor,n=e.abs().cmp(1),i=r.precision,a=r.rounding;return n!==-1?n===0?e.isNeg()?zo(r,i,a):new r(0):new r(NaN):e.isZero()?zo(r,i+4,a).times(.5):(r.precision=i+6,r.rounding=1,e=e.asin(),t=zo(r,i+4,a).times(.5),r.precision=i,r.rounding=a,t.minus(e))};Oe.inverseHyperbolicCosine=Oe.acosh=function(){var t,e,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(t=n.precision,e=n.rounding,n.precision=t+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,ir=!1,r=r.times(r).minus(1).sqrt().plus(r),ir=!0,n.precision=t,n.rounding=e,r.ln()):new n(r)};Oe.inverseHyperbolicSine=Oe.asinh=function(){var t,e,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,ir=!1,r=r.times(r).plus(1).sqrt().plus(r),ir=!0,n.precision=t,n.rounding=e,r.ln())};Oe.inverseHyperbolicTangent=Oe.atanh=function(){var t,e,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(t=a.precision,e=a.rounding,n=i.sd(),Math.max(n,t)<2*-i.e-1?Ft(new a(i),t,e,!0):(a.precision=r=n-i.e,i=nn(i.plus(1),new a(1).minus(i),r+t,1),a.precision=t+4,a.rounding=1,i=i.ln(),a.precision=t,a.rounding=e,i.times(.5))):new a(NaN)};Oe.inverseSine=Oe.asin=function(){var t,e,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(e=i.abs().cmp(1),r=a.precision,n=a.rounding,e!==-1?e===0?(t=zo(a,r+4,n).times(.5),t.s=i.s,t):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))};Oe.inverseTangent=Oe.atan=function(){var t,e,r,n,i,a,o,s,l,u=this,c=u.constructor,f=c.precision,m=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&f+4<=H0)return o=zo(c,f+4,m).times(.25),o.s=u.s,o}else{if(!u.s)return new c(NaN);if(f+4<=H0)return o=zo(c,f+4,m).times(.5),o.s=u.s,o}for(c.precision=s=f+10,c.rounding=1,r=Math.min(28,s/Ut+2|0),t=r;t;--t)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(ir=!1,e=Math.ceil(s/Ut),n=1,l=u.times(u),o=new c(u),i=u;t!==-1;)if(i=i.times(l),a=o.minus(i.div(n+=2)),i=i.times(l),o=a.plus(i.div(n+=2)),o.d[e]!==void 0)for(t=e;o.d[t]===a.d[t]&&t--;);return r&&(o=o.times(2<this.d.length-2};Oe.isNaN=function(){return!this.s};Oe.isNegative=Oe.isNeg=function(){return this.s<0};Oe.isPositive=Oe.isPos=function(){return this.s>0};Oe.isZero=function(){return!!this.d&&this.d[0]===0};Oe.lessThan=Oe.lt=function(t){return this.cmp(t)<0};Oe.lessThanOrEqualTo=Oe.lte=function(t){return this.cmp(t)<1};Oe.logarithm=Oe.log=function(t){var e,r,n,i,a,o,s,l,u=this,c=u.constructor,f=c.precision,m=c.rounding,p=5;if(t==null)t=new c(10),e=!0;else{if(t=new c(t),r=t.d,t.s<0||!r||!r[0]||t.eq(1))return new c(NaN);e=t.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new c(r&&!r[0]?-1/0:u.s!=1?NaN:r?0:1/0);if(e)if(r.length>1)a=!0;else{for(i=r[0];i%10===0;)i/=10;a=i!==1}if(ir=!1,s=f+p,o=Lu(u,s),n=e?Vg(c,s+10):Lu(t,s),l=nn(o,n,s,1),jp(l.d,i=f,m))do if(s+=10,o=Lu(u,s),n=e?Vg(c,s+10):Lu(t,s),l=nn(o,n,s,1),!a){+Ai(l.d).slice(i+1,i+15)+1==1e14&&(l=Ft(l,f+1,0));break}while(jp(l.d,i+=10,m));return ir=!0,Ft(l,f,m)};Oe.minus=Oe.sub=function(t){var e,r,n,i,a,o,s,l,u,c,f,m,p=this,d=p.constructor;if(t=new d(t),!p.d||!t.d)return!p.s||!t.s?t=new d(NaN):p.d?t.s=-t.s:t=new d(t.d||p.s!==t.s?p:NaN),t;if(p.s!=t.s)return t.s=-t.s,p.plus(t);if(u=p.d,m=t.d,s=d.precision,l=d.rounding,!u[0]||!m[0]){if(m[0])t.s=-t.s;else if(u[0])t=new d(p);else return new d(l===3?-0:0);return ir?Ft(t,s,l):t}if(r=ki(t.e/Ut),c=ki(p.e/Ut),u=u.slice(),a=c-r,a){for(f=a<0,f?(e=u,a=-a,o=m.length):(e=m,r=c,o=u.length),n=Math.max(Math.ceil(s/Ut),o)+2,a>n&&(a=n,e.length=1),e.reverse(),n=a;n--;)e.push(0);e.reverse()}else{for(n=u.length,o=m.length,f=n0;--n)u[o++]=0;for(n=m.length;n>a;){if(u[--n]o?a+1:o+1,i>o&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(o=u.length,i=c.length,o-i<0&&(i=o,r=c,c=u,u=r),e=0;i;)e=(u[--i]=u[i]+c[i]+e)/Ho|0,u[i]%=Ho;for(e&&(u.unshift(e),++n),o=u.length;u[--o]==0;)u.pop();return t.d=u,t.e=qg(u,n),ir?Ft(t,s,l):t};Oe.precision=Oe.sd=function(t){var e,r=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(Vu+t);return r.d?(e=EP(r.d),t&&r.e+1>e&&(e=r.e+1)):e=NaN,e};Oe.round=function(){var t=this,e=t.constructor;return Ft(new e(t),t.e+1,e.rounding)};Oe.sine=Oe.sin=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+Math.max(r.e,r.sd())+Ut,n.rounding=1,r=CZ(n,CP(n,r)),n.precision=t,n.rounding=e,Ft(Xs>2?r.neg():r,t,e,!0)):new n(NaN)};Oe.squareRoot=Oe.sqrt=function(){var t,e,r,n,i,a,o=this,s=o.d,l=o.e,u=o.s,c=o.constructor;if(u!==1||!s||!s[0])return new c(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(ir=!1,u=Math.sqrt(+o),u==0||u==1/0?(e=Ai(s),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=ki((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),n=new c(e)):n=new c(u.toString()),r=(l=c.precision)+3;;)if(a=n,n=a.plus(nn(o,a,r+2,1)).times(.5),Ai(a.d).slice(0,r)===(e=Ai(n.d)).slice(0,r))if(e=e.slice(r-3,r+1),e=="9999"||!i&&e=="4999"){if(!i&&(Ft(a,l+1,0),a.times(a).eq(o))){n=a;break}r+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Ft(n,l+1,1),t=!n.times(n).eq(o));break}return ir=!0,Ft(n,l,c.rounding,t)};Oe.tangent=Oe.tan=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+10,n.rounding=1,r=r.sin(),r.s=1,r=nn(r,new n(1).minus(r.times(r)).sqrt(),t+10,0),n.precision=t,n.rounding=e,Ft(Xs==2||Xs==4?r.neg():r,t,e,!0)):new n(NaN)};Oe.times=Oe.mul=function(t){var e,r,n,i,a,o,s,l,u,c=this,f=c.constructor,m=c.d,p=(t=new f(t)).d;if(t.s*=c.s,!m||!m[0]||!p||!p[0])return new f(!t.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?t.s/0:t.s*0);for(r=ki(c.e/Ut)+ki(t.e/Ut),l=m.length,u=p.length,l=0;){for(e=0,i=l+n;i>n;)s=a[i]+p[n]*m[i-n-1]+e,a[i--]=s%Ho|0,e=s/Ho|0;a[i]=(a[i]+e)%Ho|0}for(;!a[--o];)a.pop();return e?++r:a.shift(),t.d=a,t.e=qg(a,r),ir?Ft(t,f.precision,f.rounding):t};Oe.toBinary=function(t,e){return Y0(this,2,t,e)};Oe.toDecimalPlaces=Oe.toDP=function(t,e){var r=this,n=r.constructor;return r=new n(r),t===void 0?r:(wa(t,0,Uu),e===void 0?e=n.rounding:wa(e,0,8),Ft(r,t+r.e+1,e))};Oe.toExponential=function(t,e){var r,n=this,i=n.constructor;return t===void 0?r=ds(n,!0):(wa(t,0,Uu),e===void 0?e=i.rounding:wa(e,0,8),n=Ft(new i(n),t+1,e),r=ds(n,!0,t+1)),n.isNeg()&&!n.isZero()?"-"+r:r};Oe.toFixed=function(t,e){var r,n,i=this,a=i.constructor;return t===void 0?r=ds(i):(wa(t,0,Uu),e===void 0?e=a.rounding:wa(e,0,8),n=Ft(new a(i),t+i.e+1,e),r=ds(n,!1,t+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};Oe.toFraction=function(t){var e,r,n,i,a,o,s,l,u,c,f,m,p=this,d=p.d,h=p.constructor;if(!d)return new h(p);if(u=r=new h(1),n=l=new h(0),e=new h(n),a=e.e=EP(d)-p.e-1,o=a%Ut,e.d[0]=ti(10,o<0?Ut+o:o),t==null)t=a>0?e:u;else{if(s=new h(t),!s.isInt()||s.lt(u))throw Error(Vu+s);t=s.gt(e)?a>0?e:u:s}for(ir=!1,s=new h(Ai(d)),c=h.precision,h.precision=a=d.length*Ut*2;f=nn(s,e,0,1,1),i=r.plus(f.times(n)),i.cmp(t)!=1;)r=n,n=i,i=u,u=l.plus(f.times(i)),l=i,i=e,e=s.minus(f.times(i)),s=i;return i=nn(t.minus(r),n,0,1,1),l=l.plus(i.times(u)),r=r.plus(i.times(n)),l.s=u.s=p.s,m=nn(u,n,a,1).minus(p).abs().cmp(nn(l,r,a,1).minus(p).abs())<1?[u,n]:[l,r],h.precision=c,ir=!0,m};Oe.toHexadecimal=Oe.toHex=function(t,e){return Y0(this,16,t,e)};Oe.toNearest=function(t,e){var r=this,n=r.constructor;if(r=new n(r),t==null){if(!r.d)return r;t=new n(1),e=n.rounding}else{if(t=new n(t),e===void 0?e=n.rounding:wa(e,0,8),!r.d)return t.s?r:t;if(!t.d)return t.s&&(t.s=r.s),t}return t.d[0]?(ir=!1,r=nn(r,t,0,e,1).times(t),ir=!0,Ft(r)):(t.s=r.s,r=t),r};Oe.toNumber=function(){return+this};Oe.toOctal=function(t,e){return Y0(this,8,t,e)};Oe.toPower=Oe.pow=function(t){var e,r,n,i,a,o,s=this,l=s.constructor,u=+(t=new l(t));if(!s.d||!t.d||!s.d[0]||!t.d[0])return new l(ti(+s,u));if(s=new l(s),s.eq(1))return s;if(n=l.precision,a=l.rounding,t.eq(1))return Ft(s,n,a);if(e=ki(t.e/Ut),e>=t.d.length-1&&(r=u<0?-u:u)<=EZ)return i=TP(l,s,r,n),t.s<0?new l(1).div(i):Ft(i,n,a);if(o=s.s,o<0){if(el.maxE+1||e0?o/0:0):(ir=!1,l.rounding=s.s=1,r=Math.min(12,(e+"").length),i=G0(t.times(Lu(s,n+r)),n),i.d&&(i=Ft(i,n+5,1),jp(i.d,n,a)&&(e=n+10,i=Ft(G0(t.times(Lu(s,e+r)),e),e+5,1),+Ai(i.d).slice(n+1,n+15)+1==1e14&&(i=Ft(i,n+1,0)))),i.s=o,ir=!0,l.rounding=a,Ft(i,n,a))};Oe.toPrecision=function(t,e){var r,n=this,i=n.constructor;return t===void 0?r=ds(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(wa(t,1,Uu),e===void 0?e=i.rounding:wa(e,0,8),n=Ft(new i(n),t,e),r=ds(n,t<=n.e||n.e<=i.toExpNeg,t)),n.isNeg()&&!n.isZero()?"-"+r:r};Oe.toSignificantDigits=Oe.toSD=function(t,e){var r=this,n=r.constructor;return t===void 0?(t=n.precision,e=n.rounding):(wa(t,1,Uu),e===void 0?e=n.rounding:wa(e,0,8)),Ft(new n(r),t,e)};Oe.toString=function(){var t=this,e=t.constructor,r=ds(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+r:r};Oe.truncated=Oe.trunc=function(){return Ft(new this.constructor(this),this.e+1,1)};Oe.valueOf=Oe.toJSON=function(){var t=this,e=t.constructor,r=ds(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+r:r};function Ai(t){var e,r,n,i=t.length-1,a="",o=t[0];if(i>0){for(a+=o,e=1;er)throw Error(Vu+t)}function jp(t,e,r,n){var i,a,o,s;for(a=t[0];a>=10;a/=10)--e;return--e<0?(e+=Ut,i=0):(i=Math.ceil((e+1)/Ut),e%=Ut),a=ti(10,Ut-e),s=t[i]%a|0,n==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=r<4&&s==99999||r>3&&s==49999||s==5e4||s==0):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(t[i+1]/a/100|0)==ti(10,e-2)-1||(s==a/2||s==0)&&(t[i+1]/a/100|0)==0:e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(n||r<4)&&s==9999||!n&&r>3&&s==4999):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(t[i+1]/a/1e3|0)==ti(10,e-3)-1,o}function Og(t,e,r){for(var n,i=[0],a,o=0,s=t.length;or-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function DZ(t,e){var r,n,i;if(e.isZero())return e;n=e.d.length,n<32?(r=Math.ceil(n/3),i=(1/zg(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),t.precision+=r,e=gf(t,1,e.times(i),new t(1));for(var a=r;a--;){var o=e.times(e);e=o.times(o).minus(o).times(8).plus(1)}return t.precision-=r,e}var nn=function(){function t(n,i,a){var o,s=0,l=n.length;for(n=n.slice();l--;)o=n[l]*i+s,n[l]=o%a|0,s=o/a|0;return s&&n.unshift(s),n}function e(n,i,a,o){var s,l;if(a!=o)l=a>o?1:-1;else for(s=l=0;si[s]?1:-1;break}return l}function r(n,i,a,o){for(var s=0;a--;)n[a]-=s,s=n[a]1;)n.shift()}return function(n,i,a,o,s,l){var u,c,f,m,p,d,h,x,b,T,v,A,w,y,E,D,_,N,C,B,R=n.constructor,V=n.s==i.s?1:-1,L=n.d,P=i.d;if(!L||!L[0]||!P||!P[0])return new R(!n.s||!i.s||(L?P&&L[0]==P[0]:!P)?NaN:L&&L[0]==0||!P?V*0:V/0);for(l?(p=1,c=n.e-i.e):(l=Ho,p=Ut,c=ki(n.e/p)-ki(i.e/p)),C=P.length,_=L.length,b=new R(V),T=b.d=[],f=0;P[f]==(L[f]||0);f++);if(P[f]>(L[f]||0)&&c--,a==null?(y=a=R.precision,o=R.rounding):s?y=a+(n.e-i.e)+1:y=a,y<0)T.push(1),d=!0;else{if(y=y/p+2|0,f=0,C==1){for(m=0,P=P[0],y++;(f<_||m)&&y--;f++)E=m*l+(L[f]||0),T[f]=E/P|0,m=E%P|0;d=m||f<_}else{for(m=l/(P[0]+1)|0,m>1&&(P=t(P,m,l),L=t(L,m,l),C=P.length,_=L.length),D=C,v=L.slice(0,C),A=v.length;A=l/2&&++N;do m=0,u=e(P,v,C,A),u<0?(w=v[0],C!=A&&(w=w*l+(v[1]||0)),m=w/N|0,m>1?(m>=l&&(m=l-1),h=t(P,m,l),x=h.length,A=v.length,u=e(h,v,x,A),u==1&&(m--,r(h,C=10;m/=10)f++;b.e=f+c*p-1,Ft(b,s?a+b.e+1:a,o,d)}return b}}();function Ft(t,e,r,n){var i,a,o,s,l,u,c,f,m,p=t.constructor;e:if(e!=null){if(f=t.d,!f)return t;for(i=1,s=f[0];s>=10;s/=10)i++;if(a=e-i,a<0)a+=Ut,o=e,c=f[m=0],l=c/ti(10,i-o-1)%10|0;else if(m=Math.ceil((a+1)/Ut),s=f.length,m>=s)if(n){for(;s++<=m;)f.push(0);c=l=0,i=1,a%=Ut,o=a-Ut+1}else break e;else{for(c=s=f[m],i=1;s>=10;s/=10)i++;a%=Ut,o=a-Ut+i,l=o<0?0:c/ti(10,i-o-1)%10|0}if(n=n||e<0||f[m+1]!==void 0||(o<0?c:c%ti(10,i-o-1)),u=r<4?(l||n)&&(r==0||r==(t.s<0?3:2)):l>5||l==5&&(r==4||n||r==6&&(a>0?o>0?c/ti(10,i-o):0:f[m-1])%10&1||r==(t.s<0?8:7)),e<1||!f[0])return f.length=0,u?(e-=t.e+1,f[0]=ti(10,(Ut-e%Ut)%Ut),t.e=-e||0):f[0]=t.e=0,t;if(a==0?(f.length=m,s=1,m--):(f.length=m+1,s=ti(10,Ut-a),f[m]=o>0?(c/ti(10,i-o)%ti(10,o)|0)*s:0),u)for(;;)if(m==0){for(a=1,o=f[0];o>=10;o/=10)a++;for(o=f[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(t.e++,f[0]==Ho&&(f[0]=1));break}else{if(f[m]+=s,f[m]!=Ho)break;f[m--]=0,s=1}for(a=f.length;f[--a]===0;)f.pop()}return ir&&(t.e>p.maxE?(t.d=null,t.e=NaN):t.e0?a=a.charAt(0)+"."+a.slice(1)+Ru(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(t.e<0?"e":"e+")+t.e):i<0?(a="0."+Ru(-i-1)+a,r&&(n=r-o)>0&&(a+=Ru(n))):i>=o?(a+=Ru(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+Ru(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=Ru(n))),a}function qg(t,e){var r=t[0];for(e*=Ut;r>=10;r/=10)e++;return e}function Vg(t,e,r){if(e>TZ)throw ir=!0,r&&(t.precision=r),Error(wP);return Ft(new t(Rg),e,1,!0)}function zo(t,e,r){if(e>H0)throw Error(wP);return Ft(new t(Lg),e,r,!0)}function EP(t){var e=t.length-1,r=e*Ut+1;if(e=t[e],e){for(;e%10==0;e/=10)r--;for(e=t[0];e>=10;e/=10)r++}return r}function Ru(t){for(var e="";t--;)e+="0";return e}function TP(t,e,r,n){var i,a=new t(1),o=Math.ceil(n/Ut+4);for(ir=!1;;){if(r%2&&(a=a.times(e),yP(a.d,o)&&(i=!0)),r=ki(r/2),r===0){r=a.d.length-1,i&&a.d[r]===0&&++a.d[r];break}e=e.times(e),yP(e.d,o)}return ir=!0,a}function vP(t){return t.d[t.d.length-1]&1}function DP(t,e,r){for(var n,i=new t(e[0]),a=0;++a17)return new m(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(ir=!1,l=d):l=e,s=new m(.03125);t.e>-2;)t=t.times(s),f+=5;for(n=Math.log(ti(2,f))/Math.LN10*2+5|0,l+=n,r=a=o=new m(1),m.precision=l;;){if(a=Ft(a.times(t),l,1),r=r.times(++c),s=o.plus(nn(a,r,l,1)),Ai(s.d).slice(0,l)===Ai(o.d).slice(0,l)){for(i=f;i--;)o=Ft(o.times(o),l,1);if(e==null)if(u<3&&jp(o.d,l-n,p,u))m.precision=l+=10,r=a=s=new m(1),c=0,u++;else return Ft(o,m.precision=d,p,ir=!0);else return m.precision=d,o}o=s}}function Lu(t,e){var r,n,i,a,o,s,l,u,c,f,m,p=1,d=10,h=t,x=h.d,b=h.constructor,T=b.rounding,v=b.precision;if(h.s<0||!x||!x[0]||!h.e&&x[0]==1&&x.length==1)return new b(x&&!x[0]?-1/0:h.s!=1?NaN:x?0:h);if(e==null?(ir=!1,c=v):c=e,b.precision=c+=d,r=Ai(x),n=r.charAt(0),Math.abs(a=h.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)h=h.times(t),r=Ai(h.d),n=r.charAt(0),p++;a=h.e,n>1?(h=new b("0."+r),a++):h=new b(n+"."+r.slice(1))}else return u=Vg(b,c+2,v).times(a+""),h=Lu(new b(n+"."+r.slice(1)),c-d).plus(u),b.precision=v,e==null?Ft(h,v,T,ir=!0):h;for(f=h,l=o=h=nn(h.minus(1),h.plus(1),c,1),m=Ft(h.times(h),c,1),i=3;;){if(o=Ft(o.times(m),c,1),u=l.plus(nn(o,new b(i),c,1)),Ai(u.d).slice(0,c)===Ai(l.d).slice(0,c))if(l=l.times(2),a!==0&&(l=l.plus(Vg(b,c+2,v).times(a+""))),l=nn(l,new b(p),c,1),e==null)if(jp(l.d,c-d,T,s))b.precision=c+=d,u=o=h=nn(f.minus(1),f.plus(1),c,1),m=Ft(h.times(h),c,1),i=s=1;else return Ft(l,b.precision=v,T,ir=!0);else return b.precision=v,l;l=u,i+=2}}function MP(t){return String(t.s*t.s/0)}function W0(t,e){var r,n,i;for((r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,t.e=r=r-n-1,t.d=[],n=(r+1)%Ut,r<0&&(n+=Ut),nt.constructor.maxE?(t.d=null,t.e=NaN):t.e-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),SP.test(e))return W0(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(AZ.test(e))r=16,e=e.toLowerCase();else if(_Z.test(e))r=2;else if(SZ.test(e))r=8;else throw Error(Vu+e);for(a=e.search(/p/i),a>0?(l=+e.slice(a+1),e=e.substring(2,a)):e=e.slice(2),a=e.indexOf("."),o=a>=0,n=t.constructor,o&&(e=e.replace(".",""),s=e.length,a=s-a,i=TP(n,new n(r),a,a*2)),u=Og(e,r,Ho),c=u.length-1,a=c;u[a]===0;--a)u.pop();return a<0?new n(t.s*0):(t.e=qg(u,c),t.d=u,ir=!1,o&&(t=nn(t,i,s*4)),l&&(t=t.times(Math.abs(l)<54?ti(2,l):Zp.pow(2,l))),ir=!0,t)}function CZ(t,e){var r,n=e.d.length;if(n<3)return e.isZero()?e:gf(t,2,e,e);r=1.4*Math.sqrt(n),r=r>16?16:r|0,e=e.times(1/zg(5,r)),e=gf(t,2,e,e);for(var i,a=new t(5),o=new t(16),s=new t(20);r--;)i=e.times(e),e=e.times(a.plus(i.times(o.times(i).minus(s))));return e}function gf(t,e,r,n,i){var a,o,s,l,u=1,c=t.precision,f=Math.ceil(c/Ut);for(ir=!1,l=r.times(r),s=new t(n);;){if(o=nn(s.times(l),new t(e++*e++),c,1),s=i?n.plus(o):n.minus(o),n=nn(o.times(l),new t(e++*e++),c,1),o=s.plus(n),o.d[f]!==void 0){for(a=f;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=n,n=o,o=a,u++}return ir=!0,o.d.length=f+1,o}function zg(t,e){for(var r=t;--e;)r*=t;return r}function CP(t,e){var r,n=e.s<0,i=zo(t,t.precision,1),a=i.times(.5);if(e=e.abs(),e.lte(a))return Xs=n?4:1,e;if(r=e.divToInt(i),r.isZero())Xs=n?3:2;else{if(e=e.minus(r.times(i)),e.lte(a))return Xs=vP(r)?n?2:3:n?4:1,e;Xs=vP(r)?n?1:4:n?3:2}return e.minus(i).abs()}function Y0(t,e,r,n){var i,a,o,s,l,u,c,f,m,p=t.constructor,d=r!==void 0;if(d?(wa(r,1,Uu),n===void 0?n=p.rounding:wa(n,0,8)):(r=p.precision,n=p.rounding),!t.isFinite())c=MP(t);else{for(c=ds(t),o=c.indexOf("."),d?(i=2,e==16?r=r*4-3:e==8&&(r=r*3-2)):i=e,o>=0&&(c=c.replace(".",""),m=new p(1),m.e=c.length-o,m.d=Og(ds(m),10,i),m.e=m.d.length),f=Og(c,10,i),a=l=f.length;f[--l]==0;)f.pop();if(!f[0])c=d?"0p+0":"0";else{if(o<0?a--:(t=new p(t),t.d=f,t.e=a,t=nn(t,m,r,n,0,i),f=t.d,a=t.e,u=bP),o=f[r],s=i/2,u=u||f[r+1]!==void 0,u=n<4?(o!==void 0||u)&&(n===0||n===(t.s<0?3:2)):o>s||o===s&&(n===4||u||n===6&&f[r-1]&1||n===(t.s<0?8:7)),f.length=r,u)for(;++f[--r]>i-1;)f[r]=0,r||(++a,f.unshift(1));for(l=f.length;!f[l-1];--l);for(o=0,c="";o1)if(e==16||e==8){for(o=e==16?4:3,--l;l%o;l++)c+="0";for(f=Og(c,i,e),l=f.length;!f[l-1];--l);for(o=1,c="1.";ol)for(a-=l;a--;)c+="0";else ae)return t.length=e,!0}function NZ(t){return new this(t).abs()}function FZ(t){return new this(t).acos()}function IZ(t){return new this(t).acosh()}function PZ(t,e){return new this(t).plus(e)}function BZ(t){return new this(t).asin()}function kZ(t){return new this(t).asinh()}function $Z(t){return new this(t).atan()}function OZ(t){return new this(t).atanh()}function RZ(t,e){t=new this(t),e=new this(e);var r,n=this.precision,i=this.rounding,a=n+4;return!t.s||!e.s?r=new this(NaN):!t.d&&!e.d?(r=zo(this,a,1).times(e.s>0?.25:.75),r.s=t.s):!e.d||t.isZero()?(r=e.s<0?zo(this,n,i):new this(0),r.s=t.s):!t.d||e.isZero()?(r=zo(this,a,1).times(.5),r.s=t.s):e.s<0?(this.precision=a,this.rounding=1,r=this.atan(nn(t,e,a,1)),e=zo(this,a,1),this.precision=n,this.rounding=i,r=t.s<0?r.minus(e):r.plus(e)):r=this.atan(nn(t,e,a,1)),r}function LZ(t){return new this(t).cbrt()}function VZ(t){return Ft(t=new this(t),t.e+1,2)}function UZ(t,e,r){return new this(t).clamp(e,r)}function qZ(t){if(!t||typeof t!="object")throw Error(Ug+"Object expected");var e,r,n,i=t.defaults===!0,a=["precision",1,Uu,"rounding",0,8,"toExpNeg",-hf,0,"toExpPos",0,hf,"maxE",0,hf,"minE",-hf,0,"modulo",0,9];for(e=0;e=a[e+1]&&n<=a[e+2])this[r]=n;else throw Error(Vu+r+": "+n);if(r="crypto",i&&(this[r]=z0[r]),(n=t[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(_P);else this[r]=!1;else throw Error(Vu+r+": "+n);return this}function zZ(t){return new this(t).cos()}function HZ(t){return new this(t).cosh()}function NP(t){var e,r,n;function i(a){var o,s,l,u=this;if(!(u instanceof i))return new i(a);if(u.constructor=i,xP(a)){u.s=a.s,ir?!a.d||a.e>i.maxE?(u.e=NaN,u.d=null):a.e=10;s/=10)o++;ir?o>i.maxE?(u.e=NaN,u.d=null):o=429e7?e[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(e,a):(s.push(i%1e7),a+=4);a=n/4}else throw Error(_P);else for(;a=10;i/=10)n++;n{var{on:e,config:r}=t,n=ql.clone({precision:r.precision,modulo:ql.EUCLID});return n.prototype=Object.create(n.prototype),n.prototype.type="BigNumber",n.prototype.isBigNumber=!0,n.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},n.fromJSON=function(i){return new n(i.value)},e&&e("config",function(i,a){i.precision!==a.precision&&n.config({precision:i.precision})}),n},{isClass:!0});var $i=Math.cosh||function(t){return Math.abs(t)<1e-9?1-t:(Math.exp(t)+Math.exp(-t))*.5},yo=Math.sinh||function(t){return Math.abs(t)<1e-9?t:(Math.exp(t)-Math.exp(-t))*.5},vJ=function(t){let e=Math.PI/4;if(-e>t||t>e)return Math.cos(t)-1;let r=t*t;return r*(r*(r*(r*(r*(r*(r*(r/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Z0=function(t,e){return t=Math.abs(t),e=Math.abs(e),t0&&vf();break;case"number":r.im=0,r.re=t;break;default:vf()}return isNaN(r.re)||isNaN(r.im),r};function Pe(t,e){if(!(this instanceof Pe))return new Pe(t,e);let r=zl(t,e);this.re=r.re,this.im=r.im}Pe.prototype={re:0,im:0,sign:function(){let t=Z0(this.re,this.im);return new Pe(this.re/t,this.im/t)},add:function(t,e){let r=zl(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?Pe.NAN:Pe.INFINITY:new Pe(this.re+r.re,this.im+r.im)},sub:function(t,e){let r=zl(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?Pe.NAN:Pe.INFINITY:new Pe(this.re-r.re,this.im-r.im)},mul:function(t,e){let r=zl(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),a=this.re===0&&this.im===0,o=r.re===0&&r.im===0;return n&&o||i&&a?Pe.NAN:n||i?Pe.INFINITY:r.im===0&&this.im===0?new Pe(this.re*r.re,0):new Pe(this.re*r.re-this.im*r.im,this.re*r.im+this.im*r.re)},div:function(t,e){let r=zl(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),a=this.re===0&&this.im===0,o=r.re===0&&r.im===0;if(a&&o||n&&i)return Pe.NAN;if(o||n)return Pe.INFINITY;if(a||i)return Pe.ZERO;if(r.im===0)return new Pe(this.re/r.re,this.im/r.re);if(Math.abs(r.re)0)return new Pe(Math.pow(this.re,r.re),0);if(this.re===0)switch((r.re%4+4)%4){case 0:return new Pe(Math.pow(this.im,r.re),0);case 1:return new Pe(0,Math.pow(this.im,r.re));case 2:return new Pe(-Math.pow(this.im,r.re),0);case 3:return new Pe(0,-Math.pow(this.im,r.re))}}if(n&&r.re>0)return Pe.ZERO;let a=Math.atan2(this.im,this.re),o=J0(this.re,this.im),s=Math.exp(r.re*o-r.im*a),l=r.im*o+r.re*a;return new Pe(s*Math.cos(l),s*Math.sin(l))},sqrt:function(){let t=this.re,e=this.im;if(e===0)return t>=0?new Pe(Math.sqrt(t),0):new Pe(0,Math.sqrt(-t));let r=Z0(t,e),n=Math.sqrt(.5*(r+Math.abs(t))),i=Math.abs(e)/(2*n);return t>=0?new Pe(n,e<0?-i:i):new Pe(i,e<0?-n:n)},exp:function(){let t=Math.exp(this.re);return this.im===0?new Pe(t,0):new Pe(t*Math.cos(this.im),t*Math.sin(this.im))},expm1:function(){let t=this.re,e=this.im;return new Pe(Math.expm1(t)*Math.cos(e)+vJ(e),Math.exp(t)*Math.sin(e))},log:function(){let t=this.re,e=this.im;return e===0&&t>0?new Pe(Math.log(t),0):new Pe(J0(t,e),Math.atan2(e,t))},abs:function(){return Z0(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let t=this.re,e=this.im;return new Pe(Math.sin(t)*$i(e),Math.cos(t)*yo(e))},cos:function(){let t=this.re,e=this.im;return new Pe(Math.cos(t)*$i(e),-Math.sin(t)*yo(e))},tan:function(){let t=2*this.re,e=2*this.im,r=Math.cos(t)+$i(e);return new Pe(Math.sin(t)/r,yo(e)/r)},cot:function(){let t=2*this.re,e=2*this.im,r=Math.cos(t)-$i(e);return new Pe(-Math.sin(t)/r,yo(e)/r)},sec:function(){let t=this.re,e=this.im,r=.5*$i(2*e)+.5*Math.cos(2*t);return new Pe(Math.cos(t)*$i(e)/r,Math.sin(t)*yo(e)/r)},csc:function(){let t=this.re,e=this.im,r=.5*$i(2*e)-.5*Math.cos(2*t);return new Pe(Math.sin(t)*$i(e)/r,-Math.cos(t)*yo(e)/r)},asin:function(){let t=this.re,e=this.im,r=new Pe(e*e-t*t+1,-2*t*e).sqrt(),n=new Pe(r.re-e,r.im+t).log();return new Pe(n.im,-n.re)},acos:function(){let t=this.re,e=this.im,r=new Pe(e*e-t*t+1,-2*t*e).sqrt(),n=new Pe(r.re-e,r.im+t).log();return new Pe(Math.PI/2-n.im,n.re)},atan:function(){let t=this.re,e=this.im;if(t===0){if(e===1)return new Pe(0,1/0);if(e===-1)return new Pe(0,-1/0)}let r=t*t+(1-e)*(1-e),n=new Pe((1-e*e-t*t)/r,-2*t/r).log();return new Pe(-.5*n.im,.5*n.re)},acot:function(){let t=this.re,e=this.im;if(e===0)return new Pe(Math.atan2(1,t),0);let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).atan():new Pe(t!==0?t/0:0,e!==0?-e/0:0).atan()},asec:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Pe(0,1/0);let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).acos():new Pe(t!==0?t/0:0,e!==0?-e/0:0).acos()},acsc:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Pe(Math.PI/2,1/0);let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).asin():new Pe(t!==0?t/0:0,e!==0?-e/0:0).asin()},sinh:function(){let t=this.re,e=this.im;return new Pe(yo(t)*Math.cos(e),$i(t)*Math.sin(e))},cosh:function(){let t=this.re,e=this.im;return new Pe($i(t)*Math.cos(e),yo(t)*Math.sin(e))},tanh:function(){let t=2*this.re,e=2*this.im,r=$i(t)+Math.cos(e);return new Pe(yo(t)/r,Math.sin(e)/r)},coth:function(){let t=2*this.re,e=2*this.im,r=$i(t)-Math.cos(e);return new Pe(yo(t)/r,-Math.sin(e)/r)},csch:function(){let t=this.re,e=this.im,r=Math.cos(2*e)-$i(2*t);return new Pe(-2*yo(t)*Math.cos(e)/r,2*$i(t)*Math.sin(e)/r)},sech:function(){let t=this.re,e=this.im,r=Math.cos(2*e)+$i(2*t);return new Pe(2*$i(t)*Math.cos(e)/r,-2*yo(t)*Math.sin(e)/r)},asinh:function(){let t=this.im;this.im=-this.re,this.re=t;let e=this.asin();return this.re=-this.im,this.im=t,t=e.re,e.re=-e.im,e.im=t,e},acosh:function(){let t=this.acos();if(t.im<=0){let e=t.re;t.re=-t.im,t.im=e}else{let e=t.im;t.im=-t.re,t.re=e}return t},atanh:function(){let t=this.re,e=this.im,r=t>1&&e===0,n=1-t,i=1+t,a=n*n+e*e,o=a!==0?new Pe((i*n-e*e)/a,(e*n+i*e)/a):new Pe(t!==-1?t/0:0,e!==0?e/0:0),s=o.re;return o.re=J0(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,r&&(o.im=-o.im),o},acoth:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Pe(0,Math.PI/2);let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).atanh():new Pe(t!==0?t/0:0,e!==0?-e/0:0).atanh()},acsch:function(){let t=this.re,e=this.im;if(e===0)return new Pe(t!==0?Math.log(t+Math.sqrt(t*t+1)):1/0,0);let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).asinh():new Pe(t!==0?t/0:0,e!==0?-e/0:0).asinh()},asech:function(){let t=this.re,e=this.im;if(this.isZero())return Pe.INFINITY;let r=t*t+e*e;return r!==0?new Pe(t/r,-e/r).acosh():new Pe(t!==0?t/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return Pe.INFINITY;if(this.isInfinite())return Pe.ZERO;let t=this.re,e=this.im,r=t*t+e*e;return new Pe(t/r,-e/r)},conjugate:function(){return new Pe(this.re,-this.im)},neg:function(){return new Pe(-this.re,-this.im)},ceil:function(t){return t=Math.pow(10,t||0),new Pe(Math.ceil(this.re*t)/t,Math.ceil(this.im*t)/t)},floor:function(t){return t=Math.pow(10,t||0),new Pe(Math.floor(this.re*t)/t,Math.floor(this.im*t)/t)},round:function(t){return t=Math.pow(10,t||0),new Pe(Math.round(this.re*t)/t,Math.round(this.im*t)/t)},equals:function(t,e){let r=zl(t,e);return Math.abs(r.re-this.re)<=Pe.EPSILON&&Math.abs(r.im-this.im)<=Pe.EPSILON},clone:function(){return new Pe(this.re,this.im)},toString:function(){let t=this.re,e=this.im,r="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(t)(Object.defineProperty(Pe,"name",{value:"Complex"}),Pe.prototype.constructor=Pe,Pe.prototype.type="Complex",Pe.prototype.isComplex=!0,Pe.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},Pe.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},Pe.prototype.format=function(t){var e="",r=this.im,n=this.re,i=qo(this.re,t),a=qo(this.im,t),o=At(t)?t:t?t.precision:null;if(o!==null){var s=Math.pow(10,-o);Math.abs(n/r)e.re?1:t.ree.im?1:t.im"u"&&(BigInt=function(t){if(isNaN(t))throw new Error("");return t});var It=BigInt(0),hr=BigInt(1),Jp=BigInt(2),Q0=BigInt(5),_a=BigInt(10),wJ=2e3,ut={s:hr,n:It,d:hr};function Qs(t,e){try{t=BigInt(t)}catch{throw qu()}return t*e}function Go(t){return typeof t=="bigint"?t:Math.floor(t)}function wn(t,e){if(e===It)throw K0();let r=Object.create(Ga.prototype);r.s=t1&&(e[r]=(e[r]||It)+hr):e[t]=(e[t]||It)+hr,e}var fi=function(t,e){let r=It,n=hr,i=hr;if(t!=null)if(e!==void 0){if(typeof t=="bigint")r=t;else{if(isNaN(t))throw qu();if(t%1!==0)throw FP();r=BigInt(t)}if(typeof e=="bigint")n=e;else{if(isNaN(e))throw qu();if(e%1!==0)throw FP();n=BigInt(e)}i=r*n}else if(typeof t=="object"){if("d"in t&&"n"in t)r=BigInt(t.n),n=BigInt(t.d),"s"in t&&(r*=BigInt(t.s));else if(0 in t)r=BigInt(t[0]),1 in t&&(n=BigInt(t[1]));else if(typeof t=="bigint")r=t;else throw qu();i=r*n}else if(typeof t=="number"){if(isNaN(t))throw qu();if(t<0&&(i=-hr,t=-t),t%1===0)r=BigInt(t);else if(t>0){let a=1,o=0,s=1,l=1,u=1,c=1e7;for(t>=1&&(a=10**Math.floor(1+Math.log10(t)),t/=a);s<=c&&u<=c;){let f=(o+l)/(s+u);if(t===f){s+u<=c?(r=o+l,n=s+u):u>s?(r=l,n=u):(r=o,n=s);break}else t>f?(o+=l,s+=u):(l+=o,u+=s),s>c?(r=l,n=u):(r=o,n=s)}r=BigInt(r)*BigInt(a),n=BigInt(n)}}else if(typeof t=="string"){let a=0,o=It,s=It,l=It,u=hr,c=hr,f=t.replace(/_/g,"").match(/\d+|./g);if(f===null)throw qu();if(f[a]==="-"?(i=-hr,a++):f[a]==="+"&&a++,f.length===a+1?s=Qs(f[a++],i):f[a+1]==="."||f[a]==="."?(f[a]!=="."&&(o=Qs(f[a++],i)),a++,(a+1===f.length||f[a+1]==="("&&f[a+3]===")"||f[a+1]==="'"&&f[a+3]==="'")&&(s=Qs(f[a],i),u=_a**BigInt(f[a].length),a++),(f[a]==="("&&f[a+2]===")"||f[a]==="'"&&f[a+2]==="'")&&(l=Qs(f[a+1],i),c=_a**BigInt(f[a+1].length)-hr,a+=3)):f[a+1]==="/"||f[a+1]===":"?(s=Qs(f[a],i),u=Qs(f[a+2],hr),a+=3):f[a+3]==="/"&&f[a+1]===" "&&(o=Qs(f[a],i),s=Qs(f[a+2],i),u=Qs(f[a+4],hr),a+=5),f.length<=a)n=u*c,i=r=l+n*o+c*s;else throw qu()}else if(typeof t=="bigint")r=t,i=t,n=hr;else throw qu();if(n===It)throw K0();ut.s=iIt;t=t*t%r,e>>=hr)e&hr&&(n=n*t%r);return n}function AJ(t,e){for(;e%Jp===It;e/=Jp);for(;e%Q0===It;e/=Q0);if(e===hr)return It;let r=_a%e,n=1;for(;r!==hr;n++)if(r=r*_a%e,n>wJ)return It;return BigInt(n)}function SJ(t,e,r){let n=hr,i=_J(_a,r,e);for(let a=0;a<300;a++){if(n===i)return BigInt(a);n=n*_a%e,i=i*_a%e}return 0}function Hl(t,e){if(!t)return e;if(!e)return t;for(;;){if(t%=e,!t)return e;if(e%=t,!e)return t}}function Ga(t,e){if(fi(t,e),this instanceof Ga)t=Hl(ut.d,ut.n),this.s=ut.s,this.n=ut.n/t,this.d=ut.d/t;else return wn(ut.s*ut.n,ut.d)}var K0=function(){return new Error("Division by Zero")},qu=function(){return new Error("Invalid argument")},FP=function(){return new Error("Parameters must be integer")};Ga.prototype={s:hr,n:It,d:hr,abs:function(){return wn(this.n,this.d)},neg:function(){return wn(-this.s*this.n,this.d)},add:function(t,e){return fi(t,e),wn(this.s*this.n*ut.d+ut.s*this.d*ut.n,this.d*ut.d)},sub:function(t,e){return fi(t,e),wn(this.s*this.n*ut.d-ut.s*this.d*ut.n,this.d*ut.d)},mul:function(t,e){return fi(t,e),wn(this.s*ut.s*this.n*ut.n,this.d*ut.d)},div:function(t,e){return fi(t,e),wn(this.s*ut.s*this.n*ut.d,this.d*ut.n)},clone:function(){return wn(this.s*this.n,this.d)},mod:function(t,e){if(t===void 0)return wn(this.s*this.n%this.d,hr);if(fi(t,e),It===ut.n*this.d)throw K0();return wn(this.s*(ut.d*this.n)%(ut.n*this.d),ut.d*this.d)},gcd:function(t,e){return fi(t,e),wn(Hl(ut.n,this.n)*Hl(ut.d,this.d),ut.d*this.d)},lcm:function(t,e){return fi(t,e),ut.n===It&&this.n===It?wn(It,hr):wn(ut.n*this.n,Hl(ut.n,this.n)*Hl(ut.d,this.d))},inverse:function(){return wn(this.s*this.d,this.n)},pow:function(t,e){if(fi(t,e),ut.d===hr)return ut.sut.s*ut.n*this.d},gte:function(t,e){return fi(t,e),this.s*this.n*ut.d>=ut.s*ut.n*this.d},compare:function(t,e){fi(t,e);let r=this.s*this.n*ut.d-ut.s*ut.n*this.d;return(ItIt&&this.s>=It?hr:It),t)},floor:function(t){return t=_a**BigInt(t||0),wn(Go(this.s*t*this.n/this.d)-(t*this.n%this.d>It&&this.s=It?hr:It)+Jp*(t*this.n%this.d)>this.d?hr:It),t)},roundTo:function(t,e){fi(t,e);let r=this.n*ut.d,n=this.d*ut.n,i=r%n,a=Go(r/n);return i+i>=n&&a++,wn(this.s*a*ut.n,ut.d)},divisible:function(t,e){return fi(t,e),!(!(ut.n*this.d)||this.n*ut.d%(ut.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(t){let e=this.n,r=this.d;t=t||15;let n=AJ(e,r),i=SJ(e,r,n),a=this.sIt&&(n+=i,n+=" ",e%=r),n+=e,n+="/",n+=r}return n},toLatex:function(t){let e=this.n,r=this.d,n=this.sIt&&(n+=i,e%=r),n+="\\frac{",n+=e,n+="}{",n+=r,n+="}"}return n},toContinued:function(){let t=this.n,e=this.d,r=[];do{r.push(Go(t/e));let n=t%e;t=e,e=n}while(t!==hr);return r},simplify:function(t){let e=BigInt(1/(t||.001)|0),r=this.abs(),n=r.toContinued();for(let i=1;i=0;s--)a=a.inverse().add(n[s]);let o=a.sub(r);if(o.n*e(Object.defineProperty(Ga,"name",{value:"Fraction"}),Ga.prototype.constructor=Ga,Ga.prototype.type="Fraction",Ga.prototype.isFraction=!0,Ga.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},Ga.fromJSON=function(t){return new Ga(t)},Ga),{isClass:!0});var DJ="Range",MJ=[],tw=M(DJ,MJ,()=>{function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");var i=e!=null,a=r!=null,o=n!=null;if(i){if(ft(e))e=e.toNumber();else if(typeof e!="number")throw new TypeError("Parameter start must be a number")}if(a){if(ft(r))r=r.toNumber();else if(typeof r!="number")throw new TypeError("Parameter end must be a number")}if(o){if(ft(n))n=n.toNumber();else if(typeof n!="number")throw new TypeError("Parameter step must be a number")}this.start=i?parseFloat(e):0,this.end=a?parseFloat(r):0,this.step=o?parseFloat(n):1}return t.prototype.type="Range",t.prototype.isRange=!0,t.parse=function(e){if(typeof e!="string")return null;var r=e.split(":"),n=r.map(function(a){return parseFloat(a)}),i=n.some(function(a){return isNaN(a)});if(i)return null;switch(n.length){case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[2],n[1]);default:return null}},t.prototype.clone=function(){return new t(this.start,this.end,this.step)},t.prototype.size=function(){var e=0,r=this.start,n=this.step,i=this.end,a=i-r;return vo(n)===vo(a)?e=Math.ceil(a/n):a===0&&(e=0),isNaN(e)&&(e=0),[e]},t.prototype.min=function(){var e=this.size()[0];if(e>0)return this.step>0?this.start:this.start+(e-1)*this.step},t.prototype.max=function(){var e=this.size()[0];if(e>0)return this.step>0?this.start+(e-1)*this.step:this.start},t.prototype.forEach=function(e){var r=this.start,n=this.step,i=this.end,a=0;if(n>0)for(;ri;)e(r,[a],this),r+=n,a++},t.prototype.map=function(e){var r=[];return this.forEach(function(n,i,a){r[i[0]]=e(n,i,a)}),r},t.prototype.toArray=function(){var e=[];return this.forEach(function(r,n){e[n[0]]=r}),e},t.prototype.valueOf=function(){return this.toArray()},t.prototype.format=function(e){var r=qo(this.start,e);return this.step!==1&&(r+=":"+qo(this.step,e)),r+=":"+qo(this.end,e),r},t.prototype.toString=function(){return this.format()},t.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},t.fromJSON=function(e){return new t(e.start,e.end,e.step)},t},{isClass:!0});var CJ="Matrix",NJ=[],rw=M(CJ,NJ,()=>{function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator")}return t.prototype.type="Matrix",t.prototype.isMatrix=!0,t.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},t.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},t.prototype.create=function(e,r){throw new Error("Cannot invoke create on a Matrix interface")},t.prototype.subset=function(e,r,n){throw new Error("Cannot invoke subset on a Matrix interface")},t.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},t.prototype.set=function(e,r,n){throw new Error("Cannot invoke set on a Matrix interface")},t.prototype.resize=function(e,r){throw new Error("Cannot invoke resize on a Matrix interface")},t.prototype.reshape=function(e,r){throw new Error("Cannot invoke reshape on a Matrix interface")},t.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},t.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},t.prototype.map=function(e,r){throw new Error("Cannot invoke map on a Matrix interface")},t.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},t.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},t.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},t.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},t.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},t.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},t},{isClass:!0});function nw(t,e,r){var n=t.constructor,i=new n(2),a="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!Qe(r))throw new Error("size must be an integer");if(t.greaterThan(i.pow(r-1).sub(1))||t.lessThan(i.pow(r-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!t.isInteger())throw new Error("Value must be an integer");t.lessThan(0)&&(t=t.add(i.pow(r))),a="i".concat(r)}switch(e){case 2:return"".concat(t.toBinary()).concat(a);case 8:return"".concat(t.toOctal()).concat(a);case 16:return"".concat(t.toHexadecimal()).concat(a);default:throw new Error("Base ".concat(e," not supported "))}}function BP(t,e){if(typeof e=="function")return e(t);if(!t.isFinite())return t.isNaN()?"NaN":t.gt(0)?"Infinity":"-Infinity";var{notation:r,precision:n,wordSize:i}=O0(e);switch(r){case"fixed":return IJ(t,n);case"exponential":return IP(t,n);case"engineering":return FJ(t,n);case"bin":return nw(t,2,i);case"oct":return nw(t,8,i);case"hex":return nw(t,16,i);case"auto":{var a=PP(e?.lowerExp,-3),o=PP(e?.upperExp,5);if(t.isZero())return"0";var s,l=t.toSignificantDigits(n),u=l.e;return u>=a&&u=0?"+":"")+n.toString()}function IP(t,e){return e!==void 0?t.toExponential(e-1):t.toExponential()}function IJ(t,e){return t.toFixed(e)}function PP(t,e){return At(t)?t:ft(t)?t.toNumber():e}function $P(t,e){var r=t.length-e.length,n=t.length;return t.substring(r,n)===e}function Dt(t,e){var r=PJ(t,e);return e&&typeof e=="object"&&"truncate"in e&&r.length>e.truncate?r.substring(0,e.truncate-3)+"...":r}function PJ(t,e){if(typeof t=="number")return qo(t,e);if(ft(t))return BP(t,e);if(BJ(t))return!e||e.fraction!=="decimal"?"".concat(t.s*t.n,"/").concat(t.d):t.toString();if(Array.isArray(t))return OP(t,e);if(bn(t))return Gl(t);if(typeof t=="function")return t.syntax?String(t.syntax):"function";if(t&&typeof t=="object"){if(typeof t.format=="function")return t.format(e);if(t&&t.toString(e)!=={}.toString())return t.toString(e);var r=Object.keys(t).map(n=>Gl(n)+": "+Dt(t[n],e));return"{"+r.join(", ")+"}"}return String(t)}function Gl(t){for(var e=String(t),r="",n=0;n/g,">"),e}function OP(t,e){if(Array.isArray(t)){for(var r="[",n=t.length,i=0;ie?1:-1}function Ct(t,e,r){if(!(this instanceof Ct))throw new SyntaxError("Constructor must be called with the new operator");this.actual=t,this.expected=e,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(t)?"["+t.join(", ")+"]":t)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}Ct.prototype=new RangeError;Ct.prototype.constructor=RangeError;Ct.prototype.name="DimensionError";Ct.prototype.isDimensionError=!0;function Si(t,e,r){if(!(this instanceof Si))throw new SyntaxError("Constructor must be called with the new operator");this.index=t,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=r),this.min!==void 0&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}Si.prototype=new RangeError;Si.prototype.constructor=RangeError;Si.prototype.name="IndexError";Si.prototype.isIndexError=!0;function pt(t){for(var e=[];Array.isArray(t);)e.push(t.length),t=t[0];return e}function RP(t,e,r){var n,i=t.length;if(i!==e[r])throw new Ct(i,e[r]);if(r")}function aw(t,e){var r=e.length===0;if(r){if(Array.isArray(t))throw new Ct(t.length,0)}else RP(t,e,0)}function Xp(t,e){var r=t.isMatrix?t._size:pt(t),n=e._sourceSize;n.forEach((i,a)=>{if(i!==null&&i!==r[a])throw new Ct(i,r[a])})}function Br(t,e){if(t!==void 0){if(!At(t)||!Qe(t))throw new TypeError("Index must be an integer (value: "+t+")");if(t<0||typeof e=="number"&&t>=e)throw new Si(t,e)}}function Wl(t){for(var e=0;e=0,l=e%r===0;if(s)if(l)n[a]=-e/r;else throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-r);return n}function LP(t){return t.reduce((e,r)=>e*r,1)}function kJ(t,e){for(var r=t,n,i=e.length-1;i>0;i--){var a=e[i];n=[];for(var o=r.length/a,s=0;se.test(r))}function sw(t,e){return Array.prototype.join.call(t,e)}function Ks(t){if(!Array.isArray(t))throw new TypeError("Array input expected");if(t.length===0)return t;var e=[],r=0;e[0]={value:t[0],identifier:0};for(var n=1;n1)return t.slice(1).reduce(function(r,n){return zP(r,n,e,0)},t[0]);throw new Error("Wrong number of arguments in function concat")}function em(){for(var t=arguments.length,e=new Array(t),r=0;rm.length),i=Math.max(...n),a=new Array(i).fill(null),o=0;oa[c]&&(a[c]=s[u])}for(var f=0;f1||t[i]>e[a])throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(t,") not possible to broadcast dimension ").concat(n," with size ").concat(t[i]," to size ").concat(e[a]))}}function hs(t,e){var r=pt(t);if(ba(r,e))return t;HP(r,e);var n=em(r,e),i=n.length,a=[...Array(i-r.length).fill(1),...r],o=OJ(t);r.lengthi[a],t)}function tm(t,e,r,n){return Array.isArray(t)?t.map(function(i,a){return tm(i,e.concat(a),r,n)}):n(t,e,r)}function OJ(t){return sn([],t)}var lw=zr(k0(),1);function bo(t,e,r){if(lw.default.isTypedFunction(t)){var n=(e.isMatrix?e.size():pt(e)).map(()=>0),i=e.isMatrix?e.get(n):wf(e,n),a=Object.keys(t.signatures).length===1,o=RJ(t,i,n,e),s=a?Object.values(t.signatures)[0]:t;return o>=1&&o<=3?function(){for(var l=arguments.length,u=new Array(l),c=0;c0;a--){var o=i.slice(0,a);if(lw.default.resolve(t,o)!==null)return a}}function GP(t,e,r,n){try{return t(...e)}catch(i){LJ(i,e,r,n)}}function LJ(t,e,r,n){var i;if(t instanceof TypeError&&((i=t.data)===null||i===void 0?void 0:i.category)==="wrongType"){var a=[];throw a.push("value: ".concat(fr(e[0]))),e.length>=2&&a.push("index: ".concat(fr(e[1]))),e.length>=3&&a.push("array: ".concat(fr(e[2]))),new TypeError("Function ".concat(r," cannot apply callback arguments ")+"".concat(n,"(").concat(a.join(", "),") at index ").concat(JSON.stringify(e[1])))}else throw new TypeError("Function ".concat(r," cannot apply callback arguments ")+"to function ".concat(n,": ").concat(t.message))}var VJ="DenseMatrix",UJ=["Matrix"],cw=M(VJ,UJ,t=>{var{Matrix:e}=t;function r(c,f){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(f&&!bn(f))throw new Error("Invalid datatype: "+f);if(rt(c))c.type==="DenseMatrix"?(this._data=yt(c._data),this._size=yt(c._size),this._datatype=f||c._datatype):(this._data=c.toArray(),this._size=c.size(),this._datatype=f||c._datatype);else if(c&&vr(c.data)&&vr(c.size))this._data=c.data,this._size=c.size,aw(this._data,this._size),this._datatype=f||c.datatype;else if(vr(c))this._data=u(c),this._size=pt(this._data),aw(this._data,this._size),this._datatype=f;else{if(c)throw new TypeError("Unsupported type of data ("+fr(c)+")");this._data=[],this._size=[0],this._datatype=f}}r.prototype=new e,r.prototype.createDenseMatrix=function(c,f){return new r(c,f)},Object.defineProperty(r,"name",{value:"DenseMatrix"}),r.prototype.constructor=r,r.prototype.type="DenseMatrix",r.prototype.isDenseMatrix=!0,r.prototype.getDataType=function(){return Yl(this._data,fr)},r.prototype.storage=function(){return"dense"},r.prototype.datatype=function(){return this._datatype},r.prototype.create=function(c,f){return new r(c,f)},r.prototype.subset=function(c,f,m){switch(arguments.length){case 1:return n(this,c);case 2:case 3:return a(this,c,f,m);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(c){return wf(this._data,c)},r.prototype.set=function(c,f,m){if(!vr(c))throw new TypeError("Array expected");if(c.length");var v=f.max().map(function(y){return y+1});l(c,v,p);var A=d.length,w=0;o(c._data,f,m,A,w)}return c}function o(c,f,m,p,d){var h=d===p-1,x=f.dimension(d);h?x.forEach(function(b,T){Br(b),c[b]=m[T[0]]}):x.forEach(function(b,T){Br(b),o(c[b],f,m[T[0]],p,d+1)})}r.prototype.resize=function(c,f,m){if(!Tn(c))throw new TypeError("Array or Matrix expected");var p=c.valueOf().map(h=>Array.isArray(h)&&h.length===1?h[0]:h),d=m?this.clone():this;return s(d,p,f)};function s(c,f,m){if(f.length===0){for(var p=c._data;vr(p);)p=p[0];return p}return c._size=f.slice(0),c._data=Wo(c._data,c._size,m),c}r.prototype.reshape=function(c,f){var m=f?this.clone():this;m._data=Qp(m._data,c);var p=m._size.reduce((d,h)=>d*h);return m._size=Kp(c,p),m};function l(c,f,m){for(var p=c._size.slice(0),d=!1;p.lengthp[h]&&(p[h]=f[h],d=!0);d&&s(c,p,m)}r.prototype.clone=function(){var c=new r({data:yt(this._data),size:yt(this._size),datatype:this._datatype});return c},r.prototype.size=function(){return this._size.slice(0)},r.prototype._forEach=function(c){var f=this,m=f.size();if(m.length===1){for(var p=0;p=0;T--){if(d[T]++,d[T]===m[T]){d[T]=0;continue}h[T]=T===0?f._data[d[T]]:h[T-1][d[T]];for(var v=T;v[v[b]]);f.push(new r(T,c._datatype))},h=0;h0?c:0,m=c<0?-c:0,p=this._size[0],d=this._size[1],h=Math.min(p-m,d-f),x=[],b=0;b0?m:0,h=m<0?-m:0,x=c[0],b=c[1],T=Math.min(x-h,b-d),v;if(vr(f)){if(f.length!==T)throw new Error("Invalid value array length");v=function(D){return f[D]}}else if(rt(f)){var A=f.size();if(A.length!==1||A[0]!==T)throw new Error("Invalid matrix length");v=function(D){return f.get([D])}}else v=function(){return f};p||(p=ft(v(0))?v(0).mul(0):0);var w=[];if(c.length>0){w=Wo(w,c,p);for(var y=0;y{var{typed:e}=t;return e(WP,{any:yt})});function Yg(t){var e=t.length,r=t[0].length,n,i,a=[];for(i=0;i=n.length)throw new Si(e,n.length);return rt(t)?t.create(jg(t.valueOf(),e,r),t.datatype()):jg(t,e,r)}function jg(t,e,r){var n,i,a,o;if(e<=0)if(Array.isArray(t[0])){for(o=Yg(t),i=[],n=0;n{var{typed:e}=t;return e(YP,{number:Qe,BigNumber:function(n){return n.isInt()},bigint:function(n){return!0},Fraction:function(n){return n.d===1n},"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var Aa="number",eu="number, number";function dw(t){return Math.abs(t)}dw.signature=Aa;function hw(t,e){return t+e}hw.signature=eu;function gw(t,e){return t-e}gw.signature=eu;function vw(t,e){return t*e}vw.signature=eu;function HJ(t,e){return t/e}HJ.signature=eu;function yw(t){return-t}yw.signature=Aa;function xw(t){return t}xw.signature=Aa;function _f(t){return sP(t)}_f.signature=Aa;function bw(t){return t*t*t}bw.signature=Aa;function ww(t){return Math.exp(t)}ww.signature=Aa;function _w(t){return uP(t)}_w.signature=Aa;function GJ(t,e){if(!Qe(t)||!Qe(e))throw new Error("Parameters in function gcd must be integer numbers");for(var r;e!==0;)r=t%e,t=e,e=r;return t<0?-t:t}GJ.signature=eu;function Aw(t,e){if(!Qe(t)||!Qe(e))throw new Error("Parameters in function lcm must be integer numbers");if(t===0||e===0)return 0;for(var r,n=t*e;e!==0;)r=e,e=t%r,t=r;return Math.abs(n/t)}Aw.signature=eu;function jP(t,e){return e?Math.log(t)/Math.log(e):Math.log(t)}function Sw(t){return oP(t)}Sw.signature=Aa;function Ew(t){return aP(t)}Ew.signature=Aa;function WJ(t){return Ng(t)}WJ.signature=Aa;function YJ(t,e){return e===0?t:t-e*Math.floor(t/e)}YJ.signature=eu;function Tw(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r=e<0;if(r&&(e=-e),e===0)throw new Error("Root must be non-zero");if(t<0&&Math.abs(e)%2!==1)throw new Error("Root must be odd when a is negative.");if(t===0)return r?1/0:0;if(!isFinite(t))return r?0:t;var n=Math.pow(Math.abs(t),1/e);return n=t<0?-n:n,r?1/n:n}function Zg(t){return vo(t)}Zg.signature=Aa;function jJ(t){return Math.sqrt(t)}jJ.signature=Aa;function Dw(t){return t*t}Dw.signature=Aa;function Mw(t,e){var r,n,i,a=0,o=1,s=1,l=0;if(!Qe(t)||!Qe(e))throw new Error("Parameters in function xgcd must be integer numbers");for(;e;)n=Math.floor(t/e),i=t-n*e,r=a,a=o-n*a,o=r,r=s,s=l-n*s,l=r,t=e,e=i;var u;return t<0?u=[-t,-o,-l]:u=[t,t?o:0,l],u}Mw.signature=eu;function Cw(t,e){return t*t<1&&e===1/0||t*t>1&&e===-1/0?0:Math.pow(t,e)}Cw.signature=eu;function Af(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!Qe(e)||e<0||e>15)throw new Error("Number of decimals in function round must be an integer from 0 to 15 inclusive");return parseFloat(R0(t,e))}function ZJ(t){return Math.abs(t)}ZJ.signature=Aa;var JJ="number",Sf="number, number";function Nw(t,e){if(!Qe(t)||!Qe(e))throw new Error("Integers expected in function bitAnd");return t&e}Nw.signature=Sf;function Fw(t){if(!Qe(t))throw new Error("Integer expected in function bitNot");return~t}Fw.signature=JJ;function Iw(t,e){if(!Qe(t)||!Qe(e))throw new Error("Integers expected in function bitOr");return t|e}Iw.signature=Sf;function Pw(t,e){if(!Qe(t)||!Qe(e))throw new Error("Integers expected in function bitXor");return t^e}Pw.signature=Sf;function Bw(t,e){if(!Qe(t)||!Qe(e))throw new Error("Integers expected in function leftShift");return t<>e}kw.signature=Sf;function $w(t,e){if(!Qe(t)||!Qe(e))throw new Error("Integers expected in function rightLogShift");return t>>>e}$w.signature=Sf;function Wa(t,e){if(e>1;return Wa(t,r)*Wa(r+1,e)}function Ow(t,e){if(!Qe(t)||t<0)throw new TypeError("Positive integer value expected in function combinations");if(!Qe(e)||e<0)throw new TypeError("Positive integer value expected in function combinations");if(e>t)throw new TypeError("k must be less than or equal to n");for(var r=t-e,n=1,i=e171?1/0:Wa(1,t-1);if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*rm(1-t));if(t>=171.35)return 1/0;if(t>85){var r=t*t,n=r*t,i=n*t,a=i*t;return Math.sqrt(2*Math.PI/t)*Math.pow(t/Math.E,t)*(1+1/(12*t)+1/(288*r)-139/(51840*n)-571/(2488320*i)+163879/(209018880*a)+5246819/(75246796800*a*t))}--t,e=jl[0];for(var o=1;o=1;n--)r+=KP[n]/(t+n);return Uw+(t+.5)*Math.log(e)-e+Math.log(r)}nm.signature="number";var _n="number",eX="number, number";function tX(t){return Math.acos(t)}tX.signature=_n;function qw(t){return fP(t)}qw.signature=_n;function zw(t){return Math.atan(1/t)}zw.signature=_n;function Hw(t){return isFinite(t)?(Math.log((t+1)/t)+Math.log(t/(t-1)))/2:0}Hw.signature=_n;function Gw(t){return Math.asin(1/t)}Gw.signature=_n;function Ww(t){var e=1/t;return Math.log(e+Math.sqrt(e*e+1))}Ww.signature=_n;function Yw(t){return Math.acos(1/t)}Yw.signature=_n;function jw(t){var e=1/t,r=Math.sqrt(e*e-1);return Math.log(r+e)}jw.signature=_n;function rX(t){return Math.asin(t)}rX.signature=_n;function Zw(t){return pP(t)}Zw.signature=_n;function nX(t){return Math.atan(t)}nX.signature=_n;function iX(t,e){return Math.atan2(t,e)}iX.signature=eX;function Jw(t){return mP(t)}Jw.signature=_n;function aX(t){return Math.cos(t)}aX.signature=_n;function oX(t){return Ig(t)}oX.signature=_n;function Xw(t){return 1/Math.tan(t)}Xw.signature=_n;function Qw(t){var e=Math.exp(2*t);return(e+1)/(e-1)}Qw.signature=_n;function Kw(t){return 1/Math.sin(t)}Kw.signature=_n;function e_(t){return t===0?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(t)-Math.exp(-t)))*vo(t)}e_.signature=_n;function t_(t){return 1/Math.cos(t)}t_.signature=_n;function r_(t){return 2/(Math.exp(t)+Math.exp(-t))}r_.signature=_n;function sX(t){return Math.sin(t)}sX.signature=_n;function n_(t){return dP(t)}n_.signature=_n;function uX(t){return Math.tan(t)}uX.signature=_n;function lX(t){return Pg(t)}lX.signature=_n;var im="number";function cX(t){return Qe(t)}cX.signature=im;function i_(t){return t<0}i_.signature=im;function a_(t){return t>0}a_.signature=im;function fX(t){return t===0}fX.signature=im;function o_(t){return Number.isNaN(t)}o_.signature=im;function mn(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return t.isNaN()||e.isNaN()?!1:!t.isFinite()||!e.isFinite()?t.eq(e):t.eq(e)?!0:t.minus(e).abs().lte(t.constructor.max(t.constructor.max(t.abs(),e.abs()).mul(r),n))}var eB="isNegative",pX=["typed","config"],s_=M(eB,pX,t=>{var{typed:e,config:r}=t;return e(eB,{number:n=>Kr(n,0,r.relTol,r.absTol)?!1:i_(n),BigNumber:n=>mn(n,new n.constructor(0),r.relTol,r.absTol)?!1:n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n<0n,Fraction:n=>n.s<0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var tB="isNumeric",mX=["typed"],u_=M(tB,mX,t=>{var{typed:e}=t;return e(tB,{"number | BigNumber | bigint | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var rB="hasNumericValue",dX=["typed","isNumeric"],l_=M(rB,dX,t=>{var{typed:e,isNumeric:r}=t;return e(rB,{boolean:()=>!0,string:function(i){return i.trim().length>0&&!isNaN(Number(i))},any:function(i){return r(i)}})});var nB="isPositive",hX=["typed","config"],c_=M(nB,hX,t=>{var{typed:e,config:r}=t;return e(nB,{number:n=>Kr(n,0,r.relTol,r.absTol)?!1:a_(n),BigNumber:n=>mn(n,new n.constructor(0),r.relTol,r.absTol)?!1:!n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n>0n,Fraction:n=>n.s>0n&&n.n>0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var iB="isZero",gX=["typed","equalScalar"],f_=M(iB,gX,t=>{var{typed:e,equalScalar:r}=t;return e(iB,{"number | BigNumber | Complex | Fraction":n=>r(n,0),bigint:n=>n===0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var aB="isNaN",vX=["typed"],p_=M(aB,vX,t=>{var{typed:e}=t;return e(aB,{number:o_,BigNumber:function(n){return n.isNaN()},bigint:function(n){return!1},Fraction:function(n){return!1},Complex:function(n){return n.isNaN()},Unit:function(n){return Number.isNaN(n.value)},"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var oB="typeOf",yX=["typed"],m_=M(oB,yX,t=>{var{typed:e}=t;return e(oB,{any:fr})});function sB(t,e,r,n){return Kr(t.re,e.re,r,n)&&Kr(t.im,e.im,r,n)}var _o=M("compareUnits",["typed"],t=>{var{typed:e}=t;return{"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(!n.equalBase(i))throw new Error("Cannot compare units with different base");return e.find(r,[n.valueType(),i.valueType()])(n.value,i.value)})}});var Kg="equalScalar",xX=["typed","config"],d_=M(Kg,xX,t=>{var{typed:e,config:r}=t,n=_o({typed:e});return e(Kg,{"boolean, boolean":function(a,o){return a===o},"number, number":function(a,o){return Kr(a,o,r.relTol,r.absTol)},"BigNumber, BigNumber":function(a,o){return a.eq(o)||mn(a,o,r.relTol,r.absTol)},"bigint, bigint":function(a,o){return a===o},"Fraction, Fraction":function(a,o){return a.equals(o)},"Complex, Complex":function(a,o){return sB(a,o,r.relTol,r.absTol)}},n)}),JCe=M(Kg,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Kg,{"number, number":function(i,a){return Kr(i,a,r.relTol,r.absTol)}})});var bX="SparseMatrix",wX=["typed","equalScalar","Matrix"],h_=M(bX,wX,t=>{var{typed:e,equalScalar:r,Matrix:n}=t;function i(h,x){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(x&&!bn(x))throw new Error("Invalid datatype: "+x);if(rt(h))a(this,h,x);else if(h&&vr(h.index)&&vr(h.ptr)&&vr(h.size))this._values=h.values,this._index=h.index,this._ptr=h.ptr,this._size=h.size,this._datatype=x||h.datatype;else if(vr(h))o(this,h,x);else{if(h)throw new TypeError("Unsupported type of data ("+fr(h)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=x}}function a(h,x,b){x.type==="SparseMatrix"?(h._values=x._values?yt(x._values):void 0,h._index=yt(x._index),h._ptr=yt(x._ptr),h._size=yt(x._size),h._datatype=b||x._datatype):o(h,x.valueOf(),b||x._datatype)}function o(h,x,b){h._values=[],h._index=[],h._ptr=[],h._datatype=b;var T=x.length,v=0,A=r,w=0;if(bn(b)&&(A=e.find(r,[b,b])||r,w=e.convert(0,b)),T>0){var y=0;do{h._ptr.push(h._index.length);for(var E=0;E");if(v.length===1){var D=x.dimension(0);D.forEach(function(C,B){Br(C),h.set([C,0],b[B[0]],T)})}else{var _=x.dimension(0),N=x.dimension(1);_.forEach(function(C,B){Br(C),N.forEach(function(R,V){Br(R),h.set([C,R],b[B[0]][V[0]],T)})})}}return h}i.prototype.get=function(h){if(!vr(h))throw new TypeError("Array expected");if(h.length!==this._size.length)throw new Ct(h.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var x=h[0],b=h[1];Br(x,this._size[0]),Br(b,this._size[1]);var T=u(x,this._ptr[b],this._ptr[b+1],this._index);return TA-1||v>w-1)&&(m(this,Math.max(T+1,A),Math.max(v+1,w),b),A=this._size[0],w=this._size[1]),Br(T,A),Br(v,w);var D=u(T,this._ptr[v],this._ptr[v+1],this._index);return DArray.isArray(A)&&A.length===1?A[0]:A);if(T.length!==2)throw new Error("Only two dimensions matrix are supported");T.forEach(function(A){if(!At(A)||!Qe(A)||A<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Dt(T)+")")});var v=b?this.clone():this;return m(v,T[0],T[1],x)};function m(h,x,b,T){var v=T||0,A=r,w=0;bn(h._datatype)&&(A=e.find(r,[h._datatype,h._datatype])||r,w=e.convert(0,h._datatype),v=e.convert(v,h._datatype));var y=!A(v,w),E=h._size[0],D=h._size[1],_,N,C;if(b>D){for(N=D;NE){if(y){var B=0;for(N=0;Nx-1&&(h._values.splice(C,1),h._index.splice(C,1),V++)}h._ptr[N]=h._values.length}return h._size[0]=x,h._size[1]=b,h}i.prototype.reshape=function(h,x){if(!vr(h))throw new TypeError("Array expected");if(h.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");h.forEach(function(O){if(!At(O)||!Qe(O)||O<=-2||O===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Dt(h)+")")});var b=this._size[0]*this._size[1];h=Kp(h,b);var T=h[0]*h[1];if(b!==T)throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var v=x?this.clone():this;if(this._size[0]===h[0]&&this._size[1]===h[1])return v;for(var A=[],w=0;w=x&&P<=b&&C(h._values[L],P-x,B-T)}else{for(var k={},W=R;W "+(this._values?Dt(this._values[E],h):"X")}return v},i.prototype.toString=function(){return Dt(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(h){if(h){if(ft(h)&&(h=h.toNumber()),!At(h)||!Qe(h))throw new TypeError("The parameter k must be an integer number")}else h=0;var x=h>0?h:0,b=h<0?-h:0,T=this._size[0],v=this._size[1],A=Math.min(T-b,v-x),w=[],y=[],E=[];E[0]=0;for(var D=x;D0?b:0,E=b<0?-b:0,D=h[0],_=h[1],N=Math.min(D-E,_-y),C;if(vr(x)){if(x.length!==N)throw new Error("Invalid value array length");C=function(X){return x[X]}}else if(rt(x)){var B=x.size();if(B.length!==1||B[0]!==N)throw new Error("Invalid matrix length");C=function(X){return x.get([X])}}else C=function(){return x};for(var R=[],V=[],L=[],P=0;P<_;P++){L.push(R.length);var k=P-y;if(k>=0&&k=E||v[_]!==x)){var C=T?T[D]:void 0;v.splice(_,0,x),T&&T.splice(_,0,C),v.splice(_<=D?D+1:D,1),T&&T.splice(_<=D?D+1:D,1);continue}if(_=E||v[D]!==h)){var B=T?T[_]:void 0;v.splice(D,0,h),T&&T.splice(D,0,B),v.splice(D<=_?_+1:_,1),T&&T.splice(D<=_?_+1:_,1)}}},i},{isClass:!0});var _X="number",AX=["typed"];function SX(t){var e=t.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/);if(e){var r={"0b":2,"0o":8,"0x":16}[e[1]],n=e[2],i=e[3];return{input:t,radix:r,integerPart:n,fractionalPart:i}}else return null}function EX(t){for(var e=parseInt(t.integerPart,t.radix),r=0,n=0;n{var{typed:e}=t,r=e("number",{"":function(){return 0},number:function(i){return i},string:function(i){if(i==="NaN")return NaN;var a=SX(i);if(a)return EX(a);var o=0,s=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);s&&(o=Number(s[2]),i=s[1]);var l=Number(i);if(isNaN(l))throw new SyntaxError('String "'+i+'" is not a valid number');if(s){if(l>2**o-1)throw new SyntaxError('String "'.concat(i,'" is out of range'));l>=2**(o-1)&&(l=l-2**o)}return l},BigNumber:function(i){return i.toNumber()},bigint:function(i){return Number(i)},Fraction:function(i){return i.valueOf()},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),null:function(i){return 0},"Unit, string | Unit":function(i,a){return i.toNumber(a)},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))});return r.fromJSON=function(n){return parseFloat(n.value)},r});var TX="bigint",DX=["typed"],v_=M(TX,DX,t=>{var{typed:e}=t,r=e("bigint",{"":function(){return 0n},bigint:function(i){return i},number:function(i){return BigInt(i.toFixed())},BigNumber:function(i){return BigInt(i.round().toString())},Fraction:function(i){return BigInt(i.valueOf().toFixed())},"string | boolean":function(i){return BigInt(i)},null:function(i){return 0n},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))});return r.fromJSON=function(n){return BigInt(n.value)},r});var uB="string",MX=["typed"],y_=M(uB,MX,t=>{var{typed:e}=t;return e(uB,{"":function(){return""},number:qo,null:function(n){return"null"},boolean:function(n){return n+""},string:function(n){return n},"Array | Matrix":e.referToSelf(r=>n=>nt(n,r)),any:function(n){return String(n)}})});var lB="boolean",CX=["typed"],x_=M(lB,CX,t=>{var{typed:e}=t;return e(lB,{"":function(){return!1},boolean:function(n){return n},number:function(n){return!!n},null:function(n){return!1},BigNumber:function(n){return!n.isZero()},string:function(n){var i=n.toLowerCase();if(i==="true")return!0;if(i==="false")return!1;var a=Number(n);if(n!==""&&!isNaN(a))return!!a;throw new Error('Cannot convert "'+n+'" to a boolean')},"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var NX="bignumber",FX=["typed","BigNumber"],b_=M(NX,FX,t=>{var{typed:e,BigNumber:r}=t;return e("bignumber",{"":function(){return new r(0)},number:function(i){return new r(i+"")},string:function(i){var a=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(a){var o=a[2],s=r(a[1]),l=new r(2).pow(Number(o));if(s.gt(l.sub(1)))throw new SyntaxError('String "'.concat(i,'" is out of range'));var u=new r(2).pow(Number(o)-1);return s.gte(u)?s.sub(l):s}return new r(i)},BigNumber:function(i){return i},bigint:function(i){return new r(i.toString())},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),Fraction:function(i){return new r(String(i.n)).div(String(i.d)).times(String(i.s))},null:function(i){return new r(0)},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var IX="complex",PX=["typed","Complex"],w_=M(IX,PX,t=>{var{typed:e,Complex:r}=t;return e("complex",{"":function(){return r.ZERO},number:function(i){return new r(i,0)},"number, number":function(i,a){return new r(i,a)},"BigNumber, BigNumber":function(i,a){return new r(i.toNumber(),a.toNumber())},Fraction:function(i){return new r(i.valueOf(),0)},Complex:function(i){return i.clone()},string:function(i){return r(i)},null:function(i){return r(0)},Object:function(i){if("re"in i&&"im"in i)return new r(i.re,i.im);if("r"in i&&"phi"in i||"abs"in i&&"arg"in i)return new r(i);throw new Error("Expected object with properties (re and im) or (r and phi) or (abs and arg)")},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var BX="fraction",kX=["typed","Fraction"],__=M(BX,kX,t=>{var{typed:e,Fraction:r}=t;return e("fraction",{number:function(i){if(!isFinite(i)||isNaN(i))throw new Error(i+" cannot be represented as a fraction");return new r(i)},string:function(i){return new r(i)},"number, number":function(i,a){return new r(i,a)},"bigint, bigint":function(i,a){return new r(i,a)},null:function(i){return new r(0)},BigNumber:function(i){return new r(i.toString())},bigint:function(i){return new r(i.toString())},Fraction:function(i){return i},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),Object:function(i){return new r(i)},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var cB="matrix",$X=["typed","Matrix","DenseMatrix","SparseMatrix"],A_=M(cB,$X,t=>{var{typed:e,Matrix:r,DenseMatrix:n,SparseMatrix:i}=t;return e(cB,{"":function(){return a([])},string:function(s){return a([],s)},"string, string":function(s,l){return a([],s,l)},Array:function(s){return a(s)},Matrix:function(s){return a(s,s.storage())},"Array | Matrix, string":a,"Array | Matrix, string, string":a});function a(o,s,l){if(s==="dense"||s==="default"||s===void 0)return new n(o,l);if(s==="sparse")return new i(o,l);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}});var fB="matrixFromFunction",OX=["typed","matrix","isZero"],S_=M(fB,OX,t=>{var{typed:e,matrix:r,isZero:n}=t;return e(fB,{"Array | Matrix, function, string, string":function(o,s,l,u){return i(o,s,l,u)},"Array | Matrix, function, string":function(o,s,l){return i(o,s,l)},"Matrix, function":function(o,s){return i(o,s,"dense")},"Array, function":function(o,s){return i(o,s,"dense").toArray()},"Array | Matrix, string, function":function(o,s,l){return i(o,l,s)},"Array | Matrix, string, string, function":function(o,s,l,u){return i(o,u,s,l)}});function i(a,o,s,l){var u;return l!==void 0?u=r(s,l):u=r(s),u.resize(a),u.forEach(function(c,f){var m=o(f);n(m)||u.set(f,m)}),u}});var pB="matrixFromRows",RX=["typed","matrix","flatten","size"],E_=M(pB,RX,t=>{var{typed:e,matrix:r,flatten:n,size:i}=t;return e(pB,{"...Array":function(l){return a(l)},"...Matrix":function(l){return r(a(l.map(u=>u.toArray())))}});function a(s){if(s.length===0)throw new TypeError("At least one row is needed to construct a matrix.");var l=o(s[0]),u=[];for(var c of s){var f=o(c);if(f!==l)throw new TypeError("The vectors had different length: "+(l|0)+" \u2260 "+(f|0));u.push(n(c))}return u}function o(s){var l=i(s);if(l.length===1)return l[0];if(l.length===2){if(l[0]===1)return l[1];if(l[1]===1)return l[0];throw new TypeError("At least one of the arguments is not a vector.")}else throw new TypeError("Only one- or two-dimensional vectors are supported.")}});var mB="matrixFromColumns",LX=["typed","matrix","flatten","size"],T_=M(mB,LX,t=>{var{typed:e,matrix:r,flatten:n,size:i}=t;return e(mB,{"...Array":function(l){return a(l)},"...Matrix":function(l){return r(a(l.map(u=>u.toArray())))}});function a(s){if(s.length===0)throw new TypeError("At least one column is needed to construct a matrix.");for(var l=o(s[0]),u=[],c=0;c{var{typed:e}=t;return e(dB,{"Unit, Array":function(n,i){return n.splitUnit(i)}})});var hB="unaryMinus",UX=["typed"],M_=M(hB,UX,t=>{var{typed:e}=t;return e(hB,{number:yw,"Complex | BigNumber | Fraction":r=>r.neg(),bigint:r=>-r,Unit:e.referToSelf(r=>n=>{var i=n.clone();return i.value=e.find(r,i.valueType())(n.value),i}),"Array | Matrix":e.referToSelf(r=>n=>nt(n,r,!0))})});var gB="unaryPlus",qX=["typed","config","numeric"],C_=M(gB,qX,t=>{var{typed:e,config:r,numeric:n}=t;return e(gB,{number:xw,Complex:function(a){return a},BigNumber:function(a){return a},bigint:function(a){return a},Fraction:function(a){return a},Unit:function(a){return a.clone()},"Array | Matrix":e.referToSelf(i=>a=>nt(a,i,!0)),boolean:function(a){return n(a?1:0,r.number)},string:function(a){return n(a,Bi(a,r))}})});var vB="abs",zX=["typed"],N_=M(vB,zX,t=>{var{typed:e}=t;return e(vB,{number:dw,"Complex | BigNumber | Fraction | Unit":r=>r.abs(),bigint:r=>r<0n?-r:r,"Array | Matrix":e.referToSelf(r=>n=>nt(n,r,!0))})});var yB="apply",HX=["typed","isInteger"],Zl=M(yB,HX,t=>{var{typed:e,isInteger:r}=t;return e(yB,{"Array | Matrix, number | BigNumber, function":function(i,a,o){if(!r(a))throw new TypeError("Integer number expected for dimension");var s=Array.isArray(i)?pt(i):i.size();if(a<0||a>=s.length)throw new Si(a,s.length);return rt(i)?i.create(ev(i.valueOf(),a,o),i.datatype()):ev(i,a,o)}})});function ev(t,e,r){var n,i,a;if(e<=0)if(Array.isArray(t[0])){for(a=GX(t),i=[],n=0;n{var{typed:e}=t;return e(xB,{"number, number":hw,"Complex, Complex":function(n,i){return n.add(i)},"BigNumber, BigNumber":function(n,i){return n.plus(i)},"bigint, bigint":function(n,i){return n+i},"Fraction, Fraction":function(n,i){return n.add(i)},"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var a=n.clone();return a.value=e.find(r,[a.valueType(),i.valueType()])(a.value,i.value),a.fixPrefix=!1,a})})});var bB="subtractScalar",YX=["typed"],I_=M(bB,YX,t=>{var{typed:e}=t;return e(bB,{"number, number":gw,"Complex, Complex":function(n,i){return n.sub(i)},"BigNumber, BigNumber":function(n,i){return n.minus(i)},"bigint, bigint":function(n,i){return n-i},"Fraction, Fraction":function(n,i){return n.sub(i)},"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var a=n.clone();return a.value=e.find(r,[a.valueType(),i.valueType()])(a.value,i.value),a.fixPrefix=!1,a})})});var wB="cbrt",jX=["config","typed","isNegative","unaryMinus","matrix","Complex","BigNumber","Fraction"],P_=M(wB,jX,t=>{var{config:e,typed:r,isNegative:n,unaryMinus:i,matrix:a,Complex:o,BigNumber:s,Fraction:l}=t;return r(wB,{number:_f,Complex:u,"Complex, boolean":u,BigNumber:function(m){return m.cbrt()},Unit:c});function u(f,m){var p=f.arg()/3,d=f.abs(),h=new o(_f(d),0).mul(new o(0,p).exp());if(m){var x=[h,new o(_f(d),0).mul(new o(0,p+Math.PI*2/3).exp()),new o(_f(d),0).mul(new o(0,p-Math.PI*2/3).exp())];return e.matrix==="Array"?x:a(x)}else return h}function c(f){if(f.value&&ra(f.value)){var m=f.clone();return m.value=1,m=m.pow(1/3),m.value=u(f.value),m}else{var p=n(f.value);p&&(f.value=i(f.value));var d;ft(f.value)?d=new s(1).div(3):Js(f.value)?d=new l(1,3):d=1/3;var h=f.pow(d);return p&&(h.value=i(h.value)),h}}});var ZX="matAlgo11xS0s",JX=["typed","equalScalar"],Pr=M(ZX,JX,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,x=r,b=0,T=o;typeof m=="string"&&(h=m,x=e.find(r,[h,h]),b=e.convert(0,h),a=e.convert(a,h),T=e.find(o,[h,h]));for(var v=[],A=[],w=[],y=0;y{var{typed:e,DenseMatrix:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,x=o;typeof m=="string"&&(h=m,a=e.convert(a,h),x=e.find(o,[h,h]));for(var b=[],T=[],v=[],A=0;A{var{typed:e}=t;return function(i,a,o,s){var l=i._data,u=i._size,c=i._datatype,f,m=o;typeof c=="string"&&(f=c,a=e.convert(a,f),m=e.find(o,[f,f]));var p=u.length>0?r(m,0,u,u[0],l,a,s):[];return i.createDenseMatrix({data:p,size:yt(u),datatype:f})};function r(n,i,a,o,s,l,u){var c=[];if(i===a.length-1)for(var f=0;f{var{typed:e,config:r,round:n}=t;return e(B_,{number:function(a){return Kr(a,n(a),r.relTol,r.absTol)?n(a):Math.ceil(a)},"number, number":function(a,o){if(Kr(a,n(a,o),r.relTol,r.absTol))return n(a,o);var[s,l]="".concat(a,"e").split("e"),u=Math.ceil(Number("".concat(s,"e").concat(Number(l)+o)));return[s,l]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(l)-o))}})}),k_=M(B_,tQ,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}=t,l=Pr({typed:e,equalScalar:a}),u=wr({typed:e,DenseMatrix:s}),c=Fn({typed:e}),f=rQ({typed:e,config:r,round:n});return e("ceil",{number:f.signatures.number,"number,number":f.signatures["number,number"],Complex:function(p){return p.ceil()},"Complex, number":function(p,d){return p.ceil(d)},"Complex, BigNumber":function(p,d){return p.ceil(d.toNumber())},BigNumber:function(p){return mn(p,n(p),r.relTol,r.absTol)?n(p):p.ceil()},"BigNumber, BigNumber":function(p,d){return mn(p,n(p,d),r.relTol,r.absTol)?n(p,d):p.toDecimalPlaces(d.toNumber(),ql.ROUND_CEIL)},Fraction:function(p){return p.ceil()},"Fraction, number":function(p,d){return p.ceil(d)},"Fraction, BigNumber":function(p,d){return p.ceil(d.toNumber())},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var x=p.toNumeric(h);return h.multiply(m(x,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>nt(p,x=>m(x,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>nt(p,m,!0)),"Array, number | BigNumber":e.referToSelf(m=>(p,d)=>nt(p,h=>m(h,d),!0)),"SparseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>l(p,d,m,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>c(p,d,m,!1)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(m=>(p,d)=>c(i(d),p,m,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(m=>(p,d)=>a(p,0)?o(d.size(),d.storage()):d.storage()==="dense"?c(d,p,m,!0):u(d,p,m,!0))})});var _B="cube",nQ=["typed"],$_=M(_B,nQ,t=>{var{typed:e}=t;return e(_B,{number:bw,Complex:function(n){return n.mul(n).mul(n)},BigNumber:function(n){return n.times(n).times(n)},bigint:function(n){return n*n*n},Fraction:function(n){return n.pow(3)},Unit:function(n){return n.pow(3)}})});var AB="exp",iQ=["typed"],O_=M(AB,iQ,t=>{var{typed:e}=t;return e(AB,{number:ww,Complex:function(n){return n.exp()},BigNumber:function(n){return n.exp()}})});var SB="expm1",aQ=["typed","Complex"],R_=M(SB,aQ,t=>{var{typed:e,Complex:r}=t;return e(SB,{number:_w,Complex:function(i){var a=Math.exp(i.re);return new r(a*Math.cos(i.im)-1,a*Math.sin(i.im))},BigNumber:function(i){return i.exp().minus(1)}})});var L_="fix",oQ=["typed","Complex","matrix","ceil","floor","equalScalar","zeros","DenseMatrix"],sQ=M(L_,["typed","ceil","floor"],t=>{var{typed:e,ceil:r,floor:n}=t;return e(L_,{number:function(a){return a>0?n(a):r(a)},"number, number":function(a,o){return a>0?n(a,o):r(a,o)}})}),V_=M(L_,oQ,t=>{var{typed:e,Complex:r,matrix:n,ceil:i,floor:a,equalScalar:o,zeros:s,DenseMatrix:l}=t,u=wr({typed:e,DenseMatrix:l}),c=Fn({typed:e}),f=sQ({typed:e,ceil:i,floor:a});return e("fix",{number:f.signatures.number,"number, number | BigNumber":f.signatures["number,number"],Complex:function(p){return new r(p.re>0?Math.floor(p.re):Math.ceil(p.re),p.im>0?Math.floor(p.im):Math.ceil(p.im))},"Complex, number":function(p,d){return new r(p.re>0?a(p.re,d):i(p.re,d),p.im>0?a(p.im,d):i(p.im,d))},"Complex, BigNumber":function(p,d){var h=d.toNumber();return new r(p.re>0?a(p.re,h):i(p.re,h),p.im>0?a(p.im,h):i(p.im,h))},BigNumber:function(p){return p.isNegative()?i(p):a(p)},"BigNumber, number | BigNumber":function(p,d){return p.isNegative()?i(p,d):a(p,d)},Fraction:function(p){return p.s<0n?p.ceil():p.floor()},"Fraction, number | BigNumber":function(p,d){return p.s<0n?i(p,d):a(p,d)},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var x=p.toNumeric(h);return h.multiply(m(x,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>nt(p,x=>m(x,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>nt(p,m,!0)),"Array | Matrix, number | BigNumber":e.referToSelf(m=>(p,d)=>nt(p,h=>m(h,d),!0)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(m=>(p,d)=>c(n(d),p,m,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(m=>(p,d)=>o(p,0)?s(d.size(),d.storage()):d.storage()==="dense"?c(d,p,m,!0):u(d,p,m,!0))})});var U_="floor",uQ=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix"],lQ=M(U_,["typed","config","round"],t=>{var{typed:e,config:r,round:n}=t;return e(U_,{number:function(a){return Kr(a,n(a),r.relTol,r.absTol)?n(a):Math.floor(a)},"number, number":function(a,o){if(Kr(a,n(a,o),r.relTol,r.absTol))return n(a,o);var[s,l]="".concat(a,"e").split("e"),u=Math.floor(Number("".concat(s,"e").concat(Number(l)+o)));return[s,l]="".concat(u,"e").split("e"),Number("".concat(s,"e").concat(Number(l)-o))}})}),am=M(U_,uQ,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}=t,l=Pr({typed:e,equalScalar:a}),u=wr({typed:e,DenseMatrix:s}),c=Fn({typed:e}),f=lQ({typed:e,config:r,round:n});return e("floor",{number:f.signatures.number,"number,number":f.signatures["number,number"],Complex:function(p){return p.floor()},"Complex, number":function(p,d){return p.floor(d)},"Complex, BigNumber":function(p,d){return p.floor(d.toNumber())},BigNumber:function(p){return mn(p,n(p),r.relTol,r.absTol)?n(p):p.floor()},"BigNumber, BigNumber":function(p,d){return mn(p,n(p,d),r.relTol,r.absTol)?n(p,d):p.toDecimalPlaces(d.toNumber(),ql.ROUND_FLOOR)},Fraction:function(p){return p.floor()},"Fraction, number":function(p,d){return p.floor(d)},"Fraction, BigNumber":function(p,d){return p.floor(d.toNumber())},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var x=p.toNumeric(h);return h.multiply(m(x,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>nt(p,x=>m(x,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>nt(p,m,!0)),"Array, number | BigNumber":e.referToSelf(m=>(p,d)=>nt(p,h=>m(h,d),!0)),"SparseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>l(p,d,m,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>c(p,d,m,!1)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(m=>(p,d)=>c(i(d),p,m,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(m=>(p,d)=>a(p,0)?o(d.size(),d.storage()):d.storage()==="dense"?c(d,p,m,!0):u(d,p,m,!0))})});var cQ="matAlgo02xDS0",fQ=["typed","equalScalar"],In=M(cQ,fQ,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o,s){var l=i._data,u=i._size,c=i._datatype||i.getDataType(),f=a._values,m=a._index,p=a._ptr,d=a._size,h=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(u.length!==d.length)throw new Ct(u.length,d.length);if(u[0]!==d[0]||u[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+d+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var x=u[0],b=u[1],T,v=r,A=0,w=o;typeof c=="string"&&c===h&&c!=="mixed"&&(T=c,v=e.find(r,[T,T]),A=e.convert(0,T),w=e.find(o,[T,T]));for(var y=[],E=[],D=[],_=0;_{var{typed:e}=t;return function(n,i,a,o){var s=n._data,l=n._size,u=n._datatype||n.getDataType(),c=i._values,f=i._index,m=i._ptr,p=i._size,d=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(l.length!==p.length)throw new Ct(l.length,p.length);if(l[0]!==p[0]||l[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+p+")");if(!c)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var h=l[0],x=l[1],b,T=0,v=a;typeof u=="string"&&u===d&&u!=="mixed"&&(b=u,T=e.convert(0,b),v=e.find(a,[b,b]));for(var A=[],w=0;w{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,x=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Ct(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var b=c[0],T=c[1],v,A=r,w=0,y=o;typeof f=="string"&&f===x&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),y=e.find(o,[v,v]));var E=s&&m?[]:void 0,D=[],_=[],N=E?[]:void 0,C=E?[]:void 0,B=[],R=[],V,L,P,k;for(L=0;L{var{typed:e}=t;return function(i,a,o){var s=i._data,l=i._size,u=i._datatype,c=a._data,f=a._size,m=a._datatype,p=[];if(l.length!==f.length)throw new Ct(l.length,f.length);for(var d=0;d0?r(x,0,p,p[0],s,c):[];return i.createDenseMatrix({data:b,size:p,datatype:h})};function r(n,i,a,o,s,l){var u=[];if(i===a.length-1)for(var c=0;cyQ(n,r))}function yQ(t,e){return ba(t.size(),e)?t:t.create(hs(t.valueOf(),e),t.datatype())}var xQ="matrixAlgorithmSuite",bQ=["typed","matrix"],Pt=M(xQ,bQ,t=>{var{typed:e,matrix:r}=t,n=EB({typed:e}),i=Fn({typed:e});return function(o){var s=o.elop,l=o.SD||o.DS,u;s?(u={"DenseMatrix, DenseMatrix":(p,d)=>n(...ni(p,d),s),"Array, Array":(p,d)=>n(...ni(r(p),r(d)),s).valueOf(),"Array, DenseMatrix":(p,d)=>n(...ni(r(p),d),s),"DenseMatrix, Array":(p,d)=>n(...ni(p,r(d)),s)},o.SS&&(u["SparseMatrix, SparseMatrix"]=(p,d)=>o.SS(...ni(p,d),s,!1)),o.DS&&(u["DenseMatrix, SparseMatrix"]=(p,d)=>o.DS(...ni(p,d),s,!1),u["Array, SparseMatrix"]=(p,d)=>o.DS(...ni(r(p),d),s,!1)),l&&(u["SparseMatrix, DenseMatrix"]=(p,d)=>l(...ni(d,p),s,!0),u["SparseMatrix, Array"]=(p,d)=>l(...ni(r(d),p),s,!0))):(u={"DenseMatrix, DenseMatrix":e.referToSelf(p=>(d,h)=>n(...ni(d,h),p)),"Array, Array":e.referToSelf(p=>(d,h)=>n(...ni(r(d),r(h)),p).valueOf()),"Array, DenseMatrix":e.referToSelf(p=>(d,h)=>n(...ni(r(d),h),p)),"DenseMatrix, Array":e.referToSelf(p=>(d,h)=>n(...ni(d,r(h)),p))},o.SS&&(u["SparseMatrix, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.SS(...ni(d,h),p,!1))),o.DS&&(u["DenseMatrix, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.DS(...ni(d,h),p,!1)),u["Array, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.DS(...ni(r(d),h),p,!1))),l&&(u["SparseMatrix, DenseMatrix"]=e.referToSelf(p=>(d,h)=>l(...ni(h,d),p,!0)),u["SparseMatrix, Array"]=e.referToSelf(p=>(d,h)=>l(...ni(r(h),d),p,!0))));var c=o.scalar||"any",f=o.Ds||o.Ss;f&&(s?(u["DenseMatrix,"+c]=(p,d)=>i(p,d,s,!1),u[c+", DenseMatrix"]=(p,d)=>i(d,p,s,!0),u["Array,"+c]=(p,d)=>i(r(p),d,s,!1).valueOf(),u[c+", Array"]=(p,d)=>i(r(d),p,s,!0).valueOf()):(u["DenseMatrix,"+c]=e.referToSelf(p=>(d,h)=>i(d,h,p,!1)),u[c+", DenseMatrix"]=e.referToSelf(p=>(d,h)=>i(h,d,p,!0)),u["Array,"+c]=e.referToSelf(p=>(d,h)=>i(r(d),h,p,!1).valueOf()),u[c+", Array"]=e.referToSelf(p=>(d,h)=>i(r(h),d,p,!0).valueOf())));var m=o.sS!==void 0?o.sS:o.Ss;return s?(o.Ss&&(u["SparseMatrix,"+c]=(p,d)=>o.Ss(p,d,s,!1)),m&&(u[c+", SparseMatrix"]=(p,d)=>m(d,p,s,!0))):(o.Ss&&(u["SparseMatrix,"+c]=e.referToSelf(p=>(d,h)=>o.Ss(d,h,p,!1))),m&&(u[c+", SparseMatrix"]=e.referToSelf(p=>(d,h)=>m(h,d,p,!0)))),s&&s.signatures&&Cg(u,s.signatures),u}});var TB="mod",wQ=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix","concat"],om=M(TB,wQ,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s,concat:l}=t,u=am({typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}),c=In({typed:e,equalScalar:a}),f=jr({typed:e}),m=Hu({typed:e,equalScalar:a}),p=Pr({typed:e,equalScalar:a}),d=wr({typed:e,DenseMatrix:s}),h=Pt({typed:e,matrix:i,concat:l});return e(TB,{"number, number":x,"BigNumber, BigNumber":function(T,v){return v.isZero()?T:T.sub(v.mul(u(T.div(v))))},"bigint, bigint":function(T,v){if(v===0n)return T;if(T<0){var A=T%v;return A===0n?A:A+v}return T%v},"Fraction, Fraction":function(T,v){return v.equals(0)?T:T.sub(v.mul(u(T.div(v))))}},h({SS:m,DS:f,SD:c,Ss:p,sS:d}));function x(b,T){return T===0?b:b-T*u(b/T)}});var _Q="matAlgo01xDSid",AQ=["typed"],Ri=M(_Q,AQ,t=>{var{typed:e}=t;return function(n,i,a,o){var s=n._data,l=n._size,u=n._datatype||n.getDataType(),c=i._values,f=i._index,m=i._ptr,p=i._size,d=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(l.length!==p.length)throw new Ct(l.length,p.length);if(l[0]!==p[0]||l[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+p+")");if(!c)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var h=l[0],x=l[1],b=typeof u=="string"&&u!=="mixed"&&u===d?u:void 0,T=b?e.find(a,[b,b]):a,v,A,w=[];for(v=0;v{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,x=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Ct(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var b=c[0],T=c[1],v,A=r,w=0,y=o;typeof f=="string"&&f===x&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),y=e.find(o,[v,v]));var E=s&&m?[]:void 0,D=[],_=[],N=s&&m?[]:void 0,C=s&&m?[]:void 0,B=[],R=[],V,L,P,k,W;for(L=0;L{var{typed:e,DenseMatrix:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,x=o;typeof m=="string"&&(h=m,a=e.convert(a,h),x=e.find(o,[h,h]));for(var b=[],T=[],v=[],A=0;AArray.isArray(e))}var z_=M(DB,MQ,t=>{var{typed:e,matrix:r,config:n,round:i,equalScalar:a,zeros:o,BigNumber:s,DenseMatrix:l,concat:u}=t,c=om({typed:e,config:n,round:i,matrix:r,equalScalar:a,zeros:o,DenseMatrix:l,concat:u}),f=Ri({typed:e}),m=Ef({typed:e,equalScalar:a}),p=Sa({typed:e,DenseMatrix:l}),d=Pt({typed:e,matrix:r,concat:u});return e(DB,{"number, number":h,"BigNumber, BigNumber":x,"Fraction, Fraction":(b,T)=>b.gcd(T)},d({SS:m,DS:f,Ss:p}),{[CQ]:e.referToSelf(b=>(T,v,A)=>{for(var w=b(T,v),y=0;yT=>{if(T.length===1&&Array.isArray(T[0])&&MB(T[0]))return b(...T[0]);if(MB(T))return b(...T);throw new tu("gcd() supports only 1d matrices!")}),Matrix:e.referToSelf(b=>T=>b(T.toArray()))});function h(b,T){if(!Qe(b)||!Qe(T))throw new Error("Parameters in function gcd must be integer numbers");for(var v;T!==0;)v=c(b,T),b=T,T=v;return b<0?-b:b}function x(b,T){if(!b.isInt()||!T.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var v=new s(0);!T.isZero();){var A=c(b,T);b=T,T=A}return b.lt(v)?b.neg():b}});var NQ="matAlgo06xS0S0",FQ=["typed","equalScalar"],Gu=M(NQ,FQ,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._size,u=i._datatype||i._data===void 0?i._datatype:i.getDataType(),c=a._values,f=a._size,m=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(l.length!==f.length)throw new Ct(l.length,f.length);if(l[0]!==f[0]||l[1]!==f[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+f+")");var p=l[0],d=l[1],h,x=r,b=0,T=o;typeof u=="string"&&u===m&&u!=="mixed"&&(h=u,x=e.find(r,[h,h]),b=e.convert(0,h),T=e.find(o,[h,h]));for(var v=s&&c?[]:void 0,A=[],w=[],y=v?[]:void 0,E=[],D=[],_=0;_{var{typed:e,matrix:r,equalScalar:n,concat:i}=t,a=In({typed:e,equalScalar:n}),o=Gu({typed:e,equalScalar:n}),s=Pr({typed:e,equalScalar:n}),l=Pt({typed:e,matrix:r,concat:i}),u="number | BigNumber | Fraction | Matrix | Array",c={};return c["".concat(u,", ").concat(u,", ...").concat(u)]=e.referToSelf(m=>(p,d,h)=>{for(var x=m(p,d),b=0;bm.lcm(p)},l({SS:o,DS:a,Ss:s}),c);function f(m,p){if(!m.isInt()||!p.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(m.isZero())return m;if(p.isZero())return p;for(var d=m.times(p);!p.isZero();){var h=p;p=m.mod(h),m=h}return d.div(m).abs()}});var NB="log10",PQ=["typed","config","Complex"],G_=M(NB,PQ,t=>{var{typed:e,config:r,Complex:n}=t;return e(NB,{number:function(a){return a>=0||r.predictable?Sw(a):new n(a,0).log().div(Math.LN10)},Complex:function(a){return new n(a).log().div(Math.LN10)},BigNumber:function(a){return!a.isNegative()||r.predictable?a.log():new n(a.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":e.referToSelf(i=>a=>nt(a,i))})});var FB="log2",BQ=["typed","config","Complex"],W_=M(FB,BQ,t=>{var{typed:e,config:r,Complex:n}=t;return e(FB,{number:function(o){return o>=0||r.predictable?Ew(o):i(new n(o,0))},Complex:i,BigNumber:function(o){return!o.isNegative()||r.predictable?o.log(2):i(new n(o.toNumber(),0))},"Array | Matrix":e.referToSelf(a=>o=>nt(o,a))});function i(a){var o=Math.sqrt(a.re*a.re+a.im*a.im);return new n(Math.log2?Math.log2(o):Math.log(o)/Math.LN2,Math.atan2(a.im,a.re)/Math.LN2)}});var kQ="multiplyScalar",$Q=["typed"],Y_=M(kQ,$Q,t=>{var{typed:e}=t;return e("multiplyScalar",{"number, number":vw,"Complex, Complex":function(n,i){return n.mul(i)},"BigNumber, BigNumber":function(n,i){return n.times(i)},"bigint, bigint":function(n,i){return n*i},"Fraction, Fraction":function(n,i){return n.mul(i)},"number | Fraction | BigNumber | Complex, Unit":(r,n)=>n.multiply(r),"Unit, number | Fraction | BigNumber | Complex | Unit":(r,n)=>r.multiply(n)})});var IB="multiply",OQ=["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],j_=M(IB,OQ,t=>{var{typed:e,matrix:r,addScalar:n,multiplyScalar:i,equalScalar:a,dot:o}=t,s=Pr({typed:e,equalScalar:a}),l=Fn({typed:e});function u(w,y){switch(w.length){case 1:switch(y.length){case 1:if(w[0]!==y[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(w[0]!==y[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+w[0]+") must match Matrix rows ("+y[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+y.length+" dimensions)")}break;case 2:switch(y.length){case 1:if(w[1]!==y[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+w[1]+") must match Vector length ("+y[0]+")");break;case 2:if(w[1]!==y[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+w[1]+") must match Matrix B rows ("+y[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+y.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+w.length+" dimensions)")}}function c(w,y,E){if(E===0)throw new Error("Cannot multiply two empty vectors");return o(w,y)}function f(w,y){if(y.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return m(w,y)}function m(w,y){var E=w._data,D=w._size,_=w._datatype||w.getDataType(),N=y._data,C=y._size,B=y._datatype||y.getDataType(),R=D[0],V=C[1],L,P=n,k=i;_&&B&&_===B&&typeof _=="string"&&_!=="mixed"&&(L=_,P=e.find(n,[L,L]),k=e.find(i,[L,L]));for(var W=[],O=0;Obe)for(var j=0,ne=0;ne(y,E)=>{u(pt(y),pt(E));var D=w(r(y),r(E));return rt(D)?D.valueOf():D}),"Matrix, Matrix":function(y,E){var D=y.size(),_=E.size();return u(D,_),D.length===1?_.length===1?c(y,E,D[0]):f(y,E):_.length===1?p(y,E):d(y,E)},"Matrix, Array":e.referTo("Matrix,Matrix",w=>(y,E)=>w(y,r(E))),"Array, Matrix":e.referToSelf(w=>(y,E)=>w(r(y,E.storage()),E)),"SparseMatrix, any":function(y,E){return s(y,E,i,!1)},"DenseMatrix, any":function(y,E){return l(y,E,i,!1)},"any, SparseMatrix":function(y,E){return s(E,y,i,!0)},"any, DenseMatrix":function(y,E){return l(E,y,i,!0)},"Array, any":function(y,E){return l(r(y),E,i,!1).valueOf()},"any, Array":function(y,E){return l(r(E),y,i,!0).valueOf()},"any, any":i,"any, any, ...any":e.referToSelf(w=>(y,E,D)=>{for(var _=w(y,E),N=0;N{var{typed:e,matrix:r,equalScalar:n,BigNumber:i,concat:a}=t,o=Ri({typed:e}),s=In({typed:e,equalScalar:n}),l=Gu({typed:e,equalScalar:n}),u=Pr({typed:e,equalScalar:n}),c=Pt({typed:e,matrix:r,concat:a});function f(){throw new Error("Complex number not supported in function nthRoot. Use nthRoots instead.")}return e(PB,{number:Tw,"number, number":Tw,BigNumber:p=>m(p,new i(2)),"BigNumber, BigNumber":m,Complex:f,"Complex, number":f,Array:e.referTo("DenseMatrix,number",p=>d=>p(r(d),2).valueOf()),DenseMatrix:e.referTo("DenseMatrix,number",p=>d=>p(d,2)),SparseMatrix:e.referTo("SparseMatrix,number",p=>d=>p(d,2)),"SparseMatrix, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return l(d,h,p);throw new Error("Root must be non-zero")}),"DenseMatrix, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return o(d,h,p,!1);throw new Error("Root must be non-zero")}),"Array, SparseMatrix":e.referTo("DenseMatrix,SparseMatrix",p=>(d,h)=>p(r(d),h)),"number | BigNumber, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return u(h,d,p,!0);throw new Error("Root must be non-zero")})},c({scalar:"number | BigNumber",SD:s,Ss:u,sS:!1}));function m(p,d){var h=i.precision,x=i.clone({precision:h+2}),b=new i(0),T=new x(1),v=d.isNegative();if(v&&(d=d.neg()),d.isZero())throw new Error("Root must be non-zero");if(p.isNegative()&&!d.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(p.isZero())return v?new x(1/0):0;if(!p.isFinite())return v?b:p;var A=p.abs().pow(T.div(d));return A=p.isNeg()?A.neg():A,new i((v?T.div(A):A).toPrecision(h))}});var BB="sign",LQ=["typed","BigNumber","Fraction","complex"],J_=M(BB,LQ,t=>{var{typed:e,BigNumber:r,complex:n,Fraction:i}=t;return e(BB,{number:Zg,Complex:function(o){return o.im===0?n(Zg(o.re)):o.sign()},BigNumber:function(o){return new r(o.cmp(0))},bigint:function(o){return o>0n?1n:o<0n?-1n:0n},Fraction:function(o){return new i(o.s)},"Array | Matrix":e.referToSelf(a=>o=>nt(o,a,!0)),Unit:e.referToSelf(a=>o=>{if(!o._isDerived()&&o.units[0].unit.offset!==0)throw new TypeError("sign is ambiguous for units with offset");return e.find(a,o.valueType())(o.value)})})});var VQ="sqrt",UQ=["config","typed","Complex"],X_=M(VQ,UQ,t=>{var{config:e,typed:r,Complex:n}=t;return r("sqrt",{number:i,Complex:function(o){return o.sqrt()},BigNumber:function(o){return!o.isNegative()||e.predictable?o.sqrt():i(o.toNumber())},Unit:function(o){return o.pow(.5)}});function i(a){return isNaN(a)?NaN:a>=0||e.predictable?Math.sqrt(a):new n(a,0).sqrt()}});var kB="square",qQ=["typed"],Q_=M(kB,qQ,t=>{var{typed:e}=t;return e(kB,{number:Dw,Complex:function(n){return n.mul(n)},BigNumber:function(n){return n.times(n)},bigint:function(n){return n*n},Fraction:function(n){return n.mul(n)},Unit:function(n){return n.pow(2)}})});var $B="subtract",zQ=["typed","matrix","equalScalar","subtractScalar","unaryMinus","DenseMatrix","concat"],K_=M($B,zQ,t=>{var{typed:e,matrix:r,equalScalar:n,subtractScalar:i,unaryMinus:a,DenseMatrix:o,concat:s}=t,l=Ri({typed:e}),u=jr({typed:e}),c=Hu({typed:e,equalScalar:n}),f=Sa({typed:e,DenseMatrix:o}),m=wr({typed:e,DenseMatrix:o}),p=Pt({typed:e,matrix:r,concat:s});return e($B,{"any, any":i},p({elop:i,SS:c,DS:l,SD:u,Ss:m,sS:f}))});var OB="xgcd",HQ=["typed","config","matrix","BigNumber"],e1=M(OB,HQ,t=>{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e(OB,{"number, number":function(s,l){var u=Mw(s,l);return r.matrix==="Array"?u:n(u)},"BigNumber, BigNumber":a});function a(o,s){var l,u,c,f=new i(0),m=new i(1),p=f,d=m,h=m,x=f;if(!o.isInt()||!s.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!s.isZero();)u=o.div(s).floor(),c=o.mod(s),l=p,p=d.minus(u.times(p)),d=l,l=h,h=x.minus(u.times(h)),x=l,o=s,s=c;var b;return o.lt(f)?b=[o.neg(),d.neg(),x.neg()]:b=[o,o.isZero()?0:d,x],r.matrix==="Array"?b:n(b)}});var RB="invmod",GQ=["typed","config","BigNumber","xgcd","equal","smaller","mod","add","isInteger"],t1=M(RB,GQ,t=>{var{typed:e,config:r,BigNumber:n,xgcd:i,equal:a,smaller:o,mod:s,add:l,isInteger:u}=t;return e(RB,{"number, number":c,"BigNumber, BigNumber":c});function c(f,m){if(!u(f)||!u(m))throw new Error("Parameters in function invmod must be integer numbers");if(f=s(f,m),a(m,0))throw new Error("Divisor must be non zero");var p=i(f,m);p=p.valueOf();var[d,h]=p;return a(d,n(1))?(h=s(h,m),o(h,n(0))&&(h=l(h,m)),h):NaN}});var WQ="matAlgo09xS0Sf",YQ=["typed","equalScalar"],tv=M(WQ,YQ,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,x=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Ct(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var b=c[0],T=c[1],v,A=r,w=0,y=o;typeof f=="string"&&f===x&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),y=e.find(o,[v,v]));var E=s&&m?[]:void 0,D=[],_=[],N=E?[]:void 0,C=[],B,R,V,L,P;for(R=0;R{var{typed:e,matrix:r,equalScalar:n,multiplyScalar:i,concat:a}=t,o=In({typed:e,equalScalar:n}),s=tv({typed:e,equalScalar:n}),l=Pr({typed:e,equalScalar:n}),u=Pt({typed:e,matrix:r,concat:a});return e(LB,u({elop:i,SS:s,DS:o,Ss:l}))});function VB(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitAnd");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);if(t.isZero()||e.eq(-1)||t.eq(e))return t;if(e.isZero()||t.eq(-1))return e;if(!t.isFinite()||!e.isFinite()){if(!t.isFinite()&&!e.isFinite())return t.isNegative()===e.isNegative()?t:new r(0);if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e;if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t}return n1(t,e,function(n,i){return n&i})}function Tf(t){if(t.isFinite()&&!t.isInteger())throw new Error("Integer expected in function bitNot");var e=t.constructor,r=e.precision;e.config({precision:1e9});var n=t.plus(new e(1));return n.s=-n.s||null,e.config({precision:r}),n}function UB(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitOr");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);var n=new r(-1);return t.isZero()||e.eq(n)||t.eq(e)?e:e.isZero()||t.eq(n)?t:!t.isFinite()||!e.isFinite()?!t.isFinite()&&!t.isNegative()&&e.isNegative()||t.isNegative()&&!e.isNegative()&&!e.isFinite()?n:t.isNegative()&&e.isNegative()?t.isFinite()?t:e:t.isFinite()?e:t:n1(t,e,function(i,a){return i|a})}function n1(t,e,r){var n=t.constructor,i,a,o=+(t.s<0),s=+(e.s<0);if(o){i=rv(Tf(t));for(var l=0;l0;)r(c[--p],f[--d])===h&&(x=x.plus(b)),b=b.times(T);for(;d>0;)r(m,f[--d])===h&&(x=x.plus(b)),b=b.times(T);return n.config({precision:v}),h===0&&(x.s=-x.s),x}function rv(t){for(var e=t.d,r=e[0]+"",n=1;n0)if(++s>u)for(s-=u;s--;)l+="0";else s1&&((c[p+1]===null||c[p+1]===void 0)&&(c[p+1]=0),c[p+1]+=c[p]>>1,c[p]&=1)}return c.reverse()}function qB(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitXor");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);if(t.isZero())return e;if(e.isZero())return t;if(t.eq(e))return new r(0);var n=new r(-1);return t.eq(n)?Tf(e):e.eq(n)?Tf(t):!t.isFinite()||!e.isFinite()?!t.isFinite()&&!e.isFinite()?n:new r(t.isNegative()===e.isNegative()?1/0:-1/0):n1(t,e,function(i,a){return i^a})}function zB(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function leftShift");var r=t.constructor;return t.isNaN()||e.isNaN()||e.isNegative()&&!e.isZero()?new r(NaN):t.isZero()||e.isZero()?t:!t.isFinite()&&!e.isFinite()?new r(NaN):e.lt(55)?t.times(Math.pow(2,e.toNumber())+""):t.times(new r(2).pow(e))}function HB(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function rightArithShift");var r=t.constructor;return t.isNaN()||e.isNaN()||e.isNegative()&&!e.isZero()?new r(NaN):t.isZero()||e.isZero()?t:e.isFinite()?e.lt(55)?t.div(Math.pow(2,e.toNumber())+"").floor():t.div(new r(2).pow(e)).floor():t.isNegative()?new r(-1):t.isFinite()?new r(0):new r(NaN)}var GB="bitAnd",ZQ=["typed","matrix","equalScalar","concat"],sm=M(GB,ZQ,t=>{var{typed:e,matrix:r,equalScalar:n,concat:i}=t,a=In({typed:e,equalScalar:n}),o=Gu({typed:e,equalScalar:n}),s=Pr({typed:e,equalScalar:n}),l=Pt({typed:e,matrix:r,concat:i});return e(GB,{"number, number":Nw,"BigNumber, BigNumber":VB,"bigint, bigint":(u,c)=>u&c},l({SS:o,DS:a,Ss:s}))});var WB="bitNot",JQ=["typed"],i1=M(WB,JQ,t=>{var{typed:e}=t;return e(WB,{number:Fw,BigNumber:Tf,bigint:r=>~r,"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var YB="bitOr",XQ=["typed","matrix","equalScalar","DenseMatrix","concat"],um=M(YB,XQ,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=Ri({typed:e}),s=Ef({typed:e,equalScalar:n}),l=Sa({typed:e,DenseMatrix:i}),u=Pt({typed:e,matrix:r,concat:a});return e(YB,{"number, number":Iw,"BigNumber, BigNumber":UB,"bigint, bigint":(c,f)=>c|f},u({SS:s,DS:o,Ss:l}))});var QQ="matAlgo07xSSf",KQ=["typed","SparseMatrix"],Gn=M(QQ,KQ,t=>{var{typed:e,SparseMatrix:r}=t;return function(a,o,s){var l=a._size,u=a._datatype||a._data===void 0?a._datatype:a.getDataType(),c=o._size,f=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(l.length!==c.length)throw new Ct(l.length,c.length);if(l[0]!==c[0]||l[1]!==c[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+c+")");var m=l[0],p=l[1],d,h=0,x=s;typeof u=="string"&&u===f&&u!=="mixed"&&(d=u,h=e.convert(0,d),x=e.find(s,[d,d]));for(var b=[],T=[],v=new Array(p+1).fill(0),A=[],w=[],y=[],E=[],D=0;D{var{typed:e,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:a}=t,o=jr({typed:e}),s=Gn({typed:e,SparseMatrix:a}),l=wr({typed:e,DenseMatrix:n}),u=Pt({typed:e,matrix:r,concat:i});return e(jB,{"number, number":Pw,"BigNumber, BigNumber":qB,"bigint, bigint":(c,f)=>c^f},u({SS:s,DS:o,Ss:l}))});var ZB="arg",tK=["typed"],o1=M(ZB,tK,t=>{var{typed:e}=t;return e(ZB,{number:function(n){return Math.atan2(0,n)},BigNumber:function(n){return n.constructor.atan2(0,n)},Complex:function(n){return n.arg()},"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var JB="conj",rK=["typed"],s1=M(JB,rK,t=>{var{typed:e}=t;return e(JB,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.conjugate(),"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var XB="im",nK=["typed"],u1=M(XB,nK,t=>{var{typed:e}=t;return e(XB,{number:()=>0,"BigNumber | Fraction":r=>r.mul(0),Complex:r=>r.im,"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var QB="re",iK=["typed"],l1=M(QB,iK,t=>{var{typed:e}=t;return e(QB,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.re,"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var KB="not",aK=["typed"],c1=M(KB,aK,t=>{var{typed:e}=t;return e(KB,{"null | undefined":()=>!0,number:Lw,Complex:function(n){return n.re===0&&n.im===0},BigNumber:function(n){return n.isZero()||n.isNaN()},bigint:r=>!r,Unit:e.referToSelf(r=>n=>e.find(r,n.valueType())(n.value)),"Array | Matrix":e.referToSelf(r=>n=>nt(n,r))})});var ek="or",oK=["typed","matrix","equalScalar","DenseMatrix","concat"],lm=M(ek,oK,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=jr({typed:e}),s=Hu({typed:e,equalScalar:n}),l=wr({typed:e,DenseMatrix:i}),u=Pt({typed:e,matrix:r,concat:a});return e(ek,{"number, number":Jg,"Complex, Complex":function(f,m){return f.re!==0||f.im!==0||m.re!==0||m.im!==0},"BigNumber, BigNumber":function(f,m){return!f.isZero()&&!f.isNaN()||!m.isZero()&&!m.isNaN()},"bigint, bigint":Jg,"Unit, Unit":e.referToSelf(c=>(f,m)=>c(f.value||0,m.value||0))},u({SS:s,DS:o,Ss:l}))});var tk="xor",sK=["typed","matrix","DenseMatrix","concat","SparseMatrix"],f1=M(tk,sK,t=>{var{typed:e,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:a}=t,o=jr({typed:e}),s=Gn({typed:e,SparseMatrix:a}),l=wr({typed:e,DenseMatrix:n}),u=Pt({typed:e,matrix:r,concat:i});return e(tk,{"number, number":Xg,"Complex, Complex":function(f,m){return(f.re!==0||f.im!==0)!=(m.re!==0||m.im!==0)},"bigint, bigint":Xg,"BigNumber, BigNumber":function(f,m){return(!f.isZero()&&!f.isNaN())!=(!m.isZero()&&!m.isNaN())},"Unit, Unit":e.referToSelf(c=>(f,m)=>c(f.value||0,m.value||0))},u({SS:s,DS:o,Ss:l}))});var rk="concat",uK=["typed","matrix","isInteger"],cm=M(rk,uK,t=>{var{typed:e,matrix:r,isInteger:n}=t;return e(rk,{"...Array | Matrix | number | BigNumber":function(a){var o,s=a.length,l=-1,u,c=!1,f=[];for(o=0;o0&&l>u)throw new Si(l,u+1)}else{var p=yt(m).valueOf(),d=pt(p);if(f[o]=p,u=l,l=d.length-1,o>0&&l!==u)throw new Ct(u+1,l+1)}}if(f.length===0)throw new SyntaxError("At least one matrix expected");for(var h=f.shift();f.length;)h=uw(h,f.shift(),l);return c?r(h):h},"...string":function(a){return a.join("")}})});var nk="column",lK=["typed","Index","matrix","range"],fm=M(nk,lK,t=>{var{typed:e,Index:r,matrix:n,range:i}=t;return e(nk,{"Matrix, number":a,"Array, number":function(s,l){return a(n(yt(s)),l).valueOf()}});function a(o,s){if(o.size().length!==2)throw new Error("Only two dimensional matrix is supported");Br(s,o.size()[1]);var l=i(0,o.size()[0]),u=new r(l,s),c=o.subset(u);return rt(c)?c:n([[c]])}});var ik="count",cK=["typed","size","prod"],p1=M(ik,cK,t=>{var{typed:e,size:r,prod:n}=t;return e(ik,{string:function(a){return a.length},"Matrix | Array":function(a){return n(r(a))}})});var ak="cross",fK=["typed","matrix","subtract","multiply"],m1=M(ak,fK,t=>{var{typed:e,matrix:r,subtract:n,multiply:i}=t;return e(ak,{"Matrix, Matrix":function(s,l){return r(a(s.toArray(),l.toArray()))},"Matrix, Array":function(s,l){return r(a(s.toArray(),l))},"Array, Matrix":function(s,l){return r(a(s,l.toArray()))},"Array, Array":a});function a(o,s){var l=Math.max(pt(o).length,pt(s).length);o=xf(o),s=xf(s);var u=pt(o),c=pt(s);if(u.length!==1||c.length!==1||u[0]!==3||c[0]!==3)throw new RangeError("Vectors with length 3 expected (Size A = ["+u.join(", ")+"], B = ["+c.join(", ")+"])");var f=[n(i(o[1],s[2]),i(o[2],s[1])),n(i(o[2],s[0]),i(o[0],s[2])),n(i(o[0],s[1]),i(o[1],s[0]))];return l>1?[f]:f}});var ok="diag",pK=["typed","matrix","DenseMatrix","SparseMatrix"],d1=M(ok,pK,t=>{var{typed:e,matrix:r,DenseMatrix:n,SparseMatrix:i}=t;return e(ok,{Array:function(u){return a(u,0,pt(u),null)},"Array, number":function(u,c){return a(u,c,pt(u),null)},"Array, BigNumber":function(u,c){return a(u,c.toNumber(),pt(u),null)},"Array, string":function(u,c){return a(u,0,pt(u),c)},"Array, number, string":function(u,c,f){return a(u,c,pt(u),f)},"Array, BigNumber, string":function(u,c,f){return a(u,c.toNumber(),pt(u),f)},Matrix:function(u){return a(u,0,u.size(),u.storage())},"Matrix, number":function(u,c){return a(u,c,u.size(),u.storage())},"Matrix, BigNumber":function(u,c){return a(u,c.toNumber(),u.size(),u.storage())},"Matrix, string":function(u,c){return a(u,0,u.size(),c)},"Matrix, number, string":function(u,c,f){return a(u,c,u.size(),f)},"Matrix, BigNumber, string":function(u,c,f){return a(u,c.toNumber(),u.size(),f)}});function a(l,u,c,f){if(!Qe(u))throw new TypeError("Second parameter in function diag must be an integer");var m=u>0?u:0,p=u<0?-u:0;switch(c.length){case 1:return o(l,u,f,c[0],p,m);case 2:return s(l,u,f,c,p,m)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function o(l,u,c,f,m,p){var d=[f+m,f+p];if(c&&c!=="sparse"&&c!=="dense")throw new TypeError("Unknown matrix type ".concat(c,'"'));var h=c==="sparse"?i.diagonal(d,l,u):n.diagonal(d,l,u);return c!==null?h:h.valueOf()}function s(l,u,c,f,m,p){if(rt(l)){var d=l.diagonal(u);return c!==null?c!==d.storage()?r(d,c):d:d.valueOf()}for(var h=Math.min(f[0]-m,f[1]-p),x=[],b=0;b{var{typed:e}=t;return e("filter",{"Array, function":sk,"Matrix, function":function(n,i){return n.create(sk(n.valueOf(),i),n.datatype())},"Array, RegExp":ow,"Matrix, RegExp":function(n,i){return n.create(ow(n.valueOf(),i),n.datatype())}})});function sk(t,e){var r=bo(e,t,"filter");return qP(t,function(n,i,a){return r(n,[i],a)})}var uk="flatten",hK=["typed"],h1=M(uk,hK,t=>{var{typed:e}=t;return e(uk,{Array:function(n){return Rt(n)},Matrix:function(n){return n.create(Rt(n.toArray()),n.datatype())}})});var g1="forEach",gK=["typed"],mm=M(g1,gK,t=>{var{typed:e}=t;return e(g1,{"Array, function":vK,"Matrix, function":function(n,i){n.forEach(i)}})});function vK(t,e){tm(t,[],t,bo(e,t,g1))}var lk="getMatrixDataType",yK=["typed"],v1=M(lk,yK,t=>{var{typed:e}=t;return e(lk,{Array:function(n){return Yl(n,fr)},Matrix:function(n){return n.getDataType()}})});var ck="identity",xK=["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],y1=M(ck,xK,t=>{var{typed:e,config:r,matrix:n,BigNumber:i,DenseMatrix:a,SparseMatrix:o}=t;return e(ck,{"":function(){return r.matrix==="Matrix"?n([]):[]},string:function(c){return n(c)},"number | BigNumber":function(c){return l(c,c,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(c,f){return l(c,c,f)},"number | BigNumber, number | BigNumber":function(c,f){return l(c,f,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(c,f,m){return l(c,f,m)},Array:function(c){return s(c)},"Array, string":function(c,f){return s(c,f)},Matrix:function(c){return s(c.valueOf(),c.storage())},"Matrix, string":function(c,f){return s(c.valueOf(),f)}});function s(u,c){switch(u.length){case 0:return c?n(c):[];case 1:return l(u[0],u[0],c);case 2:return l(u[0],u[1],c);default:throw new Error("Vector containing two values expected")}}function l(u,c,f){var m=ft(u)||ft(c)?i:null;if(ft(u)&&(u=u.toNumber()),ft(c)&&(c=c.toNumber()),!Qe(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!Qe(c)||c<1)throw new Error("Parameters in function identity must be positive integers");var p=m?new i(1):1,d=m?new m(0):0,h=[u,c];if(f){if(f==="sparse")return o.diagonal(h,p,0,d);if(f==="dense")return a.diagonal(h,p,0,d);throw new TypeError('Unknown matrix type "'.concat(f,'"'))}for(var x=Wo([],h,d),b=u{var{typed:e,matrix:r,multiplyScalar:n}=t;return e(fk,{"Matrix, Matrix":function(o,s){return r(i(o.toArray(),s.toArray()))},"Matrix, Array":function(o,s){return r(i(o.toArray(),s))},"Array, Matrix":function(o,s){return r(i(o,s.toArray()))},"Array, Array":i});function i(a,o){if(pt(a).length===1&&(a=[a]),pt(o).length===1&&(o=[o]),pt(a).length>2||pt(o).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(a.length)+", y = "+JSON.stringify(o.length)+")");var s=[],l=[];return a.map(function(u){return o.map(function(c){return l=[],s.push(l),u.map(function(f){return c.map(function(m){return l.push(n(f,m))})})})})&&s}});var b1="map",wK=["typed"],dm=M(b1,wK,t=>{var{typed:e}=t;return e(b1,{"Array, function":n,"Matrix, function":function(a,o){return a.map(o)},"Array|Matrix, Array|Matrix, ...Array|Matrix|function":(i,a,o)=>r([i,a,...o.slice(0,o.length-1)],o[o.length-1])});function r(i,a){if(typeof a!="function")throw new Error("Last argument must be a callback function");var o=i[0].isMatrix,s=em(...i.map(A=>A.isMatrix?A.size():pt(A))),l=o?(A,w)=>A.get(w):wf,u=o?i.map(A=>A.isMatrix?A.create(hs(A.toArray(),s),A.datatype()):i[0].create(hs(A.valueOf(),s))):i.map(A=>A.isMatrix?hs(A.toArray(),s):hs(A,s)),c;if(e.isTypedFunction(a)){var f=s.map(()=>0),m=u.map(A=>l(A,f)),p=v(a,m,f,u);c=b(p)}else{var d=i.length,h=T(a,d);c=b(h)}var x=(A,w)=>c([A,...u.slice(1).map(y=>l(y,w))],w);if(o)return u[0].map(x);return n(u[0],x);function b(A){switch(A){case 0:return w=>a(...w);case 1:return(w,y)=>a(...w,y);case 2:return(w,y)=>a(...w,y,...u)}}function T(A,w){return A.length>w+1?2:A.length===w+1?1:0}function v(A,w,y,E){return e.resolve(A,[...w,y,...E])!==null?2:e.resolve(A,[...w,y])!==null?1:(e.resolve(A,w)!==null,0)}}function n(i,a){return tm(i,[],i,bo(a,i,b1))}});var pk="diff",_K=["typed","matrix","subtract","number"],hm=M(pk,_K,t=>{var{typed:e,matrix:r,subtract:n,number:i}=t;return e(pk,{"Array | Matrix":function(c){return rt(c)?r(o(c.toArray())):o(c)},"Array | Matrix, number":function(c,f){if(!Qe(f))throw new RangeError("Dimension must be a whole number");return rt(c)?r(a(c.toArray(),f)):a(c,f)},"Array, BigNumber":e.referTo("Array,number",u=>(c,f)=>u(c,i(f))),"Matrix, BigNumber":e.referTo("Matrix,number",u=>(c,f)=>u(c,i(f)))});function a(u,c){if(rt(u)&&(u=u.toArray()),!Array.isArray(u))throw RangeError("Array/Matrix does not have that many dimensions");if(c>0){var f=[];return u.forEach(m=>{f.push(a(m,c-1))}),f}else{if(c===0)return o(u);throw RangeError("Cannot have negative dimension")}}function o(u){for(var c=[],f=u.length,m=1;m{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e("ones",{"":function(){return r.matrix==="Array"?a([]):a([],"default")},"...number | BigNumber | string":function(u){var c=u[u.length-1];if(typeof c=="string"){var f=u.pop();return a(u,f)}else return r.matrix==="Array"?a(u):a(u,"default")},Array:a,Matrix:function(u){var c=u.storage();return a(u.valueOf(),c)},"Array | Matrix, string":function(u,c){return a(u.valueOf(),c)}});function a(l,u){var c=o(l),f=c?new i(1):1;if(s(l),u){var m=n(u);return l.length>0?m.resize(l,f):m}else{var p=[];return l.length>0?Wo(p,l,f):p}}function o(l){var u=!1;return l.forEach(function(c,f,m){ft(c)&&(u=!0,m[f]=c.toNumber())}),u}function s(l){l.forEach(function(u){if(typeof u!="number"||!Qe(u)||u<0)throw new Error("Parameters in function ones must be positive integers")})}});function Df(){throw new Error('No "bignumber" implementation available')}function nv(){throw new Error('No "fraction" implementation available')}function iv(){throw new Error('No "matrix" implementation available')}var mk="range",EK=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],gm=M(mk,EK,t=>{var{typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c}=t;return e(mk,{string:m,"string, boolean":m,"number, number":function(x,b){return f(p(x,b,1,!1))},"number, number, number":function(x,b,T){return f(p(x,b,T,!1))},"number, number, boolean":function(x,b,T){return f(p(x,b,1,T))},"number, number, number, boolean":function(x,b,T,v){return f(p(x,b,T,v))},"BigNumber, BigNumber":function(x,b){var T=x.constructor;return f(p(x,b,new T(1),!1))},"BigNumber, BigNumber, BigNumber":function(x,b,T){return f(p(x,b,T,!1))},"BigNumber, BigNumber, boolean":function(x,b,T){var v=x.constructor;return f(p(x,b,new v(1),T))},"BigNumber, BigNumber, BigNumber, boolean":function(x,b,T,v){return f(p(x,b,T,v))},"Unit, Unit, Unit":function(x,b,T){return f(p(x,b,T,!1))},"Unit, Unit, Unit, boolean":function(x,b,T,v){return f(p(x,b,T,v))}});function f(h){return r.matrix==="Matrix"?n?n(h):iv():h}function m(h,x){var b=d(h);if(!b)throw new SyntaxError('String "'+h+'" is no valid range');return r.number==="BigNumber"?(i===void 0&&Df(),f(p(i(b.start),i(b.end),i(b.step)),x)):f(p(b.start,b.end,b.step,x))}function p(h,x,b,T){for(var v=[],A=c(b)?T?o:a:T?l:s,w=h;A(w,x);)v.push(w),w=u(w,b);return v}function d(h){var x=h.split(":"),b=x.map(function(v){return Number(v)}),T=b.some(function(v){return isNaN(v)});if(T)return null;switch(b.length){case 2:return{start:b[0],end:b[1],step:1};case 3:return{start:b[0],end:b[2],step:b[1]};default:return null}}});var dk="reshape",TK=["typed","isInteger","matrix"],_1=M(dk,TK,t=>{var{typed:e,isInteger:r}=t;return e(dk,{"Matrix, Array":function(i,a){return i.reshape(a,!0)},"Array, Array":function(i,a){return a.forEach(function(o){if(!r(o))throw new TypeError("Invalid size for dimension: "+o)}),Qp(i,a)}})});var DK="resize",MK=["config","matrix"],A1=M(DK,MK,t=>{var{config:e,matrix:r}=t;return function(a,o,s){if(arguments.length!==2&&arguments.length!==3)throw new tu("resize",arguments.length,2,3);if(rt(o)&&(o=o.valueOf()),ft(o[0])&&(o=o.map(function(c){return ft(c)?c.toNumber():c})),rt(a))return a.resize(o,s,!0);if(typeof a=="string")return n(a,o,s);var l=Array.isArray(a)?!1:e.matrix!=="Array";if(o.length===0){for(;Array.isArray(a);)a=a[0];return yt(a)}else{Array.isArray(a)||(a=[a]),a=yt(a);var u=Wo(a,o,s);return l?r(u):u}};function n(i,a,o){if(o!==void 0){if(typeof o!="string"||o.length!==1)throw new TypeError("Single character expected as defaultValue")}else o=" ";if(a.length!==1)throw new Ct(a.length,1);var s=a[0];if(typeof s!="number"||!Qe(s))throw new TypeError("Invalid size, must contain positive integers (size: "+Dt(a)+")");if(i.length>s)return i.substring(0,s);if(i.length{var{typed:e,multiply:r,rotationMatrix:n}=t;return e(hk,{"Array , number | BigNumber | Complex | Unit":function(o,s){i(o,2);var l=r(n(s),o);return l.toArray()},"Matrix , number | BigNumber | Complex | Unit":function(o,s){return i(o,2),r(n(s),o)},"Array, number | BigNumber | Complex | Unit, Array | Matrix":function(o,s,l){i(o,3);var u=r(n(s,l),o);return u},"Matrix, number | BigNumber | Complex | Unit, Array | Matrix":function(o,s,l){return i(o,3),r(n(s,l),o)}});function i(a,o){var s=Array.isArray(a)?pt(a):a.size();if(s.length>2)throw new RangeError("Vector must be of dimensions 1x".concat(o));if(s.length===2&&s[1]!==1)throw new RangeError("Vector must be of dimensions 1x".concat(o));if(s[0]!==o)throw new RangeError("Vector must be of dimensions 1x".concat(o))}});var gk="rotationMatrix",NK=["typed","config","multiplyScalar","addScalar","unaryMinus","norm","matrix","BigNumber","DenseMatrix","SparseMatrix","cos","sin"],E1=M(gk,NK,t=>{var{typed:e,config:r,multiplyScalar:n,addScalar:i,unaryMinus:a,norm:o,BigNumber:s,matrix:l,DenseMatrix:u,SparseMatrix:c,cos:f,sin:m}=t;return e(gk,{"":function(){return r.matrix==="Matrix"?l([]):[]},string:function(v){return l(v)},"number | BigNumber | Complex | Unit":function(v){return p(v,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber | Complex | Unit, string":function(v,A){return p(v,A)},"number | BigNumber | Complex | Unit, Array":function(v,A){var w=l(A);return d(w),b(v,w,void 0)},"number | BigNumber | Complex | Unit, Matrix":function(v,A){d(A);var w=A.storage()||(r.matrix==="Matrix"?"dense":void 0);return b(v,A,w)},"number | BigNumber | Complex | Unit, Array, string":function(v,A,w){var y=l(A);return d(y),b(v,y,w)},"number | BigNumber | Complex | Unit, Matrix, string":function(v,A,w){return d(A),b(v,A,w)}});function p(T,v){var A=ft(T),w=A?new s(-1):-1,y=f(T),E=m(T),D=[[y,n(w,E)],[E,y]];return x(D,v)}function d(T){var v=T.size();if(v.length<1||v[0]!==3)throw new RangeError("Vector must be of dimensions 1x3")}function h(T){return T.reduce((v,A)=>n(v,A))}function x(T,v){if(v){if(v==="sparse")return new c(T);if(v==="dense")return new u(T);throw new TypeError('Unknown matrix type "'.concat(v,'"'))}return T}function b(T,v,A){var w=o(v);if(w===0)throw new RangeError("Rotation around zero vector");var y=ft(T)?s:null,E=y?new y(1):1,D=y?new y(-1):-1,_=y?new y(v.get([0])/w):v.get([0])/w,N=y?new y(v.get([1])/w):v.get([1])/w,C=y?new y(v.get([2])/w):v.get([2])/w,B=f(T),R=i(E,a(B)),V=m(T),L=i(B,h([_,_,R])),P=i(h([_,N,R]),h([D,C,V])),k=i(h([_,C,R]),h([N,V])),W=i(h([_,N,R]),h([C,V])),O=i(B,h([N,N,R])),X=i(h([N,C,R]),h([D,_,V])),ae=i(h([_,C,R]),h([D,N,V])),J=i(h([N,C,R]),h([_,V])),U=i(B,h([C,C,R])),de=[[L,P,k],[W,O,X],[ae,J,U]];return x(de,A)}});var vk="row",FK=["typed","Index","matrix","range"],vm=M(vk,FK,t=>{var{typed:e,Index:r,matrix:n,range:i}=t;return e(vk,{"Matrix, number":a,"Array, number":function(s,l){return a(n(yt(s)),l).valueOf()}});function a(o,s){if(o.size().length!==2)throw new Error("Only two dimensional matrix is supported");Br(s,o.size()[0]);var l=i(0,o.size()[1]),u=new r(s,l),c=o.subset(u);return rt(c)?c:n([[c]])}});var yk="size",IK=["typed","config","?matrix"],T1=M(yk,IK,t=>{var{typed:e,config:r,matrix:n}=t;return e(yk,{Matrix:function(a){return a.create(a.size(),"number")},Array:pt,string:function(a){return r.matrix==="Array"?[a.length]:n([a.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(a){return r.matrix==="Array"?[]:n?n([],"dense","number"):iv()}})});var xk="squeeze",PK=["typed"],D1=M(xk,PK,t=>{var{typed:e}=t;return e(xk,{Array:function(n){return xf(yt(n))},Matrix:function(n){var i=xf(n.toArray());return Array.isArray(i)?n.create(i,n.datatype()):i},any:function(n){return yt(n)}})});var bk="subset",BK=["typed","matrix","zeros","add"],ym=M(bk,BK,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t;return e(bk,{"Matrix, Index":function(s,l){return Wl(l)?r():(Xp(s,l),s.subset(l))},"Array, Index":e.referTo("Matrix, Index",function(o){return function(s,l){var u=o(r(s),l);return l.isScalar()?u:u.valueOf()}}),"Object, Index":$K,"string, Index":kK,"Matrix, Index, any, any":function(s,l,u,c){return Wl(l)?s:(Xp(s,l),s.clone().subset(l,a(u,l),c))},"Array, Index, any, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u,c){var f=o(r(s),l,u,c);return f.isMatrix?f.valueOf():f}}),"Array, Index, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u){return o(r(s),l,u,void 0).valueOf()}}),"Matrix, Index, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u){return o(s,l,u,void 0)}}),"string, Index, string":wk,"string, Index, string, string":wk,"Object, Index, any":OK});function a(o,s){if(typeof o=="string")throw new Error("can't boradcast a string");if(s._isScalar)return o;var l=s.size();if(l.every(u=>u>0))try{return i(o,n(l))}catch{return o}else return o}});function kK(t,e){if(!$u(e))throw new TypeError("Index expected");if(Wl(e))return"";if(Xp(Array.from(t),e),e.size().length!==1)throw new Ct(e.size().length,1);var r=t.length;Br(e.min()[0],r),Br(e.max()[0],r);var n=e.dimension(0),i="";return n.forEach(function(a){i+=t.charAt(a)}),i}function wk(t,e,r,n){if(!e||e.isIndex!==!0)throw new TypeError("Index expected");if(Wl(e))return t;if(Xp(Array.from(t),e),e.size().length!==1)throw new Ct(e.size().length,1);if(n!==void 0){if(typeof n!="string"||n.length!==1)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=e.dimension(0),a=i.size()[0];if(a!==r.length)throw new Ct(i.size()[0],r.length);var o=t.length;Br(e.min()[0]),Br(e.max()[0]);for(var s=[],l=0;lo)for(var u=o-1,c=s.length;u{var{typed:e,matrix:r}=t;return e(_k,{Array:o=>n(r(o)).valueOf(),Matrix:n,any:yt});function n(o){var s=o.size(),l;switch(s.length){case 1:l=o.clone();break;case 2:{var u=s[0],c=s[1];if(c===0)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+Dt(s)+")");switch(o.storage()){case"dense":l=i(o,u,c);break;case"sparse":l=a(o,u,c);break}}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+Dt(s)+")")}return l}function i(o,s,l){for(var u=o._data,c=[],f,m=0;m{var{typed:e,transpose:r,conj:n}=t;return e(Ak,{any:function(a){return n(r(a))}})});var Sk="zeros",VK=["typed","config","matrix","BigNumber"],N1=M(Sk,VK,t=>{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e(Sk,{"":function(){return r.matrix==="Array"?a([]):a([],"default")},"...number | BigNumber | string":function(u){var c=u[u.length-1];if(typeof c=="string"){var f=u.pop();return a(u,f)}else return r.matrix==="Array"?a(u):a(u,"default")},Array:a,Matrix:function(u){var c=u.storage();return a(u.valueOf(),c)},"Array | Matrix, string":function(u,c){return a(u.valueOf(),c)}});function a(l,u){var c=o(l),f=c?new i(0):0;if(s(l),u){var m=n(u);return l.length>0?m.resize(l,f):m}else{var p=[];return l.length>0?Wo(p,l,f):p}}function o(l){var u=!1;return l.forEach(function(c,f,m){ft(c)&&(u=!0,m[f]=c.toNumber())}),u}function s(l){l.forEach(function(u){if(typeof u!="number"||!Qe(u)||u<0)throw new Error("Parameters in function zeros must be positive integers")})}});var Ek="fft",UK=["typed","matrix","addScalar","multiplyScalar","divideScalar","exp","tau","i","dotDivide","conj","pow","ceil","log2"],F1=M(Ek,UK,t=>{var{typed:e,matrix:r,addScalar:n,multiplyScalar:i,divideScalar:a,exp:o,tau:s,i:l,dotDivide:u,conj:c,pow:f,ceil:m,log2:p}=t;return e(Ek,{Array:d,Matrix:function(v){return v.create(d(v.valueOf()),v.datatype())}});function d(T){var v=pt(T);return v.length===1?b(T,v[0]):h(T.map(A=>d(A,v.slice(1))),0)}function h(T,v){var A=pt(T);if(v!==0)return new Array(A[0]).fill(0).map((y,E)=>h(T[E],v-1));if(A.length===1)return b(T);function w(y){var E=pt(y);return new Array(E[1]).fill(0).map((D,_)=>new Array(E[0]).fill(0).map((N,C)=>y[C][_]))}return w(h(w(T),1))}function x(T){for(var v=T.length,A=o(a(i(-1,i(l,s)),v)),w=[],y=1-v;yi(T[k],w[v-1+k])),...new Array(E-v).fill(0)],_=[...new Array(v+v-1).fill(0).map((P,k)=>a(1,w[k])),...new Array(E-(v+v-1)).fill(0)],N=b(D),C=b(_),B=new Array(E).fill(0).map((P,k)=>i(N[k],C[k])),R=u(c(d(c(B))),E),V=[],L=v-1;L_%2===0),v/2),...b(T.filter((D,_)=>_%2===1),v/2)],w=0;w{var{typed:e,fft:r,dotDivide:n,conj:i}=t;return e(Tk,{"Array | Matrix":function(o){var s=rt(o)?o.size():pt(o);return n(i(r(i(o))),s.reduce((l,u)=>l*u,1))}})});function Jl(t){"@babel/helpers - typeof";return Jl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jl(t)}function Dk(t,e){if(Jl(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(Jl(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Mk(t){var e=Dk(t,"string");return Jl(e)=="symbol"?e:e+""}function Er(t,e,r){return(e=Mk(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ck(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function zK(t){for(var e=1;e{var{typed:e,add:r,subtract:n,multiply:i,divide:a,max:o,map:s,abs:l,isPositive:u,isNegative:c,larger:f,smaller:m,matrix:p,bignumber:d,unaryMinus:h}=t;function x(D){return function(_,N,C,B){var R=!(N.length===2&&(N.every(y)||N.every(bi)));if(R)throw new Error('"tspan" must be an Array of two numeric values or two units [tStart, tEnd]');var V=N[0],L=N[1],P=f(L,V),k=B.firstStep;if(k!==void 0&&!u(k))throw new Error('"firstStep" must be positive');var W=B.maxStep;if(W!==void 0&&!u(W))throw new Error('"maxStep" must be positive');var O=B.minStep;if(O&&c(O))throw new Error('"minStep" must be positive or zero');var X=[V,L,k,O,W].filter(St=>St!==void 0);if(!(X.every(y)||X.every(bi)))throw new Error('Inconsistent type of "t" dependant variables');for(var ae=1,J=B.tol?B.tol:1e-4,U=B.minDelta?B.minDelta:.2,de=B.maxDelta?B.maxDelta:5,we=B.maxIter?B.maxIter:1e4,se=[V,L,...C,W,O].some(ft),[be,K,j,ne]=se?[d(D.a),d(D.c),d(D.b),d(D.bp)]:[D.a,D.c,D.b,D.bp],pe=k?P?k:h(k):a(n(L,V),ae),fe=[V],Ae=[C],_e=n(j,ne),G=0,Z=0,ge=A(P),xe=w(P);ge(fe[G],L);){var Ee=[];pe=xe(fe[G],L,pe),Ee.push(_(fe[G],Ae[G]));for(var Be=1;Bebi(St)?St.value:St)));Ve1/4&&(fe.push(r(fe[G],pe)),Ae.push(r(Ae[G],i(pe,j,Ee))),G++);var et=.84*(J/Ve)**(1/5);if(m(et,U)?et=U:f(et,de)&&(et=de),et=se?d(et):et,pe=i(pe,et),W&&f(l(pe),W)?pe=P?W:h(W):O&&m(l(pe),O)&&(pe=P?O:h(O)),Z++,Z>we)throw new Error("Maximum number of iterations reached, try changing options")}return{t:fe,y:Ae}}}function b(D,_,N,C){var B=[[],[.5],[0,.75],[.2222222222222222,.3333333333333333,.4444444444444444]],R=[null,1/2,3/4,1],V=[2/9,1/3,4/9,0],L=[7/24,1/4,1/3,1/8],P={a:B,c:R,b:V,bp:L};return x(P)(D,_,N,C)}function T(D,_,N,C){var B=[[],[.2],[.075,.225],[.9777777777777777,-3.7333333333333334,3.5555555555555554],[2.9525986892242035,-11.595793324188385,9.822892851699436,-.2908093278463649],[2.8462752525252526,-10.757575757575758,8.906422717743473,.2784090909090909,-.2735313036020583],[.09114583333333333,0,.44923629829290207,.6510416666666666,-.322376179245283,.13095238095238096]],R=[null,1/5,3/10,4/5,8/9,1,1],V=[35/384,0,500/1113,125/192,-2187/6784,11/84,0],L=[5179/57600,0,7571/16695,393/640,-92097/339200,187/2100,1/40],P={a:B,c:R,b:V,bp:L};return x(P)(D,_,N,C)}function v(D,_,N,C){var B=C.method?C.method:"RK45",R={RK23:b,RK45:T};if(B.toUpperCase()in R){var V=zK({},C);return delete V.method,R[B.toUpperCase()](D,_,N,V)}else{var L=Object.keys(R).map(k=>'"'.concat(k,'"')),P="".concat(L.slice(0,-1).join(", ")," and ").concat(L.slice(-1));throw new Error('Unavailable method "'.concat(B,'". Available methods are ').concat(P))}}function A(D){return D?m:f}function w(D){var _=D?f:m;return function(N,C,B){var R=r(N,B);return _(R,C)?n(C,N):B}}function y(D){return ft(D)||At(D)}function E(D,_,N,C){var B=v(D,_.toArray(),N.toArray(),C);return{t:p(B.t),y:p(B.y)}}return e("solveODE",{"function, Array, Array, Object":v,"function, Matrix, Matrix, Object":E,"function, Array, Array":(D,_,N)=>v(D,_,N,{}),"function, Matrix, Matrix":(D,_,N)=>E(D,_,N,{}),"function, Array, number | BigNumber | Unit":(D,_,N)=>{var C=v(D,_,[N],{});return{t:C.t,y:C.y.map(B=>B[0])}},"function, Matrix, number | BigNumber | Unit":(D,_,N)=>{var C=v(D,_.toArray(),[N],{});return{t:p(C.t),y:p(C.y.map(B=>B[0]))}},"function, Array, number | BigNumber | Unit, Object":(D,_,N,C)=>{var B=v(D,_,[N],C);return{t:B.t,y:B.y.map(R=>R[0])}},"function, Matrix, number | BigNumber | Unit, Object":(D,_,N,C)=>{var B=v(D,_.toArray(),[N],C);return{t:p(B.t),y:p(B.y.map(R=>R[0]))}}})});var WK="erf",YK=["typed"],B1=M(WK,YK,t=>{var{typed:e}=t;return e("name",{number:function(o){var s=Math.abs(o);return s>=JK?vo(o):s<=jK?vo(o)*r(s):s<=4?vo(o)*(1-n(s)):vo(o)*(1-i(s))},"Array | Matrix":e.referToSelf(a=>o=>nt(o,a))});function r(a){var o=a*a,s=ru[0][4]*o,l=o,u;for(u=0;u<3;u+=1)s=(s+ru[0][u])*o,l=(l+Mf[0][u])*o;return a*(s+ru[0][3])/(l+Mf[0][3])}function n(a){var o=ru[1][8]*a,s=a,l;for(l=0;l<7;l+=1)o=(o+ru[1][l])*a,s=(s+Mf[1][l])*a;var u=(o+ru[1][7])/(s+Mf[1][7]),c=parseInt(a*16)/16,f=(a-c)*(a+c);return Math.exp(-c*c)*Math.exp(-f)*u}function i(a){var o=1/(a*a),s=ru[2][5]*o,l=o,u;for(u=0;u<4;u+=1)s=(s+ru[2][u])*o,l=(l+Mf[2][u])*o;var c=o*(s+ru[2][4])/(l+Mf[2][4]);c=(ZK-c)/a,o=parseInt(a*16)/16;var f=(a-o)*(a+o);return Math.exp(-o*o)*Math.exp(-f)*c}}),jK=.46875,ZK=.5641895835477563,ru=[[3.1611237438705655,113.86415415105016,377.485237685302,3209.3775891384694,.18577770618460315],[.5641884969886701,8.883149794388377,66.11919063714163,298.6351381974001,881.952221241769,1712.0476126340707,2051.0783778260716,1230.3393547979972,21531153547440383e-24],[.30532663496123236,.36034489994980445,.12578172611122926,.016083785148742275,.0006587491615298378,.016315387137302097]],Mf=[[23.601290952344122,244.02463793444417,1282.6165260773723,2844.236833439171],[15.744926110709835,117.6939508913125,537.1811018620099,1621.3895745666903,3290.7992357334597,4362.619090143247,3439.3676741437216,1230.3393548037495],[2.568520192289822,1.8729528499234604,.5279051029514285,.06051834131244132,.0023352049762686918]],JK=Math.pow(2,53);var Nk="zeta",XK=["typed","config","multiply","pow","divide","factorial","equal","smallerEq","isNegative","gamma","sin","subtract","add","?Complex","?BigNumber","pi"],k1=M(Nk,XK,t=>{var{typed:e,config:r,multiply:n,pow:i,divide:a,factorial:o,equal:s,smallerEq:l,isNegative:u,gamma:c,sin:f,subtract:m,add:p,Complex:d,BigNumber:h,pi:x}=t;return e(Nk,{number:y=>b(y,E=>E,()=>20),BigNumber:y=>b(y,E=>new h(E),()=>Math.abs(Math.log10(r.relTol))),Complex:T});function b(y,E,D){return s(y,0)?E(-.5):s(y,1)?E(NaN):isFinite(y)?v(y,E,D,_=>_):u(y)?E(NaN):E(1)}function T(y){return y.re===0&&y.im===0?new d(-.5):y.re===1?new d(NaN,NaN):y.re===1/0&&y.im===0?new d(1):y.im===1/0||y.re===-1/0?new d(NaN,NaN):v(y,E=>E,E=>Math.round(1.3*15+.9*Math.abs(E.im)),E=>E.re)}function v(y,E,D,_){var N=D(y);if(_(y)>-(N-1)/2)return w(y,E(N),E);var C=n(i(2,y),i(E(x),m(y,1)));return C=n(C,f(n(a(E(x),2),y))),C=n(C,c(m(1,y))),n(C,v(m(1,y),E,D,_))}function A(y,E){for(var D=y,_=y;l(_,E);_=p(_,1)){var N=a(n(o(p(E,m(_,1))),i(4,_)),n(o(m(E,_)),o(n(2,_))));D=p(D,N)}return n(E,D)}function w(y,E,D){for(var _=a(1,n(A(D(0),E),m(1,i(2,m(1,y))))),N=D(0),C=D(1);l(C,E);C=p(C,1))N=p(N,a(n((-1)**(C-1),A(C,E)),i(C,y)));return n(_,N)}});var Fk="mode",QK=["typed","isNaN","isNumeric"],$1=M(Fk,QK,t=>{var{typed:e,isNaN:r,isNumeric:n}=t;return e(Fk,{"Array | Matrix":i,"...":function(o){return i(o)}});function i(a){a=Rt(a.valueOf());var o=a.length;if(o===0)throw new Error("Cannot calculate mode of an empty array");for(var s={},l=[],u=0,c=0;cu&&(u=s[f],l=[f])}return l}});function An(t,e,r){var n;return String(t).includes("Unexpected type")?(n=arguments.length>2?" (type: "+fr(r)+", value: "+JSON.stringify(r)+")":" (type: "+t.data.actual+")",new TypeError("Cannot calculate "+e+", unexpected type of argument"+n)):String(t).includes("complex numbers")?(n=arguments.length>2?" (type: "+fr(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+e+", no ordering relation is defined for complex numbers"+n)):t}var Ik="prod",KK=["typed","config","multiplyScalar","numeric"],O1=M(Ik,KK,t=>{var{typed:e,config:r,multiplyScalar:n,numeric:i}=t;return e(Ik,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(s,l){throw new Error("prod(A, dim) is not yet supported")},"...":function(s){return a(s)}});function a(o){var s;if(Oi(o,function(l){try{s=s===void 0?l:n(s,l)}catch(u){throw An(u,"prod",l)}}),typeof s=="string"&&(s=i(s,Bi(s,r))),s===void 0)throw new Error("Cannot calculate prod of an empty array");return s}});var Pk="format",eee=["typed"],R1=M(Pk,eee,t=>{var{typed:e}=t;return e(Pk,{any:Dt,"any, Object | function | number | BigNumber":Dt})});var Bk="bin",tee=["typed","format"],L1=M(Bk,tee,t=>{var{typed:e,format:r}=t;return e(Bk,{"number | BigNumber":function(i){return r(i,{notation:"bin"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"bin",wordSize:a})}})});var kk="oct",ree=["typed","format"],V1=M(kk,ree,t=>{var{typed:e,format:r}=t;return e(kk,{"number | BigNumber":function(i){return r(i,{notation:"oct"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"oct",wordSize:a})}})});var $k="hex",nee=["typed","format"],U1=M($k,nee,t=>{var{typed:e,format:r}=t;return e($k,{"number | BigNumber":function(i){return r(i,{notation:"hex"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"hex",wordSize:a})}})});var av=/\$([\w.]+)/g;var Ok="print",iee=["typed"],xm=M(Ok,iee,t=>{var{typed:e}=t;return e(Ok,{"string, Object | Array":Rk,"string, Object | Array, number | Object":Rk})});function Rk(t,e,r){return t.replace(av,function(n,i){var a=i.split("."),o=e[a.shift()];for(o!==void 0&&o.isMatrix&&(o=o.toArray());a.length&&o!==void 0;){var s=a.shift();o=s?o[s]:o+"."}return o!==void 0?bn(o)?o:Dt(o,r):n})}var Lk="to",aee=["typed","matrix","concat"],q1=M(Lk,aee,t=>{var{typed:e,matrix:r,concat:n}=t,i=Pt({typed:e,matrix:r,concat:n});return e(Lk,{"Unit, Unit | string":(a,o)=>a.to(o)},i({Ds:!0}))});var Vk="isPrime",oee=["typed"],z1=M(Vk,oee,t=>{var{typed:e}=t;return e(Vk,{number:function(n){if(n<=3)return n>1;if(n%2===0||n%3===0)return!1;for(var i=5;i*i<=n;i+=6)if(n%i===0||n%(i+2)===0)return!1;return!0},bigint:function(n){if(n<=3n)return n>1n;if(n%2n===0n||n%3n===0n)return!1;for(var i=5n;i*i<=n;i+=6n)if(n%i===0n||n%(i+2n)===0n)return!1;return!0},BigNumber:function(n){if(n.lte(3))return n.gt(1);if(n.mod(2).eq(0)||n.mod(3).eq(0))return!1;if(n.lt(Math.pow(2,32))){for(var i=n.toNumber(),a=5;a*a<=i;a+=6)if(i%a===0||i%(a+2)===0)return!1;return!0}function o(T,v,A){for(var w=1;!v.eq(0);)v.mod(2).eq(0)?(v=v.div(2),T=T.mul(T).mod(A)):(v=v.sub(1),w=T.mul(w).mod(A));return w}var s=n.constructor.clone({precision:n.toFixed(0).length*2});n=new s(n);for(var l=0,u=n.sub(1);u.mod(2).eq(0);)u=u.div(2),l+=1;var c=null;if(n.lt("3317044064679887385961981"))c=[2,3,5,7,11,13,17,19,23,29,31,37,41].filter(T=>Tn=>nt(n,r))})});var see="numeric",uee=["number","?bignumber","?fraction"],H1=M(see,uee,t=>{var{number:e,bignumber:r,fraction:n}=t,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},a={number:o=>e(o),BigNumber:r?o=>r(o):Df,bigint:o=>BigInt(o),Fraction:n?o=>n(o):nv};return function(s){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number",u=arguments.length>2?arguments[2]:void 0;if(u!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var c=fr(s);if(!(c in i))throw new TypeError("Cannot convert "+s+' of type "'+c+'"; valid input types are '+Object.keys(i).join(", "));if(!(l in a))throw new TypeError("Cannot convert "+s+' to type "'+l+'"; valid output types are '+Object.keys(a).join(", "));return l===c?s:a[l](s)}});var Uk="divideScalar",lee=["typed","numeric"],G1=M(Uk,lee,t=>{var{typed:e,numeric:r}=t;return e(Uk,{"number, number":function(i,a){return i/a},"Complex, Complex":function(i,a){return i.div(a)},"BigNumber, BigNumber":function(i,a){return i.div(a)},"bigint, bigint":function(i,a){return i/a},"Fraction, Fraction":function(i,a){return i.div(a)},"Unit, number | Complex | Fraction | BigNumber | Unit":(n,i)=>n.divide(i),"number | Fraction | Complex | BigNumber, Unit":(n,i)=>i.divideInto(n)})});var qk="pow",cee=["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],W1=M(qk,cee,t=>{var{typed:e,config:r,identity:n,multiply:i,matrix:a,inv:o,number:s,fraction:l,Complex:u}=t;return e(qk,{"number, number":c,"Complex, Complex":function(d,h){return d.pow(h)},"BigNumber, BigNumber":function(d,h){return h.isInteger()||d>=0||r.predictable?d.pow(h):new u(d.toNumber(),0).pow(h.toNumber(),0)},"bigint, bigint":(p,d)=>p**d,"Fraction, Fraction":function(d,h){var x=d.pow(h);if(x!=null)return x;if(r.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return c(d.valueOf(),h.valueOf())},"Array, number":f,"Array, BigNumber":function(d,h){return f(d,h.toNumber())},"Matrix, number":m,"Matrix, BigNumber":function(d,h){return m(d,h.toNumber())},"Unit, number | BigNumber":function(d,h){return d.pow(h)}});function c(p,d){if(r.predictable&&!Qe(d)&&p<0)try{var h=l(d),x=s(h);if((d===x||Math.abs((d-x)/d)<1e-14)&&h.d%2n===1n)return(h.n%2n===0n?1:-1)*Math.pow(-p,d)}catch{}return r.predictable&&(p<-1&&d===1/0||p>-1&&p<0&&d===-1/0)?NaN:Qe(d)||p>=0||r.predictable?Cw(p,d):p*p<1&&d===1/0||p*p>1&&d===-1/0?0:new u(p,0).pow(d,0)}function f(p,d){if(!Qe(d))throw new TypeError("For A^b, b must be an integer (value is "+d+")");var h=pt(p);if(h.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!==h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");if(d<0)try{return f(o(p),-d)}catch(T){throw T.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+d+")"):T}for(var x=n(h[0]).valueOf(),b=p;d>=1;)(d&1)===1&&(x=i(b,x)),d>>=1,b=i(b,b);return x}function m(p,d){return a(f(p.valueOf(),d))}});var Cf="Number of decimals in function round must be an integer",zk="round",fee=["typed","config","matrix","equalScalar","zeros","BigNumber","DenseMatrix"],Y1=M(zk,fee,t=>{var{typed:e,config:r,matrix:n,equalScalar:i,zeros:a,BigNumber:o,DenseMatrix:s}=t,l=Pr({typed:e,equalScalar:i}),u=wr({typed:e,DenseMatrix:s}),c=Fn({typed:e});function f(m){return Math.abs(df(m).exponent)}return e(zk,{number:function(p){var d=Af(p,f(r.relTol)),h=Kr(p,d,r.relTol,r.absTol)?d:p;return Af(h)},"number, number":function(p,d){var h=f(r.relTol);if(d>=h)return Af(p,d);var x=Af(p,h),b=Kr(p,x,r.relTol,r.absTol)?x:p;return Af(b,d)},"number, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Cf);return new o(p).toDecimalPlaces(d.toNumber())},Complex:function(p){return p.round()},"Complex, number":function(p,d){if(d%1)throw new TypeError(Cf);return p.round(d)},"Complex, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Cf);var h=d.toNumber();return p.round(h)},BigNumber:function(p){var d=new o(p).toDecimalPlaces(f(r.relTol)),h=mn(p,d,r.relTol,r.absTol)?d:p;return h.toDecimalPlaces(0)},"BigNumber, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Cf);var h=f(r.relTol);if(d>=h)return p.toDecimalPlaces(d.toNumber());var x=p.toDecimalPlaces(h),b=mn(p,x,r.relTol,r.absTol)?x:p;return b.toDecimalPlaces(d.toNumber())},Fraction:function(p){return p.round()},"Fraction, number":function(p,d){if(d%1)throw new TypeError(Cf);return p.round(d)},"Fraction, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Cf);return p.round(d.toNumber())},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var x=p.toNumeric(h);return h.multiply(m(x,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>nt(p,x=>m(x,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>nt(p,m,!0)),"SparseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>l(p,d,m,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>c(p,d,m,!1)),"Array, number | BigNumber":e.referToSelf(m=>(p,d)=>c(n(p),d,m,!1).valueOf()),"number | Complex | BigNumber | Fraction, SparseMatrix":e.referToSelf(m=>(p,d)=>i(p,0)?a(d.size(),d.storage()):u(d,p,m,!0)),"number | Complex | BigNumber | Fraction, DenseMatrix":e.referToSelf(m=>(p,d)=>i(p,0)?a(d.size(),d.storage()):c(d,p,m,!0)),"number | Complex | BigNumber | Fraction, Array":e.referToSelf(m=>(p,d)=>c(n(d),p,m,!0).valueOf())})});var Hk="log",pee=["config","typed","typeOf","divideScalar","Complex"],j1=M(Hk,pee,t=>{var{typed:e,typeOf:r,config:n,divideScalar:i,Complex:a}=t;return e(Hk,{number:function(s){return s>=0||n.predictable?jP(s):new a(s,0).log()},Complex:function(s){return s.log()},BigNumber:function(s){return!s.isNegative()||n.predictable?s.ln():new a(s.toNumber(),0).log()},"any, any":e.referToSelf(o=>(s,l)=>{if(r(s)==="Fraction"&&r(l)==="Fraction"){var u=s.log(l);if(u!==null)return u}return i(o(s),o(l))})})});var Gk="log1p",mee=["typed","config","divideScalar","log","Complex"],Z1=M(Gk,mee,t=>{var{typed:e,config:r,divideScalar:n,log:i,Complex:a}=t;return e(Gk,{number:function(l){return l>=-1||r.predictable?Ng(l):o(new a(l,0))},Complex:o,BigNumber:function(l){var u=l.plus(1);return!u.isNegative()||r.predictable?u.ln():o(new a(l.toNumber(),0))},"Array | Matrix":e.referToSelf(s=>l=>nt(l,s)),"any, any":e.referToSelf(s=>(l,u)=>n(s(l),i(u)))});function o(s){var l=s.re+1;return new a(Math.log(Math.sqrt(l*l+s.im*s.im)),Math.atan2(s.im,l))}});var Wk="nthRoots",dee=["config","typed","divideScalar","Complex"],J1=M(Wk,dee,t=>{var{typed:e,config:r,divideScalar:n,Complex:i}=t,a=[function(l){return new i(l,0)},function(l){return new i(0,l)},function(l){return new i(-l,0)},function(l){return new i(0,-l)}];function o(s,l){if(l<0)throw new Error("Root must be greater than zero");if(l===0)throw new Error("Root must be non-zero");if(l%1!==0)throw new Error("Root must be an integer");if(s===0||s.abs()===0)return[new i(0,0)];var u=typeof s=="number",c;(u||s.re===0||s.im===0)&&(u?c=2*+(s<0):s.im===0?c=2*+(s.re<0):c=2*+(s.im<0)+1);for(var f=s.arg(),m=s.abs(),p=[],d=Math.pow(m,1/l),h=0;h{var{typed:e,equalScalar:r,matrix:n,pow:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=jr({typed:e}),u=Gn({typed:e,SparseMatrix:s}),c=Pr({typed:e,equalScalar:r}),f=wr({typed:e,DenseMatrix:a}),m=Pt({typed:e,matrix:n,concat:o}),p={};for(var d in i.signatures)Object.prototype.hasOwnProperty.call(i.signatures,d)&&!d.includes("Matrix")&&!d.includes("Array")&&(p[d]=i.signatures[d]);var h=e(p);return e(Yk,m({elop:h,SS:u,DS:l,Ss:c,sS:f}))});var jk="dotDivide",gee=["typed","matrix","equalScalar","divideScalar","DenseMatrix","concat","SparseMatrix"],Q1=M(jk,gee,t=>{var{typed:e,matrix:r,equalScalar:n,divideScalar:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=In({typed:e,equalScalar:n}),u=jr({typed:e}),c=Gn({typed:e,SparseMatrix:s}),f=Pr({typed:e,equalScalar:n}),m=wr({typed:e,DenseMatrix:a}),p=Pt({typed:e,matrix:r,concat:o});return e(jk,p({elop:i,SS:c,DS:u,SD:l,Ss:f,sS:m}))});function gs(t){var{DenseMatrix:e}=t;return function(n,i,a){var o=n.size();if(o.length!==2)throw new RangeError("Matrix must be two dimensional (size: "+Dt(o)+")");var s=o[0],l=o[1];if(s!==l)throw new RangeError("Matrix must be square (size: "+Dt(o)+")");var u=[];if(rt(i)){var c=i.size(),f=i._data;if(c.length===1){if(c[0]!==s)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(var m=0;m{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=gs({DenseMatrix:s});return e(Zk,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.valueOf()}});function u(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],x=[],b=f._data,T=0;TA&&(E.push(x[C]),D.push(B))}if(o(y,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var R=n(w,y),V=0,L=D.length;V{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=gs({DenseMatrix:s});return e(Jk,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.valueOf()}});function u(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],x=[],b=f._data,T=h-1;T>=0;T--){var v=p[T][0]||0,A=void 0;if(o(v,0))A=0;else{var w=b[T][T];if(o(w,0))throw new Error("Linear system cannot be solved since matrix is singular");A=n(v,w);for(var y=T-1;y>=0;y--)p[y]=[a(p[y][0]||0,i(A,b[y][T]))]}x[T]=[A]}return new s({data:x,size:[d,1]})}function c(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],x=f._values,b=f._index,T=f._ptr,v=[],A=h-1;A>=0;A--){var w=p[A][0]||0;if(o(w,0))v[A]=[0];else{for(var y=0,E=[],D=[],_=T[A],N=T[A+1],C=N-1;C>=_;C--){var B=b[C];B===A?y=x[C]:B{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=gs({DenseMatrix:s});return e(Xk,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.map(x=>x.valueOf())}});function u(f,m){for(var p=[l(f,m,!0)._data.map(D=>D[0])],d=f._data,h=f._size[0],x=f._size[1],b=0;bnew s({data:D.map(_=>[_]),size:[h,1]}))}function c(f,m){for(var p=[l(f,m,!0)._data.map(ae=>ae[0])],d=f._size[0],h=f._size[1],x=f._values,b=f._index,T=f._ptr,v=0;vv&&(E.push(x[B]),D.push(R))}if(o(C,0))if(o(y[v],0)){if(w===0){var k=[...y];k[v]=1;for(var W=0,O=D.length;Wnew s({data:ae.map(J=>[J]),size:[d,1]}))}});var Qk="usolveAll",bee=["typed","matrix","divideScalar","multiplyScalar","subtractScalar","equalScalar","DenseMatrix"],rA=M(Qk,bee,t=>{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=gs({DenseMatrix:s});return e(Qk,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.map(x=>x.valueOf())}});function u(f,m){for(var p=[l(f,m,!0)._data.map(D=>D[0])],d=f._data,h=f._size[0],x=f._size[1],b=x-1;b>=0;b--)for(var T=p.length,v=0;v=0;E--)y[E]=a(y[E],d[E][b]);p.push(y)}}else{if(v===0)return[];p.splice(v,1),v-=1,T-=1}else{A[b]=n(A[b],d[b][b]);for(var w=b-1;w>=0;w--)A[w]=a(A[w],i(A[b],d[w][b]))}}return p.map(D=>new s({data:D.map(_=>[_]),size:[h,1]}))}function c(f,m){for(var p=[l(f,m,!0)._data.map(ae=>ae[0])],d=f._size[0],h=f._size[1],x=f._values,b=f._index,T=f._ptr,v=h-1;v>=0;v--)for(var A=p.length,w=0;w=_;B--){var R=b[B];R===v?C=x[B]:Rnew s({data:ae.map(J=>[J]),size:[d,1]}))}});var wee="matAlgo08xS0Sid",_ee=["typed","equalScalar"],Nf=M(wee,_ee,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,x=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Ct(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");if(!s||!m)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var b=c[0],T=c[1],v,A=r,w=0,y=o;typeof f=="string"&&f===x&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),y=e.find(o,[v,v]));for(var E=[],D=[],_=[],N=[],C=[],B,R,V,L,P=0;P{var{typed:e,matrix:r}=t;return{"Array, number":e.referTo("DenseMatrix, number",n=>(i,a)=>n(r(i),a).valueOf()),"Array, BigNumber":e.referTo("DenseMatrix, BigNumber",n=>(i,a)=>n(r(i),a).valueOf()),"number, Array":e.referTo("number, DenseMatrix",n=>(i,a)=>n(i,r(a)).valueOf()),"BigNumber, Array":e.referTo("BigNumber, DenseMatrix",n=>(i,a)=>n(i,r(a)).valueOf())}});var Kk="leftShift",Aee=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],nA=M(Kk,Aee,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ri({typed:e}),l=In({typed:e,equalScalar:n}),u=Nf({typed:e,equalScalar:n}),c=Sa({typed:e,DenseMatrix:a}),f=Pr({typed:e,equalScalar:n}),m=Fn({typed:e}),p=Pt({typed:e,matrix:r,concat:o}),d=Ff({typed:e,matrix:r});return e(Kk,{"number, number":Bw,"BigNumber, BigNumber":zB,"bigint, bigint":(h,x)=>h<(x,b)=>n(b,0)?x.clone():f(x,b,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(x,b)=>n(b,0)?x.clone():m(x,b,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):c(b,x,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):m(b,x,h,!0))},d,p({SS:u,DS:s,SD:l}))});var e$="rightArithShift",See=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],iA=M(e$,See,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ri({typed:e}),l=In({typed:e,equalScalar:n}),u=Nf({typed:e,equalScalar:n}),c=Sa({typed:e,DenseMatrix:a}),f=Pr({typed:e,equalScalar:n}),m=Fn({typed:e}),p=Pt({typed:e,matrix:r,concat:o}),d=Ff({typed:e,matrix:r});return e(e$,{"number, number":kw,"BigNumber, BigNumber":HB,"bigint, bigint":(h,x)=>h>>x,"SparseMatrix, number | BigNumber":e.referToSelf(h=>(x,b)=>n(b,0)?x.clone():f(x,b,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(x,b)=>n(b,0)?x.clone():m(x,b,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):c(b,x,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):m(b,x,h,!0))},d,p({SS:u,DS:s,SD:l}))});var t$="rightLogShift",Eee=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],aA=M(t$,Eee,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ri({typed:e}),l=In({typed:e,equalScalar:n}),u=Nf({typed:e,equalScalar:n}),c=Sa({typed:e,DenseMatrix:a}),f=Pr({typed:e,equalScalar:n}),m=Fn({typed:e}),p=Pt({typed:e,matrix:r,concat:o}),d=Ff({typed:e,matrix:r});return e(t$,{"number, number":$w,"SparseMatrix, number | BigNumber":e.referToSelf(h=>(x,b)=>n(b,0)?x.clone():f(x,b,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(x,b)=>n(b,0)?x.clone():m(x,b,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):c(b,x,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(x,b)=>n(x,0)?i(b.size(),b.storage()):m(b,x,h,!0))},d,p({SS:u,DS:s,SD:l}))});var r$="and",Tee=["typed","matrix","equalScalar","zeros","not","concat"],bm=M(r$,Tee,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=In({typed:e,equalScalar:n}),l=Gu({typed:e,equalScalar:n}),u=Pr({typed:e,equalScalar:n}),c=Fn({typed:e}),f=Pt({typed:e,matrix:r,concat:o});return e(r$,{"number, number":Qg,"Complex, Complex":function(p,d){return(p.re!==0||p.im!==0)&&(d.re!==0||d.im!==0)},"BigNumber, BigNumber":function(p,d){return!p.isZero()&&!d.isZero()&&!p.isNaN()&&!d.isNaN()},"bigint, bigint":Qg,"Unit, Unit":e.referToSelf(m=>(p,d)=>m(p.value||0,d.value||0)),"SparseMatrix, any":e.referToSelf(m=>(p,d)=>a(d)?i(p.size(),p.storage()):u(p,d,m,!1)),"DenseMatrix, any":e.referToSelf(m=>(p,d)=>a(d)?i(p.size(),p.storage()):c(p,d,m,!1)),"any, SparseMatrix":e.referToSelf(m=>(p,d)=>a(p)?i(p.size(),p.storage()):u(d,p,m,!0)),"any, DenseMatrix":e.referToSelf(m=>(p,d)=>a(p)?i(p.size(),p.storage()):c(d,p,m,!0)),"Array, any":e.referToSelf(m=>(p,d)=>m(r(p),d).valueOf()),"any, Array":e.referToSelf(m=>(p,d)=>m(p,r(d)).valueOf())},f({SS:l,DS:s}))});var ov="compare",Dee=["typed","config","matrix","equalScalar","BigNumber","Fraction","DenseMatrix","concat"],oA=M(ov,Dee,t=>{var{typed:e,config:r,equalScalar:n,matrix:i,BigNumber:a,Fraction:o,DenseMatrix:s,concat:l}=t,u=jr({typed:e}),c=Hu({typed:e,equalScalar:n}),f=wr({typed:e,DenseMatrix:s}),m=Pt({typed:e,matrix:i,concat:l}),p=_o({typed:e});return e(ov,Mee({typed:e,config:r}),{"boolean, boolean":function(h,x){return h===x?0:h>x?1:-1},"BigNumber, BigNumber":function(h,x){return mn(h,x,r.relTol,r.absTol)?new a(0):new a(h.cmp(x))},"bigint, bigint":function(h,x){return h===x?0n:h>x?1n:-1n},"Fraction, Fraction":function(h,x){return new o(h.compare(x))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},p,m({SS:c,DS:u,Ss:f}))}),Mee=M(ov,["typed","config"],t=>{var{typed:e,config:r}=t;return e(ov,{"number, number":function(i,a){return Kr(i,a,r.relTol,r.absTol)?0:i>a?1:-1}})});var Xl=zr(i$(),1);var a$="compareNatural",Cee=["typed","compare"],sA=M(a$,Cee,t=>{var{typed:e,compare:r}=t,n=r.signatures["boolean,boolean"];return e(a$,{"any, any":i});function i(l,u){var c=fr(l),f=fr(u),m;if((c==="number"||c==="BigNumber"||c==="Fraction")&&(f==="number"||f==="BigNumber"||f==="Fraction"))return m=r(l,u),m.toString()!=="0"?m>0?1:-1:(0,Xl.default)(c,f);var p=["Array","DenseMatrix","SparseMatrix"];if(p.includes(c)||p.includes(f))return m=a(i,l,u),m!==0?m:(0,Xl.default)(c,f);if(c!==f)return(0,Xl.default)(c,f);if(c==="Complex")return Nee(l,u);if(c==="Unit")return l.equalBase(u)?i(l.value,u.value):o(i,l.formatUnits(),u.formatUnits());if(c==="boolean")return n(l,u);if(c==="string")return(0,Xl.default)(l,u);if(c==="Object")return s(i,l,u);if(c==="null"||c==="undefined")return 0;throw new TypeError('Unsupported type of value "'+c+'"')}function a(l,u,c){return Uo(u)&&Uo(c)?o(l,u.toJSON().values,c.toJSON().values):Uo(u)?a(l,u.toArray(),c):Uo(c)?a(l,u,c.toArray()):Ul(u)?a(l,u.toJSON().data,c):Ul(c)?a(l,u,c.toJSON().data):Array.isArray(u)?Array.isArray(c)?o(l,u,c):a(l,u,[c]):a(l,[u],c)}function o(l,u,c){for(var f=0,m=Math.min(u.length,c.length);fc.length?1:u.lengthe.re?1:t.ree.im?1:t.im{var{typed:e,matrix:r,concat:n}=t,i=Pt({typed:e,matrix:r,concat:n});return e(o$,Hg,i({elop:Hg,Ds:!0}))});var sv="equal",Iee=["typed","matrix","equalScalar","DenseMatrix","concat","SparseMatrix"],lA=M(sv,Iee,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=jr({typed:e}),l=Gn({typed:e,SparseMatrix:o}),u=wr({typed:e,DenseMatrix:i}),c=Pt({typed:e,matrix:r,concat:a});return e(sv,Pee({typed:e,equalScalar:n}),c({elop:n,SS:l,DS:s,Ss:u}))}),Pee=M(sv,["typed","equalScalar"],t=>{var{typed:e,equalScalar:r}=t;return e(sv,{"any, any":function(i,a){return i===null?a===null:a===null?i===null:i===void 0?a===void 0:a===void 0?i===void 0:r(i,a)}})});var s$="equalText",Bee=["typed","compareText","isZero"],cA=M(s$,Bee,t=>{var{typed:e,compareText:r,isZero:n}=t;return e(s$,{"any, any":function(a,o){return n(r(a,o))}})});var uv="smaller",kee=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],fA=M(uv,kee,t=>{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=jr({typed:e}),l=Gn({typed:e,SparseMatrix:o}),u=wr({typed:e,DenseMatrix:i}),c=Pt({typed:e,matrix:n,concat:a}),f=_o({typed:e});return e(uv,$ee({typed:e,config:r}),{"boolean, boolean":(m,p)=>mmm.compare(p)===-1,"Complex, Complex":function(p,d){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),$ee=M(uv,["typed","config"],t=>{var{typed:e,config:r}=t;return e(uv,{"number, number":function(i,a){return i{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=jr({typed:e}),l=Gn({typed:e,SparseMatrix:o}),u=wr({typed:e,DenseMatrix:i}),c=Pt({typed:e,matrix:n,concat:a}),f=_o({typed:e});return e(lv,Ree({typed:e,config:r}),{"boolean, boolean":(m,p)=>m<=p,"BigNumber, BigNumber":function(p,d){return p.lte(d)||mn(p,d,r.relTol,r.absTol)},"bigint, bigint":(m,p)=>m<=p,"Fraction, Fraction":(m,p)=>m.compare(p)!==1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),Ree=M(lv,["typed","config"],t=>{var{typed:e,config:r}=t;return e(lv,{"number, number":function(i,a){return i<=a||Kr(i,a,r.relTol,r.absTol)}})});var cv="larger",Lee=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],mA=M(cv,Lee,t=>{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=jr({typed:e}),l=Gn({typed:e,SparseMatrix:o}),u=wr({typed:e,DenseMatrix:i}),c=Pt({typed:e,matrix:n,concat:a}),f=_o({typed:e});return e(cv,Vee({typed:e,config:r}),{"boolean, boolean":(m,p)=>m>p,"BigNumber, BigNumber":function(p,d){return p.gt(d)&&!mn(p,d,r.relTol,r.absTol)},"bigint, bigint":(m,p)=>m>p,"Fraction, Fraction":(m,p)=>m.compare(p)===1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),Vee=M(cv,["typed","config"],t=>{var{typed:e,config:r}=t;return e(cv,{"number, number":function(i,a){return i>a&&!Kr(i,a,r.relTol,r.absTol)}})});var fv="largerEq",Uee=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],dA=M(fv,Uee,t=>{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=jr({typed:e}),l=Gn({typed:e,SparseMatrix:o}),u=wr({typed:e,DenseMatrix:i}),c=Pt({typed:e,matrix:n,concat:a}),f=_o({typed:e});return e(fv,qee({typed:e,config:r}),{"boolean, boolean":(m,p)=>m>=p,"BigNumber, BigNumber":function(p,d){return p.gte(d)||mn(p,d,r.relTol,r.absTol)},"bigint, bigint":function(p,d){return p>=d},"Fraction, Fraction":(m,p)=>m.compare(p)!==-1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),qee=M(fv,["typed","config"],t=>{var{typed:e,config:r}=t;return e(fv,{"number, number":function(i,a){return i>=a||Kr(i,a,r.relTol,r.absTol)}})});var u$="deepEqual",zee=["typed","equal"],hA=M(u$,zee,t=>{var{typed:e,equal:r}=t;return e(u$,{"any, any":function(a,o){return n(a.valueOf(),o.valueOf())}});function n(i,a){if(Array.isArray(i))if(Array.isArray(a)){var o=i.length;if(o!==a.length)return!1;for(var s=0;s{var{typed:e,config:r,equalScalar:n,matrix:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=jr({typed:e}),u=Gn({typed:e,SparseMatrix:s}),c=wr({typed:e,DenseMatrix:a}),f=Pt({typed:e,matrix:i,concat:o});return e(pv,Gee({typed:e,equalScalar:n}),f({elop:m,SS:u,DS:l,Ss:c}));function m(p,d){return!n(p,d)}}),Gee=M(pv,["typed","equalScalar"],t=>{var{typed:e,equalScalar:r}=t;return e(pv,{"any, any":function(i,a){return i===null?a!==null:a===null?i!==null:i===void 0?a!==void 0:a===void 0?i!==void 0:!r(i,a)}})});var l$="partitionSelect",Wee=["typed","isNumeric","isNaN","compare"],vA=M(l$,Wee,t=>{var{typed:e,isNumeric:r,isNaN:n,compare:i}=t,a=i,o=(u,c)=>-i(u,c);return e(l$,{"Array | Matrix, number":function(c,f){return s(c,f,a)},"Array | Matrix, number, string":function(c,f,m){if(m==="asc")return s(c,f,a);if(m==="desc")return s(c,f,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s});function s(u,c,f){if(!Qe(c)||c<0)throw new Error("k must be a non-negative integer");if(rt(u)){var m=u.size();if(m.length>1)throw new Error("Only one dimensional matrices supported");return l(u.valueOf(),c,f)}if(Array.isArray(u))return l(u,c,f)}function l(u,c,f){if(c>=u.length)throw new Error("k out of bounds");for(var m=0;m=0){var T=u[x];u[x]=u[h],u[h]=T,--x}else++h;f(u[h],b)>0&&--h,c<=h?d=h:p=h+1}return u[c]}});var c$="sort",Yee=["typed","matrix","compare","compareNatural"],yA=M(c$,Yee,t=>{var{typed:e,matrix:r,compare:n,compareNatural:i}=t,a=n,o=(c,f)=>-n(c,f);return e(c$,{Array:function(f){return l(f),f.sort(a)},Matrix:function(f){return u(f),r(f.toArray().sort(a),f.storage())},"Array, function":function(f,m){return l(f),f.sort(m)},"Matrix, function":function(f,m){return u(f),r(f.toArray().sort(m),f.storage())},"Array, string":function(f,m){return l(f),f.sort(s(m))},"Matrix, string":function(f,m){return u(f),r(f.toArray().sort(s(m)),f.storage())}});function s(c){if(c==="asc")return a;if(c==="desc")return o;if(c==="natural")return i;throw new Error('String "asc", "desc", or "natural" expected')}function l(c){if(pt(c).length!==1)throw new Error("One dimensional array expected")}function u(c){if(c.size().length!==1)throw new Error("One dimensional matrix expected")}});var f$="max",jee=["typed","config","numeric","larger"],wm=M(f$,jee,t=>{var{typed:e,config:r,numeric:n,larger:i}=t;return e(f$,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(l,u){return zu(l,u.valueOf(),a)},"...":function(l){if(wo(l))throw new TypeError("Scalar values expected in function max");return o(l)}});function a(s,l){try{return i(s,l)?s:l}catch(u){throw An(u,"max",l)}}function o(s){var l;if(Oi(s,function(u){try{isNaN(u)&&typeof u=="number"?l=NaN:(l===void 0||i(u,l))&&(l=u)}catch(c){throw An(c,"max",u)}}),l===void 0)throw new Error("Cannot calculate max of an empty array");return typeof l=="string"&&(l=n(l,Bi(l,r))),l}});var p$="min",Zee=["typed","config","numeric","smaller"],_m=M(p$,Zee,t=>{var{typed:e,config:r,numeric:n,smaller:i}=t;return e(p$,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(l,u){return zu(l,u.valueOf(),a)},"...":function(l){if(wo(l))throw new TypeError("Scalar values expected in function min");return o(l)}});function a(s,l){try{return i(s,l)?s:l}catch(u){throw An(u,"min",l)}}function o(s){var l;if(Oi(s,function(u){try{isNaN(u)&&typeof u=="number"?l=NaN:(l===void 0||i(u,l))&&(l=u)}catch(c){throw An(c,"min",u)}}),l===void 0)throw new Error("Cannot calculate min of an empty array");return typeof l=="string"&&(l=n(l,Bi(l,r))),l}});var Jee="ImmutableDenseMatrix",Xee=["smaller","DenseMatrix"],xA=M(Jee,Xee,t=>{var{smaller:e,DenseMatrix:r}=t;function n(i,a){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(a&&!bn(a))throw new Error("Invalid datatype: "+a);if(rt(i)||vr(i)){var o=new r(i,a);this._data=o._data,this._size=o._size,this._datatype=o._datatype,this._min=null,this._max=null}else if(i&&vr(i.data)&&vr(i.size))this._data=i.data,this._size=i.size,this._datatype=i.datatype,this._min=typeof i.min<"u"?i.min:null,this._max=typeof i.max<"u"?i.max:null;else{if(i)throw new TypeError("Unsupported type of data ("+fr(i)+")");this._data=[],this._size=[0],this._datatype=a,this._min=null,this._max=null}}return n.prototype=new r,n.prototype.type="ImmutableDenseMatrix",n.prototype.isImmutableDenseMatrix=!0,n.prototype.subset=function(i){switch(arguments.length){case 1:{var a=r.prototype.subset.call(this,i);return rt(a)?new n({data:a._data,size:a._size,datatype:a._datatype}):a}case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},n.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},n.prototype.reshape=function(){throw new Error("Cannot invoke reshape on an Immutable Matrix instance")},n.prototype.clone=function(){return new n({data:yt(this._data),size:yt(this._size),datatype:this._datatype})},n.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},n.fromJSON=function(i){return new n(i)},n.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},n.prototype.min=function(){if(this._min===null){var i=null;this.forEach(function(a){(i===null||e(a,i))&&(i=a)}),this._min=i!==null?i:void 0}return this._min},n.prototype.max=function(){if(this._max===null){var i=null;this.forEach(function(a){(i===null||e(i,a))&&(i=a)}),this._max=i!==null?i:void 0}return this._max},n},{isClass:!0});var Qee="Index",Kee=["ImmutableDenseMatrix","getMatrixDataType"],bA=M(Qee,Kee,t=>{var{ImmutableDenseMatrix:e,getMatrixDataType:r}=t;function n(a){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._sourceSize=[],this._isScalar=!0;for(var o=0,s=arguments.length;o{r&&e.push(n)}),e}var ete="FibonacciHeap",tte=["smaller","larger"],wA=M(ete,tte,t=>{var{smaller:e,larger:r}=t,n=1/Math.log((1+Math.sqrt(5))/2);function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}i.prototype.type="FibonacciHeap",i.prototype.isFibonacciHeap=!0,i.prototype.insert=function(c,f){var m={key:c,value:f,degree:0};if(this._minimum){var p=this._minimum;m.left=p,m.right=p.right,p.right=m,m.right.left=m,e(c,p.key)&&(this._minimum=m)}else m.left=m,m.right=m,this._minimum=m;return this._size++,m},i.prototype.size=function(){return this._size},i.prototype.clear=function(){this._minimum=null,this._size=0},i.prototype.isEmpty=function(){return this._size===0},i.prototype.extractMinimum=function(){var c=this._minimum;if(c===null)return c;for(var f=this._minimum,m=c.degree,p=c.child;m>0;){var d=p.right;p.left.right=p.right,p.right.left=p.left,p.left=f,p.right=f.right,f.right=p,p.right.left=p,p.parent=null,p=d,m--}return c.left.right=c.right,c.right.left=c.left,c===c.right?f=null:(f=c.right,f=u(f,this._size)),this._size--,this._minimum=f,c},i.prototype.remove=function(c){this._minimum=a(this._minimum,c,-1),this.extractMinimum()};function a(c,f,m){f.key=m;var p=f.parent;return p&&e(f.key,p.key)&&(o(c,f,p),s(c,p)),e(f.key,c.key)&&(c=f),c}function o(c,f,m){f.left.right=f.right,f.right.left=f.left,m.degree--,m.child===f&&(m.child=f.right),m.degree===0&&(m.child=null),f.left=c,f.right=c.right,c.right=f,f.right.left=f,f.parent=null,f.mark=!1}function s(c,f){var m=f.parent;m&&(f.mark?(o(c,f,m),s(m)):f.mark=!0)}var l=function(f,m){f.left.right=f.right,f.right.left=f.left,f.parent=m,m.child?(f.left=m.child,f.right=m.child.right,m.child.right=f,f.right.left=f):(m.child=f,f.right=f,f.left=f),m.degree++,f.mark=!1};function u(c,f){var m=Math.floor(Math.log(f)*n)+1,p=new Array(m),d=0,h=c;if(h)for(d++,h=h.right;h!==c;)d++,h=h.right;for(var x;d>0;){for(var b=h.degree,T=h.right;x=p[b],!!x;){if(r(h.key,x.key)){var v=x;x=h,h=v}l(x,h),p[b]=null,b++}p[b]=h,h=T,d--}c=null;for(var A=0;A{var{addScalar:e,equalScalar:r,FibonacciHeap:n}=t;function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new n}return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(a,o){if(this._values[a])this._values[a].value=o;else{var s=this._heap.insert(a,o);this._values[a]=s}},i.prototype.get=function(a){var o=this._values[a];return o?o.value:0},i.prototype.accumulate=function(a,o){var s=this._values[a];s?s.value=e(s.value,o):(s=this._heap.insert(a,o),this._values[a]=s)},i.prototype.forEach=function(a,o,s){var l=this._heap,u=this._values,c=[],f=l.extractMinimum();for(f&&c.push(f);f&&f.key<=o;)f.key>=a&&(r(f.value,0)||s(f.key,f.value,this)),f=l.extractMinimum(),f&&c.push(f);for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{};return r=r??Number.POSITIVE_INFINITY,e=e??JSON.stringify,function n(){typeof n.cache!="object"&&(n.cache={values:new Map,lru:d$(r||Number.POSITIVE_INFINITY)});for(var i=[],a=0;a{var{on:e,config:r,addScalar:n,subtractScalar:i,multiplyScalar:a,divideScalar:o,pow:s,abs:l,fix:u,round:c,equal:f,isNumeric:m,format:p,number:d,Complex:h,BigNumber:x,Fraction:b}=t,T=d;function v(G,Z){if(!(this instanceof v))throw new Error("Constructor must be called with the new operator");if(!(G==null||m(G)||ra(G)))throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");if(this.fixPrefix=!1,this.skipAutomaticSimplification=!0,Z===void 0)this.units=[],this.dimensions=W.map(xe=>0);else if(typeof Z=="string"){var ge=v.parse(Z);this.units=ge.units,this.dimensions=ge.dimensions}else if(bi(Z)&&Z.value===null)this.fixPrefix=Z.fixPrefix,this.skipAutomaticSimplification=Z.skipAutomaticSimplification,this.dimensions=Z.dimensions.slice(0),this.units=Z.units.map(xe=>sn({},xe));else throw new TypeError("Second parameter in Unit constructor must be a string or valueless Unit");this.value=this._normalize(G)}Object.defineProperty(v,"name",{value:"Unit"}),v.prototype.constructor=v,v.prototype.type="Unit",v.prototype.isUnit=!0;var A,w,y;function E(){for(;y===" "||y===" ";)N()}function D(G){return G>="0"&&G<="9"||G==="."}function _(G){return G>="0"&&G<="9"}function N(){w++,y=A.charAt(w)}function C(G){w=G,y=A.charAt(w)}function B(){var G="",Z=w;if(y==="+"?N():y==="-"&&(G+=y,N()),!D(y))return C(Z),null;if(y==="."){if(G+=y,N(),!_(y))return C(Z),null}else{for(;_(y);)G+=y,N();y==="."&&(G+=y,N())}for(;_(y);)G+=y,N();if(y==="E"||y==="e"){var ge="",xe=w;if(ge+=y,N(),(y==="+"||y==="-")&&(ge+=y,N()),!_(y))return C(xe),G;for(G=G+ge;_(y);)G+=y,N()}return G}function R(){for(var G="";_(y)||v.isValidAlpha(y);)G+=y,N();var Z=G.charAt(0);return v.isValidAlpha(Z)?G:null}function V(G){return y===G?(N(),G):null}v.parse=function(G,Z){if(Z=Z||{},A=G,w=-1,y="",typeof A!="string")throw new TypeError("Invalid argument in Unit.parse, string expected");var ge=new v;ge.units=[];var xe=1,Ee=!1;N(),E();var Be=B(),Ve=null;if(Be){if(r.number==="BigNumber")Ve=new x(Be);else if(r.number==="Fraction")try{Ve=new b(Be)}catch{Ve=parseFloat(Be)}else Ve=parseFloat(Be);E(),V("*")?(xe=1,Ee=!0):V("/")&&(xe=-1,Ee=!0)}for(var et=[],St=1;;){for(E();y==="(";)et.push(xe),St*=xe,xe=1,N(),E();var Ye=void 0;if(y){var ur=y;if(Ye=R(),Ye===null)throw new SyntaxError('Unexpected "'+ur+'" in "'+A+'" at index '+w.toString())}else break;var Jt=L(Ye);if(Jt===null)throw new SyntaxError('Unit "'+Ye+'" not found.');var He=xe*St;if(E(),V("^")){E();var at=B();if(at===null)throw new SyntaxError('In "'+G+'", "^" must be followed by a floating-point number');He*=at}ge.units.push({unit:Jt.unit,prefix:Jt.prefix,power:He});for(var Q=0;Q1||Math.abs(this.units[0].power-1)>1e-15},v.prototype._normalize=function(G){if(G==null||this.units.length===0)return G;for(var Z=G,ge=v._getNumberConverter(fr(G)),xe=0;xe{if(st(U,G)){var Z=U[G],ge=Z.prefixes[""];return{unit:Z,prefix:ge}}for(var xe in U)if(st(U,xe)&&$P(G,xe)){var Ee=U[xe],Be=G.length-xe.length,Ve=G.substring(0,Be),et=st(Ee.prefixes,Ve)?Ee.prefixes[Ve]:void 0;if(et!==void 0)return{unit:Ee,prefix:et}}return null},{hasher:G=>G[0],limit:100});v.isValuelessUnit=function(G){return L(G)!==null},v.prototype.hasBase=function(G){if(typeof G=="string"&&(G=O[G]),!G)return!1;for(var Z=0;Z1e-12)return!1;return!0},v.prototype.equalBase=function(G){for(var Z=0;Z1e-12)return!1;return!0},v.prototype.equals=function(G){return this.equalBase(G)&&f(this.value,G.value)},v.prototype.multiply=function(G){for(var Z=this.clone(),ge=bi(G)?G:new v(G),xe=0;xe0?this.formatUnits():null,fixPrefix:this.fixPrefix}},v.fromJSON=function(G){var Z,ge=new v(G.value,(Z=G.unit)!==null&&Z!==void 0?Z:void 0);return ge.fixPrefix=G.fixPrefix||!1,ge},v.prototype.valueOf=v.prototype.toString,v.prototype.simplify=function(){var G=this.clone(),Z=[],ge;for(var xe in be)if(st(be,xe)&&G.hasBase(O[xe])){ge=xe;break}if(ge==="NONE")G.units=[];else{var Ee;if(ge&&st(be,ge)&&(Ee=be[ge]),Ee)G.units=[{unit:Ee.unit,prefix:Ee.prefix,power:1}];else{for(var Be=!1,Ve=0;Ve1e-12&&(st(be,et)?Z.push({unit:be[et].unit,prefix:be[et].prefix,power:G.dimensions[Ve]||0}):Be=!0)}Z.length1e-12)if(st(se.si,xe))Z.push({unit:se.si[xe].unit,prefix:se.si[xe].prefix,power:G.dimensions[ge]||0});else throw new Error("Cannot express custom unit "+xe+" in SI units")}return G.units=Z,G.fixPrefix=!0,G.skipAutomaticSimplification=!0,this.value!==null?(G.value=null,this.to(G)):G},v.prototype.formatUnits=function(){for(var G="",Z="",ge=0,xe=0,Ee=0;Ee0?(ge++,G+=" "+this.units[Ee].prefix.name+this.units[Ee].unit.name,Math.abs(this.units[Ee].power-1)>1e-15&&(G+="^"+this.units[Ee].power)):this.units[Ee].power<0&&xe++;if(xe>0)for(var Be=0;Be0?(Z+=" "+this.units[Be].prefix.name+this.units[Be].unit.name,Math.abs(this.units[Be].power+1)>1e-15&&(Z+="^"+-this.units[Be].power)):(Z+=" "+this.units[Be].prefix.name+this.units[Be].unit.name,Z+="^"+this.units[Be].power));G=G.substr(1),Z=Z.substr(1),ge>1&&xe>0&&(G="("+G+")"),xe>1&&ge>0&&(Z="("+Z+")");var Ve=G;return ge>0&&xe>0&&(Ve+=" / "),Ve+=Z,Ve},v.prototype.format=function(G){var Z=this.skipAutomaticSimplification||this.value===null?this.clone():this.simplify(),ge=!1;typeof Z.value<"u"&&Z.value!==null&&ra(Z.value)&&(ge=Math.abs(Z.value.re)<1e-14);for(var xe in Z.units)st(Z.units,xe)&&Z.units[xe].unit&&(Z.units[xe].unit.name==="VA"&&ge?Z.units[xe].unit=U.VAR:Z.units[xe].unit.name==="VAR"&&!ge&&(Z.units[xe].unit=U.VA));Z.units.length===1&&!Z.fixPrefix&&Math.abs(Z.units[0].power-Math.round(Z.units[0].power))<1e-14&&(Z.units[0].prefix=Z._bestPrefix());var Ee=Z._denormalize(Z.value),Be=Z.value!==null?p(Ee,G||{}):"",Ve=Z.formatUnits();return Z.value&&ra(Z.value)&&(Be="("+Be+")"),Ve.length>0&&Be.length>0&&(Be+=" "),Be+=Ve,Be},v.prototype._bestPrefix=function(){if(this.units.length!==1)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var G=this.value!==null?l(this.value):0,Z=l(this.units[0].unit.value),ge=this.units[0].prefix;if(G===0)return ge;var xe=this.units[0].power,Ee=Math.log(G/Math.pow(ge.value*Z,xe))/Math.LN10-1.2;if(Ee>-2.200001&&Ee<1.800001)return ge;Ee=Math.abs(Ee);var Be=this.units[0].unit.prefixes;for(var Ve in Be)if(st(Be,Ve)){var et=Be[Ve];if(et.scientific){var St=Math.abs(Math.log(G/Math.pow(et.value*Z,xe))/Math.LN10-1.2);(St0)},U={meter:{name:"meter",base:O.LENGTH,prefixes:k.LONG,value:1,offset:0},inch:{name:"inch",base:O.LENGTH,prefixes:k.NONE,value:.0254,offset:0},foot:{name:"foot",base:O.LENGTH,prefixes:k.NONE,value:.3048,offset:0},yard:{name:"yard",base:O.LENGTH,prefixes:k.NONE,value:.9144,offset:0},mile:{name:"mile",base:O.LENGTH,prefixes:k.NONE,value:1609.344,offset:0},link:{name:"link",base:O.LENGTH,prefixes:k.NONE,value:.201168,offset:0},rod:{name:"rod",base:O.LENGTH,prefixes:k.NONE,value:5.0292,offset:0},chain:{name:"chain",base:O.LENGTH,prefixes:k.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:O.LENGTH,prefixes:k.NONE,value:1e-10,offset:0},m:{name:"m",base:O.LENGTH,prefixes:k.SHORT,value:1,offset:0},in:{name:"in",base:O.LENGTH,prefixes:k.NONE,value:.0254,offset:0},ft:{name:"ft",base:O.LENGTH,prefixes:k.NONE,value:.3048,offset:0},yd:{name:"yd",base:O.LENGTH,prefixes:k.NONE,value:.9144,offset:0},mi:{name:"mi",base:O.LENGTH,prefixes:k.NONE,value:1609.344,offset:0},li:{name:"li",base:O.LENGTH,prefixes:k.NONE,value:.201168,offset:0},rd:{name:"rd",base:O.LENGTH,prefixes:k.NONE,value:5.02921,offset:0},ch:{name:"ch",base:O.LENGTH,prefixes:k.NONE,value:20.1168,offset:0},mil:{name:"mil",base:O.LENGTH,prefixes:k.NONE,value:254e-7,offset:0},m2:{name:"m2",base:O.SURFACE,prefixes:k.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:O.SURFACE,prefixes:k.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:O.SURFACE,prefixes:k.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:O.SURFACE,prefixes:k.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:O.SURFACE,prefixes:k.NONE,value:2589988110336e-6,offset:0},sqrd:{name:"sqrd",base:O.SURFACE,prefixes:k.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:O.SURFACE,prefixes:k.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:O.SURFACE,prefixes:k.NONE,value:64516e-14,offset:0},acre:{name:"acre",base:O.SURFACE,prefixes:k.NONE,value:4046.86,offset:0},hectare:{name:"hectare",base:O.SURFACE,prefixes:k.NONE,value:1e4,offset:0},m3:{name:"m3",base:O.VOLUME,prefixes:k.CUBIC,value:1,offset:0},L:{name:"L",base:O.VOLUME,prefixes:k.SHORT,value:.001,offset:0},l:{name:"l",base:O.VOLUME,prefixes:k.SHORT,value:.001,offset:0},litre:{name:"litre",base:O.VOLUME,prefixes:k.LONG,value:.001,offset:0},cuin:{name:"cuin",base:O.VOLUME,prefixes:k.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:O.VOLUME,prefixes:k.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:O.VOLUME,prefixes:k.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:O.VOLUME,prefixes:k.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:O.VOLUME,prefixes:k.NONE,value:15e-6,offset:0},drop:{name:"drop",base:O.VOLUME,prefixes:k.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:O.VOLUME,prefixes:k.NONE,value:5e-8,offset:0},minim:{name:"minim",base:O.VOLUME,prefixes:k.NONE,value:61611519921875e-21,offset:0},fluiddram:{name:"fluiddram",base:O.VOLUME,prefixes:k.NONE,value:36966911953125e-19,offset:0},fluidounce:{name:"fluidounce",base:O.VOLUME,prefixes:k.NONE,value:295735295625e-16,offset:0},gill:{name:"gill",base:O.VOLUME,prefixes:k.NONE,value:.00011829411825,offset:0},cc:{name:"cc",base:O.VOLUME,prefixes:k.NONE,value:1e-6,offset:0},cup:{name:"cup",base:O.VOLUME,prefixes:k.NONE,value:.0002365882365,offset:0},pint:{name:"pint",base:O.VOLUME,prefixes:k.NONE,value:.000473176473,offset:0},quart:{name:"quart",base:O.VOLUME,prefixes:k.NONE,value:.000946352946,offset:0},gallon:{name:"gallon",base:O.VOLUME,prefixes:k.NONE,value:.003785411784,offset:0},beerbarrel:{name:"beerbarrel",base:O.VOLUME,prefixes:k.NONE,value:.117347765304,offset:0},oilbarrel:{name:"oilbarrel",base:O.VOLUME,prefixes:k.NONE,value:.158987294928,offset:0},hogshead:{name:"hogshead",base:O.VOLUME,prefixes:k.NONE,value:.238480942392,offset:0},g:{name:"g",base:O.MASS,prefixes:k.SHORT,value:.001,offset:0},gram:{name:"gram",base:O.MASS,prefixes:k.LONG,value:.001,offset:0},ton:{name:"ton",base:O.MASS,prefixes:k.SHORT,value:907.18474,offset:0},t:{name:"t",base:O.MASS,prefixes:k.SHORT,value:1e3,offset:0},tonne:{name:"tonne",base:O.MASS,prefixes:k.LONG,value:1e3,offset:0},grain:{name:"grain",base:O.MASS,prefixes:k.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:O.MASS,prefixes:k.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:O.MASS,prefixes:k.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:O.MASS,prefixes:k.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:O.MASS,prefixes:k.NONE,value:45.359237,offset:0},stick:{name:"stick",base:O.MASS,prefixes:k.NONE,value:.115,offset:0},stone:{name:"stone",base:O.MASS,prefixes:k.NONE,value:6.35029318,offset:0},gr:{name:"gr",base:O.MASS,prefixes:k.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:O.MASS,prefixes:k.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:O.MASS,prefixes:k.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:O.MASS,prefixes:k.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:O.MASS,prefixes:k.NONE,value:45.359237,offset:0},s:{name:"s",base:O.TIME,prefixes:k.SHORT,value:1,offset:0},min:{name:"min",base:O.TIME,prefixes:k.NONE,value:60,offset:0},h:{name:"h",base:O.TIME,prefixes:k.NONE,value:3600,offset:0},second:{name:"second",base:O.TIME,prefixes:k.LONG,value:1,offset:0},sec:{name:"sec",base:O.TIME,prefixes:k.LONG,value:1,offset:0},minute:{name:"minute",base:O.TIME,prefixes:k.NONE,value:60,offset:0},hour:{name:"hour",base:O.TIME,prefixes:k.NONE,value:3600,offset:0},day:{name:"day",base:O.TIME,prefixes:k.NONE,value:86400,offset:0},week:{name:"week",base:O.TIME,prefixes:k.NONE,value:7*86400,offset:0},month:{name:"month",base:O.TIME,prefixes:k.NONE,value:2629800,offset:0},year:{name:"year",base:O.TIME,prefixes:k.NONE,value:31557600,offset:0},decade:{name:"decade",base:O.TIME,prefixes:k.NONE,value:315576e3,offset:0},century:{name:"century",base:O.TIME,prefixes:k.NONE,value:315576e4,offset:0},millennium:{name:"millennium",base:O.TIME,prefixes:k.NONE,value:315576e5,offset:0},hertz:{name:"Hertz",base:O.FREQUENCY,prefixes:k.LONG,value:1,offset:0,reciprocal:!0},Hz:{name:"Hz",base:O.FREQUENCY,prefixes:k.SHORT,value:1,offset:0,reciprocal:!0},rad:{name:"rad",base:O.ANGLE,prefixes:k.SHORT,value:1,offset:0},radian:{name:"radian",base:O.ANGLE,prefixes:k.LONG,value:1,offset:0},deg:{name:"deg",base:O.ANGLE,prefixes:k.SHORT,value:null,offset:0},degree:{name:"degree",base:O.ANGLE,prefixes:k.LONG,value:null,offset:0},grad:{name:"grad",base:O.ANGLE,prefixes:k.SHORT,value:null,offset:0},gradian:{name:"gradian",base:O.ANGLE,prefixes:k.LONG,value:null,offset:0},cycle:{name:"cycle",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},arcsec:{name:"arcsec",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},arcmin:{name:"arcmin",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},A:{name:"A",base:O.CURRENT,prefixes:k.SHORT,value:1,offset:0},ampere:{name:"ampere",base:O.CURRENT,prefixes:k.LONG,value:1,offset:0},K:{name:"K",base:O.TEMPERATURE,prefixes:k.SHORT,value:1,offset:0},degC:{name:"degC",base:O.TEMPERATURE,prefixes:k.SHORT,value:1,offset:273.15},degF:{name:"degF",base:O.TEMPERATURE,prefixes:k.SHORT,value:new b(5,9),offset:459.67},degR:{name:"degR",base:O.TEMPERATURE,prefixes:k.SHORT,value:new b(5,9),offset:0},kelvin:{name:"kelvin",base:O.TEMPERATURE,prefixes:k.LONG,value:1,offset:0},celsius:{name:"celsius",base:O.TEMPERATURE,prefixes:k.LONG,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:O.TEMPERATURE,prefixes:k.LONG,value:new b(5,9),offset:459.67},rankine:{name:"rankine",base:O.TEMPERATURE,prefixes:k.LONG,value:new b(5,9),offset:0},mol:{name:"mol",base:O.AMOUNT_OF_SUBSTANCE,prefixes:k.SHORT,value:1,offset:0},mole:{name:"mole",base:O.AMOUNT_OF_SUBSTANCE,prefixes:k.LONG,value:1,offset:0},cd:{name:"cd",base:O.LUMINOUS_INTENSITY,prefixes:k.SHORT,value:1,offset:0},candela:{name:"candela",base:O.LUMINOUS_INTENSITY,prefixes:k.LONG,value:1,offset:0},N:{name:"N",base:O.FORCE,prefixes:k.SHORT,value:1,offset:0},newton:{name:"newton",base:O.FORCE,prefixes:k.LONG,value:1,offset:0},dyn:{name:"dyn",base:O.FORCE,prefixes:k.SHORT,value:1e-5,offset:0},dyne:{name:"dyne",base:O.FORCE,prefixes:k.LONG,value:1e-5,offset:0},lbf:{name:"lbf",base:O.FORCE,prefixes:k.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:O.FORCE,prefixes:k.NONE,value:4.4482216152605,offset:0},kip:{name:"kip",base:O.FORCE,prefixes:k.LONG,value:4448.2216,offset:0},kilogramforce:{name:"kilogramforce",base:O.FORCE,prefixes:k.NONE,value:9.80665,offset:0},J:{name:"J",base:O.ENERGY,prefixes:k.SHORT,value:1,offset:0},joule:{name:"joule",base:O.ENERGY,prefixes:k.LONG,value:1,offset:0},erg:{name:"erg",base:O.ENERGY,prefixes:k.SHORTLONG,value:1e-7,offset:0},Wh:{name:"Wh",base:O.ENERGY,prefixes:k.SHORT,value:3600,offset:0},BTU:{name:"BTU",base:O.ENERGY,prefixes:k.BTU,value:1055.05585262,offset:0},eV:{name:"eV",base:O.ENERGY,prefixes:k.SHORT,value:1602176565e-28,offset:0},electronvolt:{name:"electronvolt",base:O.ENERGY,prefixes:k.LONG,value:1602176565e-28,offset:0},W:{name:"W",base:O.POWER,prefixes:k.SHORT,value:1,offset:0},watt:{name:"watt",base:O.POWER,prefixes:k.LONG,value:1,offset:0},hp:{name:"hp",base:O.POWER,prefixes:k.NONE,value:745.6998715386,offset:0},VAR:{name:"VAR",base:O.POWER,prefixes:k.SHORT,value:h.I,offset:0},VA:{name:"VA",base:O.POWER,prefixes:k.SHORT,value:1,offset:0},Pa:{name:"Pa",base:O.PRESSURE,prefixes:k.SHORT,value:1,offset:0},psi:{name:"psi",base:O.PRESSURE,prefixes:k.NONE,value:6894.75729276459,offset:0},atm:{name:"atm",base:O.PRESSURE,prefixes:k.NONE,value:101325,offset:0},bar:{name:"bar",base:O.PRESSURE,prefixes:k.SHORTLONG,value:1e5,offset:0},torr:{name:"torr",base:O.PRESSURE,prefixes:k.NONE,value:133.322,offset:0},mmHg:{name:"mmHg",base:O.PRESSURE,prefixes:k.NONE,value:133.322,offset:0},mmH2O:{name:"mmH2O",base:O.PRESSURE,prefixes:k.NONE,value:9.80665,offset:0},cmH2O:{name:"cmH2O",base:O.PRESSURE,prefixes:k.NONE,value:98.0665,offset:0},coulomb:{name:"coulomb",base:O.ELECTRIC_CHARGE,prefixes:k.LONG,value:1,offset:0},C:{name:"C",base:O.ELECTRIC_CHARGE,prefixes:k.SHORT,value:1,offset:0},farad:{name:"farad",base:O.ELECTRIC_CAPACITANCE,prefixes:k.LONG,value:1,offset:0},F:{name:"F",base:O.ELECTRIC_CAPACITANCE,prefixes:k.SHORT,value:1,offset:0},volt:{name:"volt",base:O.ELECTRIC_POTENTIAL,prefixes:k.LONG,value:1,offset:0},V:{name:"V",base:O.ELECTRIC_POTENTIAL,prefixes:k.SHORT,value:1,offset:0},ohm:{name:"ohm",base:O.ELECTRIC_RESISTANCE,prefixes:k.SHORTLONG,value:1,offset:0},henry:{name:"henry",base:O.ELECTRIC_INDUCTANCE,prefixes:k.LONG,value:1,offset:0},H:{name:"H",base:O.ELECTRIC_INDUCTANCE,prefixes:k.SHORT,value:1,offset:0},siemens:{name:"siemens",base:O.ELECTRIC_CONDUCTANCE,prefixes:k.LONG,value:1,offset:0},S:{name:"S",base:O.ELECTRIC_CONDUCTANCE,prefixes:k.SHORT,value:1,offset:0},weber:{name:"weber",base:O.MAGNETIC_FLUX,prefixes:k.LONG,value:1,offset:0},Wb:{name:"Wb",base:O.MAGNETIC_FLUX,prefixes:k.SHORT,value:1,offset:0},tesla:{name:"tesla",base:O.MAGNETIC_FLUX_DENSITY,prefixes:k.LONG,value:1,offset:0},T:{name:"T",base:O.MAGNETIC_FLUX_DENSITY,prefixes:k.SHORT,value:1,offset:0},b:{name:"b",base:O.BIT,prefixes:k.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:O.BIT,prefixes:k.BINARY_LONG,value:1,offset:0},B:{name:"B",base:O.BIT,prefixes:k.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:O.BIT,prefixes:k.BINARY_LONG,value:8,offset:0}},de={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",lt:"l",litres:"litre",liter:"litre",liters:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fldr:"fluiddram",fluiddrams:"fluiddram",floz:"fluidounce",fluidounces:"fluidounce",gi:"gill",gills:"gill",cp:"cup",cups:"cup",pt:"pint",pints:"pint",qt:"quart",quarts:"quart",gal:"gallon",gallons:"gallon",bbl:"beerbarrel",beerbarrels:"beerbarrel",obl:"oilbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",lb:"lbm",lbs:"lbm",kips:"kip",kgf:"kilogramforce",acres:"acre",hectares:"hectare",sqfeet:"sqft",sqyard:"sqyd",sqmile:"sqmi",sqmiles:"sqmi",mmhg:"mmHg",mmh2o:"mmH2O",cmh2o:"cmH2O",seconds:"second",secs:"second",minutes:"minute",mins:"minute",hours:"hour",hr:"hour",hrs:"hour",days:"day",weeks:"week",months:"month",years:"year",decades:"decade",centuries:"century",millennia:"millennium",hertz:"hertz",radians:"radian",degrees:"degree",gradians:"gradian",cycles:"cycle",arcsecond:"arcsec",arcseconds:"arcsec",arcminute:"arcmin",arcminutes:"arcmin",BTUs:"BTU",watts:"watt",joules:"joule",amperes:"ampere",amps:"ampere",amp:"ampere",coulombs:"coulomb",volts:"volt",ohms:"ohm",farads:"farad",webers:"weber",teslas:"tesla",electronvolts:"electronvolt",moles:"mole",bit:"bits",byte:"bytes"};function we(G){if(G.number==="BigNumber"){var Z=Am(x);U.rad.value=new x(1),U.deg.value=Z.div(180),U.grad.value=Z.div(200),U.cycle.value=Z.times(2),U.arcsec.value=Z.div(648e3),U.arcmin.value=Z.div(10800)}else U.rad.value=1,U.deg.value=Math.PI/180,U.grad.value=Math.PI/200,U.cycle.value=Math.PI*2,U.arcsec.value=Math.PI/648e3,U.arcmin.value=Math.PI/10800;U.radian.value=U.rad.value,U.degree.value=U.deg.value,U.gradian.value=U.grad.value}we(r),e&&e("config",function(G,Z){G.number!==Z.number&&we(G)});var se={si:{NONE:{unit:J,prefix:k.NONE[""]},LENGTH:{unit:U.m,prefix:k.SHORT[""]},MASS:{unit:U.g,prefix:k.SHORT.k},TIME:{unit:U.s,prefix:k.SHORT[""]},CURRENT:{unit:U.A,prefix:k.SHORT[""]},TEMPERATURE:{unit:U.K,prefix:k.SHORT[""]},LUMINOUS_INTENSITY:{unit:U.cd,prefix:k.SHORT[""]},AMOUNT_OF_SUBSTANCE:{unit:U.mol,prefix:k.SHORT[""]},ANGLE:{unit:U.rad,prefix:k.SHORT[""]},BIT:{unit:U.bits,prefix:k.SHORT[""]},FORCE:{unit:U.N,prefix:k.SHORT[""]},ENERGY:{unit:U.J,prefix:k.SHORT[""]},POWER:{unit:U.W,prefix:k.SHORT[""]},PRESSURE:{unit:U.Pa,prefix:k.SHORT[""]},ELECTRIC_CHARGE:{unit:U.C,prefix:k.SHORT[""]},ELECTRIC_CAPACITANCE:{unit:U.F,prefix:k.SHORT[""]},ELECTRIC_POTENTIAL:{unit:U.V,prefix:k.SHORT[""]},ELECTRIC_RESISTANCE:{unit:U.ohm,prefix:k.SHORT[""]},ELECTRIC_INDUCTANCE:{unit:U.H,prefix:k.SHORT[""]},ELECTRIC_CONDUCTANCE:{unit:U.S,prefix:k.SHORT[""]},MAGNETIC_FLUX:{unit:U.Wb,prefix:k.SHORT[""]},MAGNETIC_FLUX_DENSITY:{unit:U.T,prefix:k.SHORT[""]},FREQUENCY:{unit:U.Hz,prefix:k.SHORT[""]}}};se.cgs=JSON.parse(JSON.stringify(se.si)),se.cgs.LENGTH={unit:U.m,prefix:k.SHORT.c},se.cgs.MASS={unit:U.g,prefix:k.SHORT[""]},se.cgs.FORCE={unit:U.dyn,prefix:k.SHORT[""]},se.cgs.ENERGY={unit:U.erg,prefix:k.NONE[""]},se.us=JSON.parse(JSON.stringify(se.si)),se.us.LENGTH={unit:U.ft,prefix:k.NONE[""]},se.us.MASS={unit:U.lbm,prefix:k.NONE[""]},se.us.TEMPERATURE={unit:U.degF,prefix:k.NONE[""]},se.us.FORCE={unit:U.lbf,prefix:k.NONE[""]},se.us.ENERGY={unit:U.BTU,prefix:k.BTU[""]},se.us.POWER={unit:U.hp,prefix:k.NONE[""]},se.us.PRESSURE={unit:U.psi,prefix:k.NONE[""]},se.auto=JSON.parse(JSON.stringify(se.si));var be=se.auto;v.setUnitSystem=function(G){if(st(se,G))be=se[G];else throw new Error("Unit system "+G+" does not exist. Choices are: "+Object.keys(se).join(", "))},v.getUnitSystem=function(){for(var G in se)if(st(se,G)&&se[G]===be)return G},v.typeConverters={BigNumber:function(Z){return Z!=null&&Z.isFraction?new x(String(Z.n)).div(String(Z.d)).times(String(Z.s)):new x(Z+"")},Fraction:function(Z){return new b(Z)},Complex:function(Z){return Z},number:function(Z){return Z!=null&&Z.isFraction?d(Z):Z}},v.prototype._numberConverter=function(){var G=v.typeConverters[this.valueType()];if(G)return G;throw new TypeError('Unsupported Unit value type "'+this.valueType()+'"')},v._getNumberConverter=function(G){if(!v.typeConverters[G])throw new TypeError('Unsupported type "'+G+'"');return v.typeConverters[G]};for(var K in U)if(st(U,K)){var j=U[K];j.dimensions=j.base.dimensions}for(var ne in de)if(st(de,ne)){var pe=U[de[ne]],fe={};for(var Ae in pe)st(pe,Ae)&&(fe[Ae]=pe[Ae]);fe.name=ne,U[ne]=fe}v.isValidAlpha=function(Z){return/^[a-zA-Z]$/.test(Z)};function _e(G){for(var Z=0;Z0&&!(v.isValidAlpha(y)||_(y)))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+G+'"')}}return v.createUnit=function(G,Z){if(typeof G!="object")throw new TypeError("createUnit expects first parameter to be of type 'Object'");if(Z&&Z.override){for(var ge in G)if(st(G,ge)&&v.deleteUnit(ge),G[ge].aliases)for(var xe=0;xe"u"||Z===null)&&(Z={}),typeof G!="string")throw new TypeError("createUnitSingle expects first parameter to be of type 'string'");if(st(U,G))throw new Error('Cannot create unit "'+G+'": a unit with that name already exists');_e(G);var ge=null,xe=[],Ee=0,Be,Ve,et;if(Z&&Z.type==="Unit")ge=Z.clone();else if(typeof Z=="string")Z!==""&&(Be=Z);else if(typeof Z=="object")Be=Z.definition,Ve=Z.prefixes,Ee=Z.offset,et=Z.baseName,Z.aliases&&(xe=Z.aliases.valueOf());else throw new TypeError('Cannot create unit "'+G+'" from "'+Z.toString()+'": expecting "string" or "Unit" or "Object"');if(xe){for(var St=0;St1e-12){me=!1;break}if(me){at=!0,Ye.base=O[Q];break}}if(!at){et=et||G+"_STUFF";var Fe={dimensions:ge.dimensions.slice(0)};Fe.key=et,O[et]=Fe,be[et]={unit:Ye,prefix:k.NONE[""]},Ye.base=O[et]}}else{if(et=et||G+"_STUFF",W.indexOf(et)>=0)throw new Error('Cannot create new base unit "'+G+'": a base unit with that name already exists (and cannot be overridden)');W.push(et);for(var ur in O)st(O,ur)&&(O[ur].dimensions[W.length-1]=0);for(var Jt={dimensions:[]},He=0;He{var{typed:e,Unit:r}=t;return e(x$,{Unit:function(i){return i.clone()},string:function(i){return r.isValuelessUnit(i)?new r(null,i):r.parse(i,{allowNoUnits:!0})},"number | BigNumber | Fraction | Complex, string | Unit":function(i,a){return new r(i,a)},"number | BigNumber | Fraction":function(i){return new r(i)},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var b$="sparse",ste=["typed","SparseMatrix"],TA=M(b$,ste,t=>{var{typed:e,SparseMatrix:r}=t;return e(b$,{"":function(){return new r([])},string:function(i){return new r([],i)},"Array | Matrix":function(i){return new r(i)},"Array | Matrix, string":function(i,a){return new r(i,a)}})});var w$="createUnit",ute=["typed","Unit"],DA=M(w$,ute,t=>{var{typed:e,Unit:r}=t;return e(w$,{"Object, Object":function(i,a){return r.createUnit(i,a)},Object:function(i){return r.createUnit(i,{})},"string, Unit | string | Object, Object":function(i,a,o){var s={};return s[i]=a,r.createUnit(s,o)},"string, Unit | string | Object":function(i,a){var o={};return o[i]=a,r.createUnit(o,{})},string:function(i){var a={};return a[i]={},r.createUnit(a,{})}})});var _$="acos",lte=["typed","config","Complex"],MA=M(_$,lte,t=>{var{typed:e,config:r,Complex:n}=t;return e(_$,{number:function(a){return a>=-1&&a<=1||r.predictable?Math.acos(a):new n(a,0).acos()},Complex:function(a){return a.acos()},BigNumber:function(a){return a.acos()}})});var A$="acosh",cte=["typed","config","Complex"],CA=M(A$,cte,t=>{var{typed:e,config:r,Complex:n}=t;return e(A$,{number:function(a){return a>=1||r.predictable?qw(a):a<=-1?new n(Math.log(Math.sqrt(a*a-1)-a),Math.PI):new n(a,0).acosh()},Complex:function(a){return a.acosh()},BigNumber:function(a){return a.acosh()}})});var S$="acot",fte=["typed","BigNumber"],NA=M(S$,fte,t=>{var{typed:e,BigNumber:r}=t;return e(S$,{number:zw,Complex:function(i){return i.acot()},BigNumber:function(i){return new r(1).div(i).atan()}})});var E$="acoth",pte=["typed","config","Complex","BigNumber"],FA=M(E$,pte,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(E$,{number:function(o){return o>=1||o<=-1||r.predictable?Hw(o):new n(o,0).acoth()},Complex:function(o){return o.acoth()},BigNumber:function(o){return new i(1).div(o).atanh()}})});var T$="acsc",mte=["typed","config","Complex","BigNumber"],IA=M(T$,mte,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(T$,{number:function(o){return o<=-1||o>=1||r.predictable?Gw(o):new n(o,0).acsc()},Complex:function(o){return o.acsc()},BigNumber:function(o){return new i(1).div(o).asin()}})});var D$="acsch",dte=["typed","BigNumber"],PA=M(D$,dte,t=>{var{typed:e,BigNumber:r}=t;return e(D$,{number:Ww,Complex:function(i){return i.acsch()},BigNumber:function(i){return new r(1).div(i).asinh()}})});var M$="asec",hte=["typed","config","Complex","BigNumber"],BA=M(M$,hte,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(M$,{number:function(o){return o<=-1||o>=1||r.predictable?Yw(o):new n(o,0).asec()},Complex:function(o){return o.asec()},BigNumber:function(o){return new i(1).div(o).acos()}})});var C$="asech",gte=["typed","config","Complex","BigNumber"],kA=M(C$,gte,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(C$,{number:function(o){if(o<=1&&o>=-1||r.predictable){var s=1/o;if(s>0||r.predictable)return jw(o);var l=Math.sqrt(s*s-1);return new n(Math.log(l-s),Math.PI)}return new n(o,0).asech()},Complex:function(o){return o.asech()},BigNumber:function(o){return new i(1).div(o).acosh()}})});var N$="asin",vte=["typed","config","Complex"],$A=M(N$,vte,t=>{var{typed:e,config:r,Complex:n}=t;return e(N$,{number:function(a){return a>=-1&&a<=1||r.predictable?Math.asin(a):new n(a,0).asin()},Complex:function(a){return a.asin()},BigNumber:function(a){return a.asin()}})});var yte="asinh",xte=["typed"],OA=M(yte,xte,t=>{var{typed:e}=t;return e("asinh",{number:Zw,Complex:function(n){return n.asinh()},BigNumber:function(n){return n.asinh()}})});var bte="atan",wte=["typed"],RA=M(bte,wte,t=>{var{typed:e}=t;return e("atan",{number:function(n){return Math.atan(n)},Complex:function(n){return n.atan()},BigNumber:function(n){return n.atan()}})});var F$="atan2",_te=["typed","matrix","equalScalar","BigNumber","DenseMatrix","concat"],LA=M(F$,_te,t=>{var{typed:e,matrix:r,equalScalar:n,BigNumber:i,DenseMatrix:a,concat:o}=t,s=In({typed:e,equalScalar:n}),l=jr({typed:e}),u=tv({typed:e,equalScalar:n}),c=Pr({typed:e,equalScalar:n}),f=wr({typed:e,DenseMatrix:a}),m=Pt({typed:e,matrix:r,concat:o});return e(F$,{"number, number":Math.atan2,"BigNumber, BigNumber":(p,d)=>i.atan2(p,d)},m({scalar:"number | BigNumber",SS:u,DS:l,SD:s,Ss:c,sS:f}))});var I$="atanh",Ate=["typed","config","Complex"],VA=M(I$,Ate,t=>{var{typed:e,config:r,Complex:n}=t;return e(I$,{number:function(a){return a<=1&&a>=-1||r.predictable?Jw(a):new n(a,0).atanh()},Complex:function(a){return a.atanh()},BigNumber:function(a){return a.atanh()}})});var Ao=M("trigUnit",["typed"],t=>{var{typed:e}=t;return{Unit:e.referToSelf(r=>n=>{if(!n.hasBase(n.constructor.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return e.find(r,n.valueType())(n.value)})}});var P$="cos",Ste=["typed"],UA=M(P$,Ste,t=>{var{typed:e}=t,r=Ao({typed:e});return e(P$,{number:Math.cos,"Complex | BigNumber":n=>n.cos()},r)});var B$="cosh",Ete=["typed"],qA=M(B$,Ete,t=>{var{typed:e}=t;return e(B$,{number:Ig,"Complex | BigNumber":r=>r.cosh()})});var k$="cot",Tte=["typed","BigNumber"],zA=M(k$,Tte,t=>{var{typed:e,BigNumber:r}=t,n=Ao({typed:e});return e(k$,{number:Xw,Complex:i=>i.cot(),BigNumber:i=>new r(1).div(i.tan())},n)});var $$="coth",Dte=["typed","BigNumber"],HA=M($$,Dte,t=>{var{typed:e,BigNumber:r}=t;return e($$,{number:Qw,Complex:n=>n.coth(),BigNumber:n=>new r(1).div(n.tanh())})});var O$="csc",Mte=["typed","BigNumber"],GA=M(O$,Mte,t=>{var{typed:e,BigNumber:r}=t,n=Ao({typed:e});return e(O$,{number:Kw,Complex:i=>i.csc(),BigNumber:i=>new r(1).div(i.sin())},n)});var R$="csch",Cte=["typed","BigNumber"],WA=M(R$,Cte,t=>{var{typed:e,BigNumber:r}=t;return e(R$,{number:e_,Complex:n=>n.csch(),BigNumber:n=>new r(1).div(n.sinh())})});var L$="sec",Nte=["typed","BigNumber"],YA=M(L$,Nte,t=>{var{typed:e,BigNumber:r}=t,n=Ao({typed:e});return e(L$,{number:t_,Complex:i=>i.sec(),BigNumber:i=>new r(1).div(i.cos())},n)});var V$="sech",Fte=["typed","BigNumber"],jA=M(V$,Fte,t=>{var{typed:e,BigNumber:r}=t;return e(V$,{number:r_,Complex:n=>n.sech(),BigNumber:n=>new r(1).div(n.cosh())})});var U$="sin",Ite=["typed"],ZA=M(U$,Ite,t=>{var{typed:e}=t,r=Ao({typed:e});return e(U$,{number:Math.sin,"Complex | BigNumber":n=>n.sin()},r)});var q$="sinh",Pte=["typed"],JA=M(q$,Pte,t=>{var{typed:e}=t;return e(q$,{number:n_,"Complex | BigNumber":r=>r.sinh()})});var z$="tan",Bte=["typed"],XA=M(z$,Bte,t=>{var{typed:e}=t,r=Ao({typed:e});return e(z$,{number:Math.tan,"Complex | BigNumber":n=>n.tan()},r)});var kte="tanh",$te=["typed"],QA=M(kte,$te,t=>{var{typed:e}=t;return e("tanh",{number:Pg,"Complex | BigNumber":r=>r.tanh()})});var H$="setCartesian",Ote=["typed","size","subset","compareNatural","Index","DenseMatrix"],KA=M(H$,Ote,t=>{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(H$,{"Array | Matrix, Array | Matrix":function(l,u){var c=[];if(n(r(l),new a(0))!==0&&n(r(u),new a(0))!==0){var f=Rt(Array.isArray(l)?l:l.toArray()).sort(i),m=Rt(Array.isArray(u)?u:u.toArray()).sort(i);c=[];for(var p=0;p{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(G$,{"Array | Matrix, Array | Matrix":function(l,u){var c;if(n(r(l),new a(0))===0)c=[];else{if(n(r(u),new a(0))===0)return Rt(l.toArray());var f=Ks(Rt(Array.isArray(l)?l:l.toArray()).sort(i)),m=Ks(Rt(Array.isArray(u)?u:u.toArray()).sort(i));c=[];for(var p,d=0;d{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(W$,{"Array | Matrix":function(l){var u;if(n(r(l),new a(0))===0)u=[];else{var c=Rt(Array.isArray(l)?l:l.toArray()).sort(i);u=[],u.push(c[0]);for(var f=1;f{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(Y$,{"Array | Matrix, Array | Matrix":function(l,u){var c;if(n(r(l),new a(0))===0||n(r(u),new a(0))===0)c=[];else{var f=Ks(Rt(Array.isArray(l)?l:l.toArray()).sort(i)),m=Ks(Rt(Array.isArray(u)?u:u.toArray()).sort(i));c=[];for(var p=0;p{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(j$,{"Array | Matrix, Array | Matrix":function(s,l){if(n(r(s),new a(0))===0)return!0;if(n(r(l),new a(0))===0)return!1;for(var u=Ks(Rt(Array.isArray(s)?s:s.toArray()).sort(i)),c=Ks(Rt(Array.isArray(l)?l:l.toArray()).sort(i)),f,m=0;m{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(Z$,{"number | BigNumber | Fraction | Complex, Array | Matrix":function(s,l){if(n(r(l),new a(0))===0)return 0;for(var u=Rt(Array.isArray(l)?l:l.toArray()),c=0,f=0;f{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(J$,{"Array | Matrix":function(u){if(n(r(u),new a(0))===0)return[];for(var c=Rt(Array.isArray(u)?u:u.toArray()).sort(i),f=[],m=0;m.toString(2).length<=c.length;)f.push(o(c,m.toString(2).split("").reverse())),m++;return s(f)}});function o(l,u){for(var c=[],f=0;f0;c--)for(var f=0;fl[f+1].length&&(u=l[f],l[f]=l[f+1],l[f+1]=u);return l}});var X$="setSize",Hte=["typed","compareNatural"],oS=M(X$,Hte,t=>{var{typed:e,compareNatural:r}=t;return e(X$,{"Array | Matrix":function(i){return Array.isArray(i)?Rt(i).length:Rt(i.toArray()).length},"Array | Matrix, boolean":function(i,a){if(a===!1||i.length===0)return Array.isArray(i)?Rt(i).length:Rt(i.toArray()).length;for(var o=Rt(Array.isArray(i)?i:i.toArray()).sort(r),s=1,l=1;l{var{typed:e,size:r,concat:n,subset:i,setDifference:a,Index:o}=t;return e(Q$,{"Array | Matrix, Array | Matrix":function(l,u){if(i(r(l),new o(0))===0)return Rt(u);if(i(r(u),new o(0))===0)return Rt(l);var c=Rt(l),f=Rt(u);return n(a(c,f),a(f,c))}})});var K$="setUnion",Wte=["typed","size","concat","subset","setIntersect","setSymDifference","Index"],uS=M(K$,Wte,t=>{var{typed:e,size:r,concat:n,subset:i,setIntersect:a,setSymDifference:o,Index:s}=t;return e(K$,{"Array | Matrix, Array | Matrix":function(u,c){if(i(r(u),new s(0))===0)return Rt(c);if(i(r(c),new s(0))===0)return Rt(u);var f=Rt(u),m=Rt(c);return n(o(f,m),a(f,m))}})});var eO="add",Yte=["typed","matrix","addScalar","equalScalar","DenseMatrix","SparseMatrix","concat"],lS=M(eO,Yte,t=>{var{typed:e,matrix:r,addScalar:n,equalScalar:i,DenseMatrix:a,SparseMatrix:o,concat:s}=t,l=Ri({typed:e}),u=Ef({typed:e,equalScalar:i}),c=Sa({typed:e,DenseMatrix:a}),f=Pt({typed:e,matrix:r,concat:s});return e(eO,{"any, any":n,"any, any, ...any":e.referToSelf(m=>(p,d,h)=>{for(var x=m(p,d),b=0;b{var{typed:e,abs:r,addScalar:n,divideScalar:i,multiplyScalar:a,sqrt:o,smaller:s,isPositive:l}=t;return e(tO,{"... number | BigNumber":u,Array:u,Matrix:c=>u(Rt(c.toArray()))});function u(c){for(var f=0,m=0,p=0;p{var{typed:e,abs:r,add:n,pow:i,conj:a,sqrt:o,multiply:s,equalScalar:l,larger:u,smaller:c,matrix:f,ctranspose:m,eigs:p}=t;return e(rO,{number:Math.abs,Complex:function(D){return D.abs()},BigNumber:function(D){return D.abs()},boolean:function(D){return Math.abs(D)},Array:function(D){return y(f(D),2)},Matrix:function(D){return y(D,2)},"Array, number | BigNumber | string":function(D,_){return y(f(D),_)},"Matrix, number | BigNumber | string":function(D,_){return y(D,_)}});function d(E){var D=0;return E.forEach(function(_){var N=r(_);u(N,D)&&(D=N)},!0),D}function h(E){var D;return E.forEach(function(_){var N=r(_);(!D||c(N,D))&&(D=N)},!0),D||0}function x(E,D){if(D===Number.POSITIVE_INFINITY||D==="inf")return d(E);if(D===Number.NEGATIVE_INFINITY||D==="-inf")return h(E);if(D==="fro")return y(E,2);if(typeof D=="number"&&!isNaN(D)){if(!l(D,0)){var _=0;return E.forEach(function(N){_=n(i(r(N),D),_)},!0),i(_,1/D)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}function b(E){var D=0;return E.forEach(function(_,N){D=n(D,s(_,a(_)))}),r(o(D))}function T(E){var D=[],_=0;return E.forEach(function(N,C){var B=C[1],R=n(D[B]||0,r(N));u(R,_)&&(_=R),D[B]=R},!0),_}function v(E){var D=E.size();if(D[0]!==D[1])throw new RangeError("Invalid matrix dimensions");var _=m(E),N=s(_,E),C=p(N).values.toArray(),B=C[C.length-1];return r(o(B))}function A(E){var D=[],_=0;return E.forEach(function(N,C){var B=C[0],R=n(D[B]||0,r(N));u(R,_)&&(_=R),D[B]=R},!0),_}function w(E,D){if(D===1)return T(E);if(D===Number.POSITIVE_INFINITY||D==="inf")return A(E);if(D==="fro")return b(E);if(D===2)return v(E);throw new Error("Unsupported parameter value "+D)}function y(E,D){var _=E.size();if(_.length===1)return x(E,D);if(_.length===2){if(_[0]&&_[1])return w(E,D);throw new RangeError("Invalid matrix dimensions")}}});var nO="dot",Jte=["typed","addScalar","multiplyScalar","conj","size"],pS=M(nO,Jte,t=>{var{typed:e,addScalar:r,multiplyScalar:n,conj:i,size:a}=t;return e(nO,{"Array | DenseMatrix, Array | DenseMatrix":s,"SparseMatrix, SparseMatrix":l});function o(c,f){var m=u(c),p=u(f),d,h;if(m.length===1)d=m[0];else if(m.length===2&&m[1]===1)d=m[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+m.join(", ")+")");if(p.length===1)h=p[0];else if(p.length===2&&p[1]===1)h=p[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+p.join(", ")+")");if(d!==h)throw new RangeError("Vectors must have equal length ("+d+" != "+h+")");if(d===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return d}function s(c,f){var m=o(c,f),p=rt(c)?c._data:c,d=rt(c)?c._datatype||c.getDataType():void 0,h=rt(f)?f._data:f,x=rt(f)?f._datatype||f.getDataType():void 0,b=u(c).length===2,T=u(f).length===2,v=r,A=n;if(d&&x&&d===x&&typeof d=="string"&&d!=="mixed"){var w=d;v=e.find(r,[w,w]),A=e.find(n,[w,w])}if(!b&&!T){for(var y=A(i(p[0]),h[0]),E=1;Ey){A++;continue}w===y&&(x=b(x,T(p[v],h[A])),v++,A++)}return x}function u(c){return rt(c)?c.size():a(c)}});var Xte="trace",Qte=["typed","matrix","add"],mS=M(Xte,Qte,t=>{var{typed:e,matrix:r,add:n}=t;return e("trace",{Array:function(s){return i(r(s))},SparseMatrix:a,DenseMatrix:i,any:yt});function i(o){var s=o._size,l=o._data;switch(s.length){case 1:if(s[0]===1)return yt(l[0]);throw new RangeError("Matrix must be square (size: "+Dt(s)+")");case 2:{var u=s[0],c=s[1];if(u===c){for(var f=0,m=0;m0)for(var d=0;dd)break}return p}throw new RangeError("Matrix must be square (size: "+Dt(c)+")")}});var iO="index",Kte=["typed","Index"],dS=M(iO,Kte,t=>{var{typed:e,Index:r}=t;return e(iO,{"...number | string | BigNumber | Range | Array | Matrix":function(i){var a=i.map(function(s){return ft(s)?s.toNumber():vr(s)||rt(s)?s.map(function(l){return ft(l)?l.toNumber():l}):s}),o=new r;return r.apply(o,a),o}})});var dv=new Set(["end"]);var ere="Node",tre=["mathWithTransform"],hS=M(ere,tre,t=>{var{mathWithTransform:e}=t;function r(i){for(var a of[...dv])if(i.has(a))throw new Error('Scope contains an illegal symbol, "'+a+'" is a reserved keyword')}class n{get type(){return"Node"}get isNode(){return!0}evaluate(a){return this.compile().evaluate(a)}compile(){var a=this._compile(e,{}),o={},s=null;function l(u){var c=Zs(u);return r(c),a(c,o,s)}return{evaluate:l}}_compile(a,o){throw new Error("Method _compile must be implemented by type "+this.type)}forEach(a){throw new Error("Cannot run forEach on a Node interface")}map(a){throw new Error("Cannot run map on a Node interface")}_ifNode(a){if(!nr(a))throw new TypeError("Callback function must return a Node");return a}traverse(a){a(this,null,null);function o(s,l){s.forEach(function(u,c,f){l(u,c,f),o(u,l)})}o(this,a)}transform(a){function o(s,l,u){var c=a(s,l,u);return c!==s?c:s.map(o)}return o(this,null,null)}filter(a){var o=[];return this.traverse(function(s,l,u){a(s,l,u)&&o.push(s)}),o}clone(){throw new Error("Cannot clone a Node interface")}cloneDeep(){return this.map(function(a){return a.cloneDeep()})}equals(a){return a?this.type===a.type&&ba(this,a):!1}toString(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toString(a)}_toString(){throw new Error("_toString not implemented for "+this.type)}toJSON(){throw new Error("Cannot serialize object: toJSON not implemented by "+this.type)}toHTML(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toHTML(a)}_toHTML(){throw new Error("_toHTML not implemented for "+this.type)}toTex(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toTex(a)}_toTex(a){throw new Error("_toTex not implemented for "+this.type)}_getCustomString(a){if(a&&typeof a=="object")switch(typeof a.handler){case"object":case"undefined":return;case"function":return a.handler(this,a);default:throw new TypeError("Object or function expected as callback")}}getIdentifier(){return this.type}getContent(){return this}}return n},{isClass:!0,isNode:!0});function Zr(t){return t&&t.isIndexError?new Si(t.index+1,t.min+1,t.max!==void 0?t.max+1:void 0):t}function hv(t){var{subset:e}=t;return function(n,i){try{if(Array.isArray(n))return e(n,i);if(n&&typeof n.subset=="function")return n.subset(i);if(typeof n=="string")return e(n,i);if(typeof n=="object"){if(!i.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return rn(n,i.getObjectProperty())}else throw new TypeError("Cannot apply index: unsupported type of object")}catch(a){throw Zr(a)}}}var gv="AccessorNode",rre=["subset","Node"],gS=M(gv,rre,t=>{var{subset:e,Node:r}=t,n=hv({subset:e});function i(o){return!(Ha(o)||wi(o)||Ht(o)||na(o)||Ou(o)||_i(o)||Gr(o))}class a extends r{constructor(s,l){if(super(),!nr(s))throw new TypeError('Node expected for parameter "object"');if(!go(l))throw new TypeError('IndexNode expected for parameter "index"');this.object=s,this.index=l}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return gv}get isAccessorNode(){return!0}_compile(s,l){var u=this.object._compile(s,l),c=this.index._compile(s,l);if(this.index.isObjectProperty()){var f=this.index.getObjectProperty();return function(p,d,h){return rn(u(p,d,h),f)}}else return function(p,d,h){var x=u(p,d,h),b=c(p,d,x);return n(x,b)}}forEach(s){s(this.object,"object",this),s(this.index,"index",this)}map(s){return new a(this._ifNode(s(this.object,"object",this)),this._ifNode(s(this.index,"index",this)))}clone(){return new a(this.object,this.index)}_toString(s){var l=this.object.toString(s);return i(this.object)&&(l="("+l+")"),l+this.index.toString(s)}_toHTML(s){var l=this.object.toHTML(s);return i(this.object)&&(l='('+l+')'),l+this.index.toHTML(s)}_toTex(s){var l=this.object.toTex(s);return i(this.object)&&(l="\\left(' + object + '\\right)"),l+this.index.toTex(s)}toJSON(){return{mathjs:gv,object:this.object,index:this.index}}static fromJSON(s){return new a(s.object,s.index)}}return Er(a,"name",gv),a},{isClass:!0,isNode:!0});var vv="ArrayNode",nre=["Node"],vS=M(vv,nre,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),this.items=i||[],!Array.isArray(this.items)||!this.items.every(nr))throw new TypeError("Array containing Nodes expected")}get type(){return vv}get isArrayNode(){return!0}_compile(i,a){var o=xo(this.items,function(u){return u._compile(i,a)}),s=i.config.matrix!=="Array";if(s){var l=i.matrix;return function(c,f,m){return l(xo(o,function(p){return p(c,f,m)}))}}else return function(c,f,m){return xo(o,function(p){return p(c,f,m)})}}forEach(i){for(var a=0;a[
'+a.join(',')+']'}_toTex(i){function a(o,s){var l=o.some(wi)&&!o.every(wi),u=s||l,c=u?"&":"\\\\",f=o.map(function(m){return m.items?a(m.items,!s):m.toTex(i)}).join(c);return l||!u||u&&!s?"\\begin{bmatrix}"+f+"\\end{bmatrix}":f}return a(this.items,!1)}}return Er(r,"name",vv),r},{isClass:!0,isNode:!0});function aO(t){var{subset:e,matrix:r}=t;return function(i,a,o){try{if(Array.isArray(i)){var s=r(i).subset(a,o).valueOf();return s.forEach((l,u)=>{i[u]=l}),i}else{if(i&&typeof i.subset=="function")return i.subset(a,o);if(typeof i=="string")return e(i,a,o);if(typeof i=="object"){if(!a.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return ps(i,a.getObjectProperty(),o),i}else throw new TypeError("Cannot apply index: unsupported type of object")}}catch(l){throw Zr(l)}}}var So=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{op:"or",associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{op:"xor",associativity:"left",associativeWith:[]}},{"OperatorNode:and":{op:"and",associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{op:"|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{op:"^|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{op:"&",associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{op:"==",associativity:"left",associativeWith:[]},"OperatorNode:unequal":{op:"!=",associativity:"left",associativeWith:[]},"OperatorNode:smaller":{op:"<",associativity:"left",associativeWith:[]},"OperatorNode:larger":{op:">",associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{op:"<=",associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{op:">=",associativity:"left",associativeWith:[]},RelationalNode:{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{op:"<<",associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{op:">>",associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{op:">>>",associativity:"left",associativeWith:[]}},{"OperatorNode:to":{op:"to",associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{op:"+",associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{op:"-",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{op:"*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{op:"/",associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{op:".*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{op:"./",associativity:"left",associativeWith:[]},"OperatorNode:mod":{op:"mod",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]}},{"OperatorNode:unaryPlus":{op:"+",associativity:"right"},"OperatorNode:unaryMinus":{op:"-",associativity:"right"},"OperatorNode:bitNot":{op:"~",associativity:"right"},"OperatorNode:not":{op:"not",associativity:"right"}},{"OperatorNode:pow":{op:"^",associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{op:".^",associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{op:"!",associativity:"left"}},{"OperatorNode:ctranspose":{op:"'",associativity:"left"}}];function yv(t,e){if(!e||e!=="auto")return t;for(var r=t;_i(r);)r=r.content;return r}function Mr(t,e,r,n){var i=t;e!=="keep"&&(i=t.getContent());for(var a=i.getIdentifier(),o=null,s=0;s{var{subset:e,matrix:r,Node:n}=t,i=hv({subset:e}),a=aO({subset:e,matrix:r});function o(l,u,c){u||(u="keep");var f=Mr(l,u,c),m=Mr(l.value,u,c);return u==="all"||m!==null&&m<=f}class s extends n{constructor(u,c,f){if(super(),this.object=u,this.index=f?c:null,this.value=f||c,!Gr(u)&&!Ha(u))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(Gr(u)&&u.name==="end")throw new Error('Cannot assign to symbol "end"');if(this.index&&!go(this.index))throw new TypeError('IndexNode expected as "index"');if(!nr(this.value))throw new TypeError('Node expected as "value"')}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return bv}get isAssignmentNode(){return!0}_compile(u,c){var f=this.object._compile(u,c),m=this.index?this.index._compile(u,c):null,p=this.value._compile(u,c),d=this.object.name;if(this.index)if(this.index.isObjectProperty()){var h=this.index.getObjectProperty();return function(A,w,y){var E=f(A,w,y),D=p(A,w,y);return ps(E,h,D),D}}else{if(Gr(this.object))return function(A,w,y){var E=f(A,w,y),D=p(A,w,y),_=m(A,w,E);return A.set(d,a(E,_,D)),D};var x=this.object.object._compile(u,c);if(this.object.index.isObjectProperty()){var b=this.object.index.getObjectProperty();return function(A,w,y){var E=x(A,w,y),D=rn(E,b),_=m(A,w,D),N=p(A,w,y);return ps(E,b,a(D,_,N)),N}}else{var T=this.object.index._compile(u,c);return function(A,w,y){var E=x(A,w,y),D=T(A,w,E),_=i(E,D),N=m(A,w,_),C=p(A,w,y);return a(E,D,a(_,N,C)),C}}}else{if(!Gr(this.object))throw new TypeError("SymbolNode expected as object");return function(A,w,y){var E=p(A,w,y);return A.set(d,E),E}}}forEach(u){u(this.object,"object",this),this.index&&u(this.index,"index",this),u(this.value,"value",this)}map(u){var c=this._ifNode(u(this.object,"object",this)),f=this.index?this._ifNode(u(this.index,"index",this)):null,m=this._ifNode(u(this.value,"value",this));return new s(c,f,m)}clone(){return new s(this.object,this.index,this.value)}_toString(u){var c=this.object.toString(u),f=this.index?this.index.toString(u):"",m=this.value.toString(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m="("+m+")"),c+f+" = "+m}toJSON(){return{mathjs:bv,object:this.object,index:this.index,value:this.value}}static fromJSON(u){return new s(u.object,u.index,u.value)}_toHTML(u){var c=this.object.toHTML(u),f=this.index?this.index.toHTML(u):"",m=this.value.toHTML(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m='('+m+')'),c+f+'='+m}_toTex(u){var c=this.object.toTex(u),f=this.index?this.index.toTex(u):"",m=this.value.toTex(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m="\\left(".concat(m,"\\right)")),c+f+"="+m}}return Er(s,"name",bv),s},{isClass:!0,isNode:!0});var wv="BlockNode",are=["ResultSet","Node"],xS=M(wv,are,t=>{var{ResultSet:e,Node:r}=t;class n extends r{constructor(a){if(super(),!Array.isArray(a))throw new Error("Array expected");this.blocks=a.map(function(o){var s=o&&o.node,l=o&&o.visible!==void 0?o.visible:!0;if(!nr(s))throw new TypeError('Property "node" must be a Node');if(typeof l!="boolean")throw new TypeError('Property "visible" must be a boolean');return{node:s,visible:l}})}get type(){return wv}get isBlockNode(){return!0}_compile(a,o){var s=xo(this.blocks,function(l){return{evaluate:l.node._compile(a,o),visible:l.visible}});return function(u,c,f){var m=[];return Wg(s,function(d){var h=d.evaluate(u,c,f);d.visible&&m.push(h)}),new e(m)}}forEach(a){for(var o=0;o;
')}).join('
')}_toTex(a){return this.blocks.map(function(o){return o.node.toTex(a)+(o.visible?"":";")}).join(`\\;\\; -`)}}return Er(n,"name",wv),n},{isClass:!0,isNode:!0});var _v="ConditionalNode",ore=["Node"],bS=M(_v,ore,t=>{var{Node:e}=t;function r(i){if(typeof i=="number"||typeof i=="boolean"||typeof i=="string")return!!i;if(i){if(ft(i))return!i.isZero();if(ra(i))return!!(i.re||i.im);if(bi(i))return!!i.value}if(i==null)return!1;throw new TypeError('Unsupported type of condition "'+fr(i)+'"')}class n extends e{constructor(a,o,s){if(super(),!nr(a))throw new TypeError("Parameter condition must be a Node");if(!nr(o))throw new TypeError("Parameter trueExpr must be a Node");if(!nr(s))throw new TypeError("Parameter falseExpr must be a Node");this.condition=a,this.trueExpr=o,this.falseExpr=s}get type(){return _v}get isConditionalNode(){return!0}_compile(a,o){var s=this.condition._compile(a,o),l=this.trueExpr._compile(a,o),u=this.falseExpr._compile(a,o);return function(f,m,p){return r(s(f,m,p))?l(f,m,p):u(f,m,p)}}forEach(a){a(this.condition,"condition",this),a(this.trueExpr,"trueExpr",this),a(this.falseExpr,"falseExpr",this)}map(a){return new n(this._ifNode(a(this.condition,"condition",this)),this._ifNode(a(this.trueExpr,"trueExpr",this)),this._ifNode(a(this.falseExpr,"falseExpr",this)))}clone(){return new n(this.condition,this.trueExpr,this.falseExpr)}_toString(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=Mr(this,o,a&&a.implicit),l=this.condition.toString(a),u=Mr(this.condition,o,a&&a.implicit);(o==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(l="("+l+")");var c=this.trueExpr.toString(a),f=Mr(this.trueExpr,o,a&&a.implicit);(o==="all"||this.trueExpr.type==="OperatorNode"||f!==null&&f<=s)&&(c="("+c+")");var m=this.falseExpr.toString(a),p=Mr(this.falseExpr,o,a&&a.implicit);return(o==="all"||this.falseExpr.type==="OperatorNode"||p!==null&&p<=s)&&(m="("+m+")"),l+" ? "+c+" : "+m}toJSON(){return{mathjs:_v,condition:this.condition,trueExpr:this.trueExpr,falseExpr:this.falseExpr}}static fromJSON(a){return new n(a.condition,a.trueExpr,a.falseExpr)}_toHTML(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=Mr(this,o,a&&a.implicit),l=this.condition.toHTML(a),u=Mr(this.condition,o,a&&a.implicit);(o==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(l='('+l+')');var c=this.trueExpr.toHTML(a),f=Mr(this.trueExpr,o,a&&a.implicit);(o==="all"||this.trueExpr.type==="OperatorNode"||f!==null&&f<=s)&&(c='('+c+')');var m=this.falseExpr.toHTML(a),p=Mr(this.falseExpr,o,a&&a.implicit);return(o==="all"||this.falseExpr.type==="OperatorNode"||p!==null&&p<=s)&&(m='('+m+')'),l+'?'+c+':'+m}_toTex(a){return"\\begin{cases} {"+this.trueExpr.toTex(a)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(a)+"}\\\\{"+this.falseExpr.toTex(a)+"}, &\\quad{\\text{otherwise}}\\end{cases}"}}return Er(n,"name",_v),n},{isClass:!0,isNode:!0});var cO=zr(uO(),1);var _S={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega",true:"\\mathrm{True}",false:"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},Ar={transpose:"^\\top",ctranspose:"^H",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"\\~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},AS={abs:{1:"\\left|${args[0]}\\right|"},add:{2:"\\left(${args[0]}".concat(Ar.add,"${args[1]}\\right)")},cbrt:{1:"\\sqrt[3]{${args[0]}}"},ceil:{1:"\\left\\lceil${args[0]}\\right\\rceil"},cube:{1:"\\left(${args[0]}\\right)^3"},divide:{2:"\\frac{${args[0]}}{${args[1]}}"},dotDivide:{2:"\\left(${args[0]}".concat(Ar.dotDivide,"${args[1]}\\right)")},dotMultiply:{2:"\\left(${args[0]}".concat(Ar.dotMultiply,"${args[1]}\\right)")},dotPow:{2:"\\left(${args[0]}".concat(Ar.dotPow,"${args[1]}\\right)")},exp:{1:"\\exp\\left(${args[0]}\\right)"},expm1:"\\left(e".concat(Ar.pow,"{${args[0]}}-1\\right)"),fix:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},floor:{1:"\\left\\lfloor${args[0]}\\right\\rfloor"},gcd:"\\gcd\\left(${args}\\right)",hypot:"\\hypot\\left(${args}\\right)",log:{1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},log10:{1:"\\log_{10}\\left(${args[0]}\\right)"},log1p:{1:"\\ln\\left(${args[0]}+1\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}+1\\right)"},log2:"\\log_{2}\\left(${args[0]}\\right)",mod:{2:"\\left(${args[0]}".concat(Ar.mod,"${args[1]}\\right)")},multiply:{2:"\\left(${args[0]}".concat(Ar.multiply,"${args[1]}\\right)")},norm:{1:"\\left\\|${args[0]}\\right\\|",2:void 0},nthRoot:{2:"\\sqrt[${args[1]}]{${args[0]}}"},nthRoots:{2:"\\{y : $y^{args[1]} = {${args[0]}}\\}"},pow:{2:"\\left(${args[0]}\\right)".concat(Ar.pow,"{${args[1]}}")},round:{1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},sign:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},sqrt:{1:"\\sqrt{${args[0]}}"},square:{1:"\\left(${args[0]}\\right)^2"},subtract:{2:"\\left(${args[0]}".concat(Ar.subtract,"${args[1]}\\right)")},unaryMinus:{1:"".concat(Ar.unaryMinus,"\\left(${args[0]}\\right)")},unaryPlus:{1:"".concat(Ar.unaryPlus,"\\left(${args[0]}\\right)")},bitAnd:{2:"\\left(${args[0]}".concat(Ar.bitAnd,"${args[1]}\\right)")},bitNot:{1:Ar.bitNot+"\\left(${args[0]}\\right)"},bitOr:{2:"\\left(${args[0]}".concat(Ar.bitOr,"${args[1]}\\right)")},bitXor:{2:"\\left(${args[0]}".concat(Ar.bitXor,"${args[1]}\\right)")},leftShift:{2:"\\left(${args[0]}".concat(Ar.leftShift,"${args[1]}\\right)")},rightArithShift:{2:"\\left(${args[0]}".concat(Ar.rightArithShift,"${args[1]}\\right)")},rightLogShift:{2:"\\left(${args[0]}".concat(Ar.rightLogShift,"${args[1]}\\right)")},bellNumbers:{1:"\\mathrm{B}_{${args[0]}}"},catalan:{1:"\\mathrm{C}_{${args[0]}}"},stirlingS2:{2:"\\mathrm{S}\\left(${args}\\right)"},arg:{1:"\\arg\\left(${args[0]}\\right)"},conj:{1:"\\left(${args[0]}\\right)^*"},im:{1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},re:{1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},and:{2:"\\left(${args[0]}".concat(Ar.and,"${args[1]}\\right)")},not:{1:Ar.not+"\\left(${args[0]}\\right)"},or:{2:"\\left(${args[0]}".concat(Ar.or,"${args[1]}\\right)")},xor:{2:"\\left(${args[0]}".concat(Ar.xor,"${args[1]}\\right)")},cross:{2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},ctranspose:{1:"\\left(${args[0]}\\right)".concat(Ar.ctranspose)},det:{1:"\\det\\left(${args[0]}\\right)"},dot:{2:"\\left(${args[0]}\\cdot${args[1]}\\right)"},expm:{1:"\\exp\\left(${args[0]}\\right)"},inv:{1:"\\left(${args[0]}\\right)^{-1}"},pinv:{1:"\\left(${args[0]}\\right)^{+}"},sqrtm:{1:"{${args[0]}}".concat(Ar.pow,"{\\frac{1}{2}}")},trace:{1:"\\mathrm{tr}\\left(${args[0]}\\right)"},transpose:{1:"\\left(${args[0]}\\right)".concat(Ar.transpose)},combinations:{2:"\\binom{${args[0]}}{${args[1]}}"},combinationsWithRep:{2:"\\left(\\!\\!{\\binom{${args[0]}}{${args[1]}}}\\!\\!\\right)"},factorial:{1:"\\left(${args[0]}\\right)".concat(Ar.factorial)},gamma:{1:"\\Gamma\\left(${args[0]}\\right)"},lgamma:{1:"\\ln\\Gamma\\left(${args[0]}\\right)"},equal:{2:"\\left(${args[0]}".concat(Ar.equal,"${args[1]}\\right)")},larger:{2:"\\left(${args[0]}".concat(Ar.larger,"${args[1]}\\right)")},largerEq:{2:"\\left(${args[0]}".concat(Ar.largerEq,"${args[1]}\\right)")},smaller:{2:"\\left(${args[0]}".concat(Ar.smaller,"${args[1]}\\right)")},smallerEq:{2:"\\left(${args[0]}".concat(Ar.smallerEq,"${args[1]}\\right)")},unequal:{2:"\\left(${args[0]}".concat(Ar.unequal,"${args[1]}\\right)")},erf:{1:"erf\\left(${args[0]}\\right)"},max:"\\max\\left(${args}\\right)",min:"\\min\\left(${args}\\right)",variance:"\\mathrm{Var}\\left(${args}\\right)",acos:{1:"\\cos^{-1}\\left(${args[0]}\\right)"},acosh:{1:"\\cosh^{-1}\\left(${args[0]}\\right)"},acot:{1:"\\cot^{-1}\\left(${args[0]}\\right)"},acoth:{1:"\\coth^{-1}\\left(${args[0]}\\right)"},acsc:{1:"\\csc^{-1}\\left(${args[0]}\\right)"},acsch:{1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},asec:{1:"\\sec^{-1}\\left(${args[0]}\\right)"},asech:{1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},asin:{1:"\\sin^{-1}\\left(${args[0]}\\right)"},asinh:{1:"\\sinh^{-1}\\left(${args[0]}\\right)"},atan:{1:"\\tan^{-1}\\left(${args[0]}\\right)"},atan2:{2:"\\mathrm{atan2}\\left(${args}\\right)"},atanh:{1:"\\tanh^{-1}\\left(${args[0]}\\right)"},cos:{1:"\\cos\\left(${args[0]}\\right)"},cosh:{1:"\\cosh\\left(${args[0]}\\right)"},cot:{1:"\\cot\\left(${args[0]}\\right)"},coth:{1:"\\coth\\left(${args[0]}\\right)"},csc:{1:"\\csc\\left(${args[0]}\\right)"},csch:{1:"\\mathrm{csch}\\left(${args[0]}\\right)"},sec:{1:"\\sec\\left(${args[0]}\\right)"},sech:{1:"\\mathrm{sech}\\left(${args[0]}\\right)"},sin:{1:"\\sin\\left(${args[0]}\\right)"},sinh:{1:"\\sinh\\left(${args[0]}\\right)"},tan:{1:"\\tan\\left(${args[0]}\\right)"},tanh:{1:"\\tanh\\left(${args[0]}\\right)"},to:{2:"\\left(${args[0]}".concat(Ar.to,"${args[1]}\\right)")},numeric:function(e,r){return e.args[0].toTex()},number:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},string:{0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},bignumber:{0:"0",1:"\\left(${args[0]}\\right)"},bigint:{0:"0",1:"\\left(${args[0]}\\right)"},complex:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+".concat(_S.i,"\\cdot\\left(${args[1]}\\right)\\right)")},matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},unit:{1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"}},fO="\\mathrm{${name}}\\left(${args}\\right)",lO={deg:"^\\circ"};function Av(t){return(0,cO.default)(t,{preserveFormatting:!0})}function Sv(t,e){return e=typeof e>"u"?!1:e,e?st(lO,t)?lO[t]:"\\mathrm{"+Av(t)+"}":st(_S,t)?_S[t]:Av(t)}var Ev="ConstantNode",cre=["Node"],SS=M(Ev,cre,t=>{var{Node:e}=t;class r extends e{constructor(i){super(),this.value=i}get type(){return Ev}get isConstantNode(){return!0}_compile(i,a){var o=this.value;return function(){return o}}forEach(i){}map(i){return this.clone()}clone(){return new r(this.value)}_toString(i){return Dt(this.value,i)}_toHTML(i){var a=this._toString(i);switch(fr(this.value)){case"number":case"bigint":case"BigNumber":case"Fraction":return''+a+"";case"string":return''+a+"";case"boolean":return''+a+"";case"null":return''+a+"";case"undefined":return''+a+"";default:return''+a+""}}toJSON(){return{mathjs:Ev,value:this.value}}static fromJSON(i){return new r(i.value)}_toTex(i){var a=this._toString(i),o=fr(this.value);switch(o){case"string":return"\\mathtt{"+Av(a)+"}";case"number":case"BigNumber":{var s=o==="BigNumber"?this.value.isFinite():isFinite(this.value);if(!s)return this.value.valueOf()<0?"-\\infty":"\\infty";var l=a.toLowerCase().indexOf("e");return l!==-1?a.substring(0,l)+"\\cdot10^{"+a.substring(l+1)+"}":a}case"bigint":return a.toString();case"Fraction":return this.value.toLatex();default:return a}}}return Er(r,"name",Ev),r},{isClass:!0,isNode:!0});var Tv="FunctionAssignmentNode",fre=["typed","Node"],ES=M(Tv,fre,t=>{var{typed:e,Node:r}=t;function n(a,o,s){var l=Mr(a,o,s),u=Mr(a.expr,o,s);return o==="all"||u!==null&&u<=l}class i extends r{constructor(o,s,l){if(super(),typeof o!="string")throw new TypeError('String expected for parameter "name"');if(!Array.isArray(s))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!nr(l))throw new TypeError('Node expected for parameter "expr"');if(dv.has(o))throw new Error('Illegal function name, "'+o+'" is a reserved keyword');var u=new Set;for(var c of s){var f=typeof c=="string"?c:c.name;if(u.has(f))throw new Error('Duplicate parameter name "'.concat(f,'"'));u.add(f)}this.name=o,this.params=s.map(function(m){return m&&m.name||m}),this.types=s.map(function(m){return m&&m.type||"any"}),this.expr=l}get type(){return Tv}get isFunctionAssignmentNode(){return!0}_compile(o,s){var l=Object.create(s);Wg(this.params,function(d){l[d]=!0});var u=this.expr._compile(o,l),c=this.name,f=this.params,m=sw(this.types,","),p=c+"("+sw(this.params,", ")+")";return function(h,x,b){var T={};T[m]=function(){for(var A=Object.create(x),w=0;w'+ri(this.params[u])+"
");var c=this.expr.toHTML(o);return n(this,s,o&&o.implicit)&&(c='('+c+')'),''+ri(this.name)+'('+l.join(',')+')='+c}_toTex(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=this.expr.toTex(o);return n(this,s,o&&o.implicit)&&(l="\\left(".concat(l,"\\right)")),"\\mathrm{"+this.name+"}\\left("+this.params.map(Sv).join(",")+"\\right)="+l}}return Er(i,"name",Tv),i},{isClass:!0,isNode:!0});var Dv="IndexNode",pre=["Node","size"],TS=M(Dv,pre,t=>{var{Node:e,size:r}=t;class n extends e{constructor(a,o){if(super(),this.dimensions=a,this.dotNotation=o||!1,!Array.isArray(a)||!a.every(nr))throw new TypeError('Array containing Nodes expected for parameter "dimensions"');if(this.dotNotation&&!this.isObjectProperty())throw new Error("dotNotation only applicable for object properties")}get type(){return Dv}get isIndexNode(){return!0}_compile(a,o){var s=xo(this.dimensions,function(u,c){var f=u.filter(d=>d.isSymbolNode&&d.name==="end").length>0;if(f){var m=Object.create(o);m.end=!0;var p=u._compile(a,m);return function(h,x,b){if(!rt(b)&&!vr(b)&&!bn(b))throw new TypeError('Cannot resolve "end": context must be a Matrix, Array, or string but is '+fr(b));var T=r(b).valueOf(),v=Object.create(x);return v.end=T[c],p(h,v,b)}}else return u._compile(a,o)}),l=rn(a,"index");return function(c,f,m){var p=xo(s,function(d){return d(c,f,m)});return l(...p)}}forEach(a){for(var o=0;o.'+ri(this.getObjectProperty())+"":'['+o.join(',')+']'}_toTex(a){var o=this.dimensions.map(function(s){return s.toTex(a)});return this.dotNotation?"."+this.getObjectProperty():"_{"+o.join(",")+"}"}}return Er(n,"name",Dv),n},{isClass:!0,isNode:!0});var Mv="ObjectNode",mre=["Node"],DS=M(Mv,mre,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),this.properties=i||{},i&&(typeof i!="object"||!Object.keys(i).every(function(a){return nr(i[a])})))throw new TypeError("Object containing Nodes expected")}get type(){return Mv}get isObjectNode(){return!0}_compile(i,a){var o={};for(var s in this.properties)if(st(this.properties,s)){var l=Gl(s),u=JSON.parse(l),c=rn(this.properties,s);o[u]=c._compile(i,a)}return function(m,p,d){var h={};for(var x in o)st(o,x)&&(h[x]=o[x](m,p,d));return h}}forEach(i){for(var a in this.properties)st(this.properties,a)&&i(this.properties[a],"properties["+Gl(a)+"]",this)}map(i){var a={};for(var o in this.properties)st(this.properties,o)&&(a[o]=this._ifNode(i(this.properties[o],"properties["+Gl(o)+"]",this)));return new r(a)}clone(){var i={};for(var a in this.properties)st(this.properties,a)&&(i[a]=this.properties[a]);return new r(i)}_toString(i){var a=[];for(var o in this.properties)st(this.properties,o)&&a.push(Gl(o)+": "+this.properties[o].toString(i));return"{"+a.join(", ")+"}"}toJSON(){return{mathjs:Mv,properties:this.properties}}static fromJSON(i){return new r(i.properties)}_toHTML(i){var a=[];for(var o in this.properties)st(this.properties,o)&&a.push(''+ri(o)+':'+this.properties[o].toHTML(i));return'{'+a.join(',')+'}'}_toTex(i){var a=[];for(var o in this.properties)st(this.properties,o)&&a.push("\\mathbf{"+o+":} & "+this.properties[o].toTex(i)+"\\\\");var s="\\left\\{\\begin{array}{ll}"+a.join(` -`)+"\\end{array}\\right\\}";return s}}return Er(r,"name",Mv),r},{isClass:!0,isNode:!0});function Kl(t,e){return new ff(t,new Pu(e),new Set(Object.keys(e)))}var Cv="OperatorNode",dre=["Node"],MS=M(Cv,dre,t=>{var{Node:e}=t;function r(a,o){var s=a;if(o==="auto")for(;_i(s);)s=s.content;return Ht(s)?!0:Qr(s)?r(s.args[0],o):!1}function n(a,o,s,l,u){var c=Mr(a,o,s),f=If(a,o);if(o==="all"||l.length>2&&a.getIdentifier()!=="OperatorNode:add"&&a.getIdentifier()!=="OperatorNode:multiply")return l.map(function(N){switch(N.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var m;switch(l.length){case 0:m=[];break;case 1:{var p=Mr(l[0],o,s,a);if(u&&p!==null){var d,h;if(o==="keep"?(d=l[0].getIdentifier(),h=a.getIdentifier()):(d=l[0].getContent().getIdentifier(),h=a.getContent().getIdentifier()),So[c][h].latexLeftParens===!1){m=[!1];break}if(So[p][d].latexParens===!1){m=[!1];break}}if(p===null){m=[!1];break}if(p<=c){m=[!0];break}m=[!1]}break;case 2:{var x,b=Mr(l[0],o,s,a),T=xv(a,l[0],o);b===null?x=!1:b===c&&f==="right"&&!T||b=2&&a.getIdentifier()==="OperatorNode:multiply"&&a.implicit&&o!=="all"&&s==="hide")for(var _=1;_2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var x=u.map(function(b,T){return b=b.toString(o),c[T]&&(b="("+b+")"),b});return this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?x.join(" "):x.join(" "+this.op+" ")}else return this.fn+"("+this.args.join(", ")+")"}toJSON(){return{mathjs:Cv,op:this.op,fn:this.fn,args:this.args,implicit:this.implicit,isPercentage:this.isPercentage}}static fromJSON(o){return new i(o.op,o.fn,o.args,o.implicit,o.isPercentage)}_toHTML(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=o&&o.implicit?o.implicit:"hide",u=this.args,c=n(this,s,l,u,!1);if(u.length===1){var f=If(this,s),m=u[0].toHTML(o);return c[0]&&(m='('+m+')'),f==="right"?''+ri(this.op)+""+m:m+''+ri(this.op)+""}else if(u.length===2){var p=u[0].toHTML(o),d=u[1].toHTML(o);return c[0]&&(p='('+p+')'),c[1]&&(d='('+d+')'),this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?p+''+d:p+''+ri(this.op)+""+d}else{var h=u.map(function(x,b){return x=x.toHTML(o),c[b]&&(x='('+x+')'),x});return u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")?this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?h.join(''):h.join(''+ri(this.op)+""):''+ri(this.fn)+'('+h.join(',')+')'}}_toTex(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=o&&o.implicit?o.implicit:"hide",u=this.args,c=n(this,s,l,u,!0),f=Ar[this.fn];if(f=typeof f>"u"?this.op:f,u.length===1){var m=If(this,s),p=u[0].toTex(o);return c[0]&&(p="\\left(".concat(p,"\\right)")),m==="right"?f+p:p+f}else if(u.length===2){var d=u[0],h=d.toTex(o);c[0]&&(h="\\left(".concat(h,"\\right)"));var x=u[1],b=x.toTex(o);c[1]&&(b="\\left(".concat(b,"\\right)"));var T;switch(s==="keep"?T=d.getIdentifier():T=d.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return f+"{"+h+"}{"+b+"}";case"OperatorNode:pow":switch(h="{"+h+"}",b="{"+b+"}",T){case"ConditionalNode":case"OperatorNode:divide":h="\\left(".concat(h,"\\right)")}break;case"OperatorNode:multiply":if(this.implicit&&l==="hide")return h+"~"+b}return h+f+b}else if(u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var v=u.map(function(A,w){return A=A.toTex(o),c[w]&&(A="\\left(".concat(A,"\\right)")),A});return this.getIdentifier()==="OperatorNode:multiply"&&this.implicit&&l==="hide"?v.join("~"):v.join(f)}else return"\\mathrm{"+this.fn+"}\\left("+u.map(function(A){return A.toTex(o)}).join(",")+"\\right)"}getIdentifier(){return this.type+":"+this.fn}}return Er(i,"name",Cv),i},{isClass:!0,isNode:!0});var Nv="ParenthesisNode",hre=["Node"],CS=M(Nv,hre,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),!nr(i))throw new TypeError('Node expected for parameter "content"');this.content=i}get type(){return Nv}get isParenthesisNode(){return!0}_compile(i,a){return this.content._compile(i,a)}getContent(){return this.content.getContent()}forEach(i){i(this.content,"content",this)}map(i){var a=i(this.content,"content",this);return new r(a)}clone(){return new r(this.content)}_toString(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"("+this.content.toString(i)+")":this.content.toString(i)}toJSON(){return{mathjs:Nv,content:this.content}}static fromJSON(i){return new r(i.content)}_toHTML(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?'('+this.content.toHTML(i)+')':this.content.toHTML(i)}_toTex(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"\\left(".concat(this.content.toTex(i),"\\right)"):this.content.toTex(i)}}return Er(r,"name",Nv),r},{isClass:!0,isNode:!0});var Fv="RangeNode",gre=["Node"],NS=M(Fv,gre,t=>{var{Node:e}=t;function r(i,a,o){var s=Mr(i,a,o),l={},u=Mr(i.start,a,o);if(l.start=u!==null&&u<=s||a==="all",i.step){var c=Mr(i.step,a,o);l.step=c!==null&&c<=s||a==="all"}var f=Mr(i.end,a,o);return l.end=f!==null&&f<=s||a==="all",l}class n extends e{constructor(a,o,s){if(super(),!nr(a))throw new TypeError("Node expected");if(!nr(o))throw new TypeError("Node expected");if(s&&!nr(s))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=a,this.end=o,this.step=s||null}get type(){return Fv}get isRangeNode(){return!0}needsEnd(){var a=this.filter(function(o){return Gr(o)&&o.name==="end"});return a.length>0}_compile(a,o){var s=a.range,l=this.start._compile(a,o),u=this.end._compile(a,o);if(this.step){var c=this.step._compile(a,o);return function(m,p,d){return s(l(m,p,d),u(m,p,d),c(m,p,d))}}else return function(m,p,d){return s(l(m,p,d),u(m,p,d))}}forEach(a){a(this.start,"start",this),a(this.end,"end",this),this.step&&a(this.step,"step",this)}map(a){return new n(this._ifNode(a(this.start,"start",this)),this._ifNode(a(this.end,"end",this)),this.step&&this._ifNode(a(this.step,"step",this)))}clone(){return new n(this.start,this.end,this.step&&this.step)}_toString(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l,u=this.start.toString(a);if(s.start&&(u="("+u+")"),l=u,this.step){var c=this.step.toString(a);s.step&&(c="("+c+")"),l+=":"+c}var f=this.end.toString(a);return s.end&&(f="("+f+")"),l+=":"+f,l}toJSON(){return{mathjs:Fv,start:this.start,end:this.end,step:this.step}}static fromJSON(a){return new n(a.start,a.end,a.step)}_toHTML(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l,u=this.start.toHTML(a);if(s.start&&(u='('+u+')'),l=u,this.step){var c=this.step.toHTML(a);s.step&&(c='('+c+')'),l+=':'+c}var f=this.end.toHTML(a);return s.end&&(f='('+f+')'),l+=':'+f,l}_toTex(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l=this.start.toTex(a);if(s.start&&(l="\\left(".concat(l,"\\right)")),this.step){var u=this.step.toTex(a);s.step&&(u="\\left(".concat(u,"\\right)")),l+=":"+u}var c=this.end.toTex(a);return s.end&&(c="\\left(".concat(c,"\\right)")),l+=":"+c,l}}return Er(n,"name",Fv),n},{isClass:!0,isNode:!0});var Iv="RelationalNode",vre=["Node"],FS=M(Iv,vre,t=>{var{Node:e}=t,r={equal:"==",unequal:"!=",smaller:"<",larger:">",smallerEq:"<=",largerEq:">="};class n extends e{constructor(a,o){if(super(),!Array.isArray(a))throw new TypeError("Parameter conditionals must be an array");if(!Array.isArray(o))throw new TypeError("Parameter params must be an array");if(a.length!==o.length-1)throw new TypeError("Parameter params must contain exactly one more element than parameter conditionals");this.conditionals=a,this.params=o}get type(){return Iv}get isRelationalNode(){return!0}_compile(a,o){var s=this,l=this.params.map(u=>u._compile(a,o));return function(c,f,m){for(var p,d=l[0](c,f,m),h=0;ha(o,"params["+s+"]",this),this)}map(a){return new n(this.conditionals.slice(),this.params.map((o,s)=>this._ifNode(a(o,"params["+s+"]",this)),this))}clone(){return new n(this.conditionals,this.params)}_toString(a){for(var o=a&&a.parenthesis?a.parenthesis:"keep",s=Mr(this,o,a&&a.implicit),l=this.params.map(function(f,m){var p=Mr(f,o,a&&a.implicit);return o==="all"||p!==null&&p<=s?"("+f.toString(a)+")":f.toString(a)}),u=l[0],c=0;c('+f.toHTML(a)+')':f.toHTML(a)}),u=l[0],c=0;c'+ri(r[this.conditionals[c]])+""+l[c+1];return u}_toTex(a){for(var o=a&&a.parenthesis?a.parenthesis:"keep",s=Mr(this,o,a&&a.implicit),l=this.params.map(function(f,m){var p=Mr(f,o,a&&a.implicit);return o==="all"||p!==null&&p<=s?"\\left("+f.toTex(a)+"\right)":f.toTex(a)}),u=l[0],c=0;c{var{math:e,Unit:r,Node:n}=t;function i(o){return r?r.isValuelessUnit(o):!1}class a extends n{constructor(s){if(super(),typeof s!="string")throw new TypeError('String expected for parameter "name"');this.name=s}get type(){return"SymbolNode"}get isSymbolNode(){return!0}_compile(s,l){var u=this.name;if(l[u]===!0)return function(f,m,p){return rn(m,u)};if(u in s)return function(f,m,p){return f.has(u)?f.get(u):rn(s,u)};var c=i(u);return function(f,m,p){return f.has(u)?f.get(u):c?new r(null,u):a.onUndefinedSymbol(u)}}forEach(s){}map(s){return this.clone()}static onUndefinedSymbol(s){throw new Error("Undefined symbol "+s)}clone(){return new a(this.name)}_toString(s){return this.name}_toHTML(s){var l=ri(this.name);return l==="true"||l==="false"?''+l+"":l==="i"?''+l+"":l==="Infinity"?''+l+"":l==="NaN"?''+l+"":l==="null"?''+l+"":l==="undefined"?''+l+"":''+l+""}toJSON(){return{mathjs:"SymbolNode",name:this.name}}static fromJSON(s){return new a(s.name)}_toTex(s){var l=!1;typeof e[this.name]>"u"&&i(this.name)&&(l=!0);var u=Sv(this.name,l);return u[0]==="\\"?u:" "+u}}return a},{isClass:!0,isNode:!0});var Pv="FunctionNode",bre=["math","Node","SymbolNode"],PS=M(Pv,bre,t=>{var e,{math:r,Node:n,SymbolNode:i}=t,a=l=>Dt(l,{truncate:78});function o(l,u,c){for(var f="",m=/\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi,p=0,d;(d=m.exec(l))!==null;)if(f+=l.substring(p,d.index),p=d.index,d[0]==="$$")f+="$",p++;else{p+=d[0].length;var h=u[d[1]];if(!h)throw new ReferenceError("Template: Property "+d[1]+" does not exist.");if(d[2]===void 0)switch(typeof h){case"string":f+=h;break;case"object":if(nr(h))f+=h.toTex(c);else if(Array.isArray(h))f+=h.map(function(x,b){if(nr(x))return x.toTex(c);throw new TypeError("Template: "+d[1]+"["+b+"] is not a Node.")}).join(",");else throw new TypeError("Template: "+d[1]+" has to be a Node, String or array of Nodes");break;default:throw new TypeError("Template: "+d[1]+" has to be a Node, String or array of Nodes")}else if(nr(h[d[2]]&&h[d[2]]))f+=h[d[2]].toTex(c);else throw new TypeError("Template: "+d[1]+"["+d[2]+"] is not a Node.")}return f+=l.slice(p),f}class s extends n{constructor(u,c){if(super(),typeof u=="string"&&(u=new i(u)),!nr(u))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(c)||!c.every(nr))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=u,this.args=c||[]}get name(){return this.fn.name||""}get type(){return Pv}get isFunctionNode(){return!0}_compile(u,c){var f=this.args.map(D=>D._compile(u,c));if(Gr(this.fn)){var m=this.fn.name;if(c[m]){var b=this.args;return function(_,N,C){var B=rn(N,m);if(typeof B!="function")throw new TypeError("Argument '".concat(m,"' was not a function; received: ").concat(a(B)));if(B.rawArgs)return B(b,u,Kl(_,N));var R=f.map(V=>V(_,N,C));return B.apply(B,R)}}else{var p=m in u?rn(u,m):void 0,d=typeof p=="function"&&p.rawArgs===!0,h=D=>{var _;if(D.has(m))_=D.get(m);else if(m in u)_=rn(u,m);else return s.onUndefinedFunction(m);if(typeof _=="function")return _;throw new TypeError("'".concat(m,`' is not a function; its value is: - `).concat(a(_)))};if(d){var x=this.args;return function(_,N,C){var B=h(_);if(B.rawArgs===!0)return B(x,u,Kl(_,N));var R=f.map(V=>V(_,N,C));return B(...R)}}else switch(f.length){case 0:return function(_,N,C){var B=h(_);return B()};case 1:return function(_,N,C){var B=h(_),R=f[0];return B(R(_,N,C))};case 2:return function(_,N,C){var B=h(_),R=f[0],V=f[1];return B(R(_,N,C),V(_,N,C))};default:return function(_,N,C){var B=h(_),R=f.map(V=>V(_,N,C));return B(...R)}}}}else if(Ha(this.fn)&&go(this.fn.index)&&this.fn.index.isObjectProperty()){var T=this.fn.object._compile(u,c),v=this.fn.index.getObjectProperty(),A=this.args;return function(_,N,C){var B=T(_,N,C),R=O2(B,v);if(R!=null&&R.rawArgs)return R(A,u,Kl(_,N));var V=f.map(L=>L(_,N,C));return R.apply(B,V)}}else{var w=this.fn.toString(),y=this.fn._compile(u,c),E=this.args;return function(_,N,C){var B=y(_,N,C);if(typeof B!="function")throw new TypeError("Expression '".concat(w,"' did not evaluate to a function; value is:")+` - `.concat(a(B)));if(B.rawArgs)return B(E,u,Kl(_,N));var R=f.map(V=>V(_,N,C));return B.apply(B,R)}}}forEach(u){u(this.fn,"fn",this);for(var c=0;c'+ri(this.fn)+'('+c.join(',')+')'}toTex(u){var c;return u&&typeof u.handler=="object"&&st(u.handler,this.name)&&(c=u.handler[this.name](this,u)),typeof c<"u"?c:super.toTex(u)}_toTex(u){var c=this.args.map(function(p){return p.toTex(u)}),f;AS[this.name]&&(f=AS[this.name]),r[this.name]&&(typeof r[this.name].toTex=="function"||typeof r[this.name].toTex=="object"||typeof r[this.name].toTex=="string")&&(f=r[this.name].toTex);var m;switch(typeof f){case"function":m=f(this,u);break;case"string":m=o(f,this,u);break;case"object":switch(typeof f[c.length]){case"function":m=f[c.length](this,u);break;case"string":m=o(f[c.length],this,u);break}}return typeof m<"u"?m:o(fO,this,u)}getIdentifier(){return this.type+":"+this.name}}return e=s,Er(s,"name",Pv),Er(s,"onUndefinedFunction",function(l){throw new Error("Undefined function "+l)}),Er(s,"fromJSON",function(l){return new e(l.fn,l.args)}),s},{isClass:!0,isNode:!0});var pO="parse",wre=["typed","numeric","config","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","RangeNode","RelationalNode","SymbolNode"],BS=M(pO,wre,t=>{var{typed:e,numeric:r,config:n,AccessorNode:i,ArrayNode:a,AssignmentNode:o,BlockNode:s,ConditionalNode:l,ConstantNode:u,FunctionAssignmentNode:c,FunctionNode:f,IndexNode:m,ObjectNode:p,OperatorNode:d,ParenthesisNode:h,RangeNode:x,RelationalNode:b,SymbolNode:T}=t,v=e(pO,{string:function(Y){return ae(Y,{})},"Array | Matrix":function(Y){return A(Y,{})},"string, Object":function(Y,ie){var Ce=ie.nodes!==void 0?ie.nodes:{};return ae(Y,Ce)},"Array | Matrix, Object":A});function A(F){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ie=Y.nodes!==void 0?Y.nodes:{};return nt(F,function(Ce){if(typeof Ce!="string")throw new TypeError("String expected");return ae(Ce,ie)})}var w={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},y={",":!0,"(":!0,")":!0,"[":!0,"]":!0,"{":!0,"}":!0,'"':!0,"'":!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},E={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},D={true:!0,false:!1,null:null,undefined:void 0},_=["NaN","Infinity"],N={'"':'"',"'":"'","\\":"\\","/":"/",b:"\b",f:"\f",n:` -`,r:"\r",t:" "};function C(){return{extraNodes:{},expression:"",comment:"",index:0,token:"",tokenType:w.NULL,nestingLevel:0,conditionalLevel:null}}function B(F,Y){return F.expression.substr(F.index,Y)}function R(F){return B(F,1)}function V(F){F.index++}function L(F){return F.expression.charAt(F.index-1)}function P(F){return F.expression.charAt(F.index+1)}function k(F){for(F.tokenType=w.NULL,F.token="",F.comment="";;){if(R(F)==="#")for(;R(F)!==` -`&&R(F)!=="";)F.comment+=R(F),V(F);if(v.isWhitespace(R(F),F.nestingLevel))V(F);else break}if(R(F)===""){F.tokenType=w.DELIMITER;return}if(R(F)===` -`&&!F.nestingLevel){F.tokenType=w.DELIMITER,F.token=R(F),V(F);return}var Y=R(F),ie=B(F,2),Ce=B(F,3);if(Ce.length===3&&y[Ce]){F.tokenType=w.DELIMITER,F.token=Ce,V(F),V(F),V(F);return}if(ie.length===2&&y[ie]){F.tokenType=w.DELIMITER,F.token=ie,V(F),V(F);return}if(y[Y]){F.tokenType=w.DELIMITER,F.token=Y,V(F);return}if(v.isDigitDot(Y)){F.tokenType=w.NUMBER;var tt=B(F,2);if(tt==="0b"||tt==="0o"||tt==="0x"){for(F.token+=R(F),V(F),F.token+=R(F),V(F);v.isHexDigit(R(F));)F.token+=R(F),V(F);if(R(F)===".")for(F.token+=".",V(F);v.isHexDigit(R(F));)F.token+=R(F),V(F);else if(R(F)==="i")for(F.token+="i",V(F);v.isDigit(R(F));)F.token+=R(F),V(F);return}if(R(F)==="."){if(F.token+=R(F),V(F),!v.isDigit(R(F))){F.tokenType=w.DELIMITER;return}}else{for(;v.isDigit(R(F));)F.token+=R(F),V(F);v.isDecimalMark(R(F),P(F))&&(F.token+=R(F),V(F))}for(;v.isDigit(R(F));)F.token+=R(F),V(F);if(R(F)==="E"||R(F)==="e"){if(v.isDigit(P(F))||P(F)==="-"||P(F)==="+"){if(F.token+=R(F),V(F),(R(F)==="+"||R(F)==="-")&&(F.token+=R(F),V(F)),!v.isDigit(R(F)))throw Se(F,'Digit expected, got "'+R(F)+'"');for(;v.isDigit(R(F));)F.token+=R(F),V(F);if(v.isDecimalMark(R(F),P(F)))throw Se(F,'Digit expected, got "'+R(F)+'"')}else if(P(F)===".")throw V(F),Se(F,'Digit expected, got "'+R(F)+'"')}return}if(v.isAlpha(R(F),L(F),P(F))){for(;v.isAlpha(R(F),L(F),P(F))||v.isDigit(R(F));)F.token+=R(F),V(F);st(E,F.token)?F.tokenType=w.DELIMITER:F.tokenType=w.SYMBOL;return}for(F.tokenType=w.UNKNOWN;R(F)!=="";)F.token+=R(F),V(F);throw Se(F,'Syntax error in part "'+F.token+'"')}function W(F){do k(F);while(F.token===` -`)}function O(F){F.nestingLevel++}function X(F){F.nestingLevel--}v.isAlpha=function(Y,ie,Ce){return v.isValidLatinOrGreek(Y)||v.isValidMathSymbol(Y,Ce)||v.isValidMathSymbol(ie,Y)},v.isValidLatinOrGreek=function(Y){return/^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(Y)},v.isValidMathSymbol=function(Y,ie){return/^[\uD835]$/.test(Y)&&/^[\uDC00-\uDFFF]$/.test(ie)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(ie)},v.isWhitespace=function(Y,ie){return Y===" "||Y===" "||Y===` -`&&ie>0},v.isDecimalMark=function(Y,ie){return Y==="."&&ie!=="/"&&ie!=="*"&&ie!=="^"},v.isDigitDot=function(Y){return Y>="0"&&Y<="9"||Y==="."},v.isDigit=function(Y){return Y>="0"&&Y<="9"},v.isHexDigit=function(Y){return Y>="0"&&Y<="9"||Y>="a"&&Y<="f"||Y>="A"&&Y<="F"};function ae(F,Y){var ie=C();sn(ie,{expression:F,extraNodes:Y}),k(ie);var Ce=J(ie);if(ie.token!=="")throw ie.tokenType===w.DELIMITER?Xe(ie,"Unexpected operator "+ie.token):Se(ie,'Unexpected part "'+ie.token+'"');return Ce}function J(F){var Y,ie=[],Ce;for(F.token!==""&&F.token!==` +`}),ni(t,"component_stack",{value:a});let u=t.stack;if(u){let c=u.split(` +`),f=[];for(let m=0;m0)for(f.length=da+Bi.length,m=0;mt.fn)),Om=[]}function l6(){try{l1()}catch(t){if(Xe&&ni(t,"stack",{value:""}),Ef!==null)if(Xe)try{Gl(t,Ef,null,null)}catch(e){throw q1(),e}else Gl(t,Ef,null,null);else throw Xe&&q1(),t}}function pb(){var t=Cu;try{var e=0;for(Cu=!0;Tf.length>0;){e++>1e3&&l6();var r=Tf,n=r.length;Tf=[];for(var i=0;i{Promise.resolve().then(()=>{if(!t.defaultPrevented)for(let e of t.target.elements)e.__on_r?.()})},{capture:!0}))}function Cf(t){var e=fr,r=Xt;Un(null),ii(null);try{return t()}finally{Un(e),ii(r)}}function Vm(t,e,r,n=r){t.addEventListener(e,()=>Cf(r));let i=t.__on_r;i?t.__on_r=()=>{i(),n(!0)}:t.__on_r=()=>n(!0),Lm()}var mb=new Set,Um=new Set;function Z1(t,e,r,n={}){function i(a){if(n.capture||Wl.call(e,a),!a.cancelBubble)return Cf(()=>r?.call(this,a))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Ra(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function gi(t,e,r,n,i){var a={capture:n,passive:i},o=Z1(t,e,r,a);(e===document.body||e===window||e===document)&&Gi(()=>{e.removeEventListener(t,o,a)})}function Mt(t){for(var e=0;e{throw D});throw m}}finally{t.__root=e,delete t.currentTarget,Un(c),ii(f)}}}var g6;function J1(){g6=void 0}function Nf(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function ki(t,e){var r=Xt;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function se(t,e){var r=(e&1)!==0,n=(e&2)!==0,i,a=!t.startsWith("");return()=>{if(Tt)return ki(jt,null),jt;i===void 0&&(i=Nf(a?t:""+t),r||(i=yn(i)));var o=n||wf?document.importNode(i,!0):i.cloneNode(!0);if(r){var s=yn(o),l=o.lastChild;ki(s,l)}else ki(o,o);return o}}function qm(t,e,r="svg"){var n=!t.startsWith(""),i=(e&1)!==0,a=`<${r}>${n?t:""+t}`,o;return()=>{if(Tt)return ki(jt,null),jt;if(!o){var s=Nf(a),l=yn(s);if(i)for(o=document.createDocumentFragment();yn(l);)o.appendChild(yn(l));else o=yn(l)}var u=o.cloneNode(!0);if(i){var c=yn(u),f=u.lastChild;ki(c,f)}else ki(u,u);return u}}function Vt(t=""){if(!Tt){var e=Wi(t+"");return ki(e,e),e}var r=jt;return r.nodeType!==3&&(r.before(r=Wi()),un(r)),ki(r,r),r}function Gr(){if(Tt)return ki(jt,null),jt;var t=document.createDocumentFragment(),e=document.createComment(""),r=Wi();return t.append(e,r),ki(e,r),t}function K(t,e){if(Tt){Xt.nodes_end=jt,mi();return}t!==null&&t.before(e)}var db=!0;function vt(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=r+"")}function Br(t,e){return Q1(t,e)}function gb(t,e){Im(),e.intro=e.intro??!1;let r=e.target,n=Tt,i=jt;try{for(var a=yn(r);a&&(a.nodeType!==8||a.data!==Vs);)a=di(a);if(!a)throw qs;pi(!0),un(a),mi();let o=Q1(t,{...e,anchor:a});if(jt===null||jt.nodeType!==8||jt.data!==Du)throw Ul(),qs;return pi(!1),o}catch(o){if(o===qs)return e.recover===!1&&c1(),Im(),ql(r),pi(!1),Br(t,e);throw o}finally{pi(n),un(i),J1()}}var Yl=new Map;function Q1(t,{target:e,anchor:r,props:n={},events:i,context:a,intro:o=!0}){Im();var s=new Set,l=f=>{for(var m=0;m{var f=r??e.appendChild(Wi());return hi(()=>{if(a){Se({});var m=gr;m.c=a}i&&(n.$$events=i),Tt&&ki(f,null),db=o,u=t(f,n)||{},db=!0,Tt&&(Xt.nodes_end=jt),a&&Ee()}),()=>{for(var m of s){e.removeEventListener(m,Wl);var p=Yl.get(m);--p===0?(document.removeEventListener(m,Wl),Yl.delete(m)):Yl.set(m,p)}Um.delete(l),f!==r&&f.parentNode?.removeChild(f)}});return hb.set(u,c),u}var hb=new WeakMap;function Dr(t,e){let r=hb.get(t);return r?(hb.delete(t),r(e)):(Xe&&D1(),Promise.resolve())}function et(t,e,[r,n]=[0,0]){Tt&&r===0&&mi();var i=t,a=null,o=null,s=In,l=r>0?65536:0,u=!1;let c=(m,p=!0)=>{u=!0,f(p,m)},f=(m,p)=>{if(s===(s=m))return;let d=!1;if(Tt&&n!==-1){if(r===0){let b=i.data;b===Vs?n=0:b===Us?n=1/0:(n=parseInt(b.substring(1)),n!==n&&(n=s?1/0:-1))}let h=n>r;!!s===h&&(i=Tu(),un(i),pi(!1),d=!0,n=-1)}s?(a?Gs(a):p&&(a=hi(()=>p(i))),o&&lo(o,()=>{o=null})):(o?Gs(o):p&&(o=hi(()=>p(i,[r+1,n]))),a&&lo(a,()=>{a=null})),d&&pi(!0)};ji(()=>{u=!1,e(c),u||f(null,null)},l),Tt&&(i=jt)}var Ff=null;function Zt(t,e){return e}function w6(t,e,r,n){for(var i=[],a=e.length,o=0;o0&&i.length===0&&r!==null;if(s){var l=r.parentNode;ql(l),l.append(r),n.clear(),Ws(t,e[0].prev,e[a-1].next)}cb(i,()=>{for(var u=0;u{var p=r();return Ba(p)?p:p==null?[]:cf(p)});ji(()=>{var p=q(m),d=p.length;if(f&&d===0)return;f=d===0;let h=!1;if(Tt){var b=o.data===Us;b!==(d===0)&&(o=Tu(),un(o),pi(!1),h=!0)}if(Tt){for(var y=null,D,v=0;v0&&un(Tu())}Tt||_6(p,s,o,i,e,n,r),a!==null&&(d===0?c?Gs(c):c=hi(()=>a(o)):c!==null&&lo(c,()=>{c=null})),h&&pi(!0),q(m)}),Tt&&(o=jt)}function _6(t,e,r,n,i,a,o){var s=(i&8)!==0,l=(i&3)!==0,u=t.length,c=e.items,f=e.first,m=f,p,d=null,h,b=[],y=[],D,v,A,w;if(s)for(w=0;w0){var R=(i&4)!==0&&u===0?r:null;if(s){for(w=0;w{if(h!==void 0)for(A of h)A.a?.apply()}),Xt.first=e.first&&e.first.e,Xt.last=d&&d.e}function A6(t,e,r,n){(n&1)!==0&&Rl(t.v,e),(n&2)!==0?Rl(t.i,r):t.i=r}function tA(t,e,r,n,i,a,o,s,l,u){var c=Ff,f=(l&1)!==0,m=(l&16)===0,p=f?m?ss(i):ao(i):i,d=(l&2)===0?o:ao(o);Xe&&f&&(p.debug=()=>{var b=typeof d=="number"?o:d.v;u()[b]});var h={i:d,v:p,k:a,a:null,e:null,prev:r,next:n};Ff=h;try{return h.e=hi(()=>s(t,p,d,u),Tt),h.e.prev=r&&r.e,h.e.next=n&&n.e,r===null?e.first=h:(r.next=h,r.e.next=h.e),n!==null&&(n.prev=h,n.e.prev=h.e),h}finally{Ff=c}}function K1(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,a=t.e.nodes_start;a!==n;){var o=di(a);i.before(a),a=o}}function Ws(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}function La(t,e,...r){var n=t,i=ca,a;ji(()=>{i!==(i=e())&&(a&&(ci(a),a=null),Xe&&i==null&&f1(),a=hi(()=>i(n,...r)))},65536),Tt&&(n=jt)}function nA(t){var e,r,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var i=t.length;for(e=0;e=0;){var s=o+a;(o===0||aA.includes(n[o-1]))&&(s===n.length||aA.includes(n[s]))?n=(o===0?"":n.substring(0,o))+n.substring(s+1):o=s}}return n===""?null:n}function oA(t,e=!1){var r=e?" !important;":";",n="";for(var i in t){var a=t[i];a!=null&&a!==""&&(n+=" "+i+": "+a+r)}return n}function bb(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function uA(t,e){if(e){var r="",n,i;if(Array.isArray(e)?(n=e[0],i=e[1]):n=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var a=!1,o=0,s=!1,l=[];n&&l.push(...Object.keys(n).map(bb)),i&&l.push(...Object.keys(i).map(bb));var u=0,c=-1;let h=t.length;for(var f=0;f{if(!e){if(e=!0,t.hasAttribute("value")){var n=t.value;rt(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var i=t.checked;rt(t,"checked",null),t.checked=i}}};t.__on_r=r,R1(r),Lm()}}function _b(t,e){var r=Ab(t);r.value===(r.value=e??void 0)||t.value===e&&(e!==0||t.nodeName!=="PROGRESS")||(t.value=e??"")}function cs(t,e){var r=Ab(t);r.checked!==(r.checked=e??void 0)&&(t.checked=e)}function rt(t,e,r,n){var i=Ab(t);if(Tt&&(i[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName==="LINK")){n||k6(t,e,r??"");return}i[e]!==(i[e]=r)&&(e==="loading"&&(t[i1]=r),r==null?t.removeAttribute(e):typeof r!="string"&&B6(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function Ab(t){return t.__attributes??={[F6]:t.nodeName.includes("-"),[I6]:t.namespaceURI===b1}}var lA=new Map;function B6(t){var e=lA.get(t.nodeName);if(e)return e;lA.set(t.nodeName,e=[]);for(var r,n=t,i=Element.prototype;i!==n;){r=Wy(n);for(var a in r)r[a].set&&e.push(a);n=Au(n)}return e}function k6(t,e,r){Xe&&(e==="srcset"&&P6(t,r)||wb(t.getAttribute(e)??"",r)||A1(e,t.outerHTML.replace(t.innerHTML,t.innerHTML&&"..."),String(r)))}function wb(t,e){return t===e?!0:new URL(t,document.baseURI).href===new URL(e,document.baseURI).href}function cA(t){return t.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function P6(t,e){var r=cA(t.srcset),n=cA(e);return n.length===r.length&&n.every(([i,a],o)=>a===r[o][1]&&(wb(r[o][0],i)||wb(i,r[o][0])))}function xt(t,e,r=e){var n=Eo();Vm(t,"input",i=>{Xe&&t.type==="checkbox"&&jy();var a=i?t.defaultValue:t.value;if(a=Db(t)?Sb(a):a,r(a),n&&a!==(a=e())){var o=t.selectionStart,s=t.selectionEnd;t.value=a??"",s!==null&&(t.selectionStart=o,t.selectionEnd=Math.min(s,t.value.length))}}),(Tt&&t.defaultValue!==t.value||sn(e)==null&&t.value)&&r(Db(t)?Sb(t.value):t.value),ma(()=>{Xe&&t.type==="checkbox"&&jy();var i=e();Db(t)&&i===Sb(t.value)||t.type==="date"&&!i&&!t.value||i!==t.value&&(t.value=i??"")})}function Db(t){var e=t.type;return e==="number"||e==="range"}function Sb(t){return t===""?null:+t}function Hm(t,e,r){if(t.multiple)return R6(t,e);for(var n of t.options){var i=If(n);if(Xy(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function fA(t,e){let r=!0;Fi(()=>{e&&Hm(t,sn(e),r),r=!1;var n=new MutationObserver(()=>{var i=t.__value;Hm(t,i)});return n.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{n.disconnect()}})}function Zl(t,e,r=e){var n=!0;Vm(t,"change",i=>{var a=i?"[selected]":":checked",o;if(t.multiple)o=[].map.call(t.querySelectorAll(a),If);else{var s=t.querySelector(a)??t.querySelector("option:not([disabled])");o=s&&If(s)}r(o)}),Fi(()=>{var i=e();if(Hm(t,i,n),n&&i===void 0){var a=t.querySelector(":checked");a!==null&&(i=If(a),r(i))}t.__value=i,n=!1}),fA(t)}function R6(t,e){for(var r of t.options)r.selected=~e.indexOf(If(r))}function If(t){return"__value"in t?t.__value:t.value}function pA(t,e){return t===e||t?.[Hi]===e}function co(t={},e,r,n){return Fi(()=>{var i,a;return ma(()=>{i=a,a=n?.()||[],sn(()=>{t!==r(...a)&&(e(t,...a),i&&pA(r(...i),t)&&e(null,...i))})}),()=>{Ra(()=>{a&&pA(r(...a),t)&&e(null,...a)})}}),t}var Gm=!1,Bfe=Symbol();function Tb(t){var e=Gm;try{return Gm=!1,[t(),Gm]}finally{Gm=e}}var W6={get(t,e){if(!t.exclude.includes(e))return t.props[e]},set(t,e){return Xe&&m1(`${t.name}.${String(e)}`),!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.includes(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.includes(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.includes(e))}};function tr(t,e,r){return new Proxy(Xe?{props:t,exclude:e,name:r,other:{},to_proxy:[]}:{props:t,exclude:e},W6)}function mA(t){return t.ctx?.d??!1}function at(t,e,r,n){var i=(r&1)!==0,a=!ns||(r&2)!==0,o=(r&8)!==0,s=(r&16)!==0,l=!1,u;o?[u,l]=Tb(()=>t[e]):u=t[e];var c=Hi in t||pf in t,f=o&&(ka(t,e)?.set??(c&&e in t&&(E=>t[e]=E)))||void 0,m=n,p=!0,d=!1,h=()=>(d=!0,p&&(p=!1,s?m=sn(n):m=n),m);u===void 0&&n!==void 0&&(f&&a&&p1(e),u=h(),f&&f(u));var b;if(a)b=()=>{var E=t[e];return E===void 0?h():(p=!0,d=!1,E)};else{var y=(i?zs:bf)(()=>t[e]);y.f|=131072,b=()=>{var E=q(y);return E!==void 0&&(m=void 0),E===void 0?m:E}}if((r&4)===0)return b;if(f){var D=t.$$legacy;return function(E,T){return arguments.length>0?((!a||!T||D||l)&&f(T?b():E),E):b()}}var v=!1,A=!1,w=ss(u),x=zs(()=>{var E=b(),T=q(w);return v?(v=!1,A=!0,T):(A=!1,w.v=E)});return o&&q(x),i||(x.equals=kl),function(E,T){if(hf!==null&&(v=A,b(),q(w)),arguments.length>0){let _=T?q(x):a&&o?dt(E):E;if(!x.equals(_)){if(v=!0,ke(w,_),d&&m!==void 0&&(m=_),mA(x))return E;sn(()=>q(x))}return E}return mA(x)?x.v:q(x)}}function dA(t){return new Mb(t)}var Mb=class{#t;#e;constructor(e){var r=new Map,n=(a,o)=>{var s=ss(o);return r.set(a,s),s};let i=new Proxy({...e.props||{},$$events:{}},{get(a,o){return q(r.get(o)??n(o,Reflect.get(a,o)))},has(a,o){return o===pf?!0:(q(r.get(o)??n(o,Reflect.get(a,o))),Reflect.has(a,o))},set(a,o,s){return ke(r.get(o)??n(o,s),s),Reflect.set(a,o,s)}});this.#e=(e.hydrate?gb:Br)(e.component,{target:e.target,anchor:e.anchor,props:i,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&Mf(),this.#t=i.$$events;for(let a of Object.keys(this.#e))a==="$set"||a==="$destroy"||a==="$on"||ni(this,a,{get(){return this.#e[a]},set(o){this.#e[a]=o},enumerable:!0});this.#e.$set=a=>{Object.assign(i,a)},this.#e.$destroy=()=>{Dr(this.#e)}}$set(e){this.#e.$set(e)}$on(e,r){this.#t[e]=this.#t[e]||[];let n=(...i)=>r.call(this,...i);return this.#t[e].push(n),()=>{this.#t[e]=this.#t[e].filter(i=>i!==n)}}$destroy(){this.#e.$destroy()}};var K6;typeof HTMLElement=="function"&&(K6=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;constructor(t,e,r){super(),this.$$ctor=t,this.$$s=e,r&&this.attachShadow({mode:"open"})}addEventListener(t,e,r){if(this.$$l[t]=this.$$l[t]||[],this.$$l[t].push(e),this.$$c){let n=this.$$c.$on(t,e);this.$$l_u.set(e,n)}super.addEventListener(t,e,r)}removeEventListener(t,e,r){if(super.removeEventListener(t,e,r),this.$$c){let n=this.$$l_u.get(e);n&&(n(),this.$$l_u.delete(e))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(n){return i=>{let a=document.createElement("slot");n!=="default"&&(a.name=n),K(i,a)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let e={},r=e9(this);for(let n of this.$$s)n in r&&(n==="default"&&!this.$$d.children?(this.$$d.children=t(n),e.default=!0):e[n]=t(n));for(let n of this.attributes){let i=this.$$g_p(n.name);i in this.$$d||(this.$$d[i]=Cb(i,n.value,this.$$p_d,"toProp"))}for(let n in this.$$p_d)!(n in this.$$d)&&this[n]!==void 0&&(this.$$d[n]=this[n],delete this[n]);this.$$c=dA({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:e,$$host:this}}),this.$$me=ob(()=>{ma(()=>{this.$$r=!0;for(let n of Gy(this.$$c)){if(!this.$$p_d[n]?.reflect)continue;this.$$d[n]=this.$$c[n];let i=Cb(n,this.$$d[n],this.$$p_d,"toAttribute");i==null?this.removeAttribute(this.$$p_d[n].attribute||n):this.setAttribute(this.$$p_d[n].attribute||n,i)}this.$$r=!1})});for(let n in this.$$l)for(let i of this.$$l[n]){let a=this.$$c.$on(n,i);this.$$l_u.set(i,a)}this.$$l={}}}attributeChangedCallback(t,e,r){this.$$r||(t=this.$$g_p(t),this.$$d[t]=Cb(t,r,this.$$p_d,"toProp"),this.$$c?.$set({[t]:this.$$d[t]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(t){return Gy(this.$$p_d).find(e=>this.$$p_d[e].attribute===t||!this.$$p_d[e].attribute&&e.toLowerCase()===t)||t}});function Cb(t,e,r,n){let i=r[t]?.type;if(e=i==="Boolean"&&typeof e!="boolean"?e!=null:e,!n||!r[t])return e;if(n==="toAttribute")switch(i){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(i){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function e9(t){let e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}if(Xe){let t=function(e){if(!(e in globalThis)){let r;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(r!==void 0)return r;d1(e)},set:n=>{r=n}})}};t("$state"),t("$effect"),t("$derived"),t("$inspect"),t("$props"),t("$bindable")}function Nb(t){gr===null&&gf("onMount"),ns&&gr.l!==null?r9(gr).m.push(t):Yi(()=>{let e=sn(t);if(typeof e=="function")return e})}function Jl(t){gr===null&&gf("onDestroy"),Nb(()=>()=>sn(t))}function r9(t){var e=t.l;return e.u??={a:[],b:[],m:[]}}var Wm=class{constructor(e,r,n){this.mb=e,this.mounted=!1,this.svelteComponent=r,this.onValueChange=n}setValue(e){this.svelteComponentInstance?.setValue(e)}getInstance(){return this.svelteComponentInstance}mount(e,r,n={}){let i=Object.assign({mb:this.mb,value:r,onValueChange:this.onValueChange},n);this.svelteComponentInstance=Br(this.svelteComponent,{target:e,props:i}),this.mounted=!0}unmount(){this.svelteComponentInstance&&Dr(this.svelteComponentInstance),this.mounted=!1}isMounted(){return this.mounted}};var vi=class{constructor(){this.mounted=!1,this.targetEl=void 0,this.onUnmountCbs=[]}isMounted(){return this.mounted}getTargetEl(){return this.targetEl}mount(e){if(this.mounted||this.targetEl){console.warn("Mountable is already mounted",this);return}if(e===void 0){console.error("Mountable target element is undefined",this);return}this.mounted=!0,this.targetEl=e,this.onMount(e)}unmount(){if(!this.mounted||!this.targetEl){console.warn("Mountable is not mounted",this);return}this.mounted=!1,this.onUnmount(this.targetEl);for(let e of this.onUnmountCbs)e();this.targetEl=void 0}registerUnmountCb(e){this.onUnmountCbs.push(e)}};var Ym=class{constructor(){this.listeners=[]}registerListener(e){let r=e;return r.uuid=_r(),this.listeners.push(r),r}unregisterListener(e){this.unregisterListenerById(e.uuid)}unregisterListenerById(e){this.listeners=this.listeners.filter(r=>r.uuid!==e)}unregisterAllListeners(){this.listeners=[]}notifyListeners(e){for(let r of this.listeners)try{r.callback(e)}catch(n){let i=n instanceof Error?n:String(n);console.error(new Lt({errorLevel:"ERROR",effect:"error while calling listener callback",cause:i}))}}},hn=class extends Ym{constructor(e){super(),this.value=e}get(){return this.value}set(e){this.value=e,this.notifyListeners(e)}},jm=class extends Ym{constructor(e,r){super(),this.value=r(e),this.mapFn=r}get(){return this.value}set(e){this.value=this.mapFn(e),this.notifyListeners(this.value)}setDirect(e){this.value=e,this.notifyListeners(e)}};var nr=class extends vi{constructor(e){super(),this.mountable=e,this.mb=e.mb}reverseMapValue(e){let r=this.rawReverseMapValue(e);if(r!==void 0)return r;let n=this.rawReverseMapValue(this.getDefaultValue());return n!==void 0?n:this.getFallbackDefaultValue()}mapValue(e){return this.rawMapValue(e)}getValue(){return this.inputSignal?this.inputSignal.get():this.getDefaultValue()}getInternalValue(){return this.reverseMapValue(this.getValue())}setValue(e){this.inputSignal?.setDirect(e),this.notifySubscription(e)}setInternalValue(e){this.setValue(this.mapValue(e))}notifySubscription(e){this.metadataSubscription?.write(e)}getDefaultValue(){let e=this.mountable.getArgument("defaultValue");if(e===void 0)return this.mapValue(this.getFallbackDefaultValue());let r=this.filterValue(e.value);return r!==void 0?r:this.mapValue(this.getFallbackDefaultValue())}updateDataAttributes(e){this.mountTarget&&(this.mountTarget.dataset.internalValue=JSON.stringify(e))}getMountArgs(){return{}}onMount(e){this.mountTarget=e,this.svelteWrapper=new Wm(this.mb,this.getSvelteComponent(),n=>{this.updateDataAttributes(n),this.notifySubscription(this.mapValue(n))}),this.inputSignal=new jm(void 0,n=>{let i=this.filterValue(n);return i!==void 0?i:this.getDefaultValue()}),this.inputSignal.registerListener({callback:n=>this.svelteWrapper?.setValue(this.reverseMapValue(n))}),this.inputSignal.registerListener({callback:n=>{this.updateDataAttributes(this.reverseMapValue(n))}}),this.updateDataAttributes(this.getInternalValue());let r=this.mountable.getBindTarget();r&&(this.metadataSubscription=this.mountable.mb.metadataManager.subscribe(this.mountable.getUuid(),this.inputSignal,r,()=>this.mountable.unmount())),this.svelteWrapper.mount(e,this.reverseMapValue(this.getValue()),this.getMountArgs())}onUnmount(){this.mountTarget=void 0,this.inputSignal?.unregisterAllListeners(),this.metadataSubscription?.unsubscribe(),this.svelteWrapper?.unmount()}};var hA="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(hA);var n9=(t,e,r,n)=>r.onValueChange(ft(q(n))),i9=se('');function Fb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(o){ke(n,o,!0)}var a=i9();return At(a),a.__input=[n9,r,e,n],xt(a,()=>q(n),o=>ke(n,o)),K(t,a),Ee({setValue:i})}Mt(["input"]);var Bb=Tr(Bf()),Kn=class t{static stringify(e){return e.format(this.dateFormat)}static parse(e){return(0,Bb.default)(e,t.dateFormat)}static getDefaultDate(){return(0,Bb.default)(new Date)}static getDefaultDay(){return new Date().getDate()}static getDefaultMonth(){return 1}static getDefaultYear(){return new Date().getFullYear()}};var Zm=class extends nr{filterValue(e){return Do(e)}getFallbackDefaultValue(){return Kn.stringify(Kn.getDefaultDate())}getSvelteComponent(){return Fb}rawMapValue(e){return e}rawReverseMapValue(e){return e}};var a9=se('
');function Or(t,e){Se(e,!0);let r=at(e,"iconName",3,""),n=it(void 0);Yi(()=>q(n)?e.mb.internal.setIcon(q(n),r()):void 0);var i=Gr(),a=We(i);{var o=s=>{var l=a9();co(l,u=>ke(n,u),()=>q(n)),K(s,l)};et(a,s=>{r().length>0&&s(o)})}K(t,i),Ee()}function o9(t,e,r){r.showDatePicker()}function s9(t,e,r){t.key===" "&&r.showDatePicker()}var u9=se('
');function kb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(u){ke(n,u,!0)}var a=u9();a.__click=[o9,r,e],a.__keydown=[s9,r,e];var o=ve(a),s=ve(o,!0);le(o);var l=ue(o,2);return Or(l,{get mb(){return e.mb},iconName:"calendar"}),le(a),Le(u=>vt(s,u),[()=>q(n)?q(n).format(e.dateFormat):"none"]),K(t,a),Ee({setValue:i})}Mt(["click","keydown"]);var Jm=class extends nr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){if(e===null)return null;if(e===void 0||typeof e!="string")return;let r=Kn.parse(e);if(r.isValid())return Kn.stringify(r)}getFallbackDefaultValue(){return Kn.getDefaultDate()}getSvelteComponent(){return kb}rawMapValue(e){return e===null?null:(console.log("value",e,Kn.stringify(e),Kn.dateFormat),Kn.stringify(e))}rawReverseMapValue(e){if(e===null)return null;let r=Kn.parse(e);if(r.isValid())return r}getMountArgs(){return{dateFormat:this.mountable.mb.getSettings().preferredDateFormat,showDatePicker:()=>{this.mountable.mb.internal.openDatePickerModal(this.getInternalValue(),e=>this.setInternalValue(e))}}}};var l9=(t,e,r,n)=>r.onValueChange(ft(q(n))),c9=se('');function Pb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(o){ke(n,o,!0)}var a=c9();return At(a),a.__input=[l9,r,e,n],xt(a,()=>q(n),o=>ke(n,o)),K(t,a),Ee({setValue:i})}Mt(["input"]);var Xm=class extends nr{filterValue(e){return Do(e)}getFallbackDefaultValue(){return Kn.stringify(Kn.getDefaultDate())}getSvelteComponent(){return Pb}rawMapValue(e){return e}rawReverseMapValue(e){return e}};var f9=se("
");function $b(t,e){Se(e,!0);let r,n;Jl(()=>{n?.()});async function i(o){n?.(),lt.empty(r),n=await e.mb.internal.renderMarkdown(o,r,e.filePath)}Yi(()=>void i(e.value));var a=f9();co(a,o=>r=o,()=>r),K(t,a),Ee()}var p9=(t,e)=>e(),m9=(t,e)=>e(),d9=(t,e,r,n)=>r.onValueChange(ft(q(n))),h9=se(""),g9=se('
');function Ob(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value)),i=it(!1);function a(p){ke(n,p,!0)}function o(){ke(i,!1)}function s(){ke(i,!0)}function l(p){p.key===" "&&s()}var u=g9();u.__click=[p9,s];var c=ve(u);{var f=p=>{var d=h9();Dn(d),d.__focusout=[m9,o],d.__input=[d9,r,e,n],xt(d,()=>q(n),h=>ke(n,h)),K(p,d)},m=p=>{$b(p,{get value(){return q(n)},get mb(){return e.mb},get filePath(){return e.filePath}})};et(c,p=>{q(i)?p(f):p(m,!1)})}return le(u),gi("keypress",u,p=>l(p)),K(t,u),Ee({setValue:a})}Mt(["click","focusout","input"]);var Qm=class extends nr{filterValue(e){return Os(e)?e?.toString():void 0}getFallbackDefaultValue(){return""}getSvelteComponent(){return Ob}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{render:(e,r)=>void this.renderInElement(e,r),filePath:this.mountable.getFilePath()}}async renderInElement(e,r){this.mdUnloadCallback?.(),e.innerHTML="",this.mdUnloadCallback=await this.mountable.mb.internal.renderMarkdown(r,e,this.mountable.getFilePath())}onUnmount(){super.onUnmount(),this.mdUnloadCallback?.()}};var v9=se("");function yt(t,e){Se(e,!0);let r=at(e,"variant",19,()=>"default"),n=at(e,"disabled",3,!1),i=at(e,"tooltip",3,""),a=at(e,"classes",3,""),o=at(e,"onclick",3,()=>{});var s=v9();let l;s.__click=function(...c){o()?.apply(this,c)};var u=ve(s);La(u,()=>e.children),le(s),Le(c=>{l=Vr(s,1,`mb-button-inner ${a()??""}`,null,l,c),rt(s,"aria-label",i()),s.disabled=n()},[()=>({"mod-cta":r()==="primary","mod-warning":r()==="destructive","mod-plain":r()==="plain",disabled:n()})]),K(t,s),Ee()}Mt(["click"]);var y9=se('
'),b9=se('
',1);function Rb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(m){ke(n,m,!0)}function a(m){q(n).push(m),e.onValueChange(ft(q(n)))}function o(m){q(n).splice(m,1),e.onValueChange(ft(q(n)))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=q(n)[p-1];q(n)[p-1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),p{let h=q(n)[p+1];q(n)[p+1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),d.push({name:"Copy image path",icon:"copy",onclick:()=>{let h=q(n)[p];navigator.clipboard.writeText(h).then(()=>{e.mb.internal.showNotice("Image path copied to clipboard")}).catch(()=>{e.mb.internal.showNotice("Failed to copy image path to clipboard")})}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.mb.internal.createContextMenu(d).showWithEvent(m)}var l=b9(),u=We(l);Ut(u,21,()=>q(n),Zt,(m,p,d)=>{var h=y9();h.__contextmenu=y=>s(y,d);var b=ve(h);le(h),Le((y,D)=>{rt(h,"data-value",y),rt(b,"src",D),rt(b,"alt",q(p)),rt(b,"aria-label",q(p))},[()=>dn(q(p)),()=>e.mb.internal.imagePathToUri(q(p))]),K(m,h)}),le(u);var c=ue(u,2),f=ve(c);return yt(f,{get variant(){return"default"},onclick:()=>e.showSuggester(),children:(m,p)=>{_t();var d=Vt("Add new image");K(m,d)},$$slots:{default:!0}}),le(c),K(t,l),Ee({setValue:i,pushValue:a})}Mt(["contextmenu"]);var Km=class extends nr{filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return Rb}rawMapValue(e){return e}rawReverseMapValue(e){return e.map(r=>dn(r)).filter(r=>r!==void 0)}getMountArgs(){return{showSuggester:()=>this.openModal()}}openModal(){this.mountable.mb.internal.openImageSuggesterModal(this,!1,e=>{e!==void 0&&this.svelteWrapper?.getInstance()?.pushValue(e)})}};var x9=(t,e)=>e(t),w9=se('
'),_9=se('
');function Lb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(c){ke(n,c,!0)}function a(c){let f=[];f.push({name:"Edit",icon:"pencil",onclick:()=>{e.showSuggester()}}),f.push({name:"Remove",icon:"x",warning:!0,onclick:()=>e.clear()}),e.mb.internal.createContextMenu(f).showWithEvent(c)}var o=Gr(),s=We(o);{var l=c=>{var f=w9();f.__contextmenu=[x9,a];var m=ve(f),p=ue(m,2);yt(p,{get variant(){return"plain"},onclick:d=>a(d),classes:"mb-image-card-button",children:(d,h)=>{Or(d,{iconName:"ellipsis-vertical",get mb(){return e.mb}})},$$slots:{default:!0}}),le(f),Le(d=>{rt(m,"src",d),rt(m,"alt",q(n)),rt(m,"aria-label",q(n))},[()=>e.mb.internal.imagePathToUri(q(n))]),K(c,f)},u=c=>{var f=_9(),m=ve(f);yt(m,{get variant(){return"plain"},onclick:()=>e.showSuggester(),tooltip:"Select image",children:(p,d)=>{_t();var h=Vt("No image selected. Click to select.");K(p,h)},$$slots:{default:!0}}),le(f),K(c,f)};et(s,c=>{q(n)?c(l):c(u,!1)})}return K(t,o),Ee({setValue:i})}Mt(["contextmenu"]);var ed=class extends nr{filterValue(e){return Os(e)?e:void 0}getFallbackDefaultValue(){}getSvelteComponent(){return Lb}rawMapValue(e){return e}rawReverseMapValue(e){return dn(e)}getMountArgs(){return{showSuggester:()=>this.openModal(),clear:()=>this.setInternalValue(void 0)}}openModal(){this.mountable.mb.internal.openImageSuggesterModal(this,!0,e=>this.setInternalValue(e))}};var A9=se(' '),D9=se(' ');function fs(t,e){Se(e,!0);let r=cr(()=>e.mdLink.block?`${e.mdLink.target}#${e.mdLink.block}`:e.mdLink.target),n=cr(()=>e.mdLink.internal?"internal-link":"external-link");var i=Gr(),a=We(i);{var o=l=>{var u=A9(),c=ve(u,!0);le(u),Le(()=>{rt(u,"data-href",q(r)),rt(u,"href",q(r)),Vr(u,1,ls(q(n))),rt(u,"aria-label",q(r)),vt(c,e.mdLink.alias)}),K(l,u)},s=l=>{var u=D9(),c=ve(u,!0);le(u),Le(()=>{rt(u,"data-href",q(r)),rt(u,"href",q(r)),Vr(u,1,ls(q(n))),vt(c,q(r))}),K(l,u)};et(a,l=>{e.mdLink.alias?l(o):l(s,!1)})}K(t,i),Ee()}var S9=se(", ",1),E9=se(" ",1);function kf(t,e){Se(e,!0);let r=at(e,"elements",19,()=>[]);var n=E9(),i=We(n);Ut(i,17,()=>r().slice(0,r().length-1),Zt,(o,s)=>{var l=S9(),u=We(l);La(u,()=>e.children,()=>q(s)),_t(3),K(o,l)});var a=ue(i,2);La(a,()=>e.children,()=>r()[r().length-1]),K(t,n),Ee()}var T9=se(' '),M9=se(" "),C9=se(""),N9=se("");function ha(t,e){Se(e,!0);let r=at(e,"value",3,void 0),n=cr(()=>t1(r(),!1));var i=Gr(),a=We(i);{var o=l=>{var u=T9(),c=ve(u,!0);le(u),Le(()=>vt(c,q(n))),K(l,u)},s=(l,u)=>{{var c=m=>{var p=C9(),d=ve(p);kf(d,{get elements(){return q(n)},children:(b,y=ca)=>{var D=Gr(),v=We(D);{var A=x=>{var E=M9(),T=ve(E,!0);le(E),Le(()=>vt(T,y())),K(x,E)},w=x=>{fs(x,{get mdLink(){return y()}})};et(v,x=>{typeof y()=="string"?x(A):x(w,!1)})}K(b,D)},$$slots:{default:!0}}),le(p),K(m,p)},f=m=>{var p=N9(),d=ve(p);fs(d,{get mdLink(){return q(n)}}),le(p),K(m,p)};et(l,m=>{Array.isArray(q(n))?m(c):m(f,!1)},u)}};et(a,l=>{typeof q(n)=="string"?l(o):l(s,!1)})}K(t,i),Ee()}function F9(t,e,r){t.key===" "&&r.showInput()}var I9=se('
'),B9=(t,e,r)=>r.showInput(),k9=se('
');function Vb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(m){ke(n,m,!0)}function a(m){q(n).push(m),e.onValueChange(ft(q(n)))}function o(m){q(n).splice(m,1),e.onValueChange(ft(q(n)))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=q(n)[p-1];q(n)[p-1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),p{let h=q(n)[p+1];q(n)[p+1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),d.push({name:"Edit",icon:"pencil",onclick:()=>{e.mb.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Edit the value of a list item.",value:dn(q(n)[p]),multiline:!1,onSubmit:h=>{q(n)[p]=h,e.onValueChange(ft(q(n)))},onCancel:()=>{}})}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.mb.internal.createContextMenu(d).showWithEvent(m)}var l=k9(),u=ve(l);Ut(u,17,()=>q(n),Zt,(m,p,d)=>{var h=I9();h.__contextmenu=y=>s(y,d);var b=ve(h);ha(b,{get value(){return q(p)}}),le(h),Le(y=>rt(h,"data-value",y),[()=>dn(q(p))]),K(m,h)});var c=ue(u,2);c.__click=[B9,r,e],c.__keydown=[F9,r,e];var f=ue(ve(c),2);return Or(f,{get mb(){return e.mb},iconName:"plus"}),le(c),le(l),K(t,l),Ee({setValue:i,pushValue:a})}Mt(["contextmenu","click","keydown"]);var td=class extends nr{filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return Vb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showInput:()=>this.openModal()}}openModal(){this.mountable.mb.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper?.getInstance()?.pushValue(e)},onCancel:()=>{}})}};function P9(t,e,r){if(!r.allowOther){r.showSuggester();return}r.mb.internal.createContextMenu([{name:"From Options",onclick:()=>r.showSuggester()},{name:"From Text",onclick:()=>r.showTextPrompt()}]).showWithEvent(t)}function $9(t,e,r){t.key===" "&&r.showSuggester()}var O9=se('
'),R9=se('
');function Ub(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(m){ke(n,m,!0)}function a(m){q(n).push(m),e.onValueChange(ft(q(n)))}function o(m){q(n).splice(m,1),e.onValueChange(ft(q(n)))}function s(m,p){let d=[];p>0&&d.push({name:"Move left",icon:"arrow-left",onclick:()=>{let h=q(n)[p-1];q(n)[p-1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),p{let h=q(n)[p+1];q(n)[p+1]=q(n)[p],q(n)[p]=h,e.onValueChange(ft(q(n)))}}),d.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(p)}),e.mb.internal.createContextMenu(d).showWithEvent(m)}var l=R9(),u=ve(l);Ut(u,17,()=>q(n),Zt,(m,p,d)=>{var h=O9();h.__contextmenu=y=>s(y,d);var b=ve(h);ha(b,{get value(){return q(p)}}),le(h),Le(y=>rt(h,"data-value",y),[()=>dn(q(p))]),K(m,h)});var c=ue(u,2);c.__click=[P9,r,e],c.__keydown=[$9,r,e];var f=ue(ve(c),2);return Or(f,{get mb(){return e.mb},iconName:"plus"}),le(c),le(l),K(t,l),Ee({setValue:i,pushValue:a})}Mt(["contextmenu","click","keydown"]);var rd=class extends nr{filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return Ub}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.mb.internal.openSuggesterModal(this,e=>{this.svelteWrapper?.getInstance()?.pushValue(e.value)})}openTextModal(){this.mountable.mb.internal.openTextPromptModal({title:"Meta Bind List Suggester",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper?.getInstance()?.pushValue(e)},onCancel:()=>{}})}};var L9=(t,e)=>e(),V9=se(""),U9=se('');function qb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(s){ke(n,s,!0)}function a(){e.onValueChange(ft(q(n)))}var o=U9();return o.__change=[L9,a],Ut(o,21,()=>e.options,Zt,(s,l)=>{var u=V9(),c={},f=ve(u,!0);le(u),Le(()=>{c!==(c=q(l).value)&&(u.value=(u.__value=q(l).value)??""),vt(f,q(l).name)}),K(s,u)}),le(o),Zl(o,()=>q(n),s=>ke(n,s)),K(t,o),Ee({setValue:i})}Mt(["change"]);var nd=class extends nr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return Rs(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return qb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var q9=se('
'),z9=se('Empty'),H9=se(''),G9=(t,e,r)=>{t.key==="Enter"&&q(e).length>0&&r()},W9=se(''),Y9=se(" "),j9=se('
',1);function zb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value)),i=it("");function a(A){ke(n,A,!0)}function o(){q(n).push(q(i)),e.onValueChange(ft(q(n))),ke(i,"")}function s(A){q(n).splice(A,1),e.onValueChange(ft(q(n)))}function l(A,w){let x=w.toString();return`${A.toString().padStart(x.length,"0")}/${x}`}function u(A,w){let x=[];w>0&&x.push({name:"Move up",icon:"arrow-up",onclick:()=>{let E=q(n)[w-1];q(n)[w-1]=q(n)[w],q(n)[w]=E,e.onValueChange(ft(q(n)))}}),w{let E=q(n)[w+1];q(n)[w+1]=q(n)[w],q(n)[w]=E,e.onValueChange(ft(q(n)))}}),x.push({name:"Edit",icon:"pencil",onclick:()=>{e.mb.internal.openTextPromptModal({title:"Meta Bind List",subTitle:"Edit the value of a list item.",value:dn(q(n)[w]),multiline:e.multiLine,onSubmit:E=>{q(n)[w]=E,e.onValueChange(ft(q(n)))},onCancel:()=>{}})}}),x.push({name:"Remove",icon:"x",warning:!0,onclick:()=>s(w)}),e.mb.internal.createContextMenu(x).showWithEvent(A)}var c=j9(),f=We(c);Ut(f,21,()=>q(n),Zt,(A,w,x)=>{var E=q9();E.__contextmenu=_=>u(_,x);var T=ve(E);ha(T,{get value(){return q(w)}}),le(E),Le(_=>rt(E,"data-value",_),[()=>dn(q(w))]),K(A,E)},A=>{var w=z9();K(A,w)}),le(f);var m=ue(f,2),p=ve(m);{var d=A=>{var w=H9();Dn(w),Le(()=>{rt(w,"placeholder",e.placeholder),rt(w,"maxlength",e.limit)}),xt(w,()=>q(i),x=>ke(i,x)),K(A,w)},h=A=>{var w=W9();At(w),w.__keyup=[G9,i,o],Le(()=>{rt(w,"placeholder",e.placeholder),rt(w,"maxlength",e.limit)}),xt(w,()=>q(i),x=>ke(i,x)),K(A,w)};et(p,A=>{e.multiLine?A(d):A(h,!1)})}var b=ue(p,2);{var y=A=>{var w=Y9(),x=ve(w,!0);le(w),Le(E=>{Vr(w,1,`mb-content-limit-indicator ${q(n).length>e.limit?"mb-content-limit-indicator-overflow":""}`),vt(x,E)},[()=>l(q(n).length,e.limit)]),K(A,w)};et(b,A=>{e.limit!==void 0&&A(y)})}var D=ue(b,2);let v=cr(()=>!q(i));return yt(D,{onclick:()=>o(),get disabled(){return q(v)},children:(A,w)=>{Or(A,{get mb(){return e.mb},iconName:"plus"})},$$slots:{default:!0}}),le(m),K(t,c),Ee({setValue:a})}Mt(["contextmenu","keyup"]);var id=class extends nr{filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return zb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"New Entry...",limit:this.mountable.getArgument("limit")?.value,multiLine:this.mountable.getArgument("multiLine")?.value===!0}}};var Z9=se('
'),J9=se('Empty'),X9=se('
',1);function Hb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(d){ke(n,d,!0)}function a(d){q(n).push(d),e.onValueChange(ft(q(n)))}function o(d){q(n).splice(d,1),e.onValueChange(ft(q(n)))}function s(d,h){let b=[];h>0&&b.push({name:"Move up",icon:"arrow-up",onclick:()=>{let y=q(n)[h-1];q(n)[h-1]=q(n)[h],q(n)[h]=y,e.onValueChange(ft(q(n)))}}),h{let y=q(n)[h+1];q(n)[h+1]=q(n)[h],q(n)[h]=y,e.onValueChange(ft(q(n)))}}),b.push({name:"Remove",icon:"x",warning:!0,onclick:()=>o(h)}),e.mb.internal.createContextMenu(b).showWithEvent(d)}var l=X9(),u=We(l);Ut(u,21,()=>q(n),Zt,(d,h,b)=>{var y=Z9();y.__contextmenu=v=>s(v,b);var D=ve(y);ha(D,{get value(){return q(h)}}),le(y),Le(v=>rt(y,"data-value",v),[()=>dn(q(h))]),K(d,y)},d=>{var h=J9();K(d,h)}),le(u);var c=ue(u,2),f=ve(c);yt(f,{get variant(){return"default"},onclick:()=>e.showSuggester(),children:(d,h)=>{_t();var b=Vt("Add new item");K(d,b)},$$slots:{default:!0}});var m=ue(f,2);{var p=d=>{yt(d,{get variant(){return"default"},onclick:()=>e.showTextPrompt(),children:(h,b)=>{_t();var y=Vt("Add other item");K(h,y)},$$slots:{default:!0}})};et(m,d=>{e.allowOther&&d(p)})}return le(c),K(t,l),Ee({setValue:i,pushValue:a})}Mt(["contextmenu"]);var ad=class extends nr{filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return Hb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.mb.internal.openSuggesterModal(this,e=>{this.svelteWrapper?.getInstance()?.pushValue(e.value)})}openTextModal(){this.mountable.mb.internal.openTextPromptModal({title:"Meta Bind List Suggester",subTitle:"Create a new List Element.",value:"",multiline:!1,onSubmit:e=>{this.svelteWrapper?.getInstance()?.pushValue(e)},onCancel:()=>{}})}};var Q9=(t,e,r)=>{t.target instanceof HTMLInputElement||e(q(r).value)},K9=(t,e,r)=>e(q(r).value),eq=se('
');function Gb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(u){ke(n,u,!0)}function a(u){q(n).includes(u)?ke(n,q(n).filter(c=>c!==u),!0):q(n).push(u),e.onValueChange(ft(q(n)))}function o(u,c){u.key===" "&&a(c)}var s=Gr(),l=We(s);return Ut(l,17,()=>e.options,Zt,(u,c)=>{var f=eq();let m;f.__click=[Q9,a,c];var p=ve(f);At(p),p.__input=[K9,a,c];var d=ue(p,2);ha(d,{get value(){return q(c).name}}),le(f),Le((h,b,y)=>{m=Vr(f,1,"mb-select-input-element mb-mod-multi",null,m,h),rt(f,"data-value",b),cs(p,y)},[()=>({"is-selected":q(n).includes(q(c).value)}),()=>dn(q(c).value),()=>q(n).includes(q(c).value)]),gi("keypress",f,h=>o(h,q(c).value)),K(u,f)}),K(t,s),Ee({setValue:i})}Mt(["click","input"]);var od=class extends nr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return Ia(e)}getFallbackDefaultValue(){return[]}getSvelteComponent(){return Gb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var tq=(t,e,r,n)=>r.onValueChange(ft(q(n))),rq=se('');function Wb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(o){ke(n,o,!0)}var a=rq();return At(a),a.__input=[tq,r,e,n],Le(()=>rt(a,"placeholder",e.placeholder)),xt(a,()=>q(n),o=>ke(n,o)),K(t,a),Ee({setValue:i})}Mt(["input"]);var sd=class extends nr{filterValue(e){return Il(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return Wb}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Number"}}};function gA(t,e,r){e(),r(t)}var nq=se(' ',1),iq=se('
');function Yb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value)),i=!1,a,o=0,s;function l(w){ke(n,w,!0)}function u(w){ke(n,w,!0),e.onValueChange(w)}function c(w){return w=af(w,e.minValue,e.maxValue),Ly(w,e.minValue,e.maxValue,0,100)}function f(){i=!0}function m(){i=!1}function p(w){if(!i)return;w.stopPropagation&&w.stopPropagation(),w.preventDefault&&w.preventDefault();let x=w instanceof TouchEvent?w.touches[0].clientX:w.clientX;d(x)}function d(w){let x=a.getBoundingClientRect();w=af(w,x.left,x.right);let E=Ly(w,x.left,x.right,e.minValue,e.maxValue);E=h(E,e.stepSize),u(E)}function h(w,x){return Number.parseFloat((Math.round(w/x)*x).toFixed(10))}function b(w){o<50&&(o+=1);let x=Math.ceil(o/5);if(w.key==="ArrowUp"||w.key==="ArrowRight"){let E=af(q(n)+x,e.minValue,e.maxValue);u(E)}if(w.key==="ArrowDown"||w.key==="ArrowLeft"){let E=af(q(n)-x,e.minValue,e.maxValue);u(E)}window.clearTimeout(s),s=window.setTimeout(()=>o=1,100)}var y=iq();gi("touchmove",us,p,void 0,!1),gi("touchcancel",us,m),gi("touchend",us,m),gi("mousemove",us,p),gi("mouseup",us,m),y.__keydown=b,y.__mousedown=[gA,f,p],y.__touchstart=[gA,f,p];var D=ve(y),v=ue(D,2);{var A=w=>{var x=nq(),E=We(x),T=ve(E,!0);le(E);var _=ue(E,2),C=ve(_,!0);le(_);var N=ue(_,2),I=ve(N,!0);le(N),Le(()=>{vt(T,q(n)),vt(C,e.minValue),vt(I,e.maxValue)}),K(w,x)};et(v,w=>{e.addLabels&&w(A)})}return le(y),co(y,w=>a=w,()=>a),Le((w,x)=>{rt(y,"aria-label",w),jl(D,x),rt(D,"aria-valuemin",e.minValue),rt(D,"aria-valuemax",e.maxValue),rt(D,"aria-valuenow",q(n))},[()=>q(n).toString(),()=>`width: ${c(q(n))}%`]),gi("dragstart",D,()=>i=!0),K(t,y),Ee({setValue:l})}Mt(["keydown","mousedown","touchstart"]);var ud=class extends nr{constructor(e){if(super(e),this.minValue=this.mountable.getArgument("minValue")?.value??0,this.maxValue=this.mountable.getArgument("maxValue")?.value??100,this.stepSize=this.mountable.getArgument("stepSize")?.value??1,this.minValue>=this.maxValue)throw new $r({errorLevel:"ERROR",effect:"can not create progress bar input field",cause:`minValue (${this.maxValue}) must be less than maxValue (${this.maxValue})`})}filterValue(e){return Jp(Il(e),this.minValue,this.maxValue)}getFallbackDefaultValue(){return this.minValue}getSvelteComponent(){return Yb}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{minValue:this.minValue,maxValue:this.maxValue,stepSize:this.stepSize,addLabels:(this.mountable.getArgument("addLabels")?.value??!0)===!0}}};var aq=(t,e,r)=>{t.target instanceof HTMLInputElement||e(q(r).value)},oq=(t,e,r)=>e(q(r).value),sq=se('
');function jb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(u){ke(n,u,!0)}function a(u){q(n)===u?ke(n,null):ke(n,u,!0),e.onValueChange(ft(q(n)))}function o(u,c){u.key===" "&&a(c)}var s=Gr(),l=We(s);return Ut(l,17,()=>e.options,Zt,(u,c)=>{var f=sq();let m;f.__click=[aq,a,c];var p=ve(f);At(p),p.__input=[oq,a,c];var d=ue(p,2);ha(d,{get value(){return q(c).name}}),le(f),Le((h,b)=>{m=Vr(f,1,"mb-select-input-element",null,m,h),rt(f,"data-value",b),cs(p,q(c).value===q(n))},[()=>({"is-selected":q(c).value===q(n)}),()=>dn(q(c).value)]),gi("keypress",f,h=>o(h,q(c).value)),K(u,f)}),K(t,s),Ee({setValue:i})}Mt(["click","input"]);var ld=class extends nr{constructor(e){super(e),this.options=this.mountable.getArguments("option")}filterValue(e){return Rs(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return jb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{options:this.options}}};var uq=se(' '),lq=(t,e,r,n)=>r.onValueChange(ft(q(n))),cq=se(' '),fq=se(' ',1);function Zb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(f){ke(n,f,!0)}var a=fq(),o=We(a);{var s=f=>{var m=uq(),p=ve(m,!0);le(m),Le(()=>vt(p,e.minValue)),K(f,m)};et(o,f=>{e.addLabels&&f(s)})}var l=ue(o,2);At(l),l.__input=[lq,r,e,n];var u=ue(l,2);{var c=f=>{var m=cq(),p=ve(m,!0);le(m),Le(()=>vt(p,e.maxValue)),K(f,m)};et(u,f=>{e.addLabels&&f(c)})}return Le(f=>{rt(l,"aria-label",f),rt(l,"min",e.minValue),rt(l,"max",e.maxValue),rt(l,"step",e.stepSize)},[()=>q(n).toString()]),xt(l,()=>q(n),f=>ke(n,f)),K(t,a),Ee({setValue:i})}Mt(["input"]);var cd=class extends nr{constructor(e){if(super(e),this.minValue=this.mountable.getArgument("minValue")?.value??0,this.maxValue=this.mountable.getArgument("maxValue")?.value??100,this.stepSize=this.mountable.getArgument("stepSize")?.value??1,this.minValue>=this.maxValue)throw new $r({errorLevel:"ERROR",effect:"can not create slider input field",cause:`minValue (${this.maxValue}) must be less than maxValue (${this.maxValue})`})}filterValue(e){return Jp(Il(e),this.minValue,this.maxValue)}getFallbackDefaultValue(){return this.minValue}getSvelteComponent(){return Zb}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{minValue:this.minValue,maxValue:this.maxValue,stepSize:this.stepSize,addLabels:this.mountable.getArgument("addLabels")?.value===!0}}};var pq=se(" "),mq=se('
');function Jb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(h){ke(n,h,!0)}let a=cr(()=>q(n)?.toString()??"null"),o=cr(()=>{if(vn.isLink(q(a)))try{return vn.parseLink(q(a))}catch(h){console.warn(h)}});var s=mq(),l=ve(s),u=ve(l);{var c=h=>{fs(h,{get mdLink(){return q(o)}})},f=h=>{var b=pq(),y=ve(b,!0);le(b),Le(()=>vt(y,q(a))),K(h,b)};et(u,h=>{q(o)!==void 0?h(c):h(f,!1)})}le(l);var m=ue(l,2);yt(m,{get variant(){return"plain"},get onclick(){return e.showSuggester},children:(h,b)=>{Or(h,{get mb(){return e.mb},iconName:"list"})},$$slots:{default:!0}});var p=ue(m,2);{var d=h=>{yt(h,{get variant(){return"plain"},get onclick(){return e.showTextPrompt},children:(b,y)=>{Or(b,{get mb(){return e.mb},iconName:"pencil"})},$$slots:{default:!0}})};et(p,h=>{e.allowOther&&h(d)})}return le(s),K(t,s),Ee({setValue:i})}var fd=class extends nr{filterValue(e){return Rs(e)}getFallbackDefaultValue(){return null}getSvelteComponent(){return Jb}rawMapValue(e){return e}rawReverseMapValue(e){return e}getMountArgs(){return{showSuggester:()=>this.openModal(),showTextPrompt:()=>this.openTextModal(),allowOther:this.mountable.getArgument("allowOther")?.value===!0}}openModal(){this.mountable.mb.internal.openSuggesterModal(this,e=>this.setInternalValue(e.value))}openTextModal(){this.mountable.mb.internal.openTextPromptModal({title:"Meta Bind Suggester",subTitle:"Set the suggester value.",value:"",multiline:!1,onSubmit:e=>{this.setInternalValue(e)},onCancel:()=>{}})}};var dq=(t,e,r,n)=>r.onValueChange(ft(q(n))),hq=se(" "),gq=se(' ',1);function Xb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(c){ke(n,c,!0)}function a(c,f){let m=f.toString();return`${c.toString().padStart(m.length,"0")}/${m}`}var o=gq(),s=We(o);At(s),s.__input=[dq,r,e,n];var l=ue(s,2);{var u=c=>{var f=hq(),m=ve(f,!0);le(f),Le(p=>{Vr(f,1,`mb-content-limit-indicator ${q(n).length>e.limit?"mb-content-limit-indicator-overflow":""}`),vt(m,p)},[()=>a(q(n).length,e.limit)]),K(c,f)};et(l,c=>{e.limit!==void 0&&c(u)})}return Le(()=>{rt(s,"placeholder",e.placeholder),rt(s,"maxlength",e.limit)}),xt(s,()=>q(n),c=>ke(n,c)),K(t,o),Ee({setValue:i})}Mt(["input"]);var pd=class extends nr{filterValue(e){return Do(e)}getFallbackDefaultValue(){return""}getSvelteComponent(){return Xb}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Text",limit:this.mountable.getArgument("limit")?.value}}};var vq=(t,e,r,n)=>r.onValueChange(ft(q(n))),yq=se('');function Qb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(o){ke(n,o,!0)}var a=yq();return Dn(a),a.__input=[vq,r,e,n],Le(()=>{rt(a,"placeholder",e.placeholder),rt(a,"maxlength",e.limit)}),xt(a,()=>q(n),o=>ke(n,o)),K(t,a),Ee({setValue:i})}Mt(["input"]);var md=class extends nr{filterValue(e){return Do(e)}getFallbackDefaultValue(){return""}getSvelteComponent(){return Qb}rawReverseMapValue(e){return e}rawMapValue(e){return e}getMountArgs(){return{placeholder:this.mountable.getArgument("placeholder")?.value??"Text",limit:this.mountable.getArgument("limit")?.value}}};var bq=(t,e,r,n)=>r.onValueChange(ft(q(n))),xq=se('');function Kb(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(o){ke(n,o,!0)}var a=xq();return At(a),a.__input=[bq,r,e,n],xt(a,()=>q(n),o=>ke(n,o)),K(t,a),Ee({setValue:i})}Mt(["input"]);var dd=class extends nr{filterValue(e){return Do(e)}getFallbackDefaultValue(){return"00:00"}getSvelteComponent(){return Kb}rawMapValue(e){return e}rawReverseMapValue(e){return e}};var wq=(t,e)=>e(),_q=(t,e)=>e(t),Aq=se('
');function ex(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]),n=it(dt(e.value));function i(c){ke(n,c,!0)}function a(){ke(n,!q(n)),e.onValueChange(ft(q(n)))}function o(c){c.key===" "&&a()}var s=Aq();let l;s.__click=[wq,a],s.__keydown=[_q,o];var u=ve(s);return At(u),le(s),Le(c=>{l=Vr(s,1,"checkbox-container",null,l,c),rt(s,"aria-checked",q(n)),cs(u,q(n))},[()=>({"is-enabled":q(n)})]),K(t,s),Ee({setValue:i})}Mt(["click","keydown"]);var hd=class extends nr{constructor(e){super(e),this.onValue=this.mountable.getArgument("onValue")?.value??!0,this.offValue=this.mountable.getArgument("offValue")?.value??!1}filterValue(e){return e===this.onValue||e===this.offValue?Rs(e):void 0}getFallbackDefaultValue(){return!1}getSvelteComponent(){return ex}rawReverseMapValue(e){return e===this.onValue?!0:(e===this.offValue,!1)}rawMapValue(e){return e?this.onValue:this.offValue}};var qt=class{static linkToInputField(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/inputfields/${e.toLowerCase()}/`}static linkToInputFieldArgument(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/inputfieldarguments/${e.toLowerCase()}/`}static linkToViewField(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/viewfields/${e.toLowerCase()}/`}static linkToViewFieldArgument(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/reference/viewfieldarguments/${e.toLowerCase()}/`}static linkToInputFields(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/inputfields/"}static linkToViewFields(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/viewfields/"}static linkToButtons(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/buttons/#button-configuration"}static linkToButtonConfig(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/buttons/#button-configuration"}static linkToSearch(e){return`https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/?s=${encodeURIComponent(e)}`}static linkToHome(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/"}static linkToGithub(){return"https://github.com/mProjectsCode/obsidian-meta-bind-plugin"}static linkToIssues(){return"https://github.com/mProjectsCode/obsidian-meta-bind-plugin/issues"}static linkToCanaryBuilds(){return"https://www.moritzjung.dev/obsidian-meta-bind-plugin-docs/guides/installation/#canary-builds"}static open(e){Xp(e)}};var gd=class{constructor(e){this.mb=e}createInputField(e){let r=e.declaration.inputFieldType,n=e.renderChildType;if(r!=="invalid"&&this.checkRenderChildTypeAllowed(r,n),r==="toggle")return new hd(e);if(r==="slider")return new cd(e);if(r==="text")return new pd(e);if(r==="textArea")return new md(e);if(r==="select")return new ld(e);if(r==="multiSelect")return new od(e);if(r==="datePicker")return new Jm(e);if(r==="number")return new sd(e);if(r==="suggester")return new fd(e);if(r==="editor")return new Qm(e);if(r==="progressBar")return new ud(e);if(r==="inlineSelect")return new nd(e);if(r==="imageSuggester")return new ed(e);if(r==="list")return new id(e);if(r==="listSuggester")return new ad(e);if(r==="date")return new Zm(e);if(r==="time")return new dd(e);if(r==="inlineListSuggester")return new rd(e);if(r==="inlineList")return new td(e);if(r==="imageListSuggester")return new Km(e);if(r==="dateTime")return new Xm(e);}checkRenderChildTypeAllowed(e,r){if(this.mb.getSettings().ignoreCodeBlockRestrictions)return;let n=wm[e];if(r==="block"&&!n.allowInBlock)throw new to({errorLevel:"ERROR",effect:"can not create input field",cause:`input fields of type '${e}' are not allowed inside of code blocks`,docs:[qt.linkToInputField(e)]});if(r==="inline"&&!n.allowInline)throw new to({errorLevel:"ERROR",effect:"can not create input field",cause:`input fields of type '${e}' are not allowed inside of inline code blocks`,docs:[qt.linkToInputField(e)]})}};var Mo=class extends vi{constructor(e){super(),this.mountable=e,this.mb=e.mb,this.variables=[],this.hidden=!1}async initialRender(e){lt.addClass(e,"mb-view-text"),this.hidden=this.mountable.getArgument("hidden")?.value??!1,this.hidden&<.addClass(e,"mb-view-hidden"),await this.onInitialRender(e)}async rerender(e,r){this.hidden||await this.onRerender(e,r)}onMount(e){this.buildVariables(),this.initialRender(e),this.metadataSubscription=this.mountable.mb.metadataManager.subscribeDerived(this.mountable.getUuid(),this.mountable.getDeclaration().writeToBindTarget,this.variables.map(r=>r.bindTargetDeclaration),this.variables.map(r=>r.metadataSignal),async()=>{let r=await this.computeValue();return this.rerender(e,r),this.mapValue(r)},()=>this.mountable.unmount())}onUnmount(){this.metadataSubscription?.unsubscribe()}};var Dq=se('
');function tx(t,e){Se(e,!0);let r=at(e,"internal",3,!0),n=cr(()=>r()?e.mb.internal.imagePathToUri(e.image):e.image);var i=Dq(),a=ve(i);le(i),Le(()=>{rt(a,"src",q(n)),rt(a,"alt",e.image)}),K(t,i),Ee()}var Sq=se("No images"),Eq=se('
');function rx(t,e){Se(e,!0);let r=at(e,"images",23,()=>[]);function n(a){r(a)}var i=Eq();return Ut(i,21,r,Zt,(a,o)=>{tx(a,{get mb(){return e.mb},get image(){return q(o).link},get internal(){return q(o).internal}})},a=>{var o=Sq();K(a,o)}),le(i),K(t,i),Ee({updateImages:n})}var vd=class extends Mo{constructor(e){super(e)}buildVariables(){let e=this.mountable.getDeclaration().templateDeclaration.filter(n=>typeof n=="string"?n:!0);if(e.length!==1)throw new Ko({errorLevel:"ERROR",effect:"can not create view field",cause:"image view filed only supports exactly a single bind target and not text content"});let r=e[0];if(typeof r=="string")throw new Ko({errorLevel:"ERROR",effect:"can not create view field",cause:"image view filed only supports exactly a single bind target and not text content"});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new hn(void 0),uuid:_r(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable)}computeValue(){let e=this.linkVariable.metadataSignal.get();if(typeof e=="string"){let r=vn.interpretAsLink(e);return r===void 0?void 0:[r]}else return Array.isArray(e)?e.filter(r=>typeof r=="string").map(r=>vn.interpretAsLink(r)).filter(r=>r!==void 0):void 0}mapValue(e){return e===void 0?"":Array.isArray(e)?e.map(r=>r.toString()):e.toString()}onInitialRender(e){this.component=Br(rx,{target:e,props:{images:[],mb:this.mountable.mb}})}async onRerender(e,r){this.component?.updateImages(em(r).map(n=>({link:n.target,internal:n.internal})))}onUnmount(){super.onUnmount(),this.component&&Dr(this.component)}};var Tq=se("");function nx(t,e){Se(e,!0);let r=at(e,"mdLinkList",7);function n(l){r(l)}var i=Gr(),a=We(i);{var o=l=>{var u=Tq();K(l,u)},s=(l,u)=>{{var c=m=>{fs(m,{get mdLink(){return r()[0]}})},f=m=>{kf(m,{get elements(){return r()},children:(d,h=ca)=>{fs(d,{get mdLink(){return h()}})},$$slots:{default:!0}})};et(l,m=>{r().length===1?m(c):m(f,!1)},u)}};et(a,l=>{r().length===0?l(o):l(s,!1)})}return K(t,i),Ee({updateList:n})}var yd=class extends Mo{constructor(e){super(e)}buildVariables(){let e=this.mountable.getDeclaration().templateDeclaration.filter(a=>typeof a=="string"?a:!0);if(e.length!==1&&e.length!==2&&e.length!==3)throw new Ko({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}" or "{bindTarget}|{bindTarget}"'});let r=e[0],n=e[1],i=e[2];if(this.variables=[],e.length===1){if(typeof r=="string")throw new Ko({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}" or "{bindTarget}|{bindTarget}"'});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new hn(void 0),uuid:_r(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable)}else if(e.length===2||e.length===3){if(typeof r=="string"||typeof n!="string")throw new Ko({errorLevel:"ERROR",effect:"can not create view field",cause:'link view field must be of form "{bindTarget}", "{bindTarget}|alias", or "{bindTarget}|{bindTarget}"'});r.listenToChildren=!0,this.linkVariable={bindTargetDeclaration:r,metadataSignal:new hn(void 0),uuid:_r(),contextName:"MB_VAR_0"},this.variables.push(this.linkVariable),e.length===2?this.aliasVariable=n.slice(1):typeof i=="string"?this.aliasVariable=i:(i.listenToChildren=!0,this.aliasVariable={bindTargetDeclaration:i,metadataSignal:new hn(void 0),uuid:_r(),contextName:"MB_VAR_1"},this.variables.push(this.aliasVariable))}else throw new Error("unreachable")}getAlias(){if(this.aliasVariable)return typeof this.aliasVariable=="string"?this.aliasVariable:wu(this.aliasVariable.metadataSignal.get(),this.mountable.mb.getSettings().viewFieldDisplayNullAsEmpty)}computeValue(){let e=this.linkVariable.metadataSignal.get(),r=this.getAlias();if(typeof e=="string"){let n=vn.interpretAsLink(e);return n===void 0?void 0:(r&&(n.alias=r),[n])}else return Array.isArray(e)?e.filter(n=>typeof n=="string").map(n=>vn.interpretAsLink(n)).filter(n=>n!==void 0):void 0}mapValue(e){return e===void 0?"":Array.isArray(e)?e.map(r=>r.toString()):e.toString()}onInitialRender(e){this.component=Br(nx,{target:e,props:{mdLinkList:[]}})}async onRerender(e,r){this.component?.updateList(em(r))}onUnmount(){super.onUnmount(),this.component&&Dr(this.component)}};var bd=class extends Mo{constructor(e){super(e),this.hidden=!1}buildVariables(){let e=0;this.expressionStr="",this.variables=[];for(let r of this.mountable.getDeclaration().templateDeclaration??[])if(typeof r!="string"){let n={bindTargetDeclaration:r,metadataSignal:new hn(void 0),uuid:_r(),contextName:`MB_VAR_${e}`};this.variables.push(n),this.expressionStr+=n.contextName,e+=1}else this.expressionStr+=r;this.expression=this.mb.math.compile(this.expressionStr)}buildMathJSContext(){let e={};for(let r of this.variables??[])!r.contextName||!r.metadataSignal||(e[r.contextName]=r.metadataSignal.get()??"");return e}computeValue(){if(!this.expression)return this.handleComputeError(new vu({errorLevel:"ERROR",effect:"failed to evaluate expression",cause:"expression is undefined"}));let e=this.buildMathJSContext();try{let r=`${this.expression.evaluate(e)}`;return{value:la(r),error:!1}}catch(r){return r instanceof Error?this.handleComputeError(new vu({errorLevel:"ERROR",effect:"failed to evaluate expression",cause:r,context:{expression:this.expressionStr,context:e}})):this.handleComputeError(new Error("failed to evaluate js expression because of unexpected thrown value"))}}mapValue(e){return e.value}onInitialRender(e){}onRerender(e,r){let n=wu(r?.value,this.mountable.mb.getSettings().viewFieldDisplayNullAsEmpty)??"";r?.error?lt.addClass(e,"mb-error"):lt.removeClass(e,"mb-error"),e.innerText=n}handleComputeError(e){return console.warn(e),{error:!0,value:e.message}}};var xd=class extends Mo{constructor(e){super(e),this.renderMarkdown=!1}buildVariables(){this.textParts=[];let e=0;this.variables=[];for(let r of this.mountable.getDeclaration().templateDeclaration??[])if(typeof r!="string"){let n={bindTargetDeclaration:r,metadataSignal:new hn(void 0),uuid:_r(),contextName:`MB_VAR_${e}`};this.variables.push(n),this.textParts.push(n),e+=1}else this.textParts.push(r)}computeValue(){if(!this.textParts)throw new vu({errorLevel:"CRITICAL",effect:"failed to evaluate text view field",cause:"content parts is undefined"});return this.textParts.map(e=>typeof e=="string"?e:wu(e.metadataSignal.get(),this.mountable.mb.getSettings().viewFieldDisplayNullAsEmpty)).join("")}mapValue(e){return e}onInitialRender(e){this.renderMarkdown=this.mountable.getArgument("renderMarkdown")?.value??!1,this.renderMarkdown&<.addClass(e,"mb-view-markdown")}async onRerender(e,r){let n=wu(r,this.mountable.mb.getSettings().viewFieldDisplayNullAsEmpty)??"";this.renderMarkdown?(this.markdownUnloadCallback?.(),lt.empty(e),this.markdownUnloadCallback=await this.mountable.mb.internal.renderMarkdown(n,e,this.mountable.getFilePath())):e.innerText=n}onUnmount(){super.onUnmount(),this.markdownUnloadCallback?.()}};var wd=class{constructor(e){this.mb=e}createViewField(e){let r=e.declaration.viewFieldType;if(r==="math")return new bd(e);if(r==="text")return new xd(e);if(r==="link")return new yd(e);if(r==="image")return new vd(e);}};var ln=class extends Error{},Pf=class extends Error{};var vA=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},Mq=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function Cq(t,e,r){let n=r;for(let i of kr(t))n=e(n,i);return n}function Nq(t,e,r){return vA(this,void 0,void 0,function*(){var n,i,a,o;let s=r;try{for(var l=!0,u=Mq(Pr(t)),c;c=yield u.next(),n=c.done,!n;l=!0)o=c.value,l=!1,s=yield e(s,o)}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield a.call(u))}finally{if(i)throw i.error}}return s})}function ix(t){switch(!0){case t instanceof Array:return t.length;case Co(t):return t.length;case t instanceof Set:return t.size;case t instanceof Map:return t.size}return Cq(t,e=>e+1,0)}function yA(t){return vA(this,void 0,void 0,function*(){switch(!0){case t instanceof Array:case Co(t):case t instanceof Set:case t instanceof Map:return ix(t)}return yield Nq(t,e=>e+1,0)})}var bA={chunkwise:kA,chunkwiseOverlap:Ad,compress:_A,dropWhile:DA,enumerate:RA,filter:IA,flatMap:NA,flatten:ax,groupBy:jA,keys:qA,limit:$A,map:wA,pairwise:Nu,repeat:MA,skip:HA,slice:VA,sort:JA,takeWhile:EA,values:WA,chunkwiseAsync:PA,chunkwiseOverlapAsync:Dd,compressAsync:AA,dropWhileAsync:SA,enumerateAsync:LA,filterAsync:BA,flatMapAsync:FA,flattenAsync:ox,groupByAsync:ZA,keysAsync:zA,limitAsync:OA,mapAsync:_d,pairwiseAsync:$f,repeatAsync:CA,skipAsync:GA,sliceAsync:UA,sortAsync:XA,takeWhileAsync:TA,valuesAsync:YA};var xA={allMatch:QA,allUnique:eD,anyMatch:rD,exactlyN:iD,isEmpty:oD,isAsyncIterable:ps,isIterable:Zi,isIterator:Va,isReversed:uD,isSorted:cD,isString:Co,noneMatch:pD,same:dD,sameCount:gD,allMatchAsync:KA,allUniqueAsync:tD,anyMatchAsync:nD,exactlyNAsync:aD,isEmptyAsync:sD,isReversedAsync:lD,isSortedAsync:fD,noneMatchAsync:mD,sameAsync:hD,sameCountAsync:vD};var Ql=function(t){return this instanceof Ql?(this.v=t,this):new Ql(t)},Fq=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(b,y){a.push([p,h,b,y])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof Ql?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}},fo;(function(t){t[t.SHORTEST=0]="SHORTEST",t[t.LONGEST=1]="LONGEST",t[t.STRICT_EQUAL=2]="STRICT_EQUAL"})(fo||(fo={}));function*sx(t,e,...r){if(r.length===0)return;let n=[];for(let i of r)n.push(yD(i));e:for(;;){let i=bA.map(n,l=>l.next()),a=[],o=!0,s=!1;for(let l of i){let u;l.done?(o=!1,u=e):(s=!0,u=l.value),a.push(u)}if(!o&&s)switch(t){case fo.SHORTEST:break e;case fo.STRICT_EQUAL:throw new Pf("Iterators must have equal lengths")}if(!s)break;yield a}}function ux(t,e,...r){return Fq(this,arguments,function*(){if(r.length===0)return yield Ql(void 0);let i=[];for(let a of r)i.push(bD(a));e:for(;;){let a=[];for(let u of i){let c=yield Ql(u.next());a.push(c)}let o=[],s=!0,l=!1;for(let u of a){let c;u.done?(s=!1,c=e):(l=!0,c=u.value),o.push(c)}if(!s&&l)switch(t){case fo.SHORTEST:break e;case fo.STRICT_EQUAL:throw new Pf("Iterators must have equal lengths")}if(!l)break;yield yield Ql(o)}})}var Ys=function(t){return this instanceof Ys?(this.v=t,this):new Ys(t)},Iq=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},Bq=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(b,y){a.push([p,h,b,y])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof Ys?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*lx(t,e){let r=new Set;if(t instanceof Map){e===void 0&&(e=n=>n[1]);for(let n of t){let i=e(n);r.has(i)||(yield n,r.add(i))}}else{e===void 0&&(e=n=>n);for(let n of kr(t)){let i=e(n);r.has(i)||(yield n,r.add(i))}}}function xD(t,e){return Bq(this,arguments,function*(){var n,i,a,o;let s=new Set;if(t instanceof Map)for(let f of lx(t,e))yield yield Ys(yield Ys(f));else{e===void 0&&(e=f=>f);try{for(var l=!0,u=Iq(Pr(t)),c;c=yield Ys(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o,m=e(f);s.has(m)||(yield yield Ys(f),s.add(m))}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield Ys(a.call(u)))}finally{if(i)throw i.error}}}})}var Sn=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},tt=function(t){return this instanceof tt?(this.v=t,this):new tt(t)},zn=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(b,y){a.push([p,h,b,y])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof tt?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*wA(t,e){for(let r of kr(t))yield e(r)}function _d(t,e){return zn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=Sn(Pr(t)),u;u=yield tt(l.next()),n=u.done,!n;s=!0)o=u.value,s=!1,yield yield tt(yield tt(e(o)))}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield tt(a.call(l)))}finally{if(i)throw i.error}}})}function*_A(t,e){for(let[r,n]of Kl(t,e))n&&(yield r)}function AA(t,e){return zn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=Sn(_D(t,e)),u;u=yield tt(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let[c,f]=o;f&&(yield yield tt(c))}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield tt(a.call(l)))}finally{if(i)throw i.error}}})}function*DA(t,e){let r=!0;for(let n of kr(t)){if(r){if(!e(n)){r=!1,yield n;continue}continue}yield n}}function SA(t,e){return zn(this,arguments,function*(){var n,i,a,o;let s=!0;try{for(var l=!0,u=Sn(Pr(t)),c;c=yield tt(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o;if(s){if(!(yield tt(e(f)))){s=!1,yield yield tt(f);continue}continue}yield yield tt(f)}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield tt(a.call(u)))}finally{if(i)throw i.error}}})}function*EA(t,e){for(let r of kr(t))if(e(r))yield r;else break}function TA(t,e){return zn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=Sn(Pr(t)),u;u=yield tt(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let c=o;if(yield tt(e(c)))yield yield tt(c);else break}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield tt(a.call(l)))}finally{if(i)throw i.error}}})}function*MA(t,e){if(e<0)throw new ln(`Number of repetitions cannot be negative: ${e}`);for(let r=e;r>0;--r)yield t}function CA(t,e){return zn(this,arguments,function*(){if(e<0)throw new ln(`Number of repetitions cannot be negative: ${e}`);let n=yield tt(t);for(let i=e;i>0;--i)yield yield tt(n)})}function*NA(t,e){for(let r of kr(t)){let n=e(r,e);if(Zi(n))for(let i of kr(n))yield i;else yield n}}function FA(t,e){return zn(this,arguments,function*(){var n,i,a,o,s,l,u,c;try{for(var f=!0,m=Sn(Pr(t)),p;p=yield tt(m.next()),n=p.done,!n;f=!0){o=p.value,f=!1;let D=yield tt(e(o,e));if(Zi(D)||ps(D))try{for(var d=!0,h=(l=void 0,Sn(Pr(D))),b;b=yield tt(h.next()),s=b.done,!s;d=!0)c=b.value,d=!1,yield yield tt(c)}catch(v){l={error:v}}finally{try{!d&&!s&&(u=h.return)&&(yield tt(u.call(h)))}finally{if(l)throw l.error}}else yield yield tt(D)}}catch(y){i={error:y}}finally{try{!f&&!n&&(a=m.return)&&(yield tt(a.call(m)))}finally{if(i)throw i.error}}})}function*ax(t,e=1/0){if(e<1){for(let r of kr(t))t instanceof Map&&(r=r[1]),yield r;return}for(let r of kr(t))if(t instanceof Map&&(r=r[1]),(Zi(r)||Va(r))&&!Co(r))for(let n of ax(r,e-1))yield n;else yield r}function ox(t){return zn(this,arguments,function*(r,n=1/0){var i,a,o,s,l,u,c,f,m,p,d,h;if(n<1){try{for(var b=!0,y=Sn(Pr(r)),D;D=yield tt(y.next()),i=D.done,!i;b=!0){s=D.value,b=!1;let _=s;r instanceof Map&&(_=_[1]),yield yield tt(_)}}catch(_){a={error:_}}finally{try{!b&&!i&&(o=y.return)&&(yield tt(o.call(y)))}finally{if(a)throw a.error}}return yield tt(void 0)}try{for(var v=!0,A=Sn(Pr(r)),w;w=yield tt(A.next()),l=w.done,!l;v=!0){f=w.value,v=!1;let _=f;if(r instanceof Map&&(_=_[1]),(ps(_)||Zi(_)||Va(_))&&!Co(_))try{for(var x=!0,E=(p=void 0,Sn(ox(_,n-1))),T;T=yield tt(E.next()),m=T.done,!m;x=!0)h=T.value,x=!1,yield yield tt(h)}catch(C){p={error:C}}finally{try{!x&&!m&&(d=E.return)&&(yield tt(d.call(E)))}finally{if(p)throw p.error}}else yield yield tt(_)}}catch(_){u={error:_}}finally{try{!v&&!l&&(c=A.return)&&(yield tt(c.call(A)))}finally{if(u)throw u.error}}})}function*IA(t,e){for(let r of kr(t))e(r)&&(yield r)}function BA(t,e){return zn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=Sn(Pr(t)),u;u=yield tt(l.next()),n=u.done,!n;s=!0){o=u.value,s=!1;let c=o;(yield tt(e(c)))&&(yield yield tt(c))}}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield tt(a.call(l)))}finally{if(i)throw i.error}}})}function*Ad(t,e,r,n=!0){if(e<1)throw new ln(`Chunk size must be \u2265 1. Got ${e}`);if(r>=e)throw new ln("Overlap size must be less than chunk size");let i=[],a=!1;for(let o of kr(t))a=!1,i.push(o),i.length===e&&(yield i,i=i.slice(e-r),a=!0);!a&&i.length>0&&n&&(yield i)}function Dd(t,e,r){return zn(this,arguments,function*(i,a,o,s=!0){var l,u,c,f;if(a<1)throw new ln(`Chunk size must be \u2265 1. Got ${a}`);if(o>=a)throw new ln("Overlap size must be less than chunk size");let m=[],p=!1;try{for(var d=!0,h=Sn(Pr(i)),b;b=yield tt(h.next()),l=b.done,!l;d=!0){f=b.value,d=!1;let y=f;p=!1,m.push(y),m.length===a&&(yield yield tt(m),m=m.slice(a-o),p=!0)}}catch(y){u={error:y}}finally{try{!d&&!l&&(c=h.return)&&(yield tt(c.call(h)))}finally{if(u)throw u.error}}!p&&m.length>0&&s&&(yield yield tt(m))})}function*kA(t,e){for(let r of Ad(t,e,0))yield r}function PA(t,e){return zn(this,arguments,function*(){var n,i,a,o;try{for(var s=!0,l=Sn(Dd(t,e,0)),u;u=yield tt(l.next()),n=u.done,!n;s=!0)o=u.value,s=!1,yield yield tt(o)}catch(c){i={error:c}}finally{try{!s&&!n&&(a=l.return)&&(yield tt(a.call(l)))}finally{if(i)throw i.error}}})}function*Nu(t){let e=Ad(t,2,1,!1);for(let r of e)yield r}function $f(t){return zn(this,arguments,function*(){var r,n,i,a;let o=Dd(t,2,1,!1);try{for(var s=!0,l=Sn(o),u;u=yield tt(l.next()),r=u.done,!r;s=!0)a=u.value,s=!1,yield yield tt(a)}catch(c){n={error:c}}finally{try{!s&&!r&&(i=l.return)&&(yield tt(i.call(l)))}finally{if(n)throw n.error}}})}function*$A(t,e){if(e<0)throw new ln(`Limit must be \u2265 0. Got ${e}`);let r=0;for(let n of kr(t)){if(r>=e)return;yield n,++r}}function OA(t,e){return zn(this,arguments,function*(){var n,i,a,o;if(e<0)throw new ln(`Limit must be \u2265 0. Got ${e}`);let s=0;try{for(var l=!0,u=Sn(Pr(t)),c;c=yield tt(u.next()),n=c.done,!n;l=!0){o=c.value,l=!1;let f=o;if(s>=e)return yield tt(void 0);yield yield tt(f),++s}}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield tt(a.call(u)))}finally{if(i)throw i.error}}})}function*RA(t){let e=0;for(let r of kr(t))yield[e++,r]}function LA(t){return zn(this,arguments,function*(){var r,n,i,a;let o=0;try{for(var s=!0,l=Sn(Pr(t)),u;u=yield tt(l.next()),r=u.done,!r;s=!0){a=u.value,s=!1;let c=a;yield yield tt([o++,c])}}catch(c){n={error:c}}finally{try{!s&&!r&&(i=l.return)&&(yield tt(i.call(l)))}finally{if(n)throw n.error}}})}function*VA(t,e=0,r,n=1){if(e<0)throw new ln("Parameter 'start' cannot be negative");if(r!==void 0&&r<0)throw new ln("Parameter 'count' cannot be negative");if(n<=0)throw new ln("Parameter 'step' must be positive");let i=0,a=0;for(let o of kr(t))if(!(i++=e)&&(yield i),++n}function GA(t,e){return zn(this,arguments,function*(n,i,a=0){var o,s,l,u;if(i<0||a<0)throw new ln;let c=-a;try{for(var f=!0,m=Sn(Pr(n)),p;p=yield tt(m.next()),o=p.done,!o;f=!0){u=p.value,f=!1;let d=u;(c<0||c>=i)&&(yield yield tt(d)),++c}}catch(d){s={error:d}}finally{try{!f&&!o&&(l=m.return)&&(yield tt(l.call(m)))}finally{if(s)throw s.error}}})}function*WA(t){for(let[,e]of kr(t))yield e}function YA(t){return zn(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=Sn(Pr(t)),l;l=yield tt(s.next()),r=l.done,!r;o=!0){a=l.value,o=!1;let[,u]=a;yield yield tt(u)}}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield tt(i.call(s)))}finally{if(n)throw n.error}}})}function*jA(t,e,r){let n=new Map,i=a=>{n.has(a)||(r!==void 0?n.set(a,{}):n.set(a,[]))};for(let a of kr(t)){let o=e(a),s=r!==void 0?r(a):void 0,l=(Zi(o)||Va(o))&&!Co(o)?o:[o];for(let u of lx(l))i(u),s===void 0?n.get(u).push(a):n.get(u)[s]=a}for(let a of n)yield a}function ZA(t,e,r){return zn(this,arguments,function*(){var i,a,o,s,l,u,c,f;let m=new Map,p=A=>{m.has(A)||(r!==void 0?m.set(A,{}):m.set(A,[]))};try{for(var d=!0,h=Sn(Pr(t)),b;b=yield tt(h.next()),i=b.done,!i;d=!0){s=b.value,d=!1;let A=s,w=yield tt(e(A)),x=r!==void 0?yield tt(r(A)):void 0,E=(ps(w)||Zi(w)||Va(w))&&!Co(w)?w:[w];try{for(var y=!0,D=(u=void 0,Sn(xD(E))),v;v=yield tt(D.next()),l=v.done,!l;y=!0){f=v.value,y=!1;let T=f;p(T),x===void 0?m.get(T).push(A):m.get(T)[x]=A}}catch(T){u={error:T}}finally{try{!y&&!l&&(c=D.return)&&(yield tt(c.call(D)))}finally{if(u)throw u.error}}}}catch(A){a={error:A}}finally{try{!d&&!i&&(o=h.return)&&(yield tt(o.call(h)))}finally{if(a)throw a.error}}for(let A of m)yield yield tt(A)})}function*JA(t,e){let r=wD(t);e!==void 0?r.sort(e):r.sort();for(let n of r)yield n}function XA(t,e){return zn(this,arguments,function*(){let n=yield tt(Sd(t));e!==void 0?n.sort(e):n.sort();for(let i of n)yield yield tt(i)})}var po=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},ms=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function QA(t,e){for(let r of kr(t))if(!e(r))return!1;return!0}function KA(t,e){return po(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=ms(Pr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,!(yield e(a)))return!1}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!0})}function eD(t){let e=new Set;for(let r of kr(t)){if(e.has(r))return!1;e.add(r)}return!0}function tD(t){return po(this,void 0,void 0,function*(){var e,r,n,i;let a=new Set;try{for(var o=!0,s=ms(Pr(t)),l;l=yield s.next(),e=l.done,!e;o=!0){i=l.value,o=!1;let u=i;if(a.has(u))return!1;a.add(u)}}catch(u){r={error:u}}finally{try{!o&&!e&&(n=s.return)&&(yield n.call(s))}finally{if(r)throw r.error}}return!0})}function rD(t,e){for(let r of kr(t))if(e(r))return!0;return!1}function nD(t,e){return po(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=ms(Pr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,yield e(a))return!0}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!1})}function iD(t,e,r){if(e<0)return!1;r===void 0&&(r=i=>!!i);let n=0;for(let i of kr(t))if(r(i)&&(n++,n>e))return!1;return n===e}function aD(t,e,r){return po(this,void 0,void 0,function*(){var n,i,a,o;if(e<0)return!1;r===void 0&&(r=f=>!!f);let s=0;try{for(var l=!0,u=ms(Pr(t)),c;c=yield u.next(),n=c.done,!n;l=!0)if(o=c.value,l=!1,(yield r(o))&&(s++,s>e))return!1}catch(f){i={error:f}}finally{try{!l&&!n&&(a=u.return)&&(yield a.call(u))}finally{if(i)throw i.error}}return s===e})}function oD(t){for(let e of kr(t))return!1;return!0}function sD(t){return po(this,void 0,void 0,function*(){var e,r,n,i;try{for(var a=!0,o=ms(Pr(t)),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let l=i;return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}return!0})}function Zi(t){return t==null?!1:typeof t[Symbol.iterator]=="function"}function ps(t){return t==null?!1:typeof t[Symbol.asyncIterator]=="function"}function Va(t){return t==null?!1:t.next!==void 0&&typeof t.next=="function"}function uD(t){for(let[e,r]of Nu(kr(t)))if(er)return!1;return!0}function fD(t){return po(this,void 0,void 0,function*(){var e,r,n,i;try{for(var a=!0,o=ms($f(Pr(t))),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let[l,u]=i;if(l>u)return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}return!0})}function Co(t){return typeof t=="string"||t instanceof String}function pD(t,e){for(let r of kr(t))if(e(r))return!1;return!0}function mD(t,e){return po(this,void 0,void 0,function*(){var r,n,i,a;try{for(var o=!0,s=ms(Pr(t)),l;l=yield s.next(),r=l.done,!r;o=!0)if(a=l.value,o=!1,yield e(a))return!1}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield i.call(s))}finally{if(n)throw n.error}}return!0})}function dD(...t){try{for(let e of AD(...t))for(let[r,n]of Nu(e))if(r!==n)return!1}catch{return!1}return!0}function hD(...t){return po(this,void 0,void 0,function*(){var e,r,n,i;try{try{for(var a=!0,o=ms(DD(...t)),s;s=yield o.next(),e=s.done,!e;a=!0){i=s.value,a=!1;let l=i;for(let[u,c]of Nu(l))if(u!==c)return!1}}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(r)throw r.error}}}catch{return!1}return!0})}function gD(...t){if(t.length<=1)return!0;let e=t.map(r=>ix(r));return new Set(e).size===1}function vD(...t){return po(this,void 0,void 0,function*(){if(t.length<=1)return!0;let e=yield _d(t,r=>po(this,void 0,void 0,function*(){return yield yA(r)}));return new Set(yield Sd(e)).size===1})}var kq=function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{u(n.next(c))}catch(f){o(f)}}function l(c){try{u(n.throw(c))}catch(f){o(f)}}function u(c){c.done?a(c.value):i(c.value).then(s,l)}u((n=n.apply(t,e||[])).next())})},No=function(t){return this instanceof No?(this.v=t,this):new No(t)},cx=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(b,y){a.push([p,h,b,y])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof No?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}},SD=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}};function kr(t){if(Zi(t))return t;if(Va(t))return{[Symbol.iterator](){return t}};if(typeof t=="object"&&t!==null)return function*(){for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&(yield[e,t[e]])}();throw new ln("Given collection is not iterable or iterator.")}function Pr(t){if(ps(t))return t;if(Va(t))return{[Symbol.asyncIterator](){return cx(this,arguments,function*(){for(;;){let r=yield No(t.next());if(r.done)return yield No(void 0);yield yield No(r.value)}})}};if(typeof t=="object"&&t!==null&&(t=kr(t)),Zi(t))return{[Symbol.asyncIterator](){return cx(this,arguments,function*(){for(let r of t)yield yield No(r)})}};throw new ln("Given collection is not async iterable or iterator.")}function yD(t){if(Va(t))return t;if(Zi(t))return function*(){for(let e of t)yield e}();throw new ln("Given collection is not iterable or iterator.")}function bD(t){if((Va(t)||Zi(t))&&(t=Pr(t)),ps(t))return function(){return cx(this,arguments,function*(){var e,r,n,i;try{for(var a=!0,o=SD(t),s;s=yield No(o.next()),e=s.done,!e;a=!0)i=s.value,a=!1,yield yield No(i)}catch(l){r={error:l}}finally{try{!a&&!e&&(n=o.return)&&(yield No(n.call(o)))}finally{if(r)throw r.error}}})}();throw new ln("Given collection is not iterable or iterator.")}function wD(t){if(Array.isArray(t))return t;let e=[];for(let r of kr(t))e.push(r);return e}function Sd(t){return kq(this,void 0,void 0,function*(){var e,r,n,i;if(Array.isArray(t))return t;let a=[];try{for(var o=!0,s=SD(Pr(t)),l;l=yield s.next(),e=l.done,!e;o=!0){i=l.value,o=!1;let u=i;a.push(u)}}catch(u){r={error:u}}finally{try{!o&&!e&&(n=s.return)&&(yield n.call(s))}finally{if(r)throw r.error}}return a})}var ED=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=t[a]&&function(o){return new Promise(function(s,l){o=t[a](o),i(s,l,o.done,o.value)})}}function i(a,o,s,l){Promise.resolve(l).then(function(u){a({value:u,done:s})},o)}},ds=function(t){return this instanceof ds?(this.v=t,this):new ds(t)},TD=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,a=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(p){return function(d){return Promise.resolve(d).then(p,f)}}function s(p,d){n[p]&&(i[p]=function(h){return new Promise(function(b,y){a.push([p,h,b,y])>1||l(p,h)})},d&&(i[p]=d(i[p])))}function l(p,d){try{u(n[p](d))}catch(h){m(a[0][3],h)}}function u(p){p.value instanceof ds?Promise.resolve(p.value.v).then(c,f):m(a[0][2],p)}function c(p){l("next",p)}function f(p){l("throw",p)}function m(p,d){p(d),a.shift(),a.length&&l(a[0][0],a[0][1])}};function*Kl(...t){for(let e of sx(fo.SHORTEST,void 0,...t))yield e}function _D(...t){return TD(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=ED(ux(fo.SHORTEST,void 0,...t)),l;l=yield ds(s.next()),r=l.done,!r;o=!0)a=l.value,o=!1,yield yield ds(a)}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield ds(i.call(s)))}finally{if(n)throw n.error}}})}function*AD(...t){for(let e of sx(fo.STRICT_EQUAL,void 0,...t))yield e}function DD(...t){return TD(this,arguments,function*(){var r,n,i,a;try{for(var o=!0,s=ED(ux(fo.STRICT_EQUAL,void 0,...t)),l;l=yield ds(s.next()),r=l.done,!r;o=!0)a=l.value,o=!1,yield yield ds(a)}catch(u){n={error:u}}finally{try{!o&&!r&&(i=s.return)&&(yield ds(i.call(s)))}finally{if(n)throw n.error}}})}var Ed=class{constructor(e,r,n,i,a,o,s){this.uuid=e,this.metadataManager=r,this.bindTarget=n,this.dependencies=i,this.dependencySignals=a,this.dependencySubscriptions=[],this.computeFunction=o,this.onDelete=s,this.deleted=!1}init(){for(let[e,r]of Kl(this.dependencies,this.dependencySignals)){let n=this.uuid+"/"+_r();this.dependencySubscriptions.push(this.metadataManager.subscribe(n,r,e,()=>this.delete())),r.registerListener({callback:()=>void this.computeValue()})}this.computeValue()}async computeValue(){try{let e=await this.computeFunction();if(this.bindTarget){let r=this.metadataManager.readShortLived(this.bindTarget);rs(r,e)||this.metadataManager.write(e,this.bindTarget,this.uuid)}}catch(e){let r=e instanceof Error?e:String(e);console.warn(new Lt({errorLevel:"ERROR",effect:"Failed to run derived metadata computation",cause:r}))}}unsubscribe(){for(let e of this.dependencySubscriptions)e.unsubscribe();this.metadataManager.unsubscribe(this)}onUpdate(e){return!1}updatable(){return!1}getDependencies(){return this.dependencies}delete(){this.deleted=!0;for(let e of this.dependencySubscriptions)e.deleted||e.delete();this.onDelete(),this.unsubscribe()}};var Td=class{constructor(e,r,n,i,a,o){this.uuid=e,this.metadataManager=r,this.bindTarget=void 0,this.dependencies=n,this.dependencySignals=i,this.dependencySubscriptions=[],this.effectFunction=a,this.deleted=!1,this.onDelete=o}init(){for(let[e,r]of Kl(this.dependencies,this.dependencySignals)){let n=this.uuid+"/"+_r();this.dependencySubscriptions.push(this.metadataManager.subscribe(n,r,e,()=>this.delete())),r.registerListener({callback:()=>void this.runEffect()})}this.runEffect()}async runEffect(){try{await this.effectFunction()}catch(e){let r=e instanceof Error?e:String(e);console.warn(new Lt({errorLevel:"ERROR",effect:"Failed to run metadata effect",cause:r}))}}unsubscribe(){for(let e of this.dependencySubscriptions)e.unsubscribe();this.metadataManager.unsubscribe(this)}onUpdate(e){return!1}updatable(){return!1}getDependencies(){return this.dependencies}delete(){this.deleted=!0;for(let e of this.dependencySubscriptions)e.deleted||e.delete();this.onDelete(),this.unsubscribe()}};var Md=class{constructor(e,r,n,i,a){this.uuid=e,this.callbackSignal=r,this.metadataManager=n,this.bindTarget=i,this.onDelete=a,this.deleted=!1,this.value=void 0}unsubscribe(){this.metadataManager.unsubscribe(this)}write(e){let r=this.metadataManager.readShortLived(this.bindTarget);rs(r,e)||(this.value=e,this.metadataManager.write(e,this.bindTarget,this.uuid))}read(){return this.metadataManager.read(this.bindTarget)}onUpdate(e){try{if(!rs(this.value,e)){let r=structuredClone(e);return this.value=r,this.callbackSignal.set(r),!0}}catch(r){let n=r instanceof Error?r:String(r);console.warn(new Lt({errorLevel:"ERROR",effect:"Failed to notify subscription of updated value in the cache",cause:n}))}return!1}updatable(){return!0}getDependencies(){return[]}delete(){this.deleted=!0,this.onDelete()}};var mo=class{static get(e,r){return r.get(e).child}static tryGet(e,r){return r.tryGet(e)?.child}static fullGet(e,r){return r.get(e)}static set(e,r,n){r.set(e,n)}static setAndCreate(e,r,n){r.setAndCreate(e,n)}};var Pq=5,$q=5*60;function fx(t,e){return t===void 0||e===void 0||t.storageType!==e.storageType||t.storagePath!==e.storagePath?!1:MD(t.storageProp,e.storageProp,e.listenToChildren)}function MD(t,e,r){let n=t.path,i=e.path;for(let a=0;ai.length?r:!0}function Oq(t){return t===void 0?"undefined":`${t.storagePath}#${t.storageProp.toString()}`}var ec=class{constructor(){this.sources=new Map,this.defaultSource="CHANGE_THE_DEFAULT_SOURCE"}registerSource(e){this.sources.set(e.id,e)}setDefaultSource(e){if(this.sources.has(e))this.defaultSource=e;else throw new Lt({errorLevel:"CRITICAL",effect:"can not set default source",cause:`Source "${e}" does not exist`})}unregisterSource(e){this.sources.delete(e.id)}getSource(e){return this.sources.get(e)}iterateSources(){return this.sources.keys()}subscribe(e,r,n,i){let a=new Md(e,r,this,n,i);return this.subscribeSubscription(a),a}subscribeDerived(e,r,n,i,a,o){let s=new Ed(e,this,r,n,i,a,o);return this.checkForLoops(s),s.init(),this.subscribeSubscription(s),s}subscribeEffect(e,r,n,i,a){let o=new Td(e,this,r,n,i,a);return o.init(),this.subscribeSubscription(o),o}unsubscribe(e){if(e.bindTarget===void 0)return;let r=this.getSource(e.bindTarget.storageType);if(r===void 0)throw new Lt({errorLevel:"ERROR",effect:"can not unsubscribe subscription",cause:`Source "${e.bindTarget.storageType}" does not exist`});let n=r.unsubscribe(e);n.subscriptions.length===0&&(n.cyclesWithoutListeners=0)}subscribeSubscription(e){if(e.bindTarget===void 0)return;let r=this.getSource(e.bindTarget.storageType);if(r===void 0)throw new Lt({errorLevel:"ERROR",effect:"can not subscribe subscription",cause:`Source "${e.bindTarget.storageType}" does not exist`});let n=r.subscribe(e);n.cyclesWithoutListeners=0;let i=r.readCacheItem(n,e.bindTarget.storageProp);e.onUpdate(i)}checkForLoops(e){for(let r of this.getAllSubscriptionsToDependencies(e))this.recCheckForLoops([e,r])}recCheckForLoops(e){let r=e.at(0),n=e.at(-1);if(!(n===void 0||r===void 0)){if(fx(r.bindTarget,n.bindTarget))throw new qp({errorLevel:"ERROR",effect:"bind target dependency loop detected",cause:`the loop is as follows: ${e.map(i=>`"${Oq(i.bindTarget)}"`).join(" -> ")}`,docs:["https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/guides/viewfields/#circular-dependencies"]});for(let i of this.getAllSubscriptionsToDependencies(n))this.recCheckForLoops([...e,i])}}getAllSubscriptionsToDependencies(e){return e.getDependencies().map(r=>this.getAllSubscriptionsToBindTarget(r)).flat()}getAllSubscriptionsToBindTarget(e){if(e===void 0)return[];let r=this.getCacheItemForBindTarget(e);if(!r)return[];let n=[];for(let i of r.subscriptions)fx(i.bindTarget,e)&&n.push(i);return r.subscriptions.filter(i=>fx(i.bindTarget,e))}getCacheItemForBindTarget(e){return this.getSource(e.storageType)?.getCacheItemForStoragePath(e.storagePath)}cycle(){for(let e of this.sources.values()){let r=[];for(let n of e.iterateCacheItems()){if(e.onCycle(n),n.dirty){try{e.syncExternal(n)}catch(i){console.warn(`failed to sync changes to external source for ${e.id}`,i)}n.dirty=!1}n.externalWriteLock>0&&(n.externalWriteLock-=1),n.subscriptions.length===0&&(n.cyclesWithoutListeners+=1),n.cyclesWithoutListeners>$q&&e.shouldDelete(n)&&r.push(n)}for(let n of r)e.deleteCache(n)}}write(e,r,n){let i=this.getSource(r.storageType);if(i===void 0)throw new Lt({errorLevel:"ERROR",effect:"can not write to cache",cause:`Source "${r.storageType}" does not exist`});let a=i.writeCache(structuredClone(e),r);a.dirty=!0,a.externalWriteLock=Pq,this.notifyListeners(r,n)}read(e){let r=this.getSource(e.storageType);if(r===void 0)throw new Lt({errorLevel:"ERROR",effect:"can not read metadata",cause:`Source "${e.storageType}" does not exist`});return structuredClone(r.readCache(e))}readShortLived(e){let r=this.getSource(e.storageType);if(r===void 0)throw new Lt({errorLevel:"ERROR",effect:"can not read metadata",cause:`Source "${e.storageType}" does not exist`});return r.readCache(e)}isCacheExternalWriteLocked(e){return e.externalWriteLock>0}notifyListeners(e,r){let n=this.getSource(e.storageType);if(n===void 0)throw new Lt({errorLevel:"ERROR",effect:"can notify listeners metadata",cause:`Source "${e.storageType}" does not exist`});let i=n.getCacheItemForStoragePath(e.storagePath);if(i!==void 0){for(let a of i.subscriptions)if(!(r!==void 0&&r===a.uuid||a.bindTarget===void 0||!a.updatable())&&MD(e.storageProp,a.bindTarget.storageProp,a.bindTarget.listenToChildren)){let o=n.readCache(a.bindTarget);a.onUpdate(o)}}}notifyAllListeners(e,r){for(let n of r.subscriptions){if(n.bindTarget===void 0)continue;let i=e.readCache(n.bindTarget);n.onUpdate(i)}}deleteCachesForStoragePath(e){for(let r of this.sources.values()){let n=r.getCacheItemForStoragePath(e);n!==void 0&&(n.subscriptions.forEach(i=>i.delete()),r.deleteCache(n))}}getDefaultCacheItem(){return{subscriptions:[],externalWriteLock:0,dirty:!1,cyclesWithoutListeners:0}}onExternalUpdate(e,r,n){let i=e.getCacheItemForStoragePath(r);if(i===void 0||this.isCacheExternalWriteLocked(i))return;e.writeEntireCache(n,i);let a=0;for(let o of i.subscriptions){if(o.bindTarget===void 0||!o.updatable())continue;let s=mo.tryGet(n,o.bindTarget.storageProp);o.onUpdate(s)&&(a+=1)}}onStoragePathDeleted(e){this.deleteCachesForStoragePath(e)}onStoragePathRenamed(e,r){this.deleteCachesForStoragePath(e)}};var Cd=class{constructor(){this.activeMountables=new Map}unloadFile(e){for(let r of this.activeMountables.values())r.getFilePath()===e&&r.unmount()}unload(){for(let e of this.activeMountables.values())e.unmount()}registerMountable(e){this.activeMountables.set(e.getUuid(),e)}unregisterMountable(e){this.activeMountables.delete(e.getUuid())}};var js=class t{constructor(e){this.path=e}get(e){if(this.path.length===0)throw new Error("can not use empty path to access object");let r=this.path[0].get(e);for(let n of this.path.slice(1))r=n.get(r.child);return r}tryGet(e){try{return this.get(e)}catch{return}}set(e,r){if(this.path.length===0)throw new Error("can not use empty path to access object");let n=this.path[0].get(e);for(let i of this.path.slice(1))n=i.get(n.child);n.access.set(n.parent,r)}setAndCreate(e,r){if(this.path.length===0)throw new Error("can not use empty path to access object");let n=this.path[0].get(e);n.child===void 0&&(n.access.set(n.parent,this.getNextPathElementValue(0,r)),n=n.access.get(n.parent));for(let i=1;ie.prop)}toString(){return this.toStringArray().join(".")}concat(e){return new t(this.path.concat(e.path))}compareDiffArray(e){let r=Math.min(this.path.length,e.length);for(let n=0;nr.toUnvalidatedPropAccess()),listenToChildren:e.listenToChildren}}validate(e,r,n,i){let a=new js(r.storageProp.map(m=>new yu(m.type,m.prop.value))),o;r.storageType===void 0?o=this.mb.metadataManager.defaultSource:o=this.validateStorageType(r.storageType,e);let s=r.storagePath!==void 0,l=r.storagePath??{value:n},u=this.mb.metadataManager.getSource(o);if(u===void 0)throw new Lt({errorLevel:"CRITICAL",effect:"can not validate bind target",cause:`Source '${o}' not found. But validation was successful. This should not happen.`,context:{fullDeclaration:e,sources:[...this.mb.metadataManager.sources.keys()]}});let c=u.validateStoragePath(l,s,e,this),f={storageType:o,storagePath:c,storageProp:a,listenToChildren:r.listenToChildren};return u.id==="scope"?this.resolveScope(f,i):f}resolveScope(e,r){if(r===void 0)throw new Nn("ERROR","Bind Target Scope Validator","Failed to resolve bind target scope, no scope provided");return e.storageType=r.scope.storageType,e.storagePath=r.scope.storagePath,e.storageProp=r.scope.storageProp.concat(e.storageProp),e}validateStorageType(e,r){for(let n of this.mb.metadataManager.iterateSources())if(n===e.value)return n;throw new Nn("ERROR","Bind Target Validator",`Encountered invalid identifier. Expected token to be a storage type but received '${e?.value}'.`,r,e?.position)}validateStoragePathAsFilePath(e,r){let n=e?.value;if(n===void 0)throw new Nn("ERROR","Bind Target Validator","Failed to parse bind target. Bind target storage path is undefined.",r,e?.position);let i=this.mb.file.getPathByName(n);if(i===void 0)throw new Nn("ERROR","Bind Target Validator",`Failed to parse bind target. Bind target file path '${n}' not found.`,r,e?.position);return i}};var JD=Tr(oa()),qf=Tr(qi());var Sr;(function(t){t.assertEqual=i=>i;function e(i){}t.assertIs=e;function r(i){throw new Error}t.assertNever=r,t.arrayToEnum=i=>{let a={};for(let o of i)a[o]=o;return a},t.getValidEnumValues=i=>{let a=t.objectKeys(i).filter(s=>typeof i[i[s]]!="number"),o={};for(let s of a)o[s]=i[s];return t.objectValues(o)},t.objectValues=i=>t.objectKeys(i).map(function(a){return i[a]}),t.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{let a=[];for(let o in i)Object.prototype.hasOwnProperty.call(i,o)&&a.push(o);return a},t.find=(i,a)=>{for(let o of i)if(a(o))return o},t.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function n(i,a=" | "){return i.map(o=>typeof o=="string"?`'${o}'`:o).join(a)}t.joinValues=n,t.jsonStringifyReplacer=(i,a)=>typeof a=="bigint"?a.toString():a})(Sr||(Sr={}));var mx;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(mx||(mx={}));var pt=Sr.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),gs=t=>{switch(typeof t){case"undefined":return pt.undefined;case"string":return pt.string;case"number":return isNaN(t)?pt.nan:pt.number;case"boolean":return pt.boolean;case"function":return pt.function;case"bigint":return pt.bigint;case"symbol":return pt.symbol;case"object":return Array.isArray(t)?pt.array:t===null?pt.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?pt.promise:typeof Map<"u"&&t instanceof Map?pt.map:typeof Set<"u"&&t instanceof Set?pt.set:typeof Date<"u"&&t instanceof Date?pt.date:pt.object;default:return pt.unknown}},Re=Sr.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Lq=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),ga=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(a){return a.message},n={_errors:[]},i=a=>{for(let o of a.issues)if(o.code==="invalid_union")o.unionErrors.map(i);else if(o.code==="invalid_return_type")i(o.returnTypeError);else if(o.code==="invalid_arguments")i(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let s=n,l=0;for(;lr.message){let r={},n=[];for(let i of this.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};ga.create=t=>new ga(t);var nc=(t,e)=>{let r;switch(t.code){case Re.invalid_type:t.received===pt.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case Re.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,Sr.jsonStringifyReplacer)}`;break;case Re.unrecognized_keys:r=`Unrecognized key(s) in object: ${Sr.joinValues(t.keys,", ")}`;break;case Re.invalid_union:r="Invalid input";break;case Re.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Sr.joinValues(t.options)}`;break;case Re.invalid_enum_value:r=`Invalid enum value. Expected ${Sr.joinValues(t.options)}, received '${t.received}'`;break;case Re.invalid_arguments:r="Invalid function arguments";break;case Re.invalid_return_type:r="Invalid function return type";break;case Re.invalid_date:r="Invalid date";break;case Re.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:Sr.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case Re.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case Re.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case Re.custom:r="Invalid input";break;case Re.invalid_intersection_types:r="Intersection results could not be merged";break;case Re.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case Re.not_finite:r="Number must be finite";break;default:r=e.defaultError,Sr.assertNever(t)}return{message:r}},ID=nc;function Vq(t){ID=t}function Fd(){return ID}var Id=t=>{let{data:e,path:r,errorMaps:n,issueData:i}=t,a=[...r,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s="",l=n.filter(u=>!!u).slice().reverse();for(let u of l)s=u(o,{data:e,defaultError:s}).message;return{...i,path:a,message:s}},Uq=[];function st(t,e){let r=Fd(),n=Id({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===nc?void 0:nc].filter(i=>!!i)});t.common.issues.push(n)}var yi=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let i of r){if(i.status==="aborted")return Ht;i.status==="dirty"&&e.dirty(),n.push(i.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let i of r){let a=await i.key,o=await i.value;n.push({key:a,value:o})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let i of r){let{key:a,value:o}=i;if(a.status==="aborted"||o.status==="aborted")return Ht;a.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof o.value<"u"||i.alwaysSet)&&(n[a.value]=o.value)}return{status:e.value,value:n}}},Ht=Object.freeze({status:"aborted"}),rc=t=>({status:"dirty",value:t}),Pi=t=>({status:"valid",value:t}),dx=t=>t.status==="aborted",hx=t=>t.status==="dirty",Fu=t=>t.status==="valid",Lf=t=>typeof Promise<"u"&&t instanceof Promise;function Bd(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)}function BD(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r}var St;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(St||(St={}));var Of,Rf,qa=class{constructor(e,r,n,i){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},CD=(t,e)=>{if(Fu(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new ga(t.common.issues);return this._error=r,this._error}}};function ar(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:i}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(o,s)=>{var l,u;let{message:c}=t;return o.code==="invalid_enum_value"?{message:c??s.defaultError}:typeof s.data>"u"?{message:(l=c??n)!==null&&l!==void 0?l:s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:(u=c??r)!==null&&u!==void 0?u:s.defaultError}},description:i}}var or=class{get description(){return this._def.description}_getType(e){return gs(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:gs(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new yi,ctx:{common:e.parent.common,data:e.data,parsedType:gs(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(Lf(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){var n;let i={common:{issues:[],async:(n=r?.async)!==null&&n!==void 0?n:!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:gs(e)},a=this._parseSync({data:e,path:i.path,parent:i});return CD(i,a)}"~validate"(e){var r,n;let i={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:gs(e)};if(!this["~standard"].async)try{let a=this._parseSync({data:e,path:[],parent:i});return Fu(a)?{value:a.value}:{issues:i.common.issues}}catch(a){!((n=(r=a?.message)===null||r===void 0?void 0:r.toLowerCase())===null||n===void 0)&&n.includes("encountered")&&(this["~standard"].async=!0),i.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:i}).then(a=>Fu(a)?{value:a.value}:{issues:i.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:gs(e)},i=this._parse({data:e,path:n.path,parent:n}),a=await(Lf(i)?i:Promise.resolve(i));return CD(n,a)}refine(e,r){let n=i=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(i):r;return this._refinement((i,a)=>{let o=e(i),s=()=>a.addIssue({code:Re.custom,...n(i)});return typeof Promise<"u"&&o instanceof Promise?o.then(l=>l?!0:(s(),!1)):o?!0:(s(),!1)})}refinement(e,r){return this._refinement((n,i)=>e(n)?!0:(i.addIssue(typeof r=="function"?r(n,i):r),!1))}_refinement(e){return new va({schema:this,typeName:zt.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return Ua.create(this,this._def)}nullable(){return Io.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ys.create(this)}promise(){return Xs.create(this,this._def)}or(e){return Ru.create([this,e],this._def)}and(e){return Lu.create(this,e,this._def)}transform(e){return new va({...ar(this._def),schema:this,typeName:zt.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Hu({...ar(this._def),innerType:this,defaultValue:r,typeName:zt.ZodDefault})}brand(){return new Vf({typeName:zt.ZodBranded,type:this,...ar(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Gu({...ar(this._def),innerType:this,catchValue:r,typeName:zt.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Uf.create(this,e)}readonly(){return Wu.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},qq=/^c[^\s-]{8,}$/i,zq=/^[0-9a-z]+$/,Hq=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Gq=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Wq=/^[a-z0-9_-]{21}$/i,Yq=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,jq=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Zq=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Jq="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",px,Xq=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Qq=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Kq=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ez=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,tz=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,rz=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,kD="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",nz=new RegExp(`^${kD}$`);function PD(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function iz(t){return new RegExp(`^${PD(t)}$`)}function $D(t){let e=`${kD}T${PD(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function az(t,e){return!!((e==="v4"||!e)&&Xq.test(t)||(e==="v6"||!e)&&Kq.test(t))}function oz(t,e){if(!Yq.test(t))return!1;try{let[r]=t.split("."),n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));return!(typeof i!="object"||i===null||!i.typ||!i.alg||e&&i.alg!==e)}catch{return!1}}function sz(t,e){return!!((e==="v4"||!e)&&Qq.test(t)||(e==="v6"||!e)&&ez.test(t))}var Zs=class t extends or{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==pt.string){let a=this._getOrReturnCtx(e);return st(a,{code:Re.invalid_type,expected:pt.string,received:a.parsedType}),Ht}let n=new yi,i;for(let a of this._def.checks)if(a.kind==="min")e.data.lengtha.value&&(i=this._getOrReturnCtx(e,i),st(i,{code:Re.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind==="length"){let o=e.data.length>a.value,s=e.data.lengthe.test(i),{validation:r,code:Re.invalid_string,...St.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...St.errToObj(e)})}url(e){return this._addCheck({kind:"url",...St.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...St.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...St.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...St.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...St.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...St.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...St.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...St.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...St.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...St.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...St.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...St.errToObj(e)})}datetime(e){var r,n;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:(r=e?.offset)!==null&&r!==void 0?r:!1,local:(n=e?.local)!==null&&n!==void 0?n:!1,...St.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...St.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...St.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...St.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...St.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...St.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...St.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...St.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...St.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...St.errToObj(r)})}nonempty(e){return this.min(1,St.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value{var e;return new Zs({checks:[],typeName:zt.ZodString,coerce:(e=t?.coerce)!==null&&e!==void 0?e:!1,...ar(t)})};function uz(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,i=r>n?r:n,a=parseInt(t.toFixed(i).replace(".","")),o=parseInt(e.toFixed(i).replace(".",""));return a%o/Math.pow(10,i)}var Iu=class t extends or{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==pt.number){let a=this._getOrReturnCtx(e);return st(a,{code:Re.invalid_type,expected:pt.number,received:a.parsedType}),Ht}let n,i=new yi;for(let a of this._def.checks)a.kind==="int"?Sr.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),st(n,{code:Re.invalid_type,expected:"integer",received:"float",message:a.message}),i.dirty()):a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),st(n,{code:Re.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),i.dirty()):a.kind==="multipleOf"?uz(e.data,a.value)!==0&&(n=this._getOrReturnCtx(e,n),st(n,{code:Re.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),st(n,{code:Re.not_finite,message:a.message}),i.dirty()):Sr.assertNever(a);return{status:i.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,St.toString(r))}gt(e,r){return this.setLimit("min",e,!1,St.toString(r))}lte(e,r){return this.setLimit("max",e,!0,St.toString(r))}lt(e,r){return this.setLimit("max",e,!1,St.toString(r))}setLimit(e,r,n,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:St.toString(i)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:St.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:St.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:St.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:St.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:St.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:St.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:St.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:St.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:St.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Sr.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew Iu({checks:[],typeName:zt.ZodNumber,coerce:t?.coerce||!1,...ar(t)});var Bu=class t extends or{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==pt.bigint)return this._getInvalidInput(e);let n,i=new yi;for(let a of this._def.checks)a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),st(n,{code:Re.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),i.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),st(n,{code:Re.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):Sr.assertNever(a);return{status:i.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return st(r,{code:Re.invalid_type,expected:pt.bigint,received:r.parsedType}),Ht}gte(e,r){return this.setLimit("min",e,!0,St.toString(r))}gt(e,r){return this.setLimit("min",e,!1,St.toString(r))}lte(e,r){return this.setLimit("max",e,!0,St.toString(r))}lt(e,r){return this.setLimit("max",e,!1,St.toString(r))}setLimit(e,r,n,i){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:St.toString(i)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:St.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:St.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:St.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:St.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:St.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value{var e;return new Bu({checks:[],typeName:zt.ZodBigInt,coerce:(e=t?.coerce)!==null&&e!==void 0?e:!1,...ar(t)})};var ku=class extends or{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==pt.boolean){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.boolean,received:n.parsedType}),Ht}return Pi(e.data)}};ku.create=t=>new ku({typeName:zt.ZodBoolean,coerce:t?.coerce||!1,...ar(t)});var Pu=class t extends or{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==pt.date){let a=this._getOrReturnCtx(e);return st(a,{code:Re.invalid_type,expected:pt.date,received:a.parsedType}),Ht}if(isNaN(e.data.getTime())){let a=this._getOrReturnCtx(e);return st(a,{code:Re.invalid_date}),Ht}let n=new yi,i;for(let a of this._def.checks)a.kind==="min"?e.data.getTime()a.value&&(i=this._getOrReturnCtx(e,i),st(i,{code:Re.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),n.dirty()):Sr.assertNever(a);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:St.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:St.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Pu({checks:[],coerce:t?.coerce||!1,typeName:zt.ZodDate,...ar(t)});var ic=class extends or{_parse(e){if(this._getType(e)!==pt.symbol){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.symbol,received:n.parsedType}),Ht}return Pi(e.data)}};ic.create=t=>new ic({typeName:zt.ZodSymbol,...ar(t)});var $u=class extends or{_parse(e){if(this._getType(e)!==pt.undefined){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.undefined,received:n.parsedType}),Ht}return Pi(e.data)}};$u.create=t=>new $u({typeName:zt.ZodUndefined,...ar(t)});var Ou=class extends or{_parse(e){if(this._getType(e)!==pt.null){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.null,received:n.parsedType}),Ht}return Pi(e.data)}};Ou.create=t=>new Ou({typeName:zt.ZodNull,...ar(t)});var Js=class extends or{constructor(){super(...arguments),this._any=!0}_parse(e){return Pi(e.data)}};Js.create=t=>new Js({typeName:zt.ZodAny,...ar(t)});var vs=class extends or{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Pi(e.data)}};vs.create=t=>new vs({typeName:zt.ZodUnknown,...ar(t)});var ho=class extends or{_parse(e){let r=this._getOrReturnCtx(e);return st(r,{code:Re.invalid_type,expected:pt.never,received:r.parsedType}),Ht}};ho.create=t=>new ho({typeName:zt.ZodNever,...ar(t)});var ac=class extends or{_parse(e){if(this._getType(e)!==pt.undefined){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.void,received:n.parsedType}),Ht}return Pi(e.data)}};ac.create=t=>new ac({typeName:zt.ZodVoid,...ar(t)});var ys=class t extends or{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),i=this._def;if(r.parsedType!==pt.array)return st(r,{code:Re.invalid_type,expected:pt.array,received:r.parsedType}),Ht;if(i.exactLength!==null){let o=r.data.length>i.exactLength.value,s=r.data.lengthi.maxLength.value&&(st(r,{code:Re.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,s)=>i.type._parseAsync(new qa(r,o,r.path,s)))).then(o=>yi.mergeArray(n,o));let a=[...r.data].map((o,s)=>i.type._parseSync(new qa(r,o,r.path,s)));return yi.mergeArray(n,a)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:St.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:St.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:St.toString(r)}})}nonempty(e){return this.min(1,e)}};ys.create=(t,e)=>new ys({type:t,minLength:null,maxLength:null,exactLength:null,typeName:zt.ZodArray,...ar(e)});function tc(t){if(t instanceof Ji){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=Ua.create(tc(n))}return new Ji({...t._def,shape:()=>e})}else return t instanceof ys?new ys({...t._def,type:tc(t.element)}):t instanceof Ua?Ua.create(tc(t.unwrap())):t instanceof Io?Io.create(tc(t.unwrap())):t instanceof Fo?Fo.create(t.items.map(e=>tc(e))):t}var Ji=class t extends or{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Sr.objectKeys(e);return this._cached={shape:e,keys:r}}_parse(e){if(this._getType(e)!==pt.object){let u=this._getOrReturnCtx(e);return st(u,{code:Re.invalid_type,expected:pt.object,received:u.parsedType}),Ht}let{status:n,ctx:i}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof ho&&this._def.unknownKeys==="strip"))for(let u in i.data)o.includes(u)||s.push(u);let l=[];for(let u of o){let c=a[u],f=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new qa(i,f,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof ho){let u=this._def.unknownKeys;if(u==="passthrough")for(let c of s)l.push({key:{status:"valid",value:c},value:{status:"valid",value:i.data[c]}});else if(u==="strict")s.length>0&&(st(i,{code:Re.unrecognized_keys,keys:s}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let c of s){let f=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new qa(i,f,i.path,c)),alwaysSet:c in i.data})}}return i.common.async?Promise.resolve().then(async()=>{let u=[];for(let c of l){let f=await c.key,m=await c.value;u.push({key:f,value:m,alwaysSet:c.alwaysSet})}return u}).then(u=>yi.mergeObjectSync(n,u)):yi.mergeObjectSync(n,l)}get shape(){return this._def.shape()}strict(e){return St.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{var i,a,o,s;let l=(o=(a=(i=this._def).errorMap)===null||a===void 0?void 0:a.call(i,r,n).message)!==null&&o!==void 0?o:n.defaultError;return r.code==="unrecognized_keys"?{message:(s=St.errToObj(e).message)!==null&&s!==void 0?s:l}:{message:l}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:zt.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};return Sr.objectKeys(e).forEach(n=>{e[n]&&this.shape[n]&&(r[n]=this.shape[n])}),new t({...this._def,shape:()=>r})}omit(e){let r={};return Sr.objectKeys(this.shape).forEach(n=>{e[n]||(r[n]=this.shape[n])}),new t({...this._def,shape:()=>r})}deepPartial(){return tc(this)}partial(e){let r={};return Sr.objectKeys(this.shape).forEach(n=>{let i=this.shape[n];e&&!e[n]?r[n]=i:r[n]=i.optional()}),new t({...this._def,shape:()=>r})}required(e){let r={};return Sr.objectKeys(this.shape).forEach(n=>{if(e&&!e[n])r[n]=this.shape[n];else{let a=this.shape[n];for(;a instanceof Ua;)a=a._def.innerType;r[n]=a}}),new t({...this._def,shape:()=>r})}keyof(){return OD(Sr.objectKeys(this.shape))}};Ji.create=(t,e)=>new Ji({shape:()=>t,unknownKeys:"strip",catchall:ho.create(),typeName:zt.ZodObject,...ar(e)});Ji.strictCreate=(t,e)=>new Ji({shape:()=>t,unknownKeys:"strict",catchall:ho.create(),typeName:zt.ZodObject,...ar(e)});Ji.lazycreate=(t,e)=>new Ji({shape:t,unknownKeys:"strip",catchall:ho.create(),typeName:zt.ZodObject,...ar(e)});var Ru=class extends or{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function i(a){for(let s of a)if(s.result.status==="valid")return s.result;for(let s of a)if(s.result.status==="dirty")return r.common.issues.push(...s.ctx.common.issues),s.result;let o=a.map(s=>new ga(s.ctx.common.issues));return st(r,{code:Re.invalid_union,unionErrors:o}),Ht}if(r.common.async)return Promise.all(n.map(async a=>{let o={...r,common:{...r.common,issues:[]},parent:null};return{result:await a._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(i);{let a,o=[];for(let l of n){let u={...r,common:{...r.common,issues:[]},parent:null},c=l._parseSync({data:r.data,path:r.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!a&&(a={result:c,ctx:u}),u.common.issues.length&&o.push(u.common.issues)}if(a)return r.common.issues.push(...a.ctx.common.issues),a.result;let s=o.map(l=>new ga(l));return st(r,{code:Re.invalid_union,unionErrors:s}),Ht}}get options(){return this._def.options}};Ru.create=(t,e)=>new Ru({options:t,typeName:zt.ZodUnion,...ar(e)});var hs=t=>t instanceof Vu?hs(t.schema):t instanceof va?hs(t.innerType()):t instanceof Uu?[t.value]:t instanceof qu?t.options:t instanceof zu?Sr.objectValues(t.enum):t instanceof Hu?hs(t._def.innerType):t instanceof $u?[void 0]:t instanceof Ou?[null]:t instanceof Ua?[void 0,...hs(t.unwrap())]:t instanceof Io?[null,...hs(t.unwrap())]:t instanceof Vf||t instanceof Wu?hs(t.unwrap()):t instanceof Gu?hs(t._def.innerType):[],kd=class t extends or{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==pt.object)return st(r,{code:Re.invalid_type,expected:pt.object,received:r.parsedType}),Ht;let n=this.discriminator,i=r.data[n],a=this.optionsMap.get(i);return a?r.common.async?a._parseAsync({data:r.data,path:r.path,parent:r}):a._parseSync({data:r.data,path:r.path,parent:r}):(st(r,{code:Re.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Ht)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let i=new Map;for(let a of r){let o=hs(a.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let s of o){if(i.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);i.set(s,a)}}return new t({typeName:zt.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:i,...ar(n)})}};function gx(t,e){let r=gs(t),n=gs(e);if(t===e)return{valid:!0,data:t};if(r===pt.object&&n===pt.object){let i=Sr.objectKeys(e),a=Sr.objectKeys(t).filter(s=>i.indexOf(s)!==-1),o={...t,...e};for(let s of a){let l=gx(t[s],e[s]);if(!l.valid)return{valid:!1};o[s]=l.data}return{valid:!0,data:o}}else if(r===pt.array&&n===pt.array){if(t.length!==e.length)return{valid:!1};let i=[];for(let a=0;a{if(dx(a)||dx(o))return Ht;let s=gx(a.value,o.value);return s.valid?((hx(a)||hx(o))&&r.dirty(),{status:r.value,value:s.data}):(st(n,{code:Re.invalid_intersection_types}),Ht)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([a,o])=>i(a,o)):i(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Lu.create=(t,e,r)=>new Lu({left:t,right:e,typeName:zt.ZodIntersection,...ar(r)});var Fo=class t extends or{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==pt.array)return st(n,{code:Re.invalid_type,expected:pt.array,received:n.parsedType}),Ht;if(n.data.lengththis._def.items.length&&(st(n,{code:Re.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let a=[...n.data].map((o,s)=>{let l=this._def.items[s]||this._def.rest;return l?l._parse(new qa(n,o,n.path,s)):null}).filter(o=>!!o);return n.common.async?Promise.all(a).then(o=>yi.mergeArray(r,o)):yi.mergeArray(r,a)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};Fo.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Fo({items:t,typeName:zt.ZodTuple,rest:null,...ar(e)})};var Pd=class t extends or{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==pt.object)return st(n,{code:Re.invalid_type,expected:pt.object,received:n.parsedType}),Ht;let i=[],a=this._def.keyType,o=this._def.valueType;for(let s in n.data)i.push({key:a._parse(new qa(n,s,n.path,s)),value:o._parse(new qa(n,n.data[s],n.path,s)),alwaysSet:s in n.data});return n.common.async?yi.mergeObjectAsync(r,i):yi.mergeObjectSync(r,i)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof or?new t({keyType:e,valueType:r,typeName:zt.ZodRecord,...ar(n)}):new t({keyType:Zs.create(),valueType:e,typeName:zt.ZodRecord,...ar(r)})}},oc=class extends or{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==pt.map)return st(n,{code:Re.invalid_type,expected:pt.map,received:n.parsedType}),Ht;let i=this._def.keyType,a=this._def.valueType,o=[...n.data.entries()].map(([s,l],u)=>({key:i._parse(new qa(n,s,n.path,[u,"key"])),value:a._parse(new qa(n,l,n.path,[u,"value"]))}));if(n.common.async){let s=new Map;return Promise.resolve().then(async()=>{for(let l of o){let u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return Ht;(u.status==="dirty"||c.status==="dirty")&&r.dirty(),s.set(u.value,c.value)}return{status:r.value,value:s}})}else{let s=new Map;for(let l of o){let u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return Ht;(u.status==="dirty"||c.status==="dirty")&&r.dirty(),s.set(u.value,c.value)}return{status:r.value,value:s}}}};oc.create=(t,e,r)=>new oc({valueType:e,keyType:t,typeName:zt.ZodMap,...ar(r)});var sc=class t extends or{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==pt.set)return st(n,{code:Re.invalid_type,expected:pt.set,received:n.parsedType}),Ht;let i=this._def;i.minSize!==null&&n.data.sizei.maxSize.value&&(st(n,{code:Re.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),r.dirty());let a=this._def.valueType;function o(l){let u=new Set;for(let c of l){if(c.status==="aborted")return Ht;c.status==="dirty"&&r.dirty(),u.add(c.value)}return{status:r.value,value:u}}let s=[...n.data.values()].map((l,u)=>a._parse(new qa(n,l,n.path,u)));return n.common.async?Promise.all(s).then(l=>o(l)):o(s)}min(e,r){return new t({...this._def,minSize:{value:e,message:St.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:St.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};sc.create=(t,e)=>new sc({valueType:t,minSize:null,maxSize:null,typeName:zt.ZodSet,...ar(e)});var $d=class t extends or{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==pt.function)return st(r,{code:Re.invalid_type,expected:pt.function,received:r.parsedType}),Ht;function n(s,l){return Id({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Fd(),nc].filter(u=>!!u),issueData:{code:Re.invalid_arguments,argumentsError:l}})}function i(s,l){return Id({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Fd(),nc].filter(u=>!!u),issueData:{code:Re.invalid_return_type,returnTypeError:l}})}let a={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof Xs){let s=this;return Pi(async function(...l){let u=new ga([]),c=await s._def.args.parseAsync(l,a).catch(p=>{throw u.addIssue(n(l,p)),u}),f=await Reflect.apply(o,this,c);return await s._def.returns._def.type.parseAsync(f,a).catch(p=>{throw u.addIssue(i(f,p)),u})})}else{let s=this;return Pi(function(...l){let u=s._def.args.safeParse(l,a);if(!u.success)throw new ga([n(l,u.error)]);let c=Reflect.apply(o,this,u.data),f=s._def.returns.safeParse(c,a);if(!f.success)throw new ga([i(c,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Fo.create(e).rest(vs.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||Fo.create([]).rest(vs.create()),returns:r||vs.create(),typeName:zt.ZodFunction,...ar(n)})}},Vu=class extends or{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Vu.create=(t,e)=>new Vu({getter:t,typeName:zt.ZodLazy,...ar(e)});var Uu=class extends or{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return st(r,{received:r.data,code:Re.invalid_literal,expected:this._def.value}),Ht}return{status:"valid",value:e.data}}get value(){return this._def.value}};Uu.create=(t,e)=>new Uu({value:t,typeName:zt.ZodLiteral,...ar(e)});function OD(t,e){return new qu({values:t,typeName:zt.ZodEnum,...ar(e)})}var qu=class t extends or{constructor(){super(...arguments),Of.set(this,void 0)}_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return st(r,{expected:Sr.joinValues(n),received:r.parsedType,code:Re.invalid_type}),Ht}if(Bd(this,Of,"f")||BD(this,Of,new Set(this._def.values),"f"),!Bd(this,Of,"f").has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return st(r,{received:r.data,code:Re.invalid_enum_value,options:n}),Ht}return Pi(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};Of=new WeakMap;qu.create=OD;var zu=class extends or{constructor(){super(...arguments),Rf.set(this,void 0)}_parse(e){let r=Sr.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==pt.string&&n.parsedType!==pt.number){let i=Sr.objectValues(r);return st(n,{expected:Sr.joinValues(i),received:n.parsedType,code:Re.invalid_type}),Ht}if(Bd(this,Rf,"f")||BD(this,Rf,new Set(Sr.getValidEnumValues(this._def.values)),"f"),!Bd(this,Rf,"f").has(e.data)){let i=Sr.objectValues(r);return st(n,{received:n.data,code:Re.invalid_enum_value,options:i}),Ht}return Pi(e.data)}get enum(){return this._def.values}};Rf=new WeakMap;zu.create=(t,e)=>new zu({values:t,typeName:zt.ZodNativeEnum,...ar(e)});var Xs=class extends or{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==pt.promise&&r.common.async===!1)return st(r,{code:Re.invalid_type,expected:pt.promise,received:r.parsedType}),Ht;let n=r.parsedType===pt.promise?r.data:Promise.resolve(r.data);return Pi(n.then(i=>this._def.type.parseAsync(i,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Xs.create=(t,e)=>new Xs({type:t,typeName:zt.ZodPromise,...ar(e)});var va=class extends or{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===zt.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:o=>{st(n,o),o.fatal?r.abort():r.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),i.type==="preprocess"){let o=i.transform(n.data,a);if(n.common.async)return Promise.resolve(o).then(async s=>{if(r.value==="aborted")return Ht;let l=await this._def.schema._parseAsync({data:s,path:n.path,parent:n});return l.status==="aborted"?Ht:l.status==="dirty"||r.value==="dirty"?rc(l.value):l});{if(r.value==="aborted")return Ht;let s=this._def.schema._parseSync({data:o,path:n.path,parent:n});return s.status==="aborted"?Ht:s.status==="dirty"||r.value==="dirty"?rc(s.value):s}}if(i.type==="refinement"){let o=s=>{let l=i.refinement(s,a);if(n.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(n.common.async===!1){let s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?Ht:(s.status==="dirty"&&r.dirty(),o(s.value),{status:r.value,value:s.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(s=>s.status==="aborted"?Ht:(s.status==="dirty"&&r.dirty(),o(s.value).then(()=>({status:r.value,value:s.value}))))}if(i.type==="transform")if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Fu(o))return o;let s=i.transform(o.value,a);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:s}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>Fu(o)?Promise.resolve(i.transform(o.value,a)).then(s=>({status:r.value,value:s})):o);Sr.assertNever(i)}};va.create=(t,e,r)=>new va({schema:t,typeName:zt.ZodEffects,effect:e,...ar(r)});va.createWithPreprocess=(t,e,r)=>new va({schema:e,effect:{type:"preprocess",transform:t},typeName:zt.ZodEffects,...ar(r)});var Ua=class extends or{_parse(e){return this._getType(e)===pt.undefined?Pi(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Ua.create=(t,e)=>new Ua({innerType:t,typeName:zt.ZodOptional,...ar(e)});var Io=class extends or{_parse(e){return this._getType(e)===pt.null?Pi(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Io.create=(t,e)=>new Io({innerType:t,typeName:zt.ZodNullable,...ar(e)});var Hu=class extends or{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===pt.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Hu.create=(t,e)=>new Hu({innerType:t,typeName:zt.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...ar(e)});var Gu=class extends or{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},i=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Lf(i)?i.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new ga(n.common.issues)},input:n.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new ga(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Gu.create=(t,e)=>new Gu({innerType:t,typeName:zt.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...ar(e)});var uc=class extends or{_parse(e){if(this._getType(e)!==pt.nan){let n=this._getOrReturnCtx(e);return st(n,{code:Re.invalid_type,expected:pt.nan,received:n.parsedType}),Ht}return{status:"valid",value:e.data}}};uc.create=t=>new uc({typeName:zt.ZodNaN,...ar(t)});var lz=Symbol("zod_brand"),Vf=class extends or{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Uf=class t extends or{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?Ht:a.status==="dirty"?(r.dirty(),rc(a.value)):this._def.out._parseAsync({data:a.value,path:n.path,parent:n})})();{let i=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?Ht:i.status==="dirty"?(r.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:zt.ZodPipeline})}},Wu=class extends or{_parse(e){let r=this._def.innerType._parse(e),n=i=>(Fu(i)&&(i.value=Object.freeze(i.value)),i);return Lf(r)?r.then(i=>n(i)):n(r)}unwrap(){return this._def.innerType}};Wu.create=(t,e)=>new Wu({innerType:t,typeName:zt.ZodReadonly,...ar(e)});function ND(t,e){let r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function RD(t,e={},r){return t?Js.create().superRefine((n,i)=>{var a,o;let s=t(n);if(s instanceof Promise)return s.then(l=>{var u,c;if(!l){let f=ND(e,n),m=(c=(u=f.fatal)!==null&&u!==void 0?u:r)!==null&&c!==void 0?c:!0;i.addIssue({code:"custom",...f,fatal:m})}});if(!s){let l=ND(e,n),u=(o=(a=l.fatal)!==null&&a!==void 0?a:r)!==null&&o!==void 0?o:!0;i.addIssue({code:"custom",...l,fatal:u})}}):Js.create()}var cz={object:Ji.lazycreate},zt;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(zt||(zt={}));var fz=(t,e={message:`Input not instance of ${t.name}`})=>RD(r=>r instanceof t,e),LD=Zs.create,VD=Iu.create,pz=uc.create,mz=Bu.create,UD=ku.create,dz=Pu.create,hz=ic.create,gz=$u.create,vz=Ou.create,yz=Js.create,bz=vs.create,xz=ho.create,wz=ac.create,_z=ys.create,Az=Ji.create,Dz=Ji.strictCreate,Sz=Ru.create,Ez=kd.create,Tz=Lu.create,Mz=Fo.create,Cz=Pd.create,Nz=oc.create,Fz=sc.create,Iz=$d.create,Bz=Vu.create,kz=Uu.create,Pz=qu.create,$z=zu.create,Oz=Xs.create,FD=va.create,Rz=Ua.create,Lz=Io.create,Vz=va.createWithPreprocess,Uz=Uf.create,qz=()=>LD().optional(),zz=()=>VD().optional(),Hz=()=>UD().optional(),Gz={string:t=>Zs.create({...t,coerce:!0}),number:t=>Iu.create({...t,coerce:!0}),boolean:t=>ku.create({...t,coerce:!0}),bigint:t=>Bu.create({...t,coerce:!0}),date:t=>Pu.create({...t,coerce:!0})},Wz=Ht,he=Object.freeze({__proto__:null,defaultErrorMap:nc,setErrorMap:Vq,getErrorMap:Fd,makeIssue:Id,EMPTY_PATH:Uq,addIssueToContext:st,ParseStatus:yi,INVALID:Ht,DIRTY:rc,OK:Pi,isAborted:dx,isDirty:hx,isValid:Fu,isAsync:Lf,get util(){return Sr},get objectUtil(){return mx},ZodParsedType:pt,getParsedType:gs,ZodType:or,datetimeRegex:$D,ZodString:Zs,ZodNumber:Iu,ZodBigInt:Bu,ZodBoolean:ku,ZodDate:Pu,ZodSymbol:ic,ZodUndefined:$u,ZodNull:Ou,ZodAny:Js,ZodUnknown:vs,ZodNever:ho,ZodVoid:ac,ZodArray:ys,ZodObject:Ji,ZodUnion:Ru,ZodDiscriminatedUnion:kd,ZodIntersection:Lu,ZodTuple:Fo,ZodRecord:Pd,ZodMap:oc,ZodSet:sc,ZodFunction:$d,ZodLazy:Vu,ZodLiteral:Uu,ZodEnum:qu,ZodNativeEnum:zu,ZodPromise:Xs,ZodEffects:va,ZodTransformer:va,ZodOptional:Ua,ZodNullable:Io,ZodDefault:Hu,ZodCatch:Gu,ZodNaN:uc,BRAND:lz,ZodBranded:Vf,ZodPipeline:Uf,ZodReadonly:Wu,custom:RD,Schema:or,ZodSchema:or,late:cz,get ZodFirstPartyTypeKind(){return zt},coerce:Gz,any:yz,array:_z,bigint:mz,boolean:UD,date:dz,discriminatedUnion:Ez,effect:FD,enum:Pz,function:Iz,instanceof:fz,intersection:Tz,lazy:Bz,literal:kz,map:Nz,nan:pz,nativeEnum:$z,never:xz,null:vz,nullable:Lz,number:VD,object:Az,oboolean:Hz,onumber:zz,optional:Rz,ostring:qz,pipeline:Uz,preprocess:Vz,promise:Oz,record:Cz,set:Fz,strictObject:Dz,string:LD,symbol:hz,transformer:FD,tuple:Mz,undefined:gz,union:Sz,unknown:bz,void:wz,NEVER:Wz,ZodIssueCode:Re,quotelessJson:Lq,ZodError:ga});function HD(t,e){return(r,n)=>r[t]===void 0==(r[e]===void 0)?(n.addIssue({code:he.ZodIssueCode.custom,message:`Either ${t} or ${e} must be used, but not both.`}),!1):!0}function Bt(){return function(t){return t}}function tn(t,e){let r=t.safeParse(e);if(!r.success)throw new Lt({errorLevel:"CRITICAL",effect:"Failed to run function due to invalid arguments. Check that the arguments that you are passing to the function match the type definition of the function.",cause:r.error})}function GD(t,e){return t.safeParse(e,{errorMap:Zz})}var qD=["zeroth","first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth"],zD=["twent","thirt","fort","fift","sixt","sevent","eight","ninet"];function jz(t){return t<20?qD[t]:t%10===0?zD[Math.floor(t/10)-2]+"ieth":zD[Math.floor(t/10)-2]+"y-"+qD[t%10]}var Zz=(t,e)=>({message:`At '${t.path.map(n=>typeof n=="string"?n:jz(n+1)+" element").join(" > ")}'. ${e.defaultError}`});function Jz(t,e,r){return he.number({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a number.`})}function ei(t,e,r){return he.string({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`})}function vx(t,e,r){return he.coerce.string({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a string.`})}function bs(t,e,r){return he.boolean({required_error:`The ${t} action requires a specified ${r} with the '${e}' field.`,invalid_type_error:`The ${t} action requires the value of the '${e}' fields to be a boolean.`})}var Xz=Bt()(he.object({type:he.literal("command"),command:ei("command","command","command to run")})),Qz=Bt()(he.object({type:he.literal("js"),file:ei("js","file","file path to the file to run"),args:he.record(he.unknown()).optional()})),Kz=Bt()(he.object({type:he.literal("open"),link:ei("open","link","link to open"),newTab:bs("open","newTab","").optional()})),e7=Bt()(he.object({type:he.literal("input"),str:ei("input","str","value to input")})),t7=Bt()(he.object({type:he.literal("sleep"),ms:Jz("sleep","ms","duration")})),r7=Bt()(he.object({type:he.literal("templaterCreateNote"),templateFile:ei("templaterCreateNote","templateFile","template file path"),folderPath:ei("templaterCreateNote","folderPath","folder path").optional(),fileName:ei("templaterCreateNote","fileName","file name").optional(),openNote:bs("templaterCreateNote","openNote","value for whether to open the note").optional(),openIfAlreadyExists:bs("templaterCreateNote","openIfAlreadyExists","value for whether to open the note if it already exists").optional()})),n7=Bt()(he.object({type:he.literal("runTemplaterFile"),templateFile:ei("runTemplaterFile","templateFile","template file path")})),i7=Bt()(he.object({type:he.literal("updateMetadata"),bindTarget:ei("updateMetadata","bindTarget","bind target to the metadata to update"),evaluate:bs("updateMetadata","evaluate","value for whether to evaluate the value as a JavaScript expression"),value:he.coerce.string({required_error:"The updateMetadata action requires a specified value for the update with the 'value' field.",invalid_type_error:"The updateMetadata action requires the value of the 'value' fields to be a string."})})),a7=Bt()(he.object({type:he.literal("createNote"),folderPath:ei("createNote","folderPath","folder path").optional(),fileName:ei("createNote","fileName","file name"),openNote:bs("createNote","openNote","value for whether to open the note").optional(),openIfAlreadyExists:bs("createNote","openIfAlreadyExists","value for whether to open the note if it already exists").optional()})),o7=Bt()(he.object({type:he.literal("replaceInNote"),fromLine:vx("replaceInNote","fromLine","line to replace from"),toLine:vx("replaceInNote","toLine","line to replace to"),replacement:ei("replaceInNote","replacement","replacement string"),templater:bs("replaceInNote","templater","value for whether to use Templater").optional()})),s7=Bt()(he.object({type:he.literal("replaceSelf"),replacement:ei("replaceSelf","replacement","replacement string"),templater:bs("replaceSelf","templater","value for whether to use Templater").optional()})),u7=Bt()(he.object({type:he.literal("regexpReplaceInNote"),regexp:ei("regexpReplaceInNote","regexp","search regular expression"),regexpFlags:ei("regexpReplaceInNote","regexpFlags","regular expression flags string").optional(),replacement:ei("regexpReplaceInNote","replacement","replacement string")})),l7=Bt()(he.object({type:he.literal("insertIntoNote"),line:vx("insertIntoNote","line","line to insert at"),value:ei("insertIntoNote","value","string to insert"),templater:bs("insertIntoNote","templater","value for whether to use Templater").optional()})),c7=Bt()(he.object({type:he.literal("inlineJS"),code:ei("inlineJS","code","code string to run"),args:he.record(he.unknown()).optional()})),WD=Bt()(he.discriminatedUnion("type",[Xz,Qz,Kz,e7,t7,r7,i7,a7,o7,s7,u7,l7,c7,n7])),f7=he.nativeEnum(Wr),lc=Bt()(he.object({label:he.string(),icon:he.string().optional(),style:f7,class:he.string().optional(),cssStyle:he.string().optional(),backgroundImage:he.string().optional(),tooltip:he.string().optional(),id:he.string().optional(),hidden:he.boolean().optional(),action:WD.optional(),actions:WD.array().optional()}).superRefine(HD("action","actions")));function bx(t){return t instanceof Error&&t.name==="ZodError"&&"issues"in t&&Array.isArray(t.issues)}var yx=class extends Error{name;details;constructor(t,e){super(t,e),this.name="ZodValidationError",this.details=p7(e)}toString(){return this.message}};function p7(t){if(t){let e=t.cause;if(bx(e))return e.issues}return[]}function YD(t){return t.length!==0}var m7=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function d7(t){return t.length===1?t[0].toString():t.reduce((e,r)=>{if(typeof r=="number")return e+"["+r.toString()+"]";if(r.includes('"'))return e+'["'+h7(r)+'"]';if(!m7.test(r))return e+'["'+r+'"]';let n=e.length===0?"":".";return e+n+r},"")}function h7(t){return t.replace(/"/g,'\\"')}var g7="; ",v7=99,jD="Validation error",y7=": ",b7=", or ";function x7(t={}){let{issueSeparator:e=g7,unionSeparator:r=b7,prefixSeparator:n=y7,prefix:i=jD,includePath:a=!0,maxIssuesInMessage:o=v7}=t;return s=>{let l=s.slice(0,o).map(u=>Od({issue:u,issueSeparator:e,unionSeparator:r,includePath:a})).join(e);return w7(l,i,n)}}function Od(t){let{issue:e,issueSeparator:r,unionSeparator:n,includePath:i}=t;if(e.code===Re.invalid_union)return e.unionErrors.reduce((a,o)=>{let s=o.issues.map(l=>Od({issue:l,issueSeparator:r,unionSeparator:n,includePath:i})).join(r);return a.includes(s)||a.push(s),a},[]).join(n);if(e.code===Re.invalid_arguments)return[e.message,...e.argumentsError.issues.map(a=>Od({issue:a,issueSeparator:r,unionSeparator:n,includePath:i}))].join(r);if(e.code===Re.invalid_return_type)return[e.message,...e.returnTypeError.issues.map(a=>Od({issue:a,issueSeparator:r,unionSeparator:n,includePath:i}))].join(r);if(i&&YD(e.path)){if(e.path.length===1){let a=e.path[0];if(typeof a=="number")return`${e.message} at index ${a}`}return`${e.message} at "${d7(e.path)}"`}return e.message}function w7(t,e,r){return e!==null?t.length>0?[e,t].join(r):e:t.length>0?t:jD}function Rd(t,e={}){if(!bx(t))throw new TypeError(`Invalid zodError param; expected instance of ZodError. Did you mean to use the "${D7.name}" method instead?`);return ZD(t,e)}function ZD(t,e={}){let r=t.errors,n;return YD(r)?n=_7(e)(r):n=t.message,new yx(n,{cause:t})}function _7(t){return"messageBuilder"in t?t.messageBuilder:x7(t)}var A7=(t={})=>e=>bx(e)?ZD(e,t):e instanceof Error?new yx(e.message,{cause:e}):new yx("Unknown error");function D7(t,e={}){return A7(e)(t)}var S7=qf.P.sequenceMap((t,e)=>e,qf.P.string("BUTTON"),qf.P.manyNotOf("[],^").separateBy(qf.P.string(",").trim(JD.P_UTILS.optionalWhitespace())).wrapString("[","]")),Ld=class{constructor(e){this.mb=e}fromGroupString(e){let r=new er("ButtonGroup"),n=[];try{n=on(S7,e)}catch(i){r.add(i)}return{declarationString:e,referencedButtonIds:n,errorCollection:r}}validateGroup(e){return{declarationString:void 0,referencedButtonIds:e.referencedButtonIds,errorCollection:new er("ButtonGroup")}}fromString(e){let r=new er("Button"),n;try{let i=this.mb.internal.parseYaml(e);n=this.validateConfig(i)}catch(i){r.add(i)}return{declarationString:e,config:n,errorCollection:r}}validateConfig(e){let r=GD(lc,e);if(!r.success){let n=Rd(r.error,{unionSeparator:` +OR `,issueSeparator:" AND ",prefix:null,includePath:!1});throw new es({errorLevel:"ERROR",effect:"The validation for the button config failed.",cause:"Your button syntax seems to be invalid. Check that your button config follows what is described in the docs.",positionContext:n.message,docs:[qt.linkToButtonConfig()]})}return r.data}validate(e){let r=new er("Button"),n;try{n=this.validateConfig(e)}catch(i){r.add(i)}return{declarationString:void 0,config:n,errorCollection:r}}};var cc=class{constructor(){this.arguments=[]}add(e){this.arguments.push(e)}validate(){let e={};for(let r of Object.values(en))e[r]=0;for(let r of this.arguments){let n=r.getConfig();if(e[n.type]+=1,e[n.type]>1&&!n.allowMultiple)throw new $r({errorLevel:"ERROR",effect:"failed to validate argument container",cause:`argument '${n.type}' does not allow duplicates`,docs:[qt.linkToSearch(n.type)]})}}mergeByOverride(e){for(let r of e.arguments){let n=r.getConfig();n.allowMultiple||(this.arguments=this.arguments.filter(i=>i.getConfig().type!==n.type)),this.arguments.push(r)}return this.validate(),this}mergeByThrow(e){for(let r of e.arguments){let n=r.getConfig();if(!n.allowMultiple&&this.arguments.filter(i=>i.getConfig().type===n.type).length>0)throw new $r({errorLevel:"ERROR",effect:"failed to merge argument container",cause:"can not merge FieldArgumentContainers, since arguments overlap"});this.arguments.push(r)}return this.validate(),this}getAll(e){return this.arguments.filter(r=>r.getConfig().type===e)}get(e){return this.getAll(e).at(0)}};var Vd=class extends cc{getAll(e){return super.getAll(e)}get(e){return this.getAll(e).at(0)}};var fc=class{parseValue(e){this.validateValues(e,this.getConfig().values),this._parseValue(e)}validateValues(e,r){if(r.find(n=>n.length===e.length)===void 0)throw new $r({errorLevel:"WARNING",effect:`Failed to parse argument value for argument '${this.getConfig().type}'.`,cause:`Expected argument values to follow the form ${r.map(n=>n.length===0?"none":n.map(i=>`'${i.name}'`).join(", ")).join(" or ")}. Received arguments of length ${e.length}.`,docs:[qt.linkToSearch(this.getConfig().type)]})}isAllowed(e){return this.getConfig().allowedFieldTypes.length===0?!0:this.getConfig().allowedFieldTypes.includes(e)}getAllowedFieldsAsString(){return this.getConfig().allowedFieldTypes.length===0?"all":this.getConfig().allowedFieldTypes.join(", ")}};var yr=class extends fc{};var Ud=class extends yr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Ar.addLabels}};var qd=class extends yr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Ar.allowOther}};var zd=class extends yr{constructor(){super(...arguments);this.value=[]}_parseValue(r){this.value=r[0].value.split(" ")}getConfig(){return Ar.class}};var Hd=class extends yr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=la(r[0].value)}getConfig(){return Ar.defaultValue}};var Gd=class extends yr{constructor(){super(...arguments);this.value=void 0}_parseValue(r){if(this.value=Number.parseInt(r[0].value),Number.isNaN(this.value))throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'limit' must be of type number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]});if(this.value<=0)throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'limit' must be a positive number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Ar.limit}};var Wd=class extends yr{constructor(){super(...arguments);this.value=100}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'maxValue' must be of type number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Ar.maxValue}};var Yd=class extends yr{constructor(){super(...arguments);this.value=0}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'minValue' must be of type number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Ar.minValue}};var jd=class extends yr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Ar.multiLine}};var Zd=class extends yr{constructor(){super(...arguments);this.value=!1}_parseValue(r){this.value=la(r[0].value)}getConfig(){return Ar.offValue}};var Jd=class extends yr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=la(r[0].value)}getConfig(){return Ar.onValue}};var Xd=class extends yr{constructor(){super(...arguments);this.value="";this.name=""}_parseValue(r){r.length===1?(this.value=la(r[0].value),this.name=r[0].value):r.length===2&&(this.value=la(r[0].value),this.name=r[1].value)}getConfig(){return Ar.option}};var Qd=class extends yr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Ar.optionQuery}};var Kd=class extends yr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Ar.placeholder}};var eh=class extends yr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Ar.showcase}};var th=class extends yr{constructor(){super(...arguments);this.value=0}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'stepSize' must be of type number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]});if(this.value<=0)throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'stepSize' must be a positive number",docs:[qt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Ar.stepSize}};var rh=class extends yr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Ar.title}};function XD(t,e,r){return r==="true"?`[[${t}|${e}]]`:r==="partial"?`[[${e}]]`:`${e}`}var nh=class extends yr{constructor(){super(...arguments);this.value="true"}_parseValue(r){let n=r[0]?.value.toLowerCase();if(n===void 0){this.value="true";return}if(n==="true"||n==="partial"||n==="false"){this.value=n;return}throw new $r({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:`value of argument 'useLinks' must be one of ${Z_(["true","partial","false"],i=>`'${i}'`,", ","or")}`,docs:[qt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Ar.useLinks}};var QD={class:zd,addLabels:Ud,minValue:Yd,maxValue:Wd,stepSize:th,option:Xd,title:rh,optionQuery:Qd,showcase:eh,offValue:Zd,onValue:Jd,defaultValue:Hd,placeholder:Kd,useLinks:nh,limit:Gd,allowOther:qd,multiLine:jd},ih=class{static createInputFieldArgument(e){if(e in QD){let r=QD[e];if(r)return new r}throw new to({errorLevel:"WARNING",effect:"can not crate input field argument",cause:`unknown argument '${e}'`})}};var ah=class{constructor(e,r,n){this.mb=e,this.unvalidatedDeclaration=r,this.filePath=n,this.errorCollection=new er("input field declaration")}validate(e){let r=this.validateInputFieldType(),n=this.validateBindTarget(e),i=this.validateArguments(r),a={declarationString:this.unvalidatedDeclaration.declarationString,inputFieldType:r,bindTarget:n,argumentContainer:i,errorCollection:this.errorCollection.merge(this.unvalidatedDeclaration.errorCollection)};return this.checkForDeprecation(a),a}validateInputFieldType(){let e=this.unvalidatedDeclaration.inputFieldType;for(let r of Object.entries(Ls))if(r[1]===e?.value)return r[1];return this.errorCollection.add(new Nn("ERROR","Declaration Validator",`Encountered invalid identifier. Expected an input field type but received '${e?.value}'.`,this.unvalidatedDeclaration.declarationString,e?.position)),"invalid"}checkForDeprecation(e){}validateBindTarget(e){if(this.unvalidatedDeclaration.bindTarget!==void 0)try{return this.mb.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,this.unvalidatedDeclaration.bindTarget,this.filePath,e)}catch(r){this.errorCollection.add(r)}}validateArguments(e){let r=new Vd;for(let n of this.unvalidatedDeclaration.arguments){let i=this.validateArgumentType(n.name);if(i==="invalid")continue;let a=ih.createInputFieldArgument(i);if(!a.isAllowed(e)){this.errorCollection.add(new Nn("WARNING","Declaration Validator",`Failed to parse input field arguments. Argument "${n.name.value}" is only applicable to "${a.getAllowedFieldsAsString()}" input fields.`,this.unvalidatedDeclaration.declarationString,n.name.position));continue}try{a.parseValue(n.value)}catch(o){this.errorCollection.add(o);continue}r.add(a)}try{r.validate()}catch(n){this.errorCollection.add(n)}return r}validateArgumentType(e){for(let r of Object.entries(en))if(r[1]===e.value)return r[1];return this.errorCollection.add(new Nn("WARNING","Declaration Validator",`Encountered invalid identifier. Expected an input field argument type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}};var bi=Tr(oa()),Yr=Tr(qi());var T7=Yr.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{inputFieldType:t,arguments:e,bindTarget:n}},Ln.node(Mi).trim(bi.P_UTILS.optionalWhitespace()).describe("input field type"),nf.trim(bi.P_UTILS.optionalWhitespace()).wrap(Yr.P.string("(").describe('arguments paren "("'),Yr.P.string(")").describe('arguments paren ")"')).trim(bi.P_UTILS.optionalWhitespace()).optional([]),Yr.P.sequence(Yr.P.string(":").trim(bi.P_UTILS.optionalWhitespace()).describe('bind target separator ":"'),_o).trim(bi.P_UTILS.optionalWhitespace()).optional()),KD=Yr.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{inputFieldType:t,arguments:e,bindTarget:n}},Ln.node(Mi).trim(bi.P_UTILS.optionalWhitespace()).optional().describe("input field type"),nf.trim(bi.P_UTILS.optionalWhitespace()).wrap(Yr.P.string("(").describe('arguments paren "("'),Yr.P.string(")").describe('arguments paren ")"')).trim(bi.P_UTILS.optionalWhitespace()).optional([]),Yr.P.sequence(Yr.P.string(":").trim(bi.P_UTILS.optionalWhitespace()).describe('bind target separator ":"'),_o).trim(bi.P_UTILS.optionalWhitespace()).optional()),eS=Yr.P.or(Yr.P.sequenceMap((t,e,r)=>(r.templateName=e,r),Yr.P.string("INPUT"),Yr.P.sequenceMap((t,e,r)=>e,Yr.P.string("["),$_.node(Mi).trim(bi.P_UTILS.optionalWhitespace()).describe("template name"),Yr.P.string("]").skip(bi.P_UTILS.optionalWhitespace())),KD.wrap(Yr.P.string("["),Yr.P.string("]")),bi.P_UTILS.eof()),Yr.P.sequenceMap((t,e)=>e,Yr.P.string("INPUT"),T7.wrap(Yr.P.string("["),Yr.P.string("]")),bi.P_UTILS.eof())),tS=Yr.P.sequenceMap((t,e)=>e,Yr.P.string("INPUT"),KD.wrap(Yr.P.string("["),Yr.P.string("]")),bi.P_UTILS.eof());var oh=class{constructor(e){this.mb=e,this.templates=[]}fromString(e){let r=new er("InputField");try{let n=on(eS,e),i=this.partialToFullDeclaration(n,e,r);return i=this.applyTemplate(i),i}catch(n){r.add(n)}return{declarationString:e,inputFieldType:{value:"invalid"},bindTarget:void 0,arguments:[],errorCollection:r}}fromStringAndValidate(e,r,n){return this.validate(this.fromString(e),r,n)}fromSimpleDeclaration(e){return{declarationString:void 0,inputFieldType:Fa(e.inputFieldType),bindTarget:this.mb.bindTargetParser.fromExistingDeclaration(e.bindTarget),arguments:(e.arguments??[]).map(r=>({name:Fa(r.name),value:r.value.map(n=>Fa(n))})),errorCollection:new er("InputField")}}fromSimpleDeclarationAndValidate(e,r,n){return this.validate(this.fromSimpleDeclaration(e),r,n)}partialToFullDeclaration(e,r,n){return{...structuredClone(e),declarationString:r,errorCollection:n}}validate(e,r,n){return new ah(this.mb,e,r).validate(n)}merge(e,r){let n;return e.bindTarget===void 0?n=r.bindTarget:(n=e.bindTarget,r.bindTarget?.storagePath!==void 0&&(n.storagePath=r.bindTarget.storagePath),r.bindTarget?.storageProp!==void 0&&(n.storageProp=r.bindTarget.storageProp)),{declarationString:r.declarationString,inputFieldType:r.inputFieldType??e.inputFieldType,bindTarget:n,arguments:r.arguments.concat(e.arguments).reduce((i,a)=>(i.find(o=>o.name===a.name)===void 0&&i.push(a),i),[]),errorCollection:new er("input field declaration").merge(e.errorCollection).merge(r.errorCollection)}}parseTemplateString(e){let r=new er("InputFieldParser");try{let n=on(tS,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,inputFieldType:{value:"invalid"},bindTarget:void 0,arguments:[],errorCollection:r}}parseTemplates(e){this.templates=[];let r=new er("input field template parser");for(let n of e){let i=this.parseTemplateString(n.declaration);r.merge(i.errorCollection);let a={name:n.name,template:i};this.templates.push(qy(a))}return r}getTemplate(e){return this.templates.find(r=>r.name===e)?.template}applyTemplate(e){if(e.templateName===void 0)return e;let r=this.getTemplate(e.templateName.value);return r===void 0?(e.errorCollection.add(new Nn("WARNING","Input Field Parser",`Invalid template name. Could not find a template with the name '${e.templateName.value}'.`,e.declarationString,e.templateName.position,["https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/guides/templates/"])),e):this.merge(r,e)}};var sh=class{constructor(e){this.mb=e}fromString(e){let r=new er("JsViewFieldDeclaration");try{let n=on(z_,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,errorCollection:r,bindTargetMappings:[],writeToBindTarget:void 0,hidden:!1,code:""}}fromStringAndValidate(e,r){return this.validate(this.fromString(e),r)}fromSimpleDeclaration(e){let r=new er("JsViewFieldDeclaration");return{declarationString:void 0,code:e.code,bindTargetMappings:e.bindTargetMappings.map(n=>({bindTarget:this.mb.bindTargetParser.fromExistingDeclaration(n.bindTarget),name:n.name})),writeToBindTarget:this.mb.bindTargetParser.fromExistingDeclaration(e.writeToBindTarget),hidden:e.hidden??!1,errorCollection:r}}fromSimpleDeclarationAndValidate(e,r){return this.validate(this.fromSimpleDeclaration(e),r)}partialToFullDeclaration(e,r,n){let i=e;return i.declarationString=r,i.errorCollection=n,i.bindTargetMappings=[...i.bindTargetMappings],i}validate(e,r){let n={};n.declarationString=e.declarationString,n.errorCollection=e.errorCollection;try{return n.bindTargetMappings=e.bindTargetMappings.map(i=>({bindTarget:this.mb.bindTargetParser.validate(e.declarationString,i.bindTarget,r),name:i.name})),e.writeToBindTarget!==void 0&&(n.writeToBindTarget=this.mb.bindTargetParser.validate(e.declarationString,e.writeToBindTarget,r)),n.code=e.code,n.hidden=e.hidden,n}catch(i){n.errorCollection.add(i)}return{declarationString:e.declarationString,errorCollection:n.errorCollection,bindTargetMappings:[],writeToBindTarget:void 0,hidden:!1,code:""}}};var uh=class extends cc{getAll(e){return super.getAll(e)}get(e){return this.getAll(e).at(0)}};var Qs=class extends fc{};var lh=class extends Qs{constructor(){super(...arguments);this.value=[]}_parseValue(r){this.value=r[0].value.split(" ")}getConfig(){return Bl.class}};var ch=class extends Qs{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Bl.hidden}};var fh=class extends Qs{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Bl.renderMarkdown}};var rS={renderMarkdown:fh,hidden:ch,class:lh},ph=class{static createViewFieldArgument(e){if(e in rS){let r=rS[e];if(r)return new r}throw new to({errorLevel:"WARNING",effect:"can not crate view field argument",cause:`unknown argument '${e}'`})}};var mh=class{constructor(e,r,n){this.unvalidatedDeclaration=e,this.mb=n,this.filePath=r,this.errorCollection=new er("view field declaration")}validate(e){let r=this.validateInputFieldType(),n=this.validateBindTarget(e),i=this.validateArguments(r),a=this.validateTemplateDeclaration(e),o={declarationString:this.unvalidatedDeclaration.declarationString,viewFieldType:r,writeToBindTarget:n,argumentContainer:i,templateDeclaration:a,errorCollection:this.errorCollection.merge(this.unvalidatedDeclaration.errorCollection)};return this.checkForDeprecation(o),o}validateInputFieldType(){let e=this.unvalidatedDeclaration.viewFieldType;if(e===void 0)return"math";for(let r of Object.entries(lf))if(r[1]===e?.value)return r[1];return this.errorCollection.add(new Nn("ERROR","Declaration Validator",`Encountered invalid identifier. Expected a view field type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}checkForDeprecation(e){}validateBindTarget(e){if(this.unvalidatedDeclaration.writeToBindTarget!==void 0)return this.mb.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,this.unvalidatedDeclaration.writeToBindTarget,this.filePath,e)}validateArguments(e){let r=new uh;for(let n of this.unvalidatedDeclaration.arguments){let i=this.validateArgumentType(n.name);if(i==="invalid")continue;let a=ph.createViewFieldArgument(i);if(!a.isAllowed(e)){this.errorCollection.add(new Nn("WARNING","Declaration Validator",`Failed to parse view field arguments. Argument "${n.name.value}" is only applicable to "${a.getAllowedFieldsAsString()}" view fields.`,this.unvalidatedDeclaration.declarationString,n.name.position));continue}try{a.parseValue(n.value)}catch(o){this.errorCollection.add(o);continue}r.add(a)}try{r.validate()}catch(n){this.errorCollection.add(n)}return r}validateArgumentType(e){for(let r of Object.entries(_u))if(r[1]===e.value)return r[1];return this.errorCollection.add(new Nn("WARNING","Declaration Validator",`Encountered invalid identifier. Expected a view field argument type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}validateTemplateDeclaration(e){try{return this.unvalidatedDeclaration.templateDeclaration?.map(r=>typeof r=="string"?r:this.mb.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,r,this.filePath,e))??[]}catch(r){return this.errorCollection.add(r),[]}}};var dh=class{constructor(e){this.mb=e}fromString(e){let r=new er("ViewFieldDeclaration");try{let n=on(q_,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,errorCollection:r,viewFieldType:{value:"invalid"},writeToBindTarget:void 0,arguments:[],templateDeclaration:[]}}fromStringAndValidate(e,r,n){return this.validate(this.fromString(e),r,n)}fromSimpleDeclaration(e){let r=new er("ViewFieldDeclaration");return{declarationString:void 0,templateDeclaration:(e.templateDeclaration??[]).map(n=>typeof n=="string"?n:this.mb.bindTargetParser.fromExistingDeclaration(n)),viewFieldType:Fa(e.viewFieldType),arguments:(e.arguments??[]).map(n=>({name:Fa(n.name),value:n.value.map(i=>Fa(i))})),writeToBindTarget:this.mb.bindTargetParser.fromExistingDeclaration(e.writeToBindTarget),errorCollection:r}}fromSimpleDeclarationAndValidate(e,r,n){return this.validate(this.fromSimpleDeclaration(e),r,n)}partialToFullDeclaration(e,r,n){return{...structuredClone(e),declarationString:r,errorCollection:n}}validate(e,r,n){return new mh(e,r,this.mb).validate(n)}};var iS=Tr(Bf());var nS=["January","February","March","April","May","June","July","August","September","October","November","December"],Yu=[{index:0,name:"Sunday",shortName:"Su"},{index:1,name:"Monday",shortName:"Mo"},{index:2,name:"Tuesday",shortName:"Tu"},{index:3,name:"Wednesday",shortName:"We"},{index:4,name:"Thursday",shortName:"Th"},{index:5,name:"Friday",shortName:"Fr"},{index:6,name:"Saturday",shortName:"Sa"}],zf={devMode:!1,ignoreCodeBlockRestrictions:!1,preferredDateFormat:"YYYY-MM-DD",firstWeekday:Yu[1],syncInterval:200,enableJs:!1,viewFieldDisplayNullAsEmpty:!1,enableSyntaxHighlighting:!0,enableEditorRightClickMenu:!0,inputFieldTemplates:[],buttonTemplates:[],excludedFolders:["templates"]},hh=50,gh=1e3;var xx=Yu[1];function aS(t){xx=t}function oS(t){return nS[t]}function sS(t,e){let r=(0,iS.default)(new Date(e,t)).daysInMonth(),n=new Array(42).fill(0),i=M7(new Date(e,t,1));for(let a=0;a({index:Vy(e.index-xx.index,7),name:e.name,shortName:e.shortName})).sort((e,r)=>e.index-r.index).map(e=>e.shortName)}function lS(){let t=0;return()=>++t}function bn(){return bn=Object.assign?Object.assign.bind():function(t){for(var e=1;ethis.has(e)).values()}get(e){return jr(this.wrappedObject,e)}set(e,r){return Bo(this.wrappedObject,e,r),this}has(e){return Hf(this.wrappedObject,e)&&e in this.wrappedObject}entries(){return fS(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var r of this.keys())e(this.get(r),r,this)}delete(e){Hf(this.wrappedObject,e)&&delete this.wrappedObject[e]}clear(){for(var e of this.keys())this.delete(e)}get size(){return Object.keys(this.wrappedObject).length}},pc=class{constructor(e,r,n){this.a=e,this.b=r,this.bKeys=n,this[Symbol.iterator]=this.entries}get(e){return this.bKeys.has(e)?this.b.get(e):this.a.get(e)}set(e,r){return this.bKeys.has(e)?this.b.set(e,r):this.a.set(e,r),this}has(e){return this.b.has(e)||this.a.has(e)}keys(){return new Set([...this.a.keys(),...this.b.keys()])[Symbol.iterator]()}entries(){return fS(this.keys(),e=>[e,this.get(e)])}forEach(e){for(var r of this.keys())e(this.get(r),r,this)}delete(e){return this.bKeys.has(e)?this.b.delete(e):this.a.delete(e)}clear(){this.a.clear(),this.b.clear()}get size(){return[...this.keys()].length}};function fS(t,e){return{next:()=>{var r=t.next();return r.done?r:{value:e(r.value),done:!1}}}}function eu(){return new Map}function xs(t){if(!t)return eu();if(ko(t))return t;if(ya(t))return new Ks(t);throw new Error("createMap can create maps from objects or Maps")}function pS(t){if(t instanceof Ks)return t.wrappedObject;var e={};for(var r of t.keys()){var n=t.get(r);Bo(e,r,n)}return e}function bt(t){return typeof t=="number"}function ot(t){return!t||typeof t!="object"||typeof t.constructor!="function"?!1:t.isBigNumber===!0&&typeof t.constructor.prototype=="object"&&t.constructor.prototype.isBigNumber===!0||typeof t.constructor.isDecimal=="function"&&t.constructor.isDecimal(t)===!0}function Po(t){return typeof t=="bigint"}function Hn(t){return t&&typeof t=="object"&&Object.getPrototypeOf(t).isComplex===!0||!1}function ba(t){return t&&typeof t=="object"&&Object.getPrototypeOf(t).isFraction===!0||!1}function En(t){return t&&t.constructor.prototype.isUnit===!0||!1}function Jr(t){return typeof t=="string"}var sr=Array.isArray;function Ye(t){return t&&t.constructor.prototype.isMatrix===!0||!1}function rn(t){return Array.isArray(t)||Ye(t)}function ws(t){return t&&t.isDenseMatrix&&t.constructor.prototype.isMatrix===!0||!1}function xa(t){return t&&t.isSparseMatrix&&t.constructor.prototype.isMatrix===!0||!1}function tu(t){return t&&t.constructor.prototype.isRange===!0||!1}function $o(t){return t&&t.constructor.prototype.isIndex===!0||!1}function bh(t){return typeof t=="boolean"}function xh(t){return t&&t.constructor.prototype.isResultSet===!0||!1}function mc(t){return t&&t.constructor.prototype.isHelp===!0||!1}function wh(t){return typeof t=="function"}function _h(t){return t instanceof Date}function Ah(t){return t instanceof RegExp}function ya(t){return!!(t&&typeof t=="object"&&t.constructor===Object&&!Hn(t)&&!ba(t))}function ko(t){return t?t instanceof Map||t instanceof Ks||typeof t.set=="function"&&typeof t.get=="function"&&typeof t.keys=="function"&&typeof t.has=="function":!1}function mS(t){return ko(t)&&ko(t.a)&&ko(t.b)}function dS(t){return ko(t)&&ya(t.wrappedObject)}function Dh(t){return t===null}function Sh(t){return t===void 0}function $i(t){return t&&t.isAccessorNode===!0&&t.constructor.prototype.isNode===!0||!1}function Gn(t){return t&&t.isArrayNode===!0&&t.constructor.prototype.isNode===!0||!1}function Eh(t){return t&&t.isAssignmentNode===!0&&t.constructor.prototype.isNode===!0||!1}function Th(t){return t&&t.isBlockNode===!0&&t.constructor.prototype.isNode===!0||!1}function Mh(t){return t&&t.isConditionalNode===!0&&t.constructor.prototype.isNode===!0||!1}function kt(t){return t&&t.isConstantNode===!0&&t.constructor.prototype.isNode===!0||!1}function Gf(t){return kt(t)||Rr(t)&&t.args.length===1&&kt(t.args[0])&&"-+~".includes(t.op)}function za(t){return t&&t.isFunctionAssignmentNode===!0&&t.constructor.prototype.isNode===!0||!1}function ai(t){return t&&t.isFunctionNode===!0&&t.constructor.prototype.isNode===!0||!1}function Xi(t){return t&&t.isIndexNode===!0&&t.constructor.prototype.isNode===!0||!1}function Gt(t){return t&&t.isNode===!0&&t.constructor.prototype.isNode===!0||!1}function Oo(t){return t&&t.isObjectNode===!0&&t.constructor.prototype.isNode===!0||!1}function Rr(t){return t&&t.isOperatorNode===!0&&t.constructor.prototype.isNode===!0||!1}function Wn(t){return t&&t.isParenthesisNode===!0&&t.constructor.prototype.isNode===!0||!1}function Ch(t){return t&&t.isRangeNode===!0&&t.constructor.prototype.isNode===!0||!1}function Nh(t){return t&&t.isRelationalNode===!0&&t.constructor.prototype.isNode===!0||!1}function Mr(t){return t&&t.isSymbolNode===!0&&t.constructor.prototype.isNode===!0||!1}function dc(t){return t&&t.constructor.prototype.isChain===!0||!1}function ir(t){var e=typeof t;return e==="object"?t===null?"null":ot(t)?"BigNumber":t.constructor&&t.constructor.name?t.constructor.name:"Object":e}function ut(t){var e=typeof t;if(e==="number"||e==="bigint"||e==="string"||e==="boolean"||t===null||t===void 0)return t;if(typeof t.clone=="function")return t.clone();if(Array.isArray(t))return t.map(function(r){return ut(r)});if(t instanceof Date)return new Date(t.valueOf());if(ot(t))return t;if(ya(t))return I7(t,ut);if(e==="function")return t;throw new TypeError("Cannot clone: unknown type of value (value: ".concat(t,")"))}function I7(t,e){var r={};for(var n in t)Ze(t,n)&&(r[n]=e(t[n]));return r}function Fh(t,e){for(var r in e)Ze(e,r)&&(t[r]=e[r]);return t}function wx(t,e){if(Array.isArray(e))throw new TypeError("Arrays are not supported by deepExtend");for(var r in e)if(Ze(e,r)&&!(r in Object.prototype)&&!(r in Function.prototype))if(e[r]&&e[r].constructor===Object)t[r]===void 0&&(t[r]={}),t[r]&&t[r].constructor===Object?wx(t[r],e[r]):t[r]=e[r];else{if(Array.isArray(e[r]))throw new TypeError("Arrays are not supported by deepExtend");t[r]=e[r]}return t}function Qi(t,e){var r,n,i;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(n=0,i=t.length;n{Object.defineProperty(r,n,{get:()=>t[n],enumerable:!0,configurable:!0})}),r}function wS(t,e,r){t[e]!==void 0&&!r.includes(t[e])&&console.warn('Warning: Unknown value "'+t[e]+'" for configuration option "'+e+'". Available options: '+r.map(n=>JSON.stringify(n)).join(", ")+".")}var cw={};F_(cw,{createAbs:()=>hT,createAccessorNode:()=>kI,createAcos:()=>cF,createAcosh:()=>pF,createAcot:()=>dF,createAcoth:()=>gF,createAcsc:()=>yF,createAcsch:()=>xF,createAdd:()=>AI,createAddScalar:()=>yT,createAnd:()=>Tg,createAndTransform:()=>e4,createArg:()=>yM,createArrayNode:()=>PI,createAsec:()=>_F,createAsech:()=>DF,createAsin:()=>EF,createAsinh:()=>TF,createAssignmentNode:()=>RI,createAtan:()=>MF,createAtan2:()=>NF,createAtanh:()=>IF,createAtomicMass:()=>n3,createAvogadro:()=>i3,createBellNumbers:()=>OR,createBigNumberClass:()=>KS,createBigint:()=>WE,createBignumber:()=>XE,createBin:()=>kC,createBitAnd:()=>fg,createBitAndTransform:()=>r4,createBitNot:()=>mM,createBitOr:()=>pg,createBitOrTransform:()=>n4,createBitXor:()=>gM,createBlockNode:()=>LI,createBohrMagneton:()=>OL,createBohrRadius:()=>zL,createBoltzmann:()=>a3,createBoolean:()=>JE,createCatalan:()=>LR,createCbrt:()=>_T,createCeil:()=>AT,createChain:()=>pO,createChainClass:()=>k2,createClassicalElectronRadius:()=>HL,createClone:()=>xE,createColumn:()=>hg,createColumnTransform:()=>E3,createCombinations:()=>ZO,createCombinationsWithRep:()=>QO,createCompare:()=>AN,createCompareNatural:()=>TN,createCompareText:()=>CN,createCompile:()=>a2,createComplex:()=>QE,createComplexClass:()=>eE,createComposition:()=>UR,createConcat:()=>dg,createConcatTransform:()=>U3,createConditionalNode:()=>VI,createConductanceQuantum:()=>RL,createConj:()=>xM,createConstantNode:()=>WI,createCorr:()=>WO,createCos:()=>kF,createCosh:()=>$F,createCot:()=>RF,createCoth:()=>VF,createCoulomb:()=>PL,createCount:()=>BM,createCreateUnit:()=>uF,createCross:()=>PM,createCsc:()=>qF,createCsch:()=>HF,createCtranspose:()=>mC,createCube:()=>ST,createCumSum:()=>uv,createCumSumTransform:()=>Z3,createDeepEqual:()=>RN,createDenseMatrixClass:()=>yE,createDerivative:()=>KR,createDet:()=>dO,createDeuteronMass:()=>JL,createDiag:()=>OM,createDiff:()=>bg,createDiffTransform:()=>z3,createDistance:()=>kO,createDivide:()=>IO,createDivideScalar:()=>YC,createDot:()=>CI,createDotDivide:()=>sN,createDotMultiply:()=>aM,createDotPow:()=>aN,createE:()=>gL,createEfimovFactor:()=>r3,createEigs:()=>wO,createElectricConstant:()=>BL,createElectronMass:()=>GL,createElementaryCharge:()=>$L,createEqual:()=>NN,createEqualScalar:()=>zE,createEqualText:()=>IN,createErf:()=>DC,createEvaluate:()=>s2,createExp:()=>TT,createExpm:()=>AO,createExpm1:()=>CT,createFactorial:()=>iR,createFalse:()=>cL,createFaraday:()=>o3,createFermiCoupling:()=>WL,createFft:()=>vC,createFibonacciHeapClass:()=>ZN,createFilter:()=>gg,createFilterTransform:()=>C3,createFineStructure:()=>YL,createFirstRadiation:()=>s3,createFix:()=>NT,createFlatten:()=>VM,createFloor:()=>sg,createForEach:()=>vg,createForEachTransform:()=>N3,createFormat:()=>IC,createFraction:()=>KE,createFractionClass:()=>rE,createFreqz:()=>aL,createFunctionAssignmentNode:()=>YI,createFunctionNode:()=>t2,createGamma:()=>eR,createGasConstant:()=>l3,createGcd:()=>PT,createGetMatrixDataType:()=>qM,createGravitationConstant:()=>CL,createGravity:()=>y3,createHartreeEnergy:()=>jL,createHasNumericValue:()=>BE,createHelp:()=>cO,createHelpClass:()=>B2,createHex:()=>RC,createHypot:()=>SI,createI:()=>DL,createIdentity:()=>HM,createIfft:()=>bC,createIm:()=>_M,createImmutableDenseMatrixClass:()=>WN,createIndex:()=>II,createIndexClass:()=>jN,createIndexNode:()=>jI,createIndexTransform:()=>F3,createInfinity:()=>pL,createIntersect:()=>PO,createInv:()=>gO,createInverseConductanceQuantum:()=>LL,createInvmod:()=>nM,createIsInteger:()=>_E,createIsNaN:()=>LE,createIsNegative:()=>CE,createIsNumeric:()=>FE,createIsPositive:()=>PE,createIsPrime:()=>HC,createIsZero:()=>OE,createKldivergence:()=>oR,createKlitzing:()=>qL,createKron:()=>WM,createLN10:()=>bL,createLN2:()=>yL,createLOG10E:()=>wL,createLOG2E:()=>xL,createLarger:()=>PN,createLargerEq:()=>$N,createLcm:()=>OT,createLeafCount:()=>zR,createLeftShift:()=>vN,createLgamma:()=>rR,createLog:()=>KC,createLog10:()=>LT,createLog1p:()=>tN,createLog2:()=>UT,createLoschmidt:()=>u3,createLsolve:()=>lN,createLsolveAll:()=>mN,createLup:()=>p2,createLusolve:()=>N2,createLyap:()=>FO,createMad:()=>UO,createMagneticConstant:()=>IL,createMagneticFluxQuantum:()=>VL,createMap:()=>yg,createMapSlices:()=>ip,createMapSlicesTransform:()=>S3,createMapTransform:()=>I3,createMatrix:()=>tT,createMatrixClass:()=>iE,createMatrixFromColumns:()=>sT,createMatrixFromFunction:()=>nT,createMatrixFromRows:()=>aT,createMax:()=>Pg,createMaxTransform:()=>P3,createMean:()=>lv,createMeanTransform:()=>$3,createMedian:()=>LO,createMin:()=>$g,createMinTransform:()=>O3,createMod:()=>ug,createMode:()=>MC,createMolarMass:()=>g3,createMolarMassC12:()=>v3,createMolarPlanckConstant:()=>c3,createMolarVolume:()=>f3,createMultinomial:()=>uR,createMultiply:()=>HT,createMultiplyScalar:()=>qT,createNaN:()=>mL,createNeutronMass:()=>XL,createNode:()=>BI,createNorm:()=>TI,createNot:()=>EM,createNthRoot:()=>WT,createNthRoots:()=>nN,createNuclearMagneton:()=>UL,createNull:()=>fL,createNumber:()=>GE,createNumeric:()=>GC,createObjectNode:()=>ZI,createOct:()=>$C,createOnes:()=>jM,createOperatorNode:()=>JI,createOr:()=>mg,createOrTransform:()=>t4,createParenthesisNode:()=>XI,createParse:()=>n2,createParser:()=>c2,createParserClass:()=>u2,createPartitionSelect:()=>UN,createPermutations:()=>fR,createPhi:()=>vL,createPi:()=>dL,createPickRandom:()=>CR,createPinv:()=>yO,createPlanckCharge:()=>_3,createPlanckConstant:()=>NL,createPlanckLength:()=>b3,createPlanckMass:()=>x3,createPlanckTemperature:()=>A3,createPlanckTime:()=>w3,createPolynomialRoot:()=>I2,createPow:()=>ZC,createPrint:()=>Eg,createPrintTransform:()=>K3,createProd:()=>NC,createProtonMass:()=>ZL,createQr:()=>d2,createQuantileSeq:()=>fv,createQuantileSeqTransform:()=>Y3,createQuantumOfCirculation:()=>QL,createRandom:()=>FR,createRandomInt:()=>BR,createRange:()=>_g,createRangeClass:()=>nE,createRangeNode:()=>QI,createRangeTransform:()=>R3,createRationalize:()=>tL,createRe:()=>DM,createReducedPlanckConstant:()=>FL,createRelationalNode:()=>KI,createReplacer:()=>sL,createReshape:()=>XM,createResize:()=>QM,createResolve:()=>ZR,createResultSet:()=>RS,createReviver:()=>oL,createRightArithShift:()=>bN,createRightLogShift:()=>wN,createRotate:()=>eC,createRotationMatrix:()=>rC,createRound:()=>XC,createRow:()=>Ag,createRowTransform:()=>L3,createRydberg:()=>KL,createSQRT1_2:()=>_L,createSQRT2:()=>AL,createSackurTetrode:()=>p3,createSchur:()=>CO,createSec:()=>WF,createSech:()=>jF,createSecondRadiation:()=>m3,createSetCartesian:()=>nI,createSetDifference:()=>aI,createSetDistinct:()=>sI,createSetIntersect:()=>lI,createSetIsSubset:()=>fI,createSetMultiplicity:()=>mI,createSetPowerset:()=>hI,createSetSize:()=>vI,createSetSymDifference:()=>bI,createSetUnion:()=>wI,createSign:()=>jT,createSimplify:()=>GR,createSimplifyConstant:()=>WR,createSimplifyCore:()=>jR,createSin:()=>JF,createSinh:()=>QF,createSize:()=>aC,createSlu:()=>M2,createSmaller:()=>BN,createSmallerEq:()=>kN,createSolveODE:()=>AC,createSort:()=>zN,createSpaClass:()=>JN,createSparse:()=>oF,createSparseMatrixClass:()=>HE,createSpeedOfLight:()=>ML,createSplitUnit:()=>lT,createSqrt:()=>ZT,createSqrtm:()=>SO,createSquare:()=>XT,createSqueeze:()=>sC,createStd:()=>pv,createStdTransform:()=>H3,createStefanBoltzmann:()=>d3,createStirlingS2:()=>PR,createString:()=>jE,createSubset:()=>Dg,createSubsetTransform:()=>V3,createSubtract:()=>KT,createSubtractScalar:()=>xT,createSum:()=>ov,createSumTransform:()=>W3,createSylvester:()=>TO,createSymbolNode:()=>e2,createSymbolicEqual:()=>XR,createTan:()=>eI,createTanh:()=>tI,createTau:()=>hL,createThomsonCrossSection:()=>e3,createTo:()=>qC,createTrace:()=>NI,createTranspose:()=>fC,createTrue:()=>lL,createTypeOf:()=>UE,createTyped:()=>OS,createUnaryMinus:()=>fT,createUnaryPlus:()=>mT,createUnequal:()=>LN,createUnitClass:()=>rF,createUnitFunction:()=>iF,createUppercaseE:()=>EL,createUppercasePi:()=>SL,createUsolve:()=>fN,createUsolveAll:()=>hN,createVacuumImpedance:()=>kL,createVariance:()=>cv,createVarianceTransform:()=>X3,createVersion:()=>TL,createWeakMixingAngle:()=>t3,createWienDisplacement:()=>h3,createXgcd:()=>tM,createXor:()=>CM,createZeros:()=>hC,createZeta:()=>EC,createZpk2tf:()=>nL});var Mx=Tr(Ih(),1);function M(t,e,r,n){function i(a){var o=yS(a,e.map(Dx));return B7(t,e,a),r(o)}return i.isFactory=!0,i.fn=t,i.dependencies=e.slice().sort(),n&&(i.meta=n),i}function ju(t){return typeof t=="function"&&typeof t.fn=="string"&&Array.isArray(t.dependencies)}function B7(t,e,r){var n=e.filter(a=>!k7(a)).every(a=>r[a]!==void 0);if(!n){var i=e.filter(a=>r[a]===void 0);throw new Error('Cannot create function "'.concat(t,'", ')+"some dependencies are missing: ".concat(i.map(a=>'"'.concat(a,'"')).join(", "),"."))}}function k7(t){return t&&t[0]==="?"}function Dx(t){return t&&t[0]==="?"?t.slice(1):t}function He(t){return typeof t=="boolean"?!0:isFinite(t)?t===Math.round(t):!1}function xi(t,e){if(e.number==="bigint")try{BigInt(t)}catch{return e.numberFallback}return e.number}var Ha=Math.sign||function(t){return t>0?1:t<0?-1:0},SS=Math.log2||function(e){return Math.log(e)/Math.LN2},ES=Math.log10||function(e){return Math.log(e)/Math.LN10},Bh=Math.log1p||function(t){return Math.log(t+1)},TS=Math.cbrt||function(e){if(e===0)return e;var r=e<0,n;return r&&(e=-e),isFinite(e)?(n=Math.exp(Math.log(e)/3),n=(e/(n*n)+2*n)/3):n=e,r?-n:n},MS=Math.expm1||function(e){return e>=2e-4||e<=-2e-4?Math.exp(e)-1:e+e*e/2+e*e*e/6};function Sx(t,e,r){var n={2:"0b",8:"0o",16:"0x"},i=n[e],a="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!He(r))throw new Error("size must be an integer");if(t>2**(r-1)-1||t<-(2**(r-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!He(t))throw new Error("Value must be an integer");t<0&&(t=t+2**r),a="i".concat(r)}var o="";return t<0&&(t=-t,o="-"),"".concat(o).concat(i).concat(t.toString(e)).concat(a)}function go(t,e){if(typeof e=="function")return e(t);if(t===1/0)return"Infinity";if(t===-1/0)return"-Infinity";if(isNaN(t))return"NaN";var{notation:r,precision:n,wordSize:i}=Ex(e);switch(r){case"fixed":return Tx(t,n);case"exponential":return CS(t,n);case"engineering":return P7(t,n);case"bin":return Sx(t,2,i);case"oct":return Sx(t,8,i);case"hex":return Sx(t,16,i);case"auto":return $7(t,n,e).replace(/((\.\d*?)(0+))($|e)/,function(){var a=arguments[2],o=arguments[4];return a!=="."?a+o:o});default:throw new Error('Unknown notation "'+r+'". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.')}}function Ex(t){var e="auto",r,n;if(t!==void 0)if(bt(t))r=t;else if(ot(t))r=t.toNumber();else if(ya(t))t.precision!==void 0&&(r=AS(t.precision,()=>{throw new Error('Option "precision" must be a number or BigNumber')})),t.wordSize!==void 0&&(n=AS(t.wordSize,()=>{throw new Error('Option "wordSize" must be a number or BigNumber')})),t.notation&&(e=t.notation);else throw new Error("Unsupported type of options, number, BigNumber, or object expected");return{notation:e,precision:r,wordSize:n}}function gc(t){var e=String(t).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!e)throw new SyntaxError("Invalid number "+t);var r=e[1],n=e[2],i=parseFloat(e[4]||"0"),a=n.indexOf(".");i+=a!==-1?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(s){return i-=s.length,""}).replace(/0*$/,"").split("").map(function(s){return parseInt(s)});return o.length===0&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}}function P7(t,e){if(isNaN(t)||!isFinite(t))return String(t);var r=gc(t),n=kh(r,e),i=n.exponent,a=n.coefficients,o=i%3===0?i:i<0?i-3-i%3:i-i%3;if(bt(e))for(;e>a.length||i-o+1>a.length;)a.push(0);else for(var s=Math.abs(i-o)-(a.length-1),l=0;l0;)c++,u--;var f=a.slice(c).join(""),m=bt(e)&&f.length||f.match(/[1-9]/)?"."+f:"",p=a.slice(0,c).join("")+m+"e"+(i>=0?"+":"")+o.toString();return n.sign+p}function Tx(t,e){if(isNaN(t)||!isFinite(t))return String(t);var r=gc(t),n=typeof e=="number"?kh(r,r.exponent+1+e):r,i=n.coefficients,a=n.exponent+1,o=a+(e||0);return i.length0?"."+i.join(""):"")+"e"+(a>=0?"+":"")+a}function $7(t,e,r){if(isNaN(t)||!isFinite(t))return String(t);var n=DS(r?.lowerExp,-3),i=DS(r?.upperExp,5),a=gc(t),o=e?kh(a,e):a;if(o.exponent=i)return CS(t,e);var s=o.coefficients,l=o.exponent;s.length0?l:0;return ue){var i=n.splice(e,n.length-e);if(i[0]>=5){var a=e-1;for(n[a]++;n[a]===10;)n.pop(),a===0&&(n.unshift(0),r.exponent++,a++),a--,n[a]++}}return r}function hc(t){for(var e=[],r=0;r2&&arguments[2]!==void 0?arguments[2]:1e-8,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return isNaN(t)||isNaN(e)?!1:!isFinite(t)||!isFinite(e)?t===e:t===e?!0:Math.abs(t-e)<=Math.max(r*Math.max(Math.abs(t),Math.abs(e)),n)}var FS=Math.acosh||function(t){return Math.log(Math.sqrt(t*t-1)+t)},IS=Math.asinh||function(t){return Math.log(Math.sqrt(t*t+1)+t)},BS=Math.atanh||function(t){return Math.log((1+t)/(1-t))/2},Ph=Math.cosh||function(t){return(Math.exp(t)+Math.exp(-t))/2},kS=Math.sinh||function(t){return(Math.exp(t)-Math.exp(-t))/2},$h=Math.tanh||function(t){var e=Math.exp(2*t);return(e-1)/(e+1)};function PS(t,e){var r=t>0?!0:t<0?!1:1/t===1/0,n=e>0?!0:e<0?!1:1/e===1/0;return r^n?-t:t}function AS(t,e){if(bt(t))return t;if(ot(t))return t.toNumber();e()}function DS(t,e){return bt(t)?t:ot(t)?t.toNumber():e}var $S=function(){return $S=Mx.default.create,Mx.default},O7=["?BigNumber","?Complex","?DenseMatrix","?Fraction"],OS=M("typed",O7,function(e){var{BigNumber:r,Complex:n,DenseMatrix:i,Fraction:a}=e,o=$S();return o.clear(),o.addTypes([{name:"number",test:bt},{name:"Complex",test:Hn},{name:"BigNumber",test:ot},{name:"bigint",test:Po},{name:"Fraction",test:ba},{name:"Unit",test:En},{name:"identifier",test:s=>Jr&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(s)},{name:"string",test:Jr},{name:"Chain",test:dc},{name:"Array",test:sr},{name:"Matrix",test:Ye},{name:"DenseMatrix",test:ws},{name:"SparseMatrix",test:xa},{name:"Range",test:tu},{name:"Index",test:$o},{name:"boolean",test:bh},{name:"ResultSet",test:xh},{name:"Help",test:mc},{name:"function",test:wh},{name:"Date",test:_h},{name:"RegExp",test:Ah},{name:"null",test:Dh},{name:"undefined",test:Sh},{name:"AccessorNode",test:$i},{name:"ArrayNode",test:Gn},{name:"AssignmentNode",test:Eh},{name:"BlockNode",test:Th},{name:"ConditionalNode",test:Mh},{name:"ConstantNode",test:kt},{name:"FunctionNode",test:ai},{name:"FunctionAssignmentNode",test:za},{name:"IndexNode",test:Xi},{name:"Node",test:Gt},{name:"ObjectNode",test:Oo},{name:"OperatorNode",test:Rr},{name:"ParenthesisNode",test:Wn},{name:"RangeNode",test:Ch},{name:"RelationalNode",test:Nh},{name:"SymbolNode",test:Mr},{name:"Map",test:ko},{name:"Object",test:ya}]),o.addConversions([{from:"number",to:"BigNumber",convert:function(l){if(r||Oh(l),NS(l)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+l+"). Use function bignumber(x) to convert to BigNumber.");return new r(l)}},{from:"number",to:"Complex",convert:function(l){return n||Rh(l),new n(l,0)}},{from:"BigNumber",to:"Complex",convert:function(l){return n||Rh(l),new n(l.toNumber(),0)}},{from:"bigint",to:"number",convert:function(l){if(l>Number.MAX_SAFE_INTEGER)throw new TypeError("Cannot implicitly convert bigint to number: value exceeds the max safe integer value (value: "+l+")");return Number(l)}},{from:"bigint",to:"BigNumber",convert:function(l){return r||Oh(l),new r(l.toString())}},{from:"bigint",to:"Fraction",convert:function(l){return a||Lh(l),new a(l)}},{from:"Fraction",to:"BigNumber",convert:function(l){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(l){return n||Rh(l),new n(l.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(l){a||Lh(l);var u=new a(l);if(u.valueOf()!==l)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+l+"). Use function fraction(x) to convert to Fraction.");return u}},{from:"string",to:"number",convert:function(l){var u=Number(l);if(isNaN(u))throw new Error('Cannot convert "'+l+'" to a number');return u}},{from:"string",to:"BigNumber",convert:function(l){r||Oh(l);try{return new r(l)}catch{throw new Error('Cannot convert "'+l+'" to BigNumber')}}},{from:"string",to:"bigint",convert:function(l){try{return BigInt(l)}catch{throw new Error('Cannot convert "'+l+'" to BigInt')}}},{from:"string",to:"Fraction",convert:function(l){a||Lh(l);try{return new a(l)}catch{throw new Error('Cannot convert "'+l+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(l){n||Rh(l);try{return new n(l)}catch{throw new Error('Cannot convert "'+l+'" to Complex')}}},{from:"boolean",to:"number",convert:function(l){return+l}},{from:"boolean",to:"BigNumber",convert:function(l){return r||Oh(l),new r(+l)}},{from:"boolean",to:"bigint",convert:function(l){return BigInt(+l)}},{from:"boolean",to:"Fraction",convert:function(l){return a||Lh(l),new a(+l)}},{from:"boolean",to:"string",convert:function(l){return String(l)}},{from:"Array",to:"Matrix",convert:function(l){return i||R7(),new i(l)}},{from:"Matrix",to:"Array",convert:function(l){return l.valueOf()}}]),o.onMismatch=(s,l,u)=>{var c=o.createError(s,l,u);if(["wrongType","mismatch"].includes(c.data.category)&&l.length===1&&rn(l[0])&&u.some(m=>!m.params.includes(","))){var f=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw f.data=c.data,f}throw c},o.onMismatch=(s,l,u)=>{var c=o.createError(s,l,u);if(["wrongType","mismatch"].includes(c.data.category)&&l.length===1&&rn(l[0])&&u.some(m=>!m.params.includes(","))){var f=new TypeError("Function '".concat(s,"' doesn't apply to matrices. To call it ")+"elementwise on a matrix 'M', try 'map(M, ".concat(s,")'."));throw f.data=c.data,f}throw c},o});function Oh(t){throw new Error("Cannot convert value ".concat(t," into a BigNumber: no class 'BigNumber' provided"))}function Rh(t){throw new Error("Cannot convert value ".concat(t," into a Complex number: no class 'Complex' provided"))}function R7(){throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided")}function Lh(t){throw new Error("Cannot convert value ".concat(t," into a Fraction, no class 'Fraction' provided."))}var L7="ResultSet",V7=[],RS=M(L7,V7,()=>{function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return t.prototype.type="ResultSet",t.prototype.isResultSet=!0,t.prototype.valueOf=function(){return this.entries},t.prototype.toString=function(){return"["+this.entries.map(String).join(", ")+"]"},t.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},t.fromJSON=function(e){return new t(e.entries)},t},{isClass:!0});var vc=9e15,au=1e9,Cx="0123456789abcdef",qh="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",zh="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Nx={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-vc,maxE:vc,crypto:!1},qS,As,Qt=!0,Gh="[DecimalError] ",iu=Gh+"Invalid argument: ",zS=Gh+"Precision limit exceeded",HS=Gh+"crypto unavailable",GS="[object Decimal]",wi=Math.floor,Yn=Math.pow,U7=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,q7=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,z7=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,WS=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,vo=1e7,Ot=7,H7=9007199254740991,G7=qh.length-1,Fx=zh.length-1,$e={toStringTag:GS};$e.absoluteValue=$e.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),Ct(t)};$e.ceil=function(){return Ct(new this.constructor(this),this.e+1,2)};$e.clampedTo=$e.clamp=function(t,e){var r,n=this,i=n.constructor;if(t=new i(t),e=new i(e),!t.s||!e.s)return new i(NaN);if(t.gt(e))throw Error(iu+e);return r=n.cmp(t),r<0?t:n.cmp(e)>0?e:new i(n)};$e.comparedTo=$e.cmp=function(t){var e,r,n,i,a=this,o=a.d,s=(t=new a.constructor(t)).d,l=a.s,u=t.s;if(!o||!s)return!l||!u?NaN:l!==u?l:o===s?0:!o^l<0?1:-1;if(!o[0]||!s[0])return o[0]?l:s[0]?-u:0;if(l!==u)return l;if(a.e!==t.e)return a.e>t.e^l<0?1:-1;for(n=o.length,i=s.length,e=0,r=ns[e]^l<0?1:-1;return n===i?0:n>i^l<0?1:-1};$e.cosine=$e.cos=function(){var t,e,r=this,n=r.constructor;return r.d?r.d[0]?(t=n.precision,e=n.rounding,n.precision=t+Math.max(r.e,r.sd())+Ot,n.rounding=1,r=W7(n,XS(n,r)),n.precision=t,n.rounding=e,Ct(As==2||As==3?r.neg():r,t,e,!0)):new n(1):new n(NaN)};$e.cubeRoot=$e.cbrt=function(){var t,e,r,n,i,a,o,s,l,u,c=this,f=c.constructor;if(!c.isFinite()||c.isZero())return new f(c);for(Qt=!1,a=c.s*Yn(c.s*c,1/3),!a||Math.abs(a)==1/0?(r=oi(c.d),t=c.e,(a=(t-r.length+1)%3)&&(r+=a==1||a==-2?"0":"00"),a=Yn(r,1/3),t=wi((t+1)/3)-(t%3==(t<0?-1:2)),a==1/0?r="5e"+t:(r=a.toExponential(),r=r.slice(0,r.indexOf("e")+1)+t),n=new f(r),n.s=c.s):n=new f(a.toString()),o=(t=f.precision)+3;;)if(s=n,l=s.times(s).times(s),u=l.plus(c),n=Zr(u.plus(c).times(s),u.plus(l),o+2,1),oi(s.d).slice(0,o)===(r=oi(n.d)).slice(0,o))if(r=r.slice(o-3,o+1),r=="9999"||!i&&r=="4999"){if(!i&&(Ct(s,t+1,0),s.times(s).times(s).eq(c))){n=s;break}o+=4,i=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(Ct(n,t+1,1),e=!n.times(n).times(n).eq(c));break}return Qt=!0,Ct(n,t,f.rounding,e)};$e.decimalPlaces=$e.dp=function(){var t,e=this.d,r=NaN;if(e){if(t=e.length-1,r=(t-wi(this.e/Ot))*Ot,t=e[t],t)for(;t%10==0;t/=10)r--;r<0&&(r=0)}return r};$e.dividedBy=$e.div=function(t){return Zr(this,new this.constructor(t))};$e.dividedToIntegerBy=$e.divToInt=function(t){var e=this,r=e.constructor;return Ct(Zr(e,new r(t),0,1,1),r.precision,r.rounding)};$e.equals=$e.eq=function(t){return this.cmp(t)===0};$e.floor=function(){return Ct(new this.constructor(this),this.e+1,3)};$e.greaterThan=$e.gt=function(t){return this.cmp(t)>0};$e.greaterThanOrEqualTo=$e.gte=function(t){var e=this.cmp(t);return e==1||e===0};$e.hyperbolicCosine=$e.cosh=function(){var t,e,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(t=Math.ceil(i/3),e=(1/Yh(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),a=yc(o,1,a.times(e),new o(1),!0);for(var l,u=t,c=new o(8);u--;)l=a.times(a),a=s.minus(l.times(c.minus(l.times(c))));return Ct(a,o.precision=r,o.rounding=n,!0)};$e.hyperbolicSine=$e.sinh=function(){var t,e,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(e=a.precision,r=a.rounding,a.precision=e+Math.max(i.e,i.sd())+4,a.rounding=1,n=i.d.length,n<3)i=yc(a,2,i,i,!0);else{t=1.4*Math.sqrt(n),t=t>16?16:t|0,i=i.times(1/Yh(5,t)),i=yc(a,2,i,i,!0);for(var o,s=new a(5),l=new a(16),u=new a(20);t--;)o=i.times(i),i=i.times(s.plus(o.times(l.times(o).plus(u))))}return a.precision=e,a.rounding=r,Ct(i,e,r,!0)};$e.hyperbolicTangent=$e.tanh=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+7,n.rounding=1,Zr(r.sinh(),r.cosh(),n.precision=t,n.rounding=e)):new n(r.s)};$e.inverseCosine=$e.acos=function(){var t=this,e=t.constructor,r=t.abs().cmp(1),n=e.precision,i=e.rounding;return r!==-1?r===0?t.isNeg()?Ro(e,n,i):new e(0):new e(NaN):t.isZero()?Ro(e,n+4,i).times(.5):(e.precision=n+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=n,e.rounding=i,t.times(2))};$e.inverseHyperbolicCosine=$e.acosh=function(){var t,e,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(t=n.precision,e=n.rounding,n.precision=t+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,Qt=!1,r=r.times(r).minus(1).sqrt().plus(r),Qt=!0,n.precision=t,n.rounding=e,r.ln()):new n(r)};$e.inverseHyperbolicSine=$e.asinh=function(){var t,e,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,Qt=!1,r=r.times(r).plus(1).sqrt().plus(r),Qt=!0,n.precision=t,n.rounding=e,r.ln())};$e.inverseHyperbolicTangent=$e.atanh=function(){var t,e,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(t=a.precision,e=a.rounding,n=i.sd(),Math.max(n,t)<2*-i.e-1?Ct(new a(i),t,e,!0):(a.precision=r=n-i.e,i=Zr(i.plus(1),new a(1).minus(i),r+t,1),a.precision=t+4,a.rounding=1,i=i.ln(),a.precision=t,a.rounding=e,i.times(.5))):new a(NaN)};$e.inverseSine=$e.asin=function(){var t,e,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(e=i.abs().cmp(1),r=a.precision,n=a.rounding,e!==-1?e===0?(t=Ro(a,r+4,n).times(.5),t.s=i.s,t):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))};$e.inverseTangent=$e.atan=function(){var t,e,r,n,i,a,o,s,l,u=this,c=u.constructor,f=c.precision,m=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&f+4<=Fx)return o=Ro(c,f+4,m).times(.25),o.s=u.s,o}else{if(!u.s)return new c(NaN);if(f+4<=Fx)return o=Ro(c,f+4,m).times(.5),o.s=u.s,o}for(c.precision=s=f+10,c.rounding=1,r=Math.min(28,s/Ot+2|0),t=r;t;--t)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(Qt=!1,e=Math.ceil(s/Ot),n=1,l=u.times(u),o=new c(u),i=u;t!==-1;)if(i=i.times(l),a=o.minus(i.div(n+=2)),i=i.times(l),o=a.plus(i.div(n+=2)),o.d[e]!==void 0)for(t=e;o.d[t]===a.d[t]&&t--;);return r&&(o=o.times(2<this.d.length-2};$e.isNaN=function(){return!this.s};$e.isNegative=$e.isNeg=function(){return this.s<0};$e.isPositive=$e.isPos=function(){return this.s>0};$e.isZero=function(){return!!this.d&&this.d[0]===0};$e.lessThan=$e.lt=function(t){return this.cmp(t)<0};$e.lessThanOrEqualTo=$e.lte=function(t){return this.cmp(t)<1};$e.logarithm=$e.log=function(t){var e,r,n,i,a,o,s,l,u=this,c=u.constructor,f=c.precision,m=c.rounding,p=5;if(t==null)t=new c(10),e=!0;else{if(t=new c(t),r=t.d,t.s<0||!r||!r[0]||t.eq(1))return new c(NaN);e=t.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new c(r&&!r[0]?-1/0:u.s!=1?NaN:r?0:1/0);if(e)if(r.length>1)a=!0;else{for(i=r[0];i%10===0;)i/=10;a=i!==1}if(Qt=!1,s=f+p,o=nu(u,s),n=e?Hh(c,s+10):nu(t,s),l=Zr(o,n,s,1),Wf(l.d,i=f,m))do if(s+=10,o=nu(u,s),n=e?Hh(c,s+10):nu(t,s),l=Zr(o,n,s,1),!a){+oi(l.d).slice(i+1,i+15)+1==1e14&&(l=Ct(l,f+1,0));break}while(Wf(l.d,i+=10,m));return Qt=!0,Ct(l,f,m)};$e.minus=$e.sub=function(t){var e,r,n,i,a,o,s,l,u,c,f,m,p=this,d=p.constructor;if(t=new d(t),!p.d||!t.d)return!p.s||!t.s?t=new d(NaN):p.d?t.s=-t.s:t=new d(t.d||p.s!==t.s?p:NaN),t;if(p.s!=t.s)return t.s=-t.s,p.plus(t);if(u=p.d,m=t.d,s=d.precision,l=d.rounding,!u[0]||!m[0]){if(m[0])t.s=-t.s;else if(u[0])t=new d(p);else return new d(l===3?-0:0);return Qt?Ct(t,s,l):t}if(r=wi(t.e/Ot),c=wi(p.e/Ot),u=u.slice(),a=c-r,a){for(f=a<0,f?(e=u,a=-a,o=m.length):(e=m,r=c,o=u.length),n=Math.max(Math.ceil(s/Ot),o)+2,a>n&&(a=n,e.length=1),e.reverse(),n=a;n--;)e.push(0);e.reverse()}else{for(n=u.length,o=m.length,f=n0;--n)u[o++]=0;for(n=m.length;n>a;){if(u[--n]o?a+1:o+1,i>o&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(o=u.length,i=c.length,o-i<0&&(i=o,r=c,c=u,u=r),e=0;i;)e=(u[--i]=u[i]+c[i]+e)/vo|0,u[i]%=vo;for(e&&(u.unshift(e),++n),o=u.length;u[--o]==0;)u.pop();return t.d=u,t.e=Wh(u,n),Qt?Ct(t,s,l):t};$e.precision=$e.sd=function(t){var e,r=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(iu+t);return r.d?(e=YS(r.d),t&&r.e+1>e&&(e=r.e+1)):e=NaN,e};$e.round=function(){var t=this,e=t.constructor;return Ct(new e(t),t.e+1,e.rounding)};$e.sine=$e.sin=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+Math.max(r.e,r.sd())+Ot,n.rounding=1,r=j7(n,XS(n,r)),n.precision=t,n.rounding=e,Ct(As>2?r.neg():r,t,e,!0)):new n(NaN)};$e.squareRoot=$e.sqrt=function(){var t,e,r,n,i,a,o=this,s=o.d,l=o.e,u=o.s,c=o.constructor;if(u!==1||!s||!s[0])return new c(!u||u<0&&(!s||s[0])?NaN:s?o:1/0);for(Qt=!1,u=Math.sqrt(+o),u==0||u==1/0?(e=oi(s),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=wi((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),n=new c(e)):n=new c(u.toString()),r=(l=c.precision)+3;;)if(a=n,n=a.plus(Zr(o,a,r+2,1)).times(.5),oi(a.d).slice(0,r)===(e=oi(n.d)).slice(0,r))if(e=e.slice(r-3,r+1),e=="9999"||!i&&e=="4999"){if(!i&&(Ct(a,l+1,0),a.times(a).eq(o))){n=a;break}r+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Ct(n,l+1,1),t=!n.times(n).eq(o));break}return Qt=!0,Ct(n,l,c.rounding,t)};$e.tangent=$e.tan=function(){var t,e,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(t=n.precision,e=n.rounding,n.precision=t+10,n.rounding=1,r=r.sin(),r.s=1,r=Zr(r,new n(1).minus(r.times(r)).sqrt(),t+10,0),n.precision=t,n.rounding=e,Ct(As==2||As==4?r.neg():r,t,e,!0)):new n(NaN)};$e.times=$e.mul=function(t){var e,r,n,i,a,o,s,l,u,c=this,f=c.constructor,m=c.d,p=(t=new f(t)).d;if(t.s*=c.s,!m||!m[0]||!p||!p[0])return new f(!t.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?t.s/0:t.s*0);for(r=wi(c.e/Ot)+wi(t.e/Ot),l=m.length,u=p.length,l=0;){for(e=0,i=l+n;i>n;)s=a[i]+p[n]*m[i-n-1]+e,a[i--]=s%vo|0,e=s/vo|0;a[i]=(a[i]+e)%vo|0}for(;!a[--o];)a.pop();return e?++r:a.shift(),t.d=a,t.e=Wh(a,r),Qt?Ct(t,f.precision,f.rounding):t};$e.toBinary=function(t,e){return Bx(this,2,t,e)};$e.toDecimalPlaces=$e.toDP=function(t,e){var r=this,n=r.constructor;return r=new n(r),t===void 0?r:(Ki(t,0,au),e===void 0?e=n.rounding:Ki(e,0,8),Ct(r,t+r.e+1,e))};$e.toExponential=function(t,e){var r,n=this,i=n.constructor;return t===void 0?r=Lo(n,!0):(Ki(t,0,au),e===void 0?e=i.rounding:Ki(e,0,8),n=Ct(new i(n),t+1,e),r=Lo(n,!0,t+1)),n.isNeg()&&!n.isZero()?"-"+r:r};$e.toFixed=function(t,e){var r,n,i=this,a=i.constructor;return t===void 0?r=Lo(i):(Ki(t,0,au),e===void 0?e=a.rounding:Ki(e,0,8),n=Ct(new a(i),t+i.e+1,e),r=Lo(n,!1,t+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r};$e.toFraction=function(t){var e,r,n,i,a,o,s,l,u,c,f,m,p=this,d=p.d,h=p.constructor;if(!d)return new h(p);if(u=r=new h(1),n=l=new h(0),e=new h(n),a=e.e=YS(d)-p.e-1,o=a%Ot,e.d[0]=Yn(10,o<0?Ot+o:o),t==null)t=a>0?e:u;else{if(s=new h(t),!s.isInt()||s.lt(u))throw Error(iu+s);t=s.gt(e)?a>0?e:u:s}for(Qt=!1,s=new h(oi(d)),c=h.precision,h.precision=a=d.length*Ot*2;f=Zr(s,e,0,1,1),i=r.plus(f.times(n)),i.cmp(t)!=1;)r=n,n=i,i=u,u=l.plus(f.times(i)),l=i,i=e,e=s.minus(f.times(i)),s=i;return i=Zr(t.minus(r),n,0,1,1),l=l.plus(i.times(u)),r=r.plus(i.times(n)),l.s=u.s=p.s,m=Zr(u,n,a,1).minus(p).abs().cmp(Zr(l,r,a,1).minus(p).abs())<1?[u,n]:[l,r],h.precision=c,Qt=!0,m};$e.toHexadecimal=$e.toHex=function(t,e){return Bx(this,16,t,e)};$e.toNearest=function(t,e){var r=this,n=r.constructor;if(r=new n(r),t==null){if(!r.d)return r;t=new n(1),e=n.rounding}else{if(t=new n(t),e===void 0?e=n.rounding:Ki(e,0,8),!r.d)return t.s?r:t;if(!t.d)return t.s&&(t.s=r.s),t}return t.d[0]?(Qt=!1,r=Zr(r,t,0,e,1).times(t),Qt=!0,Ct(r)):(t.s=r.s,r=t),r};$e.toNumber=function(){return+this};$e.toOctal=function(t,e){return Bx(this,8,t,e)};$e.toPower=$e.pow=function(t){var e,r,n,i,a,o,s=this,l=s.constructor,u=+(t=new l(t));if(!s.d||!t.d||!s.d[0]||!t.d[0])return new l(Yn(+s,u));if(s=new l(s),s.eq(1))return s;if(n=l.precision,a=l.rounding,t.eq(1))return Ct(s,n,a);if(e=wi(t.e/Ot),e>=t.d.length-1&&(r=u<0?-u:u)<=H7)return i=jS(l,s,r,n),t.s<0?new l(1).div(i):Ct(i,n,a);if(o=s.s,o<0){if(el.maxE+1||e0?o/0:0):(Qt=!1,l.rounding=s.s=1,r=Math.min(12,(e+"").length),i=Ix(t.times(nu(s,n+r)),n),i.d&&(i=Ct(i,n+5,1),Wf(i.d,n,a)&&(e=n+10,i=Ct(Ix(t.times(nu(s,e+r)),e),e+5,1),+oi(i.d).slice(n+1,n+15)+1==1e14&&(i=Ct(i,n+1,0)))),i.s=o,Qt=!0,l.rounding=a,Ct(i,n,a))};$e.toPrecision=function(t,e){var r,n=this,i=n.constructor;return t===void 0?r=Lo(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ki(t,1,au),e===void 0?e=i.rounding:Ki(e,0,8),n=Ct(new i(n),t,e),r=Lo(n,t<=n.e||n.e<=i.toExpNeg,t)),n.isNeg()&&!n.isZero()?"-"+r:r};$e.toSignificantDigits=$e.toSD=function(t,e){var r=this,n=r.constructor;return t===void 0?(t=n.precision,e=n.rounding):(Ki(t,1,au),e===void 0?e=n.rounding:Ki(e,0,8)),Ct(new n(r),t,e)};$e.toString=function(){var t=this,e=t.constructor,r=Lo(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+r:r};$e.truncated=$e.trunc=function(){return Ct(new this.constructor(this),this.e+1,1)};$e.valueOf=$e.toJSON=function(){var t=this,e=t.constructor,r=Lo(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+r:r};function oi(t){var e,r,n,i=t.length-1,a="",o=t[0];if(i>0){for(a+=o,e=1;er)throw Error(iu+t)}function Wf(t,e,r,n){var i,a,o,s;for(a=t[0];a>=10;a/=10)--e;return--e<0?(e+=Ot,i=0):(i=Math.ceil((e+1)/Ot),e%=Ot),a=Yn(10,Ot-e),s=t[i]%a|0,n==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),o=r<4&&s==99999||r>3&&s==49999||s==5e4||s==0):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(t[i+1]/a/100|0)==Yn(10,e-2)-1||(s==a/2||s==0)&&(t[i+1]/a/100|0)==0:e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),o=(n||r<4)&&s==9999||!n&&r>3&&s==4999):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(t[i+1]/a/1e3|0)==Yn(10,e-3)-1,o}function Vh(t,e,r){for(var n,i=[0],a,o=0,s=t.length;or-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/r|0,i[n]%=r)}return i.reverse()}function W7(t,e){var r,n,i;if(e.isZero())return e;n=e.d.length,n<32?(r=Math.ceil(n/3),i=(1/Yh(4,r)).toString()):(r=16,i="2.3283064365386962890625e-10"),t.precision+=r,e=yc(t,1,e.times(i),new t(1));for(var a=r;a--;){var o=e.times(e);e=o.times(o).minus(o).times(8).plus(1)}return t.precision-=r,e}var Zr=function(){function t(n,i,a){var o,s=0,l=n.length;for(n=n.slice();l--;)o=n[l]*i+s,n[l]=o%a|0,s=o/a|0;return s&&n.unshift(s),n}function e(n,i,a,o){var s,l;if(a!=o)l=a>o?1:-1;else for(s=l=0;si[s]?1:-1;break}return l}function r(n,i,a,o){for(var s=0;a--;)n[a]-=s,s=n[a]1;)n.shift()}return function(n,i,a,o,s,l){var u,c,f,m,p,d,h,b,y,D,v,A,w,x,E,T,_,C,N,I,R=n.constructor,L=n.s==i.s?1:-1,V=n.d,P=i.d;if(!V||!V[0]||!P||!P[0])return new R(!n.s||!i.s||(V?P&&V[0]==P[0]:!P)?NaN:V&&V[0]==0||!P?L*0:L/0);for(l?(p=1,c=n.e-i.e):(l=vo,p=Ot,c=wi(n.e/p)-wi(i.e/p)),N=P.length,_=V.length,y=new R(L),D=y.d=[],f=0;P[f]==(V[f]||0);f++);if(P[f]>(V[f]||0)&&c--,a==null?(x=a=R.precision,o=R.rounding):s?x=a+(n.e-i.e)+1:x=a,x<0)D.push(1),d=!0;else{if(x=x/p+2|0,f=0,N==1){for(m=0,P=P[0],x++;(f<_||m)&&x--;f++)E=m*l+(V[f]||0),D[f]=E/P|0,m=E%P|0;d=m||f<_}else{for(m=l/(P[0]+1)|0,m>1&&(P=t(P,m,l),V=t(V,m,l),N=P.length,_=V.length),T=N,v=V.slice(0,N),A=v.length;A=l/2&&++C;do m=0,u=e(P,v,N,A),u<0?(w=v[0],N!=A&&(w=w*l+(v[1]||0)),m=w/C|0,m>1?(m>=l&&(m=l-1),h=t(P,m,l),b=h.length,A=v.length,u=e(h,v,b,A),u==1&&(m--,r(h,N=10;m/=10)f++;y.e=f+c*p-1,Ct(y,s?a+y.e+1:a,o,d)}return y}}();function Ct(t,e,r,n){var i,a,o,s,l,u,c,f,m,p=t.constructor;e:if(e!=null){if(f=t.d,!f)return t;for(i=1,s=f[0];s>=10;s/=10)i++;if(a=e-i,a<0)a+=Ot,o=e,c=f[m=0],l=c/Yn(10,i-o-1)%10|0;else if(m=Math.ceil((a+1)/Ot),s=f.length,m>=s)if(n){for(;s++<=m;)f.push(0);c=l=0,i=1,a%=Ot,o=a-Ot+1}else break e;else{for(c=s=f[m],i=1;s>=10;s/=10)i++;a%=Ot,o=a-Ot+i,l=o<0?0:c/Yn(10,i-o-1)%10|0}if(n=n||e<0||f[m+1]!==void 0||(o<0?c:c%Yn(10,i-o-1)),u=r<4?(l||n)&&(r==0||r==(t.s<0?3:2)):l>5||l==5&&(r==4||n||r==6&&(a>0?o>0?c/Yn(10,i-o):0:f[m-1])%10&1||r==(t.s<0?8:7)),e<1||!f[0])return f.length=0,u?(e-=t.e+1,f[0]=Yn(10,(Ot-e%Ot)%Ot),t.e=-e||0):f[0]=t.e=0,t;if(a==0?(f.length=m,s=1,m--):(f.length=m+1,s=Yn(10,Ot-a),f[m]=o>0?(c/Yn(10,i-o)%Yn(10,o)|0)*s:0),u)for(;;)if(m==0){for(a=1,o=f[0];o>=10;o/=10)a++;for(o=f[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(t.e++,f[0]==vo&&(f[0]=1));break}else{if(f[m]+=s,f[m]!=vo)break;f[m--]=0,s=1}for(a=f.length;f[--a]===0;)f.pop()}return Qt&&(t.e>p.maxE?(t.d=null,t.e=NaN):t.e0?a=a.charAt(0)+"."+a.slice(1)+ru(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(t.e<0?"e":"e+")+t.e):i<0?(a="0."+ru(-i-1)+a,r&&(n=r-o)>0&&(a+=ru(n))):i>=o?(a+=ru(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+ru(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=ru(n))),a}function Wh(t,e){var r=t[0];for(e*=Ot;r>=10;r/=10)e++;return e}function Hh(t,e,r){if(e>G7)throw Qt=!0,r&&(t.precision=r),Error(zS);return Ct(new t(qh),e,1,!0)}function Ro(t,e,r){if(e>Fx)throw Error(zS);return Ct(new t(zh),e,r,!0)}function YS(t){var e=t.length-1,r=e*Ot+1;if(e=t[e],e){for(;e%10==0;e/=10)r--;for(e=t[0];e>=10;e/=10)r++}return r}function ru(t){for(var e="";t--;)e+="0";return e}function jS(t,e,r,n){var i,a=new t(1),o=Math.ceil(n/Ot+4);for(Qt=!1;;){if(r%2&&(a=a.times(e),VS(a.d,o)&&(i=!0)),r=wi(r/2),r===0){r=a.d.length-1,i&&a.d[r]===0&&++a.d[r];break}e=e.times(e),VS(e.d,o)}return Qt=!0,a}function LS(t){return t.d[t.d.length-1]&1}function ZS(t,e,r){for(var n,i,a=new t(e[0]),o=0;++o17)return new m(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(Qt=!1,l=d):l=e,s=new m(.03125);t.e>-2;)t=t.times(s),f+=5;for(n=Math.log(Yn(2,f))/Math.LN10*2+5|0,l+=n,r=a=o=new m(1),m.precision=l;;){if(a=Ct(a.times(t),l,1),r=r.times(++c),s=o.plus(Zr(a,r,l,1)),oi(s.d).slice(0,l)===oi(o.d).slice(0,l)){for(i=f;i--;)o=Ct(o.times(o),l,1);if(e==null)if(u<3&&Wf(o.d,l-n,p,u))m.precision=l+=10,r=a=s=new m(1),c=0,u++;else return Ct(o,m.precision=d,p,Qt=!0);else return m.precision=d,o}o=s}}function nu(t,e){var r,n,i,a,o,s,l,u,c,f,m,p=1,d=10,h=t,b=h.d,y=h.constructor,D=y.rounding,v=y.precision;if(h.s<0||!b||!b[0]||!h.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:h.s!=1?NaN:b?0:h);if(e==null?(Qt=!1,c=v):c=e,y.precision=c+=d,r=oi(b),n=r.charAt(0),Math.abs(a=h.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)h=h.times(t),r=oi(h.d),n=r.charAt(0),p++;a=h.e,n>1?(h=new y("0."+r),a++):h=new y(n+"."+r.slice(1))}else return u=Hh(y,c+2,v).times(a+""),h=nu(new y(n+"."+r.slice(1)),c-d).plus(u),y.precision=v,e==null?Ct(h,v,D,Qt=!0):h;for(f=h,l=o=h=Zr(h.minus(1),h.plus(1),c,1),m=Ct(h.times(h),c,1),i=3;;){if(o=Ct(o.times(m),c,1),u=l.plus(Zr(o,new y(i),c,1)),oi(u.d).slice(0,c)===oi(l.d).slice(0,c))if(l=l.times(2),a!==0&&(l=l.plus(Hh(y,c+2,v).times(a+""))),l=Zr(l,new y(p),c,1),e==null)if(Wf(l.d,c-d,D,s))y.precision=c+=d,u=o=h=Zr(f.minus(1),f.plus(1),c,1),m=Ct(h.times(h),c,1),i=s=1;else return Ct(l,y.precision=v,D,Qt=!0);else return y.precision=v,l;l=u,i+=2}}function JS(t){return String(t.s*t.s/0)}function Uh(t,e){var r,n,i;for((r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,t.e=r=r-n-1,t.d=[],n=(r+1)%Ot,r<0&&(n+=Ot),nt.constructor.maxE?(t.d=null,t.e=NaN):t.e-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),WS.test(e))return Uh(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(q7.test(e))r=16,e=e.toLowerCase();else if(U7.test(e))r=2;else if(z7.test(e))r=8;else throw Error(iu+e);for(a=e.search(/p/i),a>0?(l=+e.slice(a+1),e=e.substring(2,a)):e=e.slice(2),a=e.indexOf("."),o=a>=0,n=t.constructor,o&&(e=e.replace(".",""),s=e.length,a=s-a,i=jS(n,new n(r),a,a*2)),u=Vh(e,r,vo),c=u.length-1,a=c;u[a]===0;--a)u.pop();return a<0?new n(t.s*0):(t.e=Wh(u,c),t.d=u,Qt=!1,o&&(t=Zr(t,i,s*4)),l&&(t=t.times(Math.abs(l)<54?Yn(2,l):Yf.pow(2,l))),Qt=!0,t)}function j7(t,e){var r,n=e.d.length;if(n<3)return e.isZero()?e:yc(t,2,e,e);r=1.4*Math.sqrt(n),r=r>16?16:r|0,e=e.times(1/Yh(5,r)),e=yc(t,2,e,e);for(var i,a=new t(5),o=new t(16),s=new t(20);r--;)i=e.times(e),e=e.times(a.plus(i.times(o.times(i).minus(s))));return e}function yc(t,e,r,n,i){var a,o,s,l,u=1,c=t.precision,f=Math.ceil(c/Ot);for(Qt=!1,l=r.times(r),s=new t(n);;){if(o=Zr(s.times(l),new t(e++*e++),c,1),s=i?n.plus(o):n.minus(o),n=Zr(o.times(l),new t(e++*e++),c,1),o=s.plus(n),o.d[f]!==void 0){for(a=f;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=n,n=o,o=a,u++}return Qt=!0,o.d.length=f+1,o}function Yh(t,e){for(var r=t;--e;)r*=t;return r}function XS(t,e){var r,n=e.s<0,i=Ro(t,t.precision,1),a=i.times(.5);if(e=e.abs(),e.lte(a))return As=n?4:1,e;if(r=e.divToInt(i),r.isZero())As=n?3:2;else{if(e=e.minus(r.times(i)),e.lte(a))return As=LS(r)?n?2:3:n?4:1,e;As=LS(r)?n?1:4:n?3:2}return e.minus(i).abs()}function Bx(t,e,r,n){var i,a,o,s,l,u,c,f,m,p=t.constructor,d=r!==void 0;if(d?(Ki(r,1,au),n===void 0?n=p.rounding:Ki(n,0,8)):(r=p.precision,n=p.rounding),!t.isFinite())c=JS(t);else{for(c=Lo(t),o=c.indexOf("."),d?(i=2,e==16?r=r*4-3:e==8&&(r=r*3-2)):i=e,o>=0&&(c=c.replace(".",""),m=new p(1),m.e=c.length-o,m.d=Vh(Lo(m),10,i),m.e=m.d.length),f=Vh(c,10,i),a=l=f.length;f[--l]==0;)f.pop();if(!f[0])c=d?"0p+0":"0";else{if(o<0?a--:(t=new p(t),t.d=f,t.e=a,t=Zr(t,m,r,n,0,i),f=t.d,a=t.e,u=qS),o=f[r],s=i/2,u=u||f[r+1]!==void 0,u=n<4?(o!==void 0||u)&&(n===0||n===(t.s<0?3:2)):o>s||o===s&&(n===4||u||n===6&&f[r-1]&1||n===(t.s<0?8:7)),f.length=r,u)for(;++f[--r]>i-1;)f[r]=0,r||(++a,f.unshift(1));for(l=f.length;!f[l-1];--l);for(o=0,c="";o1)if(e==16||e==8){for(o=e==16?4:3,--l;l%o;l++)c+="0";for(f=Vh(c,i,e),l=f.length;!f[l-1];--l);for(o=1,c="1.";ol)for(a-=l;a--;)c+="0";else ae)return t.length=e,!0}function Z7(t){return new this(t).abs()}function J7(t){return new this(t).acos()}function X7(t){return new this(t).acosh()}function Q7(t,e){return new this(t).plus(e)}function K7(t){return new this(t).asin()}function eH(t){return new this(t).asinh()}function tH(t){return new this(t).atan()}function rH(t){return new this(t).atanh()}function nH(t,e){t=new this(t),e=new this(e);var r,n=this.precision,i=this.rounding,a=n+4;return!t.s||!e.s?r=new this(NaN):!t.d&&!e.d?(r=Ro(this,a,1).times(e.s>0?.25:.75),r.s=t.s):!e.d||t.isZero()?(r=e.s<0?Ro(this,n,i):new this(0),r.s=t.s):!t.d||e.isZero()?(r=Ro(this,a,1).times(.5),r.s=t.s):e.s<0?(this.precision=a,this.rounding=1,r=this.atan(Zr(t,e,a,1)),e=Ro(this,a,1),this.precision=n,this.rounding=i,r=t.s<0?r.minus(e):r.plus(e)):r=this.atan(Zr(t,e,a,1)),r}function iH(t){return new this(t).cbrt()}function aH(t){return Ct(t=new this(t),t.e+1,2)}function oH(t,e,r){return new this(t).clamp(e,r)}function sH(t){if(!t||typeof t!="object")throw Error(Gh+"Object expected");var e,r,n,i=t.defaults===!0,a=["precision",1,au,"rounding",0,8,"toExpNeg",-vc,0,"toExpPos",0,vc,"maxE",0,vc,"minE",-vc,0,"modulo",0,9];for(e=0;e=a[e+1]&&n<=a[e+2])this[r]=n;else throw Error(iu+r+": "+n);if(r="crypto",i&&(this[r]=Nx[r]),(n=t[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(HS);else this[r]=!1;else throw Error(iu+r+": "+n);return this}function uH(t){return new this(t).cos()}function lH(t){return new this(t).cosh()}function QS(t){var e,r,n;function i(a){var o,s,l,u=this;if(!(u instanceof i))return new i(a);if(u.constructor=i,US(a)){u.s=a.s,Qt?!a.d||a.e>i.maxE?(u.e=NaN,u.d=null):a.e=10;s/=10)o++;Qt?o>i.maxE?(u.e=NaN,u.d=null):o=429e7?e[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(e,a):(s.push(i%1e7),a+=4);a=n/4}else throw Error(HS);else for(;a=10;i/=10)n++;n{var{on:e,config:r}=t,n=Zu.clone({precision:r.precision,modulo:Zu.EUCLID});return n.prototype=Object.create(n.prototype),n.prototype.type="BigNumber",n.prototype.isBigNumber=!0,n.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},n.fromJSON=function(i){return new n(i.value)},e&&e("config",function(i,a){i.precision!==a.precision&&n.config({precision:i.precision})}),n},{isClass:!0});var _i=Math.cosh||function(t){return Math.abs(t)<1e-9?1-t:(Math.exp(t)+Math.exp(-t))*.5},Ga=Math.sinh||function(t){return Math.abs(t)<1e-9?t:(Math.exp(t)-Math.exp(-t))*.5},$H=function(t){let e=Math.PI/4;if(-e>t||t>e)return Math.cos(t)-1;let r=t*t;return r*(r*(r*(r*(r*(r*(r*(r/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},kx=function(t,e){return t=Math.abs(t),e=Math.abs(e),t0&&bc();break;case"number":r.im=0,r.re=t;break;default:bc()}return isNaN(r.re)||isNaN(r.im),r};function Fe(t,e){if(!(this instanceof Fe))return new Fe(t,e);let r=Ju(t,e);this.re=r.re,this.im=r.im}Fe.prototype={re:0,im:0,sign:function(){let t=kx(this.re,this.im);return new Fe(this.re/t,this.im/t)},add:function(t,e){let r=Ju(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?Fe.NAN:Fe.INFINITY:new Fe(this.re+r.re,this.im+r.im)},sub:function(t,e){let r=Ju(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im));return n||i?n&&i?Fe.NAN:Fe.INFINITY:new Fe(this.re-r.re,this.im-r.im)},mul:function(t,e){let r=Ju(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),a=this.re===0&&this.im===0,o=r.re===0&&r.im===0;return n&&o||i&&a?Fe.NAN:n||i?Fe.INFINITY:r.im===0&&this.im===0?new Fe(this.re*r.re,0):new Fe(this.re*r.re-this.im*r.im,this.re*r.im+this.im*r.re)},div:function(t,e){let r=Ju(t,e),n=this.isInfinite(),i=!(isFinite(r.re)&&isFinite(r.im)),a=this.re===0&&this.im===0,o=r.re===0&&r.im===0;if(a&&o||n&&i)return Fe.NAN;if(o||n)return Fe.INFINITY;if(a||i)return Fe.ZERO;if(r.im===0)return new Fe(this.re/r.re,this.im/r.re);if(Math.abs(r.re)0)return new Fe(Math.pow(this.re,r.re),0);if(this.re===0)switch((r.re%4+4)%4){case 0:return new Fe(Math.pow(this.im,r.re),0);case 1:return new Fe(0,Math.pow(this.im,r.re));case 2:return new Fe(-Math.pow(this.im,r.re),0);case 3:return new Fe(0,-Math.pow(this.im,r.re))}}if(n&&r.re>0)return Fe.ZERO;let a=Math.atan2(this.im,this.re),o=Px(this.re,this.im),s=Math.exp(r.re*o-r.im*a),l=r.im*o+r.re*a;return new Fe(s*Math.cos(l),s*Math.sin(l))},sqrt:function(){let t=this.re,e=this.im;if(e===0)return t>=0?new Fe(Math.sqrt(t),0):new Fe(0,Math.sqrt(-t));let r=kx(t,e),n=Math.sqrt(.5*(r+Math.abs(t))),i=Math.abs(e)/(2*n);return t>=0?new Fe(n,e<0?-i:i):new Fe(i,e<0?-n:n)},exp:function(){let t=Math.exp(this.re);return this.im===0?new Fe(t,0):new Fe(t*Math.cos(this.im),t*Math.sin(this.im))},expm1:function(){let t=this.re,e=this.im;return new Fe(Math.expm1(t)*Math.cos(e)+$H(e),Math.exp(t)*Math.sin(e))},log:function(){let t=this.re,e=this.im;return e===0&&t>0?new Fe(Math.log(t),0):new Fe(Px(t,e),Math.atan2(e,t))},abs:function(){return kx(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let t=this.re,e=this.im;return new Fe(Math.sin(t)*_i(e),Math.cos(t)*Ga(e))},cos:function(){let t=this.re,e=this.im;return new Fe(Math.cos(t)*_i(e),-Math.sin(t)*Ga(e))},tan:function(){let t=2*this.re,e=2*this.im,r=Math.cos(t)+_i(e);return new Fe(Math.sin(t)/r,Ga(e)/r)},cot:function(){let t=2*this.re,e=2*this.im,r=Math.cos(t)-_i(e);return new Fe(-Math.sin(t)/r,Ga(e)/r)},sec:function(){let t=this.re,e=this.im,r=.5*_i(2*e)+.5*Math.cos(2*t);return new Fe(Math.cos(t)*_i(e)/r,Math.sin(t)*Ga(e)/r)},csc:function(){let t=this.re,e=this.im,r=.5*_i(2*e)-.5*Math.cos(2*t);return new Fe(Math.sin(t)*_i(e)/r,-Math.cos(t)*Ga(e)/r)},asin:function(){let t=this.re,e=this.im,r=new Fe(e*e-t*t+1,-2*t*e).sqrt(),n=new Fe(r.re-e,r.im+t).log();return new Fe(n.im,-n.re)},acos:function(){let t=this.re,e=this.im,r=new Fe(e*e-t*t+1,-2*t*e).sqrt(),n=new Fe(r.re-e,r.im+t).log();return new Fe(Math.PI/2-n.im,n.re)},atan:function(){let t=this.re,e=this.im;if(t===0){if(e===1)return new Fe(0,1/0);if(e===-1)return new Fe(0,-1/0)}let r=t*t+(1-e)*(1-e),n=new Fe((1-e*e-t*t)/r,-2*t/r).log();return new Fe(-.5*n.im,.5*n.re)},acot:function(){let t=this.re,e=this.im;if(e===0)return new Fe(Math.atan2(1,t),0);let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).atan():new Fe(t!==0?t/0:0,e!==0?-e/0:0).atan()},asec:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Fe(0,1/0);let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).acos():new Fe(t!==0?t/0:0,e!==0?-e/0:0).acos()},acsc:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Fe(Math.PI/2,1/0);let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).asin():new Fe(t!==0?t/0:0,e!==0?-e/0:0).asin()},sinh:function(){let t=this.re,e=this.im;return new Fe(Ga(t)*Math.cos(e),_i(t)*Math.sin(e))},cosh:function(){let t=this.re,e=this.im;return new Fe(_i(t)*Math.cos(e),Ga(t)*Math.sin(e))},tanh:function(){let t=2*this.re,e=2*this.im,r=_i(t)+Math.cos(e);return new Fe(Ga(t)/r,Math.sin(e)/r)},coth:function(){let t=2*this.re,e=2*this.im,r=_i(t)-Math.cos(e);return new Fe(Ga(t)/r,-Math.sin(e)/r)},csch:function(){let t=this.re,e=this.im,r=Math.cos(2*e)-_i(2*t);return new Fe(-2*Ga(t)*Math.cos(e)/r,2*_i(t)*Math.sin(e)/r)},sech:function(){let t=this.re,e=this.im,r=Math.cos(2*e)+_i(2*t);return new Fe(2*_i(t)*Math.cos(e)/r,-2*Ga(t)*Math.sin(e)/r)},asinh:function(){let t=this.im;this.im=-this.re,this.re=t;let e=this.asin();return this.re=-this.im,this.im=t,t=e.re,e.re=-e.im,e.im=t,e},acosh:function(){let t=this.acos();if(t.im<=0){let e=t.re;t.re=-t.im,t.im=e}else{let e=t.im;t.im=-t.re,t.re=e}return t},atanh:function(){let t=this.re,e=this.im,r=t>1&&e===0,n=1-t,i=1+t,a=n*n+e*e,o=a!==0?new Fe((i*n-e*e)/a,(e*n+i*e)/a):new Fe(t!==-1?t/0:0,e!==0?e/0:0),s=o.re;return o.re=Px(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,r&&(o.im=-o.im),o},acoth:function(){let t=this.re,e=this.im;if(t===0&&e===0)return new Fe(0,Math.PI/2);let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).atanh():new Fe(t!==0?t/0:0,e!==0?-e/0:0).atanh()},acsch:function(){let t=this.re,e=this.im;if(e===0)return new Fe(t!==0?Math.log(t+Math.sqrt(t*t+1)):1/0,0);let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).asinh():new Fe(t!==0?t/0:0,e!==0?-e/0:0).asinh()},asech:function(){let t=this.re,e=this.im;if(this.isZero())return Fe.INFINITY;let r=t*t+e*e;return r!==0?new Fe(t/r,-e/r).acosh():new Fe(t!==0?t/0:0,e!==0?-e/0:0).acosh()},inverse:function(){if(this.isZero())return Fe.INFINITY;if(this.isInfinite())return Fe.ZERO;let t=this.re,e=this.im,r=t*t+e*e;return new Fe(t/r,-e/r)},conjugate:function(){return new Fe(this.re,-this.im)},neg:function(){return new Fe(-this.re,-this.im)},ceil:function(t){return t=Math.pow(10,t||0),new Fe(Math.ceil(this.re*t)/t,Math.ceil(this.im*t)/t)},floor:function(t){return t=Math.pow(10,t||0),new Fe(Math.floor(this.re*t)/t,Math.floor(this.im*t)/t)},round:function(t){return t=Math.pow(10,t||0),new Fe(Math.round(this.re*t)/t,Math.round(this.im*t)/t)},equals:function(t,e){let r=Ju(t,e);return Math.abs(r.re-this.re)<=Fe.EPSILON&&Math.abs(r.im-this.im)<=Fe.EPSILON},clone:function(){return new Fe(this.re,this.im)},toString:function(){let t=this.re,e=this.im,r="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(t)(Object.defineProperty(Fe,"name",{value:"Complex"}),Fe.prototype.constructor=Fe,Fe.prototype.type="Complex",Fe.prototype.isComplex=!0,Fe.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},Fe.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},Fe.prototype.format=function(t){var e="",r=this.im,n=this.re,i=go(this.re,t),a=go(this.im,t),o=bt(t)?t:t?t.precision:null;if(o!==null){var s=Math.pow(10,-o);Math.abs(n/r)e.re?1:t.ree.im?1:t.im"u"&&(BigInt=function(t){if(isNaN(t))throw new Error("");return t});var Nt=BigInt(0),ur=BigInt(1),jf=BigInt(2),$x=BigInt(5),ea=BigInt(10),VH=2e3,nt={s:ur,n:Nt,d:ur};function Ds(t,e){try{t=BigInt(t)}catch{throw ou()}return t*e}function yo(t){return typeof t=="bigint"?t:Math.floor(t)}function cn(t,e){if(e===Nt)throw Ox();let r=Object.create(wa.prototype);r.s=t1&&(e[r]=(e[r]||Nt)+ur):e[t]=(e[t]||Nt)+ur,e}var ti=function(t,e){let r=Nt,n=ur,i=ur;if(t!=null)if(e!==void 0){if(typeof t=="bigint")r=t;else{if(isNaN(t))throw ou();if(t%1!==0)throw tE();r=BigInt(t)}if(typeof e=="bigint")n=e;else{if(isNaN(e))throw ou();if(e%1!==0)throw tE();n=BigInt(e)}i=r*n}else if(typeof t=="object"){if("d"in t&&"n"in t)r=BigInt(t.n),n=BigInt(t.d),"s"in t&&(r*=BigInt(t.s));else if(0 in t)r=BigInt(t[0]),1 in t&&(n=BigInt(t[1]));else if(typeof t=="bigint")r=t;else throw ou();i=r*n}else if(typeof t=="number"){if(isNaN(t))throw ou();if(t<0&&(i=-ur,t=-t),t%1===0)r=BigInt(t);else if(t>0){let a=1,o=0,s=1,l=1,u=1,c=1e7;for(t>=1&&(a=10**Math.floor(1+Math.log10(t)),t/=a);s<=c&&u<=c;){let f=(o+l)/(s+u);if(t===f){s+u<=c?(r=o+l,n=s+u):u>s?(r=l,n=u):(r=o,n=s);break}else t>f?(o+=l,s+=u):(l+=o,u+=s),s>c?(r=l,n=u):(r=o,n=s)}r=BigInt(r)*BigInt(a),n=BigInt(n)}}else if(typeof t=="string"){let a=0,o=Nt,s=Nt,l=Nt,u=ur,c=ur,f=t.replace(/_/g,"").match(/\d+|./g);if(f===null)throw ou();if(f[a]==="-"?(i=-ur,a++):f[a]==="+"&&a++,f.length===a+1?s=Ds(f[a++],i):f[a+1]==="."||f[a]==="."?(f[a]!=="."&&(o=Ds(f[a++],i)),a++,(a+1===f.length||f[a+1]==="("&&f[a+3]===")"||f[a+1]==="'"&&f[a+3]==="'")&&(s=Ds(f[a],i),u=ea**BigInt(f[a].length),a++),(f[a]==="("&&f[a+2]===")"||f[a]==="'"&&f[a+2]==="'")&&(l=Ds(f[a+1],i),c=ea**BigInt(f[a+1].length)-ur,a+=3)):f[a+1]==="/"||f[a+1]===":"?(s=Ds(f[a],i),u=Ds(f[a+2],ur),a+=3):f[a+3]==="/"&&f[a+1]===" "&&(o=Ds(f[a],i),s=Ds(f[a+2],i),u=Ds(f[a+4],ur),a+=5),f.length<=a)n=u*c,i=r=l+n*o+c*s;else throw ou()}else if(typeof t=="bigint")r=t,i=t,n=ur;else throw ou();if(n===Nt)throw Ox();nt.s=iNt;t=t*t%r,e>>=ur)e&ur&&(n=n*t%r);return n}function qH(t,e){for(;e%jf===Nt;e/=jf);for(;e%$x===Nt;e/=$x);if(e===ur)return Nt;let r=ea%e,n=1;for(;r!==ur;n++)if(r=r*ea%e,n>VH)return Nt;return BigInt(n)}function zH(t,e,r){let n=ur,i=UH(ea,r,e);for(let a=0;a<300;a++){if(n===i)return BigInt(a);n=n*ea%e,i=i*ea%e}return 0}function Xu(t,e){if(!t)return e;if(!e)return t;for(;;){if(t%=e,!t)return e;if(e%=t,!e)return t}}function wa(t,e){if(ti(t,e),this instanceof wa)t=Xu(nt.d,nt.n),this.s=nt.s,this.n=nt.n/t,this.d=nt.d/t;else return cn(nt.s*nt.n,nt.d)}var Ox=function(){return new Error("Division by Zero")},ou=function(){return new Error("Invalid argument")},tE=function(){return new Error("Parameters must be integer")};wa.prototype={s:ur,n:Nt,d:ur,abs:function(){return cn(this.n,this.d)},neg:function(){return cn(-this.s*this.n,this.d)},add:function(t,e){return ti(t,e),cn(this.s*this.n*nt.d+nt.s*this.d*nt.n,this.d*nt.d)},sub:function(t,e){return ti(t,e),cn(this.s*this.n*nt.d-nt.s*this.d*nt.n,this.d*nt.d)},mul:function(t,e){return ti(t,e),cn(this.s*nt.s*this.n*nt.n,this.d*nt.d)},div:function(t,e){return ti(t,e),cn(this.s*nt.s*this.n*nt.d,this.d*nt.n)},clone:function(){return cn(this.s*this.n,this.d)},mod:function(t,e){if(t===void 0)return cn(this.s*this.n%this.d,ur);if(ti(t,e),Nt===nt.n*this.d)throw Ox();return cn(this.s*(nt.d*this.n)%(nt.n*this.d),nt.d*this.d)},gcd:function(t,e){return ti(t,e),cn(Xu(nt.n,this.n)*Xu(nt.d,this.d),nt.d*this.d)},lcm:function(t,e){return ti(t,e),nt.n===Nt&&this.n===Nt?cn(Nt,ur):cn(nt.n*this.n,Xu(nt.n,this.n)*Xu(nt.d,this.d))},inverse:function(){return cn(this.s*this.d,this.n)},pow:function(t,e){if(ti(t,e),nt.d===ur)return nt.snt.s*nt.n*this.d},gte:function(t,e){return ti(t,e),this.s*this.n*nt.d>=nt.s*nt.n*this.d},compare:function(t,e){ti(t,e);let r=this.s*this.n*nt.d-nt.s*nt.n*this.d;return(NtNt&&this.s>=Nt?ur:Nt),t)},floor:function(t){return t=ea**BigInt(t||0),cn(yo(this.s*t*this.n/this.d)-(t*this.n%this.d>Nt&&this.s=Nt?ur:Nt)+jf*(t*this.n%this.d)>this.d?ur:Nt),t)},roundTo:function(t,e){ti(t,e);let r=this.n*nt.d,n=this.d*nt.n,i=r%n,a=yo(r/n);return i+i>=n&&a++,cn(this.s*a*nt.n,nt.d)},divisible:function(t,e){return ti(t,e),!(!(nt.n*this.d)||this.n*nt.d%(nt.n*this.d))},valueOf:function(){return Number(this.s*this.n)/Number(this.d)},toString:function(t){let e=this.n,r=this.d;t=t||15;let n=qH(e,r),i=zH(e,r,n),a=this.sNt&&(n+=i,n+=" ",e%=r),n+=e,n+="/",n+=r}return n},toLatex:function(t){let e=this.n,r=this.d,n=this.sNt&&(n+=i,e%=r),n+="\\frac{",n+=e,n+="}{",n+=r,n+="}"}return n},toContinued:function(){let t=this.n,e=this.d,r=[];do{r.push(yo(t/e));let n=t%e;t=e,e=n}while(t!==ur);return r},simplify:function(t){let e=BigInt(1/(t||.001)|0),r=this.abs(),n=r.toContinued();for(let i=1;i=0;s--)a=a.inverse().add(n[s]);let o=a.sub(r);if(o.n*e(Object.defineProperty(wa,"name",{value:"Fraction"}),wa.prototype.constructor=wa,wa.prototype.type="Fraction",wa.prototype.isFraction=!0,wa.prototype.toJSON=function(){return{mathjs:"Fraction",n:String(this.s*this.n),d:String(this.d)}},wa.fromJSON=function(t){return new wa(t)},wa),{isClass:!0});var WH="Range",YH=[],nE=M(WH,YH,()=>{function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");var i=e!=null,a=r!=null,o=n!=null;if(i){if(ot(e))e=e.toNumber();else if(typeof e!="number"&&!Po(e))throw new TypeError("Parameter start must be a number or bigint")}if(a){if(ot(r))r=r.toNumber();else if(typeof r!="number"&&!Po(r))throw new TypeError("Parameter end must be a number or bigint")}if(o){if(ot(n))n=n.toNumber();else if(typeof n!="number"&&!Po(n))throw new TypeError("Parameter step must be a number or bigint")}this.start=i?parseFloat(e):0,this.end=a?parseFloat(r):0,this.step=o?parseFloat(n):1}return t.prototype.type="Range",t.prototype.isRange=!0,t.parse=function(e){if(typeof e!="string")return null;var r=e.split(":"),n=r.map(function(a){return parseFloat(a)}),i=n.some(function(a){return isNaN(a)});if(i)return null;switch(n.length){case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[2],n[1]);default:return null}},t.prototype.clone=function(){return new t(this.start,this.end,this.step)},t.prototype.size=function(){var e=0,r=this.start,n=this.step,i=this.end,a=i-r;return Ha(n)===Ha(a)?e=Math.ceil(a/n):a===0&&(e=0),isNaN(e)&&(e=0),[e]},t.prototype.min=function(){var e=this.size()[0];if(e>0)return this.step>0?this.start:this.start+(e-1)*this.step},t.prototype.max=function(){var e=this.size()[0];if(e>0)return this.step>0?this.start+(e-1)*this.step:this.start},t.prototype.forEach=function(e){var r=this.start,n=this.step,i=this.end,a=0;if(n>0)for(;ri;)e(r,[a],this),r+=n,a++},t.prototype.map=function(e){var r=[];return this.forEach(function(n,i,a){r[i[0]]=e(n,i,a)}),r},t.prototype.toArray=function(){var e=[];return this.forEach(function(r,n){e[n[0]]=r}),e},t.prototype.valueOf=function(){return this.toArray()},t.prototype.format=function(e){var r=go(this.start,e);return this.step!==1&&(r+=":"+go(this.step,e)),r+=":"+go(this.end,e),r},t.prototype.toString=function(){return this.format()},t.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},t.fromJSON=function(e){return new t(e.start,e.end,e.step)},t},{isClass:!0});var jH="Matrix",ZH=[],iE=M(jH,ZH,()=>{function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator")}return t.prototype.type="Matrix",t.prototype.isMatrix=!0,t.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},t.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},t.prototype.create=function(e,r){throw new Error("Cannot invoke create on a Matrix interface")},t.prototype.subset=function(e,r,n){throw new Error("Cannot invoke subset on a Matrix interface")},t.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},t.prototype.set=function(e,r,n){throw new Error("Cannot invoke set on a Matrix interface")},t.prototype.resize=function(e,r){throw new Error("Cannot invoke resize on a Matrix interface")},t.prototype.reshape=function(e,r){throw new Error("Cannot invoke reshape on a Matrix interface")},t.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},t.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},t.prototype.map=function(e,r){throw new Error("Cannot invoke map on a Matrix interface")},t.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},t.prototype[Symbol.iterator]=function(){throw new Error("Cannot iterate a Matrix interface")},t.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},t.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},t.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},t.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},t},{isClass:!0});function Rx(t,e,r){var n=t.constructor,i=new n(2),a="";if(r){if(r<1)throw new Error("size must be in greater than 0");if(!He(r))throw new Error("size must be an integer");if(t.greaterThan(i.pow(r-1).sub(1))||t.lessThan(i.pow(r-1).mul(-1)))throw new Error("Value must be in range [-2^".concat(r-1,", 2^").concat(r-1,"-1]"));if(!t.isInteger())throw new Error("Value must be an integer");t.lessThan(0)&&(t=t.add(i.pow(r))),a="i".concat(r)}switch(e){case 2:return"".concat(t.toBinary()).concat(a);case 8:return"".concat(t.toOctal()).concat(a);case 16:return"".concat(t.toHexadecimal()).concat(a);default:throw new Error("Base ".concat(e," not supported "))}}function sE(t,e){if(typeof e=="function")return e(t);if(!t.isFinite())return t.isNaN()?"NaN":t.gt(0)?"Infinity":"-Infinity";var{notation:r,precision:n,wordSize:i}=Ex(e);switch(r){case"fixed":return XH(t,n);case"exponential":return aE(t,n);case"engineering":return JH(t,n);case"bin":return Rx(t,2,i);case"oct":return Rx(t,8,i);case"hex":return Rx(t,16,i);case"auto":{var a=oE(e?.lowerExp,-3),o=oE(e?.upperExp,5);if(t.isZero())return"0";var s,l=t.toSignificantDigits(n),u=l.e;return u>=a&&u=0?"+":"")+n.toString()}function aE(t,e){return e!==void 0?t.toExponential(e-1):t.toExponential()}function XH(t,e){return t.toFixed(e)}function oE(t,e){return bt(t)?t:ot(t)?t.toNumber():e}function lE(t,e){var r=t.length-e.length,n=t.length;return t.substring(r,n)===e}function Dt(t,e){var r=QH(t,e);return e&&typeof e=="object"&&"truncate"in e&&r.length>e.truncate?r.substring(0,e.truncate-3)+"...":r}function QH(t,e){if(typeof t=="number")return go(t,e);if(ot(t))return sE(t,e);if(KH(t))return!e||e.fraction!=="decimal"?"".concat(t.s*t.n,"/").concat(t.d):t.toString();if(Array.isArray(t))return cE(t,e);if(Jr(t))return Qu(t);if(typeof t=="function")return t.syntax?String(t.syntax):"function";if(t&&typeof t=="object"){if(typeof t.format=="function")return t.format(e);if(t&&t.toString(e)!=={}.toString())return t.toString(e);var r=Object.keys(t).map(n=>Qu(n)+": "+Dt(t[n],e));return"{"+r.join(", ")+"}"}return String(t)}function Qu(t){for(var e=String(t),r="",n=0;n/g,">"),e}function cE(t,e){if(Array.isArray(t)){for(var r="[",n=t.length,i=0;ie?1:-1}function Et(t,e,r){if(!(this instanceof Et))throw new SyntaxError("Constructor must be called with the new operator");this.actual=t,this.expected=e,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(t)?"["+t.join(", ")+"]":t)+" "+(this.relation||"!=")+" "+(Array.isArray(e)?"["+e.join(", ")+"]":e)+")",this.stack=new Error().stack}Et.prototype=new RangeError;Et.prototype.constructor=RangeError;Et.prototype.name="DimensionError";Et.prototype.isDimensionError=!0;function Zn(t,e,r){if(!(this instanceof Zn))throw new SyntaxError("Constructor must be called with the new operator");this.index=t,arguments.length<3?(this.min=0,this.max=e):(this.min=e,this.max=r),this.min!==void 0&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=new Error().stack}Zn.prototype=new RangeError;Zn.prototype.constructor=RangeError;Zn.prototype.name="IndexError";Zn.prototype.isIndexError=!0;function ct(t){for(var e=[];Array.isArray(t);)e.push(t.length),t=t[0];return e}function fE(t,e,r){var n,i=t.length;if(i!==e[r])throw new Et(i,e[r]);if(r")}function Vx(t,e){var r=e.length===0;if(r){if(Array.isArray(t))throw new Et(t.length,0)}else fE(t,e,0)}function Zf(t,e){var r=t.isMatrix?t._size:ct(t),n=e._sourceSize;n.forEach((i,a)=>{if(i!==null&&i!==r[a])throw new Et(i,r[a])})}function Cr(t,e){if(t!==void 0){if(!bt(t)||!He(t))throw new TypeError("Index must be an integer (value: "+t+")");if(t<0||typeof e=="number"&&t>=e)throw new Zn(t,e)}}function Ku(t){for(var e=0;e=0,l=e%r===0;if(s)if(l)n[a]=-e/r;else throw new Error("Could not replace wildcard, since "+e+" is no multiple of "+-r);return n}function pE(t){return t.reduce((e,r)=>e*r,1)}function eG(t,e){for(var r=t,n,i=e.length-1;i>0;i--){var a=e[i];n=[];for(var o=r.length/a,s=0;s1&&arguments[1]!==void 0?arguments[1]:!1;if(!Array.isArray(t))return t;if(typeof e!="boolean")throw new TypeError("Boolean expected for second argument of flatten");var r=[];return e?i(t):n(t),r;function n(a){for(var o=0;oe.test(r))}function zx(t,e){return Array.prototype.join.call(t,e)}function Ss(t){if(!Array.isArray(t))throw new TypeError("Array input expected");if(t.length===0)return t;var e=[],r=0;e[0]={value:t[0],identifier:0};for(var n=1;n1)return t.slice(1).reduce(function(r,n){return hE(r,n,e,0)},t[0]);throw new Error("Wrong number of arguments in function concat")}function Qf(){for(var t=arguments.length,e=new Array(t),r=0;rm.length),i=Math.max(...n),a=new Array(i).fill(null),o=0;oa[c]&&(a[c]=s[u])}for(var f=0;f1||t[i]>e[a])throw new Error("shape mismatch: mismatch is found in arg with shape (".concat(t,") not possible to broadcast dimension ").concat(n," with size ").concat(t[i]," to size ").concat(e[a]))}}function Vo(t,e){var r=ct(t);if(Qi(r,e))return t;gE(r,e);var n=Qf(r,e),i=n.length,a=[...Array(i-r.length).fill(1),...r],o=rG(t);r.lengthi[a],t)}function Kf(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(t.length===0)return[];if(r)return a(t);var n=[];return i(t,0);function i(o,s){if(Array.isArray(o)){for(var l=o.length,u=Array(l),c=0;c2&&arguments[2]!==void 0?arguments[2]:!1;if(t.length===0)return;if(r){a(t);return}var n=[];i(t,0);function i(o,s){if(Array.isArray(o))for(var l=o.length,u=0;u3&&arguments[3]!==void 0?arguments[3]:!1;if(Gx.default.isTypedFunction(t)){var i;if(n)i=1;else{var a=(e.isMatrix?e.size():ct(e)).map(()=>0),o=e.isMatrix?e.get(a):Ac(e,a);i=aG(t,o,a,e)}var s;if(e.isMatrix&&e.dataType!=="mixed"&&e.dataType!==void 0){var l=nG(t,i);s=l!==void 0?l:t}else s=t;return i>=1&&i<=3?{isUnary:i===1,fn:function(){for(var c=arguments.length,f=new Array(c),m=0;m{var[i,a]=n;i.split(",").length===e&&r.push(a)}),r.length===1)return r[0]}function iG(t){if(t.length!==1)return!1;var e=t.toString();if(/arguments/.test(e))return!1;var r=e.match(/\(.*?\)/);return!/\.\.\./.test(r)}function aG(t,e,r,n){for(var i=[e,r,n],a=3;a>0;a--){var o=i.slice(0,a);if(Gx.default.resolve(t,o)!==null)return a}}function vE(t,e,r,n){try{return t(...e)}catch(i){oG(i,e,r,n)}}function oG(t,e,r,n){var i;if(t instanceof TypeError&&((i=t.data)===null||i===void 0?void 0:i.category)==="wrongType"){var a=[];throw a.push("value: ".concat(ir(e[0]))),e.length>=2&&a.push("index: ".concat(ir(e[1]))),e.length>=3&&a.push("array: ".concat(ir(e[2]))),new TypeError("Function ".concat(r," cannot apply callback arguments ")+"".concat(n,"(").concat(a.join(", "),") at index ").concat(JSON.stringify(e[1])))}else throw new TypeError("Function ".concat(r," cannot apply callback arguments ")+"to function ".concat(n,": ").concat(t.message))}var sG="DenseMatrix",uG=["Matrix"],yE=M(sG,uG,t=>{var{Matrix:e}=t;function r(c,f){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(f&&!Jr(f))throw new Error("Invalid datatype: "+f);if(Ye(c))c.type==="DenseMatrix"?(this._data=ut(c._data),this._size=ut(c._size),this._datatype=f||c._datatype):(this._data=c.toArray(),this._size=c.size(),this._datatype=f||c._datatype);else if(c&&sr(c.data)&&sr(c.size))this._data=c.data,this._size=c.size,Vx(this._data,this._size),this._datatype=f||c.datatype;else if(sr(c))this._data=u(c),this._size=ct(this._data),Vx(this._data,this._size),this._datatype=f;else{if(c)throw new TypeError("Unsupported type of data ("+ir(c)+")");this._data=[],this._size=[0],this._datatype=f}}r.prototype=new e,r.prototype.createDenseMatrix=function(c,f){return new r(c,f)},Object.defineProperty(r,"name",{value:"DenseMatrix"}),r.prototype.constructor=r,r.prototype.type="DenseMatrix",r.prototype.isDenseMatrix=!0,r.prototype.getDataType=function(){return el(this._data,ir)},r.prototype.storage=function(){return"dense"},r.prototype.datatype=function(){return this._datatype},r.prototype.create=function(c,f){return new r(c,f)},r.prototype.subset=function(c,f,m){switch(arguments.length){case 1:return n(this,c);case 2:case 3:return a(this,c,f,m);default:throw new SyntaxError("Wrong number of arguments")}},r.prototype.get=function(c){return Ac(this._data,c)},r.prototype.set=function(c,f,m){if(!sr(c))throw new TypeError("Array expected");if(c.length");var v=f.max().map(function(x){return x+1});l(c,v,p);var A=d.length,w=0;o(c._data,f,m,A,w)}return c}function o(c,f,m,p,d){var h=d===p-1,b=f.dimension(d);h?b.forEach(function(y,D){Cr(y),c[y]=m[D[0]]}):b.forEach(function(y,D){Cr(y),o(c[y],f,m[D[0]],p,d+1)})}r.prototype.resize=function(c,f,m){if(!rn(c))throw new TypeError("Array or Matrix expected");var p=c.valueOf().map(h=>Array.isArray(h)&&h.length===1?h[0]:h),d=m?this.clone():this;return s(d,p,f)};function s(c,f,m){if(f.length===0){for(var p=c._data;sr(p);)p=p[0];return p}return c._size=f.slice(0),c._data=bo(c._data,c._size,m),c}r.prototype.reshape=function(c,f){var m=f?this.clone():this;m._data=Jf(m._data,c);var p=m._size.reduce((d,h)=>d*h);return m._size=Xf(c,p),m};function l(c,f,m){for(var p=c._size.slice(0),d=!1;p.lengthp[h]&&(p[h]=f[h],d=!0);d&&s(c,p,m)}r.prototype.clone=function(){var c=new r({data:ut(this._data),size:ut(this._size),datatype:this._datatype});return c},r.prototype.size=function(){return this._size.slice(0)},r.prototype._forEach=function(c){var f=c.length===2,m=this._size.length-1;if(m<0)return;if(f){b(this._data);return}if(m===0){for(var p=0;p1&&arguments[1]!==void 0?arguments[1]:0;if(D1&&arguments[1]!==void 0?arguments[1]:0;if(D1&&arguments[1]!==void 0?arguments[1]:!1,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,p=this,d=new r(p),h=Ya(c,p._data,"map",m),b=m||h.isUnary?(y,D)=>{y[D]=h.fn(y[D])}:(y,D,v)=>{y[D]=h.fn(y[D],v,p)};return d._forEach(b),d},r.prototype.forEach=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,p=this,d=Ya(c,p._data,"map",m),h=m||d.isUnary?(b,y)=>{d.fn(b[y])}:(b,y,D)=>{d.fn(b[y],D,p)};p._forEach(h)},r.prototype[Symbol.iterator]=function*(){var c=this._size.length-1;if(!(c<0)){if(c===0){for(var f=0;f[v[y]]);f.push(new r(D,c._datatype))},h=0;h0?c:0,m=c<0?-c:0,p=this._size[0],d=this._size[1],h=Math.min(p-m,d-f),b=[],y=0;y0?m:0,h=m<0?-m:0,b=c[0],y=c[1],D=Math.min(b-h,y-d),v;if(sr(f)){if(f.length!==D)throw new Error("Invalid value array length");v=function(T){return f[T]}}else if(Ye(f)){var A=f.size();if(A.length!==1||A[0]!==D)throw new Error("Invalid matrix length");v=function(T){return f.get([T])}}else v=function(){return f};p||(p=ot(v(0))?v(0).mul(0):0);var w=[];if(c.length>0){w=bo(w,c,p);for(var x=0;x{var{typed:e}=t;return e(bE,{any:ut})});function Qh(t){var e=t.length,r=t[0].length,n,i,a=[];for(i=0;ie(r),!1,!0):Xh(t,e,!0)}function Ke(t,e,r){if(!r)return Ye(t)?t.map(i=>e(i),!1,!0):Kf(t,e,!0);var n=i=>i===0?i:e(i);return Ye(t)?t.map(i=>n(i),!1,!0):Kf(t,n,!0)}function su(t,e,r){var n=Array.isArray(t)?ct(t):t.size();if(e<0||e>=n.length)throw new Zn(e,n.length);return Ye(t)?t.create(Kh(t.valueOf(),e,r),t.datatype()):Kh(t,e,r)}function Kh(t,e,r){var n,i,a,o;if(e<=0)if(Array.isArray(t[0])){for(o=Qh(t),i=[],n=0;n{var{typed:e}=t;return e(wE,{number:He,BigNumber:function(n){return n.isInt()},bigint:function(n){return!0},Fraction:function(n){return n.d===1n},"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var ta="number",Es="number, number";function Yx(t){return Math.abs(t)}Yx.signature=ta;function jx(t,e){return t+e}jx.signature=Es;function Zx(t,e){return t-e}Zx.signature=Es;function Jx(t,e){return t*e}Jx.signature=Es;function fG(t,e){return t/e}fG.signature=Es;function Xx(t){return-t}Xx.signature=ta;function Qx(t){return t}Qx.signature=ta;function Dc(t){return TS(t)}Dc.signature=ta;function Kx(t){return t*t*t}Kx.signature=ta;function e0(t){return Math.exp(t)}e0.signature=ta;function t0(t){return MS(t)}t0.signature=ta;function pG(t,e){if(!He(t)||!He(e))throw new Error("Parameters in function gcd must be integer numbers");for(var r;e!==0;)r=t%e,t=e,e=r;return t<0?-t:t}pG.signature=Es;function r0(t,e){if(!He(t)||!He(e))throw new Error("Parameters in function lcm must be integer numbers");if(t===0||e===0)return 0;for(var r,n=t*e;e!==0;)r=e,e=t%r,t=r;return Math.abs(n/t)}r0.signature=Es;function n0(t,e){return e?Math.log(t)/Math.log(e):Math.log(t)}function ep(t){return ES(t)}ep.signature=ta;function eg(t){return SS(t)}eg.signature=ta;function mG(t){return Bh(t)}mG.signature=ta;function dG(t,e){return e===0?t:t-e*Math.floor(t/e)}dG.signature=Es;function i0(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,r=e<0;if(r&&(e=-e),e===0)throw new Error("Root must be non-zero");if(t<0&&Math.abs(e)%2!==1)throw new Error("Root must be odd when a is negative.");if(t===0)return r?1/0:0;if(!isFinite(t))return r?0:t;var n=Math.pow(Math.abs(t),1/e);return n=t<0?-n:n,r?1/n:n}function tg(t){return Ha(t)}tg.signature=ta;function hG(t){return Math.sqrt(t)}hG.signature=ta;function a0(t){return t*t}a0.signature=ta;function o0(t,e){var r,n,i,a=0,o=1,s=1,l=0;if(!He(t)||!He(e))throw new Error("Parameters in function xgcd must be integer numbers");for(;e;)n=Math.floor(t/e),i=t-n*e,r=a,a=o-n*a,o=r,r=s,s=l-n*s,l=r,t=e,e=i;var u;return t<0?u=[-t,-o,-l]:u=[t,t?o:0,l],u}o0.signature=Es;function s0(t,e){return t*t<1&&e===1/0||t*t>1&&e===-1/0?0:Math.pow(t,e)}s0.signature=Es;function Sc(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!He(e)||e<0||e>15)throw new Error("Number of decimals in function round must be an integer from 0 to 15 inclusive");return parseFloat(Tx(t,e))}function gG(t){return Math.abs(t)}gG.signature=ta;var vG="number",Ec="number, number";function u0(t,e){if(!He(t)||!He(e))throw new Error("Integers expected in function bitAnd");return t&e}u0.signature=Ec;function l0(t){if(!He(t))throw new Error("Integer expected in function bitNot");return~t}l0.signature=vG;function c0(t,e){if(!He(t)||!He(e))throw new Error("Integers expected in function bitOr");return t|e}c0.signature=Ec;function f0(t,e){if(!He(t)||!He(e))throw new Error("Integers expected in function bitXor");return t^e}f0.signature=Ec;function p0(t,e){if(!He(t)||!He(e))throw new Error("Integers expected in function leftShift");return t<>e}m0.signature=Ec;function d0(t,e){if(!He(t)||!He(e))throw new Error("Integers expected in function rightLogShift");return t>>>e}d0.signature=Ec;function _a(t,e){if(e>1;return _a(t,r)*_a(r+1,e)}function h0(t,e){if(!He(t)||t<0)throw new TypeError("Positive integer value expected in function combinations");if(!He(e)||e<0)throw new TypeError("Positive integer value expected in function combinations");if(e>t)throw new TypeError("k must be less than or equal to n");for(var r=t-e,n=1,i=e171?1/0:_a(1,t-1);if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*tp(1-t));if(t>=171.35)return 1/0;if(t>85){var r=t*t,n=r*t,i=n*t,a=i*t;return Math.sqrt(2*Math.PI/t)*Math.pow(t/Math.E,t)*(1+1/(12*t)+1/(288*r)-139/(51840*n)-571/(2488320*i)+163879/(209018880*a)+5246819/(75246796800*a*t))}--t,e=tl[0];for(var o=1;o=1;n--)r+=TE[n]/(t+n);return b0+(t+.5)*Math.log(e)-e+Math.log(r)}rp.signature="number";var fn="number",wG="number, number";function _G(t){return Math.acos(t)}_G.signature=fn;function x0(t){return FS(t)}x0.signature=fn;function w0(t){return Math.atan(1/t)}w0.signature=fn;function _0(t){return isFinite(t)?(Math.log((t+1)/t)+Math.log(t/(t-1)))/2:0}_0.signature=fn;function A0(t){return Math.asin(1/t)}A0.signature=fn;function D0(t){var e=1/t;return Math.log(e+Math.sqrt(e*e+1))}D0.signature=fn;function S0(t){return Math.acos(1/t)}S0.signature=fn;function E0(t){var e=1/t,r=Math.sqrt(e*e-1);return Math.log(r+e)}E0.signature=fn;function AG(t){return Math.asin(t)}AG.signature=fn;function T0(t){return IS(t)}T0.signature=fn;function DG(t){return Math.atan(t)}DG.signature=fn;function SG(t,e){return Math.atan2(t,e)}SG.signature=wG;function M0(t){return BS(t)}M0.signature=fn;function EG(t){return Math.cos(t)}EG.signature=fn;function TG(t){return Ph(t)}TG.signature=fn;function C0(t){return 1/Math.tan(t)}C0.signature=fn;function N0(t){var e=Math.exp(2*t);return(e+1)/(e-1)}N0.signature=fn;function F0(t){return 1/Math.sin(t)}F0.signature=fn;function I0(t){return t===0?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(t)-Math.exp(-t)))*Ha(t)}I0.signature=fn;function B0(t){return 1/Math.cos(t)}B0.signature=fn;function k0(t){return 2/(Math.exp(t)+Math.exp(-t))}k0.signature=fn;function MG(t){return Math.sin(t)}MG.signature=fn;function P0(t){return kS(t)}P0.signature=fn;function CG(t){return Math.tan(t)}CG.signature=fn;function NG(t){return $h(t)}NG.signature=fn;var np="number";function FG(t){return He(t)}FG.signature=np;function $0(t){return t<0}$0.signature=np;function O0(t){return t>0}O0.signature=np;function IG(t){return t===0}IG.signature=np;function R0(t){return Number.isNaN(t)}R0.signature=np;function gn(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e-9,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(r<=0)throw new Error("Relative tolerance must be greater than 0");if(n<0)throw new Error("Absolute tolerance must be at least 0");return t.isNaN()||e.isNaN()?!1:!t.isFinite()||!e.isFinite()?t.eq(e):t.eq(e)?!0:t.minus(e).abs().lte(t.constructor.max(t.constructor.max(t.abs(),e.abs()).mul(r),n))}var ME="isNegative",BG=["typed","config"],CE=M(ME,BG,t=>{var{typed:e,config:r}=t;return e(ME,{number:n=>zr(n,0,r.relTol,r.absTol)?!1:$0(n),BigNumber:n=>gn(n,new n.constructor(0),r.relTol,r.absTol)?!1:n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n<0n,Fraction:n=>n.s<0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var NE="isNumeric",kG=["typed"],FE=M(NE,kG,t=>{var{typed:e}=t;return e(NE,{"number | BigNumber | bigint | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var IE="hasNumericValue",PG=["typed","isNumeric"],BE=M(IE,PG,t=>{var{typed:e,isNumeric:r}=t;return e(IE,{boolean:()=>!0,string:function(i){return i.trim().length>0&&!isNaN(Number(i))},any:function(i){return r(i)}})});var kE="isPositive",$G=["typed","config"],PE=M(kE,$G,t=>{var{typed:e,config:r}=t;return e(kE,{number:n=>zr(n,0,r.relTol,r.absTol)?!1:O0(n),BigNumber:n=>gn(n,new n.constructor(0),r.relTol,r.absTol)?!1:!n.isNeg()&&!n.isZero()&&!n.isNaN(),bigint:n=>n>0n,Fraction:n=>n.s>0n&&n.n>0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var $E="isZero",OG=["typed","equalScalar"],OE=M($E,OG,t=>{var{typed:e,equalScalar:r}=t;return e($E,{"number | BigNumber | Complex | Fraction":n=>r(n,0),bigint:n=>n===0n,Unit:e.referToSelf(n=>i=>e.find(n,i.valueType())(i.value)),"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var RE="isNaN",RG=["typed"],LE=M(RE,RG,t=>{var{typed:e}=t;return e(RE,{number:R0,BigNumber:function(n){return n.isNaN()},bigint:function(n){return!1},Fraction:function(n){return!1},Complex:function(n){return n.isNaN()},Unit:function(n){return Number.isNaN(n.value)},"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var VE="typeOf",LG=["typed"],UE=M(VE,LG,t=>{var{typed:e}=t;return e(VE,{any:ir})});function qE(t,e,r,n){return zr(t.re,e.re,r,n)&&zr(t.im,e.im,r,n)}var Za=M("compareUnits",["typed"],t=>{var{typed:e}=t;return{"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(!n.equalBase(i))throw new Error("Cannot compare units with different base");return e.find(r,[n.valueType(),i.valueType()])(n.value,i.value)})}});var ag="equalScalar",VG=["typed","config"],zE=M(ag,VG,t=>{var{typed:e,config:r}=t,n=Za({typed:e});return e(ag,{"boolean, boolean":function(a,o){return a===o},"number, number":function(a,o){return zr(a,o,r.relTol,r.absTol)},"BigNumber, BigNumber":function(a,o){return a.eq(o)||gn(a,o,r.relTol,r.absTol)},"bigint, bigint":function(a,o){return a===o},"Fraction, Fraction":function(a,o){return a.equals(o)},"Complex, Complex":function(a,o){return qE(a,o,r.relTol,r.absTol)}},n)}),SEe=M(ag,["typed","config"],t=>{var{typed:e,config:r}=t;return e(ag,{"number, number":function(i,a){return zr(i,a,r.relTol,r.absTol)}})});var UG="SparseMatrix",qG=["typed","equalScalar","Matrix"],HE=M(UG,qG,t=>{var{typed:e,equalScalar:r,Matrix:n}=t;function i(h,b){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");if(b&&!Jr(b))throw new Error("Invalid datatype: "+b);if(Ye(h))a(this,h,b);else if(h&&sr(h.index)&&sr(h.ptr)&&sr(h.size))this._values=h.values,this._index=h.index,this._ptr=h.ptr,this._size=h.size,this._datatype=b||h.datatype;else if(sr(h))o(this,h,b);else{if(h)throw new TypeError("Unsupported type of data ("+ir(h)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=b}}function a(h,b,y){b.type==="SparseMatrix"?(h._values=b._values?ut(b._values):void 0,h._index=ut(b._index),h._ptr=ut(b._ptr),h._size=ut(b._size),h._datatype=y||b._datatype):o(h,b.valueOf(),y||b._datatype)}function o(h,b,y){h._values=[],h._index=[],h._ptr=[],h._datatype=y;var D=b.length,v=0,A=r,w=0;if(Jr(y)&&(A=e.find(r,[y,y])||r,w=e.convert(0,y)),D>0){var x=0;do{h._ptr.push(h._index.length);for(var E=0;E");if(v.length===1){var T=b.dimension(0);T.forEach(function(N,I){Cr(N),h.set([N,0],y[I[0]],D)})}else{var _=b.dimension(0),C=b.dimension(1);_.forEach(function(N,I){Cr(N),C.forEach(function(R,L){Cr(R),h.set([N,R],y[I[0]][L[0]],D)})})}}return h}i.prototype.get=function(h){if(!sr(h))throw new TypeError("Array expected");if(h.length!==this._size.length)throw new Et(h.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var b=h[0],y=h[1];Cr(b,this._size[0]),Cr(y,this._size[1]);var D=u(b,this._ptr[y],this._ptr[y+1],this._index);return DA-1||v>w-1)&&(m(this,Math.max(D+1,A),Math.max(v+1,w),y),A=this._size[0],w=this._size[1]),Cr(D,A),Cr(v,w);var T=u(D,this._ptr[v],this._ptr[v+1],this._index);return TArray.isArray(A)&&A.length===1?A[0]:A);if(D.length!==2)throw new Error("Only two dimensions matrix are supported");D.forEach(function(A){if(!bt(A)||!He(A)||A<0)throw new TypeError("Invalid size, must contain positive integers (size: "+Dt(D)+")")});var v=y?this.clone():this;return m(v,D[0],D[1],b)};function m(h,b,y,D){var v=D||0,A=r,w=0;Jr(h._datatype)&&(A=e.find(r,[h._datatype,h._datatype])||r,w=e.convert(0,h._datatype),v=e.convert(v,h._datatype));var x=!A(v,w),E=h._size[0],T=h._size[1],_,C,N;if(y>T){for(C=T;CE){if(x){var I=0;for(C=0;Cb-1&&(h._values.splice(N,1),h._index.splice(N,1),L++)}h._ptr[C]=h._values.length}return h._size[0]=b,h._size[1]=y,h}i.prototype.reshape=function(h,b){if(!sr(h))throw new TypeError("Array expected");if(h.length!==2)throw new Error("Sparse matrices can only be reshaped in two dimensions");h.forEach(function(O){if(!bt(O)||!He(O)||O<=-2||O===0)throw new TypeError("Invalid size, must contain positive integers or -1 (size: "+Dt(h)+")")});var y=this._size[0]*this._size[1];h=Xf(h,y);var D=h[0]*h[1];if(y!==D)throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var v=b?this.clone():this;if(this._size[0]===h[0]&&this._size[1]===h[1])return v;for(var A=[],w=0;w=b&&P<=y&&N(h._values[V],P-b,I-D)}else{for(var k={},W=R;W "+(this._values?Dt(this._values[E],h):"X")}return v},i.prototype.toString=function(){return Dt(this.toArray())},i.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},i.prototype.diagonal=function(h){if(h){if(ot(h)&&(h=h.toNumber()),!bt(h)||!He(h))throw new TypeError("The parameter k must be an integer number")}else h=0;var b=h>0?h:0,y=h<0?-h:0,D=this._size[0],v=this._size[1],A=Math.min(D-y,v-b),w=[],x=[],E=[];E[0]=0;for(var T=b;T0?y:0,E=y<0?-y:0,T=h[0],_=h[1],C=Math.min(T-E,_-x),N;if(sr(b)){if(b.length!==C)throw new Error("Invalid value array length");N=function(Q){return b[Q]}}else if(Ye(b)){var I=b.size();if(I.length!==1||I[0]!==C)throw new Error("Invalid matrix length");N=function(Q){return b.get([Q])}}else N=function(){return b};for(var R=[],L=[],V=[],P=0;P<_;P++){V.push(R.length);var k=P-x;if(k>=0&&k=E||v[_]!==b)){var N=D?D[T]:void 0;v.splice(_,0,b),D&&D.splice(_,0,N),v.splice(_<=T?T+1:T,1),D&&D.splice(_<=T?T+1:T,1);continue}if(_=E||v[T]!==h)){var I=D?D[_]:void 0;v.splice(T,0,h),D&&D.splice(T,0,I),v.splice(T<=_?_+1:_,1),D&&D.splice(T<=_?_+1:_,1)}}},i},{isClass:!0});var zG="number",HG=["typed"];function GG(t){var e=t.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/);if(e){var r={"0b":2,"0o":8,"0x":16}[e[1]],n=e[2],i=e[3];return{input:t,radix:r,integerPart:n,fractionalPart:i}}else return null}function WG(t){for(var e=parseInt(t.integerPart,t.radix),r=0,n=0;n{var{typed:e}=t,r=e("number",{"":function(){return 0},number:function(i){return i},string:function(i){if(i==="NaN")return NaN;var a=GG(i);if(a)return WG(a);var o=0,s=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);s&&(o=Number(s[2]),i=s[1]);var l=Number(i);if(isNaN(l))throw new SyntaxError('String "'+i+'" is not a valid number');if(s){if(l>2**o-1)throw new SyntaxError('String "'.concat(i,'" is out of range'));l>=2**(o-1)&&(l=l-2**o)}return l},BigNumber:function(i){return i.toNumber()},bigint:function(i){return Number(i)},Fraction:function(i){return i.valueOf()},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),null:function(i){return 0},"Unit, string | Unit":function(i,a){return i.toNumber(a)},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))});return r.fromJSON=function(n){return parseFloat(n.value)},r});var YG="bigint",jG=["typed"],WE=M(YG,jG,t=>{var{typed:e}=t,r=e("bigint",{"":function(){return 0n},bigint:function(i){return i},number:function(i){return BigInt(i.toFixed())},BigNumber:function(i){return BigInt(i.round().toString())},Fraction:function(i){return BigInt(i.valueOf().toFixed())},"string | boolean":function(i){return BigInt(i)},null:function(i){return 0n},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))});return r.fromJSON=function(n){return BigInt(n.value)},r});var YE="string",ZG=["typed"],jE=M(YE,ZG,t=>{var{typed:e}=t;return e(YE,{"":function(){return""},number:go,null:function(n){return"null"},boolean:function(n){return n+""},string:function(n){return n},"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r)),any:function(n){return String(n)}})});var ZE="boolean",JG=["typed"],JE=M(ZE,JG,t=>{var{typed:e}=t;return e(ZE,{"":function(){return!1},boolean:function(n){return n},number:function(n){return!!n},null:function(n){return!1},BigNumber:function(n){return!n.isZero()},string:function(n){var i=n.toLowerCase();if(i==="true")return!0;if(i==="false")return!1;var a=Number(n);if(n!==""&&!isNaN(a))return!!a;throw new Error('Cannot convert "'+n+'" to a boolean')},"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var XG="bignumber",QG=["typed","BigNumber"],XE=M(XG,QG,t=>{var{typed:e,BigNumber:r}=t;return e("bignumber",{"":function(){return new r(0)},number:function(i){return new r(i+"")},string:function(i){var a=i.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);if(a){var o=a[2],s=r(a[1]),l=new r(2).pow(Number(o));if(s.gt(l.sub(1)))throw new SyntaxError('String "'.concat(i,'" is out of range'));var u=new r(2).pow(Number(o)-1);return s.gte(u)?s.sub(l):s}return new r(i)},BigNumber:function(i){return i},bigint:function(i){return new r(i.toString())},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),Fraction:function(i){return new r(String(i.n)).div(String(i.d)).times(String(i.s))},null:function(i){return new r(0)},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var KG="complex",eW=["typed","Complex"],QE=M(KG,eW,t=>{var{typed:e,Complex:r}=t;return e("complex",{"":function(){return r.ZERO},number:function(i){return new r(i,0)},"number, number":function(i,a){return new r(i,a)},"BigNumber, BigNumber":function(i,a){return new r(i.toNumber(),a.toNumber())},Fraction:function(i){return new r(i.valueOf(),0)},Complex:function(i){return i.clone()},string:function(i){return r(i)},null:function(i){return r(0)},Object:function(i){if("re"in i&&"im"in i)return new r(i.re,i.im);if("r"in i&&"phi"in i||"abs"in i&&"arg"in i)return new r(i);throw new Error("Expected object with properties (re and im) or (r and phi) or (abs and arg)")},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var tW="fraction",rW=["typed","Fraction"],KE=M(tW,rW,t=>{var{typed:e,Fraction:r}=t;return e("fraction",{number:function(i){if(!isFinite(i)||isNaN(i))throw new Error(i+" cannot be represented as a fraction");return new r(i)},string:function(i){return new r(i)},"number, number":function(i,a){return new r(i,a)},"bigint, bigint":function(i,a){return new r(i,a)},null:function(i){return new r(0)},BigNumber:function(i){return new r(i.toString())},bigint:function(i){return new r(i.toString())},Fraction:function(i){return i},Unit:e.referToSelf(n=>i=>{var a=i.clone();return a.value=n(i.value),a}),Object:function(i){return new r(i)},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var eT="matrix",nW=["typed","Matrix","DenseMatrix","SparseMatrix"],tT=M(eT,nW,t=>{var{typed:e,Matrix:r,DenseMatrix:n,SparseMatrix:i}=t;return e(eT,{"":function(){return a([])},string:function(s){return a([],s)},"string, string":function(s,l){return a([],s,l)},Array:function(s){return a(s)},Matrix:function(s){return a(s,s.storage())},"Array | Matrix, string":a,"Array | Matrix, string, string":a});function a(o,s,l){if(s==="dense"||s==="default"||s===void 0)return new n(o,l);if(s==="sparse")return new i(o,l);throw new TypeError("Unknown matrix type "+JSON.stringify(s)+".")}});var rT="matrixFromFunction",iW=["typed","matrix","isZero"],nT=M(rT,iW,t=>{var{typed:e,matrix:r,isZero:n}=t;return e(rT,{"Array | Matrix, function, string, string":function(o,s,l,u){return i(o,s,l,u)},"Array | Matrix, function, string":function(o,s,l){return i(o,s,l)},"Matrix, function":function(o,s){return i(o,s,"dense")},"Array, function":function(o,s){return i(o,s,"dense").toArray()},"Array | Matrix, string, function":function(o,s,l){return i(o,l,s)},"Array | Matrix, string, string, function":function(o,s,l,u){return i(o,u,s,l)}});function i(a,o,s,l){var u;return l!==void 0?u=r(s,l):u=r(s),u.resize(a),u.forEach(function(c,f){var m=o(f);n(m)||u.set(f,m)}),u}});var iT="matrixFromRows",aW=["typed","matrix","flatten","size"],aT=M(iT,aW,t=>{var{typed:e,matrix:r,flatten:n,size:i}=t;return e(iT,{"...Array":function(l){return a(l)},"...Matrix":function(l){return r(a(l.map(u=>u.toArray())))}});function a(s){if(s.length===0)throw new TypeError("At least one row is needed to construct a matrix.");var l=o(s[0]),u=[];for(var c of s){var f=o(c);if(f!==l)throw new TypeError("The vectors had different length: "+(l|0)+" \u2260 "+(f|0));u.push(n(c))}return u}function o(s){var l=i(s);if(l.length===1)return l[0];if(l.length===2){if(l[0]===1)return l[1];if(l[1]===1)return l[0];throw new TypeError("At least one of the arguments is not a vector.")}else throw new TypeError("Only one- or two-dimensional vectors are supported.")}});var oT="matrixFromColumns",oW=["typed","matrix","flatten","size"],sT=M(oT,oW,t=>{var{typed:e,matrix:r,flatten:n,size:i}=t;return e(oT,{"...Array":function(l){return a(l)},"...Matrix":function(l){return r(a(l.map(u=>u.toArray())))}});function a(s){if(s.length===0)throw new TypeError("At least one column is needed to construct a matrix.");for(var l=o(s[0]),u=[],c=0;c{var{typed:e}=t;return e(uT,{"Unit, Array":function(n,i){return n.splitUnit(i)}})});var cT="unaryMinus",uW=["typed"],fT=M(cT,uW,t=>{var{typed:e}=t;return e(cT,{number:Xx,"Complex | BigNumber | Fraction":r=>r.neg(),bigint:r=>-r,Unit:e.referToSelf(r=>n=>{var i=n.clone();return i.value=e.find(r,i.valueType())(n.value),i}),"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r,!0))})});var pT="unaryPlus",lW=["typed","config","numeric"],mT=M(pT,lW,t=>{var{typed:e,config:r,numeric:n}=t;return e(pT,{number:Qx,Complex:function(a){return a},BigNumber:function(a){return a},bigint:function(a){return a},Fraction:function(a){return a},Unit:function(a){return a.clone()},"Array | Matrix":e.referToSelf(i=>a=>Ke(a,i,!0)),boolean:function(a){return n(a?1:0,r.number)},string:function(a){return n(a,xi(a,r))}})});var dT="abs",cW=["typed"],hT=M(dT,cW,t=>{var{typed:e}=t;return e(dT,{number:Yx,"Complex | BigNumber | Fraction | Unit":r=>r.abs(),bigint:r=>r<0n?-r:r,"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r,!0))})});var gT="mapSlices",fW=["typed","isInteger"],ip=M(gT,fW,t=>{var{typed:e,isInteger:r}=t;return e(gT,{"Array | Matrix, number | BigNumber, function":function(i,a,o){if(!r(a))throw new TypeError("Integer number expected for dimension");var s=Array.isArray(i)?ct(i):i.size();if(a<0||a>=s.length)throw new Zn(a,s.length);return Ye(i)?i.create(og(i.valueOf(),a,o),i.datatype()):og(i,a,o)}})},{formerly:"apply"});function og(t,e,r){var n,i,a;if(e<=0)if(Array.isArray(t[0])){for(a=pW(t),i=[],n=0;n{var{typed:e}=t;return e(vT,{"number, number":jx,"Complex, Complex":function(n,i){return n.add(i)},"BigNumber, BigNumber":function(n,i){return n.plus(i)},"bigint, bigint":function(n,i){return n+i},"Fraction, Fraction":function(n,i){return n.add(i)},"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var a=n.clone();return a.value=e.find(r,[a.valueType(),i.valueType()])(a.value,i.value),a.fixPrefix=!1,a})})});var bT="subtractScalar",dW=["typed"],xT=M(bT,dW,t=>{var{typed:e}=t;return e(bT,{"number, number":Zx,"Complex, Complex":function(n,i){return n.sub(i)},"BigNumber, BigNumber":function(n,i){return n.minus(i)},"bigint, bigint":function(n,i){return n-i},"Fraction, Fraction":function(n,i){return n.sub(i)},"Unit, Unit":e.referToSelf(r=>(n,i)=>{if(n.value===null||n.value===void 0)throw new Error("Parameter x contains a unit with undefined value");if(i.value===null||i.value===void 0)throw new Error("Parameter y contains a unit with undefined value");if(!n.equalBase(i))throw new Error("Units do not match");var a=n.clone();return a.value=e.find(r,[a.valueType(),i.valueType()])(a.value,i.value),a.fixPrefix=!1,a})})});var wT="cbrt",hW=["config","typed","isNegative","unaryMinus","matrix","Complex","BigNumber","Fraction"],_T=M(wT,hW,t=>{var{config:e,typed:r,isNegative:n,unaryMinus:i,matrix:a,Complex:o,BigNumber:s,Fraction:l}=t;return r(wT,{number:Dc,Complex:u,"Complex, boolean":u,BigNumber:function(m){return m.cbrt()},Unit:c});function u(f,m){var p=f.arg()/3,d=f.abs(),h=new o(Dc(d),0).mul(new o(0,p).exp());if(m){var b=[h,new o(Dc(d),0).mul(new o(0,p+Math.PI*2/3).exp()),new o(Dc(d),0).mul(new o(0,p-Math.PI*2/3).exp())];return e.matrix==="Array"?b:a(b)}else return h}function c(f){if(f.value&&Hn(f.value)){var m=f.clone();return m.value=1,m=m.pow(1/3),m.value=u(f.value),m}else{var p=n(f.value);p&&(f.value=i(f.value));var d;ot(f.value)?d=new s(1).div(3):ba(f.value)?d=new l(1,3):d=1/3;var h=f.pow(d);return p&&(h.value=i(h.value)),h}}});var gW="matAlgo11xS0s",vW=["typed","equalScalar"],Er=M(gW,vW,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,b=r,y=0,D=o;typeof m=="string"&&(h=m,b=e.find(r,[h,h]),y=e.convert(0,h),a=e.convert(a,h),D=e.find(o,[h,h]));for(var v=[],A=[],w=[],x=0;x{var{typed:e,DenseMatrix:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,b=o;typeof m=="string"&&(h=m,a=e.convert(a,h),b=e.find(o,[h,h]));for(var y=[],D=[],v=[],A=0;A{var{typed:e}=t;return function(i,a,o,s){var l=i._data,u=i._size,c=i._datatype,f,m=o;typeof c=="string"&&(f=c,a=e.convert(a,f),m=e.find(o,[f,f]));var p=u.length>0?r(m,0,u,u[0],l,a,s):[];return i.createDenseMatrix({data:p,size:ut(u),datatype:f})};function r(n,i,a,o,s,l,u){var c=[];if(i===a.length-1)for(var f=0;f{var{typed:e,config:r,round:n}=t;function i(a){var o=Math.ceil(a),s=n(a);return o===s?o:zr(a,s,r.relTol,r.absTol)&&!zr(a,o,r.relTol,r.absTol)?s:o}return e(L0,{number:i,"number, number":function(o,s){if(!He(s))throw new RangeError("number of decimals in function ceil must be an integer");if(s<0||s>15)throw new RangeError("number of decimals in ceil number must be in range 0-15");var l=10**s;return i(o*l)/l}})}),AT=M(L0,_W,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}=t,l=Er({typed:e,equalScalar:a}),u=mr({typed:e,DenseMatrix:s}),c=xn({typed:e}),f=DW({typed:e,config:r,round:n});function m(p){var d=(y,D)=>gn(y,D,r.relTol,r.absTol),h=p.ceil(),b=n(p);return h.eq(b)?h:d(p,b)&&!d(p,h)?b:h}return e("ceil",{number:f.signatures.number,"number,number":f.signatures["number,number"],Complex:function(d){return d.ceil()},"Complex, number":function(d,h){return d.ceil(h)},"Complex, BigNumber":function(d,h){return d.ceil(h.toNumber())},BigNumber:m,"BigNumber, BigNumber":function(d,h){var b=AW.pow(h);return m(d.mul(b)).div(b)},bigint:p=>p,"bigint, number":(p,d)=>p,"bigint, BigNumber":(p,d)=>p,Fraction:function(d){return d.ceil()},"Fraction, number":function(d,h){return d.ceil(h)},"Fraction, BigNumber":function(d,h){return d.ceil(h.toNumber())},"Unit, number, Unit":e.referToSelf(p=>function(d,h,b){var y=d.toNumeric(b);return b.multiply(p(y,h))}),"Unit, BigNumber, Unit":e.referToSelf(p=>(d,h,b)=>p(d,h.toNumber(),b)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(p=>(d,h,b)=>Ke(d,y=>p(y,h,b),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(p=>(d,h)=>p(d,0,h)),"Array | Matrix":e.referToSelf(p=>d=>Ke(d,p,!0)),"Array, number | BigNumber":e.referToSelf(p=>(d,h)=>Ke(d,b=>p(b,h),!0)),"SparseMatrix, number | BigNumber":e.referToSelf(p=>(d,h)=>l(d,h,p,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(p=>(d,h)=>c(d,h,p,!1)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(p=>(d,h)=>c(i(h),d,p,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(p=>(d,h)=>a(d,0)?o(h.size(),h.storage()):h.storage()==="dense"?c(h,d,p,!0):u(h,d,p,!0))})});var DT="cube",SW=["typed"],ST=M(DT,SW,t=>{var{typed:e}=t;return e(DT,{number:Kx,Complex:function(n){return n.mul(n).mul(n)},BigNumber:function(n){return n.times(n).times(n)},bigint:function(n){return n*n*n},Fraction:function(n){return n.pow(3)},Unit:function(n){return n.pow(3)}})});var ET="exp",EW=["typed"],TT=M(ET,EW,t=>{var{typed:e}=t;return e(ET,{number:e0,Complex:function(n){return n.exp()},BigNumber:function(n){return n.exp()}})});var MT="expm1",TW=["typed","Complex"],CT=M(MT,TW,t=>{var{typed:e,Complex:r}=t;return e(MT,{number:t0,Complex:function(i){var a=Math.exp(i.re);return new r(a*Math.cos(i.im)-1,a*Math.sin(i.im))},BigNumber:function(i){return i.exp().minus(1)}})});var V0="fix",MW=["typed","Complex","matrix","ceil","floor","equalScalar","zeros","DenseMatrix"],CW=M(V0,["typed","ceil","floor"],t=>{var{typed:e,ceil:r,floor:n}=t;return e(V0,{number:function(a){return a>0?n(a):r(a)},"number, number":function(a,o){return a>0?n(a,o):r(a,o)}})}),NT=M(V0,MW,t=>{var{typed:e,Complex:r,matrix:n,ceil:i,floor:a,equalScalar:o,zeros:s,DenseMatrix:l}=t,u=mr({typed:e,DenseMatrix:l}),c=xn({typed:e}),f=CW({typed:e,ceil:i,floor:a});return e("fix",{number:f.signatures.number,"number, number | BigNumber":f.signatures["number,number"],Complex:function(p){return new r(p.re>0?Math.floor(p.re):Math.ceil(p.re),p.im>0?Math.floor(p.im):Math.ceil(p.im))},"Complex, number":function(p,d){return new r(p.re>0?a(p.re,d):i(p.re,d),p.im>0?a(p.im,d):i(p.im,d))},"Complex, BigNumber":function(p,d){var h=d.toNumber();return new r(p.re>0?a(p.re,h):i(p.re,h),p.im>0?a(p.im,h):i(p.im,h))},BigNumber:function(p){return p.isNegative()?i(p):a(p)},"BigNumber, number | BigNumber":function(p,d){return p.isNegative()?i(p,d):a(p,d)},bigint:m=>m,"bigint, number":(m,p)=>m,"bigint, BigNumber":(m,p)=>m,Fraction:function(p){return p.s<0n?p.ceil():p.floor()},"Fraction, number | BigNumber":function(p,d){return p.s<0n?i(p,d):a(p,d)},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var b=p.toNumeric(h);return h.multiply(m(b,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>Ke(p,b=>m(b,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>Ke(p,m,!0)),"Array | Matrix, number | BigNumber":e.referToSelf(m=>(p,d)=>Ke(p,h=>m(h,d),!0)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(m=>(p,d)=>c(n(d),p,m,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(m=>(p,d)=>o(p,0)?s(d.size(),d.storage()):d.storage()==="dense"?c(d,p,m,!0):u(d,p,m,!0))})});var U0="floor",NW=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix"],FW=new Zu(10),IW=M(U0,["typed","config","round"],t=>{var{typed:e,config:r,round:n}=t;function i(a){var o=Math.floor(a),s=n(a);return o===s?o:zr(a,s,r.relTol,r.absTol)&&!zr(a,o,r.relTol,r.absTol)?s:o}return e(U0,{number:i,"number, number":function(o,s){if(!He(s))throw new RangeError("number of decimals in function floor must be an integer");if(s<0||s>15)throw new RangeError("number of decimals in floor number must be in range 0 - 15");var l=10**s;return i(o*l)/l}})}),sg=M(U0,NW,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}=t,l=Er({typed:e,equalScalar:a}),u=mr({typed:e,DenseMatrix:s}),c=xn({typed:e}),f=IW({typed:e,config:r,round:n});function m(p){var d=(y,D)=>gn(y,D,r.relTol,r.absTol),h=p.floor(),b=n(p);return h.eq(b)?h:d(p,b)&&!d(p,h)?b:h}return e("floor",{number:f.signatures.number,"number,number":f.signatures["number,number"],Complex:function(d){return d.floor()},"Complex, number":function(d,h){return d.floor(h)},"Complex, BigNumber":function(d,h){return d.floor(h.toNumber())},BigNumber:m,"BigNumber, BigNumber":function(d,h){var b=FW.pow(h);return m(d.mul(b)).div(b)},bigint:p=>p,"bigint, number":(p,d)=>p,"bigint, BigNumber":(p,d)=>p,Fraction:function(d){return d.floor()},"Fraction, number":function(d,h){return d.floor(h)},"Fraction, BigNumber":function(d,h){return d.floor(h.toNumber())},"Unit, number, Unit":e.referToSelf(p=>function(d,h,b){var y=d.toNumeric(b);return b.multiply(p(y,h))}),"Unit, BigNumber, Unit":e.referToSelf(p=>(d,h,b)=>p(d,h.toNumber(),b)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(p=>(d,h,b)=>Ke(d,y=>p(y,h,b),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(p=>(d,h)=>p(d,0,h)),"Array | Matrix":e.referToSelf(p=>d=>Ke(d,p,!0)),"Array, number | BigNumber":e.referToSelf(p=>(d,h)=>Ke(d,b=>p(b,h),!0)),"SparseMatrix, number | BigNumber":e.referToSelf(p=>(d,h)=>l(d,h,p,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(p=>(d,h)=>c(d,h,p,!1)),"number | Complex | Fraction | BigNumber, Array":e.referToSelf(p=>(d,h)=>c(i(h),d,p,!0).valueOf()),"number | Complex | Fraction | BigNumber, Matrix":e.referToSelf(p=>(d,h)=>a(d,0)?o(h.size(),h.storage()):h.storage()==="dense"?c(h,d,p,!0):u(h,d,p,!0))})});var BW="matAlgo02xDS0",kW=["typed","equalScalar"],wn=M(BW,kW,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o,s){var l=i._data,u=i._size,c=i._datatype||i.getDataType(),f=a._values,m=a._index,p=a._ptr,d=a._size,h=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(u.length!==d.length)throw new Et(u.length,d.length);if(u[0]!==d[0]||u[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+d+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var b=u[0],y=u[1],D,v=r,A=0,w=o;typeof c=="string"&&c===h&&c!=="mixed"&&(D=c,v=e.find(r,[D,D]),A=e.convert(0,D),w=e.find(o,[D,D]));for(var x=[],E=[],T=[],_=0;_{var{typed:e}=t;return function(n,i,a,o){var s=n._data,l=n._size,u=n._datatype||n.getDataType(),c=i._values,f=i._index,m=i._ptr,p=i._size,d=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(l.length!==p.length)throw new Et(l.length,p.length);if(l[0]!==p[0]||l[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+p+")");if(!c)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var h=l[0],b=l[1],y,D=0,v=a;typeof u=="string"&&u===d&&u!=="mixed"&&(y=u,D=e.convert(0,y),v=e.find(a,[y,y]));for(var A=[],w=0;w{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,b=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Et(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var y=c[0],D=c[1],v,A=r,w=0,x=o;typeof f=="string"&&f===b&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),x=e.find(o,[v,v]));var E=s&&m?[]:void 0,T=[],_=[],C=E?[]:void 0,N=E?[]:void 0,I=[],R=[],L,V,P,k;for(V=0;V{var{typed:e}=t;return function(i,a,o){var s=i._data,l=i._size,u=i._datatype,c=a._data,f=a._size,m=a._datatype,p=[];if(l.length!==f.length)throw new Et(l.length,f.length);for(var d=0;d0?r(b,0,p,p[0],s,c):[];return i.createDenseMatrix({data:y,size:p,datatype:h})};function r(n,i,a,o,s,l){var u=[];if(i===a.length-1)for(var c=0;cUW(n,r))}function UW(t,e){return Qi(t.size(),e)?t:t.create(Vo(t.valueOf(),e),t.datatype())}var qW="matrixAlgorithmSuite",zW=["typed","matrix"],Ft=M(qW,zW,t=>{var{typed:e,matrix:r}=t,n=FT({typed:e}),i=xn({typed:e});return function(o){var s=o.elop,l=o.SD||o.DS,u;s?(u={"DenseMatrix, DenseMatrix":(p,d)=>n(...Jn(p,d),s),"Array, Array":(p,d)=>n(...Jn(r(p),r(d)),s).valueOf(),"Array, DenseMatrix":(p,d)=>n(...Jn(r(p),d),s),"DenseMatrix, Array":(p,d)=>n(...Jn(p,r(d)),s)},o.SS&&(u["SparseMatrix, SparseMatrix"]=(p,d)=>o.SS(...Jn(p,d),s,!1)),o.DS&&(u["DenseMatrix, SparseMatrix"]=(p,d)=>o.DS(...Jn(p,d),s,!1),u["Array, SparseMatrix"]=(p,d)=>o.DS(...Jn(r(p),d),s,!1)),l&&(u["SparseMatrix, DenseMatrix"]=(p,d)=>l(...Jn(d,p),s,!0),u["SparseMatrix, Array"]=(p,d)=>l(...Jn(r(d),p),s,!0))):(u={"DenseMatrix, DenseMatrix":e.referToSelf(p=>(d,h)=>n(...Jn(d,h),p)),"Array, Array":e.referToSelf(p=>(d,h)=>n(...Jn(r(d),r(h)),p).valueOf()),"Array, DenseMatrix":e.referToSelf(p=>(d,h)=>n(...Jn(r(d),h),p)),"DenseMatrix, Array":e.referToSelf(p=>(d,h)=>n(...Jn(d,r(h)),p))},o.SS&&(u["SparseMatrix, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.SS(...Jn(d,h),p,!1))),o.DS&&(u["DenseMatrix, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.DS(...Jn(d,h),p,!1)),u["Array, SparseMatrix"]=e.referToSelf(p=>(d,h)=>o.DS(...Jn(r(d),h),p,!1))),l&&(u["SparseMatrix, DenseMatrix"]=e.referToSelf(p=>(d,h)=>l(...Jn(h,d),p,!0)),u["SparseMatrix, Array"]=e.referToSelf(p=>(d,h)=>l(...Jn(r(h),d),p,!0))));var c=o.scalar||"any",f=o.Ds||o.Ss;f&&(s?(u["DenseMatrix,"+c]=(p,d)=>i(p,d,s,!1),u[c+", DenseMatrix"]=(p,d)=>i(d,p,s,!0),u["Array,"+c]=(p,d)=>i(r(p),d,s,!1).valueOf(),u[c+", Array"]=(p,d)=>i(r(d),p,s,!0).valueOf()):(u["DenseMatrix,"+c]=e.referToSelf(p=>(d,h)=>i(d,h,p,!1)),u[c+", DenseMatrix"]=e.referToSelf(p=>(d,h)=>i(h,d,p,!0)),u["Array,"+c]=e.referToSelf(p=>(d,h)=>i(r(d),h,p,!1).valueOf()),u[c+", Array"]=e.referToSelf(p=>(d,h)=>i(r(h),d,p,!0).valueOf())));var m=o.sS!==void 0?o.sS:o.Ss;return s?(o.Ss&&(u["SparseMatrix,"+c]=(p,d)=>o.Ss(p,d,s,!1)),m&&(u[c+", SparseMatrix"]=(p,d)=>m(d,p,s,!0))):(o.Ss&&(u["SparseMatrix,"+c]=e.referToSelf(p=>(d,h)=>o.Ss(d,h,p,!1))),m&&(u[c+", SparseMatrix"]=e.referToSelf(p=>(d,h)=>m(h,d,p,!0)))),s&&s.signatures&&Fh(u,s.signatures),u}});var IT="mod",HW=["typed","config","round","matrix","equalScalar","zeros","DenseMatrix","concat"],ug=M(IT,HW,t=>{var{typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s,concat:l}=t,u=sg({typed:e,config:r,round:n,matrix:i,equalScalar:a,zeros:o,DenseMatrix:s}),c=wn({typed:e,equalScalar:a}),f=Ur({typed:e}),m=uu({typed:e,equalScalar:a}),p=Er({typed:e,equalScalar:a}),d=mr({typed:e,DenseMatrix:s}),h=Ft({typed:e,matrix:i,concat:l});return e(IT,{"number, number":b,"BigNumber, BigNumber":function(D,v){return v.isZero()?D:D.sub(v.mul(u(D.div(v))))},"bigint, bigint":function(D,v){if(v===0n)return D;if(D<0){var A=D%v;return A===0n?A:A+v}return D%v},"Fraction, Fraction":function(D,v){return v.equals(0)?D:D.sub(v.mul(u(D.div(v))))}},h({SS:m,DS:f,SD:c,Ss:p,sS:d}));function b(y,D){return D===0?y:y-D*u(y/D)}});var GW="matAlgo01xDSid",WW=["typed"],Ai=M(GW,WW,t=>{var{typed:e}=t;return function(n,i,a,o){var s=n._data,l=n._size,u=n._datatype||n.getDataType(),c=i._values,f=i._index,m=i._ptr,p=i._size,d=i._datatype||i._data===void 0?i._datatype:i.getDataType();if(l.length!==p.length)throw new Et(l.length,p.length);if(l[0]!==p[0]||l[1]!==p[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+p+")");if(!c)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var h=l[0],b=l[1],y=typeof u=="string"&&u!=="mixed"&&u===d?u:void 0,D=y?e.find(a,[y,y]):a,v,A,w=[];for(v=0;v{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,b=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Et(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var y=c[0],D=c[1],v,A=r,w=0,x=o;typeof f=="string"&&f===b&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),x=e.find(o,[v,v]));var E=s&&m?[]:void 0,T=[],_=[],C=s&&m?[]:void 0,N=s&&m?[]:void 0,I=[],R=[],L,V,P,k,W;for(V=0;V{var{typed:e,DenseMatrix:r}=t;return function(i,a,o,s){var l=i._values,u=i._index,c=i._ptr,f=i._size,m=i._datatype;if(!l)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p=f[0],d=f[1],h,b=o;typeof m=="string"&&(h=m,a=e.convert(a,h),b=e.find(o,[h,h]));for(var y=[],D=[],v=[],A=0;AArray.isArray(e))}var PT=M(BT,XW,t=>{var{typed:e,matrix:r,config:n,round:i,equalScalar:a,zeros:o,BigNumber:s,DenseMatrix:l,concat:u}=t,c=ug({typed:e,config:n,round:i,matrix:r,equalScalar:a,zeros:o,DenseMatrix:l,concat:u}),f=Ai({typed:e}),m=Tc({typed:e,equalScalar:a}),p=ra({typed:e,DenseMatrix:l}),d=Ft({typed:e,matrix:r,concat:u});return e(BT,{"number, number":h,"BigNumber, BigNumber":b,"Fraction, Fraction":(y,D)=>y.gcd(D)},d({SS:m,DS:f,Ss:p}),{[QW]:e.referToSelf(y=>(D,v,A)=>{for(var w=y(D,v),x=0;xD=>{if(D.length===1&&Array.isArray(D[0])&&kT(D[0]))return y(...D[0]);if(kT(D))return y(...D);throw new Aa("gcd() supports only 1d matrices!")}),Matrix:e.referToSelf(y=>D=>y(D.toArray()))});function h(y,D){if(!He(y)||!He(D))throw new Error("Parameters in function gcd must be integer numbers");for(var v;D!==0;)v=c(y,D),y=D,D=v;return y<0?-y:y}function b(y,D){if(!y.isInt()||!D.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var v=new s(0);!D.isZero();){var A=c(y,D);y=D,D=A}return y.lt(v)?y.neg():y}});var KW="matAlgo06xS0S0",eY=["typed","equalScalar"],lu=M(KW,eY,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._size,u=i._datatype||i._data===void 0?i._datatype:i.getDataType(),c=a._values,f=a._size,m=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(l.length!==f.length)throw new Et(l.length,f.length);if(l[0]!==f[0]||l[1]!==f[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+f+")");var p=l[0],d=l[1],h,b=r,y=0,D=o;typeof u=="string"&&u===m&&u!=="mixed"&&(h=u,b=e.find(r,[h,h]),y=e.convert(0,h),D=e.find(o,[h,h]));for(var v=s&&c?[]:void 0,A=[],w=[],x=v?[]:void 0,E=[],T=[],_=0;_{var{typed:e,matrix:r,equalScalar:n,concat:i}=t,a=wn({typed:e,equalScalar:n}),o=lu({typed:e,equalScalar:n}),s=Er({typed:e,equalScalar:n}),l=Ft({typed:e,matrix:r,concat:i}),u="number | BigNumber | Fraction | Matrix | Array",c={};return c["".concat(u,", ").concat(u,", ...").concat(u)]=e.referToSelf(m=>(p,d,h)=>{for(var b=m(p,d),y=0;ym.lcm(p)},l({SS:o,DS:a,Ss:s}),c);function f(m,p){if(!m.isInt()||!p.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(m.isZero())return m;if(p.isZero())return p;for(var d=m.times(p);!p.isZero();){var h=p;p=m.mod(h),m=h}return d.div(m).abs()}});function Mc(t,e,r,n){return function(i){if(i>0||r.predictable){if(i<=0)return NaN;var a=i.toString(16),o=a.substring(0,15);return t*(a.length-o.length)+e(+("0x"+o))}return n(i.toNumber())}}var RT="log10",rY=["typed","config","Complex"],nY=ep(16),LT=M(RT,rY,t=>{var{typed:e,config:r,Complex:n}=t;function i(o){return o.log().div(Math.LN10)}function a(o){return i(new n(o,0))}return e(RT,{number:function(s){return s>=0||r.predictable?ep(s):a(s)},bigint:Mc(nY,ep,r,a),Complex:i,BigNumber:function(s){return!s.isNegative()||r.predictable?s.log():a(s.toNumber())},"Array | Matrix":e.referToSelf(o=>s=>Ke(s,o))})});var VT="log2",iY=["typed","config","Complex"],UT=M(VT,iY,t=>{var{typed:e,config:r,Complex:n}=t;function i(o){return a(new n(o,0))}return e(VT,{number:function(s){return s>=0||r.predictable?eg(s):i(s)},bigint:Mc(4,eg,r,i),Complex:a,BigNumber:function(s){return!s.isNegative()||r.predictable?s.log(2):i(s.toNumber())},"Array | Matrix":e.referToSelf(o=>s=>Ke(s,o))});function a(o){var s=Math.sqrt(o.re*o.re+o.im*o.im);return new n(Math.log2?Math.log2(s):Math.log(s)/Math.LN2,Math.atan2(o.im,o.re)/Math.LN2)}});var aY="multiplyScalar",oY=["typed"],qT=M(aY,oY,t=>{var{typed:e}=t;return e("multiplyScalar",{"number, number":Jx,"Complex, Complex":function(n,i){return n.mul(i)},"BigNumber, BigNumber":function(n,i){return n.times(i)},"bigint, bigint":function(n,i){return n*i},"Fraction, Fraction":function(n,i){return n.mul(i)},"number | Fraction | BigNumber | Complex, Unit":(r,n)=>n.multiply(r),"Unit, number | Fraction | BigNumber | Complex | Unit":(r,n)=>r.multiply(n)})});var zT="multiply",sY=["typed","matrix","addScalar","multiplyScalar","equalScalar","dot"],HT=M(zT,sY,t=>{var{typed:e,matrix:r,addScalar:n,multiplyScalar:i,equalScalar:a,dot:o}=t,s=Er({typed:e,equalScalar:a}),l=xn({typed:e});function u(w,x){switch(w.length){case 1:switch(x.length){case 1:if(w[0]!==x[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(w[0]!==x[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+w[0]+") must match Matrix rows ("+x[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+x.length+" dimensions)")}break;case 2:switch(x.length){case 1:if(w[1]!==x[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+w[1]+") must match Vector length ("+x[0]+")");break;case 2:if(w[1]!==x[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+w[1]+") must match Matrix B rows ("+x[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+x.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+w.length+" dimensions)")}}function c(w,x,E){if(E===0)throw new Error("Cannot multiply two empty vectors");return o(w,x)}function f(w,x){if(x.storage()!=="dense")throw new Error("Support for SparseMatrix not implemented");return m(w,x)}function m(w,x){var E=w._data,T=w._size,_=w._datatype||w.getDataType(),C=x._data,N=x._size,I=x._datatype||x.getDataType(),R=T[0],L=N[1],V,P=n,k=i;_&&I&&_===I&&typeof _=="string"&&_!=="mixed"&&(V=_,P=e.find(n,[V,V]),k=e.find(i,[V,V]));for(var W=[],O=0;Obe)for(var Z=0,re=0;re(x,E)=>{u(ct(x),ct(E));var T=w(r(x),r(E));return Ye(T)?T.valueOf():T}),"Matrix, Matrix":function(x,E){var T=x.size(),_=E.size();return u(T,_),T.length===1?_.length===1?c(x,E,T[0]):f(x,E):_.length===1?p(x,E):d(x,E)},"Matrix, Array":e.referTo("Matrix,Matrix",w=>(x,E)=>w(x,r(E))),"Array, Matrix":e.referToSelf(w=>(x,E)=>w(r(x,E.storage()),E)),"SparseMatrix, any":function(x,E){return s(x,E,i,!1)},"DenseMatrix, any":function(x,E){return l(x,E,i,!1)},"any, SparseMatrix":function(x,E){return s(E,x,i,!0)},"any, DenseMatrix":function(x,E){return l(E,x,i,!0)},"Array, any":function(x,E){return l(r(x),E,i,!1).valueOf()},"any, Array":function(x,E){return l(r(E),x,i,!0).valueOf()},"any, any":i,"any, any, ...any":e.referToSelf(w=>(x,E,T)=>{for(var _=w(x,E),C=0;C{var{typed:e,matrix:r,equalScalar:n,BigNumber:i,concat:a}=t,o=Ai({typed:e}),s=wn({typed:e,equalScalar:n}),l=lu({typed:e,equalScalar:n}),u=Er({typed:e,equalScalar:n}),c=Ft({typed:e,matrix:r,concat:a});function f(){throw new Error("Complex number not supported in function nthRoot. Use nthRoots instead.")}return e(GT,{number:i0,"number, number":i0,BigNumber:p=>m(p,new i(2)),"BigNumber, BigNumber":m,Complex:f,"Complex, number":f,Array:e.referTo("DenseMatrix,number",p=>d=>p(r(d),2).valueOf()),DenseMatrix:e.referTo("DenseMatrix,number",p=>d=>p(d,2)),SparseMatrix:e.referTo("SparseMatrix,number",p=>d=>p(d,2)),"SparseMatrix, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return l(d,h,p);throw new Error("Root must be non-zero")}),"DenseMatrix, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return o(d,h,p,!1);throw new Error("Root must be non-zero")}),"Array, SparseMatrix":e.referTo("DenseMatrix,SparseMatrix",p=>(d,h)=>p(r(d),h)),"number | BigNumber, SparseMatrix":e.referToSelf(p=>(d,h)=>{if(h.density()===1)return u(h,d,p,!0);throw new Error("Root must be non-zero")})},c({scalar:"number | BigNumber",SD:s,Ss:u,sS:!1}));function m(p,d){var h=i.precision,b=i.clone({precision:h+2}),y=new i(0),D=new b(1),v=d.isNegative();if(v&&(d=d.neg()),d.isZero())throw new Error("Root must be non-zero");if(p.isNegative()&&!d.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(p.isZero())return v?new b(1/0):0;if(!p.isFinite())return v?y:p;var A=p.abs().pow(D.div(d));return A=p.isNeg()?A.neg():A,new i((v?D.div(A):A).toPrecision(h))}});var YT="sign",lY=["typed","BigNumber","Fraction","complex"],jT=M(YT,lY,t=>{var{typed:e,BigNumber:r,complex:n,Fraction:i}=t;return e(YT,{number:tg,Complex:function(o){return o.im===0?n(tg(o.re)):o.sign()},BigNumber:function(o){return new r(o.cmp(0))},bigint:function(o){return o>0n?1n:o<0n?-1n:0n},Fraction:function(o){return new i(o.s)},"Array | Matrix":e.referToSelf(a=>o=>Ke(o,a,!0)),Unit:e.referToSelf(a=>o=>{if(!o._isDerived()&&o.units[0].unit.offset!==0)throw new TypeError("sign is ambiguous for units with offset");return e.find(a,o.valueType())(o.value)})})});var cY="sqrt",fY=["config","typed","Complex"],ZT=M(cY,fY,t=>{var{config:e,typed:r,Complex:n}=t;return r("sqrt",{number:i,Complex:function(o){return o.sqrt()},BigNumber:function(o){return!o.isNegative()||e.predictable?o.sqrt():i(o.toNumber())},Unit:function(o){return o.pow(.5)}});function i(a){return isNaN(a)?NaN:a>=0||e.predictable?Math.sqrt(a):new n(a,0).sqrt()}});var JT="square",pY=["typed"],XT=M(JT,pY,t=>{var{typed:e}=t;return e(JT,{number:a0,Complex:function(n){return n.mul(n)},BigNumber:function(n){return n.times(n)},bigint:function(n){return n*n},Fraction:function(n){return n.mul(n)},Unit:function(n){return n.pow(2)}})});var QT="subtract",mY=["typed","matrix","equalScalar","subtractScalar","unaryMinus","DenseMatrix","concat"],KT=M(QT,mY,t=>{var{typed:e,matrix:r,equalScalar:n,subtractScalar:i,unaryMinus:a,DenseMatrix:o,concat:s}=t,l=Ai({typed:e}),u=Ur({typed:e}),c=uu({typed:e,equalScalar:n}),f=ra({typed:e,DenseMatrix:o}),m=mr({typed:e,DenseMatrix:o}),p=Ft({typed:e,matrix:r,concat:s});return e(QT,{"any, any":i},p({elop:i,SS:c,DS:l,SD:u,Ss:m,sS:f}))});var eM="xgcd",dY=["typed","config","matrix","BigNumber"],tM=M(eM,dY,t=>{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e(eM,{"number, number":function(s,l){var u=o0(s,l);return r.matrix==="Array"?u:n(u)},"BigNumber, BigNumber":a});function a(o,s){var l,u,c,f=new i(0),m=new i(1),p=f,d=m,h=m,b=f;if(!o.isInt()||!s.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!s.isZero();)u=o.div(s).floor(),c=o.mod(s),l=p,p=d.minus(u.times(p)),d=l,l=h,h=b.minus(u.times(h)),b=l,o=s,s=c;var y;return o.lt(f)?y=[o.neg(),d.neg(),b.neg()]:y=[o,o.isZero()?0:d,b],r.matrix==="Array"?y:n(y)}});var rM="invmod",hY=["typed","config","BigNumber","xgcd","equal","smaller","mod","add","isInteger"],nM=M(rM,hY,t=>{var{typed:e,config:r,BigNumber:n,xgcd:i,equal:a,smaller:o,mod:s,add:l,isInteger:u}=t;return e(rM,{"number, number":c,"BigNumber, BigNumber":c});function c(f,m){if(!u(f)||!u(m))throw new Error("Parameters in function invmod must be integer numbers");if(f=s(f,m),a(m,0))throw new Error("Divisor must be non zero");var p=i(f,m);p=p.valueOf();var[d,h]=p;return a(d,n(1))?(h=s(h,m),o(h,n(0))&&(h=l(h,m)),h):NaN}});var gY="matAlgo09xS0Sf",vY=["typed","equalScalar"],lg=M(gY,vY,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,b=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Et(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");var y=c[0],D=c[1],v,A=r,w=0,x=o;typeof f=="string"&&f===b&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),x=e.find(o,[v,v]));var E=s&&m?[]:void 0,T=[],_=[],C=E?[]:void 0,N=[],I,R,L,V,P;for(R=0;R{var{typed:e,matrix:r,equalScalar:n,multiplyScalar:i,concat:a}=t,o=wn({typed:e,equalScalar:n}),s=lg({typed:e,equalScalar:n}),l=Er({typed:e,equalScalar:n}),u=Ft({typed:e,matrix:r,concat:a});return e(iM,u({elop:i,SS:s,DS:o,Ss:l}))});function oM(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitAnd");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);if(t.isZero()||e.eq(-1)||t.eq(e))return t;if(e.isZero()||t.eq(-1))return e;if(!t.isFinite()||!e.isFinite()){if(!t.isFinite()&&!e.isFinite())return t.isNegative()===e.isNegative()?t:new r(0);if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e;if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t}return z0(t,e,function(n,i){return n&i})}function Cc(t){if(t.isFinite()&&!t.isInteger())throw new Error("Integer expected in function bitNot");var e=t.constructor,r=e.precision;e.config({precision:1e9});var n=t.plus(new e(1));return n.s=-n.s||null,e.config({precision:r}),n}function sM(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitOr");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);var n=new r(-1);return t.isZero()||e.eq(n)||t.eq(e)?e:e.isZero()||t.eq(n)?t:!t.isFinite()||!e.isFinite()?!t.isFinite()&&!t.isNegative()&&e.isNegative()||t.isNegative()&&!e.isNegative()&&!e.isFinite()?n:t.isNegative()&&e.isNegative()?t.isFinite()?t:e:t.isFinite()?e:t:z0(t,e,function(i,a){return i|a})}function z0(t,e,r){var n=t.constructor,i,a,o=+(t.s<0),s=+(e.s<0);if(o){i=cg(Cc(t));for(var l=0;l0;)r(c[--p],f[--d])===h&&(b=b.plus(y)),y=y.times(D);for(;d>0;)r(m,f[--d])===h&&(b=b.plus(y)),y=y.times(D);return n.config({precision:v}),h===0&&(b.s=-b.s),b}function cg(t){for(var e=t.d,r=e[0]+"",n=1;n0)if(++s>u)for(s-=u;s--;)l+="0";else s1&&((c[p+1]===null||c[p+1]===void 0)&&(c[p+1]=0),c[p+1]+=c[p]>>1,c[p]&=1)}return c.reverse()}function uM(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function bitXor");var r=t.constructor;if(t.isNaN()||e.isNaN())return new r(NaN);if(t.isZero())return e;if(e.isZero())return t;if(t.eq(e))return new r(0);var n=new r(-1);return t.eq(n)?Cc(e):e.eq(n)?Cc(t):!t.isFinite()||!e.isFinite()?!t.isFinite()&&!e.isFinite()?n:new r(t.isNegative()===e.isNegative()?1/0:-1/0):z0(t,e,function(i,a){return i^a})}function lM(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function leftShift");var r=t.constructor;return t.isNaN()||e.isNaN()||e.isNegative()&&!e.isZero()?new r(NaN):t.isZero()||e.isZero()?t:!t.isFinite()&&!e.isFinite()?new r(NaN):e.lt(55)?t.times(Math.pow(2,e.toNumber())+""):t.times(new r(2).pow(e))}function cM(t,e){if(t.isFinite()&&!t.isInteger()||e.isFinite()&&!e.isInteger())throw new Error("Integers expected in function rightArithShift");var r=t.constructor;return t.isNaN()||e.isNaN()||e.isNegative()&&!e.isZero()?new r(NaN):t.isZero()||e.isZero()?t:e.isFinite()?e.lt(55)?t.div(Math.pow(2,e.toNumber())+"").floor():t.div(new r(2).pow(e)).floor():t.isNegative()?new r(-1):t.isFinite()?new r(0):new r(NaN)}var fM="bitAnd",bY=["typed","matrix","equalScalar","concat"],fg=M(fM,bY,t=>{var{typed:e,matrix:r,equalScalar:n,concat:i}=t,a=wn({typed:e,equalScalar:n}),o=lu({typed:e,equalScalar:n}),s=Er({typed:e,equalScalar:n}),l=Ft({typed:e,matrix:r,concat:i});return e(fM,{"number, number":u0,"BigNumber, BigNumber":oM,"bigint, bigint":(u,c)=>u&c},l({SS:o,DS:a,Ss:s}))});var pM="bitNot",xY=["typed"],mM=M(pM,xY,t=>{var{typed:e}=t;return e(pM,{number:l0,BigNumber:Cc,bigint:r=>~r,"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var dM="bitOr",wY=["typed","matrix","equalScalar","DenseMatrix","concat"],pg=M(dM,wY,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=Ai({typed:e}),s=Tc({typed:e,equalScalar:n}),l=ra({typed:e,DenseMatrix:i}),u=Ft({typed:e,matrix:r,concat:a});return e(dM,{"number, number":c0,"BigNumber, BigNumber":sM,"bigint, bigint":(c,f)=>c|f},u({SS:s,DS:o,Ss:l}))});var _Y="matAlgo07xSSf",AY=["typed","SparseMatrix"],Bn=M(_Y,AY,t=>{var{typed:e,SparseMatrix:r}=t;return function(a,o,s){var l=a._size,u=a._datatype||a._data===void 0?a._datatype:a.getDataType(),c=o._size,f=o._datatype||o._data===void 0?o._datatype:o.getDataType();if(l.length!==c.length)throw new Et(l.length,c.length);if(l[0]!==c[0]||l[1]!==c[1])throw new RangeError("Dimension mismatch. Matrix A ("+l+") must match Matrix B ("+c+")");var m=l[0],p=l[1],d,h=0,b=s;typeof u=="string"&&u===f&&u!=="mixed"&&(d=u,h=e.convert(0,d),b=e.find(s,[d,d]));for(var y=[],D=[],v=new Array(p+1).fill(0),A=[],w=[],x=[],E=[],T=0;T{var{typed:e,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:a}=t,o=Ur({typed:e}),s=Bn({typed:e,SparseMatrix:a}),l=mr({typed:e,DenseMatrix:n}),u=Ft({typed:e,matrix:r,concat:i});return e(hM,{"number, number":f0,"BigNumber, BigNumber":uM,"bigint, bigint":(c,f)=>c^f},u({SS:s,DS:o,Ss:l}))});var vM="arg",SY=["typed"],yM=M(vM,SY,t=>{var{typed:e}=t;return e(vM,{number:function(n){return Math.atan2(0,n)},BigNumber:function(n){return n.constructor.atan2(0,n)},Complex:function(n){return n.arg()},"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var bM="conj",EY=["typed"],xM=M(bM,EY,t=>{var{typed:e}=t;return e(bM,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.conjugate(),"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var wM="im",TY=["typed"],_M=M(wM,TY,t=>{var{typed:e}=t;return e(wM,{number:()=>0,"BigNumber | Fraction":r=>r.mul(0),Complex:r=>r.im,"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var AM="re",MY=["typed"],DM=M(AM,MY,t=>{var{typed:e}=t;return e(AM,{"number | BigNumber | Fraction":r=>r,Complex:r=>r.re,"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var SM="not",CY=["typed"],EM=M(SM,CY,t=>{var{typed:e}=t;return e(SM,{"null | undefined":()=>!0,number:v0,Complex:function(n){return n.re===0&&n.im===0},BigNumber:function(n){return n.isZero()||n.isNaN()},bigint:r=>!r,Unit:e.referToSelf(r=>n=>e.find(r,n.valueType())(n.value)),"Array | Matrix":e.referToSelf(r=>n=>Ke(n,r))})});var TM="or",NY=["typed","matrix","equalScalar","DenseMatrix","concat"],mg=M(TM,NY,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=Ur({typed:e}),s=uu({typed:e,equalScalar:n}),l=mr({typed:e,DenseMatrix:i}),u=Ft({typed:e,matrix:r,concat:a});return e(TM,{"number, number":rg,"Complex, Complex":function(f,m){return f.re!==0||f.im!==0||m.re!==0||m.im!==0},"BigNumber, BigNumber":function(f,m){return!f.isZero()&&!f.isNaN()||!m.isZero()&&!m.isNaN()},"bigint, bigint":rg,"Unit, Unit":e.referToSelf(c=>(f,m)=>c(f.value||0,m.value||0))},u({SS:s,DS:o,Ss:l}))});var MM="xor",FY=["typed","matrix","DenseMatrix","concat","SparseMatrix"],CM=M(MM,FY,t=>{var{typed:e,matrix:r,DenseMatrix:n,concat:i,SparseMatrix:a}=t,o=Ur({typed:e}),s=Bn({typed:e,SparseMatrix:a}),l=mr({typed:e,DenseMatrix:n}),u=Ft({typed:e,matrix:r,concat:i});return e(MM,{"number, number":ng,"Complex, Complex":function(f,m){return(f.re!==0||f.im!==0)!=(m.re!==0||m.im!==0)},"bigint, bigint":ng,"BigNumber, BigNumber":function(f,m){return(!f.isZero()&&!f.isNaN())!=(!m.isZero()&&!m.isNaN())},"Unit, Unit":e.referToSelf(c=>(f,m)=>c(f.value||0,m.value||0))},u({SS:s,DS:o,Ss:l}))});var NM="concat",IY=["typed","matrix","isInteger"],dg=M(NM,IY,t=>{var{typed:e,matrix:r,isInteger:n}=t;return e(NM,{"...Array | Matrix | number | BigNumber":function(a){var o,s=a.length,l=-1,u,c=!1,f=[];for(o=0;o0&&l>u)throw new Zn(l,u+1)}else{var p=ut(m).valueOf(),d=ct(p);if(f[o]=p,u=l,l=d.length-1,o>0&&l!==u)throw new Et(u+1,l+1)}}if(f.length===0)throw new SyntaxError("At least one matrix expected");for(var h=f.shift();f.length;)h=Hx(h,f.shift(),l);return c?r(h):h},"...string":function(a){return a.join("")}})});var FM="column",BY=["typed","Index","matrix","range"],hg=M(FM,BY,t=>{var{typed:e,Index:r,matrix:n,range:i}=t;return e(FM,{"Matrix, number":a,"Array, number":function(s,l){return a(n(ut(s)),l).valueOf()}});function a(o,s){if(o.size().length!==2)throw new Error("Only two dimensional matrix is supported");Cr(s,o.size()[1]);var l=i(0,o.size()[0]),u=new r(l,s),c=o.subset(u);return Ye(c)?c:n([[c]])}});var IM="count",kY=["typed","size","prod"],BM=M(IM,kY,t=>{var{typed:e,size:r,prod:n}=t;return e(IM,{string:function(a){return a.length},"Matrix | Array":function(a){return n(r(a))}})});var kM="cross",PY=["typed","matrix","subtract","multiply"],PM=M(kM,PY,t=>{var{typed:e,matrix:r,subtract:n,multiply:i}=t;return e(kM,{"Matrix, Matrix":function(s,l){return r(a(s.toArray(),l.toArray()))},"Matrix, Array":function(s,l){return r(a(s.toArray(),l))},"Array, Matrix":function(s,l){return r(a(s,l.toArray()))},"Array, Array":a});function a(o,s){var l=Math.max(ct(o).length,ct(s).length);o=wc(o),s=wc(s);var u=ct(o),c=ct(s);if(u.length!==1||c.length!==1||u[0]!==3||c[0]!==3)throw new RangeError("Vectors with length 3 expected (Size A = ["+u.join(", ")+"], B = ["+c.join(", ")+"])");var f=[n(i(o[1],s[2]),i(o[2],s[1])),n(i(o[2],s[0]),i(o[0],s[2])),n(i(o[0],s[1]),i(o[1],s[0]))];return l>1?[f]:f}});var $M="diag",$Y=["typed","matrix","DenseMatrix","SparseMatrix"],OM=M($M,$Y,t=>{var{typed:e,matrix:r,DenseMatrix:n,SparseMatrix:i}=t;return e($M,{Array:function(u){return a(u,0,ct(u),null)},"Array, number":function(u,c){return a(u,c,ct(u),null)},"Array, BigNumber":function(u,c){return a(u,c.toNumber(),ct(u),null)},"Array, string":function(u,c){return a(u,0,ct(u),c)},"Array, number, string":function(u,c,f){return a(u,c,ct(u),f)},"Array, BigNumber, string":function(u,c,f){return a(u,c.toNumber(),ct(u),f)},Matrix:function(u){return a(u,0,u.size(),u.storage())},"Matrix, number":function(u,c){return a(u,c,u.size(),u.storage())},"Matrix, BigNumber":function(u,c){return a(u,c.toNumber(),u.size(),u.storage())},"Matrix, string":function(u,c){return a(u,0,u.size(),c)},"Matrix, number, string":function(u,c,f){return a(u,c,u.size(),f)},"Matrix, BigNumber, string":function(u,c,f){return a(u,c.toNumber(),u.size(),f)}});function a(l,u,c,f){if(!He(u))throw new TypeError("Second parameter in function diag must be an integer");var m=u>0?u:0,p=u<0?-u:0;switch(c.length){case 1:return o(l,u,f,c[0],p,m);case 2:return s(l,u,f,c,p,m)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function o(l,u,c,f,m,p){var d=[f+m,f+p];if(c&&c!=="sparse"&&c!=="dense")throw new TypeError("Unknown matrix type ".concat(c,'"'));var h=c==="sparse"?i.diagonal(d,l,u):n.diagonal(d,l,u);return c!==null?h:h.valueOf()}function s(l,u,c,f,m,p){if(Ye(l)){var d=l.diagonal(u);return c!==null?c!==d.storage()?r(d,c):d:d.valueOf()}for(var h=Math.min(f[0]-m,f[1]-p),b=[],y=0;y{var{typed:e}=t;return e("filter",{"Array, function":RM,"Matrix, function":function(n,i){return n.create(RM(n.valueOf(),i),n.datatype())},"Array, RegExp":qx,"Matrix, RegExp":function(n,i){return n.create(qx(n.valueOf(),i),n.datatype())}})});function RM(t,e){var r=Ya(e,t,"filter");return r.isUnary?Ux(t,r.fn):Ux(t,function(n,i,a){return r.fn(n,[i],a)})}var LM="flatten",LY=["typed"],VM=M(LM,LY,t=>{var{typed:e}=t;return e(LM,{Array:function(n){return Pt(n)},Matrix:function(n){return n.create(Pt(n.valueOf(),!0),n.datatype())}})});var H0="forEach",VY=["typed"],vg=M(H0,VY,t=>{var{typed:e}=t;return e(H0,{"Array, function":UY,"Matrix, function":function(n,i){n.forEach(i)}})});function UY(t,e){var r=Ya(e,t,H0);Xh(t,r.fn,r.isUnary)}var UM="getMatrixDataType",qY=["typed"],qM=M(UM,qY,t=>{var{typed:e}=t;return e(UM,{Array:function(n){return el(n,ir)},Matrix:function(n){return n.getDataType()}})});var zM="identity",zY=["typed","config","matrix","BigNumber","DenseMatrix","SparseMatrix"],HM=M(zM,zY,t=>{var{typed:e,config:r,matrix:n,BigNumber:i,DenseMatrix:a,SparseMatrix:o}=t;return e(zM,{"":function(){return r.matrix==="Matrix"?n([]):[]},string:function(c){return n(c)},"number | BigNumber":function(c){return l(c,c,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, string":function(c,f){return l(c,c,f)},"number | BigNumber, number | BigNumber":function(c,f){return l(c,f,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber, number | BigNumber, string":function(c,f,m){return l(c,f,m)},Array:function(c){return s(c)},"Array, string":function(c,f){return s(c,f)},Matrix:function(c){return s(c.valueOf(),c.storage())},"Matrix, string":function(c,f){return s(c.valueOf(),f)}});function s(u,c){switch(u.length){case 0:return c?n(c):[];case 1:return l(u[0],u[0],c);case 2:return l(u[0],u[1],c);default:throw new Error("Vector containing two values expected")}}function l(u,c,f){var m=ot(u)||ot(c)?i:null;if(ot(u)&&(u=u.toNumber()),ot(c)&&(c=c.toNumber()),!He(u)||u<1)throw new Error("Parameters in function identity must be positive integers");if(!He(c)||c<1)throw new Error("Parameters in function identity must be positive integers");var p=m?new i(1):1,d=m?new m(0):0,h=[u,c];if(f){if(f==="sparse")return o.diagonal(h,p,0,d);if(f==="dense")return a.diagonal(h,p,0,d);throw new TypeError('Unknown matrix type "'.concat(f,'"'))}for(var b=bo([],h,d),y=u{var{typed:e,matrix:r,multiplyScalar:n}=t;return e(GM,{"Matrix, Matrix":function(o,s){return r(i(o.toArray(),s.toArray()))},"Matrix, Array":function(o,s){return r(i(o.toArray(),s))},"Array, Matrix":function(o,s){return r(i(o,s.toArray()))},"Array, Array":i});function i(a,o){if(ct(a).length===1&&(a=[a]),ct(o).length===1&&(o=[o]),ct(a).length>2||ct(o).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(a.length)+", y = "+JSON.stringify(o.length)+")");var s=[],l=[];return a.map(function(u){return o.map(function(c){return l=[],s.push(l),u.map(function(f){return c.map(function(m){return l.push(n(f,m))})})})})&&s}});var G0="map",GY=["typed"],yg=M(G0,GY,t=>{var{typed:e}=t;return e(G0,{"Array, function":n,"Matrix, function":function(a,o){return a.map(o)},"Array|Matrix, Array|Matrix, ...Array|Matrix|function":(i,a,o)=>r([i,a,...o.slice(0,o.length-1)],o[o.length-1])});function r(i,a){if(typeof a!="function")throw new Error("Last argument must be a callback function");var o=i[0].isMatrix,s=Qf(...i.map(A=>A.isMatrix?A.size():ct(A))),l=o?(A,w)=>A.get(w):Ac,u=o?i.map(A=>A.isMatrix?A.create(Vo(A.toArray(),s),A.datatype()):i[0].create(Vo(A.valueOf(),s))):i.map(A=>A.isMatrix?Vo(A.toArray(),s):Vo(A,s)),c;if(e.isTypedFunction(a)){var f=s.map(()=>0),m=u.map(A=>l(A,f)),p=v(a,m,f,u);c=y(p)}else{var d=i.length,h=D(a,d);c=y(h)}var b=(A,w)=>c([A,...u.slice(1).map(x=>l(x,w))],w);if(o)return u[0].map(b);return n(u[0],b);function y(A){switch(A){case 0:return w=>a(...w);case 1:return(w,x)=>a(...w,x);case 2:return(w,x)=>a(...w,x,...u)}}function D(A,w){return A.length>w+1?2:A.length===w+1?1:0}function v(A,w,x,E){return e.resolve(A,[...w,x,...E])!==null?2:e.resolve(A,[...w,x])!==null?1:(e.resolve(A,w)!==null,0)}}function n(i,a){var o=Ya(a,i,G0);return Kf(i,o.fn,o.isUnary)}});var YM="diff",WY=["typed","matrix","subtract","number"],bg=M(YM,WY,t=>{var{typed:e,matrix:r,subtract:n,number:i}=t;return e(YM,{"Array | Matrix":function(c){return Ye(c)?r(o(c.toArray())):o(c)},"Array | Matrix, number":function(c,f){if(!He(f))throw new RangeError("Dimension must be a whole number");return Ye(c)?r(a(c.toArray(),f)):a(c,f)},"Array, BigNumber":e.referTo("Array,number",u=>(c,f)=>u(c,i(f))),"Matrix, BigNumber":e.referTo("Matrix,number",u=>(c,f)=>u(c,i(f)))});function a(u,c){if(Ye(u)&&(u=u.toArray()),!Array.isArray(u))throw RangeError("Array/Matrix does not have that many dimensions");if(c>0){var f=[];return u.forEach(m=>{f.push(a(m,c-1))}),f}else{if(c===0)return o(u);throw RangeError("Cannot have negative dimension")}}function o(u){for(var c=[],f=u.length,m=1;m{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e("ones",{"":function(){return r.matrix==="Array"?a([]):a([],"default")},"...number | BigNumber | string":function(u){var c=u[u.length-1];if(typeof c=="string"){var f=u.pop();return a(u,f)}else return r.matrix==="Array"?a(u):a(u,"default")},Array:a,Matrix:function(u){var c=u.storage();return a(u.valueOf(),c)},"Array | Matrix, string":function(u,c){return a(u.valueOf(),c)}});function a(l,u){var c=o(l),f=c?new i(1):1;if(s(l),u){var m=n(u);return l.length>0?m.resize(l,f):m}else{var p=[];return l.length>0?bo(p,l,f):p}}function o(l){var u=!1;return l.forEach(function(c,f,m){ot(c)&&(u=!0,m[f]=c.toNumber())}),u}function s(l){l.forEach(function(u){if(typeof u!="number"||!He(u)||u<0)throw new Error("Parameters in function ones must be positive integers")})}});function Nc(){throw new Error('No "bignumber" implementation available')}function xg(){throw new Error('No "fraction" implementation available')}function wg(){throw new Error('No "matrix" implementation available')}var ZM="range",ZY=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],_g=M(ZM,ZY,t=>{var{typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c}=t;return e(ZM,{string:m,"string, boolean":m,number:function(b){throw new TypeError("Too few arguments to function range(): ".concat(b))},boolean:function(b){throw new TypeError("Unexpected type of argument 1 to function range(): ".concat(b,", number|bigint|BigNumber|Fraction"))},"number, number":function(b,y){return f(p(b,y,1,!1))},"number, number, number":function(b,y,D){return f(p(b,y,D,!1))},"number, number, boolean":function(b,y,D){return f(p(b,y,1,D))},"number, number, number, boolean":function(b,y,D,v){return f(p(b,y,D,v))},"bigint, bigint|number":function(b,y){return f(p(b,y,1n,!1))},"number, bigint":function(b,y){return f(p(BigInt(b),y,1n,!1))},"bigint, bigint|number, bigint|number":function(b,y,D){return f(p(b,y,BigInt(D),!1))},"number, bigint, bigint|number":function(b,y,D){return f(p(BigInt(b),y,BigInt(D),!1))},"bigint, bigint|number, boolean":function(b,y,D){return f(p(b,y,1n,D))},"number, bigint, boolean":function(b,y,D){return f(p(BigInt(b),y,1n,D))},"bigint, bigint|number, bigint|number, boolean":function(b,y,D,v){return f(p(b,y,BigInt(D),v))},"number, bigint, bigint|number, boolean":function(b,y,D,v){return f(p(BigInt(b),y,BigInt(D),v))},"BigNumber, BigNumber":function(b,y){var D=b.constructor;return f(p(b,y,new D(1),!1))},"BigNumber, BigNumber, BigNumber":function(b,y,D){return f(p(b,y,D,!1))},"BigNumber, BigNumber, boolean":function(b,y,D){var v=b.constructor;return f(p(b,y,new v(1),D))},"BigNumber, BigNumber, BigNumber, boolean":function(b,y,D,v){return f(p(b,y,D,v))},"Fraction, Fraction":function(b,y){return f(p(b,y,1,!1))},"Fraction, Fraction, Fraction":function(b,y,D){return f(p(b,y,D,!1))},"Fraction, Fraction, boolean":function(b,y,D){return f(p(b,y,1,D))},"Fraction, Fraction, Fraction, boolean":function(b,y,D,v){return f(p(b,y,D,v))},"Unit, Unit, Unit":function(b,y,D){return f(p(b,y,D,!1))},"Unit, Unit, Unit, boolean":function(b,y,D,v){return f(p(b,y,D,v))}});function f(h){return r.matrix==="Matrix"?n?n(h):wg():h}function m(h,b){var y=d(h);if(!y)throw new SyntaxError('String "'+h+'" is no valid range');return r.number==="BigNumber"?(i===void 0&&Nc(),f(p(i(y.start),i(y.end),i(y.step)),b)):f(p(y.start,y.end,y.step,b))}function p(h,b,y,D){for(var v=[],A=c(y)?D?o:a:D?l:s,w=h;A(w,b);)v.push(w),w=u(w,y);return v}function d(h){var b=h.split(":"),y=b.map(function(v){return Number(v)}),D=y.some(function(v){return isNaN(v)});if(D)return null;switch(y.length){case 2:return{start:y[0],end:y[1],step:1};case 3:return{start:y[0],end:y[2],step:y[1]};default:return null}}});var JM="reshape",JY=["typed","isInteger","matrix"],XM=M(JM,JY,t=>{var{typed:e,isInteger:r}=t;return e(JM,{"Matrix, Array":function(i,a){return i.reshape(a,!0)},"Array, Array":function(i,a){return a.forEach(function(o){if(!r(o))throw new TypeError("Invalid size for dimension: "+o)}),Jf(i,a)}})});var XY="resize",QY=["config","matrix"],QM=M(XY,QY,t=>{var{config:e,matrix:r}=t;return function(a,o,s){if(arguments.length!==2&&arguments.length!==3)throw new Aa("resize",arguments.length,2,3);if(Ye(o)&&(o=o.valueOf()),ot(o[0])&&(o=o.map(function(c){return ot(c)?c.toNumber():c})),Ye(a))return a.resize(o,s,!0);if(typeof a=="string")return n(a,o,s);var l=Array.isArray(a)?!1:e.matrix!=="Array";if(o.length===0){for(;Array.isArray(a);)a=a[0];return ut(a)}else{Array.isArray(a)||(a=[a]),a=ut(a);var u=bo(a,o,s);return l?r(u):u}};function n(i,a,o){if(o!==void 0){if(typeof o!="string"||o.length!==1)throw new TypeError("Single character expected as defaultValue")}else o=" ";if(a.length!==1)throw new Et(a.length,1);var s=a[0];if(typeof s!="number"||!He(s))throw new TypeError("Invalid size, must contain positive integers (size: "+Dt(a)+")");if(i.length>s)return i.substring(0,s);if(i.length{var{typed:e,multiply:r,rotationMatrix:n}=t;return e(KM,{"Array , number | BigNumber | Complex | Unit":function(o,s){i(o,2);var l=r(n(s),o);return l.toArray()},"Matrix , number | BigNumber | Complex | Unit":function(o,s){return i(o,2),r(n(s),o)},"Array, number | BigNumber | Complex | Unit, Array | Matrix":function(o,s,l){i(o,3);var u=r(n(s,l),o);return u},"Matrix, number | BigNumber | Complex | Unit, Array | Matrix":function(o,s,l){return i(o,3),r(n(s,l),o)}});function i(a,o){var s=Array.isArray(a)?ct(a):a.size();if(s.length>2)throw new RangeError("Vector must be of dimensions 1x".concat(o));if(s.length===2&&s[1]!==1)throw new RangeError("Vector must be of dimensions 1x".concat(o));if(s[0]!==o)throw new RangeError("Vector must be of dimensions 1x".concat(o))}});var tC="rotationMatrix",ej=["typed","config","multiplyScalar","addScalar","unaryMinus","norm","matrix","BigNumber","DenseMatrix","SparseMatrix","cos","sin"],rC=M(tC,ej,t=>{var{typed:e,config:r,multiplyScalar:n,addScalar:i,unaryMinus:a,norm:o,BigNumber:s,matrix:l,DenseMatrix:u,SparseMatrix:c,cos:f,sin:m}=t;return e(tC,{"":function(){return r.matrix==="Matrix"?l([]):[]},string:function(v){return l(v)},"number | BigNumber | Complex | Unit":function(v){return p(v,r.matrix==="Matrix"?"dense":void 0)},"number | BigNumber | Complex | Unit, string":function(v,A){return p(v,A)},"number | BigNumber | Complex | Unit, Array":function(v,A){var w=l(A);return d(w),y(v,w,void 0)},"number | BigNumber | Complex | Unit, Matrix":function(v,A){d(A);var w=A.storage()||(r.matrix==="Matrix"?"dense":void 0);return y(v,A,w)},"number | BigNumber | Complex | Unit, Array, string":function(v,A,w){var x=l(A);return d(x),y(v,x,w)},"number | BigNumber | Complex | Unit, Matrix, string":function(v,A,w){return d(A),y(v,A,w)}});function p(D,v){var A=ot(D),w=A?new s(-1):-1,x=f(D),E=m(D),T=[[x,n(w,E)],[E,x]];return b(T,v)}function d(D){var v=D.size();if(v.length<1||v[0]!==3)throw new RangeError("Vector must be of dimensions 1x3")}function h(D){return D.reduce((v,A)=>n(v,A))}function b(D,v){if(v){if(v==="sparse")return new c(D);if(v==="dense")return new u(D);throw new TypeError('Unknown matrix type "'.concat(v,'"'))}return D}function y(D,v,A){var w=o(v);if(w===0)throw new RangeError("Rotation around zero vector");var x=ot(D)?s:null,E=x?new x(1):1,T=x?new x(-1):-1,_=x?new x(v.get([0])/w):v.get([0])/w,C=x?new x(v.get([1])/w):v.get([1])/w,N=x?new x(v.get([2])/w):v.get([2])/w,I=f(D),R=i(E,a(I)),L=m(D),V=i(I,h([_,_,R])),P=i(h([_,C,R]),h([T,N,L])),k=i(h([_,N,R]),h([C,L])),W=i(h([_,C,R]),h([N,L])),O=i(I,h([C,C,R])),Q=i(h([C,N,R]),h([T,_,L])),ne=i(h([_,N,R]),h([T,C,L])),X=i(h([C,N,R]),h([_,L])),U=i(I,h([N,N,R])),fe=[[V,P,k],[W,O,Q],[ne,X,U]];return b(fe,A)}});var nC="row",tj=["typed","Index","matrix","range"],Ag=M(nC,tj,t=>{var{typed:e,Index:r,matrix:n,range:i}=t;return e(nC,{"Matrix, number":a,"Array, number":function(s,l){return a(n(ut(s)),l).valueOf()}});function a(o,s){if(o.size().length!==2)throw new Error("Only two dimensional matrix is supported");Cr(s,o.size()[0]);var l=i(0,o.size()[1]),u=new r(s,l),c=o.subset(u);return Ye(c)?c:n([[c]])}});var iC="size",rj=["typed","config","?matrix"],aC=M(iC,rj,t=>{var{typed:e,config:r,matrix:n}=t;return e(iC,{Matrix:function(a){return a.create(a.size(),"number")},Array:ct,string:function(a){return r.matrix==="Array"?[a.length]:n([a.length],"dense","number")},"number | Complex | BigNumber | Unit | boolean | null":function(a){return r.matrix==="Array"?[]:n?n([],"dense","number"):wg()}})});var oC="squeeze",nj=["typed"],sC=M(oC,nj,t=>{var{typed:e}=t;return e(oC,{Array:function(n){return wc(ut(n))},Matrix:function(n){var i=wc(n.toArray());return Array.isArray(i)?n.create(i,n.datatype()):i},any:function(n){return ut(n)}})});var uC="subset",ij=["typed","matrix","zeros","add"],Dg=M(uC,ij,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t;return e(uC,{"Matrix, Index":function(s,l){return Ku(l)?r():(Zf(s,l),s.subset(l))},"Array, Index":e.referTo("Matrix, Index",function(o){return function(s,l){var u=o(r(s),l);return l.isScalar()?u:u.valueOf()}}),"Object, Index":oj,"string, Index":aj,"Matrix, Index, any, any":function(s,l,u,c){return Ku(l)?s:(Zf(s,l),s.clone().subset(l,a(u,l),c))},"Array, Index, any, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u,c){var f=o(r(s),l,u,c);return f.isMatrix?f.valueOf():f}}),"Array, Index, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u){return o(r(s),l,u,void 0).valueOf()}}),"Matrix, Index, any":e.referTo("Matrix, Index, any, any",function(o){return function(s,l,u){return o(s,l,u,void 0)}}),"string, Index, string":lC,"string, Index, string, string":lC,"Object, Index, any":sj});function a(o,s){if(typeof o=="string")throw new Error("can't boradcast a string");if(s._isScalar)return o;var l=s.size();if(l.every(u=>u>0))try{return i(o,n(l))}catch{return o}else return o}});function aj(t,e){if(!$o(e))throw new TypeError("Index expected");if(Ku(e))return"";if(Zf(Array.from(t),e),e.size().length!==1)throw new Et(e.size().length,1);var r=t.length;Cr(e.min()[0],r),Cr(e.max()[0],r);var n=e.dimension(0),i="";return n.forEach(function(a){i+=t.charAt(a)}),i}function lC(t,e,r,n){if(!e||e.isIndex!==!0)throw new TypeError("Index expected");if(Ku(e))return t;if(Zf(Array.from(t),e),e.size().length!==1)throw new Et(e.size().length,1);if(n!==void 0){if(typeof n!="string"||n.length!==1)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=e.dimension(0),a=i.size()[0];if(a!==r.length)throw new Et(i.size()[0],r.length);var o=t.length;Cr(e.min()[0]),Cr(e.max()[0]);for(var s=[],l=0;lo)for(var u=o-1,c=s.length;u{var{typed:e,matrix:r}=t;return e(cC,{Array:o=>n(r(o)).valueOf(),Matrix:n,any:ut});function n(o){var s=o.size(),l;switch(s.length){case 1:l=o.clone();break;case 2:{var u=s[0],c=s[1];if(c===0)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+Dt(s)+")");switch(o.storage()){case"dense":l=i(o,u,c);break;case"sparse":l=a(o,u,c);break}}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+Dt(s)+")")}return l}function i(o,s,l){for(var u=o._data,c=[],f,m=0;m{var{typed:e,transpose:r,conj:n}=t;return e(pC,{any:function(a){return n(r(a))}})});var dC="zeros",cj=["typed","config","matrix","BigNumber"],hC=M(dC,cj,t=>{var{typed:e,config:r,matrix:n,BigNumber:i}=t;return e(dC,{"":function(){return r.matrix==="Array"?a([]):a([],"default")},"...number | BigNumber | string":function(u){var c=u[u.length-1];if(typeof c=="string"){var f=u.pop();return a(u,f)}else return r.matrix==="Array"?a(u):a(u,"default")},Array:a,Matrix:function(u){var c=u.storage();return a(u.valueOf(),c)},"Array | Matrix, string":function(u,c){return a(u.valueOf(),c)}});function a(l,u){var c=o(l),f=c?new i(0):0;if(s(l),u){var m=n(u);return l.length>0?m.resize(l,f):m}else{var p=[];return l.length>0?bo(p,l,f):p}}function o(l){var u=!1;return l.forEach(function(c,f,m){ot(c)&&(u=!0,m[f]=c.toNumber())}),u}function s(l){l.forEach(function(u){if(typeof u!="number"||!He(u)||u<0)throw new Error("Parameters in function zeros must be positive integers")})}});var gC="fft",fj=["typed","matrix","addScalar","multiplyScalar","divideScalar","exp","tau","i","dotDivide","conj","pow","ceil","log2"],vC=M(gC,fj,t=>{var{typed:e,matrix:r,addScalar:n,multiplyScalar:i,divideScalar:a,exp:o,tau:s,i:l,dotDivide:u,conj:c,pow:f,ceil:m,log2:p}=t;return e(gC,{Array:d,Matrix:function(v){return v.create(d(v.valueOf()),v.datatype())}});function d(D){var v=ct(D);return v.length===1?y(D,v[0]):h(D.map(A=>d(A,v.slice(1))),0)}function h(D,v){var A=ct(D);if(v!==0)return new Array(A[0]).fill(0).map((x,E)=>h(D[E],v-1));if(A.length===1)return y(D);function w(x){var E=ct(x);return new Array(E[1]).fill(0).map((T,_)=>new Array(E[0]).fill(0).map((C,N)=>x[N][_]))}return w(h(w(D),1))}function b(D){for(var v=D.length,A=o(a(i(-1,i(l,s)),v)),w=[],x=1-v;xi(D[k],w[v-1+k])),...new Array(E-v).fill(0)],_=[...new Array(v+v-1).fill(0).map((P,k)=>a(1,w[k])),...new Array(E-(v+v-1)).fill(0)],C=y(T),N=y(_),I=new Array(E).fill(0).map((P,k)=>i(C[k],N[k])),R=u(c(d(c(I))),E),L=[],V=v-1;V_%2===0),v/2),...y(D.filter((T,_)=>_%2===1),v/2)],w=0;w{var{typed:e,fft:r,dotDivide:n,conj:i}=t;return e(yC,{"Array | Matrix":function(o){var s=Ye(o)?o.size():ct(o);return n(i(r(i(o))),s.reduce((l,u)=>l*u,1))}})});function rl(t){"@babel/helpers - typeof";return rl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rl(t)}function xC(t,e){if(rl(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(rl(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function wC(t){var e=xC(t,"string");return rl(e)=="symbol"?e:e+""}function dr(t,e,r){return(e=wC(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _C(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function mj(t){for(var e=1;e{var{typed:e,add:r,subtract:n,multiply:i,divide:a,max:o,map:s,abs:l,isPositive:u,isNegative:c,larger:f,smaller:m,matrix:p,bignumber:d,unaryMinus:h}=t;function b(T){return function(_,C,N,I){var R=!(C.length===2&&(C.every(x)||C.every(En)));if(R)throw new Error('"tspan" must be an Array of two numeric values or two units [tStart, tEnd]');var L=C[0],V=C[1],P=f(V,L),k=I.firstStep;if(k!==void 0&&!u(k))throw new Error('"firstStep" must be positive');var W=I.maxStep;if(W!==void 0&&!u(W))throw new Error('"maxStep" must be positive');var O=I.minStep;if(O&&c(O))throw new Error('"minStep" must be positive or zero');var Q=[L,V,k,O,W].filter(wt=>wt!==void 0);if(!(Q.every(x)||Q.every(En)))throw new Error('Inconsistent type of "t" dependant variables');for(var ne=1,X=I.tol?I.tol:1e-4,U=I.minDelta?I.minDelta:.2,fe=I.maxDelta?I.maxDelta:5,xe=I.maxIter?I.maxIter:1e4,oe=[L,V,...N,W,O].some(ot),[be,ee,Z,re]=oe?[d(T.a),d(T.c),d(T.b),d(T.bp)]:[T.a,T.c,T.b,T.bp],me=k?P?k:h(k):a(n(V,L),ne),ce=[L],Ae=[N],we=n(Z,re),G=0,J=0,ge=A(P),ye=w(P);ge(ce[G],V);){var De=[];me=ye(ce[G],V,me),De.push(_(ce[G],Ae[G]));for(var Ie=1;IeEn(wt)?wt.value:wt)));Oe1/4&&(ce.push(r(ce[G],me)),Ae.push(r(Ae[G],i(me,Z,De))),G++);var Je=.84*(X/Oe)**(1/5);if(m(Je,U)?Je=U:f(Je,fe)&&(Je=fe),Je=oe?d(Je):Je,me=i(me,Je),W&&f(l(me),W)?me=P?W:h(W):O&&m(l(me),O)&&(me=P?O:h(O)),J++,J>xe)throw new Error("Maximum number of iterations reached, try changing options")}return{t:ce,y:Ae}}}function y(T,_,C,N){var I=[[],[.5],[0,.75],[.2222222222222222,.3333333333333333,.4444444444444444]],R=[null,1/2,3/4,1],L=[2/9,1/3,4/9,0],V=[7/24,1/4,1/3,1/8],P={a:I,c:R,b:L,bp:V};return b(P)(T,_,C,N)}function D(T,_,C,N){var I=[[],[.2],[.075,.225],[.9777777777777777,-3.7333333333333334,3.5555555555555554],[2.9525986892242035,-11.595793324188385,9.822892851699436,-.2908093278463649],[2.8462752525252526,-10.757575757575758,8.906422717743473,.2784090909090909,-.2735313036020583],[.09114583333333333,0,.44923629829290207,.6510416666666666,-.322376179245283,.13095238095238096]],R=[null,1/5,3/10,4/5,8/9,1,1],L=[35/384,0,500/1113,125/192,-2187/6784,11/84,0],V=[5179/57600,0,7571/16695,393/640,-92097/339200,187/2100,1/40],P={a:I,c:R,b:L,bp:V};return b(P)(T,_,C,N)}function v(T,_,C,N){var I=N.method?N.method:"RK45",R={RK23:y,RK45:D};if(I.toUpperCase()in R){var L=mj({},N);return delete L.method,R[I.toUpperCase()](T,_,C,L)}else{var V=Object.keys(R).map(k=>'"'.concat(k,'"')),P="".concat(V.slice(0,-1).join(", ")," and ").concat(V.slice(-1));throw new Error('Unavailable method "'.concat(I,'". Available methods are ').concat(P))}}function A(T){return T?m:f}function w(T){var _=T?f:m;return function(C,N,I){var R=r(C,I);return _(R,N)?n(N,C):I}}function x(T){return ot(T)||bt(T)}function E(T,_,C,N){var I=v(T,_.toArray(),C.toArray(),N);return{t:p(I.t),y:p(I.y)}}return e("solveODE",{"function, Array, Array, Object":v,"function, Matrix, Matrix, Object":E,"function, Array, Array":(T,_,C)=>v(T,_,C,{}),"function, Matrix, Matrix":(T,_,C)=>E(T,_,C,{}),"function, Array, number | BigNumber | Unit":(T,_,C)=>{var N=v(T,_,[C],{});return{t:N.t,y:N.y.map(I=>I[0])}},"function, Matrix, number | BigNumber | Unit":(T,_,C)=>{var N=v(T,_.toArray(),[C],{});return{t:p(N.t),y:p(N.y.map(I=>I[0]))}},"function, Array, number | BigNumber | Unit, Object":(T,_,C,N)=>{var I=v(T,_,[C],N);return{t:I.t,y:I.y.map(R=>R[0])}},"function, Matrix, number | BigNumber | Unit, Object":(T,_,C,N)=>{var I=v(T,_.toArray(),[C],N);return{t:p(I.t),y:p(I.y.map(R=>R[0]))}}})});var gj="erf",vj=["typed"],DC=M(gj,vj,t=>{var{typed:e}=t;return e("name",{number:function(o){var s=Math.abs(o);return s>=xj?Ha(o):s<=yj?Ha(o)*r(s):s<=4?Ha(o)*(1-n(s)):Ha(o)*(1-i(s))},"Array | Matrix":e.referToSelf(a=>o=>Ke(o,a))});function r(a){var o=a*a,s=Ts[0][4]*o,l=o,u;for(u=0;u<3;u+=1)s=(s+Ts[0][u])*o,l=(l+Fc[0][u])*o;return a*(s+Ts[0][3])/(l+Fc[0][3])}function n(a){var o=Ts[1][8]*a,s=a,l;for(l=0;l<7;l+=1)o=(o+Ts[1][l])*a,s=(s+Fc[1][l])*a;var u=(o+Ts[1][7])/(s+Fc[1][7]),c=parseInt(a*16)/16,f=(a-c)*(a+c);return Math.exp(-c*c)*Math.exp(-f)*u}function i(a){var o=1/(a*a),s=Ts[2][5]*o,l=o,u;for(u=0;u<4;u+=1)s=(s+Ts[2][u])*o,l=(l+Fc[2][u])*o;var c=o*(s+Ts[2][4])/(l+Fc[2][4]);c=(bj-c)/a,o=parseInt(a*16)/16;var f=(a-o)*(a+o);return Math.exp(-o*o)*Math.exp(-f)*c}}),yj=.46875,bj=.5641895835477563,Ts=[[3.1611237438705655,113.86415415105016,377.485237685302,3209.3775891384694,.18577770618460315],[.5641884969886701,8.883149794388377,66.11919063714163,298.6351381974001,881.952221241769,1712.0476126340707,2051.0783778260716,1230.3393547979972,21531153547440383e-24],[.30532663496123236,.36034489994980445,.12578172611122926,.016083785148742275,.0006587491615298378,.016315387137302097]],Fc=[[23.601290952344122,244.02463793444417,1282.6165260773723,2844.236833439171],[15.744926110709835,117.6939508913125,537.1811018620099,1621.3895745666903,3290.7992357334597,4362.619090143247,3439.3676741437216,1230.3393548037495],[2.568520192289822,1.8729528499234604,.5279051029514285,.06051834131244132,.0023352049762686918]],xj=Math.pow(2,53);var SC="zeta",wj=["typed","config","multiply","pow","divide","factorial","equal","smallerEq","isNegative","gamma","sin","subtract","add","?Complex","?BigNumber","pi"],EC=M(SC,wj,t=>{var{typed:e,config:r,multiply:n,pow:i,divide:a,factorial:o,equal:s,smallerEq:l,isNegative:u,gamma:c,sin:f,subtract:m,add:p,Complex:d,BigNumber:h,pi:b}=t;return e(SC,{number:x=>y(x,E=>E,()=>20),BigNumber:x=>y(x,E=>new h(E),()=>Math.abs(Math.log10(r.relTol))),Complex:D});function y(x,E,T){return s(x,0)?E(-.5):s(x,1)?E(NaN):isFinite(x)?v(x,E,T,_=>_):u(x)?E(NaN):E(1)}function D(x){return x.re===0&&x.im===0?new d(-.5):x.re===1?new d(NaN,NaN):x.re===1/0&&x.im===0?new d(1):x.im===1/0||x.re===-1/0?new d(NaN,NaN):v(x,E=>E,E=>Math.round(1.3*15+.9*Math.abs(E.im)),E=>E.re)}function v(x,E,T,_){var C=T(x);if(_(x)>-(C-1)/2)return w(x,E(C),E);var N=n(i(2,x),i(E(b),m(x,1)));return N=n(N,f(n(a(E(b),2),x))),N=n(N,c(m(1,x))),n(N,v(m(1,x),E,T,_))}function A(x,E){for(var T=x,_=x;l(_,E);_=p(_,1)){var C=a(n(o(p(E,m(_,1))),i(4,_)),n(o(m(E,_)),o(n(2,_))));T=p(T,C)}return n(E,T)}function w(x,E,T){for(var _=a(1,n(A(T(0),E),m(1,i(2,m(1,x))))),C=T(0),N=T(1);l(N,E);N=p(N,1))C=p(C,a(n((-1)**(N-1),A(N,E)),i(N,x)));return n(_,C)}});var TC="mode",_j=["typed","isNaN","isNumeric"],MC=M(TC,_j,t=>{var{typed:e,isNaN:r,isNumeric:n}=t;return e(TC,{"Array | Matrix":i,"...":function(o){return i(o)}});function i(a){a=Pt(a.valueOf());var o=a.length;if(o===0)throw new Error("Cannot calculate mode of an empty array");for(var s={},l=[],u=0,c=0;cu&&(u=s[f],l=[f])}return l}});function pn(t,e,r){var n;return String(t).includes("Unexpected type")?(n=arguments.length>2?" (type: "+ir(r)+", value: "+JSON.stringify(r)+")":" (type: "+t.data.actual+")",new TypeError("Cannot calculate "+e+", unexpected type of argument"+n)):String(t).includes("complex numbers")?(n=arguments.length>2?" (type: "+ir(r)+", value: "+JSON.stringify(r)+")":"",new TypeError("Cannot calculate "+e+", no ordering relation is defined for complex numbers"+n)):t}var CC="prod",Aj=["typed","config","multiplyScalar","numeric"],NC=M(CC,Aj,t=>{var{typed:e,config:r,multiplyScalar:n,numeric:i}=t;return e(CC,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(s,l){throw new Error("prod(A, dim) is not yet supported")},"...":function(s){return a(s)}});function a(o){var s;if(Oi(o,function(l){try{s=s===void 0?l:n(s,l)}catch(u){throw pn(u,"prod",l)}}),typeof s=="string"&&(s=i(s,xi(s,r))),s===void 0)throw new Error("Cannot calculate prod of an empty array");return s}});var FC="format",Dj=["typed"],IC=M(FC,Dj,t=>{var{typed:e}=t;return e(FC,{any:Dt,"any, Object | function | number | BigNumber":Dt})});var BC="bin",Sj=["typed","format"],kC=M(BC,Sj,t=>{var{typed:e,format:r}=t;return e(BC,{"number | BigNumber":function(i){return r(i,{notation:"bin"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"bin",wordSize:a})}})});var PC="oct",Ej=["typed","format"],$C=M(PC,Ej,t=>{var{typed:e,format:r}=t;return e(PC,{"number | BigNumber":function(i){return r(i,{notation:"oct"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"oct",wordSize:a})}})});var OC="hex",Tj=["typed","format"],RC=M(OC,Tj,t=>{var{typed:e,format:r}=t;return e(OC,{"number | BigNumber":function(i){return r(i,{notation:"hex"})},"number | BigNumber, number | BigNumber":function(i,a){return r(i,{notation:"hex",wordSize:a})}})});var Sg=/\$([\w.]+)/g;var LC="print",Mj=["typed"],Eg=M(LC,Mj,t=>{var{typed:e}=t;return e(LC,{"string, Object | Array":VC,"string, Object | Array, number | Object":VC})});function VC(t,e,r){return t.replace(Sg,function(n,i){var a=i.split("."),o=e[a.shift()];for(o!==void 0&&o.isMatrix&&(o=o.toArray());a.length&&o!==void 0;){var s=a.shift();o=s?o[s]:o+"."}return o!==void 0?Jr(o)?o:Dt(o,r):n})}var UC="to",Cj=["typed","matrix","concat"],qC=M(UC,Cj,t=>{var{typed:e,matrix:r,concat:n}=t,i=Ft({typed:e,matrix:r,concat:n});return e(UC,{"Unit, Unit | string":(a,o)=>a.to(o)},i({Ds:!0}))});var zC="isPrime",Nj=["typed"],HC=M(zC,Nj,t=>{var{typed:e}=t;return e(zC,{number:function(n){if(n<=3)return n>1;if(n%2===0||n%3===0)return!1;for(var i=5;i*i<=n;i+=6)if(n%i===0||n%(i+2)===0)return!1;return!0},bigint:function(n){if(n<=3n)return n>1n;if(n%2n===0n||n%3n===0n)return!1;for(var i=5n;i*i<=n;i+=6n)if(n%i===0n||n%(i+2n)===0n)return!1;return!0},BigNumber:function(n){if(n.lte(3))return n.gt(1);if(n.mod(2).eq(0)||n.mod(3).eq(0))return!1;if(n.lt(Math.pow(2,32))){for(var i=n.toNumber(),a=5;a*a<=i;a+=6)if(i%a===0||i%(a+2)===0)return!1;return!0}function o(D,v,A){for(var w=1;!v.eq(0);)v.mod(2).eq(0)?(v=v.div(2),D=D.mul(D).mod(A)):(v=v.sub(1),w=D.mul(w).mod(A));return w}var s=n.constructor.clone({precision:n.toFixed(0).length*2});n=new s(n);for(var l=0,u=n.sub(1);u.mod(2).eq(0);)u=u.div(2),l+=1;var c=null;if(n.lt("3317044064679887385961981"))c=[2,3,5,7,11,13,17,19,23,29,31,37,41].filter(D=>Dn=>Ke(n,r))})});var Fj="numeric",Ij=["number","?bignumber","?fraction"],GC=M(Fj,Ij,t=>{var{number:e,bignumber:r,fraction:n}=t,i={string:!0,number:!0,BigNumber:!0,Fraction:!0},a={number:o=>e(o),BigNumber:r?o=>r(o):Nc,bigint:o=>BigInt(o),Fraction:n?o=>n(o):xg};return function(s){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"number",u=arguments.length>2?arguments[2]:void 0;if(u!==void 0)throw new SyntaxError("numeric() takes one or two arguments");var c=ir(s);if(!(c in i))throw new TypeError("Cannot convert "+s+' of type "'+c+'"; valid input types are '+Object.keys(i).join(", "));if(!(l in a))throw new TypeError("Cannot convert "+s+' to type "'+l+'"; valid output types are '+Object.keys(a).join(", "));return l===c?s:a[l](s)}});var WC="divideScalar",Bj=["typed","numeric"],YC=M(WC,Bj,t=>{var{typed:e,numeric:r}=t;return e(WC,{"number, number":function(i,a){return i/a},"Complex, Complex":function(i,a){return i.div(a)},"BigNumber, BigNumber":function(i,a){return i.div(a)},"bigint, bigint":function(i,a){return i/a},"Fraction, Fraction":function(i,a){return i.div(a)},"Unit, number | Complex | Fraction | BigNumber | Unit":(n,i)=>n.divide(i),"number | Fraction | Complex | BigNumber, Unit":(n,i)=>i.divideInto(n)})});var jC="pow",kj=["typed","config","identity","multiply","matrix","inv","fraction","number","Complex"],ZC=M(jC,kj,t=>{var{typed:e,config:r,identity:n,multiply:i,matrix:a,inv:o,number:s,fraction:l,Complex:u}=t;return e(jC,{"number, number":c,"Complex, Complex":function(d,h){return d.pow(h)},"BigNumber, BigNumber":function(d,h){return h.isInteger()||d>=0||r.predictable?d.pow(h):new u(d.toNumber(),0).pow(h.toNumber(),0)},"bigint, bigint":(p,d)=>p**d,"Fraction, Fraction":function(d,h){var b=d.pow(h);if(b!=null)return b;if(r.predictable)throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");return c(d.valueOf(),h.valueOf())},"Array, number":f,"Array, BigNumber":function(d,h){return f(d,h.toNumber())},"Matrix, number":m,"Matrix, BigNumber":function(d,h){return m(d,h.toNumber())},"Unit, number | BigNumber":function(d,h){return d.pow(h)}});function c(p,d){if(r.predictable&&!He(d)&&p<0)try{var h=l(d),b=s(h);if((d===b||Math.abs((d-b)/d)<1e-14)&&h.d%2n===1n)return(h.n%2n===0n?1:-1)*Math.pow(-p,d)}catch{}return r.predictable&&(p<-1&&d===1/0||p>-1&&p<0&&d===-1/0)?NaN:He(d)||p>=0||r.predictable?s0(p,d):p*p<1&&d===1/0||p*p>1&&d===-1/0?0:new u(p,0).pow(d,0)}function f(p,d){if(!He(d))throw new TypeError("For A^b, b must be an integer (value is "+d+")");var h=ct(p);if(h.length!==2)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!==h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");if(d<0)try{return f(o(p),-d)}catch(D){throw D.message==="Cannot calculate inverse, determinant is zero"?new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is "+d+")"):D}for(var b=n(h[0]).valueOf(),y=p;d>=1;)(d&1)===1&&(b=i(y,b)),d>>=1,y=i(y,y);return b}function m(p,d){return a(f(p.valueOf(),d))}});var Ic="Number of decimals in function round must be an integer",JC="round",Pj=["typed","config","matrix","equalScalar","zeros","BigNumber","DenseMatrix"],XC=M(JC,Pj,t=>{var{typed:e,config:r,matrix:n,equalScalar:i,zeros:a,BigNumber:o,DenseMatrix:s}=t,l=Er({typed:e,equalScalar:i}),u=mr({typed:e,DenseMatrix:s}),c=xn({typed:e});function f(m){return Math.abs(gc(m).exponent)}return e(JC,{number:function(p){var d=Sc(p,f(r.relTol)),h=zr(p,d,r.relTol,r.absTol)?d:p;return Sc(h)},"number, number":function(p,d){var h=f(r.relTol);if(d>=h)return Sc(p,d);var b=Sc(p,h),y=zr(p,b,r.relTol,r.absTol)?b:p;return Sc(y,d)},"number, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Ic);return new o(p).toDecimalPlaces(d.toNumber())},Complex:function(p){return p.round()},"Complex, number":function(p,d){if(d%1)throw new TypeError(Ic);return p.round(d)},"Complex, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Ic);var h=d.toNumber();return p.round(h)},BigNumber:function(p){var d=new o(p).toDecimalPlaces(f(r.relTol)),h=gn(p,d,r.relTol,r.absTol)?d:p;return h.toDecimalPlaces(0)},"BigNumber, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Ic);var h=f(r.relTol);if(d>=h)return p.toDecimalPlaces(d.toNumber());var b=p.toDecimalPlaces(h),y=gn(p,b,r.relTol,r.absTol)?b:p;return y.toDecimalPlaces(d.toNumber())},bigint:m=>m,"bigint, number":(m,p)=>m,"bigint, BigNumber":(m,p)=>m,Fraction:function(p){return p.round()},"Fraction, number":function(p,d){if(d%1)throw new TypeError(Ic);return p.round(d)},"Fraction, BigNumber":function(p,d){if(!d.isInteger())throw new TypeError(Ic);return p.round(d.toNumber())},"Unit, number, Unit":e.referToSelf(m=>function(p,d,h){var b=p.toNumeric(h);return h.multiply(m(b,d))}),"Unit, BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>m(p,d.toNumber(),h)),"Array | Matrix, number | BigNumber, Unit":e.referToSelf(m=>(p,d,h)=>Ke(p,b=>m(b,d,h),!0)),"Array | Matrix | Unit, Unit":e.referToSelf(m=>(p,d)=>m(p,0,d)),"Array | Matrix":e.referToSelf(m=>p=>Ke(p,m,!0)),"SparseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>l(p,d,m,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(m=>(p,d)=>c(p,d,m,!1)),"Array, number | BigNumber":e.referToSelf(m=>(p,d)=>c(n(p),d,m,!1).valueOf()),"number | Complex | BigNumber | Fraction, SparseMatrix":e.referToSelf(m=>(p,d)=>i(p,0)?a(d.size(),d.storage()):u(d,p,m,!0)),"number | Complex | BigNumber | Fraction, DenseMatrix":e.referToSelf(m=>(p,d)=>i(p,0)?a(d.size(),d.storage()):c(d,p,m,!0)),"number | Complex | BigNumber | Fraction, Array":e.referToSelf(m=>(p,d)=>c(n(d),p,m,!0).valueOf())})});var QC="log",$j=["config","typed","typeOf","divideScalar","Complex"],Oj=Math.log(16),KC=M(QC,$j,t=>{var{typed:e,typeOf:r,config:n,divideScalar:i,Complex:a}=t;function o(l){return l.log()}function s(l){return o(new a(l,0))}return e(QC,{number:function(u){return u>=0||n.predictable?n0(u):s(u)},bigint:Mc(Oj,n0,n,s),Complex:o,BigNumber:function(u){return!u.isNegative()||n.predictable?u.ln():s(u.toNumber())},"any, any":e.referToSelf(l=>(u,c)=>{if(r(u)==="Fraction"&&r(c)==="Fraction"){var f=u.log(c);if(f!==null)return f}return i(l(u),l(c))})})});var eN="log1p",Rj=["typed","config","divideScalar","log","Complex"],tN=M(eN,Rj,t=>{var{typed:e,config:r,divideScalar:n,log:i,Complex:a}=t;return e(eN,{number:function(l){return l>=-1||r.predictable?Bh(l):o(new a(l,0))},Complex:o,BigNumber:function(l){var u=l.plus(1);return!u.isNegative()||r.predictable?u.ln():o(new a(l.toNumber(),0))},"Array | Matrix":e.referToSelf(s=>l=>Ke(l,s)),"any, any":e.referToSelf(s=>(l,u)=>n(s(l),i(u)))});function o(s){var l=s.re+1;return new a(Math.log(Math.sqrt(l*l+s.im*s.im)),Math.atan2(s.im,l))}});var rN="nthRoots",Lj=["config","typed","divideScalar","Complex"],nN=M(rN,Lj,t=>{var{typed:e,config:r,divideScalar:n,Complex:i}=t,a=[function(l){return new i(l,0)},function(l){return new i(0,l)},function(l){return new i(-l,0)},function(l){return new i(0,-l)}];function o(s,l){if(l<0)throw new Error("Root must be greater than zero");if(l===0)throw new Error("Root must be non-zero");if(l%1!==0)throw new Error("Root must be an integer");if(s===0||s.abs()===0)return[new i(0,0)];var u=typeof s=="number",c;(u||s.re===0||s.im===0)&&(u?c=2*+(s<0):s.im===0?c=2*+(s.re<0):c=2*+(s.im<0)+1);for(var f=s.arg(),m=s.abs(),p=[],d=Math.pow(m,1/l),h=0;h{var{typed:e,equalScalar:r,matrix:n,pow:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=Ur({typed:e}),u=Bn({typed:e,SparseMatrix:s}),c=Er({typed:e,equalScalar:r}),f=mr({typed:e,DenseMatrix:a}),m=Ft({typed:e,matrix:n,concat:o}),p={};for(var d in i.signatures)Object.prototype.hasOwnProperty.call(i.signatures,d)&&!d.includes("Matrix")&&!d.includes("Array")&&(p[d]=i.signatures[d]);var h=e(p);return e(iN,m({elop:h,SS:u,DS:l,Ss:c,sS:f}))});var oN="dotDivide",Uj=["typed","matrix","equalScalar","divideScalar","DenseMatrix","concat","SparseMatrix"],sN=M(oN,Uj,t=>{var{typed:e,matrix:r,equalScalar:n,divideScalar:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=wn({typed:e,equalScalar:n}),u=Ur({typed:e}),c=Bn({typed:e,SparseMatrix:s}),f=Er({typed:e,equalScalar:n}),m=mr({typed:e,DenseMatrix:a}),p=Ft({typed:e,matrix:r,concat:o});return e(oN,p({elop:i,SS:c,DS:u,SD:l,Ss:f,sS:m}))});function Uo(t){var{DenseMatrix:e}=t;return function(n,i,a){var o=n.size();if(o.length!==2)throw new RangeError("Matrix must be two dimensional (size: "+Dt(o)+")");var s=o[0],l=o[1];if(s!==l)throw new RangeError("Matrix must be square (size: "+Dt(o)+")");var u=[];if(Ye(i)){var c=i.size(),f=i._data;if(c.length===1){if(c[0]!==s)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(var m=0;m{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=Uo({DenseMatrix:s});return e(uN,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.valueOf()}});function u(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],b=[],y=f._data,D=0;DA&&(E.push(b[N]),T.push(I))}if(o(x,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var R=n(w,x),L=0,V=T.length;L{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=Uo({DenseMatrix:s});return e(cN,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.valueOf()}});function u(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],b=[],y=f._data,D=h-1;D>=0;D--){var v=p[D][0]||0,A=void 0;if(o(v,0))A=0;else{var w=y[D][D];if(o(w,0))throw new Error("Linear system cannot be solved since matrix is singular");A=n(v,w);for(var x=D-1;x>=0;x--)p[x]=[a(p[x][0]||0,i(A,y[x][D]))]}b[D]=[A]}return new s({data:b,size:[d,1]})}function c(f,m){m=l(f,m,!0);for(var p=m._data,d=f._size[0],h=f._size[1],b=f._values,y=f._index,D=f._ptr,v=[],A=h-1;A>=0;A--){var w=p[A][0]||0;if(o(w,0))v[A]=[0];else{for(var x=0,E=[],T=[],_=D[A],C=D[A+1],N=C-1;N>=_;N--){var I=y[N];I===A?x=b[N]:I{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=Uo({DenseMatrix:s});return e(pN,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.map(b=>b.valueOf())}});function u(f,m){for(var p=[l(f,m,!0)._data.map(T=>T[0])],d=f._data,h=f._size[0],b=f._size[1],y=0;ynew s({data:T.map(_=>[_]),size:[h,1]}))}function c(f,m){for(var p=[l(f,m,!0)._data.map(ne=>ne[0])],d=f._size[0],h=f._size[1],b=f._values,y=f._index,D=f._ptr,v=0;vv&&(E.push(b[I]),T.push(R))}if(o(N,0))if(o(x[v],0)){if(w===0){var k=[...x];k[v]=1;for(var W=0,O=T.length;Wnew s({data:ne.map(X=>[X]),size:[d,1]}))}});var dN="usolveAll",Gj=["typed","matrix","divideScalar","multiplyScalar","subtractScalar","equalScalar","DenseMatrix"],hN=M(dN,Gj,t=>{var{typed:e,matrix:r,divideScalar:n,multiplyScalar:i,subtractScalar:a,equalScalar:o,DenseMatrix:s}=t,l=Uo({DenseMatrix:s});return e(dN,{"SparseMatrix, Array | Matrix":function(m,p){return c(m,p)},"DenseMatrix, Array | Matrix":function(m,p){return u(m,p)},"Array, Array | Matrix":function(m,p){var d=r(m),h=u(d,p);return h.map(b=>b.valueOf())}});function u(f,m){for(var p=[l(f,m,!0)._data.map(T=>T[0])],d=f._data,h=f._size[0],b=f._size[1],y=b-1;y>=0;y--)for(var D=p.length,v=0;v=0;E--)x[E]=a(x[E],d[E][y]);p.push(x)}}else{if(v===0)return[];p.splice(v,1),v-=1,D-=1}else{A[y]=n(A[y],d[y][y]);for(var w=y-1;w>=0;w--)A[w]=a(A[w],i(A[y],d[w][y]))}}return p.map(T=>new s({data:T.map(_=>[_]),size:[h,1]}))}function c(f,m){for(var p=[l(f,m,!0)._data.map(ne=>ne[0])],d=f._size[0],h=f._size[1],b=f._values,y=f._index,D=f._ptr,v=h-1;v>=0;v--)for(var A=p.length,w=0;w=_;I--){var R=y[I];R===v?N=b[I]:Rnew s({data:ne.map(X=>[X]),size:[d,1]}))}});var Wj="matAlgo08xS0Sid",Yj=["typed","equalScalar"],Bc=M(Wj,Yj,t=>{var{typed:e,equalScalar:r}=t;return function(i,a,o){var s=i._values,l=i._index,u=i._ptr,c=i._size,f=i._datatype||i._data===void 0?i._datatype:i.getDataType(),m=a._values,p=a._index,d=a._ptr,h=a._size,b=a._datatype||a._data===void 0?a._datatype:a.getDataType();if(c.length!==h.length)throw new Et(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");if(!s||!m)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var y=c[0],D=c[1],v,A=r,w=0,x=o;typeof f=="string"&&f===b&&f!=="mixed"&&(v=f,A=e.find(r,[v,v]),w=e.convert(0,v),x=e.find(o,[v,v]));for(var E=[],T=[],_=[],C=[],N=[],I,R,L,V,P=0;P{var{typed:e,matrix:r}=t;return{"Array, number":e.referTo("DenseMatrix, number",n=>(i,a)=>n(r(i),a).valueOf()),"Array, BigNumber":e.referTo("DenseMatrix, BigNumber",n=>(i,a)=>n(r(i),a).valueOf()),"number, Array":e.referTo("number, DenseMatrix",n=>(i,a)=>n(i,r(a)).valueOf()),"BigNumber, Array":e.referTo("BigNumber, DenseMatrix",n=>(i,a)=>n(i,r(a)).valueOf())}});var gN="leftShift",jj=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],vN=M(gN,jj,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ai({typed:e}),l=wn({typed:e,equalScalar:n}),u=Bc({typed:e,equalScalar:n}),c=ra({typed:e,DenseMatrix:a}),f=Er({typed:e,equalScalar:n}),m=xn({typed:e}),p=Ft({typed:e,matrix:r,concat:o}),d=kc({typed:e,matrix:r});return e(gN,{"number, number":p0,"BigNumber, BigNumber":lM,"bigint, bigint":(h,b)=>h<(b,y)=>n(y,0)?b.clone():f(b,y,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(b,y)=>n(y,0)?b.clone():m(b,y,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):c(y,b,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):m(y,b,h,!0))},d,p({SS:u,DS:s,SD:l}))});var yN="rightArithShift",Zj=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],bN=M(yN,Zj,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ai({typed:e}),l=wn({typed:e,equalScalar:n}),u=Bc({typed:e,equalScalar:n}),c=ra({typed:e,DenseMatrix:a}),f=Er({typed:e,equalScalar:n}),m=xn({typed:e}),p=Ft({typed:e,matrix:r,concat:o}),d=kc({typed:e,matrix:r});return e(yN,{"number, number":m0,"BigNumber, BigNumber":cM,"bigint, bigint":(h,b)=>h>>b,"SparseMatrix, number | BigNumber":e.referToSelf(h=>(b,y)=>n(y,0)?b.clone():f(b,y,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(b,y)=>n(y,0)?b.clone():m(b,y,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):c(y,b,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):m(y,b,h,!0))},d,p({SS:u,DS:s,SD:l}))});var xN="rightLogShift",Jj=["typed","matrix","equalScalar","zeros","DenseMatrix","concat"],wN=M(xN,Jj,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,DenseMatrix:a,concat:o}=t,s=Ai({typed:e}),l=wn({typed:e,equalScalar:n}),u=Bc({typed:e,equalScalar:n}),c=ra({typed:e,DenseMatrix:a}),f=Er({typed:e,equalScalar:n}),m=xn({typed:e}),p=Ft({typed:e,matrix:r,concat:o}),d=kc({typed:e,matrix:r});return e(xN,{"number, number":d0,"SparseMatrix, number | BigNumber":e.referToSelf(h=>(b,y)=>n(y,0)?b.clone():f(b,y,h,!1)),"DenseMatrix, number | BigNumber":e.referToSelf(h=>(b,y)=>n(y,0)?b.clone():m(b,y,h,!1)),"number | BigNumber, SparseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):c(y,b,h,!0)),"number | BigNumber, DenseMatrix":e.referToSelf(h=>(b,y)=>n(b,0)?i(y.size(),y.storage()):m(y,b,h,!0))},d,p({SS:u,DS:s,SD:l}))});var _N="and",Xj=["typed","matrix","equalScalar","zeros","not","concat"],Tg=M(_N,Xj,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=wn({typed:e,equalScalar:n}),l=lu({typed:e,equalScalar:n}),u=Er({typed:e,equalScalar:n}),c=xn({typed:e}),f=Ft({typed:e,matrix:r,concat:o});return e(_N,{"number, number":ig,"Complex, Complex":function(p,d){return(p.re!==0||p.im!==0)&&(d.re!==0||d.im!==0)},"BigNumber, BigNumber":function(p,d){return!p.isZero()&&!d.isZero()&&!p.isNaN()&&!d.isNaN()},"bigint, bigint":ig,"Unit, Unit":e.referToSelf(m=>(p,d)=>m(p.value||0,d.value||0)),"SparseMatrix, any":e.referToSelf(m=>(p,d)=>a(d)?i(p.size(),p.storage()):u(p,d,m,!1)),"DenseMatrix, any":e.referToSelf(m=>(p,d)=>a(d)?i(p.size(),p.storage()):c(p,d,m,!1)),"any, SparseMatrix":e.referToSelf(m=>(p,d)=>a(p)?i(p.size(),p.storage()):u(d,p,m,!0)),"any, DenseMatrix":e.referToSelf(m=>(p,d)=>a(p)?i(p.size(),p.storage()):c(d,p,m,!0)),"Array, any":e.referToSelf(m=>(p,d)=>m(r(p),d).valueOf()),"any, Array":e.referToSelf(m=>(p,d)=>m(p,r(d)).valueOf())},f({SS:l,DS:s}))});var Mg="compare",Qj=["typed","config","matrix","equalScalar","BigNumber","Fraction","DenseMatrix","concat"],AN=M(Mg,Qj,t=>{var{typed:e,config:r,equalScalar:n,matrix:i,BigNumber:a,Fraction:o,DenseMatrix:s,concat:l}=t,u=Ur({typed:e}),c=uu({typed:e,equalScalar:n}),f=mr({typed:e,DenseMatrix:s}),m=Ft({typed:e,matrix:i,concat:l}),p=Za({typed:e});return e(Mg,Kj({typed:e,config:r}),{"boolean, boolean":function(h,b){return h===b?0:h>b?1:-1},"BigNumber, BigNumber":function(h,b){return gn(h,b,r.relTol,r.absTol)?new a(0):new a(h.cmp(b))},"bigint, bigint":function(h,b){return h===b?0n:h>b?1n:-1n},"Fraction, Fraction":function(h,b){return new o(h.compare(b))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},p,m({SS:c,DS:u,Ss:f}))}),Kj=M(Mg,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Mg,{"number, number":function(i,a){return zr(i,a,r.relTol,r.absTol)?0:i>a?1:-1}})});var nl=Tr(SN(),1);var EN="compareNatural",eZ=["typed","compare"],TN=M(EN,eZ,t=>{var{typed:e,compare:r}=t,n=r.signatures["boolean,boolean"];return e(EN,{"any, any":i});function i(l,u){var c=ir(l),f=ir(u),m;if((c==="number"||c==="BigNumber"||c==="Fraction")&&(f==="number"||f==="BigNumber"||f==="Fraction"))return m=r(l,u),m.toString()!=="0"?m>0?1:-1:(0,nl.default)(c,f);var p=["Array","DenseMatrix","SparseMatrix"];if(p.includes(c)||p.includes(f))return m=a(i,l,u),m!==0?m:(0,nl.default)(c,f);if(c!==f)return(0,nl.default)(c,f);if(c==="Complex")return tZ(l,u);if(c==="Unit")return l.equalBase(u)?i(l.value,u.value):o(i,l.formatUnits(),u.formatUnits());if(c==="boolean")return n(l,u);if(c==="string")return(0,nl.default)(l,u);if(c==="Object")return s(i,l,u);if(c==="null"||c==="undefined")return 0;throw new TypeError('Unsupported type of value "'+c+'"')}function a(l,u,c){return xa(u)&&xa(c)?o(l,u.toJSON().values,c.toJSON().values):xa(u)?a(l,u.toArray(),c):xa(c)?a(l,u,c.toArray()):ws(u)?a(l,u.toJSON().data,c):ws(c)?a(l,u,c.toJSON().data):Array.isArray(u)?Array.isArray(c)?o(l,u,c):a(l,u,[c]):a(l,[u],c)}function o(l,u,c){for(var f=0,m=Math.min(u.length,c.length);fc.length?1:u.lengthe.re?1:t.ree.im?1:t.im{var{typed:e,matrix:r,concat:n}=t,i=Ft({typed:e,matrix:r,concat:n});return e(MN,jh,i({elop:jh,Ds:!0}))});var Cg="equal",nZ=["typed","matrix","equalScalar","DenseMatrix","concat","SparseMatrix"],NN=M(Cg,nZ,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=Ur({typed:e}),l=Bn({typed:e,SparseMatrix:o}),u=mr({typed:e,DenseMatrix:i}),c=Ft({typed:e,matrix:r,concat:a});return e(Cg,iZ({typed:e,equalScalar:n}),c({elop:n,SS:l,DS:s,Ss:u}))}),iZ=M(Cg,["typed","equalScalar"],t=>{var{typed:e,equalScalar:r}=t;return e(Cg,{"any, any":function(i,a){return i===null?a===null:a===null?i===null:i===void 0?a===void 0:a===void 0?i===void 0:r(i,a)}})});var FN="equalText",aZ=["typed","compareText","isZero"],IN=M(FN,aZ,t=>{var{typed:e,compareText:r,isZero:n}=t;return e(FN,{"any, any":function(a,o){return n(r(a,o))}})});var Ng="smaller",oZ=["typed","config","bignumber","matrix","DenseMatrix","concat","SparseMatrix"],BN=M(Ng,oZ,t=>{var{typed:e,config:r,bignumber:n,matrix:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=Ur({typed:e}),u=Bn({typed:e,SparseMatrix:s}),c=mr({typed:e,DenseMatrix:a}),f=Ft({typed:e,matrix:i,concat:o}),m=Za({typed:e});function p(d,h){return d.lt(h)&&!gn(d,h,r.relTol,r.absTol)}return e(Ng,sZ({typed:e,config:r}),{"boolean, boolean":(d,h)=>ddd.compare(h)===-1,"Fraction, BigNumber":function(h,b){return p(n(h),b)},"BigNumber, Fraction":function(h,b){return p(h,n(b))},"Complex, Complex":function(h,b){throw new TypeError("No ordering relation is defined for complex numbers")}},m,f({SS:u,DS:l,Ss:c}))}),sZ=M(Ng,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Ng,{"number, number":function(i,a){return i{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=Ur({typed:e}),l=Bn({typed:e,SparseMatrix:o}),u=mr({typed:e,DenseMatrix:i}),c=Ft({typed:e,matrix:n,concat:a}),f=Za({typed:e});return e(Fg,lZ({typed:e,config:r}),{"boolean, boolean":(m,p)=>m<=p,"BigNumber, BigNumber":function(p,d){return p.lte(d)||gn(p,d,r.relTol,r.absTol)},"bigint, bigint":(m,p)=>m<=p,"Fraction, Fraction":(m,p)=>m.compare(p)!==1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),lZ=M(Fg,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Fg,{"number, number":function(i,a){return i<=a||zr(i,a,r.relTol,r.absTol)}})});var Ig="larger",cZ=["typed","config","bignumber","matrix","DenseMatrix","concat","SparseMatrix"],PN=M(Ig,cZ,t=>{var{typed:e,config:r,bignumber:n,matrix:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=Ur({typed:e}),u=Bn({typed:e,SparseMatrix:s}),c=mr({typed:e,DenseMatrix:a}),f=Ft({typed:e,matrix:i,concat:o}),m=Za({typed:e});function p(d,h){return d.gt(h)&&!gn(d,h,r.relTol,r.absTol)}return e(Ig,fZ({typed:e,config:r}),{"boolean, boolean":(d,h)=>d>h,"BigNumber, BigNumber":p,"bigint, bigint":(d,h)=>d>h,"Fraction, Fraction":(d,h)=>d.compare(h)===1,"Fraction, BigNumber":function(h,b){return p(n(h),b)},"BigNumber, Fraction":function(h,b){return p(h,n(b))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},m,f({SS:u,DS:l,Ss:c}))}),fZ=M(Ig,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Ig,{"number, number":function(i,a){return i>a&&!zr(i,a,r.relTol,r.absTol)}})});var Bg="largerEq",pZ=["typed","config","matrix","DenseMatrix","concat","SparseMatrix"],$N=M(Bg,pZ,t=>{var{typed:e,config:r,matrix:n,DenseMatrix:i,concat:a,SparseMatrix:o}=t,s=Ur({typed:e}),l=Bn({typed:e,SparseMatrix:o}),u=mr({typed:e,DenseMatrix:i}),c=Ft({typed:e,matrix:n,concat:a}),f=Za({typed:e});return e(Bg,mZ({typed:e,config:r}),{"boolean, boolean":(m,p)=>m>=p,"BigNumber, BigNumber":function(p,d){return p.gte(d)||gn(p,d,r.relTol,r.absTol)},"bigint, bigint":function(p,d){return p>=d},"Fraction, Fraction":(m,p)=>m.compare(p)!==-1,"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")}},f,c({SS:l,DS:s,Ss:u}))}),mZ=M(Bg,["typed","config"],t=>{var{typed:e,config:r}=t;return e(Bg,{"number, number":function(i,a){return i>=a||zr(i,a,r.relTol,r.absTol)}})});var ON="deepEqual",dZ=["typed","equal"],RN=M(ON,dZ,t=>{var{typed:e,equal:r}=t;return e(ON,{"any, any":function(a,o){return n(a.valueOf(),o.valueOf())}});function n(i,a){if(Array.isArray(i))if(Array.isArray(a)){var o=i.length;if(o!==a.length)return!1;for(var s=0;s{var{typed:e,config:r,equalScalar:n,matrix:i,DenseMatrix:a,concat:o,SparseMatrix:s}=t,l=Ur({typed:e}),u=Bn({typed:e,SparseMatrix:s}),c=mr({typed:e,DenseMatrix:a}),f=Ft({typed:e,matrix:i,concat:o});return e(kg,gZ({typed:e,equalScalar:n}),f({elop:m,SS:u,DS:l,Ss:c}));function m(p,d){return!n(p,d)}}),gZ=M(kg,["typed","equalScalar"],t=>{var{typed:e,equalScalar:r}=t;return e(kg,{"any, any":function(i,a){return i===null?a!==null:a===null?i!==null:i===void 0?a!==void 0:a===void 0?i!==void 0:!r(i,a)}})});var VN="partitionSelect",vZ=["typed","isNumeric","isNaN","compare"],UN=M(VN,vZ,t=>{var{typed:e,isNumeric:r,isNaN:n,compare:i}=t,a=i,o=(u,c)=>-i(u,c);return e(VN,{"Array | Matrix, number":function(c,f){return s(c,f,a)},"Array | Matrix, number, string":function(c,f,m){if(m==="asc")return s(c,f,a);if(m==="desc")return s(c,f,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s});function s(u,c,f){if(!He(c)||c<0)throw new Error("k must be a non-negative integer");if(Ye(u)){var m=u.size();if(m.length>1)throw new Error("Only one dimensional matrices supported");return l(u.valueOf(),c,f)}if(Array.isArray(u))return l(u,c,f)}function l(u,c,f){if(c>=u.length)throw new Error("k out of bounds");for(var m=0;m=0){var D=u[b];u[b]=u[h],u[h]=D,--b}else++h;f(u[h],y)>0&&--h,c<=h?d=h:p=h+1}return u[c]}});var qN="sort",yZ=["typed","matrix","compare","compareNatural"],zN=M(qN,yZ,t=>{var{typed:e,matrix:r,compare:n,compareNatural:i}=t,a=n,o=(c,f)=>-n(c,f);return e(qN,{Array:function(f){return l(f),f.sort(a)},Matrix:function(f){return u(f),r(f.toArray().sort(a),f.storage())},"Array, function":function(f,m){return l(f),f.sort(m)},"Matrix, function":function(f,m){return u(f),r(f.toArray().sort(m),f.storage())},"Array, string":function(f,m){return l(f),f.sort(s(m))},"Matrix, string":function(f,m){return u(f),r(f.toArray().sort(s(m)),f.storage())}});function s(c){if(c==="asc")return a;if(c==="desc")return o;if(c==="natural")return i;throw new Error('String "asc", "desc", or "natural" expected')}function l(c){if(ct(c).length!==1)throw new Error("One dimensional array expected")}function u(c){if(c.size().length!==1)throw new Error("One dimensional matrix expected")}});var HN="max",bZ=["typed","config","numeric","larger","isNaN"],Pg=M(HN,bZ,t=>{var{typed:e,config:r,numeric:n,larger:i,isNaN:a}=t;return e(HN,{"Array | Matrix":s,"Array | Matrix, number | BigNumber":function(u,c){return su(u,c.valueOf(),o)},"...":function(u){if(ja(u))throw new TypeError("Scalar values expected in function max");return s(u)}});function o(l,u){try{return i(l,u)?l:u}catch(c){throw pn(c,"max",u)}}function s(l){var u;if(Oi(l,function(c){try{(a(c)||u===void 0||i(c,u))&&(u=c)}catch(f){throw pn(f,"max",c)}}),u===void 0)throw new Error("Cannot calculate max of an empty array");return typeof u=="string"&&(u=n(u,xi(u,r))),u}});var GN="min",xZ=["typed","config","numeric","smaller","isNaN"],$g=M(GN,xZ,t=>{var{typed:e,config:r,numeric:n,smaller:i,isNaN:a}=t;return e(GN,{"Array | Matrix":s,"Array | Matrix, number | BigNumber":function(u,c){return su(u,c.valueOf(),o)},"...":function(u){if(ja(u))throw new TypeError("Scalar values expected in function min");return s(u)}});function o(l,u){try{return i(l,u)?l:u}catch(c){throw pn(c,"min",u)}}function s(l){var u;if(Oi(l,function(c){try{(a(c)||u===void 0||i(c,u))&&(u=c)}catch(f){throw pn(f,"min",c)}}),u===void 0)throw new Error("Cannot calculate min of an empty array");return typeof u=="string"&&(u=n(u,xi(u,r))),u}});var wZ="ImmutableDenseMatrix",_Z=["smaller","DenseMatrix"],WN=M(wZ,_Z,t=>{var{smaller:e,DenseMatrix:r}=t;function n(i,a){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(a&&!Jr(a))throw new Error("Invalid datatype: "+a);if(Ye(i)||sr(i)){var o=new r(i,a);this._data=o._data,this._size=o._size,this._datatype=o._datatype,this._min=null,this._max=null}else if(i&&sr(i.data)&&sr(i.size))this._data=i.data,this._size=i.size,this._datatype=i.datatype,this._min=typeof i.min<"u"?i.min:null,this._max=typeof i.max<"u"?i.max:null;else{if(i)throw new TypeError("Unsupported type of data ("+ir(i)+")");this._data=[],this._size=[0],this._datatype=a,this._min=null,this._max=null}}return n.prototype=new r,n.prototype.type="ImmutableDenseMatrix",n.prototype.isImmutableDenseMatrix=!0,n.prototype.subset=function(i){switch(arguments.length){case 1:{var a=r.prototype.subset.call(this,i);return Ye(a)?new n({data:a._data,size:a._size,datatype:a._datatype}):a}case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},n.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},n.prototype.reshape=function(){throw new Error("Cannot invoke reshape on an Immutable Matrix instance")},n.prototype.clone=function(){return new n({data:ut(this._data),size:ut(this._size),datatype:this._datatype})},n.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},n.fromJSON=function(i){return new n(i)},n.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},n.prototype.min=function(){if(this._min===null){var i=null;this.forEach(function(a){(i===null||e(a,i))&&(i=a)}),this._min=i!==null?i:void 0}return this._min},n.prototype.max=function(){if(this._max===null){var i=null;this.forEach(function(a){(i===null||e(i,a))&&(i=a)}),this._max=i!==null?i:void 0}return this._max},n},{isClass:!0});var AZ="Index",DZ=["ImmutableDenseMatrix","getMatrixDataType"],jN=M(AZ,DZ,t=>{var{ImmutableDenseMatrix:e,getMatrixDataType:r}=t;function n(a){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._sourceSize=[],this._isScalar=!0;for(var o=0,s=arguments.length;o{r&&e.push(n)}),e}var SZ="FibonacciHeap",EZ=["smaller","larger"],ZN=M(SZ,EZ,t=>{var{smaller:e,larger:r}=t,n=1/Math.log((1+Math.sqrt(5))/2);function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}i.prototype.type="FibonacciHeap",i.prototype.isFibonacciHeap=!0,i.prototype.insert=function(c,f){var m={key:c,value:f,degree:0};if(this._minimum){var p=this._minimum;m.left=p,m.right=p.right,p.right=m,m.right.left=m,e(c,p.key)&&(this._minimum=m)}else m.left=m,m.right=m,this._minimum=m;return this._size++,m},i.prototype.size=function(){return this._size},i.prototype.clear=function(){this._minimum=null,this._size=0},i.prototype.isEmpty=function(){return this._size===0},i.prototype.extractMinimum=function(){var c=this._minimum;if(c===null)return c;for(var f=this._minimum,m=c.degree,p=c.child;m>0;){var d=p.right;p.left.right=p.right,p.right.left=p.left,p.left=f,p.right=f.right,f.right=p,p.right.left=p,p.parent=null,p=d,m--}return c.left.right=c.right,c.right.left=c.left,c===c.right?f=null:(f=c.right,f=u(f,this._size)),this._size--,this._minimum=f,c},i.prototype.remove=function(c){this._minimum=a(this._minimum,c,-1),this.extractMinimum()};function a(c,f,m){f.key=m;var p=f.parent;return p&&e(f.key,p.key)&&(o(c,f,p),s(c,p)),e(f.key,c.key)&&(c=f),c}function o(c,f,m){f.left.right=f.right,f.right.left=f.left,m.degree--,m.child===f&&(m.child=f.right),m.degree===0&&(m.child=null),f.left=c,f.right=c.right,c.right=f,f.right.left=f,f.parent=null,f.mark=!1}function s(c,f){var m=f.parent;m&&(f.mark?(o(c,f,m),s(m)):f.mark=!0)}var l=function(f,m){f.left.right=f.right,f.right.left=f.left,f.parent=m,m.child?(f.left=m.child,f.right=m.child.right,m.child.right=f,f.right.left=f):(m.child=f,f.right=f,f.left=f),m.degree++,f.mark=!1};function u(c,f){var m=Math.floor(Math.log(f)*n)+1,p=new Array(m),d=0,h=c;if(h)for(d++,h=h.right;h!==c;)d++,h=h.right;for(var b;d>0;){for(var y=h.degree,D=h.right;b=p[y],!!b;){if(r(h.key,b.key)){var v=b;b=h,h=v}l(b,h),p[y]=null,y++}p[y]=h,h=D,d--}c=null;for(var A=0;A{var{addScalar:e,equalScalar:r,FibonacciHeap:n}=t;function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new n}return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(a,o){if(this._values[a])this._values[a].value=o;else{var s=this._heap.insert(a,o);this._values[a]=s}},i.prototype.get=function(a){var o=this._values[a];return o?o.value:0},i.prototype.accumulate=function(a,o){var s=this._values[a];s?s.value=e(s.value,o):(s=this._heap.insert(a,o),this._values[a]=s)},i.prototype.forEach=function(a,o,s){var l=this._heap,u=this._values,c=[],f=l.extractMinimum();for(f&&c.push(f);f&&f.key<=o;)f.key>=a&&(r(f.value,0)||s(f.key,f.value,this)),f=l.extractMinimum(),f&&c.push(f);for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{};return r=r??Number.POSITIVE_INFINITY,e=e??JSON.stringify,function n(){typeof n.cache!="object"&&(n.cache={values:new Map,lru:XN(r||Number.POSITIVE_INFINITY)});for(var i=[],a=0;a{var{on:e,config:r,addScalar:n,subtractScalar:i,multiplyScalar:a,divideScalar:o,pow:s,abs:l,fix:u,round:c,equal:f,isNumeric:m,format:p,number:d,Complex:h,BigNumber:b,Fraction:y}=t,D=d;function v(G,J){if(!(this instanceof v))throw new Error("Constructor must be called with the new operator");if(!(G==null||m(G)||Hn(G)))throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");if(this.fixPrefix=!1,this.skipAutomaticSimplification=!0,J===void 0)this.units=[],this.dimensions=W.map(ye=>0);else if(typeof J=="string"){var ge=v.parse(J);this.units=ge.units,this.dimensions=ge.dimensions}else if(En(J)&&J.value===null)this.fixPrefix=J.fixPrefix,this.skipAutomaticSimplification=J.skipAutomaticSimplification,this.dimensions=J.dimensions.slice(0),this.units=J.units.map(ye=>bn({},ye));else throw new TypeError("Second parameter in Unit constructor must be a string or valueless Unit");this.value=this._normalize(G)}Object.defineProperty(v,"name",{value:"Unit"}),v.prototype.constructor=v,v.prototype.type="Unit",v.prototype.isUnit=!0;var A,w,x;function E(){for(;x===" "||x===" ";)C()}function T(G){return G>="0"&&G<="9"||G==="."}function _(G){return G>="0"&&G<="9"}function C(){w++,x=A.charAt(w)}function N(G){w=G,x=A.charAt(w)}function I(){var G="",J=w;if(x==="+"?C():x==="-"&&(G+=x,C()),!T(x))return N(J),null;if(x==="."){if(G+=x,C(),!_(x))return N(J),null}else{for(;_(x);)G+=x,C();x==="."&&(G+=x,C())}for(;_(x);)G+=x,C();if(x==="E"||x==="e"){var ge="",ye=w;if(ge+=x,C(),(x==="+"||x==="-")&&(ge+=x,C()),!_(x))return N(ye),G;for(G=G+ge;_(x);)G+=x,C()}return G}function R(){for(var G="";_(x)||v.isValidAlpha(x);)G+=x,C();var J=G.charAt(0);return v.isValidAlpha(J)?G:null}function L(G){return x===G?(C(),G):null}v.parse=function(G,J){if(J=J||{},A=G,w=-1,x="",typeof A!="string")throw new TypeError("Invalid argument in Unit.parse, string expected");var ge=new v;ge.units=[];var ye=1,De=!1;C(),E();var Ie=I(),Oe=null;if(Ie){if(r.number==="BigNumber")Oe=new b(Ie);else if(r.number==="Fraction")try{Oe=new y(Ie)}catch{Oe=parseFloat(Ie)}else Oe=parseFloat(Ie);E(),L("*")?(ye=1,De=!0):L("/")&&(ye=-1,De=!0)}for(var Je=[],wt=1;;){for(E();x==="(";)Je.push(ye),wt*=ye,ye=1,C(),E();var qe=void 0;if(x){var rr=x;if(qe=R(),qe===null)throw new SyntaxError('Unexpected "'+rr+'" in "'+A+'" at index '+w.toString())}else break;var Wt=V(qe);if(Wt===null)throw new SyntaxError('Unit "'+qe+'" not found.');var pr=ye*wt;if(E(),L("^")){E();var Pe=I();if(Pe===null)throw new SyntaxError('In "'+G+'", "^" must be followed by a floating-point number');pr*=Pe}ge.units.push({unit:Wt.unit,prefix:Wt.prefix,power:pr});for(var j=0;j1||Math.abs(this.units[0].power-1)>1e-15},v.prototype._normalize=function(G){if(G==null||this.units.length===0)return G;for(var J=G,ge=v._getNumberConverter(ir(G)),ye=0;ye{if(Ze(U,G)){var J=U[G],ge=J.prefixes[""];return{unit:J,prefix:ge}}for(var ye in U)if(Ze(U,ye)&&lE(G,ye)){var De=U[ye],Ie=G.length-ye.length,Oe=G.substring(0,Ie),Je=Ze(De.prefixes,Oe)?De.prefixes[Oe]:void 0;if(Je!==void 0)return{unit:De,prefix:Je}}return null},{hasher:G=>G[0],limit:100});v.isValuelessUnit=function(G){return V(G)!==null},v.prototype.hasBase=function(G){if(typeof G=="string"&&(G=O[G]),!G)return!1;for(var J=0;J1e-12)return!1;return!0},v.prototype.equalBase=function(G){for(var J=0;J1e-12)return!1;return!0},v.prototype.equals=function(G){return this.equalBase(G)&&f(this.value,G.value)},v.prototype.multiply=function(G){for(var J=this.clone(),ge=En(G)?G:new v(G),ye=0;ye0?this.formatUnits():null,fixPrefix:this.fixPrefix}},v.fromJSON=function(G){var J,ge=new v(G.value,(J=G.unit)!==null&&J!==void 0?J:void 0);return ge.fixPrefix=G.fixPrefix||!1,ge},v.prototype.valueOf=v.prototype.toString,v.prototype.simplify=function(){var G=this.clone(),J=[],ge;for(var ye in be)if(Ze(be,ye)&&G.hasBase(O[ye])){ge=ye;break}if(ge==="NONE")G.units=[];else{var De;if(ge&&Ze(be,ge)&&(De=be[ge]),De)G.units=[{unit:De.unit,prefix:De.prefix,power:1}];else{for(var Ie=!1,Oe=0;Oe1e-12&&(Ze(be,Je)?J.push({unit:be[Je].unit,prefix:be[Je].prefix,power:G.dimensions[Oe]||0}):Ie=!0)}J.length1e-12)if(Ze(oe.si,ye))J.push({unit:oe.si[ye].unit,prefix:oe.si[ye].prefix,power:G.dimensions[ge]||0});else throw new Error("Cannot express custom unit "+ye+" in SI units")}return G.units=J,G.fixPrefix=!0,G.skipAutomaticSimplification=!0,this.value!==null?(G.value=null,this.to(G)):G},v.prototype.formatUnits=function(){for(var G="",J="",ge=0,ye=0,De=0;De0?(ge++,G+=" "+this.units[De].prefix.name+this.units[De].unit.name,Math.abs(this.units[De].power-1)>1e-15&&(G+="^"+this.units[De].power)):this.units[De].power<0&&ye++;if(ye>0)for(var Ie=0;Ie0?(J+=" "+this.units[Ie].prefix.name+this.units[Ie].unit.name,Math.abs(this.units[Ie].power+1)>1e-15&&(J+="^"+-this.units[Ie].power)):(J+=" "+this.units[Ie].prefix.name+this.units[Ie].unit.name,J+="^"+this.units[Ie].power));G=G.substr(1),J=J.substr(1),ge>1&&ye>0&&(G="("+G+")"),ye>1&&ge>0&&(J="("+J+")");var Oe=G;return ge>0&&ye>0&&(Oe+=" / "),Oe+=J,Oe},v.prototype.format=function(G){var J=this.skipAutomaticSimplification||this.value===null?this.clone():this.simplify(),ge=!1;typeof J.value<"u"&&J.value!==null&&Hn(J.value)&&(ge=Math.abs(J.value.re)<1e-14);for(var ye in J.units)Ze(J.units,ye)&&J.units[ye].unit&&(J.units[ye].unit.name==="VA"&&ge?J.units[ye].unit=U.VAR:J.units[ye].unit.name==="VAR"&&!ge&&(J.units[ye].unit=U.VA));J.units.length===1&&!J.fixPrefix&&Math.abs(J.units[0].power-Math.round(J.units[0].power))<1e-14&&(J.units[0].prefix=J._bestPrefix());var De=J._denormalize(J.value),Ie=J.value!==null?p(De,G||{}):"",Oe=J.formatUnits();return J.value&&Hn(J.value)&&(Ie="("+Ie+")"),Oe.length>0&&Ie.length>0&&(Ie+=" "),Ie+=Oe,Ie},v.prototype._bestPrefix=function(){if(this.units.length!==1)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var G=this.value!==null?l(this.value):0,J=l(this.units[0].unit.value),ge=this.units[0].prefix;if(G===0)return ge;var ye=this.units[0].power,De=Math.log(G/Math.pow(ge.value*J,ye))/Math.LN10-1.2;if(De>-2.200001&&De<1.800001)return ge;De=Math.abs(De);var Ie=this.units[0].unit.prefixes;for(var Oe in Ie)if(Ze(Ie,Oe)){var Je=Ie[Oe];if(Je.scientific){var wt=Math.abs(Math.log(G/Math.pow(Je.value*J,ye))/Math.LN10-1.2);(wt0)},U={meter:{name:"meter",base:O.LENGTH,prefixes:k.LONG,value:1,offset:0},inch:{name:"inch",base:O.LENGTH,prefixes:k.NONE,value:.0254,offset:0},foot:{name:"foot",base:O.LENGTH,prefixes:k.NONE,value:.3048,offset:0},yard:{name:"yard",base:O.LENGTH,prefixes:k.NONE,value:.9144,offset:0},mile:{name:"mile",base:O.LENGTH,prefixes:k.NONE,value:1609.344,offset:0},link:{name:"link",base:O.LENGTH,prefixes:k.NONE,value:.201168,offset:0},rod:{name:"rod",base:O.LENGTH,prefixes:k.NONE,value:5.0292,offset:0},chain:{name:"chain",base:O.LENGTH,prefixes:k.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:O.LENGTH,prefixes:k.NONE,value:1e-10,offset:0},m:{name:"m",base:O.LENGTH,prefixes:k.SHORT,value:1,offset:0},in:{name:"in",base:O.LENGTH,prefixes:k.NONE,value:.0254,offset:0},ft:{name:"ft",base:O.LENGTH,prefixes:k.NONE,value:.3048,offset:0},yd:{name:"yd",base:O.LENGTH,prefixes:k.NONE,value:.9144,offset:0},mi:{name:"mi",base:O.LENGTH,prefixes:k.NONE,value:1609.344,offset:0},li:{name:"li",base:O.LENGTH,prefixes:k.NONE,value:.201168,offset:0},rd:{name:"rd",base:O.LENGTH,prefixes:k.NONE,value:5.02921,offset:0},ch:{name:"ch",base:O.LENGTH,prefixes:k.NONE,value:20.1168,offset:0},mil:{name:"mil",base:O.LENGTH,prefixes:k.NONE,value:254e-7,offset:0},m2:{name:"m2",base:O.SURFACE,prefixes:k.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:O.SURFACE,prefixes:k.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:O.SURFACE,prefixes:k.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:O.SURFACE,prefixes:k.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:O.SURFACE,prefixes:k.NONE,value:2589988110336e-6,offset:0},sqrd:{name:"sqrd",base:O.SURFACE,prefixes:k.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:O.SURFACE,prefixes:k.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:O.SURFACE,prefixes:k.NONE,value:64516e-14,offset:0},acre:{name:"acre",base:O.SURFACE,prefixes:k.NONE,value:4046.86,offset:0},hectare:{name:"hectare",base:O.SURFACE,prefixes:k.NONE,value:1e4,offset:0},m3:{name:"m3",base:O.VOLUME,prefixes:k.CUBIC,value:1,offset:0},L:{name:"L",base:O.VOLUME,prefixes:k.SHORT,value:.001,offset:0},l:{name:"l",base:O.VOLUME,prefixes:k.SHORT,value:.001,offset:0},litre:{name:"litre",base:O.VOLUME,prefixes:k.LONG,value:.001,offset:0},cuin:{name:"cuin",base:O.VOLUME,prefixes:k.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:O.VOLUME,prefixes:k.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:O.VOLUME,prefixes:k.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:O.VOLUME,prefixes:k.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:O.VOLUME,prefixes:k.NONE,value:15e-6,offset:0},drop:{name:"drop",base:O.VOLUME,prefixes:k.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:O.VOLUME,prefixes:k.NONE,value:5e-8,offset:0},minim:{name:"minim",base:O.VOLUME,prefixes:k.NONE,value:61611519921875e-21,offset:0},fluiddram:{name:"fluiddram",base:O.VOLUME,prefixes:k.NONE,value:36966911953125e-19,offset:0},fluidounce:{name:"fluidounce",base:O.VOLUME,prefixes:k.NONE,value:295735295625e-16,offset:0},gill:{name:"gill",base:O.VOLUME,prefixes:k.NONE,value:.00011829411825,offset:0},cc:{name:"cc",base:O.VOLUME,prefixes:k.NONE,value:1e-6,offset:0},cup:{name:"cup",base:O.VOLUME,prefixes:k.NONE,value:.0002365882365,offset:0},pint:{name:"pint",base:O.VOLUME,prefixes:k.NONE,value:.000473176473,offset:0},quart:{name:"quart",base:O.VOLUME,prefixes:k.NONE,value:.000946352946,offset:0},gallon:{name:"gallon",base:O.VOLUME,prefixes:k.NONE,value:.003785411784,offset:0},beerbarrel:{name:"beerbarrel",base:O.VOLUME,prefixes:k.NONE,value:.117347765304,offset:0},oilbarrel:{name:"oilbarrel",base:O.VOLUME,prefixes:k.NONE,value:.158987294928,offset:0},hogshead:{name:"hogshead",base:O.VOLUME,prefixes:k.NONE,value:.238480942392,offset:0},g:{name:"g",base:O.MASS,prefixes:k.SHORT,value:.001,offset:0},gram:{name:"gram",base:O.MASS,prefixes:k.LONG,value:.001,offset:0},ton:{name:"ton",base:O.MASS,prefixes:k.SHORT,value:907.18474,offset:0},t:{name:"t",base:O.MASS,prefixes:k.SHORT,value:1e3,offset:0},tonne:{name:"tonne",base:O.MASS,prefixes:k.LONG,value:1e3,offset:0},grain:{name:"grain",base:O.MASS,prefixes:k.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:O.MASS,prefixes:k.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:O.MASS,prefixes:k.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:O.MASS,prefixes:k.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:O.MASS,prefixes:k.NONE,value:45.359237,offset:0},stick:{name:"stick",base:O.MASS,prefixes:k.NONE,value:.115,offset:0},stone:{name:"stone",base:O.MASS,prefixes:k.NONE,value:6.35029318,offset:0},gr:{name:"gr",base:O.MASS,prefixes:k.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:O.MASS,prefixes:k.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:O.MASS,prefixes:k.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:O.MASS,prefixes:k.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:O.MASS,prefixes:k.NONE,value:45.359237,offset:0},s:{name:"s",base:O.TIME,prefixes:k.SHORT,value:1,offset:0},min:{name:"min",base:O.TIME,prefixes:k.NONE,value:60,offset:0},h:{name:"h",base:O.TIME,prefixes:k.NONE,value:3600,offset:0},second:{name:"second",base:O.TIME,prefixes:k.LONG,value:1,offset:0},sec:{name:"sec",base:O.TIME,prefixes:k.LONG,value:1,offset:0},minute:{name:"minute",base:O.TIME,prefixes:k.NONE,value:60,offset:0},hour:{name:"hour",base:O.TIME,prefixes:k.NONE,value:3600,offset:0},day:{name:"day",base:O.TIME,prefixes:k.NONE,value:86400,offset:0},week:{name:"week",base:O.TIME,prefixes:k.NONE,value:7*86400,offset:0},month:{name:"month",base:O.TIME,prefixes:k.NONE,value:2629800,offset:0},year:{name:"year",base:O.TIME,prefixes:k.NONE,value:31557600,offset:0},decade:{name:"decade",base:O.TIME,prefixes:k.NONE,value:315576e3,offset:0},century:{name:"century",base:O.TIME,prefixes:k.NONE,value:315576e4,offset:0},millennium:{name:"millennium",base:O.TIME,prefixes:k.NONE,value:315576e5,offset:0},hertz:{name:"Hertz",base:O.FREQUENCY,prefixes:k.LONG,value:1,offset:0,reciprocal:!0},Hz:{name:"Hz",base:O.FREQUENCY,prefixes:k.SHORT,value:1,offset:0,reciprocal:!0},rad:{name:"rad",base:O.ANGLE,prefixes:k.SHORT,value:1,offset:0},radian:{name:"radian",base:O.ANGLE,prefixes:k.LONG,value:1,offset:0},deg:{name:"deg",base:O.ANGLE,prefixes:k.SHORT,value:null,offset:0},degree:{name:"degree",base:O.ANGLE,prefixes:k.LONG,value:null,offset:0},grad:{name:"grad",base:O.ANGLE,prefixes:k.SHORT,value:null,offset:0},gradian:{name:"gradian",base:O.ANGLE,prefixes:k.LONG,value:null,offset:0},cycle:{name:"cycle",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},arcsec:{name:"arcsec",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},arcmin:{name:"arcmin",base:O.ANGLE,prefixes:k.NONE,value:null,offset:0},A:{name:"A",base:O.CURRENT,prefixes:k.SHORT,value:1,offset:0},ampere:{name:"ampere",base:O.CURRENT,prefixes:k.LONG,value:1,offset:0},K:{name:"K",base:O.TEMPERATURE,prefixes:k.SHORT,value:1,offset:0},degC:{name:"degC",base:O.TEMPERATURE,prefixes:k.SHORT,value:1,offset:273.15},degF:{name:"degF",base:O.TEMPERATURE,prefixes:k.SHORT,value:new y(5,9),offset:459.67},degR:{name:"degR",base:O.TEMPERATURE,prefixes:k.SHORT,value:new y(5,9),offset:0},kelvin:{name:"kelvin",base:O.TEMPERATURE,prefixes:k.LONG,value:1,offset:0},celsius:{name:"celsius",base:O.TEMPERATURE,prefixes:k.LONG,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:O.TEMPERATURE,prefixes:k.LONG,value:new y(5,9),offset:459.67},rankine:{name:"rankine",base:O.TEMPERATURE,prefixes:k.LONG,value:new y(5,9),offset:0},mol:{name:"mol",base:O.AMOUNT_OF_SUBSTANCE,prefixes:k.SHORT,value:1,offset:0},mole:{name:"mole",base:O.AMOUNT_OF_SUBSTANCE,prefixes:k.LONG,value:1,offset:0},cd:{name:"cd",base:O.LUMINOUS_INTENSITY,prefixes:k.SHORT,value:1,offset:0},candela:{name:"candela",base:O.LUMINOUS_INTENSITY,prefixes:k.LONG,value:1,offset:0},N:{name:"N",base:O.FORCE,prefixes:k.SHORT,value:1,offset:0},newton:{name:"newton",base:O.FORCE,prefixes:k.LONG,value:1,offset:0},dyn:{name:"dyn",base:O.FORCE,prefixes:k.SHORT,value:1e-5,offset:0},dyne:{name:"dyne",base:O.FORCE,prefixes:k.LONG,value:1e-5,offset:0},lbf:{name:"lbf",base:O.FORCE,prefixes:k.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:O.FORCE,prefixes:k.NONE,value:4.4482216152605,offset:0},kip:{name:"kip",base:O.FORCE,prefixes:k.LONG,value:4448.2216,offset:0},kilogramforce:{name:"kilogramforce",base:O.FORCE,prefixes:k.NONE,value:9.80665,offset:0},J:{name:"J",base:O.ENERGY,prefixes:k.SHORT,value:1,offset:0},joule:{name:"joule",base:O.ENERGY,prefixes:k.LONG,value:1,offset:0},erg:{name:"erg",base:O.ENERGY,prefixes:k.SHORTLONG,value:1e-7,offset:0},Wh:{name:"Wh",base:O.ENERGY,prefixes:k.SHORT,value:3600,offset:0},BTU:{name:"BTU",base:O.ENERGY,prefixes:k.BTU,value:1055.05585262,offset:0},eV:{name:"eV",base:O.ENERGY,prefixes:k.SHORT,value:1602176565e-28,offset:0},electronvolt:{name:"electronvolt",base:O.ENERGY,prefixes:k.LONG,value:1602176565e-28,offset:0},W:{name:"W",base:O.POWER,prefixes:k.SHORT,value:1,offset:0},watt:{name:"watt",base:O.POWER,prefixes:k.LONG,value:1,offset:0},hp:{name:"hp",base:O.POWER,prefixes:k.NONE,value:745.6998715386,offset:0},VAR:{name:"VAR",base:O.POWER,prefixes:k.SHORT,value:h.I,offset:0},VA:{name:"VA",base:O.POWER,prefixes:k.SHORT,value:1,offset:0},Pa:{name:"Pa",base:O.PRESSURE,prefixes:k.SHORT,value:1,offset:0},psi:{name:"psi",base:O.PRESSURE,prefixes:k.NONE,value:6894.75729276459,offset:0},atm:{name:"atm",base:O.PRESSURE,prefixes:k.NONE,value:101325,offset:0},bar:{name:"bar",base:O.PRESSURE,prefixes:k.SHORTLONG,value:1e5,offset:0},torr:{name:"torr",base:O.PRESSURE,prefixes:k.NONE,value:133.322,offset:0},mmHg:{name:"mmHg",base:O.PRESSURE,prefixes:k.NONE,value:133.322,offset:0},mmH2O:{name:"mmH2O",base:O.PRESSURE,prefixes:k.NONE,value:9.80665,offset:0},cmH2O:{name:"cmH2O",base:O.PRESSURE,prefixes:k.NONE,value:98.0665,offset:0},coulomb:{name:"coulomb",base:O.ELECTRIC_CHARGE,prefixes:k.LONG,value:1,offset:0},C:{name:"C",base:O.ELECTRIC_CHARGE,prefixes:k.SHORT,value:1,offset:0},farad:{name:"farad",base:O.ELECTRIC_CAPACITANCE,prefixes:k.LONG,value:1,offset:0},F:{name:"F",base:O.ELECTRIC_CAPACITANCE,prefixes:k.SHORT,value:1,offset:0},volt:{name:"volt",base:O.ELECTRIC_POTENTIAL,prefixes:k.LONG,value:1,offset:0},V:{name:"V",base:O.ELECTRIC_POTENTIAL,prefixes:k.SHORT,value:1,offset:0},ohm:{name:"ohm",base:O.ELECTRIC_RESISTANCE,prefixes:k.SHORTLONG,value:1,offset:0},henry:{name:"henry",base:O.ELECTRIC_INDUCTANCE,prefixes:k.LONG,value:1,offset:0},H:{name:"H",base:O.ELECTRIC_INDUCTANCE,prefixes:k.SHORT,value:1,offset:0},siemens:{name:"siemens",base:O.ELECTRIC_CONDUCTANCE,prefixes:k.LONG,value:1,offset:0},S:{name:"S",base:O.ELECTRIC_CONDUCTANCE,prefixes:k.SHORT,value:1,offset:0},weber:{name:"weber",base:O.MAGNETIC_FLUX,prefixes:k.LONG,value:1,offset:0},Wb:{name:"Wb",base:O.MAGNETIC_FLUX,prefixes:k.SHORT,value:1,offset:0},tesla:{name:"tesla",base:O.MAGNETIC_FLUX_DENSITY,prefixes:k.LONG,value:1,offset:0},T:{name:"T",base:O.MAGNETIC_FLUX_DENSITY,prefixes:k.SHORT,value:1,offset:0},b:{name:"b",base:O.BIT,prefixes:k.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:O.BIT,prefixes:k.BINARY_LONG,value:1,offset:0},B:{name:"B",base:O.BIT,prefixes:k.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:O.BIT,prefixes:k.BINARY_LONG,value:8,offset:0}},fe={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",lt:"l",litres:"litre",liter:"litre",liters:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fldr:"fluiddram",fluiddrams:"fluiddram",floz:"fluidounce",fluidounces:"fluidounce",gi:"gill",gills:"gill",cp:"cup",cups:"cup",pt:"pint",pints:"pint",qt:"quart",quarts:"quart",gal:"gallon",gallons:"gallon",bbl:"beerbarrel",beerbarrels:"beerbarrel",obl:"oilbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",lb:"lbm",lbs:"lbm",kips:"kip",kgf:"kilogramforce",acres:"acre",hectares:"hectare",sqfeet:"sqft",sqyard:"sqyd",sqmile:"sqmi",sqmiles:"sqmi",mmhg:"mmHg",mmh2o:"mmH2O",cmh2o:"cmH2O",seconds:"second",secs:"second",minutes:"minute",mins:"minute",hours:"hour",hr:"hour",hrs:"hour",days:"day",weeks:"week",months:"month",years:"year",decades:"decade",centuries:"century",millennia:"millennium",hertz:"hertz",radians:"radian",degrees:"degree",gradians:"gradian",cycles:"cycle",arcsecond:"arcsec",arcseconds:"arcsec",arcminute:"arcmin",arcminutes:"arcmin",BTUs:"BTU",watts:"watt",joules:"joule",amperes:"ampere",amps:"ampere",amp:"ampere",coulombs:"coulomb",volts:"volt",ohms:"ohm",farads:"farad",webers:"weber",teslas:"tesla",electronvolts:"electronvolt",moles:"mole",bit:"bits",byte:"bytes"};function xe(G){if(G.number==="BigNumber"){var J=ap(b);U.rad.value=new b(1),U.deg.value=J.div(180),U.grad.value=J.div(200),U.cycle.value=J.times(2),U.arcsec.value=J.div(648e3),U.arcmin.value=J.div(10800)}else U.rad.value=1,U.deg.value=Math.PI/180,U.grad.value=Math.PI/200,U.cycle.value=Math.PI*2,U.arcsec.value=Math.PI/648e3,U.arcmin.value=Math.PI/10800;U.radian.value=U.rad.value,U.degree.value=U.deg.value,U.gradian.value=U.grad.value}xe(r),e&&e("config",function(G,J){G.number!==J.number&&xe(G)});var oe={si:{NONE:{unit:X,prefix:k.NONE[""]},LENGTH:{unit:U.m,prefix:k.SHORT[""]},MASS:{unit:U.g,prefix:k.SHORT.k},TIME:{unit:U.s,prefix:k.SHORT[""]},CURRENT:{unit:U.A,prefix:k.SHORT[""]},TEMPERATURE:{unit:U.K,prefix:k.SHORT[""]},LUMINOUS_INTENSITY:{unit:U.cd,prefix:k.SHORT[""]},AMOUNT_OF_SUBSTANCE:{unit:U.mol,prefix:k.SHORT[""]},ANGLE:{unit:U.rad,prefix:k.SHORT[""]},BIT:{unit:U.bits,prefix:k.SHORT[""]},FORCE:{unit:U.N,prefix:k.SHORT[""]},ENERGY:{unit:U.J,prefix:k.SHORT[""]},POWER:{unit:U.W,prefix:k.SHORT[""]},PRESSURE:{unit:U.Pa,prefix:k.SHORT[""]},ELECTRIC_CHARGE:{unit:U.C,prefix:k.SHORT[""]},ELECTRIC_CAPACITANCE:{unit:U.F,prefix:k.SHORT[""]},ELECTRIC_POTENTIAL:{unit:U.V,prefix:k.SHORT[""]},ELECTRIC_RESISTANCE:{unit:U.ohm,prefix:k.SHORT[""]},ELECTRIC_INDUCTANCE:{unit:U.H,prefix:k.SHORT[""]},ELECTRIC_CONDUCTANCE:{unit:U.S,prefix:k.SHORT[""]},MAGNETIC_FLUX:{unit:U.Wb,prefix:k.SHORT[""]},MAGNETIC_FLUX_DENSITY:{unit:U.T,prefix:k.SHORT[""]},FREQUENCY:{unit:U.Hz,prefix:k.SHORT[""]}}};oe.cgs=JSON.parse(JSON.stringify(oe.si)),oe.cgs.LENGTH={unit:U.m,prefix:k.SHORT.c},oe.cgs.MASS={unit:U.g,prefix:k.SHORT[""]},oe.cgs.FORCE={unit:U.dyn,prefix:k.SHORT[""]},oe.cgs.ENERGY={unit:U.erg,prefix:k.NONE[""]},oe.us=JSON.parse(JSON.stringify(oe.si)),oe.us.LENGTH={unit:U.ft,prefix:k.NONE[""]},oe.us.MASS={unit:U.lbm,prefix:k.NONE[""]},oe.us.TEMPERATURE={unit:U.degF,prefix:k.NONE[""]},oe.us.FORCE={unit:U.lbf,prefix:k.NONE[""]},oe.us.ENERGY={unit:U.BTU,prefix:k.BTU[""]},oe.us.POWER={unit:U.hp,prefix:k.NONE[""]},oe.us.PRESSURE={unit:U.psi,prefix:k.NONE[""]},oe.auto=JSON.parse(JSON.stringify(oe.si));var be=oe.auto;v.setUnitSystem=function(G){if(Ze(oe,G))be=oe[G];else throw new Error("Unit system "+G+" does not exist. Choices are: "+Object.keys(oe).join(", "))},v.getUnitSystem=function(){for(var G in oe)if(Ze(oe,G)&&oe[G]===be)return G},v.typeConverters={BigNumber:function(J){return J!=null&&J.isFraction?new b(String(J.n)).div(String(J.d)).times(String(J.s)):new b(J+"")},Fraction:function(J){return new y(J)},Complex:function(J){return J},number:function(J){return J!=null&&J.isFraction?d(J):J}},v.prototype._numberConverter=function(){var G=v.typeConverters[this.valueType()];if(G)return G;throw new TypeError('Unsupported Unit value type "'+this.valueType()+'"')},v._getNumberConverter=function(G){if(!v.typeConverters[G])throw new TypeError('Unsupported type "'+G+'"');return v.typeConverters[G]};for(var ee in U)if(Ze(U,ee)){var Z=U[ee];Z.dimensions=Z.base.dimensions}for(var re in fe)if(Ze(fe,re)){var me=U[fe[re]],ce={};for(var Ae in me)Ze(me,Ae)&&(ce[Ae]=me[Ae]);ce.name=re,U[re]=ce}v.isValidAlpha=function(J){return/^[a-zA-Z]$/.test(J)};function we(G){for(var J=0;J0&&!(v.isValidAlpha(x)||_(x)))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+G+'"')}}return v.createUnit=function(G,J){if(typeof G!="object")throw new TypeError("createUnit expects first parameter to be of type 'Object'");if(J&&J.override){for(var ge in G)if(Ze(G,ge)&&v.deleteUnit(ge),G[ge].aliases)for(var ye=0;ye"u"||J===null)&&(J={}),typeof G!="string")throw new TypeError("createUnitSingle expects first parameter to be of type 'string'");if(Ze(U,G))throw new Error('Cannot create unit "'+G+'": a unit with that name already exists');we(G);var ge=null,ye=[],De=0,Ie,Oe,Je;if(J&&J.type==="Unit")ge=J.clone();else if(typeof J=="string")J!==""&&(Ie=J);else if(typeof J=="object")Ie=J.definition,Oe=J.prefixes,De=J.offset,Je=J.baseName,J.aliases&&(ye=J.aliases.valueOf());else throw new TypeError('Cannot create unit "'+G+'" from "'+J.toString()+'": expecting "string" or "Unit" or "Object"');if(ye){for(var wt=0;wt1e-12){de=!1;break}if(de){Pe=!0,qe.base=O[j];break}}if(!Pe){Je=Je||G+"_STUFF";var Ne={dimensions:ge.dimensions.slice(0)};Ne.key=Je,O[Je]=Ne,be[Je]={unit:qe,prefix:k.NONE[""]},qe.base=O[Je]}}else{if(Je=Je||G+"_STUFF",W.indexOf(Je)>=0)throw new Error('Cannot create new base unit "'+G+'": a base unit with that name already exists (and cannot be overridden)');W.push(Je);for(var rr in O)Ze(O,rr)&&(O[rr].dimensions[W.length-1]=0);for(var Wt={dimensions:[]},pr=0;pr{var{typed:e,Unit:r}=t;return e(nF,{Unit:function(i){return i.clone()},string:function(i){return r.isValuelessUnit(i)?new r(null,i):r.parse(i,{allowNoUnits:!0})},"number | BigNumber | Fraction | Complex, string | Unit":function(i,a){return new r(i,a)},"number | BigNumber | Fraction":function(i){return new r(i)},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var aF="sparse",IZ=["typed","SparseMatrix"],oF=M(aF,IZ,t=>{var{typed:e,SparseMatrix:r}=t;return e(aF,{"":function(){return new r([])},string:function(i){return new r([],i)},"Array | Matrix":function(i){return new r(i)},"Array | Matrix, string":function(i,a){return new r(i,a)}})});var sF="createUnit",BZ=["typed","Unit"],uF=M(sF,BZ,t=>{var{typed:e,Unit:r}=t;return e(sF,{"Object, Object":function(i,a){return r.createUnit(i,a)},Object:function(i){return r.createUnit(i,{})},"string, Unit | string | Object, Object":function(i,a,o){var s={};return s[i]=a,r.createUnit(s,o)},"string, Unit | string | Object":function(i,a){var o={};return o[i]=a,r.createUnit(o,{})},string:function(i){var a={};return a[i]={},r.createUnit(a,{})}})});var lF="acos",kZ=["typed","config","Complex"],cF=M(lF,kZ,t=>{var{typed:e,config:r,Complex:n}=t;return e(lF,{number:function(a){return a>=-1&&a<=1||r.predictable?Math.acos(a):new n(a,0).acos()},Complex:function(a){return a.acos()},BigNumber:function(a){return a.acos()}})});var fF="acosh",PZ=["typed","config","Complex"],pF=M(fF,PZ,t=>{var{typed:e,config:r,Complex:n}=t;return e(fF,{number:function(a){return a>=1||r.predictable?x0(a):a<=-1?new n(Math.log(Math.sqrt(a*a-1)-a),Math.PI):new n(a,0).acosh()},Complex:function(a){return a.acosh()},BigNumber:function(a){return a.acosh()}})});var mF="acot",$Z=["typed","BigNumber"],dF=M(mF,$Z,t=>{var{typed:e,BigNumber:r}=t;return e(mF,{number:w0,Complex:function(i){return i.acot()},BigNumber:function(i){return new r(1).div(i).atan()}})});var hF="acoth",OZ=["typed","config","Complex","BigNumber"],gF=M(hF,OZ,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(hF,{number:function(o){return o>=1||o<=-1||r.predictable?_0(o):new n(o,0).acoth()},Complex:function(o){return o.acoth()},BigNumber:function(o){return new i(1).div(o).atanh()}})});var vF="acsc",RZ=["typed","config","Complex","BigNumber"],yF=M(vF,RZ,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(vF,{number:function(o){return o<=-1||o>=1||r.predictable?A0(o):new n(o,0).acsc()},Complex:function(o){return o.acsc()},BigNumber:function(o){return new i(1).div(o).asin()}})});var bF="acsch",LZ=["typed","BigNumber"],xF=M(bF,LZ,t=>{var{typed:e,BigNumber:r}=t;return e(bF,{number:D0,Complex:function(i){return i.acsch()},BigNumber:function(i){return new r(1).div(i).asinh()}})});var wF="asec",VZ=["typed","config","Complex","BigNumber"],_F=M(wF,VZ,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(wF,{number:function(o){return o<=-1||o>=1||r.predictable?S0(o):new n(o,0).asec()},Complex:function(o){return o.asec()},BigNumber:function(o){return new i(1).div(o).acos()}})});var AF="asech",UZ=["typed","config","Complex","BigNumber"],DF=M(AF,UZ,t=>{var{typed:e,config:r,Complex:n,BigNumber:i}=t;return e(AF,{number:function(o){if(o<=1&&o>=-1||r.predictable){var s=1/o;if(s>0||r.predictable)return E0(o);var l=Math.sqrt(s*s-1);return new n(Math.log(l-s),Math.PI)}return new n(o,0).asech()},Complex:function(o){return o.asech()},BigNumber:function(o){return new i(1).div(o).acosh()}})});var SF="asin",qZ=["typed","config","Complex"],EF=M(SF,qZ,t=>{var{typed:e,config:r,Complex:n}=t;return e(SF,{number:function(a){return a>=-1&&a<=1||r.predictable?Math.asin(a):new n(a,0).asin()},Complex:function(a){return a.asin()},BigNumber:function(a){return a.asin()}})});var zZ="asinh",HZ=["typed"],TF=M(zZ,HZ,t=>{var{typed:e}=t;return e("asinh",{number:T0,Complex:function(n){return n.asinh()},BigNumber:function(n){return n.asinh()}})});var GZ="atan",WZ=["typed"],MF=M(GZ,WZ,t=>{var{typed:e}=t;return e("atan",{number:function(n){return Math.atan(n)},Complex:function(n){return n.atan()},BigNumber:function(n){return n.atan()}})});var CF="atan2",YZ=["typed","matrix","equalScalar","BigNumber","DenseMatrix","concat"],NF=M(CF,YZ,t=>{var{typed:e,matrix:r,equalScalar:n,BigNumber:i,DenseMatrix:a,concat:o}=t,s=wn({typed:e,equalScalar:n}),l=Ur({typed:e}),u=lg({typed:e,equalScalar:n}),c=Er({typed:e,equalScalar:n}),f=mr({typed:e,DenseMatrix:a}),m=Ft({typed:e,matrix:r,concat:o});return e(CF,{"number, number":Math.atan2,"BigNumber, BigNumber":(p,d)=>i.atan2(p,d)},m({scalar:"number | BigNumber",SS:u,DS:l,SD:s,Ss:c,sS:f}))});var FF="atanh",jZ=["typed","config","Complex"],IF=M(FF,jZ,t=>{var{typed:e,config:r,Complex:n}=t;return e(FF,{number:function(a){return a<=1&&a>=-1||r.predictable?M0(a):new n(a,0).atanh()},Complex:function(a){return a.atanh()},BigNumber:function(a){return a.atanh()}})});var Ja=M("trigUnit",["typed"],t=>{var{typed:e}=t;return{Unit:e.referToSelf(r=>n=>{if(!n.hasBase(n.constructor.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return e.find(r,n.valueType())(n.value)})}});var BF="cos",ZZ=["typed"],kF=M(BF,ZZ,t=>{var{typed:e}=t,r=Ja({typed:e});return e(BF,{number:Math.cos,"Complex | BigNumber":n=>n.cos()},r)});var PF="cosh",JZ=["typed"],$F=M(PF,JZ,t=>{var{typed:e}=t;return e(PF,{number:Ph,"Complex | BigNumber":r=>r.cosh()})});var OF="cot",XZ=["typed","BigNumber"],RF=M(OF,XZ,t=>{var{typed:e,BigNumber:r}=t,n=Ja({typed:e});return e(OF,{number:C0,Complex:i=>i.cot(),BigNumber:i=>new r(1).div(i.tan())},n)});var LF="coth",QZ=["typed","BigNumber"],VF=M(LF,QZ,t=>{var{typed:e,BigNumber:r}=t;return e(LF,{number:N0,Complex:n=>n.coth(),BigNumber:n=>new r(1).div(n.tanh())})});var UF="csc",KZ=["typed","BigNumber"],qF=M(UF,KZ,t=>{var{typed:e,BigNumber:r}=t,n=Ja({typed:e});return e(UF,{number:F0,Complex:i=>i.csc(),BigNumber:i=>new r(1).div(i.sin())},n)});var zF="csch",eJ=["typed","BigNumber"],HF=M(zF,eJ,t=>{var{typed:e,BigNumber:r}=t;return e(zF,{number:I0,Complex:n=>n.csch(),BigNumber:n=>new r(1).div(n.sinh())})});var GF="sec",tJ=["typed","BigNumber"],WF=M(GF,tJ,t=>{var{typed:e,BigNumber:r}=t,n=Ja({typed:e});return e(GF,{number:B0,Complex:i=>i.sec(),BigNumber:i=>new r(1).div(i.cos())},n)});var YF="sech",rJ=["typed","BigNumber"],jF=M(YF,rJ,t=>{var{typed:e,BigNumber:r}=t;return e(YF,{number:k0,Complex:n=>n.sech(),BigNumber:n=>new r(1).div(n.cosh())})});var ZF="sin",nJ=["typed"],JF=M(ZF,nJ,t=>{var{typed:e}=t,r=Ja({typed:e});return e(ZF,{number:Math.sin,"Complex | BigNumber":n=>n.sin()},r)});var XF="sinh",iJ=["typed"],QF=M(XF,iJ,t=>{var{typed:e}=t;return e(XF,{number:P0,"Complex | BigNumber":r=>r.sinh()})});var KF="tan",aJ=["typed"],eI=M(KF,aJ,t=>{var{typed:e}=t,r=Ja({typed:e});return e(KF,{number:Math.tan,"Complex | BigNumber":n=>n.tan()},r)});var oJ="tanh",sJ=["typed"],tI=M(oJ,sJ,t=>{var{typed:e}=t;return e("tanh",{number:$h,"Complex | BigNumber":r=>r.tanh()})});var rI="setCartesian",uJ=["typed","size","subset","compareNatural","Index","DenseMatrix"],nI=M(rI,uJ,t=>{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(rI,{"Array | Matrix, Array | Matrix":function(l,u){var c=[];if(n(r(l),new a(0))!==0&&n(r(u),new a(0))!==0){var f=Pt(Array.isArray(l)?l:l.toArray()).sort(i),m=Pt(Array.isArray(u)?u:u.toArray()).sort(i);c=[];for(var p=0;p{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(iI,{"Array | Matrix, Array | Matrix":function(l,u){var c;if(n(r(l),new a(0))===0)c=[];else{if(n(r(u),new a(0))===0)return Pt(l.toArray());var f=Ss(Pt(Array.isArray(l)?l:l.toArray()).sort(i)),m=Ss(Pt(Array.isArray(u)?u:u.toArray()).sort(i));c=[];for(var p,d=0;d{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(oI,{"Array | Matrix":function(l){var u;if(n(r(l),new a(0))===0)u=[];else{var c=Pt(Array.isArray(l)?l:l.toArray()).sort(i);u=[],u.push(c[0]);for(var f=1;f{var{typed:e,size:r,subset:n,compareNatural:i,Index:a,DenseMatrix:o}=t;return e(uI,{"Array | Matrix, Array | Matrix":function(l,u){var c;if(n(r(l),new a(0))===0||n(r(u),new a(0))===0)c=[];else{var f=Ss(Pt(Array.isArray(l)?l:l.toArray()).sort(i)),m=Ss(Pt(Array.isArray(u)?u:u.toArray()).sort(i));c=[];for(var p=0;p{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(cI,{"Array | Matrix, Array | Matrix":function(s,l){if(n(r(s),new a(0))===0)return!0;if(n(r(l),new a(0))===0)return!1;for(var u=Ss(Pt(Array.isArray(s)?s:s.toArray()).sort(i)),c=Ss(Pt(Array.isArray(l)?l:l.toArray()).sort(i)),f,m=0;m{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(pI,{"number | BigNumber | Fraction | Complex, Array | Matrix":function(s,l){if(n(r(l),new a(0))===0)return 0;for(var u=Pt(Array.isArray(l)?l:l.toArray()),c=0,f=0;f{var{typed:e,size:r,subset:n,compareNatural:i,Index:a}=t;return e(dI,{"Array | Matrix":function(u){if(n(r(u),new a(0))===0)return[];for(var c=Pt(Array.isArray(u)?u:u.toArray()).sort(i),f=[],m=0;m.toString(2).length<=c.length;)f.push(o(c,m.toString(2).split("").reverse())),m++;return s(f)}});function o(l,u){for(var c=[],f=0;f0;c--)for(var f=0;fl[f+1].length&&(u=l[f],l[f]=l[f+1],l[f+1]=u);return l}});var gI="setSize",hJ=["typed","compareNatural"],vI=M(gI,hJ,t=>{var{typed:e,compareNatural:r}=t;return e(gI,{"Array | Matrix":function(i){return Array.isArray(i)?Pt(i).length:Pt(i.toArray()).length},"Array | Matrix, boolean":function(i,a){if(a===!1||i.length===0)return Array.isArray(i)?Pt(i).length:Pt(i.toArray()).length;for(var o=Pt(Array.isArray(i)?i:i.toArray()).sort(r),s=1,l=1;l{var{typed:e,size:r,concat:n,subset:i,setDifference:a,Index:o}=t;return e(yI,{"Array | Matrix, Array | Matrix":function(l,u){if(i(r(l),new o(0))===0)return Pt(u);if(i(r(u),new o(0))===0)return Pt(l);var c=Pt(l),f=Pt(u);return n(a(c,f),a(f,c))}})});var xI="setUnion",vJ=["typed","size","concat","subset","setIntersect","setSymDifference","Index"],wI=M(xI,vJ,t=>{var{typed:e,size:r,concat:n,subset:i,setIntersect:a,setSymDifference:o,Index:s}=t;return e(xI,{"Array | Matrix, Array | Matrix":function(u,c){if(i(r(u),new s(0))===0)return Pt(c);if(i(r(c),new s(0))===0)return Pt(u);var f=Pt(u),m=Pt(c);return n(o(f,m),a(f,m))}})});var _I="add",yJ=["typed","matrix","addScalar","equalScalar","DenseMatrix","SparseMatrix","concat"],AI=M(_I,yJ,t=>{var{typed:e,matrix:r,addScalar:n,equalScalar:i,DenseMatrix:a,SparseMatrix:o,concat:s}=t,l=Ai({typed:e}),u=Tc({typed:e,equalScalar:i}),c=ra({typed:e,DenseMatrix:a}),f=Ft({typed:e,matrix:r,concat:s});return e(_I,{"any, any":n,"any, any, ...any":e.referToSelf(m=>(p,d,h)=>{for(var b=m(p,d),y=0;y{var{typed:e,abs:r,addScalar:n,divideScalar:i,multiplyScalar:a,sqrt:o,smaller:s,isPositive:l}=t;return e(DI,{"... number | BigNumber":u,Array:u,Matrix:c=>u(Pt(c.toArray(),!0))});function u(c){for(var f=0,m=0,p=0;p{var{typed:e,abs:r,add:n,pow:i,conj:a,sqrt:o,multiply:s,equalScalar:l,larger:u,smaller:c,matrix:f,ctranspose:m,eigs:p}=t;return e(EI,{number:Math.abs,Complex:function(T){return T.abs()},BigNumber:function(T){return T.abs()},boolean:function(T){return Math.abs(T)},Array:function(T){return x(f(T),2)},Matrix:function(T){return x(T,2)},"Array, number | BigNumber | string":function(T,_){return x(f(T),_)},"Matrix, number | BigNumber | string":function(T,_){return x(T,_)}});function d(E){var T=0;return E.forEach(function(_){var C=r(_);u(C,T)&&(T=C)},!0),T}function h(E){var T;return E.forEach(function(_){var C=r(_);(!T||c(C,T))&&(T=C)},!0),T||0}function b(E,T){if(T===Number.POSITIVE_INFINITY||T==="inf")return d(E);if(T===Number.NEGATIVE_INFINITY||T==="-inf")return h(E);if(T==="fro")return x(E,2);if(typeof T=="number"&&!isNaN(T)){if(!l(T,0)){var _=0;return E.forEach(function(C){_=n(i(r(C),T),_)},!0),i(_,1/T)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}function y(E){var T=0;return E.forEach(function(_,C){T=n(T,s(_,a(_)))}),r(o(T))}function D(E){var T=[],_=0;return E.forEach(function(C,N){var I=N[1],R=n(T[I]||0,r(C));u(R,_)&&(_=R),T[I]=R},!0),_}function v(E){var T=E.size();if(T[0]!==T[1])throw new RangeError("Invalid matrix dimensions");var _=m(E),C=s(_,E),N=p(C).values.toArray(),I=N[N.length-1];return r(o(I))}function A(E){var T=[],_=0;return E.forEach(function(C,N){var I=N[0],R=n(T[I]||0,r(C));u(R,_)&&(_=R),T[I]=R},!0),_}function w(E,T){if(T===1)return D(E);if(T===Number.POSITIVE_INFINITY||T==="inf")return A(E);if(T==="fro")return y(E);if(T===2)return v(E);throw new Error("Unsupported parameter value "+T)}function x(E,T){var _=E.size();if(_.length===1)return b(E,T);if(_.length===2){if(_[0]&&_[1])return w(E,T);throw new RangeError("Invalid matrix dimensions")}}});var MI="dot",wJ=["typed","addScalar","multiplyScalar","conj","size"],CI=M(MI,wJ,t=>{var{typed:e,addScalar:r,multiplyScalar:n,conj:i,size:a}=t;return e(MI,{"Array | DenseMatrix, Array | DenseMatrix":s,"SparseMatrix, SparseMatrix":l});function o(c,f){var m=u(c),p=u(f),d,h;if(m.length===1)d=m[0];else if(m.length===2&&m[1]===1)d=m[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+m.join(", ")+")");if(p.length===1)h=p[0];else if(p.length===2&&p[1]===1)h=p[0];else throw new RangeError("Expected a column vector, instead got a matrix of size ("+p.join(", ")+")");if(d!==h)throw new RangeError("Vectors must have equal length ("+d+" != "+h+")");if(d===0)throw new RangeError("Cannot calculate the dot product of empty vectors");return d}function s(c,f){var m=o(c,f),p=Ye(c)?c._data:c,d=Ye(c)?c._datatype||c.getDataType():void 0,h=Ye(f)?f._data:f,b=Ye(f)?f._datatype||f.getDataType():void 0,y=u(c).length===2,D=u(f).length===2,v=r,A=n;if(d&&b&&d===b&&typeof d=="string"&&d!=="mixed"){var w=d;v=e.find(r,[w,w]),A=e.find(n,[w,w])}if(!y&&!D){for(var x=A(i(p[0]),h[0]),E=1;Ex){A++;continue}w===x&&(b=y(b,D(p[v],h[A])),v++,A++)}return b}function u(c){return Ye(c)?c.size():a(c)}});var _J="trace",AJ=["typed","matrix","add"],NI=M(_J,AJ,t=>{var{typed:e,matrix:r,add:n}=t;return e("trace",{Array:function(s){return i(r(s))},SparseMatrix:a,DenseMatrix:i,any:ut});function i(o){var s=o._size,l=o._data;switch(s.length){case 1:if(s[0]===1)return ut(l[0]);throw new RangeError("Matrix must be square (size: "+Dt(s)+")");case 2:{var u=s[0],c=s[1];if(u===c){for(var f=0,m=0;m0)for(var d=0;dd)break}return p}throw new RangeError("Matrix must be square (size: "+Dt(c)+")")}});var FI="index",DJ=["typed","Index"],II=M(FI,DJ,t=>{var{typed:e,Index:r}=t;return e(FI,{"...number | string | BigNumber | Range | Array | Matrix":function(i){var a=i.map(function(s){return ot(s)?s.toNumber():sr(s)||Ye(s)?s.map(function(l){return ot(l)?l.toNumber():l}):s}),o=new r;return r.apply(o,a),o}})});var Rg=new Set(["end"]);var SJ="Node",EJ=["mathWithTransform"],BI=M(SJ,EJ,t=>{var{mathWithTransform:e}=t;function r(i){for(var a of[...Rg])if(i.has(a))throw new Error('Scope contains an illegal symbol, "'+a+'" is a reserved keyword')}class n{get type(){return"Node"}get isNode(){return!0}evaluate(a){return this.compile().evaluate(a)}compile(){var a=this._compile(e,{}),o={},s=null;function l(u){var c=xs(u);return r(c),a(c,o,s)}return{evaluate:l}}_compile(a,o){throw new Error("Method _compile must be implemented by type "+this.type)}forEach(a){throw new Error("Cannot run forEach on a Node interface")}map(a){throw new Error("Cannot run map on a Node interface")}_ifNode(a){if(!Gt(a))throw new TypeError("Callback function must return a Node");return a}traverse(a){a(this,null,null);function o(s,l){s.forEach(function(u,c,f){l(u,c,f),o(u,l)})}o(this,a)}transform(a){function o(s,l,u){var c=a(s,l,u);return c!==s?c:s.map(o)}return o(this,null,null)}filter(a){var o=[];return this.traverse(function(s,l,u){a(s,l,u)&&o.push(s)}),o}clone(){throw new Error("Cannot clone a Node interface")}cloneDeep(){return this.map(function(a){return a.cloneDeep()})}equals(a){return a?this.type===a.type&&Qi(this,a):!1}toString(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toString(a)}_toString(){throw new Error("_toString not implemented for "+this.type)}toJSON(){throw new Error("Cannot serialize object: toJSON not implemented by "+this.type)}toHTML(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toHTML(a)}_toHTML(){throw new Error("_toHTML not implemented for "+this.type)}toTex(a){var o=this._getCustomString(a);return typeof o<"u"?o:this._toTex(a)}_toTex(a){throw new Error("_toTex not implemented for "+this.type)}_getCustomString(a){if(a&&typeof a=="object")switch(typeof a.handler){case"object":case"undefined":return;case"function":return a.handler(this,a);default:throw new TypeError("Object or function expected as callback")}}getIdentifier(){return this.type}getContent(){return this}}return n},{isClass:!0,isNode:!0});function qr(t){return t&&t.isIndexError?new Zn(t.index+1,t.min+1,t.max!==void 0?t.max+1:void 0):t}function Lg(t){var{subset:e}=t;return function(n,i){try{if(Array.isArray(n))return e(n,i);if(n&&typeof n.subset=="function")return n.subset(i);if(typeof n=="string")return e(n,i);if(typeof n=="object"){if(!i.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return jr(n,i.getObjectProperty())}else throw new TypeError("Cannot apply index: unsupported type of object")}catch(a){throw qr(a)}}}var Vg="AccessorNode",TJ=["subset","Node"],kI=M(Vg,TJ,t=>{var{subset:e,Node:r}=t,n=Lg({subset:e});function i(o){return!($i(o)||Gn(o)||kt(o)||ai(o)||Oo(o)||Wn(o)||Mr(o))}class a extends r{constructor(s,l){if(super(),!Gt(s))throw new TypeError('Node expected for parameter "object"');if(!Xi(l))throw new TypeError('IndexNode expected for parameter "index"');this.object=s,this.index=l}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Vg}get isAccessorNode(){return!0}_compile(s,l){var u=this.object._compile(s,l),c=this.index._compile(s,l);if(this.index.isObjectProperty()){var f=this.index.getObjectProperty();return function(p,d,h){return jr(u(p,d,h),f)}}else return function(p,d,h){var b=u(p,d,h),y=c(p,d,b);return n(b,y)}}forEach(s){s(this.object,"object",this),s(this.index,"index",this)}map(s){return new a(this._ifNode(s(this.object,"object",this)),this._ifNode(s(this.index,"index",this)))}clone(){return new a(this.object,this.index)}_toString(s){var l=this.object.toString(s);return i(this.object)&&(l="("+l+")"),l+this.index.toString(s)}_toHTML(s){var l=this.object.toHTML(s);return i(this.object)&&(l='('+l+')'),l+this.index.toHTML(s)}_toTex(s){var l=this.object.toTex(s);return i(this.object)&&(l="\\left(' + object + '\\right)"),l+this.index.toTex(s)}toJSON(){return{mathjs:Vg,object:this.object,index:this.index}}static fromJSON(s){return new a(s.object,s.index)}}return dr(a,"name",Vg),a},{isClass:!0,isNode:!0});var Ug="ArrayNode",MJ=["Node"],PI=M(Ug,MJ,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),this.items=i||[],!Array.isArray(this.items)||!this.items.every(Gt))throw new TypeError("Array containing Nodes expected")}get type(){return Ug}get isArrayNode(){return!0}_compile(i,a){var o=Wa(this.items,function(u){return u._compile(i,a)}),s=i.config.matrix!=="Array";if(s){var l=i.matrix;return function(c,f,m){return l(Wa(o,function(p){return p(c,f,m)}))}}else return function(c,f,m){return Wa(o,function(p){return p(c,f,m)})}}forEach(i){for(var a=0;a['+a.join(',')+']'}_toTex(i){function a(o,s){var l=o.some(Gn)&&!o.every(Gn),u=s||l,c=u?"&":"\\\\",f=o.map(function(m){return m.items?a(m.items,!s):m.toTex(i)}).join(c);return l||!u||u&&!s?"\\begin{bmatrix}"+f+"\\end{bmatrix}":f}return a(this.items,!1)}}return dr(r,"name",Ug),r},{isClass:!0,isNode:!0});function $I(t){var{subset:e,matrix:r}=t;return function(i,a,o){try{if(Array.isArray(i)){var s=r(i).subset(a,o).valueOf();return s.forEach((l,u)=>{i[u]=l}),i}else{if(i&&typeof i.subset=="function")return i.subset(a,o);if(typeof i=="string")return e(i,a,o);if(typeof i=="object"){if(!a.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return Bo(i,a.getObjectProperty(),o),i}else throw new TypeError("Cannot apply index: unsupported type of object")}}catch(l){throw qr(l)}}}var Xa=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{"OperatorNode:or":{op:"or",associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{op:"xor",associativity:"left",associativeWith:[]}},{"OperatorNode:and":{op:"and",associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{op:"|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{op:"^|",associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{op:"&",associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{op:"==",associativity:"left",associativeWith:[]},"OperatorNode:unequal":{op:"!=",associativity:"left",associativeWith:[]},"OperatorNode:smaller":{op:"<",associativity:"left",associativeWith:[]},"OperatorNode:larger":{op:">",associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{op:"<=",associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{op:">=",associativity:"left",associativeWith:[]},RelationalNode:{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{op:"<<",associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{op:">>",associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{op:">>>",associativity:"left",associativeWith:[]}},{"OperatorNode:to":{op:"to",associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{op:"+",associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{op:"-",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{op:"*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{op:"/",associativity:"left",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},"OperatorNode:dotMultiply":{op:".*",associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{op:"./",associativity:"left",associativeWith:[]},"OperatorNode:mod":{op:"mod",associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]}},{"OperatorNode:unaryPlus":{op:"+",associativity:"right"},"OperatorNode:unaryMinus":{op:"-",associativity:"right"},"OperatorNode:bitNot":{op:"~",associativity:"right"},"OperatorNode:not":{op:"not",associativity:"right"}},{"OperatorNode:pow":{op:"^",associativity:"right",associativeWith:[],latexRightParens:!1},"OperatorNode:dotPow":{op:".^",associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{op:"!",associativity:"left"}},{"OperatorNode:ctranspose":{op:"'",associativity:"left"}}];function qg(t,e){if(!e||e!=="auto")return t;for(var r=t;Wn(r);)r=r.content;return r}function xr(t,e,r,n){var i=t;e!=="keep"&&(i=t.getContent());for(var a=i.getIdentifier(),o=null,s=0;s{var{subset:e,matrix:r,Node:n}=t,i=Lg({subset:e}),a=$I({subset:e,matrix:r});function o(l,u,c){u||(u="keep");var f=xr(l,u,c),m=xr(l.value,u,c);return u==="all"||m!==null&&m<=f}class s extends n{constructor(u,c,f){if(super(),this.object=u,this.index=f?c:null,this.value=f||c,!Mr(u)&&!$i(u))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(Mr(u)&&u.name==="end")throw new Error('Cannot assign to symbol "end"');if(this.index&&!Xi(this.index))throw new TypeError('IndexNode expected as "index"');if(!Gt(this.value))throw new TypeError('Node expected as "value"')}get name(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}get type(){return Hg}get isAssignmentNode(){return!0}_compile(u,c){var f=this.object._compile(u,c),m=this.index?this.index._compile(u,c):null,p=this.value._compile(u,c),d=this.object.name;if(this.index)if(this.index.isObjectProperty()){var h=this.index.getObjectProperty();return function(A,w,x){var E=f(A,w,x),T=p(A,w,x);return Bo(E,h,T),T}}else{if(Mr(this.object))return function(A,w,x){var E=f(A,w,x),T=p(A,w,x),_=m(A,w,E);return A.set(d,a(E,_,T)),T};var b=this.object.object._compile(u,c);if(this.object.index.isObjectProperty()){var y=this.object.index.getObjectProperty();return function(A,w,x){var E=b(A,w,x),T=jr(E,y),_=m(A,w,T),C=p(A,w,x);return Bo(E,y,a(T,_,C)),C}}else{var D=this.object.index._compile(u,c);return function(A,w,x){var E=b(A,w,x),T=D(A,w,E),_=i(E,T),C=m(A,w,_),N=p(A,w,x);return a(E,T,a(_,C,N)),N}}}else{if(!Mr(this.object))throw new TypeError("SymbolNode expected as object");return function(A,w,x){var E=p(A,w,x);return A.set(d,E),E}}}forEach(u){u(this.object,"object",this),this.index&&u(this.index,"index",this),u(this.value,"value",this)}map(u){var c=this._ifNode(u(this.object,"object",this)),f=this.index?this._ifNode(u(this.index,"index",this)):null,m=this._ifNode(u(this.value,"value",this));return new s(c,f,m)}clone(){return new s(this.object,this.index,this.value)}_toString(u){var c=this.object.toString(u),f=this.index?this.index.toString(u):"",m=this.value.toString(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m="("+m+")"),c+f+" = "+m}toJSON(){return{mathjs:Hg,object:this.object,index:this.index,value:this.value}}static fromJSON(u){return new s(u.object,u.index,u.value)}_toHTML(u){var c=this.object.toHTML(u),f=this.index?this.index.toHTML(u):"",m=this.value.toHTML(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m='('+m+')'),c+f+'='+m}_toTex(u){var c=this.object.toTex(u),f=this.index?this.index.toTex(u):"",m=this.value.toTex(u);return o(this,u&&u.parenthesis,u&&u.implicit)&&(m="\\left(".concat(m,"\\right)")),c+f+"="+m}}return dr(s,"name",Hg),s},{isClass:!0,isNode:!0});var Gg="BlockNode",NJ=["ResultSet","Node"],LI=M(Gg,NJ,t=>{var{ResultSet:e,Node:r}=t;class n extends r{constructor(a){if(super(),!Array.isArray(a))throw new Error("Array expected");this.blocks=a.map(function(o){var s=o&&o.node,l=o&&o.visible!==void 0?o.visible:!0;if(!Gt(s))throw new TypeError('Property "node" must be a Node');if(typeof l!="boolean")throw new TypeError('Property "visible" must be a boolean');return{node:s,visible:l}})}get type(){return Gg}get isBlockNode(){return!0}_compile(a,o){var s=Wa(this.blocks,function(l){return{evaluate:l.node._compile(a,o),visible:l.visible}});return function(u,c,f){var m=[];return Jh(s,function(d){var h=d.evaluate(u,c,f);d.visible&&m.push(h)}),new e(m)}}forEach(a){for(var o=0;o;')}).join('
')}_toTex(a){return this.blocks.map(function(o){return o.node.toTex(a)+(o.visible?"":";")}).join(`\\;\\; +`)}}return dr(n,"name",Gg),n},{isClass:!0,isNode:!0});var Wg="ConditionalNode",FJ=["Node"],VI=M(Wg,FJ,t=>{var{Node:e}=t;function r(i){if(typeof i=="number"||typeof i=="boolean"||typeof i=="string")return!!i;if(i){if(ot(i))return!i.isZero();if(Hn(i))return!!(i.re||i.im);if(En(i))return!!i.value}if(i==null)return!1;throw new TypeError('Unsupported type of condition "'+ir(i)+'"')}class n extends e{constructor(a,o,s){if(super(),!Gt(a))throw new TypeError("Parameter condition must be a Node");if(!Gt(o))throw new TypeError("Parameter trueExpr must be a Node");if(!Gt(s))throw new TypeError("Parameter falseExpr must be a Node");this.condition=a,this.trueExpr=o,this.falseExpr=s}get type(){return Wg}get isConditionalNode(){return!0}_compile(a,o){var s=this.condition._compile(a,o),l=this.trueExpr._compile(a,o),u=this.falseExpr._compile(a,o);return function(f,m,p){return r(s(f,m,p))?l(f,m,p):u(f,m,p)}}forEach(a){a(this.condition,"condition",this),a(this.trueExpr,"trueExpr",this),a(this.falseExpr,"falseExpr",this)}map(a){return new n(this._ifNode(a(this.condition,"condition",this)),this._ifNode(a(this.trueExpr,"trueExpr",this)),this._ifNode(a(this.falseExpr,"falseExpr",this)))}clone(){return new n(this.condition,this.trueExpr,this.falseExpr)}_toString(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=xr(this,o,a&&a.implicit),l=this.condition.toString(a),u=xr(this.condition,o,a&&a.implicit);(o==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(l="("+l+")");var c=this.trueExpr.toString(a),f=xr(this.trueExpr,o,a&&a.implicit);(o==="all"||this.trueExpr.type==="OperatorNode"||f!==null&&f<=s)&&(c="("+c+")");var m=this.falseExpr.toString(a),p=xr(this.falseExpr,o,a&&a.implicit);return(o==="all"||this.falseExpr.type==="OperatorNode"||p!==null&&p<=s)&&(m="("+m+")"),l+" ? "+c+" : "+m}toJSON(){return{mathjs:Wg,condition:this.condition,trueExpr:this.trueExpr,falseExpr:this.falseExpr}}static fromJSON(a){return new n(a.condition,a.trueExpr,a.falseExpr)}_toHTML(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=xr(this,o,a&&a.implicit),l=this.condition.toHTML(a),u=xr(this.condition,o,a&&a.implicit);(o==="all"||this.condition.type==="OperatorNode"||u!==null&&u<=s)&&(l='('+l+')');var c=this.trueExpr.toHTML(a),f=xr(this.trueExpr,o,a&&a.implicit);(o==="all"||this.trueExpr.type==="OperatorNode"||f!==null&&f<=s)&&(c='('+c+')');var m=this.falseExpr.toHTML(a),p=xr(this.falseExpr,o,a&&a.implicit);return(o==="all"||this.falseExpr.type==="OperatorNode"||p!==null&&p<=s)&&(m='('+m+')'),l+'?'+c+':'+m}_toTex(a){return"\\begin{cases} {"+this.trueExpr.toTex(a)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(a)+"}\\\\{"+this.falseExpr.toTex(a)+"}, &\\quad{\\text{otherwise}}\\end{cases}"}}return dr(n,"name",Wg),n},{isClass:!0,isNode:!0});var HI=Tr(qI(),1);var j0={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega",true:"\\mathrm{True}",false:"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},vr={transpose:"^\\top",ctranspose:"^H",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"\\~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},Z0={abs:{1:"\\left|${args[0]}\\right|"},add:{2:"\\left(${args[0]}".concat(vr.add,"${args[1]}\\right)")},cbrt:{1:"\\sqrt[3]{${args[0]}}"},ceil:{1:"\\left\\lceil${args[0]}\\right\\rceil"},cube:{1:"\\left(${args[0]}\\right)^3"},divide:{2:"\\frac{${args[0]}}{${args[1]}}"},dotDivide:{2:"\\left(${args[0]}".concat(vr.dotDivide,"${args[1]}\\right)")},dotMultiply:{2:"\\left(${args[0]}".concat(vr.dotMultiply,"${args[1]}\\right)")},dotPow:{2:"\\left(${args[0]}".concat(vr.dotPow,"${args[1]}\\right)")},exp:{1:"\\exp\\left(${args[0]}\\right)"},expm1:"\\left(e".concat(vr.pow,"{${args[0]}}-1\\right)"),fix:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},floor:{1:"\\left\\lfloor${args[0]}\\right\\rfloor"},fraction:{2:"\\frac{${args[0]}}{${args[1]}}"},gcd:"\\gcd\\left(${args}\\right)",hypot:"\\hypot\\left(${args}\\right)",log:{1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},log10:{1:"\\log_{10}\\left(${args[0]}\\right)"},log1p:{1:"\\ln\\left(${args[0]}+1\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}+1\\right)"},log2:"\\log_{2}\\left(${args[0]}\\right)",mod:{2:"\\left(${args[0]}".concat(vr.mod,"${args[1]}\\right)")},multiply:{2:"\\left(${args[0]}".concat(vr.multiply,"${args[1]}\\right)")},norm:{1:"\\left\\|${args[0]}\\right\\|",2:void 0},nthRoot:{2:"\\sqrt[${args[1]}]{${args[0]}}"},nthRoots:{2:"\\{y : y^${args[1]} = {${args[0]}}\\}"},pow:{2:"\\left(${args[0]}\\right)".concat(vr.pow,"{${args[1]}}")},round:{1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},sign:{1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},sqrt:{1:"\\sqrt{${args[0]}}"},square:{1:"\\left(${args[0]}\\right)^2"},subtract:{2:"\\left(${args[0]}".concat(vr.subtract,"${args[1]}\\right)")},unaryMinus:{1:"".concat(vr.unaryMinus,"\\left(${args[0]}\\right)")},unaryPlus:{1:"".concat(vr.unaryPlus,"\\left(${args[0]}\\right)")},bitAnd:{2:"\\left(${args[0]}".concat(vr.bitAnd,"${args[1]}\\right)")},bitNot:{1:vr.bitNot+"\\left(${args[0]}\\right)"},bitOr:{2:"\\left(${args[0]}".concat(vr.bitOr,"${args[1]}\\right)")},bitXor:{2:"\\left(${args[0]}".concat(vr.bitXor,"${args[1]}\\right)")},leftShift:{2:"\\left(${args[0]}".concat(vr.leftShift,"${args[1]}\\right)")},rightArithShift:{2:"\\left(${args[0]}".concat(vr.rightArithShift,"${args[1]}\\right)")},rightLogShift:{2:"\\left(${args[0]}".concat(vr.rightLogShift,"${args[1]}\\right)")},bellNumbers:{1:"\\mathrm{B}_{${args[0]}}"},catalan:{1:"\\mathrm{C}_{${args[0]}}"},stirlingS2:{2:"\\mathrm{S}\\left(${args}\\right)"},arg:{1:"\\arg\\left(${args[0]}\\right)"},conj:{1:"\\left(${args[0]}\\right)^*"},im:{1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},re:{1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},and:{2:"\\left(${args[0]}".concat(vr.and,"${args[1]}\\right)")},not:{1:vr.not+"\\left(${args[0]}\\right)"},or:{2:"\\left(${args[0]}".concat(vr.or,"${args[1]}\\right)")},xor:{2:"\\left(${args[0]}".concat(vr.xor,"${args[1]}\\right)")},cross:{2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},ctranspose:{1:"\\left(${args[0]}\\right)".concat(vr.ctranspose)},det:{1:"\\det\\left(${args[0]}\\right)"},dot:{2:"\\left(${args[0]}\\cdot${args[1]}\\right)"},expm:{1:"\\exp\\left(${args[0]}\\right)"},inv:{1:"\\left(${args[0]}\\right)^{-1}"},pinv:{1:"\\left(${args[0]}\\right)^{+}"},sqrtm:{1:"{${args[0]}}".concat(vr.pow,"{\\frac{1}{2}}")},trace:{1:"\\mathrm{tr}\\left(${args[0]}\\right)"},transpose:{1:"\\left(${args[0]}\\right)".concat(vr.transpose)},combinations:{2:"\\binom{${args[0]}}{${args[1]}}"},combinationsWithRep:{2:"\\left(\\!\\!{\\binom{${args[0]}}{${args[1]}}}\\!\\!\\right)"},factorial:{1:"\\left(${args[0]}\\right)".concat(vr.factorial)},gamma:{1:"\\Gamma\\left(${args[0]}\\right)"},lgamma:{1:"\\ln\\Gamma\\left(${args[0]}\\right)"},equal:{2:"\\left(${args[0]}".concat(vr.equal,"${args[1]}\\right)")},larger:{2:"\\left(${args[0]}".concat(vr.larger,"${args[1]}\\right)")},largerEq:{2:"\\left(${args[0]}".concat(vr.largerEq,"${args[1]}\\right)")},smaller:{2:"\\left(${args[0]}".concat(vr.smaller,"${args[1]}\\right)")},smallerEq:{2:"\\left(${args[0]}".concat(vr.smallerEq,"${args[1]}\\right)")},unequal:{2:"\\left(${args[0]}".concat(vr.unequal,"${args[1]}\\right)")},erf:{1:"erf\\left(${args[0]}\\right)"},max:"\\max\\left(${args}\\right)",min:"\\min\\left(${args}\\right)",variance:"\\mathrm{Var}\\left(${args}\\right)",acos:{1:"\\cos^{-1}\\left(${args[0]}\\right)"},acosh:{1:"\\cosh^{-1}\\left(${args[0]}\\right)"},acot:{1:"\\cot^{-1}\\left(${args[0]}\\right)"},acoth:{1:"\\coth^{-1}\\left(${args[0]}\\right)"},acsc:{1:"\\csc^{-1}\\left(${args[0]}\\right)"},acsch:{1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},asec:{1:"\\sec^{-1}\\left(${args[0]}\\right)"},asech:{1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},asin:{1:"\\sin^{-1}\\left(${args[0]}\\right)"},asinh:{1:"\\sinh^{-1}\\left(${args[0]}\\right)"},atan:{1:"\\tan^{-1}\\left(${args[0]}\\right)"},atan2:{2:"\\mathrm{atan2}\\left(${args}\\right)"},atanh:{1:"\\tanh^{-1}\\left(${args[0]}\\right)"},cos:{1:"\\cos\\left(${args[0]}\\right)"},cosh:{1:"\\cosh\\left(${args[0]}\\right)"},cot:{1:"\\cot\\left(${args[0]}\\right)"},coth:{1:"\\coth\\left(${args[0]}\\right)"},csc:{1:"\\csc\\left(${args[0]}\\right)"},csch:{1:"\\mathrm{csch}\\left(${args[0]}\\right)"},sec:{1:"\\sec\\left(${args[0]}\\right)"},sech:{1:"\\mathrm{sech}\\left(${args[0]}\\right)"},sin:{1:"\\sin\\left(${args[0]}\\right)"},sinh:{1:"\\sinh\\left(${args[0]}\\right)"},tan:{1:"\\tan\\left(${args[0]}\\right)"},tanh:{1:"\\tanh\\left(${args[0]}\\right)"},to:{2:"\\left(${args[0]}".concat(vr.to,"${args[1]}\\right)")},numeric:function(e,r){return e.args[0].toTex()},number:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},string:{0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},bignumber:{0:"0",1:"\\left(${args[0]}\\right)"},bigint:{0:"0",1:"\\left(${args[0]}\\right)"},complex:{0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+".concat(j0.i,"\\cdot\\left(${args[1]}\\right)\\right)")},matrix:{0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},unit:{1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"}},GI="\\mathrm{${name}}\\left(${args}\\right)",zI={deg:"^\\circ"};function Yg(t){return(0,HI.default)(t,{preserveFormatting:!0})}function jg(t,e){return e=typeof e>"u"?!1:e,e?Ze(zI,t)?zI[t]:"\\mathrm{"+Yg(t)+"}":Ze(j0,t)?j0[t]:Yg(t)}var Zg="ConstantNode",PJ=["Node"],WI=M(Zg,PJ,t=>{var{Node:e}=t;class r extends e{constructor(i){super(),this.value=i}get type(){return Zg}get isConstantNode(){return!0}_compile(i,a){var o=this.value;return function(){return o}}forEach(i){}map(i){return this.clone()}clone(){return new r(this.value)}_toString(i){return Dt(this.value,i)}_toHTML(i){var a=this._toString(i);switch(ir(this.value)){case"number":case"bigint":case"BigNumber":case"Fraction":return''+a+"";case"string":return''+a+"";case"boolean":return''+a+"";case"null":return''+a+"";case"undefined":return''+a+"";default:return''+a+""}}toJSON(){return{mathjs:Zg,value:this.value}}static fromJSON(i){return new r(i.value)}_toTex(i){var a=this._toString(i),o=ir(this.value);switch(o){case"string":return"\\mathtt{"+Yg(a)+"}";case"number":case"BigNumber":{var s=o==="BigNumber"?this.value.isFinite():isFinite(this.value);if(!s)return this.value.valueOf()<0?"-\\infty":"\\infty";var l=a.toLowerCase().indexOf("e");return l!==-1?a.substring(0,l)+"\\cdot10^{"+a.substring(l+1)+"}":a}case"bigint":return a.toString();case"Fraction":return this.value.toLatex();default:return a}}}return dr(r,"name",Zg),r},{isClass:!0,isNode:!0});var Jg="FunctionAssignmentNode",$J=["typed","Node"],YI=M(Jg,$J,t=>{var{typed:e,Node:r}=t;function n(a,o,s){var l=xr(a,o,s),u=xr(a.expr,o,s);return o==="all"||u!==null&&u<=l}class i extends r{constructor(o,s,l){if(super(),typeof o!="string")throw new TypeError('String expected for parameter "name"');if(!Array.isArray(s))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!Gt(l))throw new TypeError('Node expected for parameter "expr"');if(Rg.has(o))throw new Error('Illegal function name, "'+o+'" is a reserved keyword');var u=new Set;for(var c of s){var f=typeof c=="string"?c:c.name;if(u.has(f))throw new Error('Duplicate parameter name "'.concat(f,'"'));u.add(f)}this.name=o,this.params=s.map(function(m){return m&&m.name||m}),this.types=s.map(function(m){return m&&m.type||"any"}),this.expr=l}get type(){return Jg}get isFunctionAssignmentNode(){return!0}_compile(o,s){var l=Object.create(s);Jh(this.params,function(d){l[d]=!0});var u=this.expr._compile(o,l),c=this.name,f=this.params,m=zx(this.types,","),p=c+"("+zx(this.params,", ")+")";return function(h,b,y){var D={};D[m]=function(){for(var A=Object.create(b),w=0;w'+jn(this.params[u])+"");var c=this.expr.toHTML(o);return n(this,s,o&&o.implicit)&&(c='('+c+')'),''+jn(this.name)+'('+l.join(',')+')='+c}_toTex(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=this.expr.toTex(o);return n(this,s,o&&o.implicit)&&(l="\\left(".concat(l,"\\right)")),"\\mathrm{"+this.name+"}\\left("+this.params.map(jg).join(",")+"\\right)="+l}}return dr(i,"name",Jg),i},{isClass:!0,isNode:!0});var Xg="IndexNode",OJ=["Node","size"],jI=M(Xg,OJ,t=>{var{Node:e,size:r}=t;class n extends e{constructor(a,o){if(super(),this.dimensions=a,this.dotNotation=o||!1,!Array.isArray(a)||!a.every(Gt))throw new TypeError('Array containing Nodes expected for parameter "dimensions"');if(this.dotNotation&&!this.isObjectProperty())throw new Error("dotNotation only applicable for object properties")}get type(){return Xg}get isIndexNode(){return!0}_compile(a,o){var s=Wa(this.dimensions,function(u,c){var f=u.filter(d=>d.isSymbolNode&&d.name==="end").length>0;if(f){var m=Object.create(o);m.end=!0;var p=u._compile(a,m);return function(h,b,y){if(!Ye(y)&&!sr(y)&&!Jr(y))throw new TypeError('Cannot resolve "end": context must be a Matrix, Array, or string but is '+ir(y));var D=r(y).valueOf(),v=Object.create(b);return v.end=D[c],p(h,v,y)}}else return u._compile(a,o)}),l=jr(a,"index");return function(c,f,m){var p=Wa(s,function(d){return d(c,f,m)});return l(...p)}}forEach(a){for(var o=0;o.'+jn(this.getObjectProperty())+"":'['+o.join(',')+']'}_toTex(a){var o=this.dimensions.map(function(s){return s.toTex(a)});return this.dotNotation?"."+this.getObjectProperty():"_{"+o.join(",")+"}"}}return dr(n,"name",Xg),n},{isClass:!0,isNode:!0});var Qg="ObjectNode",RJ=["Node"],ZI=M(Qg,RJ,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),this.properties=i||{},i&&(typeof i!="object"||!Object.keys(i).every(function(a){return Gt(i[a])})))throw new TypeError("Object containing Nodes expected")}get type(){return Qg}get isObjectNode(){return!0}_compile(i,a){var o={};for(var s in this.properties)if(Ze(this.properties,s)){var l=Qu(s),u=JSON.parse(l),c=jr(this.properties,s);o[u]=c._compile(i,a)}return function(m,p,d){var h={};for(var b in o)Ze(o,b)&&(h[b]=o[b](m,p,d));return h}}forEach(i){for(var a in this.properties)Ze(this.properties,a)&&i(this.properties[a],"properties["+Qu(a)+"]",this)}map(i){var a={};for(var o in this.properties)Ze(this.properties,o)&&(a[o]=this._ifNode(i(this.properties[o],"properties["+Qu(o)+"]",this)));return new r(a)}clone(){var i={};for(var a in this.properties)Ze(this.properties,a)&&(i[a]=this.properties[a]);return new r(i)}_toString(i){var a=[];for(var o in this.properties)Ze(this.properties,o)&&a.push(Qu(o)+": "+this.properties[o].toString(i));return"{"+a.join(", ")+"}"}toJSON(){return{mathjs:Qg,properties:this.properties}}static fromJSON(i){return new r(i.properties)}_toHTML(i){var a=[];for(var o in this.properties)Ze(this.properties,o)&&a.push(''+jn(o)+':'+this.properties[o].toHTML(i));return'{'+a.join(',')+'}'}_toTex(i){var a=[];for(var o in this.properties)Ze(this.properties,o)&&a.push("\\mathbf{"+o+":} & "+this.properties[o].toTex(i)+"\\\\");var s="\\left\\{\\begin{array}{ll}"+a.join(` +`)+"\\end{array}\\right\\}";return s}}return dr(r,"name",Qg),r},{isClass:!0,isNode:!0});function al(t,e){return new pc(t,new Ks(e),new Set(Object.keys(e)))}var Kg="OperatorNode",LJ=["Node"],JI=M(Kg,LJ,t=>{var{Node:e}=t;function r(a,o){var s=a;if(o==="auto")for(;Wn(s);)s=s.content;return kt(s)?!0:Rr(s)?r(s.args[0],o):!1}function n(a,o,s,l,u){var c=xr(a,o,s),f=Pc(a,o);if(o==="all"||l.length>2&&a.getIdentifier()!=="OperatorNode:add"&&a.getIdentifier()!=="OperatorNode:multiply")return l.map(function(C){switch(C.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var m;switch(l.length){case 0:m=[];break;case 1:{var p=xr(l[0],o,s,a);if(u&&p!==null){var d,h;if(o==="keep"?(d=l[0].getIdentifier(),h=a.getIdentifier()):(d=l[0].getContent().getIdentifier(),h=a.getContent().getIdentifier()),Xa[c][h].latexLeftParens===!1){m=[!1];break}if(Xa[p][d].latexParens===!1){m=[!1];break}}if(p===null){m=[!1];break}if(p<=c){m=[!0];break}m=[!1]}break;case 2:{var b,y=xr(l[0],o,s,a),D=zg(a,l[0],o);y===null?b=!1:y===c&&f==="right"&&!D||y=2&&a.getIdentifier()==="OperatorNode:multiply"&&a.implicit&&o!=="all"&&s==="hide")for(var _=1;_2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var b=u.map(function(y,D){return y=y.toString(o),c[D]&&(y="("+y+")"),y});return this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?b.join(" "):b.join(" "+this.op+" ")}else return this.fn+"("+this.args.join(", ")+")"}toJSON(){return{mathjs:Kg,op:this.op,fn:this.fn,args:this.args,implicit:this.implicit,isPercentage:this.isPercentage}}static fromJSON(o){return new i(o.op,o.fn,o.args,o.implicit,o.isPercentage)}_toHTML(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=o&&o.implicit?o.implicit:"hide",u=this.args,c=n(this,s,l,u,!1);if(u.length===1){var f=Pc(this,s),m=u[0].toHTML(o);return c[0]&&(m='('+m+')'),f==="right"?''+jn(this.op)+""+m:m+''+jn(this.op)+""}else if(u.length===2){var p=u[0].toHTML(o),d=u[1].toHTML(o);return c[0]&&(p='('+p+')'),c[1]&&(d='('+d+')'),this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?p+''+d:p+''+jn(this.op)+""+d}else{var h=u.map(function(b,y){return b=b.toHTML(o),c[y]&&(b='('+b+')'),b});return u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")?this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&l==="hide"?h.join(''):h.join(''+jn(this.op)+""):''+jn(this.fn)+'('+h.join(',')+')'}}_toTex(o){var s=o&&o.parenthesis?o.parenthesis:"keep",l=o&&o.implicit?o.implicit:"hide",u=this.args,c=n(this,s,l,u,!0),f=vr[this.fn];if(f=typeof f>"u"?this.op:f,u.length===1){var m=Pc(this,s),p=u[0].toTex(o);return c[0]&&(p="\\left(".concat(p,"\\right)")),m==="right"?f+p:p+f}else if(u.length===2){var d=u[0],h=d.toTex(o);c[0]&&(h="\\left(".concat(h,"\\right)"));var b=u[1],y=b.toTex(o);c[1]&&(y="\\left(".concat(y,"\\right)"));var D;switch(s==="keep"?D=d.getIdentifier():D=d.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return f+"{"+h+"}{"+y+"}";case"OperatorNode:pow":switch(h="{"+h+"}",y="{"+y+"}",D){case"ConditionalNode":case"OperatorNode:divide":h="\\left(".concat(h,"\\right)")}break;case"OperatorNode:multiply":if(this.implicit&&l==="hide")return h+"~"+y}return h+f+y}else if(u.length>2&&(this.getIdentifier()==="OperatorNode:add"||this.getIdentifier()==="OperatorNode:multiply")){var v=u.map(function(A,w){return A=A.toTex(o),c[w]&&(A="\\left(".concat(A,"\\right)")),A});return this.getIdentifier()==="OperatorNode:multiply"&&this.implicit&&l==="hide"?v.join("~"):v.join(f)}else return"\\mathrm{"+this.fn+"}\\left("+u.map(function(A){return A.toTex(o)}).join(",")+"\\right)"}getIdentifier(){return this.type+":"+this.fn}}return dr(i,"name",Kg),i},{isClass:!0,isNode:!0});var ev="ParenthesisNode",VJ=["Node"],XI=M(ev,VJ,t=>{var{Node:e}=t;class r extends e{constructor(i){if(super(),!Gt(i))throw new TypeError('Node expected for parameter "content"');this.content=i}get type(){return ev}get isParenthesisNode(){return!0}_compile(i,a){return this.content._compile(i,a)}getContent(){return this.content.getContent()}forEach(i){i(this.content,"content",this)}map(i){var a=i(this.content,"content",this);return new r(a)}clone(){return new r(this.content)}_toString(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"("+this.content.toString(i)+")":this.content.toString(i)}toJSON(){return{mathjs:ev,content:this.content}}static fromJSON(i){return new r(i.content)}_toHTML(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?'('+this.content.toHTML(i)+')':this.content.toHTML(i)}_toTex(i){return!i||i&&!i.parenthesis||i&&i.parenthesis==="keep"?"\\left(".concat(this.content.toTex(i),"\\right)"):this.content.toTex(i)}}return dr(r,"name",ev),r},{isClass:!0,isNode:!0});var tv="RangeNode",UJ=["Node"],QI=M(tv,UJ,t=>{var{Node:e}=t;function r(i,a,o){var s=xr(i,a,o),l={},u=xr(i.start,a,o);if(l.start=u!==null&&u<=s||a==="all",i.step){var c=xr(i.step,a,o);l.step=c!==null&&c<=s||a==="all"}var f=xr(i.end,a,o);return l.end=f!==null&&f<=s||a==="all",l}class n extends e{constructor(a,o,s){if(super(),!Gt(a))throw new TypeError("Node expected");if(!Gt(o))throw new TypeError("Node expected");if(s&&!Gt(s))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=a,this.end=o,this.step=s||null}get type(){return tv}get isRangeNode(){return!0}needsEnd(){var a=this.filter(function(o){return Mr(o)&&o.name==="end"});return a.length>0}_compile(a,o){var s=a.range,l=this.start._compile(a,o),u=this.end._compile(a,o);if(this.step){var c=this.step._compile(a,o);return function(m,p,d){return s(l(m,p,d),u(m,p,d),c(m,p,d))}}else return function(m,p,d){return s(l(m,p,d),u(m,p,d))}}forEach(a){a(this.start,"start",this),a(this.end,"end",this),this.step&&a(this.step,"step",this)}map(a){return new n(this._ifNode(a(this.start,"start",this)),this._ifNode(a(this.end,"end",this)),this.step&&this._ifNode(a(this.step,"step",this)))}clone(){return new n(this.start,this.end,this.step&&this.step)}_toString(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l,u=this.start.toString(a);if(s.start&&(u="("+u+")"),l=u,this.step){var c=this.step.toString(a);s.step&&(c="("+c+")"),l+=":"+c}var f=this.end.toString(a);return s.end&&(f="("+f+")"),l+=":"+f,l}toJSON(){return{mathjs:tv,start:this.start,end:this.end,step:this.step}}static fromJSON(a){return new n(a.start,a.end,a.step)}_toHTML(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l,u=this.start.toHTML(a);if(s.start&&(u='('+u+')'),l=u,this.step){var c=this.step.toHTML(a);s.step&&(c='('+c+')'),l+=':'+c}var f=this.end.toHTML(a);return s.end&&(f='('+f+')'),l+=':'+f,l}_toTex(a){var o=a&&a.parenthesis?a.parenthesis:"keep",s=r(this,o,a&&a.implicit),l=this.start.toTex(a);if(s.start&&(l="\\left(".concat(l,"\\right)")),this.step){var u=this.step.toTex(a);s.step&&(u="\\left(".concat(u,"\\right)")),l+=":"+u}var c=this.end.toTex(a);return s.end&&(c="\\left(".concat(c,"\\right)")),l+=":"+c,l}}return dr(n,"name",tv),n},{isClass:!0,isNode:!0});var rv="RelationalNode",qJ=["Node"],KI=M(rv,qJ,t=>{var{Node:e}=t,r={equal:"==",unequal:"!=",smaller:"<",larger:">",smallerEq:"<=",largerEq:">="};class n extends e{constructor(a,o){if(super(),!Array.isArray(a))throw new TypeError("Parameter conditionals must be an array");if(!Array.isArray(o))throw new TypeError("Parameter params must be an array");if(a.length!==o.length-1)throw new TypeError("Parameter params must contain exactly one more element than parameter conditionals");this.conditionals=a,this.params=o}get type(){return rv}get isRelationalNode(){return!0}_compile(a,o){var s=this,l=this.params.map(u=>u._compile(a,o));return function(c,f,m){for(var p,d=l[0](c,f,m),h=0;ha(o,"params["+s+"]",this),this)}map(a){return new n(this.conditionals.slice(),this.params.map((o,s)=>this._ifNode(a(o,"params["+s+"]",this)),this))}clone(){return new n(this.conditionals,this.params)}_toString(a){for(var o=a&&a.parenthesis?a.parenthesis:"keep",s=xr(this,o,a&&a.implicit),l=this.params.map(function(f,m){var p=xr(f,o,a&&a.implicit);return o==="all"||p!==null&&p<=s?"("+f.toString(a)+")":f.toString(a)}),u=l[0],c=0;c('+f.toHTML(a)+')':f.toHTML(a)}),u=l[0],c=0;c'+jn(r[this.conditionals[c]])+""+l[c+1];return u}_toTex(a){for(var o=a&&a.parenthesis?a.parenthesis:"keep",s=xr(this,o,a&&a.implicit),l=this.params.map(function(f,m){var p=xr(f,o,a&&a.implicit);return o==="all"||p!==null&&p<=s?"\\left("+f.toTex(a)+"\right)":f.toTex(a)}),u=l[0],c=0;c{var{math:e,Unit:r,Node:n}=t;function i(o){return r?r.isValuelessUnit(o):!1}class a extends n{constructor(s){if(super(),typeof s!="string")throw new TypeError('String expected for parameter "name"');this.name=s}get type(){return"SymbolNode"}get isSymbolNode(){return!0}_compile(s,l){var u=this.name;if(l[u]===!0)return function(f,m,p){return jr(m,u)};if(u in s)return function(f,m,p){return f.has(u)?f.get(u):jr(s,u)};var c=i(u);return function(f,m,p){return f.has(u)?f.get(u):c?new r(null,u):a.onUndefinedSymbol(u)}}forEach(s){}map(s){return this.clone()}static onUndefinedSymbol(s){throw new Error("Undefined symbol "+s)}clone(){return new a(this.name)}_toString(s){return this.name}_toHTML(s){var l=jn(this.name);return l==="true"||l==="false"?''+l+"":l==="i"?''+l+"":l==="Infinity"?''+l+"":l==="NaN"?''+l+"":l==="null"?''+l+"":l==="undefined"?''+l+"":''+l+""}toJSON(){return{mathjs:"SymbolNode",name:this.name}}static fromJSON(s){return new a(s.name)}_toTex(s){var l=!1;typeof e[this.name]>"u"&&i(this.name)&&(l=!0);var u=jg(this.name,l);return u[0]==="\\"?u:" "+u}}return a},{isClass:!0,isNode:!0});var nv="FunctionNode",GJ=["math","Node","SymbolNode"],t2=M(nv,GJ,t=>{var e,{math:r,Node:n,SymbolNode:i}=t,a=l=>Dt(l,{truncate:78});function o(l,u,c){for(var f="",m=/\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi,p=0,d;(d=m.exec(l))!==null;)if(f+=l.substring(p,d.index),p=d.index,d[0]==="$$")f+="$",p++;else{p+=d[0].length;var h=u[d[1]];if(!h)throw new ReferenceError("Template: Property "+d[1]+" does not exist.");if(d[2]===void 0)switch(typeof h){case"string":f+=h;break;case"object":if(Gt(h))f+=h.toTex(c);else if(Array.isArray(h))f+=h.map(function(b,y){if(Gt(b))return b.toTex(c);throw new TypeError("Template: "+d[1]+"["+y+"] is not a Node.")}).join(",");else throw new TypeError("Template: "+d[1]+" has to be a Node, String or array of Nodes");break;default:throw new TypeError("Template: "+d[1]+" has to be a Node, String or array of Nodes")}else if(Gt(h[d[2]]&&h[d[2]]))f+=h[d[2]].toTex(c);else throw new TypeError("Template: "+d[1]+"["+d[2]+"] is not a Node.")}return f+=l.slice(p),f}class s extends n{constructor(u,c){if(super(),typeof u=="string"&&(u=new i(u)),!Gt(u))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(c)||!c.every(Gt))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=u,this.args=c||[]}get name(){return this.fn.name||""}get type(){return nv}get isFunctionNode(){return!0}_compile(u,c){var f=this.args.map(T=>T._compile(u,c));if(Mr(this.fn)){var m=this.fn.name;if(c[m]){var y=this.args;return function(_,C,N){var I=jr(C,m);if(typeof I!="function")throw new TypeError("Argument '".concat(m,"' was not a function; received: ").concat(a(I)));if(I.rawArgs)return I(y,u,al(_,C));var R=f.map(L=>L(_,C,N));return I.apply(I,R)}}else{var p=m in u?jr(u,m):void 0,d=typeof p=="function"&&p.rawArgs===!0,h=T=>{var _;if(T.has(m))_=T.get(m);else if(m in u)_=jr(u,m);else return s.onUndefinedFunction(m);if(typeof _=="function")return _;throw new TypeError("'".concat(m,`' is not a function; its value is: + `).concat(a(_)))};if(d){var b=this.args;return function(_,C,N){var I=h(_);if(I.rawArgs===!0)return I(b,u,al(_,C));var R=f.map(L=>L(_,C,N));return I(...R)}}else switch(f.length){case 0:return function(_,C,N){var I=h(_);return I()};case 1:return function(_,C,N){var I=h(_),R=f[0];return I(R(_,C,N))};case 2:return function(_,C,N){var I=h(_),R=f[0],L=f[1];return I(R(_,C,N),L(_,C,N))};default:return function(_,C,N){var I=h(_),R=f.map(L=>L(_,C,N));return I(...R)}}}}else if($i(this.fn)&&Xi(this.fn.index)&&this.fn.index.isObjectProperty()){var D=this.fn.object._compile(u,c),v=this.fn.index.getObjectProperty(),A=this.args;return function(_,C,N){var I=D(_,C,N),R=cS(I,v);if(R!=null&&R.rawArgs)return R(A,u,al(_,C));var L=f.map(V=>V(_,C,N));return R.apply(I,L)}}else{var w=this.fn.toString(),x=this.fn._compile(u,c),E=this.args;return function(_,C,N){var I=x(_,C,N);if(typeof I!="function")throw new TypeError("Expression '".concat(w,"' did not evaluate to a function; value is:")+` + `.concat(a(I)));if(I.rawArgs)return I(E,u,al(_,C));var R=f.map(L=>L(_,C,N));return I.apply(I,R)}}}forEach(u){u(this.fn,"fn",this);for(var c=0;c'+jn(this.fn)+'('+c.join(',')+')'}toTex(u){var c;return u&&typeof u.handler=="object"&&Ze(u.handler,this.name)&&(c=u.handler[this.name](this,u)),typeof c<"u"?c:super.toTex(u)}_toTex(u){var c=this.args.map(function(p){return p.toTex(u)}),f;Z0[this.name]&&(f=Z0[this.name]),r[this.name]&&(typeof r[this.name].toTex=="function"||typeof r[this.name].toTex=="object"||typeof r[this.name].toTex=="string")&&(f=r[this.name].toTex);var m;switch(typeof f){case"function":m=f(this,u);break;case"string":m=o(f,this,u);break;case"object":switch(typeof f[c.length]){case"function":m=f[c.length](this,u);break;case"string":m=o(f[c.length],this,u);break}}return typeof m<"u"?m:o(GI,this,u)}getIdentifier(){return this.type+":"+this.name}}return e=s,dr(s,"name",nv),dr(s,"onUndefinedFunction",function(l){throw new Error("Undefined function "+l)}),dr(s,"fromJSON",function(l){return new e(l.fn,l.args)}),s},{isClass:!0,isNode:!0});var r2="parse",WJ=["typed","numeric","config","AccessorNode","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","FunctionAssignmentNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","RangeNode","RelationalNode","SymbolNode"],n2=M(r2,WJ,t=>{var{typed:e,numeric:r,config:n,AccessorNode:i,ArrayNode:a,AssignmentNode:o,BlockNode:s,ConditionalNode:l,ConstantNode:u,FunctionAssignmentNode:c,FunctionNode:f,IndexNode:m,ObjectNode:p,OperatorNode:d,ParenthesisNode:h,RangeNode:b,RelationalNode:y,SymbolNode:D}=t,v=e(r2,{string:function(Y){return ne(Y,{})},"Array | Matrix":function(Y){return A(Y,{})},"string, Object":function(Y,ie){var Me=ie.nodes!==void 0?ie.nodes:{};return ne(Y,Me)},"Array | Matrix, Object":A});function A(F){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ie=Y.nodes!==void 0?Y.nodes:{};return Ke(F,function(Me){if(typeof Me!="string")throw new TypeError("String expected");return ne(Me,ie)})}var w={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},x={",":!0,"(":!0,")":!0,"[":!0,"]":!0,"{":!0,"}":!0,'"':!0,"'":!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},E={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},T={true:!0,false:!1,null:null,undefined:void 0},_=["NaN","Infinity"],C={'"':'"',"'":"'","\\":"\\","/":"/",b:"\b",f:"\f",n:` +`,r:"\r",t:" "};function N(){return{extraNodes:{},expression:"",comment:"",index:0,token:"",tokenType:w.NULL,nestingLevel:0,conditionalLevel:null}}function I(F,Y){return F.expression.substr(F.index,Y)}function R(F){return I(F,1)}function L(F){F.index++}function V(F){return F.expression.charAt(F.index-1)}function P(F){return F.expression.charAt(F.index+1)}function k(F){for(F.tokenType=w.NULL,F.token="",F.comment="";;){if(R(F)==="#")for(;R(F)!==` +`&&R(F)!=="";)F.comment+=R(F),L(F);if(v.isWhitespace(R(F),F.nestingLevel))L(F);else break}if(R(F)===""){F.tokenType=w.DELIMITER;return}if(R(F)===` +`&&!F.nestingLevel){F.tokenType=w.DELIMITER,F.token=R(F),L(F);return}var Y=R(F),ie=I(F,2),Me=I(F,3);if(Me.length===3&&x[Me]){F.tokenType=w.DELIMITER,F.token=Me,L(F),L(F),L(F);return}if(ie.length===2&&x[ie]){F.tokenType=w.DELIMITER,F.token=ie,L(F),L(F);return}if(x[Y]){F.tokenType=w.DELIMITER,F.token=Y,L(F);return}if(v.isDigitDot(Y)){F.tokenType=w.NUMBER;var Qe=I(F,2);if(Qe==="0b"||Qe==="0o"||Qe==="0x"){for(F.token+=R(F),L(F),F.token+=R(F),L(F);v.isHexDigit(R(F));)F.token+=R(F),L(F);if(R(F)===".")for(F.token+=".",L(F);v.isHexDigit(R(F));)F.token+=R(F),L(F);else if(R(F)==="i")for(F.token+="i",L(F);v.isDigit(R(F));)F.token+=R(F),L(F);return}if(R(F)==="."){if(F.token+=R(F),L(F),!v.isDigit(R(F))){F.tokenType=w.DELIMITER;return}}else{for(;v.isDigit(R(F));)F.token+=R(F),L(F);v.isDecimalMark(R(F),P(F))&&(F.token+=R(F),L(F))}for(;v.isDigit(R(F));)F.token+=R(F),L(F);if(R(F)==="E"||R(F)==="e"){if(v.isDigit(P(F))||P(F)==="-"||P(F)==="+"){if(F.token+=R(F),L(F),(R(F)==="+"||R(F)==="-")&&(F.token+=R(F),L(F)),!v.isDigit(R(F)))throw _e(F,'Digit expected, got "'+R(F)+'"');for(;v.isDigit(R(F));)F.token+=R(F),L(F);if(v.isDecimalMark(R(F),P(F)))throw _e(F,'Digit expected, got "'+R(F)+'"')}else if(v.isDecimalMark(P(F),F.expression.charAt(F.index+2)))throw L(F),_e(F,'Digit expected, got "'+R(F)+'"')}return}if(v.isAlpha(R(F),V(F),P(F))){for(;v.isAlpha(R(F),V(F),P(F))||v.isDigit(R(F));)F.token+=R(F),L(F);Ze(E,F.token)?F.tokenType=w.DELIMITER:F.tokenType=w.SYMBOL;return}for(F.tokenType=w.UNKNOWN;R(F)!=="";)F.token+=R(F),L(F);throw _e(F,'Syntax error in part "'+F.token+'"')}function W(F){do k(F);while(F.token===` +`)}function O(F){F.nestingLevel++}function Q(F){F.nestingLevel--}v.isAlpha=function(Y,ie,Me){return v.isValidLatinOrGreek(Y)||v.isValidMathSymbol(Y,Me)||v.isValidMathSymbol(ie,Y)},v.isValidLatinOrGreek=function(Y){return/^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(Y)},v.isValidMathSymbol=function(Y,ie){return/^[\uD835]$/.test(Y)&&/^[\uDC00-\uDFFF]$/.test(ie)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(ie)},v.isWhitespace=function(Y,ie){return Y===" "||Y===" "||Y===` +`&&ie>0},v.isDecimalMark=function(Y,ie){return Y==="."&&ie!=="/"&&ie!=="*"&&ie!=="^"},v.isDigitDot=function(Y){return Y>="0"&&Y<="9"||Y==="."},v.isDigit=function(Y){return Y>="0"&&Y<="9"},v.isHexDigit=function(Y){return Y>="0"&&Y<="9"||Y>="a"&&Y<="f"||Y>="A"&&Y<="F"};function ne(F,Y){var ie=N();bn(ie,{expression:F,extraNodes:Y}),k(ie);var Me=X(ie);if(ie.token!=="")throw ie.tokenType===w.DELIMITER?Ge(ie,"Unexpected operator "+ie.token):_e(ie,'Unexpected part "'+ie.token+'"');return Me}function X(F){var Y,ie=[],Me;for(F.token!==""&&F.token!==` `&&F.token!==";"&&(Y=U(F),F.comment&&(Y.comment=F.comment));F.token===` -`||F.token===";";)ie.length===0&&Y&&(Ce=F.token!==";",ie.push({node:Y,visible:Ce})),k(F),F.token!==` -`&&F.token!==";"&&F.token!==""&&(Y=U(F),F.comment&&(Y.comment=F.comment),Ce=F.token!==";",ie.push({node:Y,visible:Ce}));return ie.length>0?new s(ie):(Y||(Y=new u(void 0),F.comment&&(Y.comment=F.comment)),Y)}function U(F){var Y,ie,Ce,tt,xt=de(F);if(F.token==="="){if(Gr(xt))return Y=xt.name,W(F),Ce=U(F),new o(new T(Y),Ce);if(Ha(xt))return W(F),Ce=U(F),new o(xt.object,xt.index,Ce);if(na(xt)&&Gr(xt.fn)&&(tt=!0,ie=[],Y=xt.name,xt.args.forEach(function(_r,qe){Gr(_r)?ie[qe]=_r.name:tt=!1}),tt))return W(F),Ce=U(F),new c(Y,ie,Ce);throw Se(F,"Invalid left hand side of assignment operator =")}return xt}function de(F){for(var Y=we(F);F.token==="?";){var ie=F.conditionalLevel;F.conditionalLevel=F.nestingLevel,W(F);var Ce=Y,tt=U(F);if(F.token!==":")throw Se(F,"False part of conditional expression expected");F.conditionalLevel=null,W(F);var xt=U(F);Y=new l(Ce,tt,xt),F.conditionalLevel=ie}return Y}function we(F){for(var Y=se(F);F.token==="or";)W(F),Y=new d("or","or",[Y,se(F)]);return Y}function se(F){for(var Y=be(F);F.token==="xor";)W(F),Y=new d("xor","xor",[Y,be(F)]);return Y}function be(F){for(var Y=K(F);F.token==="and";)W(F),Y=new d("and","and",[Y,K(F)]);return Y}function K(F){for(var Y=j(F);F.token==="|";)W(F),Y=new d("|","bitOr",[Y,j(F)]);return Y}function j(F){for(var Y=ne(F);F.token==="^|";)W(F),Y=new d("^|","bitXor",[Y,ne(F)]);return Y}function ne(F){for(var Y=pe(F);F.token==="&";)W(F),Y=new d("&","bitAnd",[Y,pe(F)]);return Y}function pe(F){for(var Y=[fe(F)],ie=[],Ce={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};st(Ce,F.token);){var tt={name:F.token,fn:Ce[F.token]};ie.push(tt),W(F),Y.push(fe(F))}return Y.length===1?Y[0]:Y.length===2?new d(ie[0].name,ie[0].fn,Y):new b(ie.map(xt=>xt.fn),Y)}function fe(F){var Y,ie,Ce,tt;Y=Ae(F);for(var xt={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};st(xt,F.token);)ie=F.token,Ce=xt[ie],W(F),tt=[Y,Ae(F)],Y=new d(ie,Ce,tt);return Y}function Ae(F){var Y,ie,Ce,tt;Y=_e(F);for(var xt={to:"to",in:"to"};st(xt,F.token);)ie=F.token,Ce=xt[ie],W(F),ie==="in"&&F.token===""?Y=new d("*","multiply",[Y,new T("in")],!0):(tt=[Y,_e(F)],Y=new d(ie,Ce,tt));return Y}function _e(F){var Y,ie=[];if(F.token===":"?Y=new u(1):Y=G(F),F.token===":"&&F.conditionalLevel!==F.nestingLevel){for(ie.push(Y);F.token===":"&&ie.length<3;)W(F),F.token===")"||F.token==="]"||F.token===","||F.token===""?ie.push(new T("end")):ie.push(G(F));ie.length===3?Y=new x(ie[0],ie[2],ie[1]):Y=new x(ie[0],ie[1])}return Y}function G(F){var Y,ie,Ce,tt;Y=Z(F);for(var xt={"+":"add","-":"subtract"};st(xt,F.token);){ie=F.token,Ce=xt[ie],W(F);var _r=Z(F);_r.isPercentage?tt=[Y,new d("*","multiply",[Y,_r])]:tt=[Y,_r],Y=new d(ie,Ce,tt)}return Y}function Z(F){var Y,ie,Ce,tt;Y=ge(F),ie=Y;for(var xt={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};st(xt,F.token);)if(Ce=F.token,tt=xt[Ce],W(F),Ce==="%"&&F.tokenType===w.DELIMITER&&F.token!=="(")if(F.token!==""&&xt[F.token]){var _r=new d("/","divide",[Y,new u(100)],!1,!0);Ce=F.token,tt=xt[Ce],W(F),ie=ge(F),Y=new d(Ce,tt,[_r,ie])}else Y=new d("/","divide",[Y,new u(100)],!1,!0);else ie=ge(F),Y=new d(Ce,tt,[Y,ie]);return Y}function ge(F){var Y,ie;for(Y=xe(F),ie=Y;F.tokenType===w.SYMBOL||F.token==="in"&&Ht(Y)||F.token==="in"&&Qr(Y)&&Y.fn==="unaryMinus"&&Ht(Y.args[0])||F.tokenType===w.NUMBER&&!Ht(ie)&&(!Qr(ie)||ie.op==="!")||F.token==="(";)ie=xe(F),Y=new d("*","multiply",[Y,ie],!0);return Y}function xe(F){for(var Y=Ee(F),ie=Y,Ce=[];F.token==="/"&&Yp(ie);)if(Ce.push(sn({},F)),W(F),F.tokenType===w.NUMBER)if(Ce.push(sn({},F)),W(F),F.tokenType===w.SYMBOL||F.token==="("||F.token==="in")sn(F,Ce.pop()),Ce.pop(),ie=Ee(F),Y=new d("/","divide",[Y,ie]);else{Ce.pop(),sn(F,Ce.pop());break}else{sn(F,Ce.pop());break}return Y}function Ee(F){var Y,ie,Ce,tt={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return st(tt,F.token)?(Ce=tt[F.token],Y=F.token,W(F),ie=[Ee(F)],new d(Y,Ce,ie)):Be(F)}function Be(F){var Y,ie,Ce,tt;return Y=Ve(F),(F.token==="^"||F.token===".^")&&(ie=F.token,Ce=ie==="^"?"pow":"dotPow",W(F),tt=[Y,Ee(F)],Y=new d(ie,Ce,tt)),Y}function Ve(F){var Y,ie,Ce,tt;Y=et(F);for(var xt={"!":"factorial","'":"ctranspose"};st(xt,F.token);)ie=F.token,Ce=xt[ie],k(F),tt=[Y],Y=new d(ie,Ce,tt),Y=Ye(F,Y);return Y}function et(F){var Y=[];if(F.tokenType===w.SYMBOL&&st(F.extraNodes,F.token)){var ie=F.extraNodes[F.token];if(k(F),F.token==="("){if(Y=[],O(F),k(F),F.token!==")")for(Y.push(U(F));F.token===",";)k(F),Y.push(U(F));if(F.token!==")")throw Se(F,"Parenthesis ) expected");X(F),k(F)}return new ie(Y)}return St(F)}function St(F){var Y,ie;return F.tokenType===w.SYMBOL||F.tokenType===w.DELIMITER&&F.token in E?(ie=F.token,k(F),st(D,ie)?Y=new u(D[ie]):_.includes(ie)?Y=new u(r(ie,"number")):Y=new T(ie),Y=Ye(F,Y),Y):ur(F)}function Ye(F,Y,ie){for(var Ce;(F.token==="("||F.token==="["||F.token===".")&&(!ie||ie.includes(F.token));)if(Ce=[],F.token==="(")if(Gr(Y)||Ha(Y)){if(O(F),k(F),F.token!==")")for(Ce.push(U(F));F.token===",";)k(F),Ce.push(U(F));if(F.token!==")")throw Se(F,"Parenthesis ) expected");X(F),k(F),Y=new f(Y,Ce)}else return Y;else if(F.token==="["){if(O(F),k(F),F.token!=="]")for(Ce.push(U(F));F.token===",";)k(F),Ce.push(U(F));if(F.token!=="]")throw Se(F,"Parenthesis ] expected");X(F),k(F),Y=new i(Y,new m(Ce))}else{k(F);var tt=F.tokenType===w.SYMBOL||F.tokenType===w.DELIMITER&&F.token in E;if(!tt)throw Se(F,"Property name expected after dot");Ce.push(new u(F.token)),k(F);var xt=!0;Y=new i(Y,new m(Ce,xt))}return Y}function ur(F){var Y,ie;return F.token==='"'||F.token==="'"?(ie=Jt(F,F.token),Y=new u(ie),Y=Ye(F,Y),Y):He(F)}function Jt(F,Y){for(var ie="";R(F)!==""&&R(F)!==Y;)if(R(F)==="\\"){V(F);var Ce=R(F),tt=N[Ce];if(tt!==void 0)ie+=tt,F.index+=1;else if(Ce==="u"){var xt=F.expression.slice(F.index+1,F.index+5);if(/^[0-9A-Fa-f]{4}$/.test(xt))ie+=String.fromCharCode(parseInt(xt,16)),F.index+=5;else throw Se(F,"Invalid unicode character \\u".concat(xt))}else throw Se(F,"Bad escape character \\".concat(Ce))}else ie+=R(F),V(F);if(k(F),F.token!==Y)throw Se(F,"End of string ".concat(Y," expected"));return k(F),ie}function He(F){var Y,ie,Ce,tt;if(F.token==="["){if(O(F),k(F),F.token!=="]"){var xt=at(F);if(F.token===";"){for(Ce=1,ie=[xt];F.token===";";)k(F),F.token!=="]"&&(ie[Ce]=at(F),Ce++);if(F.token!=="]")throw Se(F,"End of matrix ] expected");X(F),k(F),tt=ie[0].items.length;for(var _r=1;_r{var{typed:e,parse:r}=t;return e(mO,{string:function(i){return r(i).compile()},"Array | Matrix":function(i){return nt(i,function(a){return r(a).compile()})}})});var dO="evaluate",Are=["typed","parse"],$S=M(dO,Are,t=>{var{typed:e,parse:r}=t;return e(dO,{string:function(i){var a=Bu();return r(i).compile().evaluate(a)},"string, Map | Object":function(i,a){return r(i).compile().evaluate(a)},"Array | Matrix":function(i){var a=Bu();return nt(i,function(o){return r(o).compile().evaluate(a)})},"Array | Matrix, Map | Object":function(i,a){return nt(i,function(o){return r(o).compile().evaluate(a)})}})});var Sre="Parser",Ere=["evaluate","parse"],OS=M(Sre,Ere,t=>{var{evaluate:e,parse:r}=t;function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");Object.defineProperty(this,"scope",{value:Bu(),writable:!1})}n.prototype.type="Parser",n.prototype.isParser=!0,n.prototype.evaluate=function(a){return e(a,this.scope)},n.prototype.get=function(a){if(this.scope.has(a))return this.scope.get(a)},n.prototype.getAll=function(){return L2(this.scope)},n.prototype.getAllAsMap=function(){return this.scope};function i(a){if(a.length===0)return!1;for(var o=0;o0&&r.isDigit(l);if(!c)return!1}return!0}return n.prototype.set=function(a,o){if(!i(a))throw new Error("Invalid variable name: '".concat(a,"'. Variable names must follow the specified rules."));return this.scope.set(a,o),o},n.prototype.remove=function(a){this.scope.delete(a)},n.prototype.clear=function(){this.scope.clear()},n},{isClass:!0});var hO="parser",Tre=["typed","Parser"],RS=M(hO,Tre,t=>{var{typed:e,Parser:r}=t;return e(hO,{"":function(){return new r}})});var gO="lup",Dre=["typed","matrix","abs","addScalar","divideScalar","multiplyScalar","subtractScalar","larger","equalScalar","unaryMinus","DenseMatrix","SparseMatrix","Spa"],LS=M(gO,Dre,t=>{var{typed:e,matrix:r,abs:n,addScalar:i,divideScalar:a,multiplyScalar:o,subtractScalar:s,larger:l,equalScalar:u,unaryMinus:c,DenseMatrix:f,SparseMatrix:m,Spa:p}=t;return e(gO,{DenseMatrix:function(b){return d(b)},SparseMatrix:function(b){return h(b)},Array:function(b){var T=r(b),v=d(T);return{L:v.L.valueOf(),U:v.U.valueOf(),p:v.p}}});function d(x){var b=x._size[0],T=x._size[1],v=Math.min(b,T),A=yt(x._data),w=[],y=[b,v],E=[],D=[v,T],_,N,C,B=[];for(_=0;_0)for(_=0;_0?new s(ie):(Y||(Y=new u(void 0),F.comment&&(Y.comment=F.comment)),Y)}function U(F){var Y,ie,Me,Qe,gt=fe(F);if(F.token==="="){if(Mr(gt))return Y=gt.name,W(F),Me=U(F),new o(new D(Y),Me);if($i(gt))return W(F),Me=U(F),new o(gt.object,gt.index,Me);if(ai(gt)&&Mr(gt.fn)&&(Qe=!0,ie=[],Y=gt.name,gt.args.forEach(function(hr,Ve){Mr(hr)?ie[Ve]=hr.name:Qe=!1}),Qe))return W(F),Me=U(F),new c(Y,ie,Me);throw _e(F,"Invalid left hand side of assignment operator =")}return gt}function fe(F){for(var Y=xe(F);F.token==="?";){var ie=F.conditionalLevel;F.conditionalLevel=F.nestingLevel,W(F);var Me=Y,Qe=U(F);if(F.token!==":")throw _e(F,"False part of conditional expression expected");F.conditionalLevel=null,W(F);var gt=U(F);Y=new l(Me,Qe,gt),F.conditionalLevel=ie}return Y}function xe(F){for(var Y=oe(F);F.token==="or";)W(F),Y=new d("or","or",[Y,oe(F)]);return Y}function oe(F){for(var Y=be(F);F.token==="xor";)W(F),Y=new d("xor","xor",[Y,be(F)]);return Y}function be(F){for(var Y=ee(F);F.token==="and";)W(F),Y=new d("and","and",[Y,ee(F)]);return Y}function ee(F){for(var Y=Z(F);F.token==="|";)W(F),Y=new d("|","bitOr",[Y,Z(F)]);return Y}function Z(F){for(var Y=re(F);F.token==="^|";)W(F),Y=new d("^|","bitXor",[Y,re(F)]);return Y}function re(F){for(var Y=me(F);F.token==="&";)W(F),Y=new d("&","bitAnd",[Y,me(F)]);return Y}function me(F){for(var Y=[ce(F)],ie=[],Me={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};Ze(Me,F.token);){var Qe={name:F.token,fn:Me[F.token]};ie.push(Qe),W(F),Y.push(ce(F))}return Y.length===1?Y[0]:Y.length===2?new d(ie[0].name,ie[0].fn,Y):new y(ie.map(gt=>gt.fn),Y)}function ce(F){var Y,ie,Me,Qe;Y=Ae(F);for(var gt={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};Ze(gt,F.token);)ie=F.token,Me=gt[ie],W(F),Qe=[Y,Ae(F)],Y=new d(ie,Me,Qe);return Y}function Ae(F){var Y,ie,Me,Qe;Y=we(F);for(var gt={to:"to",in:"to"};Ze(gt,F.token);)ie=F.token,Me=gt[ie],W(F),ie==="in"&&F.token===""?Y=new d("*","multiply",[Y,new D("in")],!0):(Qe=[Y,we(F)],Y=new d(ie,Me,Qe));return Y}function we(F){var Y,ie=[];if(F.token===":"?Y=new u(1):Y=G(F),F.token===":"&&F.conditionalLevel!==F.nestingLevel){for(ie.push(Y);F.token===":"&&ie.length<3;)W(F),F.token===")"||F.token==="]"||F.token===","||F.token===""?ie.push(new D("end")):ie.push(G(F));ie.length===3?Y=new b(ie[0],ie[2],ie[1]):Y=new b(ie[0],ie[1])}return Y}function G(F){var Y,ie,Me,Qe;Y=J(F);for(var gt={"+":"add","-":"subtract"};Ze(gt,F.token);){ie=F.token,Me=gt[ie],W(F);var hr=J(F);hr.isPercentage?Qe=[Y,new d("*","multiply",[Y,hr])]:Qe=[Y,hr],Y=new d(ie,Me,Qe)}return Y}function J(F){var Y,ie,Me,Qe;Y=ge(F),ie=Y;for(var gt={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};Ze(gt,F.token);)if(Me=F.token,Qe=gt[Me],W(F),Me==="%"&&F.tokenType===w.DELIMITER&&F.token!=="(")if(F.token!==""&>[F.token]){var hr=new d("/","divide",[Y,new u(100)],!1,!0);Me=F.token,Qe=gt[Me],W(F),ie=ge(F),Y=new d(Me,Qe,[hr,ie])}else Y=new d("/","divide",[Y,new u(100)],!1,!0);else ie=ge(F),Y=new d(Me,Qe,[Y,ie]);return Y}function ge(F){var Y,ie;for(Y=ye(F),ie=Y;F.tokenType===w.SYMBOL||F.token==="in"&&kt(Y)||F.token==="in"&&Rr(Y)&&Y.fn==="unaryMinus"&&kt(Y.args[0])||F.tokenType===w.NUMBER&&!kt(ie)&&(!Rr(ie)||ie.op==="!")||F.token==="(";)ie=ye(F),Y=new d("*","multiply",[Y,ie],!0);return Y}function ye(F){for(var Y=De(F),ie=Y,Me=[];F.token==="/"&&Gf(ie);)if(Me.push(bn({},F)),W(F),F.tokenType===w.NUMBER)if(Me.push(bn({},F)),W(F),F.tokenType===w.SYMBOL||F.token==="("||F.token==="in")bn(F,Me.pop()),Me.pop(),ie=De(F),Y=new d("/","divide",[Y,ie]);else{Me.pop(),bn(F,Me.pop());break}else{bn(F,Me.pop());break}return Y}function De(F){var Y,ie,Me,Qe={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return Ze(Qe,F.token)?(Me=Qe[F.token],Y=F.token,W(F),ie=[De(F)],new d(Y,Me,ie)):Ie(F)}function Ie(F){var Y,ie,Me,Qe;return Y=Oe(F),(F.token==="^"||F.token===".^")&&(ie=F.token,Me=ie==="^"?"pow":"dotPow",W(F),Qe=[Y,De(F)],Y=new d(ie,Me,Qe)),Y}function Oe(F){var Y,ie,Me,Qe;Y=Je(F);for(var gt={"!":"factorial","'":"ctranspose"};Ze(gt,F.token);)ie=F.token,Me=gt[ie],k(F),Qe=[Y],Y=new d(ie,Me,Qe),Y=qe(F,Y);return Y}function Je(F){var Y=[];if(F.tokenType===w.SYMBOL&&Ze(F.extraNodes,F.token)){var ie=F.extraNodes[F.token];if(k(F),F.token==="("){if(Y=[],O(F),k(F),F.token!==")")for(Y.push(U(F));F.token===",";)k(F),Y.push(U(F));if(F.token!==")")throw _e(F,"Parenthesis ) expected");Q(F),k(F)}return new ie(Y)}return wt(F)}function wt(F){var Y,ie;return F.tokenType===w.SYMBOL||F.tokenType===w.DELIMITER&&F.token in E?(ie=F.token,k(F),Ze(T,ie)?Y=new u(T[ie]):_.includes(ie)?Y=new u(r(ie,"number")):Y=new D(ie),Y=qe(F,Y),Y):rr(F)}function qe(F,Y,ie){for(var Me;(F.token==="("||F.token==="["||F.token===".")&&(!ie||ie.includes(F.token));)if(Me=[],F.token==="(")if(Mr(Y)||$i(Y)){if(O(F),k(F),F.token!==")")for(Me.push(U(F));F.token===",";)k(F),Me.push(U(F));if(F.token!==")")throw _e(F,"Parenthesis ) expected");Q(F),k(F),Y=new f(Y,Me)}else return Y;else if(F.token==="["){if(O(F),k(F),F.token!=="]")for(Me.push(U(F));F.token===",";)k(F),Me.push(U(F));if(F.token!=="]")throw _e(F,"Parenthesis ] expected");Q(F),k(F),Y=new i(Y,new m(Me))}else{k(F);var Qe=F.tokenType===w.SYMBOL||F.tokenType===w.DELIMITER&&F.token in E;if(!Qe)throw _e(F,"Property name expected after dot");Me.push(new u(F.token)),k(F);var gt=!0;Y=new i(Y,new m(Me,gt))}return Y}function rr(F){var Y,ie;return F.token==='"'||F.token==="'"?(ie=Wt(F,F.token),Y=new u(ie),Y=qe(F,Y),Y):pr(F)}function Wt(F,Y){for(var ie="";R(F)!==""&&R(F)!==Y;)if(R(F)==="\\"){L(F);var Me=R(F),Qe=C[Me];if(Qe!==void 0)ie+=Qe,F.index+=1;else if(Me==="u"){var gt=F.expression.slice(F.index+1,F.index+5);if(/^[0-9A-Fa-f]{4}$/.test(gt))ie+=String.fromCharCode(parseInt(gt,16)),F.index+=5;else throw _e(F,"Invalid unicode character \\u".concat(gt))}else throw _e(F,"Bad escape character \\".concat(Me))}else ie+=R(F),L(F);if(k(F),F.token!==Y)throw _e(F,"End of string ".concat(Y," expected"));return k(F),ie}function pr(F){var Y,ie,Me,Qe;if(F.token==="["){if(O(F),k(F),F.token!=="]"){var gt=Pe(F);if(F.token===";"){for(Me=1,ie=[gt];F.token===";";)k(F),F.token!=="]"&&(ie[Me]=Pe(F),Me++);if(F.token!=="]")throw _e(F,"End of matrix ] expected");Q(F),k(F),Qe=ie[0].items.length;for(var hr=1;hr{var{typed:e,parse:r}=t;return e(i2,{string:function(i){return r(i).compile()},"Array | Matrix":function(i){return Ke(i,function(a){return r(a).compile()})}})});var o2="evaluate",jJ=["typed","parse"],s2=M(o2,jJ,t=>{var{typed:e,parse:r}=t;return e(o2,{string:function(i){var a=eu();return r(i).compile().evaluate(a)},"string, Map | Object":function(i,a){return r(i).compile().evaluate(a)},"Array | Matrix":function(i){var a=eu();return Ke(i,function(o){return r(o).compile().evaluate(a)})},"Array | Matrix, Map | Object":function(i,a){return Ke(i,function(o){return r(o).compile().evaluate(a)})}})});var ZJ="Parser",JJ=["evaluate","parse"],u2=M(ZJ,JJ,t=>{var{evaluate:e,parse:r}=t;function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");Object.defineProperty(this,"scope",{value:eu(),writable:!1})}n.prototype.type="Parser",n.prototype.isParser=!0,n.prototype.evaluate=function(a){return e(a,this.scope)},n.prototype.get=function(a){if(this.scope.has(a))return this.scope.get(a)},n.prototype.getAll=function(){return pS(this.scope)},n.prototype.getAllAsMap=function(){return this.scope};function i(a){if(a.length===0)return!1;for(var o=0;o0&&r.isDigit(l);if(!c)return!1}return!0}return n.prototype.set=function(a,o){if(!i(a))throw new Error("Invalid variable name: '".concat(a,"'. Variable names must follow the specified rules."));return this.scope.set(a,o),o},n.prototype.remove=function(a){this.scope.delete(a)},n.prototype.clear=function(){this.scope.clear()},n},{isClass:!0});var l2="parser",XJ=["typed","Parser"],c2=M(l2,XJ,t=>{var{typed:e,Parser:r}=t;return e(l2,{"":function(){return new r}})});var f2="lup",QJ=["typed","matrix","abs","addScalar","divideScalar","multiplyScalar","subtractScalar","larger","equalScalar","unaryMinus","DenseMatrix","SparseMatrix","Spa"],p2=M(f2,QJ,t=>{var{typed:e,matrix:r,abs:n,addScalar:i,divideScalar:a,multiplyScalar:o,subtractScalar:s,larger:l,equalScalar:u,unaryMinus:c,DenseMatrix:f,SparseMatrix:m,Spa:p}=t;return e(f2,{DenseMatrix:function(y){return d(y)},SparseMatrix:function(y){return h(y)},Array:function(y){var D=r(y),v=d(D);return{L:v.L.valueOf(),U:v.U.valueOf(),p:v.p}}});function d(b){var y=b._size[0],D=b._size[1],v=Math.min(y,D),A=ut(b._data),w=[],x=[y,v],E=[],T=[v,D],_,C,N,I=[];for(_=0;_0)for(_=0;_0&&U.forEach(0,P-1,function(j,ne){m._forEachRow(j,E,D,_,function(pe,fe){pe>j&&U.accumulate(pe,c(o(fe,ne)))})});var se=P,be=U.get(P),K=n(be);U.forEach(P+1,b-1,function(j,ne){var pe=n(ne);l(pe,K)&&(se=j,K=pe,be=ne)}),P!==se&&(m._swapRows(P,se,N[1],E,D,_),m._swapRows(P,se,V[1],C,B,R),U.swap(P,se),X(P,se)),U.forEach(0,b-1,function(j,ne){j<=P?(C.push(ne),B.push(j)):(ne=a(ne,be),u(ne,0)||(E.push(ne),D.push(j)))})};for(P=0;P0&&U.forEach(0,P-1,function(Z,re){m._forEachRow(Z,E,T,_,function(me,ce){me>Z&&U.accumulate(me,c(o(ce,re)))})});var oe=P,be=U.get(P),ee=n(be);U.forEach(P+1,y-1,function(Z,re){var me=n(re);l(me,ee)&&(oe=Z,ee=me,be=re)}),P!==oe&&(m._swapRows(P,oe,C[1],E,T,_),m._swapRows(P,oe,L[1],N,I,R),U.swap(P,oe),Q(P,oe)),U.forEach(0,y-1,function(Z,re){Z<=P?(N.push(re),I.push(Z)):(re=a(re,be),u(re,0)||(E.push(re),T.push(Z)))})};for(P=0;P{var{typed:e,matrix:r,zeros:n,identity:i,isZero:a,equal:o,sign:s,sqrt:l,conj:u,unaryMinus:c,addScalar:f,divideScalar:m,multiplyScalar:p,subtractScalar:d,complex:h}=t;return sn(e(vO,{DenseMatrix:function(A){return b(A)},SparseMatrix:function(A){return T(A)},Array:function(A){var w=r(A),y=b(w);return{Q:y.Q.valueOf(),R:y.R.valueOf()}}}),{_denseQRimpl:x});function x(v){var A=v._size[0],w=v._size[1],y=i([A],"dense"),E=y._data,D=v.clone(),_=D._data,N,C,B,R=n([A],"");for(B=0;B0)for(var y=w[0][0].type==="Complex"?h(0):0,E=0;E=0;){var l=r[o+s],u=r[n+l];u===-1?(s--,a[e++]=l):(r[n+l]=r[i+u],++s,r[o+s]=u)}return e}function xO(t,e){if(!t)return null;var r=0,n,i=[],a=[],o=0,s=e,l=2*e;for(n=0;n=0;n--)t[n]!==-1&&(a[s+n]=a[o+t[n]],a[o+t[n]]=n);for(n=0;n{var{add:e,multiply:r,transpose:n}=t;return function(c,f){if(!f||c<=0||c>3)return null;var m=f._size,p=m[0],d=m[1],h=0,x=Math.max(16,10*Math.sqrt(d));x=Math.min(d-2,x);var b=i(c,f,p,d,x);wO(b,l,null);for(var T=b._index,v=b._ptr,A=v[d],w=[],y=[],E=0,D=d+1,_=2*(d+1),N=3*(d+1),C=4*(d+1),B=5*(d+1),R=6*(d+1),V=7*(d+1),L=w,P=a(d,v,y,E,N,L,_,V,D,R,C,B),k=o(d,v,y,B,C,R,x,D,N,L,_),W=0,O,X,ae,J,U,de,we,se,be,K,j,ne,pe,fe,Ae,_e;kG?(de=ae,we=xe,se=y[E+ae]-G):(de=T[xe++],we=v[de],se=y[E+de]),U=1;U<=se;U++)O=T[we++],!((be=y[D+O])<=0)&&(ge+=be,y[D+O]=-be,T[Be++]=O,y[_+O]!==-1&&(L[y[_+O]]=L[O]),L[O]!==-1?y[_+L[O]]=y[_+O]:y[N+y[B+O]]=y[_+O]);de!==ae&&(v[de]=Yo(ae),y[R+de]=0)}for(G!==0&&(A=Be),y[B+ae]=ge,v[ae]=Ee,y[E+ae]=Be-Ee,y[C+ae]=-2,P=s(P,h,y,R,d),K=Ee;K=P?y[R+de]-=be:y[R+de]!==0&&(y[R+de]=y[B+de]+Ve)}for(K=Ee;K0?(_e+=et,T[fe++]=de,Ae+=de):(v[de]=Yo(ae),y[R+de]=0)}y[C+O]=fe-ne+1;var St=fe,Ye=ne+y[E+O];for(xe=pe+1;xe=0))for(Ae=L[O],O=y[V+Ae],y[V+Ae]=-1;O!==-1&&y[_+O]!==-1;O=y[_+O],P++){for(se=y[E+O],j=y[C+O],xe=v[O]+1;xe<=v[O]+se-1;xe++)y[R+T[xe]]=P;var Jt=O;for(X=y[_+O];X!==-1;){var He=y[E+X]===se&&y[C+X]===j;for(xe=v[X]+1;He&&xe<=v[X]+se-1;xe++)y[R+T[xe]]!==P&&(He=0);He?(v[X]=Yo(O),y[D+O]+=y[D+X],y[D+X]=0,y[C+X]=-1,X=y[_+X],y[_+Jt]=X):(Jt=X,X=y[_+X])}}for(xe=Ee,K=Ee;K=0;X--)y[D+X]>0||(y[_+X]=y[N+v[X]],y[N+v[X]]=X);for(de=d;de>=0;de--)y[D+de]<=0||v[de]!==-1&&(y[_+de]=y[N+v[de]],y[N+v[de]]=de);for(ae=0,O=0;O<=d;O++)v[O]===-1&&(ae=Bv(O,ae,y,N,_,w,R));return w.splice(w.length-1,1),w};function i(u,c,f,m,p){var d=n(c);if(u===1&&m===f)return e(c,d);if(u===2){for(var h=d._index,x=d._ptr,b=0,T=0;Tp))for(var A=x[T+1];vh)f[x+w]=0,f[p+w]=-1,A++,c[w]=Yo(u),f[x+u]++;else{var E=f[b+y];E!==-1&&(T[E]=w),f[v+w]=f[b+y],f[b+y]=w}}return A}function s(u,c,f,m,p){if(u<2||u+c<0){for(var d=0;d{var{transpose:e}=t;return function(r,n,i,a){if(!r||!n||!i)return null;var o=r._size,s=o[0],l=o[1],u,c,f,m,p,d,h,x=4*l+(a?l+s+1:0),b=[],T=0,v=l,A=2*l,w=3*l,y=4*l,E=5*l+1;for(f=0;f=1&&D[c]++,B.jleaf===2&&D[B.q]--}n[c]!==-1&&(b[T+c]=n[c])}for(c=0;c{var{add:e,multiply:r,transpose:n}=t,i=_O({add:e,multiply:r,transpose:n}),a=SO({transpose:n});return function(l,u,c){var f=u._ptr,m=u._size,p=m[1],d,h={};if(h.q=i(l,u),l&&!h.q)return null;if(c){var x=l?yO(u,null,h.q,0):u;h.parent=bO(x,1);var b=xO(h.parent,p);if(h.cp=a(x,h.parent,b,1),x&&h.parent&&h.cp&&o(x,h))for(h.unz=0,d=0;d=0;E--)for(_=u[E],N=u[E+1],D=_;D=0;y--)h[y]=-1,E=x[y],E!==-1&&(b[w+E]++===0&&(b[A+E]=y),b[T+y]=b[v+E],b[v+E]=y);for(l.lnz=0,l.m2=m,E=0;E=0;){t=n[m];var p=i?i[t]:t;Sm(o,t)||(kv(o,t),n[l+m]=p<0?0:US(o[p]));var d=1;for(c=n[l+m],f=p<0?0:US(o[p+1]);c{var{divideScalar:e,multiply:r,subtract:n}=t;return function(a,o,s,l,u,c,f){var m=a._values,p=a._index,d=a._ptr,h=a._size,x=h[1],b=o._values,T=o._index,v=o._ptr,A,w,y,E,D=DO(a,o,s,l,c);for(A=D;A{var{abs:e,divideScalar:r,multiply:n,subtract:i,larger:a,largerEq:o,SparseMatrix:s}=t,l=MO({divideScalar:r,multiply:n,subtract:i});return function(c,f,m){if(!c)return null;var p=c._size,d=p[1],h,x=100,b=100;f&&(h=f.q,x=f.lnz||x,b=f.unz||b);var T=[],v=[],A=[],w=new s({values:T,index:v,ptr:A,size:[d,d]}),y=[],E=[],D=[],_=new s({values:y,index:E,ptr:D,size:[d,d]}),N=[],C,B,R=[],V=[];for(C=0;C{var{typed:e,abs:r,add:n,multiply:i,transpose:a,divideScalar:o,subtract:s,larger:l,largerEq:u,SparseMatrix:c}=t,f=EO({add:n,multiply:i,transpose:a}),m=CO({abs:r,divideScalar:o,multiply:i,subtract:s,larger:l,largerEq:u,SparseMatrix:c});return e(NO,{"SparseMatrix, number, number":function(d,h,x){if(!Qe(h)||h<0||h>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(x<0||x>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var b=f(h,d,!1),T=m(d,b,x);return{L:T.L,U:T.U,p:T.pinv,q:b.q,toString:function(){return"L: "+this.L.toString()+` +P: `+this.p}}}});var m2="qr",KJ=["typed","matrix","zeros","identity","isZero","equal","sign","sqrt","conj","unaryMinus","addScalar","divideScalar","multiplyScalar","subtractScalar","complex"],d2=M(m2,KJ,t=>{var{typed:e,matrix:r,zeros:n,identity:i,isZero:a,equal:o,sign:s,sqrt:l,conj:u,unaryMinus:c,addScalar:f,divideScalar:m,multiplyScalar:p,subtractScalar:d,complex:h}=t;return bn(e(m2,{DenseMatrix:function(A){return y(A)},SparseMatrix:function(A){return D(A)},Array:function(A){var w=r(A),x=y(w);return{Q:x.Q.valueOf(),R:x.R.valueOf()}}}),{_denseQRimpl:b});function b(v){var A=v._size[0],w=v._size[1],x=i([A],"dense"),E=x._data,T=v.clone(),_=T._data,C,N,I,R=n([A],"");for(I=0;I0)for(var x=w[0][0].type==="Complex"?h(0):0,E=0;E=0;){var l=r[o+s],u=r[n+l];u===-1?(s--,a[e++]=l):(r[n+l]=r[i+u],++s,r[o+s]=u)}return e}function g2(t,e){if(!t)return null;var r=0,n,i=[],a=[],o=0,s=e,l=2*e;for(n=0;n=0;n--)t[n]!==-1&&(a[s+n]=a[o+t[n]],a[o+t[n]]=n);for(n=0;n{var{add:e,multiply:r,transpose:n}=t;return function(c,f){if(!f||c<=0||c>3)return null;var m=f._size,p=m[0],d=m[1],h=0,b=Math.max(16,10*Math.sqrt(d));b=Math.min(d-2,b);var y=i(c,f,p,d,b);y2(y,l,null);for(var D=y._index,v=y._ptr,A=v[d],w=[],x=[],E=0,T=d+1,_=2*(d+1),C=3*(d+1),N=4*(d+1),I=5*(d+1),R=6*(d+1),L=7*(d+1),V=w,P=a(d,v,x,E,C,V,_,L,T,R,N,I),k=o(d,v,x,I,N,R,b,T,C,V,_),W=0,O,Q,ne,X,U,fe,xe,oe,be,ee,Z,re,me,ce,Ae,we;kG?(fe=ne,xe=ye,oe=x[E+ne]-G):(fe=D[ye++],xe=v[fe],oe=x[E+fe]),U=1;U<=oe;U++)O=D[xe++],!((be=x[T+O])<=0)&&(ge+=be,x[T+O]=-be,D[Ie++]=O,x[_+O]!==-1&&(V[x[_+O]]=V[O]),V[O]!==-1?x[_+V[O]]=x[_+O]:x[C+x[I+O]]=x[_+O]);fe!==ne&&(v[fe]=xo(ne),x[R+fe]=0)}for(G!==0&&(A=Ie),x[I+ne]=ge,v[ne]=De,x[E+ne]=Ie-De,x[N+ne]=-2,P=s(P,h,x,R,d),ee=De;ee=P?x[R+fe]-=be:x[R+fe]!==0&&(x[R+fe]=x[I+fe]+Oe)}for(ee=De;ee0?(we+=Je,D[ce++]=fe,Ae+=fe):(v[fe]=xo(ne),x[R+fe]=0)}x[N+O]=ce-re+1;var wt=ce,qe=re+x[E+O];for(ye=me+1;ye=0))for(Ae=V[O],O=x[L+Ae],x[L+Ae]=-1;O!==-1&&x[_+O]!==-1;O=x[_+O],P++){for(oe=x[E+O],Z=x[N+O],ye=v[O]+1;ye<=v[O]+oe-1;ye++)x[R+D[ye]]=P;var Wt=O;for(Q=x[_+O];Q!==-1;){var pr=x[E+Q]===oe&&x[N+Q]===Z;for(ye=v[Q]+1;pr&&ye<=v[Q]+oe-1;ye++)x[R+D[ye]]!==P&&(pr=0);pr?(v[Q]=xo(O),x[T+O]+=x[T+Q],x[T+Q]=0,x[N+Q]=-1,Q=x[_+Q],x[_+Wt]=Q):(Wt=Q,Q=x[_+Q])}}for(ye=De,ee=De;ee=0;Q--)x[T+Q]>0||(x[_+Q]=x[C+v[Q]],x[C+v[Q]]=Q);for(fe=d;fe>=0;fe--)x[T+fe]<=0||v[fe]!==-1&&(x[_+fe]=x[C+v[fe]],x[C+v[fe]]=fe);for(ne=0,O=0;O<=d;O++)v[O]===-1&&(ne=iv(O,ne,x,C,_,w,R));return w.splice(w.length-1,1),w};function i(u,c,f,m,p){var d=n(c);if(u===1&&m===f)return e(c,d);if(u===2){for(var h=d._index,b=d._ptr,y=0,D=0;Dp))for(var A=b[D+1];vh)f[b+w]=0,f[p+w]=-1,A++,c[w]=xo(u),f[b+u]++;else{var E=f[y+x];E!==-1&&(D[E]=w),f[v+w]=f[y+x],f[y+x]=w}}return A}function s(u,c,f,m,p){if(u<2||u+c<0){for(var d=0;d{var{transpose:e}=t;return function(r,n,i,a){if(!r||!n||!i)return null;var o=r._size,s=o[0],l=o[1],u,c,f,m,p,d,h,b=4*l+(a?l+s+1:0),y=[],D=0,v=l,A=2*l,w=3*l,x=4*l,E=5*l+1;for(f=0;f=1&&T[c]++,I.jleaf===2&&T[I.q]--}n[c]!==-1&&(y[D+c]=n[c])}for(c=0;c{var{add:e,multiply:r,transpose:n}=t,i=b2({add:e,multiply:r,transpose:n}),a=w2({transpose:n});return function(l,u,c){var f=u._ptr,m=u._size,p=m[1],d,h={};if(h.q=i(l,u),l&&!h.q)return null;if(c){var b=l?h2(u,null,h.q,0):u;h.parent=v2(b,1);var y=g2(h.parent,p);if(h.cp=a(b,h.parent,y,1),b&&h.parent&&h.cp&&o(b,h))for(h.unz=0,d=0;d=0;E--)for(_=u[E],C=u[E+1],T=_;T=0;x--)h[x]=-1,E=b[x],E!==-1&&(y[w+E]++===0&&(y[A+E]=x),y[D+x]=y[v+E],y[v+E]=x);for(l.lnz=0,l.m2=m,E=0;E=0;){t=n[m];var p=i?i[t]:t;op(o,t)||(av(o,t),n[l+m]=p<0?0:J0(o[p]));var d=1;for(c=n[l+m],f=p<0?0:J0(o[p+1]);c{var{divideScalar:e,multiply:r,subtract:n}=t;return function(a,o,s,l,u,c,f){var m=a._values,p=a._index,d=a._ptr,h=a._size,b=h[1],y=o._values,D=o._index,v=o._ptr,A,w,x,E,T=D2(a,o,s,l,c);for(A=T;A{var{abs:e,divideScalar:r,multiply:n,subtract:i,larger:a,largerEq:o,SparseMatrix:s}=t,l=S2({divideScalar:r,multiply:n,subtract:i});return function(c,f,m){if(!c)return null;var p=c._size,d=p[1],h,b=100,y=100;f&&(h=f.q,b=f.lnz||b,y=f.unz||y);var D=[],v=[],A=[],w=new s({values:D,index:v,ptr:A,size:[d,d]}),x=[],E=[],T=[],_=new s({values:x,index:E,ptr:T,size:[d,d]}),C=[],N,I,R=[],L=[];for(N=0;N{var{typed:e,abs:r,add:n,multiply:i,transpose:a,divideScalar:o,subtract:s,larger:l,largerEq:u,SparseMatrix:c}=t,f=_2({add:n,multiply:i,transpose:a}),m=E2({abs:r,divideScalar:o,multiply:i,subtract:s,larger:l,largerEq:u,SparseMatrix:c});return e(T2,{"SparseMatrix, number, number":function(d,h,b){if(!He(h)||h<0||h>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(b<0||b>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var y=f(h,d,!1),D=m(d,y,b);return{L:D.L,U:D.U,p:D.pinv,q:y.q,toString:function(){return"L: "+this.L.toString()+` U: `+this.U.toString()+` p: `+this.p.toString()+(this.q?` q: `+this.q.toString():"")+` -`}}}})});function zS(t,e){var r,n=e.length,i=[];if(t)for(r=0;r{var{typed:e,matrix:r,lup:n,slu:i,usolve:a,lsolve:o,DenseMatrix:s}=t,l=gs({DenseMatrix:s});return e(FO,{"Array, Array | Matrix":function(m,p){m=r(m);var d=n(m),h=c(d.L,d.U,d.p,null,p);return h.valueOf()},"DenseMatrix, Array | Matrix":function(m,p){var d=n(m);return c(d.L,d.U,d.p,null,p)},"SparseMatrix, Array | Matrix":function(m,p){var d=n(m);return c(d.L,d.U,d.p,null,p)},"SparseMatrix, Array | Matrix, number, number":function(m,p,d,h){var x=i(m,d,h);return c(x.L,x.U,x.p,x.q,p)},"Object, Array | Matrix":function(m,p){return c(m.L,m.U,m.p,m.q,p)}});function u(f){if(rt(f))return f;if(vr(f))return r(f);throw new TypeError("Invalid Matrix LU decomposition")}function c(f,m,p,d,h){f=u(f),m=u(m),p&&(h=l(f,h,!0),h._data=zS(p,h._data));var x=o(f,h),b=a(m,x);return d&&(b._data=zS(d,b._data)),b}});var IO="polynomialRoot",Ure=["typed","isZero","equalScalar","add","subtract","multiply","divide","sqrt","unaryMinus","cbrt","typeOf","im","re"],GS=M(IO,Ure,t=>{var{typed:e,isZero:r,equalScalar:n,add:i,subtract:a,multiply:o,divide:s,sqrt:l,unaryMinus:u,cbrt:c,typeOf:f,im:m,re:p}=t;return e(IO,{"number|Complex, ...number|Complex":(d,h)=>{for(var x=[d,...h];x.length>0&&r(x[x.length-1]);)x.pop();if(x.length<2)throw new RangeError("Polynomial [".concat(d,", ").concat(h,"] must have a non-zero non-constant coefficient"));switch(x.length){case 2:return[u(s(x[0],x[1]))];case 3:{var[b,T,v]=x,A=o(2,v),w=o(T,T),y=o(4,v,b);if(n(w,y))return[s(u(T),A)];var E=l(a(w,y));return[s(a(E,T),A),s(a(u(E),T),A)]}case 4:{var[D,_,N,C]=x,B=u(o(3,C)),R=o(N,N),V=o(3,C,_),L=i(o(2,N,N,N),o(27,C,C,D)),P=o(9,C,N,_);if(n(R,V)&&n(L,P))return[s(N,B)];var k=a(R,V),W=a(L,P),O=i(o(18,C,N,_,D),o(N,N,_,_)),X=i(o(4,N,N,N,D),o(4,C,_,_,_),o(27,C,C,D,D));if(n(O,X))return[s(a(o(4,C,N,_),i(o(9,C,C,D),o(N,N,N))),o(C,k)),s(a(o(9,C,D),o(N,_)),o(2,k))];var ae;n(R,V)?ae=W:ae=s(i(W,l(a(o(W,W),o(4,k,k,k)))),2);var J=!0,U=c(ae,J).toArray().map(de=>s(i(N,de,s(k,de)),B));return U.map(de=>f(de)==="Complex"&&n(p(de),p(de)+m(de))?p(de):de)}default:throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(x))}}})});var qre="Help",zre=["evaluate"],WS=M(qre,zre,t=>{var{evaluate:e}=t;function r(n){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(!n)throw new Error('Argument "doc" missing');this.doc=n}return r.prototype.type="Help",r.prototype.isHelp=!0,r.prototype.toString=function(){var n=this.doc||{},i=` +`}}}})});function X0(t,e){var r,n=e.length,i=[];if(t)for(r=0;r{var{typed:e,matrix:r,lup:n,slu:i,usolve:a,lsolve:o,DenseMatrix:s}=t,l=Uo({DenseMatrix:s});return e(C2,{"Array, Array | Matrix":function(m,p){m=r(m);var d=n(m),h=c(d.L,d.U,d.p,null,p);return h.valueOf()},"DenseMatrix, Array | Matrix":function(m,p){var d=n(m);return c(d.L,d.U,d.p,null,p)},"SparseMatrix, Array | Matrix":function(m,p){var d=n(m);return c(d.L,d.U,d.p,null,p)},"SparseMatrix, Array | Matrix, number, number":function(m,p,d,h){var b=i(m,d,h);return c(b.L,b.U,b.p,b.q,p)},"Object, Array | Matrix":function(m,p){return c(m.L,m.U,m.p,m.q,p)}});function u(f){if(Ye(f))return f;if(sr(f))return r(f);throw new TypeError("Invalid Matrix LU decomposition")}function c(f,m,p,d,h){f=u(f),m=u(m),p&&(h=l(f,h,!0),h._data=X0(p,h._data));var b=o(f,h),y=a(m,b);return d&&(y._data=X0(d,y._data)),y}});var F2="polynomialRoot",pX=["typed","isZero","equalScalar","add","subtract","multiply","divide","sqrt","unaryMinus","cbrt","typeOf","im","re"],I2=M(F2,pX,t=>{var{typed:e,isZero:r,equalScalar:n,add:i,subtract:a,multiply:o,divide:s,sqrt:l,unaryMinus:u,cbrt:c,typeOf:f,im:m,re:p}=t;return e(F2,{"number|Complex, ...number|Complex":(d,h)=>{for(var b=[d,...h];b.length>0&&r(b[b.length-1]);)b.pop();if(b.length<2)throw new RangeError("Polynomial [".concat(d,", ").concat(h,"] must have a non-zero non-constant coefficient"));switch(b.length){case 2:return[u(s(b[0],b[1]))];case 3:{var[y,D,v]=b,A=o(2,v),w=o(D,D),x=o(4,v,y);if(n(w,x))return[s(u(D),A)];var E=l(a(w,x));return[s(a(E,D),A),s(a(u(E),D),A)]}case 4:{var[T,_,C,N]=b,I=u(o(3,N)),R=o(C,C),L=o(3,N,_),V=i(o(2,C,C,C),o(27,N,N,T)),P=o(9,N,C,_);if(n(R,L)&&n(V,P))return[s(C,I)];var k=a(R,L),W=a(V,P),O=i(o(18,N,C,_,T),o(C,C,_,_)),Q=i(o(4,C,C,C,T),o(4,N,_,_,_),o(27,N,N,T,T));if(n(O,Q))return[s(a(o(4,N,C,_),i(o(9,N,N,T),o(C,C,C))),o(N,k)),s(a(o(9,N,T),o(C,_)),o(2,k))];var ne;n(R,L)?ne=W:ne=s(i(W,l(a(o(W,W),o(4,k,k,k)))),2);var X=!0,U=c(ne,X).toArray().map(fe=>s(i(C,fe,s(k,fe)),I));return U.map(fe=>f(fe)==="Complex"&&n(p(fe),p(fe)+m(fe))?p(fe):fe)}default:throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(b))}}})});var mX="Help",dX=["evaluate"],B2=M(mX,dX,t=>{var{evaluate:e}=t;function r(n){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if(!n)throw new Error('Argument "doc" missing');this.doc=n}return r.prototype.type="Help",r.prototype.isHelp=!0,r.prototype.toString=function(){var n=this.doc||{},i=` `;if(n.name&&(i+="Name: "+n.name+` `),n.category&&(i+="Category: "+n.category+` @@ -144,25 +128,34 @@ q: `+this.q.toString():"")+` `),n.examples){i+=`Examples: `;for(var a=!1,o=e("config()"),s={config:f=>(a=!0,e("config(newConfig)",{newConfig:f}))},l=0;la!=="mathjs").forEach(a=>{i[a]=n[a]}),new r(i)},r.prototype.valueOf=r.prototype.toString,r},{isClass:!0});var Hre="Chain",Gre=["?on","math","typed"],YS=M(Hre,Gre,t=>{var{on:e,math:r,typed:n}=t;function i(u){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");Mg(u)?this.value=u.value:this.value=u}i.prototype.type="Chain",i.prototype.isChain=!0,i.prototype.done=function(){return this.value},i.prototype.valueOf=function(){return this.value},i.prototype.toString=function(){return Dt(this.value)},i.prototype.toJSON=function(){return{mathjs:"Chain",value:this.value}},i.fromJSON=function(u){return new i(u.value)};function a(u,c){typeof c=="function"&&(i.prototype[u]=s(c))}function o(u,c){K2(i.prototype,u,function(){var m=c();if(typeof m=="function")return s(m)})}function s(u){return function(){if(arguments.length===0)return new i(u(this.value));for(var c=[this.value],f=0;fu[d])};for(var m in u)f(m)}};var l={expression:!0,docs:!0,type:!0,classes:!0,json:!0,error:!0,isChain:!0};return i.createProxy(r),e&&e("import",function(u,c,f){f||o(u,c)}),i},{isClass:!0});var jS={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]};var PO={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]};var BO={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]};var kO={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]};var $O={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]};var OO={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]};var RO={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]};var LO={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]};var VO={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]};var UO={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]};var qO={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["phi"],seealso:[]};var ZS={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]};var zO={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]};var HO={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]};var GO={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]};var WO={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]};var YO={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]};var jO={name:"bignumber",category:"Construction",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","bigint","complex","fraction","index","matrix","string","unit"]};var ZO={name:"bigint",category:"Construction",syntax:["bigint(x)"],description:"Create a bigint, an integer with an arbitrary number of digits, from a number or string.",examples:["123123123123123123 # a large number will lose digits",'bigint("123123123123123123")','bignumber(["1", "3", "5"])'],seealso:["boolean","bignumber","number","complex","fraction","index","matrix","string","unit"]};var JO={name:"boolean",category:"Construction",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]};var XO={name:"complex",category:"Construction",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]};var QO={name:"createUnit",category:"Construction",syntax:["createUnit(definitions)","createUnit(name, definition)"],description:"Create a user-defined unit and register it with the Unit type.",examples:['createUnit("foo")','createUnit("knot", {definition: "0.514444444 m/s", aliases: ["knots", "kt", "kts"]})','createUnit("mph", "1 mile/hour")'],seealso:["unit","splitUnit"]};var KO={name:"fraction",category:"Construction",syntax:["fraction(num)","fraction(matrix)","fraction(num,den)","fraction({n: num, d: den})"],description:"Create a fraction from a number or from integer numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)","fraction({n: 333, d: 53})","fraction([sqrt(9), sqrt(10), sqrt(11)])"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]};var eR={name:"index",category:"Construction",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[1:2, 1:2] = 1","B = [1, 2, 3]","B[B>1 and B<3]"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]};var tR={name:"matrix",category:"Construction",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]};var rR={name:"number",category:"Construction",syntax:["x","number(x)","number(unit, valuelessUnit)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number(unit("52cm"), "m")'],seealso:["bignumber","bigint","boolean","complex","fraction","index","matrix","string","unit"]};var nR={name:"sparse",category:"Construction",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]};var iR={name:"splitUnit",category:"Construction",syntax:["splitUnit(unit: Unit, parts: Unit[])"],description:"Split a unit in an array of units whose sum is equal to the original unit.",examples:['splitUnit(1 m, ["feet", "inch"])'],seealso:["unit","createUnit"]};var aR={name:"string",category:"Construction",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]};var oR={name:"unit",category:"Construction",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]};var sR={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]};var uR={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]};var lR={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number": f(x)=x+x, "string": f(x)=concat(x,x) })',"double(2)",'double("hello")'],seealso:[]};var cR={name:"derivative",category:"Algebra",syntax:["derivative(expr, variable)","derivative(expr, variable, {simplify: boolean})"],description:"Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.",examples:['derivative("2x^3", "x")','derivative("2x^3", "x", {simplify: false})','derivative("2x^2 + 3x + 4", "x")','derivative("sin(2x)", "x")','f = parse("x^2 + x")','x = parse("x")',"df = derivative(f, x)","df.evaluate({x: 3})"],seealso:["simplify","parse","evaluate"]};var fR={name:"leafCount",category:"Algebra",syntax:["leafCount(expr)"],description:"Computes the number of leaves in the parse tree of the given expression",examples:['leafCount("e^(i*pi)-1")','leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],seealso:["simplify"]};var pR={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolveAll","lup","lusolve","usolve","matrix","sparse"]};var mR={name:"lsolveAll",category:"Algebra",syntax:["x=lsolveAll(L, b)"],description:"Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolve","lup","lusolve","usolve","matrix","sparse"]};var dR={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu","qr"]};var hR={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]};var gR={name:"polynomialRoot",category:"Algebra",syntax:["x=polynomialRoot(-6, 3)","x=polynomialRoot(4, -4, 1)","x=polynomialRoot(-8, 12, -6, 1)"],description:"Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.",examples:["a = polynomialRoot(-6, 11, -6, 1)"],seealso:["cbrt","sqrt"]};var vR={name:"qr",category:"Algebra",syntax:["qr(A)"],description:"Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.",examples:["qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])"],seealso:["lup","slu","matrix"]};var yR={name:"rationalize",category:"Algebra",syntax:["rationalize(expr)","rationalize(expr, scope)","rationalize(expr, scope, detailed)"],description:"Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.",examples:['rationalize("2x/y - y/(x+1)")','rationalize("2x/y - y/(x+1)", true)'],seealso:["simplify"]};var xR={name:"resolve",category:"Algebra",syntax:["resolve(node, scope)"],description:"Recursively substitute variables in an expression tree.",examples:['resolve(parse("1 + x"), { x: 7 })','resolve(parse("size(text)"), { text: "Hello World" })','resolve(parse("x + y"), { x: parse("3z") })','resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],seealso:["simplify","evaluate"],mayThrow:["ReferenceError"]};var bR={name:"simplify",category:"Algebra",syntax:["simplify(expr)","simplify(expr, rules)"],description:"Simplify an expression tree.",examples:['simplify("3 + 2 / 4")','simplify("2x + x")','f = parse("x * (x + 2 + x)")',"simplified = simplify(f)","simplified.evaluate({x: 2})"],seealso:["simplifyCore","derivative","evaluate","parse","rationalize","resolve"]};var wR={name:"simplifyConstant",category:"Algebra",syntax:["simplifyConstant(expr)","simplifyConstant(expr, options)"],description:"Replace constant subexpressions of node with their values.",examples:['simplifyConstant("(3-3)*x")','simplifyConstant(parse("z-cos(tau/8)"))'],seealso:["simplify","simplifyCore","evaluate"]};var _R={name:"simplifyCore",category:"Algebra",syntax:["simplifyCore(node)"],description:"Perform simple one-pass simplifications on an expression tree.",examples:['simplifyCore(parse("0*x"))','simplifyCore(parse("(x+0)*2"))'],seealso:["simplify","simplifyConstant","evaluate"]};var AR={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup","qr"]};var SR={name:"symbolicEqual",category:"Algebra",syntax:["symbolicEqual(expr1, expr2)","symbolicEqual(expr1, expr2, options)"],description:"Returns true if the difference of the expressions simplifies to 0",examples:['symbolicEqual("x*y","y*x")','symbolicEqual("abs(x^2)", "x^2")','symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],seealso:["simplify","evaluate"]};var ER={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolveAll","lup","lusolve","lsolve","matrix","sparse"]};var TR={name:"usolveAll",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolve","lup","lusolve","lsolve","matrix","sparse"]};var DR={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]};var MR={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]};var CR={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]};var NR={name:"ceil",category:"Arithmetic",syntax:["ceil(x)","ceil(x, n)","ceil(unit, valuelessUnit)","ceil(unit, n, valuelessUnit)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)","ceil(3.241cm, cm)","ceil(3.241cm, 2, cm)"],seealso:["floor","fix","round"]};var FR={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]};var IR={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]};var PR={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]};var BR={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]};var kR={name:"dotPow",category:"Operators",syntax:["x .^ y","dotPow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]};var $R={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["expm","expm1","pow","log"]};var OR={name:"expm",category:"Arithmetic",syntax:["exp(x)"],description:"Compute the matrix exponential, expm(A) = e^A. The matrix must be square. Not to be confused with exp(a), which performs element-wise exponentiation.",examples:["expm([[0,2],[0,0]])"],seealso:["exp"]};var RR={name:"expm1",category:"Arithmetic",syntax:["expm1(x)"],description:"Calculate the value of subtracting 1 from the exponential value.",examples:["expm1(2)","pow(e, 2) - 1","log(expm1(2) + 1)"],seealso:["exp","pow","log"]};var LR={name:"fix",category:"Arithmetic",syntax:["fix(x)","fix(x, n)","fix(unit, valuelessUnit)","fix(unit, n, valuelessUnit)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)","fix(3.241cm, cm)","fix(3.241cm, 2, cm)"],seealso:["ceil","floor","round"]};var VR={name:"floor",category:"Arithmetic",syntax:["floor(x)","floor(x, n)","floor(unit, valuelessUnit)","floor(unit, n, valuelessUnit)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)","floor(3.241cm, cm)","floor(3.241cm, 2, cm)"],seealso:["ceil","fix","round"]};var UR={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]};var qR={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenuse of a list with values.",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]};var zR={name:"invmod",category:"Arithmetic",syntax:["invmod(a, b)"],description:"Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)",examples:["invmod(8, 12)","invmod(7, 13)","invmod(15151, 15122)"],seealso:["gcd","xgcd"]};var HR={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]};var GR={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log1p","log2","log10"]};var WR={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]};var YR={name:"log1p",category:"Arithmetic",syntax:["log1p(x)","log1p(x, base)"],description:"Calculate the logarithm of a `value+1`",examples:["log1p(2.5)","exp(log1p(1.4))","pow(10, 4)","log1p(9999, 10)","log1p(9999) / log(10)"],seealso:["exp","log","log2","log10"]};var jR={name:"log2",category:"Arithmetic",syntax:["log2(x)"],description:"Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.",examples:["log2(0.03125)","log2(16)","log2(16) / log2(2)","pow(2, 4)"],seealso:["exp","log1p","log","log10"]};var ZR={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]};var JR={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]};var XR={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i)","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)",'norm([[1, 2], [3, 4]], "inf")','norm([[1, 2], [3, 4]], "fro")']};var QR={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["nthRoots","pow","sqrt"]};var KR={name:"nthRoots",category:"Arithmetic",syntax:["nthRoots(A)","nthRoots(A, root)"],description:'Calculate the nth roots of a value. An nth root of a positive real number A, is a positive real solution of the equation "x^root = A". This function returns an array of complex values.',examples:["nthRoots(1)","nthRoots(1, 3)"],seealso:["sqrt","pow","nthRoot"]};var eL={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3","2*2*2","1 + e ^ (pi * i)","pow([[1, 2], [4, 3]], 2)","pow([[1, 2], [4, 3]], -1)"],seealso:["multiply","nthRoot","nthRoots","sqrt"]};var tL={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)","round(unit, valuelessUnit)","round(unit, n, valuelessUnit)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)","round(3.241cm, 2, cm)","round([3.2, 3.8, -4.7])"],seealso:["ceil","floor","fix"]};var rL={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]};var nL={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","sqrtm","multiply","nthRoot","nthRoots","pow"]};var iL={name:"sqrtm",category:"Arithmetic",syntax:["sqrtm(x)"],description:"Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.",examples:["sqrtm([[33, 24], [48, 57]])"],seealso:["sqrt","abs","square","multiply"]};var aL={name:"sylvester",category:"Algebra",syntax:["sylvester(A,B,C)"],description:"Solves the real-valued Sylvester equation AX+XB=C for X",examples:["sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])","A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]","sylvester(A, B, C)"],seealso:["schur","lyap"]};var oL={name:"schur",category:"Algebra",syntax:["schur(A)"],description:"Performs a real Schur decomposition of the real matrix A = UTU'",examples:["schur([[1, 0], [-4, 3]])","A = [[1, 0], [-4, 3]]","schur(A)"],seealso:["lyap","sylvester"]};var sL={name:"lyap",category:"Algebra",syntax:["lyap(A,Q)"],description:"Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P",examples:["lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])","A = [[-2, 0], [1, -4]]","Q = [[3, 1], [1, 3]]","lyap(A,Q)"],seealso:["schur","sylvester"]};var uL={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]};var lL={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]};var cL={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]};var fL={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]};var pL={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]};var mL={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var dL={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var hL={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]};var gL={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]};var vL={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]};var yL={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]};var xL={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]};var bL={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]};var wL={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]};var _L={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]};var AL={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]};var SL={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]};var EL={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]};var TL={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]};var DL={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]};var ML={name:"evaluate",category:"Expression",syntax:["evaluate(expression)","evaluate(expression, scope)","evaluate([expr1, expr2, expr3, ...])","evaluate([expr1, expr2, expr3, ...], scope)"],description:"Evaluate an expression or an array with expressions.",examples:['evaluate("2 + 3")','evaluate("sqrt(16)")','evaluate("2 inch to cm")','evaluate("sin(x * pi)", { "x": 1/2 })','evaluate(["width=2", "height=4","width*height"])'],seealso:[]};var CL={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]};var NL={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2]])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]};var FL={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]};var IL={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]};var PL={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]};var BL={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]};var kL={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]};var $L={name:"column",category:"Matrix",syntax:["column(x, index)"],description:"Return a column from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","column(A, 1)","column(A, 2)"],seealso:["row","matrixFromColumns"]};var OL={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var RL={name:"count",category:"Matrix",syntax:["count(x)"],description:"Count the number of elements of a matrix, array or string.",examples:["a = [1, 2; 3, 4; 5, 6]","count(a)","size(a)",'count("hello world")'],seealso:["size"]};var LL={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]};var VL={name:"ctranspose",category:"Matrix",syntax:["x'","ctranspose(x)"],description:"Complex Conjugate and Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","ctranspose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var UL={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var qL={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var zL={name:"diff",category:"Matrix",syntax:["diff(arr)","diff(arr, dim)"],description:["Create a new matrix or array with the difference of the passed matrix or array.","Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference","If no dimension parameter is passed it is assumed as dimension 0","Dimension is zero-based in javascript and one-based in the parser","Arrays must be 'rectangular' meaning arrays like [1, 2]","If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays"],examples:["A = [1, 2, 4, 7, 0]","diff(A)","diff(A, 1)","B = [[1, 2], [3, 4]]","diff(B)","diff(B, 1)","diff(B, 2)","diff(B, bignumber(2))","diff([[1, 2], matrix([3, 4])], 2)"],seealso:["subtract","partitionSelect"]};var HL={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]};var GL={name:"eigs",category:"Matrix",syntax:["eigs(x)"],description:"Calculate the eigenvalues and optionally eigenvectors of a square matrix",examples:["eigs([[5, 2.3], [2.3, 1]])","eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })"],seealso:["inv"]};var WL={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]};var YL={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]};var jL={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["numberOfPets = {}","addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;",'forEach(["Dog","Cat","Cat"], addPet)',"numberOfPets"],seealso:["map","sort","filter"]};var ZL={name:"getMatrixDataType",category:"Matrix",syntax:["getMatrixDataType(x)"],description:'Find the data type of all elements in a matrix or array, for example "number" if all items are a number and "Complex" if all values are complex numbers. If a matrix contains more than one data type, it will return "mixed".',examples:["getMatrixDataType([1, 2, 3])","getMatrixDataType([[5 cm], [2 inch]])",'getMatrixDataType([1, "text"])',"getMatrixDataType([1, bignumber(4)])"],seealso:["matrix","sparse","typeOf"]};var JL={name:"identity",category:"Matrix",syntax:["identity(n)","identity(m, n)","identity([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["identity(3)","identity(3, 5)","a = [1, 2, 3; 4, 5, 6]","identity(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var XL={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","identity","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var QL={name:"pinv",category:"Matrix",syntax:["pinv(x)"],description:"Calculate the Moore\u2013Penrose inverse of a matrix",examples:["pinv([1, 2; 3, 4])","pinv([[1, 0], [0, 1], [0, 1]])","pinv(4)"],seealso:["inv"]};var KL={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the Kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]};var e3={name:"map",category:"Matrix",syntax:["map(x, callback)","map(x, y, ..., callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.",examples:["map([1, 2, 3], square)","map([1, 2], [3, 4], f(a,b) = a + b)"],seealso:["filter","forEach"]};var t3={name:"matrixFromColumns",category:"Matrix",syntax:["matrixFromColumns(...arr)","matrixFromColumns(row1, row2)","matrixFromColumns(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual columns.",examples:["matrixFromColumns([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromRows","matrixFromFunction","zeros"]};var r3={name:"matrixFromFunction",category:"Matrix",syntax:["matrixFromFunction(size, fn)","matrixFromFunction(size, fn, format)","matrixFromFunction(size, fn, format, datatype)","matrixFromFunction(size, format, fn)","matrixFromFunction(size, format, datatype, fn)"],description:"Create a matrix by evaluating a generating function at each index.",examples:["f(I) = I[1] - I[2]","matrixFromFunction([3,3], f)","g(I) = I[1] - I[2] == 1 ? 4 : 0",'matrixFromFunction([100, 100], "sparse", g)',"matrixFromFunction([5], random)"],seealso:["matrix","matrixFromRows","matrixFromColumns","zeros"]};var n3={name:"matrixFromRows",category:"Matrix",syntax:["matrixFromRows(...arr)","matrixFromRows(row1, row2)","matrixFromRows(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual rows.",examples:["matrixFromRows([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromColumns","matrixFromFunction","zeros"]};var i3={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","identity","inv","range","size","squeeze","subset","trace","transpose","zeros"]};var a3={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1, compareText)',"arr = [5, 2, 1]","partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]","arr","partitionSelect(arr, 1, 'desc') # returns 2, arr is now: [5, 2, 1]","arr"],seealso:["sort"]};var o3={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"range(1m, 1m, 3m)","a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","identity","inv","ones","size","squeeze","subset","trace","transpose","zeros"]};var s3={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])","reshape([1, 2, 3, 4], [-1, 2])"],seealso:["size","squeeze","resize"]};var u3={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]};var l3={name:"rotate",category:"Matrix",syntax:["rotate(w, theta)","rotate(w, theta, v)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotate([1, 0], pi / 2)",'rotate(matrix([1, 0]), unit("35deg"))','rotate([1, 0, 0], unit("90deg"), [0, 0, 1])','rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],seealso:["matrix","rotationMatrix"]};var c3={name:"rotationMatrix",category:"Matrix",syntax:["rotationMatrix(theta)","rotationMatrix(theta, v)","rotationMatrix(theta, v, format)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotationMatrix(pi / 2)",'rotationMatrix(unit("45deg"), [0, 0, 1])','rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],seealso:["cos","sin"]};var f3={name:"row",category:"Matrix",syntax:["row(x, index)"],description:"Return a row from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","row(A, 1)","row(A, 2)"],seealso:["column","matrixFromRows"]};var p3={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","count","det","diag","identity","inv","ones","range","squeeze","subset","trace","transpose","zeros"]};var m3={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"], "natural")',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]};var d3={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","identity","inv","ones","range","size","subset","trace","transpose","zeros"]};var h3={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of the entries of a matrix or characters of a string. Indexes are one-based. There should be one index specification for each dimension of the target. Each specification can be a single index, a list of indices, or a range in colon notation `l:u`. In a range, both the lower bound l and upper bound u are included; and if a bound is omitted it defaults to the most extreme valid value. The cartesian product of the indices specified in each dimension determines the target of the operation.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]","f[[1,2], [1,3]] = [9, 10; 11, 12]","f"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","trace","transpose","zeros"]};var g3={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","transpose","zeros"]};var v3={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var y3={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose"]};var x3={name:"fft",category:"Matrix",syntax:["fft(x)"],description:"Calculate N-dimensional Fourier transform",examples:["fft([[1, 0], [1, 0]])"],seealso:["ifft"]};var b3={name:"ifft",category:"Matrix",syntax:["ifft(x)"],description:"Calculate N-dimensional inverse Fourier transform",examples:["ifft([[2, 2], [0, 0]])"],seealso:["fft"]};var w3={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["combinationsWithRep","permutations","factorial"]};var _3={name:"combinationsWithRep",category:"Probability",syntax:["combinationsWithRep(n, k)"],description:"Compute the number of combinations of n items taken k at a time with replacements.",examples:["combinationsWithRep(7, 5)"],seealso:["combinations","permutations","factorial"]};var A3={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","combinationsWithRep","permutations","gamma"]};var S3={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]};var E3={name:"lgamma",category:"Probability",syntax:["lgamma(n)"],description:"Logarithm of the gamma function for real, positive numbers and complex numbers, using Lanczos approximation for numbers and Stirling series for complex numbers.",examples:["lgamma(4)","lgamma(1/2)","lgamma(i)","lgamma(complex(1.1, 2))"],seealso:["gamma"]};var T3={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]};var D3={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]};var M3={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","combinationsWithRep","factorial"]};var C3={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]};var N3={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]};var F3={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]};var I3={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural","compareText"]};var P3={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare","compareText"]};var B3={name:"compareText",category:"Relational",syntax:["compareText(x, y)"],description:"Compare two strings lexically. Comparison is case sensitive. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:['compareText("B", "A")','compareText("A", "B")','compareText("A", "A")','compareText("2", "10")','compare("2", "10")',"compare(2, 10)",'compareNatural("2", "10")','compareText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural"]};var k3={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]};var $3={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual","equalText"]};var O3={name:"equalText",category:"Relational",syntax:["equalText(x, y)"],description:"Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.",examples:['equalText("Hello", "Hello")','equalText("a", "A")','equal("2e3", "2000")','equalText("2e3", "2000")','equalText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural","compareText","equal"]};var R3={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]};var L3={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]};var V3={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]};var U3={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]};var q3={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]};var z3={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]};var H3={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]};var G3={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]};var W3={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]};var Y3={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]};var j3={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]};var Z3={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]};var J3={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]};var X3={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]};var Q3={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]};var K3={name:"zpk2tf",category:"Signal",syntax:["zpk2tf(z, p, k)"],description:"Compute the transfer function of a zero-pole-gain model.",examples:["zpk2tf([1, 2], [-1, -2], 1)","zpk2tf([1, 2], [-1, -2])","zpk2tf([1 - 3i, 2 + 2i], [-1, -2])"],seealso:[]};var e4={name:"freqz",category:"Signal",syntax:["freqz(b, a)","freqz(b, a, w)"],description:"Calculates the frequency response of a filter given its numerator and denominator coefficients.",examples:["freqz([1, 2], [1, 2, 3])","freqz([1, 2], [1, 2, 3], [0, 1])","freqz([1, 2], [1, 2, 3], 512)"],seealso:[]};var t4={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]};var r4={name:"zeta",category:"Special",syntax:["zeta(s)"],description:"Compute the Riemann Zeta Function using an infinite series and Riemann's Functional Equation for the entire complex plane",examples:["zeta(0.2)","zeta(-0.5)","zeta(4)"],seealso:[]};var n4={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]};var i4={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dimension)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","variance"]};var a4={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dimension)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","variance"]};var o4={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","variance","quantileSeq"]};var s4={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dimension)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","variance"]};var u4={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","variance"]};var l4={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","variance"]};var c4={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:`Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. +`),i},r.prototype.toJSON=function(){var n=ut(this.doc);return n.mathjs="Help",n},r.fromJSON=function(n){var i={};return Object.keys(n).filter(a=>a!=="mathjs").forEach(a=>{i[a]=n[a]}),new r(i)},r.prototype.valueOf=r.prototype.toString,r},{isClass:!0});var hX="Chain",gX=["?on","math","typed"],k2=M(hX,gX,t=>{var{on:e,math:r,typed:n}=t;function i(u){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");dc(u)?this.value=u.value:this.value=u}i.prototype.type="Chain",i.prototype.isChain=!0,i.prototype.done=function(){return this.value},i.prototype.valueOf=function(){return this.value},i.prototype.toString=function(){return Dt(this.value)},i.prototype.toJSON=function(){return{mathjs:"Chain",value:this.value}},i.fromJSON=function(u){return new i(u.value)};function a(u,c){typeof c=="function"&&(i.prototype[u]=s(c))}function o(u,c){_s(i.prototype,u,function(){var m=c();if(typeof m=="function")return s(m)})}function s(u){return function(){if(arguments.length===0)return new i(u(this.value));for(var c=[this.value],f=0;fu[d])};for(var m in u)f(m)}};var l={expression:!0,docs:!0,type:!0,classes:!0,json:!0,error:!0,isChain:!0};return i.createProxy(r),e&&e("import",function(u,c,f){f||o(u,c)}),i},{isClass:!0});var Q0={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]};var P2={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]};var $2={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]};var O2={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]};var R2={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]};var L2={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]};var V2={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]};var U2={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]};var q2={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]};var z2={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]};var H2={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["phi"],seealso:[]};var K0={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]};var G2={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]};var W2={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]};var Y2={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]};var j2={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]};var Z2={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]};var J2={name:"bignumber",category:"Construction",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","bigint","complex","fraction","index","matrix","string","unit"]};var X2={name:"bigint",category:"Construction",syntax:["bigint(x)"],description:"Create a bigint, an integer with an arbitrary number of digits, from a number or string.",examples:["123123123123123123 # a large number will lose digits",'bigint("123123123123123123")','bignumber(["1", "3", "5"])'],seealso:["boolean","bignumber","number","complex","fraction","index","matrix","string","unit"]};var Q2={name:"boolean",category:"Construction",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]};var K2={name:"complex",category:"Construction",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]};var eB={name:"createUnit",category:"Construction",syntax:["createUnit(definitions)","createUnit(name, definition)"],description:"Create a user-defined unit and register it with the Unit type.",examples:['createUnit("foo")','createUnit("knot", {definition: "0.514444444 m/s", aliases: ["knots", "kt", "kts"]})','createUnit("mph", "1 mile/hour")'],seealso:["unit","splitUnit"]};var tB={name:"fraction",category:"Construction",syntax:["fraction(num)","fraction(matrix)","fraction(num,den)","fraction({n: num, d: den})"],description:"Create a fraction from a number or from integer numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)","fraction({n: 333, d: 53})","fraction([sqrt(9), sqrt(10), sqrt(11)])"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]};var rB={name:"index",category:"Construction",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[1:2, 1:2] = 1","B = [1, 2, 3]","B[B>1 and B<3]"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]};var nB={name:"matrix",category:"Construction",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]};var iB={name:"number",category:"Construction",syntax:["x","number(x)","number(unit, valuelessUnit)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number(unit("52cm"), "m")'],seealso:["bignumber","bigint","boolean","complex","fraction","index","matrix","string","unit"]};var aB={name:"sparse",category:"Construction",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]};var oB={name:"splitUnit",category:"Construction",syntax:["splitUnit(unit: Unit, parts: Unit[])"],description:"Split a unit in an array of units whose sum is equal to the original unit.",examples:['splitUnit(1 m, ["feet", "inch"])'],seealso:["unit","createUnit"]};var sB={name:"string",category:"Construction",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]};var uB={name:"unit",category:"Construction",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]};var lB={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]};var cB={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]};var fB={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number": f(x)=x+x, "string": f(x)=concat(x,x) })',"double(2)",'double("hello")'],seealso:[]};var pB={name:"derivative",category:"Algebra",syntax:["derivative(expr, variable)","derivative(expr, variable, {simplify: boolean})"],description:"Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.",examples:['derivative("2x^3", "x")','derivative("2x^3", "x", {simplify: false})','derivative("2x^2 + 3x + 4", "x")','derivative("sin(2x)", "x")','f = parse("x^2 + x")','x = parse("x")',"df = derivative(f, x)","df.evaluate({x: 3})"],seealso:["simplify","parse","evaluate"]};var mB={name:"leafCount",category:"Algebra",syntax:["leafCount(expr)"],description:"Computes the number of leaves in the parse tree of the given expression",examples:['leafCount("e^(i*pi)-1")','leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],seealso:["simplify"]};var dB={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolveAll","lup","lusolve","usolve","matrix","sparse"]};var hB={name:"lsolveAll",category:"Algebra",syntax:["x=lsolveAll(L, b)"],description:"Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lsolve","lup","lusolve","usolve","matrix","sparse"]};var gB={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu","qr"]};var vB={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]};var yB={name:"polynomialRoot",category:"Algebra",syntax:["x=polynomialRoot(-6, 3)","x=polynomialRoot(4, -4, 1)","x=polynomialRoot(-8, 12, -6, 1)"],description:"Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.",examples:["a = polynomialRoot(-6, 11, -6, 1)"],seealso:["cbrt","sqrt"]};var bB={name:"qr",category:"Algebra",syntax:["qr(A)"],description:"Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.",examples:["qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])"],seealso:["lup","slu","matrix"]};var xB={name:"rationalize",category:"Algebra",syntax:["rationalize(expr)","rationalize(expr, scope)","rationalize(expr, scope, detailed)"],description:"Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.",examples:['rationalize("2x/y - y/(x+1)")','rationalize("2x/y - y/(x+1)", true)'],seealso:["simplify"]};var wB={name:"resolve",category:"Algebra",syntax:["resolve(node, scope)"],description:"Recursively substitute variables in an expression tree.",examples:['resolve(parse("1 + x"), { x: 7 })','resolve(parse("size(text)"), { text: "Hello World" })','resolve(parse("x + y"), { x: parse("3z") })','resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],seealso:["simplify","evaluate"],mayThrow:["ReferenceError"]};var _B={name:"simplify",category:"Algebra",syntax:["simplify(expr)","simplify(expr, rules)"],description:"Simplify an expression tree.",examples:['simplify("3 + 2 / 4")','simplify("2x + x")','f = parse("x * (x + 2 + x)")',"simplified = simplify(f)","simplified.evaluate({x: 2})"],seealso:["simplifyCore","derivative","evaluate","parse","rationalize","resolve"]};var AB={name:"simplifyConstant",category:"Algebra",syntax:["simplifyConstant(expr)","simplifyConstant(expr, options)"],description:"Replace constant subexpressions of node with their values.",examples:['simplifyConstant("(3-3)*x")','simplifyConstant(parse("z-cos(tau/8)"))'],seealso:["simplify","simplifyCore","evaluate"]};var DB={name:"simplifyCore",category:"Algebra",syntax:["simplifyCore(node)"],description:"Perform simple one-pass simplifications on an expression tree.",examples:['simplifyCore(parse("0*x"))','simplifyCore(parse("(x+0)*2"))'],seealso:["simplify","simplifyConstant","evaluate"]};var SB={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup","qr"]};var EB={name:"symbolicEqual",category:"Algebra",syntax:["symbolicEqual(expr1, expr2)","symbolicEqual(expr1, expr2, options)"],description:"Returns true if the difference of the expressions simplifies to 0",examples:['symbolicEqual("x*y","y*x")','symbolicEqual("abs(x^2)", "x^2")','symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],seealso:["simplify","evaluate"]};var TB={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolveAll","lup","lusolve","lsolve","matrix","sparse"]};var MB={name:"usolveAll",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["usolve","lup","lusolve","lsolve","matrix","sparse"]};var CB={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]};var NB={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]};var FB={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]};var IB={name:"ceil",category:"Arithmetic",syntax:["ceil(x)","ceil(x, n)","ceil(unit, valuelessUnit)","ceil(unit, n, valuelessUnit)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)","ceil(3.241cm, cm)","ceil(3.241cm, 2, cm)"],seealso:["floor","fix","round"]};var BB={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]};var kB={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]};var PB={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]};var $B={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]};var OB={name:"dotPow",category:"Operators",syntax:["x .^ y","dotPow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]};var RB={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["expm","expm1","pow","log"]};var LB={name:"expm",category:"Arithmetic",syntax:["exp(x)"],description:"Compute the matrix exponential, expm(A) = e^A. The matrix must be square. Not to be confused with exp(a), which performs element-wise exponentiation.",examples:["expm([[0,2],[0,0]])"],seealso:["exp"]};var VB={name:"expm1",category:"Arithmetic",syntax:["expm1(x)"],description:"Calculate the value of subtracting 1 from the exponential value.",examples:["expm1(2)","pow(e, 2) - 1","log(expm1(2) + 1)"],seealso:["exp","pow","log"]};var UB={name:"fix",category:"Arithmetic",syntax:["fix(x)","fix(x, n)","fix(unit, valuelessUnit)","fix(unit, n, valuelessUnit)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)","fix(3.241cm, cm)","fix(3.241cm, 2, cm)"],seealso:["ceil","floor","round"]};var qB={name:"floor",category:"Arithmetic",syntax:["floor(x)","floor(x, n)","floor(unit, valuelessUnit)","floor(unit, n, valuelessUnit)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)","floor(3.241cm, cm)","floor(3.241cm, 2, cm)"],seealso:["ceil","fix","round"]};var zB={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]};var HB={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenuse of a list with values.",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]};var GB={name:"invmod",category:"Arithmetic",syntax:["invmod(a, b)"],description:"Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)",examples:["invmod(8, 12)","invmod(7, 13)","invmod(15151, 15122)"],seealso:["gcd","xgcd"]};var WB={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]};var YB={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log1p","log2","log10"]};var jB={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]};var ZB={name:"log1p",category:"Arithmetic",syntax:["log1p(x)","log1p(x, base)"],description:"Calculate the logarithm of a `value+1`",examples:["log1p(2.5)","exp(log1p(1.4))","pow(10, 4)","log1p(9999, 10)","log1p(9999) / log(10)"],seealso:["exp","log","log2","log10"]};var JB={name:"log2",category:"Arithmetic",syntax:["log2(x)"],description:"Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.",examples:["log2(0.03125)","log2(16)","log2(16) / log2(2)","pow(2, 4)"],seealso:["exp","log1p","log","log10"]};var XB={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]};var QB={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]};var KB={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i)","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)",'norm([[1, 2], [3, 4]], "inf")','norm([[1, 2], [3, 4]], "fro")']};var ek={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["nthRoots","pow","sqrt"]};var tk={name:"nthRoots",category:"Arithmetic",syntax:["nthRoots(A)","nthRoots(A, root)"],description:'Calculate the nth roots of a value. An nth root of a positive real number A, is a positive real solution of the equation "x^root = A". This function returns an array of complex values.',examples:["nthRoots(1)","nthRoots(1, 3)"],seealso:["sqrt","pow","nthRoot"]};var rk={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3","2*2*2","1 + e ^ (pi * i)","pow([[1, 2], [4, 3]], 2)","pow([[1, 2], [4, 3]], -1)"],seealso:["multiply","nthRoot","nthRoots","sqrt"]};var nk={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)","round(unit, valuelessUnit)","round(unit, n, valuelessUnit)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)","round(3.241cm, 2, cm)","round([3.2, 3.8, -4.7])"],seealso:["ceil","floor","fix"]};var ik={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>0, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]};var ak={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","sqrtm","multiply","nthRoot","nthRoots","pow"]};var ok={name:"sqrtm",category:"Arithmetic",syntax:["sqrtm(x)"],description:"Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.",examples:["sqrtm([[33, 24], [48, 57]])"],seealso:["sqrt","abs","square","multiply"]};var sk={name:"sylvester",category:"Algebra",syntax:["sylvester(A,B,C)"],description:"Solves the real-valued Sylvester equation AX+XB=C for X",examples:["sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])","A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]","sylvester(A, B, C)"],seealso:["schur","lyap"]};var uk={name:"schur",category:"Algebra",syntax:["schur(A)"],description:"Performs a real Schur decomposition of the real matrix A = UTU'",examples:["schur([[1, 0], [-4, 3]])","A = [[1, 0], [-4, 3]]","schur(A)"],seealso:["lyap","sylvester"]};var lk={name:"lyap",category:"Algebra",syntax:["lyap(A,Q)"],description:"Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P",examples:["lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])","A = [[-2, 0], [1, -4]]","Q = [[3, 1], [1, 3]]","lyap(A,Q)"],seealso:["schur","sylvester"]};var ck={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]};var fk={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]};var pk={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]};var mk={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]};var dk={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]};var hk={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var gk={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]};var vk={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]};var yk={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]};var bk={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]};var xk={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]};var wk={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]};var _k={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]};var Ak={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]};var Dk={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]};var Sk={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]};var Ek={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]};var Tk={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]};var Mk={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]};var Ck={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]};var Nk={name:"evaluate",category:"Expression",syntax:["evaluate(expression)","evaluate(expression, scope)","evaluate([expr1, expr2, expr3, ...])","evaluate([expr1, expr2, expr3, ...], scope)"],description:"Evaluate an expression or an array with expressions.",examples:['evaluate("2 + 3")','evaluate("sqrt(16)")','evaluate("2 inch to cm")','evaluate("sin(x * pi)", { "x": 1/2 })','evaluate(["width=2", "height=4","width*height"])'],seealso:[]};var Fk={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]};var Ik={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2]])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]};var Bk={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]};var kk={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]};var Pk={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]};var $k={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]};var Ok={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]};var Rk={name:"mapSlices",category:"Matrix",syntax:["mapSlices(A, dim, callback)"],description:"Generate a matrix one dimension less than A by applying callback to each slice of A along dimension dim.",examples:["A = [[1, 2], [3, 4]]","mapSlices(A, 1, sum)","mapSlices(A, 2, prod)"],seealso:["map","forEach"]};var Lk={name:"column",category:"Matrix",syntax:["column(x, index)"],description:"Return a column from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","column(A, 1)","column(A, 2)"],seealso:["row","matrixFromColumns"]};var Vk={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var Uk={name:"count",category:"Matrix",syntax:["count(x)"],description:"Count the number of elements of a matrix, array or string.",examples:["a = [1, 2; 3, 4; 5, 6]","count(a)","size(a)",'count("hello world")'],seealso:["size"]};var qk={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]};var zk={name:"ctranspose",category:"Matrix",syntax:["x'","ctranspose(x)"],description:"Complex Conjugate and Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","ctranspose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var Hk={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var Gk={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","identity","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var Wk={name:"diff",category:"Matrix",syntax:["diff(arr)","diff(arr, dim)"],description:["Create a new matrix or array with the difference of the passed matrix or array.","Dim parameter is optional and used to indicate the dimension of the array/matrix to apply the difference","If no dimension parameter is passed it is assumed as dimension 0","Dimension is zero-based in javascript and one-based in the parser","Arrays must be 'rectangular' meaning arrays like [1, 2]","If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays"],examples:["A = [1, 2, 4, 7, 0]","diff(A)","diff(A, 1)","B = [[1, 2], [3, 4]]","diff(B)","diff(B, 1)","diff(B, 2)","diff(B, bignumber(2))","diff([[1, 2], matrix([3, 4])], 2)"],seealso:["subtract","partitionSelect"]};var Yk={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]};var jk={name:"eigs",category:"Matrix",syntax:["eigs(x)"],description:"Calculate the eigenvalues and optionally eigenvectors of a square matrix",examples:["eigs([[5, 2.3], [2.3, 1]])","eigs([[1, 2, 3], [4, 5, 6], [7, 8, 9]], { precision: 1e-6, eigenvectors: false })"],seealso:["inv"]};var Zk={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]};var Jk={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]};var Xk={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["numberOfPets = {}","addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;",'forEach(["Dog","Cat","Cat"], addPet)',"numberOfPets"],seealso:["map","sort","filter"]};var Qk={name:"getMatrixDataType",category:"Matrix",syntax:["getMatrixDataType(x)"],description:'Find the data type of all elements in a matrix or array, for example "number" if all items are a number and "Complex" if all values are complex numbers. If a matrix contains more than one data type, it will return "mixed".',examples:["getMatrixDataType([1, 2, 3])","getMatrixDataType([[5 cm], [2 inch]])",'getMatrixDataType([1, "text"])',"getMatrixDataType([1, bignumber(4)])"],seealso:["matrix","sparse","typeOf"]};var Kk={name:"identity",category:"Matrix",syntax:["identity(n)","identity(m, n)","identity([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["identity(3)","identity(3, 5)","a = [1, 2, 3; 4, 5, 6]","identity(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var eP={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","identity","ones","range","size","squeeze","subset","trace","transpose","zeros"]};var tP={name:"pinv",category:"Matrix",syntax:["pinv(x)"],description:"Calculate the Moore\u2013Penrose inverse of a matrix",examples:["pinv([1, 2; 3, 4])","pinv([[1, 0], [0, 1], [0, 1]])","pinv(4)"],seealso:["inv"]};var rP={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the Kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]};var nP={name:"map",category:"Matrix",syntax:["map(x, callback)","map(x, y, ..., callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array or the matrices/arrays.",examples:["map([1, 2, 3], square)","map([1, 2], [3, 4], f(a,b) = a + b)"],seealso:["filter","forEach"]};var iP={name:"matrixFromColumns",category:"Matrix",syntax:["matrixFromColumns(...arr)","matrixFromColumns(row1, row2)","matrixFromColumns(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual columns.",examples:["matrixFromColumns([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromRows","matrixFromFunction","zeros"]};var aP={name:"matrixFromFunction",category:"Matrix",syntax:["matrixFromFunction(size, fn)","matrixFromFunction(size, fn, format)","matrixFromFunction(size, fn, format, datatype)","matrixFromFunction(size, format, fn)","matrixFromFunction(size, format, datatype, fn)"],description:"Create a matrix by evaluating a generating function at each index.",examples:["f(I) = I[1] - I[2]","matrixFromFunction([3,3], f)","g(I) = I[1] - I[2] == 1 ? 4 : 0",'matrixFromFunction([100, 100], "sparse", g)',"matrixFromFunction([5], random)"],seealso:["matrix","matrixFromRows","matrixFromColumns","zeros"]};var oP={name:"matrixFromRows",category:"Matrix",syntax:["matrixFromRows(...arr)","matrixFromRows(row1, row2)","matrixFromRows(row1, row2, row3)"],description:"Create a dense matrix from vectors as individual rows.",examples:["matrixFromRows([1, 2, 3], [[4],[5],[6]])"],seealso:["matrix","matrixFromColumns","matrixFromFunction","zeros"]};var sP={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","identity","inv","range","size","squeeze","subset","trace","transpose","zeros"]};var uP={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1, compareText)',"arr = [5, 2, 1]","partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]","arr","partitionSelect(arr, 1, 'desc') # returns 2, arr is now: [5, 2, 1]","arr"],seealso:["sort"]};var lP={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"range(1m, 1m, 3m)","a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","identity","inv","ones","size","squeeze","subset","trace","transpose","zeros"]};var cP={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])","reshape([1, 2, 3, 4], [-1, 2])"],seealso:["size","squeeze","resize"]};var fP={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]};var pP={name:"rotate",category:"Matrix",syntax:["rotate(w, theta)","rotate(w, theta, v)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotate([1, 0], pi / 2)",'rotate(matrix([1, 0]), unit("35deg"))','rotate([1, 0, 0], unit("90deg"), [0, 0, 1])','rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],seealso:["matrix","rotationMatrix"]};var mP={name:"rotationMatrix",category:"Matrix",syntax:["rotationMatrix(theta)","rotationMatrix(theta, v)","rotationMatrix(theta, v, format)"],description:"Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",examples:["rotationMatrix(pi / 2)",'rotationMatrix(unit("45deg"), [0, 0, 1])','rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],seealso:["cos","sin"]};var dP={name:"row",category:"Matrix",syntax:["row(x, index)"],description:"Return a row from a matrix or array.",examples:["A = [[1, 2], [3, 4]]","row(A, 1)","row(A, 2)"],seealso:["column","matrixFromRows"]};var hP={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","count","det","diag","identity","inv","ones","range","squeeze","subset","trace","transpose","zeros"]};var gP={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"], "natural")',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]};var vP={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","identity","inv","ones","range","size","subset","trace","transpose","zeros"]};var yP={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of the entries of a matrix or characters of a string. Indexes are one-based. There should be one index specification for each dimension of the target. Each specification can be a single index, a list of indices, or a range in colon notation `l:u`. In a range, both the lower bound l and upper bound u are included; and if a bound is omitted it defaults to the most extreme valid value. The cartesian product of the indices specified in each dimension determines the target of the operation.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]","f[[1,2], [1,3]] = [9, 10; 11, 12]","f"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","trace","transpose","zeros"]};var bP={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","transpose","zeros"]};var xP={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","zeros"]};var wP={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","identity","inv","ones","range","size","squeeze","subset","trace","transpose"]};var _P={name:"fft",category:"Matrix",syntax:["fft(x)"],description:"Calculate N-dimensional Fourier transform",examples:["fft([[1, 0], [1, 0]])"],seealso:["ifft"]};var AP={name:"ifft",category:"Matrix",syntax:["ifft(x)"],description:"Calculate N-dimensional inverse Fourier transform",examples:["ifft([[2, 2], [0, 0]])"],seealso:["fft"]};var DP={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["combinationsWithRep","permutations","factorial"]};var SP={name:"combinationsWithRep",category:"Probability",syntax:["combinationsWithRep(n, k)"],description:"Compute the number of combinations of n items taken k at a time with replacements.",examples:["combinationsWithRep(7, 5)"],seealso:["combinations","permutations","factorial"]};var EP={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","combinationsWithRep","permutations","gamma"]};var TP={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]};var MP={name:"lgamma",category:"Probability",syntax:["lgamma(n)"],description:"Logarithm of the gamma function for real, positive numbers and complex numbers, using Lanczos approximation for numbers and Stirling series for complex numbers.",examples:["lgamma(4)","lgamma(1/2)","lgamma(i)","lgamma(complex(1.1, 2))"],seealso:["gamma"]};var CP={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]};var NP={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]};var FP={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","combinationsWithRep","factorial"]};var IP={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]};var BP={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]};var kP={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]};var PP={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural","compareText"]};var $P={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare","compareText"]};var OP={name:"compareText",category:"Relational",syntax:["compareText(x, y)"],description:"Compare two strings lexically. Comparison is case sensitive. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",examples:['compareText("B", "A")','compareText("A", "B")','compareText("A", "A")','compareText("2", "10")','compare("2", "10")',"compare(2, 10)",'compareNatural("2", "10")','compareText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural"]};var RP={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]};var LP={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual","equalText"]};var VP={name:"equalText",category:"Relational",syntax:["equalText(x, y)"],description:"Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.",examples:['equalText("Hello", "Hello")','equalText("a", "A")','equal("2e3", "2000")','equalText("2e3", "2000")','equalText("B", ["A", "B", "C"])'],seealso:["compare","compareNatural","compareText","equal"]};var UP={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not. Comparing a value with NaN returns false.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]};var qP={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]};var zP={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not. Comparing a value with NaN returns false.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]};var HP={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]};var GP={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]};var WP={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]};var YP={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]};var jP={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]};var ZP={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]};var JP={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]};var XP={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]};var QP={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]};var KP={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]};var e$={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]};var t$={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]};var r$={name:"zpk2tf",category:"Signal",syntax:["zpk2tf(z, p, k)"],description:"Compute the transfer function of a zero-pole-gain model.",examples:["zpk2tf([1, 2], [-1, -2], 1)","zpk2tf([1, 2], [-1, -2])","zpk2tf([1 - 3i, 2 + 2i], [-1, -2])"],seealso:[]};var n$={name:"freqz",category:"Signal",syntax:["freqz(b, a)","freqz(b, a, w)"],description:"Calculates the frequency response of a filter given its numerator and denominator coefficients.",examples:["freqz([1, 2], [1, 2, 3])","freqz([1, 2], [1, 2, 3], [0, 1])","freqz([1, 2], [1, 2, 3], 512)"],seealso:[]};var i$={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]};var a$={name:"zeta",category:"Special",syntax:["zeta(s)"],description:"Compute the Riemann Zeta Function using an infinite series and Riemann's Functional Equation for the entire complex plane",examples:["zeta(0.2)","zeta(-0.5)","zeta(4)"],seealso:[]};var o$={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]};var s$={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dimension)"],description:"Compute the maximum value of a list of values. If any NaN values are found, the function yields the last NaN in the input.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","variance"]};var u$={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dimension)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","variance"]};var l$={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","variance","quantileSeq"]};var c$={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dimension)"],description:"Compute the minimum value of a list of values. If any NaN values are found, the function yields the last NaN in the input.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","variance"]};var f$={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","variance"]};var p$={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","variance"]};var m$={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:`Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probability are: Number, BigNumber. -In case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.`,examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","variance"]};var f4={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, dimension)","std(A, normalization)","std(A, dimension, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","prod","sum","variance"]};var p4={name:"cumsum",category:"Statistics",syntax:["cumsum(a, b, c, ...)","cumsum(A)"],description:"Compute the cumulative sum of all values.",examples:["cumsum(2, 3, 4, 1)","cumsum([2, 3, 4, 1])","cumsum([1, 2; 3, 4])","cumsum([1, 2; 3, 4], 1)","cumsum([1, 2; 3, 4], 2)"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var m4={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)","sum(A, dimension)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var d4={name:"variance",category:"Statistics",syntax:["variance(a, b, c, ...)","variance(A)","variance(A, dimension)","variance(A, normalization)","variance(A, dimension, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["variance(2, 4, 6)","variance([2, 4, 6, 8])",'variance([2, 4, 6, 8], "uncorrected")','variance([2, 4, 6, 8], "biased")',"variance([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]};var h4={name:"corr",category:"Statistics",syntax:["corr(A,B)"],description:"Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.",examples:["corr([2, 4, 6, 8],[1, 2, 3, 6])","corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))"],seealso:["max","mean","min","median","min","prod","std","sum"]};var g4={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]};var v4={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]};var y4={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]};var x4={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the inverse hyperbolic tangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]};var b4={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]};var w4={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the inverse hyperbolic cosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]};var _4={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]};var A4={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]};var S4={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]};var E4={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]};var T4={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]};var D4={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]};var M4={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]};var C4={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]};var N4={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]};var F4={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]};var I4={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]};var P4={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]};var B4={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]};var k4={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]};var $4={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]};var O4={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]};var R4={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]};var L4={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]};var V4={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]};var U4={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]};var q4={name:"bin",category:"Utils",syntax:["bin(value)"],description:"Format a number as binary",examples:["bin(2)"],seealso:["oct","hex"]};var z4={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables, and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]};var H4={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]};var G4={name:"hasNumericValue",category:"Utils",syntax:["hasNumericValue(x)"],description:"Test whether a value is an numeric value. In case of a string, true is returned if the string contains a numeric value.",examples:["hasNumericValue(2)",'hasNumericValue("2")','isNumeric("2")',"hasNumericValue(0)","hasNumericValue(bignumber(500))","hasNumericValue(fraction(0.125))","hasNumericValue(2 + 3i)",'hasNumericValue([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","isNumeric"]};var W4={name:"hex",category:"Utils",syntax:["hex(value)"],description:"Format a number as hexadecimal",examples:["hex(240)"],seealso:["bin","oct"]};var Y4={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var j4={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var Z4={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]};var J4={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)",'isNumeric("2")','hasNumericValue("2")',"isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))","isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","hasNumericValue"]};var X4={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var Q4={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var K4={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]};var eV={name:"numeric",category:"Utils",syntax:["numeric(x)"],description:"Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.",examples:['numeric("4")','numeric("4", "number")','numeric("4", "bigint")','numeric("4", "BigNumber")','numeric("4", "Fraction")','numeric(4, "Fraction")','numeric(fraction(2, 5), "number")'],seealso:["number","bigint","fraction","bignumber","string","format"]};var tV={name:"oct",category:"Utils",syntax:["oct(value)"],description:"Format a number as octal",examples:["oct(56)"],seealso:["bin","hex"]};var rV={name:"print",category:"Utils",syntax:["print(template, values)","print(template, values, precision)"],description:"Interpolate values into a string template.",examples:['print("Lucy is $age years old", {age: 5})','print("The value of pi is $pi", {pi: pi}, 3)','print("Hello, $user.name!", {user: {name: "John"}})','print("Values: $1, $2, $3", [6, 9, 4])'],seealso:["format"]};var nV={name:"typeOf",category:"Utils",syntax:["typeOf(x)"],description:"Get the type of a variable.",examples:["typeOf(3.5)","typeOf(2 - 4i)","typeOf(45 deg)",'typeOf("hello world")'],seealso:["getMatrixDataType"]};var iV={name:"solveODE",category:"Numeric",syntax:["solveODE(func, tspan, y0)","solveODE(func, tspan, y0, options)"],description:"Numerical Integration of Ordinary Differential Equations.",examples:["f(t,y) = y","tspan = [0, 4]","solveODE(f, tspan, 1)","solveODE(f, tspan, [1, 2])",'solveODE(f, tspan, 1, { method:"RK23", maxStep:0.1 })'],seealso:["derivative","simplifyCore"]};var aV={bignumber:jO,bigint:ZO,boolean:JO,complex:XO,createUnit:QO,fraction:KO,index:eR,matrix:tR,number:rR,sparse:nR,splitUnit:iR,string:aR,unit:oR,e:jS,E:jS,false:PO,i:BO,Infinity:kO,LN2:OO,LN10:$O,LOG2E:LO,LOG10E:RO,NaN:VO,null:UO,pi:ZS,PI:ZS,phi:qO,SQRT1_2:zO,SQRT2:HO,tau:GO,true:WO,version:YO,speedOfLight:{description:"Speed of light in vacuum",examples:["speedOfLight"]},gravitationConstant:{description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},planckConstant:{description:"Planck constant",examples:["planckConstant"]},reducedPlanckConstant:{description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},magneticConstant:{description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},electricConstant:{description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},vacuumImpedance:{description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},coulomb:{description:"Coulomb's constant",examples:["coulomb"]},elementaryCharge:{description:"Elementary charge",examples:["elementaryCharge"]},bohrMagneton:{description:"Bohr magneton",examples:["bohrMagneton"]},conductanceQuantum:{description:"Conductance quantum",examples:["conductanceQuantum"]},inverseConductanceQuantum:{description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},magneticFluxQuantum:{description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},nuclearMagneton:{description:"Nuclear magneton",examples:["nuclearMagneton"]},klitzing:{description:"Von Klitzing constant",examples:["klitzing"]},bohrRadius:{description:"Bohr radius",examples:["bohrRadius"]},classicalElectronRadius:{description:"Classical electron radius",examples:["classicalElectronRadius"]},electronMass:{description:"Electron mass",examples:["electronMass"]},fermiCoupling:{description:"Fermi coupling constant",examples:["fermiCoupling"]},fineStructure:{description:"Fine-structure constant",examples:["fineStructure"]},hartreeEnergy:{description:"Hartree energy",examples:["hartreeEnergy"]},protonMass:{description:"Proton mass",examples:["protonMass"]},deuteronMass:{description:"Deuteron Mass",examples:["deuteronMass"]},neutronMass:{description:"Neutron mass",examples:["neutronMass"]},quantumOfCirculation:{description:"Quantum of circulation",examples:["quantumOfCirculation"]},rydberg:{description:"Rydberg constant",examples:["rydberg"]},thomsonCrossSection:{description:"Thomson cross section",examples:["thomsonCrossSection"]},weakMixingAngle:{description:"Weak mixing angle",examples:["weakMixingAngle"]},efimovFactor:{description:"Efimov factor",examples:["efimovFactor"]},atomicMass:{description:"Atomic mass constant",examples:["atomicMass"]},avogadro:{description:"Avogadro's number",examples:["avogadro"]},boltzmann:{description:"Boltzmann constant",examples:["boltzmann"]},faraday:{description:"Faraday constant",examples:["faraday"]},firstRadiation:{description:"First radiation constant",examples:["firstRadiation"]},loschmidt:{description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},gasConstant:{description:"Gas constant",examples:["gasConstant"]},molarPlanckConstant:{description:"Molar Planck constant",examples:["molarPlanckConstant"]},molarVolume:{description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},sackurTetrode:{description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},secondRadiation:{description:"Second radiation constant",examples:["secondRadiation"]},stefanBoltzmann:{description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},wienDisplacement:{description:"Wien displacement law constant",examples:["wienDisplacement"]},molarMass:{description:"Molar mass constant",examples:["molarMass"]},molarMassC12:{description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},gravity:{description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},planckLength:{description:"Planck length",examples:["planckLength"]},planckMass:{description:"Planck mass",examples:["planckMass"]},planckTime:{description:"Planck time",examples:["planckTime"]},planckCharge:{description:"Planck charge",examples:["planckCharge"]},planckTemperature:{description:"Planck temperature",examples:["planckTemperature"]},derivative:cR,lsolve:pR,lsolveAll:mR,lup:dR,lusolve:hR,leafCount:fR,polynomialRoot:gR,resolve:xR,simplify:bR,simplifyConstant:wR,simplifyCore:_R,symbolicEqual:SR,rationalize:yR,slu:AR,usolve:ER,usolveAll:TR,qr:vR,abs:DR,add:MR,cbrt:CR,ceil:NR,cube:FR,divide:IR,dotDivide:PR,dotMultiply:BR,dotPow:kR,exp:$R,expm:OR,expm1:RR,fix:LR,floor:VR,gcd:UR,hypot:qR,lcm:HR,log:GR,log2:jR,log1p:YR,log10:WR,mod:ZR,multiply:JR,norm:XR,nthRoot:QR,nthRoots:KR,pow:eL,round:tL,sign:rL,sqrt:nL,sqrtm:iL,square:uL,subtract:lL,unaryMinus:cL,unaryPlus:fL,xgcd:pL,invmod:zR,bitAnd:mL,bitNot:dL,bitOr:hL,bitXor:gL,leftShift:vL,rightArithShift:yL,rightLogShift:xL,bellNumbers:bL,catalan:wL,composition:_L,stirlingS2:AL,config:sR,import:uR,typed:lR,arg:SL,conj:EL,re:DL,im:TL,evaluate:ML,help:CL,distance:NL,intersect:FL,and:IL,not:PL,or:BL,xor:kL,concat:OL,count:RL,cross:LL,column:$L,ctranspose:VL,det:UL,diag:qL,diff:zL,dot:HL,getMatrixDataType:ZL,identity:JL,filter:WL,flatten:YL,forEach:jL,inv:XL,pinv:QL,eigs:GL,kron:KL,matrixFromFunction:r3,matrixFromRows:n3,matrixFromColumns:t3,map:e3,ones:i3,partitionSelect:a3,range:o3,resize:u3,reshape:s3,rotate:l3,rotationMatrix:c3,row:f3,size:p3,sort:m3,squeeze:d3,subset:h3,trace:g3,transpose:v3,zeros:y3,fft:x3,ifft:b3,sylvester:aL,schur:oL,lyap:sL,solveODE:iV,combinations:w3,combinationsWithRep:_3,factorial:A3,gamma:S3,kldivergence:T3,lgamma:E3,multinomial:D3,permutations:M3,pickRandom:C3,random:N3,randomInt:F3,compare:I3,compareNatural:P3,compareText:B3,deepEqual:k3,equal:$3,equalText:O3,larger:R3,largerEq:L3,smaller:V3,smallerEq:U3,unequal:q3,setCartesian:z3,setDifference:H3,setDistinct:G3,setIntersect:W3,setIsSubset:Y3,setMultiplicity:j3,setPowerset:Z3,setSize:J3,setSymDifference:X3,setUnion:Q3,zpk2tf:K3,freqz:e4,erf:t4,zeta:r4,cumsum:p4,mad:n4,max:i4,mean:a4,median:o4,min:s4,mode:u4,prod:l4,quantileSeq:c4,std:f4,sum:m4,variance:d4,corr:h4,acos:g4,acosh:v4,acot:y4,acoth:x4,acsc:b4,acsch:w4,asec:_4,asech:A4,asin:S4,asinh:E4,atan:T4,atanh:M4,atan2:D4,cos:C4,cosh:N4,cot:F4,coth:I4,csc:P4,csch:B4,sec:k4,sech:$4,sin:O4,sinh:R4,tan:L4,tanh:V4,to:U4,clone:z4,format:H4,bin:q4,oct:tV,hex:W4,isNaN:j4,isInteger:Y4,isNegative:Z4,isNumeric:J4,hasNumericValue:G4,isPositive:X4,isPrime:Q4,isZero:K4,print:rV,typeOf:nV,numeric:eV};var oV="help",Wre=["typed","mathWithTransform","Help"],JS=M(oV,Wre,t=>{var{typed:e,mathWithTransform:r,Help:n}=t;return e(oV,{any:function(a){var o,s=a;if(typeof a!="string"){for(o in r)if(st(r,o)&&a===r[o]){s=o;break}}var l=rn(aV,s);if(!l){var u=typeof s=="function"?s.name:s;throw new Error('No documentation found on "'+u+'"')}return new n(l)}})});var sV="chain",Yre=["typed","Chain"],XS=M(sV,Yre,t=>{var{typed:e,Chain:r}=t;return e(sV,{"":function(){return new r},any:function(i){return new r(i)}})});var uV="det",jre=["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],QS=M(uV,jre,t=>{var{typed:e,matrix:r,subtractScalar:n,multiply:i,divideScalar:a,isZero:o,unaryMinus:s}=t;return e(uV,{any:function(c){return yt(c)},"Array | Matrix":function(c){var f;switch(rt(c)?f=c.size():Array.isArray(c)?(c=r(c),f=c.size()):f=[],f.length){case 0:return yt(c);case 1:if(f[0]===1)return yt(c.valueOf()[0]);if(f[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Dt(f)+")");case 2:{var m=f[0],p=f[1];if(m===p)return l(c.clone().valueOf(),m,p);if(p===0)return 1;throw new RangeError("Matrix must be square (size: "+Dt(f)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(f)+")")}}});function l(u,c,f){if(c===1)return yt(u[0][0]);if(c===2)return n(i(u[0][0],u[1][1]),i(u[1][0],u[0][1]));for(var m=!1,p=new Array(c).fill(0).map((E,D)=>D),d=0;d{var{typed:e,matrix:r,divideScalar:n,addScalar:i,multiply:a,unaryMinus:o,det:s,identity:l,abs:u}=t;return e(lV,{"Array | Matrix":function(m){var p=rt(m)?m.size():pt(m);switch(p.length){case 1:if(p[0]===1)return rt(m)?r([n(1,m.valueOf()[0])]):[n(1,m[0])];throw new RangeError("Matrix must be square (size: "+Dt(p)+")");case 2:{var d=p[0],h=p[1];if(d===h)return rt(m)?r(c(m.valueOf(),d,h),m.storage()):c(m,d,h);throw new RangeError("Matrix must be square (size: "+Dt(p)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(p)+")")}},any:function(m){return n(1,m)}});function c(f,m,p){var d,h,x,b,T;if(m===1){if(b=f[0][0],b===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(1,b)]]}else if(m===2){var v=s(f);if(v===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(f[1][1],v),n(o(f[0][1]),v)],[n(o(f[1][0]),v),n(f[0][0],v)]]}else{var A=f.concat();for(d=0;dE&&(E=u(A[d][y]),D=d),d++;if(E===0)throw Error("Cannot calculate inverse, determinant is zero");d=D,d!==y&&(T=A[y],A[y]=A[d],A[d]=T,T=w[y],w[y]=w[d],w[d]=T);var _=A[y],N=w[y];for(d=0;d{var{typed:e,matrix:r,inv:n,deepEqual:i,equal:a,dotDivide:o,dot:s,ctranspose:l,divideScalar:u,multiply:c,add:f,Complex:m}=t;return e(cV,{"Array | Matrix":function(v){var A=rt(v)?v.size():pt(v);switch(A.length){case 1:return b(v)?l(v):A[0]===1?n(v):o(l(v),s(v,v));case 2:{if(b(v))return l(v);var w=A[0],y=A[1];if(w===y)try{return n(v)}catch(E){if(!(E instanceof Error&&E.message.match(/Cannot calculate inverse, determinant is zero/)))throw E}return rt(v)?r(p(v.valueOf(),w,y),v.storage()):p(v,w,y)}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(A)+")")}},any:function(v){return a(v,0)?yt(v):u(1,v)}});function p(T,v,A){var{C:w,F:y}=h(T,v,A),E=c(n(c(l(w),w)),l(w)),D=c(l(y),n(c(y,l(y))));return c(D,E)}function d(T,v,A){for(var w=yt(T),y=0,E=0;ED.filter((N,C)=>C!x(s(w[_],w[_])));return{C:y,F:E}}function x(T){return a(f(T,m(1,1)),f(0,m(1,1)))}function b(T){return i(f(T,m(1,1)),f(c(T,0),m(1,1)))}});function fV(t){var{addScalar:e,subtract:r,flatten:n,multiply:i,multiplyScalar:a,divideScalar:o,sqrt:s,abs:l,bignumber:u,diag:c,size:f,reshape:m,inv:p,qr:d,usolve:h,usolveAll:x,equal:b,complex:T,larger:v,smaller:A,matrixFromColumns:w,dot:y}=t;function E(J,U,de,we){var se=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,be=D(J,U,de,we,se);_(J,U,de,we,se,be);var{values:K,C:j}=N(J,U,de,we,se);if(se){var ne=C(J,U,j,be,K,de,we);return{values:K,eigenvectors:ne}}return{values:K}}function D(J,U,de,we,se){var be=we==="BigNumber",K=we==="Complex",j=be?u(0):0,ne=be?u(1):K?T(1):1,pe=be?u(1):1,fe=be?u(10):2,Ae=a(fe,fe),_e;se&&(_e=Array(U).fill(ne));for(var G=!1;!G;){G=!0;for(var Z=0;Z1&&(G=c(Array(fe-1).fill(j)))),fe-=1,ne.pop();for(var et=0;et2&&(G=c(Array(fe-2).fill(j)))),fe-=2,ne.pop(),ne.pop();for(var Ye=0;Ye+r(l(He),l(at))),Z>100){var ur=Error("The eigenvalues failed to converge. Only found these eigenvalues: "+pe.join(", "));throw ur.values=pe,ur.vectors=[],ur}var Jt=se?i(_e,L(Ae,U)):void 0;return{values:pe,C:Jt}}function C(J,U,de,we,se,be,K){var j=p(de),ne=i(j,J,de),pe=K==="BigNumber",fe=K==="Complex",Ae=pe?u(0):fe?T(0):0,_e=pe?u(1):fe?T(1):1,G=[],Z=[];for(var ge of se){var xe=P(G,ge,b);xe===-1?(G.push(ge),Z.push(1)):Z[xe]+=1}for(var Ee=[],Be=G.length,Ve=Array(U).fill(Ae),et=c(Array(U).fill(_e)),St=function(){var Jt=G[Ye],He=r(ne,i(Jt,et)),at=x(He,Ve);for(at.shift();at.lengthi(me,he)),Ee.push(...at.map(he=>({value:Jt,vector:n(he)})))},Ye=0;Ye=5)return null;for(j=0;;){var ne=h(J,K);if(A(X(O(K,[ne])),we))break;if(++j>=10)return null;K=ae(ne)}return K}function W(J,U,de){var we=de==="BigNumber",se=de==="Complex",be=Array(J).fill(0).map(K=>2*Math.random()-1);return we&&(be=be.map(K=>u(K))),se&&(be=be.map(K=>T(K))),be=O(be,U),ae(be,de)}function O(J,U){var de=f(J);for(var we of U)we=m(we,de),J=r(J,i(o(y(we,J),y(we,we)),we));return J}function X(J){return l(s(y(J,J)))}function ae(J,U){var de=U==="BigNumber",we=U==="Complex",se=de?u(1):we?T(1):1;return i(o(se,X(J)),J)}return E}function pV(t){var{config:e,addScalar:r,subtract:n,abs:i,atan:a,cos:o,sin:s,multiplyScalar:l,inv:u,bignumber:c,multiply:f,add:m}=t;function p(_,N){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.relTol,B=arguments.length>3?arguments[3]:void 0,R=arguments.length>4?arguments[4]:void 0;if(B==="number")return d(_,C,R);if(B==="BigNumber")return h(_,C,R);throw TypeError("Unsupported data type: "+B)}function d(_,N,C){var B=_.length,R=Math.abs(N/B),V,L;if(C){L=new Array(B);for(var P=0;P=Math.abs(R);){var W=k[0][0],O=k[0][1];V=x(_[W][W],_[O][O],_[W][O]),_=w(_,V,W,O),C&&(L=T(L,V,W,O)),k=y(_)}for(var X=Array(B).fill(0),ae=0;ae=i(R);){var W=k[0][0],O=k[0][1];V=b(_[W][W],_[O][O],_[W][O]),_=A(_,V,W,O),C&&(L=v(L,V,W,O)),k=E(_)}for(var X=Array(B).fill(0),ae=0;ae({value:R[U],vector:J}));return{values:R,eigenvectors:ae}}return p}var Xre="eigs",Qre=["config","typed","matrix","addScalar","equal","subtract","abs","atan","cos","sin","multiplyScalar","divideScalar","inv","bignumber","multiply","add","larger","column","flatten","number","complex","sqrt","diag","size","reshape","qr","usolve","usolveAll","im","re","smaller","matrixFromColumns","dot"],tE=M(Xre,Qre,t=>{var{config:e,typed:r,matrix:n,addScalar:i,subtract:a,equal:o,abs:s,atan:l,cos:u,sin:c,multiplyScalar:f,divideScalar:m,inv:p,bignumber:d,multiply:h,add:x,larger:b,column:T,flatten:v,number:A,complex:w,sqrt:y,diag:E,size:D,reshape:_,qr:N,usolve:C,usolveAll:B,im:R,re:V,smaller:L,matrixFromColumns:P,dot:k}=t,W=pV({config:e,addScalar:i,subtract:a,column:T,flatten:v,equal:o,abs:s,atan:l,cos:u,sin:c,multiplyScalar:f,inv:p,bignumber:d,complex:w,multiply:h,add:x}),O=fV({config:e,addScalar:i,subtract:a,multiply:h,multiplyScalar:f,flatten:v,divideScalar:m,sqrt:y,abs:s,bignumber:d,diag:E,size:D,reshape:_,qr:N,inv:p,usolve:C,usolveAll:B,equal:o,complex:w,larger:b,smaller:L,matrixFromColumns:P,dot:k});return r("eigs",{Array:function(be){return X(n(be))},"Array, number|BigNumber":function(be,K){return X(n(be),{precision:K})},"Array, Object"(se,be){return X(n(se),be)},Matrix:function(be){return X(be,{matricize:!0})},"Matrix, number|BigNumber":function(be,K){return X(be,{precision:K,matricize:!0})},"Matrix, Object":function(be,K){var j={matricize:!0};return sn(j,K),X(be,j)}});function X(se){var be,K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},j="eigenvectors"in K?K.eigenvectors:!0,ne=(be=K.precision)!==null&&be!==void 0?be:e.relTol,pe=ae(se,ne,j);return K.matricize&&(pe.values=n(pe.values),j&&(pe.eigenvectors=pe.eigenvectors.map(fe=>{var{value:Ae,vector:_e}=fe;return{value:Ae,vector:n(_e)}}))),j&&Object.defineProperty(pe,"vectors",{enumerable:!1,get:()=>{throw new Error("eigs(M).vectors replaced with eigs(M).eigenvectors")}}),pe}function ae(se,be,K){var j=se.toArray(),ne=se.size();if(ne.length!==2||ne[0]!==ne[1])throw new RangeError("Matrix must be square (size: ".concat(Dt(ne),")"));var pe=ne[0];if(U(j,pe,be)&&(de(j,pe),J(j,pe,be))){var fe=we(se,j,pe);return W(j,pe,be,fe,K)}var Ae=we(se,j,pe);return O(j,pe,be,Ae,K)}function J(se,be,K){for(var j=0;j{var{typed:e,abs:r,add:n,identity:i,inv:a,multiply:o}=t;return e(mV,{Matrix:function(f){var m=f.size();if(m.length!==2||m[0]!==m[1])throw new RangeError("Matrix must be square (size: "+Dt(m)+")");for(var p=m[0],d=1e-15,h=s(f),x=l(h,d),b=x.q,T=x.j,v=o(f,Math.pow(2,-T)),A=i(p),w=i(p),y=1,E=v,D=-1,_=1;_<=b;_++)_>1&&(E=o(E,v),D=-D),y=y*(b-_+1)/((2*b-_+1)*_),A=n(A,o(y,E)),w=n(w,o(y*D,E));for(var N=o(a(w),A),C=0;C{var{typed:e,abs:r,add:n,multiply:i,map:a,sqrt:o,subtract:s,inv:l,size:u,max:c,identity:f}=t,m=1e3,p=1e-6;function d(h){var x,b=0,T=h,v=f(u(h));do{var A=T;if(T=i(.5,n(A,l(v))),v=i(.5,n(v,l(A))),x=c(r(s(T,A))),x>p&&++b>m)throw new Error("computing square root of matrix: iterative method could not converge")}while(x>p);return T}return e(dV,{"Array | Matrix":function(x){var b=rt(x)?x.size():pt(x);switch(b.length){case 1:if(b[0]===1)return a(x,o);throw new RangeError("Matrix must be square (size: "+Dt(b)+")");case 2:{var T=b[0],v=b[1];if(T===v)return d(x);throw new RangeError("Matrix must be square (size: "+Dt(b)+")")}default:throw new RangeError("Matrix must be at most two dimensional (size: "+Dt(b)+")")}}})});var hV="sylvester",tne=["typed","schur","matrixFromColumns","matrix","multiply","range","concat","transpose","index","subset","add","subtract","identity","lusolve","abs"],iE=M(hV,tne,t=>{var{typed:e,schur:r,matrixFromColumns:n,matrix:i,multiply:a,range:o,concat:s,transpose:l,index:u,subset:c,add:f,subtract:m,identity:p,lusolve:d,abs:h}=t;return e(hV,{"Matrix, Matrix, Matrix":x,"Array, Matrix, Matrix":function(T,v,A){return x(i(T),v,A)},"Array, Array, Matrix":function(T,v,A){return x(i(T),i(v),A)},"Array, Matrix, Array":function(T,v,A){return x(i(T),v,i(A))},"Matrix, Array, Matrix":function(T,v,A){return x(T,i(v),A)},"Matrix, Array, Array":function(T,v,A){return x(T,i(v),i(A))},"Matrix, Matrix, Array":function(T,v,A){return x(T,v,i(A))},"Array, Array, Array":function(T,v,A){return x(i(T),i(v),i(A)).toArray()}});function x(b,T,v){for(var A=T.size()[0],w=b.size()[0],y=r(b),E=y.T,D=y.U,_=r(a(-1,T)),N=_.T,C=_.U,B=a(a(l(D),v),C),R=o(0,w),V=[],L=(fe,Ae)=>s(fe,Ae,1),P=(fe,Ae)=>s(fe,Ae,0),k=0;k1e-5){for(var W=P(c(B,u(R,k)),c(B,u(R,k+1))),O=0;O{var{typed:e,matrix:r,identity:n,multiply:i,qr:a,norm:o,subtract:s}=t;return e(gV,{Array:function(c){var f=l(r(c));return{U:f.U.valueOf(),T:f.T.valueOf()}},Matrix:function(c){return l(c)}});function l(u){var c=u.size()[0],f=u,m=n(c),p=0,d;do{d=f;var h=a(f),x=h.Q,b=h.R;if(f=i(b,x),m=i(m,x),p++>100)break}while(o(s(f,d))>1e-4);return{U:m,T:f}}});var vV="lyap",nne=["typed","matrix","sylvester","multiply","transpose"],oE=M(vV,nne,t=>{var{typed:e,matrix:r,sylvester:n,multiply:i,transpose:a}=t;return e(vV,{"Matrix, Matrix":function(s,l){return n(s,a(s),i(-1,l))},"Array, Matrix":function(s,l){return n(r(s),a(r(s)),i(-1,l))},"Matrix, Array":function(s,l){return n(s,a(r(s)),r(i(-1,l)))},"Array, Array":function(s,l){return n(r(s),a(r(s)),r(i(-1,l))).toArray()}})});var ine="divide",ane=["typed","matrix","multiply","equalScalar","divideScalar","inv"],sE=M(ine,ane,t=>{var{typed:e,matrix:r,multiply:n,equalScalar:i,divideScalar:a,inv:o}=t,s=Pr({typed:e,equalScalar:i}),l=Fn({typed:e});return e("divide",Cg({"Array | Matrix, Array | Matrix":function(c,f){return n(c,o(f))},"DenseMatrix, any":function(c,f){return l(c,f,a,!1)},"SparseMatrix, any":function(c,f){return s(c,f,a,!1)},"Array, any":function(c,f){return l(r(c),f,a,!1).valueOf()},"any, Array | Matrix":function(c,f){return n(c,o(f))}},a.signatures))});var yV="distance",one=["typed","addScalar","subtractScalar","divideScalar","multiplyScalar","deepEqual","sqrt","abs"],uE=M(yV,one,t=>{var{typed:e,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:a,deepEqual:o,sqrt:s,abs:l}=t;return e(yV,{"Array, Array, Array":function(w,y,E){if(w.length===2&&y.length===2&&E.length===2){if(!c(w))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!c(y))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!c(E))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(o(y,E))throw new TypeError("LinePoint1 should not be same with LinePoint2");var D=n(E[1],y[1]),_=n(y[0],E[0]),N=n(i(E[0],y[1]),i(y[0],E[1]));return x(w[0],w[1],D,_,N)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(w,y,E){if(Object.keys(w).length===2&&Object.keys(y).length===2&&Object.keys(E).length===2){if(!c(w))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!c(y))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers");if(!c(E))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers");if(o(d(y),d(E)))throw new TypeError("LinePoint1 should not be same with LinePoint2");if("pointX"in w&&"pointY"in w&&"lineOnePtX"in y&&"lineOnePtY"in y&&"lineTwoPtX"in E&&"lineTwoPtY"in E){var D=n(E.lineTwoPtY,y.lineOnePtY),_=n(y.lineOnePtX,E.lineTwoPtX),N=n(i(E.lineTwoPtX,y.lineOnePtY),i(y.lineOnePtX,E.lineTwoPtY));return x(w.pointX,w.pointY,D,_,N)}else throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(w,y){if(w.length===2&&y.length===3){if(!c(w))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!f(y))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");return x(w[0],w[1],y[0],y[1],y[2])}else if(w.length===3&&y.length===6){if(!f(w))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!p(y))throw new TypeError("Array with 6 numbers or BigNumbers expected for second argument");return b(w[0],w[1],w[2],y[0],y[1],y[2],y[3],y[4],y[5])}else if(w.length===y.length&&w.length>0){if(!m(w))throw new TypeError("All values of an array should be numbers or BigNumbers");if(!m(y))throw new TypeError("All values of an array should be numbers or BigNumbers");return T(w,y)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(w,y){if(Object.keys(w).length===2&&Object.keys(y).length===3){if(!c(w))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!f(y))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers");if("pointX"in w&&"pointY"in w&&"xCoeffLine"in y&&"yCoeffLine"in y&&"constant"in y)return x(w.pointX,w.pointY,y.xCoeffLine,y.yCoeffLine,y.constant);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===3&&Object.keys(y).length===6){if(!f(w))throw new TypeError("Values of pointX, pointY and pointZ should be numbers or BigNumbers");if(!p(y))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers or BigNumbers");if("pointX"in w&&"pointY"in w&&"x0"in y&&"y0"in y&&"z0"in y&&"a"in y&&"b"in y&&"c"in y)return b(w.pointX,w.pointY,w.pointZ,y.x0,y.y0,y.z0,y.a,y.b,y.c);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===2&&Object.keys(y).length===2){if(!c(w))throw new TypeError("Values of pointOneX and pointOneY should be numbers or BigNumbers");if(!c(y))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers or BigNumbers");if("pointOneX"in w&&"pointOneY"in w&&"pointTwoX"in y&&"pointTwoY"in y)return T([w.pointOneX,w.pointOneY],[y.pointTwoX,y.pointTwoY]);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===3&&Object.keys(y).length===3){if(!f(w))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers");if(!f(y))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers");if("pointOneX"in w&&"pointOneY"in w&&"pointOneZ"in w&&"pointTwoX"in y&&"pointTwoY"in y&&"pointTwoZ"in y)return T([w.pointOneX,w.pointOneY,w.pointOneZ],[y.pointTwoX,y.pointTwoY,y.pointTwoZ]);throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},Array:function(w){if(!h(w))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return v(w)}});function u(A){return typeof A=="number"||ft(A)}function c(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])}function f(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])&&u(A[2])}function m(A){return Array.isArray(A)||(A=d(A)),A.every(u)}function p(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])&&u(A[2])&&u(A[3])&&u(A[4])&&u(A[5])}function d(A){for(var w=Object.keys(A),y=[],E=0;Ew.length!==2||!u(w[0])||!u(w[1])))return!1}else if(A[0].length===3&&u(A[0][0])&&u(A[0][1])&&u(A[0][2])){if(A.some(w=>w.length!==3||!u(w[0])||!u(w[1])||!u(w[2])))return!1}else return!1;return!0}function x(A,w,y,E,D){var _=l(r(r(i(y,A),i(E,w)),D)),N=s(r(i(y,y),i(E,E)));return a(_,N)}function b(A,w,y,E,D,_,N,C,B){var R=[n(i(n(D,w),B),i(n(_,y),C)),n(i(n(_,y),N),i(n(E,A),B)),n(i(n(E,A),C),i(n(D,w),N))];R=s(r(r(i(R[0],R[0]),i(R[1],R[1])),i(R[2],R[2])));var V=s(r(r(i(N,N),i(C,C)),i(B,B)));return a(R,V)}function T(A,w){for(var y=A.length,E=0,D=0,_=0;_{var{typed:e,config:r,abs:n,add:i,addScalar:a,matrix:o,multiply:s,multiplyScalar:l,divideScalar:u,subtract:c,smaller:f,equalScalar:m,flatten:p,isZero:d,isNumeric:h}=t;return e("intersect",{"Array, Array, Array":x,"Array, Array, Array, Array":b,"Matrix, Matrix, Matrix":function(C,B,R){var V=x(C.valueOf(),B.valueOf(),R.valueOf());return V===null?null:o(V)},"Matrix, Matrix, Matrix, Matrix":function(C,B,R,V){var L=b(C.valueOf(),B.valueOf(),R.valueOf(),V.valueOf());return L===null?null:o(L)}});function x(N,C,B){if(N=T(N),C=T(C),B=T(B),!A(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!A(C))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!w(B))throw new TypeError("Array with 4 numbers expected as third argument");return _(N[0],N[1],N[2],C[0],C[1],C[2],B[0],B[1],B[2],B[3])}function b(N,C,B,R){if(N=T(N),C=T(C),B=T(B),R=T(R),N.length===2){if(!v(N))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!v(C))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!v(B))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!v(R))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return y(N,C,B,R)}else if(N.length===3){if(!A(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!A(C))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!A(B))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!A(R))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return D(N[0],N[1],N[2],C[0],C[1],C[2],B[0],B[1],B[2],R[0],R[1],R[2])}else throw new TypeError("Arrays with two or thee dimensional points expected")}function T(N){return N.length===1?N[0]:N.length>1&&Array.isArray(N[0])&&N.every(C=>Array.isArray(C)&&C.length===1)?p(N):N}function v(N){return N.length===2&&h(N[0])&&h(N[1])}function A(N){return N.length===3&&h(N[0])&&h(N[1])&&h(N[2])}function w(N){return N.length===4&&h(N[0])&&h(N[1])&&h(N[2])&&h(N[3])}function y(N,C,B,R){var V=N,L=B,P=c(V,C),k=c(L,R),W=c(l(P[0],k[1]),l(k[0],P[1]));if(d(W)||f(n(W),r.relTol))return null;var O=l(k[0],V[1]),X=l(k[1],V[0]),ae=l(k[0],L[1]),J=l(k[1],L[0]),U=u(a(c(c(O,X),ae),J),W);return i(s(P,U),V)}function E(N,C,B,R,V,L,P,k,W,O,X,ae){var J=l(c(N,C),c(B,R)),U=l(c(V,L),c(P,k)),de=l(c(W,O),c(X,ae));return a(a(J,U),de)}function D(N,C,B,R,V,L,P,k,W,O,X,ae){var J=E(N,P,O,P,C,k,X,k,B,W,ae,W),U=E(O,P,R,N,X,k,V,C,ae,W,L,B),de=E(N,P,R,N,C,k,V,C,B,W,L,B),we=E(O,P,O,P,X,k,X,k,ae,W,ae,W),se=E(R,N,R,N,V,C,V,C,L,B,L,B),be=c(l(J,U),l(de,we)),K=c(l(se,we),l(U,U));if(d(K))return null;var j=u(be,K),ne=u(a(J,l(j,U)),we),pe=a(N,l(j,c(R,N))),fe=a(C,l(j,c(V,C))),Ae=a(B,l(j,c(L,B))),_e=a(P,l(ne,c(O,P))),G=a(k,l(ne,c(X,k))),Z=a(W,l(ne,c(ae,W)));return m(pe,_e)&&m(fe,G)&&m(Ae,Z)?[pe,fe,Ae]:null}function _(N,C,B,R,V,L,P,k,W,O){var X=l(N,P),ae=l(R,P),J=l(C,k),U=l(V,k),de=l(B,W),we=l(L,W),se=c(c(c(O,X),J),de),be=c(c(c(a(a(ae,U),we),X),J),de),K=u(se,be),j=a(N,l(K,c(R,N))),ne=a(C,l(K,c(V,C))),pe=a(B,l(K,c(L,B)));return[j,ne,pe]}});var xV="sum",lne=["typed","config","add","numeric"],Em=M(xV,lne,t=>{var{typed:e,config:r,add:n,numeric:i}=t;return e(xV,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":o,"...":function(l){if(wo(l))throw new TypeError("Scalar values expected in function sum");return a(l)}});function a(s){var l;return Oi(s,function(u){try{l=l===void 0?u:n(l,u)}catch(c){throw An(c,"sum",u)}}),l===void 0&&(l=i(0,r.number)),typeof l=="string"&&(l=i(l,Bi(l,r))),l}function o(s,l){try{var u=zu(s,l,n);return u}catch(c){throw An(c,"sum")}}});var $v="cumsum",cne=["typed","add","unaryPlus"],Tm=M($v,cne,t=>{var{typed:e,add:r,unaryPlus:n}=t;return e($v,{Array:i,Matrix:function(u){return u.create(i(u.valueOf(),u.datatype()))},"Array, number | BigNumber":o,"Matrix, number | BigNumber":function(u,c){return u.create(o(u.valueOf(),c),u.datatype())},"...":function(u){if(wo(u))throw new TypeError("All values expected to be scalar in function cumsum");return i(u)}});function i(l){try{return a(l)}catch(u){throw An(u,$v)}}function a(l){if(l.length===0)return[];for(var u=[n(l[0])],c=1;c=c.length)throw new Si(u,c.length);try{return s(l,u)}catch(f){throw An(f,$v)}}function s(l,u){var c,f,m;if(u<=0){var p=l[0][0];if(Array.isArray(p)){for(m=Yg(l),f=[],c=0;c{var{typed:e,add:r,divide:n}=t;return e(bV,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":i,"...":function(s){if(wo(s))throw new TypeError("Scalar values expected in function mean");return a(s)}});function i(o,s){try{var l=zu(o,s,r),u=Array.isArray(o)?pt(o):o.size();return n(l,u[s])}catch(c){throw An(c,"mean")}}function a(o){var s,l=0;if(Oi(o,function(u){try{s=s===void 0?u:r(s,u),l++}catch(c){throw An(c,"mean",u)}}),l===0)throw new Error("Cannot calculate the mean of an empty array");return n(s,l)}});var wV="median",pne=["typed","add","divide","compare","partitionSelect"],cE=M(wV,pne,t=>{var{typed:e,add:r,divide:n,compare:i,partitionSelect:a}=t;function o(u){try{u=Rt(u.valueOf());var c=u.length;if(c===0)throw new Error("Cannot calculate median of an empty array");if(c%2===0){for(var f=c/2-1,m=a(u,f+1),p=u[f],d=0;d0&&(p=u[d]);return l(p,m)}else{var h=a(u,(c-1)/2);return s(h)}}catch(x){throw An(x,"median")}}var s=e({"number | BigNumber | Complex | Unit":function(c){return c}}),l=e({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(c,f){return n(r(c,f),2)}});return e(wV,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(c,f){throw new Error("median(A, dim) is not yet supported")},"...":function(c){if(wo(c))throw new TypeError("Scalar values expected in function median");return o(c)}})});var _V="mad",mne=["typed","abs","map","median","subtract"],fE=M(_V,mne,t=>{var{typed:e,abs:r,map:n,median:i,subtract:a}=t;return e(_V,{"Array | Matrix":o,"...":function(l){return o(l)}});function o(s){if(s=Rt(s.valueOf()),s.length===0)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var l=i(s);return i(n(s,function(u){return r(a(u,l))}))}catch(u){throw u instanceof TypeError&&u.message.includes("median")?new TypeError(u.message.replace("median","mad")):An(u,"mad")}}});var pE="unbiased",AV="variance",dne=["typed","add","subtract","multiply","divide","apply","isNaN"],Mm=M(AV,dne,t=>{var{typed:e,add:r,subtract:n,multiply:i,divide:a,apply:o,isNaN:s}=t;return e(AV,{"Array | Matrix":function(f){return l(f,pE)},"Array | Matrix, string":l,"Array | Matrix, number | BigNumber":function(f,m){return u(f,m,pE)},"Array | Matrix, number | BigNumber, string":u,"...":function(f){return l(f,pE)}});function l(c,f){var m,p=0;if(c.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");if(Oi(c,function(x){try{m=m===void 0?x:r(m,x),p++}catch(b){throw An(b,"variance",x)}}),p===0)throw new Error("Cannot calculate variance of an empty array");var d=a(m,p);if(m=void 0,Oi(c,function(x){var b=n(x,d);m=m===void 0?i(b,b):r(m,i(b,b))}),s(m))return m;switch(f){case"uncorrected":return a(m,p);case"biased":return a(m,p+1);case"unbiased":{var h=ft(m)?m.mul(0):0;return p===1?h:a(m,p-1)}default:throw new Error('Unknown normalization "'+f+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}function u(c,f,m){try{if(c.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");return o(c,f,p=>l(p,m))}catch(p){throw An(p,"variance")}}});var SV="quantileSeq",hne=["typed","?bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],Cm=M(SV,hne,t=>{var{typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m}=t,p=Zl({typed:e,isInteger:u});return e(SV,{"Array | Matrix, number | BigNumber":(T,v)=>h(T,v,!1),"Array | Matrix, number | BigNumber, number":(T,v,A)=>d(T,v,!1,A,h),"Array | Matrix, number | BigNumber, boolean":h,"Array | Matrix, number | BigNumber, boolean, number":(T,v,A,w)=>d(T,v,A,w,h),"Array | Matrix, Array | Matrix":(T,v)=>x(T,v,!1),"Array | Matrix, Array | Matrix, number":(T,v,A)=>d(T,v,!1,A,x),"Array | Matrix, Array | Matrix, boolean":x,"Array | Matrix, Array | Matrix, boolean, number":(T,v,A,w)=>d(T,v,A,w,x)});function d(T,v,A,w,y){return p(T,w,E=>y(E,v,A))}function h(T,v,A){var w,y=T.valueOf();if(c(v,0))throw new Error("N/prob must be non-negative");if(f(v,1))return At(v)?b(y,v,A):r(b(y,v,A));if(m(v,1)){if(!u(v))throw new Error("N must be a positive integer");if(m(v,4294967295))throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var E=n(v,1);w=[];for(var D=0;c(D,v);D++){var _=a(D+1,E);w.push(b(y,_,A))}return At(v)?w:r(w)}}function x(T,v,A){for(var w=T.valueOf(),y=v.valueOf(),E=[],D=0;D0&&(N=w[B])}return n(o(N,i(1,_)),o(C,_))}});var EV="std",gne=["typed","map","sqrt","variance"],Nm=M(EV,gne,t=>{var{typed:e,map:r,sqrt:n,variance:i}=t;return e(EV,{"Array | Matrix":a,"Array | Matrix, string":a,"Array | Matrix, number | BigNumber":a,"Array | Matrix, number | BigNumber, string":a,"...":function(s){return a(s)}});function a(o,s){if(o.length===0)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{var l=i.apply(null,arguments);return Tn(l)?r(l,n):n(l)}catch(u){throw u instanceof TypeError&&u.message.includes(" variance")?new TypeError(u.message.replace(" variance"," std")):u}}});var TV="corr",vne=["typed","matrix","mean","sqrt","sum","add","subtract","multiply","pow","divide"],mE=M(TV,vne,t=>{var{typed:e,matrix:r,sqrt:n,sum:i,add:a,subtract:o,multiply:s,pow:l,divide:u}=t;return e(TV,{"Array, Array":function(p,d){return c(p,d)},"Matrix, Matrix":function(p,d){var h=c(p.toArray(),d.toArray());return Array.isArray(h)?r(h):h}});function c(m,p){var d=[];if(Array.isArray(m[0])&&Array.isArray(p[0])){if(m.length!==p.length)throw new SyntaxError("Dimension mismatch. Array A and B must have the same length.");for(var h=0;ha(y,s(E,p[D])),0),T=i(m.map(y=>l(y,2))),v=i(p.map(y=>l(y,2))),A=o(s(d,b),s(h,x)),w=n(s(o(s(d,T),l(h,2)),o(s(d,v),l(x,2))));return u(A,w)}});var DV="combinations",yne=["typed"],dE=M(DV,yne,t=>{var{typed:e}=t;return e(DV,{"number, number":Ow,"BigNumber, BigNumber":function(n,i){var a=n.constructor,o,s,l=n.minus(i),u=new a(1);if(!MV(n)||!MV(i))throw new TypeError("Positive integer value expected in function combinations");if(i.gt(n))throw new TypeError("k must be less than n in function combinations");if(o=u,i.lt(l))for(s=u;s.lte(l);s=s.plus(u))o=o.times(i.plus(s)).dividedBy(s);else for(s=u;s.lte(i);s=s.plus(u))o=o.times(l.plus(s)).dividedBy(s);return o}})});function MV(t){return t.isInteger()&&t.gte(0)}var CV="combinationsWithRep",xne=["typed"],hE=M(CV,xne,t=>{var{typed:e}=t;return e(CV,{"number, number":function(n,i){if(!Qe(n)||n<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(!Qe(i)||i<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(n<1)throw new TypeError("k must be less than or equal to n + k - 1");if(i{var{typed:e,config:r,multiplyScalar:n,pow:i,BigNumber:a,Complex:o}=t;function s(u){if(u.im===0)return rm(u.re);if(u.re<.5){var c=new o(1-u.re,-u.im),f=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(f.sin()).div(s(c))}u=new o(u.re-1,u.im);for(var m=new o(jl[0],0),p=1;p2;)m-=2,d+=m,p=p.times(d);return new a(p.toPrecision(a.precision))}});var IV="lgamma",wne=["Complex","typed"],vE=M(IV,wne,t=>{var{Complex:e,typed:r}=t,n=7,i=7,a=[-.029550653594771242,.00641025641025641,-.0019175269175269176,.0008417508417508417,-.0005952380952380953,.0007936507936507937,-.002777777777777778,.08333333333333333];return r(IV,{number:nm,Complex:o,BigNumber:function(){throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber")}});function o(u){var c=6.283185307179586,f=1.1447298858494002,m=.1;if(u.isNaN())return new e(NaN,NaN);if(u.im===0)return new e(nm(u.re),0);if(u.re>=n||Math.abs(u.im)>=i)return s(u);if(u.re<=m){var p=hP(c,u.im)*Math.floor(.5*u.re+.25),d=u.mul(Math.PI).sin().log(),h=o(new e(1-u.re,-u.im));return new e(f,p).sub(d).sub(h)}else return u.im>=0?l(u):l(u.conjugate()).conjugate()}function s(u){for(var c=u.sub(.5).mul(u.log()).sub(u).add(Uw),f=new e(1,0).div(u),m=f.div(u),p=a[0],d=a[1],h=2*m.re,x=m.re*m.re+m.im*m.im,b=2;b<8;b++){var T=d;d=-x*p+a[b],p=h*p+T}var v=f.mul(m.mul(p).add(d));return c.add(v)}function l(u){var c=0,f=0,m=u;for(u=u.add(1);u.re<=n;){m=m.mul(u);var p=m.im<0?1:0;p!==0&&f===0&&c++,f=p,u=u.add(1)}return s(u).sub(m.log()).sub(new e(0,c*2*Math.PI*1))}});var PV="factorial",_ne=["typed","gamma"],yE=M(PV,_ne,t=>{var{typed:e,gamma:r}=t;return e(PV,{number:function(i){if(i<0)throw new Error("Value must be non-negative");return r(i+1)},BigNumber:function(i){if(i.isNegative())throw new Error("Value must be non-negative");return r(i.plus(1))},"Array | Matrix":e.referToSelf(n=>i=>nt(i,n))})});var BV="kldivergence",Ane=["typed","matrix","divide","sum","multiply","map","dotDivide","log","isNumeric"],xE=M(BV,Ane,t=>{var{typed:e,matrix:r,divide:n,sum:i,multiply:a,map:o,dotDivide:s,log:l,isNumeric:u}=t;return e(BV,{"Array, Array":function(m,p){return c(r(m),r(p))},"Matrix, Array":function(m,p){return c(m,r(p))},"Array, Matrix":function(m,p){return c(r(m),p)},"Matrix, Matrix":function(m,p){return c(m,p)}});function c(f,m){var p=m.size().length,d=f.size().length;if(p>1)throw new Error("first object must be one dimensional");if(d>1)throw new Error("second object must be one dimensional");if(p!==d)throw new Error("Length of two vectors must be equal");var h=i(f);if(h===0)throw new Error("Sum of elements in first object must be non zero");var x=i(m);if(x===0)throw new Error("Sum of elements in second object must be non zero");var b=n(f,i(f)),T=n(m,i(m)),v=i(a(b,o(s(b,T),A=>l(A))));return u(v)?v:Number.NaN}});var kV="multinomial",Sne=["typed","add","divide","multiply","factorial","isInteger","isPositive"],bE=M(kV,Sne,t=>{var{typed:e,add:r,divide:n,multiply:i,factorial:a,isInteger:o,isPositive:s}=t;return e(kV,{"Array | Matrix":function(u){var c=0,f=1;return Oi(u,function(m){if(!o(m)||!s(m))throw new TypeError("Positive integer value expected in function multinomial");c=r(c,m),f=i(f,a(m))}),n(a(c),f)}})});var $V="permutations",Ene=["typed","factorial"],wE=M($V,Ene,t=>{var{typed:e,factorial:r}=t;return e($V,{"number | BigNumber":r,"number, number":function(i,a){if(!Qe(i)||i<0)throw new TypeError("Positive integer value expected in function permutations");if(!Qe(a)||a<0)throw new TypeError("Positive integer value expected in function permutations");if(a>i)throw new TypeError("second argument k must be less than or equal to first argument n");return Wa(i-a+1,i)},"BigNumber, BigNumber":function(i,a){var o,s;if(!OV(i)||!OV(a))throw new TypeError("Positive integer value expected in function permutations");if(a.gt(i))throw new TypeError("second argument k must be less than or equal to first argument n");var l=i.mul(0).add(1);for(o=l,s=i.minus(a).plus(1);s.lte(i);s=s.plus(1))o=o.times(s);return o}})});function OV(t){return t.isInteger()&&t.gte(0)}var ME=zr(KV(),1),Ine=(0,ME.default)(Date.now());function nu(t){var e;function r(i){e=i===null?Ine:(0,ME.default)(String(i))}r(t);function n(){return e()}return n}var eU="pickRandom",Pne=["typed","config","?on"],CE=M(eU,Pne,t=>{var{typed:e,config:r,on:n}=t,i=nu(r.randomSeed);return n&&n("config",function(o,s){o.randomSeed!==s.randomSeed&&(i=nu(o.randomSeed))}),e(eU,{"Array | Matrix":function(s){return a(s,{})},"Array | Matrix, Object":function(s,l){return a(s,l)},"Array | Matrix, number":function(s,l){return a(s,{number:l})},"Array | Matrix, Array | Matrix":function(s,l){return a(s,{weights:l})},"Array | Matrix, Array | Matrix, number":function(s,l,u){return a(s,{number:u,weights:l})},"Array | Matrix, number, Array | Matrix":function(s,l,u){return a(s,{number:l,weights:u})}});function a(o,s){var{number:l,weights:u,elementWise:c=!0}=s,f=typeof l>"u";f&&(l=1);var m=rt(o)?o.create:rt(u)?u.create:null;o=o.valueOf(),u&&(u=u.valueOf()),c===!0&&(o=Rt(o),u=Rt(u));var p=0;if(typeof u<"u"){if(u.length!==o.length)throw new Error("Weights must have the same length as possibles");for(var d=0,h=u.length;d"u")T=o[Math.floor(i()*x)];else for(var v=i()*p,A=0,w=o.length;A1)for(var n=0,i=t.shift();n{var{typed:e,config:r,on:n}=t,i=nu(r.randomSeed);return n&&n("config",function(s,l){s.randomSeed!==l.randomSeed&&(i=nu(s.randomSeed))}),e(tU,{"":()=>o(0,1),number:s=>o(0,s),"number, number":(s,l)=>o(s,l),"Array | Matrix":s=>a(s,0,1),"Array | Matrix, number":(s,l)=>a(s,0,l),"Array | Matrix, number, number":(s,l,u)=>a(s,l,u)});function a(s,l,u){var c=Fm(s.valueOf(),()=>o(l,u));return rt(s)?s.create(c,"number"):c}function o(s,l){return s+i()*(l-s)}});var rU="randomInt",kne=["typed","config","?on"],FE=M(rU,kne,t=>{var{typed:e,config:r,on:n}=t,i=nu(r.randomSeed);return n&&n("config",function(s,l){s.randomSeed!==l.randomSeed&&(i=nu(s.randomSeed))}),e(rU,{"":()=>o(0,1),number:s=>o(0,s),"number, number":(s,l)=>o(s,l),"Array | Matrix":s=>a(s,0,1),"Array | Matrix, number":(s,l)=>a(s,0,l),"Array | Matrix, number, number":(s,l,u)=>a(s,l,u)});function a(s,l,u){var c=Fm(s.valueOf(),()=>o(l,u));return rt(s)?s.create(c,"number"):c}function o(s,l){return Math.floor(s+i()*(l-s))}});var nU="stirlingS2",$ne=["typed","addScalar","subtractScalar","multiplyScalar","divideScalar","pow","factorial","combinations","isNegative","isInteger","number","?bignumber","larger"],IE=M(nU,$ne,t=>{var{typed:e,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:a,pow:o,factorial:s,combinations:l,isNegative:u,isInteger:c,number:f,bignumber:m,larger:p}=t,d=[],h=[];return e(nU,{"number | BigNumber, number | BigNumber":function(b,T){if(!c(b)||u(b)||!c(T)||u(T))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(p(T,b))throw new TypeError("k must be less than or equal to n in function stirlingS2");var v=!(At(b)&&At(T)),A=v?h:d,w=v?m:f,y=f(b),E=f(T);if(A[y]&&A[y].length>E)return A[y][E];for(var D=0;D<=y;++D)if(A[D]||(A[D]=[w(D===0?1:0)]),D!==0)for(var _=A[D],N=A[D-1],C=_.length;C<=D&&C<=E;++C)C===D?_[C]=1:_[C]=r(i(w(C),N[C]),N[C-1]);return A[y][E]}})});var iU="bellNumbers",One=["typed","addScalar","isNegative","isInteger","stirlingS2"],PE=M(iU,One,t=>{var{typed:e,addScalar:r,isNegative:n,isInteger:i,stirlingS2:a}=t;return e(iU,{"number | BigNumber":function(s){if(!i(s)||n(s))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var l=0,u=0;u<=s;u++)l=r(l,a(s,u));return l}})});var aU="catalan",Rne=["typed","addScalar","divideScalar","multiplyScalar","combinations","isNegative","isInteger"],BE=M(aU,Rne,t=>{var{typed:e,addScalar:r,divideScalar:n,multiplyScalar:i,combinations:a,isNegative:o,isInteger:s}=t;return e(aU,{"number | BigNumber":function(u){if(!s(u)||o(u))throw new TypeError("Non-negative integer value expected in function catalan");return n(a(i(u,2),u),r(u,1))}})});var oU="composition",Lne=["typed","addScalar","combinations","isNegative","isPositive","isInteger","larger"],kE=M(oU,Lne,t=>{var{typed:e,addScalar:r,combinations:n,isPositive:i,isNegative:a,isInteger:o,larger:s}=t;return e(oU,{"number | BigNumber, number | BigNumber":function(u,c){if(!o(u)||!i(u)||!o(c)||!i(c))throw new TypeError("Positive integer value expected in function composition");if(s(c,u))throw new TypeError("k must be less than or equal to n in function composition");return n(r(u,-1),r(c,-1))}})});var sU="leafCount",Vne=["parse","typed"],$E=M(sU,Vne,t=>{var{parse:e,typed:r}=t;function n(i){var a=0;return i.forEach(o=>{a+=n(o)}),a||1}return r(sU,{Node:function(a){return n(a)}})});function OE(t){return Ht(t)||Qr(t)&&t.isUnary()&&Ht(t.args[0])}function Im(t){return!!(Ht(t)||(na(t)||Qr(t))&&t.args.every(Im)||_i(t)&&Im(t.content))}function uU(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function RE(t){for(var e=1;e{var{FunctionNode:e,OperatorNode:r,SymbolNode:n}=t,i=!0,a=!1,o="defaultF",s={add:{trivial:i,total:i,commutative:i,associative:i},unaryPlus:{trivial:i,total:i,commutative:i,associative:i},subtract:{trivial:a,total:i,commutative:a,associative:a},multiply:{trivial:i,total:i,commutative:i,associative:i},divide:{trivial:a,total:i,commutative:a,associative:a},paren:{trivial:i,total:i,commutative:i,associative:a},defaultF:{trivial:a,total:i,commutative:a,associative:a}},l={divide:{total:a},log:{total:a}},u={subtract:{total:a},abs:{trivial:i},log:{total:i}};function c(v,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:s,y=o;if(typeof v=="string"?y=v:Qr(v)?y=v.fn.toString():na(v)?y=v.name:_i(v)&&(y="paren"),st(w,y)){var E=w[y];if(st(E,A))return E[A];if(st(s,y))return s[y][A]}if(st(w,o)){var D=w[o];return st(D,A)?D[A]:s[o][A]}if(st(s,y)){var _=s[y];if(st(_,A))return _[A]}return s[o][A]}function f(v){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return c(v,"commutative",A)}function m(v){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return c(v,"associative",A)}function p(v,A){var w=RE({},v);for(var y in A)st(v,y)?w[y]=RE(RE({},A[y]),v[y]):w[y]=A[y];return w}function d(v,A){if(!v.args||v.args.length===0)return v;v.args=h(v,A);for(var w=0;w2&&m(v,A)){for(var D=v.args.pop();v.args.length>0;)D=w([v.args.pop(),D]);v.args=D.args}}}function b(v,A){if(!(!v.args||v.args.length===0)){for(var w=T(v),y=v.args.length,E=0;E2&&m(v,A)){for(var D=v.args.shift();v.args.length>0;)D=w([D,v.args.shift()]);v.args=D.args}}}function T(v){return Qr(v)?function(A){try{return new r(v.op,v.fn,A,v.implicit)}catch(w){return console.error(w),[]}}:function(A){return new e(new n(v.name),A)}}return{createMakeNodeFunction:T,hasProperty:c,isCommutative:f,isAssociative:m,mergeContext:p,flatten:d,allChildren:h,unflattenr:x,unflattenl:b,defaultContext:s,realContext:l,positiveContext:u}});var zne="simplify",Hne=["typed","parse","equal","resolve","simplifyConstant","simplifyCore","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode","replacer"],LE=M(zne,Hne,t=>{var{typed:e,parse:r,equal:n,resolve:i,simplifyConstant:a,simplifyCore:o,AccessorNode:s,ArrayNode:l,ConstantNode:u,FunctionNode:c,IndexNode:f,ObjectNode:m,OperatorNode:p,ParenthesisNode:d,SymbolNode:h,replacer:x}=t,{hasProperty:b,isCommutative:T,isAssociative:v,mergeContext:A,flatten:w,unflattenr:y,unflattenl:E,createMakeNodeFunction:D,defaultContext:_,realContext:N,positiveContext:C}=Pf({FunctionNode:c,OperatorNode:p,SymbolNode:h});e.addConversion({from:"Object",to:"Map",convert:Zs});var B=e("simplify",{Node:O,"Node, Map":(K,j)=>O(K,!1,j),"Node, Map, Object":(K,j,ne)=>O(K,!1,j,ne),"Node, Array":O,"Node, Array, Map":O,"Node, Array, Map, Object":O});e.removeConversion({from:"Object",to:"Map",convert:Zs}),B.defaultContext=_,B.realContext=N,B.positiveContext=C;function R(K){return K.transform(function(j){return _i(j)?R(j.content):j})}var V={true:!0,false:!0,e:!0,i:!0,Infinity:!0,LN2:!0,LN10:!0,LOG2E:!0,LOG10E:!0,NaN:!0,phi:!0,pi:!0,SQRT1_2:!0,SQRT2:!0,tau:!0};B.rules=[o,{l:"log(e)",r:"1"},{s:"n-n1 -> n+-n1",assuming:{subtract:{total:!0}}},{s:"n-n -> 0",assuming:{subtract:{total:!1}}},{s:"-(cl*v) -> v * (-cl)",assuming:{multiply:{commutative:!0},subtract:{total:!0}}},{s:"-(cl*v) -> (-cl) * v",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{s:"-(v*cl) -> v * (-cl)",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{l:"-(n1/n2)",r:"-n1/n2"},{l:"-v",r:"v * (-1)"},{l:"(n1 + n2)*(-1)",r:"n1*(-1) + n2*(-1)",repeat:!0},{l:"n/n1^n2",r:"n*n1^-n2"},{l:"n/n1",r:"n*n1^-1"},{s:"(n1*n2)^n3 -> n1^n3 * n2^n3",assuming:{multiply:{commutative:!0}}},{s:"(n1*n2)^(-1) -> n2^(-1) * n1^(-1)",assuming:{multiply:{commutative:!1}}},{s:"(n ^ n1) ^ n2 -> n ^ (n1 * n2)",assuming:{divide:{total:!0}}},{l:" vd * ( vd * n1 + n2)",r:"vd^2 * n1 + vd * n2"},{s:" vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{l:"n*n",r:"n^2"},{s:"n * n^n1 -> n^(n1+1)",assuming:{divide:{total:!0}}},{s:"n^n1 * n^n2 -> n^(n1+n2)",assuming:{divide:{total:!0}}},a,{s:"n+n -> 2*n",assuming:{add:{total:!0}}},{l:"n+-n",r:"0"},{l:"vd*n + vd",r:"vd*(n+1)"},{l:"n3*n1 + n3*n2",r:"n3*(n1+n2)"},{l:"n3^(-n4)*n1 + n3 * n2",r:"n3^(-n4)*(n1 + n3^(n4+1) *n2)"},{l:"n3^(-n4)*n1 + n3^n5 * n2",r:"n3^(-n4)*(n1 + n3^(n4+n5)*n2)"},{s:"n*vd + vd -> (n+1)*vd",assuming:{multiply:{commutative:!1}}},{s:"vd + n*vd -> (1+n)*vd",assuming:{multiply:{commutative:!1}}},{s:"n1*n3 + n2*n3 -> (n1+n2)*n3",assuming:{multiply:{commutative:!1}}},{s:"n^n1 * n -> n^(n1+1)",assuming:{divide:{total:!0},multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{l:"n*cd + cd",r:"(n+1)*cd"},{s:"cd*n + cd -> cd*(n+1)",assuming:{multiply:{commutative:!1}}},{s:"cd + cd*n -> cd*(1+n)",assuming:{multiply:{commutative:!1}}},a,{s:"(-n)*n1 -> -(n*n1)",assuming:{subtract:{total:!0}}},{s:"n1*(-n) -> -(n1*n)",assuming:{subtract:{total:!0},multiply:{commutative:!1}}},{s:"ce+ve -> ve+ce",assuming:{add:{commutative:!0}},imposeContext:{add:{commutative:!1}}},{s:"vd*cd -> cd*vd",assuming:{multiply:{commutative:!0}},imposeContext:{multiply:{commutative:!1}}},{l:"n+-n1",r:"n-n1"},{l:"n+-(n1)",r:"n-(n1)"},{s:"n*(n1^-1) -> n/n1",assuming:{multiply:{commutative:!0}}},{s:"n*n1^-n2 -> n/n1^n2",assuming:{multiply:{commutative:!0}}},{s:"n^-1 -> 1/n",assuming:{multiply:{commutative:!0}}},{l:"n^1",r:"n"},{s:"n*(n1/n2) -> (n*n1)/n2",assuming:{multiply:{associative:!0}}},{s:"n-(n1+n2) -> n-n1-n2",assuming:{addition:{associative:!0,commutative:!0}}},{l:"1*n",r:"n",imposeContext:{multiply:{commutative:!0}}},{s:"n1/(n2/n3) -> (n1*n3)/n2",assuming:{multiply:{associative:!0}}},{l:"n1/(-n2)",r:"-n1/n2"}];function L(K,j){var ne={};if(K.s){var pe=K.s.split("->");if(pe.length===2)ne.l=pe[0],ne.r=pe[1];else throw SyntaxError("Could not parse rule: "+K.s)}else ne.l=K.l,ne.r=K.r;ne.l=R(r(ne.l)),ne.r=R(r(ne.r));for(var fe of["imposeContext","repeat","assuming"])fe in K&&(ne[fe]=K[fe]);if(K.evaluate&&(ne.evaluate=r(K.evaluate)),v(ne.l,j)){var Ae=!T(ne.l,j),_e;Ae&&(_e=W());var G=D(ne.l),Z=W();ne.expanded={},ne.expanded.l=G([ne.l,Z]),w(ne.expanded.l,j),y(ne.expanded.l,j),ne.expanded.r=G([ne.r,Z]),Ae&&(ne.expandedNC1={},ne.expandedNC1.l=G([_e,ne.l]),ne.expandedNC1.r=G([_e,ne.r]),ne.expandedNC2={},ne.expandedNC2.l=G([_e,ne.expanded.l]),ne.expandedNC2.r=G([_e,ne.expanded.r]))}return ne}function P(K,j){for(var ne=[],pe=0;pe2&&arguments[2]!==void 0?arguments[2]:Bu(),pe=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},fe=pe.consoleDebug;j=P(j||B.rules,pe.context);var Ae=i(K,ne);Ae=R(Ae);for(var _e={},G=Ae.toString({parenthesis:"all"});!_e[G];){_e[G]=!0,k=0;var Z=G;fe&&console.log("Working on: ",G);for(var ge=0;ge ").concat(j[ge].r.toString()))),fe){var Ee=Ae.toString({parenthesis:"all"});Ee!==Z&&(console.log("Applying",xe,"produced",Ee),Z=Ee)}E(Ae,pe.context)}G=Ae.toString({parenthesis:"all"})}return Ae}function X(K,j,ne){var pe=K;if(K)for(var fe=0;fe1&&(Z=Ae(K.args.slice(0,G))),fe=K.args.slice(G),pe=fe.length===1?fe[0]:Ae(fe),ne.push(Ae([Z,pe]))}return ne}function U(K,j){var ne={placeholders:{}};if(!K.placeholders&&!j.placeholders)return ne;if(K.placeholders){if(!j.placeholders)return K}else return j;for(var pe in K.placeholders)if(st(K.placeholders,pe)&&(ne.placeholders[pe]=K.placeholders[pe],st(j.placeholders,pe)&&!be(K.placeholders[pe],j.placeholders[pe])))return null;for(var fe in j.placeholders)st(j.placeholders,fe)&&(ne.placeholders[fe]=j.placeholders[fe]);return ne}function de(K,j){var ne=[];if(K.length===0||j.length===0)return ne;for(var pe,fe=0;fe2)throw new Error("permuting >2 commutative non-associative rule arguments not yet implemented");var Z=se(K.args[0],j.args[1],ne);if(Z.length===0)return[];var ge=se(K.args[1],j.args[0],ne);if(ge.length===0)return[];Ae=[Z,ge]}fe=we(Ae)}else if(j.args.length>=2&&K.args.length===2){for(var xe=J(j,ne),Ee=[],Be=0;Be2)throw Error("Unexpected non-binary associative function: "+K.toString());return[]}}else if(K instanceof h){if(K.name.length===0)throw new Error("Symbol in rule has 0 length...!?");if(V[K.name]){if(K.name!==j.name)return[]}else switch(K.name[1]>="a"&&K.name[1]<="z"?K.name.substring(0,2):K.name[0]){case"n":case"_p":fe[0].placeholders[K.name]=j;break;case"c":case"cl":if(Ht(j))fe[0].placeholders[K.name]=j;else return[];break;case"v":if(!Ht(j))fe[0].placeholders[K.name]=j;else return[];break;case"vl":if(Gr(j))fe[0].placeholders[K.name]=j;else return[];break;case"cd":if(OE(j))fe[0].placeholders[K.name]=j;else return[];break;case"vd":if(!OE(j))fe[0].placeholders[K.name]=j;else return[];break;case"ce":if(Im(j))fe[0].placeholders[K.name]=j;else return[];break;case"ve":if(!Im(j))fe[0].placeholders[K.name]=j;else return[];break;default:throw new Error("Invalid symbol in rule: "+K.name)}}else if(K instanceof u){if(!n(K.value,j.value))return[]}else return[];return fe}function be(K,j){if(K instanceof u&&j instanceof u){if(!n(K.value,j.value))return!1}else if(K instanceof h&&j instanceof h){if(K.name!==j.name)return!1}else if(K instanceof p&&j instanceof p||K instanceof c&&j instanceof c){if(K instanceof p){if(K.op!==j.op||K.fn!==j.fn)return!1}else if(K instanceof c&&K.name!==j.name)return!1;if(K.args.length!==j.args.length)return!1;for(var ne=0;ne{var{typed:e,config:r,mathWithTransform:n,matrix:i,fraction:a,bignumber:o,AccessorNode:s,ArrayNode:l,ConstantNode:u,FunctionNode:c,IndexNode:f,ObjectNode:m,OperatorNode:p,SymbolNode:d}=t,{isCommutative:h,isAssociative:x,allChildren:b,createMakeNodeFunction:T}=Pf({FunctionNode:c,OperatorNode:p,SymbolNode:d}),v=e("simplifyConstant",{Node:L=>E(V(L,{})),"Node, Object":function(P,k){return E(V(P,k))}});function A(L){return Js(L)?L.valueOf():L instanceof Array?L.map(A):rt(L)?i(A(L.valueOf())):L}function w(L,P,k){try{return n[L].apply(null,P)}catch{return P=P.map(A),_(n[L].apply(null,P),k)}}var y=e({Fraction:C,number:function(P){return P<0?N(new u(-P)):new u(P)},BigNumber:function(P){return P<0?N(new u(-P)):new u(P)},bigint:function(P){return P<0n?N(new u(-P)):new u(P)},Complex:function(P){throw new Error("Cannot convert Complex number to Node")},string:function(P){return new u(P)},Matrix:function(P){return new l(P.valueOf().map(k=>y(k)))}});function E(L){return nr(L)?L:y(L)}function D(L,P){var k=P&&P.exactFractions!==!1;if(k&&isFinite(L)&&a){var W=a(L),O=P&&typeof P.fractionsLimit=="number"?P.fractionsLimit:1/0;if(W.valueOf()===L&&W.nr.number==="BigNumber"&&o?o(O):Number(O),k=L.s*L.n,W=k<0n?new p("-","unaryMinus",[new u(-P(k))]):new u(P(k));return L.d===1n?W:new p("/","divide",[W,new u(P(L.d))])}function B(L,P,k){if(!go(P))return new s(E(L),E(P));if(wi(L)||rt(L)){for(var W=Array.from(P.dimensions);W.length>0;)if(Ht(W[0])&&typeof W[0].value!="string"){var O=_(W.shift().value,k);wi(L)?L=L.items[O-1]:(L=L.valueOf()[O-1],L instanceof Array&&(L=i(L)))}else if(W.length>1&&Ht(W[1])&&typeof W[1].value!="string"){var X=_(W[1].value,k),ae=[],J=wi(L)?L.items:L.valueOf();for(var U of J)if(wi(U))ae.push(U.items[X-1]);else if(rt(L))ae.push(U[X-1]);else break;if(ae.length===J.length)wi(L)?L=new l(ae):L=i(ae),W.splice(1,1);else break}else break;return W.length===P.dimensions.length?new s(E(L),P):W.length>0?(P=new f(W),new s(E(L),P)):L}if(Ou(L)&&P.dimensions.length===1&&Ht(P.dimensions[0])){var de=P.dimensions[0].value;return de in L.properties?L.properties[de]:new u}return new s(E(L),P)}function R(L,P,k,W){var O=P.shift(),X=P.reduce((ae,J)=>{if(!nr(J)){var U=ae.pop();if(nr(U))return[U,J];try{return ae.push(w(L,[U,J],W)),ae}catch{ae.push(U)}}ae.push(E(ae.pop()));var de=ae.length===1?ae[0]:k(ae);return[k([de,E(J)])]},[O]);return X.length===1?X[0]:k([X[0],y(X[1])])}function V(L,P){switch(L.type){case"SymbolNode":return L;case"ConstantNode":switch(typeof L.value){case"number":return _(L.value,P);case"bigint":return _(L.value,P);case"string":return L.value;default:if(!isNaN(L.value))return _(L.value,P)}return L;case"FunctionNode":if(n[L.name]&&n[L.name].rawArgs)return L;{var k=["add","multiply"];if(!k.includes(L.name)){var W=L.args.map(pe=>V(pe,P));if(!W.some(nr))try{return w(L.name,W,P)}catch{}if(L.name==="size"&&W.length===1&&wi(W[0])){for(var O=[],X=W[0];wi(X);)O.push(X.items.length),X=X.items[0];return i(O)}return new c(L.name,W.map(E))}}case"OperatorNode":{var ae=L.fn.toString(),J,U,de=T(L);if(Qr(L)&&L.isUnary())J=[V(L.args[0],P)],nr(J[0])?U=de(J):U=w(ae,J,P);else if(x(L,P.context))if(J=b(L,P.context),J=J.map(pe=>V(pe,P)),h(ae,P.context)){for(var we=[],se=[],be=0;be1?(U=R(ae,we,de,P),se.unshift(U),U=R(ae,se,de,P)):U=R(ae,J,de,P)}else U=R(ae,J,de,P);else J=L.args.map(pe=>V(pe,P)),U=R(ae,J,de,P);return U}case"ParenthesisNode":return V(L.content,P);case"AccessorNode":return B(V(L.object,P),V(L.index,P),P);case"ArrayNode":{var K=L.items.map(pe=>V(pe,P));return K.some(nr)?new l(K.map(E)):i(K)}case"IndexNode":return new f(L.dimensions.map(pe=>v(pe,P)));case"ObjectNode":{var j={};for(var ne in L.properties)j[ne]=v(L.properties[ne],P);return new m(j)}case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"RangeNode":case"ConditionalNode":default:throw new Error("Unimplemented node type in simplifyConstant: ".concat(L.type))}}return v});var lU="simplifyCore",Yne=["typed","parse","equal","isZero","add","subtract","multiply","divide","pow","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode"],UE=M(lU,Yne,t=>{var{typed:e,parse:r,equal:n,isZero:i,add:a,subtract:o,multiply:s,divide:l,pow:u,AccessorNode:c,ArrayNode:f,ConstantNode:m,FunctionNode:p,IndexNode:d,ObjectNode:h,OperatorNode:x,ParenthesisNode:b,SymbolNode:T}=t,v=new m(0),A=new m(1),w=new m(!0),y=new m(!1);function E(C){return Qr(C)&&["and","not","or"].includes(C.op)}var{hasProperty:D,isCommutative:_}=Pf({FunctionNode:p,OperatorNode:x,SymbolNode:T});function N(C){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=B?B.context:void 0;if(D(C,"trivial",R)){if(na(C)&&C.args.length===1)return N(C.args[0],B);var V=!1,L=0;if(C.forEach(se=>{++L,L===1&&(V=N(se,B))}),L===1)return V}var P=C;if(na(P)){var k=oO(P.name);if(k){if(P.args.length>2&&D(P,"associative",R))for(;P.args.length>2;){var W=P.args.pop(),O=P.args.pop();P.args.push(new x(k,P.name,[W,O]))}P=new x(k,P.name,P.args)}else return new p(N(P.fn),P.args.map(se=>N(se,B)))}if(Qr(P)&&P.isUnary()){var X=N(P.args[0],B);if(P.op==="~"&&Qr(X)&&X.isUnary()&&X.op==="~"||P.op==="not"&&Qr(X)&&X.isUnary()&&X.op==="not"&&E(X.args[0]))return X.args[0];var ae=!0;if(P.op==="-"&&Qr(X)&&(X.isBinary()&&X.fn==="subtract"&&(P=new x("-","subtract",[X.args[1],X.args[0]]),ae=!1),X.isUnary()&&X.op==="-"))return X.args[0];if(ae)return new x(P.op,P.fn,[X])}if(Qr(P)&&P.isBinary()){var J=N(P.args[0],B),U=N(P.args[1],B);if(P.op==="+"){if(Ht(J)&&i(J.value))return U;if(Ht(U)&&i(U.value))return J;Qr(U)&&U.isUnary()&&U.op==="-"&&(U=U.args[0],P=new x("-","subtract",[J,U]))}if(P.op==="-")return Qr(U)&&U.isUnary()&&U.op==="-"?N(new x("+","add",[J,U.args[0]]),B):Ht(J)&&i(J.value)?N(new x("-","unaryMinus",[U])):Ht(U)&&i(U.value)?J:new x(P.op,P.fn,[J,U]);if(P.op==="*"){if(Ht(J)){if(i(J.value))return v;if(n(J.value,1))return U}if(Ht(U)){if(i(U.value))return v;if(n(U.value,1))return J;if(_(P,R))return new x(P.op,P.fn,[U,J],P.implicit)}return new x(P.op,P.fn,[J,U],P.implicit)}if(P.op==="/")return Ht(J)&&i(J.value)?v:Ht(U)&&n(U.value,1)?J:new x(P.op,P.fn,[J,U]);if(P.op==="^"&&Ht(U)){if(i(U.value))return A;if(n(U.value,1))return J}if(P.op==="and"){if(Ht(J))if(J.value){if(E(U))return U;if(Ht(U))return U.value?w:y}else return y;if(Ht(U))if(U.value){if(E(J))return J}else return y}if(P.op==="or"){if(Ht(J)){if(J.value)return w;if(E(U))return U}if(Ht(U)){if(U.value)return w;if(E(J))return J}}return new x(P.op,P.fn,[J,U])}if(Qr(P))return new x(P.op,P.fn,P.args.map(se=>N(se,B)));if(wi(P))return new f(P.items.map(se=>N(se,B)));if(Ha(P))return new c(N(P.object,B),N(P.index,B));if(go(P))return new d(P.dimensions.map(se=>N(se,B)));if(Ou(P)){var de={};for(var we in P.properties)de[we]=N(P.properties[we],B);return new h(de)}return P}return e(lU,{Node:N,"Node,Object":N})});var jne="resolve",Zne=["typed","parse","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode"],qE=M(jne,Zne,t=>{var{typed:e,parse:r,ConstantNode:n,FunctionNode:i,OperatorNode:a,ParenthesisNode:o}=t;function s(l,u){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:new Set;if(!u)return l;if(Gr(l)){if(c.has(l.name)){var f=Array.from(c).join(", ");throw new ReferenceError("recursive loop of variable definitions among {".concat(f,"}"))}var m=u.get(l.name);if(nr(m)){var p=new Set(c);return p.add(l.name),s(m,u,p)}else return typeof m=="number"?r(String(m)):m!==void 0?new n(m):l}else if(Qr(l)){var d=l.args.map(function(x){return s(x,u,c)});return new a(l.op,l.fn,d,l.implicit)}else{if(_i(l))return new o(s(l.content,u,c));if(na(l)){var h=l.args.map(function(x){return s(x,u,c)});return new i(l.name,h)}}return l.map(x=>s(x,u,c))}return e("resolve",{Node:s,"Node, Map | null | undefined":s,"Node, Object":(l,u)=>s(l,Zs(u)),"Array | Matrix":e.referToSelf(l=>u=>u.map(c=>l(c))),"Array | Matrix, null | undefined":e.referToSelf(l=>u=>u.map(c=>l(c))),"Array, Object":e.referTo("Array,Map",l=>(u,c)=>l(u,Zs(c))),"Matrix, Object":e.referTo("Matrix,Map",l=>(u,c)=>l(u,Zs(c))),"Array | Matrix, Map":e.referToSelf(l=>(u,c)=>u.map(f=>l(f,c)))})});var cU="symbolicEqual",Jne=["parse","simplify","typed","OperatorNode"],zE=M(cU,Jne,t=>{var{parse:e,simplify:r,typed:n,OperatorNode:i}=t;function a(o,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=new i("-","subtract",[o,s]),c=r(u,{},l);return Ht(c)&&!c.value}return n(cU,{"Node, Node":a,"Node, Node, Object":a})});var fU="derivative",Xne=["typed","config","parse","simplify","equal","isZero","numeric","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode","SymbolNode"],HE=M(fU,Xne,t=>{var{typed:e,config:r,parse:n,simplify:i,equal:a,isZero:o,numeric:s,ConstantNode:l,FunctionNode:u,OperatorNode:c,ParenthesisNode:f,SymbolNode:m}=t;function p(A,w){var y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{simplify:!0},E=new Map,D=w.name;function _(C){var B=E.get(C);if(B!==void 0)return B;var R=b(_,C,D);return E.set(C,R),R}var N=T(A,_);return y.simplify?i(N):N}function d(A){var w=n(A);if(!w.isSymbolNode)throw new TypeError("Invalid variable. "+"Cannot parse ".concat(JSON.stringify(A)," into a variable in function derivative"));return w}var h=e(fU,{"Node, SymbolNode":p,"Node, SymbolNode, Object":p,"Node, string":(A,w)=>p(A,d(w)),"Node, string, Object":(A,w,y)=>p(A,d(w),y)});h._simplify=!0,h.toTex=function(A){return x.apply(null,A.args)};var x=e("_derivTex",{"Node, SymbolNode":function(w,y){return Ht(w)&&fr(w.value)==="string"?x(n(w.value).toString(),y.toString(),1):x(w.toTex(),y.toString(),1)},"Node, ConstantNode":function(w,y){if(fr(y.value)==="string")return x(w,n(y.value));throw new Error("The second parameter to 'derivative' is a non-string constant")},"Node, SymbolNode, ConstantNode":function(w,y,E){return x(w.toString(),y.name,E.value)},"string, string, number":function(w,y,E){var D;return E===1?D="{d\\over d"+y+"}":D="{d^{"+E+"}\\over d"+y+"^{"+E+"}}",D+"\\left[".concat(w,"\\right]")}}),b=e("_isConst",{"function, ConstantNode, string":function(){return!0},"function, SymbolNode, string":function(w,y,E){return y.name!==E},"function, ParenthesisNode, string":function(w,y,E){return w(y.content,E)},"function, FunctionAssignmentNode, string":function(w,y,E){return y.params.includes(E)?w(y.expr,E):!0},"function, FunctionNode | OperatorNode, string":function(w,y,E){return y.args.every(D=>w(D,E))}}),T=e("_derivative",{"ConstantNode, function":function(){return v(0)},"SymbolNode, function":function(w,y){return y(w)?v(0):v(1)},"ParenthesisNode, function":function(w,y){return new f(T(w.content,y))},"FunctionAssignmentNode, function":function(w,y){return y(w)?v(0):T(w.expr,y)},"FunctionNode, function":function(w,y){if(y(w))return v(0);var E=w.args[0],D,_=!1,N=!1,C;switch(w.name){case"cbrt":_=!0,C=new c("*","multiply",[v(3),new c("^","pow",[E,new c("/","divide",[v(2),v(3)])])]);break;case"sqrt":case"nthRoot":if(w.args.length===1)_=!0,C=new c("*","multiply",[v(2),new u("sqrt",[E])]);else if(w.args.length===2)return D=new c("/","divide",[v(1),w.args[1]]),T(new c("^","pow",[E,D]),y);break;case"log10":D=v(10);case"log":if(!D&&w.args.length===1)C=E.clone(),_=!0;else if(w.args.length===1&&D||w.args.length===2&&y(w.args[1]))C=new c("*","multiply",[E.clone(),new u("log",[D||w.args[1]])]),_=!0;else if(w.args.length===2)return T(new c("/","divide",[new u("log",[E]),new u("log",[w.args[1]])]),y);break;case"pow":if(w.args.length===2)return T(new c("^","pow",[E,w.args[1]]),y);break;case"exp":C=new u("exp",[E.clone()]);break;case"sin":C=new u("cos",[E.clone()]);break;case"cos":C=new c("-","unaryMinus",[new u("sin",[E.clone()])]);break;case"tan":C=new c("^","pow",[new u("sec",[E.clone()]),v(2)]);break;case"sec":C=new c("*","multiply",[w,new u("tan",[E.clone()])]);break;case"csc":N=!0,C=new c("*","multiply",[w,new u("cot",[E.clone()])]);break;case"cot":N=!0,C=new c("^","pow",[new u("csc",[E.clone()]),v(2)]);break;case"asin":_=!0,C=new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])]);break;case"acos":_=!0,N=!0,C=new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])]);break;case"atan":_=!0,C=new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)]);break;case"asec":_=!0,C=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acsc":_=!0,N=!0,C=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acot":_=!0,N=!0,C=new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)]);break;case"sinh":C=new u("cosh",[E.clone()]);break;case"cosh":C=new u("sinh",[E.clone()]);break;case"tanh":C=new c("^","pow",[new u("sech",[E.clone()]),v(2)]);break;case"sech":N=!0,C=new c("*","multiply",[w,new u("tanh",[E.clone()])]);break;case"csch":N=!0,C=new c("*","multiply",[w,new u("coth",[E.clone()])]);break;case"coth":N=!0,C=new c("^","pow",[new u("csch",[E.clone()]),v(2)]);break;case"asinh":_=!0,C=new u("sqrt",[new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)])]);break;case"acosh":_=!0,C=new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])]);break;case"atanh":_=!0,C=new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])]);break;case"asech":_=!0,N=!0,C=new c("*","multiply",[E.clone(),new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])])]);break;case"acsch":_=!0,N=!0,C=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acoth":_=!0,N=!0,C=new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])]);break;case"abs":C=new c("/","divide",[new u(new m("abs"),[E.clone()]),E.clone()]);break;case"gamma":default:throw new Error('Cannot process function "'+w.name+'" in derivative: the function is not supported, undefined, or the number of arguments passed to it are not supported')}var B,R;_?(B="/",R="divide"):(B="*",R="multiply");var V=T(E,y);return N&&(V=new c("-","unaryMinus",[V])),new c(B,R,[V,C])},"OperatorNode, function":function(w,y){if(y(w))return v(0);if(w.op==="+")return new c(w.op,w.fn,w.args.map(function(P){return T(P,y)}));if(w.op==="-"){if(w.isUnary())return new c(w.op,w.fn,[T(w.args[0],y)]);if(w.isBinary())return new c(w.op,w.fn,[T(w.args[0],y),T(w.args[1],y)])}if(w.op==="*"){var E=w.args.filter(function(P){return y(P)});if(E.length>0){var D=w.args.filter(function(P){return!y(P)}),_=D.length===1?D[0]:new c("*","multiply",D),N=E.concat(T(_,y));return new c("*","multiply",N)}return new c("+","add",w.args.map(function(P){return new c("*","multiply",w.args.map(function(k){return k===P?T(k,y):k.clone()}))}))}if(w.op==="/"&&w.isBinary()){var C=w.args[0],B=w.args[1];return y(B)?new c("/","divide",[T(C,y),B]):y(C)?new c("*","multiply",[new c("-","unaryMinus",[C]),new c("/","divide",[T(B,y),new c("^","pow",[B.clone(),v(2)])])]):new c("/","divide",[new c("-","subtract",[new c("*","multiply",[T(C,y),B.clone()]),new c("*","multiply",[C.clone(),T(B,y)])]),new c("^","pow",[B.clone(),v(2)])])}if(w.op==="^"&&w.isBinary()){var R=w.args[0],V=w.args[1];if(y(R))return Ht(R)&&(o(R.value)||a(R.value,1))?v(0):new c("*","multiply",[w,new c("*","multiply",[new u("log",[R.clone()]),T(V.clone(),y)])]);if(y(V)){if(Ht(V)){if(o(V.value))return v(0);if(a(V.value,1))return T(R,y)}var L=new c("^","pow",[R.clone(),new c("-","subtract",[V,v(1)])]);return new c("*","multiply",[V.clone(),new c("*","multiply",[T(R,y),L])])}return new c("*","multiply",[new c("^","pow",[R.clone(),V.clone()]),new c("+","add",[new c("*","multiply",[T(R,y),new c("/","divide",[V.clone(),R.clone()])]),new c("*","multiply",[T(V,y),new u("log",[R.clone()])])])])}throw new Error('Cannot process operator "'+w.op+'" in derivative: the operator is not supported, undefined, or the number of arguments passed to it are not supported')}});function v(A,w){return new l(s(A,w||Bi(String(A),r)))}return h});var pU="rationalize",Qne=["config","typed","equal","isZero","add","subtract","multiply","divide","pow","parse","simplifyConstant","simplifyCore","simplify","?bignumber","?fraction","mathWithTransform","matrix","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","SymbolNode","ParenthesisNode"],GE=M(pU,Qne,t=>{var{config:e,typed:r,equal:n,isZero:i,add:a,subtract:o,multiply:s,divide:l,pow:u,parse:c,simplifyConstant:f,simplifyCore:m,simplify:p,fraction:d,bignumber:h,mathWithTransform:x,matrix:b,AccessorNode:T,ArrayNode:v,ConstantNode:A,FunctionNode:w,IndexNode:y,ObjectNode:E,OperatorNode:D,SymbolNode:_,ParenthesisNode:N}=t;function C(P){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,O=R(),X=B(P,k,!0,O.firstRules),ae=X.variables.length,J={exactFractions:!1},U={exactFractions:!0};if(P=X.expression,ae>=1){P=V(P);var de,we,se=!0,be=!1;P=p(P,O.firstRules,{},J);for(var K;we=se?O.distrDivRules:O.sucDivRules,P=p(P,we,{},U),se=!se,K=P.toString(),K!==de;)be=!0,de=K;be&&(P=p(P,O.firstRulesAgain,{},J)),P=p(P,O.finalRules,{},J)}var j=[],ne={};return P.type==="OperatorNode"&&P.isBinary()&&P.op==="/"?(ae===1&&(P.args[0]=L(P.args[0],j),P.args[1]=L(P.args[1])),W&&(ne.numerator=P.args[0],ne.denominator=P.args[1])):(ae===1&&(P=L(P,j)),W&&(ne.numerator=P,ne.denominator=null)),W?(ne.coefficients=j,ne.variables=X.variables,ne.expression=P,ne):P}return r(pU,{Node:C,"Node, boolean":(P,k)=>C(P,{},k),"Node, Object":C,"Node, Object, boolean":C});function B(P,k,W,O){var X=[],ae=p(P,O,k,{exactFractions:!1});W=!!W;var J="+-*"+(W?"/":"");de(ae);var U={};return U.expression=ae,U.variables=X,U;function de(we){var se=we.type;if(se==="FunctionNode")throw new Error("There is an unsolved function call");if(se==="OperatorNode")if(we.op==="^"){if(we.args[1].type!=="ConstantNode"||!Qe(parseFloat(we.args[1].value)))throw new Error("There is a non-integer exponent");de(we.args[0])}else{if(!J.includes(we.op))throw new Error("Operator "+we.op+" invalid in polynomial expression");for(var be=0;be1;if(O==="OperatorNode"&&P.isBinary()){var ae=!1,J;if(P.op==="^"&&(P.args[0].type==="ParenthesisNode"||P.args[0].type==="OperatorNode")&&P.args[1].type==="ConstantNode"&&(J=parseFloat(P.args[1].value),ae=J>=2&&Qe(J)),ae){if(J>2){var U=P.args[0],de=new D("^","pow",[P.args[0].cloneDeep(),new A(J-1)]);P=new D("*","multiply",[U,de])}else P=new D("*","multiply",[P.args[0],P.args[0].cloneDeep()]);X&&(W==="content"?k.content=P:k.args[W]=P)}}if(O==="ParenthesisNode")V(P.content,P,"content");else if(O!=="ConstantNode"&&O!=="SymbolNode")for(var we=0;we=0;U--)if(k[U]!==0){var de=new A(ae?k[U]:Math.abs(k[U])),we=k[U]<0?"-":"+";if(U>0){var se=new _(X);if(U>1){var be=new A(U);se=new D("^","pow",[se,be])}k[U]===-1&&ae?de=new D("-","unaryMinus",[se]):Math.abs(k[U])===1?de=se:de=new D("*","multiply",[de,se])}ae?J=de:we==="+"?J=new D("+","add",[J,de]):J=new D("-","subtract",[J,de]),ae=!1}if(ae)return new A(0);return J;function K(j,ne,pe){var fe=j.type;if(fe==="FunctionNode")throw new Error("There is an unsolved function call");if(fe==="OperatorNode"){if(!"+-*^".includes(j.op))throw new Error("Operator "+j.op+" invalid");if(ne!==null){if((j.fn==="unaryMinus"||j.fn==="pow")&&ne.fn!=="add"&&ne.fn!=="subtract"&&ne.fn!=="multiply")throw new Error("Invalid "+j.op+" placing");if((j.fn==="subtract"||j.fn==="add"||j.fn==="multiply")&&ne.fn!=="add"&&ne.fn!=="subtract")throw new Error("Invalid "+j.op+" placing");if((j.fn==="subtract"||j.fn==="add"||j.fn==="unaryMinus")&&pe.noFil!==0)throw new Error("Invalid "+j.op+" placing")}(j.op==="^"||j.op==="*")&&(pe.fire=j.op);for(var Ae=0;AeO&&(k[_e]=0),k[_e]+=pe.cte*(pe.oper==="+"?1:-1),O=Math.max(_e,O);return}pe.cte=_e,pe.fire===""&&(k[0]+=pe.cte*(pe.oper==="+"?1:-1))}else throw new Error("Type "+fe+" is not allowed")}}});var mU="zpk2tf",Kne=["typed","add","multiply","Complex","number"],WE=M(mU,Kne,t=>{var{typed:e,add:r,multiply:n,Complex:i,number:a}=t;return e(mU,{"Array,Array,number":function(u,c,f){return o(u,c,f)},"Array,Array":function(u,c){return o(u,c,1)},"Matrix,Matrix,number":function(u,c,f){return o(u.valueOf(),c.valueOf(),f)},"Matrix,Matrix":function(u,c){return o(u.valueOf(),c.valueOf(),1)}});function o(l,u,c){l.some(T=>T.type==="BigNumber")&&(l=l.map(T=>a(T))),u.some(T=>T.type==="BigNumber")&&(u=u.map(T=>a(T)));for(var f=[i(1,0)],m=[i(1,0)],p=0;p=0&&f-m{var{typed:e,add:r,multiply:n,Complex:i,divide:a,matrix:o}=t;return e(dU,{"Array, Array":function(c,f){var m=l(512);return s(c,f,m)},"Array, Array, Array":function(c,f,m){return s(c,f,m)},"Array, Array, number":function(c,f,m){if(m<0)throw new Error("w must be a positive number");var p=l(m);return s(c,f,p)},"Matrix, Matrix":function(c,f){var m=l(512),{w:p,h:d}=s(c.valueOf(),f.valueOf(),m);return{w:o(p),h:o(d)}},"Matrix, Matrix, Matrix":function(c,f,m){var{h:p}=s(c.valueOf(),f.valueOf(),m.valueOf());return{h:o(p),w:o(m)}},"Matrix, Matrix, number":function(c,f,m){if(m<0)throw new Error("w must be a positive number");var p=l(m),{h:d}=s(c.valueOf(),f.valueOf(),p);return{h:o(d),w:o(p)}}});function s(u,c,f){for(var m=[],p=[],d=0;d{var{classes:e}=t;return function(n,i){var a=e[i&&i.mathjs];return a&&typeof a.fromJSON=="function"?a.fromJSON(i):i}});var nie="replacer",iie=[],ZE=M(nie,iie,()=>function(e,r){return typeof r=="number"&&(!isFinite(r)||isNaN(r))?{mathjs:"number",value:String(r)}:typeof r=="bigint"?{mathjs:"bigint",value:String(r)}:r});var hU="14.0.1";var JE=M("true",[],()=>!0),XE=M("false",[],()=>!1),QE=M("null",[],()=>null),KE=Ya("Infinity",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1/0):1/0}),eT=Ya("NaN",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(NaN):NaN}),tT=Ya("pi",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?Am(r):ZP}),rT=Ya("tau",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?v$(r):JP}),nT=Ya("e",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?h$(r):XP}),iT=Ya("phi",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?g$(r):QP}),aT=Ya("LN2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(2).ln():Math.LN2}),oT=Ya("LN10",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(10).ln():Math.LN10}),sT=Ya("LOG2E",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1).div(new r(2).ln()):Math.LOG2E}),uT=Ya("LOG10E",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1).div(new r(10).ln()):Math.LOG10E}),lT=Ya("SQRT1_2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r("0.5").sqrt():Math.SQRT1_2}),cT=Ya("SQRT2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(2).sqrt():Math.SQRT2}),fT=Ya("i",["Complex"],t=>{var{Complex:e}=t;return e.I});var pT=M("version",[],()=>hU);function Ya(t,e,r){return M(t,e,r,{recreateOnConfigChange:!0})}var mT=ar("speedOfLight","299792458","m s^-1"),dT=ar("gravitationConstant","6.67430e-11","m^3 kg^-1 s^-2"),hT=ar("planckConstant","6.62607015e-34","J s"),gT=ar("reducedPlanckConstant","1.0545718176461565e-34","J s"),vT=ar("magneticConstant","1.25663706212e-6","N A^-2"),yT=ar("electricConstant","8.8541878128e-12","F m^-1"),xT=ar("vacuumImpedance","376.730313667","ohm"),bT=ar("coulomb","8.987551792261171e9","N m^2 C^-2"),wT=ar("elementaryCharge","1.602176634e-19","C"),_T=ar("bohrMagneton","9.2740100783e-24","J T^-1"),AT=ar("conductanceQuantum","7.748091729863649e-5","S"),ST=ar("inverseConductanceQuantum","12906.403729652257","ohm"),ET=ar("magneticFluxQuantum","2.0678338484619295e-15","Wb"),TT=ar("nuclearMagneton","5.0507837461e-27","J T^-1"),DT=ar("klitzing","25812.807459304513","ohm");var MT=ar("bohrRadius","5.29177210903e-11","m"),CT=ar("classicalElectronRadius","2.8179403262e-15","m"),NT=ar("electronMass","9.1093837015e-31","kg"),FT=ar("fermiCoupling","1.1663787e-5","GeV^-2"),IT=Rv("fineStructure",.0072973525693),PT=ar("hartreeEnergy","4.3597447222071e-18","J"),BT=ar("protonMass","1.67262192369e-27","kg"),kT=ar("deuteronMass","3.3435830926e-27","kg"),$T=ar("neutronMass","1.6749271613e-27","kg"),OT=ar("quantumOfCirculation","3.6369475516e-4","m^2 s^-1"),RT=ar("rydberg","10973731.568160","m^-1"),LT=ar("thomsonCrossSection","6.6524587321e-29","m^2"),VT=Rv("weakMixingAngle",.2229),UT=Rv("efimovFactor",22.7),qT=ar("atomicMass","1.66053906660e-27","kg"),zT=ar("avogadro","6.02214076e23","mol^-1"),HT=ar("boltzmann","1.380649e-23","J K^-1"),GT=ar("faraday","96485.33212331001","C mol^-1"),WT=ar("firstRadiation","3.7417718521927573e-16","W m^2"),YT=ar("loschmidt","2.686780111798444e25","m^-3"),jT=ar("gasConstant","8.31446261815324","J K^-1 mol^-1"),ZT=ar("molarPlanckConstant","3.990312712893431e-10","J s mol^-1"),JT=ar("molarVolume","0.022413969545014137","m^3 mol^-1"),XT=Rv("sackurTetrode",-1.16487052358),QT=ar("secondRadiation","0.014387768775039337","m K"),KT=ar("stefanBoltzmann","5.67037441918443e-8","W m^-2 K^-4"),eD=ar("wienDisplacement","2.897771955e-3","m K"),tD=ar("molarMass","0.99999999965e-3","kg mol^-1"),rD=ar("molarMassC12","11.9999999958e-3","kg mol^-1"),nD=ar("gravity","9.80665","m s^-2"),iD=ar("planckLength","1.616255e-35","m"),aD=ar("planckMass","2.176435e-8","kg"),oD=ar("planckTime","5.391245e-44","s"),sD=ar("planckCharge","1.87554603778e-18","C"),uD=ar("planckTemperature","1.416785e+32","K");function ar(t,e,r){var n=["config","Unit","BigNumber"];return M(t,n,i=>{var{config:a,Unit:o,BigNumber:s}=i,l=a.number==="BigNumber"?new s(e):parseFloat(e),u=new o(l,r);return u.fixPrefix=!0,u})}function Rv(t,e){var r=["config","BigNumber"];return M(t,r,n=>{var{config:i,BigNumber:a}=n;return i.number==="BigNumber"?new a(e):e})}var aie="apply",oie=["typed","isInteger"],lD=M(aie,oie,t=>{var{typed:e,isInteger:r}=t,n=Zl({typed:e,isInteger:r});return e("apply",{"...any":function(a){var o=a[1];At(o)?a[1]=o-1:ft(o)&&(a[1]=o.minus(1));try{return n.apply(null,a)}catch(s){throw Zr(s)}}})},{isTransformFunction:!0});var sie="column",uie=["typed","Index","matrix","range"],cD=M(sie,uie,t=>{var{typed:e,Index:r,matrix:n,range:i}=t,a=fm({typed:e,Index:r,matrix:n,range:i});return e("column",{"...any":function(s){var l=s.length-1,u=s[l];At(u)&&(s[l]=u-1);try{return a.apply(null,s)}catch(c){throw Zr(c)}}})},{isTransformFunction:!0});function Bf(t,e,r){var n=t.filter(function(l){return Gr(l)&&!(l.name in e)&&!r.has(l.name)})[0];if(!n)throw new Error('No undefined variable found in inline expression "'+t+'"');var i=n.name,a=new Map,o=new ff(r,a,new Set([i])),s=t.compile();return function(u){return a.set(i,u),s.evaluate(o)}}var lie="transformCallback",cie=["typed"],kf=M(lie,cie,t=>{var{typed:e}=t;return function(n,i){return e.isTypedFunction(n)?r(n,i):gU(n,n.length,i)};function r(n,i){var a=Object.fromEntries(Object.entries(n.signatures).map(o=>{var[s,l]=o,u=s.split(",").length;return e.isTypedFunction(l)?[s,r(l,i)]:[s,gU(l,u,i)]}));return typeof n.name=="string"?e(n.name,a):e(a)}});function gU(t,e,r){return e===r?t:e===r+1?function(){for(var n=arguments.length,i=new Array(n),a=0;ar+1?function(){for(var n=arguments.length,i=new Array(n),a=0;ae+1)}var fie="filter",pie=["typed"],fD=M(fie,pie,t=>{var{typed:e}=t;function r(i,a,o){var s=pm({typed:e}),l=kf({typed:e});if(i.length===0)return s();var u=i[0];if(i.length===1)return s(u);var c=i.length-1,f=i[c];return u&&(u=n(u,o)),f&&(Gr(f)||ms(f)?f=n(f,o):f=Bf(f,a,o)),s(u,l(f,c))}r.rawArgs=!0;function n(i,a){return i.compile().evaluate(a)}return r},{isTransformFunction:!0});var mie="forEach",die=["typed"],pD=M(mie,die,t=>{var{typed:e}=t,r=mm({typed:e}),n=kf({typed:e});function i(o,s,l){if(o.length===0)return r();var u=o[0];if(o.length===1)return r(u);var c=o.length-1,f=o[c];return u&&(u=a(u,l)),f&&(Gr(f)||ms(f)?f=a(f,l):f=Bf(f,s,l)),r(u,n(f,c))}i.rawArgs=!0;function a(o,s){return o.compile().evaluate(s)}return i},{isTransformFunction:!0});var hie="index",gie=["Index","getMatrixDataType"],mD=M(hie,gie,t=>{var{Index:e,getMatrixDataType:r}=t;return function(){for(var i=[],a=0,o=arguments.length;a0?0:2;else if(s&&s.isSet===!0)s=s.map(function(u){return u-1});else if(vr(s)||rt(s))r(s)!=="boolean"&&(s=s.map(function(u){return u-1}));else if(At(s))s--;else if(ft(s))s=s.toNumber()-1;else if(typeof s!="string")throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");i[a]=s}var l=new e;return e.apply(l,i),l}},{isTransformFunction:!0});var vie="map",yie=["typed"],dD=M(vie,yie,t=>{var{typed:e}=t,r=dm({typed:e}),n=kf({typed:e});function i(a,o,s){if(a.length===0)return r();if(a.length===1)return r(a[0]);var l=a.length-1,u=a.slice(0,l),c=a[l];return u=u.map(m=>f(m,s)),c&&(Gr(c)||ms(c)?c=f(c,s):c=Bf(c,o,s)),r(...u,n(c,l));function f(m,p){return m.compile().evaluate(p)}}return i.rawArgs=!0,i},{isTransformFunction:!0});function yU(t){return At(t)?t-1:ft(t)?t.minus(1):t}function xU(t){return At(t)||ft(t)}function Li(t){if(t.length===2&&Tn(t[0])){t=t.slice();var e=t[1];xU(e)&&(t[1]=yU(e))}return t}var xie="max",bie=["typed","config","numeric","larger"],hD=M(xie,bie,t=>{var{typed:e,config:r,numeric:n,larger:i}=t,a=wm({typed:e,config:r,numeric:n,larger:i});return e("max",{"...any":function(s){s=Li(s);try{return a.apply(null,s)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var wie="mean",_ie=["typed","add","divide"],gD=M(wie,_ie,t=>{var{typed:e,add:r,divide:n}=t,i=Dm({typed:e,add:r,divide:n});return e("mean",{"...any":function(o){o=Li(o);try{return i.apply(null,o)}catch(s){throw Zr(s)}}})},{isTransformFunction:!0});var Aie="min",Sie=["typed","config","numeric","smaller"],vD=M(Aie,Sie,t=>{var{typed:e,config:r,numeric:n,smaller:i}=t,a=_m({typed:e,config:r,numeric:n,smaller:i});return e("min",{"...any":function(s){s=Li(s);try{return a.apply(null,s)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var Eie="range",Tie=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],yD=M(Eie,Tie,t=>{var{typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c}=t,f=gm({typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c});return e("range",{"...any":function(p){var d=p.length-1,h=p[d];return typeof h!="boolean"&&p.push(!0),f.apply(null,p)}})},{isTransformFunction:!0});var Die="row",Mie=["typed","Index","matrix","range"],xD=M(Die,Mie,t=>{var{typed:e,Index:r,matrix:n,range:i}=t,a=vm({typed:e,Index:r,matrix:n,range:i});return e("row",{"...any":function(s){var l=s.length-1,u=s[l];At(u)&&(s[l]=u-1);try{return a.apply(null,s)}catch(c){throw Zr(c)}}})},{isTransformFunction:!0});var Cie="subset",Nie=["typed","matrix","zeros","add"],bD=M(Cie,Nie,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t,a=ym({typed:e,matrix:r,zeros:n,add:i});return e("subset",{"...any":function(s){try{return a.apply(null,s)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var Fie="concat",Iie=["typed","matrix","isInteger"],wD=M(Fie,Iie,t=>{var{typed:e,matrix:r,isInteger:n}=t,i=cm({typed:e,matrix:r,isInteger:n});return e("concat",{"...any":function(o){var s=o.length-1,l=o[s];At(l)?o[s]=l-1:ft(l)&&(o[s]=l.minus(1));try{return i.apply(null,o)}catch(u){throw Zr(u)}}})},{isTransformFunction:!0});var bU="diff",Pie=["typed","matrix","subtract","number","bignumber"],_D=M(bU,Pie,t=>{var{typed:e,matrix:r,subtract:n,number:i,bignumber:a}=t,o=hm({typed:e,matrix:r,subtract:n,number:i,bignumber:a});return e(bU,{"...any":function(l){l=Li(l);try{return o.apply(null,l)}catch(u){throw Zr(u)}}})},{isTransformFunction:!0});var Bie="std",kie=["typed","map","sqrt","variance"],AD=M(Bie,kie,t=>{var{typed:e,map:r,sqrt:n,variance:i}=t,a=Nm({typed:e,map:r,sqrt:n,variance:i});return e("std",{"...any":function(s){s=Li(s);try{return a.apply(null,s)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var wU="sum",$ie=["typed","config","add","numeric"],SD=M(wU,$ie,t=>{var{typed:e,config:r,add:n,numeric:i}=t,a=Em({typed:e,config:r,add:n,numeric:i});return e(wU,{"...any":function(s){s=Li(s);try{return a.apply(null,s)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var Oie="quantileSeq",Rie=["typed","bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger"],ED=M(Oie,Rie,t=>{var{typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m}=t,p=Cm({typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m});return e("quantileSeq",{"Array | Matrix, number | BigNumber":p,"Array | Matrix, number | BigNumber, number":(h,x,b)=>p(h,x,d(b)),"Array | Matrix, number | BigNumber, boolean":p,"Array | Matrix, number | BigNumber, boolean, number":(h,x,b,T)=>p(h,x,b,d(T)),"Array | Matrix, Array | Matrix":p,"Array | Matrix, Array | Matrix, number":(h,x,b)=>p(h,x,d(b)),"Array | Matrix, Array | Matrix, boolean":p,"Array | Matrix, Array | Matrix, boolean, number":(h,x,b,T)=>p(h,x,b,d(T))});function d(h){return Li([[],h])[1]}},{isTransformFunction:!0});var _U="cumsum",Lie=["typed","add","unaryPlus"],TD=M(_U,Lie,t=>{var{typed:e,add:r,unaryPlus:n}=t,i=Tm({typed:e,add:r,unaryPlus:n});return e(_U,{"...any":function(o){if(o.length===2&&Tn(o[0])){var s=o[1];At(s)?o[1]=s-1:ft(s)&&(o[1]=s.minus(1))}try{return i.apply(null,o)}catch(l){throw Zr(l)}}})},{isTransformFunction:!0});var AU="variance",Vie=["typed","add","subtract","multiply","divide","apply","isNaN"],DD=M(AU,Vie,t=>{var{typed:e,add:r,subtract:n,multiply:i,divide:a,apply:o,isNaN:s}=t,l=Mm({typed:e,add:r,subtract:n,multiply:i,divide:a,apply:o,isNaN:s});return e(AU,{"...any":function(c){c=Li(c);try{return l.apply(null,c)}catch(f){throw Zr(f)}}})},{isTransformFunction:!0});var SU="print",Uie=["typed","matrix","zeros","add"],MD=M(SU,Uie,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t,a=xm({typed:e,matrix:r,zeros:n,add:i});return e(SU,{"string, Object | Array":function(l,u){return a(o(l),u)},"string, Object | Array, number | Object":function(l,u,c){return a(o(l),u,c)}});function o(s){return s.replace(av,l=>{var u=l.slice(1).split("."),c=u.map(function(f){return!isNaN(f)&&f.length>0?parseInt(f)-1:f});return"$"+c.join(".")})}},{isTransformFunction:!0});var qie="and",zie=["typed","matrix","zeros","add","equalScalar","not","concat"],CD=M(qie,zie,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=bm({typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o});function l(u,c,f){var m=u[0].compile().evaluate(f);if(!Tn(m)&&!s(m,!0))return!1;var p=u[1].compile().evaluate(f);return s(m,p)}return l.rawArgs=!0,l},{isTransformFunction:!0});var Hie="or",Gie=["typed","matrix","equalScalar","DenseMatrix","concat"],ND=M(Hie,Gie,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=lm({typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a});function s(l,u,c){var f=l[0].compile().evaluate(c);if(!Tn(f)&&o(f,!1))return!0;var m=l[1].compile().evaluate(c);return o(f,m)}return s.rawArgs=!0,s},{isTransformFunction:!0});var Wie="bitAnd",Yie=["typed","matrix","zeros","add","equalScalar","not","concat"],FD=M(Wie,Yie,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=sm({typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o});function l(u,c,f){var m=u[0].compile().evaluate(f);if(!Tn(m)){if(isNaN(m))return NaN;if(m===0||m===!1)return 0}var p=u[1].compile().evaluate(f);return s(m,p)}return l.rawArgs=!0,l},{isTransformFunction:!0});var jie="bitOr",Zie=["typed","matrix","equalScalar","DenseMatrix","concat"],ID=M(jie,Zie,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=um({typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a});function s(l,u,c){var f=l[0].compile().evaluate(c);if(!Tn(f)){if(isNaN(f))return NaN;if(f===-1)return-1;if(f===!0)return 1}var m=l[1].compile().evaluate(c);return o(f,m)}return s.rawArgs=!0,s},{isTransformFunction:!0});var We=j0({config:Ie}),Jr=X0({}),PD=nT({BigNumber:We,config:Ie}),EU=XE({}),TU=IT({BigNumber:We,config:Ie}),Wu=ew({}),BD=fT({Complex:Jr}),DU=KE({BigNumber:We,config:Ie}),MU=oT({BigNumber:We,config:Ie}),CU=uT({BigNumber:We,config:Ie}),Pm=rw({}),NU=eT({BigNumber:We,config:Ie}),FU=QE({}),IU=iT({BigNumber:We,config:Ie}),PU=tw({}),kD=U0({}),BU=lT({BigNumber:We,config:Ie}),kU=XT({BigNumber:We,config:Ie}),$D=rT({BigNumber:We,config:Ie}),$U=JE({}),OU=pT({}),sr=cw({Matrix:Pm}),RU=UT({BigNumber:We,config:Ie}),LU=aT({BigNumber:We,config:Ie}),Lv=tT({BigNumber:We,config:Ie}),OD=ZE({}),VU=cT({BigNumber:We,config:Ie}),te=V0({BigNumber:We,Complex:Jr,DenseMatrix:sr,Fraction:Wu}),UU=VT({BigNumber:We,config:Ie}),Vi=N_({typed:te}),qU=MA({Complex:Jr,config:Ie,typed:te}),zU=NA({BigNumber:We,typed:te}),HU=IA({BigNumber:We,Complex:Jr,config:Ie,typed:te}),Wn=F_({typed:te}),GU=o1({typed:te}),WU=kA({BigNumber:We,Complex:Jr,config:Ie,typed:te}),YU=OA({typed:te}),RD=RA({typed:te}),jU=VA({Complex:Jr,config:Ie,typed:te}),ZU=v_({typed:te}),JU=i1({typed:te}),XU=x_({typed:te}),QU=fw({typed:te}),Bm=dE({typed:te}),km=w_({Complex:Jr,typed:te}),Yu=s1({typed:te}),Vv=UA({typed:te}),KU=zA({BigNumber:We,typed:te}),e5=GA({BigNumber:We,typed:te}),t5=$_({typed:te}),pr=d_({config:Ie,typed:te}),r5=B1({typed:te}),LD=O_({typed:te}),n5=R_({Complex:Jr,typed:te}),i5=pm({typed:te}),$f=h1({typed:te}),a5=mm({typed:te}),Of=R1({typed:te}),Uv=v1({typed:te}),o5=U1({format:Of,typed:te}),qv=u1({typed:te}),ia=mw({typed:te}),iu=s_({config:Ie,typed:te}),ju=c_({config:Ie,typed:te}),jo=f_({equalScalar:pr,typed:te}),s5=sT({BigNumber:We,config:Ie}),u5=vE({Complex:Jr,typed:te}),l5=G_({Complex:Jr,config:Ie,typed:te}),VD=W_({Complex:Jr,config:Ie,typed:te}),Zu=dm({typed:te}),Dn=Y_({typed:te}),$m=c1({typed:te}),vs=g_({typed:te}),c5=V1({format:Of,typed:te}),f5=CE({config:Ie,typed:te}),p5=xm({typed:te}),m5=NE({config:Ie,typed:te}),zv=l1({typed:te}),d5=YA({BigNumber:We,typed:te}),UD=J_({BigNumber:We,Fraction:Wu,complex:km,typed:te}),Om=ZA({typed:te}),Yn=h_({Matrix:Pm,equalScalar:pr,typed:te}),h5=D_({typed:te}),g5=Q_({typed:te}),v5=y_({typed:te}),ja=I_({typed:te}),y5=XA({typed:te}),Hv=m_({typed:te}),x5=CA({Complex:Jr,config:Ie,typed:te}),b5=PA({BigNumber:We,typed:te}),Gv=Zl({isInteger:ia,typed:te}),w5=BA({BigNumber:We,Complex:Jr,config:Ie,typed:te}),Za=b_({BigNumber:We,typed:te}),_5=hE({typed:te}),A5=qA({typed:te}),S5=WA({BigNumber:We,typed:te}),Rf=p_({typed:te}),E5=z1({typed:te}),T5=FE({config:Ie,typed:te}),D5=jA({BigNumber:We,typed:te}),M5=JA({typed:te}),C5=TA({SparseMatrix:Yn,typed:te}),Eo=X_({Complex:Jr,config:Ie,typed:te}),N5=D1({typed:te}),F5=QA({typed:te}),Zo=M_({typed:te}),I5=FA({BigNumber:We,Complex:Jr,config:Ie,typed:te}),P5=L1({format:Of,typed:te}),B5=HA({BigNumber:We,typed:te}),Lf=__({Fraction:Wu,typed:te}),Ju=u_({typed:te}),ze=A_({DenseMatrix:sr,Matrix:Pm,SparseMatrix:Yn,typed:te}),k5=S_({isZero:jo,matrix:ze,typed:te}),$5=$1({isNaN:Rf,isNumeric:Ju,typed:te}),Ja=H1({bignumber:Za,fraction:Lf,number:vs}),qD=O1({config:Ie,multiplyScalar:Dn,numeric:Ja,typed:te}),zD=_1({isInteger:ia,matrix:ze,typed:te}),pi=T1({matrix:ze,config:Ie,typed:te}),Vf=M1({matrix:ze,typed:te}),HD=e1({BigNumber:We,config:Ie,matrix:ze,typed:te}),mi=N1({BigNumber:We,config:Ie,matrix:ze,typed:te}),O5=$A({Complex:Jr,config:Ie,typed:te}),GD=P_({BigNumber:We,Complex:Jr,Fraction:Wu,config:Ie,isNegative:iu,matrix:ze,typed:te,unaryMinus:Zo}),Sr=cm({isInteger:ia,matrix:ze,typed:te}),R5=p1({prod:qD,size:pi,typed:te}),Wv=C1({conj:Yu,transpose:Vf,typed:te}),WD=d1({DenseMatrix:sr,SparseMatrix:Yn,matrix:ze,typed:te}),dn=G1({numeric:Ja,typed:te}),Uf=Q1({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,divideScalar:dn,equalScalar:pr,matrix:ze,typed:te}),Xa=lA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),L5=l_({isNumeric:Ju,typed:te}),au=y1({BigNumber:We,DenseMatrix:sr,SparseMatrix:Yn,config:Ie,matrix:ze,typed:te}),V5=x1({matrix:ze,multiplyScalar:Dn,typed:te}),Rm=dA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,config:Ie,matrix:ze,typed:te}),U5=nA({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te,zeros:mi}),YD=K1({DenseMatrix:sr,divideScalar:dn,equalScalar:pr,matrix:ze,multiplyScalar:Dn,subtractScalar:ja,typed:te}),Yv=T_({flatten:$f,matrix:ze,size:pi,typed:te}),q5=Z_({BigNumber:We,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),z5=w1({BigNumber:We,config:Ie,matrix:ze,typed:te}),jv=VS({addScalar:Wn,complex:km,conj:Yu,divideScalar:dn,equal:Xa,identity:au,isZero:jo,matrix:ze,multiplyScalar:Dn,sign:UD,sqrt:Eo,subtractScalar:ja,typed:te,unaryMinus:Zo,zeros:mi}),H5=A1({config:Ie,matrix:ze}),G5=iA({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te,zeros:mi}),tc=Y1({BigNumber:We,DenseMatrix:sr,config:Ie,equalScalar:pr,matrix:ze,typed:te,zeros:mi}),Ui=fA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,config:Ie,matrix:ze,typed:te}),Pn=K_({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,subtractScalar:ja,typed:te,unaryMinus:Zo}),W5=q1({concat:Sr,matrix:ze,typed:te}),Zv=C_({config:Ie,numeric:Ja,typed:te}),Jv=eA({DenseMatrix:sr,divideScalar:dn,equalScalar:pr,matrix:ze,multiplyScalar:Dn,subtractScalar:ja,typed:te}),Y5=f1({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,matrix:ze,typed:te}),br=lS({DenseMatrix:sr,SparseMatrix:Yn,addScalar:Wn,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),j5=LA({BigNumber:We,DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),Z5=sm({concat:Sr,equalScalar:pr,matrix:ze,typed:te}),J5=um({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),X5=a1({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,matrix:ze,typed:te}),Q5=BE({addScalar:Wn,combinations:Bm,divideScalar:dn,isInteger:ia,isNegative:iu,multiplyScalar:Dn,typed:te}),Xu=oA({BigNumber:We,DenseMatrix:sr,Fraction:Wu,concat:Sr,config:Ie,equalScalar:pr,matrix:ze,typed:te}),jD=uA({concat:Sr,matrix:ze,typed:te}),K5=Tm({add:br,typed:te,unaryPlus:Zv}),Xv=hA({equal:Xa,typed:te}),e8=hm({matrix:ze,number:vs,subtract:Pn,typed:te}),t8=uE({abs:Vi,addScalar:Wn,deepEqual:Xv,divideScalar:dn,multiplyScalar:Dn,sqrt:Eo,subtractScalar:ja,typed:te}),Lm=pS({addScalar:Wn,conj:Yu,multiplyScalar:Dn,size:pi,typed:te}),r8=cA({compareText:jD,isZero:jo,typed:te}),ZD=am({DenseMatrix:sr,config:Ie,equalScalar:pr,matrix:ze,round:tc,typed:te,zeros:mi}),n8=z_({BigNumber:We,DenseMatrix:sr,concat:Sr,config:Ie,equalScalar:pr,matrix:ze,round:tc,typed:te,zeros:mi}),i8=cS({abs:Vi,addScalar:Wn,divideScalar:dn,isPositive:ju,multiplyScalar:Dn,smaller:Ui,sqrt:Eo,typed:te}),JD=xA({DenseMatrix:sr,smaller:Ui}),Ei=bA({ImmutableDenseMatrix:JD,getMatrixDataType:Uv}),qi=mA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,config:Ie,matrix:ze,typed:te}),Qv=j1({Complex:Jr,config:Ie,divideScalar:dn,typeOf:Hv,typed:te}),a8=tA({DenseMatrix:sr,divideScalar:dn,equalScalar:pr,matrix:ze,multiplyScalar:Dn,subtractScalar:ja,typed:te}),o8=E_({flatten:$f,matrix:ze,size:pi,typed:te}),s8=_m({config:Ie,numeric:Ja,smaller:Ui,typed:te}),XD=om({DenseMatrix:sr,concat:Sr,config:Ie,equalScalar:pr,matrix:ze,round:tc,typed:te,zeros:mi}),qr=j_({addScalar:Wn,dot:Lm,equalScalar:pr,matrix:ze,multiplyScalar:Dn,typed:te}),u8=J1({Complex:Jr,config:Ie,divideScalar:dn,typed:te}),l8=lm({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),Vm=vA({compare:Xu,isNaN:Rf,isNumeric:Ju,typed:te}),c8=aA({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te,zeros:mi}),QD=qS({SparseMatrix:Yn,abs:Vi,add:br,divideScalar:dn,larger:qi,largerEq:Rm,multiply:qr,subtract:Pn,transpose:Vf,typed:te}),Ea=ym({add:br,matrix:ze,typed:te,zeros:mi}),Kv=Em({add:br,config:Ie,numeric:Ja,typed:te}),f8=mS({add:br,matrix:ze,typed:te}),KD=rA({DenseMatrix:sr,divideScalar:dn,equalScalar:pr,matrix:ze,multiplyScalar:Dn,subtractScalar:ja,typed:te}),p8=WE({Complex:Jr,add:br,multiply:qr,number:vs,typed:te}),ey=k_({DenseMatrix:sr,config:Ie,equalScalar:pr,matrix:ze,round:tc,typed:te,zeros:mi}),Jo=sA({compare:Xu,typed:te}),m8=kE({addScalar:Wn,combinations:Bm,isInteger:ia,isNegative:iu,isPositive:ju,larger:qi,typed:te}),d8=m1({matrix:ze,multiply:qr,subtract:Pn,typed:te}),eM=QS({divideScalar:dn,isZero:jo,matrix:ze,multiply:qr,subtractScalar:ja,typed:te,unaryMinus:Zo}),h8=r1({concat:Sr,equalScalar:pr,matrix:ze,multiplyScalar:Dn,typed:te}),tM=wA({larger:qi,smaller:Ui}),rM=V_({Complex:Jr,DenseMatrix:sr,ceil:ey,equalScalar:pr,floor:ZD,matrix:ze,typed:te,zeros:mi}),nM=dS({Index:Ei,typed:te}),g8=lE({abs:Vi,add:br,addScalar:Wn,config:Ie,divideScalar:dn,equalScalar:pr,flatten:$f,isNumeric:Ju,isZero:jo,matrix:ze,multiply:qr,multiplyScalar:Dn,smaller:Ui,subtract:Pn,typed:te}),v8=t1({BigNumber:We,add:br,config:Ie,equal:Xa,isInteger:ia,mod:XD,smaller:Ui,typed:te,xgcd:HD}),y8=H_({concat:Sr,equalScalar:pr,matrix:ze,typed:te}),x8=Z1({Complex:Jr,config:Ie,divideScalar:dn,log:Qv,typed:te}),ty=wm({config:Ie,larger:qi,numeric:Ja,typed:te}),b8=KA({DenseMatrix:sr,Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),w8=tS({DenseMatrix:sr,Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),_8=nS({Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),A8=aS({Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),rc=pA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,config:Ie,matrix:ze,typed:te}),S8=yA({compare:Xu,compareNatural:Jo,matrix:ze,typed:te}),E8=gA({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,config:Ie,equalScalar:pr,matrix:ze,typed:te}),T8=bm({concat:Sr,equalScalar:pr,matrix:ze,not:$m,typed:te,zeros:mi}),nc=gm({bignumber:Za,matrix:ze,add:br,config:Ie,isPositive:ju,larger:qi,largerEq:Rm,smaller:Ui,smallerEq:rc,typed:te}),D8=vm({Index:Ei,matrix:ze,range:nc,typed:te}),iM=eS({DenseMatrix:sr,Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),M8=iS({Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),aM=sS({Index:Ei,concat:Sr,setDifference:iM,size:pi,subset:Ea,typed:te}),oM=_A({FibonacciHeap:tM,addScalar:Wn,equalScalar:pr}),sM=fm({Index:Ei,matrix:ze,range:nc,typed:te}),Qu=KS({abs:Vi,addScalar:Wn,det:eM,divideScalar:dn,identity:au,matrix:ze,multiply:qr,typed:te,unaryMinus:Zo}),uM=LS({DenseMatrix:sr,Spa:oM,SparseMatrix:Yn,abs:Vi,addScalar:Wn,divideScalar:dn,equalScalar:pr,larger:qi,matrix:ze,multiplyScalar:Dn,subtractScalar:ja,typed:te,unaryMinus:Zo}),C8=eE({Complex:Jr,add:br,ctranspose:Wv,deepEqual:Xv,divideScalar:dn,dot:Lm,dotDivide:Uf,equal:Xa,inv:Qu,matrix:ze,multiply:qr,typed:te}),To=W1({Complex:Jr,config:Ie,fraction:Lf,identity:au,inv:Qu,matrix:ze,multiply:qr,number:vs,typed:te}),lM=rS({DenseMatrix:sr,Index:Ei,compareNatural:Jo,size:pi,subset:Ea,typed:te}),N8=uS({Index:Ei,concat:Sr,setIntersect:lM,setSymDifference:aM,size:pi,subset:Ea,typed:te}),F8=nE({abs:Vi,add:br,identity:au,inv:Qu,map:Zu,max:ty,multiply:qr,size:pi,sqrt:Eo,subtract:Pn,typed:te}),qt=SA({BigNumber:We,Complex:Jr,Fraction:Wu,abs:Vi,addScalar:Wn,config:Ie,divideScalar:dn,equal:Xa,fix:rM,format:Of,isNumeric:Ju,multiplyScalar:Dn,number:vs,pow:To,round:tc,subtractScalar:ja}),I8=xT({BigNumber:We,Unit:qt,config:Ie}),P8=eD({BigNumber:We,Unit:qt,config:Ie}),B8=qT({BigNumber:We,Unit:qt,config:Ie}),k8=_T({BigNumber:We,Unit:qt,config:Ie}),$8=HT({BigNumber:We,Unit:qt,config:Ie}),O8=AT({BigNumber:We,Unit:qt,config:Ie}),R8=bT({BigNumber:We,Unit:qt,config:Ie}),L8=kT({BigNumber:We,Unit:qt,config:Ie}),V8=X1({DenseMatrix:sr,SparseMatrix:Yn,concat:Sr,equalScalar:pr,matrix:ze,pow:To,typed:te}),U8=yT({BigNumber:We,Unit:qt,config:Ie}),q8=wT({BigNumber:We,Unit:qt,config:Ie}),z8=rE({abs:Vi,add:br,identity:au,inv:Qu,multiply:qr,typed:te}),H8=GT({BigNumber:We,Unit:qt,config:Ie}),cM=F1({addScalar:Wn,ceil:ey,conj:Yu,divideScalar:dn,dotDivide:Uf,exp:LD,i:BD,log2:VD,matrix:ze,multiplyScalar:Dn,pow:To,tau:$D,typed:te}),ry=gE({BigNumber:We,Complex:Jr,config:Ie,multiplyScalar:Dn,pow:To,typed:te}),G8=dT({BigNumber:We,Unit:qt,config:Ie}),W8=PT({BigNumber:We,Unit:qt,config:Ie}),Y8=I1({conj:Yu,dotDivide:Uf,fft:cM,typed:te}),j8=DT({BigNumber:We,Unit:qt,config:Ie}),Z8=YT({BigNumber:We,Unit:qt,config:Ie}),J8=vT({BigNumber:We,Unit:qt,config:Ie}),X8=tD({BigNumber:We,Unit:qt,config:Ie}),Q8=ZT({BigNumber:We,Unit:qt,config:Ie}),K8=$T({BigNumber:We,Unit:qt,config:Ie}),e6=TT({BigNumber:We,Unit:qt,config:Ie}),t6=sD({BigNumber:We,Unit:qt,config:Ie}),r6=iD({BigNumber:We,Unit:qt,config:Ie}),n6=uD({BigNumber:We,Unit:qt,config:Ie}),i6=BT({BigNumber:We,Unit:qt,config:Ie}),a6=OT({BigNumber:We,Unit:qt,config:Ie}),o6=gT({BigNumber:We,Unit:qt,config:Ie}),s6=RT({BigNumber:We,Unit:qt,config:Ie}),u6=QT({BigNumber:We,Unit:qt,config:Ie}),l6=mT({BigNumber:We,Unit:qt,config:Ie}),c6=KT({BigNumber:We,Unit:qt,config:Ie}),f6=LT({BigNumber:We,Unit:qt,config:Ie}),p6=zT({BigNumber:We,Unit:qt,config:Ie}),m6=MT({BigNumber:We,Unit:qt,config:Ie}),d6=DA({Unit:qt,typed:te}),di=sE({divideScalar:dn,equalScalar:pr,inv:Qu,matrix:ze,multiply:qr,typed:te}),h6=NT({BigNumber:We,Unit:qt,config:Ie}),qf=yE({gamma:ry,typed:te}),g6=WT({BigNumber:We,Unit:qt,config:Ie}),v6=nD({BigNumber:We,Unit:qt,config:Ie}),y6=ST({BigNumber:We,Unit:qt,config:Ie}),fM=HS({DenseMatrix:sr,lsolve:YD,lup:uM,matrix:ze,slu:QD,typed:te,usolve:Jv}),x6=ET({BigNumber:We,Unit:qt,config:Ie}),b6=rD({BigNumber:We,Unit:qt,config:Ie}),w6=bE({add:br,divide:di,factorial:qf,isInteger:ia,isPositive:ju,multiply:qr,typed:te}),_6=wE({factorial:qf,typed:te}),A6=aD({BigNumber:We,Unit:qt,config:Ie}),S6=GS({add:br,cbrt:GD,divide:di,equalScalar:pr,im:qv,isZero:jo,multiply:qr,re:zv,sqrt:Eo,subtract:Pn,typeOf:Hv,typed:te,unaryMinus:Zo}),E6=oS({compareNatural:Jo,typed:te}),T6=P1({abs:Vi,add:br,bignumber:Za,divide:di,isNegative:iu,isPositive:ju,larger:qi,map:Zu,matrix:ze,max:ty,multiply:qr,smaller:Ui,subtract:Pn,typed:te,unaryMinus:Zo}),pM=IE({bignumber:Za,addScalar:Wn,combinations:Bm,divideScalar:dn,factorial:qf,isInteger:ia,isNegative:iu,larger:qi,multiplyScalar:Dn,number:vs,pow:To,subtractScalar:ja,typed:te}),D6=EA({Unit:qt,typed:te}),M6=PE({addScalar:Wn,isInteger:ia,isNegative:iu,stirlingS2:pM,typed:te}),mM=tE({abs:Vi,add:br,addScalar:Wn,atan:RD,bignumber:Za,column:sM,complex:km,config:Ie,cos:Vv,diag:WD,divideScalar:dn,dot:Lm,equal:Xa,flatten:$f,im:qv,inv:Qu,larger:qi,matrix:ze,matrixFromColumns:Yv,multiply:qr,multiplyScalar:Dn,number:vs,qr:jv,re:zv,reshape:zD,sin:Om,size:pi,smaller:Ui,sqrt:Eo,subtract:Pn,typed:te,usolve:Jv,usolveAll:KD}),C6=FT({BigNumber:We,Unit:qt,config:Ie}),N6=jT({BigNumber:We,Unit:qt,config:Ie}),F6=xE({divide:di,dotDivide:Uf,isNumeric:Ju,log:Qv,map:Zu,matrix:ze,multiply:qr,sum:Kv,typed:te}),dM=Dm({add:br,divide:di,typed:te}),I6=JT({BigNumber:We,Unit:qt,config:Ie}),P6=hT({BigNumber:We,Unit:qt,config:Ie}),B6=Cm({bignumber:Za,add:br,compare:Xu,divide:di,isInteger:ia,larger:qi,multiply:qr,partitionSelect:Vm,smaller:Ui,smallerEq:rc,subtract:Pn,typed:te}),ny=Mm({add:br,apply:Gv,divide:di,isNaN:Rf,multiply:qr,subtract:Pn,typed:te}),k6=CT({BigNumber:We,Unit:qt,config:Ie}),hM=cE({add:br,compare:Xu,divide:di,partitionSelect:Vm,typed:te}),$6=mE({add:br,divide:di,matrix:ze,mean:dM,multiply:qr,pow:To,sqrt:Eo,subtract:Pn,sum:Kv,typed:te}),O6=YE({Complex:Jr,add:br,divide:di,matrix:ze,multiply:qr,typed:te}),R6=fE({abs:Vi,map:Zu,median:hM,subtract:Pn,typed:te}),L6=Nm({map:Zu,sqrt:Eo,typed:te,variance:ny}),V6=k1({BigNumber:We,Complex:Jr,add:br,config:Ie,divide:di,equal:Xa,factorial:qf,gamma:ry,isNegative:iu,multiply:qr,pi:Lv,pow:To,sin:Om,smallerEq:rc,subtract:Pn,typed:te}),iy=fS({abs:Vi,add:br,conj:Yu,ctranspose:Wv,eigs:mM,equalScalar:pr,larger:qi,matrix:ze,multiply:qr,pow:To,smaller:Ui,sqrt:Eo,typed:te}),gM=E1({BigNumber:We,DenseMatrix:sr,SparseMatrix:Yn,addScalar:Wn,config:Ie,cos:Vv,matrix:ze,multiplyScalar:Dn,norm:iy,sin:Om,typed:te,unaryMinus:Zo}),U6=oD({BigNumber:We,Unit:qt,config:Ie}),vM=aE({identity:au,matrix:ze,multiply:qr,norm:iy,qr:jv,subtract:Pn,typed:te}),q6=S1({multiply:qr,rotationMatrix:gM,typed:te}),yM=iE({abs:Vi,add:br,concat:Sr,identity:au,index:nM,lusolve:fM,matrix:ze,matrixFromColumns:Yv,multiply:qr,range:nc,schur:vM,subset:Ea,subtract:Pn,transpose:Vf,typed:te}),z6=oE({matrix:ze,multiply:qr,sylvester:yM,transpose:Vf,typed:te});var zf={},Um={},H6={},zi=hS({mathWithTransform:Um}),Hf=DS({Node:zi}),ou=MS({Node:zi}),ic=CS({Node:zi}),G6=FS({Node:zi}),Gf=vS({Node:zi}),W6=xS({Node:zi,ResultSet:kD}),Y6=bS({Node:zi}),Ku=SS({Node:zi}),j6=NS({Node:zi}),Jie=jE({classes:H6}),xM=YS({math:zf,typed:te}),Z6=ES({Node:zi,typed:te}),Xie=XS({Chain:xM,typed:te}),Wf=TS({Node:zi,size:pi}),Yf=gS({Node:zi,subset:Ea}),J6=yS({matrix:ze,Node:zi,subset:Ea}),el=IS({Unit:qt,Node:zi,math:zf}),tl=PS({Node:zi,SymbolNode:el,math:zf}),Xo=BS({AccessorNode:Yf,ArrayNode:Gf,AssignmentNode:J6,BlockNode:W6,ConditionalNode:Y6,ConstantNode:Ku,FunctionAssignmentNode:Z6,FunctionNode:tl,IndexNode:Wf,ObjectNode:Hf,OperatorNode:ou,ParenthesisNode:ic,RangeNode:j6,RelationalNode:G6,SymbolNode:el,config:Ie,numeric:Ja,typed:te}),X6=qE({ConstantNode:Ku,FunctionNode:tl,OperatorNode:ou,ParenthesisNode:ic,parse:Xo,typed:te}),bM=VE({bignumber:Za,fraction:Lf,AccessorNode:Yf,ArrayNode:Gf,ConstantNode:Ku,FunctionNode:tl,IndexNode:Wf,ObjectNode:Hf,OperatorNode:ou,SymbolNode:el,config:Ie,mathWithTransform:Um,matrix:ze,typed:te}),wM=kS({parse:Xo,typed:te}),_M=UE({AccessorNode:Yf,ArrayNode:Gf,ConstantNode:Ku,FunctionNode:tl,IndexNode:Wf,ObjectNode:Hf,OperatorNode:ou,ParenthesisNode:ic,SymbolNode:el,add:br,divide:di,equal:Xa,isZero:jo,multiply:qr,parse:Xo,pow:To,subtract:Pn,typed:te}),AM=$S({parse:Xo,typed:te}),Q6=WS({evaluate:AM}),K6=OS({evaluate:AM,parse:Xo}),ay=LE({AccessorNode:Yf,ArrayNode:Gf,ConstantNode:Ku,FunctionNode:tl,IndexNode:Wf,ObjectNode:Hf,OperatorNode:ou,ParenthesisNode:ic,SymbolNode:el,equal:Xa,parse:Xo,replacer:OD,resolve:X6,simplifyConstant:bM,simplifyCore:_M,typed:te}),Qie=zE({OperatorNode:ou,parse:Xo,simplify:ay,typed:te}),Kie=$E({parse:Xo,typed:te}),eae=RS({Parser:K6,typed:te}),tae=GE({bignumber:Za,fraction:Lf,AccessorNode:Yf,ArrayNode:Gf,ConstantNode:Ku,FunctionNode:tl,IndexNode:Wf,ObjectNode:Hf,OperatorNode:ou,ParenthesisNode:ic,SymbolNode:el,add:br,config:Ie,divide:di,equal:Xa,isZero:jo,mathWithTransform:Um,matrix:ze,multiply:qr,parse:Xo,pow:To,simplify:ay,simplifyConstant:bM,simplifyCore:_M,subtract:Pn,typed:te}),rae=HE({ConstantNode:Ku,FunctionNode:tl,OperatorNode:ou,ParenthesisNode:ic,SymbolNode:el,config:Ie,equal:Xa,isZero:jo,numeric:Ja,parse:Xo,simplify:ay,typed:te}),nae=JS({Help:Q6,mathWithTransform:Um,typed:te});sn(zf,{e:PD,false:EU,fineStructure:TU,i:BD,Infinity:DU,LN10:MU,LOG10E:CU,NaN:NU,null:FU,phi:IU,SQRT1_2:BU,sackurTetrode:kU,tau:$D,true:$U,E:PD,version:OU,efimovFactor:RU,LN2:LU,pi:Lv,replacer:OD,reviver:Jie,SQRT2:VU,typed:te,PI:Lv,weakMixingAngle:UU,abs:Vi,acos:qU,acot:zU,acsc:HU,addScalar:Wn,arg:GU,asech:WU,asinh:YU,atan:RD,atanh:jU,bigint:ZU,bitNot:JU,boolean:XU,clone:QU,combinations:Bm,complex:km,conj:Yu,cos:Vv,cot:KU,csc:e5,cube:t5,equalScalar:pr,erf:r5,exp:LD,expm1:n5,filter:i5,flatten:$f,forEach:a5,format:Of,getMatrixDataType:Uv,hex:o5,im:qv,isInteger:ia,isNegative:iu,isPositive:ju,isZero:jo,LOG2E:s5,lgamma:u5,log10:l5,log2:VD,map:Zu,multiplyScalar:Dn,not:$m,number:vs,oct:c5,pickRandom:f5,print:p5,random:m5,re:zv,sec:d5,sign:UD,sin:Om,splitUnit:h5,square:g5,string:v5,subtractScalar:ja,tan:y5,typeOf:Hv,acosh:x5,acsch:b5,apply:Gv,asec:w5,bignumber:Za,chain:Xie,combinationsWithRep:_5,cosh:A5,csch:S5,isNaN:Rf,isPrime:E5,randomInt:T5,sech:D5,sinh:M5,sparse:C5,sqrt:Eo,squeeze:N5,tanh:F5,unaryMinus:Zo,acoth:I5,bin:P5,coth:B5,fraction:Lf,isNumeric:Ju,matrix:ze,matrixFromFunction:k5,mode:$5,numeric:Ja,prod:qD,reshape:zD,size:pi,transpose:Vf,xgcd:HD,zeros:mi,asin:O5,cbrt:GD,concat:Sr,count:R5,ctranspose:Wv,diag:WD,divideScalar:dn,dotDivide:Uf,equal:Xa,hasNumericValue:L5,identity:au,kron:V5,largerEq:Rm,leftShift:U5,lsolve:YD,matrixFromColumns:Yv,nthRoot:q5,ones:z5,qr:jv,resize:H5,rightArithShift:G5,round:tc,smaller:Ui,subtract:Pn,to:W5,unaryPlus:Zv,usolve:Jv,xor:Y5,add:br,atan2:j5,bitAnd:Z5,bitOr:J5,bitXor:X5,catalan:Q5,compare:Xu,compareText:jD,cumsum:K5,deepEqual:Xv,diff:e8,distance:t8,dot:Lm,equalText:r8,floor:ZD,gcd:n8,hypot:i8,larger:qi,log:Qv,lsolveAll:a8,matrixFromRows:o8,min:s8,mod:XD,multiply:qr,nthRoots:u8,or:l8,partitionSelect:Vm,rightLogShift:c8,slu:QD,subset:Ea,sum:Kv,trace:f8,usolveAll:KD,zpk2tf:p8,ceil:ey,compareNatural:Jo,composition:m8,cross:d8,det:eM,dotMultiply:h8,fix:rM,index:nM,intersect:g8,invmod:v8,lcm:y8,log1p:x8,max:ty,setCartesian:b8,setDistinct:w8,setIsSubset:_8,setPowerset:A8,smallerEq:rc,sort:S8,unequal:E8,and:T8,range:nc,row:D8,setDifference:iM,setMultiplicity:M8,setSymDifference:aM,column:sM,inv:Qu,lup:uM,pinv:C8,pow:To,setIntersect:lM,setUnion:N8,sqrtm:F8,vacuumImpedance:I8,wienDisplacement:P8,atomicMass:B8,bohrMagneton:k8,boltzmann:$8,conductanceQuantum:O8,coulomb:R8,deuteronMass:L8,dotPow:V8,electricConstant:U8,elementaryCharge:q8,expm:z8,faraday:H8,fft:cM,gamma:ry,gravitationConstant:G8,hartreeEnergy:W8,ifft:Y8,klitzing:j8,loschmidt:Z8,magneticConstant:J8,molarMass:X8,molarPlanckConstant:Q8,neutronMass:K8,nuclearMagneton:e6,planckCharge:t6,planckLength:r6,planckTemperature:n6,protonMass:i6,quantumOfCirculation:a6,reducedPlanckConstant:o6,rydberg:s6,secondRadiation:u6,speedOfLight:l6,stefanBoltzmann:c6,thomsonCrossSection:f6,avogadro:p6,bohrRadius:m6,createUnit:d6,divide:di,electronMass:h6,factorial:qf,firstRadiation:g6,gravity:v6,inverseConductanceQuantum:y6,lusolve:fM,magneticFluxQuantum:x6,molarMassC12:b6,multinomial:w6,parse:Xo,permutations:_6,planckMass:A6,polynomialRoot:S6,resolve:X6,setSize:E6,simplifyConstant:bM,solveODE:T6,stirlingS2:pM,unit:D6,bellNumbers:M6,compile:wM,eigs:mM,fermiCoupling:C6,gasConstant:N6,kldivergence:F6,mean:dM,molarVolume:I6,planckConstant:P6,quantileSeq:B6,simplifyCore:_M,variance:ny,classicalElectronRadius:k6,evaluate:AM,median:hM,simplify:ay,symbolicEqual:Qie,corr:$6,freqz:O6,leafCount:Kie,mad:R6,parser:eae,rationalize:tae,std:L6,zeta:V6,derivative:rae,norm:iy,rotationMatrix:gM,help:nae,planckTime:U6,schur:vM,rotate:q6,sylvester:yM,lyap:z6,config:Ie});sn(Um,zf,{filter:fD({typed:te}),forEach:pD({typed:te}),map:dD({typed:te}),apply:lD({isInteger:ia,typed:te}),or:ND({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),and:CD({add:br,concat:Sr,equalScalar:pr,matrix:ze,not:$m,typed:te,zeros:mi}),concat:wD({isInteger:ia,matrix:ze,typed:te}),max:hD({config:Ie,larger:qi,numeric:Ja,typed:te}),print:MD({add:br,matrix:ze,typed:te,zeros:mi}),bitAnd:FD({add:br,concat:Sr,equalScalar:pr,matrix:ze,not:$m,typed:te,zeros:mi}),diff:_D({bignumber:Za,matrix:ze,number:vs,subtract:Pn,typed:te}),min:vD({config:Ie,numeric:Ja,smaller:Ui,typed:te}),subset:bD({add:br,matrix:ze,typed:te,zeros:mi}),bitOr:ID({DenseMatrix:sr,concat:Sr,equalScalar:pr,matrix:ze,typed:te}),cumsum:TD({add:br,typed:te,unaryPlus:Zv}),index:mD({Index:Ei,getMatrixDataType:Uv}),sum:SD({add:br,config:Ie,numeric:Ja,typed:te}),range:yD({bignumber:Za,matrix:ze,add:br,config:Ie,isPositive:ju,larger:qi,largerEq:Rm,smaller:Ui,smallerEq:rc,typed:te}),row:xD({Index:Ei,matrix:ze,range:nc,typed:te}),column:cD({Index:Ei,matrix:ze,range:nc,typed:te}),mean:gD({add:br,divide:di,typed:te}),quantileSeq:ED({add:br,bignumber:Za,compare:Xu,divide:di,isInteger:ia,larger:qi,multiply:qr,partitionSelect:Vm,smaller:Ui,smallerEq:rc,subtract:Pn,typed:te}),variance:DD({add:br,apply:Gv,divide:di,isNaN:Rf,multiply:qr,subtract:Pn,typed:te}),std:AD({map:Zu,sqrt:Eo,typed:te,variance:ny})});sn(H6,{BigNumber:We,Complex:Jr,Fraction:Wu,Matrix:Pm,Node:zi,ObjectNode:Hf,OperatorNode:ou,ParenthesisNode:ic,Range:PU,RelationalNode:G6,ResultSet:kD,ArrayNode:Gf,BlockNode:W6,ConditionalNode:Y6,ConstantNode:Ku,DenseMatrix:sr,RangeNode:j6,Chain:xM,FunctionAssignmentNode:Z6,SparseMatrix:Yn,IndexNode:Wf,ImmutableDenseMatrix:JD,Index:Ei,AccessorNode:Yf,AssignmentNode:J6,FibonacciHeap:tM,Spa:oM,Unit:qt,SymbolNode:el,FunctionNode:tl,Help:Q6,Parser:K6});xM.createProxy(zf);var oy=class extends fs{constructor(e){super(e),this.hidden=!1}buildVariables(){let e=0;this.expressionStr="",this.variables=[];for(let r of this.mountable.getDeclaration().templateDeclaration??[])if(typeof r!="string"){let n={bindTargetDeclaration:r,metadataSignal:new yn(void 0),uuid:Fr(),contextName:`MB_VAR_${e}`};this.variables.push(n),this.expressionStr+=n.contextName,e+=1}else this.expressionStr+=r;this.expression=wM(this.expressionStr)}buildMathJSContext(){let e={};for(let r of this.variables??[])!r.contextName||!r.metadataSignal||(e[r.contextName]=r.metadataSignal.get()??"");return e}computeValue(){if(!this.expression)return this.handleComputeError(new ul({errorLevel:"ERROR",effect:"failed to evaluate expression",cause:"expression is undefined"}));let e=this.buildMathJSContext();try{let r=`${this.expression.evaluate(e)}`;return{value:Oa(r),error:!1}}catch(r){return r instanceof Error?this.handleComputeError(new ul({errorLevel:"ERROR",effect:"failed to evaluate expression",cause:r,context:{expression:this.expressionStr,context:e}})):this.handleComputeError(new Error("failed to evaluate js expression because of unexpected thrown value"))}}mapValue(e){return e.value}onInitialRender(e){}onRerender(e,r){let n=Il(r?.value,this.mountable.plugin.settings.viewFieldDisplayNullAsEmpty)??"";r?.error?mt.addClass(e,"mb-error"):mt.removeClass(e,"mb-error"),e.innerText=n}handleComputeError(e){return console.warn(e),{error:!0,value:e.message}}};var sy=class extends fs{constructor(e){super(e),this.renderMarkdown=!1}buildVariables(){this.textParts=[];let e=0;this.variables=[];for(let r of this.mountable.getDeclaration().templateDeclaration??[])if(typeof r!="string"){let n={bindTargetDeclaration:r,metadataSignal:new yn(void 0),uuid:Fr(),contextName:`MB_VAR_${e}`};this.variables.push(n),this.textParts.push(n),e+=1}else this.textParts.push(r)}computeValue(){if(!this.textParts)throw new ul({errorLevel:"CRITICAL",effect:"failed to evaluate text view field",cause:"content parts is undefined"});return this.textParts.map(e=>typeof e=="string"?e:Il(e.metadataSignal.get(),this.mountable.plugin.settings.viewFieldDisplayNullAsEmpty)).join("")}mapValue(e){return e}onInitialRender(e){this.renderMarkdown=this.mountable.getArgument("renderMarkdown")?.value??!1,this.renderMarkdown&&mt.addClass(e,"mb-view-markdown")}async onRerender(e,r){let n=Il(r,this.mountable.plugin.settings.viewFieldDisplayNullAsEmpty)??"";this.renderMarkdown?(this.markdownUnloadCallback?.(),this.markdownUnloadCallback=await this.mountable.plugin.internal.renderMarkdown(n,e,this.mountable.getFilePath())):e.innerText=n}onUnmount(){super.onUnmount(),this.markdownUnloadCallback?.()}};var uy=class{constructor(e){this.plugin=e}createViewField(e){let r=e.declaration.viewFieldType;if(r==="math")return new oy(e);if(r==="text")return new sy(e);if(r==="link")return new Sg(e);if(r==="image")return new Ag(e);}};var ly=class extends qn{constructor(e,r,n,i,a){super(e,r,n),this.renderChildType=i,this.declaration=a,this.declarationString=a.declarationString,this.errorCollection=new Qt(this.getUuid()),this.errorCollection.merge(a.errorCollection)}hasArgument(e){return this.getArguments(e).length>0}getArgument(e){return this.getArguments(e).at(0)}getArguments(e){if(this.declaration.errorCollection.hasErrors())throw new Gt({errorLevel:"ERROR",effect:"an not retrieve arguments",cause:"viewFieldDeclaration has errors"});return this.declaration.argumentContainer.getAll(e)}getDeclaration(){return this.declaration}createViewField(){if(!this.errorCollection.hasErrors())try{this.viewField=this.plugin.api.viewFieldFactory.createViewField(this)}catch(e){this.errorCollection.add(e)}!this.errorCollection.hasErrors()&&!this.viewField&&this.errorCollection.add(new Gt({errorLevel:"CRITICAL",effect:"can't render view field",cause:"view field is undefined"}))}createErrorIndicator(e){this.plugin.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),mt.empty(e),mt.addClass(e,"mb-view"),this.createViewField(),this.errorCollection.hasErrors()){this.createErrorIndicator(e);return}let r=document.createElement("div");mt.addClass(r,"mb-view-wrapper");try{this.viewField?.mount(r)}catch(i){this.errorCollection.add(i)}this.createErrorIndicator(e),e.append(r);let n=this.getArguments("class");for(let i of n)mt.addClasses(r,i.value);mt.addClass(r,`mb-view-type-${this.declaration.viewFieldType}`),this.renderChildType==="block"?mt.addClass(e,"mb-view-block"):mt.addClass(e,"mb-view-inline")}onUnmount(e){super.onUnmount(e),this.viewField?.unmount(),Di(e,"view field")}};var cy=class{constructor(e){this.plugin=e}fromString(e){return Xn(rs,e)}fromStringAndValidate(e,r,n){return this.validate(e,this.fromString(e),r,n)}fromExistingDeclaration(e){if(e!==void 0)return{storageType:Ia(e.storageType),storagePath:Ia(e.storagePath),storageProp:e.storageProp.path.map(r=>({type:r.type,prop:Ia(r.prop)})),listenToChildren:e.listenToChildren}}validate(e,r,n,i){let a={};a.listenToChildren=r.listenToChildren,a.storageProp=new xu(r.storageProp.map(u=>new ml(u.type,u.prop.value))),r.storageType===void 0?a.storageType=this.plugin.metadataManager.defaultSource:a.storageType=this.validateStorageType(r.storageType,e);let o=r.storagePath!==void 0,s=r.storagePath??{value:n},l=this.plugin.metadataManager.getSource(a.storageType);if(l===void 0)throw new Gt({errorLevel:"CRITICAL",effect:"can not validate bind target",cause:`Source '${a.storageType}' not found. But validation was successful. This should not happen.`,context:{fullDeclaration:e,sources:[...this.plugin.metadataManager.sources.keys()]}});return a.storagePath=l.validateStoragePath(s,o,e,this),l.id==="scope"?this.resolveScope(a,i):a}resolveScope(e,r){if(r===void 0)throw new Vn("ERROR","Bind Target Scope Validator","Failed to resolve bind target scope, no scope provided");return e.storageType=r.scope.storageType,e.storagePath=r.scope.storagePath,e.storageProp=r.scope.storageProp.concat(e.storageProp),e}validateStorageType(e,r){for(let n of this.plugin.metadataManager.iterateSources())if(n===e.value)return n;throw new Vn("ERROR","Bind Target Validator",`Encountered invalid identifier. Expected token to be a storage type but received '${e?.value}'.`,r,e?.position)}validateStoragePathAsFilePath(e,r){let n=e?.value;if(n===void 0)throw new Vn("ERROR","Bind Target Validator","Failed to parse bind target. Bind target storage path is undefined.",r,e?.position);let i=this.plugin.internal.file.getPathByName(n);if(i===void 0)throw new Vn("ERROR","Bind Target Validator",`Failed to parse bind target. Bind target file path '${n}' not found.`,r,e?.position);return i}};var n9=zr(Ma()),qm=zr(ca());function EM(t){return t instanceof Error&&t.name==="ZodError"&&"issues"in t&&Array.isArray(t.issues)}var SM=class extends Error{name;details;constructor(t,e){super(t,e),this.name="ZodValidationError",this.details=aae(e)}toString(){return this.message}};function aae(t){if(t){let e=t.cause;if(EM(e))return e.issues}return[]}function e9(t){return t.length!==0}var oae=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function sae(t){return t.length===1?t[0].toString():t.reduce((e,r)=>{if(typeof r=="number")return e+"["+r.toString()+"]";if(r.includes('"'))return e+'["'+uae(r)+'"]';if(!oae.test(r))return e+'["'+r+'"]';let n=e.length===0?"":".";return e+n+r},"")}function uae(t){return t.replace(/"/g,'\\"')}var lae="; ",cae=99,t9="Validation error",fae=": ",pae=", or ";function mae(t={}){let{issueSeparator:e=lae,unionSeparator:r=pae,prefixSeparator:n=fae,prefix:i=t9,includePath:a=!0,maxIssuesInMessage:o=cae}=t;return s=>{let l=s.slice(0,o).map(u=>fy({issue:u,issueSeparator:e,unionSeparator:r,includePath:a})).join(e);return dae(l,i,n)}}function fy(t){let{issue:e,issueSeparator:r,unionSeparator:n,includePath:i}=t;if(e.code===Ue.invalid_union)return e.unionErrors.reduce((a,o)=>{let s=o.issues.map(l=>fy({issue:l,issueSeparator:r,unionSeparator:n,includePath:i})).join(r);return a.includes(s)||a.push(s),a},[]).join(n);if(e.code===Ue.invalid_arguments)return[e.message,...e.argumentsError.issues.map(a=>fy({issue:a,issueSeparator:r,unionSeparator:n,includePath:i}))].join(r);if(e.code===Ue.invalid_return_type)return[e.message,...e.returnTypeError.issues.map(a=>fy({issue:a,issueSeparator:r,unionSeparator:n,includePath:i}))].join(r);if(i&&e9(e.path)){if(e.path.length===1){let a=e.path[0];if(typeof a=="number")return`${e.message} at index ${a}`}return`${e.message} at "${sae(e.path)}"`}return e.message}function dae(t,e,r){return e!==null?t.length>0?[e,t].join(r):e:t.length>0?t:t9}function py(t,e={}){if(!EM(t))throw new TypeError(`Invalid zodError param; expected instance of ZodError. Did you mean to use the "${vae.name}" method instead?`);return r9(t,e)}function r9(t,e={}){let r=t.errors,n;return e9(r)?n=hae(e)(r):n=t.message,new SM(n,{cause:t})}function hae(t){return"messageBuilder"in t?t.messageBuilder:mae(t)}var gae=(t={})=>e=>EM(e)?r9(e,t):e instanceof Error?new SM(e.message,{cause:e}):new SM("Unknown error");function vae(t,e={}){return gae(e)(t)}var yae=qm.P.sequenceMap((t,e)=>e,qm.P.string("BUTTON"),qm.P.manyNotOf("[],^").separateBy(qm.P.string(",").trim(n9.P_UTILS.optionalWhitespace())).wrapString("[","]")),my=class{constructor(e){this.plugin=e}fromGroupString(e){let r=new Qt("ButtonGroup"),n=[];try{n=Xn(yae,e)}catch(i){r.add(i)}return{declarationString:e,referencedButtonIds:n,errorCollection:r}}validateGroup(e){return{declarationString:void 0,referencedButtonIds:e.referencedButtonIds,errorCollection:new Qt("ButtonGroup")}}fromString(e){let r=new Qt("Button"),n;try{let i=this.plugin.internal.parseYaml(e);n=this.validateConfig(i)}catch(i){r.add(i)}return{declarationString:e,config:n,errorCollection:r}}validateConfig(e){let r=WF(Lc,e);if(!r.success){let n=py(r.error,{unionSeparator:` -OR `,issueSeparator:" AND ",prefix:null,includePath:!1});throw new Cs({errorLevel:"ERROR",effect:"The validation for the button config failed.",cause:"Your button syntax seems to be invalid. Check that your button config follows what is described in the docs.",positionContext:n.message,docs:[jt.linkToButtonConfig()]})}return r.data}validate(e){let r=new Qt("Button"),n;try{n=this.validateConfig(e)}catch(i){r.add(i)}return{declarationString:void 0,config:n,errorCollection:r}}};var jf=class{constructor(){this.arguments=[]}add(e){this.arguments.push(e)}validate(){let e={};for(let r of Object.values(fn))e[r]=0;for(let r of this.arguments){let n=r.getConfig();if(e[n.type]+=1,e[n.type]>1&&!n.allowMultiple)throw new Hr({errorLevel:"ERROR",effect:"failed to validate argument container",cause:`argument '${n.type}' does not allow duplicates`,docs:[jt.linkToSearch(n.type)]})}}mergeByOverride(e){for(let r of e.arguments){let n=r.getConfig();n.allowMultiple||(this.arguments=this.arguments.filter(i=>i.getConfig().type!==n.type)),this.arguments.push(r)}return this.validate(),this}mergeByThrow(e){for(let r of e.arguments){let n=r.getConfig();if(!n.allowMultiple&&this.arguments.filter(i=>i.getConfig().type===n.type).length>0)throw new Hr({errorLevel:"ERROR",effect:"failed to merge argument container",cause:"can not merge FieldArgumentContainers, since arguments overlap"});this.arguments.push(r)}return this.validate(),this}getAll(e){return this.arguments.filter(r=>r.getConfig().type===e)}get(e){return this.getAll(e).at(0)}};var dy=class extends jf{getAll(e){return super.getAll(e)}get(e){return this.getAll(e).at(0)}};var Zf=class{parseValue(e){this.validateValues(e,this.getConfig().values),this._parseValue(e)}validateValues(e,r){if(r.find(n=>n.length===e.length)===void 0)throw new Hr({errorLevel:"WARNING",effect:`Failed to parse argument value for argument '${this.getConfig().type}'.`,cause:`Expected argument values to follow the form ${r.map(n=>n.length===0?"none":n.map(i=>`'${i.name}'`).join(", ")).join(" or ")}. Received arguments of length ${e.length}.`,docs:[jt.linkToSearch(this.getConfig().type)]})}isAllowed(e){return this.getConfig().allowedFieldTypes.length===0?!0:this.getConfig().allowedFieldTypes.includes(e)}getAllowedFieldsAsString(){return this.getConfig().allowedFieldTypes.length===0?"all":this.getConfig().allowedFieldTypes.join(", ")}};var Tr=class extends Zf{};var hy=class extends Tr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Nr.addLabels}};var gy=class extends Tr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Nr.allowOther}};var vy=class extends Tr{constructor(){super(...arguments);this.value=[]}_parseValue(r){this.value=r[0].value.split(" ")}getConfig(){return Nr.class}};var yy=class extends Tr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=Oa(r[0].value)}getConfig(){return Nr.defaultValue}};var xy=class extends Tr{constructor(){super(...arguments);this.value=void 0}_parseValue(r){if(this.value=Number.parseInt(r[0].value),Number.isNaN(this.value))throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'limit' must be of type number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]});if(this.value<=0)throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'limit' must be a positive number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Nr.limit}};var by=class extends Tr{constructor(){super(...arguments);this.value=100}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'maxValue' must be of type number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Nr.maxValue}};var wy=class extends Tr{constructor(){super(...arguments);this.value=0}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'minValue' must be of type number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Nr.minValue}};var _y=class extends Tr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Nr.multiLine}};var Ay=class extends Tr{constructor(){super(...arguments);this.value=!1}_parseValue(r){this.value=Oa(r[0].value)}getConfig(){return Nr.offValue}};var Sy=class extends Tr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=Oa(r[0].value)}getConfig(){return Nr.onValue}};var Ey=class extends Tr{constructor(){super(...arguments);this.value="";this.name=""}_parseValue(r){r.length===1?(this.value=Oa(r[0].value),this.name=r[0].value):r.length===2&&(this.value=Oa(r[0].value),this.name=r[1].value)}getConfig(){return Nr.option}};var Ty=class extends Tr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Nr.optionQuery}};var Dy=class extends Tr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Nr.placeholder}};var My=class extends Tr{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return Nr.showcase}};var Cy=class extends Tr{constructor(){super(...arguments);this.value=0}_parseValue(r){if(this.value=Number.parseFloat(r[0].value),Number.isNaN(this.value))throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'stepSize' must be of type number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]});if(this.value<=0)throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:"value of argument 'stepSize' must be a positive number",docs:[jt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Nr.stepSize}};var Ny=class extends Tr{constructor(){super(...arguments);this.value=""}_parseValue(r){this.value=r[0].value}getConfig(){return Nr.title}};function i9(t,e,r){return r==="true"?`[[${t}|${e}]]`:r==="partial"?`[[${e}]]`:`${e}`}var Fy=class extends Tr{constructor(){super(...arguments);this.value="true"}_parseValue(r){let n=r[0]?.value.toLowerCase();if(n===void 0){this.value="true";return}if(n==="true"||n==="partial"||n==="false"){this.value=n;return}throw new Hr({errorLevel:"WARNING",effect:"failed to set value for input field argument",cause:`value of argument 'useLinks' must be one of ${XN(["true","partial","false"],i=>`'${i}'`,", ","or")}`,docs:[jt.linkToInputFieldArgument(this.getConfig().type)]})}getConfig(){return Nr.useLinks}};var a9={class:vy,addLabels:hy,minValue:wy,maxValue:by,stepSize:Cy,option:Ey,title:Ny,optionQuery:Ty,showcase:My,offValue:Ay,onValue:Sy,defaultValue:yy,placeholder:Dy,useLinks:Fy,limit:xy,allowOther:gy,multiLine:_y},Iy=class{static createInputFieldArgument(e){if(e in a9){let r=a9[e];if(r)return new r}throw new Co({errorLevel:"WARNING",effect:"can not crate input field argument",cause:`unknown argument '${e}'`})}};var Py=class{constructor(e,r,n){this.plugin=e,this.unvalidatedDeclaration=r,this.filePath=n,this.errorCollection=new Qt("input field declaration")}validate(e){let r=this.validateInputFieldType(),n=this.validateBindTarget(e),i=this.validateArguments(r),a={declarationString:this.unvalidatedDeclaration.declarationString,inputFieldType:r,bindTarget:n,argumentContainer:i,errorCollection:this.errorCollection.merge(this.unvalidatedDeclaration.errorCollection)};return this.checkForDeprecation(a),a}validateInputFieldType(){let e=this.unvalidatedDeclaration.inputFieldType;for(let r of Object.entries(du))if(r[1]===e?.value)return r[1];return this.errorCollection.add(new Vn("ERROR","Declaration Validator",`Encountered invalid identifier. Expected an input field type but received '${e?.value}'.`,this.unvalidatedDeclaration.declarationString,e?.position)),"invalid"}checkForDeprecation(e){}validateBindTarget(e){if(this.unvalidatedDeclaration.bindTarget!==void 0)try{return this.plugin.api.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,this.unvalidatedDeclaration.bindTarget,this.filePath,e)}catch(r){this.errorCollection.add(r)}}validateArguments(e){let r=new dy;for(let n of this.unvalidatedDeclaration.arguments){let i=this.validateArgumentType(n.name);if(i==="invalid")continue;let a=Iy.createInputFieldArgument(i);if(!a.isAllowed(e)){this.errorCollection.add(new Vn("WARNING","Declaration Validator",`Failed to parse input field arguments. Argument "${n.name.value}" is only applicable to "${a.getAllowedFieldsAsString()}" input fields.`,this.unvalidatedDeclaration.declarationString,n.name.position));continue}try{a.parseValue(n.value)}catch(o){this.errorCollection.add(o);continue}r.add(a)}try{r.validate()}catch(n){this.errorCollection.add(n)}return r}validateArgumentType(e){for(let r of Object.entries(fn))if(r[1]===e.value)return r[1];return this.errorCollection.add(new Vn("WARNING","Declaration Validator",`Encountered invalid identifier. Expected an input field argument type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}};var Hi=zr(Ma()),an=zr(ca());var bae=an.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{inputFieldType:t,arguments:e,bindTarget:n}},Mi.node(ji).trim(Hi.P_UTILS.optionalWhitespace()).describe("input field type"),xp.trim(Hi.P_UTILS.optionalWhitespace()).wrap(an.P.string("(").describe('arguments paren "("'),an.P.string(")").describe('arguments paren ")"')).trim(Hi.P_UTILS.optionalWhitespace()).optional([]),an.P.sequence(an.P.string(":").trim(Hi.P_UTILS.optionalWhitespace()).describe('bind target separator ":"'),rs).trim(Hi.P_UTILS.optionalWhitespace()).optional()),o9=an.P.sequenceMap((t,e,r)=>{let n=r===void 0?void 0:r[1];return{inputFieldType:t,arguments:e,bindTarget:n}},Mi.node(ji).trim(Hi.P_UTILS.optionalWhitespace()).optional().describe("input field type"),xp.trim(Hi.P_UTILS.optionalWhitespace()).wrap(an.P.string("(").describe('arguments paren "("'),an.P.string(")").describe('arguments paren ")"')).trim(Hi.P_UTILS.optionalWhitespace()).optional([]),an.P.sequence(an.P.string(":").trim(Hi.P_UTILS.optionalWhitespace()).describe('bind target separator ":"'),rs).trim(Hi.P_UTILS.optionalWhitespace()).optional()),s9=an.P.or(an.P.sequenceMap((t,e,r)=>(r.templateName=e,r),an.P.string("INPUT"),an.P.sequenceMap((t,e,r)=>e,an.P.string("["),yF.node(ji).trim(Hi.P_UTILS.optionalWhitespace()).describe("template name"),an.P.string("]").skip(Hi.P_UTILS.optionalWhitespace())),o9.wrap(an.P.string("["),an.P.string("]")),Hi.P_UTILS.eof()),an.P.sequenceMap((t,e)=>e,an.P.string("INPUT"),bae.wrap(an.P.string("["),an.P.string("]")),Hi.P_UTILS.eof())),u9=an.P.sequenceMap((t,e)=>e,an.P.string("INPUT"),o9.wrap(an.P.string("["),an.P.string("]")),Hi.P_UTILS.eof());var By=class{constructor(e){this.plugin=e,this.templates=[]}fromString(e){let r=new Qt("InputField");try{let n=Xn(s9,e),i=this.partialToFullDeclaration(n,e,r);return i=this.applyTemplate(i),i}catch(n){r.add(n)}return{declarationString:e,inputFieldType:{value:"invalid"},bindTarget:void 0,arguments:[],errorCollection:r}}fromStringAndValidate(e,r,n){return this.validate(this.fromString(e),r,n)}fromSimpleDeclaration(e){let r=new Qt("InputField");return{declarationString:void 0,inputFieldType:Ia(e.inputFieldType),bindTarget:this.plugin.api.bindTargetParser.fromExistingDeclaration(e.bindTarget),arguments:(e.arguments??[]).map(n=>({name:Ia(n.name),value:n.value.map(i=>Ia(i))})),errorCollection:r}}fromSimpleDeclarationAndValidate(e,r,n){return this.validate(this.fromSimpleDeclaration(e),r,n)}partialToFullDeclaration(e,r,n){return{...structuredClone(e),declarationString:r,errorCollection:n}}validate(e,r,n){return new Py(this.plugin,e,r).validate(n)}merge(e,r){let n;return e.bindTarget===void 0?n=r.bindTarget:(n=e.bindTarget,r.bindTarget?.storagePath!==void 0&&(n.storagePath=r.bindTarget.storagePath),r.bindTarget?.storageProp!==void 0&&(n.storageProp=r.bindTarget.storageProp)),{declarationString:r.declarationString,inputFieldType:r.inputFieldType??e.inputFieldType,bindTarget:n,arguments:r.arguments.concat(e.arguments).reduce((i,a)=>(i.find(o=>o.name===a.name)===void 0&&i.push(a),i),[]),errorCollection:new Qt("input field declaration").merge(e.errorCollection).merge(r.errorCollection)}}parseTemplateString(e){let r=new Qt("InputFieldParser");try{let n=Xn(u9,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,inputFieldType:{value:"invalid"},bindTarget:void 0,arguments:[],errorCollection:r}}parseTemplates(e){this.templates=[];let r=new Qt("input field template parser");for(let n of e){let i=this.parseTemplateString(n.declaration);r.merge(i.errorCollection);let a={name:n.name,template:i};this.templates.push(Hx(a))}return r}getTemplate(e){return this.templates.find(r=>r.name===e)?.template}applyTemplate(e){if(e.templateName===void 0)return e;let r=this.getTemplate(e.templateName.value);return r===void 0?(e.errorCollection.add(new Vn("WARNING","Input Field Parser",`Invalid template name. Could not find a template with the name '${e.templateName.value}'.`,e.declarationString,e.templateName.position,["https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/guides/templates/"])),e):this.merge(r,e)}};var ky=class{constructor(e){this.plugin=e}fromString(e){let r=new Qt("JsViewFieldDeclaration");try{let n=Xn(EF,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,errorCollection:r,bindTargetMappings:[],writeToBindTarget:void 0,hidden:!1,code:""}}fromStringAndValidate(e,r){return this.validate(this.fromString(e),r)}fromSimpleDeclaration(e){let r=new Qt("JsViewFieldDeclaration");return{declarationString:void 0,code:e.code,bindTargetMappings:e.bindTargetMappings.map(n=>({bindTarget:this.plugin.api.bindTargetParser.fromExistingDeclaration(n.bindTarget),name:n.name})),writeToBindTarget:this.plugin.api.bindTargetParser.fromExistingDeclaration(e.writeToBindTarget),hidden:e.hidden??!1,errorCollection:r}}fromSimpleDeclarationAndValidate(e,r){return this.validate(this.fromSimpleDeclaration(e),r)}partialToFullDeclaration(e,r,n){let i=e;return i.declarationString=r,i.errorCollection=n,i.bindTargetMappings=[...i.bindTargetMappings],i}validate(e,r){let n={};n.declarationString=e.declarationString,n.errorCollection=e.errorCollection;try{return n.bindTargetMappings=e.bindTargetMappings.map(i=>({bindTarget:this.plugin.api.bindTargetParser.validate(e.declarationString,i.bindTarget,r),name:i.name})),e.writeToBindTarget!==void 0&&(n.writeToBindTarget=this.plugin.api.bindTargetParser.validate(e.declarationString,e.writeToBindTarget,r)),n.code=e.code,n.hidden=e.hidden,n}catch(i){n.errorCollection.add(i)}return{declarationString:e.declarationString,errorCollection:n.errorCollection,bindTargetMappings:[],writeToBindTarget:void 0,hidden:!1,code:""}}};var $y=class extends jf{getAll(e){return super.getAll(e)}get(e){return this.getAll(e).at(0)}};var rl=class extends Zf{};var Oy=class extends rl{constructor(){super(...arguments);this.value=[]}_parseValue(r){this.value=r[0].value.split(" ")}getConfig(){return yc.class}};var Ry=class extends rl{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return yc.hidden}};var Ly=class extends rl{constructor(){super(...arguments);this.value=!0}_parseValue(r){this.value=r[0]===void 0||r[0]?.value.toLowerCase()==="true"}getConfig(){return yc.renderMarkdown}};var l9={renderMarkdown:Ly,hidden:Ry,class:Oy},Vy=class{static createViewFieldArgument(e){if(e in l9){let r=l9[e];if(r)return new r}throw new Co({errorLevel:"WARNING",effect:"can not crate view field argument",cause:`unknown argument '${e}'`})}};var Uy=class{constructor(e,r,n){this.unvalidatedDeclaration=e,this.plugin=n,this.filePath=r,this.errorCollection=new Qt("view field declaration")}validate(e){let r=this.validateInputFieldType(),n=this.validateBindTarget(e),i=this.validateArguments(r),a=this.validateTemplateDeclaration(e),o={declarationString:this.unvalidatedDeclaration.declarationString,viewFieldType:r,writeToBindTarget:n,argumentContainer:i,templateDeclaration:a,errorCollection:this.errorCollection.merge(this.unvalidatedDeclaration.errorCollection)};return this.checkForDeprecation(o),o}validateInputFieldType(){let e=this.unvalidatedDeclaration.viewFieldType;if(e===void 0)return"math";for(let r of Object.entries(op))if(r[1]===e?.value)return r[1];return this.errorCollection.add(new Vn("ERROR","Declaration Validator",`Encountered invalid identifier. Expected a view field type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}checkForDeprecation(e){}validateBindTarget(e){if(this.unvalidatedDeclaration.writeToBindTarget!==void 0)return this.plugin.api.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,this.unvalidatedDeclaration.writeToBindTarget,this.filePath,e)}validateArguments(e){let r=new $y;for(let n of this.unvalidatedDeclaration.arguments){let i=this.validateArgumentType(n.name);if(i==="invalid")continue;let a=Vy.createViewFieldArgument(i);if(!a.isAllowed(e)){this.errorCollection.add(new Vn("WARNING","Declaration Validator",`Failed to parse view field arguments. Argument "${n.name.value}" is only applicable to "${a.getAllowedFieldsAsString()}" view fields.`,this.unvalidatedDeclaration.declarationString,n.name.position));continue}try{a.parseValue(n.value)}catch(o){this.errorCollection.add(o);continue}r.add(a)}try{r.validate()}catch(n){this.errorCollection.add(n)}return r}validateArgumentType(e){for(let r of Object.entries(sl))if(r[1]===e.value)return r[1];return this.errorCollection.add(new Vn("WARNING","Declaration Validator",`Encountered invalid identifier. Expected a view field argument type but received '${e.value}'.`,this.unvalidatedDeclaration.declarationString,e.position)),"invalid"}validateTemplateDeclaration(e){try{return this.unvalidatedDeclaration.templateDeclaration?.map(r=>typeof r=="string"?r:this.plugin.api.bindTargetParser.validate(this.unvalidatedDeclaration.declarationString,r,this.filePath,e))??[]}catch(r){return this.errorCollection.add(r),[]}}};var qy=class{constructor(e){this.plugin=e}fromString(e){let r=new Qt("ViewFieldDeclaration");try{let n=Xn(SF,e);return this.partialToFullDeclaration(n,e,r)}catch(n){r.add(n)}return{declarationString:e,errorCollection:r,viewFieldType:{value:"invalid"},writeToBindTarget:void 0,arguments:[],templateDeclaration:[]}}fromStringAndValidate(e,r,n){return this.validate(this.fromString(e),r,n)}fromSimpleDeclaration(e){let r=new Qt("ViewFieldDeclaration");return{declarationString:void 0,templateDeclaration:(e.templateDeclaration??[]).map(n=>typeof n=="string"?n:this.plugin.api.bindTargetParser.fromExistingDeclaration(n)),viewFieldType:Ia(e.viewFieldType),arguments:(e.arguments??[]).map(n=>({name:Ia(n.name),value:n.value.map(i=>Ia(i))})),writeToBindTarget:this.plugin.api.bindTargetParser.fromExistingDeclaration(e.writeToBindTarget),errorCollection:r}}fromSimpleDeclarationAndValidate(e,r,n){return this.validate(this.fromSimpleDeclaration(e),r,n)}partialToFullDeclaration(e,r,n){return{...structuredClone(e),declarationString:r,errorCollection:n}}validate(e,r,n){return new Uy(e,r,this.plugin).validate(n)}};var zy=class{constructor(e,r){this.plugin=e,this.inputFieldParser=r?.inputFieldParser??new By(e),this.viewFieldParser=r?.viewFieldParser??new qy(e),this.jsViewFieldParser=r?.jsViewFieldParser??new ky(e),this.buttonParser=r?.buttonParser??new my(e),this.bindTargetParser=r?.bindTargetParser??new cy(e),this.inputFieldFactory=r?.inputFieldFactory??new xg(e),this.viewFieldFactory=r?.viewFieldFactory??new uy(e),this.buttonActionRunner=r?.buttonActionRunner??new xh(e),this.buttonManager=r?.buttonManager??new Yh(e),this.syntaxHighlighting=r?.syntaxHighlighting??new jd(e)}createField(e,r,n,i=!0){if(pn(ve.object({type:Ep,filePath:$a,options:ve.any(),honorExcludedSetting:ve.boolean()}),{type:e,filePath:r,options:n,honorExcludedSetting:i}),this.plugin.internal.file.isExcludedFromRendering(r)&&i)return this.createExcludedMountable(r);if(e==="INPUT")return this.createInputFieldMountable(r,n);if(e==="VIEW")return this.createViewFieldMountable(r,n);if(e==="JS_VIEW")return this.createJsViewFieldMountable(r,n);if(e==="TABLE")return this.createTableMountable(r,n);if(e==="BUTTON_GROUP")return this.createButtonGroupMountable(r,n);if(e==="BUTTON")return this.createButtonMountable(r,n);if(e==="EMBED")return this.createEmbedMountable(r,n);if(e==="EXCLUDED")return this.createExcludedMountable(r);throw new Error(`Unknown field type: ${e}`)}createInlineFieldFromString(e,r,n,i="inline",a,o=!0){pn(ve.object({fieldString:ve.string(),filePath:$a,scope:qc.optional(),renderChildType:Uc,honorExcludedSetting:ve.boolean()}),{fieldString:e,filePath:r,scope:n,renderChildType:i,honorExcludedSetting:o});let s=this.isInlineFieldDeclarationAndGetType(e);if(s===void 0)throw new Gt({errorLevel:"CRITICAL",effect:"failed to create inline field",cause:`Invalid inline mdrc type "${s}"`});return this.createInlineFieldOfTypeFromString(s,e,r,n,i,a,o)}createInlineFieldOfTypeFromString(e,r,n,i,a="inline",o,s=!0){if(pn(ve.object({type:Ep,declaration:ve.string(),filePath:$a,scope:qc.optional(),renderChildType:Uc,honorExcludedSetting:ve.boolean()}),{type:e,declaration:r,filePath:n,scope:i,renderChildType:a,honorExcludedSetting:s}),this.plugin.internal.file.isExcludedFromRendering(n)&&s)return this.createExcludedMountable(n);if(e==="INPUT")return this.createInputFieldMountable(n,{renderChildType:a,declaration:r,scope:i});if(e==="VIEW")return this.createViewFieldMountable(n,{renderChildType:a,declaration:r,scope:i});if(e==="BUTTON_GROUP")return this.createButtonGroupMountable(n,{renderChildType:a,declaration:r,position:o});throw new Gt({errorLevel:"CRITICAL",effect:"failed to create inline field",cause:`Invalid inline mdrc type "${e}"`})}createInputFieldMountable(e,r){pn(ve.object({filePath:$a,options:nI}),{filePath:e,options:r});let n=Fr(),i;return typeof r.declaration=="string"?i=this.inputFieldParser.fromStringAndValidate(r.declaration,e,r.scope):i=this.inputFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e,r.scope),new cf(this.plugin,n,e,r.renderChildType,i)}createViewFieldMountable(e,r){pn(ve.object({filePath:$a,options:iI}),{filePath:e,options:r});let n=Fr(),i;return typeof r.declaration=="string"?i=this.viewFieldParser.fromStringAndValidate(r.declaration,e,r.scope):i=this.viewFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e,r.scope),new ly(this.plugin,n,e,r.renderChildType,i)}createJsViewFieldMountable(e,r){pn(ve.object({filePath:$a,options:aI}),{filePath:e,options:r});let n=Fr(),i;return typeof r.declaration=="string"?i=this.jsViewFieldParser.fromStringAndValidate(r.declaration,e):i=this.jsViewFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e),new _g(this.plugin,n,e,i)}createTableMountable(e,r){pn(ve.object({filePath:$a,options:oI}),{filePath:e,options:r});let n=Fr();return new wg(this.plugin,n,e,r.bindTarget,r.tableHead,r.columns)}createButtonGroupMountable(e,r){pn(ve.object({filePath:$a,options:sI}),{filePath:e,options:r});let n=Fr(),i;return typeof r.declaration=="string"?i=this.buttonParser.fromGroupString(r.declaration):i=this.buttonParser.validateGroup(r.declaration),new Gh(this.plugin,n,e,i,r.renderChildType,r.position)}createButtonMountable(e,r){pn(ve.object({filePath:$a,options:uI}),{filePath:e,options:r});let n=Fr(),i;return typeof r.declaration=="string"?i=this.buttonParser.fromString(r.declaration):i=this.buttonParser.validate(r.declaration),new jh(this.plugin,n,e,i,r.position,r.isPreview)}createEmbedMountable(e,r){pn(ve.object({filePath:$a,options:lI}),{filePath:e,options:r});let n=Fr();return new Zh(this.plugin,n,e,r.depth,r.content)}createExcludedMountable(e){pn(ve.object({filePath:$a}),{filePath:e});let r=Fr();return new Jh(this.plugin,r,e)}getInlineFieldDeclarationPrefix(e){if(pn(ve.object({fieldType:Ep}),{fieldType:e}),e==="INPUT")return"INPUT";if(e==="VIEW")return"VIEW";if(e==="BUTTON_GROUP")return"BUTTON";throw new Gt({errorLevel:"CRITICAL",effect:"failed to get declaration prefix",cause:`Invalid inline mdrc type "${e}"`})}isInlineFieldDeclaration(e,r){pn(ve.object({fieldType:Ep,str:ve.string()}),{fieldType:e,str:r});let n=this.getInlineFieldDeclarationPrefix(e)+"[";return r.startsWith(n)&&r.endsWith("]")}isInlineFieldDeclarationAndGetType(e){if(pn(ve.object({str:ve.string()}),{str:e}),!!e.endsWith("]"))for(let r of Object.values(vc)){if(!sd(r))continue;let n=this.getInlineFieldDeclarationPrefix(r)+"[";if(e.startsWith(n))return r}}createSignal(e){return new yn(e)}createBindTarget(e,r,n,i=!1){return pn(ve.object({storageType:ve.string(),storagePath:ve.string(),property:ve.string().array(),listenToChildren:ve.boolean()}),{storageType:e,storagePath:r,property:n,listenToChildren:i}),{storageType:e,storagePath:r,storageProp:bg(n),listenToChildren:i}}parseBindTarget(e,r,n){return pn(ve.object({declarationString:ve.string(),filePath:$a,scope:qc.optional()}),{declarationString:e,filePath:r,scope:n}),this.bindTargetParser.fromStringAndValidate(e,r,n)}setMetadata(e,r){pn(ve.object({bindTarget:ka}),{bindTarget:e}),this.plugin.metadataManager.write(r,e)}getMetadata(e){return pn(ve.object({bindTarget:ka}),{bindTarget:e}),this.plugin.metadataManager.read(e)}updateMetadata(e,r){pn(ve.object({bindTarget:ka,updateFn:ve.function().args(ve.any()).returns(ve.any())}),{bindTarget:e,updateFn:r});let n=this.plugin.metadataManager.read(e),i=r(n);this.plugin.metadataManager.write(i,e)}subscribeToMetadata(e,r,n){pn(ve.object({bindTarget:ka,lifecycleHook:this.plugin.internal.getLifecycleHookValidator(),callback:ve.function().args(ve.any()).returns(ve.void())}),{bindTarget:e,lifecycleHook:r,callback:n});let i=Fr(),a=new yn(void 0);a.registerListener({callback:n});let o=this.plugin.metadataManager.subscribe(i,a,e,()=>{a.unregisterAllListeners()});r.register(()=>{o.unsubscribe()})}createNotePosition(e,r){return pn(ve.object({lineStart:ve.number(),lineEnd:ve.number()}),{lineStart:e,lineEnd:r}),new mu({lineStart:e,lineEnd:r})}};var c9=require("@codemirror/view"),Hy=class extends c9.WidgetType{constructor(e,r,n,i,a){super(),this.type=e,this.content=r,this.filePath=n,this.parentComponent=i,this.plugin=a}eq(e){return e.content===this.content}toDOM(e){let r=document.createElement("span");r.addClass("cm-inline-code");let n=this.plugin.api.createInlineFieldOfTypeFromString(this.type,this.content,this.filePath,void 0);return this.renderChild=this.plugin.api.wrapInMDRC(n,r,this.parentComponent),r}destroy(e){this.renderChild?.unload(),super.destroy(e)}};var f9=require("obsidian"),Gy=class extends f9.MarkdownRenderChild{constructor(e,r,n){super(n),this.plugin=e,this.mountable=r,this.mountable.registerUnmountCb(()=>{this.unload()})}onload(){this.mountable.mount(this.containerEl),super.onload()}onunload(){this.mountable.isMounted()&&this.mountable.unmount(),super.onunload()}};function p9(t){return t.dependencyManager.checkDependency("dataview").api}function nl(t){return t.dependencyManager.checkDependency("js-engine").api}function TM(t){return t.dependencyManager.checkDependency("templater-obsidian").templater}var wae=ve.object({addChild:ve.function().args(ve.instanceof(m9.Component)).returns(ve.void())}),Wy=class extends zy{constructor(e){super(e)}wrapInMDRC(e,r,n){pn(ve.object({field:XF,containerEl:JF,component:wae}),{field:e,containerEl:r,component:n});let i=new Gy(this.plugin,e,r);return n.addChild(i),i}constructMDRCWidget(e,r,n,i){if(sd(e))return new Hy(e,r,n,i,this.plugin);throw new Gt({errorLevel:"CRITICAL",effect:"failed to construct mdrc",cause:`Invalid inline field type "${e}"`})}reactiveMetadata(e,r,n){pn(ve.object({bindTargets:ka.array(),lifecycleHook:this.plugin.internal.getLifecycleHookValidator(),callback:ve.function()}),{bindTargets:e,lifecycleHook:r,callback:n});let i=nl(this.plugin),a=Fr(),o=e.map(()=>new yn(void 0)),s=()=>Promise.resolve(),l=this.plugin.metadataManager.subscribeEffect(a,e,o,()=>s(),()=>{});r.register(()=>l.unsubscribe());let u=i.reactive(n,...o.map(c=>c.get()));return s=()=>u.refresh(...o.map(c=>c.get())),u}};var Mn=require("obsidian");var Yy=zr(mp());var d9=zr(mp());var _ae=ue('
'),Aae=(t,e,r)=>e(z(r)),Sae=(t,e,r)=>e(t,z(r)),Eae=ue('
'),Tae=ue('
');function DM(t,e){Te(e,!0);let r=Vt(()=>nF(e.month,e.year));function n(l){l&&e.dateChange((0,d9.default)(new Date(e.year,e.month,l)))}function i(l,u){l.key===" "&&n(u)}var a=Tae(),o=ye(a);Yt(o,21,iF,er,(l,u)=>{var c=_ae(),f=ye(c),m=ye(f,!0);ce(f),ce(c),Re(()=>ht(m,z(u))),ee(l,c)}),ce(o);var s=le(o,2);Yt(s,21,()=>z(r),l=>aF(),(l,u)=>{var c=Eae();c.__click=[Aae,n,u],c.__keydown=[Sae,i,u];let f=Vt(()=>e.selectedDate?.year()===e.year&&e.selectedDate?.month()===e.month&&e.selectedDate?.date()===z(u));Re(()=>tn(c,"mb-calendar-selected",z(f)));var m=ye(c),p=ye(m,!0);ce(m),ce(c),Re(()=>{tn(c,"mb-calendar-highlight",z(u)),tn(c,"mb-calendar-content-cell",z(u)),ht(p,z(u)||"")}),ee(l,c)}),ce(s),ce(a),ee(t,a),De()}kt(["click","keydown"]);function Dae(t,e,r){if(z(e)===11){$e(e,0),$e(r,z(r)+1);return}$e(e,z(e)+1)}function Mae(t,e,r){if(z(e)===0){$e(e,11),$e(r,z(r)-1);return}$e(e,z(e)-1)}function Cae(t,e){let r=t.target.value,n=Number.parseInt(r);Number.isNaN(n)||$e(e,Le(n))}function Nae(t,e,r){e(null),r.dateChangeCallback(null)}function Fae(t,e,r){e((0,Yy.default)()),r.dateChangeCallback(e())}var Iae=ue('
');function MM(t,e){Te(e,!0);let r=lt(e,"selectedDate",23,Yy.default),n=bt(0),i=bt(0);ga(()=>{if(r())$e(n,Le(r().month())),$e(i,Le(r().year()));else{let T=(0,Yy.default)();$e(n,Le(T.month())),$e(i,Le(T.year()))}});function a(T){r(T),e.dateChangeCallback(T)}var o=Iae(),s=ye(o),l=ye(s);l.__click=[Mae,n,i];var u=le(l,2),c=ye(u),f=ye(c,!0);Re(()=>ht(f,rF(z(n)))),ce(c);var m=le(c,2);Tt(m),Re(()=>Xb(m,z(i).toString())),m.__input=[Cae,i],ce(u);var p=le(u,2);p.__click=[Dae,n,i],ce(s);var d=le(s,2);DM(d,{dateChange:a,get month(){return z(n)},get year(){return z(i)},get selectedDate(){return r()}});var h=le(d,2),x=ye(h);x.__click=[Nae,r,e];var b=le(x,2);b.__click=[Fae,r,e],ce(h),ce(o),ee(t,o),De()}kt(["click","input"]);var Jf=class extends Ni{setModal(e){this.modal=e}closeModal(){if(this.modal!==void 0)this.modal.close();else throw new Gt({errorLevel:"CRITICAL",effect:"Failed to close modal",cause:"Modal reference in ModalContent is undefined"})}};var Pae=ue('
');function $t(t,e){Te(e,!0);let r=lt(e,"name",3,""),n=lt(e,"description",3,""),i=lt(e,"heading",3,!1),a=lt(e,"vertical",3,!1);var o=Pae(),s=ye(o),l=ye(s),u=ye(l,!0);ce(l);var c=le(l,2),f=ye(c,!0);ce(c),ce(s);var m=le(s,2),p=ye(m);{var d=h=>{var x=Xr(),b=Je(x);ho(b,()=>e.children),ee(h,x)};ot(p,h=>{e.children&&h(d)})}ce(m),ce(o),Re(()=>{tn(o,"setting-item-heading",i()),tn(o,"mb-vertical",a()),ht(u,r()),ht(f,n()),tn(m,"mb-vertical-control",a())}),ee(t,o),De()}function CM(t,e){Te(e,!0);let r=lt(e,"action",15);function n(){e.plugin.internal.openCommandSelectModal(a=>{r(r().command=a.id,!0)})}var i=Vt(()=>`Command: ${(r().command||"none")??""}`);$t(t,{get name(){return z(i)},description:"The command to execute when this action runs.",children:(a,o)=>{Et(a,{get variant(){return"primary"},onclick:()=>n(),children:(s,l)=>{Nt();var u=lr("Change");ee(s,u)},$$slots:{default:!0}})},$$slots:{default:!0}}),De()}var Bae=(t,e,r)=>e(!z(r)),kae=(t,e,r)=>{t.key===" "&&e(!z(r))},$ae=ue('
');function Qa(t,e){let r=lt(e,"checked",15),n=Vt(()=>r()??!1);var i=$ae();i.__click=[Bae,r,n],i.__keydown=[kae,r,n];var a=ye(i);Tt(a),ce(i),Re(()=>{wt(i,"aria-checked",z(n)),tn(i,"is-enabled",z(n)),Ys(a,z(n))}),ee(t,i)}kt(["click","keydown"]);var Oae=ue(''),Rae=ue(" ",1);function NM(t,e){Te(e,!0);let r=lt(e,"action",15);function n(){e.plugin.internal.openFolderSelectModal(f=>{r(r().folderPath=f,!0)})}var i=Rae(),a=Je(i),o=Vt(()=>`Folder: ${(r().folderPath||"none")??""}`);$t(a,{get name(){return z(o)},description:"The folder to create a new note in.",children:(f,m)=>{Et(f,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(p,d)=>{Nt();var h=lr("Change");ee(p,h)},$$slots:{default:!0}})},$$slots:{default:!0}});var s=le(a,2),l=Vt(()=>`File name: ${(r().fileName||"default")??""}`);$t(s,{get name(){return z(l)},description:"The file name of the new note.",children:(f,m)=>{var p=Oae();Tt(p),_t(p,()=>r().fileName,d=>r(r().fileName=d,!0)),ee(f,p)},$$slots:{default:!0}});var u=le(s,2);$t(u,{name:"Open note",description:"Whether to open the new note after this action ran.",children:(f,m)=>{Qa(f,{get checked(){return r().openNote},set checked(p){r(r().openNote=p,!0)}})},$$slots:{default:!0}});var c=le(u,2);$t(c,{name:"Open if note already exists",description:"Whether to open the note instead of creating a new one if the note already exists.",children:(f,m)=>{Qa(f,{get checked(){return r().openIfAlreadyExists},set checked(p){r(r().openIfAlreadyExists=p,!0)}})},$$slots:{default:!0}}),ee(t,i),De()}function FM(t,e){Te(e,!0);let r=lt(e,"action",15);function n(){e.plugin.internal.openMarkdownFileSelectModal(a=>{r(r().templateFile=a,!0)})}var i=Vt(()=>`File path: ${(r().templateFile||"default")??""}`);$t(t,{get name(){return z(i)},description:"The path to the templater file, relative to the vault root.",children:(a,o)=>{Et(a,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(s,l)=>{Nt();var u=lr("Change");ee(s,u)},$$slots:{default:!0}})},$$slots:{default:!0}}),De()}var Lae=ue('
',1);function IM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=Lae(),i=Je(n);$t(i,{name:"JS code",description:"The JavaScript code to run."});var a=le(i,2),o=ye(a);On(o),ce(a),_t(o,()=>r().code,s=>r(r().code=s,!0)),ee(t,n),De()}var Vae=ue('');function PM(t,e){Te(e,!0);let r=lt(e,"action",15);$t(t,{name:"Text",description:"The text to input at the cursor.",children:(n,i)=>{var a=Vae();Tt(a),_t(a,()=>r().str,o=>r(r().str=o,!0)),ee(n,a)},$$slots:{default:!0}}),De()}var Uae=ue(''),qae=ue('
',1);function BM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=qae(),i=Je(n);$t(i,{name:"Line",description:"The line number to insert at.",children:(l,u)=>{var c=Uae();Tt(c),_t(c,()=>r().line,f=>r(r().line=f,!0)),ee(l,c)},$$slots:{default:!0}});var a=le(i,2);$t(a,{name:"Text to insert",description:"The text to insert into the note."});var o=le(a,2),s=ye(o);On(s),ce(o),_t(s,()=>r().value,l=>r(r().value=l,!0)),ee(t,n),De()}function kM(t,e){Te(e,!0);let r=lt(e,"action",15);function n(){e.plugin.internal.openFilteredFileSelectModal(i=>{r(r().file=i,!0)},i=>i.endsWith(".js"))}$t(t,{name:"JS file",description:"The JavaScript file to run.",children:(i,a)=>{Et(i,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(o,s)=>{Nt();var l=lr("Change");ee(o,l)},$$slots:{default:!0}})},$$slots:{default:!0}}),De()}var zae=ue(' ',1),Hae=ue(" ",1);function $M(t,e){Te(e,!0);let r=lt(e,"action",15);function n(){e.plugin.internal.openMarkdownFileSelectModal(s=>{r(r().link=s,!0)})}var i=Hae(),a=Je(i);$t(a,{name:"Link",description:"The link to open.",children:(s,l)=>{var u=zae(),c=Je(u);Tt(c);var f=le(c,2);Et(f,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(m,p)=>{Yr(m,{iconName:"list",get plugin(){return e.plugin}})},$$slots:{default:!0}}),_t(c,()=>r().link,m=>r(r().link=m,!0)),ee(s,u)},$$slots:{default:!0}});var o=le(a,2);$t(o,{name:"New tab",description:"Whether to open the link in a new tab.",children:(s,l)=>{Qa(s,{get checked(){return r().newTab},set checked(u){r(r().newTab=u,!0)}})},$$slots:{default:!0}}),ee(t,i),De()}var Gae=ue(''),Wae=ue(''),Yae=ue('
',1);function OM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=Yae(),i=Je(n);$t(i,{name:"Regexp",description:"The regexp to find replacements.",children:(u,c)=>{var f=Gae();Tt(f),_t(f,()=>r().regexp,m=>r(r().regexp=m,!0)),ee(u,f)},$$slots:{default:!0}});var a=le(i,2);$t(a,{name:"Regexp flags",description:"The regexp flags for this regexp.",children:(u,c)=>{var f=Wae();Tt(f),_t(f,()=>r().regexpFlags,m=>r(r().regexpFlags=m,!0)),ee(u,f)},$$slots:{default:!0}});var o=le(a,2);$t(o,{name:"Replacement text",description:"The text to replace the button with."});var s=le(o,2),l=ye(s);On(l),ce(s),_t(l,()=>r().replacement,u=>r(r().replacement=u,!0)),ee(t,n),De()}var jae=ue(''),Zae=ue(''),Jae=ue('
',1);function RM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=Jae(),i=Je(n);$t(i,{name:"Line from",description:"The line that marks the start of the area to replace.",children:(u,c)=>{var f=jae();Tt(f),_t(f,()=>r().fromLine,m=>r(r().fromLine=m,!0)),ee(u,f)},$$slots:{default:!0}});var a=le(i,2);$t(a,{name:"Line to",description:"The line that marks the end of the area to replace.",children:(u,c)=>{var f=Zae();Tt(f),_t(f,()=>r().toLine,m=>r(r().toLine=m,!0)),ee(u,f)},$$slots:{default:!0}});var o=le(a,2);$t(o,{name:"Replacement text",description:"The text to replace the note section."});var s=le(o,2),l=ye(s);On(l),ce(s),_t(l,()=>r().replacement,u=>r(r().replacement=u,!0)),ee(t,n),De()}var Xae=ue('
',1);function LM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=Xae(),i=Je(n);$t(i,{name:"Replacement text",description:"The text to replace the match with."});var a=le(i,2),o=ye(a);On(o),ce(a),_t(o,()=>r().replacement,s=>r(r().replacement=s,!0)),ee(t,n),De()}var Qae=ue('');function VM(t,e){Te(e,!0);let r=lt(e,"action",15);$t(t,{name:"Sleep time",description:"The time to sleep in milliseconds.",children:(n,i)=>{var a=Qae();Tt(a),_t(a,()=>r().ms,o=>r(r().ms=o,!0)),ee(n,a)},$$slots:{default:!0}}),De()}var Kae=ue(''),eoe=ue(" ",1);function UM(t,e){Te(e,!0);let r=lt(e,"action",15);function n(d){e.plugin.internal.openFileSelectModal(h=>{d.templateFile=h})}function i(d){e.plugin.internal.openFolderSelectModal(h=>{d.folderPath=h})}var a=eoe(),o=Je(a),s=Vt(()=>`Template file: ${(r().templateFile||"none")??""}`);$t(o,{get name(){return z(s)},description:"The template file to create a new note of.",children:(d,h)=>{Et(d,{get variant(){return"primary"},onclick:()=>n(r()),tooltip:"Select from vault",children:(x,b)=>{Nt();var T=lr("Change");ee(x,T)},$$slots:{default:!0}})},$$slots:{default:!0}});var l=le(o,2),u=Vt(()=>`Folder: ${(r().folderPath||"none")??""}`);$t(l,{get name(){return z(u)},description:"The folder to create a new note in.",children:(d,h)=>{Et(d,{get variant(){return"primary"},onclick:()=>i(r()),tooltip:"Select from vault",children:(x,b)=>{Nt();var T=lr("Change");ee(x,T)},$$slots:{default:!0}})},$$slots:{default:!0}});var c=le(l,2),f=Vt(()=>`File name: ${(r().fileName||"default")??""}`);$t(c,{get name(){return z(f)},description:"The file name of the new note.",children:(d,h)=>{var x=Kae();Tt(x),_t(x,()=>r().fileName,b=>r(r().fileName=b,!0)),ee(d,x)},$$slots:{default:!0}});var m=le(c,2);$t(m,{name:"Open note",description:"Whether to open the new note after this action ran.",children:(d,h)=>{Qa(d,{get checked(){return r().openNote},set checked(x){r(r().openNote=x,!0)}})},$$slots:{default:!0}});var p=le(m,2);$t(p,{name:"Open if note already exists",description:"Whether to open the note instead of creating a new one if the note already exists.",children:(d,h)=>{Qa(d,{get checked(){return r().openIfAlreadyExists},set checked(x){r(r().openIfAlreadyExists=x,!0)}})},$$slots:{default:!0}}),ee(t,a),De()}var toe=ue(''),roe=ue(''),noe=ue(" ",1);function qM(t,e){Te(e,!0);let r=lt(e,"action",15);var n=noe(),i=Je(n);$t(i,{name:"Metadata property",description:"The metadata property in form of a bind target.",children:(s,l)=>{var u=toe();Tt(u),_t(u,()=>r().bindTarget,c=>r(r().bindTarget=c,!0)),ee(s,u)},$$slots:{default:!0}});var a=le(i,2);$t(a,{name:"Value",description:"The new value.",children:(s,l)=>{var u=roe();Tt(u),_t(u,()=>r().value,c=>r(r().value=c,!0)),ee(s,u)},$$slots:{default:!0}});var o=le(a,2);$t(o,{name:"Evaluate",description:"Whether to evaluate the value as a JS expression.",children:(s,l)=>{Qa(s,{get checked(){return r().evaluate},set checked(u){r(r().evaluate=u,!0)}})},$$slots:{default:!0}}),ee(t,n),De()}var ioe=ue("
");function su(t,e){Te(e,!0);let r=lt(e,"reverse",3,!1),n=lt(e,"stretchChildren",3,!1),i=Vt(()=>[r()?"mb-flex-row-reverse":"mb-flex-row",n()?"mb-flex-row-stretch":""].join(" "));var a=ioe(),o=ye(a);ho(o,()=>e.children),ce(a),Re(()=>xa(a,Ws(z(i)))),ee(t,a),De()}var aoe=ue('');function Qo(t,e){Te(e,!0);var r=aoe(),n=ye(r);ho(n,()=>e.children),ce(r),ee(t,r),De()}var ooe=ue(''),soe=ue(''),uoe=ue(""),loe=ue(''),coe=ue(''),foe=ue(''),poe=ue(' ',1),moe=ue(''),doe=ue(''),hoe=ue(""),goe=ue("
",1),voe=ue(" ",1),yoe=ue(" ",1),xoe=ue('

Actions

Add action of type

Preview

',1);function zM(t,e){Te(e,!0);let r=Le(e.buttonConfig),n,i,a=bt(Le("command"));lf(()=>{i?.unmount()}),ga(()=>{i?.unmount(),n&&(mt.empty(n),i=new Fu(e.plugin,li(r),"","block",void 0,!1,!0),i.mount(n))});function o(){r.actions?.push(e.plugin.api.buttonActionRunner.createDefaultAction(z(a)))}function s(C){r.actions?.splice(C,1)}function l(C){return e.plugin.api.buttonActionRunner.getActionLabel(C)}function u(C,B){if(r.actions===void 0)return;let R=[];C>0&&R.push({name:"Move up",icon:"arrow-up",onclick:()=>{if(r.actions===void 0)return;let V=r.actions[C-1];r.actions[C-1]=r.actions[C],r.actions[C]=V}}),C{if(r.actions===void 0)return;let V=r.actions[C+1];r.actions[C+1]=r.actions[C],r.actions[C]=V}}),R.push({name:"Remove",icon:"x",warning:!0,onclick:()=>s(C)}),e.plugin.internal.createContextMenu(R).showWithEvent(B)}function c(){e.plugin.internal.openImageFileSelectModal(C=>{r.backgroundImage=C})}var f=xoe(),m=Je(f);$t(m,{name:"Label",description:"The label shown on the button.",children:(C,B)=>{var R=ooe();Tt(R),_t(R,()=>r.label,V=>r.label=V),ee(C,R)},$$slots:{default:!0}});var p=le(m,2);$t(p,{name:"Icon",description:"The icon shown on the button. If left empty, no icon will show",children:(C,B)=>{var R=soe();Tt(R),_t(R,()=>r.icon,V=>r.icon=V),ee(C,R)},$$slots:{default:!0}});var d=le(p,2);$t(d,{name:"Style",description:"The style variant of the button",children:(C,B)=>{var R=loe();Yt(R,21,()=>Object.values(on),er,(V,L)=>{var P=uoe(),k={},W=ye(P,!0);ce(P),Re(()=>{k!==(k=z(L))&&(P.value=(P.__value=z(L))==null?"":z(L)),ht(W,z(L))}),ee(V,P)}),ce(R),uf(R,()=>r.style,V=>r.style=V),ee(C,R)},$$slots:{default:!0}});var h=le(d,2);$t(h,{name:"CSS classes",description:"A list of CSS classes to add to the button. Multiple classes should be separated by a space.",children:(C,B)=>{var R=coe();Tt(R),_t(R,()=>r.class,V=>r.class=V),ee(C,R)},$$slots:{default:!0}});var x=le(h,2);$t(x,{name:"CSS styles",description:"CSS styles to directly apply to the button.",children:(C,B)=>{var R=foe();Tt(R),_t(R,()=>r.cssStyle,V=>r.cssStyle=V),ee(C,R)},$$slots:{default:!0}});var b=le(x,2);$t(b,{name:"Background image",description:"A background image to use in the button.",children:(C,B)=>{var R=poe(),V=Je(R),L=ye(V,!0);ce(V);var P=le(V,2);Et(P,{get variant(){return"primary"},onclick:()=>c(),tooltip:"Select from vault",children:(k,W)=>{Nt();var O=lr("Change");ee(k,O)},$$slots:{default:!0}}),Re(()=>ht(L,r.backgroundImage??"none")),ee(C,R)},$$slots:{default:!0}});var T=le(b,2);$t(T,{name:"Tooltip",description:"A tooltip to show when hovering the button. If not set, the button label will be shown instead.",children:(C,B)=>{var R=moe();Tt(R),_t(R,()=>r.tooltip,V=>r.tooltip=V),ee(C,R)},$$slots:{default:!0}});var v=le(T,2);$t(v,{name:"ID",description:"An ID that allows the button to be referenced in inline buttons.",children:(C,B)=>{var R=doe();Tt(R),_t(R,()=>r.id,V=>r.id=V),ee(C,R)},$$slots:{default:!0}});var A=le(v,2);$t(A,{name:"Hidden",description:"Whether to not render this button. This can be useful when using inline buttons.",children:(C,B)=>{Qa(C,{get checked(){return r.hidden},set checked(R){r.hidden=R}})},$$slots:{default:!0}});var w=le(A,4);Yt(w,21,()=>Object.values(Kn),er,(C,B)=>{var R=hoe(),V={},L=ye(R,!0);ce(R),Re(()=>{V!==(V=z(B))&&(R.value=(R.__value=z(B))==null?"":z(B)),ht(L,z(B))}),ee(C,R)}),ce(w);var y=le(w,2);Et(y,{get variant(){return"primary"},onclick:()=>o(),children:(C,B)=>{Nt();var R=lr("Add Action");ee(C,R)},$$slots:{default:!0}});var E=le(y,2);{var D=C=>{var B=Xr(),R=Je(B);Yt(R,17,()=>r.actions??[],er,(V,L,P)=>{var k=voe(),W=Je(k);su(W,{children:(He,at)=>{var Q=goe(),me=Je(Q),he=ye(me,!0);Re(()=>ht(he,l(z(L).type))),ce(me);var Fe=le(me,2);Et(Fe,{get variant(){return"plain"},onclick:ke=>u(P,ke),children:(ke,Se)=>{Yr(ke,{iconName:"more-vertical",get plugin(){return e.plugin}})},$$slots:{default:!0}}),ee(He,Q)},$$slots:{default:!0}});var O=le(W,2);{var X=He=>{CM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(O,He=>{z(L).type==="command"&&He(X)})}var ae=le(O,2);{var J=He=>{$M(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(ae,He=>{z(L).type==="open"&&He(J)})}var U=le(ae,2);{var de=He=>{kM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(U,He=>{z(L).type==="js"&&He(de)})}var we=le(U,2);{var se=He=>{PM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(we,He=>{z(L).type==="input"&&He(se)})}var be=le(we,2);{var K=He=>{VM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(be,He=>{z(L).type==="sleep"&&He(K)})}var j=le(be,2);{var ne=He=>{UM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(j,He=>{z(L).type==="templaterCreateNote"&&He(ne)})}var pe=le(j,2);{var fe=He=>{qM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(pe,He=>{z(L).type==="updateMetadata"&&He(fe)})}var Ae=le(pe,2);{var _e=He=>{NM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(Ae,He=>{z(L).type==="createNote"&&He(_e)})}var G=le(Ae,2);{var Z=He=>{FM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(G,He=>{z(L).type==="runTemplaterFile"&&He(Z)})}var ge=le(G,2);{var xe=He=>{RM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(ge,He=>{z(L).type==="replaceInNote"&&He(xe)})}var Ee=le(ge,2);{var Be=He=>{OM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(Ee,He=>{z(L).type==="regexpReplaceInNote"&&He(Be)})}var Ve=le(Ee,2);{var et=He=>{LM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(Ve,He=>{z(L).type==="replaceSelf"&&He(et)})}var St=le(Ve,2);{var Ye=He=>{BM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(St,He=>{z(L).type==="insertIntoNote"&&He(Ye)})}var ur=le(St,2);{var Jt=He=>{IM(He,{get plugin(){return e.plugin},get action(){return r.actions[P]},set action(at){r.actions[P]=at}})};ot(ur,He=>{z(L).type==="inlineJS"&&He(Jt)})}ee(V,k)}),ee(C,B)};ot(E,C=>{r.actions&&C(D)})}var _=le(E,4);Vo(_,C=>n=C,()=>n);var N=le(_,2);Qo(N,{children:(C,B)=>{var R=yoe(),V=Je(R);Et(V,{get variant(){return"primary"},onclick:()=>e.modal.okay(li(r)),children:(P,k)=>{Nt();var W=lr();Re(()=>ht(W,e.modal.options.submitText)),ee(P,W)},$$slots:{default:!0}});var L=le(V,2);Et(L,{get variant(){return"default"},onclick:()=>e.modal.cancel(),children:(P,k)=>{Nt();var W=lr("Cancel");ee(P,W)},$$slots:{default:!0}}),ee(C,R)},$$slots:{default:!0}}),uf(w,()=>z(a),C=>$e(a,C)),ee(t,f),De()}var jy=class extends Jf{constructor(e,r){super(),this.plugin=e,this.options=r}onMount(e){mt.empty(e),this.component&&Ur(this.component),this.component=Vr(zM,{target:e,props:{plugin:this.plugin,modal:this,buttonConfig:this.options.config??this.plugin.api.buttonActionRunner.createDefaultButtonConfig()}})}onUnmount(e){mt.empty(e),this.component&&Ur(this.component)}okay(e){this.closeModal(),this.options.onOkay(e)}cancel(){this.closeModal()}};var boe=(t,e,r)=>r.onSelect(r.image),woe=(t,e,r,n)=>e(t,n.image),_oe=ue('
');function HM(t,e){Te(e,!0);let r=or(e,["$$slots","$$events","$$legacy"]);function n(u,c){u.key===" "&&e.onSelect(c)}var i=_oe();i.__click=[boe,r,e],i.__keydown=[woe,n,r,e];var a=ye(i);Re(()=>wt(a,"src",e.plugin.internal.imagePathToUri(e.image)));var o=le(a,2),s=ye(o),l=ye(s,!0);ce(s),ce(o),ce(i),Re(()=>{wt(a,"alt",e.image),ht(l,e.image)}),ee(t,i),De()}kt(["click","keydown"]);var Aoe=ue('
',1);function GM(t,e){Te(e,!0);let r=bt(""),n=e.plugin.internal.createFuzzySearch(),i=Vt(()=>z(r)?(n.setSearch(z(r)),n.filterItems(e.options,u=>u.value)):e.options);var a=Aoe(),o=Je(a),s=ye(o);Tt(s),ce(o);var l=le(o,2);Yt(l,21,()=>z(i),er,(u,c)=>{HM(u,{get plugin(){return e.plugin},get image(){return z(c).value},get onSelect(){return e.onSelect}})}),ce(l),_t(s,()=>z(r),u=>$e(r,u)),ee(t,a),De()}var ac=class extends Jf{constructor(e){super(),this.createComponent=e}onMount(e){mt.empty(e),this.component=this.createComponent(this,e)}onUnmount(e){this.component&&Ur(this.component),mt.empty(e)}};var Soe=ue(""),Eoe=ue(''),Toe=ue(" ",1),Doe=ue('

',1);function WM(t,e){Te(e,!0);let r=bt(Le(e.options.value));var n=Doe(),i=Je(n),a=ye(i,!0);ce(i);var o=le(i,2),s=ye(o);{var l=f=>{var m=Soe();On(m),_t(m,()=>z(r),p=>$e(r,p)),ee(f,m)},u=f=>{var m=Eoe();Tt(m),_t(m,()=>z(r),p=>$e(r,p)),ee(f,m)};ot(s,f=>{e.options.multiline?f(l):f(u,!1)})}ce(o);var c=le(o,2);Qo(c,{children:(f,m)=>{var p=Toe(),d=Je(p);Et(d,{get variant(){return"primary"},onclick:()=>e.options.onSubmit(li(z(r))),children:(x,b)=>{Nt();var T=lr("OK");ee(x,T)},$$slots:{default:!0}});var h=le(d,2);Et(h,{onclick:()=>e.options.onCancel(),children:(x,b)=>{Nt();var T=lr("Cancel");ee(x,T)},$$slots:{default:!0}}),ee(f,p)},$$slots:{default:!0}}),Re(()=>ht(a,e.options.subTitle)),ee(t,n),De()}var ys=class{constructor(e,r){this.plugin=e,this.selectCallback=r}onSelected(e){this.selectCallback(e)}};var Zy=class extends ys{getItemText(e){return e.name}getItemDescription(e){}getItems(){return this.plugin.internal.getAllCommands()}};var zm=class extends ys{constructor(e,r,n){super(e,r),this.filterFunction=n}getItemText(e){return e}getItemDescription(e){}getItems(){return this.filterFunction!==void 0?this.plugin.internal.file.getAllFiles().filter(e=>this.filterFunction(e)):this.plugin.internal.file.getAllFiles()}};var Jy=class extends ys{getItemText(e){return e}getItemDescription(e){}getItems(){return this.plugin.internal.file.getAllFolders()}};var Xy=class extends ys{constructor(e,r,n){super(e,r),this.ipf=n}getItemText(e){return e.displayValue}getItemDescription(e){return e.displayDescription}getItems(){return this.plugin.internal.getSuggesterOptions(this.ipf)}};var Moe=ue('
 
'),Coe=ue("Tip "),Noe=ue("
",1),Foe=ue("Docs"),Ioe=ue('Context
 
'),Poe=ue('
Cause
Effect
'),Boe=ue('
 
');function Qy(t,e){Te(e,!0);var r=Xr(),n=Je(r);{var i=o=>{var s=Poe(),l=ye(s),u=ye(l),c=ye(u);Re(()=>ht(c,`${e.error.errorLevel??""} - [${e.error.getErrorType()??""}]`)),ce(u);var f=le(u);ce(l);var m=le(l,2);{var p=B=>{var R=Moe(),V=ye(R),L=ye(V,!0);ce(V),ce(R),Re(()=>ht(L,e.error.positionContext)),ee(B,R)};ot(m,B=>{e.error.positionContext&&B(p)})}var d=le(m,2),h=ye(d),x=ye(h),b=le(ye(x)),T=ye(b,!0);ce(b),ce(x);var v=le(x),A=le(ye(v)),w=ye(A,!0);ce(A),ce(v);var y=le(v);{var E=B=>{var R=Coe(),V=le(ye(R)),L=ye(V,!0);ce(V),ce(R),Re(()=>ht(L,e.error.tip)),ee(B,R)};ot(y,B=>{e.error.tip&&B(E)})}var D=le(y);{var _=B=>{var R=Foe(),V=le(ye(R));Yt(V,21,()=>e.error.docs,er,(L,P)=>{var k=Noe(),W=Je(k),O=ye(W,!0);ce(W),Nt(),Re(()=>{wt(W,"href",z(P)),ht(O,z(P))}),ee(L,k)}),ce(V),ce(R),ee(B,R)};ot(D,B=>{e.error.docs&&B(_)})}var N=le(D);{var C=B=>{var R=Ioe(),V=le(ye(R)),L=ye(V),P=ye(L),k=ye(P,!0);Re(()=>ht(k,JSON.stringify(e.error.context,null,4))),ce(P),ce(L),ce(V),ce(R),ee(B,R)};ot(N,B=>{e.error.context&&B(C)})}ce(h),ce(d),ce(s),Re(()=>{xa(u,Ws(e.error.errorLevel==="WARNING"?"mb-warning-text":"mb-error-text")),ht(f,` - ${e.error.effect??""}`),ht(T,e.error.cause),ht(w,e.error.effect)}),ee(o,s)},a=o=>{var s=Boe(),l=ye(s),u=ye(l),c=ye(u,!0);ce(u),ce(l),ce(s),Re(()=>ht(c,e.error.stack)),ee(o,s)};ot(n,o=>{e.error instanceof Jn?o(i):o(a,!1)})}ee(t,r),De()}var koe=ue("

"),$oe=ue('
 
'),Ooe=ue("

"),Roe=ue("
Errors
",1),Loe=ue("

"),Voe=ue("
Warnings
",1),Uoe=ue(" ",1);function uu(t,e){Te(e,!0);var r=Uoe(),n=Je(r);{var i=f=>{var m=koe(),p=ye(m,!0);ce(m),Re(()=>ht(p,e.settings.text)),ee(f,m)};ot(n,f=>{e.settings.text&&f(i)})}var a=le(n,2);{var o=f=>{var m=$oe(),p=ye(m),d=ye(p,!0);ce(p),ce(m),Re(()=>ht(d,e.settings.code)),ee(f,m)};ot(a,f=>{e.settings.code&&f(o)})}var s=le(a,2);{var l=f=>{var m=Roe(),p=le(Je(m),2);{var d=x=>{var b=Ooe(),T=ye(b,!0);ce(b),Re(()=>ht(T,e.settings.errorText)),ee(x,b)};ot(p,x=>{e.settings.errorText&&x(d)})}var h=le(p,2);Yt(h,17,()=>e.settings.errorCollection.getErrors(),er,(x,b)=>{Qy(x,{get error(){return z(b)}})}),ee(f,m)};ot(s,f=>{e.settings.errorCollection.hasErrors()&&f(l)})}var u=le(s,2);{var c=f=>{var m=Voe(),p=le(Je(m),2);{var d=x=>{var b=Loe(),T=ye(b,!0);ce(b),Re(()=>ht(T,e.settings.warningText)),ee(x,b)};ot(p,x=>{e.settings.warningText&&x(d)})}var h=le(p,2);Yt(h,17,()=>e.settings.errorCollection.getWarnings(),er,(x,b)=>{Qy(x,{get error(){return z(b)}})}),ee(f,m)};ot(u,f=>{e.settings.errorCollection.hasWarnings()&&f(c)})}ee(t,r),De()}var qoe=(t,e)=>e(),zoe=(t,e)=>{t.key===" "&&e()},Hoe=ue(' [META_BIND_ERROR]',1),Goe=Vh(''),Woe=Vh(''),Yoe=ue('
');function Xf(t,e){Te(e,!0);function r(){e.plugin.internal.openErrorCollectionViewModal(e.settings)}var n=Xr(),i=Je(n);{var a=o=>{var s=Yoe();s.__click=[qoe,r],s.__keydown=[zoe,r];var l=ye(s);{var u=f=>{var m=Hoe();Nt(2),ee(f,m)},c=f=>{var m=Xr(),p=Je(m);{var d=x=>{var b=Goe();ee(x,b)},h=x=>{var b=Woe();ee(x,b)};ot(p,x=>{e.settings.errorCollection.hasWarnings()?x(d):x(h,!1)},!0)}ee(f,m)};ot(l,f=>{e.settings.errorCollection.hasErrors()?f(u):f(c,!1)})}ce(s),ee(o,s)};ot(i,o=>{e.settings.errorCollection.isEmpty()||o(a)})}ee(t,n),De()}kt(["click","keydown"]);var YM=["apng","avif","gif","jpg","jpeg","jfif","pjpeg","pjp","png","svg","webp"],joe=YM.map(t=>`.${t}`),Ky=class{constructor(e,r){this.plugin=e,this.file=r}openCommandSelectModal(e){this.createSearchModal(new Zy(this.plugin,e)).open()}openFileSelectModal(e){this.createSearchModal(new zm(this.plugin,e)).open()}openFilteredFileSelectModal(e,r){this.createSearchModal(new zm(this.plugin,e,r)).open()}openMarkdownFileSelectModal(e){this.openFilteredFileSelectModal(e,r=>r.endsWith(".md"))}openImageFileSelectModal(e){this.openFilteredFileSelectModal(e,r=>joe.some(n=>r.endsWith(n)))}openFolderSelectModal(e){this.createSearchModal(new Jy(this.plugin,e)).open()}openButtonBuilderModal(e){this.createModal(new jy(this.plugin,e),{title:"Meta Bind Button Builder"}).open()}openSuggesterModal(e,r){this.createSearchModal(new Xy(this.plugin,r,e)).open()}openImageSuggesterModal(e,r){this.createModal(new ac((n,i)=>Vr(GM,{target:i,props:{plugin:this.plugin,options:this.getImageSuggesterOptions(e),onSelect:a=>{r(a),n.closeModal()}}})),{title:"Meta Bind image suggester",classes:["mb-image-suggester-modal"]}).open()}openDatePickerModal(e){this.createModal(new ac((r,n)=>Vr(MM,{target:n,props:{selectedDate:e.getInternalValue(),dateChangeCallback:i=>{e.setInternalValue(i),r.closeModal()}}})),{title:"Meta Bind date picker"}).open()}openTextPromptModal(e){this.createModal(new ac((r,n)=>Vr(WM,{target:n,props:{options:{...e,onSubmit:i=>{e.onSubmit(i),r.closeModal()},onCancel:()=>{e.onCancel(),r.closeModal()}}}})),e).open()}openErrorCollectionViewModal(e){this.createModal(new ac((r,n)=>Vr(uu,{target:n,props:{settings:e}})),{title:"Meta Bind error overview",classes:["mb-error-collection-modal","markdown-rendered"]}).open()}createErrorIndicator(e,r){Vr(Xf,{target:e,props:{plugin:this.plugin,settings:r}})}};var h9=require("obsidian"),ex=class{constructor(){}setSearch(e){this.preparedSearch=(0,h9.prepareFuzzySearch)(e)}filterItems(e,r){return this.preparedSearch?e.filter(n=>this.preparedSearch?.(r(n))?.score!=null):e}};var Ta=require("obsidian");var il=class{constructor(e,r,n){this.value=e,this.displayValue=r,this.displayDescription=n}valueAsString(){return this.value?.toString()??"null"}};function g9(t){let e=[];for(let r of t.children)r instanceof Ta.TFile&&v9(r.extension)&&e.push(new il(r.path,r.name)),r instanceof Ta.TFolder&&e.push(...g9(r));return e}function Zoe(t,e,r){let n=[];for(let i of e){let a=i.value;if(a.startsWith('"')&&a.endsWith('"'))a=a.substring(1,a.length-1);else{let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:"expected suggest option query for image suggester to start and end with double quotation marks"});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}let o;if(a===""||a==="."?o=r.app.vault.getRoot():o=r.app.vault.getAbstractFileByPath(a),o==null){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option query ${a} for image suggester to exist`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!(o instanceof Ta.TFolder)){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option query ${i.value} for image suggester to be a folder`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}n.push(...g9(o))}for(let i of t){let a=ko(i.value);if(!a){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} to be truthy`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}let o=r.app.vault.getAbstractFileByPath(a);if(!o){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to exist`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!(o instanceof Ta.TFile)){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to be a file`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!v9(o.extension)){let s=new Hr({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to be an image file`});new Ta.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}n.push(new il(o.path,o.name))}return n}function v9(t){return YM.contains(t)}function y9(t,e){let r=e.mountable.getArguments("option"),n=e.mountable.getArguments("optionQuery");return Zoe(r,n,t)}var x9=require("obsidian");var tx=class extends x9.Modal{constructor(e,r,n){super(e.app),this.content=r,r.setModal(this),this.options=n}onOpen(){this.options?.title&&this.titleEl.setText(this.options.title),this.options?.classes&&mt.addClasses(this.modalEl,this.options.classes),this.content.mount(this.contentEl)}onClose(){this.content.unmount()}};var Hm=require("obsidian"),rx=class extends Hm.FuzzySuggestModal{constructor(e,r){super(e.app),this.content=r}renderSuggestion(e,r){(0,Hm.renderResults)(r.createDiv(),this.content.getItemText(e.item),e.match);let n=this.content.getItemDescription(e.item);n&&(0,Hm.renderResults)(r.createEl("small",{cls:"mb-search-modal-element-description"}),n,{score:0,matches:[]})}getItems(){return this.content.getItems()}getItemText(e){return this.content.getItemText(e)}onChooseItem(e,r){this.content.onSelected(e)}};var b9=require("obsidian");function Joe(t,e,r,n,i){let a=[];for(let o of r)a.push(new il(o.value,o.name,"option"));if(n.length>0){let o;try{o=p9(t)}catch(l){return new b9.Notice("meta-bind | Dataview needs to be installed and enabled to use suggest option queries. Check the console for more information."),console.warn("meta-bind | failed to get dataview api",l),a}let s=ve.object({name:ve.string().min(1),path:ve.string().min(1)});for(let l of n)o.pages(l.value,e).forEach(c=>{try{let f=c.file;if(!s.safeParse(f).success)return;let m=i9(f.path,f.name,i);a.push(new il(m,f.name,`file: ${f.path}`))}catch(f){console.warn("meta-bind | error while computing suggest options",f)}})}return a}function w9(t,e){let r=e.mountable.getArguments("option"),n=e.mountable.getArguments("optionQuery"),i=e.mountable.getArgument("useLinks");return Joe(t,e.mountable.getFilePath(),r,n,i===void 0?"true":i.value)}var _9=require("obsidian"),nx=class{constructor(){this.menu=new _9.Menu}setItems(e){for(let r of e)this.menu.addItem(n=>{n.setTitle(r.name),r.icon&&n.setIcon(r.icon),r.warning&&n.setWarning(r.warning),n.onClick(r.onclick)})}show(e,r){this.menu.showAtPosition({x:e,y:r},document)}showWithEvent(e){this.menu.showAtMouseEvent(e)}};var oc=require("obsidian");var ix=class{constructor(e){this.plugin=e}isExcludedFromRendering(e){for(let r of this.plugin.settings.excludedFolders)if(e.startsWith(r))return!0;return!1}};var ax=class extends ix{constructor(e){super(e),this.app=e.app}async read(e){let r=this.app.vault.getAbstractFileByPath(e);if(!r||!(r instanceof oc.TFile))throw new Error(`file not found: ${e}`);return this.app.vault.cachedRead(r)}async write(e,r){let n=this.app.vault.getFileByPath(e);if(!n)throw new Error(`file not found: ${e}`);await this.app.vault.modify(n,r)}async exists(e){return this.app.vault.getFileByPath(e)!==null}async atomicModify(e,r){let n=this.app.vault.getFileByPath(e);if(!n)throw new Error(`file not found: ${e}`);await this.app.vault.process(n,i=>r(i))}async create(e,r,n,i){let a=this.app.vault.getAvailablePath((0,oc.normalizePath)(e+"/"+r),n),o=await this.app.vault.create(a,"");if(i){let s=this.app.workspace.getLeaf(!1);s&&await s.openFile(o,{state:{mode:"source"}})}return o.path}getAllFiles(){return this.app.vault.getAllLoadedFiles().filter(e=>e instanceof oc.TFile).map(e=>e.path)}getAllFolders(){return this.app.vault.getAllLoadedFiles().filter(e=>e instanceof oc.TFolder).map(e=>e.path)}open(e,r,n){this.app.workspace.openLinkText(e,r,n)}getPathByName(e,r=""){return this.app.metadataCache.getFirstLinkpathDest(e,r)?.path}};var Gm=require("obsidian");var ox=class{constructor(e,r,n,i,a){this.plugin=e,this.containerEl=r,this.code=i,this.hidden=a;let o=e.app.vault.getAbstractFileByPath(n);if(!(o instanceof Gm.TFile))throw new Error(`File not found: ${n}`);this.file=o,this.jsEngine=nl(this.plugin),this.renderComponent=new Gm.Component}async evaluateCode(e){return this.jsEngine.internal.execute({code:this.code,context:{file:this.file,line:0,metadata:this.plugin.app.metadataCache.getFileCache(this.file)},container:this.containerEl,component:this.renderComponent,contextOverrides:e})}async evaluate(e){try{mt.empty(this.containerEl),mt.removeClass(this.containerEl,"mb-error"),this.renderComponent.unload(),this.renderComponent=new Gm.Component,this.renderComponent.load();let r=await this.evaluateCode(e),n=this.jsEngine.internal.createRenderer(this.containerEl,this.file.path,this.renderComponent);return this.hidden||await n.render(r.result),n.convertToSimpleObject(r.result)}catch(r){r instanceof Error&&(this.containerEl.innerText=r.message,mt.addClass(this.containerEl,"mb-error"));return}}unload(){this.renderComponent.unload()}};var sx=class extends Ky{constructor(e){super(e,new ax(e)),this.app=e.app}getLifecycleHookValidator(){return ve.instanceof(Mn.Component)}getImageSuggesterOptions(e){return y9(this.plugin,e)}getSuggesterOptions(e){return w9(this.plugin,e)}async renderMarkdown(e,r,n){let i=new Mn.Component;return i.load(),await Mn.MarkdownRenderer.render(this.app,e,r,n,i),()=>i.unload()}executeCommandById(e){return this.app.commands.executeCommandById(e)}isJsEngineAvailable(){try{return nl(this.plugin),!0}catch{return!1}}async jsEngineRunFile(e,r,n,i){let a=nl(this.plugin),o=this.app.vault.getAbstractFileByPath(r);if(!o||!(o instanceof Mn.TFile))throw new Error(`calling file not found: ${r}`);let s=this.app.metadataCache.getFileCache(o),l=new Mn.Component;return await a.internal.executeFile(e,{component:l,container:i,context:{metadata:s,file:o,line:0},contextOverrides:n}),()=>l.unload()}async jsEngineRunCode(e,r,n,i){let a=nl(this.plugin),o=this.app.vault.getAbstractFileByPath(r);if(!o||!(o instanceof Mn.TFile))throw new Error(`calling file not found: ${r}`);let s=this.app.metadataCache.getFileCache(o),l=new Mn.Component;return await a.internal.execute({code:e,component:l,container:i,context:{metadata:s,file:o,line:0},contextOverrides:n}),()=>l.unload()}createJsRenderer(e,r,n,i){return new ox(this.plugin,e,r,n,i)}showNotice(e){new Mn.Notice(e)}parseYaml(e){return(0,Mn.parseYaml)(e)}stringifyYaml(e){return(0,Mn.stringifyYaml)(e)}setIcon(e,r){(0,Mn.setIcon)(e,r)}imagePathToUri(e){return this.app.vault.adapter.getResourcePath(e)}createModal(e,r){return new tx(this.plugin,e,r)}createSearchModal(e){return new rx(this.plugin,e)}getAllCommands(){return this.app.commands.listCommands().map(e=>({id:e.id,name:e.name}))}createFuzzySearch(){return new ex}createContextMenu(e){let r=new nx;return r.setItems(e),r}async evaluateTemplaterTemplate(e,r){let n=TM(this.plugin),i=this.app.vault.getAbstractFileByPath(e);if(!i||!(i instanceof Mn.TFile))throw new Error(`Template file not found: ${e}`);let a=this.app.vault.getAbstractFileByPath(r);if(!a||!(a instanceof Mn.TFile))throw new Error(`Target file not found: ${r}`);let o=n.create_running_config(i,a,4);return await n.read_and_parse_template(o)}async createNoteWithTemplater(e,r,n,i){let a=TM(this.plugin),o=this.app.vault.getAbstractFileByPath(e);if(!o||!(o instanceof Mn.TFile))throw new Error(`Template file not found: ${e}`);let s;if(r!==void 0){let u=this.app.vault.getAbstractFileByPath(r);if(!u||!(u instanceof Mn.TFolder))throw new Error(`Folder not found: ${r}`);s=u}return(await a.create_new_note_from_template(o,s,n,i??!0))?.path}};var jM=require("obsidian");var ux=class extends xc{constructor(e,r,n){super(r,n),this.plugin=e,this.plugin.registerEvent(this.plugin.app.metadataCache.on("changed",(i,a,o)=>{this.manager.onExternalUpdate(this,i.path,structuredClone(o.frontmatter)??{})}))}readExternal(e){let r=this.plugin.app.vault.getAbstractFileByPath(e);if(r==null||!(r instanceof jM.TFile))throw new Gt({errorLevel:"CRITICAL",effect:"can not get default cache item",cause:`no file for path "${e}" found or path is not a file`});let n=this.plugin.app.metadataCache.getFileCache(r)?.frontmatter;return structuredClone(n)??{}}getDefaultCacheItem(e){let r=this.plugin.app.vault.getAbstractFileByPath(e);if(r==null||!(r instanceof jM.TFile))throw new Gt({errorLevel:"CRITICAL",effect:"can not get default cache item",cause:`no file for path "${e}" found or path is not a file`});let n=this.plugin.app.metadataCache.getFileCache(r)?.frontmatter;return{data:structuredClone(n)??{},storagePath:e,file:r,...this.manager.getDefaultCacheItem()}}syncExternal(e){this.plugin.app.fileManager.processFrontMatter(e.file,r=>{Object.assign(r,e.data)})}};var Wm=class extends mu{constructor(e,r){super(void 0),this.ctx=e,this.element=r}getPosition(){let e=this.ctx.getSectionInfo(this.element);if(e)return{lineStart:e.lineStart,lineEnd:e.lineEnd}}};var A9=require("obsidian");function ZM(t,e){Te(e,!0);let r=new cf(e.plugin,Fr(),"","block",e.declaration);Iu(t,{mountable:r}),De()}var Xoe=ue('

');function JM(t,e){Te(e,!0);let r=e.plugin.api.createInlineFieldFromString(e.declaration.inputField,"",void 0,"block"),n=e.plugin.api.createInlineFieldFromString(e.declaration.declaration,"",void 0,"block");var i=Xoe(),a=ye(i),o=ye(a,!0);ce(a);var s=le(a,2);Iu(s,{mountable:r});var l=le(s,2);Iu(l,{mountable:n});var u=le(l,2),c=ye(u,!0);ce(u),ce(i),Re(()=>{ht(o,e.declaration.title),ht(c,e.declaration.display)}),ee(t,i),De()}var Qoe=ue("

Meta Bind Playground

",1),Koe=ue(`

Quick Reference

Error Messages

When creating Input Fields or View Fields warnings ( ) and errors ( ) can occur. These are clickable and will show a modal with detailed information about the error +In case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.`,examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","variance"]};var d$={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, dimension)","std(A, normalization)","std(A, dimension, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","prod","sum","variance"]};var h$={name:"cumsum",category:"Statistics",syntax:["cumsum(a, b, c, ...)","cumsum(A)"],description:"Compute the cumulative sum of all values.",examples:["cumsum(2, 3, 4, 1)","cumsum([2, 3, 4, 1])","cumsum([1, 2; 3, 4])","cumsum([1, 2; 3, 4], 1)","cumsum([1, 2; 3, 4], 2)"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var g$={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)","sum(A, dimension)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","variance"]};var v$={name:"variance",category:"Statistics",syntax:["variance(a, b, c, ...)","variance(A)","variance(A, dimension)","variance(A, normalization)","variance(A, dimension, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["variance(2, 4, 6)","variance([2, 4, 6, 8])",'variance([2, 4, 6, 8], "uncorrected")','variance([2, 4, 6, 8], "biased")',"variance([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]};var y$={name:"corr",category:"Statistics",syntax:["corr(A,B)"],description:"Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.",examples:["corr([2, 4, 6, 8],[1, 2, 3, 6])","corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))"],seealso:["max","mean","min","median","min","prod","std","sum"]};var b$={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]};var x$={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]};var w$={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]};var _$={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the inverse hyperbolic tangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]};var A$={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]};var D$={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the inverse hyperbolic cosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]};var S$={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]};var E$={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]};var T$={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]};var M$={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]};var C$={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]};var N$={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]};var F$={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]};var I$={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]};var B$={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]};var k$={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]};var P$={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]};var $$={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]};var O$={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]};var R$={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]};var L$={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]};var V$={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]};var U$={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]};var q$={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]};var z$={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]};var H$={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]};var G$={name:"bin",category:"Utils",syntax:["bin(value)"],description:"Format a number as binary",examples:["bin(2)"],seealso:["oct","hex"]};var W$={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables, and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]};var Y$={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]};var j$={name:"hasNumericValue",category:"Utils",syntax:["hasNumericValue(x)"],description:"Test whether a value is an numeric value. In case of a string, true is returned if the string contains a numeric value.",examples:["hasNumericValue(2)",'hasNumericValue("2")','isNumeric("2")',"hasNumericValue(0)","hasNumericValue(bignumber(500))","hasNumericValue(fraction(0.125))","hasNumericValue(2 + 3i)",'hasNumericValue([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","isNumeric"]};var Z$={name:"hex",category:"Utils",syntax:["hex(value)"],description:"Format a number as hexadecimal",examples:["hex(240)"],seealso:["bin","oct"]};var J$={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var X$={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]};var Q$={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]};var K$={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)",'isNumeric("2")','hasNumericValue("2")',"isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))","isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN","hasNumericValue"]};var eO={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var tO={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]};var rO={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]};var nO={name:"numeric",category:"Utils",syntax:["numeric(x)"],description:"Convert a numeric input to a specific numeric type: number, BigNumber, bigint, or Fraction.",examples:['numeric("4")','numeric("4", "number")','numeric("4", "bigint")','numeric("4", "BigNumber")','numeric("4", "Fraction")','numeric(4, "Fraction")','numeric(fraction(2, 5), "number")'],seealso:["number","bigint","fraction","bignumber","string","format"]};var iO={name:"oct",category:"Utils",syntax:["oct(value)"],description:"Format a number as octal",examples:["oct(56)"],seealso:["bin","hex"]};var aO={name:"print",category:"Utils",syntax:["print(template, values)","print(template, values, precision)"],description:"Interpolate values into a string template.",examples:['print("Lucy is $age years old", {age: 5})','print("The value of pi is $pi", {pi: pi}, 3)','print("Hello, $user.name!", {user: {name: "John"}})','print("Values: $1, $2, $3", [6, 9, 4])'],seealso:["format"]};var oO={name:"typeOf",category:"Utils",syntax:["typeOf(x)"],description:"Get the type of a variable.",examples:["typeOf(3.5)","typeOf(2 - 4i)","typeOf(45 deg)",'typeOf("hello world")'],seealso:["getMatrixDataType"]};var sO={name:"solveODE",category:"Numeric",syntax:["solveODE(func, tspan, y0)","solveODE(func, tspan, y0, options)"],description:"Numerical Integration of Ordinary Differential Equations.",examples:["f(t,y) = y","tspan = [0, 4]","solveODE(f, tspan, 1)","solveODE(f, tspan, [1, 2])",'solveODE(f, tspan, 1, { method:"RK23", maxStep:0.1 })'],seealso:["derivative","simplifyCore"]};var uO={bignumber:J2,bigint:X2,boolean:Q2,complex:K2,createUnit:eB,fraction:tB,index:rB,matrix:nB,number:iB,sparse:aB,splitUnit:oB,string:sB,unit:uB,e:Q0,E:Q0,false:P2,i:$2,Infinity:O2,LN2:L2,LN10:R2,LOG2E:U2,LOG10E:V2,NaN:q2,null:z2,pi:K0,PI:K0,phi:H2,SQRT1_2:G2,SQRT2:W2,tau:Y2,true:j2,version:Z2,speedOfLight:{description:"Speed of light in vacuum",examples:["speedOfLight"]},gravitationConstant:{description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},planckConstant:{description:"Planck constant",examples:["planckConstant"]},reducedPlanckConstant:{description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},magneticConstant:{description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},electricConstant:{description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},vacuumImpedance:{description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},coulomb:{description:"Coulomb's constant",examples:["coulomb"]},elementaryCharge:{description:"Elementary charge",examples:["elementaryCharge"]},bohrMagneton:{description:"Bohr magneton",examples:["bohrMagneton"]},conductanceQuantum:{description:"Conductance quantum",examples:["conductanceQuantum"]},inverseConductanceQuantum:{description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},magneticFluxQuantum:{description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},nuclearMagneton:{description:"Nuclear magneton",examples:["nuclearMagneton"]},klitzing:{description:"Von Klitzing constant",examples:["klitzing"]},bohrRadius:{description:"Bohr radius",examples:["bohrRadius"]},classicalElectronRadius:{description:"Classical electron radius",examples:["classicalElectronRadius"]},electronMass:{description:"Electron mass",examples:["electronMass"]},fermiCoupling:{description:"Fermi coupling constant",examples:["fermiCoupling"]},fineStructure:{description:"Fine-structure constant",examples:["fineStructure"]},hartreeEnergy:{description:"Hartree energy",examples:["hartreeEnergy"]},protonMass:{description:"Proton mass",examples:["protonMass"]},deuteronMass:{description:"Deuteron Mass",examples:["deuteronMass"]},neutronMass:{description:"Neutron mass",examples:["neutronMass"]},quantumOfCirculation:{description:"Quantum of circulation",examples:["quantumOfCirculation"]},rydberg:{description:"Rydberg constant",examples:["rydberg"]},thomsonCrossSection:{description:"Thomson cross section",examples:["thomsonCrossSection"]},weakMixingAngle:{description:"Weak mixing angle",examples:["weakMixingAngle"]},efimovFactor:{description:"Efimov factor",examples:["efimovFactor"]},atomicMass:{description:"Atomic mass constant",examples:["atomicMass"]},avogadro:{description:"Avogadro's number",examples:["avogadro"]},boltzmann:{description:"Boltzmann constant",examples:["boltzmann"]},faraday:{description:"Faraday constant",examples:["faraday"]},firstRadiation:{description:"First radiation constant",examples:["firstRadiation"]},loschmidt:{description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},gasConstant:{description:"Gas constant",examples:["gasConstant"]},molarPlanckConstant:{description:"Molar Planck constant",examples:["molarPlanckConstant"]},molarVolume:{description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},sackurTetrode:{description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},secondRadiation:{description:"Second radiation constant",examples:["secondRadiation"]},stefanBoltzmann:{description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},wienDisplacement:{description:"Wien displacement law constant",examples:["wienDisplacement"]},molarMass:{description:"Molar mass constant",examples:["molarMass"]},molarMassC12:{description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},gravity:{description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},planckLength:{description:"Planck length",examples:["planckLength"]},planckMass:{description:"Planck mass",examples:["planckMass"]},planckTime:{description:"Planck time",examples:["planckTime"]},planckCharge:{description:"Planck charge",examples:["planckCharge"]},planckTemperature:{description:"Planck temperature",examples:["planckTemperature"]},derivative:pB,lsolve:dB,lsolveAll:hB,lup:gB,lusolve:vB,leafCount:mB,polynomialRoot:yB,resolve:wB,simplify:_B,simplifyConstant:AB,simplifyCore:DB,symbolicEqual:EB,rationalize:xB,slu:SB,usolve:TB,usolveAll:MB,qr:bB,abs:CB,add:NB,cbrt:FB,ceil:IB,cube:BB,divide:kB,dotDivide:PB,dotMultiply:$B,dotPow:OB,exp:RB,expm:LB,expm1:VB,fix:UB,floor:qB,gcd:zB,hypot:HB,lcm:WB,log:YB,log2:JB,log1p:ZB,log10:jB,mod:XB,multiply:QB,norm:KB,nthRoot:ek,nthRoots:tk,pow:rk,round:nk,sign:ik,sqrt:ak,sqrtm:ok,square:ck,subtract:fk,unaryMinus:pk,unaryPlus:mk,xgcd:dk,invmod:GB,bitAnd:hk,bitNot:gk,bitOr:vk,bitXor:yk,leftShift:bk,rightArithShift:xk,rightLogShift:wk,bellNumbers:_k,catalan:Ak,composition:Dk,stirlingS2:Sk,config:lB,import:cB,typed:fB,arg:Ek,conj:Tk,re:Ck,im:Mk,evaluate:Nk,help:Fk,distance:Ik,intersect:Bk,and:kk,not:Pk,or:$k,xor:Ok,mapSlices:Rk,concat:Vk,count:Uk,cross:qk,column:Lk,ctranspose:zk,det:Hk,diag:Gk,diff:Wk,dot:Yk,getMatrixDataType:Qk,identity:Kk,filter:Zk,flatten:Jk,forEach:Xk,inv:eP,pinv:tP,eigs:jk,kron:rP,matrixFromFunction:aP,matrixFromRows:oP,matrixFromColumns:iP,map:nP,ones:sP,partitionSelect:uP,range:lP,resize:fP,reshape:cP,rotate:pP,rotationMatrix:mP,row:dP,size:hP,sort:gP,squeeze:vP,subset:yP,trace:bP,transpose:xP,zeros:wP,fft:_P,ifft:AP,sylvester:sk,schur:uk,lyap:lk,solveODE:sO,combinations:DP,combinationsWithRep:SP,factorial:EP,gamma:TP,kldivergence:CP,lgamma:MP,multinomial:NP,permutations:FP,pickRandom:IP,random:BP,randomInt:kP,compare:PP,compareNatural:$P,compareText:OP,deepEqual:RP,equal:LP,equalText:VP,larger:UP,largerEq:qP,smaller:zP,smallerEq:HP,unequal:GP,setCartesian:WP,setDifference:YP,setDistinct:jP,setIntersect:ZP,setIsSubset:JP,setMultiplicity:XP,setPowerset:QP,setSize:KP,setSymDifference:e$,setUnion:t$,zpk2tf:r$,freqz:n$,erf:i$,zeta:a$,cumsum:h$,mad:o$,max:s$,mean:u$,median:l$,min:c$,mode:f$,prod:p$,quantileSeq:m$,std:d$,sum:g$,variance:v$,corr:y$,acos:b$,acosh:x$,acot:w$,acoth:_$,acsc:A$,acsch:D$,asec:S$,asech:E$,asin:T$,asinh:M$,atan:C$,atanh:F$,atan2:N$,cos:I$,cosh:B$,cot:k$,coth:P$,csc:$$,csch:O$,sec:R$,sech:L$,sin:V$,sinh:U$,tan:q$,tanh:z$,to:H$,clone:W$,format:Y$,bin:G$,oct:iO,hex:Z$,isNaN:X$,isInteger:J$,isNegative:Q$,isNumeric:K$,hasNumericValue:j$,isPositive:eO,isPrime:tO,isZero:rO,print:aO,typeOf:oO,numeric:nO};var lO="help",vX=["typed","mathWithTransform","Help"],cO=M(lO,vX,t=>{var{typed:e,mathWithTransform:r,Help:n}=t;return e(lO,{any:function(a){var o,s=a;if(typeof a!="string"){for(o in r)if(Ze(r,o)&&a===r[o]){s=o;break}}var l=jr(uO,s);if(!l){var u=typeof s=="function"?s.name:s;throw new Error('No documentation found on "'+u+'"')}return new n(l)}})});var fO="chain",yX=["typed","Chain"],pO=M(fO,yX,t=>{var{typed:e,Chain:r}=t;return e(fO,{"":function(){return new r},any:function(i){return new r(i)}})});var mO="det",bX=["typed","matrix","subtractScalar","multiply","divideScalar","isZero","unaryMinus"],dO=M(mO,bX,t=>{var{typed:e,matrix:r,subtractScalar:n,multiply:i,divideScalar:a,isZero:o,unaryMinus:s}=t;return e(mO,{any:function(c){return ut(c)},"Array | Matrix":function(c){var f;switch(Ye(c)?f=c.size():Array.isArray(c)?(c=r(c),f=c.size()):f=[],f.length){case 0:return ut(c);case 1:if(f[0]===1)return ut(c.valueOf()[0]);if(f[0]===0)return 1;throw new RangeError("Matrix must be square (size: "+Dt(f)+")");case 2:{var m=f[0],p=f[1];if(m===p)return l(c.clone().valueOf(),m,p);if(p===0)return 1;throw new RangeError("Matrix must be square (size: "+Dt(f)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(f)+")")}}});function l(u,c,f){if(c===1)return ut(u[0][0]);if(c===2)return n(i(u[0][0],u[1][1]),i(u[1][0],u[0][1]));for(var m=!1,p=new Array(c).fill(0).map((E,T)=>T),d=0;d{var{typed:e,matrix:r,divideScalar:n,addScalar:i,multiply:a,unaryMinus:o,det:s,identity:l,abs:u}=t;return e(hO,{"Array | Matrix":function(m){var p=Ye(m)?m.size():ct(m);switch(p.length){case 1:if(p[0]===1)return Ye(m)?r([n(1,m.valueOf()[0])]):[n(1,m[0])];throw new RangeError("Matrix must be square (size: "+Dt(p)+")");case 2:{var d=p[0],h=p[1];if(d===h)return Ye(m)?r(c(m.valueOf(),d,h),m.storage()):c(m,d,h);throw new RangeError("Matrix must be square (size: "+Dt(p)+")")}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(p)+")")}},any:function(m){return n(1,m)}});function c(f,m,p){var d,h,b,y,D;if(m===1){if(y=f[0][0],y===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(1,y)]]}else if(m===2){var v=s(f);if(v===0)throw Error("Cannot calculate inverse, determinant is zero");return[[n(f[1][1],v),n(o(f[0][1]),v)],[n(o(f[1][0]),v),n(f[0][0],v)]]}else{var A=f.concat();for(d=0;dE&&(E=u(A[d][x]),T=d),d++;if(E===0)throw Error("Cannot calculate inverse, determinant is zero");d=T,d!==x&&(D=A[x],A[x]=A[d],A[d]=D,D=w[x],w[x]=w[d],w[d]=D);var _=A[x],C=w[x];for(d=0;d{var{typed:e,matrix:r,inv:n,deepEqual:i,equal:a,dotDivide:o,dot:s,ctranspose:l,divideScalar:u,multiply:c,add:f,Complex:m}=t;return e(vO,{"Array | Matrix":function(v){var A=Ye(v)?v.size():ct(v);switch(A.length){case 1:return y(v)?l(v):A[0]===1?n(v):o(l(v),s(v,v));case 2:{if(y(v))return l(v);var w=A[0],x=A[1];if(w===x)try{return n(v)}catch(E){if(!(E instanceof Error&&E.message.match(/Cannot calculate inverse, determinant is zero/)))throw E}return Ye(v)?r(p(v.valueOf(),w,x),v.storage()):p(v,w,x)}default:throw new RangeError("Matrix must be two dimensional (size: "+Dt(A)+")")}},any:function(v){return a(v,0)?ut(v):u(1,v)}});function p(D,v,A){var{C:w,F:x}=h(D,v,A),E=c(n(c(l(w),w)),l(w)),T=c(l(x),n(c(x,l(x))));return c(T,E)}function d(D,v,A){for(var w=ut(D),x=0,E=0;ET.filter((C,N)=>N!b(s(w[_],w[_])));return{C:x,F:E}}function b(D){return a(f(D,m(1,1)),f(0,m(1,1)))}function y(D){return i(f(D,m(1,1)),f(c(D,0),m(1,1)))}});function bO(t){var{addScalar:e,subtract:r,flatten:n,multiply:i,multiplyScalar:a,divideScalar:o,sqrt:s,abs:l,bignumber:u,diag:c,size:f,reshape:m,inv:p,qr:d,usolve:h,usolveAll:b,equal:y,complex:D,larger:v,smaller:A,matrixFromColumns:w,dot:x}=t;function E(X,U,fe,xe){var oe=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,be=T(X,U,fe,xe,oe);_(X,U,fe,xe,oe,be);var{values:ee,C:Z}=C(X,U,fe,xe,oe);if(oe){var re=N(X,U,Z,be,ee,fe,xe);return{values:ee,eigenvectors:re}}return{values:ee}}function T(X,U,fe,xe,oe){var be=xe==="BigNumber",ee=xe==="Complex",Z=be?u(0):0,re=be?u(1):ee?D(1):1,me=be?u(1):1,ce=be?u(10):2,Ae=a(ce,ce),we;oe&&(we=Array(U).fill(re));for(var G=!1;!G;){G=!0;for(var J=0;J1&&(G=c(Array(ce-1).fill(Z)))),ce-=1,re.pop();for(var Je=0;Je2&&(G=c(Array(ce-2).fill(Z)))),ce-=2,re.pop(),re.pop();for(var qe=0;qe+r(l(pr),l(Pe))),J>100){var rr=Error("The eigenvalues failed to converge. Only found these eigenvalues: "+me.join(", "));throw rr.values=me,rr.vectors=[],rr}var Wt=oe?i(we,V(Ae,U)):void 0;return{values:me,C:Wt}}function N(X,U,fe,xe,oe,be,ee){var Z=p(fe),re=i(Z,X,fe),me=ee==="BigNumber",ce=ee==="Complex",Ae=me?u(0):ce?D(0):0,we=me?u(1):ce?D(1):1,G=[],J=[];for(var ge of oe){var ye=P(G,ge,y);ye===-1?(G.push(ge),J.push(1)):J[ye]+=1}for(var De=[],Ie=G.length,Oe=Array(U).fill(Ae),Je=c(Array(U).fill(we)),wt=function(){var Wt=G[qe],pr=r(re,i(Wt,Je)),Pe=b(pr,Oe);for(Pe.shift();Pe.lengthi(de,pe)),De.push(...Pe.map(pe=>({value:Wt,vector:n(pe)})))},qe=0;qe=5)return null;for(Z=0;;){var re=h(X,ee);if(A(Q(O(ee,[re])),xe))break;if(++Z>=10)return null;ee=ne(re)}return ee}function W(X,U,fe){var xe=fe==="BigNumber",oe=fe==="Complex",be=Array(X).fill(0).map(ee=>2*Math.random()-1);return xe&&(be=be.map(ee=>u(ee))),oe&&(be=be.map(ee=>D(ee))),be=O(be,U),ne(be,fe)}function O(X,U){var fe=f(X);for(var xe of U)xe=m(xe,fe),X=r(X,i(o(x(xe,X),x(xe,xe)),xe));return X}function Q(X){return l(s(x(X,X)))}function ne(X,U){var fe=U==="BigNumber",xe=U==="Complex",oe=fe?u(1):xe?D(1):1;return i(o(oe,Q(X)),X)}return E}function xO(t){var{config:e,addScalar:r,subtract:n,abs:i,atan:a,cos:o,sin:s,multiplyScalar:l,inv:u,bignumber:c,multiply:f,add:m}=t;function p(_,C){var N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.relTol,I=arguments.length>3?arguments[3]:void 0,R=arguments.length>4?arguments[4]:void 0;if(I==="number")return d(_,N,R);if(I==="BigNumber")return h(_,N,R);throw TypeError("Unsupported data type: "+I)}function d(_,C,N){var I=_.length,R=Math.abs(C/I),L,V;if(N){V=new Array(I);for(var P=0;P=Math.abs(R);){var W=k[0][0],O=k[0][1];L=b(_[W][W],_[O][O],_[W][O]),_=w(_,L,W,O),N&&(V=D(V,L,W,O)),k=x(_)}for(var Q=Array(I).fill(0),ne=0;ne=i(R);){var W=k[0][0],O=k[0][1];L=y(_[W][W],_[O][O],_[W][O]),_=A(_,L,W,O),N&&(V=v(V,L,W,O)),k=E(_)}for(var Q=Array(I).fill(0),ne=0;ne({value:R[U],vector:X}));return{values:R,eigenvectors:ne}}return p}var _X="eigs",AX=["config","typed","matrix","addScalar","equal","subtract","abs","atan","cos","sin","multiplyScalar","divideScalar","inv","bignumber","multiply","add","larger","column","flatten","number","complex","sqrt","diag","size","reshape","qr","usolve","usolveAll","im","re","smaller","matrixFromColumns","dot"],wO=M(_X,AX,t=>{var{config:e,typed:r,matrix:n,addScalar:i,subtract:a,equal:o,abs:s,atan:l,cos:u,sin:c,multiplyScalar:f,divideScalar:m,inv:p,bignumber:d,multiply:h,add:b,larger:y,column:D,flatten:v,number:A,complex:w,sqrt:x,diag:E,size:T,reshape:_,qr:C,usolve:N,usolveAll:I,im:R,re:L,smaller:V,matrixFromColumns:P,dot:k}=t,W=xO({config:e,addScalar:i,subtract:a,column:D,flatten:v,equal:o,abs:s,atan:l,cos:u,sin:c,multiplyScalar:f,inv:p,bignumber:d,complex:w,multiply:h,add:b}),O=bO({config:e,addScalar:i,subtract:a,multiply:h,multiplyScalar:f,flatten:v,divideScalar:m,sqrt:x,abs:s,bignumber:d,diag:E,size:T,reshape:_,qr:C,inv:p,usolve:N,usolveAll:I,equal:o,complex:w,larger:y,smaller:V,matrixFromColumns:P,dot:k});return r("eigs",{Array:function(be){return Q(n(be))},"Array, number|BigNumber":function(be,ee){return Q(n(be),{precision:ee})},"Array, Object"(oe,be){return Q(n(oe),be)},Matrix:function(be){return Q(be,{matricize:!0})},"Matrix, number|BigNumber":function(be,ee){return Q(be,{precision:ee,matricize:!0})},"Matrix, Object":function(be,ee){var Z={matricize:!0};return bn(Z,ee),Q(be,Z)}});function Q(oe){var be,ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Z="eigenvectors"in ee?ee.eigenvectors:!0,re=(be=ee.precision)!==null&&be!==void 0?be:e.relTol,me=ne(oe,re,Z);return ee.matricize&&(me.values=n(me.values),Z&&(me.eigenvectors=me.eigenvectors.map(ce=>{var{value:Ae,vector:we}=ce;return{value:Ae,vector:n(we)}}))),Z&&Object.defineProperty(me,"vectors",{enumerable:!1,get:()=>{throw new Error("eigs(M).vectors replaced with eigs(M).eigenvectors")}}),me}function ne(oe,be,ee){var Z=oe.toArray(),re=oe.size();if(re.length!==2||re[0]!==re[1])throw new RangeError("Matrix must be square (size: ".concat(Dt(re),")"));var me=re[0];if(U(Z,me,be)&&(fe(Z,me),X(Z,me,be))){var ce=xe(oe,Z,me);return W(Z,me,be,ce,ee)}var Ae=xe(oe,Z,me);return O(Z,me,be,Ae,ee)}function X(oe,be,ee){for(var Z=0;Z{var{typed:e,abs:r,add:n,identity:i,inv:a,multiply:o}=t;return e(_O,{Matrix:function(f){var m=f.size();if(m.length!==2||m[0]!==m[1])throw new RangeError("Matrix must be square (size: "+Dt(m)+")");for(var p=m[0],d=1e-15,h=s(f),b=l(h,d),y=b.q,D=b.j,v=o(f,Math.pow(2,-D)),A=i(p),w=i(p),x=1,E=v,T=-1,_=1;_<=y;_++)_>1&&(E=o(E,v),T=-T),x=x*(y-_+1)/((2*y-_+1)*_),A=n(A,o(x,E)),w=n(w,o(x*T,E));for(var C=o(a(w),A),N=0;N{var{typed:e,abs:r,add:n,multiply:i,map:a,sqrt:o,subtract:s,inv:l,size:u,max:c,identity:f}=t,m=1e3,p=1e-6;function d(h){var b,y=0,D=h,v=f(u(h));do{var A=D;if(D=i(.5,n(A,l(v))),v=i(.5,n(v,l(A))),b=c(r(s(D,A))),b>p&&++y>m)throw new Error("computing square root of matrix: iterative method could not converge")}while(b>p);return D}return e(DO,{"Array | Matrix":function(b){var y=Ye(b)?b.size():ct(b);switch(y.length){case 1:if(y[0]===1)return a(b,o);throw new RangeError("Matrix must be square (size: "+Dt(y)+")");case 2:{var D=y[0],v=y[1];if(D===v)return d(b);throw new RangeError("Matrix must be square (size: "+Dt(y)+")")}default:throw new RangeError("Matrix must be at most two dimensional (size: "+Dt(y)+")")}}})});var EO="sylvester",EX=["typed","schur","matrixFromColumns","matrix","multiply","range","concat","transpose","index","subset","add","subtract","identity","lusolve","abs"],TO=M(EO,EX,t=>{var{typed:e,schur:r,matrixFromColumns:n,matrix:i,multiply:a,range:o,concat:s,transpose:l,index:u,subset:c,add:f,subtract:m,identity:p,lusolve:d,abs:h}=t;return e(EO,{"Matrix, Matrix, Matrix":b,"Array, Matrix, Matrix":function(D,v,A){return b(i(D),v,A)},"Array, Array, Matrix":function(D,v,A){return b(i(D),i(v),A)},"Array, Matrix, Array":function(D,v,A){return b(i(D),v,i(A))},"Matrix, Array, Matrix":function(D,v,A){return b(D,i(v),A)},"Matrix, Array, Array":function(D,v,A){return b(D,i(v),i(A))},"Matrix, Matrix, Array":function(D,v,A){return b(D,v,i(A))},"Array, Array, Array":function(D,v,A){return b(i(D),i(v),i(A)).toArray()}});function b(y,D,v){for(var A=D.size()[0],w=y.size()[0],x=r(y),E=x.T,T=x.U,_=r(a(-1,D)),C=_.T,N=_.U,I=a(a(l(T),v),N),R=o(0,w),L=[],V=(ce,Ae)=>s(ce,Ae,1),P=(ce,Ae)=>s(ce,Ae,0),k=0;k1e-5){for(var W=P(c(I,u(R,k)),c(I,u(R,k+1))),O=0;O{var{typed:e,matrix:r,identity:n,multiply:i,qr:a,norm:o,subtract:s}=t;return e(MO,{Array:function(c){var f=l(r(c));return{U:f.U.valueOf(),T:f.T.valueOf()}},Matrix:function(c){return l(c)}});function l(u){var c=u.size()[0],f=u,m=n(c),p=0,d;do{d=f;var h=a(f),b=h.Q,y=h.R;if(f=i(y,b),m=i(m,b),p++>100)break}while(o(s(f,d))>1e-4);return{U:m,T:f}}});var NO="lyap",MX=["typed","matrix","sylvester","multiply","transpose"],FO=M(NO,MX,t=>{var{typed:e,matrix:r,sylvester:n,multiply:i,transpose:a}=t;return e(NO,{"Matrix, Matrix":function(s,l){return n(s,a(s),i(-1,l))},"Array, Matrix":function(s,l){return n(r(s),a(r(s)),i(-1,l))},"Matrix, Array":function(s,l){return n(s,a(r(s)),r(i(-1,l)))},"Array, Array":function(s,l){return n(r(s),a(r(s)),r(i(-1,l))).toArray()}})});var CX="divide",NX=["typed","matrix","multiply","equalScalar","divideScalar","inv"],IO=M(CX,NX,t=>{var{typed:e,matrix:r,multiply:n,equalScalar:i,divideScalar:a,inv:o}=t,s=Er({typed:e,equalScalar:i}),l=xn({typed:e});return e("divide",Fh({"Array | Matrix, Array | Matrix":function(c,f){return n(c,o(f))},"DenseMatrix, any":function(c,f){return l(c,f,a,!1)},"SparseMatrix, any":function(c,f){return s(c,f,a,!1)},"Array, any":function(c,f){return l(r(c),f,a,!1).valueOf()},"any, Array | Matrix":function(c,f){return n(c,o(f))}},a.signatures))});var BO="distance",FX=["typed","addScalar","subtractScalar","divideScalar","multiplyScalar","deepEqual","sqrt","abs"],kO=M(BO,FX,t=>{var{typed:e,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:a,deepEqual:o,sqrt:s,abs:l}=t;return e(BO,{"Array, Array, Array":function(w,x,E){if(w.length===2&&x.length===2&&E.length===2){if(!c(w))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!c(x))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!c(E))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(o(x,E))throw new TypeError("LinePoint1 should not be same with LinePoint2");var T=n(E[1],x[1]),_=n(x[0],E[0]),C=n(i(E[0],x[1]),i(x[0],E[1]));return b(w[0],w[1],T,_,C)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(w,x,E){if(Object.keys(w).length===2&&Object.keys(x).length===2&&Object.keys(E).length===2){if(!c(w))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!c(x))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers");if(!c(E))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers");if(o(d(x),d(E)))throw new TypeError("LinePoint1 should not be same with LinePoint2");if("pointX"in w&&"pointY"in w&&"lineOnePtX"in x&&"lineOnePtY"in x&&"lineTwoPtX"in E&&"lineTwoPtY"in E){var T=n(E.lineTwoPtY,x.lineOnePtY),_=n(x.lineOnePtX,E.lineTwoPtX),C=n(i(E.lineTwoPtX,x.lineOnePtY),i(x.lineOnePtX,E.lineTwoPtY));return b(w.pointX,w.pointY,T,_,C)}else throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(w,x){if(w.length===2&&x.length===3){if(!c(w))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!f(x))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");return b(w[0],w[1],x[0],x[1],x[2])}else if(w.length===3&&x.length===6){if(!f(w))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!p(x))throw new TypeError("Array with 6 numbers or BigNumbers expected for second argument");return y(w[0],w[1],w[2],x[0],x[1],x[2],x[3],x[4],x[5])}else if(w.length===x.length&&w.length>0){if(!m(w))throw new TypeError("All values of an array should be numbers or BigNumbers");if(!m(x))throw new TypeError("All values of an array should be numbers or BigNumbers");return D(w,x)}else throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(w,x){if(Object.keys(w).length===2&&Object.keys(x).length===3){if(!c(w))throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");if(!f(x))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers");if("pointX"in w&&"pointY"in w&&"xCoeffLine"in x&&"yCoeffLine"in x&&"constant"in x)return b(w.pointX,w.pointY,x.xCoeffLine,x.yCoeffLine,x.constant);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===3&&Object.keys(x).length===6){if(!f(w))throw new TypeError("Values of pointX, pointY and pointZ should be numbers or BigNumbers");if(!p(x))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers or BigNumbers");if("pointX"in w&&"pointY"in w&&"x0"in x&&"y0"in x&&"z0"in x&&"a"in x&&"b"in x&&"c"in x)return y(w.pointX,w.pointY,w.pointZ,x.x0,x.y0,x.z0,x.a,x.b,x.c);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===2&&Object.keys(x).length===2){if(!c(w))throw new TypeError("Values of pointOneX and pointOneY should be numbers or BigNumbers");if(!c(x))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers or BigNumbers");if("pointOneX"in w&&"pointOneY"in w&&"pointTwoX"in x&&"pointTwoY"in x)return D([w.pointOneX,w.pointOneY],[x.pointTwoX,x.pointTwoY]);throw new TypeError("Key names do not match")}else if(Object.keys(w).length===3&&Object.keys(x).length===3){if(!f(w))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers");if(!f(x))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers");if("pointOneX"in w&&"pointOneY"in w&&"pointOneZ"in w&&"pointTwoX"in x&&"pointTwoY"in x&&"pointTwoZ"in x)return D([w.pointOneX,w.pointOneY,w.pointOneZ],[x.pointTwoX,x.pointTwoY,x.pointTwoZ]);throw new TypeError("Key names do not match")}else throw new TypeError("Invalid Arguments: Try again")},Array:function(w){if(!h(w))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return v(w)}});function u(A){return typeof A=="number"||ot(A)}function c(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])}function f(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])&&u(A[2])}function m(A){return Array.isArray(A)||(A=d(A)),A.every(u)}function p(A){return A.constructor!==Array&&(A=d(A)),u(A[0])&&u(A[1])&&u(A[2])&&u(A[3])&&u(A[4])&&u(A[5])}function d(A){for(var w=Object.keys(A),x=[],E=0;Ew.length!==2||!u(w[0])||!u(w[1])))return!1}else if(A[0].length===3&&u(A[0][0])&&u(A[0][1])&&u(A[0][2])){if(A.some(w=>w.length!==3||!u(w[0])||!u(w[1])||!u(w[2])))return!1}else return!1;return!0}function b(A,w,x,E,T){var _=l(r(r(i(x,A),i(E,w)),T)),C=s(r(i(x,x),i(E,E)));return a(_,C)}function y(A,w,x,E,T,_,C,N,I){var R=[n(i(n(T,w),I),i(n(_,x),N)),n(i(n(_,x),C),i(n(E,A),I)),n(i(n(E,A),N),i(n(T,w),C))];R=s(r(r(i(R[0],R[0]),i(R[1],R[1])),i(R[2],R[2])));var L=s(r(r(i(C,C),i(N,N)),i(I,I)));return a(R,L)}function D(A,w){for(var x=A.length,E=0,T=0,_=0;_{var{typed:e,config:r,abs:n,add:i,addScalar:a,matrix:o,multiply:s,multiplyScalar:l,divideScalar:u,subtract:c,smaller:f,equalScalar:m,flatten:p,isZero:d,isNumeric:h}=t;return e("intersect",{"Array, Array, Array":b,"Array, Array, Array, Array":y,"Matrix, Matrix, Matrix":function(N,I,R){var L=b(N.valueOf(),I.valueOf(),R.valueOf());return L===null?null:o(L)},"Matrix, Matrix, Matrix, Matrix":function(N,I,R,L){var V=y(N.valueOf(),I.valueOf(),R.valueOf(),L.valueOf());return V===null?null:o(V)}});function b(C,N,I){if(C=D(C),N=D(N),I=D(I),!A(C))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!A(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!w(I))throw new TypeError("Array with 4 numbers expected as third argument");return _(C[0],C[1],C[2],N[0],N[1],N[2],I[0],I[1],I[2],I[3])}function y(C,N,I,R){if(C=D(C),N=D(N),I=D(I),R=D(R),C.length===2){if(!v(C))throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");if(!v(N))throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");if(!v(I))throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");if(!v(R))throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");return x(C,N,I,R)}else if(C.length===3){if(!A(C))throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");if(!A(N))throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");if(!A(I))throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");if(!A(R))throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");return T(C[0],C[1],C[2],N[0],N[1],N[2],I[0],I[1],I[2],R[0],R[1],R[2])}else throw new TypeError("Arrays with two or thee dimensional points expected")}function D(C){return C.length===1?C[0]:C.length>1&&Array.isArray(C[0])&&C.every(N=>Array.isArray(N)&&N.length===1)?p(C):C}function v(C){return C.length===2&&h(C[0])&&h(C[1])}function A(C){return C.length===3&&h(C[0])&&h(C[1])&&h(C[2])}function w(C){return C.length===4&&h(C[0])&&h(C[1])&&h(C[2])&&h(C[3])}function x(C,N,I,R){var L=C,V=I,P=c(L,N),k=c(V,R),W=c(l(P[0],k[1]),l(k[0],P[1]));if(d(W)||f(n(W),r.relTol))return null;var O=l(k[0],L[1]),Q=l(k[1],L[0]),ne=l(k[0],V[1]),X=l(k[1],V[0]),U=u(a(c(c(O,Q),ne),X),W);return i(s(P,U),L)}function E(C,N,I,R,L,V,P,k,W,O,Q,ne){var X=l(c(C,N),c(I,R)),U=l(c(L,V),c(P,k)),fe=l(c(W,O),c(Q,ne));return a(a(X,U),fe)}function T(C,N,I,R,L,V,P,k,W,O,Q,ne){var X=E(C,P,O,P,N,k,Q,k,I,W,ne,W),U=E(O,P,R,C,Q,k,L,N,ne,W,V,I),fe=E(C,P,R,C,N,k,L,N,I,W,V,I),xe=E(O,P,O,P,Q,k,Q,k,ne,W,ne,W),oe=E(R,C,R,C,L,N,L,N,V,I,V,I),be=c(l(X,U),l(fe,xe)),ee=c(l(oe,xe),l(U,U));if(d(ee))return null;var Z=u(be,ee),re=u(a(X,l(Z,U)),xe),me=a(C,l(Z,c(R,C))),ce=a(N,l(Z,c(L,N))),Ae=a(I,l(Z,c(V,I))),we=a(P,l(re,c(O,P))),G=a(k,l(re,c(Q,k))),J=a(W,l(re,c(ne,W)));return m(me,we)&&m(ce,G)&&m(Ae,J)?[me,ce,Ae]:null}function _(C,N,I,R,L,V,P,k,W,O){var Q=l(C,P),ne=l(R,P),X=l(N,k),U=l(L,k),fe=l(I,W),xe=l(V,W),oe=c(c(c(O,Q),X),fe),be=c(c(c(a(a(ne,U),xe),Q),X),fe),ee=u(oe,be),Z=a(C,l(ee,c(R,C))),re=a(N,l(ee,c(L,N))),me=a(I,l(ee,c(V,I)));return[Z,re,me]}});var $O="sum",kX=["typed","config","add","numeric"],ov=M($O,kX,t=>{var{typed:e,config:r,add:n,numeric:i}=t;return e($O,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":o,"...":function(l){if(ja(l))throw new TypeError("Scalar values expected in function sum");return a(l)}});function a(s){var l;return Oi(s,function(u){try{l=l===void 0?u:n(l,u)}catch(c){throw pn(c,"sum",u)}}),l===void 0&&(l=i(0,r.number)),typeof l=="string"&&(l=i(l,xi(l,r))),l}function o(s,l){try{var u=su(s,l,n);return u}catch(c){throw pn(c,"sum")}}});var sv="cumsum",PX=["typed","add","unaryPlus"],uv=M(sv,PX,t=>{var{typed:e,add:r,unaryPlus:n}=t;return e(sv,{Array:i,Matrix:function(u){return u.create(i(u.valueOf(),u.datatype()))},"Array, number | BigNumber":o,"Matrix, number | BigNumber":function(u,c){return u.create(o(u.valueOf(),c),u.datatype())},"...":function(u){if(ja(u))throw new TypeError("All values expected to be scalar in function cumsum");return i(u)}});function i(l){try{return a(l)}catch(u){throw pn(u,sv)}}function a(l){if(l.length===0)return[];for(var u=[n(l[0])],c=1;c=c.length)throw new Zn(u,c.length);try{return s(l,u)}catch(f){throw pn(f,sv)}}function s(l,u){var c,f,m;if(u<=0){var p=l[0][0];if(Array.isArray(p)){for(m=Qh(l),f=[],c=0;c{var{typed:e,add:r,divide:n}=t;return e(OO,{"Array | Matrix":a,"Array | Matrix, number | BigNumber":i,"...":function(s){if(ja(s))throw new TypeError("Scalar values expected in function mean");return a(s)}});function i(o,s){try{var l=su(o,s,r),u=Array.isArray(o)?ct(o):o.size();return n(l,u[s])}catch(c){throw pn(c,"mean")}}function a(o){var s,l=0;if(Oi(o,function(u){try{s=s===void 0?u:r(s,u),l++}catch(c){throw pn(c,"mean",u)}}),l===0)throw new Error("Cannot calculate the mean of an empty array");return n(s,l)}});var RO="median",OX=["typed","add","divide","compare","partitionSelect"],LO=M(RO,OX,t=>{var{typed:e,add:r,divide:n,compare:i,partitionSelect:a}=t;function o(u){try{u=Pt(u.valueOf());var c=u.length;if(c===0)throw new Error("Cannot calculate median of an empty array");if(c%2===0){for(var f=c/2-1,m=a(u,f+1),p=u[f],d=0;d0&&(p=u[d]);return l(p,m)}else{var h=a(u,(c-1)/2);return s(h)}}catch(b){throw pn(b,"median")}}var s=e({"number | BigNumber | Complex | Unit":function(c){return c}}),l=e({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(c,f){return n(r(c,f),2)}});return e(RO,{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(c,f){throw new Error("median(A, dim) is not yet supported")},"...":function(c){if(ja(c))throw new TypeError("Scalar values expected in function median");return o(c)}})});var VO="mad",RX=["typed","abs","map","median","subtract"],UO=M(VO,RX,t=>{var{typed:e,abs:r,map:n,median:i,subtract:a}=t;return e(VO,{"Array | Matrix":o,"...":function(l){return o(l)}});function o(s){if(s=Pt(s.valueOf()),s.length===0)throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");try{var l=i(s);return i(n(s,function(u){return r(a(u,l))}))}catch(u){throw u instanceof TypeError&&u.message.includes("median")?new TypeError(u.message.replace("median","mad")):pn(u,"mad")}}});var ew="unbiased",qO="variance",LX=["typed","add","subtract","multiply","divide","mapSlices","isNaN"],cv=M(qO,LX,t=>{var{typed:e,add:r,subtract:n,multiply:i,divide:a,mapSlices:o,isNaN:s}=t;return e(qO,{"Array | Matrix":function(f){return l(f,ew)},"Array | Matrix, string":l,"Array | Matrix, number | BigNumber":function(f,m){return u(f,m,ew)},"Array | Matrix, number | BigNumber, string":u,"...":function(f){return l(f,ew)}});function l(c,f){var m,p=0;if(c.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");if(Oi(c,function(b){try{m=m===void 0?b:r(m,b),p++}catch(y){throw pn(y,"variance",b)}}),p===0)throw new Error("Cannot calculate variance of an empty array");var d=a(m,p);if(m=void 0,Oi(c,function(b){var y=n(b,d);m=m===void 0?i(y,y):r(m,i(y,y))}),s(m))return m;switch(f){case"uncorrected":return a(m,p);case"biased":return a(m,p+1);case"unbiased":{var h=ot(m)?m.mul(0):0;return p===1?h:a(m,p-1)}default:throw new Error('Unknown normalization "'+f+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}function u(c,f,m){try{if(c.length===0)throw new SyntaxError("Function variance requires one or more parameters (0 provided)");return o(c,f,p=>l(p,m))}catch(p){throw pn(p,"variance")}}});var zO="quantileSeq",VX=["typed","?bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger","mapSlices"],fv=M(zO,VX,t=>{var{typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m,mapSlices:p}=t;return e(zO,{"Array | Matrix, number | BigNumber":(D,v)=>h(D,v,!1),"Array | Matrix, number | BigNumber, number":(D,v,A)=>d(D,v,!1,A,h),"Array | Matrix, number | BigNumber, boolean":h,"Array | Matrix, number | BigNumber, boolean, number":(D,v,A,w)=>d(D,v,A,w,h),"Array | Matrix, Array | Matrix":(D,v)=>b(D,v,!1),"Array | Matrix, Array | Matrix, number":(D,v,A)=>d(D,v,!1,A,b),"Array | Matrix, Array | Matrix, boolean":b,"Array | Matrix, Array | Matrix, boolean, number":(D,v,A,w)=>d(D,v,A,w,b)});function d(D,v,A,w,x){return p(D,w,E=>x(E,v,A))}function h(D,v,A){var w,x=D.valueOf();if(c(v,0))throw new Error("N/prob must be non-negative");if(f(v,1))return bt(v)?y(x,v,A):r(y(x,v,A));if(m(v,1)){if(!u(v))throw new Error("N must be a positive integer");if(m(v,4294967295))throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var E=n(v,1);w=[];for(var T=0;c(T,v);T++){var _=a(T+1,E);w.push(y(x,_,A))}return bt(v)?w:r(w)}}function b(D,v,A){for(var w=D.valueOf(),x=v.valueOf(),E=[],T=0;T0&&(C=w[I])}return n(o(C,i(1,_)),o(N,_))}});var HO="std",UX=["typed","map","sqrt","variance"],pv=M(HO,UX,t=>{var{typed:e,map:r,sqrt:n,variance:i}=t;return e(HO,{"Array | Matrix":a,"Array | Matrix, string":a,"Array | Matrix, number | BigNumber":a,"Array | Matrix, number | BigNumber, string":a,"...":function(s){return a(s)}});function a(o,s){if(o.length===0)throw new SyntaxError("Function std requires one or more parameters (0 provided)");try{var l=i.apply(null,arguments);return rn(l)?r(l,n):n(l)}catch(u){throw u instanceof TypeError&&u.message.includes(" variance")?new TypeError(u.message.replace(" variance"," std")):u}}});var GO="corr",qX=["typed","matrix","mean","sqrt","sum","add","subtract","multiply","pow","divide"],WO=M(GO,qX,t=>{var{typed:e,matrix:r,sqrt:n,sum:i,add:a,subtract:o,multiply:s,pow:l,divide:u}=t;return e(GO,{"Array, Array":function(p,d){return c(p,d)},"Matrix, Matrix":function(p,d){var h=c(p.toArray(),d.toArray());return Array.isArray(h)?r(h):h}});function c(m,p){var d=[];if(Array.isArray(m[0])&&Array.isArray(p[0])){if(m.length!==p.length)throw new SyntaxError("Dimension mismatch. Array A and B must have the same length.");for(var h=0;ha(x,s(E,p[T])),0),D=i(m.map(x=>l(x,2))),v=i(p.map(x=>l(x,2))),A=o(s(d,y),s(h,b)),w=n(s(o(s(d,D),l(h,2)),o(s(d,v),l(b,2))));return u(A,w)}});var YO="combinations",zX=["typed"],ZO=M(YO,zX,t=>{var{typed:e}=t;return e(YO,{"number, number":h0,"BigNumber, BigNumber":function(n,i){var a=n.constructor,o,s,l=n.minus(i),u=new a(1);if(!jO(n)||!jO(i))throw new TypeError("Positive integer value expected in function combinations");if(i.gt(n))throw new TypeError("k must be less than n in function combinations");if(o=u,i.lt(l))for(s=u;s.lte(l);s=s.plus(u))o=o.times(i.plus(s)).dividedBy(s);else for(s=u;s.lte(i);s=s.plus(u))o=o.times(l.plus(s)).dividedBy(s);return o}})});function jO(t){return t.isInteger()&&t.gte(0)}var JO="combinationsWithRep",HX=["typed"],QO=M(JO,HX,t=>{var{typed:e}=t;return e(JO,{"number, number":function(n,i){if(!He(n)||n<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(!He(i)||i<0)throw new TypeError("Positive integer value expected in function combinationsWithRep");if(n<1)throw new TypeError("k must be less than or equal to n + k - 1");if(i{var{typed:e,config:r,multiplyScalar:n,pow:i,BigNumber:a,Complex:o}=t;function s(u){if(u.im===0)return tp(u.re);if(u.re<.5){var c=new o(1-u.re,-u.im),f=new o(Math.PI*u.re,Math.PI*u.im);return new o(Math.PI).div(f.sin()).div(s(c))}u=new o(u.re-1,u.im);for(var m=new o(tl[0],0),p=1;p2;)m-=2,d+=m,p=p.times(d);return new a(p.toPrecision(a.precision))}});var tR="lgamma",WX=["Complex","typed"],rR=M(tR,WX,t=>{var{Complex:e,typed:r}=t,n=7,i=7,a=[-.029550653594771242,.00641025641025641,-.0019175269175269176,.0008417508417508417,-.0005952380952380953,.0007936507936507937,-.002777777777777778,.08333333333333333];return r(tR,{number:rp,Complex:o,BigNumber:function(){throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber")}});function o(u){var c=6.283185307179586,f=1.1447298858494002,m=.1;if(u.isNaN())return new e(NaN,NaN);if(u.im===0)return new e(rp(u.re),0);if(u.re>=n||Math.abs(u.im)>=i)return s(u);if(u.re<=m){var p=PS(c,u.im)*Math.floor(.5*u.re+.25),d=u.mul(Math.PI).sin().log(),h=o(new e(1-u.re,-u.im));return new e(f,p).sub(d).sub(h)}else return u.im>=0?l(u):l(u.conjugate()).conjugate()}function s(u){for(var c=u.sub(.5).mul(u.log()).sub(u).add(b0),f=new e(1,0).div(u),m=f.div(u),p=a[0],d=a[1],h=2*m.re,b=m.re*m.re+m.im*m.im,y=2;y<8;y++){var D=d;d=-b*p+a[y],p=h*p+D}var v=f.mul(m.mul(p).add(d));return c.add(v)}function l(u){var c=0,f=0,m=u;for(u=u.add(1);u.re<=n;){m=m.mul(u);var p=m.im<0?1:0;p!==0&&f===0&&c++,f=p,u=u.add(1)}return s(u).sub(m.log()).sub(new e(0,c*2*Math.PI*1))}});var nR="factorial",YX=["typed","gamma"],iR=M(nR,YX,t=>{var{typed:e,gamma:r}=t;return e(nR,{number:function(i){if(i<0)throw new Error("Value must be non-negative");return r(i+1)},BigNumber:function(i){if(i.isNegative())throw new Error("Value must be non-negative");return r(i.plus(1))},"Array | Matrix":e.referToSelf(n=>i=>Ke(i,n))})});var aR="kldivergence",jX=["typed","matrix","divide","sum","multiply","map","dotDivide","log","isNumeric"],oR=M(aR,jX,t=>{var{typed:e,matrix:r,divide:n,sum:i,multiply:a,map:o,dotDivide:s,log:l,isNumeric:u}=t;return e(aR,{"Array, Array":function(m,p){return c(r(m),r(p))},"Matrix, Array":function(m,p){return c(m,r(p))},"Array, Matrix":function(m,p){return c(r(m),p)},"Matrix, Matrix":function(m,p){return c(m,p)}});function c(f,m){var p=m.size().length,d=f.size().length;if(p>1)throw new Error("first object must be one dimensional");if(d>1)throw new Error("second object must be one dimensional");if(p!==d)throw new Error("Length of two vectors must be equal");var h=i(f);if(h===0)throw new Error("Sum of elements in first object must be non zero");var b=i(m);if(b===0)throw new Error("Sum of elements in second object must be non zero");var y=n(f,i(f)),D=n(m,i(m)),v=i(a(y,o(s(y,D),A=>l(A))));return u(v)?v:Number.NaN}});var sR="multinomial",ZX=["typed","add","divide","multiply","factorial","isInteger","isPositive"],uR=M(sR,ZX,t=>{var{typed:e,add:r,divide:n,multiply:i,factorial:a,isInteger:o,isPositive:s}=t;return e(sR,{"Array | Matrix":function(u){var c=0,f=1;return Oi(u,function(m){if(!o(m)||!s(m))throw new TypeError("Positive integer value expected in function multinomial");c=r(c,m),f=i(f,a(m))}),n(a(c),f)}})});var lR="permutations",JX=["typed","factorial"],fR=M(lR,JX,t=>{var{typed:e,factorial:r}=t;return e(lR,{"number | BigNumber":r,"number, number":function(i,a){if(!He(i)||i<0)throw new TypeError("Positive integer value expected in function permutations");if(!He(a)||a<0)throw new TypeError("Positive integer value expected in function permutations");if(a>i)throw new TypeError("second argument k must be less than or equal to first argument n");return _a(i-a+1,i)},"BigNumber, BigNumber":function(i,a){var o,s;if(!cR(i)||!cR(a))throw new TypeError("Positive integer value expected in function permutations");if(a.gt(i))throw new TypeError("second argument k must be less than or equal to first argument n");var l=i.mul(0).add(1);for(o=l,s=i.minus(a).plus(1);s.lte(i);s=s.plus(1))o=o.times(s);return o}})});function cR(t){return t.isInteger()&&t.gte(0)}var sw=Tr(TR(),1),nQ=(0,sw.default)(Date.now());function Ms(t){var e;function r(i){e=i===null?nQ:(0,sw.default)(String(i))}r(t);function n(){return e()}return n}var MR="pickRandom",iQ=["typed","config","?on"],CR=M(MR,iQ,t=>{var{typed:e,config:r,on:n}=t,i=Ms(r.randomSeed);return n&&n("config",function(o,s){o.randomSeed!==s.randomSeed&&(i=Ms(o.randomSeed))}),e(MR,{"Array | Matrix":function(s){return a(s,{})},"Array | Matrix, Object":function(s,l){return a(s,l)},"Array | Matrix, number":function(s,l){return a(s,{number:l})},"Array | Matrix, Array | Matrix":function(s,l){return a(s,{weights:l})},"Array | Matrix, Array | Matrix, number":function(s,l,u){return a(s,{number:u,weights:l})},"Array | Matrix, number, Array | Matrix":function(s,l,u){return a(s,{number:l,weights:u})}});function a(o,s){var{number:l,weights:u,elementWise:c=!0}=s,f=typeof l>"u";f&&(l=1);var m=Ye(o)?o.create:Ye(u)?u.create:null;o=o.valueOf(),u&&(u=u.valueOf()),c===!0&&(o=Pt(o),u=Pt(u));var p=0;if(typeof u<"u"){if(u.length!==o.length)throw new Error("Weights must have the same length as possibles");for(var d=0,h=u.length;d"u")D=o[Math.floor(i()*b)];else for(var v=i()*p,A=0,w=o.length;A1)for(var n=0,i=t.shift();n{var{typed:e,config:r,on:n}=t,i=Ms(r.randomSeed);return n&&n("config",function(s,l){s.randomSeed!==l.randomSeed&&(i=Ms(s.randomSeed))}),e(NR,{"":()=>o(0,1),number:s=>o(0,s),"number, number":(s,l)=>o(s,l),"Array | Matrix":s=>a(s,0,1),"Array | Matrix, number":(s,l)=>a(s,0,l),"Array | Matrix, number, number":(s,l,u)=>a(s,l,u)});function a(s,l,u){var c=sp(s.valueOf(),()=>o(l,u));return Ye(s)?s.create(c,"number"):c}function o(s,l){return s+i()*(l-s)}});var IR="randomInt",oQ=["typed","config","log2","?on"],sQ=2n**30n,BR=M(IR,oQ,t=>{var{typed:e,config:r,log2:n,on:i}=t,a=Ms(r.randomSeed);return i&&i("config",function(u,c){u.randomSeed!==c.randomSeed&&(a=Ms(u.randomSeed))}),e(IR,{"":()=>s(0,2),number:u=>s(0,u),"number, number":(u,c)=>s(u,c),bigint:u=>l(0n,u),"bigint, bigint":l,"Array | Matrix":u=>o(u,0,1),"Array | Matrix, number":(u,c)=>o(u,0,c),"Array | Matrix, number, number":(u,c,f)=>o(u,c,f)});function o(u,c,f){var m=sp(u.valueOf(),()=>s(c,f));return Ye(u)?u.create(m,"number"):m}function s(u,c){return Math.floor(u+a()*(c-u))}function l(u,c){var f=c-u;if(f<=sQ)return u+BigInt(s(0,Number(f)));for(var m=n(f),p=f;p>=f;){p=0n;for(var d=0;d{var{typed:e,addScalar:r,subtractScalar:n,multiplyScalar:i,divideScalar:a,pow:o,factorial:s,combinations:l,isNegative:u,isInteger:c,number:f,bignumber:m,larger:p}=t,d=[],h=[];return e(kR,{"number | BigNumber, number | BigNumber":function(y,D){if(!c(y)||u(y)||!c(D)||u(D))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(p(D,y))throw new TypeError("k must be less than or equal to n in function stirlingS2");var v=!(bt(y)&&bt(D)),A=v?h:d,w=v?m:f,x=f(y),E=f(D);if(A[x]&&A[x].length>E)return A[x][E];for(var T=0;T<=x;++T)if(A[T]||(A[T]=[w(T===0?1:0)]),T!==0)for(var _=A[T],C=A[T-1],N=_.length;N<=T&&N<=E;++N)N===T?_[N]=1:_[N]=r(i(w(N),C[N]),C[N-1]);return A[x][E]}})});var $R="bellNumbers",lQ=["typed","addScalar","isNegative","isInteger","stirlingS2"],OR=M($R,lQ,t=>{var{typed:e,addScalar:r,isNegative:n,isInteger:i,stirlingS2:a}=t;return e($R,{"number | BigNumber":function(s){if(!i(s)||n(s))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var l=0,u=0;u<=s;u++)l=r(l,a(s,u));return l}})});var RR="catalan",cQ=["typed","addScalar","divideScalar","multiplyScalar","combinations","isNegative","isInteger"],LR=M(RR,cQ,t=>{var{typed:e,addScalar:r,divideScalar:n,multiplyScalar:i,combinations:a,isNegative:o,isInteger:s}=t;return e(RR,{"number | BigNumber":function(u){if(!s(u)||o(u))throw new TypeError("Non-negative integer value expected in function catalan");return n(a(i(u,2),u),r(u,1))}})});var VR="composition",fQ=["typed","addScalar","combinations","isNegative","isPositive","isInteger","larger"],UR=M(VR,fQ,t=>{var{typed:e,addScalar:r,combinations:n,isPositive:i,isNegative:a,isInteger:o,larger:s}=t;return e(VR,{"number | BigNumber, number | BigNumber":function(u,c){if(!o(u)||!i(u)||!o(c)||!i(c))throw new TypeError("Positive integer value expected in function composition");if(s(c,u))throw new TypeError("k must be less than or equal to n in function composition");return n(r(u,-1),r(c,-1))}})});var qR="leafCount",pQ=["parse","typed"],zR=M(qR,pQ,t=>{var{parse:e,typed:r}=t;function n(i){var a=0;return i.forEach(o=>{a+=n(o)}),a||1}return r(qR,{Node:function(a){return n(a)}})});function uw(t){return kt(t)||Rr(t)&&t.isUnary()&&kt(t.args[0])}function up(t){return!!(kt(t)||(ai(t)||Rr(t))&&t.args.every(up)||Wn(t)&&up(t.content))}function HR(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function lw(t){for(var e=1;e{var{FunctionNode:e,OperatorNode:r,SymbolNode:n}=t,i=!0,a=!1,o="defaultF",s={add:{trivial:i,total:i,commutative:i,associative:i},unaryPlus:{trivial:i,total:i,commutative:i,associative:i},subtract:{trivial:a,total:i,commutative:a,associative:a},multiply:{trivial:i,total:i,commutative:i,associative:i},divide:{trivial:a,total:i,commutative:a,associative:a},paren:{trivial:i,total:i,commutative:i,associative:a},defaultF:{trivial:a,total:i,commutative:a,associative:a}},l={divide:{total:a},log:{total:a}},u={subtract:{total:a},abs:{trivial:i},log:{total:i}};function c(v,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:s,x=o;if(typeof v=="string"?x=v:Rr(v)?x=v.fn.toString():ai(v)?x=v.name:Wn(v)&&(x="paren"),Ze(w,x)){var E=w[x];if(Ze(E,A))return E[A];if(Ze(s,x))return s[x][A]}if(Ze(w,o)){var T=w[o];return Ze(T,A)?T[A]:s[o][A]}if(Ze(s,x)){var _=s[x];if(Ze(_,A))return _[A]}return s[o][A]}function f(v){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return c(v,"commutative",A)}function m(v){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return c(v,"associative",A)}function p(v,A){var w=lw({},v);for(var x in A)Ze(v,x)?w[x]=lw(lw({},A[x]),v[x]):w[x]=A[x];return w}function d(v,A){if(!v.args||v.args.length===0)return v;v.args=h(v,A);for(var w=0;w2&&m(v,A)){for(var T=v.args.pop();v.args.length>0;)T=w([v.args.pop(),T]);v.args=T.args}}}function y(v,A){if(!(!v.args||v.args.length===0)){for(var w=D(v),x=v.args.length,E=0;E2&&m(v,A)){for(var T=v.args.shift();v.args.length>0;)T=w([T,v.args.shift()]);v.args=T.args}}}function D(v){return Rr(v)?function(A){try{return new r(v.op,v.fn,A,v.implicit)}catch(w){return console.error(w),[]}}:function(A){return new e(new n(v.name),A)}}return{createMakeNodeFunction:D,hasProperty:c,isCommutative:f,isAssociative:m,mergeContext:p,flatten:d,allChildren:h,unflattenr:b,unflattenl:y,defaultContext:s,realContext:l,positiveContext:u}});var hQ="simplify",gQ=["typed","parse","equal","resolve","simplifyConstant","simplifyCore","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode","replacer"],GR=M(hQ,gQ,t=>{var{typed:e,parse:r,equal:n,resolve:i,simplifyConstant:a,simplifyCore:o,AccessorNode:s,ArrayNode:l,ConstantNode:u,FunctionNode:c,IndexNode:f,ObjectNode:m,OperatorNode:p,ParenthesisNode:d,SymbolNode:h,replacer:b}=t,{hasProperty:y,isCommutative:D,isAssociative:v,mergeContext:A,flatten:w,unflattenr:x,unflattenl:E,createMakeNodeFunction:T,defaultContext:_,realContext:C,positiveContext:N}=$c({FunctionNode:c,OperatorNode:p,SymbolNode:h});e.addConversion({from:"Object",to:"Map",convert:xs});var I=e("simplify",{Node:O,"Node, Map":(ee,Z)=>O(ee,!1,Z),"Node, Map, Object":(ee,Z,re)=>O(ee,!1,Z,re),"Node, Array":O,"Node, Array, Map":O,"Node, Array, Map, Object":O});e.removeConversion({from:"Object",to:"Map",convert:xs}),I.defaultContext=_,I.realContext=C,I.positiveContext=N;function R(ee){return ee.transform(function(Z){return Wn(Z)?R(Z.content):Z})}var L={true:!0,false:!0,e:!0,i:!0,Infinity:!0,LN2:!0,LN10:!0,LOG2E:!0,LOG10E:!0,NaN:!0,phi:!0,pi:!0,SQRT1_2:!0,SQRT2:!0,tau:!0};I.rules=[o,{l:"log(e)",r:"1"},{s:"n-n1 -> n+-n1",assuming:{subtract:{total:!0}}},{s:"n-n -> 0",assuming:{subtract:{total:!1}}},{s:"-(cl*v) -> v * (-cl)",assuming:{multiply:{commutative:!0},subtract:{total:!0}}},{s:"-(cl*v) -> (-cl) * v",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{s:"-(v*cl) -> v * (-cl)",assuming:{multiply:{commutative:!1},subtract:{total:!0}}},{l:"-(n1/n2)",r:"-n1/n2"},{l:"-v",r:"v * (-1)"},{l:"(n1 + n2)*(-1)",r:"n1*(-1) + n2*(-1)",repeat:!0},{l:"n/n1^n2",r:"n*n1^-n2"},{l:"n/n1",r:"n*n1^-1"},{s:"(n1*n2)^n3 -> n1^n3 * n2^n3",assuming:{multiply:{commutative:!0}}},{s:"(n1*n2)^(-1) -> n2^(-1) * n1^(-1)",assuming:{multiply:{commutative:!1}}},{s:"(n ^ n1) ^ n2 -> n ^ (n1 * n2)",assuming:{divide:{total:!0}}},{l:" vd * ( vd * n1 + n2)",r:"vd^2 * n1 + vd * n2"},{s:" vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{s:"vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2",assuming:{divide:{total:!0}}},{l:"n*n",r:"n^2"},{s:"n * n^n1 -> n^(n1+1)",assuming:{divide:{total:!0}}},{s:"n^n1 * n^n2 -> n^(n1+n2)",assuming:{divide:{total:!0}}},a,{s:"n+n -> 2*n",assuming:{add:{total:!0}}},{l:"n+-n",r:"0"},{l:"vd*n + vd",r:"vd*(n+1)"},{l:"n3*n1 + n3*n2",r:"n3*(n1+n2)"},{l:"n3^(-n4)*n1 + n3 * n2",r:"n3^(-n4)*(n1 + n3^(n4+1) *n2)"},{l:"n3^(-n4)*n1 + n3^n5 * n2",r:"n3^(-n4)*(n1 + n3^(n4+n5)*n2)"},{s:"n*vd + vd -> (n+1)*vd",assuming:{multiply:{commutative:!1}}},{s:"vd + n*vd -> (1+n)*vd",assuming:{multiply:{commutative:!1}}},{s:"n1*n3 + n2*n3 -> (n1+n2)*n3",assuming:{multiply:{commutative:!1}}},{s:"n^n1 * n -> n^(n1+1)",assuming:{divide:{total:!0},multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{s:"n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)",assuming:{multiply:{commutative:!1}}},{l:"n*cd + cd",r:"(n+1)*cd"},{s:"cd*n + cd -> cd*(n+1)",assuming:{multiply:{commutative:!1}}},{s:"cd + cd*n -> cd*(1+n)",assuming:{multiply:{commutative:!1}}},a,{s:"(-n)*n1 -> -(n*n1)",assuming:{subtract:{total:!0}}},{s:"n1*(-n) -> -(n1*n)",assuming:{subtract:{total:!0},multiply:{commutative:!1}}},{s:"ce+ve -> ve+ce",assuming:{add:{commutative:!0}},imposeContext:{add:{commutative:!1}}},{s:"vd*cd -> cd*vd",assuming:{multiply:{commutative:!0}},imposeContext:{multiply:{commutative:!1}}},{l:"n+-n1",r:"n-n1"},{l:"n+-(n1)",r:"n-(n1)"},{s:"n*(n1^-1) -> n/n1",assuming:{multiply:{commutative:!0}}},{s:"n*n1^-n2 -> n/n1^n2",assuming:{multiply:{commutative:!0}}},{s:"n^-1 -> 1/n",assuming:{multiply:{commutative:!0}}},{l:"n^1",r:"n"},{s:"n*(n1/n2) -> (n*n1)/n2",assuming:{multiply:{associative:!0}}},{s:"n-(n1+n2) -> n-n1-n2",assuming:{addition:{associative:!0,commutative:!0}}},{l:"1*n",r:"n",imposeContext:{multiply:{commutative:!0}}},{s:"n1/(n2/n3) -> (n1*n3)/n2",assuming:{multiply:{associative:!0}}},{l:"n1/(-n2)",r:"-n1/n2"}];function V(ee,Z){var re={};if(ee.s){var me=ee.s.split("->");if(me.length===2)re.l=me[0],re.r=me[1];else throw SyntaxError("Could not parse rule: "+ee.s)}else re.l=ee.l,re.r=ee.r;re.l=R(r(re.l)),re.r=R(r(re.r));for(var ce of["imposeContext","repeat","assuming"])ce in ee&&(re[ce]=ee[ce]);if(ee.evaluate&&(re.evaluate=r(ee.evaluate)),v(re.l,Z)){var Ae=!D(re.l,Z),we;Ae&&(we=W());var G=T(re.l),J=W();re.expanded={},re.expanded.l=G([re.l,J]),w(re.expanded.l,Z),x(re.expanded.l,Z),re.expanded.r=G([re.r,J]),Ae&&(re.expandedNC1={},re.expandedNC1.l=G([we,re.l]),re.expandedNC1.r=G([we,re.r]),re.expandedNC2={},re.expandedNC2.l=G([we,re.expanded.l]),re.expandedNC2.r=G([we,re.expanded.r]))}return re}function P(ee,Z){for(var re=[],me=0;me2&&arguments[2]!==void 0?arguments[2]:eu(),me=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},ce=me.consoleDebug;Z=P(Z||I.rules,me.context);var Ae=i(ee,re);Ae=R(Ae);for(var we={},G=Ae.toString({parenthesis:"all"});!we[G];){we[G]=!0,k=0;var J=G;ce&&console.log("Working on: ",G);for(var ge=0;ge ").concat(Z[ge].r.toString()))),ce){var De=Ae.toString({parenthesis:"all"});De!==J&&(console.log("Applying",ye,"produced",De),J=De)}E(Ae,me.context)}G=Ae.toString({parenthesis:"all"})}return Ae}function Q(ee,Z,re){var me=ee;if(ee)for(var ce=0;ce1&&(J=Ae(ee.args.slice(0,G))),ce=ee.args.slice(G),me=ce.length===1?ce[0]:Ae(ce),re.push(Ae([J,me]))}return re}function U(ee,Z){var re={placeholders:{}};if(!ee.placeholders&&!Z.placeholders)return re;if(ee.placeholders){if(!Z.placeholders)return ee}else return Z;for(var me in ee.placeholders)if(Ze(ee.placeholders,me)&&(re.placeholders[me]=ee.placeholders[me],Ze(Z.placeholders,me)&&!be(ee.placeholders[me],Z.placeholders[me])))return null;for(var ce in Z.placeholders)Ze(Z.placeholders,ce)&&(re.placeholders[ce]=Z.placeholders[ce]);return re}function fe(ee,Z){var re=[];if(ee.length===0||Z.length===0)return re;for(var me,ce=0;ce2)throw new Error("permuting >2 commutative non-associative rule arguments not yet implemented");var J=oe(ee.args[0],Z.args[1],re);if(J.length===0)return[];var ge=oe(ee.args[1],Z.args[0],re);if(ge.length===0)return[];Ae=[J,ge]}ce=xe(Ae)}else if(Z.args.length>=2&&ee.args.length===2){for(var ye=X(Z,re),De=[],Ie=0;Ie2)throw Error("Unexpected non-binary associative function: "+ee.toString());return[]}}else if(ee instanceof h){if(ee.name.length===0)throw new Error("Symbol in rule has 0 length...!?");if(L[ee.name]){if(ee.name!==Z.name)return[]}else switch(ee.name[1]>="a"&&ee.name[1]<="z"?ee.name.substring(0,2):ee.name[0]){case"n":case"_p":ce[0].placeholders[ee.name]=Z;break;case"c":case"cl":if(kt(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"v":if(!kt(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"vl":if(Mr(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"cd":if(uw(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"vd":if(!uw(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"ce":if(up(Z))ce[0].placeholders[ee.name]=Z;else return[];break;case"ve":if(!up(Z))ce[0].placeholders[ee.name]=Z;else return[];break;default:throw new Error("Invalid symbol in rule: "+ee.name)}}else if(ee instanceof u){if(!n(ee.value,Z.value))return[]}else return[];return ce}function be(ee,Z){if(ee instanceof u&&Z instanceof u){if(!n(ee.value,Z.value))return!1}else if(ee instanceof h&&Z instanceof h){if(ee.name!==Z.name)return!1}else if(ee instanceof p&&Z instanceof p||ee instanceof c&&Z instanceof c){if(ee instanceof p){if(ee.op!==Z.op||ee.fn!==Z.fn)return!1}else if(ee instanceof c&&ee.name!==Z.name)return!1;if(ee.args.length!==Z.args.length)return!1;for(var re=0;re{var{typed:e,config:r,mathWithTransform:n,matrix:i,fraction:a,bignumber:o,AccessorNode:s,ArrayNode:l,ConstantNode:u,FunctionNode:c,IndexNode:f,ObjectNode:m,OperatorNode:p,SymbolNode:d}=t,{isCommutative:h,isAssociative:b,allChildren:y,createMakeNodeFunction:D}=$c({FunctionNode:c,OperatorNode:p,SymbolNode:d}),v=e("simplifyConstant",{Node:V=>E(L(V,{})),"Node, Object":function(P,k){return E(L(P,k))}});function A(V){return ba(V)?V.valueOf():V instanceof Array?V.map(A):Ye(V)?i(A(V.valueOf())):V}function w(V,P,k){try{return n[V].apply(null,P)}catch{return P=P.map(A),_(n[V].apply(null,P),k)}}var x=e({Fraction:N,number:function(P){return P<0?C(new u(-P)):new u(P)},BigNumber:function(P){return P<0?C(new u(-P)):new u(P)},bigint:function(P){return P<0n?C(new u(-P)):new u(P)},Complex:function(P){throw new Error("Cannot convert Complex number to Node")},string:function(P){return new u(P)},Matrix:function(P){return new l(P.valueOf().map(k=>x(k)))}});function E(V){return Gt(V)?V:x(V)}function T(V,P){var k=P&&P.exactFractions!==!1;if(k&&isFinite(V)&&a){var W=a(V),O=P&&typeof P.fractionsLimit=="number"?P.fractionsLimit:1/0;if(W.valueOf()===V&&W.nr.number==="BigNumber"&&o?o(O):Number(O),k=V.s*V.n,W=k<0n?new p("-","unaryMinus",[new u(-P(k))]):new u(P(k));return V.d===1n?W:new p("/","divide",[W,new u(P(V.d))])}function I(V,P,k){if(!Xi(P))return new s(E(V),E(P));if(Gn(V)||Ye(V)){for(var W=Array.from(P.dimensions);W.length>0;)if(kt(W[0])&&typeof W[0].value!="string"){var O=_(W.shift().value,k);Gn(V)?V=V.items[O-1]:(V=V.valueOf()[O-1],V instanceof Array&&(V=i(V)))}else if(W.length>1&&kt(W[1])&&typeof W[1].value!="string"){var Q=_(W[1].value,k),ne=[],X=Gn(V)?V.items:V.valueOf();for(var U of X)if(Gn(U))ne.push(U.items[Q-1]);else if(Ye(V))ne.push(U[Q-1]);else break;if(ne.length===X.length)Gn(V)?V=new l(ne):V=i(ne),W.splice(1,1);else break}else break;return W.length===P.dimensions.length?new s(E(V),P):W.length>0?(P=new f(W),new s(E(V),P)):V}if(Oo(V)&&P.dimensions.length===1&&kt(P.dimensions[0])){var fe=P.dimensions[0].value;return fe in V.properties?V.properties[fe]:new u}return new s(E(V),P)}function R(V,P,k,W){var O=P.shift(),Q=P.reduce((ne,X)=>{if(!Gt(X)){var U=ne.pop();if(Gt(U))return[U,X];try{return ne.push(w(V,[U,X],W)),ne}catch{ne.push(U)}}ne.push(E(ne.pop()));var fe=ne.length===1?ne[0]:k(ne);return[k([fe,E(X)])]},[O]);return Q.length===1?Q[0]:k([Q[0],x(Q[1])])}function L(V,P){switch(V.type){case"SymbolNode":return V;case"ConstantNode":switch(typeof V.value){case"number":return _(V.value,P);case"bigint":return _(V.value,P);case"string":return V.value;default:if(!isNaN(V.value))return _(V.value,P)}return V;case"FunctionNode":if(n[V.name]&&n[V.name].rawArgs)return V;{var k=["add","multiply"];if(!k.includes(V.name)){var W=V.args.map(me=>L(me,P));if(!W.some(Gt))try{return w(V.name,W,P)}catch{}if(V.name==="size"&&W.length===1&&Gn(W[0])){for(var O=[],Q=W[0];Gn(Q);)O.push(Q.items.length),Q=Q.items[0];return i(O)}return new c(V.name,W.map(E))}}case"OperatorNode":{var ne=V.fn.toString(),X,U,fe=D(V);if(Rr(V)&&V.isUnary())X=[L(V.args[0],P)],Gt(X[0])?U=fe(X):U=w(ne,X,P);else if(b(V,P.context))if(X=y(V,P.context),X=X.map(me=>L(me,P)),h(ne,P.context)){for(var xe=[],oe=[],be=0;be1?(U=R(ne,xe,fe,P),oe.unshift(U),U=R(ne,oe,fe,P)):U=R(ne,X,fe,P)}else U=R(ne,X,fe,P);else X=V.args.map(me=>L(me,P)),U=R(ne,X,fe,P);return U}case"ParenthesisNode":return L(V.content,P);case"AccessorNode":return I(L(V.object,P),L(V.index,P),P);case"ArrayNode":{var ee=V.items.map(me=>L(me,P));return ee.some(Gt)?new l(ee.map(E)):i(ee)}case"IndexNode":return new f(V.dimensions.map(me=>v(me,P)));case"ObjectNode":{var Z={};for(var re in V.properties)Z[re]=v(V.properties[re],P);return new m(Z)}case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"RangeNode":case"ConditionalNode":default:throw new Error("Unimplemented node type in simplifyConstant: ".concat(V.type))}}return v});var YR="simplifyCore",bQ=["typed","parse","equal","isZero","add","subtract","multiply","divide","pow","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","ParenthesisNode","SymbolNode"],jR=M(YR,bQ,t=>{var{typed:e,parse:r,equal:n,isZero:i,add:a,subtract:o,multiply:s,divide:l,pow:u,AccessorNode:c,ArrayNode:f,ConstantNode:m,FunctionNode:p,IndexNode:d,ObjectNode:h,OperatorNode:b,ParenthesisNode:y,SymbolNode:D}=t,v=new m(0),A=new m(1),w=new m(!0),x=new m(!1);function E(N){return Rr(N)&&["and","not","or"].includes(N.op)}var{hasProperty:T,isCommutative:_}=$c({FunctionNode:p,OperatorNode:b,SymbolNode:D});function C(N){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=I?I.context:void 0;if(T(N,"trivial",R)){if(ai(N)&&N.args.length===1)return C(N.args[0],I);var L=!1,V=0;if(N.forEach(oe=>{++V,V===1&&(L=C(oe,I))}),V===1)return L}var P=N;if(ai(P)){var k=OI(P.name);if(k){if(P.args.length>2&&T(P,"associative",R))for(;P.args.length>2;){var W=P.args.pop(),O=P.args.pop();P.args.push(new b(k,P.name,[W,O]))}P=new b(k,P.name,P.args)}else return new p(C(P.fn),P.args.map(oe=>C(oe,I)))}if(Rr(P)&&P.isUnary()){var Q=C(P.args[0],I);if(P.op==="~"&&Rr(Q)&&Q.isUnary()&&Q.op==="~"||P.op==="not"&&Rr(Q)&&Q.isUnary()&&Q.op==="not"&&E(Q.args[0]))return Q.args[0];var ne=!0;if(P.op==="-"&&Rr(Q)&&(Q.isBinary()&&Q.fn==="subtract"&&(P=new b("-","subtract",[Q.args[1],Q.args[0]]),ne=!1),Q.isUnary()&&Q.op==="-"))return Q.args[0];if(ne)return new b(P.op,P.fn,[Q])}if(Rr(P)&&P.isBinary()){var X=C(P.args[0],I),U=C(P.args[1],I);if(P.op==="+"){if(kt(X)&&i(X.value))return U;if(kt(U)&&i(U.value))return X;Rr(U)&&U.isUnary()&&U.op==="-"&&(U=U.args[0],P=new b("-","subtract",[X,U]))}if(P.op==="-")return Rr(U)&&U.isUnary()&&U.op==="-"?C(new b("+","add",[X,U.args[0]]),I):kt(X)&&i(X.value)?C(new b("-","unaryMinus",[U])):kt(U)&&i(U.value)?X:new b(P.op,P.fn,[X,U]);if(P.op==="*"){if(kt(X)){if(i(X.value))return v;if(n(X.value,1))return U}if(kt(U)){if(i(U.value))return v;if(n(U.value,1))return X;if(_(P,R))return new b(P.op,P.fn,[U,X],P.implicit)}return new b(P.op,P.fn,[X,U],P.implicit)}if(P.op==="/")return kt(X)&&i(X.value)?v:kt(U)&&n(U.value,1)?X:new b(P.op,P.fn,[X,U]);if(P.op==="^"&&kt(U)){if(i(U.value))return A;if(n(U.value,1))return X}if(P.op==="and"){if(kt(X))if(X.value){if(E(U))return U;if(kt(U))return U.value?w:x}else return x;if(kt(U))if(U.value){if(E(X))return X}else return x}if(P.op==="or"){if(kt(X)){if(X.value)return w;if(E(U))return U}if(kt(U)){if(U.value)return w;if(E(X))return X}}return new b(P.op,P.fn,[X,U])}if(Rr(P))return new b(P.op,P.fn,P.args.map(oe=>C(oe,I)));if(Gn(P))return new f(P.items.map(oe=>C(oe,I)));if($i(P))return new c(C(P.object,I),C(P.index,I));if(Xi(P))return new d(P.dimensions.map(oe=>C(oe,I)));if(Oo(P)){var fe={};for(var xe in P.properties)fe[xe]=C(P.properties[xe],I);return new h(fe)}return P}return e(YR,{Node:C,"Node,Object":C})});var xQ="resolve",wQ=["typed","parse","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode"],ZR=M(xQ,wQ,t=>{var{typed:e,parse:r,ConstantNode:n,FunctionNode:i,OperatorNode:a,ParenthesisNode:o}=t;function s(l,u){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:new Set;if(!u)return l;if(Mr(l)){if(c.has(l.name)){var f=Array.from(c).join(", ");throw new ReferenceError("recursive loop of variable definitions among {".concat(f,"}"))}var m=u.get(l.name);if(Gt(m)){var p=new Set(c);return p.add(l.name),s(m,u,p)}else return typeof m=="number"?r(String(m)):m!==void 0?new n(m):l}else if(Rr(l)){var d=l.args.map(function(b){return s(b,u,c)});return new a(l.op,l.fn,d,l.implicit)}else{if(Wn(l))return new o(s(l.content,u,c));if(ai(l)){var h=l.args.map(function(b){return s(b,u,c)});return new i(l.name,h)}}return l.map(b=>s(b,u,c))}return e("resolve",{Node:s,"Node, Map | null | undefined":s,"Node, Object":(l,u)=>s(l,xs(u)),"Array | Matrix":e.referToSelf(l=>u=>u.map(c=>l(c))),"Array | Matrix, null | undefined":e.referToSelf(l=>u=>u.map(c=>l(c))),"Array, Object":e.referTo("Array,Map",l=>(u,c)=>l(u,xs(c))),"Matrix, Object":e.referTo("Matrix,Map",l=>(u,c)=>l(u,xs(c))),"Array | Matrix, Map":e.referToSelf(l=>(u,c)=>u.map(f=>l(f,c)))})});var JR="symbolicEqual",_Q=["parse","simplify","typed","OperatorNode"],XR=M(JR,_Q,t=>{var{parse:e,simplify:r,typed:n,OperatorNode:i}=t;function a(o,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=new i("-","subtract",[o,s]),c=r(u,{},l);return kt(c)&&!c.value}return n(JR,{"Node, Node":a,"Node, Node, Object":a})});var QR="derivative",AQ=["typed","config","parse","simplify","equal","isZero","numeric","ConstantNode","FunctionNode","OperatorNode","ParenthesisNode","SymbolNode"],KR=M(QR,AQ,t=>{var{typed:e,config:r,parse:n,simplify:i,equal:a,isZero:o,numeric:s,ConstantNode:l,FunctionNode:u,OperatorNode:c,ParenthesisNode:f,SymbolNode:m}=t;function p(A,w){var x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{simplify:!0},E=new Map,T=w.name;function _(N){var I=E.get(N);if(I!==void 0)return I;var R=y(_,N,T);return E.set(N,R),R}var C=D(A,_);return x.simplify?i(C):C}function d(A){var w=n(A);if(!w.isSymbolNode)throw new TypeError("Invalid variable. "+"Cannot parse ".concat(JSON.stringify(A)," into a variable in function derivative"));return w}var h=e(QR,{"Node, SymbolNode":p,"Node, SymbolNode, Object":p,"Node, string":(A,w)=>p(A,d(w)),"Node, string, Object":(A,w,x)=>p(A,d(w),x)});h._simplify=!0,h.toTex=function(A){return b.apply(null,A.args)};var b=e("_derivTex",{"Node, SymbolNode":function(w,x){return kt(w)&&ir(w.value)==="string"?b(n(w.value).toString(),x.toString(),1):b(w.toTex(),x.toString(),1)},"Node, ConstantNode":function(w,x){if(ir(x.value)==="string")return b(w,n(x.value));throw new Error("The second parameter to 'derivative' is a non-string constant")},"Node, SymbolNode, ConstantNode":function(w,x,E){return b(w.toString(),x.name,E.value)},"string, string, number":function(w,x,E){var T;return E===1?T="{d\\over d"+x+"}":T="{d^{"+E+"}\\over d"+x+"^{"+E+"}}",T+"\\left[".concat(w,"\\right]")}}),y=e("_isConst",{"function, ConstantNode, string":function(){return!0},"function, SymbolNode, string":function(w,x,E){return x.name!==E},"function, ParenthesisNode, string":function(w,x,E){return w(x.content,E)},"function, FunctionAssignmentNode, string":function(w,x,E){return x.params.includes(E)?w(x.expr,E):!0},"function, FunctionNode | OperatorNode, string":function(w,x,E){return x.args.every(T=>w(T,E))}}),D=e("_derivative",{"ConstantNode, function":function(){return v(0)},"SymbolNode, function":function(w,x){return x(w)?v(0):v(1)},"ParenthesisNode, function":function(w,x){return new f(D(w.content,x))},"FunctionAssignmentNode, function":function(w,x){return x(w)?v(0):D(w.expr,x)},"FunctionNode, function":function(w,x){if(x(w))return v(0);var E=w.args[0],T,_=!1,C=!1,N;switch(w.name){case"cbrt":_=!0,N=new c("*","multiply",[v(3),new c("^","pow",[E,new c("/","divide",[v(2),v(3)])])]);break;case"sqrt":case"nthRoot":if(w.args.length===1)_=!0,N=new c("*","multiply",[v(2),new u("sqrt",[E])]);else if(w.args.length===2)return T=new c("/","divide",[v(1),w.args[1]]),D(new c("^","pow",[E,T]),x);break;case"log10":T=v(10);case"log":if(!T&&w.args.length===1)N=E.clone(),_=!0;else if(w.args.length===1&&T||w.args.length===2&&x(w.args[1]))N=new c("*","multiply",[E.clone(),new u("log",[T||w.args[1]])]),_=!0;else if(w.args.length===2)return D(new c("/","divide",[new u("log",[E]),new u("log",[w.args[1]])]),x);break;case"pow":if(w.args.length===2)return D(new c("^","pow",[E,w.args[1]]),x);break;case"exp":N=new u("exp",[E.clone()]);break;case"sin":N=new u("cos",[E.clone()]);break;case"cos":N=new c("-","unaryMinus",[new u("sin",[E.clone()])]);break;case"tan":N=new c("^","pow",[new u("sec",[E.clone()]),v(2)]);break;case"sec":N=new c("*","multiply",[w,new u("tan",[E.clone()])]);break;case"csc":C=!0,N=new c("*","multiply",[w,new u("cot",[E.clone()])]);break;case"cot":C=!0,N=new c("^","pow",[new u("csc",[E.clone()]),v(2)]);break;case"asin":_=!0,N=new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])]);break;case"acos":_=!0,C=!0,N=new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])]);break;case"atan":_=!0,N=new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)]);break;case"asec":_=!0,N=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acsc":_=!0,C=!0,N=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acot":_=!0,C=!0,N=new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)]);break;case"sinh":N=new u("cosh",[E.clone()]);break;case"cosh":N=new u("sinh",[E.clone()]);break;case"tanh":N=new c("^","pow",[new u("sech",[E.clone()]),v(2)]);break;case"sech":C=!0,N=new c("*","multiply",[w,new u("tanh",[E.clone()])]);break;case"csch":C=!0,N=new c("*","multiply",[w,new u("coth",[E.clone()])]);break;case"coth":C=!0,N=new c("^","pow",[new u("csch",[E.clone()]),v(2)]);break;case"asinh":_=!0,N=new u("sqrt",[new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)])]);break;case"acosh":_=!0,N=new u("sqrt",[new c("-","subtract",[new c("^","pow",[E.clone(),v(2)]),v(1)])]);break;case"atanh":_=!0,N=new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])]);break;case"asech":_=!0,C=!0,N=new c("*","multiply",[E.clone(),new u("sqrt",[new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])])])]);break;case"acsch":_=!0,C=!0,N=new c("*","multiply",[new u("abs",[E.clone()]),new u("sqrt",[new c("+","add",[new c("^","pow",[E.clone(),v(2)]),v(1)])])]);break;case"acoth":_=!0,C=!0,N=new c("-","subtract",[v(1),new c("^","pow",[E.clone(),v(2)])]);break;case"abs":N=new c("/","divide",[new u(new m("abs"),[E.clone()]),E.clone()]);break;case"gamma":default:throw new Error('Cannot process function "'+w.name+'" in derivative: the function is not supported, undefined, or the number of arguments passed to it are not supported')}var I,R;_?(I="/",R="divide"):(I="*",R="multiply");var L=D(E,x);return C&&(L=new c("-","unaryMinus",[L])),new c(I,R,[L,N])},"OperatorNode, function":function(w,x){if(x(w))return v(0);if(w.op==="+")return new c(w.op,w.fn,w.args.map(function(P){return D(P,x)}));if(w.op==="-"){if(w.isUnary())return new c(w.op,w.fn,[D(w.args[0],x)]);if(w.isBinary())return new c(w.op,w.fn,[D(w.args[0],x),D(w.args[1],x)])}if(w.op==="*"){var E=w.args.filter(function(P){return x(P)});if(E.length>0){var T=w.args.filter(function(P){return!x(P)}),_=T.length===1?T[0]:new c("*","multiply",T),C=E.concat(D(_,x));return new c("*","multiply",C)}return new c("+","add",w.args.map(function(P){return new c("*","multiply",w.args.map(function(k){return k===P?D(k,x):k.clone()}))}))}if(w.op==="/"&&w.isBinary()){var N=w.args[0],I=w.args[1];return x(I)?new c("/","divide",[D(N,x),I]):x(N)?new c("*","multiply",[new c("-","unaryMinus",[N]),new c("/","divide",[D(I,x),new c("^","pow",[I.clone(),v(2)])])]):new c("/","divide",[new c("-","subtract",[new c("*","multiply",[D(N,x),I.clone()]),new c("*","multiply",[N.clone(),D(I,x)])]),new c("^","pow",[I.clone(),v(2)])])}if(w.op==="^"&&w.isBinary()){var R=w.args[0],L=w.args[1];if(x(R))return kt(R)&&(o(R.value)||a(R.value,1))?v(0):new c("*","multiply",[w,new c("*","multiply",[new u("log",[R.clone()]),D(L.clone(),x)])]);if(x(L)){if(kt(L)){if(o(L.value))return v(0);if(a(L.value,1))return D(R,x)}var V=new c("^","pow",[R.clone(),new c("-","subtract",[L,v(1)])]);return new c("*","multiply",[L.clone(),new c("*","multiply",[D(R,x),V])])}return new c("*","multiply",[new c("^","pow",[R.clone(),L.clone()]),new c("+","add",[new c("*","multiply",[D(R,x),new c("/","divide",[L.clone(),R.clone()])]),new c("*","multiply",[D(L,x),new u("log",[R.clone()])])])])}throw new Error('Cannot process operator "'+w.op+'" in derivative: the operator is not supported, undefined, or the number of arguments passed to it are not supported')}});function v(A,w){return new l(s(A,w||xi(String(A),r)))}return h});var eL="rationalize",DQ=["config","typed","equal","isZero","add","subtract","multiply","divide","pow","parse","simplifyConstant","simplifyCore","simplify","?bignumber","?fraction","mathWithTransform","matrix","AccessorNode","ArrayNode","ConstantNode","FunctionNode","IndexNode","ObjectNode","OperatorNode","SymbolNode","ParenthesisNode"],tL=M(eL,DQ,t=>{var{config:e,typed:r,equal:n,isZero:i,add:a,subtract:o,multiply:s,divide:l,pow:u,parse:c,simplifyConstant:f,simplifyCore:m,simplify:p,fraction:d,bignumber:h,mathWithTransform:b,matrix:y,AccessorNode:D,ArrayNode:v,ConstantNode:A,FunctionNode:w,IndexNode:x,ObjectNode:E,OperatorNode:T,SymbolNode:_,ParenthesisNode:C}=t;function N(P){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,O=R(),Q=I(P,k,!0,O.firstRules),ne=Q.variables.length,X={exactFractions:!1},U={exactFractions:!0};if(P=Q.expression,ne>=1){P=L(P);var fe,xe,oe=!0,be=!1;P=p(P,O.firstRules,{},X);for(var ee;xe=oe?O.distrDivRules:O.sucDivRules,P=p(P,xe,{},U),oe=!oe,ee=P.toString(),ee!==fe;)be=!0,fe=ee;be&&(P=p(P,O.firstRulesAgain,{},X)),P=p(P,O.finalRules,{},X)}var Z=[],re={};return P.type==="OperatorNode"&&P.isBinary()&&P.op==="/"?(ne===1&&(P.args[0]=V(P.args[0],Z),P.args[1]=V(P.args[1])),W&&(re.numerator=P.args[0],re.denominator=P.args[1])):(ne===1&&(P=V(P,Z)),W&&(re.numerator=P,re.denominator=null)),W?(re.coefficients=Z,re.variables=Q.variables,re.expression=P,re):P}return r(eL,{Node:N,"Node, boolean":(P,k)=>N(P,{},k),"Node, Object":N,"Node, Object, boolean":N});function I(P,k,W,O){var Q=[],ne=p(P,O,k,{exactFractions:!1});W=!!W;var X="+-*"+(W?"/":"");fe(ne);var U={};return U.expression=ne,U.variables=Q,U;function fe(xe){var oe=xe.type;if(oe==="FunctionNode")throw new Error("There is an unsolved function call");if(oe==="OperatorNode")if(xe.op==="^"){if(xe.args[1].type!=="ConstantNode"||!He(parseFloat(xe.args[1].value)))throw new Error("There is a non-integer exponent");fe(xe.args[0])}else{if(!X.includes(xe.op))throw new Error("Operator "+xe.op+" invalid in polynomial expression");for(var be=0;be1;if(O==="OperatorNode"&&P.isBinary()){var ne=!1,X;if(P.op==="^"&&(P.args[0].type==="ParenthesisNode"||P.args[0].type==="OperatorNode")&&P.args[1].type==="ConstantNode"&&(X=parseFloat(P.args[1].value),ne=X>=2&&He(X)),ne){if(X>2){var U=P.args[0],fe=new T("^","pow",[P.args[0].cloneDeep(),new A(X-1)]);P=new T("*","multiply",[U,fe])}else P=new T("*","multiply",[P.args[0],P.args[0].cloneDeep()]);Q&&(W==="content"?k.content=P:k.args[W]=P)}}if(O==="ParenthesisNode")L(P.content,P,"content");else if(O!=="ConstantNode"&&O!=="SymbolNode")for(var xe=0;xe=0;U--)if(k[U]!==0){var fe=new A(ne?k[U]:Math.abs(k[U])),xe=k[U]<0?"-":"+";if(U>0){var oe=new _(Q);if(U>1){var be=new A(U);oe=new T("^","pow",[oe,be])}k[U]===-1&&ne?fe=new T("-","unaryMinus",[oe]):Math.abs(k[U])===1?fe=oe:fe=new T("*","multiply",[fe,oe])}ne?X=fe:xe==="+"?X=new T("+","add",[X,fe]):X=new T("-","subtract",[X,fe]),ne=!1}if(ne)return new A(0);return X;function ee(Z,re,me){var ce=Z.type;if(ce==="FunctionNode")throw new Error("There is an unsolved function call");if(ce==="OperatorNode"){if(!"+-*^".includes(Z.op))throw new Error("Operator "+Z.op+" invalid");if(re!==null){if((Z.fn==="unaryMinus"||Z.fn==="pow")&&re.fn!=="add"&&re.fn!=="subtract"&&re.fn!=="multiply")throw new Error("Invalid "+Z.op+" placing");if((Z.fn==="subtract"||Z.fn==="add"||Z.fn==="multiply")&&re.fn!=="add"&&re.fn!=="subtract")throw new Error("Invalid "+Z.op+" placing");if((Z.fn==="subtract"||Z.fn==="add"||Z.fn==="unaryMinus")&&me.noFil!==0)throw new Error("Invalid "+Z.op+" placing")}(Z.op==="^"||Z.op==="*")&&(me.fire=Z.op);for(var Ae=0;AeO&&(k[we]=0),k[we]+=me.cte*(me.oper==="+"?1:-1),O=Math.max(we,O);return}me.cte=we,me.fire===""&&(k[0]+=me.cte*(me.oper==="+"?1:-1))}else throw new Error("Type "+ce+" is not allowed")}}});var rL="zpk2tf",SQ=["typed","add","multiply","Complex","number"],nL=M(rL,SQ,t=>{var{typed:e,add:r,multiply:n,Complex:i,number:a}=t;return e(rL,{"Array,Array,number":function(u,c,f){return o(u,c,f)},"Array,Array":function(u,c){return o(u,c,1)},"Matrix,Matrix,number":function(u,c,f){return o(u.valueOf(),c.valueOf(),f)},"Matrix,Matrix":function(u,c){return o(u.valueOf(),c.valueOf(),1)}});function o(l,u,c){l.some(D=>D.type==="BigNumber")&&(l=l.map(D=>a(D))),u.some(D=>D.type==="BigNumber")&&(u=u.map(D=>a(D)));for(var f=[i(1,0)],m=[i(1,0)],p=0;p=0&&f-m{var{typed:e,add:r,multiply:n,Complex:i,divide:a,matrix:o}=t;return e(iL,{"Array, Array":function(c,f){var m=l(512);return s(c,f,m)},"Array, Array, Array":function(c,f,m){return s(c,f,m)},"Array, Array, number":function(c,f,m){if(m<0)throw new Error("w must be a positive number");var p=l(m);return s(c,f,p)},"Matrix, Matrix":function(c,f){var m=l(512),{w:p,h:d}=s(c.valueOf(),f.valueOf(),m);return{w:o(p),h:o(d)}},"Matrix, Matrix, Matrix":function(c,f,m){var{h:p}=s(c.valueOf(),f.valueOf(),m.valueOf());return{h:o(p),w:o(m)}},"Matrix, Matrix, number":function(c,f,m){if(m<0)throw new Error("w must be a positive number");var p=l(m),{h:d}=s(c.valueOf(),f.valueOf(),p);return{h:o(d),w:o(p)}}});function s(u,c,f){for(var m=[],p=[],d=0;d{var{classes:e}=t;return function(n,i){var a=e[i&&i.mathjs];return a&&typeof a.fromJSON=="function"?a.fromJSON(i):i}});var CQ="replacer",NQ=[],sL=M(CQ,NQ,()=>function(e,r){return typeof r=="number"&&(!isFinite(r)||isNaN(r))?{mathjs:"number",value:String(r)}:typeof r=="bigint"?{mathjs:"bigint",value:String(r)}:r});var uL="14.4.0";var lL=M("true",[],()=>!0),cL=M("false",[],()=>!1),fL=M("null",[],()=>null),pL=Da("Infinity",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1/0):1/0}),mL=Da("NaN",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(NaN):NaN}),dL=Da("pi",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?ap(r):AE}),hL=Da("tau",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?eF(r):DE}),gL=Da("e",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?QN(r):SE}),vL=Da("phi",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?KN(r):EE}),yL=Da("LN2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(2).ln():Math.LN2}),bL=Da("LN10",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(10).ln():Math.LN10}),xL=Da("LOG2E",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1).div(new r(2).ln()):Math.LOG2E}),wL=Da("LOG10E",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(1).div(new r(10).ln()):Math.LOG10E}),_L=Da("SQRT1_2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r("0.5").sqrt():Math.SQRT1_2}),AL=Da("SQRT2",["config","?BigNumber"],t=>{var{config:e,BigNumber:r}=t;return e.number==="BigNumber"?new r(2).sqrt():Math.SQRT2}),DL=Da("i",["Complex"],t=>{var{Complex:e}=t;return e.I}),SL=M("PI",["pi"],t=>{var{pi:e}=t;return e}),EL=M("E",["e"],t=>{var{e}=t;return e}),TL=M("version",[],()=>uL);function Da(t,e,r){return M(t,e,r,{recreateOnConfigChange:!0})}var ML=Kt("speedOfLight","299792458","m s^-1"),CL=Kt("gravitationConstant","6.67430e-11","m^3 kg^-1 s^-2"),NL=Kt("planckConstant","6.62607015e-34","J s"),FL=Kt("reducedPlanckConstant","1.0545718176461565e-34","J s"),IL=Kt("magneticConstant","1.25663706212e-6","N A^-2"),BL=Kt("electricConstant","8.8541878128e-12","F m^-1"),kL=Kt("vacuumImpedance","376.730313667","ohm"),PL=Kt("coulomb","8.987551792261171e9","N m^2 C^-2"),$L=Kt("elementaryCharge","1.602176634e-19","C"),OL=Kt("bohrMagneton","9.2740100783e-24","J T^-1"),RL=Kt("conductanceQuantum","7.748091729863649e-5","S"),LL=Kt("inverseConductanceQuantum","12906.403729652257","ohm"),VL=Kt("magneticFluxQuantum","2.0678338484619295e-15","Wb"),UL=Kt("nuclearMagneton","5.0507837461e-27","J T^-1"),qL=Kt("klitzing","25812.807459304513","ohm");var zL=Kt("bohrRadius","5.29177210903e-11","m"),HL=Kt("classicalElectronRadius","2.8179403262e-15","m"),GL=Kt("electronMass","9.1093837015e-31","kg"),WL=Kt("fermiCoupling","1.1663787e-5","GeV^-2"),YL=dv("fineStructure",.0072973525693),jL=Kt("hartreeEnergy","4.3597447222071e-18","J"),ZL=Kt("protonMass","1.67262192369e-27","kg"),JL=Kt("deuteronMass","3.3435830926e-27","kg"),XL=Kt("neutronMass","1.6749271613e-27","kg"),QL=Kt("quantumOfCirculation","3.6369475516e-4","m^2 s^-1"),KL=Kt("rydberg","10973731.568160","m^-1"),e3=Kt("thomsonCrossSection","6.6524587321e-29","m^2"),t3=dv("weakMixingAngle",.2229),r3=dv("efimovFactor",22.7),n3=Kt("atomicMass","1.66053906660e-27","kg"),i3=Kt("avogadro","6.02214076e23","mol^-1"),a3=Kt("boltzmann","1.380649e-23","J K^-1"),o3=Kt("faraday","96485.33212331001","C mol^-1"),s3=Kt("firstRadiation","3.7417718521927573e-16","W m^2"),u3=Kt("loschmidt","2.686780111798444e25","m^-3"),l3=Kt("gasConstant","8.31446261815324","J K^-1 mol^-1"),c3=Kt("molarPlanckConstant","3.990312712893431e-10","J s mol^-1"),f3=Kt("molarVolume","0.022413969545014137","m^3 mol^-1"),p3=dv("sackurTetrode",-1.16487052358),m3=Kt("secondRadiation","0.014387768775039337","m K"),d3=Kt("stefanBoltzmann","5.67037441918443e-8","W m^-2 K^-4"),h3=Kt("wienDisplacement","2.897771955e-3","m K"),g3=Kt("molarMass","0.99999999965e-3","kg mol^-1"),v3=Kt("molarMassC12","11.9999999958e-3","kg mol^-1"),y3=Kt("gravity","9.80665","m s^-2"),b3=Kt("planckLength","1.616255e-35","m"),x3=Kt("planckMass","2.176435e-8","kg"),w3=Kt("planckTime","5.391245e-44","s"),_3=Kt("planckCharge","1.87554603778e-18","C"),A3=Kt("planckTemperature","1.416785e+32","K");function Kt(t,e,r){var n=["config","Unit","BigNumber"];return M(t,n,i=>{var{config:a,Unit:o,BigNumber:s}=i,l=a.number==="BigNumber"?new s(e):parseFloat(e),u=new o(l,r);return u.fixPrefix=!0,u})}function dv(t,e){var r=["config","BigNumber"];return M(t,r,n=>{var{config:i,BigNumber:a}=n;return i.number==="BigNumber"?new a(e):e})}function D3(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function FQ(t){for(var e=1;e{var{typed:e,isInteger:r}=t,n=ip({typed:e,isInteger:r});return e("mapSlices",{"...any":function(a){var o=a[1];bt(o)?a[1]=o-1:ot(o)&&(a[1]=o.minus(1));try{return n.apply(null,a)}catch(s){throw qr(s)}}})},FQ({isTransformFunction:!0},ip.meta));var kQ="column",PQ=["typed","Index","matrix","range"],E3=M(kQ,PQ,t=>{var{typed:e,Index:r,matrix:n,range:i}=t,a=hg({typed:e,Index:r,matrix:n,range:i});return e("column",{"...any":function(s){var l=s.length-1,u=s[l];bt(u)&&(s[l]=u-1);try{return a.apply(null,s)}catch(c){throw qr(c)}}})},{isTransformFunction:!0});function Oc(t,e,r){var n=t.filter(function(l){return Mr(l)&&!(l.name in e)&&!r.has(l.name)})[0];if(!n)throw new Error('No undefined variable found in inline expression "'+t+'"');var i=n.name,a=new Map,o=new pc(r,a,new Set([i])),s=t.compile();return function(u){return a.set(i,u),s.evaluate(o)}}var $Q="transformCallback",OQ=["typed"],Rc=M($Q,OQ,t=>{var{typed:e}=t;return function(n,i){return e.isTypedFunction(n)?r(n,i):T3(n,n.length,i)};function r(n,i){var a=Object.fromEntries(Object.entries(n.signatures).map(o=>{var[s,l]=o,u=s.split(",").length;return e.isTypedFunction(l)?[s,r(l,i)]:[s,T3(l,u,i)]}));return typeof n.name=="string"?e(n.name,a):e(a)}});function T3(t,e,r){return e===r?t:e===r+1?function(){for(var n=arguments.length,i=new Array(n),a=0;ar+1?function(){for(var n=arguments.length,i=new Array(n),a=0;ae+1)}var RQ="filter",LQ=["typed"],C3=M(RQ,LQ,t=>{var{typed:e}=t;function r(i,a,o){var s=gg({typed:e}),l=Rc({typed:e});if(i.length===0)return s();var u=i[0];if(i.length===1)return s(u);var c=i.length-1,f=i[c];return u&&(u=n(u,o)),f&&(Mr(f)||za(f)?f=n(f,o):f=Oc(f,a,o)),s(u,l(f,c))}r.rawArgs=!0;function n(i,a){return i.compile().evaluate(a)}return r},{isTransformFunction:!0});var VQ="forEach",UQ=["typed"],N3=M(VQ,UQ,t=>{var{typed:e}=t,r=vg({typed:e}),n=Rc({typed:e});function i(o,s,l){if(o.length===0)return r();var u=o[0];if(o.length===1)return r(u);var c=o.length-1,f=o[c];return u&&(u=a(u,l)),f&&(Mr(f)||za(f)?f=a(f,l):f=Oc(f,s,l)),r(u,n(f,c))}i.rawArgs=!0;function a(o,s){return o.compile().evaluate(s)}return i},{isTransformFunction:!0});var qQ="index",zQ=["Index","getMatrixDataType"],F3=M(qQ,zQ,t=>{var{Index:e,getMatrixDataType:r}=t;return function(){for(var i=[],a=0,o=arguments.length;a0?0:2;else if(s&&s.isSet===!0)s=s.map(function(u){return u-1});else if(sr(s)||Ye(s))r(s)!=="boolean"&&(s=s.map(function(u){return u-1}));else if(bt(s)||Po(s))s--;else if(ot(s))s=s.toNumber()-1;else if(typeof s!="string")throw new TypeError("Dimension must be an Array, Matrix, number, bigint, string, or Range");i[a]=s}var l=new e;return e.apply(l,i),l}},{isTransformFunction:!0});var HQ="map",GQ=["typed"],I3=M(HQ,GQ,t=>{var{typed:e}=t,r=yg({typed:e}),n=Rc({typed:e});function i(a,o,s){if(a.length===0)return r();if(a.length===1)return r(a[0]);var l=a.length-1,u=a.slice(0,l),c=a[l];return u=u.map(m=>f(m,s)),c&&(Mr(c)||za(c)?c=f(c,s):c=Oc(c,o,s)),r(...u,n(c,l));function f(m,p){return m.compile().evaluate(p)}}return i.rawArgs=!0,i},{isTransformFunction:!0});function B3(t){return bt(t)?t-1:ot(t)?t.minus(1):t}function k3(t){return bt(t)||ot(t)}function Di(t){if(t.length===2&&rn(t[0])){t=t.slice();var e=t[1];k3(e)&&(t[1]=B3(e))}return t}var WQ="max",YQ=["typed","config","numeric","larger","isNaN"],P3=M(WQ,YQ,t=>{var{typed:e,config:r,numeric:n,larger:i,isNaN:a}=t,o=Pg({typed:e,config:r,numeric:n,larger:i,isNaN:a});return e("max",{"...any":function(l){l=Di(l);try{return o.apply(null,l)}catch(u){throw qr(u)}}})},{isTransformFunction:!0});var jQ="mean",ZQ=["typed","add","divide"],$3=M(jQ,ZQ,t=>{var{typed:e,add:r,divide:n}=t,i=lv({typed:e,add:r,divide:n});return e("mean",{"...any":function(o){o=Di(o);try{return i.apply(null,o)}catch(s){throw qr(s)}}})},{isTransformFunction:!0});var JQ="min",XQ=["typed","config","numeric","smaller","isNaN"],O3=M(JQ,XQ,t=>{var{typed:e,config:r,numeric:n,smaller:i,isNaN:a}=t,o=$g({typed:e,config:r,numeric:n,smaller:i,isNaN:a});return e("min",{"...any":function(l){l=Di(l);try{return o.apply(null,l)}catch(u){throw qr(u)}}})},{isTransformFunction:!0});var QQ="range",KQ=["typed","config","?matrix","?bignumber","smaller","smallerEq","larger","largerEq","add","isPositive"],R3=M(QQ,KQ,t=>{var{typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c}=t,f=_g({typed:e,config:r,matrix:n,bignumber:i,smaller:a,smallerEq:o,larger:s,largerEq:l,add:u,isPositive:c});return e("range",{"...any":function(p){var d=p.length-1,h=p[d];return typeof h!="boolean"&&p.push(!0),f.apply(null,p)}})},{isTransformFunction:!0});var eK="row",tK=["typed","Index","matrix","range"],L3=M(eK,tK,t=>{var{typed:e,Index:r,matrix:n,range:i}=t,a=Ag({typed:e,Index:r,matrix:n,range:i});return e("row",{"...any":function(s){var l=s.length-1,u=s[l];bt(u)&&(s[l]=u-1);try{return a.apply(null,s)}catch(c){throw qr(c)}}})},{isTransformFunction:!0});var rK="subset",nK=["typed","matrix","zeros","add"],V3=M(rK,nK,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t,a=Dg({typed:e,matrix:r,zeros:n,add:i});return e("subset",{"...any":function(s){try{return a.apply(null,s)}catch(l){throw qr(l)}}})},{isTransformFunction:!0});var iK="concat",aK=["typed","matrix","isInteger"],U3=M(iK,aK,t=>{var{typed:e,matrix:r,isInteger:n}=t,i=dg({typed:e,matrix:r,isInteger:n});return e("concat",{"...any":function(o){var s=o.length-1,l=o[s];bt(l)?o[s]=l-1:ot(l)&&(o[s]=l.minus(1));try{return i.apply(null,o)}catch(u){throw qr(u)}}})},{isTransformFunction:!0});var q3="diff",oK=["typed","matrix","subtract","number","bignumber"],z3=M(q3,oK,t=>{var{typed:e,matrix:r,subtract:n,number:i,bignumber:a}=t,o=bg({typed:e,matrix:r,subtract:n,number:i,bignumber:a});return e(q3,{"...any":function(l){l=Di(l);try{return o.apply(null,l)}catch(u){throw qr(u)}}})},{isTransformFunction:!0});var sK="std",uK=["typed","map","sqrt","variance"],H3=M(sK,uK,t=>{var{typed:e,map:r,sqrt:n,variance:i}=t,a=pv({typed:e,map:r,sqrt:n,variance:i});return e("std",{"...any":function(s){s=Di(s);try{return a.apply(null,s)}catch(l){throw qr(l)}}})},{isTransformFunction:!0});var G3="sum",lK=["typed","config","add","numeric"],W3=M(G3,lK,t=>{var{typed:e,config:r,add:n,numeric:i}=t,a=ov({typed:e,config:r,add:n,numeric:i});return e(G3,{"...any":function(s){s=Di(s);try{return a.apply(null,s)}catch(l){throw qr(l)}}})},{isTransformFunction:!0});var cK="quantileSeq",fK=["typed","bignumber","add","subtract","divide","multiply","partitionSelect","compare","isInteger","smaller","smallerEq","larger","mapSlices"],Y3=M(cK,fK,t=>{var{typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m,mapSlices:p}=t,d=fv({typed:e,bignumber:r,add:n,subtract:i,divide:a,multiply:o,partitionSelect:s,compare:l,isInteger:u,smaller:c,smallerEq:f,larger:m,mapSlices:p});return e("quantileSeq",{"Array | Matrix, number | BigNumber":d,"Array | Matrix, number | BigNumber, number":(b,y,D)=>d(b,y,h(D)),"Array | Matrix, number | BigNumber, boolean":d,"Array | Matrix, number | BigNumber, boolean, number":(b,y,D,v)=>d(b,y,D,h(v)),"Array | Matrix, Array | Matrix":d,"Array | Matrix, Array | Matrix, number":(b,y,D)=>d(b,y,h(D)),"Array | Matrix, Array | Matrix, boolean":d,"Array | Matrix, Array | Matrix, boolean, number":(b,y,D,v)=>d(b,y,D,h(v))});function h(b){return Di([[],b])[1]}},{isTransformFunction:!0});var j3="cumsum",pK=["typed","add","unaryPlus"],Z3=M(j3,pK,t=>{var{typed:e,add:r,unaryPlus:n}=t,i=uv({typed:e,add:r,unaryPlus:n});return e(j3,{"...any":function(o){if(o.length===2&&rn(o[0])){var s=o[1];bt(s)?o[1]=s-1:ot(s)&&(o[1]=s.minus(1))}try{return i.apply(null,o)}catch(l){throw qr(l)}}})},{isTransformFunction:!0});var J3="variance",mK=["typed","add","subtract","multiply","divide","mapSlices","isNaN"],X3=M(J3,mK,t=>{var{typed:e,add:r,subtract:n,multiply:i,divide:a,mapSlices:o,isNaN:s}=t,l=cv({typed:e,add:r,subtract:n,multiply:i,divide:a,mapSlices:o,isNaN:s});return e(J3,{"...any":function(c){c=Di(c);try{return l.apply(null,c)}catch(f){throw qr(f)}}})},{isTransformFunction:!0});var Q3="print",dK=["typed","matrix","zeros","add"],K3=M(Q3,dK,t=>{var{typed:e,matrix:r,zeros:n,add:i}=t,a=Eg({typed:e,matrix:r,zeros:n,add:i});return e(Q3,{"string, Object | Array":function(l,u){return a(o(l),u)},"string, Object | Array, number | Object":function(l,u,c){return a(o(l),u,c)}});function o(s){return s.replace(Sg,l=>{var u=l.slice(1).split("."),c=u.map(function(f){return!isNaN(f)&&f.length>0?parseInt(f)-1:f});return"$"+c.join(".")})}},{isTransformFunction:!0});var hK="and",gK=["typed","matrix","zeros","add","equalScalar","not","concat"],e4=M(hK,gK,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=Tg({typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o});function l(u,c,f){var m=u[0].compile().evaluate(f);if(!rn(m)&&!s(m,!0))return!1;var p=u[1].compile().evaluate(f);return s(m,p)}return l.rawArgs=!0,l},{isTransformFunction:!0});var vK="or",yK=["typed","matrix","equalScalar","DenseMatrix","concat"],t4=M(vK,yK,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=mg({typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a});function s(l,u,c){var f=l[0].compile().evaluate(c);if(!rn(f)&&o(f,!1))return!0;var m=l[1].compile().evaluate(c);return o(f,m)}return s.rawArgs=!0,s},{isTransformFunction:!0});var bK="bitAnd",xK=["typed","matrix","zeros","add","equalScalar","not","concat"],r4=M(bK,xK,t=>{var{typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o}=t,s=fg({typed:e,matrix:r,equalScalar:n,zeros:i,not:a,concat:o});function l(u,c,f){var m=u[0].compile().evaluate(f);if(!rn(m)){if(isNaN(m))return NaN;if(m===0||m===!1)return 0}var p=u[1].compile().evaluate(f);return s(m,p)}return l.rawArgs=!0,l},{isTransformFunction:!0});var wK="bitOr",_K=["typed","matrix","equalScalar","DenseMatrix","concat"],n4=M(wK,_K,t=>{var{typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a}=t,o=pg({typed:e,matrix:r,equalScalar:n,DenseMatrix:i,concat:a});function s(l,u,c){var f=l[0].compile().evaluate(c);if(!rn(f)){if(isNaN(f))return NaN;if(f===-1)return-1;if(f===!0)return 1}var m=l[1].compile().evaluate(c);return o(f,m)}return s.rawArgs=!0,s},{isTransformFunction:!0});var fw=cw;var u4=Tr(Ih(),1);var a4=Tr(i4(),1);function o4(t){var e=new a4.default;return t.on=e.on.bind(e),t.off=e.off.bind(e),t.once=e.once.bind(e),t.emit=e.emit.bind(e),t}function s4(t,e,r,n){function i(y,D){var v=arguments.length;if(v!==1&&v!==2)throw new Aa("import",v,1,2);D||(D={});function A(T,_,C){if(Array.isArray(_))_.forEach(R=>A(T,R));else if(ya(_)||f(_))for(var N in _)Ze(_,N)&&A(T,_[N],N);else if(ju(_)||C!==void 0){var I=ju(_)?h(_)?_.fn+".transform":_.fn:C;if(Ze(T,I)&&T[I]!==_&&!D.silent)throw new Error('Cannot import "'+I+'" twice');T[I]=_}else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}var w={};A(w,y);for(var x in w)if(Ze(w,x)){var E=w[x];if(ju(E))u(E,D);else if(c(E))a(x,E,D);else if(!D.silent)throw new TypeError("Factory, Object, or Array expected")}}function a(y,D,v){var A;if(v.wrap&&typeof D=="function"&&(D=l(D)),m(D)&&(D=t(y,{[D.signature]:D})),t.isTypedFunction(r[y])&&t.isTypedFunction(D)){v.override?D=t(y,D.signatures):D=t(r[y],D),r[y]=D,delete n[y],o(y,D),r.emit("import",y,function(){return D});return}var w=r[y]!==void 0,x=(A=r.Unit)===null||A===void 0?void 0:A.isValuelessUnit(y);if(!w&&!x||v.override){r[y]=D,delete n[y],o(y,D),r.emit("import",y,function(){return D});return}if(!v.silent)throw new Error('Cannot import "'+y+'": already exists')}function o(y,D){D&&typeof D.transform=="function"?(r.expression.transform[y]=D.transform,p(y)&&(r.expression.mathWithTransform[y]=D.transform)):(delete r.expression.transform[y],p(y)&&(r.expression.mathWithTransform[y]=D))}function s(y){delete r.expression.transform[y],p(y)?r.expression.mathWithTransform[y]=r[y]:delete r.expression.mathWithTransform[y]}function l(y){var D=function(){for(var A=[],w=0,x=arguments.length;w2&&arguments[2]!==void 0?arguments[2]:y.fn;if(w.includes("."))throw new Error("Factory name should not contain a nested path. Name: "+JSON.stringify(w));var x=h(y)?r.expression.transform:r,E=w in r.expression.transform,T=Ze(x,w)?x[w]:void 0,_=function(){var L={};y.dependencies.map(Dx).forEach(P=>{if(P.includes("."))throw new Error("Factory dependency should not contain a nested path. Name: "+JSON.stringify(P));P==="math"?L.math=r:P==="mathWithTransform"?L.mathWithTransform=r.expression.mathWithTransform:P==="classes"?L.classes=r:L[P]=r[P]});var V=y(L);if(V&&typeof V.transform=="function")throw new Error('Transforms cannot be attached to factory functions. Please create a separate function for it with export const path = "expression.transform"');if(T===void 0||D.override)return V;if(t.isTypedFunction(T)&&t.isTypedFunction(V))return t(T,V);if(D.silent)return T;throw new Error('Cannot import "'+w+'": already exists')},C=(v=(A=y.meta)===null||A===void 0?void 0:A.formerly)!==null&&v!==void 0?v:"",N=h(y)||d(y),I=r.expression.mathWithTransform;!y.meta||y.meta.lazy!==!1?(_s(x,w,_),C&&_s(x,C,_),T&&E?(s(w),C&&s(C)):N&&(_s(I,w,()=>x[w]),C&&_s(I,C,()=>x[w]))):(x[w]=_(),C&&(x[C]=x[w]),T&&E?(s(w),C&&s(C)):N&&(_s(I,w,()=>x[w]),C&&_s(I,C,()=>x[w]))),n[w]=y,r.emit("import",w,_)}function c(y){return typeof y=="function"||typeof y=="number"||typeof y=="string"||typeof y=="boolean"||y===null||En(y)||Hn(y)||ot(y)||ba(y)||Ye(y)||Array.isArray(y)}function f(y){return typeof y=="object"&&y[Symbol.toStringTag]==="Module"}function m(y){return typeof y=="function"&&typeof y.signature=="string"}function p(y){return!Ze(b,y)}function d(y){return!y.fn.includes(".")&&!Ze(b,y.fn)&&(!y.meta||!y.meta.isClass)}function h(y){return y!==void 0&&y.meta!==void 0&&y.meta.isTransformFunction===!0||!1}var b={expression:!0,type:!0,docs:!0,error:!0,json:!0,chain:!0};return i}function hv(t,e){var r=bn({},vh,e);if(typeof Object.create!="function")throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var n=o4({isNumber:bt,isComplex:Hn,isBigNumber:ot,isBigInt:Po,isFraction:ba,isUnit:En,isString:Jr,isArray:sr,isMatrix:Ye,isCollection:rn,isDenseMatrix:ws,isSparseMatrix:xa,isRange:tu,isIndex:$o,isBoolean:bh,isResultSet:xh,isHelp:mc,isFunction:wh,isDate:_h,isRegExp:Ah,isObject:ya,isMap:ko,isPartitionedMap:mS,isObjectWrappingMap:dS,isNull:Dh,isUndefined:Sh,isAccessorNode:$i,isArrayNode:Gn,isAssignmentNode:Eh,isBlockNode:Th,isConditionalNode:Mh,isConstantNode:kt,isFunctionAssignmentNode:za,isFunctionNode:ai,isIndexNode:Xi,isNode:Gt,isObjectNode:Oo,isOperatorNode:Rr,isParenthesisNode:Wn,isRangeNode:Ch,isRelationalNode:Nh,isSymbolNode:Mr,isChain:dc});n.config=_S(r,n.emit),n.expression={transform:{},mathWithTransform:{config:n.config}};var i=[],a=[];function o(c){if(ju(c))return c(n);var f=c[Object.keys(c)[0]];if(ju(f))return f(n);if(!vS(c))throw console.warn("Factory object with properties `type`, `name`, and `factory` expected",c),new Error("Factory object with properties `type`, `name`, and `factory` expected");var m=i.indexOf(c),p;return m===-1?(c.math===!0?p=c.factory(n.type,r,o,n.typed,n):p=c.factory(n.type,r,o,n.typed),i.push(c),a.push(p)):p=a[m],p}var s={};function l(){for(var c=arguments.length,f=new Array(c),m=0;m{Object.values(s).forEach(c=>{c&&c.meta&&c.meta.recreateOnConfigChange&&u(c,{override:!0})})}),n.create=hv.bind(null,t),n.factory=M,n.import(Object.values(hS(t))),n.ArgumentsError=Aa,n.DimensionError=Et,n.IndexError=Zn,n}function l4(){return hv(fw,{})}var gv=class{constructor(){this.inputFieldParser=new oh(this),this.viewFieldParser=new dh(this),this.jsViewFieldParser=new sh(this),this.buttonParser=new Ld(this),this.bindTargetParser=new Nd(this),this.syntaxHighlighting=new tm(this),this.inputFieldFactory=new gd(this),this.viewFieldFactory=new wd(this),this.buttonActionRunner=new ym(this),this.buttonManager=new xm(this),this.metadataManager=new ec,this.mountableManager=new Cd,this.math=l4(),this.build="1.4.2".includes("canary")?"canary":"release"}setComponents(e){Object.assign(this,e)}setSettings(e){this.updateInternalSettings(e),this.saveSettings(e)}updateSettings(e){let r=this.getSettings();e(r),this.setSettings(r)}loadTemplates(){let e=this.getSettings(),r=this.inputFieldParser.parseTemplates(e.inputFieldTemplates);r.hasErrors()&&console.warn("meta-bind | failed to parse input field templates",r);let n=this.buttonManager.setButtonTemplates(e.buttonTemplates);n.hasErrors()&&console.warn("meta-bind | failed to parse button templates",n)}updateInternalSettings(e){Kn.dateFormat=e.preferredDateFormat,aS(e.firstWeekday),this.loadTemplates()}destroy(){this.mountableManager.unload()}};var Lc=class{constructor(e,r){this.id=e,this.manager=r,this.cache=new Map}validateStoragePath(e,r,n,i){return i.validateStoragePathAsFilePath(e,n)}resolveBindTargetScope(e,r,n){return e}getOrCreateCacheItem(e){let r=this.getCacheItemForStoragePath(e);return r===void 0&&(r=this.getDefaultCacheItem(e),this.cache.set(e,r)),r}subscribe(e){if(e.bindTarget===void 0)throw new Lt({errorLevel:"CRITICAL",effect:"can not subscribe",cause:"subscription bind target undefined"});let r=this.getOrCreateCacheItem(e.bindTarget.storagePath);return r.subscriptions.push(e),r}unsubscribe(e){if(e.bindTarget===void 0)throw new Lt({errorLevel:"CRITICAL",effect:"can not unsubscribe",cause:"subscription bind target undefined"});let r=this.cache.get(e.bindTarget.storagePath);if(r===void 0)throw new Lt({errorLevel:"CRITICAL",effect:"can not unsubscribe",cause:"cache item does not exist"});return r.subscriptions=r.subscriptions.filter(n=>n.uuid!==e.uuid),r}getCacheItemForStoragePath(e){return this.cache.get(e)}onCycle(e){}iterateCacheItems(){return this.cache.values()}shouldDelete(e){return!0}deleteCache(e){this.cache.delete(e.storagePath)}writeCache(e,r){let n=this.getOrCreateCacheItem(r.storagePath);return mo.setAndCreate(n.data,r.storageProp,e),n}writeEntireCache(e,r){r.data=e}readCache(e){if(e.storageType!==this.id)throw new Lt({errorLevel:"ERROR",effect:"can not read cache",cause:`Source "${e.storageType}" does not match`});let r=this.getCacheItemForStoragePath(e.storagePath);return r===void 0?mo.tryGet(this.readExternal(e.storagePath),e.storageProp):this.readCacheItem(r,e.storageProp)}readCacheItem(e,r){return mo.tryGet(e.data,r)}readEntireCacheItem(e){return e.data}};var vv=class extends Lc{readExternal(e){return{}}getDefaultCacheItem(e){return{data:{},storagePath:e,...this.manager.getDefaultCacheItem()}}syncExternal(e){}};var yv=class{constructor(e,r){this.id=e,this.manager=r,this.cache={data:{},...this.manager.getDefaultCacheItem()}}getOrCreateCacheItem(e){return this.cache}validateStoragePath(e,r,n,i){if(r)throw new Nn("ERROR","Bind target validator","Failed to parse bind target. Bind target storage type 'global_memory' does not support a storage path.",n,e.position);return""}deleteCache(e){}getCacheItemForStoragePath(e){return this.cache}iterateCacheItems(){return[this.cache][Symbol.iterator]()}onCycle(e){}readCache(e){return this.readCacheItem(this.cache,e.storageProp)}readCacheItem(e,r){return mo.tryGet(e.data,r)}shouldDelete(e){return!1}subscribe(e){return this.cache.subscriptions.push(e),this.cache}syncExternal(e){}unsubscribe(e){return this.cache.subscriptions=this.cache.subscriptions.filter(r=>r.uuid!==e.uuid),this.cache}writeCache(e,r){return mo.setAndCreate(this.cache.data,r.storageProp,e),this.cache}writeEntireCache(e,r){r.data=e}readEntireCacheItem(e){return e.data}},bv=class{constructor(e,r){this.id=e,this.manager=r}getOrCreateCacheItem(e){throw new Lt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}validateStoragePath(e,r,n,i){if(r)throw new Nn("ERROR","Bind Target Validator","Failed to parse bind target. Bind target storage type 'scope' does not support a storage path.",n,e.position);return""}deleteCache(e){}getCacheItemForStoragePath(e){}iterateCacheItems(){return[][Symbol.iterator]()}onCycle(e){}readCache(e){}readCacheItem(e,r){}shouldDelete(e){return!0}subscribe(e){throw new Lt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}syncExternal(e){}unsubscribe(e){throw new Lt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}writeCache(e,r){throw new Lt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}writeEntireCache(e,r){}readEntireCacheItem(e){throw new Lt({errorLevel:"CRITICAL",effect:"action not permitted",cause:"source 'scope' should have no cache items or subscriptions"})}};function xv(t){var e=t.statementIndent,r=t.jsonld,n=t.json||r,i=t.typescript,a=t.wordCharacters||/[\w$\xa1-\uffff]/,o=function(){function z(Mn){return{type:Mn,style:"keyword"}}var te=z("keyword a"),Ce=z("keyword b"),je=z("keyword c"),Ue=z("keyword d"),Rt=z("operator"),Fr={type:"atom",style:"atom"};return{if:z("if"),while:te,with:te,else:Ce,do:Ce,try:Ce,finally:Ce,return:Ue,break:Ue,continue:Ue,new:z("new"),delete:je,void:je,throw:je,debugger:z("debugger"),var:z("var"),const:z("var"),let:z("var"),function:z("function"),catch:z("catch"),for:z("for"),switch:z("switch"),case:z("case"),default:z("default"),in:Rt,typeof:Rt,instanceof:Rt,true:Fr,false:Fr,null:Fr,undefined:Fr,NaN:Fr,Infinity:Fr,this:z("this"),class:z("class"),super:z("atom"),yield:je,export:z("export"),import:z("import"),extends:je,await:je}}(),s=/[+\-*&%=<>!?|~^@]/,l=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function u(z){for(var te=!1,Ce,je=!1;(Ce=z.next())!=null;){if(!te){if(Ce=="/"&&!je)return;Ce=="["?je=!0:je&&Ce=="]"&&(je=!1)}te=!te&&Ce=="\\"}}var c,f;function m(z,te,Ce){return c=z,f=Ce,te}function p(z,te){var Ce=z.next();if(Ce=='"'||Ce=="'")return te.tokenize=d(Ce),te.tokenize(z,te);if(Ce=="."&&z.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if(Ce=="."&&z.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Ce))return m(Ce);if(Ce=="="&&z.eat(">"))return m("=>","operator");if(Ce=="0"&&z.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(Ce))return z.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if(Ce=="/")return z.eat("*")?(te.tokenize=h,h(z,te)):z.eat("/")?(z.skipToEnd(),m("comment","comment")):Qr(z,te,1)?(u(z),z.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string.special")):(z.eat("="),m("operator","operator",z.current()));if(Ce=="`")return te.tokenize=b,b(z,te);if(Ce=="#"&&z.peek()=="!")return z.skipToEnd(),m("meta","meta");if(Ce=="#"&&z.eatWhile(a))return m("variable","property");if(Ce=="<"&&z.match("!--")||Ce=="-"&&z.match("->")&&!/\S/.test(z.string.slice(0,z.start)))return z.skipToEnd(),m("comment","comment");if(s.test(Ce))return(Ce!=">"||!te.lexical||te.lexical.type!=">")&&(z.eat("=")?(Ce=="!"||Ce=="=")&&z.eat("="):/[<>*+\-|&?]/.test(Ce)&&(z.eat(Ce),Ce==">"&&z.eat(Ce))),Ce=="?"&&z.eat(".")?m("."):m("operator","operator",z.current());if(a.test(Ce)){z.eatWhile(a);var je=z.current();if(te.lastType!="."){if(o.propertyIsEnumerable(je)){var Ue=o[je];return m(Ue.type,Ue.style,je)}if(je=="async"&&z.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",je)}return m("variable","variable",je)}}function d(z){return function(te,Ce){var je=!1,Ue;if(r&&te.peek()=="@"&&te.match(l))return Ce.tokenize=p,m("jsonld-keyword","meta");for(;(Ue=te.next())!=null&&!(Ue==z&&!je);)je=!je&&Ue=="\\";return je||(Ce.tokenize=p),m("string","string")}}function h(z,te){for(var Ce=!1,je;je=z.next();){if(je=="/"&&Ce){te.tokenize=p;break}Ce=je=="*"}return m("comment","comment")}function b(z,te){for(var Ce=!1,je;(je=z.next())!=null;){if(!Ce&&(je=="`"||je=="$"&&z.eat("{"))){te.tokenize=p;break}Ce=!Ce&&je=="\\"}return m("quasi","string.special",z.current())}var y="([{}])";function D(z,te){te.fatArrowAt&&(te.fatArrowAt=null);var Ce=z.string.indexOf("=>",z.start);if(!(Ce<0)){if(i){var je=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(z.string.slice(z.start,Ce));je&&(Ce=je.index)}for(var Ue=0,Rt=!1,Fr=Ce-1;Fr>=0;--Fr){var Mn=z.string.charAt(Fr),Cn=y.indexOf(Mn);if(Cn>=0&&Cn<3){if(!Ue){++Fr;break}if(--Ue==0){Mn=="("&&(Rt=!0);break}}else if(Cn>=3&&Cn<6)++Ue;else if(a.test(Mn))Rt=!0;else if(/["'\/`]/.test(Mn))for(;;--Fr){if(Fr==0)return;var Wo=z.string.charAt(Fr-1);if(Wo==Mn&&z.string.charAt(Fr-2)!="\\"){Fr--;break}}else if(Rt&&!Ue){++Fr;break}}Rt&&!Ue&&(te.fatArrowAt=Fr)}}var v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function A(z,te,Ce,je,Ue,Rt){this.indented=z,this.column=te,this.type=Ce,this.prev=Ue,this.info=Rt,je!=null&&(this.align=je)}function w(z,te){for(var Ce=z.localVars;Ce;Ce=Ce.next)if(Ce.name==te)return!0;for(var je=z.context;je;je=je.prev)for(var Ce=je.vars;Ce;Ce=Ce.next)if(Ce.name==te)return!0}function x(z,te,Ce,je,Ue){var Rt=z.cc;for(E.state=z,E.stream=Ue,E.marked=null,E.cc=Rt,E.style=te,z.lexical.hasOwnProperty("align")||(z.lexical.align=!0);;){var Fr=Rt.length?Rt.pop():n?xe:U;if(Fr(Ce,je)){for(;Rt.length&&Rt[Rt.length-1].lex;)Rt.pop()();return E.marked?E.marked:Ce=="variable"&&w(z,je)?"variableName.local":te}}}var E={state:null,column:null,marked:null,cc:null};function T(){for(var z=arguments.length-1;z>=0;z--)E.cc.push(arguments[z])}function _(){return T.apply(null,arguments),!0}function C(z,te){for(var Ce=te;Ce;Ce=Ce.next)if(Ce.name==z)return!0;return!1}function N(z){var te=E.state;if(E.marked="def",te.context){if(te.lexical.info=="var"&&te.context&&te.context.block){var Ce=I(z,te.context);if(Ce!=null){te.context=Ce;return}}else if(!C(z,te.localVars)){te.localVars=new V(z,te.localVars);return}}t.globalVars&&!C(z,te.globalVars)&&(te.globalVars=new V(z,te.globalVars))}function I(z,te){if(te)if(te.block){var Ce=I(z,te.prev);return Ce?Ce==te.prev?te:new L(Ce,te.vars,!0):null}else return C(z,te.vars)?te:new L(te.prev,new V(z,te.vars),!1);else return null}function R(z){return z=="public"||z=="private"||z=="protected"||z=="abstract"||z=="readonly"}function L(z,te,Ce){this.prev=z,this.vars=te,this.block=Ce}function V(z,te){this.name=z,this.next=te}var P=new V("this",new V("arguments",null));function k(){E.state.context=new L(E.state.context,E.state.localVars,!1),E.state.localVars=P}function W(){E.state.context=new L(E.state.context,E.state.localVars,!0),E.state.localVars=null}k.lex=W.lex=!0;function O(){E.state.localVars=E.state.context.vars,E.state.context=E.state.context.prev}O.lex=!0;function Q(z,te){var Ce=function(){var je=E.state,Ue=je.indented;if(je.lexical.type=="stat")Ue=je.lexical.indented;else for(var Rt=je.lexical;Rt&&Rt.type==")"&&Rt.align;Rt=Rt.prev)Ue=Rt.indented;je.lexical=new A(Ue,E.stream.column(),z,null,je.lexical,te)};return Ce.lex=!0,Ce}function ne(){var z=E.state;z.lexical.prev&&(z.lexical.type==")"&&(z.indented=z.lexical.indented),z.lexical=z.lexical.prev)}ne.lex=!0;function X(z){function te(Ce){return Ce==z?_():z==";"||Ce=="}"||Ce==")"||Ce=="]"?T():_(te)}return te}function U(z,te){return z=="var"?_(Q("vardef",te),hr,X(";"),ne):z=="keyword a"?_(Q("form"),be,U,ne):z=="keyword b"?_(Q("form"),U,ne):z=="keyword d"?E.stream.match(/^\s*$/,!1)?_():_(Q("stat"),Z,X(";"),ne):z=="debugger"?_(X(";")):z=="{"?_(Q("}"),W,Wt,ne,O):z==";"?_():z=="if"?(E.state.lexical.info=="else"&&E.state.cc[E.state.cc.length-1]==ne&&E.state.cc.pop()(),_(Q("form"),be,U,ne,lr)):z=="function"?_(Ca):z=="for"?_(Q("form"),W,Is,U,O,ne):z=="class"||i&&te=="interface"?(E.marked="keyword",_(Q("form",z=="class"?z:te),nn,ne)):z=="variable"?i&&te=="declare"?(E.marked="keyword",_(U)):i&&(te=="module"||te=="enum"||te=="type")&&E.stream.match(/^\s*\w/,!1)?(E.marked="keyword",te=="enum"?_(dl):te=="type"?_(_n,X("operator"),pe,X(";")):_(Q("form"),Ve,X("{"),Q("}"),Wt,ne,ne)):i&&te=="namespace"?(E.marked="keyword",_(Q("form"),xe,U,ne)):i&&te=="abstract"?(E.marked="keyword",_(U)):_(Q("stat"),De):z=="switch"?_(Q("form"),be,X("{"),Q("}","switch"),W,Wt,ne,ne,O):z=="case"?_(xe,X(":")):z=="default"?_(X(":")):z=="catch"?_(Q("form"),k,fe,U,ne,O):z=="export"?_(Q("stat"),Wc,ne):z=="import"?_(Q("stat"),Ho,ne):z=="async"?_(U):te=="@"?_(xe,U):T(Q("stat"),xe,X(";"),ne)}function fe(z){if(z=="(")return _($n,X(")"))}function xe(z,te){return ee(z,te,!1)}function oe(z,te){return ee(z,te,!0)}function be(z){return z!="("?T():_(Q(")"),Z,X(")"),ne)}function ee(z,te,Ce){if(E.state.fatArrowAt==E.stream.start){var je=Ce?G:we;if(z=="(")return _(k,Q(")"),qe($n,")"),ne,X("=>"),je,O);if(z=="variable")return T(k,Ve,X("=>"),je,O)}var Ue=Ce?me:re;return v.hasOwnProperty(z)?_(Ue):z=="function"?_(Ca,Ue):z=="class"||i&&te=="interface"?(E.marked="keyword",_(Q("form"),Li,ne)):z=="keyword c"||z=="async"?_(Ce?oe:xe):z=="("?_(Q(")"),Z,X(")"),ne,Ue):z=="operator"||z=="spread"?_(Ce?oe:xe):z=="["?_(Q("]"),ml,ne,Ue):z=="{"?rr(Oe,"}",null,Ue):z=="quasi"?T(ce,Ue):z=="new"?_(J(Ce)):_()}function Z(z){return z.match(/[;\}\)\],]/)?T():T(xe)}function re(z,te){return z==","?_(Z):me(z,te,!1)}function me(z,te,Ce){var je=Ce==!1?re:me,Ue=Ce==!1?xe:oe;if(z=="=>")return _(k,Ce?G:we,O);if(z=="operator")return/\+\+|--/.test(te)||i&&te=="!"?_(je):i&&te=="<"&&E.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?_(Q(">"),qe(pe,">"),ne,je):te=="?"?_(xe,X(":"),Ue):_(Ue);if(z=="quasi")return T(ce,je);if(z!=";"){if(z=="(")return rr(oe,")","call",je);if(z==".")return _(Ie,je);if(z=="[")return _(Q("]"),Z,X("]"),ne,je);if(i&&te=="as")return E.marked="keyword",_(pe,je);if(z=="regexp")return E.state.lastType=E.marked="operator",E.stream.backUp(E.stream.pos-E.stream.start-1),_(Ue)}}function ce(z,te){return z!="quasi"?T():te.slice(te.length-2)!="${"?_(ce):_(Z,Ae)}function Ae(z){if(z=="}")return E.marked="string.special",E.state.tokenize=b,_(ce)}function we(z){return D(E.stream,E.state),T(z=="{"?U:xe)}function G(z){return D(E.stream,E.state),T(z=="{"?U:oe)}function J(z){return function(te){return te=="."?_(z?ye:ge):te=="variable"&&i?_(Me,z?me:re):T(z?oe:xe)}}function ge(z,te){if(te=="target")return E.marked="keyword",_(re)}function ye(z,te){if(te=="target")return E.marked="keyword",_(me)}function De(z){return z==":"?_(ne,U):T(re,X(";"),ne)}function Ie(z){if(z=="variable")return E.marked="property",_()}function Oe(z,te){if(z=="async")return E.marked="property",_(Oe);if(z=="variable"||E.style=="keyword"){if(E.marked="property",te=="get"||te=="set")return _(Je);var Ce;return i&&E.state.fatArrowAt==E.stream.start&&(Ce=E.stream.match(/^\s*:\s*/,!1))&&(E.state.fatArrowAt=E.stream.pos+Ce[0].length),_(wt)}else{if(z=="number"||z=="string")return E.marked=r?"property":E.style+" property",_(wt);if(z=="jsonld-keyword")return _(wt);if(i&&R(te))return E.marked="keyword",_(Oe);if(z=="[")return _(xe,pr,X("]"),wt);if(z=="spread")return _(oe,wt);if(te=="*")return E.marked="keyword",_(Oe);if(z==":")return T(wt)}}function Je(z){return z!="variable"?T(wt):(E.marked="property",_(Ca))}function wt(z){if(z==":")return _(oe);if(z=="(")return T(Ca)}function qe(z,te,Ce){function je(Ue,Rt){if(Ce?Ce.indexOf(Ue)>-1:Ue==","){var Fr=E.state.lexical;return Fr.info=="call"&&(Fr.pos=(Fr.pos||0)+1),_(function(Mn,Cn){return Mn==te||Cn==te?T():T(z)},je)}return Ue==te||Rt==te?_():Ce&&Ce.indexOf(";")>-1?T(z):_(X(te))}return function(Ue,Rt){return Ue==te||Rt==te?_():T(z,je)}}function rr(z,te,Ce){for(var je=3;je"),pe);if(z=="quasi")return T(Ge,ie)}function Ne(z){if(z=="=>")return _(pe)}function Be(z){return z.match(/[\}\)\]]/)?_():z==","||z==";"?_(Be):T(_e,Be)}function _e(z,te){if(z=="variable"||E.style=="keyword")return E.marked="property",_(_e);if(te=="?"||z=="number"||z=="string")return _(_e);if(z==":")return _(pe);if(z=="[")return _(X("variable"),Pe,X("]"),_e);if(z=="(")return T(ia,_e);if(!z.match(/[;\}\)\],]/))return _()}function Ge(z,te){return z!="quasi"?T():te.slice(te.length-2)!="${"?_(Ge):_(pe,F)}function F(z){if(z=="}")return E.marked="string.special",E.state.tokenize=b,_(Ge)}function Y(z,te){return z=="variable"&&E.stream.match(/^\s*[?:]/,!1)||te=="?"?_(Y):z==":"?_(pe):z=="spread"?_(Y):T(pe)}function ie(z,te){if(te=="<")return _(Q(">"),qe(pe,">"),ne,ie);if(te=="|"||z=="."||te=="&")return _(pe);if(z=="[")return _(pe,X("]"),ie);if(te=="extends"||te=="implements")return E.marked="keyword",_(pe);if(te=="?")return _(pe,X(":"),pe)}function Me(z,te){if(te=="<")return _(Q(">"),qe(pe,">"),ne,ie)}function Qe(){return T(pe,gt)}function gt(z,te){if(te=="=")return _(pe)}function hr(z,te){return te=="enum"?(E.marked="keyword",_(dl)):T(Ve,pr,Xr,Pn)}function Ve(z,te){if(i&&R(te))return E.marked="keyword",_(Ve);if(z=="variable")return N(te),_();if(z=="spread")return _(Ve);if(z=="[")return rr(Si,"]");if(z=="{")return rr(si,"}")}function si(z,te){return z=="variable"&&!E.stream.match(/^\s*:/,!1)?(N(te),_(Xr)):(z=="variable"&&(E.marked="property"),z=="spread"?_(Ve):z=="}"?T():z=="["?_(xe,X("]"),X(":"),si):_(X(":"),Ve,Xr))}function Si(){return T(Ve,Xr)}function Xr(z,te){if(te=="=")return _(oe)}function Pn(z){if(z==",")return _(hr)}function lr(z,te){if(z=="keyword b"&&te=="else")return _(Q("form","else"),U,ne)}function Is(z,te){if(te=="await")return _(Is);if(z=="(")return _(Q(")"),Nr,ne)}function Nr(z){return z=="var"?_(hr,Ri):z=="variable"?_(Ri):T(Ri)}function Ri(z,te){return z==")"?_():z==";"?_(Ri):te=="in"||te=="of"?(E.marked="keyword",_(xe,Ri)):T(xe,Ri)}function Ca(z,te){if(te=="*")return E.marked="keyword",_(Ca);if(z=="variable")return N(te),_(Ca);if(z=="(")return _(k,Q(")"),qe($n,")"),ne,j,U,O);if(i&&te=="<")return _(Q(">"),qe(Qe,">"),ne,Ca)}function ia(z,te){if(te=="*")return E.marked="keyword",_(ia);if(z=="variable")return N(te),_(ia);if(z=="(")return _(k,Q(")"),qe($n,")"),ne,j,O);if(i&&te=="<")return _(Q(">"),qe(Qe,">"),ne,ia)}function _n(z,te){if(z=="keyword"||z=="variable")return E.marked="type",_(_n);if(te=="<")return _(Q(">"),qe(Qe,">"),ne)}function $n(z,te){return te=="@"&&_(xe,$n),z=="spread"?_($n):i&&R(te)?(E.marked="keyword",_($n)):i&&z=="this"?_(pr,Xr):T(Ve,pr,Xr)}function Li(z,te){return z=="variable"?nn(z,te):Xn(z,te)}function nn(z,te){if(z=="variable")return N(te),_(Xn)}function Xn(z,te){if(te=="<")return _(Q(">"),qe(Qe,">"),ne,Xn);if(te=="extends"||te=="implements"||i&&z==",")return te=="implements"&&(E.marked="keyword"),_(i?pe:xe,Xn);if(z=="{")return _(Q("}"),An,ne)}function An(z,te){if(z=="async"||z=="variable"&&(te=="static"||te=="get"||te=="set"||i&&R(te))&&E.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return E.marked="keyword",_(An);if(z=="variable"||E.style=="keyword")return E.marked="property",_(Vi,An);if(z=="number"||z=="string")return _(Vi,An);if(z=="[")return _(xe,pr,X("]"),Vi,An);if(te=="*")return E.marked="keyword",_(An);if(i&&z=="(")return T(ia,An);if(z==";"||z==",")return _(An);if(z=="}")return _();if(te=="@")return _(xe,An)}function Vi(z,te){if(te=="!"||te=="?")return _(Vi);if(z==":")return _(pe,Xr);if(te=="=")return _(oe);var Ce=E.state.lexical.prev,je=Ce&&Ce.info=="interface";return T(je?ia:Ca)}function Wc(z,te){return te=="*"?(E.marked="keyword",_(Ka,X(";"))):te=="default"?(E.marked="keyword",_(xe,X(";"))):z=="{"?_(qe(fl,"}"),Ka,X(";")):T(U)}function fl(z,te){if(te=="as")return E.marked="keyword",_(X("variable"));if(z=="variable")return T(oe,fl)}function Ho(z){return z=="string"?_():z=="("?T(xe):z=="."?T(re):T(Go,pl,Ka)}function Go(z,te){return z=="{"?rr(Go,"}"):(z=="variable"&&N(te),te=="*"&&(E.marked="keyword"),_(wo))}function pl(z){if(z==",")return _(Go,pl)}function wo(z,te){if(te=="as")return E.marked="keyword",_(Go)}function Ka(z,te){if(te=="from")return E.marked="keyword",_(xe)}function ml(z){return z=="]"?_():T(qe(oe,"]"))}function dl(){return T(Q("form"),Ve,X("{"),Q("}"),qe(Yc,"}"),ne,ne)}function Yc(){return T(Ve,Xr)}function jc(z,te){return z.lastType=="operator"||z.lastType==","||s.test(te.charAt(0))||/[,.]/.test(te.charAt(0))}function Qr(z,te,Ce){return te.tokenize==p&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(te.lastType)||te.lastType=="quasi"&&/\{\s*$/.test(z.string.slice(0,z.pos-(Ce||0)))}return{name:t.name,startState:function(z){var te={tokenize:p,lastType:"sof",cc:[],lexical:new A(-z,0,"block",!1),localVars:t.localVars,context:t.localVars&&new L(null,null,!1),indented:0};return t.globalVars&&typeof t.globalVars=="object"&&(te.globalVars=t.globalVars),te},token:function(z,te){if(z.sol()&&(te.lexical.hasOwnProperty("align")||(te.lexical.align=!1),te.indented=z.indentation(),D(z,te)),te.tokenize!=h&&z.eatSpace())return null;var Ce=te.tokenize(z,te);return c=="comment"?Ce:(te.lastType=c=="operator"&&(f=="++"||f=="--")?"incdec":c,x(te,Ce,c,f,z))},indent:function(z,te,Ce){if(z.tokenize==h||z.tokenize==b)return null;if(z.tokenize!=p)return 0;var je=te&&te.charAt(0),Ue=z.lexical,Rt;if(!/^\s*else\b/.test(te))for(var Fr=z.cc.length-1;Fr>=0;--Fr){var Mn=z.cc[Fr];if(Mn==ne)Ue=Ue.prev;else if(Mn!=lr&&Mn!=O)break}for(;(Ue.type=="stat"||Ue.type=="form")&&(je=="}"||(Rt=z.cc[z.cc.length-1])&&(Rt==re||Rt==me)&&!/^[,\.=+\-*:?[\(]/.test(te));)Ue=Ue.prev;e&&Ue.type==")"&&Ue.prev.type=="stat"&&(Ue=Ue.prev);var Cn=Ue.type,Wo=je==Cn;return Cn=="vardef"?Ue.indented+(z.lastType=="operator"||z.lastType==","?Ue.info.length+1:0):Cn=="form"&&je=="{"?Ue.indented:Cn=="form"?Ue.indented+Ce.unit:Cn=="stat"?Ue.indented+(jc(z,te)?e||Ce.unit:0):Ue.info=="switch"&&!Wo&&t.doubleIndentSwitch!=!1?Ue.indented+(/^(?:case|default)\b/.test(te)?Ce.unit:2*Ce.unit):Ue.align?Ue.column+(Wo?0:1):Ue.indented+(Wo?0:Ce.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:n?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}var lp=xv({name:"javascript"}),vat=xv({name:"json",json:!0}),yat=xv({name:"json",jsonld:!0}),bat=xv({name:"typescript",typescript:!0});var DK=["true","false","on","off","yes","no"],SK=new RegExp("\\b(("+DK.join(")|(")+"))$","i"),cp={name:"yaml",token:function(t,e){var r=t.peek(),n=e.escaped;if(e.escaped=!1,r=="#"&&(t.pos==0||/\s/.test(t.string.charAt(t.pos-1))))return t.skipToEnd(),"comment";if(t.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(e.literal&&t.indentation()>e.keyCol)return t.skipToEnd(),"string";if(e.literal&&(e.literal=!1),t.sol()){if(e.keyCol=0,e.pair=!1,e.pairStart=!1,t.match("---")||t.match("..."))return"def";if(t.match(/^\s*-\s+/))return"meta"}if(t.match(/^(\{|\}|\[|\])/))return r=="{"?e.inlinePairs++:r=="}"?e.inlinePairs--:r=="["?e.inlineList++:e.inlineList--,"meta";if(e.inlineList>0&&!n&&r==",")return t.next(),"meta";if(e.inlinePairs>0&&!n&&r==",")return e.keyCol=0,e.pair=!1,e.pairStart=!1,t.next(),"meta";if(e.pairStart){if(t.match(/^\s*(\||\>)\s*/))return e.literal=!0,"meta";if(t.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable";if(e.inlinePairs==0&&t.match(/^\s*-?[0-9\.\,]+\s?$/)||e.inlinePairs>0&&t.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(t.match(SK))return"keyword"}return!e.pair&&t.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(e.pair=!0,e.keyCol=t.indentation(),"atom"):e.pair&&t.match(/^:\s*/)?(e.pairStart=!0,"meta"):(e.pairStart=!1,e.escaped=r=="\\",t.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},languageData:{commentTokens:{line:"#"}}};function c4(t){if(!t.getSettings().enableSyntaxHighlighting)return;window.CodeMirror.defineMode("meta-bind-button",r=>({startState:()=>cp.startState?.(4),blankLine:i=>cp.blankLine?.(i,4),copyState:i=>cp.startState?.(4),token:(i,a)=>`line-HyperMD-codeblock ${cp.token?.(i,a)}`})),window.CodeMirror.defineMode("meta-bind-js-view",r=>({startState:()=>lp.startState?.(4),blankLine:i=>lp.blankLine?.(i,4),copyState:i=>lp.startState?.(4),token:(i,a)=>`line-HyperMD-codeblock ${lp.token?.(i,a)}`}));let e=/^\s*(```+|~~~+)/;window.CodeMirror.defineMode("meta-bind",r=>({startState:()=>({str:void 0,mdrcType:void 0,highlights:void 0,line:1}),token:(i,a)=>{if(a.str===void 0){let l=[i.string],u=1,c=i.lookAhead(u);for(;c!==void 0&&!e.test(c)&&(l.push(c),u+=1,c=i.lookAhead(u),!(u>100)););a.str=l.filter(m=>m.trim()!=="").join(` +`);let f=t.api.isInlineFieldDeclarationAndGetType(a.str.trim());f===void 0?a.highlights=new ts(a.str,[]):(a.fieldType=f,a.highlights=t.syntaxHighlighting.highlight(a.str,a.fieldType,!0))}let s=a.highlights.getHighlights().filter(l=>l.range.from.line===a.line).find(l=>l.range.from.column===i.pos+1);return s===void 0?(i.next(),i.eol()&&(a.line+=1),"line-HyperMD-codeblock"):(i.eatWhile(()=>i.pos+1=r&&i.from<=n)return!0;return!1}static checkRangeOverlap(e,r,n,i){return e<=i&&n<=r}static getContent(e,r,n){return e.sliceDoc(r,n)}static getCurrentFile(e){return e.state.field(f4.editorInfoField).file}static existsDecorationBetween(e,r,n){let i=!1;return e.between(r,n,()=>{i=!0}),i}static existsDecorationOfTypeBetween(e,r,n,i){let a=!1;return e.between(n,i,(o,s,l)=>{l.spec.mb_widgetType===r&&(a=!0)}),a}};function p4(t){return sl.ViewPlugin.fromClass(class{constructor(e){this.component=new wv.Component,this.component.load(),this.decorations=this.renderWidgets(e)??sl.Decoration.none,e.dom.addEventListener("click",r=>this.handleClick(r))}handleClick(e){if(e.target instanceof HTMLElement){let r=e.target;for(;r!==null;){if(r.classList.contains("mb-input")){e.stopPropagation();break}r=r.parentElement}}}isLivePreview(e){return e.field(wv.editorLivePreviewField)}update(e){this.decorations=this.decorations.map(e.changes),this.updateWidgets(e.view)}updateWidgets(e){this.decorations=this.decorations.update({filter:(r,n,i)=>xA.anyMatch(e.visibleRanges,o=>Cs.checkRangeOverlap(r,n,o.from,o.to))?!0:(i.spec.mb_unload?.(),!1)});for(let{from:r,to:n}of e.visibleRanges)(0,dw.syntaxTree)(e.state).iterate({from:r,to:n,enter:i=>{let a=i.node,o=this.getRenderInfo(e,a);o.widgetType===void 0||o.content===void 0||(o.shouldRender?(this.removeDecoration(a,"field"),this.addDecoration(a,e,"field",o.content,o.widgetType)):o.shouldHighlight?(this.removeDecoration(a,"highlight"),this.addDecoration(a,e,"highlight",o.content,o.widgetType)):this.removeDecoration(a))}})}removeDecoration(e,r){this.decorations.between(e.from-1,e.to+1,(n,i,a)=>{this.decorations=this.decorations.update({filterFrom:n,filterTo:i,filter:(o,s,l)=>{let u=l.spec;return r&&u.mb_widgetType===r?!0:(u.mb_unload?.(),!1)}})})}addDecoration(e,r,n,i,a){let o=e.from-1,s=e.to+1;if(Cs.existsDecorationOfTypeBetween(this.decorations,n,o,s))return;let l=Cs.getCurrentFile(r);if(!l)return;let u=this.renderWidget(e,a,n,i,l),c=Array.isArray(u)?u:[u];c.length!==0&&(this.decorations=this.decorations.update({add:c}))}getRenderInfo(e,r){let n=new Set(r.type.name?.split("_"));if(n.has("inline-code")&&!n.has("formatting")){let i=Cs.checkSelectionOverlap(e.state.selection,r.from-1,r.to+1),a=this.readNode(e,r.from,r.to),o=this.isLivePreview(e.state),s=!i&&o;return{shouldRender:s,shouldHighlight:!s&&t.getSettings().enableSyntaxHighlighting,content:a.content,widgetType:a.widgetType}}return{shouldRender:!1,shouldHighlight:!1,content:void 0,widgetType:void 0}}readNode(e,r,n){let i=Cs.getContent(e.state,r,n);return{content:i,widgetType:t.api.isInlineFieldDeclarationAndGetType(i)}}renderWidgets(e){let r=Cs.getCurrentFile(e);if(!r)return;let n=[];for(let i of e.visibleRanges)(0,dw.syntaxTree)(e.state).iterate({from:i.from,to:i.to,enter:a=>{let o=a.node,s=this.getRenderInfo(e,o);if(!s.widgetType||!s.content)return;let l;s.shouldRender&&(l=this.renderWidget(o,s.widgetType,"field",s.content,r)),s.shouldHighlight&&(l=this.renderWidget(o,s.widgetType,"highlight",s.content,r)),l&&(Array.isArray(l)?n.push(...l):n.push(l))}});return sl.Decoration.set(n,!0)}renderWidget(e,r,n,i,a){if(n==="field"){let o=t.api.constructMDRCWidget(r,i,a.path,this.component);return sl.Decoration.replace({widget:o,mb_widgetType:"field",mb_unload:()=>{o.renderChild?.unload()}}).range(e.from-1,e.to+1)}else return t.syntaxHighlighting.highlight(i,r,!1).getHighlights().map(s=>sl.Decoration.mark({class:`mb-highlight-${s.tokenClass}`}).range(e.from+s.range.from.index,e.from+s.range.to.index))}destroy(){this.component.unload()}},{decorations:e=>e.decorations})}var m4=require("obsidian");var fp=Tr(oa()),pp=Tr(qi());var EK=pp.P.sequenceMap((t,e,r,n)=>{let i=parseInt(t),a=parseInt(e),o=parseInt(r);return new Qa(i,a,o,n)},fp.P_UTILS.digits().skip(pp.P.string(".")),fp.P_UTILS.digits().skip(pp.P.string(".")),fp.P_UTILS.digits(),pp.P.string("-").then(fp.P_UTILS.remaining()).optional()),Qa=class t{constructor(e,r,n,i){this.major=e,this.minor=r,this.patch=n,this.prerelease=i}static fromString(e){return on(EK,e)}static lessThan(e,r){return e.majorr.major?!1:e.minorr.minor?!1:e.patchr.patch||e.prerelease===void 0?!1:r.prerelease===void 0?!0:e.prereleasen.pluginId===e);if(r===void 0)throw new tf({errorLevel:"CRITICAL",effect:"Dependency violation detected",cause:`Attempted to access dependency ${e} which is not a listed dependency. Please report this error.`});return r}getPlugin(e){return this.mb.app.plugins.getPlugin(e)}throwPluginNotFound(e){this.throwDependencyError(`Plugin ${e} is required, but not installed. Please install the plugin.`)}throwDependencyError(e){throw new m4.Notice(`meta-bind | Dependency Error: ${e}`,0),new tf({errorLevel:"ERROR",effect:"Dependency violation detected",cause:e})}checkDependencyVersion(e,r){Qa.lessThan(r,e.minVersion)&&this.throwDependencyError(`Plugin ${e.pluginId} is outdated. Required version is at least ${e.minVersion}, installed version is ${r}. Please update the plugin.`),e.maxVersion!==void 0&&(Qa.greaterThan(r,e.maxVersion)||Qa.equals(r,e.maxVersion))&&this.throwDependencyError(`Plugin ${e.pluginId} is too new. Required version is lower than ${e.maxVersion}, installed version is ${r}. Please downgrade the plugin.`)}checkDependency(e){let r=this.getDependency(e),n=this.getPlugin(e);if(n==null)throw this.throwPluginNotFound(e),Error("unreachable");let i=Qa.fromString(n.manifest.version);return this.checkDependencyVersion(r,i),n}};var y4=require("obsidian");var d4={date:"date",datePicker:"datePicker",dateTime:"dateTime",editor:"editor",imageSuggester:'imageSuggester(optionQuery(""))',imageListSuggester:'imageListSuggester(optionQuery(""))',inlineList:"inlineList",inlineListSuggester:"inlineListSuggester(option(apple), option(banana), option(lemon))",inlineSelect:"inlineSelect(option(apple), option(banana), option(lemon))",list:"list",listSuggester:"listSuggester(option(apple), option(banana), option(lemon))",multiSelect:"multiSelect(option(apple), option(banana), option(lemon))",number:"number",progressBar:"progressBar",select:"select(option(apple), option(banana), option(lemon))",slider:"slider(addLabels)",suggester:"suggester(option(apple), option(banana), option(lemon))",text:"text",textArea:"textArea",time:"time",toggle:"toggle",invalid:""},hw={image:[{title:"Image",declaration:"VIEW[{globalMemory^MB_VF_image_example}][image]",display:"VIEW[{imageExampleProperty}][image]",inputField:'INPUT[imageSuggester(optionQuery("")):globalMemory^MB_VF_image_example]'}],link:[{title:"Link",declaration:"VIEW[{globalMemory^MB_VF_link_example}][link]",display:"VIEW[{linkExampleProperty}][link]",inputField:'INPUT[suggester(optionQuery("")):globalMemory^MB_VF_link_example]'}],math:[{title:"Math",declaration:"VIEW[{globalMemory^MB_VF_math_example} + 2][math]",display:"VIEW[{mathExampleProperty} + 2][math]",inputField:"INPUT[number:globalMemory^MB_VF_math_example]"}],text:[{title:"Text",declaration:"VIEW[some text {globalMemory^MB_VF_text_example}][text]",display:"VIEW[some text {textExampleProperty}][text]",inputField:"INPUT[text:globalMemory^MB_VF_text_example]"},{title:"Markdown",declaration:"VIEW[**some markdown** {globalMemory^MB_VF_text_markdown_example}][text(renderMarkdown)]",display:"VIEW[**some markdown** {markdownExampleProperty}][text(renderMarkdown)]",inputField:"INPUT[text:globalMemory^MB_VF_text_markdown_example]"}],invalid:[]};function h4(t){let e=[];for(let[r,n]of Object.entries(d4)){if(n==="")continue;let i=t.inputFieldParser.fromString(`INPUT[${n}]`),a=t.inputFieldParser.fromSimpleDeclaration({inputFieldType:void 0,templateName:void 0,bindTarget:void 0,arguments:[{name:"showcase",value:["true"]},{name:"title",value:[r]}]});i=t.inputFieldParser.merge(i,a),i.declarationString=`INPUT[${n}]`;let o=t.inputFieldParser.validate(i,"",void 0);e.push([r,o])}return e}function g4(t){let e=[];for(let[r,n]of Object.entries(d4)){if(n==="")continue;let i=r,a="";wm[i].allowInline?a=`\`INPUT[${n}:exampleProperty]\``:a=` +\`\`\`meta-bind +INPUT[${n}:exampleProperty] +\`\`\` +`,e.push([i,a])}return e.sort((r,n)=>r[0].localeCompare(n[0])),e}function v4(t){let e=[];for(let r of Object.values(hw))for(let n of r)e.push([n.title,`\`${n.display}\``]);return e.sort((r,n)=>r[0].localeCompare(n[0])),e}function b4(t,e,r){let n=g4(r),i=v4(r);t.addItem(a=>{a.setTitle("Meta Bind"),a.setIcon("blocks");let o=a.setSubmenu();o.addItem(s=>{s.setTitle("Input Field");let l=s.setSubmenu();for(let[u,c]of n)l.addItem(f=>{f.setTitle(u),f.onClick(()=>Av(e,c))})}),o.addItem(s=>{s.setTitle("View Field");let l=s.setSubmenu();for(let[u,c]of i)l.addItem(f=>{f.setTitle(u),f.onClick(()=>Av(e,c))})}),o.addItem(s=>{s.setTitle("Inline Button"),s.onClick(()=>{Av(e,"`BUTTON[example-id]`")})}),o.addItem(s=>{s.setTitle("Button"),s.onClick(()=>{r.internal.openButtonBuilderModal({onOkay:l=>{Av(e,`\`\`\`meta-bind-button +${(0,y4.stringifyYaml)(l)} +\`\`\``)},submitText:"Insert"})})})})}function Av(t,e){t.replaceSelection(e)}var L4=require("obsidian");var kn=class extends vi{constructor(e,r,n){super(),this.mb=e,this.filePath=n,this.uuid=r}getUuid(){return this.uuid}getFilePath(){return this.filePath}onMount(e){this.mb.mountableManager.registerMountable(this)}onUnmount(e){this.mb.mountableManager.unregisterMountable(this)}};var Vc=class{constructor(e){this.scope=e}};var Ea=Bt()(he.string()),Uc=Bt()(he.nativeEnum(Ti)),mp=Bt()(he.nativeEnum(_l)),w4=Bt()(he.nativeEnum(Ls)),_4=Bt()(he.instanceof(HTMLElement)),qc=Bt()(he.instanceof(Vc)),rot=Bt()(he.instanceof(hn)),not=Bt()(he.function().args().returns(he.void())),iot=Bt()(he.instanceof(kn)),A4=Bt()(he.instanceof(vi)),D4=Bt()(he.instanceof($s)),x4=Bt()(he.object({index:he.number(),line:he.number(),column:he.number()})),TK=Bt()(he.object({from:x4,to:x4})),cu=Bt()(he.object({value:he.string(),position:TK.optional()})),S4=Bt()(he.object({name:cu,value:cu.array()})),MK=Bt()(he.object({type:he.nativeEnum(bu),prop:cu})),gw=Bt()(he.object({storageType:cu.optional(),storagePath:cu.optional(),storageProp:MK.array(),listenToChildren:he.boolean()})),aot=Bt()(he.object({declarationString:he.string().optional(),inputFieldType:cu.optional(),templateName:cu.optional(),bindTarget:gw.optional(),arguments:S4.array(),errorCollection:he.instanceof(er)})),oot=Bt()(he.object({declarationString:he.string().optional(),templateDeclaration:he.array(he.union([he.string(),gw])).optional(),viewFieldType:cu.optional(),arguments:S4.array(),writeToBindTarget:gw.optional(),errorCollection:he.instanceof(er)})),Sa=Bt()(he.object({storageType:he.string(),storagePath:he.string(),storageProp:he.instanceof(js),listenToChildren:he.boolean()})),E4=Bt()(he.object({name:he.string(),value:he.string().array()})),sot=Bt()(he.object({type:he.nativeEnum(bu),prop:he.string()})),T4=Bt()(he.object({inputFieldType:w4.optional(),templateName:he.string().optional(),bindTarget:Sa.optional(),arguments:E4.array().optional()})),M4=Bt()(he.object({viewFieldType:w4.optional(),templateDeclaration:he.union([he.string(),Sa]).array().optional(),arguments:E4.array().optional(),writeToBindTarget:Sa.optional()})),CK=Bt()(he.object({bindTarget:Sa,name:he.string()})),NK=Bt()(he.object({bindTargetMappings:CK.array(),writeToBindTarget:Sa.optional(),code:he.string()})),FK=Bt()(he.object({referencedButtonIds:he.string().array()})),C4=Bt()(he.object({renderChildType:Uc,declaration:he.union([he.string(),T4]),scope:qc.optional()})),N4=Bt()(he.object({renderChildType:Uc,declaration:he.union([he.string(),M4]),scope:qc.optional()})),F4=Bt()(he.object({declaration:he.union([he.string(),NK])})),I4=Bt()(he.object({bindTarget:Sa,tableHead:he.string().array(),columns:he.array(he.union([T4,M4,he.string()]))})),B4=Bt()(he.object({renderChildType:Uc,declaration:he.union([he.string(),FK]),position:D4.optional()})),k4=Bt()(he.object({declaration:he.union([he.string(),lc]),position:D4.optional(),isPreview:he.boolean()})),P4=Bt()(he.object({depth:he.number(),content:he.string()}));var BK=(t,e)=>e(t,"left"),kK=se("");function dp(t,e){Se(e,!0);let r=at(e,"variant",19,()=>"default"),n=at(e,"disabled",7,!1),i=at(e,"tooltip",3,""),a=at(e,"label",3,""),o=at(e,"icon",3,""),s=at(e,"cssStyle",3,""),l=at(e,"backgroundImage",3,""),u=at(e,"error",3,!1),c=at(e,"onclick",3,()=>{}),f=at(e,"onauxclick",3,()=>{});async function m(v,A){if(!n()){n(!0);try{A==="left"?await c()(v):A==="middle"&&await f()(v)}catch(w){console.warn("failed to run button component on click",w)}finally{n(!1)}}}var p=kK();let d,h;p.__click=[BK,m];var b=ve(p);{var y=v=>{Or(v,{get mb(){return e.mb},get iconName(){return o()}})};et(b,v=>{o()&&v(y)})}var D=ue(b);le(p),Le(v=>{d=Vr(p,1,"mb-button-inner",null,d,v),h=jl(p,s(),h,{"background-image":l()?`url("${l()}")`:void 0}),rt(p,"aria-label",i()),p.disabled=n(),vt(D,` ${a()??""}`)},[()=>({"mod-cta":r()==="primary","mod-warning":r()==="destructive","mod-plain":r()==="plain",disabled:n(),"mb-error":u()})]),gi("auxclick",p,v=>m(v,"middle")),K(t,p),Ee()}Mt(["click"]);var fu=class extends vi{constructor(e,r,n,i,a,o,s){super(),this.mb=e,this.config=r,this.filePath=n,this.isInline=i==="inline",this.position=a,this.isInGroup=o,this.isPreview=s}onMount(e){lt.empty(e),lt.removeAllClasses(e),lt.addClasses(e,["mb-button",this.isInline?"mb-button-inline":"mb-button-block"]),!(!this.isInline&&!this.isPreview&&!this.isInGroup&&(this.config.id&&this.mb.buttonManager.addButton(this.filePath,this.config),this.config.hidden))&&(this.config.class&<.addClasses(e,this.config.class.split(" ").filter(r=>r!=="")),this.buttonComponent=Br(dp,{target:e,props:{mb:this.mb,icon:this.config.icon,variant:this.config.style,label:this.config.label,tooltip:Uy(this.config.tooltip)?this.config.tooltip:void 0,cssStyle:this.config.cssStyle,backgroundImage:Uy(this.config.backgroundImage)?this.mb.internal.imagePathToUri(this.config.backgroundImage):void 0,onclick:async r=>{await this.mb.buttonActionRunner.runButtonActions(this.config,this.filePath,this.getContext(),of.fromMouseEvent(r,"left"))},onauxclick:async r=>{await this.mb.buttonActionRunner.runButtonActions(this.config,this.filePath,this.getContext(),of.fromMouseEvent(r,"left"))}}}))}getContext(){return{position:this.position?.getPosition(),isInGroup:this.isInGroup,isInline:this.isInline}}onUnmount(){this.buttonComponent&&Dr(this.buttonComponent),!this.isInline&&!this.isPreview&&this.config?.id&&this.mb.buttonManager.removeButton(this.filePath,this.config.id)}};var Dv=class extends vi{constructor(e,r,n,i,a){super(),this.mb=e,this.referencedIds=r,this.filePath=n,this.renderChildType=i,this.notePosition=a}renderInitialButton(e,r){return lt.removeAllClasses(e),lt.addClasses(e,["mb-button",this.renderChildType==="inline"?"mb-button-inline":"mb-button-block"]),Br(dp,{target:e,props:{mb:this.mb,variant:"default",label:"Button ID not Found",tooltip:`No button with id '${r}' found`,error:!0,onclick:async()=>{}}})}onMount(e){lt.empty(e),lt.addClasses(e,["mb-button-group",this.renderChildType==="inline"?"mb-button-group-inline":"mb-button-group-block"]);for(let r of this.referencedIds){let n=lt.createElement(e,"span"),i=this.renderInitialButton(n,r),a,o=this.mb.buttonManager.registerButtonLoadListener(this.filePath,r,s=>{i&&Dr(i),i=void 0,a=new fu(this.mb,s,this.filePath,this.renderChildType,this.notePosition,!0,!1),a.mount(n)});this.registerUnmountCb(()=>{i&&Dr(i),i=void 0,a?.unmount(),o()})}}onUnmount(e){lt.empty(e)}};var Sv=class extends kn{constructor(e,r,n,i,a,o){super(e,r,n),this.declaration=i,this.errorCollection=new er(this.getUuid()),this.errorCollection.merge(i.errorCollection),this.renderChildType=a,this.position=o}onMount(e){if(super.onMount(e),lt.removeAllClasses(e),this.declaration.errorCollection.isEmpty())try{this.buttonField=new Dv(this.mb,this.declaration.referencedButtonIds,this.getFilePath(),this.renderChildType,this.position),this.buttonField.mount(e)}catch(r){this.errorCollection.add(r),this.renderErrorIndicator(e)}else this.renderErrorIndicator(e)}renderErrorIndicator(e){this.mb.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declaration.declarationString})}onUnmount(e){super.onUnmount(e),this.buttonField?.unmount(),ui(e,"inline button")}};var Ev=class extends kn{constructor(e,r,n,i,a,o){super(e,r,n),this.declaration=i,this.position=a,this.isPreview=o,this.errorCollection=new er(this.getUuid()),this.errorCollection.merge(i.errorCollection)}onMount(e){if(super.onMount(e),lt.removeAllClasses(e),this.declaration.config&&this.declaration.errorCollection.isEmpty())try{this.buttonField=new fu(this.mb,this.declaration.config,this.getFilePath(),"block",this.position,!1,this.isPreview),this.buttonField.mount(e)}catch(r){this.errorCollection.add(r),this.renderErrorIndicator(e)}else this.renderErrorIndicator(e)}renderErrorIndicator(e){this.mb.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declaration.declarationString})}onUnmount(e){super.onUnmount(e),this.buttonField?.unmount(),ui(e,"button")}};var Tv=class extends kn{constructor(e,r,n,i,a){super(e,r,n),this.depth=i,this.content=a}async parseContent(){let e=this.content.split(` +`).map(a=>a.trim()).filter(a=>a.length>0);if(e.length===0)return{content:""};if(e.length>1)return{error:"Embed may only contain one link"};let r=e[0],n=vn.parseLink(r);if(!n.internal)return{error:`${r} is not an internal link`};let i=this.mb.file.getPathByName(n.target,this.getFilePath());return i===void 0?{error:`"${n.target}" is not created yet`}:{content:await this.mb.file.read(i)}}exceedsMaxDepth(){return this.depth>_m}createEmbedMessage(e,r){e.createSpan({text:r,cls:"mb-embed-message"})}async renderContent(e){try{if(this.exceedsMaxDepth()){this.createEmbedMessage(e,"Max embed depth exceeded");return}let r=await this.parseContent();if(r.error){this.createEmbedMessage(e,r.error);return}if(r.content===void 0){this.createEmbedMessage(e,"Embed content not found");return}let n=r.content.replace(/(```+|~~~+)meta-bind-embed.*/g,`$1meta-bind-embed-internal-${this.depth+1}`);this.markdownUnloadCallback=await this.mb.internal.renderMarkdown(n,e,this.getFilePath())}catch(r){let n=new er("Embed");n.add(r),this.mb.internal.createErrorIndicator(e,{errorCollection:n})}}onMount(e){super.onMount(e),e.addClass("mb-embed"),this.renderContent(e)}onUnmount(e){super.onUnmount(e),e.removeClass("mb-embed"),this.markdownUnloadCallback?.(),ui(e,"Embed")}};var Mv=class extends kn{constructor(e,r,n){super(e,r,n)}onMount(e){super.onMount(e),lt.empty(e),lt.createElement(e,"span",{text:"[META_BIND] This folder has been excluded in the settings",class:"mb-error"})}onUnmount(e){super.onUnmount(e),lt.empty(e),ui(e,"Excluded")}};var zc=class extends kn{constructor(e,r,n,i,a){super(e,r,n),this.renderChildType=i,this.declaration=a,this.declarationString=a.declarationString,this.errorCollection=new er(this.getUuid()),this.errorCollection.merge(a.errorCollection)}hasArgument(e){return this.getArguments(e).length>0}getArgument(e){return this.getArguments(e).at(0)}getArguments(e){if(this.declaration.errorCollection.hasErrors())throw new Lt({errorLevel:"CRITICAL",effect:"can not retrieve arguments",cause:"inputFieldDeclaration has errors"});return this.declaration.argumentContainer.getAll(e)}getBindTarget(){return this.declaration.bindTarget}shouldAddCardContainer(){let e=this.declaration.inputFieldType==="select"||this.declaration.inputFieldType==="multiSelect"||this.declaration.inputFieldType==="list",r=this.hasArgument("showcase")||this.hasArgument("title");return this.renderChildType==="block"&&(e||r)}createContainer(e){if(this.shouldAddCardContainer()){let r=lt.createElement(e,"div");lt.addClass(r,"mb-card");let n=this.getArgument("title");return n&<.createElement(r,"h3",{text:n.value}),r}return e}addShowcase(e){if(this.getArgument("showcase")&&this.shouldAddCardContainer()){let n=lt.createElement(e,"code",{class:"mb-none"}),i=lt.createElement(n,"a",{text:this.declarationString,class:"mb-no-link"});i.href=qt.linkToInputField(this.declaration.inputFieldType)}}createInputField(){if(!this.errorCollection.hasErrors())try{this.inputField=this.mb.inputFieldFactory.createInputField(this)}catch(e){this.errorCollection.add(e)}!this.errorCollection.hasErrors()&&!this.inputField&&this.errorCollection.add(new Lt({errorLevel:"CRITICAL",effect:"can't render input field",cause:"input field is undefined"}))}createErrorIndicator(e){this.mb.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),lt.empty(e),lt.addClass(e,"mb-input"),this.createInputField(),this.errorCollection.hasErrors()){this.createErrorIndicator(e);return}let r=this.createContainer(e);this.createErrorIndicator(r);let n=lt.createElement(r,"div",{class:"mb-input-wrapper"});this.inputField?.mount(n);let i=this.getArguments("class");for(let a of i)lt.addClasses(n,a.value);lt.addClass(n,`mb-input-type-${this.declaration.inputFieldType}`),this.renderChildType==="block"?lt.addClass(e,"mb-input-block"):lt.addClass(e,"mb-input-inline"),this.addShowcase(r)}onUnmount(e){super.onUnmount(e),this.inputField?.unmount(),ui(e,"input field")}};var PK=se("

");function pu(t,e){Se(e,!0);let r,n;Yi(()=>{n?.unmount(),n=e.mountable,n.mount(r)}),Jl(()=>{n?.unmount()});var i=PK();co(i,a=>r=a,()=>r),K(t,i),Ee()}var $K=se(" "),OK=se(""),RK=se('invalid data'),LK=se(''),VK=se('
',1);function vw(t,e){Se(e,!0);let r=at(e,"tableHead",19,()=>[]),n=it(dt([]));function i(p){ke(n,p,!0)}var a=VK(),o=We(a),s=ve(o),l=ve(s),u=ve(l),c=ve(u);Ut(c,17,r,Zt,(p,d)=>{var h=$K(),b=ve(h,!0);le(h),Le(()=>vt(b,q(d))),K(p,h)}),_t(),le(u),le(l);var f=ue(l);Ut(f,21,()=>q(n),p=>p.index,(p,d)=>{var h=LK(),b=ve(h);{var y=w=>{var x=Gr(),E=We(x);Ut(E,17,()=>q(d).cells,Zt,(T,_)=>{var C=OK(),N=ve(C);pu(N,{get mountable(){return q(_)}}),le(C),K(T,C)}),K(w,x)},D=w=>{var x=RK();Le(()=>rt(x,"colspan",r().length)),K(w,x)};et(b,w=>{q(d).isValid?w(y):w(D,!1)})}var v=ue(b),A=ve(v);yt(A,{onclick:()=>e.table.removeColumn(q(d).index),children:(w,x)=>{Or(w,{get mb(){return e.table.mb},iconName:"x"})},$$slots:{default:!0}}),le(v),le(h),K(p,h)}),le(f),le(s),le(o);var m=ue(o,2);return yt(m,{onclick:()=>e.table.addColumn(),children:(p,d)=>{_t();var h=Vt("Add Row");K(p,h)},$$slots:{default:!0}}),K(t,a),Ee({updateTable:i})}function Cv(t){return new js(t.map(e=>sf.tryParse(e).success?new yu("array",e):new yu("object",e)))}var Nv=class extends kn{constructor(e,r,n,i,a,o){super(e,r,n),this.bindTarget=i,this.tableHead=a,this.columns=o,this.inputSignal=new hn(void 0)}registerSelfToMetadataManager(){this.metadataSubscription=this.mb.metadataManager.subscribe(this.getUuid(),this.inputSignal,this.bindTarget,()=>this.unmount())}unregisterSelfFromMetadataManager(){this.metadataSubscription?.unsubscribe()}updateMetadataManager(e){this.metadataSubscription?.write(e)}getValue(){return this.parseTableData(this.metadataSubscription?.read())}parseTableData(e){return Array.isArray(e)?e:[]}updateDisplayValue(e){e=e??[];let r=[];for(let n=0;n{if(typeof o=="string")return this.mb.api.createInlineFieldFromString(o,this.getFilePath(),i,"inline");if("inputFieldType"in o)return this.mb.api.createInputFieldMountable(this.getFilePath(),{declaration:o,scope:i,renderChildType:"inline"});if("viewFieldType"in o)return this.mb.api.createViewFieldMountable(this.getFilePath(),{declaration:o,scope:i,renderChildType:"inline"});throw new Error(`Unknown column type: ${JSON.stringify(o)}`)});r.push({cells:a,index:n,value:e[n],isValid:!0})}else r.push({cells:[],index:n,value:e[n],isValid:!1});this.tableComponent?.updateTable(r)}removeColumn(e){let r=this.getValue();r.splice(e,1),this.updateDisplayValue(r),this.updateMetadataManager(r)}addColumn(){let e=this.getValue();e.push({}),this.updateDisplayValue(e),this.updateMetadataManager(e)}onMount(e){super.onMount(e),this.tableComponent=Br(vw,{target:e,props:{table:this,tableHead:this.tableHead}}),this.inputSignal.registerListener({callback:r=>{this.updateDisplayValue(this.parseTableData(r))}}),this.registerSelfToMetadataManager()}onUnmount(e){super.onUnmount(e),this.unregisterSelfFromMetadataManager(),this.tableComponent&&Dr(this.tableComponent),ui(e,"table")}};var Fv=class extends kn{constructor(e,r,n,i){super(e,r,n),this.declaration=i,this.declarationString=i.declarationString,this.errorCollection=new er(this.getUuid()),this.errorCollection.merge(i.errorCollection),this.variables=[],this.buildVariables()}buildVariables(){if(this.errorCollection.isEmpty())try{for(let e of this.declaration.bindTargetMappings??[])this.variables.push({bindTargetDeclaration:e.bindTarget,metadataSignal:new hn(void 0),uuid:_r(),contextName:e.name})}catch(e){this.errorCollection.add(e)}}buildContext(){let e={};for(let r of this.variables??[])!r.contextName||!r.metadataSignal||(e[r.contextName]=r.metadataSignal.get());return e}async evaluate(){return this.jsRenderer?.evaluate({bound:this.buildContext()})}registerSelfToMetadataManager(){this.metadataSubscription=this.mb.metadataManager.subscribeDerived(this.getUuid(),this.declaration.writeToBindTarget,this.variables.map(e=>e.bindTargetDeclaration),this.variables.map(e=>e.metadataSignal),async()=>await this.evaluate(),()=>this.unmount())}unregisterSelfFromMetadataManager(){this.metadataSubscription?.unsubscribe()}createErrorIndicator(e){this.mb.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),lt.addClass(e,"mb-view"),lt.empty(e),this.mb.internal.isJsEngineAvailable()||this.errorCollection.add(new ro({errorLevel:"ERROR",effect:"can not create js view field",cause:"The JS Engine plugin is not installed and enabled."})),this.mb.getSettings().enableJs||this.errorCollection.add(new ro({errorLevel:"CRITICAL",effect:"Can't evaluate expression.",cause:"JS evaluation is disabled in the plugin settings."})),this.createErrorIndicator(e),this.errorCollection.hasErrors())return;let r=document.createElement("div");lt.addClass(r,"mb-view-wrapper"),this.jsRenderer=this.mb.internal.createJsRenderer(r,this.getFilePath(),this.declaration.code,this.declaration.hidden),this.registerSelfToMetadataManager(),e.appendChild(r)}onUnmount(e){super.onUnmount(e),this.unregisterSelfFromMetadataManager(),ui(e,"js view field")}};var Iv=class extends kn{constructor(e,r,n,i,a){super(e,r,n),this.renderChildType=i,this.declaration=a,this.declarationString=a.declarationString,this.errorCollection=new er(this.getUuid()),this.errorCollection.merge(a.errorCollection)}hasArgument(e){return this.getArguments(e).length>0}getArgument(e){return this.getArguments(e).at(0)}getArguments(e){if(this.declaration.errorCollection.hasErrors())throw new Lt({errorLevel:"ERROR",effect:"an not retrieve arguments",cause:"viewFieldDeclaration has errors"});return this.declaration.argumentContainer.getAll(e)}getDeclaration(){return this.declaration}createViewField(){if(!this.errorCollection.hasErrors())try{this.viewField=this.mb.viewFieldFactory.createViewField(this)}catch(e){this.errorCollection.add(e)}!this.errorCollection.hasErrors()&&!this.viewField&&this.errorCollection.add(new Lt({errorLevel:"CRITICAL",effect:"can't render view field",cause:"view field is undefined"}))}createErrorIndicator(e){this.mb.internal.createErrorIndicator(e,{errorCollection:this.errorCollection,errorText:"Errors caused the creation of the field to fail. Sometimes one error only occurs because of another.",warningText:"Warnings will not cause the creation of a field to fail, but they indicate that a part of the declaration was invalid or uses deprecated functionality.",code:this.declarationString})}onMount(e){if(super.onMount(e),lt.empty(e),lt.addClass(e,"mb-view"),this.createViewField(),this.errorCollection.hasErrors()){this.createErrorIndicator(e);return}let r=document.createElement("div");lt.addClass(r,"mb-view-wrapper");try{this.viewField?.mount(r)}catch(i){this.errorCollection.add(i)}this.createErrorIndicator(e),e.append(r);let n=this.getArguments("class");for(let i of n)lt.addClasses(r,i.value);lt.addClass(r,`mb-view-type-${this.declaration.viewFieldType}`),this.renderChildType==="block"?lt.addClass(e,"mb-view-block"):lt.addClass(e,"mb-view-inline")}onUnmount(e){super.onUnmount(e),this.viewField?.unmount(),ui(e,"view field")}};var Bv=class{constructor(e){this.mb=e}createField(e,r,n,i=!0){if(tn(he.object({type:mp,filePath:Ea,options:he.any(),honorExcludedSetting:he.boolean()}),{type:e,filePath:r,options:n,honorExcludedSetting:i}),this.mb.file.isExcludedFromRendering(r)&&i)return this.createExcludedMountable(r);if(e==="INPUT")return this.createInputFieldMountable(r,n);if(e==="VIEW")return this.createViewFieldMountable(r,n);if(e==="JS_VIEW")return this.createJsViewFieldMountable(r,n);if(e==="TABLE")return this.createTableMountable(r,n);if(e==="BUTTON_GROUP")return this.createButtonGroupMountable(r,n);if(e==="BUTTON")return this.createButtonMountable(r,n);if(e==="EMBED")return this.createEmbedMountable(r,n);if(e==="EXCLUDED")return this.createExcludedMountable(r);throw new Error(`Unknown field type: ${e}`)}createInlineFieldFromString(e,r,n,i="inline",a,o=!0){tn(he.object({fieldString:he.string(),filePath:Ea,scope:qc.optional(),renderChildType:Uc,honorExcludedSetting:he.boolean()}),{fieldString:e,filePath:r,scope:n,renderChildType:i,honorExcludedSetting:o});let s=this.isInlineFieldDeclarationAndGetType(e);if(s===void 0)throw new Lt({errorLevel:"CRITICAL",effect:"failed to create inline field",cause:`Invalid inline mdrc type "${s}"`});return this.createInlineFieldOfTypeFromString(s,e,r,n,i,a,o)}createInlineFieldOfTypeFromString(e,r,n,i,a="inline",o,s=!0){if(tn(he.object({type:mp,declaration:he.string(),filePath:Ea,scope:qc.optional(),renderChildType:Uc,honorExcludedSetting:he.boolean()}),{type:e,declaration:r,filePath:n,scope:i,renderChildType:a,honorExcludedSetting:s}),this.mb.file.isExcludedFromRendering(n)&&s)return this.createExcludedMountable(n);if(e==="INPUT")return this.createInputFieldMountable(n,{renderChildType:a,declaration:r,scope:i});if(e==="VIEW")return this.createViewFieldMountable(n,{renderChildType:a,declaration:r,scope:i});if(e==="BUTTON_GROUP")return this.createButtonGroupMountable(n,{renderChildType:a,declaration:r,position:o});throw new Lt({errorLevel:"CRITICAL",effect:"failed to create inline field",cause:`Invalid inline mdrc type "${e}"`})}createInputFieldMountable(e,r){tn(he.object({filePath:Ea,options:C4}),{filePath:e,options:r});let n=_r(),i;return typeof r.declaration=="string"?i=this.mb.inputFieldParser.fromStringAndValidate(r.declaration,e,r.scope):i=this.mb.inputFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e,r.scope),new zc(this.mb,n,e,r.renderChildType,i)}createViewFieldMountable(e,r){tn(he.object({filePath:Ea,options:N4}),{filePath:e,options:r});let n=_r(),i;return typeof r.declaration=="string"?i=this.mb.viewFieldParser.fromStringAndValidate(r.declaration,e,r.scope):i=this.mb.viewFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e,r.scope),new Iv(this.mb,n,e,r.renderChildType,i)}createJsViewFieldMountable(e,r){tn(he.object({filePath:Ea,options:F4}),{filePath:e,options:r});let n=_r(),i;return typeof r.declaration=="string"?i=this.mb.jsViewFieldParser.fromStringAndValidate(r.declaration,e):i=this.mb.jsViewFieldParser.fromSimpleDeclarationAndValidate(r.declaration,e),new Fv(this.mb,n,e,i)}createTableMountable(e,r){tn(he.object({filePath:Ea,options:I4}),{filePath:e,options:r});let n=_r();return new Nv(this.mb,n,e,r.bindTarget,r.tableHead,r.columns)}createButtonGroupMountable(e,r){tn(he.object({filePath:Ea,options:B4}),{filePath:e,options:r});let n=_r(),i;return typeof r.declaration=="string"?i=this.mb.buttonParser.fromGroupString(r.declaration):i=this.mb.buttonParser.validateGroup(r.declaration),new Sv(this.mb,n,e,i,r.renderChildType,r.position)}createButtonMountable(e,r){tn(he.object({filePath:Ea,options:k4}),{filePath:e,options:r});let n=_r(),i;return typeof r.declaration=="string"?i=this.mb.buttonParser.fromString(r.declaration):i=this.mb.buttonParser.validate(r.declaration),new Ev(this.mb,n,e,i,r.position,r.isPreview)}createEmbedMountable(e,r){tn(he.object({filePath:Ea,options:P4}),{filePath:e,options:r});let n=_r();return new Tv(this.mb,n,e,r.depth,r.content)}createExcludedMountable(e){tn(he.object({filePath:Ea}),{filePath:e});let r=_r();return new Mv(this.mb,r,e)}getInlineFieldDeclarationPrefix(e){if(tn(he.object({fieldType:mp}),{fieldType:e}),e==="INPUT")return"INPUT";if(e==="VIEW")return"VIEW";if(e==="BUTTON_GROUP")return"BUTTON";throw new Lt({errorLevel:"CRITICAL",effect:"failed to get declaration prefix",cause:`Invalid inline mdrc type "${e}"`})}isInlineFieldDeclaration(e,r){tn(he.object({fieldType:mp,str:he.string()}),{fieldType:e,str:r});let n=this.getInlineFieldDeclarationPrefix(e)+"[";return r.startsWith(n)&&r.endsWith("]")}isInlineFieldDeclarationAndGetType(e){if(tn(he.object({str:he.string()}),{str:e}),!!e.endsWith("]"))for(let r of Object.values(_l)){if(!Up(r))continue;let n=this.getInlineFieldDeclarationPrefix(r)+"[";if(e.startsWith(n))return r}}createSignal(e){return new hn(e)}createBindTarget(e,r,n,i=!1){return tn(he.object({storageType:he.string(),storagePath:he.string(),property:he.string().array(),listenToChildren:he.boolean()}),{storageType:e,storagePath:r,property:n,listenToChildren:i}),{storageType:e,storagePath:r,storageProp:Cv(n),listenToChildren:i}}parseBindTarget(e,r,n){return tn(he.object({declarationString:he.string(),filePath:Ea,scope:qc.optional()}),{declarationString:e,filePath:r,scope:n}),this.mb.bindTargetParser.fromStringAndValidate(e,r,n)}setMetadata(e,r){tn(he.object({bindTarget:Sa}),{bindTarget:e}),this.mb.metadataManager.write(r,e)}getMetadata(e){return tn(he.object({bindTarget:Sa}),{bindTarget:e}),this.mb.metadataManager.read(e)}updateMetadata(e,r){tn(he.object({bindTarget:Sa,updateFn:he.function().args(he.any()).returns(he.any())}),{bindTarget:e,updateFn:r});let n=this.mb.metadataManager.read(e),i=r(n);this.mb.metadataManager.write(i,e)}subscribeToMetadata(e,r,n){tn(he.object({bindTarget:Sa,lifecycleHook:this.mb.internal.getLifecycleHookValidator(),callback:he.function().args(he.any()).returns(he.void())}),{bindTarget:e,lifecycleHook:r,callback:n});let i=_r(),a=new hn(void 0);a.registerListener({callback:n});let o=this.mb.metadataManager.subscribe(i,a,e,()=>{a.unregisterAllListeners()});r.register(()=>{o.unsubscribe()})}createNotePosition(e,r){return tn(he.object({lineStart:he.number(),lineEnd:he.number()}),{lineStart:e,lineEnd:r}),new $s({lineStart:e,lineEnd:r})}mathJSImport(e,r){this.mb.math.import(e,r)}};var $4=require("@codemirror/view"),kv=class extends $4.WidgetType{constructor(e,r,n,i,a){super(),this.type=e,this.content=r,this.filePath=n,this.parentComponent=i,this.mb=a}eq(e){return e.content===this.content}toDOM(e){let r=document.createElement("span");r.addClass("cm-inline-code");let n=this.mb.api.createInlineFieldOfTypeFromString(this.type,this.content,this.filePath,void 0);return this.renderChild=this.mb.api.wrapInMDRC(n,r,this.parentComponent),r}destroy(e){this.renderChild?.unload(),super.destroy(e)}};var O4=require("obsidian"),Pv=class extends O4.MarkdownRenderChild{constructor(e,r,n){super(n),this.mb=e,this.mountable=r,this.mountable.registerUnmountCb(()=>{this.unload()})}onload(){this.mountable.mount(this.containerEl),super.onload()}onunload(){this.mountable.isMounted()&&this.mountable.unmount(),super.onunload()}};function R4(t){return t.dependencyManager.checkDependency("dataview").api}function mu(t){return t.dependencyManager.checkDependency("js-engine").api}function yw(t){return t.dependencyManager.checkDependency("templater-obsidian").templater}var UK=he.object({addChild:he.function().args(he.instanceof(L4.Component)).returns(he.void())}),$v=class extends Bv{constructor(e){super(e),this.omb=e}wrapInMDRC(e,r,n){tn(he.object({field:A4,containerEl:_4,component:UK}),{field:e,containerEl:r,component:n});let i=new Pv(this.omb,e,r);return n.addChild(i),i}constructMDRCWidget(e,r,n,i){if(Up(e))return new kv(e,r,n,i,this.omb);throw new Lt({errorLevel:"CRITICAL",effect:"failed to construct mdrc",cause:`Invalid inline field type "${e}"`})}reactiveMetadata(e,r,n){tn(he.object({bindTargets:Sa.array(),lifecycleHook:this.mb.internal.getLifecycleHookValidator(),callback:he.function()}),{bindTargets:e,lifecycleHook:r,callback:n});let i=mu(this.omb),a=_r(),o=e.map(()=>new hn(void 0)),s=()=>Promise.resolve(),l=this.mb.metadataManager.subscribeEffect(a,e,o,()=>s(),()=>{});r.register(()=>l.unsubscribe());let u=i.reactive(n,...o.map(c=>c.get()));return s=()=>u.refresh(...o.map(c=>c.get())),u}};var ul=require("obsidian");var Ov=class{constructor(e){this.mb=e}getFrontmatterLocation(e){let r=e.split(` +`);if(r.at(0)==="---"){for(let n=1;nr(i))}async create(e,r,n,i=!1,a=!1){let o=this.app.vault.getAvailablePath((0,ul.normalizePath)(e+"/"+r),n),s=await this.app.vault.create(o,"");return i&&await this.openInSourceMode(s,a),s.path}getAllFiles(){return this.app.vault.getAllLoadedFiles().filter(e=>e instanceof ul.TFile).map(e=>e.path)}getAllFolders(){return this.app.vault.getAllLoadedFiles().filter(e=>e instanceof ul.TFolder).map(e=>e.path)}async open(e,r,n){this.app.workspace.openLinkText(e,r,n)}async openInSourceMode(e,r){let n=this.app.workspace.getLeaf(r?"tab":!1);n&&await n.openFile(e,{state:{mode:"source"}})}getPathByName(e,r=""){return this.app.metadataCache.getFirstLinkpathDest(e,r)?.path}};var Tn=require("obsidian");var Lv=Tr(Bf());var V4=Tr(Bf());var qK=se('
'),zK=(t,e,r)=>e(q(r)),HK=(t,e,r)=>e(t,q(r)),GK=se('
'),WK=se('
');function bw(t,e){Se(e,!0);let r=cr(()=>sS(e.month,e.year));function n(l){l&&e.dateChange((0,V4.default)(new Date(e.year,e.month,l)))}function i(l,u){l.key===" "&&n(u)}var a=WK(),o=ve(a);Ut(o,21,uS,Zt,(l,u)=>{var c=qK(),f=ve(c),m=ve(f,!0);le(f),le(c),Le(()=>vt(m,q(u))),K(l,c)}),le(o);var s=ue(o,2);Ut(s,21,()=>q(r),l=>lS(),(l,u)=>{var c=GK();let f;c.__click=[zK,n,u],c.__keydown=[HK,i,u];var m=ve(c),p=ve(m,!0);le(m),le(c),Le(d=>{f=Vr(c,1,"mb-calendar-cell",null,f,d),vt(p,q(u)||"")},[()=>({"mb-calendar-highlight":q(u),"mb-calendar-content-cell":q(u),"mb-calendar-selected":e.selectedDate?.year()===e.year&&e.selectedDate?.month()===e.month&&e.selectedDate?.date()===q(u)})]),K(l,c)}),le(s),le(a),K(t,a),Ee()}Mt(["click","keydown"]);function YK(t,e,r){if(q(e)===11){ke(e,0),ke(r,q(r)+1);return}ke(e,q(e)+1)}function jK(t,e,r){if(q(e)===0){ke(e,11),ke(r,q(r)-1);return}ke(e,q(e)-1)}function ZK(t,e){let r=t.target.value,n=Number.parseInt(r);Number.isNaN(n)||ke(e,n,!0)}function JK(t,e,r){e(null),r.dateChangeCallback(null)}function XK(t,e,r){e((0,Lv.default)()),r.dateChangeCallback(e())}var QK=se('
');function xw(t,e){Se(e,!0);let r=at(e,"selectedDate",23,Lv.default),n=it(0),i=it(0);Yi(()=>{if(r())ke(n,r().month(),!0),ke(i,r().year(),!0);else{let D=(0,Lv.default)();ke(n,D.month(),!0),ke(i,D.year(),!0)}});function a(D){r(D),e.dateChangeCallback(D)}var o=QK(),s=ve(o),l=ve(s);l.__click=[jK,n,i];var u=ue(l,2),c=ve(u),f=ve(c,!0);le(c);var m=ue(c,2);At(m),m.__input=[ZK,i],le(u);var p=ue(u,2);p.__click=[YK,n,i],le(s);var d=ue(s,2);bw(d,{dateChange:a,get month(){return q(n)},get year(){return q(i)},get selectedDate(){return r()}});var h=ue(d,2),b=ve(h);b.__click=[JK,r,e];var y=ue(b,2);y.__click=[XK,r,e],le(h),le(o),Le((D,v)=>{vt(f,D),_b(m,v)},[()=>oS(q(n)),()=>q(i).toString()]),K(t,o),Ee()}Mt(["click","input"]);var Hc=class extends vi{setModal(e){this.modal=e}closeModal(){if(this.modal!==void 0)this.modal.close();else throw new Lt({errorLevel:"CRITICAL",effect:"Failed to close modal",cause:"Modal reference in ModalContent is undefined"})}};var KK=se('
');function It(t,e){let r=at(e,"name",3,""),n=at(e,"description",3,""),i=at(e,"heading",3,!1),a=at(e,"vertical",3,!1);var o=KK();let s;var l=ve(o),u=ve(l),c=ve(u,!0);le(u);var f=ue(u,2),m=ve(f,!0);le(f),le(l);var p=ue(l,2);let d;var h=ve(p);{var b=y=>{var D=Gr(),v=We(D);La(v,()=>e.children),K(y,D)};et(h,y=>{e.children&&y(b)})}le(p),le(o),Le((y,D)=>{s=Vr(o,1,"setting-item",null,s,y),vt(c,r()),vt(m,n()),d=Vr(p,1,"setting-item-control",null,d,D)},[()=>({"setting-item-heading":i(),"mb-vertical":a()}),()=>({"mb-vertical-control":a()})]),K(t,o)}function ww(t,e){Se(e,!0);let r=at(e,"action",15);function n(){e.mb.internal.openCommandSelectModal(a=>{r(r().command=a.id,!0)})}let i=cr(()=>r().command||"none");It(t,{get name(){return`Command: ${q(i)??""}`},description:"The command to execute when this action runs.",children:(a,o)=>{yt(a,{get variant(){return"primary"},onclick:()=>n(),children:(s,l)=>{_t();var u=Vt("Change");K(s,u)},$$slots:{default:!0}})},$$slots:{default:!0}}),Ee()}var eee=(t,e,r)=>e(!q(r)),tee=(t,e,r)=>{t.key===" "&&e(!q(r))},ree=se('
');function Ta(t,e){Se(e,!0);let r=at(e,"checked",15),n=cr(()=>r()??!1);var i=ree();let a;i.__click=[eee,r,n],i.__keydown=[tee,r,n];var o=ve(i);At(o),le(i),Le(s=>{a=Vr(i,1,"checkbox-container",null,a,s),rt(i,"aria-checked",q(n)),cs(o,q(n))},[()=>({"is-enabled":q(n)})]),K(t,i),Ee()}Mt(["click","keydown"]);var nee=se(''),iee=se(" ",1);function _w(t,e){Se(e,!0);let r=at(e,"action",15);function n(){e.mb.internal.openFolderSelectModal(f=>{r(r().folderPath=f,!0)})}var i=iee(),a=We(i);let o=cr(()=>r().folderPath||"none");It(a,{get name(){return`Folder: ${q(o)??""}`},description:"The folder to create a new note in.",children:(f,m)=>{yt(f,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(p,d)=>{_t();var h=Vt("Change");K(p,h)},$$slots:{default:!0}})},$$slots:{default:!0}});var s=ue(a,2);let l=cr(()=>r().fileName||"default");It(s,{get name(){return`File name: ${q(l)??""}`},description:"The file name of the new note.",children:(f,m)=>{var p=nee();At(p),xt(p,()=>r().fileName,d=>r(r().fileName=d,!0)),K(f,p)},$$slots:{default:!0}});var u=ue(s,2);It(u,{name:"Open note",description:"Whether to open the new note after this action ran.",children:(f,m)=>{Ta(f,{get checked(){return r().openNote},set checked(p){r(r().openNote=p,!0)}})},$$slots:{default:!0}});var c=ue(u,2);It(c,{name:"Open if note already exists",description:"Whether to open the note instead of creating a new one if the note already exists.",children:(f,m)=>{Ta(f,{get checked(){return r().openIfAlreadyExists},set checked(p){r(r().openIfAlreadyExists=p,!0)}})},$$slots:{default:!0}}),K(t,i),Ee()}function Aw(t,e){Se(e,!0);let r=at(e,"action",15);function n(){e.mb.internal.openMarkdownFileSelectModal(a=>{r(r().templateFile=a,!0)})}let i=cr(()=>r().templateFile||"default");It(t,{get name(){return`File path: ${q(i)??""}`},description:"The path to the templater file, relative to the vault root.",children:(a,o)=>{yt(a,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(s,l)=>{_t();var u=Vt("Change");K(s,u)},$$slots:{default:!0}})},$$slots:{default:!0}}),Ee()}var aee=se('
',1);function Dw(t,e){Se(e,!0);let r=at(e,"action",15);var n=aee(),i=We(n);It(i,{name:"JS code",description:"The JavaScript code to run."});var a=ue(i,2),o=ve(a);Dn(o),le(a),xt(o,()=>r().code,s=>r(r().code=s,!0)),K(t,n),Ee()}var oee=se('');function Sw(t,e){Se(e,!0);let r=at(e,"action",15);It(t,{name:"Text",description:"The text to input at the cursor.",children:(n,i)=>{var a=oee();At(a),xt(a,()=>r().str,o=>r(r().str=o,!0)),K(n,a)},$$slots:{default:!0}}),Ee()}var see=se(''),uee=se('
',1);function Ew(t,e){Se(e,!0);let r=at(e,"action",15);var n=uee(),i=We(n);It(i,{name:"Line",description:"The line number to insert at.",children:(l,u)=>{var c=see();At(c),xt(c,()=>r().line,f=>r(r().line=f,!0)),K(l,c)},$$slots:{default:!0}});var a=ue(i,2);It(a,{name:"Text to insert",description:"The text to insert into the note."});var o=ue(a,2),s=ve(o);Dn(s),le(o),xt(s,()=>r().value,l=>r(r().value=l,!0)),K(t,n),Ee()}function Tw(t,e){Se(e,!0);let r=at(e,"action",15);function n(){e.mb.internal.openFilteredFileSelectModal(i=>{r(r().file=i,!0)},i=>i.endsWith(".js"))}It(t,{name:"JS file",description:"The JavaScript file to run.",children:(i,a)=>{yt(i,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(o,s)=>{_t();var l=Vt("Change");K(o,l)},$$slots:{default:!0}})},$$slots:{default:!0}}),Ee()}var lee=se(' ',1),cee=se(" ",1);function Mw(t,e){Se(e,!0);let r=at(e,"action",15);function n(){e.mb.internal.openMarkdownFileSelectModal(s=>{r(r().link=s,!0)})}var i=cee(),a=We(i);It(a,{name:"Link",description:"The link to open.",children:(s,l)=>{var u=lee(),c=We(u);At(c);var f=ue(c,2);yt(f,{get variant(){return"primary"},onclick:()=>n(),tooltip:"Select from vault",children:(m,p)=>{Or(m,{iconName:"list",get mb(){return e.mb}})},$$slots:{default:!0}}),xt(c,()=>r().link,m=>r(r().link=m,!0)),K(s,u)},$$slots:{default:!0}});var o=ue(a,2);It(o,{name:"New tab",description:"Whether to open the link in a new tab.",children:(s,l)=>{Ta(s,{get checked(){return r().newTab},set checked(u){r(r().newTab=u,!0)}})},$$slots:{default:!0}}),K(t,i),Ee()}var fee=se(''),pee=se(''),mee=se('
',1);function Cw(t,e){Se(e,!0);let r=at(e,"action",15);var n=mee(),i=We(n);It(i,{name:"Regexp",description:"The regexp to find replacements.",children:(u,c)=>{var f=fee();At(f),xt(f,()=>r().regexp,m=>r(r().regexp=m,!0)),K(u,f)},$$slots:{default:!0}});var a=ue(i,2);It(a,{name:"Regexp flags",description:"The regexp flags for this regexp.",children:(u,c)=>{var f=pee();At(f),xt(f,()=>r().regexpFlags,m=>r(r().regexpFlags=m,!0)),K(u,f)},$$slots:{default:!0}});var o=ue(a,2);It(o,{name:"Replacement text",description:"The text to replace the button with."});var s=ue(o,2),l=ve(s);Dn(l),le(s),xt(l,()=>r().replacement,u=>r(r().replacement=u,!0)),K(t,n),Ee()}var dee=se(''),hee=se(''),gee=se('
',1);function Nw(t,e){Se(e,!0);let r=at(e,"action",15);var n=gee(),i=We(n);It(i,{name:"Line from",description:"The line that marks the start of the area to replace.",children:(u,c)=>{var f=dee();At(f),xt(f,()=>r().fromLine,m=>r(r().fromLine=m,!0)),K(u,f)},$$slots:{default:!0}});var a=ue(i,2);It(a,{name:"Line to",description:"The line that marks the end of the area to replace.",children:(u,c)=>{var f=hee();At(f),xt(f,()=>r().toLine,m=>r(r().toLine=m,!0)),K(u,f)},$$slots:{default:!0}});var o=ue(a,2);It(o,{name:"Replacement text",description:"The text to replace the note section."});var s=ue(o,2),l=ve(s);Dn(l),le(s),xt(l,()=>r().replacement,u=>r(r().replacement=u,!0)),K(t,n),Ee()}var vee=se('
',1);function Fw(t,e){Se(e,!0);let r=at(e,"action",15);var n=vee(),i=We(n);It(i,{name:"Replacement text",description:"The text to replace the match with."});var a=ue(i,2),o=ve(a);Dn(o),le(a),xt(o,()=>r().replacement,s=>r(r().replacement=s,!0)),K(t,n),Ee()}var yee=se('');function Iw(t,e){Se(e,!0);let r=at(e,"action",15);It(t,{name:"Sleep time",description:"The time to sleep in milliseconds.",children:(n,i)=>{var a=yee();At(a),xt(a,()=>r().ms,o=>r(r().ms=o,!0)),K(n,a)},$$slots:{default:!0}}),Ee()}var bee=se(''),xee=se(" ",1);function Bw(t,e){Se(e,!0);let r=at(e,"action",15);function n(d){e.mb.internal.openFileSelectModal(h=>{d.templateFile=h})}function i(d){e.mb.internal.openFolderSelectModal(h=>{d.folderPath=h})}var a=xee(),o=We(a);let s=cr(()=>r().templateFile||"none");It(o,{get name(){return`Template file: ${q(s)??""}`},description:"The template file to create a new note of.",children:(d,h)=>{yt(d,{get variant(){return"primary"},onclick:()=>n(r()),tooltip:"Select from vault",children:(b,y)=>{_t();var D=Vt("Change");K(b,D)},$$slots:{default:!0}})},$$slots:{default:!0}});var l=ue(o,2);let u=cr(()=>r().folderPath||"none");It(l,{get name(){return`Folder: ${q(u)??""}`},description:"The folder to create a new note in.",children:(d,h)=>{yt(d,{get variant(){return"primary"},onclick:()=>i(r()),tooltip:"Select from vault",children:(b,y)=>{_t();var D=Vt("Change");K(b,D)},$$slots:{default:!0}})},$$slots:{default:!0}});var c=ue(l,2);let f=cr(()=>r().fileName||"default");It(c,{get name(){return`File name: ${q(f)??""}`},description:"The file name of the new note.",children:(d,h)=>{var b=bee();At(b),xt(b,()=>r().fileName,y=>r(r().fileName=y,!0)),K(d,b)},$$slots:{default:!0}});var m=ue(c,2);It(m,{name:"Open note",description:"Whether to open the new note after this action ran.",children:(d,h)=>{Ta(d,{get checked(){return r().openNote},set checked(b){r(r().openNote=b,!0)}})},$$slots:{default:!0}});var p=ue(m,2);It(p,{name:"Open if note already exists",description:"Whether to open the note instead of creating a new one if the note already exists.",children:(d,h)=>{Ta(d,{get checked(){return r().openIfAlreadyExists},set checked(b){r(r().openIfAlreadyExists=b,!0)}})},$$slots:{default:!0}}),K(t,a),Ee()}var wee=se(''),_ee=se(''),Aee=se(" ",1);function kw(t,e){Se(e,!0);let r=at(e,"action",15);var n=Aee(),i=We(n);It(i,{name:"Metadata property",description:"The metadata property in form of a bind target.",children:(s,l)=>{var u=wee();At(u),xt(u,()=>r().bindTarget,c=>r(r().bindTarget=c,!0)),K(s,u)},$$slots:{default:!0}});var a=ue(i,2);It(a,{name:"Value",description:"The new value.",children:(s,l)=>{var u=_ee();At(u),xt(u,()=>r().value,c=>r(r().value=c,!0)),K(s,u)},$$slots:{default:!0}});var o=ue(a,2);It(o,{name:"Evaluate",description:"Whether to evaluate the value as a JS expression.",children:(s,l)=>{Ta(s,{get checked(){return r().evaluate},set checked(u){r(r().evaluate=u,!0)}})},$$slots:{default:!0}}),K(t,n),Ee()}var Dee=se("
");function Ns(t,e){Se(e,!0);let r=at(e,"reverse",3,!1),n=at(e,"stretchChildren",3,!1),i=cr(()=>[r()?"mb-flex-row-reverse":"mb-flex-row",n()?"mb-flex-row-stretch":""].join(" "));var a=Dee(),o=ve(a);La(o,()=>e.children),le(a),Le(()=>Vr(a,1,ls(q(i)))),K(t,a),Ee()}var See=se('');function Ma(t,e){var r=See(),n=ve(r);La(n,()=>e.children),le(r),K(t,r)}var Eee=se(''),Tee=se(''),Mee=se(""),Cee=se(''),Nee=se(''),Fee=se(''),Iee=se(' ',1),Bee=se(''),kee=se(''),Pee=se(""),$ee=se("
",1),Oee=se(" ",1),Ree=se(" ",1),Lee=se('

Actions

Add action of type

Preview

',1);function Pw(t,e){Se(e,!0);let r=dt(e.buttonConfig),n,i,a=it(dt("command"));Jl(()=>{i?.unmount()}),Yi(()=>{i?.unmount(),n&&(lt.empty(n),i=new fu(e.mb,ft(r),"","block",void 0,!1,!0),i.mount(n))});function o(){r.actions?.push(e.mb.buttonActionRunner.createDefaultAction(q(a)))}function s(I){r.actions?.splice(I,1)}function l(I){return e.mb.buttonActionRunner.getActionLabel(I)}function u(I,R){if(r.actions===void 0)return;let L=[];I>0&&L.push({name:"Move up",icon:"arrow-up",onclick:()=>{if(r.actions===void 0)return;let V=r.actions[I-1];r.actions[I-1]=r.actions[I],r.actions[I]=V}}),I{if(r.actions===void 0)return;let V=r.actions[I+1];r.actions[I+1]=r.actions[I],r.actions[I]=V}}),L.push({name:"Remove",icon:"x",warning:!0,onclick:()=>s(I)}),e.mb.internal.createContextMenu(L).showWithEvent(R)}function c(){e.mb.internal.openImageFileSelectModal(I=>{r.backgroundImage=I})}function f(){r.backgroundImage=void 0}var m=Lee(),p=We(m);It(p,{name:"Label",description:"The label shown on the button.",children:(I,R)=>{var L=Eee();At(L),xt(L,()=>r.label,V=>r.label=V),K(I,L)},$$slots:{default:!0}});var d=ue(p,2);It(d,{name:"Icon",description:"The icon shown on the button. If left empty, no icon will show",children:(I,R)=>{var L=Tee();At(L),xt(L,()=>r.icon,V=>r.icon=V),K(I,L)},$$slots:{default:!0}});var h=ue(d,2);It(h,{name:"Style",description:"The style variant of the button",children:(I,R)=>{var L=Cee();Ut(L,21,()=>Object.values(Wr),Zt,(V,P)=>{var k=Mee(),W={},O=ve(k,!0);le(k),Le(()=>{W!==(W=q(P))&&(k.value=(k.__value=q(P))??""),vt(O,q(P))}),K(V,k)}),le(L),Zl(L,()=>r.style,V=>r.style=V),K(I,L)},$$slots:{default:!0}});var b=ue(h,2);It(b,{name:"CSS classes",description:"A list of CSS classes to add to the button. Multiple classes should be separated by a space.",children:(I,R)=>{var L=Nee();At(L),xt(L,()=>r.class,V=>r.class=V),K(I,L)},$$slots:{default:!0}});var y=ue(b,2);It(y,{name:"CSS styles",description:"CSS styles to directly apply to the button.",children:(I,R)=>{var L=Fee();At(L),xt(L,()=>r.cssStyle,V=>r.cssStyle=V),K(I,L)},$$slots:{default:!0}});var D=ue(y,2);It(D,{name:"Background image",description:"A background image to use in the button.",children:(I,R)=>{var L=Iee(),V=We(L),P=ve(V,!0);le(V);var k=ue(V,2);yt(k,{get variant(){return"primary"},onclick:()=>c(),tooltip:"Select from vault",children:(O,Q)=>{_t();var ne=Vt("Change");K(O,ne)},$$slots:{default:!0}});var W=ue(k,2);yt(W,{get variant(){return"default"},onclick:()=>f(),tooltip:"Reset to none",children:(O,Q)=>{Or(O,{get mb(){return e.mb},iconName:"x"})},$$slots:{default:!0}}),Le(()=>vt(P,r.backgroundImage||"none")),K(I,L)},$$slots:{default:!0}});var v=ue(D,2);It(v,{name:"Tooltip",description:"A tooltip to show when hovering the button. If not set, the button label will be shown instead.",children:(I,R)=>{var L=Bee();At(L),xt(L,()=>r.tooltip,V=>r.tooltip=V),K(I,L)},$$slots:{default:!0}});var A=ue(v,2);It(A,{name:"ID",description:"An ID that allows the button to be referenced in inline buttons.",children:(I,R)=>{var L=kee();At(L),xt(L,()=>r.id,V=>r.id=V),K(I,L)},$$slots:{default:!0}});var w=ue(A,2);It(w,{name:"Hidden",description:"Whether to not render this button. This can be useful when using inline buttons.",children:(I,R)=>{Ta(I,{get checked(){return r.hidden},set checked(L){r.hidden=L}})},$$slots:{default:!0}});var x=ue(w,4);Ut(x,21,()=>Object.values(Vn),Zt,(I,R)=>{var L=Pee(),V={},P=ve(L,!0);le(L),Le(()=>{V!==(V=q(R))&&(L.value=(L.__value=q(R))??""),vt(P,q(R))}),K(I,L)}),le(x);var E=ue(x,2);yt(E,{get variant(){return"primary"},onclick:()=>o(),children:(I,R)=>{_t();var L=Vt("Add Action");K(I,L)},$$slots:{default:!0}});var T=ue(E,2);{var _=I=>{var R=Gr(),L=We(R);Ut(L,17,()=>r.actions??[],Zt,(V,P,k)=>{var W=Oee(),O=We(W);Ns(O,{children:(Pe,j)=>{var de=$ee(),pe=We(de),Ne=ve(pe,!0);le(pe);var Be=ue(pe,2);yt(Be,{get variant(){return"plain"},onclick:_e=>u(k,_e),children:(_e,Ge)=>{Or(_e,{iconName:"more-vertical",get mb(){return e.mb}})},$$slots:{default:!0}}),Le(_e=>vt(Ne,_e),[()=>l(q(P).type)]),K(Pe,de)},$$slots:{default:!0}});var Q=ue(O,2);{var ne=Pe=>{ww(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(Q,Pe=>{q(P).type==="command"&&Pe(ne)})}var X=ue(Q,2);{var U=Pe=>{Mw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(X,Pe=>{q(P).type==="open"&&Pe(U)})}var fe=ue(X,2);{var xe=Pe=>{Tw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(fe,Pe=>{q(P).type==="js"&&Pe(xe)})}var oe=ue(fe,2);{var be=Pe=>{Sw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(oe,Pe=>{q(P).type==="input"&&Pe(be)})}var ee=ue(oe,2);{var Z=Pe=>{Iw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(ee,Pe=>{q(P).type==="sleep"&&Pe(Z)})}var re=ue(ee,2);{var me=Pe=>{Bw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(re,Pe=>{q(P).type==="templaterCreateNote"&&Pe(me)})}var ce=ue(re,2);{var Ae=Pe=>{kw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(ce,Pe=>{q(P).type==="updateMetadata"&&Pe(Ae)})}var we=ue(ce,2);{var G=Pe=>{_w(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(we,Pe=>{q(P).type==="createNote"&&Pe(G)})}var J=ue(we,2);{var ge=Pe=>{Aw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(J,Pe=>{q(P).type==="runTemplaterFile"&&Pe(ge)})}var ye=ue(J,2);{var De=Pe=>{Nw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(ye,Pe=>{q(P).type==="replaceInNote"&&Pe(De)})}var Ie=ue(ye,2);{var Oe=Pe=>{Cw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(Ie,Pe=>{q(P).type==="regexpReplaceInNote"&&Pe(Oe)})}var Je=ue(Ie,2);{var wt=Pe=>{Fw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(Je,Pe=>{q(P).type==="replaceSelf"&&Pe(wt)})}var qe=ue(Je,2);{var rr=Pe=>{Ew(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(qe,Pe=>{q(P).type==="insertIntoNote"&&Pe(rr)})}var Wt=ue(qe,2);{var pr=Pe=>{Dw(Pe,{get mb(){return e.mb},get action(){return r.actions[k]},set action(j){r.actions[k]=j}})};et(Wt,Pe=>{q(P).type==="inlineJS"&&Pe(pr)})}K(V,W)}),K(I,R)};et(T,I=>{r.actions&&I(_)})}var C=ue(T,4);co(C,I=>n=I,()=>n);var N=ue(C,2);Ma(N,{children:(I,R)=>{var L=Ree(),V=We(L);yt(V,{get variant(){return"primary"},onclick:()=>e.modal.okay(ft(r)),children:(k,W)=>{_t();var O=Vt();Le(()=>vt(O,e.modal.options.submitText)),K(k,O)},$$slots:{default:!0}});var P=ue(V,2);yt(P,{get variant(){return"default"},onclick:()=>e.modal.cancel(),children:(k,W)=>{_t();var O=Vt("Cancel");K(k,O)},$$slots:{default:!0}}),K(I,L)},$$slots:{default:!0}}),Zl(x,()=>q(a),I=>ke(a,I)),K(t,m),Ee()}var Vv=class extends Hc{constructor(e,r){super(),this.mb=e,this.options=r}onMount(e){lt.empty(e),this.component&&Dr(this.component),this.component=Br(Pw,{target:e,props:{mb:this.mb,modal:this,buttonConfig:this.options.config??this.mb.buttonActionRunner.createDefaultButtonConfig()}})}onUnmount(e){lt.empty(e),this.component&&Dr(this.component)}okay(e){this.closeModal(),this.options.onOkay(e)}cancel(){this.closeModal()}};var Vee=(t,e,r)=>r.onSelect(r.image),Uee=(t,e,r,n)=>e(t,n.image),qee=se('
');function $w(t,e){Se(e,!0);let r=tr(e,["$$slots","$$events","$$legacy"]);function n(u,c){u.key===" "&&e.onSelect(c)}var i=qee();i.__click=[Vee,r,e],i.__keydown=[Uee,n,r,e];var a=ve(i),o=ue(a,2),s=ve(o),l=ve(s,!0);le(s),le(o),le(i),Le(u=>{rt(a,"src",u),rt(a,"alt",e.image),vt(l,e.image)},[()=>e.mb.internal.imagePathToUri(e.image)]),K(t,i),Ee()}Mt(["click","keydown"]);var zee=se(" ",1),Hee=se('
',1);function Ow(t,e){Se(e,!0);let r=it(""),n=e.mb.internal.createFuzzySearch(),i=cr(()=>q(r)?(n.setSearch(q(r)),n.filterItems(e.options,c=>c.value)):e.options);var a=Hee(),o=We(a),s=ve(o);At(s),le(o);var l=ue(o,2);Ut(l,21,()=>q(i),Zt,(c,f)=>{$w(c,{get mb(){return e.mb},get image(){return q(f).value},get onSelect(){return e.onSelect}})}),le(l);var u=ue(l,2);Ma(u,{children:(c,f)=>{var m=zee(),p=We(m);{var d=b=>{yt(b,{get variant(){return"primary"},onclick:()=>e.onSelect(void 0),children:(y,D)=>{_t();var v=Vt("Select none");K(y,v)},$$slots:{default:!0}})};et(p,b=>{e.canSelectNone&&b(d)})}var h=ue(p,2);yt(h,{onclick:()=>e.onCancel(),children:(b,y)=>{_t();var D=Vt("Cancel");K(b,D)},$$slots:{default:!0}}),K(c,m)},$$slots:{default:!0}}),xt(s,()=>q(r),c=>ke(r,c)),K(t,a),Ee()}var ll=class extends Hc{constructor(e){super(),this.createComponent=e}onMount(e){lt.empty(e),this.component=this.createComponent(this,e)}onUnmount(e){this.component&&Dr(this.component),lt.empty(e)}};var Gee=se(""),Wee=se(''),Yee=se(" ",1),jee=se('

',1);function Rw(t,e){Se(e,!0);let r=it(dt(e.options.value));var n=jee(),i=We(n),a=ve(i,!0);le(i);var o=ue(i,2),s=ve(o);{var l=f=>{var m=Gee();Dn(m),xt(m,()=>q(r),p=>ke(r,p)),K(f,m)},u=f=>{var m=Wee();At(m),xt(m,()=>q(r),p=>ke(r,p)),K(f,m)};et(s,f=>{e.options.multiline?f(l):f(u,!1)})}le(o);var c=ue(o,2);Ma(c,{children:(f,m)=>{var p=Yee(),d=We(p);yt(d,{get variant(){return"primary"},onclick:()=>e.options.onSubmit(ft(q(r))),children:(b,y)=>{_t();var D=Vt("OK");K(b,D)},$$slots:{default:!0}});var h=ue(d,2);yt(h,{onclick:()=>e.options.onCancel(),children:(b,y)=>{_t();var D=Vt("Cancel");K(b,D)},$$slots:{default:!0}}),K(f,p)},$$slots:{default:!0}}),Le(()=>vt(a,e.options.subTitle)),K(t,n),Ee()}var qo=class{constructor(e,r){this.mb=e,this.selectCallback=r}onSelected(e){this.selectCallback(e)}};var Uv=class extends qo{getItemText(e){return e.name}getItemDescription(e){}getItems(){return this.mb.internal.getAllCommands()}};var hp=class extends qo{constructor(e,r,n){super(e,r),this.filterFunction=n}getItemText(e){return e}getItemDescription(e){}getItems(){return this.filterFunction!==void 0?this.mb.file.getAllFiles().filter(e=>this.filterFunction(e)):this.mb.file.getAllFiles()}};var qv=class extends qo{getItemText(e){return e}getItemDescription(e){}getItems(){return this.mb.file.getAllFolders()}};var zv=class extends qo{constructor(e,r,n){super(e,r),this.ipf=n}getItemText(e){return e.displayValue}getItemDescription(e){return e.displayDescription}getItems(){return this.mb.internal.getSuggesterOptions(this.ipf)}};var Zee=se('
 
'),Jee=se("Tip "),Xee=se("
",1),Qee=se("Docs"),Kee=se('Context
 
'),ete=se('
Cause
Effect
'),tte=se('
 
');function Hv(t,e){Se(e,!0);var r=Gr(),n=We(r);{var i=o=>{var s=ete(),l=ve(s),u=ve(l),c=ve(u);le(u);var f=ue(u);le(l);var m=ue(l,2);{var p=I=>{var R=Zee(),L=ve(R),V=ve(L,!0);le(L),le(R),Le(()=>vt(V,e.error.positionContext)),K(I,R)};et(m,I=>{e.error.positionContext&&I(p)})}var d=ue(m,2),h=ve(d),b=ve(h),y=ue(ve(b)),D=ve(y,!0);le(y),le(b);var v=ue(b),A=ue(ve(v)),w=ve(A,!0);le(A),le(v);var x=ue(v);{var E=I=>{var R=Jee(),L=ue(ve(R)),V=ve(L,!0);le(L),le(R),Le(()=>vt(V,e.error.tip)),K(I,R)};et(x,I=>{e.error.tip&&I(E)})}var T=ue(x);{var _=I=>{var R=Qee(),L=ue(ve(R));Ut(L,21,()=>e.error.docs,Zt,(V,P)=>{var k=Xee(),W=We(k),O=ve(W,!0);le(W),_t(),Le(()=>{rt(W,"href",q(P)),vt(O,q(P))}),K(V,k)}),le(L),le(R),K(I,R)};et(T,I=>{e.error.docs&&I(_)})}var C=ue(T);{var N=I=>{var R=Kee(),L=ue(ve(R)),V=ve(L),P=ve(V),k=ve(P,!0);le(P),le(V),le(L),le(R),Le(W=>vt(k,W),[()=>JSON.stringify(e.error.context,null,4)]),K(I,R)};et(C,I=>{e.error.context&&I(N)})}le(h),le(d),le(s),Le(I=>{Vr(u,1,ls(e.error.errorLevel==="WARNING"?"mb-warning-text":"mb-error-text")),vt(c,`${e.error.errorLevel??""} + [${I??""}]`),vt(f,` - ${e.error.effect??""}`),vt(D,e.error.cause),vt(w,e.error.effect)},[()=>e.error.getErrorType()]),K(o,s)},a=o=>{var s=tte(),l=ve(s),u=ve(l),c=ve(u,!0);le(u),le(l),le(s),Le(()=>vt(c,e.error.stack)),K(o,s)};et(n,o=>{e.error instanceof Rn?o(i):o(a,!1)})}K(t,r),Ee()}var rte=se("

"),nte=se('
 
'),ite=se("

"),ate=se("
Errors
",1),ote=se("

"),ste=se("
Warnings
",1),ute=se(" ",1);function Fs(t,e){Se(e,!0);var r=ute(),n=We(r);{var i=f=>{var m=rte(),p=ve(m,!0);le(m),Le(()=>vt(p,e.settings.text)),K(f,m)};et(n,f=>{e.settings.text&&f(i)})}var a=ue(n,2);{var o=f=>{var m=nte(),p=ve(m),d=ve(p,!0);le(p),le(m),Le(()=>vt(d,e.settings.code)),K(f,m)};et(a,f=>{e.settings.code&&f(o)})}var s=ue(a,2);{var l=f=>{var m=ate(),p=ue(We(m),2);{var d=b=>{var y=ite(),D=ve(y,!0);le(y),Le(()=>vt(D,e.settings.errorText)),K(b,y)};et(p,b=>{e.settings.errorText&&b(d)})}var h=ue(p,2);Ut(h,17,()=>e.settings.errorCollection.getErrors(),Zt,(b,y)=>{Hv(b,{get error(){return q(y)}})}),K(f,m)};et(s,f=>{e.settings.errorCollection.hasErrors()&&f(l)})}var u=ue(s,2);{var c=f=>{var m=ste(),p=ue(We(m),2);{var d=b=>{var y=ote(),D=ve(y,!0);le(y),Le(()=>vt(D,e.settings.warningText)),K(b,y)};et(p,b=>{e.settings.warningText&&b(d)})}var h=ue(p,2);Ut(h,17,()=>e.settings.errorCollection.getWarnings(),Zt,(b,y)=>{Hv(b,{get error(){return q(y)}})}),K(f,m)};et(u,f=>{e.settings.errorCollection.hasWarnings()&&f(c)})}K(t,r),Ee()}var lte=(t,e)=>e(),cte=(t,e)=>{t.key===" "&&e()},fte=se(' [META_BIND_ERROR]',1),pte=qm(''),mte=qm(''),dte=se('
');function Gc(t,e){Se(e,!0);function r(){e.mb.internal.openErrorCollectionViewModal(e.settings)}var n=Gr(),i=We(n);{var a=o=>{var s=dte();s.__click=[lte,r],s.__keydown=[cte,r];var l=ve(s);{var u=f=>{var m=fte();_t(2),K(f,m)},c=(f,m)=>{{var p=h=>{var b=pte();K(h,b)},d=h=>{var b=mte();K(h,b)};et(f,h=>{e.settings.errorCollection.hasWarnings()?h(p):h(d,!1)},m)}};et(l,f=>{e.settings.errorCollection.hasErrors()?f(u):f(c,!1)})}le(s),K(o,s)};et(i,o=>{e.settings.errorCollection.isEmpty()||o(a)})}K(t,n),Ee()}Mt(["click","keydown"]);var Lw=["apng","avif","gif","jpg","jpeg","jfif","pjpeg","pjp","png","svg","webp"],hte=Lw.map(t=>`.${t}`),Gv=class{constructor(e){this.mb=e}openCommandSelectModal(e){this.createSearchModal(new Uv(this.mb,e)).open()}openFileSelectModal(e){this.createSearchModal(new hp(this.mb,e)).open()}openFilteredFileSelectModal(e,r){this.createSearchModal(new hp(this.mb,e,r)).open()}openMarkdownFileSelectModal(e){this.openFilteredFileSelectModal(e,r=>r.endsWith(".md"))}openImageFileSelectModal(e){this.openFilteredFileSelectModal(e,r=>hte.some(n=>r.endsWith(n)))}openFolderSelectModal(e){this.createSearchModal(new qv(this.mb,e)).open()}openButtonBuilderModal(e){this.createModal(new Vv(this.mb,e),{title:"Meta Bind Button Builder"}).open()}openSuggesterModal(e,r){this.createSearchModal(new zv(this.mb,r,e)).open()}openImageSuggesterModal(e,r,n){this.createModal(new ll((i,a)=>Br(Ow,{target:a,props:{mb:this.mb,options:this.getImageSuggesterOptions(e),canSelectNone:r,onSelect:o=>{n(o),i.closeModal()},onCancel:()=>{i.closeModal()}}})),{title:"Select an image from your Vault",classes:["mb-image-suggester-modal"]}).open()}openDatePickerModal(e,r){this.createModal(new ll((n,i)=>Br(xw,{target:i,props:{selectedDate:e,dateChangeCallback:a=>{r(a),n.closeModal()}}})),{title:"Meta Bind date picker"}).open()}openTextPromptModal(e){this.createModal(new ll((r,n)=>Br(Rw,{target:n,props:{options:{...e,onSubmit:i=>{e.onSubmit(i),r.closeModal()},onCancel:()=>{e.onCancel(),r.closeModal()}}}})),e).open()}openErrorCollectionViewModal(e){this.createModal(new ll((r,n)=>Br(Fs,{target:n,props:{settings:e}})),{title:"Meta Bind error overview",classes:["mb-error-collection-modal","markdown-rendered"]}).open()}createErrorIndicator(e,r){let n=Br(Gc,{target:e,props:{mb:this.mb,settings:r}});return()=>{Dr(n)}}};var U4=require("obsidian"),Wv=class{constructor(){}setSearch(e){this.preparedSearch=(0,U4.prepareFuzzySearch)(e)}filterItems(e,r){return this.preparedSearch?e.filter(n=>this.preparedSearch?.(r(n))?.score!=null):e}};var na=require("obsidian");var du=class{constructor(e,r,n){this.value=e,this.displayValue=r,this.displayDescription=n}valueAsString(){return this.value?.toString()??"null"}};function q4(t){let e=[];for(let r of t.children)r instanceof na.TFile&&z4(r.extension)&&e.push(new du(r.path,r.name)),r instanceof na.TFolder&&e.push(...q4(r));return e}function gte(t,e,r){let n=[];for(let i of r){let a=i.value;if(a.startsWith('"')&&a.endsWith('"'))a=a.substring(1,a.length-1);else{let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:"expected suggest option query for image suggester to start and end with double quotation marks"});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}let o;if(a===""||a==="."?o=t.app.vault.getRoot():o=t.app.vault.getAbstractFileByPath(a),o==null){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option query ${a} for image suggester to exist`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!(o instanceof na.TFolder)){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option query ${i.value} for image suggester to be a folder`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}n.push(...q4(o))}for(let i of e){let a=dn(i.value);if(!a){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} to be truthy`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}let o=t.app.vault.getAbstractFileByPath(a);if(!o){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to exist`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!(o instanceof na.TFile)){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to be a file`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}if(!z4(o.extension)){let s=new $r({errorLevel:"ERROR",effect:"failed to get suggest options",cause:`expected suggest option ${i.value} for image suggester to be an image file`});new na.Notice(`meta-bind | ${s.message}`),console.warn(s);continue}n.push(new du(o.path,o.name))}return n}function z4(t){return Lw.contains(t)}function H4(t,e){let r=e.mountable.getArguments("option"),n=e.mountable.getArguments("optionQuery");return gte(t,r,n)}var G4=require("obsidian");var Yv=class extends G4.Modal{constructor(e,r,n){super(e.app),this.options=n,this.content=r,r.setModal(this)}onOpen(){this.options?.title&&this.titleEl.setText(this.options.title),this.options?.classes&<.addClasses(this.modalEl,this.options.classes),this.content.mount(this.contentEl)}onClose(){this.content.unmount()}};var gp=require("obsidian"),jv=class extends gp.FuzzySuggestModal{constructor(e,r){super(e.app),this.content=r}renderSuggestion(e,r){(0,gp.renderResults)(r.createDiv(),this.content.getItemText(e.item),e.match);let n=this.content.getItemDescription(e.item);n&&(0,gp.renderResults)(r.createEl("small",{cls:"mb-search-modal-element-description"}),n,{score:0,matches:[]})}getItems(){return this.content.getItems()}getItemText(e){return this.content.getItemText(e)}onChooseItem(e,r){this.content.onSelected(e)}};var W4=require("obsidian");function vte(t,e,r,n,i){let a=[];for(let o of r)a.push(new du(o.value,o.name,"option"));if(n.length>0){let o;try{o=R4(t)}catch(l){return new W4.Notice("meta-bind | Dataview needs to be installed and enabled to use suggest option queries. Check the console for more information."),console.warn("meta-bind | failed to get dataview api",l),a}let s=he.object({name:he.string().min(1),path:he.string().min(1)});for(let l of n)o.pages(l.value,e).forEach(c=>{try{let f=c.file;if(!s.safeParse(f).success)return;let m=XD(f.path,f.name,i);a.push(new du(m,f.name,`file: ${f.path}`))}catch(f){console.warn("meta-bind | error while computing suggest options",f)}})}return a}function Y4(t,e){let r=e.mountable.getArguments("option"),n=e.mountable.getArguments("optionQuery"),i=e.mountable.getArgument("useLinks");return vte(t,e.mountable.getFilePath(),r,n,i===void 0?"true":i.value)}var j4=require("obsidian"),Zv=class{constructor(){this.menu=new j4.Menu}setItems(e){for(let r of e)this.menu.addItem(n=>{n.setTitle(r.name),r.icon&&n.setIcon(r.icon),r.warning&&n.setWarning(r.warning),n.onClick(r.onclick)})}show(e,r){this.menu.showAtPosition({x:e,y:r},document)}showWithEvent(e){this.menu.showAtMouseEvent(e),e.stopImmediatePropagation(),e.preventDefault()}};var Vw=require("obsidian");var Jv=class{constructor(e,r,n,i,a){this.mb=e,this.containerEl=r,this.filePath=n,this.code=i,this.hidden=a,this.jsEngine=mu(this.mb),this.renderComponent=new Vw.Component}async evaluateCode(e){let r=await this.jsEngine.internal.getContextForMarkdownOther(this.filePath);return this.jsEngine.internal.execute({code:this.code,context:r,container:this.containerEl,component:this.renderComponent,contextOverrides:e})}async evaluate(e){try{lt.empty(this.containerEl),lt.removeClass(this.containerEl,"mb-error"),this.renderComponent.unload(),this.renderComponent=new Vw.Component,this.renderComponent.load();let r=await this.evaluateCode(e),n=this.jsEngine.internal.createRenderer(this.containerEl,this.filePath,this.renderComponent);return this.hidden||await n.render(r.result),n.convertToSimpleObject(r.result)}catch(r){r instanceof Error&&(this.containerEl.innerText=r.message,lt.addClass(this.containerEl,"mb-error"));return}}unload(){this.renderComponent.unload()}};var Xv=class extends Gv{constructor(e){super(e),this.omb=e,this.app=e.app}getLifecycleHookValidator(){return he.instanceof(Tn.Component)}getImageSuggesterOptions(e){return H4(this.omb,e)}getSuggesterOptions(e){return Y4(this.omb,e)}async renderMarkdown(e,r,n){let i=new Tn.Component;return i.load(),await Tn.MarkdownRenderer.render(this.app,e,r,n,i),()=>i.unload()}executeCommandById(e){return this.app.commands.executeCommandById(e)}isJsEngineAvailable(){try{return mu(this.omb),!0}catch{return!1}}async jsEngineRunFile(e,r,n,i){let a=mu(this.omb),o=await a.internal.getContextForMarkdownCallingJSFile(r,e),s=new Tn.Component;return await a.internal.executeFile(e,{component:s,container:i,context:o,contextOverrides:n}),()=>s.unload()}async jsEngineRunCode(e,r,n,i){let a=mu(this.omb),o=await a.internal.getContextForMarkdownOther(r),s=new Tn.Component;return await a.internal.execute({code:e,component:s,container:i,context:o,contextOverrides:n}),()=>s.unload()}createJsRenderer(e,r,n,i){return new Jv(this.omb,e,r,n,i)}showNotice(e){new Tn.Notice(e)}parseYaml(e){return(0,Tn.parseYaml)(e)}stringifyYaml(e){return(0,Tn.stringifyYaml)(e)}setIcon(e,r){(0,Tn.setIcon)(e,r)}imagePathToUri(e){return this.app.vault.adapter.getResourcePath(e)}createModal(e,r){return new Yv(this.omb,e,r)}createSearchModal(e){return new jv(this.omb,e)}getAllCommands(){return this.app.commands.listCommands().map(e=>({id:e.id,name:e.name}))}createFuzzySearch(){return new Wv}createContextMenu(e){let r=new Zv;return r.setItems(e),r}async evaluateTemplaterTemplate(e,r){let n=yw(this.omb),i=this.app.vault.getAbstractFileByPath(e);if(!i||!(i instanceof Tn.TFile))throw new Error(`Template file not found: ${e}`);let a=this.app.vault.getAbstractFileByPath(r);if(!a||!(a instanceof Tn.TFile))throw new Error(`Target file not found: ${r}`);let o=n.create_running_config(i,a,4);return await n.read_and_parse_template(o)}async createNoteWithTemplater(e,r,n,i=!1,a=!1){let o=yw(this.omb),s=this.app.vault.getAbstractFileByPath(e);if(!s||!(s instanceof Tn.TFile))throw new Error(`Template file not found: ${e}`);let l;if(r!==void 0){let c=this.app.vault.getAbstractFileByPath(r);if(!c||!(c instanceof Tn.TFolder))throw new Error(`Folder not found: ${r}`);l=c}let u=await o.create_new_note_from_template(s,l,n,!1);return i&&u&&await this.mb.file.openInSourceMode(u,a),u?.path}};var Uw=require("obsidian");var Qv=class extends Lc{constructor(e,r,n){super(r,n),this.mb=e,this.mb.plugin.registerEvent(this.mb.app.metadataCache.on("changed",(i,a,o)=>{this.manager.onExternalUpdate(this,i.path,structuredClone(o.frontmatter)??{})}))}readExternal(e){let r=this.mb.app.vault.getAbstractFileByPath(e);if(r==null||!(r instanceof Uw.TFile))throw new Lt({errorLevel:"CRITICAL",effect:"can not get default cache item",cause:`no file for path "${e}" found or path is not a file`});let n=this.mb.app.metadataCache.getFileCache(r)?.frontmatter;return structuredClone(n)??{}}getDefaultCacheItem(e){let r=this.mb.app.vault.getAbstractFileByPath(e);if(r==null||!(r instanceof Uw.TFile))throw new Lt({errorLevel:"CRITICAL",effect:"can not get default cache item",cause:`no file for path "${e}" found or path is not a file`});let n=this.mb.app.metadataCache.getFileCache(r)?.frontmatter;return{data:structuredClone(n)??{},storagePath:e,file:r,...this.manager.getDefaultCacheItem()}}syncExternal(e){this.mb.app.fileManager.processFrontMatter(e.file,r=>{Object.assign(r,e.data)})}};var vp=class extends $s{constructor(e,r){super(void 0),this.ctx=e,this.element=r}getPosition(){let e=this.ctx.getSectionInfo(this.element);if(e)return{lineStart:e.lineStart,lineEnd:e.lineEnd}}};var Z4=require("obsidian");function qw(t,e){Se(e,!0);let r=new zc(e.mb,_r(),"","block",e.declaration);pu(t,{mountable:r}),Ee()}var yte=se('

');function zw(t,e){Se(e,!0);let r=e.mb.api.createInlineFieldFromString(e.declaration.inputField,"",void 0,"block"),n=e.mb.api.createInlineFieldFromString(e.declaration.declaration,"",void 0,"block");var i=yte(),a=ve(i),o=ve(a,!0);le(a);var s=ue(a,2);pu(s,{mountable:r});var l=ue(s,2);pu(l,{mountable:n});var u=ue(l,2),c=ve(u,!0);le(u),le(i),Le(()=>{vt(o,e.declaration.title),vt(c,e.declaration.display)}),K(t,i),Ee()}var bte=se("

Meta Bind Playground

",1),xte=se(`

Quick Reference

Error Messages

When creating Input Fields or View Fields warnings ( ) and errors ( ) can occur. These are clickable and will show a modal with detailed information about the error when clicked.

Unloaded Message

A message like this [MB_UNLOADED] ... means that Obsidian told Meta Bind to unload the field that was once displayed there. This usually happens when Meta Bind was disabled, such as after a plugin update, or when another plugin is interfering with Meta Bind.

Usually reopening the note or restarting Obsidian causes the field to display normally again.

Bind Targets

Bind Targets let the plugin know what frontmatter properties to bind Input Fields and View Fields to.

Playground

Input Fields

Input Fields let you change the frontmatter of your notes from inside of notes.

View Fields

View Fields let you view and perform calculations using the frontmatter of your notes from inside of notes. They will update instantly to reflect changes to the frontmatter made by input - fields and as fast as obsidian allows it for changes from other sources.

`);function XM(t,e){Te(e,!0);let r="INPUT[someInputFieldDeclaration]",n=Le(new Qt("exampleWarningErrorCollection")),i="INPUT[someInputFieldDeclaration]",a=Le(new Qt("exampleErrorErrorCollection"));t0(()=>{n.add(new sp({errorLevel:"WARNING",effect:"some example warning",cause:"some example reason"})),a.add(new sp({errorLevel:"ERROR",effect:"some example error",cause:"some example reason"}))});var o=Koe(),s=ye(o);su(s,{children:(D,_)=>{var N=Qoe(),C=le(Je(N),2),B=ye(C);Et(B,{get variant(){return"primary"},onclick:()=>{jt.open(jt.linkToHome())},children:(L,P)=>{Nt();var k=lr("Docs");ee(L,k)},$$slots:{default:!0}});var R=le(B,2);Et(R,{onclick:()=>{jt.open(jt.linkToGithub())},children:(L,P)=>{Nt();var k=lr("GitHub");ee(L,k)},$$slots:{default:!0}});var V=le(R,2);Et(V,{onclick:()=>{jt.open(jt.linkToIssues())},children:(L,P)=>{Nt();var k=lr("Report Issue");ee(L,k)},$$slots:{default:!0}}),ce(C),ee(D,N)},$$slots:{default:!0}});var l=le(s,6),u=le(ye(l));Re(()=>wt(u,"href",jt.linkToInputFields()));var c=le(u,2);Re(()=>wt(c,"href",jt.linkToViewFields()));var f=le(c,4),m=Vt(()=>({errorCollection:n,code:r}));Xf(f,{get plugin(){return e.plugin},get settings(){return z(m)}});var p=le(f,4),d=Vt(()=>({errorCollection:a,code:i}));Xf(p,{get plugin(){return e.plugin},get settings(){return z(d)}}),Nt(3),ce(l);var h=le(l,10),x=le(ye(h),2);Re(()=>wt(x,"href",jt.linkToInputFields()));var b=le(x,2);Re(()=>wt(b,"href",jt.linkToViewFields())),Nt(),ce(h);var T=le(h,6),v=ye(T);Re(()=>wt(v,"href",jt.linkToInputFields())),Nt(),ce(T);var A=le(T,2);Yt(A,17,()=>mF(e.plugin),er,(D,_)=>{ZM(D,{get declaration(){return z(_)[1]},get plugin(){return e.plugin}})});var w=le(A,4),y=ye(w);Re(()=>wt(y,"href",jt.linkToViewFields())),Nt(),ce(w);var E=le(w,2);Yt(E,17,()=>Object.values(ab),er,(D,_)=>{var N=Xr(),C=Je(N);Yt(C,17,()=>z(_),er,(B,R)=>{JM(B,{get declaration(){return z(R)},get plugin(){return e.plugin}})}),ee(D,N)}),ce(o),ee(t,o),De()}var sc="mb-playground-view-type",lx=class extends A9.ItemView{constructor(e,r){super(e),this.plugin=r}getViewType(){return sc}getDisplayText(){return"Meta Bind playground"}async onOpen(){this.contentEl.empty(),this.component=Vr(XM,{target:this.contentEl,props:{plugin:this.plugin}})}async onClose(){this.component&&Ur(this.component)}};var hi=require("obsidian");var S9=require("obsidian");var jm=require("obsidian");var Ym=require("obsidian");var ese=ue(" ",1),tse=ue('
 
');function QM(t,e){Te(e,!0);let r=lt(e,"template",15);function n(){e.plugin.internal.openButtonBuilderModal({submitText:"Submit",config:li(r()),onOkay:c=>{r(c)}})}function i(){let c=(0,Ym.stringifyYaml)(li(r()));navigator.clipboard.writeText(c),new Ym.Notice("meta-bind | Copied to clipboard")}var a=tse(),o=ye(a);su(o,{stretchChildren:!0,children:(c,f)=>{var m=ese(),p=Je(m),d=ye(p,!0);ce(p);var h=le(p,2);Et(h,{onclick:()=>n(),get variant(){return"primary"},tooltip:"Edit",children:(T,v)=>{Yr(T,{get plugin(){return e.plugin},iconName:"pen-line"})},$$slots:{default:!0}});var x=le(h,2);Et(x,{onclick:()=>i(),get variant(){return"default"},tooltip:"Copy",children:(T,v)=>{Yr(T,{get plugin(){return e.plugin},iconName:"copy"})},$$slots:{default:!0}});var b=le(x,2);Et(b,{onclick:()=>e.onDelete(r()),get variant(){return"destructive"},tooltip:"Delete",children:(T,v)=>{Yr(T,{get plugin(){return e.plugin},iconName:"x"})},$$slots:{default:!0}}),Re(()=>ht(d,r().id)),ee(c,m)},$$slots:{default:!0}});var s=le(o,2),l=ye(s),u=ye(l,!0);Re(()=>ht(u,(0,Ym.stringifyYaml)(r()))),ce(l),ce(s),ce(a),ee(t,a),De()}var rse=ue('

Some Templates Failed to Parse

'),nse=ue(" ",1),ise=ue("

Meta Bind Button Templates

");function KM(t,e){Te(e,!0);let r=bt(void 0),n=bt(Le(e.buttonConfigs));function i(x){$e(n,Le(z(n).filter(b=>b!==x)))}function a(){z(n).push(e.modal.plugin.api.buttonActionRunner.createDefaultButtonConfig())}async function o(){let x;try{x=(0,jm.parseYaml)(await navigator.clipboard.readText())}catch(T){console.warn(T),new jm.Notice("meta-bind | Can not parse button config. Check your button syntax. See the console for more details.");return}let b=Lc.safeParse(x);if(!b.success){let T=py(b.error,{unionSeparator:` -OR `,issueSeparator:" AND ",prefix:null});console.warn(new Cs({errorLevel:"ERROR",effect:"can not parse button config",cause:"zod validation failed. Check your button syntax",positionContext:T.message,docs:[jt.linkToButtonConfig()]})),console.warn(T),new jm.Notice("meta-bind | Can not parse button config. Check your button syntax. See the console for more details.");return}z(n).push(x)}function s(){$e(r,Le(e.modal.save(li(z(n))))),z(r)===void 0&&e.modal.close()}function l(){e.modal.close()}var u=ise(),c=le(ye(u),2);Yt(c,17,()=>z(n),er,(x,b,T)=>{QM(x,{get plugin(){return e.modal.plugin},onDelete:i,get template(){return z(n)[T]},set template(v){z(n)[T]=v}})});var f=le(c,2);Et(f,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Create new template",children:(x,b)=>{Nt();var T=lr("Add Template");ee(x,T)},$$slots:{default:!0}});var m=le(f,2);Et(m,{onclick:()=>o(),get variant(){return"default"},tooltip:"Create new template from YAML in clipboard",children:(x,b)=>{Nt();var T=lr("Add Template from Clipboard");ee(x,T)},$$slots:{default:!0}});var p=le(m,2);{var d=x=>{var b=rse(),T=le(ye(b),2),v=Vt(()=>({errorCollection:z(r)}));uu(T,{get settings(){return z(v)}}),ce(b),ee(x,b)};ot(p,x=>{z(r)&&x(d)})}var h=le(p,2);Qo(h,{children:(x,b)=>{var T=nse(),v=Je(T);Et(v,{onclick:()=>s(),get variant(){return"primary"},tooltip:"Save changes",children:(w,y)=>{Nt();var E=lr("Save");ee(w,E)},$$slots:{default:!0}});var A=le(v,2);Et(A,{onclick:()=>l(),tooltip:"Revert changes",children:(w,y)=>{Nt();var E=lr("Cancel");ee(w,E)},$$slots:{default:!0}}),ee(x,T)},$$slots:{default:!0}}),ce(u),ee(t,u),De()}var cx=class extends S9.Modal{constructor(e,r){super(e),this.plugin=r}onOpen(){this.contentEl.empty(),this.component&&Ur(this.component),this.component=Vr(KM,{target:this.contentEl,props:{buttonConfigs:JN(this.plugin.settings.buttonTemplates),modal:this}})}onClose(){this.contentEl.empty(),this.component&&Ur(this.component)}save(e){let r=this.plugin.api.buttonManager.setButtonTemplates(e);if(r.hasErrors())return r;this.plugin.settings.buttonTemplates=e,this.plugin.saveSettings()}};var E9=require("obsidian");var ase=ue(''),ose=ue('

Some folder paths are invalid

'),sse=ue(" ",1),use=ue('
Folder Path
');function eC(t,e){Te(e,!0);let r=bt(void 0),n=bt(Le(e.excludedFolders));function i(h){$e(n,Le(z(n).filter(x=>x!==h)))}function a(){z(n).push("")}function o(){$e(r,Le(e.modal.save(li(z(n))))),z(r)===void 0&&e.modal.close()}function s(){e.modal.close()}var l=use(),u=ye(l),c=le(ye(u));Yt(c,21,()=>z(n),er,(h,x,b)=>{var T=ase(),v=ye(T),A=ye(v);Tt(A),ce(v);var w=le(v),y=ye(w);Et(y,{onclick:()=>i(z(x)),tooltip:"Delete",children:(E,D)=>{Yr(E,{get plugin(){return e.plugin},iconName:"x"})},$$slots:{default:!0}}),ce(w),ce(T),_t(A,()=>z(n)[b],E=>z(n)[b]=E),ee(h,T)}),ce(c),ce(u);var f=le(u,2);Et(f,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Add new excluded folder",children:(h,x)=>{Nt();var b=lr("Add folder");ee(h,b)},$$slots:{default:!0}});var m=le(f,2);{var p=h=>{var x=ose(),b=le(ye(x),2),T=Vt(()=>({errorCollection:z(r)}));uu(b,{get settings(){return z(T)}}),ce(x),ee(h,x)};ot(m,h=>{z(r)&&h(p)})}var d=le(m,2);Qo(d,{children:(h,x)=>{var b=sse(),T=Je(b);Et(T,{onclick:()=>o(),get variant(){return"primary"},tooltip:"Save changes",children:(A,w)=>{Nt();var y=lr("Save");ee(A,y)},$$slots:{default:!0}});var v=le(T,2);Et(v,{onclick:()=>s(),tooltip:"Revert changes",children:(A,w)=>{Nt();var y=lr("Cancel");ee(A,y)},$$slots:{default:!0}}),ee(h,b)},$$slots:{default:!0}}),ce(l),ee(t,l),De()}var fx=class extends E9.Modal{constructor(e,r){super(e),this.plugin=r}onOpen(){this.contentEl.empty(),this.component&&Ur(this.component),this.component=Vr(eC,{target:this.contentEl,props:{excludedFolders:this.plugin.settings.excludedFolders.slice(),modal:this,plugin:this.plugin}})}onClose(){this.contentEl.empty(),this.component&&Ur(this.component)}save(e){for(let r of e)if(r===""){let n=new Qt("Excluded folders");return n.add(new Error(`Invalid Folder Path '${r}'. Folder path may not be empty.`)),n}this.plugin.settings.excludedFolders=e,this.plugin.saveSettings()}};var T9=require("obsidian");var lse=ue(' ',1),cse=ue('
');function tC(t,e){Te(e,!0);let r=lt(e,"template",15);var n=cse(),i=ye(n);su(i,{children:(o,s)=>{var l=lse(),u=Je(l);Tt(u);var c=le(u,2);Et(c,{onclick:()=>e.onDelete(r()),get variant(){return"destructive"},tooltip:"Delete Template",children:(f,m)=>{Yr(f,{get plugin(){return e.plugin},iconName:"x"})},$$slots:{default:!0}}),_t(u,()=>r().name,f=>r(r().name=f,!0)),ee(o,l)},$$slots:{default:!0}});var a=le(i,2);On(a),ce(n),_t(a,()=>r().declaration,o=>r(r().declaration=o,!0)),ee(t,n),De()}var fse=ue('

Some Templates Failed to Parse

'),pse=ue(" ",1),mse=ue("

Meta Bind Input Field Templates

");function rC(t,e){Te(e,!0);let r=bt(void 0),n=bt(Le(e.inputFieldTemplates));function i(d){$e(n,Le(z(n).filter(h=>h!==d)))}function a(){z(n).push({name:"",declaration:""})}function o(){$e(r,Le(e.modal.save(li(z(n))))),z(r)===void 0&&e.modal.close()}function s(){e.modal.close()}var l=mse(),u=le(ye(l),2);Yt(u,17,()=>z(n),er,(d,h)=>{tC(d,{get plugin(){return e.modal.plugin},get template(){return z(h)},onDelete:i})});var c=le(u,2);Et(c,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Create New Template",children:(d,h)=>{Nt();var x=lr("Add Template");ee(d,x)},$$slots:{default:!0}});var f=le(c,2);{var m=d=>{var h=fse(),x=le(ye(h),2),b=Vt(()=>({errorCollection:z(r)}));uu(x,{get settings(){return z(b)}}),ce(h),ee(d,h)};ot(f,d=>{z(r)&&d(m)})}var p=le(f,2);Qo(p,{children:(d,h)=>{var x=pse(),b=Je(x);Et(b,{onclick:()=>o(),get variant(){return"primary"},tooltip:"Save Changes",children:(v,A)=>{Nt();var w=lr("Save");ee(v,w)},$$slots:{default:!0}});var T=le(b,2);Et(T,{onclick:()=>s(),tooltip:"Revert Changes",children:(v,A)=>{Nt();var w=lr("Cancel");ee(v,w)},$$slots:{default:!0}}),ee(d,x)},$$slots:{default:!0}}),ce(l),ee(t,l),De()}var px=class extends T9.Modal{constructor(e,r){super(e),this.plugin=r}onOpen(){this.contentEl.empty(),this.component&&Ur(this.component),this.component=Vr(rC,{target:this.contentEl,props:{inputFieldTemplates:JSON.parse(JSON.stringify(this.plugin.settings.inputFieldTemplates)),modal:this}})}onClose(){this.contentEl.empty(),this.component&&Ur(this.component)}save(e){let r=this.plugin.api.inputFieldParser.parseTemplates(e);if(r.hasErrors())return r;this.plugin.settings.inputFieldTemplates=e,this.plugin.saveSettings()}};var mx=class extends hi.PluginSettingTab{constructor(e,r){super(e,r),this.plugin=r}display(){let{containerEl:e}=this;if(e.empty(),this.plugin.build==="dev"||this.plugin.build==="canary"){e.createEl("p",{text:`You are using a ${this.plugin.build} build (${this.plugin.manifest.version}). This build is not intended for production use. Use at your own risk.`,cls:"mb-error"});let r=new hi.ButtonComponent(e);r.setButtonText("Learn About Canary Builds"),r.setCta(),r.onClick(()=>{jt.open(jt.linkToCanaryBuilds())})}new hi.Setting(e).setName("Quick access").addButton(r=>{r.setCta(),r.setButtonText("Docs"),r.onClick(()=>{jt.open(jt.linkToHome())})}).addButton(r=>{r.setButtonText("Open FAQ"),r.onClick(()=>{this.plugin.activateView(sc)})}).addButton(r=>{r.setButtonText("GitHub"),r.onClick(()=>{jt.open(jt.linkToGithub())})}).addButton(r=>{r.setButtonText("Report issue"),r.onClick(()=>{jt.open(jt.linkToIssues())})}),new hi.Setting(e).setName("Enable syntax highlighting").setDesc("Enable syntax highlighting for meta bind syntax. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.plugin.settings.enableSyntaxHighlighting),r.onChange(n=>{this.plugin.settings.enableSyntaxHighlighting=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("Enable editor right-click menu").setDesc("Enable a meta bind menu section in the editor right-click menu. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.plugin.settings.enableEditorRightClickMenu),r.onChange(n=>{this.plugin.settings.enableEditorRightClickMenu=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("Input field templates").setDesc("You can specify input field templates here, and access them using `INPUT[template_name][overrides (optional)]` in your notes.").addButton(r=>{r.setButtonText("Edit templates"),r.onClick(()=>{new px(this.app,this.plugin).open()})}),new hi.Setting(e).setName("Button templates").setDesc("You can specify button field templates here, and access them in inline buttons.").addButton(r=>{r.setButtonText("Edit templates"),r.onClick(()=>{new cx(this.app,this.plugin).open()})}),new hi.Setting(e).setName("Excluded folders").setDesc("You can specify excluded folders here. The plugin will not work within excluded folders.").addButton(r=>{r.setButtonText("Edit excluded folders"),r.onClick(()=>{new fx(this.app,this.plugin).open()})}),new hi.Setting(e).setName("View fields display null as empty").setDesc("Display nothing instead of null, if the frontmatter value is empty, in text view fields.").addToggle(r=>{r.setValue(this.plugin.settings.viewFieldDisplayNullAsEmpty),r.onChange(n=>{this.plugin.settings.viewFieldDisplayNullAsEmpty=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("Enable JavaScript").setDesc("Enable features that run user written JavaScript. This is potentially DANGEROUS, thus it's disabled by default. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.plugin.settings.enableJs),r.onChange(n=>{this.plugin.settings.enableJs=n,this.plugin.saveSettings()})}),e.createEl("h2",{text:"Date and time settings"}),new hi.Setting(e).setName("Date format").setDesc("The date format to be used by this plugin. Changing this setting will break the parsing of existing date inputs. Here is a list of all available date tokes https://momentjs.com/docs/#/displaying/.").addText(r=>{r.setValue(this.plugin.settings.preferredDateFormat),r.onChange(n=>{this.plugin.settings.preferredDateFormat=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("First weekday").setDesc("Specify the first weekday for the datepicker.").addDropdown(r=>{for(let n of fl)r.addOption(n.name,n.name);r.setValue(this.plugin.settings.firstWeekday.name),r.onChange(n=>{this.plugin.settings.firstWeekday=fl.find(i=>i.name===n),this.plugin.saveSettings()})}),e.createEl("h2",{text:"Advanced settings"}),new hi.Setting(e).setName("Dev mode").setDesc("Enable dev mode. Not recommended unless you want to debug this plugin.").addToggle(r=>{r.setValue(this.plugin.settings.devMode),r.onChange(n=>{this.plugin.settings.devMode=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("Disable code block restrictions").setDesc("Disable restrictions on which input fields can be created in which code blocks. Not recommended unless you know what you are doing.").addToggle(r=>{r.setValue(this.plugin.settings.ignoreCodeBlockRestrictions),r.onChange(n=>{this.plugin.settings.ignoreCodeBlockRestrictions=n,this.plugin.saveSettings()})}),new hi.Setting(e).setName("Sync interval").setDesc(`The interval in milli-seconds between disk writes. Changing this number is not recommended except if your hard drive is exceptionally slow. Standard: ${Po.syncInterval}; Minimum: ${Po.minSyncInterval}; Maximum: ${Po.maxSyncInterval}`).addText(r=>{r.setValue(this.plugin.settings.syncInterval.toString()),r.onChange(n=>{this.plugin.settings.syncInterval=Number.parseInt(n),Number.isNaN(this.plugin.settings.syncInterval)&&(this.plugin.settings.syncInterval=Po.syncInterval),this.plugin.settings.syncIntervalPo.maxSyncInterval&&(this.plugin.settings.syncInterval=Po.maxSyncInterval),this.plugin.saveSettings()})})}};var nC=(n=>(n.DEV="dev",n.CANARY="canary",n.RELEASE="release",n))(nC||{}),dx=class extends hx.Plugin{async onload(){console.log("meta-bind | Main >> loading"),console.time("meta-bind | Main >> load-time"),this.build=this.determineBuild(),await this.loadSettings(),this.addSettingTab(new mx(this.app,this)),this.dependencyManager=new Ld(this,[{name:"Dataview",pluginId:"dataview",minVersion:new Na(0,5,64)},{name:"JS Engine",pluginId:"js-engine",minVersion:new Na(0,1,0)},{name:"Templater",pluginId:"templater-obsidian",minVersion:new Na(2,2,3)}]),!this.dependencyManager.checkDependenciesOnStartup()&&(this.api=new Wy(this),this.internal=new sx(this),this.mountableManager=new Dd,this.setUpMetadataManager(),this.loadTemplates(),this.addPostProcessors(),this.registerEditorExtension(fF(this)),this.addCommands(),lF(this),this.registerView(sc,e=>new lx(e,this)),this.addStatusBarBuildIndicator(),this.settings.enableEditorRightClickMenu&&this.registerEvent(this.app.workspace.on("editor-menu",(e,r)=>{vF(e,r,this)})),console.timeEnd("meta-bind | Main >> load-time"))}onunload(){console.log("meta-bind | Main >> unload"),this.mountableManager.unload()}determineBuild(){return this.manifest.version.includes("canary")?"canary":"release"}setUpMetadataManager(){this.metadataManager=new Td,this.metadataManager.registerSource(new ux(this,"frontmatter",this.metadataManager)),this.metadataManager.registerSource(new fd("memory",this.metadataManager)),this.metadataManager.registerSource(new pd("globalMemory",this.metadataManager)),this.metadataManager.registerSource(new md("scope",this.metadataManager)),this.metadataManager.setDefaultSource("frontmatter"),this.registerEvent(this.app.vault.on("rename",(e,r)=>{this.mountableManager.unloadFile(r),this.metadataManager.onStoragePathRenamed(r,e.path)})),this.registerEvent(this.app.vault.on("delete",e=>{this.mountableManager.unloadFile(e.path),this.metadataManager.onStoragePathDeleted(e.path)})),this.registerInterval(window.setInterval(()=>this.metadataManager.cycle(),this.settings.syncInterval))}addPostProcessors(){this.registerMarkdownPostProcessor((e,r)=>{let n=e.querySelectorAll("code"),i=r.sourcePath;for(let a=0;a{let i=r,a=e.trim(),o=n.sourcePath,s=this.api.isInlineFieldDeclarationAndGetType(a);if(s===void 0)return;let l=this.api.createInlineFieldOfTypeFromString(s,a,o,void 0,"block",new Wm(n,r));this.api.wrapInMDRC(l,i,n)}),this.registerMarkdownCodeBlockProcessor("meta-bind-js-view",(e,r,n)=>{let i=this.api.createJsViewFieldMountable(n.sourcePath,{declaration:e});this.api.wrapInMDRC(i,r,n)}),this.registerMarkdownCodeBlockProcessor("meta-bind-embed",(e,r,n)=>{let i=this.api.createEmbedMountable(n.sourcePath,{content:e,depth:0});this.api.wrapInMDRC(i,r,n)});for(let e=1;e<=ld;e++)this.registerMarkdownCodeBlockProcessor(`meta-bind-embed-internal-${e}`,(r,n,i)=>{let a=this.api.createEmbedMountable(i.sourcePath,{content:r,depth:e});this.api.wrapInMDRC(a,n,i)});this.registerMarkdownCodeBlockProcessor("meta-bind-button",(e,r,n)=>{let i=this.api.createButtonMountable(n.sourcePath,{declaration:e,isPreview:!1,position:new Wm(n,r)});this.api.wrapInMDRC(i,r,n)})}addCommands(){this.addCommand({id:"open-docs",name:"Open docs",callback:()=>{window.open("https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/","_blank")}}),this.addCommand({id:"open-playground",name:"Open playground",callback:()=>{this.activateView(sc)}}),this.addCommand({id:"open-help",name:"Open Help",callback:()=>{this.activateView(sc)}}),this.addCommand({id:"open-button-builder",name:"Open button builder",callback:()=>{this.internal.openButtonBuilderModal({onOkay:e=>{window.navigator.clipboard.writeText(`\`\`\`meta-bind-button -${(0,hx.stringifyYaml)(e)} -\`\`\``)},submitText:"Copy to Clipboard"})}}),this.addCommand({id:"copy-command-id",name:"Select and copy command id",callback:()=>{this.internal.openCommandSelectModal(e=>{window.navigator.clipboard.writeText(e.id)})}})}addStatusBarBuildIndicator(){if(this.build==="dev"){let e=this.addStatusBarItem();e.setText("Meta Bind Dev Build"),e.addClass("mb-error"),this.register(()=>e.remove())}if(this.build==="canary"){let e=this.addStatusBarItem();e.setText(`Meta Bind Canary Build (${this.manifest.version})`),e.addClass("mb-error"),this.register(()=>e.remove())}}loadTemplates(){if(!this.api)return;let e=this.api.inputFieldParser.parseTemplates(this.settings.inputFieldTemplates);e.hasErrors()&&console.warn("meta-bind | failed to parse input field templates",e);let r=this.api.buttonManager.setButtonTemplates(this.settings.buttonTemplates);r.hasErrors()&&console.warn("meta-bind | failed to parse button templates",r)}async loadSettings(){console.log("meta-bind | Main >> loading settings");let e=await this.loadData()??{};typeof e=="object"&&e!=null&&(delete e.inputTemplates,delete e.useUsDateInputOrder),this.settings=Object.assign({},Po,e),this.updateInternalSettings(),vd(e,this.settings)||await this.saveSettings()}async saveSettings(){console.log("meta-bind | Main >> settings save"),this.updateInternalSettings(),await this.saveData(this.settings)}updateInternalSettings(){oi.dateFormat=this.settings.preferredDateFormat,tF(this.settings.firstWeekday),this.loadTemplates()}async onExternalSettingsChange(){await this.loadSettings()}async activateView(e){let{workspace:r}=this.app,n,i=r.getLeavesOfType(e);i.length>0?n=i[0]:(n=r.getLeaf("tab"),await n.setViewState({type:e,active:!0})),r.revealLeaf(n)}}; + fields and as fast as obsidian allows it for changes from other sources.

`);function Hw(t,e){Se(e,!0);let r="INPUT[someInputFieldDeclaration]",n=dt(new er("exampleWarningErrorCollection")),i="INPUT[someInputFieldDeclaration]",a=dt(new er("exampleErrorErrorCollection"));Nb(()=>{n.add(new ef({errorLevel:"WARNING",effect:"some example warning",cause:"some example reason"})),a.add(new ef({errorLevel:"ERROR",effect:"some example error",cause:"some example reason"}))});var o=xte(),s=ve(o);Ns(s,{children:(T,_)=>{var C=bte(),N=ue(We(C),2),I=ve(N);yt(I,{get variant(){return"primary"},onclick:()=>{qt.open(qt.linkToHome())},children:(V,P)=>{_t();var k=Vt("Docs");K(V,k)},$$slots:{default:!0}});var R=ue(I,2);yt(R,{onclick:()=>{qt.open(qt.linkToGithub())},children:(V,P)=>{_t();var k=Vt("GitHub");K(V,k)},$$slots:{default:!0}});var L=ue(R,2);yt(L,{onclick:()=>{qt.open(qt.linkToIssues())},children:(V,P)=>{_t();var k=Vt("Report Issue");K(V,k)},$$slots:{default:!0}}),le(N),K(T,C)},$$slots:{default:!0}});var l=ue(s,6),u=ue(ve(l)),c=ue(u,2),f=ue(c,4);let m=cr(()=>({errorCollection:n,code:r}));Gc(f,{get mb(){return e.mb},get settings(){return q(m)}});var p=ue(f,4);let d=cr(()=>({errorCollection:a,code:i}));Gc(p,{get mb(){return e.mb},get settings(){return q(d)}}),_t(3),le(l);var h=ue(l,10),b=ue(ve(h),2),y=ue(b,2);_t(),le(h);var D=ue(h,6),v=ve(D);_t(),le(D);var A=ue(D,2);Ut(A,17,()=>h4(e.mb),Zt,(T,_)=>{qw(T,{get declaration(){return q(_)[1]},get mb(){return e.mb}})});var w=ue(A,4),x=ve(w);_t(),le(w);var E=ue(w,2);Ut(E,17,()=>Object.values(hw),Zt,(T,_)=>{var C=Gr(),N=We(C);Ut(N,17,()=>q(_),Zt,(I,R)=>{zw(I,{get declaration(){return q(R)},get mb(){return e.mb}})}),K(T,C)}),le(o),Le((T,_,C,N,I,R)=>{rt(u,"href",T),rt(c,"href",_),rt(b,"href",C),rt(y,"href",N),rt(v,"href",I),rt(x,"href",R)},[()=>qt.linkToInputFields(),()=>qt.linkToViewFields(),()=>qt.linkToInputFields(),()=>qt.linkToViewFields(),()=>qt.linkToInputFields(),()=>qt.linkToViewFields()]),K(t,o),Ee()}var cl="mb-playground-view-type",Kv=class extends Z4.ItemView{constructor(e,r){super(e),this.mb=r}getViewType(){return cl}getDisplayText(){return"Meta Bind playground"}async onOpen(){this.contentEl.empty(),this.component=Br(Hw,{target:this.contentEl,props:{mb:this.mb}})}async onClose(){this.component&&Dr(this.component)}};var ri=require("obsidian");var J4=require("obsidian");var bp=require("obsidian");var yp=require("obsidian");var wte=se(" ",1),_te=se('
 
');function Gw(t,e){Se(e,!0);let r=at(e,"template",15);function n(){e.mb.internal.openButtonBuilderModal({submitText:"Submit",config:ft(r()),onOkay:c=>{r(c)}})}function i(){let c=(0,yp.stringifyYaml)(ft(r()));navigator.clipboard.writeText(c),new yp.Notice("meta-bind | Copied to clipboard")}var a=_te(),o=ve(a);Ns(o,{stretchChildren:!0,children:(c,f)=>{var m=wte(),p=We(m),d=ve(p,!0);le(p);var h=ue(p,2);yt(h,{onclick:()=>n(),get variant(){return"primary"},tooltip:"Edit",children:(D,v)=>{Or(D,{get mb(){return e.mb},iconName:"pen-line"})},$$slots:{default:!0}});var b=ue(h,2);yt(b,{onclick:()=>i(),get variant(){return"default"},tooltip:"Copy",children:(D,v)=>{Or(D,{get mb(){return e.mb},iconName:"copy"})},$$slots:{default:!0}});var y=ue(b,2);yt(y,{onclick:()=>e.onDelete(r()),get variant(){return"destructive"},tooltip:"Delete",children:(D,v)=>{Or(D,{get mb(){return e.mb},iconName:"x"})},$$slots:{default:!0}}),Le(()=>vt(d,r().id)),K(c,m)},$$slots:{default:!0}});var s=ue(o,2),l=ve(s),u=ve(l,!0);le(l),le(s),le(a),Le(c=>vt(u,c),[()=>(0,yp.stringifyYaml)(r())]),K(t,a),Ee()}var Ate=se('

Some Templates Failed to Parse

'),Dte=se(" ",1),Ste=se("

Meta Bind Button Templates

");function Ww(t,e){Se(e,!0);let r=it(void 0),n=it(dt(e.buttonConfigs));function i(b){ke(n,q(n).filter(y=>y!==b),!0)}function a(){q(n).push(e.modal.mb.buttonActionRunner.createDefaultButtonConfig())}async function o(){let b;try{b=(0,bp.parseYaml)(await navigator.clipboard.readText())}catch(D){console.warn(D),new bp.Notice("meta-bind | Can not parse button config. Check your button syntax. See the console for more details.");return}let y=lc.safeParse(b);if(!y.success){let D=Rd(y.error,{unionSeparator:` +OR `,issueSeparator:" AND ",prefix:null});console.warn(new es({errorLevel:"ERROR",effect:"can not parse button config",cause:"zod validation failed. Check your button syntax",positionContext:D.message,docs:[qt.linkToButtonConfig()]})),console.warn(D),new bp.Notice("meta-bind | Can not parse button config. Check your button syntax. See the console for more details.");return}q(n).push(b)}function s(){ke(r,e.modal.save(ft(q(n))),!0),q(r)===void 0&&e.modal.close()}function l(){e.modal.close()}var u=Ste(),c=ue(ve(u),2);Ut(c,17,()=>q(n),Zt,(b,y,D)=>{Gw(b,{get mb(){return e.modal.mb},onDelete:i,get template(){return q(n)[D]},set template(v){q(n)[D]=v}})});var f=ue(c,2);yt(f,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Create new template",children:(b,y)=>{_t();var D=Vt("Add Template");K(b,D)},$$slots:{default:!0}});var m=ue(f,2);yt(m,{onclick:()=>o(),get variant(){return"default"},tooltip:"Create new template from YAML in clipboard",children:(b,y)=>{_t();var D=Vt("Add Template from Clipboard");K(b,D)},$$slots:{default:!0}});var p=ue(m,2);{var d=b=>{var y=Ate(),D=ue(ve(y),2);let v=cr(()=>({errorCollection:q(r)}));Fs(D,{get settings(){return q(v)}}),le(y),K(b,y)};et(p,b=>{q(r)&&b(d)})}var h=ue(p,2);Ma(h,{children:(b,y)=>{var D=Dte(),v=We(D);yt(v,{onclick:()=>s(),get variant(){return"primary"},tooltip:"Save changes",children:(w,x)=>{_t();var E=Vt("Save");K(w,E)},$$slots:{default:!0}});var A=ue(v,2);yt(A,{onclick:()=>l(),tooltip:"Revert changes",children:(w,x)=>{_t();var E=Vt("Cancel");K(w,E)},$$slots:{default:!0}}),K(b,D)},$$slots:{default:!0}}),le(u),K(t,u),Ee()}var ey=class extends J4.Modal{constructor(e,r){super(e),this.mb=r}onOpen(){this.contentEl.empty(),this.component&&Dr(this.component),this.component=Br(Ww,{target:this.contentEl,props:{buttonConfigs:structuredClone(this.mb.getSettings().buttonTemplates),modal:this}})}onClose(){this.contentEl.empty(),this.component&&Dr(this.component)}save(e){let r=this.mb.buttonManager.setButtonTemplates(e);if(r.hasErrors())return r;this.mb.updateSettings(n=>{n.buttonTemplates=e})}};var X4=require("obsidian");var Ete=se(''),Tte=se('

Some folder paths are invalid

'),Mte=se(" ",1),Cte=se('
Folder Path
');function Yw(t,e){Se(e,!0);let r=it(void 0),n=it(dt(e.excludedFolders));function i(h){ke(n,q(n).filter(b=>b!==h),!0)}function a(){q(n).push("")}function o(){ke(r,e.modal.save(ft(q(n))),!0),q(r)===void 0&&e.modal.close()}function s(){e.modal.close()}var l=Cte(),u=ve(l),c=ue(ve(u));Ut(c,21,()=>q(n),Zt,(h,b,y)=>{var D=Ete(),v=ve(D),A=ve(v);At(A),le(v);var w=ue(v),x=ve(w);yt(x,{onclick:()=>i(q(b)),tooltip:"Delete",children:(E,T)=>{Or(E,{get mb(){return e.mb},iconName:"x"})},$$slots:{default:!0}}),le(w),le(D),xt(A,()=>q(n)[y],E=>q(n)[y]=E),K(h,D)}),le(c),le(u);var f=ue(u,2);yt(f,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Add new excluded folder",children:(h,b)=>{_t();var y=Vt("Add folder");K(h,y)},$$slots:{default:!0}});var m=ue(f,2);{var p=h=>{var b=Tte(),y=ue(ve(b),2);let D=cr(()=>({errorCollection:q(r)}));Fs(y,{get settings(){return q(D)}}),le(b),K(h,b)};et(m,h=>{q(r)&&h(p)})}var d=ue(m,2);Ma(d,{children:(h,b)=>{var y=Mte(),D=We(y);yt(D,{onclick:()=>o(),get variant(){return"primary"},tooltip:"Save changes",children:(A,w)=>{_t();var x=Vt("Save");K(A,x)},$$slots:{default:!0}});var v=ue(D,2);yt(v,{onclick:()=>s(),tooltip:"Revert changes",children:(A,w)=>{_t();var x=Vt("Cancel");K(A,x)},$$slots:{default:!0}}),K(h,y)},$$slots:{default:!0}}),le(l),K(t,l),Ee()}var ty=class extends X4.Modal{constructor(e,r){super(e),this.mb=r}onOpen(){this.contentEl.empty(),this.component&&Dr(this.component),this.component=Br(Yw,{target:this.contentEl,props:{excludedFolders:structuredClone(this.mb.getSettings().excludedFolders),modal:this,mb:this.mb}})}onClose(){this.contentEl.empty(),this.component&&Dr(this.component)}save(e){for(let r of e)if(r===""){let n=new er("Excluded folders");return n.add(new Error(`Invalid Folder Path '${r}'. Folder path may not be empty.`)),n}this.mb.updateSettings(r=>{r.excludedFolders=e})}};var Q4=require("obsidian");var Nte=se(' ',1),Fte=se('
');function jw(t,e){Se(e,!0);let r=at(e,"template",15);var n=Fte(),i=ve(n);Ns(i,{children:(o,s)=>{var l=Nte(),u=We(l);At(u);var c=ue(u,2);yt(c,{onclick:()=>e.onDelete(r()),get variant(){return"destructive"},tooltip:"Delete Template",children:(f,m)=>{Or(f,{get mb(){return e.mb},iconName:"x"})},$$slots:{default:!0}}),xt(u,()=>r().name,f=>r(r().name=f,!0)),K(o,l)},$$slots:{default:!0}});var a=ue(i,2);Dn(a),le(n),xt(a,()=>r().declaration,o=>r(r().declaration=o,!0)),K(t,n),Ee()}var Ite=se('

Some Templates Failed to Parse

'),Bte=se(" ",1),kte=se("

Meta Bind Input Field Templates

");function Zw(t,e){Se(e,!0);let r=it(void 0),n=it(dt(e.inputFieldTemplates));function i(d){ke(n,q(n).filter(h=>h!==d),!0)}function a(){q(n).push({name:"",declaration:""})}function o(){ke(r,e.modal.save(ft(q(n))),!0),q(r)===void 0&&e.modal.close()}function s(){e.modal.close()}var l=kte(),u=ue(ve(l),2);Ut(u,17,()=>q(n),Zt,(d,h)=>{jw(d,{get mb(){return e.modal.mb},get template(){return q(h)},onDelete:i})});var c=ue(u,2);yt(c,{onclick:()=>a(),get variant(){return"primary"},tooltip:"Create New Template",children:(d,h)=>{_t();var b=Vt("Add Template");K(d,b)},$$slots:{default:!0}});var f=ue(c,2);{var m=d=>{var h=Ite(),b=ue(ve(h),2);let y=cr(()=>({errorCollection:q(r)}));Fs(b,{get settings(){return q(y)}}),le(h),K(d,h)};et(f,d=>{q(r)&&d(m)})}var p=ue(f,2);Ma(p,{children:(d,h)=>{var b=Bte(),y=We(b);yt(y,{onclick:()=>o(),get variant(){return"primary"},tooltip:"Save Changes",children:(v,A)=>{_t();var w=Vt("Save");K(v,w)},$$slots:{default:!0}});var D=ue(y,2);yt(D,{onclick:()=>s(),tooltip:"Revert Changes",children:(v,A)=>{_t();var w=Vt("Cancel");K(v,w)},$$slots:{default:!0}}),K(d,b)},$$slots:{default:!0}}),le(l),K(t,l),Ee()}var ry=class extends Q4.Modal{constructor(e,r){super(e),this.mb=r}onOpen(){this.contentEl.empty(),this.component&&Dr(this.component),this.component=Br(Zw,{target:this.contentEl,props:{inputFieldTemplates:structuredClone(this.mb.getSettings().inputFieldTemplates),modal:this}})}onClose(){this.contentEl.empty(),this.component&&Dr(this.component)}save(e){let r=this.mb.inputFieldParser.parseTemplates(e);if(r.hasErrors())return r;this.mb.updateSettings(n=>{n.inputFieldTemplates=e})}};var ny=class extends ri.PluginSettingTab{constructor(e,r){super(e,r.plugin),this.mb=r}display(){let{containerEl:e}=this;if(e.empty(),this.mb.build==="dev"||this.mb.build==="canary"){e.createEl("p",{text:`You are using a ${this.mb.build} build (1.4.2). This build is not intended for production use. Use at your own risk.`,cls:"mb-error"});let r=new ri.ButtonComponent(e);r.setButtonText("Learn About Canary Builds"),r.setCta(),r.onClick(()=>{qt.open(qt.linkToCanaryBuilds())})}new ri.Setting(e).setName("Quick access").addButton(r=>{r.setCta(),r.setButtonText("Docs"),r.onClick(()=>{qt.open(qt.linkToHome())})}).addButton(r=>{r.setButtonText("Open FAQ"),r.onClick(()=>{this.mb.activateView(cl)})}).addButton(r=>{r.setButtonText("GitHub"),r.onClick(()=>{qt.open(qt.linkToGithub())})}).addButton(r=>{r.setButtonText("Report issue"),r.onClick(()=>{qt.open(qt.linkToIssues())})}),new ri.Setting(e).setName("Enable syntax highlighting").setDesc("Enable syntax highlighting for meta bind syntax. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.mb.getSettings().enableSyntaxHighlighting),r.onChange(n=>{this.mb.updateSettings(i=>{i.enableSyntaxHighlighting=n})})}),new ri.Setting(e).setName("Enable editor right-click menu").setDesc("Enable a meta bind menu section in the editor right-click menu. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.mb.getSettings().enableEditorRightClickMenu),r.onChange(n=>{this.mb.updateSettings(i=>{i.enableEditorRightClickMenu=n})})}),new ri.Setting(e).setName("Input field templates").setDesc("You can specify input field templates here, and access them using `INPUT[template_name][overrides (optional)]` in your notes.").addButton(r=>{r.setButtonText("Edit templates"),r.onClick(()=>{new ry(this.app,this.mb).open()})}),new ri.Setting(e).setName("Button templates").setDesc("You can specify button field templates here, and access them in inline buttons.").addButton(r=>{r.setButtonText("Edit templates"),r.onClick(()=>{new ey(this.app,this.mb).open()})}),new ri.Setting(e).setName("Excluded folders").setDesc("You can specify excluded folders here. The plugin will not work within excluded folders.").addButton(r=>{r.setButtonText("Edit excluded folders"),r.onClick(()=>{new ty(this.app,this.mb).open()})}),new ri.Setting(e).setName("View fields display null as empty").setDesc("Display nothing instead of null, if the frontmatter value is empty, in text view fields.").addToggle(r=>{r.setValue(this.mb.getSettings().viewFieldDisplayNullAsEmpty),r.onChange(n=>{this.mb.updateSettings(i=>{i.viewFieldDisplayNullAsEmpty=n})})}),new ri.Setting(e).setName("Enable JavaScript").setDesc("Enable features that run user written JavaScript. This is potentially DANGEROUS, thus it's disabled by default. RESTART REQUIRED.").addToggle(r=>{r.setValue(this.mb.getSettings().enableJs),r.onChange(n=>{this.mb.updateSettings(i=>{i.enableJs=n})})}),e.createEl("h2",{text:"Date and time settings"}),new ri.Setting(e).setName("Date format").setDesc("The date format to be used by this plugin. Changing this setting will break the parsing of existing date inputs. Here is a list of all available date tokes https://momentjs.com/docs/#/displaying/.").addText(r=>{r.setValue(this.mb.getSettings().preferredDateFormat),r.onChange(n=>{this.mb.updateSettings(i=>{i.preferredDateFormat=n})})}),new ri.Setting(e).setName("First weekday").setDesc("Specify the first weekday for the datepicker.").addDropdown(r=>{for(let n of Yu)r.addOption(n.name,n.name);r.setValue(this.mb.getSettings().firstWeekday.name),r.onChange(n=>{this.mb.updateSettings(i=>{i.firstWeekday=Yu.find(a=>a.name===n)})})}),e.createEl("h2",{text:"Advanced settings"}),new ri.Setting(e).setName("Dev mode").setDesc("Enable dev mode. Not recommended unless you want to debug this plugin.").addToggle(r=>{r.setValue(this.mb.getSettings().devMode),r.onChange(n=>{this.mb.updateSettings(i=>{i.devMode=n})})}),new ri.Setting(e).setName("Disable code block restrictions").setDesc("Disable restrictions on which input fields can be created in which code blocks. Not recommended unless you know what you are doing.").addToggle(r=>{r.setValue(this.mb.getSettings().ignoreCodeBlockRestrictions),r.onChange(n=>{this.mb.updateSettings(i=>{i.ignoreCodeBlockRestrictions=n})})}),new ri.Setting(e).setName("Sync interval").setDesc(`The interval in milli-seconds between disk writes. Changing this number is not recommended except if your hard drive is exceptionally slow. Standard: ${zf.syncInterval}; Minimum: ${hh}; Maximum: ${gh}`).addText(r=>{r.setValue(this.mb.getSettings().syncInterval.toString()),r.onChange(n=>{this.mb.updateSettings(i=>{i.syncInterval=Number.parseInt(n),Number.isNaN(i.syncInterval)&&(i.syncInterval=zf.syncInterval),i.syncIntervalgh&&(i.syncInterval=gh)})})})}};var iy=class extends gv{constructor(e){super(),this.app=e.app,this.plugin=e,this.setComponents({api:new $v(this),internal:new Xv(this),file:new Rv(this)}),this.plugin.addSettingTab(new ny(this.app,this)),this.dependencyManager=new _v(this,[]),this.setUpDependencies(),this.setUpMetadataManager(),this.loadTemplates(),this.addPostProcessors(),this.plugin.registerEditorExtension(p4(this)),this.addCommands(),c4(this),this.plugin.registerView(cl,r=>new Kv(r,this)),this.addStatusBarBuildIndicator(),this.getSettings().enableEditorRightClickMenu&&this.plugin.registerEvent(this.app.workspace.on("editor-menu",(r,n)=>{b4(r,n,this)}))}setUpDependencies(){this.dependencyManager.dependencies=[{name:"Dataview",pluginId:"dataview",minVersion:new Qa(0,5,64)},{name:"JS Engine",pluginId:"js-engine",minVersion:new Qa(0,3,0)},{name:"Templater",pluginId:"templater-obsidian",minVersion:new Qa(2,2,3)}]}setUpMetadataManager(){this.metadataManager=new ec,this.metadataManager.registerSource(new Qv(this,"frontmatter",this.metadataManager)),this.metadataManager.registerSource(new vv("memory",this.metadataManager)),this.metadataManager.registerSource(new yv("globalMemory",this.metadataManager)),this.metadataManager.registerSource(new bv("scope",this.metadataManager)),this.metadataManager.setDefaultSource("frontmatter"),this.plugin.registerEvent(this.app.vault.on("rename",(e,r)=>{this.mountableManager.unloadFile(r),this.metadataManager.onStoragePathRenamed(r,e.path)})),this.plugin.registerEvent(this.app.vault.on("delete",e=>{this.mountableManager.unloadFile(e.path),this.metadataManager.onStoragePathDeleted(e.path)})),this.plugin.registerInterval(window.setInterval(()=>this.metadataManager.cycle(),this.getSettings().syncInterval))}addPostProcessors(){this.plugin.registerMarkdownPostProcessor((e,r)=>{let n=e.querySelectorAll("code"),i=r.sourcePath;for(let a=0;a{await(0,zo.loadPrism)();let i=r,a=e.trim(),o=n.sourcePath,s=this.api.isInlineFieldDeclarationAndGetType(a);if(s===void 0)return;let l=this.api.createInlineFieldOfTypeFromString(s,a,o,void 0,"block",new vp(n,r));this.api.wrapInMDRC(l,i,n)}),this.plugin.registerMarkdownCodeBlockProcessor("meta-bind-js-view",async(e,r,n)=>{await(0,zo.loadPrism)();let i=this.api.createJsViewFieldMountable(n.sourcePath,{declaration:e});this.api.wrapInMDRC(i,r,n)}),this.plugin.registerMarkdownCodeBlockProcessor("meta-bind-embed",async(e,r,n)=>{await(0,zo.loadPrism)();let i=this.api.createEmbedMountable(n.sourcePath,{content:e,depth:0});this.api.wrapInMDRC(i,r,n)});for(let e=1;e<=_m;e++)this.plugin.registerMarkdownCodeBlockProcessor(`meta-bind-embed-internal-${e}`,async(r,n,i)=>{await(0,zo.loadPrism)();let a=this.api.createEmbedMountable(i.sourcePath,{content:r,depth:e});this.api.wrapInMDRC(a,n,i)});this.plugin.registerMarkdownCodeBlockProcessor("meta-bind-button",async(e,r,n)=>{await(0,zo.loadPrism)();let i=this.api.createButtonMountable(n.sourcePath,{declaration:e,isPreview:!1,position:new vp(n,r)});this.api.wrapInMDRC(i,r,n)})}addCommands(){this.plugin.addCommand({id:"open-docs",name:"Open docs",callback:()=>{window.open("https://mprojectscode.github.io/obsidian-meta-bind-plugin-docs/","_blank")}}),this.plugin.addCommand({id:"open-playground",name:"Open playground",callback:()=>{this.activateView(cl)}}),this.plugin.addCommand({id:"open-help",name:"Open Help",callback:()=>{this.activateView(cl)}}),this.plugin.addCommand({id:"open-button-builder",name:"Open button builder",callback:()=>{this.internal.openButtonBuilderModal({onOkay:e=>{window.navigator.clipboard.writeText(`\`\`\`meta-bind-button +${(0,zo.stringifyYaml)(e)} +\`\`\``)},submitText:"Copy to Clipboard"})}}),this.plugin.addCommand({id:"copy-command-id",name:"Select and copy command id",callback:()=>{this.internal.openCommandSelectModal(e=>{window.navigator.clipboard.writeText(e.id)})}})}addStatusBarBuildIndicator(){if(this.build==="dev"){let e=this.plugin.addStatusBarItem();e.setText("Meta Bind Dev Build"),e.addClass("mb-error"),this.plugin.register(()=>e.remove())}if(this.build==="canary"){let e=this.plugin.addStatusBarItem();e.setText("Meta Bind Canary Build (1.4.2)"),e.addClass("mb-error"),this.plugin.register(()=>e.remove())}}async activateView(e){let{workspace:r}=this.app,n,i=r.getLeavesOfType(e);i.length>0?n=i[0]:(n=r.getLeaf("tab"),await n.setViewState({type:e,active:!0})),await r.revealLeaf(n)}getSettings(){return this.plugin.settings}saveSettings(e){this.plugin.settings=e,this.plugin.saveSettings()}},ay=class extends zo.Plugin{async onload(){console.log("meta-bind | Main >> loading"),console.time("meta-bind | Main >> load-time"),await this.loadSettings(),this.mb=new iy(this),this.api=this.mb.api,this.mb.updateInternalSettings(this.settings),console.timeEnd("meta-bind | Main >> load-time")}onunload(){this.mb.destroy(),console.log("meta-bind | Main >> unload")}async loadSettings(){console.log("meta-bind | Main >> loading settings");let e=await this.loadData()??{};typeof e=="object"&&e!=null&&(delete e.inputTemplates,delete e.useUsDateInputOrder),this.settings=Object.assign({},zf,e),rs(e,this.settings)||await this.saveSettings()}async saveSettings(){console.log("meta-bind | Main >> settings save"),await this.saveData(this.settings)}async onExternalSettingsChange(){await this.loadSettings(),this.mb.updateInternalSettings(this.settings)}}; /*! Bundled license information: moment/moment.js: @@ -174,10 +167,10 @@ moment/moment.js: decimal.js/decimal.mjs: (*! - * decimal.js v10.4.3 + * decimal.js v10.5.0 * An arbitrary-precision Decimal type for JavaScript. * https://github.com/MikeMcl/decimal.js - * Copyright (c) 2022 Michael Mclaughlin + * Copyright (c) 2025 Michael Mclaughlin * MIT Licence *) */ diff --git a/.obsidian/plugins/obsidian-meta-bind-plugin/manifest.json b/.obsidian/plugins/obsidian-meta-bind-plugin/manifest.json index 71d8593..d06b951 100644 --- a/.obsidian/plugins/obsidian-meta-bind-plugin/manifest.json +++ b/.obsidian/plugins/obsidian-meta-bind-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-meta-bind-plugin", "name": "Meta Bind", - "version": "1.3.1", + "version": "1.4.2", "minAppVersion": "1.4.0", "description": "Make your notes interactive with inline input fields, metadata displays, and buttons.", "author": "Moritz Jung", diff --git a/.obsidian/plugins/obsidian-meta-bind-plugin/styles.css b/.obsidian/plugins/obsidian-meta-bind-plugin/styles.css index d1f3197..cca2060 100644 --- a/.obsidian/plugins/obsidian-meta-bind-plugin/styles.css +++ b/.obsidian/plugins/obsidian-meta-bind-plugin/styles.css @@ -439,7 +439,7 @@ div.mb-view-wrapper { } /* Image */ -.mb-image-search-container { +.mb-image-modal-header { margin-bottom: var(--size-4-4); } @@ -504,6 +504,12 @@ div.mb-view-wrapper { width: 100%; } +.mb-image-empty { + display: flex; + flex-direction: column; + align-items: center; +} + /* Time Input */ .mb-input-type-time {