simplecov 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Code Coverage</title>
7
- <style>*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}table{border-collapse:collapse;border-spacing:0}ul,ol{list-style:none}a{text-decoration-skip-ink:auto;color:currentColor}.hide{display:none}.hljs{color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media(prefers-color-scheme:dark){:root:not(.light-mode) .hljs{color:#c9d1d9}:root:not(.light-mode) .hljs-doctag,:root:not(.light-mode) .hljs-keyword,:root:not(.light-mode) .hljs-meta .hljs-keyword,:root:not(.light-mode) .hljs-template-tag,:root:not(.light-mode) .hljs-template-variable,:root:not(.light-mode) .hljs-type,:root:not(.light-mode) .hljs-variable.language_{color:#ff7b72}:root:not(.light-mode) .hljs-title,:root:not(.light-mode) .hljs-title.class_,:root:not(.light-mode) .hljs-title.class_.inherited__,:root:not(.light-mode) .hljs-title.function_{color:#d2a8ff}:root:not(.light-mode) .hljs-attr,:root:not(.light-mode) .hljs-attribute,:root:not(.light-mode) .hljs-literal,:root:not(.light-mode) .hljs-meta,:root:not(.light-mode) .hljs-number,:root:not(.light-mode) .hljs-operator,:root:not(.light-mode) .hljs-variable,:root:not(.light-mode) .hljs-selector-attr,:root:not(.light-mode) .hljs-selector-class,:root:not(.light-mode) .hljs-selector-id{color:#79c0ff}:root:not(.light-mode) .hljs-regexp,:root:not(.light-mode) .hljs-string,:root:not(.light-mode) .hljs-meta .hljs-string{color:#a5d6ff}:root:not(.light-mode) .hljs-built_in,:root:not(.light-mode) .hljs-symbol{color:#ffa657}:root:not(.light-mode) .hljs-comment,:root:not(.light-mode) .hljs-code,:root:not(.light-mode) .hljs-formula{color:#8b949e}:root:not(.light-mode) .hljs-name,:root:not(.light-mode) .hljs-quote,:root:not(.light-mode) .hljs-selector-tag,:root:not(.light-mode) .hljs-selector-pseudo{color:#7ee787}:root:not(.light-mode) .hljs-subst{color:#c9d1d9}:root:not(.light-mode) .hljs-section{color:#1f6feb}}.dark-mode .hljs{color:#c9d1d9}.dark-mode .hljs-doctag,.dark-mode .hljs-keyword,.dark-mode .hljs-meta .hljs-keyword,.dark-mode .hljs-template-tag,.dark-mode .hljs-template-variable,.dark-mode .hljs-type,.dark-mode .hljs-variable.language_{color:#ff7b72}.dark-mode .hljs-title,.dark-mode .hljs-title.class_,.dark-mode .hljs-title.class_.inherited__,.dark-mode .hljs-title.function_{color:#d2a8ff}.dark-mode .hljs-attr,.dark-mode .hljs-attribute,.dark-mode .hljs-literal,.dark-mode .hljs-meta,.dark-mode .hljs-number,.dark-mode .hljs-operator,.dark-mode .hljs-variable,.dark-mode .hljs-selector-attr,.dark-mode .hljs-selector-class,.dark-mode .hljs-selector-id{color:#79c0ff}.dark-mode .hljs-regexp,.dark-mode .hljs-string,.dark-mode .hljs-meta .hljs-string{color:#a5d6ff}.dark-mode .hljs-built_in,.dark-mode .hljs-symbol{color:#ffa657}.dark-mode .hljs-comment,.dark-mode .hljs-code,.dark-mode .hljs-formula{color:#8b949e}.dark-mode .hljs-name,.dark-mode .hljs-quote,.dark-mode .hljs-selector-tag,.dark-mode .hljs-selector-pseudo{color:#7ee787}.dark-mode .hljs-subst{color:#c9d1d9}.dark-mode .hljs-section{color:#1f6feb}:root{--ap: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ae: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--f: 4px;--b: 8px;--as: 12px;--k: 16px;--au: 20px;--ac: 24px;--av: 32px;--ar: 8px;--aq: 12px;--ao: 16px;--o: #f0f1f3;--e: #fff;--ad: #f0f1f3;--a: #111;--g: #333;--h: #444;--al: #f4f5f7;--c: #c0c5cc;--p: #999;--d: #0550ae;--am: #033d8b;--v: #ddf4ff;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--l: #ccf5d0;--i: #9ae6a4;--m: #ffd8d5;--j: #ffb8b3;--z: #fff;--ah: #f0f1f3;--aa: #fff0a0;--u: #eed860;--x: #ffd0a0;--r: #ffb060;--s: #b45309;--y: #e8d0ff;--t: #d4b0ff;--n: #7b2d8e;--aj: #fff;--q: #c0c5cc;--ak: #444;--ab: #f0f1f3;--af: #e0e3e8;--ag: #333;--ai: rgba(0, 0, 0, .5);--w: #d0d7de;--at: 6px}@media(prefers-color-scheme:dark){:root:not(.light-mode){--o: #010409;--e: #0d1117;--ad: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--al: #161b22;--c: #3d444d;--p: #555e68;--d: #6cb6ff;--am: #96ccff;--v: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--l: #122d1e;--i: #1e4430;--m: #351418;--j: #4e1d20;--z: #0d1117;--ah: #161b22;--aa: #302818;--u: #443920;--x: #322218;--r: #483020;--s: #ffb86c;--y: #1e1830;--t: #2a2044;--n: #dcb8ff;--aj: #0d1117;--q: #3d444d;--ak: #9aa5b1;--ab: #161b22;--af: #262c34;--ag: #b0b8c4;--ai: rgba(1, 4, 9, .8);--w: #3d444d}}.dark-mode{--o: #010409;--e: #0d1117;--ad: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--al: #161b22;--c: #3d444d;--p: #555e68;--d: #6cb6ff;--am: #96ccff;--v: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--l: #122d1e;--i: #1e4430;--m: #351418;--j: #4e1d20;--z: #0d1117;--ah: #161b22;--aa: #302818;--u: #443920;--x: #322218;--r: #483020;--s: #ffb86c;--y: #1e1830;--t: #2a2044;--n: #dcb8ff;--aj: #0d1117;--q: #3d444d;--ak: #9aa5b1;--ab: #161b22;--af: #262c34;--ag: #b0b8c4;--ai: rgba(1, 4, 9, .8);--w: #3d444d}.colorblind-mode{--green: #0060a8;--red: #c2410c;--l: #d3eaf7;--i: #a5d2ee;--m: #ffe0cc;--j: #ffc39a}@media screen and (prefers-color-scheme:dark){.colorblind-mode:not(.light-mode){--green: #6cb6ff;--red: #f0883e;--l: #0e2a45;--i: #12385c;--m: #3a2410;--j: #52331a}}@media screen{.colorblind-mode.dark-mode{--green: #6cb6ff;--red: #f0883e;--l: #0e2a45;--i: #12385c;--m: #3a2410;--j: #52331a}}body{font-family:var(--ap);font-size:18px;color:var(--a);background:var(--o);padding:var(--ac)}a{color:var(--d);text-decoration:none;transition:color .15s}a:hover{color:var(--am)}strong,b{font-weight:600}#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--o);z-index:9999}#loading-inner{width:280px;text-align:center}#loading-bar-track{width:100%;height:6px;background:var(--w);border-radius:6px;overflow:hidden}#loading-bar-fill{width:0%;height:100%;background:var(--d);border-radius:6px;transition:width .15s ease-out}#loading-text{margin-top:var(--as);font-size:18px;color:var(--h)}#sort-overlay{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;background:var(--ai)}#sort-overlay-label{padding:var(--b) var(--k);border:1px solid var(--c);border-radius:6px;background:var(--o);font-size:16px;color:var(--h)}#wrapper{margin:0 auto}.tab-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--k);margin-bottom:-1px;position:relative;z-index:1}abbr.timeago{text-decoration:none;border:none}.group_tabs{display:flex;align-self:flex-end;gap:var(--f);overflow-x:auto}.group_tabs li a{display:block;padding:var(--b) var(--k);font-size:18px;font-weight:500;color:var(--g);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:var(--aq) var(--aq) 0 0;white-space:nowrap;transition:color .15s,background .15s}.group_tabs li a:hover{color:var(--a);background:var(--ad);text-decoration:none}.group_tabs li.active a{color:var(--d);background:var(--e);border-color:var(--c);font-weight:600}#content{background:var(--e);border:1px solid var(--c);border-radius:0 var(--ao) var(--ao) var(--ao);padding:var(--ac)}.file_list_container h2{font-size:24px;font-weight:600;color:var(--a);margin:0}.file_list_container h2 .covered_percent{font-weight:600}.summary-stats{display:flex;flex-direction:column;gap:var(--f);font-size:18px;color:var(--g)}.summary-stats b{color:var(--a)}.summary-stats .missed-branch-text b,.summary-stats .missed-method-text-color b,.summary-stats .green b,.summary-stats .red b{color:inherit}.summary-stats .green{color:var(--green)}.summary-stats .red{color:var(--red)}.coverage-disabled{color:var(--h);font-style:italic}.th-with-filter{display:flex;align-items:center;gap:var(--b)}table.file_list th.cell--coverage .th-with-filter{white-space:nowrap;justify-content:flex-end}.th-with-filter .th-label{white-space:nowrap}.col-filter--name{width:100%;min-width:200px;border:1px solid var(--c);border-radius:999px;padding:var(--f) var(--k);font-size:14px;background:var(--e);color:var(--a);outline:none}.col-filter--name:focus{border-color:var(--d)}.col-filter__coverage{display:flex;gap:var(--f)}.col-filter__op{border:1px solid var(--c);border-radius:var(--ar);padding:var(--f) var(--f);font-size:14px;background:var(--e);color:var(--a);cursor:pointer}.col-filter__value{border:1px solid var(--c);border-radius:var(--ar);padding:var(--f) var(--b);font-size:14px;background:var(--e);color:var(--a);width:60px;outline:none}.col-filter__value:focus{border-color:var(--d)}.file_list--responsive{overflow-x:auto}table.file_list{width:100%;font-size:18px}table.file_list{border-collapse:separate;border-spacing:0}table.file_list thead th{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--h);background:var(--e);padding:var(--b) var(--b);border-bottom:2px solid var(--p);white-space:nowrap}table.file_list tbody tr{background:var(--e);cursor:pointer}table.file_list tbody tr:nth-child(2n){background:var(--al)}table.file_list tbody tr:hover{background:var(--v)}table.file_list tbody tr.keyboard-focus{background:var(--v);outline:2px solid var(--d);outline-offset:-2px}table.file_list tbody td{padding:var(--b) var(--b);border-bottom:1px solid var(--c);color:var(--a)}table.file_list td.cell--number{text-align:right;font-variant-numeric:tabular-nums;color:var(--a)}table.file_list th.cell--left,table.file_list th.cell--coverage{text-align:left}table.file_list th.cell--number{text-align:right}table.file_list th.cell--numerator{text-align:right;padding-right:0}table.file_list th.cell--denominator{text-align:left;padding-left:0}table.file_list td.strong{font-weight:600;color:var(--a)}table.file_list td.t-file__name{white-space:nowrap}a.src_link{color:var(--d);font-weight:500;word-break:break-all}table.file_list td.cell--coverage{white-space:nowrap}.coverage-cell{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:10px}.coverage-cell .coverage-pct{flex:0 0 4.5em;font-variant-numeric:tabular-nums}tr.t-window-hidden{display:none}tr.t-show-all td{padding:var(--as);text-align:center;color:var(--h);cursor:pointer}.coverage-cell .bar-sizer{flex:0 0 auto;width:var(--bar-sizer-width, 240px);min-width:160px;max-width:240px}table.file_list td.cell--numerator{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:var(--f);padding-right:0}table.file_list td.cell--denominator{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:0;padding-right:var(--f)}table.file_list .totals-row td.cell--numerator{color:var(--a);padding-right:0}table.file_list .totals-row td.cell--denominator{color:var(--a);padding-left:0}.coverage-cell__fraction{font-variant-numeric:tabular-nums;color:var(--g);font-size:14px;white-space:nowrap}.coverage-bar{width:100%;height:var(--at);background:var(--w);border-radius:6px;overflow:hidden}.coverage-bar__fill{height:100%;border-radius:6px}.coverage-bar__fill--green{background:var(--green)}.coverage-bar__fill--yellow{background:var(--yellow)}.coverage-bar__fill--red{background:var(--red)}.green,table.file_list td.green{color:var(--green)}.red,table.file_list td.red{color:var(--red)}.yellow,table.file_list td.yellow{color:var(--yellow)}.missed-branch-text{color:var(--s)}.missed-method-text-color{color:var(--n)}dialog.source-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;border:none;padding:0;background:var(--o);color:var(--a);overflow:hidden}dialog.source-dialog::backdrop{background:var(--ai)}dialog.source-dialog[open]{display:flex;flex-direction:column}.source-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--k) var(--ac);background:var(--e);border-bottom:1px solid var(--c);flex-shrink:0}.source-dialog__title{flex:1;min-width:0}.source-dialog__title h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--b);word-break:break-all}.source-legend{display:flex;flex-wrap:wrap;gap:var(--b) var(--k);align-items:center;align-self:flex-end;flex-shrink:0;margin-left:auto;padding-left:var(--ac)}.source-legend__item{display:flex;align-items:center;gap:var(--f);font-size:13px;color:var(--g);white-space:nowrap}.source-legend__swatch{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:3px;border:1px solid var(--c);font-family:var(--ae);font-size:12px;font-weight:700;line-height:1}.source-legend__swatch--covered{background:var(--l);border-color:var(--i);color:var(--green)}.source-legend__swatch--missed{background:var(--m);border-color:var(--j);color:var(--red)}.source-legend__swatch--skipped{background:var(--aa);border-color:var(--u);color:var(--g)}.source-legend__swatch--missed-branch{background:var(--x);border-color:var(--r);color:var(--s)}.source-legend__swatch--missed-method{background:var(--y);border-color:var(--t);color:var(--n)}.source-legend__swatch--covered:after{content:"+"}.source-legend__swatch--missed:after{content:"\2212"}.source-legend__swatch--skipped:after{content:"~"}.source-legend__swatch--missed-branch:after{content:"\b1"}.source-legend__swatch--missed-method:after{content:"\192"}.source-dialog__toggles{display:flex;align-items:center;gap:var(--b);flex-shrink:0;margin-left:var(--k);align-self:flex-start}.source-dialog__close{appearance:none;background:none;border:1px solid var(--c);border-radius:50%;width:34px;height:34px;font-size:0;color:var(--g);cursor:pointer;position:relative;flex-shrink:0;margin-left:var(--k);transition:color .15s,border-color .15s}.source-dialog__close:before,.source-dialog__close:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:2px;background:currentColor;border-radius:1px}.source-dialog__close:before{transform:translate(-50%,-50%) rotate(45deg)}.source-dialog__close:after{transform:translate(-50%,-50%) rotate(-45deg)}.source-dialog__close:hover{color:var(--a);border-color:var(--p)}.source-dialog__body{flex:1;overflow:auto}.source_table .header{padding:var(--k) var(--ac);background:var(--e)}.source_table .header h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--b)}table.file_list .totals-row td{padding:var(--b) var(--b);font-weight:600;border-bottom:2px solid var(--p);background:var(--ad)}.totals-row .t-file-count{font-size:18px;font-weight:700;color:var(--a)}.t-missed-method-toggle{color:var(--n);font-weight:600;cursor:pointer;text-decoration:none}.t-missed-method-toggle:hover{text-decoration:underline;color:var(--n)}.t-missed-method-list ul{padding-left:2em;margin-top:var(--f);max-height:200px;overflow-y:auto}.t-missed-method-list li{list-style:none}.source_table pre{margin:0;padding:0;white-space:normal;color:var(--a);font-family:var(--ae);font-size:16px;line-height:24px;background:var(--aj);border:1px solid var(--q);border-top:none}.source_table code{color:inherit;font-family:var(--ae)}.source_table pre ol{margin:0;padding:0;list-style:none;counter-reset:linenumber}.source_table pre li{display:flex;counter-increment:linenumber;background:var(--z)}.source_table pre li:before{content:counter(linenumber);flex-shrink:0;width:50px;padding:0 8px;text-align:right;color:var(--ak);background:var(--ab);border-right:1px solid var(--q);-webkit-user-select:none;user-select:none;cursor:pointer}.source_table pre li:hover:before{color:var(--a)}.source_table pre li:hover{cursor:pointer}.source_table pre li code{order:1;flex:1;min-width:0;padding:0 12px;white-space:pre-wrap}.source_table pre .hits{order:2;flex-shrink:0;padding:0 var(--b);background:var(--af);color:var(--ag);font-family:var(--ae);font-size:14px;text-align:center;line-height:24px;border-left:1px solid var(--q);-webkit-user-select:none;user-select:none}.source_table pre .hits:after{content:attr(data-content)}.source_table .covered{background-color:var(--l)}.source_table .missed{background-color:var(--m)}.source_table .never{background-color:var(--z)}.source_table .skipped{background-color:var(--aa)}.source_table .missed-branch{background-color:var(--x)}.source_table .missed-method{background-color:var(--y)}.source_table .covered:before{background-color:var(--i)}.source_table .missed:before{background-color:var(--j)}.source_table .never:before{background-color:var(--ah)}.source_table .skipped:before{background-color:var(--u)}.source_table .missed-branch:before{background-color:var(--r)}.source_table .missed-method:before{background-color:var(--t)}.source_table pre li:after{order:-1;content:"";flex-shrink:0;width:1.6em;text-align:center;font-weight:700;color:var(--g);background:var(--ab);border-right:1px solid var(--q);-webkit-user-select:none;user-select:none}.source_table .covered:after{content:"+";color:var(--green);background:var(--i)}.source_table .missed:after{content:"\2212";color:var(--red);background:var(--j)}.source_table .skipped:after{content:"~";background:var(--u)}.source_table .missed-branch:after{content:"\b1";color:var(--s);background:var(--r)}.source_table .missed-method:after{content:"\192";color:var(--n);background:var(--t)}.toolbar{display:flex;align-items:flex-start;gap:var(--b);flex-shrink:0}.toolbar-toggle{appearance:none;background:var(--e);color:var(--g);border:1px solid var(--c);border-radius:999px;padding:var(--f) var(--k);font-size:16px;font-family:var(--ap);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s,background .15s}.toolbar-toggle:hover{color:var(--a);border-color:var(--p)}.toolbar-toggle[aria-pressed=true]{background:var(--v);color:var(--d);border-color:var(--d)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible,.source_table pre li:focus-visible{outline:2px solid var(--d);outline-offset:2px;border-radius:3px}#footer{color:var(--h);font-size:16px;margin-top:var(--au);text-align:center}#footer a{color:var(--g);text-decoration:underline}#footer a:hover{color:var(--a)}table.file_list thead th.sorting,table.file_list thead th.sorting_asc,table.file_list thead th.sorting_desc{cursor:pointer;position:relative;padding-right:12px}table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--h)}table.file_list thead th.sorting:after{content:"\2195"}table.file_list thead th.sorting_asc:after{content:"\2191"}table.file_list thead th.sorting_desc:after{content:"\2193"}@media print{:root,.dark-mode{--o: #fff;--e: #fff;--ad: #f4f5f7;--a: #111;--g: #333;--h: #444;--al: #f4f5f7;--c: #c0c5cc;--p: #999;--d: #0550ae;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--w: #d0d7de;--l: #ccf5d0;--i: #9ae6a4;--m: #ffd8d5;--j: #ffb8b3;--z: #fff;--ah: #f0f1f3;--aa: #fff0a0;--u: #eed860;--x: #ffd0a0;--r: #ffb060;--s: #b45309;--y: #e8d0ff;--t: #d4b0ff;--n: #7b2d8e;--aj: #fff;--q: #c0c5cc;--ak: #444;--ab: #f0f1f3;--af: #e0e3e8;--ag: #333}.colorblind-mode{--green: #0060a8;--red: #c2410c;--l: #d3eaf7;--i: #a5d2ee;--m: #ffe0cc;--j: #ffc39a}body{padding:0;font-size:12pt}#loading,#sort-overlay,.toolbar,.source-dialog__toggles,.tab-bar,.source_files,.col-filter--name,.col-filter__coverage,tr.t-show-all,table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{display:none!important}#wrapper,.file_list_container{display:block!important}body:has(.source-dialog[open]) #wrapper{display:none!important}#content{border:none;border-radius:0;padding:0}.file_list_container .group_name{display:inline!important;font-size:16pt;font-weight:700}.file_list_container .covered_percent{display:inline!important;font-weight:600}.file_list_container+.file_list_container{margin-top:24pt}dialog.source-dialog{display:none}dialog.source-dialog[open]{display:block!important;position:static;width:100%;height:auto;max-height:none;overflow:visible;background:#fff}.source-dialog__close{display:none!important}.source-dialog__header{flex-wrap:wrap;border-bottom:none;padding:0 0 8pt}.source-dialog__title{flex:0 0 100%}.source-dialog__title h2{word-break:normal;overflow-wrap:break-word}.source-legend{margin-left:0;padding-left:0;padding-top:var(--b)}.source-dialog__body{overflow:visible}.source_table pre{font-size:8pt;line-height:1.4}.source_table pre li{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre li:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre .hits{-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar{border:1px solid var(--c);-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar__fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list tbody tr:nth-child(2n){-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list{font-size:10pt}table.file_list thead th{font-size:9pt}table.file_list{page-break-inside:auto}table.file_list tr{page-break-inside:avoid}table.file_list thead{display:table-header-group}#footer{font-size:10pt;margin-top:12pt}#footer a:after{content:" (" attr(href) ")";font-size:9pt;color:var(--h)}}
7
+ <style>*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}table{border-collapse:collapse;border-spacing:0}ul,ol{list-style:none}a{text-decoration-skip-ink:auto;color:currentColor}.hide{display:none}.hljs{color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media(prefers-color-scheme:dark){:root:not(.light-mode) .hljs{color:#c9d1d9}:root:not(.light-mode) .hljs-doctag,:root:not(.light-mode) .hljs-keyword,:root:not(.light-mode) .hljs-meta .hljs-keyword,:root:not(.light-mode) .hljs-template-tag,:root:not(.light-mode) .hljs-template-variable,:root:not(.light-mode) .hljs-type,:root:not(.light-mode) .hljs-variable.language_{color:#ff7b72}:root:not(.light-mode) .hljs-title,:root:not(.light-mode) .hljs-title.class_,:root:not(.light-mode) .hljs-title.class_.inherited__,:root:not(.light-mode) .hljs-title.function_{color:#d2a8ff}:root:not(.light-mode) .hljs-attr,:root:not(.light-mode) .hljs-attribute,:root:not(.light-mode) .hljs-literal,:root:not(.light-mode) .hljs-meta,:root:not(.light-mode) .hljs-number,:root:not(.light-mode) .hljs-operator,:root:not(.light-mode) .hljs-variable,:root:not(.light-mode) .hljs-selector-attr,:root:not(.light-mode) .hljs-selector-class,:root:not(.light-mode) .hljs-selector-id{color:#79c0ff}:root:not(.light-mode) .hljs-regexp,:root:not(.light-mode) .hljs-string,:root:not(.light-mode) .hljs-meta .hljs-string{color:#a5d6ff}:root:not(.light-mode) .hljs-built_in,:root:not(.light-mode) .hljs-symbol{color:#ffa657}:root:not(.light-mode) .hljs-comment,:root:not(.light-mode) .hljs-code,:root:not(.light-mode) .hljs-formula{color:#8b949e}:root:not(.light-mode) .hljs-name,:root:not(.light-mode) .hljs-quote,:root:not(.light-mode) .hljs-selector-tag,:root:not(.light-mode) .hljs-selector-pseudo{color:#7ee787}:root:not(.light-mode) .hljs-subst{color:#c9d1d9}:root:not(.light-mode) .hljs-section{color:#1f6feb}}.dark-mode .hljs{color:#c9d1d9}.dark-mode .hljs-doctag,.dark-mode .hljs-keyword,.dark-mode .hljs-meta .hljs-keyword,.dark-mode .hljs-template-tag,.dark-mode .hljs-template-variable,.dark-mode .hljs-type,.dark-mode .hljs-variable.language_{color:#ff7b72}.dark-mode .hljs-title,.dark-mode .hljs-title.class_,.dark-mode .hljs-title.class_.inherited__,.dark-mode .hljs-title.function_{color:#d2a8ff}.dark-mode .hljs-attr,.dark-mode .hljs-attribute,.dark-mode .hljs-literal,.dark-mode .hljs-meta,.dark-mode .hljs-number,.dark-mode .hljs-operator,.dark-mode .hljs-variable,.dark-mode .hljs-selector-attr,.dark-mode .hljs-selector-class,.dark-mode .hljs-selector-id{color:#79c0ff}.dark-mode .hljs-regexp,.dark-mode .hljs-string,.dark-mode .hljs-meta .hljs-string{color:#a5d6ff}.dark-mode .hljs-built_in,.dark-mode .hljs-symbol{color:#ffa657}.dark-mode .hljs-comment,.dark-mode .hljs-code,.dark-mode .hljs-formula{color:#8b949e}.dark-mode .hljs-name,.dark-mode .hljs-quote,.dark-mode .hljs-selector-tag,.dark-mode .hljs-selector-pseudo{color:#7ee787}.dark-mode .hljs-subst{color:#c9d1d9}.dark-mode .hljs-section{color:#1f6feb}:root{--ar: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--am: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--e: 4px;--c: 8px;--aq: 12px;--n: 16px;--ax: 20px;--o: 24px;--ay: 32px;--at: 8px;--as: 12px;--ao: 16px;--ap: 34px;--au: var(--n);--aw: calc(var(--ap) + var(--au));--i: #f0f1f3;--f: #fff;--ac: #f0f1f3;--a: #111;--g: #333;--h: #444;--ak: #f4f5f7;--b: #c0c5cc;--p: #999;--d: #0550ae;--al: #033d8b;--s: #ddf4ff;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--j: #ccf5d0;--k: #9ae6a4;--l: #ffd8d5;--m: #ffb8b3;--z: #fff;--af: #f0f1f3;--aa: #fff0a0;--ab: #eed860;--u: #ffd0a0;--v: #ffb060;--w: #b45309;--x: #e8d0ff;--y: #d4b0ff;--q: #7b2d8e;--ah: #fff;--r: #c0c5cc;--aj: #444;--ai: #f0f1f3;--ad: #e0e3e8;--ae: #333;--ag: rgba(0, 0, 0, .5);--t: #d0d7de;--av: 6px}@media(prefers-color-scheme:dark){:root:not(.light-mode){--i: #010409;--f: #0d1117;--ac: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--ak: #161b22;--b: #3d444d;--p: #555e68;--d: #6cb6ff;--al: #96ccff;--s: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--j: #122d1e;--k: #1e4430;--l: #351418;--m: #4e1d20;--z: #0d1117;--af: #161b22;--aa: #302818;--ab: #443920;--u: #322218;--v: #483020;--w: #ffb86c;--x: #1e1830;--y: #2a2044;--q: #dcb8ff;--ah: #0d1117;--r: #3d444d;--aj: #9aa5b1;--ai: #161b22;--ad: #262c34;--ae: #b0b8c4;--ag: rgba(1, 4, 9, .8);--t: #3d444d}}.dark-mode{--i: #010409;--f: #0d1117;--ac: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--ak: #161b22;--b: #3d444d;--p: #555e68;--d: #6cb6ff;--al: #96ccff;--s: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--j: #122d1e;--k: #1e4430;--l: #351418;--m: #4e1d20;--z: #0d1117;--af: #161b22;--aa: #302818;--ab: #443920;--u: #322218;--v: #483020;--w: #ffb86c;--x: #1e1830;--y: #2a2044;--q: #dcb8ff;--ah: #0d1117;--r: #3d444d;--aj: #9aa5b1;--ai: #161b22;--ad: #262c34;--ae: #b0b8c4;--ag: rgba(1, 4, 9, .8);--t: #3d444d}.colorblind-mode{--green: #0060a8;--red: #c2410c;--j: #d3eaf7;--k: #a5d2ee;--l: #ffe0cc;--m: #ffc39a}@media screen and (prefers-color-scheme:dark){.colorblind-mode:not(.light-mode){--green: #6cb6ff;--red: #f0883e;--j: #0e2a45;--k: #12385c;--l: #3a2410;--m: #52331a}}@media screen{.colorblind-mode.dark-mode{--green: #6cb6ff;--red: #f0883e;--j: #0e2a45;--k: #12385c;--l: #3a2410;--m: #52331a}}html{scrollbar-gutter:stable}body{font-family:var(--ar);font-size:18px;color:var(--a);background:var(--i);padding:var(--o)}a{color:var(--d);text-decoration:none;transition:color .15s}a:hover{color:var(--al)}strong,b{font-weight:600}#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--i);z-index:9999}#loading-inner{width:280px;text-align:center}#loading-bar-track{width:100%;height:6px;background:var(--t);border-radius:6px;overflow:hidden}#loading-bar-fill{width:0%;height:100%;background:var(--d);border-radius:6px;transition:width .15s ease-out}#loading-text{margin-top:var(--aq);font-size:18px;color:var(--h)}#sort-overlay{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;background:var(--ag)}#sort-overlay-label{padding:var(--c) var(--n);border:1px solid var(--b);border-radius:6px;background:var(--i);font-size:16px;color:var(--h)}#wrapper{margin:0 auto}.tab-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--n);margin-bottom:-1px;position:relative;z-index:1}abbr.timeago{text-decoration:none;border:none}.group_tabs{display:flex;align-self:flex-end;gap:var(--e);overflow-x:auto;padding-right:var(--o);mask-image:linear-gradient(to right,#000 calc(100% - var(--o)),transparent)}.group_tabs.is-scrolled{mask-image:linear-gradient(to right,transparent,#000 var(--o),#000 calc(100% - var(--o)),transparent)}.group_tabs li a{display:block;padding:var(--c) var(--n);font-size:18px;font-weight:500;color:var(--g);background:transparent;border:1px solid var(--b);border-bottom:none;border-radius:var(--as) var(--as) 0 0;white-space:nowrap;transition:color .15s,background .15s,border-color .15s}.group_tabs li a:hover{color:var(--a);background:var(--ac);border-color:var(--p);text-decoration:none}.group_tabs li.active a{color:var(--d);background:var(--f);border-color:var(--b);font-weight:600}#content{background:var(--f);border:1px solid var(--b);border-radius:0 var(--ao) var(--ao) var(--ao);padding:var(--o)}.file_list_container h2{font-size:24px;font-weight:600;color:var(--a);margin:0}.file_list_container h2 .covered_percent{font-weight:600}.summary-stats{display:flex;flex-direction:column;gap:var(--e);font-size:18px;color:var(--g)}.summary-stats b{color:var(--a)}.summary-stats .missed-branch-text b,.summary-stats .missed-method-text-color b,.summary-stats .green b,.summary-stats .red b{color:inherit}.summary-stats .green{color:var(--green)}.summary-stats .red{color:var(--red)}.coverage-disabled{color:var(--h);font-style:italic}.th-with-filter{display:flex;align-items:center;gap:var(--c)}table.file_list th.cell--coverage .th-with-filter{white-space:nowrap;justify-content:flex-end}.th-with-filter .th-label{white-space:nowrap}.col-filter--name{width:100%;min-width:200px;border:1px solid var(--b);border-radius:999px;padding:var(--e) var(--n);font-size:14px;background:var(--f);color:var(--a);outline:none}.col-filter--name:focus{border-color:var(--d)}.col-filter__coverage{display:flex;gap:var(--e)}.col-filter__op{border:1px solid var(--b);border-radius:var(--at);padding:var(--e) var(--e);font-size:14px;background:var(--f);color:var(--a);cursor:pointer}.col-filter__value{border:1px solid var(--b);border-radius:var(--at);padding:var(--e) var(--c);font-size:14px;background:var(--f);color:var(--a);width:60px;outline:none}.col-filter__value:focus{border-color:var(--d)}.file_list--responsive{overflow-x:auto}table.file_list{width:100%;font-size:18px}table.file_list{border-collapse:separate;border-spacing:0}table.file_list thead th{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--h);background:var(--f);padding:var(--c) var(--c);border-bottom:2px solid var(--p);white-space:nowrap}table.file_list tbody tr{background:var(--f);cursor:pointer}table.file_list tbody tr:nth-child(2n){background:var(--ak)}table.file_list tbody tr:hover{background:var(--s)}table.file_list tbody tr.keyboard-focus{background:var(--s);outline:2px solid var(--d);outline-offset:-2px}table.file_list tbody td{padding:var(--c) var(--c);border-bottom:1px solid var(--b);color:var(--a)}table.file_list td.cell--number{text-align:right;font-variant-numeric:tabular-nums;color:var(--a)}table.file_list th.cell--left,table.file_list th.cell--coverage{text-align:left}table.file_list th.cell--number{text-align:right}table.file_list th.cell--numerator{text-align:right;padding-right:0}table.file_list th.cell--denominator{text-align:left;padding-left:0}table.file_list td.strong{font-weight:600;color:var(--a)}table.file_list td.t-file__name{white-space:nowrap}a.src_link{color:var(--d);font-weight:500;word-break:break-all}table.file_list td.cell--coverage{white-space:nowrap}.coverage-cell{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:10px}.coverage-cell .coverage-pct{flex:0 0 4.5em;font-variant-numeric:tabular-nums}tr.t-window-hidden{display:none}tr.t-show-all td{padding:var(--aq);text-align:center;color:var(--h);cursor:pointer}.coverage-cell .bar-sizer{flex:0 0 auto;width:var(--bar-sizer-width, 240px);min-width:160px;max-width:240px}table.file_list td.cell--numerator{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:var(--e);padding-right:0}table.file_list td.cell--denominator{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:0;padding-right:var(--e)}table.file_list .totals-row td.cell--numerator{color:var(--a);padding-right:0}table.file_list .totals-row td.cell--denominator{color:var(--a);padding-left:0}.coverage-cell__fraction{font-variant-numeric:tabular-nums;color:var(--g);font-size:14px;white-space:nowrap}.coverage-bar{width:100%;height:var(--av);background:var(--t);border-radius:6px;overflow:hidden}.coverage-bar__fill{height:100%;border-radius:6px}.coverage-bar__fill--green{background:var(--green)}.coverage-bar__fill--yellow{background:var(--yellow)}.coverage-bar__fill--red{background:var(--red)}.green,table.file_list td.green{color:var(--green)}.red,table.file_list td.red{color:var(--red)}.yellow,table.file_list td.yellow{color:var(--yellow)}.missed-branch-text{color:var(--w)}.missed-method-text-color{color:var(--q)}dialog.source-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;border:none;padding:0;background:var(--i);color:var(--a);overflow:hidden}dialog.source-dialog::backdrop{background:var(--ag)}dialog.source-dialog[open]{display:flex;flex-direction:column}.source-dialog__header{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:flex-start;padding:var(--o);background:var(--i);border-bottom:1px solid var(--b);flex-shrink:0}.source-dialog__title{display:contents;min-width:0}.source-dialog__title h2{grid-column:1;grid-row:1;font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--c);word-break:break-all}.source-dialog__title .summary-stats{display:contents}.source-dialog__title .t-line-summary{grid-column:1;grid-row:2}.source-dialog__title .t-branch-summary{grid-column:1;grid-row:3}.source-dialog__title .t-method-summary{grid-column:1;grid-row:4}.source-dialog__title>.t-missed-method-list{grid-column:1 / -1;grid-row:5}.source-legend{display:contents}.source-legend__row{display:flex;flex-wrap:wrap;gap:var(--c) var(--n);align-items:center;align-self:center;justify-content:flex-end;grid-column:2 / 4}.source-legend__row--line{grid-row:2}.source-legend__row--branch{grid-row:3}.source-legend__row--method{grid-row:4}.source-legend__item{display:flex;align-items:center;gap:var(--e);font-size:13px;color:var(--g);white-space:nowrap}.source-legend__swatch{display:inline-block;width:16px;height:16px;border-radius:3px;border:1px solid var(--b)}.source-legend__swatch--covered{background:var(--j);border-color:var(--k);color:var(--green)}.source-legend__swatch--missed{background:var(--l);border-color:var(--m);color:var(--red)}.source-legend__swatch--skipped{background:var(--aa);border-color:var(--ab);color:var(--g)}.source-legend__swatch--missed-branch{background:var(--u);border-color:var(--v);color:var(--w)}.source-legend__swatch--missed-method{background:var(--x);border-color:var(--y);color:var(--q)}.source-dialog__toggles{display:flex;align-items:center;gap:var(--c);flex-shrink:0;margin-left:var(--n);align-self:flex-start}.source-dialog__close{appearance:none;background:none;border:1px solid var(--b);border-radius:50%;width:var(--ap);height:var(--ap);font-size:0;color:var(--g);cursor:pointer;position:relative;flex-shrink:0;margin-left:var(--au);transition:color .15s,border-color .15s}.source-dialog__close:before,.source-dialog__close:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:2px;background:currentColor;border-radius:1px}.source-dialog__close:before{transform:translate(-50%,-50%) rotate(45deg)}.source-dialog__close:after{transform:translate(-50%,-50%) rotate(-45deg)}.source-dialog__close:hover{color:var(--a);border-color:var(--p)}.source-dialog__body{flex:1;overflow:auto}.source_table .header{padding:var(--n) var(--o);background:var(--f)}.source_table .header h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--c)}table.file_list .totals-row td{padding:var(--c) var(--c);font-weight:600;border-bottom:2px solid var(--p);background:var(--ac)}.totals-row .t-file-count{font-size:18px;font-weight:700;color:var(--a)}.t-missed-method-toggle{color:var(--q);font-weight:600;cursor:pointer;text-decoration:none}.t-missed-method-toggle:hover{text-decoration:underline;color:var(--q)}.t-missed-method-list ul{padding-left:2em;margin-top:var(--e);max-height:200px;overflow-y:auto}.t-missed-method-list li{list-style:none}.source_table pre{margin:0;padding:0;white-space:normal;color:var(--a);font-family:var(--am);font-size:16px;line-height:24px;background:var(--ah);border:1px solid var(--r);border-top:none}.source_table code{color:inherit;font-family:var(--am)}.source_table pre ol{margin:0;padding:0;list-style:none;counter-reset:linenumber}.source_table pre li{display:flex;counter-increment:linenumber;background:var(--z)}.source_table pre li:before{content:counter(linenumber);flex-shrink:0;width:50px;padding:0 8px;text-align:right;color:var(--aj);background:var(--ai);border-right:1px solid var(--r);-webkit-user-select:none;user-select:none;cursor:pointer}.source_table pre li:hover:before{color:var(--a)}.source_table pre li:hover{cursor:pointer}.source_table pre li code{order:1;flex:1;min-width:0;padding:0 12px;white-space:pre-wrap}.source_table pre .hits{order:2;flex-shrink:0;padding:0 var(--c);background:var(--ad);color:var(--ae);font-family:var(--am);font-size:14px;text-align:center;line-height:24px;border-left:1px solid var(--r);-webkit-user-select:none;user-select:none}.source_table pre .hits:after{content:attr(data-content)}.source_table .covered{background-color:var(--j)}.source_table .missed{background-color:var(--l)}.source_table .never{background-color:var(--z)}.source_table .skipped{background-color:var(--aa)}.source_table .missed-branch{background-color:var(--u)}.source_table .missed-method{background-color:var(--x)}.source_table .covered:before{background-color:var(--k)}.source_table .missed:before{background-color:var(--m)}.source_table .never:before{background-color:var(--af)}.source_table .skipped:before{background-color:var(--ab)}.source_table .missed-branch:before{background-color:var(--v)}.source_table .missed-method:before{background-color:var(--y)}.toolbar{display:flex;align-items:flex-start;gap:var(--c);flex-shrink:0;margin-right:var(--aw)}.toolbar-toggle{appearance:none;background:transparent;color:var(--g);border:1px solid var(--b);border-radius:999px;padding:var(--e) var(--n);font-size:16px;font-family:var(--ar);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s,background .15s}.toolbar-toggle:hover{color:var(--a);background:var(--f);border-color:var(--p)}.toolbar-toggle[aria-pressed=true]{background:var(--s);color:var(--d);border-color:var(--d)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible,.source_table pre li:focus-visible{outline:2px solid var(--d);outline-offset:2px;border-radius:3px}#footer,.source-dialog__footer{color:var(--h);font-size:16px;text-align:center}#footer{margin-top:var(--ax)}.source-dialog__footer{flex-shrink:0;padding:var(--aq) var(--o);background:var(--i);border-top:1px solid var(--b)}#footer a,.source-dialog__footer a{color:var(--g);text-decoration:underline}#footer a:hover,.source-dialog__footer a:hover{color:var(--a)}table.file_list thead th.sorting,table.file_list thead th.sorting_asc,table.file_list thead th.sorting_desc{cursor:pointer;position:relative;padding-right:12px}table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--h)}table.file_list thead th.sorting:after{content:"\2195"}table.file_list thead th.sorting_asc:after{content:"\2191"}table.file_list thead th.sorting_desc:after{content:"\2193"}@media print{:root,.dark-mode{--i: #fff;--f: #fff;--ac: #f4f5f7;--a: #111;--g: #333;--h: #444;--ak: #f4f5f7;--b: #c0c5cc;--p: #999;--d: #0550ae;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--t: #d0d7de;--j: #ccf5d0;--k: #9ae6a4;--l: #ffd8d5;--m: #ffb8b3;--z: #fff;--af: #f0f1f3;--aa: #fff0a0;--ab: #eed860;--u: #ffd0a0;--v: #ffb060;--w: #b45309;--x: #e8d0ff;--y: #d4b0ff;--q: #7b2d8e;--ah: #fff;--r: #c0c5cc;--aj: #444;--ai: #f0f1f3;--ad: #e0e3e8;--ae: #333}.colorblind-mode{--green: #0060a8;--red: #c2410c;--j: #d3eaf7;--k: #a5d2ee;--l: #ffe0cc;--m: #ffc39a}body{padding:0;font-size:12pt}#loading,#sort-overlay,.toolbar,.source-dialog__toggles,.tab-bar,.source_files,.col-filter--name,.col-filter__coverage,tr.t-show-all,table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{display:none!important}#wrapper,.file_list_container{display:block!important}body:has(.source-dialog[open]) #wrapper{display:none!important}#content{border:none;border-radius:0;padding:0}.file_list_container .group_name{display:inline!important;font-size:16pt;font-weight:700}.file_list_container .covered_percent{display:inline!important;font-weight:600}.file_list_container+.file_list_container{margin-top:24pt}dialog.source-dialog{display:none}dialog.source-dialog[open]{display:block!important;position:static;width:100%;height:auto;max-height:none;overflow:visible;background:#fff}.source-dialog__close{display:none!important}.source-dialog__header{display:block;border-bottom:none;padding:0 0 8pt}.source-dialog__title h2{word-break:normal;overflow-wrap:break-word}.source-legend__row{justify-content:flex-start}.source-dialog__body{overflow:visible}.source_table pre{font-size:8pt;line-height:1.4}.source_table pre li{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre li:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre .hits{-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar{border:1px solid var(--b);-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar__fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list tbody tr:nth-child(2n){-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list{font-size:10pt}table.file_list thead th{font-size:9pt}table.file_list{page-break-inside:auto}table.file_list tr{page-break-inside:avoid}table.file_list thead{display:table-header-group}#footer,.source-dialog__footer{font-size:10pt;margin-top:12pt}#footer a:after,.source-dialog__footer a:after{content:" (" attr(href) ")";font-size:9pt;color:var(--h)}}
8
8
  </style>
9
9
  <script>
10
10
  // Apply the saved dark/light and colorblind preferences before paint to
@@ -60,12 +60,13 @@
60
60
  <button class="source-dialog__close" aria-label="Close" title="Close">&times;</button>
61
61
  </div>
62
62
  <div class="source-dialog__body" id="source-dialog-body" tabindex="0"></div>
63
+ <div class="source-dialog__footer" id="source-dialog-footer"></div>
63
64
  </dialog>
64
65
 
65
66
  <!-- SIMPLECOV_COVERAGE_DATA -->
66
- <script>"use strict";(()=>{var In=Object.create;var ht=Object.defineProperty;var Hn=Object.getOwnPropertyDescriptor;var kn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,Dn=Object.prototype.hasOwnProperty;var Bn=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Fn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kn(t))!Dn.call(e,o)&&o!==n&&ht(e,o,{get:()=>t[o],enumerable:!(r=Hn(t,o))||r.enumerable});return e};var Pn=(e,t,n)=>(n=e!=null?In($n(e)):{},Fn(t||!e||!e.__esModule?ht(n,"default",{value:e,enumerable:!0}):n,e));var oe=(e,t,n)=>new Promise((r,o)=>{var l=a=>{try{s(n.next(a))}catch(d){o(d)}},i=a=>{try{s(n.throw(a))}catch(d){o(d)}},s=a=>a.done?r(a.value):Promise.resolve(a.value).then(l,i);s((n=n.apply(e,t)).next())});var qt=Bn((Ao,Pt)=>{function xt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&xt(n)}),e}var we=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function At(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function V(e,...t){let n=Object.create(null);for(let r in e)n[r]=e[r];return t.forEach(function(r){for(let o in r)n[o]=r[o]}),n}var jn="</span>",Mt=e=>!!e.scope,zn=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,o)=>`${r}${"_".repeat(o+1)}`)].join(" ")}return`${t}${e}`},Fe=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=At(t)}openNode(t){if(!Mt(t))return;let n=zn(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Mt(t)&&(this.buffer+=jn)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},wt=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Pe=class e{constructor(){this.rootNode=wt(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=wt({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},qe=class extends Pe{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new Fe(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function de(e){return e?typeof e=="string"?e:e.source:null}function Rt(e){return J("(?=",e,")")}function Gn(e){return J("(?:",e,")*")}function Kn(e){return J("(?:",e,")?")}function J(...e){return e.map(n=>de(n)).join("")}function Vn(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ue(...e){return"("+(Vn(e).capture?"":"?:")+e.map(r=>de(r)).join("|")+")"}function Nt(e){return new RegExp(e.toString()+"|").exec("").length-1}function Xn(e,t){let n=e&&e.exec(t);return n&&n.index===0}var Yn=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function je(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;let o=n,l=de(r),i="";for(;l.length>0;){let s=Yn.exec(l);if(!s){i+=l;break}i+=l.substring(0,s.index),l=l.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?i+="\\"+String(Number(s[1])+o):(i+=s[0],s[0]==="("&&n++)}return i}).map(r=>`(${r})`).join(t)}var Zn=/\b\B/,Ot="[a-zA-Z]\\w*",ze="[a-zA-Z_]\\w*",It="\\b\\d+(\\.\\d+)?",Ht="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",kt="\\b(0b[01]+)",Qn="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Jn=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=J(t,/.*\b/,e.binary,/\b.*/)),V({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},fe={begin:"\\\\[\\s\\S]",relevance:0},er={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[fe]},tr={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[fe]},nr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Te=function(e,t,n={}){let r=V({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let o=Ue("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:J(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},rr=Te("//","$"),or=Te("/\\*","\\*/"),ir=Te("#","$"),sr={scope:"number",begin:It,relevance:0},lr={scope:"number",begin:Ht,relevance:0},ar={scope:"number",begin:kt,relevance:0},cr={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[fe,{begin:/\[/,end:/\]/,relevance:0,contains:[fe]}]},ur={scope:"title",begin:Ot,relevance:0},dr={scope:"title",begin:ze,relevance:0},fr={begin:"\\.\\s*"+ze,relevance:0},gr=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},Me=Object.freeze({__proto__:null,APOS_STRING_MODE:er,BACKSLASH_ESCAPE:fe,BINARY_NUMBER_MODE:ar,BINARY_NUMBER_RE:kt,COMMENT:Te,C_BLOCK_COMMENT_MODE:or,C_LINE_COMMENT_MODE:rr,C_NUMBER_MODE:lr,C_NUMBER_RE:Ht,END_SAME_AS_BEGIN:gr,HASH_COMMENT_MODE:ir,IDENT_RE:Ot,MATCH_NOTHING_RE:Zn,METHOD_GUARD:fr,NUMBER_MODE:sr,NUMBER_RE:It,PHRASAL_WORDS_MODE:nr,QUOTE_STRING_MODE:tr,REGEXP_MODE:cr,RE_STARTERS_RE:Qn,SHEBANG:Jn,TITLE_MODE:ur,UNDERSCORE_IDENT_RE:ze,UNDERSCORE_TITLE_MODE:dr});function pr(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function hr(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function mr(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=pr,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function br(e,t){Array.isArray(e.illegal)&&(e.illegal=Ue(...e.illegal))}function vr(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Er(e,t){e.relevance===void 0&&(e.relevance=1)}var _r=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=J(n.beforeMatch,Rt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},yr=["of","and","for","in","not","or","if","then","parent","list","value"],Mr="keyword";function $t(e,t,n=Mr){let r=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(l){Object.assign(r,$t(e[l],t,l))}),r;function o(l,i){t&&(i=i.map(s=>s.toLowerCase())),i.forEach(function(s){let a=s.split("|");r[a[0]]=[l,wr(a[0],a[1])]})}}function wr(e,t){return t?Number(t):Sr(e)?0:1}function Sr(e){return yr.includes(e.toLowerCase())}var St={},Q=e=>{console.error(e)},Tt=(e,...t)=>{console.log(`WARN: ${e}`,...t)},se=(e,t)=>{St[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),St[`${e}/${t}`]=!0)},Se=new Error;function Dt(e,t,{key:n}){let r=0,o=e[n],l={},i={};for(let s=1;s<=t.length;s++)i[s+r]=o[s],l[s+r]=!0,r+=Nt(t[s-1]);e[n]=i,e[n]._emit=l,e[n]._multi=!0}function Tr(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Q("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Se;if(typeof e.beginScope!="object"||e.beginScope===null)throw Q("beginScope must be object"),Se;Dt(e,e.begin,{key:"beginScope"}),e.begin=je(e.begin,{joinWith:""})}}function Lr(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Q("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Se;if(typeof e.endScope!="object"||e.endScope===null)throw Q("endScope must be object"),Se;Dt(e,e.end,{key:"endScope"}),e.end=je(e.end,{joinWith:""})}}function Cr(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function xr(e){Cr(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Tr(e),Lr(e)}function Ar(e){function t(i,s){return new RegExp(de(i),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,a){a.position=this.position++,this.matchIndexes[this.matchAt]=a,this.regexes.push([a,s]),this.matchAt+=Nt(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let s=this.regexes.map(a=>a[1]);this.matcherRe=t(je(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;let a=this.matcherRe.exec(s);if(!a)return null;let d=a.findIndex((_,w)=>w>0&&_!==void 0),p=this.matchIndexes[d];return a.splice(0,d),Object.assign(a,p)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];let a=new n;return this.rules.slice(s).forEach(([d,p])=>a.addRule(d,p)),a.compile(),this.multiRegexes[s]=a,a}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,a){this.rules.push([s,a]),a.type==="begin"&&this.count++}exec(s){let a=this.getMatcher(this.regexIndex);a.lastIndex=this.lastIndex;let d=a.exec(s);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let p=this.getMatcher(0);p.lastIndex=this.lastIndex+1,d=p.exec(s)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function o(i){let s=new r;return i.contains.forEach(a=>s.addRule(a.begin,{rule:a,type:"begin"})),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}function l(i,s){let a=i;if(i.isCompiled)return a;[hr,vr,xr,_r].forEach(p=>p(i,s)),e.compilerExtensions.forEach(p=>p(i,s)),i.__beforeBegin=null,[mr,br,Er].forEach(p=>p(i,s)),i.isCompiled=!0;let d=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),d=i.keywords.$pattern,delete i.keywords.$pattern),d=d||/\w+/,i.keywords&&(i.keywords=$t(i.keywords,e.case_insensitive)),a.keywordPatternRe=t(d,!0),s&&(i.begin||(i.begin=/\B|\b/),a.beginRe=t(a.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(a.endRe=t(a.end)),a.terminatorEnd=de(a.end)||"",i.endsWithParent&&s.terminatorEnd&&(a.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)),i.illegal&&(a.illegalRe=t(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(p){return Rr(p==="self"?i:p)})),i.contains.forEach(function(p){l(p,a)}),i.starts&&l(i.starts,s),a.matcher=o(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=V(e.classNameAliases||{}),l(e)}function Bt(e){return e?e.endsWithParent||Bt(e.starts):!1}function Rr(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return V(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Bt(e)?V(e,{starts:e.starts?V(e.starts):null}):Object.isFrozen(e)?V(e):e}var Nr="11.11.1",We=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Be=At,Lt=V,Ct=Symbol("nomatch"),Or=7,Ft=function(e){let t=Object.create(null),n=Object.create(null),r=[],o=!0,l="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]},s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:qe};function a(c){return s.noHighlightRe.test(c)}function d(c){let g=c.className+" ";g+=c.parentNode?c.parentNode.className:"";let b=s.languageDetectRe.exec(g);if(b){let y=W(b[1]);return y||(Tt(l.replace("{}",b[1])),Tt("Falling back to no-highlight mode for this block.",c)),y?b[1]:"no-highlight"}return g.split(/\s+/).find(y=>a(y)||W(y))}function p(c,g,b){let y="",T="";typeof g=="object"?(y=c,b=g.ignoreIllegals,T=g.language):(se("10.7.0","highlight(lang, code, ...args) has been deprecated."),se("10.7.0",`Please use highlight(code, options) instead.
67
- https://github.com/highlightjs/highlight.js/issues/2277`),T=c,y=g),b===void 0&&(b=!0);let D={code:y,language:T};ve("before:highlight",D);let K=D.result?D.result:_(D.language,D.code,b);return K.code=D.code,ve("after:highlight",K),K}function _(c,g,b,y){let T=Object.create(null);function D(u,f){return u.keywords[f]}function K(){if(!h.keywords){L.addText(M);return}let u=0;h.keywordPatternRe.lastIndex=0;let f=h.keywordPatternRe.exec(M),m="";for(;f;){m+=M.substring(u,f.index);let E=F.case_insensitive?f[0].toLowerCase():f[0],x=D(h,E);if(x){let[U,Nn]=x;if(L.addText(m),m="",T[E]=(T[E]||0)+1,T[E]<=Or&&(ye+=Nn),U.startsWith("_"))m+=f[0];else{let On=F.classNameAliases[U]||U;B(f[0],On)}}else m+=f[0];u=h.keywordPatternRe.lastIndex,f=h.keywordPatternRe.exec(M)}m+=M.substring(u),L.addText(m)}function Ee(){if(M==="")return;let u=null;if(typeof h.subLanguage=="string"){if(!t[h.subLanguage]){L.addText(M);return}u=_(h.subLanguage,M,!0,pt[h.subLanguage]),pt[h.subLanguage]=u._top}else u=C(M,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(ye+=u.relevance),L.__addSublanguage(u._emitter,u.language)}function H(){h.subLanguage!=null?Ee():K(),M=""}function B(u,f){u!==""&&(L.startScope(f),L.addText(u),L.endScope())}function ut(u,f){let m=1,E=f.length-1;for(;m<=E;){if(!u._emit[m]){m++;continue}let x=F.classNameAliases[u[m]]||u[m],U=f[m];x?B(U,x):(M=U,K(),M=""),m++}}function dt(u,f){return u.scope&&typeof u.scope=="string"&&L.openNode(F.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(B(M,F.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),M=""):u.beginScope._multi&&(ut(u.beginScope,f),M="")),h=Object.create(u,{parent:{value:h}}),h}function ft(u,f,m){let E=Xn(u.endRe,m);if(E){if(u["on:end"]){let x=new we(u);u["on:end"](f,x),x.isMatchIgnored&&(E=!1)}if(E){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return ft(u.parent,f,m)}function Ln(u){return h.matcher.regexIndex===0?(M+=u[0],1):($e=!0,0)}function Cn(u){let f=u[0],m=u.rule,E=new we(m),x=[m.__beforeBegin,m["on:begin"]];for(let U of x)if(U&&(U(u,E),E.isMatchIgnored))return Ln(f);return m.skip?M+=f:(m.excludeBegin&&(M+=f),H(),!m.returnBegin&&!m.excludeBegin&&(M=f)),dt(m,u),m.returnBegin?0:f.length}function xn(u){let f=u[0],m=g.substring(u.index),E=ft(h,u,m);if(!E)return Ct;let x=h;h.endScope&&h.endScope._wrap?(H(),B(f,h.endScope._wrap)):h.endScope&&h.endScope._multi?(H(),ut(h.endScope,u)):x.skip?M+=f:(x.returnEnd||x.excludeEnd||(M+=f),H(),x.excludeEnd&&(M=f));do h.scope&&L.closeNode(),!h.skip&&!h.subLanguage&&(ye+=h.relevance),h=h.parent;while(h!==E.parent);return E.starts&&dt(E.starts,u),x.returnEnd?0:f.length}function An(){let u=[];for(let f=h;f!==F;f=f.parent)f.scope&&u.unshift(f.scope);u.forEach(f=>L.openNode(f))}let _e={};function gt(u,f){let m=f&&f[0];if(M+=u,m==null)return H(),0;if(_e.type==="begin"&&f.type==="end"&&_e.index===f.index&&m===""){if(M+=g.slice(f.index,f.index+1),!o){let E=new Error(`0 width match regex (${c})`);throw E.languageName=c,E.badRule=_e.rule,E}return 1}if(_e=f,f.type==="begin")return Cn(f);if(f.type==="illegal"&&!b){let E=new Error('Illegal lexeme "'+m+'" for mode "'+(h.scope||"<unnamed>")+'"');throw E.mode=h,E}else if(f.type==="end"){let E=xn(f);if(E!==Ct)return E}if(f.type==="illegal"&&m==="")return M+=`
68
- `,1;if(ke>1e5&&ke>f.index*3)throw new Error("potential infinite loop, way more iterations than matches");return M+=m,m.length}let F=W(c);if(!F)throw Q(l.replace("{}",c)),new Error('Unknown language: "'+c+'"');let Rn=Ar(F),He="",h=y||Rn,pt={},L=new s.__emitter(s);An();let M="",ye=0,Z=0,ke=0,$e=!1;try{if(F.__emitTokens)F.__emitTokens(g,L);else{for(h.matcher.considerAll();;){ke++,$e?$e=!1:h.matcher.considerAll(),h.matcher.lastIndex=Z;let u=h.matcher.exec(g);if(!u)break;let f=g.substring(Z,u.index),m=gt(f,u);Z=u.index+m}gt(g.substring(Z))}return L.finalize(),He=L.toHTML(),{language:c,value:He,relevance:ye,illegal:!1,_emitter:L,_top:h}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:c,value:Be(g),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:Z,context:g.slice(Z-100,Z+100),mode:u.mode,resultSoFar:He},_emitter:L};if(o)return{language:c,value:Be(g),illegal:!1,relevance:0,errorRaised:u,_emitter:L,_top:h};throw u}}function w(c){let g={value:Be(c),illegal:!1,relevance:0,_top:i,_emitter:new s.__emitter(s)};return g._emitter.addText(c),g}function C(c,g){g=g||s.languages||Object.keys(t);let b=w(c),y=g.filter(W).filter(be).map(H=>_(H,c,!1));y.unshift(b);let T=y.sort((H,B)=>{if(H.relevance!==B.relevance)return B.relevance-H.relevance;if(H.language&&B.language){if(W(H.language).supersetOf===B.language)return 1;if(W(B.language).supersetOf===H.language)return-1}return 0}),[D,K]=T,Ee=D;return Ee.secondBest=K,Ee}function S(c,g,b){let y=g&&n[g]||b;c.classList.add("hljs"),c.classList.add(`language-${y}`)}function R(c){let g=null,b=d(c);if(a(b))return;if(ve("before:highlightElement",{el:c,language:b}),c.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",c);return}if(c.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(c)),s.throwUnescapedHTML))throw new We("One of your code blocks includes unescaped HTML.",c.innerHTML);g=c;let y=g.textContent,T=b?p(y,{language:b,ignoreIllegals:!0}):C(y);c.innerHTML=T.value,c.dataset.highlighted="yes",S(c,b,T.language),c.result={language:T.language,re:T.relevance,relevance:T.relevance},T.secondBest&&(c.secondBest={language:T.secondBest.language,relevance:T.secondBest.relevance}),ve("after:highlightElement",{el:c,result:T,text:y})}function N(c){s=Lt(s,c)}let G=()=>{X(),se("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function I(){X(),se("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let re=!1;function X(){function c(){X()}if(document.readyState==="loading"){re||window.addEventListener("DOMContentLoaded",c,!1),re=!0;return}document.querySelectorAll(s.cssSelector).forEach(R)}function at(c,g){let b=null;try{b=g(e)}catch(y){if(Q("Language definition for '{}' could not be registered.".replace("{}",c)),o)Q(y);else throw y;b=i}b.name||(b.name=c),t[c]=b,b.rawDefinition=g.bind(null,e),b.aliases&&Ie(b.aliases,{languageName:c})}function Y(c){delete t[c];for(let g of Object.keys(n))n[g]===c&&delete n[g]}function ct(){return Object.keys(t)}function W(c){return c=(c||"").toLowerCase(),t[c]||t[n[c]]}function Ie(c,{languageName:g}){typeof c=="string"&&(c=[c]),c.forEach(b=>{n[b.toLowerCase()]=g})}function be(c){let g=W(c);return g&&!g.disableAutodetect}function Mn(c){c["before:highlightBlock"]&&!c["before:highlightElement"]&&(c["before:highlightElement"]=g=>{c["before:highlightBlock"](Object.assign({block:g.el},g))}),c["after:highlightBlock"]&&!c["after:highlightElement"]&&(c["after:highlightElement"]=g=>{c["after:highlightBlock"](Object.assign({block:g.el},g))})}function wn(c){Mn(c),r.push(c)}function Sn(c){let g=r.indexOf(c);g!==-1&&r.splice(g,1)}function ve(c,g){let b=c;r.forEach(function(y){y[b]&&y[b](g)})}function Tn(c){return se("10.7.0","highlightBlock will be removed entirely in v12.0"),se("10.7.0","Please use highlightElement now."),R(c)}Object.assign(e,{highlight:p,highlightAuto:C,highlightAll:X,highlightElement:R,highlightBlock:Tn,configure:N,initHighlighting:G,initHighlightingOnLoad:I,registerLanguage:at,unregisterLanguage:Y,listLanguages:ct,getLanguage:W,registerAliases:Ie,autoDetection:be,inherit:Lt,addPlugin:wn,removePlugin:Sn}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=Nr,e.regex={concat:J,lookahead:Rt,either:Ue,optional:Kn,anyNumberOfTimes:Gn};for(let c in Me)typeof Me[c]=="object"&&xt(Me[c]);return Object.assign(e,Me),e},le=Ft({});le.newInstance=()=>Ft({});Pt.exports=le;le.HighlightJS=le;le.default=le});function O(e,t){return(t||document).querySelector(e)}function v(e,t){return Array.from((t||document).querySelectorAll(e))}function P(e,t,n,r){typeof n=="function"?e.addEventListener(t,n):e.addEventListener(t,function(o){let l=o.target.closest(n);l&&e.contains(l)&&r&&r.call(l,o)})}var qn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function k(e){return e.replace(/[&<>"']/g,t=>qn[t])}function mt(e){return oe(this,null,function*(){let t=new TextEncoder().encode(e),n=yield crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(n,0,4),r=>r.toString(16).padStart(2,"0")).join("")})}var Wn=90,Un=75;function q(e){return e>=Wn?"green":e>=Un?"yellow":"red"}function A(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function j(e){return(Math.floor(e*100)/100).toFixed(2)}function bt(e){return"g-"+e.replace(/[^a-zA-Z0-9-]/gu,t=>`_${t.codePointAt(0).toString(16)}_`)}var vt=[[31536e3,"year"],[2592e3,"month"],[86400,"day"],[3600,"hour"],[60,"minute"],[1,"second"]];function Et(e){let t=Math.floor((Date.now()-e.getTime())/1e3);for(let[n,r]of vt){let o=Math.floor(t/n);if(o>=1)return o===1?`about 1 ${r} ago`:`${o} ${r}s ago`}return"just now"}function _t(e){let t=(Date.now()-e.getTime())/1e3;for(let[n]of vt){let r=Math.floor(t/n);if(r>=1){let o=(r+1)*n;return Math.max((o-t)*1e3+500,1e3)}}return 1e3}var De=new Map;function ie(e){let t=De.get(e);if(t===void 0)throw new Error(`File ID was not precomputed for ${e}`);return t}function yt(e){return oe(this,null,function*(){De.clear();let t=[...new Set(e)],n=yield Promise.all(t.map(mt)),r=new Map;t.forEach((o,l)=>{let i=n[l],s=r.get(i)||[];s.push(o),r.set(i,s)});for(let[o,l]of r)l.sort().forEach((i,s)=>{De.set(i,s===0?o:`${o}-${s}`)})})}var Wt=Pn(qt(),1);var Ge=Wt.default;function Ut(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),o=t.concat(r,/(::\w+)*/),i={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],p={className:"subst",begin:/#\{/,end:/\}/,keywords:i},_={className:"string",contains:[e.BACKSLASH_ESCAPE,p],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,p]})]}]},w="[1-9](_?[0-9])*|0",C="[0-9](_?[0-9])*",S={className:"number",relevance:0,variants:[{begin:`\\b(${w})(\\.(${C}))?([eE][+-]?(${C})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},R={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:i}]},Y=[_,{variants:[{match:[/class\s+/,o,/\s+<\s+/,o]},{match:[/\b(class|module)\s+/,o]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:i},{match:[/(include|extend)\s+/,o],scope:{2:"title.class"},keywords:i},{relevance:0,match:[o,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[R]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[_,{begin:n}],relevance:0},S,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,p],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(a,d),relevance:0}].concat(a,d);p.contains=Y,R.contains=Y;let be=[{begin:/^\s*=>/,starts:{end:"$",contains:Y}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:i,contains:Y}}];return d.unshift(a),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(be).concat(d).concat(Y)}}function Ir(e){if(e==="oneshot_line")return"line";if(e==="line"||e==="branch"||e==="method")return e}function jt(e){let t=Ir(e.primary_coverage);return t==="line"&&e.line_coverage||t==="branch"&&e.branch_coverage||t==="method"&&e.method_coverage?t:e.line_coverage?"line":e.branch_coverage?"branch":"method"}function Hr(e,t){return t==="line"?e.lines:t==="branch"?e.branches:e.methods}function Le(e,t){return Hr(e,t)||e.lines||e.branches||e.methods}function Ve(e){let t=q(e),n=j(e);return`<div class="bar-sizer"><div class="coverage-bar"><div class="coverage-bar__fill coverage-bar__fill--${t}" style="width: ${n}%"></div></div></div>`}function ee(e,t,n,r,o){let l=q(e),i=j(e),s=`<div class="coverage-cell">${Ve(e)}<span class="coverage-pct">${i}%</span></div>`;if(o)return`<td class="cell--coverage strong t-totals__${r}-pct ${l}">${s}</td><td class="cell--numerator strong t-totals__${r}-num">${A(t)}/</td><td class="cell--denominator strong t-totals__${r}-den">${A(n)}</td>`;let a=` data-order="${j(e)}"`;return`<td class="cell--coverage cell--${r}-pct ${l}"${a}>${s}</td><td class="cell--numerator">${A(t)}/</td><td class="cell--denominator">${A(n)}</td>`}function Ce(e,t,n,r){return`<th class="cell--coverage">
67
+ <script>"use strict";(()=>{var Bn=Object.create;var vt=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var qn=Object.getPrototypeOf,Wn=Object.prototype.hasOwnProperty;var Un=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var jn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fn(t))!Wn.call(e,o)&&o!==n&&vt(e,o,{get:()=>t[o],enumerable:!(r=Pn(t,o))||r.enumerable});return e};var zn=(e,t,n)=>(n=e!=null?Bn(qn(e)):{},jn(t||!e||!e.__esModule?vt(n,"default",{value:e,enumerable:!0}):n,e));var oe=(e,t,n)=>new Promise((r,o)=>{var s=c=>{try{l(n.next(c))}catch(d){o(d)}},i=c=>{try{l(n.throw(c))}catch(d){o(d)}},l=c=>c.done?r(c.value):Promise.resolve(c.value).then(s,i);l((n=n.apply(e,t)).next())});var jt=Un((Ho,Ut)=>{function Nt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&Nt(n)}),e}var Se=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Ot(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function V(e,...t){let n=Object.create(null);for(let r in e)n[r]=e[r];return t.forEach(function(r){for(let o in r)n[o]=r[o]}),n}var Xn="</span>",Tt=e=>!!e.scope,Yn=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,o)=>`${r}${"_".repeat(o+1)}`)].join(" ")}return`${t}${e}`},qe=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ot(t)}openNode(t){if(!Tt(t))return;let n=Yn(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Tt(t)&&(this.buffer+=Xn)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},Lt=(e={})=>{let t={children:[]};return Object.assign(t,e),t},We=class e{constructor(){this.rootNode=Lt(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=Lt({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},Ue=class extends We{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new qe(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function de(e){return e?typeof e=="string"?e:e.source:null}function It(e){return J("(?=",e,")")}function Zn(e){return J("(?:",e,")*")}function Qn(e){return J("(?:",e,")?")}function J(...e){return e.map(n=>de(n)).join("")}function Jn(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function ze(...e){return"("+(Jn(e).capture?"":"?:")+e.map(r=>de(r)).join("|")+")"}function Ht(e){return new RegExp(e.toString()+"|").exec("").length-1}function er(e,t){let n=e&&e.exec(t);return n&&n.index===0}var tr=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Ge(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;let o=n,s=de(r),i="";for(;s.length>0;){let l=tr.exec(s);if(!l){i+=s;break}i+=s.substring(0,l.index),s=s.substring(l.index+l[0].length),l[0][0]==="\\"&&l[1]?i+="\\"+String(Number(l[1])+o):(i+=l[0],l[0]==="("&&n++)}return i}).map(r=>`(${r})`).join(t)}var nr=/\b\B/,kt="[a-zA-Z]\\w*",Ke="[a-zA-Z_]\\w*",$t="\\b\\d+(\\.\\d+)?",Dt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Bt="\\b(0b[01]+)",rr="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",or=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=J(t,/.*\b/,e.binary,/\b.*/)),V({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},fe={begin:"\\\\[\\s\\S]",relevance:0},ir={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[fe]},sr={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[fe]},lr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Le=function(e,t,n={}){let r=V({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let o=ze("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:J(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},cr=Le("//","$"),ar=Le("/\\*","\\*/"),ur=Le("#","$"),dr={scope:"number",begin:$t,relevance:0},fr={scope:"number",begin:Dt,relevance:0},gr={scope:"number",begin:Bt,relevance:0},pr={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[fe,{begin:/\[/,end:/\]/,relevance:0,contains:[fe]}]},hr={scope:"title",begin:kt,relevance:0},mr={scope:"title",begin:Ke,relevance:0},br={begin:"\\.\\s*"+Ke,relevance:0},vr=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},Me=Object.freeze({__proto__:null,APOS_STRING_MODE:ir,BACKSLASH_ESCAPE:fe,BINARY_NUMBER_MODE:gr,BINARY_NUMBER_RE:Bt,COMMENT:Le,C_BLOCK_COMMENT_MODE:ar,C_LINE_COMMENT_MODE:cr,C_NUMBER_MODE:fr,C_NUMBER_RE:Dt,END_SAME_AS_BEGIN:vr,HASH_COMMENT_MODE:ur,IDENT_RE:kt,MATCH_NOTHING_RE:nr,METHOD_GUARD:br,NUMBER_MODE:dr,NUMBER_RE:$t,PHRASAL_WORDS_MODE:lr,QUOTE_STRING_MODE:sr,REGEXP_MODE:pr,RE_STARTERS_RE:rr,SHEBANG:or,TITLE_MODE:hr,UNDERSCORE_IDENT_RE:Ke,UNDERSCORE_TITLE_MODE:mr});function Er(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function _r(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function yr(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Er,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function wr(e,t){Array.isArray(e.illegal)&&(e.illegal=ze(...e.illegal))}function Mr(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Sr(e,t){e.relevance===void 0&&(e.relevance=1)}var Tr=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=J(n.beforeMatch,It(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Lr=["of","and","for","in","not","or","if","then","parent","list","value"],Cr="keyword";function Pt(e,t,n=Cr){let r=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(s){Object.assign(r,Pt(e[s],t,s))}),r;function o(s,i){t&&(i=i.map(l=>l.toLowerCase())),i.forEach(function(l){let c=l.split("|");r[c[0]]=[s,xr(c[0],c[1])]})}}function xr(e,t){return t?Number(t):Ar(e)?0:1}function Ar(e){return Lr.includes(e.toLowerCase())}var Ct={},Q=e=>{console.error(e)},xt=(e,...t)=>{console.log(`WARN: ${e}`,...t)},se=(e,t)=>{Ct[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ct[`${e}/${t}`]=!0)},Te=new Error;function Ft(e,t,{key:n}){let r=0,o=e[n],s={},i={};for(let l=1;l<=t.length;l++)i[l+r]=o[l],s[l+r]=!0,r+=Ht(t[l-1]);e[n]=i,e[n]._emit=s,e[n]._multi=!0}function Rr(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Q("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Te;if(typeof e.beginScope!="object"||e.beginScope===null)throw Q("beginScope must be object"),Te;Ft(e,e.begin,{key:"beginScope"}),e.begin=Ge(e.begin,{joinWith:""})}}function Nr(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Q("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Te;if(typeof e.endScope!="object"||e.endScope===null)throw Q("endScope must be object"),Te;Ft(e,e.end,{key:"endScope"}),e.end=Ge(e.end,{joinWith:""})}}function Or(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Ir(e){Or(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Rr(e),Nr(e)}function Hr(e){function t(i,l){return new RegExp(de(i),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(l?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(l,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,l]),this.matchAt+=Ht(l)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let l=this.regexes.map(c=>c[1]);this.matcherRe=t(Ge(l,{joinWith:"|"}),!0),this.lastIndex=0}exec(l){this.matcherRe.lastIndex=this.lastIndex;let c=this.matcherRe.exec(l);if(!c)return null;let d=c.findIndex((_,M)=>M>0&&_!==void 0),h=this.matchIndexes[d];return c.splice(0,d),Object.assign(c,h)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(l){if(this.multiRegexes[l])return this.multiRegexes[l];let c=new n;return this.rules.slice(l).forEach(([d,h])=>c.addRule(d,h)),c.compile(),this.multiRegexes[l]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(l,c){this.rules.push([l,c]),c.type==="begin"&&this.count++}exec(l){let c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let d=c.exec(l);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let h=this.getMatcher(0);h.lastIndex=this.lastIndex+1,d=h.exec(l)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function o(i){let l=new r;return i.contains.forEach(c=>l.addRule(c.begin,{rule:c,type:"begin"})),i.terminatorEnd&&l.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&l.addRule(i.illegal,{type:"illegal"}),l}function s(i,l){let c=i;if(i.isCompiled)return c;[_r,Mr,Ir,Tr].forEach(h=>h(i,l)),e.compilerExtensions.forEach(h=>h(i,l)),i.__beforeBegin=null,[yr,wr,Sr].forEach(h=>h(i,l)),i.isCompiled=!0;let d=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),d=i.keywords.$pattern,delete i.keywords.$pattern),d=d||/\w+/,i.keywords&&(i.keywords=Pt(i.keywords,e.case_insensitive)),c.keywordPatternRe=t(d,!0),l&&(i.begin||(i.begin=/\B|\b/),c.beginRe=t(c.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(c.endRe=t(c.end)),c.terminatorEnd=de(c.end)||"",i.endsWithParent&&l.terminatorEnd&&(c.terminatorEnd+=(i.end?"|":"")+l.terminatorEnd)),i.illegal&&(c.illegalRe=t(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(h){return kr(h==="self"?i:h)})),i.contains.forEach(function(h){s(h,c)}),i.starts&&s(i.starts,l),c.matcher=o(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=V(e.classNameAliases||{}),s(e)}function qt(e){return e?e.endsWithParent||qt(e.starts):!1}function kr(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return V(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:qt(e)?V(e,{starts:e.starts?V(e.starts):null}):Object.isFrozen(e)?V(e):e}var $r="11.11.1",je=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Fe=Ot,At=V,Rt=Symbol("nomatch"),Dr=7,Wt=function(e){let t=Object.create(null),n=Object.create(null),r=[],o=!0,s="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]},l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Ue};function c(a){return l.noHighlightRe.test(a)}function d(a){let g=a.className+" ";g+=a.parentNode?a.parentNode.className:"";let b=l.languageDetectRe.exec(g);if(b){let y=W(b[1]);return y||(xt(s.replace("{}",b[1])),xt("Falling back to no-highlight mode for this block.",a)),y?b[1]:"no-highlight"}return g.split(/\s+/).find(y=>c(y)||W(y))}function h(a,g,b){let y="",T="";typeof g=="object"?(y=a,b=g.ignoreIllegals,T=g.language):(se("10.7.0","highlight(lang, code, ...args) has been deprecated."),se("10.7.0",`Please use highlight(code, options) instead.
68
+ https://github.com/highlightjs/highlight.js/issues/2277`),T=a,y=g),b===void 0&&(b=!0);let D={code:y,language:T};Ee("before:highlight",D);let K=D.result?D.result:_(D.language,D.code,b);return K.code=D.code,Ee("after:highlight",K),K}function _(a,g,b,y){let T=Object.create(null);function D(u,f){return u.keywords[f]}function K(){if(!p.keywords){C.addText(w);return}let u=0;p.keywordPatternRe.lastIndex=0;let f=p.keywordPatternRe.exec(w),m="";for(;f;){m+=w.substring(u,f.index);let E=P.case_insensitive?f[0].toLowerCase():f[0],A=D(p,E);if(A){let[U,$n]=A;if(C.addText(m),m="",T[E]=(T[E]||0)+1,T[E]<=Dr&&(we+=$n),U.startsWith("_"))m+=f[0];else{let Dn=P.classNameAliases[U]||U;B(f[0],Dn)}}else m+=f[0];u=p.keywordPatternRe.lastIndex,f=p.keywordPatternRe.exec(w)}m+=w.substring(u),C.addText(m)}function _e(){if(w==="")return;let u=null;if(typeof p.subLanguage=="string"){if(!t[p.subLanguage]){C.addText(w);return}u=_(p.subLanguage,w,!0,bt[p.subLanguage]),bt[p.subLanguage]=u._top}else u=L(w,p.subLanguage.length?p.subLanguage:null);p.relevance>0&&(we+=u.relevance),C.__addSublanguage(u._emitter,u.language)}function H(){p.subLanguage!=null?_e():K(),w=""}function B(u,f){u!==""&&(C.startScope(f),C.addText(u),C.endScope())}function gt(u,f){let m=1,E=f.length-1;for(;m<=E;){if(!u._emit[m]){m++;continue}let A=P.classNameAliases[u[m]]||u[m],U=f[m];A?B(U,A):(w=U,K(),w=""),m++}}function pt(u,f){return u.scope&&typeof u.scope=="string"&&C.openNode(P.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(B(w,P.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),w=""):u.beginScope._multi&&(gt(u.beginScope,f),w="")),p=Object.create(u,{parent:{value:p}}),p}function ht(u,f,m){let E=er(u.endRe,m);if(E){if(u["on:end"]){let A=new Se(u);u["on:end"](f,A),A.isMatchIgnored&&(E=!1)}if(E){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return ht(u.parent,f,m)}function Nn(u){return p.matcher.regexIndex===0?(w+=u[0],1):(Be=!0,0)}function On(u){let f=u[0],m=u.rule,E=new Se(m),A=[m.__beforeBegin,m["on:begin"]];for(let U of A)if(U&&(U(u,E),E.isMatchIgnored))return Nn(f);return m.skip?w+=f:(m.excludeBegin&&(w+=f),H(),!m.returnBegin&&!m.excludeBegin&&(w=f)),pt(m,u),m.returnBegin?0:f.length}function In(u){let f=u[0],m=g.substring(u.index),E=ht(p,u,m);if(!E)return Rt;let A=p;p.endScope&&p.endScope._wrap?(H(),B(f,p.endScope._wrap)):p.endScope&&p.endScope._multi?(H(),gt(p.endScope,u)):A.skip?w+=f:(A.returnEnd||A.excludeEnd||(w+=f),H(),A.excludeEnd&&(w=f));do p.scope&&C.closeNode(),!p.skip&&!p.subLanguage&&(we+=p.relevance),p=p.parent;while(p!==E.parent);return E.starts&&pt(E.starts,u),A.returnEnd?0:f.length}function Hn(){let u=[];for(let f=p;f!==P;f=f.parent)f.scope&&u.unshift(f.scope);u.forEach(f=>C.openNode(f))}let ye={};function mt(u,f){let m=f&&f[0];if(w+=u,m==null)return H(),0;if(ye.type==="begin"&&f.type==="end"&&ye.index===f.index&&m===""){if(w+=g.slice(f.index,f.index+1),!o){let E=new Error(`0 width match regex (${a})`);throw E.languageName=a,E.badRule=ye.rule,E}return 1}if(ye=f,f.type==="begin")return On(f);if(f.type==="illegal"&&!b){let E=new Error('Illegal lexeme "'+m+'" for mode "'+(p.scope||"<unnamed>")+'"');throw E.mode=p,E}else if(f.type==="end"){let E=In(f);if(E!==Rt)return E}if(f.type==="illegal"&&m==="")return w+=`
69
+ `,1;if(De>1e5&&De>f.index*3)throw new Error("potential infinite loop, way more iterations than matches");return w+=m,m.length}let P=W(a);if(!P)throw Q(s.replace("{}",a)),new Error('Unknown language: "'+a+'"');let kn=Hr(P),$e="",p=y||kn,bt={},C=new l.__emitter(l);Hn();let w="",we=0,Z=0,De=0,Be=!1;try{if(P.__emitTokens)P.__emitTokens(g,C);else{for(p.matcher.considerAll();;){De++,Be?Be=!1:p.matcher.considerAll(),p.matcher.lastIndex=Z;let u=p.matcher.exec(g);if(!u)break;let f=g.substring(Z,u.index),m=mt(f,u);Z=u.index+m}mt(g.substring(Z))}return C.finalize(),$e=C.toHTML(),{language:a,value:$e,relevance:we,illegal:!1,_emitter:C,_top:p}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:a,value:Fe(g),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:Z,context:g.slice(Z-100,Z+100),mode:u.mode,resultSoFar:$e},_emitter:C};if(o)return{language:a,value:Fe(g),illegal:!1,relevance:0,errorRaised:u,_emitter:C,_top:p};throw u}}function M(a){let g={value:Fe(a),illegal:!1,relevance:0,_top:i,_emitter:new l.__emitter(l)};return g._emitter.addText(a),g}function L(a,g){g=g||l.languages||Object.keys(t);let b=M(a),y=g.filter(W).filter(ve).map(H=>_(H,a,!1));y.unshift(b);let T=y.sort((H,B)=>{if(H.relevance!==B.relevance)return B.relevance-H.relevance;if(H.language&&B.language){if(W(H.language).supersetOf===B.language)return 1;if(W(B.language).supersetOf===H.language)return-1}return 0}),[D,K]=T,_e=D;return _e.secondBest=K,_e}function S(a,g,b){let y=g&&n[g]||b;a.classList.add("hljs"),a.classList.add(`language-${y}`)}function N(a){let g=null,b=d(a);if(c(b))return;if(Ee("before:highlightElement",{el:a,language:b}),a.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",a);return}if(a.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(a)),l.throwUnescapedHTML))throw new je("One of your code blocks includes unescaped HTML.",a.innerHTML);g=a;let y=g.textContent,T=b?h(y,{language:b,ignoreIllegals:!0}):L(y);a.innerHTML=T.value,a.dataset.highlighted="yes",S(a,b,T.language),a.result={language:T.language,re:T.relevance,relevance:T.relevance},T.secondBest&&(a.secondBest={language:T.secondBest.language,relevance:T.secondBest.relevance}),Ee("after:highlightElement",{el:a,result:T,text:y})}function O(a){l=At(l,a)}let G=()=>{X(),se("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function I(){X(),se("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let re=!1;function X(){function a(){X()}if(document.readyState==="loading"){re||window.addEventListener("DOMContentLoaded",a,!1),re=!0;return}document.querySelectorAll(l.cssSelector).forEach(N)}function dt(a,g){let b=null;try{b=g(e)}catch(y){if(Q("Language definition for '{}' could not be registered.".replace("{}",a)),o)Q(y);else throw y;b=i}b.name||(b.name=a),t[a]=b,b.rawDefinition=g.bind(null,e),b.aliases&&ke(b.aliases,{languageName:a})}function Y(a){delete t[a];for(let g of Object.keys(n))n[g]===a&&delete n[g]}function ft(){return Object.keys(t)}function W(a){return a=(a||"").toLowerCase(),t[a]||t[n[a]]}function ke(a,{languageName:g}){typeof a=="string"&&(a=[a]),a.forEach(b=>{n[b.toLowerCase()]=g})}function ve(a){let g=W(a);return g&&!g.disableAutodetect}function Cn(a){a["before:highlightBlock"]&&!a["before:highlightElement"]&&(a["before:highlightElement"]=g=>{a["before:highlightBlock"](Object.assign({block:g.el},g))}),a["after:highlightBlock"]&&!a["after:highlightElement"]&&(a["after:highlightElement"]=g=>{a["after:highlightBlock"](Object.assign({block:g.el},g))})}function xn(a){Cn(a),r.push(a)}function An(a){let g=r.indexOf(a);g!==-1&&r.splice(g,1)}function Ee(a,g){let b=a;r.forEach(function(y){y[b]&&y[b](g)})}function Rn(a){return se("10.7.0","highlightBlock will be removed entirely in v12.0"),se("10.7.0","Please use highlightElement now."),N(a)}Object.assign(e,{highlight:h,highlightAuto:L,highlightAll:X,highlightElement:N,highlightBlock:Rn,configure:O,initHighlighting:G,initHighlightingOnLoad:I,registerLanguage:dt,unregisterLanguage:Y,listLanguages:ft,getLanguage:W,registerAliases:ke,autoDetection:ve,inherit:At,addPlugin:xn,removePlugin:An}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=$r,e.regex={concat:J,lookahead:It,either:ze,optional:Qn,anyNumberOfTimes:Zn};for(let a in Me)typeof Me[a]=="object"&&Nt(Me[a]);return Object.assign(e,Me),e},le=Wt({});le.newInstance=()=>Wt({});Ut.exports=le;le.HighlightJS=le;le.default=le});function x(e,t){return(t||document).querySelector(e)}function v(e,t){return Array.from((t||document).querySelectorAll(e))}function F(e,t,n,r){typeof n=="function"?e.addEventListener(t,n):e.addEventListener(t,function(o){let s=o.target.closest(n);s&&e.contains(s)&&r&&r.call(s,o)})}var Gn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function k(e){return e.replace(/[&<>"']/g,t=>Gn[t])}function Et(e){return oe(this,null,function*(){let t=new TextEncoder().encode(e),n=yield crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(n,0,4),r=>r.toString(16).padStart(2,"0")).join("")})}var Kn=90,Vn=75;function q(e){return e>=Kn?"green":e>=Vn?"yellow":"red"}function R(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function j(e){return(Math.floor(e*100)/100).toFixed(2)}function _t(e){return"g-"+e.replace(/[^a-zA-Z0-9-]/gu,t=>`_${t.codePointAt(0).toString(16)}_`)}var yt=[[31536e3,"year"],[2592e3,"month"],[86400,"day"],[3600,"hour"],[60,"minute"],[1,"second"]];function wt(e){let t=Math.floor((Date.now()-e.getTime())/1e3);for(let[n,r]of yt){let o=Math.floor(t/n);if(o>=1)return o===1?`about 1 ${r} ago`:`${o} ${r}s ago`}return"just now"}function Mt(e){let t=(Date.now()-e.getTime())/1e3;for(let[n]of yt){let r=Math.floor(t/n);if(r>=1){let o=(r+1)*n;return Math.max((o-t)*1e3+500,1e3)}}return 1e3}var Pe=new Map;function ie(e){let t=Pe.get(e);if(t===void 0)throw new Error(`File ID was not precomputed for ${e}`);return t}function St(e){return oe(this,null,function*(){Pe.clear();let t=[...new Set(e)],n=yield Promise.all(t.map(Et)),r=new Map;t.forEach((o,s)=>{let i=n[s],l=r.get(i)||[];l.push(o),r.set(i,l)});for(let[o,s]of r)s.sort().forEach((i,l)=>{Pe.set(i,l===0?o:`${o}-${l}`)})})}var zt=zn(jt(),1);var Ve=zt.default;function Gt(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),o=t.concat(r,/(::\w+)*/),i={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},l={className:"doctag",begin:"@[A-Za-z]+"},c={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[l]}),e.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],h={className:"subst",begin:/#\{/,end:/\}/,keywords:i},_={className:"string",contains:[e.BACKSLASH_ESCAPE,h],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,h]})]}]},M="[1-9](_?[0-9])*|0",L="[0-9](_?[0-9])*",S={className:"number",relevance:0,variants:[{begin:`\\b(${M})(\\.(${L}))?([eE][+-]?(${L})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},N={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:i}]},Y=[_,{variants:[{match:[/class\s+/,o,/\s+<\s+/,o]},{match:[/\b(class|module)\s+/,o]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:i},{match:[/(include|extend)\s+/,o],scope:{2:"title.class"},keywords:i},{relevance:0,match:[o,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[N]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[_,{begin:n}],relevance:0},S,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,h],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(c,d),relevance:0}].concat(c,d);h.contains=Y,N.contains=Y;let ve=[{begin:/^\s*=>/,starts:{end:"$",contains:Y}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:i,contains:Y}}];return d.unshift(c),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(ve).concat(d).concat(Y)}}function Br(e){if(e==="oneshot_line")return"line";if(e==="line"||e==="branch"||e==="method")return e}function Kt(e){let t=Br(e.primary_coverage);return t==="line"&&e.line_coverage||t==="branch"&&e.branch_coverage||t==="method"&&e.method_coverage?t:e.line_coverage?"line":e.branch_coverage?"branch":"method"}function Pr(e,t){return t==="line"?e.lines:t==="branch"?e.branches:e.methods}function Ce(e,t){return Pr(e,t)||e.lines||e.branches||e.methods}function Ye(e){let t=q(e),n=j(e);return`<div class="bar-sizer"><div class="coverage-bar"><div class="coverage-bar__fill coverage-bar__fill--${t}" style="width: ${n}%"></div></div></div>`}function ee(e,t,n,r,o){let s=q(e),i=j(e),l=`<div class="coverage-cell">${Ye(e)}<span class="coverage-pct">${i}%</span></div>`;if(o)return`<td class="cell--coverage strong t-totals__${r}-pct ${s}">${l}</td><td class="cell--numerator strong t-totals__${r}-num">${R(t)}/</td><td class="cell--denominator strong t-totals__${r}-den">${R(n)}</td>`;let c=` data-order="${j(e)}"`;return`<td class="cell--coverage cell--${r}-pct ${s}"${c}>${l}</td><td class="cell--numerator" data-order="${t}">${R(t)}/</td><td class="cell--denominator" data-order="${n}">${R(n)}</td>`}function xe(e,t,n,r){return`<th class="cell--coverage" data-sort-key="${t}-percent">
69
70
  <div class="th-with-filter">
70
71
  <span class="th-label">${e}</span>
71
72
  <div class="col-filter__coverage">
@@ -74,13 +75,13 @@ https://github.com/highlightjs/highlight.js/issues/2277`),T=c,y=g),b===void 0&&(
74
75
  </div>
75
76
  </div>
76
77
  </th>
77
- <th class="cell--numerator">${n}</th>
78
- <th class="cell--denominator">${r}</th>`}function Ke(e){let{type:t,label:n,covered:r,total:o,enabled:l,toggle:i}=e;if(!l)return`<div class="t-${t}-summary">
78
+ <th class="cell--numerator" data-sort-key="${t}-covered">${n}</th>
79
+ <th class="cell--denominator" data-sort-key="${t}-total">${r}</th>`}function Xe(e){let{type:t,label:n,covered:r,total:o,enabled:s,toggle:i}=e;if(!s)return`<div class="t-${t}-summary">
79
80
  ${n}: <span class="coverage-disabled">disabled</span>
80
- </div>`;let s=o-r,a=o>0?r*100/o:100,d=q(a),p=e.suffix||"covered",_=e.missedClass||"red",w=`<div class="t-${t}-summary">
81
- ${n}: <span class="${d}"><b>${j(a)}%</b></span><span class="coverage-cell__fraction"> ${r}/${o} ${p}</span>`;if(s>0){let C=i?`<a href="#" class="t-missed-method-toggle"><b>${s}</b> missed</a>`:`<span class="${_}"><b>${s}</b> missed</span>`;w+=`<span class="coverage-cell__fraction">,</span>
82
- ${C}`}return w+=`
83
- </div>`,w}function zt(e){return'<div class="summary-stats">'+Ke({type:"line",label:"Line coverage",covered:e.coveredLines,total:e.totalLines,enabled:e.lineCoverage,suffix:"relevant lines covered"})+Ke({type:"branch",label:"Branch coverage",covered:e.coveredBranches,total:e.totalBranches,enabled:e.branchCoverage,missedClass:"missed-branch-text"})+Ke({type:"method",label:"Method coverage",covered:e.coveredMethods,total:e.totalMethods,enabled:e.methodCoverage,missedClass:"missed-method-text-color",toggle:e.showMethodToggle})+"</div>"}function kr(e){let{containerId:t,title:n,filenames:r,stats:o,lineCoverage:l,branchCoverage:i,methodCoverage:s,primaryCoverage:a}=e,d=l?o.lines:void 0,p=i?o.branches:void 0,_=s?o.methods:void 0,w=Le(o,a),C=w?w.percent:100,S=[`<div class="file_list_container" id="${t}" data-total-files="${r.length}">`,`<span class="group_name hide">${k(n)}</span>`,`<span class="covered_percent hide"><span class="${q(C)}">${j(C)}%</span></span>`,'<div class="file_list--responsive"><table class="file_list"><thead><tr>','<th class="cell--left"><div class="th-with-filter"><span class="th-label">File Name</span><input type="search" class="col-filter col-filter--name" placeholder="Filter paths\u2026"></div></th>'];d&&S.push(Ce("Line Coverage","line","Covered","Lines")),i&&S.push(Ce("Branch Coverage","branch","Covered","Branches")),s&&S.push(Ce("Method Coverage","method","Covered","Methods")),S.push("</tr>");let R=r.length===1?"file":"files";return S.push(`<tr class="totals-row"><td class="strong t-file-count">${A(r.length)} ${R}</td>`),d&&S.push(ee(d.percent,d.covered,d.total,"line",!0)),p&&S.push(ee(p.percent,p.covered,p.total,"branch",!0)),_&&S.push(ee(_.percent,_.covered,_.total,"method",!0)),S.push("</tr></thead><tbody>"),S.join("")}function $r(e){let{filename:t,coverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:l}=e,i=ie(t),s=[];r&&s.push(`data-covered-lines="${n.covered_lines||0}"`,`data-relevant-lines="${n.total_lines||0}"`),o&&s.push(`data-covered-branches="${n.covered_branches||0}"`,`data-total-branches="${n.total_branches||0}"`),l&&s.push(`data-covered-methods="${n.covered_methods||0}"`,`data-total-methods="${n.total_methods||0}"`);let a=[`<tr class="t-file" ${s.join(" ")}>`,`<td class="strong t-file__name"><a href="#${i}" class="src_link" title="${k(t)}">${k(t)}</a></td>`];if(r){let d=n.lines_covered_percent===void 0?100:n.lines_covered_percent;a.push(ee(d,n.covered_lines||0,n.total_lines||0,"line",!1))}if(o){let d=n.branches_covered_percent===void 0?100:n.branches_covered_percent;a.push(ee(d,n.covered_branches||0,n.total_branches||0,"branch",!1))}if(l){let d=n.methods_covered_percent===void 0?100:n.methods_covered_percent;a.push(ee(d,n.covered_methods||0,n.total_methods||0,"method",!1))}return a.push("</tr>"),a.join("")}function Xe(e){let{filenames:t,allCoverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:l}=e,i=[kr(e)];for(let s of t){let a=n[s];a&&i.push($r({filename:s,coverage:a,lineCoverage:r,branchCoverage:o,methodCoverage:l}))}return i.push("</tbody></table></div></div>"),i.join("")}function Dr(e){let{lineIndex:t,lineCov:n,branchesReport:r,missedMethodLines:o,branchCoverage:l,methodCoverage:i}=e,s=t+1;if(n==="ignored")return"skipped";if(l){let a=r[s];if(a&&a.some(([,d])=>d===0))return"missed-branch"}return i&&o.has(s)?"missed-method":n==null?"never":n===0?"missed":"covered"}function Br(e){let t={};if(!e)return t;for(let{coverage:n,report_line:r,type:o}of e){if(n==="ignored")continue;(t[r]||(t[r]=[])).push([o,n])}return t}function Fr(e){let t=new Set;if(!e)return t;for(let n of e)if(n.coverage===0&&n.start_line&&n.end_line)for(let r=n.start_line;r<=n.end_line;r++)t.add(r);return t}function Pr(e){let{index:t,source:n,lineCov:r,status:o,branchCoverage:l,lineBranches:i}=e,s=t+1,a=typeof r=="number"?` data-hits="${r}"`:"",d=[`<li class="${o}"${a} data-linenumber="${s}">`];if(typeof r=="number"&&r>0?d.push(`<span class="hits" data-content="${r}"></span>`):r==="ignored"&&d.push('<span class="hits" data-content="skipped"></span>'),l&&i)for(let[p,_]of i){let w=k(p);d.push(`<span class="hits" data-content="${w}: ${_}" title="${w} branch hit ${_} times"></span>`)}return d.push(`<code class="ruby">${k(n)}</code></li>`),d.join("")}function Gt(e,t,n,r,o){var G;let l=ie(e),i=n&&t.covered_lines||0,s=n&&t.total_lines||0,a=r&&t.covered_branches||0,d=r&&t.total_branches||0,p=o&&t.covered_methods||0,_=o&&t.total_methods||0,w=(t.methods||[]).filter(I=>I.coverage===0),C=o&&w.length>0,S=Br(t.branches),R=Fr(t.methods),N=[`<div class="source_table" id="${l}">`,'<div class="header">',`<h2>${k(e)}</h2>`,zt({coveredLines:i,totalLines:s,coveredBranches:a,totalBranches:d,coveredMethods:p,totalMethods:_,lineCoverage:n,branchCoverage:r,methodCoverage:o,showMethodToggle:C})];C&&N.push('<div class="t-missed-method-list" style="display: none"><ul>',w.map(I=>`<li><tt>${k(I.name)}</tt></li>`).join(""),"</ul></div>"),N.push("</div>","<pre><ol>");for(let I=0;I<t.source.length;I++){let re=(G=t.lines)==null?void 0:G[I],X=Dr({lineIndex:I,lineCov:re,branchesReport:S,missedMethodLines:R,branchCoverage:r,methodCoverage:o});N.push(Pr({index:I,source:t.source[I],lineCov:re,status:X,branchCoverage:r,lineBranches:r?S[I+1]:void 0}))}return N.push("</ol></pre></div>"),N.join("")}Ge.registerLanguage("ruby",Ut);var Ye=null;function ge(){if(!Ye)return;let e=getComputedStyle(document.documentElement).getPropertyValue(`--${Ye}`).trim(),t=document.createElement("canvas");t.width=t.height=16;let n=t.getContext("2d");if(!e||!n)return;n.fillStyle=e,n.fillRect(0,0,16,16);let r=document.querySelector('link[rel="icon"]');r||(r=document.createElement("link"),r.rel="icon",r.type="image/png",document.head.appendChild(r)),r.href=t.toDataURL("image/png")}var te=null;function Kt(e){let t=e.meta,n=t.line_coverage,r=t.branch_coverage,o=t.method_coverage,l=jt(t);document.title=`Code coverage for ${t.project_name}`;let i=Object.keys(e.coverage),s=Le(e.total,l),a=s&&s.total>0?s.percent:100;Ye=q(a),ge(),r&&document.body.setAttribute("data-branch-coverage","true");let d=document.getElementById("content"),p=[Xe({containerId:"g-total",title:"All Files",filenames:i,stats:e.total,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:l})];for(let N of Object.keys(e.groups)){let G=e.groups[N];p.push(Xe({containerId:bt(`group-${N}`),title:N,filenames:G.files||[],stats:G,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:l}))}d.innerHTML=p.join("");let _={};for(let N of i)_[ie(N)]=N;te={idToFilename:_,coverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o};let w=new Date(t.timestamp),C=document.getElementById("footer");C.innerHTML=`Generated <abbr class="timeago" title="${w.toISOString()}">${w.toISOString()}</abbr> by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v${k(t.simplecov_version)} using ${k(t.command_name)}`;let S=document.getElementById("source-legend"),R="";n&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--covered"></span>Covered</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--skipped"></span>Skipped</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed"></span>Missed line</span>'),r&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-branch"></span>Missed branch</span>'),o&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-method"></span>Missed method</span>'),S.innerHTML=R}function Vt(e){let t=document.getElementById(e);if(t)return t;if(!te)return null;let n=te.idToFilename[e];if(!n)return null;let r=Gt(n,te.coverage[n],te.lineCoverage,te.branchCoverage,te.methodCoverage),o=document.querySelector(".source_files"),l=document.createElement("div");l.innerHTML=r;let i=l.firstElementChild;return o.appendChild(i),v("pre code",i).forEach(s=>Ge.highlightElement(s)),i}var Ze=1e3,qr="t-window-hidden",Xt=new WeakSet;function Wr(e,t){let n=e.querySelector("tr.t-show-all");if(!n){n=document.createElement("tr"),n.className="t-show-all";let r=document.createElement("td");r.colSpan=t,n.appendChild(r),n.addEventListener("click",o=>{o.preventDefault(),Xt.add(e),ae(e.closest("table"))}),e.appendChild(n)}return n}function ae(e){let t=e.querySelector("tbody");if(!t)return;let n=t.querySelectorAll("tr.t-file"),r=Xt.has(t),o=0;if(n.forEach(i=>{let s=i.style.display==="none";s||(o+=1),i.classList.toggle(qr,!r&&!s&&o>Ze)}),r||o<=Ze){let i=t.querySelector("tr.t-show-all");i&&(i.style.display="none");return}let l=Wr(t,n[0].children.length);l.style.display="",l.firstElementChild.innerHTML=`Showing the first ${A(Ze)} of ${A(o)} files. <a href="#" class="t-show-all__link">Show all</a>`,t.appendChild(l)}var Qt=new WeakMap;function Ur(e,t){let n=0,r=e.children;for(let o=0;o<r.length;o++)if(r[o].style.display!=="none"){if(n===t)return o;n+=1}return null}function jr(e){if(!e)return"";let t=e.getAttribute("data-order");if(t!==null)return Number.parseFloat(t);let n=(e.textContent||"").trim(),r=Number.parseFloat(n);return Number.isNaN(r)?n.toLowerCase():r}var Yt=new WeakMap;function Jt(e,t){var l;if(t===null)return"";let n=Yt.get(e);n||(n=new Map,Yt.set(e,n));let r=n.get(t);if(r!==void 0)return r;let o=jr((l=e.children[t])!=null?l:null);return n.set(t,o),o}var zr=new Intl.Collator;function en(e,t){return typeof e=="number"&&typeof t=="number"?e-t:zr.compare(String(e),String(t))}function Qe(e,t,n){Qt.set(e,{colIndex:t,direction:n});let r=0;v("thead tr:first-child th",e).forEach(o=>{let l=Number.parseInt(o.getAttribute("colspan")||"1",10);o.classList.remove("sorting_asc","sorting_desc","sorting");let i=t>=r&&t<r+l;o.classList.add(i?n==="asc"?"sorting_asc":"sorting_desc":"sorting"),r+=l})}function tn(e,t){let n=document.createDocumentFragment();t.forEach(r=>n.appendChild(r)),e.appendChild(n)}function Zt(e,t){let n=Qt.get(e),r=n&&n.colIndex===t&&n.direction==="asc"?"desc":"asc",o=e.querySelector("tbody"),l=Array.from(o.querySelectorAll("tr.t-file"));if(l.length===0){Qe(e,t,r);return}if(n&&n.colIndex===t)l.reverse();else{let i=Ur(l[0],t),s=l.map(d=>({row:d,value:Jt(d,i)})),a=r==="asc"?1:-1;s.sort((d,p)=>a*en(d.value,p.value)),l=s.map(({row:d})=>d)}tn(o,l),ae(e),Qe(e,t,r)}var Gr=500,pe=null;function Kr(){if(pe)return pe;let e=document.createElement("div");return e.id="sort-overlay",e.innerHTML='<span id="sort-overlay-label">Sorting\u2026</span>',e.style.display="none",document.body.appendChild(e),pe=e,e}function Vr(){let e=Kr();e.style.transition="none",e.style.opacity="1",e.style.display="flex"}function Xr(){if(!pe)return;let e=pe;e.style.transition="opacity 0.15s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},150)}function Yr(e,t){if(e.querySelectorAll("tbody tr.t-file").length<Gr){Zt(e,t);return}Vr(),requestAnimationFrame(()=>requestAnimationFrame(()=>{Zt(e,t),Xr()}))}function Zr(e,t){let n=0;for(let r of v("thead tr:first-child th",e)){let o=Number.parseInt(r.getAttribute("colspan")||"1",10);if(r===t)return n+o-1;n+=o}return n}function Qr(e,t){let n=Array.from(e.children);if(t){let o=n.findIndex(l=>l.classList.contains(`cell--${t}-pct`));if(o!==-1)return o}let r=n.findIndex(o=>o.hasAttribute("data-order"));return r===-1?null:r}function Jr(e,t){let n=e.querySelector("tbody");if(!n)return;let r=Array.from(n.querySelectorAll("tr.t-file"));if(r.length===0)return;let o=Qr(r[0],t);if(o===null)return;let l=r.map(i=>({row:i,value:Jt(i,o)}));l.sort((i,s)=>en(i.value,s.value)),tn(n,l.map(({row:i})=>i)),Qe(e,o,"asc")}function nn(e){v("table.file_list").forEach(t=>{v("thead tr:first-child th",t).forEach(n=>{n.classList.add("sorting"),n.style.cursor="pointer",n.addEventListener("click",()=>Yr(t,Zr(t,n)))}),Jr(t,e),ae(t)})}var he=null;function xe(){he=null}function rn(){if(he)return he;let e=v(".file_list_container").filter(t=>t.style.display!=="none");return e.length?(he=v("tbody tr.t-file",e[0]).filter(t=>t.style.display!=="none"),he):[]}var eo=240,to=160;function on(e,t){e.style.setProperty("--bar-sizer-width",t+"px")}var no=8;function ro(e,t){let n=to,r=eo;for(;r-n>no;){let o=Math.ceil((n+r)/2);on(e,o),e.offsetWidth,e.scrollWidth<=t?n=o:r=o-1}return n}function et(){v(".file_list_container").forEach(e=>{if(e.style.display==="none"||e.offsetWidth===0)return;let t=O("table.file_list",e);if(!t||!O(".bar-sizer",t))return;let n=t.closest(".file_list--responsive");n&&(n.style.visibility="hidden",on(t,ro(t,n.clientWidth)),n.style.visibility="")})}var Je=0;function ce(){Je||(Je=requestAnimationFrame(()=>{Je=0,et()}))}var Ae={line:{covered:"coveredLines",total:"relevantLines"},branch:{covered:"coveredBranches",total:"totalBranches"},method:{covered:"coveredMethods",total:"totalMethods"}};function sn(e){let t=v("tbody tr.t-file",e).filter(l=>l.style.display!=="none");function n(l){return t.reduce((i,s)=>i+(Number.parseInt(s.dataset[l]||"0",10)||0),0)}let r=O(".t-file-count",e),o=Number.parseInt(e.getAttribute("data-total-files")||"0",10);if(r){let l=t.length===1?" file":" files";r.textContent=t.length===o?A(o)+l:A(t.length)+"/"+A(o)+l}for(let l of Object.keys(Ae)){let i=Ae[l],s=`.t-totals__${l}`;O(s+"-pct",e)&&oo(e,s,n(i.covered),n(i.total))}}function oo(e,t,n,r){let o=O(t+"-pct",e),l=O(t+"-num",e),i=O(t+"-den",e);if(r===0){o&&(o.innerHTML="",o.classList.remove("green","yellow","red")),l&&(l.textContent=""),i&&(i.textContent="");return}let s=n*100/r,a=q(s);o&&(o.innerHTML=`<div class="coverage-cell">${Ve(s)}<span class="coverage-pct">${j(s)}%</span></div>`,o.classList.remove("green","yellow","red"),o.classList.add(a)),l&&(l.textContent=A(n)+"/"),i&&(i.textContent=A(r))}var io={gt:(e,t)=>e>t,gte:(e,t)=>e>=t,eq:(e,t)=>e===t,lte:(e,t)=>e<=t,lt:(e,t)=>e<t};function so(e,t,n){let r=io[e];return r?r(t,n):!0}function lo(e){let t=[];for(let n of v(".col-filter__value",e)){let r=n;if(!r.value)continue;let o=Number.parseFloat(r.value);if(Number.isNaN(o))continue;let l=r.dataset.type||"",i=O(`.col-filter__op[data-type="${l}"]`,e),s=i?i.value:"",a=Ae[l];s&&a&&t.push({attrs:a,op:s,threshold:o})}return t}var ln=new WeakMap;function ao(e){let t=ln.get(e);return t===void 0&&(t=(e.children[0].textContent||"").toLowerCase(),ln.set(e,t)),t}function an(e){let t=O("table.file_list",e);if(!t)return;let n=O(".col-filter--name",e),r=n?n.value.trim().toLowerCase():"",o=lo(e);v("tbody tr.t-file",t).forEach(l=>{let i=l,a=(!r||ao(l).includes(r))&&o.every(d=>{let p=Number.parseInt(i.dataset[d.attrs.covered]||"0",10)||0,_=Number.parseInt(i.dataset[d.attrs.total]||"0",10)||0,w=_>0?p*100/_:100;return so(d.op,w,d.threshold)})?"":"none";i.style.display!==a&&(i.style.display=a)}),ae(t),xe(),sn(e),ce()}function tt(e){let t=Number.parseFloat(e.value),n=e.closest(".col-filter__coverage"),r=n?n.querySelector(".col-filter__op"):null;if(!r)return;let o=r.querySelector('option[value="gt"]'),l=r.querySelector('option[value="lt"]');if(o&&(o.disabled=t>=100),l&&(l.disabled=t<=0),r.selectedOptions[0]&&r.selectedOptions[0].disabled){let i=r.querySelector("option:not(:disabled)");i&&(r.value=i.value)}}function cn(){v(".col-filter__value").forEach(e=>tt(e)),v(".col-filter--name, .col-filter__op, .col-filter__value, .col-filter__coverage").forEach(e=>{e.addEventListener("click",t=>t.stopPropagation())}),P(document,"input",".col-filter--name, .col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&tt(this),an(this.closest(".file_list_container"))}),P(document,"change",".col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&tt(this),an(this.closest(".file_list_container"))})}var $=null;function nt(){return $!==null}function ue(e){$&&$.classList.remove("keyboard-focus"),$=e,$&&($.classList.add("keyboard-focus"),$.scrollIntoView({block:"nearest"}))}function rt(e){let t=rn();if(!t.length)return;if(!$||t.indexOf($)===-1){ue(e===1?t[0]:t[t.length-1]);return}let n=t.indexOf($)+e;n>=0&&n<t.length&&ue(t[n])}function un(){if(!$)return;let e=$.querySelector("a.src_link");e&&(window.location.hash=e.getAttribute("href").substring(1))}var z,ne,ot,me=null,Re="";function it(){return z.open}function st(){return ne}function fn(){if(!me)return;Re&&(me.insertAdjacentHTML("afterbegin",Re),Re="");let e=document.querySelector(".source_files");e&&e.appendChild(me),me=null}function co(e,t){fn();let n=Vt(e);if(!n)return;let r=n.querySelector(".header");if(r&&(Re=r.outerHTML,ot.innerHTML=r.innerHTML,r.remove()),me=n,ne.appendChild(n),z.open||z.showModal(),document.documentElement.style.overflow="hidden",ne.focus(),t){let o=ne.querySelector('li[data-linenumber="'+t+'"]');o&&(ne.scrollTop=o.offsetTop)}}function dn(e){if(ue(null),xe(),z.open&&(fn(),z.close(),ne.innerHTML="",ot.innerHTML="",document.documentElement.style.overflow=""),e){let n=document.querySelector(".group_tabs a."+e);if(n){v(".group_tabs li").forEach(o=>o.classList.remove("active")),n.parentElement.classList.add("active"),v(".file_list_container").forEach(o=>o.style.display="none");let r=document.getElementById(e);r&&(r.style.display="")}}let t=document.getElementById("wrapper");t&&!t.classList.contains("hide")&&ce()}function Oe(){let e=window.location.hash.substring(1);if(!e){let t=document.querySelector(".group_tabs a");t&&dn(t.getAttribute("href").replace("#",""));return}if(e.charAt(0)==="_")dn(e.substring(1));else{let t=e.split("-L");if(!document.querySelector(".group_tabs li.active")){let n=document.querySelector(".group_tabs li");n&&n.classList.add("active")}co(t[0],t[1])}}function Ne(){let e=document.querySelector(".group_tabs li.active a");e&&(window.location.hash=e.getAttribute("href").replace("#","#_"))}function gn(){z=document.getElementById("source-dialog"),ne=document.getElementById("source-dialog-body"),ot=document.getElementById("source-dialog-title"),z.querySelector(".source-dialog__close").addEventListener("click",Ne),z.addEventListener("click",e=>{e.target===z&&Ne()})}function uo(){return v(".source-dialog .source_table li.missed, .source-dialog .source_table li.missed-branch, .source-dialog .source_table li.missed-method")}function lt(e){let t=uo();if(!t.length)return;let n=st(),r=n.scrollTop+n.clientHeight/2,o=e===1?t.find(l=>l.offsetTop>r)||t[0]:t.findLast(l=>l.offsetTop<r-10)||t[t.length-1];n.scrollTop=o.offsetTop-n.clientHeight/3}function pn(){P(document,"click",".t-missed-method-toggle",function(e){e.preventDefault();let t=this.closest(".header")||this.closest(".source-dialog__title")||this.closest(".source-dialog__header"),n=t?t.querySelector(".t-missed-method-list"):null;n&&(n.style.display=n.style.display==="none"?"":"none")}),P(document,"click","a.src_link",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").substring(1)}),P(document,"click","table.file_list tbody tr",function(e){if(e.target.closest("a"))return;let t=this.querySelector("a.src_link");t&&(window.location.hash=t.getAttribute("href").substring(1))}),P(document,"click",".source-dialog .source_table li[data-linenumber]",function(e){e.preventDefault(),st().scrollTop=this.offsetTop;let t=this.dataset.linenumber,n=window.location.hash.substring(1).replace(/-L.*/,"");window.location.replace(window.location.href.replace(/#.*/,"#"+n+"-L"+t))}),window.addEventListener("hashchange",Oe)}var hn="simplecov-dark-mode",fo="simplecov-colorblind-mode";function go(e){try{return localStorage.getItem(e)}catch(t){return null}}function mn(e,t){try{localStorage.setItem(e,t)}catch(n){}}function po(){return go(hn)}function bn(e){return Array.from(document.querySelectorAll(`[data-toggle="${e}"]`))}function vn(){let e=bn("colorblind");if(e.length===0)return;let t=document.documentElement,n=()=>{let r=String(t.classList.contains("colorblind-mode"));e.forEach(o=>o.setAttribute("aria-pressed",r))};n(),e.forEach(r=>r.addEventListener("click",()=>{let o=t.classList.toggle("colorblind-mode");mn(fo,o?"on":"off"),n(),ge()}))}function En(){let e=bn("dark");if(e.length===0)return;let t=document.documentElement;function n(){return t.classList.contains("dark-mode")||!t.classList.contains("light-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches}function r(){let o=n();e.forEach(l=>{l.textContent=o?"\u2600\uFE0F Light":"\u{1F319} Dark",l.setAttribute("aria-label",o?"Switch to light mode":"Switch to dark mode")})}r(),e.forEach(o=>o.addEventListener("click",()=>{let l=n();t.classList.toggle("light-mode",l),t.classList.toggle("dark-mode",!l),mn(hn,l?"light":"dark"),r(),ge()})),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{po()||r(),ge()})}function ho(){let e=v(".file_list_container").filter(n=>n.style.display!=="none"),t=e.length?O(".col-filter--name",e[0]):null;t&&t.focus()}function mo(e,t){it()?(e.preventDefault(),Ne()):t?e.target.blur():nt()&&ue(null)}function bo(e){e.key==="n"&&!e.shiftKey&&(e.preventDefault(),lt(1)),(e.key==="N"||e.key==="n"&&e.shiftKey||e.key==="p")&&(e.preventDefault(),lt(-1))}function vo(e){e.key==="j"&&(e.preventDefault(),rt(1)),e.key==="k"&&(e.preventDefault(),rt(-1)),e.key==="Enter"&&nt()&&(e.preventDefault(),un())}function _n(e){let t=e.target.matches("input, select, textarea");e.key==="/"&&!t?(e.preventDefault(),ho()):e.key==="Escape"?mo(e,t):t||(it()?bo(e):vo(e))}function yn(){let e=1/0;v("abbr.timeago").forEach(t=>{let n=new Date(t.getAttribute("title")||"");Number.isNaN(n.getTime())||(t.textContent=Et(n),e=Math.min(e,_t(n)))}),e<1/0&&setTimeout(yn,e)}function Eo(){v(".file_list_container").forEach(e=>e.style.display="none"),v(".file_list_container").forEach(e=>{let t=e.id,n=e.querySelector(".group_name"),r=e.querySelector(".covered_percent"),o=document.createElement("li");o.setAttribute("role","tab");let l=document.createElement("a");l.href="#"+t,l.className=t,l.innerHTML=(n?n.innerHTML:"")+" ("+(r?r.innerHTML:"")+")",o.appendChild(l),document.querySelector(".group_tabs").appendChild(o)}),P(document.querySelector(".group_tabs"),"click","a",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").replace("#","#_")})}function _o(e){e&&(e.style.transition="opacity 0.3s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},300));let t=document.getElementById("wrapper");t&&t.classList.remove("hide"),et()}function yo(){return oe(this,null,function*(){let e=window.SIMPLECOV_DATA,t=document.getElementById("loading");t&&(t.style.display=""),yield yt(Object.keys(e.coverage)),Kt(e),yn(),En(),vn(),nn(e.meta.primary_coverage),cn(),document.addEventListener("keydown",_n),gn(),pn(),Eo(),window.addEventListener("resize",ce),Oe(),_o(t)})}document.addEventListener("DOMContentLoaded",yo);})();
81
+ </div>`;let l=o-r,c=o>0?r*100/o:100,d=q(c),h=e.suffix||"covered",_=e.missedClass||"red",M=`<div class="t-${t}-summary">
82
+ ${n}: <span class="${d}"><b>${j(c)}%</b></span><span class="coverage-cell__fraction"> ${r}/${o} ${h}</span>`;if(l>0){let L=i?`<a href="#" class="t-missed-method-toggle"><b>${l}</b> missed</a>`:`<span class="${_}"><b>${l}</b> missed</span>`;M+=`<span class="coverage-cell__fraction">,</span>
83
+ ${L}`}return M+=`
84
+ </div>`,M}function Vt(e){return'<div class="summary-stats">'+Xe({type:"line",label:"Line coverage",covered:e.coveredLines,total:e.totalLines,enabled:e.lineCoverage,suffix:"relevant lines covered"})+Xe({type:"branch",label:"Branch coverage",covered:e.coveredBranches,total:e.totalBranches,enabled:e.branchCoverage,missedClass:"missed-branch-text"})+Xe({type:"method",label:"Method coverage",covered:e.coveredMethods,total:e.totalMethods,enabled:e.methodCoverage,missedClass:"missed-method-text-color",toggle:e.showMethodToggle})+"</div>"}function Fr(e){let{containerId:t,title:n,filenames:r,stats:o,lineCoverage:s,branchCoverage:i,methodCoverage:l,primaryCoverage:c}=e,d=s?o.lines:void 0,h=i?o.branches:void 0,_=l?o.methods:void 0,M=Ce(o,c),L=M?M.percent:100,S=[`<div class="file_list_container" id="${t}" data-total-files="${r.length}">`,`<span class="group_name hide">${k(n)}</span>`,`<span class="covered_percent hide"><span class="${q(L)}">${j(L)}%</span></span>`,'<div class="file_list--responsive"><table class="file_list"><thead><tr>','<th class="cell--left" data-sort-key="file"><div class="th-with-filter"><span class="th-label">File Name</span><input type="search" class="col-filter col-filter--name" placeholder="Filter paths\u2026"></div></th>'];d&&S.push(xe("Line Coverage","line","Covered","Lines")),i&&S.push(xe("Branch Coverage","branch","Covered","Branches")),l&&S.push(xe("Method Coverage","method","Covered","Methods")),S.push("</tr>");let N=r.length===1?"file":"files";return S.push(`<tr class="totals-row"><td class="strong t-file-count">${R(r.length)} ${N}</td>`),d&&S.push(ee(d.percent,d.covered,d.total,"line",!0)),h&&S.push(ee(h.percent,h.covered,h.total,"branch",!0)),_&&S.push(ee(_.percent,_.covered,_.total,"method",!0)),S.push("</tr></thead><tbody>"),S.join("")}function qr(e){let{filename:t,coverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:s}=e,i=ie(t),l=[];r&&l.push(`data-covered-lines="${n.covered_lines||0}"`,`data-relevant-lines="${n.total_lines||0}"`),o&&l.push(`data-covered-branches="${n.covered_branches||0}"`,`data-total-branches="${n.total_branches||0}"`),s&&l.push(`data-covered-methods="${n.covered_methods||0}"`,`data-total-methods="${n.total_methods||0}"`);let c=[`<tr class="t-file" ${l.join(" ")}>`,`<td class="strong t-file__name"><a href="#${i}" class="src_link" title="${k(t)}">${k(t)}</a></td>`];if(r){let d=n.lines_covered_percent===void 0?100:n.lines_covered_percent;c.push(ee(d,n.covered_lines||0,n.total_lines||0,"line",!1))}if(o){let d=n.branches_covered_percent===void 0?100:n.branches_covered_percent;c.push(ee(d,n.covered_branches||0,n.total_branches||0,"branch",!1))}if(s){let d=n.methods_covered_percent===void 0?100:n.methods_covered_percent;c.push(ee(d,n.covered_methods||0,n.total_methods||0,"method",!1))}return c.push("</tr>"),c.join("")}function Ze(e){let{filenames:t,allCoverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:s}=e,i=[Fr(e)];for(let l of t){let c=n[l];c&&i.push(qr({filename:l,coverage:c,lineCoverage:r,branchCoverage:o,methodCoverage:s}))}return i.push("</tbody></table></div></div>"),i.join("")}function Wr(e){let{lineIndex:t,lineCov:n,branchesReport:r,missedMethodLines:o,branchCoverage:s,methodCoverage:i}=e,l=t+1;if(n==="ignored")return"skipped";if(s){let c=r[l];if(c&&c.some(([,d])=>d===0))return"missed-branch"}return i&&o.has(l)?"missed-method":n==null?"never":n===0?"missed":"covered"}function Ur(e){let t={};if(!e)return t;for(let{coverage:n,report_line:r,type:o}of e){if(n==="ignored")continue;(t[r]||(t[r]=[])).push([o,n])}return t}function jr(e){let t=new Set;if(!e)return t;for(let n of e)if(n.coverage===0&&n.start_line&&n.end_line)for(let r=n.start_line;r<=n.end_line;r++)t.add(r);return t}function zr(e){let{index:t,source:n,lineCov:r,status:o,branchCoverage:s,lineBranches:i}=e,l=t+1,c=typeof r=="number"?` data-hits="${r}"`:"",d=[`<li class="${o}"${c} data-linenumber="${l}">`];if(typeof r=="number"&&r>0?d.push(`<span class="hits" data-content="${r}"></span>`):r==="ignored"&&d.push('<span class="hits" data-content="skipped"></span>'),s&&i)for(let[h,_]of i){let M=k(h);d.push(`<span class="hits" data-content="${M}: ${_}" title="${M} branch hit ${_} times"></span>`)}return d.push(`<code class="ruby">${k(n)}</code></li>`),d.join("")}function Xt(e,t,n,r,o){var G;let s=ie(e),i=n&&t.covered_lines||0,l=n&&t.total_lines||0,c=r&&t.covered_branches||0,d=r&&t.total_branches||0,h=o&&t.covered_methods||0,_=o&&t.total_methods||0,M=(t.methods||[]).filter(I=>I.coverage===0),L=o&&M.length>0,S=Ur(t.branches),N=jr(t.methods),O=[`<div class="source_table" id="${s}">`,'<div class="header">',`<h2>${k(e)}</h2>`,Vt({coveredLines:i,totalLines:l,coveredBranches:c,totalBranches:d,coveredMethods:h,totalMethods:_,lineCoverage:n,branchCoverage:r,methodCoverage:o,showMethodToggle:L})];L&&O.push('<div class="t-missed-method-list" style="display: none"><ul>',M.map(I=>`<li><tt>${k(I.name)}</tt></li>`).join(""),"</ul></div>"),O.push("</div>","<pre><ol>");for(let I=0;I<t.source.length;I++){let re=(G=t.lines)==null?void 0:G[I],X=Wr({lineIndex:I,lineCov:re,branchesReport:S,missedMethodLines:N,branchCoverage:r,methodCoverage:o});O.push(zr({index:I,source:t.source[I],lineCov:re,status:X,branchCoverage:r,lineBranches:r?S[I+1]:void 0}))}return O.push("</ol></pre></div>"),O.join("")}Ve.registerLanguage("ruby",Gt);var Qe=null;function ge(){if(!Qe)return;let e=getComputedStyle(document.documentElement).getPropertyValue(`--${Qe}`).trim(),t=document.createElement("canvas");t.width=t.height=16;let n=t.getContext("2d");if(!e||!n)return;n.fillStyle=e,n.fillRect(0,0,16,16);let r=document.querySelector('link[rel="icon"]');r||(r=document.createElement("link"),r.rel="icon",r.type="image/png",document.head.appendChild(r)),r.href=t.toDataURL("image/png")}var te=null;function Yt(e){let t=e.meta,n=t.line_coverage,r=t.branch_coverage,o=t.method_coverage,s=Kt(t);document.title=`Code coverage for ${t.project_name}`;let i=Object.keys(e.coverage),l=Ce(e.total,s),c=l&&l.total>0?l.percent:100;Qe=q(c),ge(),r&&document.body.setAttribute("data-branch-coverage","true");let d=document.getElementById("content"),h=[Ze({containerId:"g-total",title:"All Files",filenames:i,stats:e.total,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:s})];for(let O of Object.keys(e.groups)){let G=e.groups[O];h.push(Ze({containerId:_t(`group-${O}`),title:O,filenames:G.files||[],stats:G,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:s}))}d.innerHTML=h.join("");let _={};for(let O of i)_[ie(O)]=O;te={idToFilename:_,coverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o};let M=new Date(t.timestamp),L=`Generated <abbr class="timeago" title="${M.toISOString()}">${M.toISOString()}</abbr> by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v${k(t.simplecov_version)} using ${k(t.command_name)}`;document.getElementById("footer").innerHTML=L,document.getElementById("source-dialog-footer").innerHTML=L;let S=document.getElementById("source-legend"),N="";n&&(N+='<div class="source-legend__row source-legend__row--line"><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--covered"></span>Covered</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--skipped"></span>Skipped</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed"></span>Missed line</span></div>'),r&&(N+='<div class="source-legend__row source-legend__row--branch"><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-branch"></span>Missed branch</span></div>'),o&&(N+='<div class="source-legend__row source-legend__row--method"><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-method"></span>Missed method</span></div>'),S.innerHTML=N}function Zt(e){let t=document.getElementById(e);if(t)return t;if(!te)return null;let n=te.idToFilename[e];if(!n)return null;let r=Xt(n,te.coverage[n],te.lineCoverage,te.branchCoverage,te.methodCoverage),o=document.querySelector(".source_files"),s=document.createElement("div");s.innerHTML=r;let i=s.firstElementChild;return o.appendChild(i),v("pre code",i).forEach(l=>Ve.highlightElement(l)),i}var Je=1e3,Gr="t-window-hidden",Qt=new WeakSet;function Kr(e,t){let n=e.querySelector("tr.t-show-all");if(!n){n=document.createElement("tr"),n.className="t-show-all";let r=document.createElement("td");r.colSpan=t,n.appendChild(r),n.addEventListener("click",o=>{o.preventDefault(),Qt.add(e),ce(e.closest("table"))}),e.appendChild(n)}return n}function ce(e){let t=e.querySelector("tbody");if(!t)return;let n=t.querySelectorAll("tr.t-file"),r=Qt.has(t),o=0;if(n.forEach(i=>{let l=i.style.display==="none";l||(o+=1),i.classList.toggle(Gr,!r&&!l&&o>Je)}),r||o<=Je){let i=t.querySelector("tr.t-show-all");i&&(i.style.display="none");return}let s=Kr(t,n[0].children.length);s.style.display="",s.firstElementChild.innerHTML=`Showing the first ${R(Je)} of ${R(o)} files. <a href="#" class="t-show-all__link">Show all</a>`,t.appendChild(s)}function Ae(e){try{return localStorage.getItem(e)}catch(t){return null}}function pe(e,t){try{localStorage.setItem(e,t)}catch(n){}}var tt=new WeakMap,rn="simplecov-sort";function Vr(){let e=Ae(rn);if(!e)return null;try{let t=JSON.parse(e);return typeof t.column!="string"||!t.column||t.direction!=="asc"&&t.direction!=="desc"?null:{column:t.column,direction:t.direction}}catch(t){return null}}function Xr(e){pe(rn,JSON.stringify(e))}function Yr(e,t){let n=0,r=e.children;for(let o=0;o<r.length;o++)if(r[o].style.display!=="none"){if(n===t)return o;n+=1}return null}function Zr(e){if(!e)return"";let t=e.getAttribute("data-order");if(t!==null)return Number.parseFloat(t);let n=(e.textContent||"").trim(),r=Number.parseFloat(n);return Number.isNaN(r)?n.toLowerCase():r}var Jt=new WeakMap;function en(e,t){var s;if(t===null)return"";let n=Jt.get(e);n||(n=new Map,Jt.set(e,n));let r=n.get(t);if(r!==void 0)return r;let o=Zr((s=e.children[t])!=null?s:null);return n.set(t,o),o}var Qr=new Intl.Collator;function tn(e,t){return typeof e=="number"&&typeof t=="number"?e-t:Qr.compare(String(e),String(t))}function on(e,t,n){let r=e.map(s=>({row:s,value:en(s,t),filename:en(s,0)})),o=n==="asc"?1:-1;return r.sort((s,i)=>o*(tn(s.value,i.value)||tn(s.filename,i.filename))),r.map(({row:s})=>s)}function et(e,t,n){tt.set(e,{colIndex:t,direction:n});let r=0;v("thead tr:first-child th",e).forEach(o=>{let s=Number.parseInt(o.getAttribute("colspan")||"1",10);o.classList.remove("sorting_asc","sorting_desc","sorting");let i=t>=r&&t<r+s;o.classList.add(i?n==="asc"?"sorting_asc":"sorting_desc":"sorting"),r+=s})}function sn(e,t){let n=document.createDocumentFragment();t.forEach(r=>n.appendChild(r)),e.appendChild(n)}function nn(e,t,n){let r=tt.get(e),o=e.querySelector("tbody"),s=Array.from(o.querySelectorAll("tr.t-file"));if(s.length===0){et(e,t,n);return}if(r&&r.colIndex===t&&r.direction!==n)s.reverse();else{let i=Yr(s[0],t);s=on(s,i,n)}sn(o,s),ce(e),et(e,t,n)}var Jr=500,he=null;function eo(){if(he)return he;let e=document.createElement("div");return e.id="sort-overlay",e.innerHTML='<span id="sort-overlay-label">Sorting\u2026</span>',e.style.display="none",document.body.appendChild(e),he=e,e}function to(){let e=eo();e.style.transition="none",e.style.opacity="1",e.style.display="flex"}function no(){if(!he)return;let e=he;e.style.transition="opacity 0.15s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},150)}function ro(e,t){let n=ln(e,t),r=tt.get(e),o=r&&r.colIndex===n&&r.direction==="asc"?"desc":"asc",s=t.getAttribute("data-sort-key");if(s&&Xr({column:s,direction:o}),e.querySelectorAll("tbody tr.t-file").length<Jr){nn(e,n,o);return}to(),requestAnimationFrame(()=>requestAnimationFrame(()=>{nn(e,n,o),no()}))}function ln(e,t){let n=0;for(let r of v("thead tr:first-child th",e)){let o=Number.parseInt(r.getAttribute("colspan")||"1",10);if(r===t)return n+o-1;n+=o}return n}function oo(e,t){let n=Array.from(e.children);if(t){let o=n.findIndex(s=>s.classList.contains(`cell--${t}-pct`));if(o!==-1)return o}let r=n.findIndex(o=>o.hasAttribute("data-order"));return r===-1?null:r}function io(e,t,n){let r=e.querySelector("tbody");if(!r)return;let o=Array.from(r.querySelectorAll("tr.t-file"));if(o.length===0)return;let s=n&&v("thead tr:first-child th",e).find(c=>c.getAttribute("data-sort-key")===n.column),i=s?ln(e,s):oo(o[0],t);if(i===null)return;let l=s?n.direction:"asc";sn(r,on(o,i,l)),et(e,i,l)}function cn(e){let t=Vr();v("table.file_list").forEach(n=>{v("thead tr:first-child th",n).forEach(r=>{r.classList.add("sorting"),r.style.cursor="pointer",r.addEventListener("click",()=>ro(n,r))}),io(n,e,t),ce(n)})}var me=null;function Re(){me=null}function an(){if(me)return me;let e=v(".file_list_container").filter(t=>t.style.display!=="none");return e.length?(me=v("tbody tr.t-file",e[0]).filter(t=>t.style.display!=="none"),me):[]}var so=240,lo=160;function un(e,t){e.style.setProperty("--bar-sizer-width",t+"px")}var co=8;function ao(e,t){let n=lo,r=so;for(;r-n>co;){let o=Math.ceil((n+r)/2);un(e,o),e.offsetWidth,e.scrollWidth<=t?n=o:r=o-1}return n}function rt(){v(".file_list_container").forEach(e=>{if(e.style.display==="none"||e.offsetWidth===0)return;let t=x("table.file_list",e);if(!t||!x(".bar-sizer",t))return;let n=t.closest(".file_list--responsive");n&&(n.style.visibility="hidden",un(t,ao(t,n.clientWidth)),n.style.visibility="")})}var nt=0;function ae(){nt||(nt=requestAnimationFrame(()=>{nt=0,rt()}))}var Ne={line:{covered:"coveredLines",total:"relevantLines"},branch:{covered:"coveredBranches",total:"totalBranches"},method:{covered:"coveredMethods",total:"totalMethods"}};function dn(e){let t=v("tbody tr.t-file",e).filter(s=>s.style.display!=="none");function n(s){return t.reduce((i,l)=>i+(Number.parseInt(l.dataset[s]||"0",10)||0),0)}let r=x(".t-file-count",e),o=Number.parseInt(e.getAttribute("data-total-files")||"0",10);if(r){let s=t.length===1?" file":" files";r.textContent=t.length===o?R(o)+s:R(t.length)+"/"+R(o)+s}for(let s of Object.keys(Ne)){let i=Ne[s],l=`.t-totals__${s}`;x(l+"-pct",e)&&uo(e,l,n(i.covered),n(i.total))}}function uo(e,t,n,r){let o=x(t+"-pct",e),s=x(t+"-num",e),i=x(t+"-den",e);if(r===0){o&&(o.innerHTML="",o.classList.remove("green","yellow","red")),s&&(s.textContent=""),i&&(i.textContent="");return}let l=n*100/r,c=q(l);o&&(o.innerHTML=`<div class="coverage-cell">${Ye(l)}<span class="coverage-pct">${j(l)}%</span></div>`,o.classList.remove("green","yellow","red"),o.classList.add(c)),s&&(s.textContent=R(n)+"/"),i&&(i.textContent=R(r))}var fo={gt:(e,t)=>e>t,gte:(e,t)=>e>=t,eq:(e,t)=>e===t,lte:(e,t)=>e<=t,lt:(e,t)=>e<t};function go(e,t,n){let r=fo[e];return r?r(t,n):!0}function po(e){let t=[];for(let n of v(".col-filter__value",e)){let r=n;if(!r.value)continue;let o=Number.parseFloat(r.value);if(Number.isNaN(o))continue;let s=r.dataset.type||"",i=x(`.col-filter__op[data-type="${s}"]`,e),l=i?i.value:"",c=Ne[s];l&&c&&t.push({attrs:c,op:l,threshold:o})}return t}var fn=new WeakMap;function ho(e){let t=fn.get(e);return t===void 0&&(t=(e.children[0].textContent||"").toLowerCase(),fn.set(e,t)),t}function gn(e){let t=x("table.file_list",e);if(!t)return;let n=x(".col-filter--name",e),r=n?n.value.trim().toLowerCase():"",o=po(e);v("tbody tr.t-file",t).forEach(s=>{let i=s,c=(!r||ho(s).includes(r))&&o.every(d=>{let h=Number.parseInt(i.dataset[d.attrs.covered]||"0",10)||0,_=Number.parseInt(i.dataset[d.attrs.total]||"0",10)||0,M=_>0?h*100/_:100;return go(d.op,M,d.threshold)})?"":"none";i.style.display!==c&&(i.style.display=c)}),ce(t),Re(),dn(e),ae()}function ot(e){let t=Number.parseFloat(e.value),n=e.closest(".col-filter__coverage"),r=n?n.querySelector(".col-filter__op"):null;if(!r)return;let o=r.querySelector('option[value="gt"]'),s=r.querySelector('option[value="lt"]');if(o&&(o.disabled=t>=100),s&&(s.disabled=t<=0),r.selectedOptions[0]&&r.selectedOptions[0].disabled){let i=r.querySelector("option:not(:disabled)");i&&(r.value=i.value)}}function pn(){v(".col-filter__value").forEach(e=>ot(e)),v(".col-filter--name, .col-filter__op, .col-filter__value, .col-filter__coverage").forEach(e=>{e.addEventListener("click",t=>t.stopPropagation())}),F(document,"input",".col-filter--name, .col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&ot(this),gn(this.closest(".file_list_container"))}),F(document,"change",".col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&ot(this),gn(this.closest(".file_list_container"))})}var $=null;function it(){return $!==null}function ue(e){$&&$.classList.remove("keyboard-focus"),$=e,$&&($.classList.add("keyboard-focus"),$.scrollIntoView({block:"nearest"}))}function st(e){let t=an();if(!t.length)return;if(!$||t.indexOf($)===-1){ue(e===1?t[0]:t[t.length-1]);return}let n=t.indexOf($)+e;n>=0&&n<t.length&&ue(t[n])}function hn(){if(!$)return;let e=$.querySelector("a.src_link");e&&(window.location.hash=e.getAttribute("href").substring(1))}var z,ne,lt,be=null,Oe="";function ct(){return z.open}function at(){return ne}function bn(){if(!be)return;Oe&&(be.insertAdjacentHTML("afterbegin",Oe),Oe="");let e=document.querySelector(".source_files");e&&e.appendChild(be),be=null}function mo(e,t){bn();let n=Zt(e);if(!n)return;let r=n.querySelector(".header");if(r&&(Oe=r.outerHTML,lt.innerHTML=r.innerHTML,r.remove()),be=n,ne.appendChild(n),z.open||z.showModal(),document.documentElement.style.overflow="hidden",ne.focus(),t){let o=ne.querySelector('li[data-linenumber="'+t+'"]');o&&(ne.scrollTop=o.offsetTop)}}function mn(e){if(ue(null),Re(),z.open&&(bn(),z.close(),ne.innerHTML="",lt.innerHTML="",document.documentElement.style.overflow=""),e){let n=document.querySelector(".group_tabs a."+e);if(n){v(".group_tabs li").forEach(o=>o.classList.remove("active")),n.parentElement.classList.add("active"),v(".file_list_container").forEach(o=>o.style.display="none");let r=document.getElementById(e);r&&(r.style.display="")}}let t=document.getElementById("wrapper");t&&!t.classList.contains("hide")&&ae()}function He(){let e=window.location.hash.substring(1);if(!e){let t=document.querySelector(".group_tabs a");t&&mn(t.getAttribute("href").replace("#",""));return}if(e.charAt(0)==="_")mn(e.substring(1));else{let t=e.split("-L");if(!document.querySelector(".group_tabs li.active")){let n=document.querySelector(".group_tabs li");n&&n.classList.add("active")}mo(t[0],t[1])}}function Ie(){let e=document.querySelector(".group_tabs li.active a");e&&(window.location.hash=e.getAttribute("href").replace("#","#_"))}function vn(){z=document.getElementById("source-dialog"),ne=document.getElementById("source-dialog-body"),lt=document.getElementById("source-dialog-title"),z.querySelector(".source-dialog__close").addEventListener("click",Ie),z.addEventListener("click",e=>{e.target===z&&Ie()})}function bo(){return v(".source-dialog .source_table li.missed, .source-dialog .source_table li.missed-branch, .source-dialog .source_table li.missed-method")}function ut(e){let t=bo();if(!t.length)return;let n=at(),r=n.scrollTop+n.clientHeight/2,o=e===1?t.find(s=>s.offsetTop>r)||t[0]:t.findLast(s=>s.offsetTop<r-10)||t[t.length-1];n.scrollTop=o.offsetTop-n.clientHeight/3}function En(){F(document,"click",".t-missed-method-toggle",function(e){e.preventDefault();let t=this.closest(".header")||this.closest(".source-dialog__title")||this.closest(".source-dialog__header"),n=t?t.querySelector(".t-missed-method-list"):null;n&&(n.style.display=n.style.display==="none"?"":"none")}),F(document,"click","a.src_link",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").substring(1)}),F(document,"click","table.file_list tbody tr",function(e){if(e.target.closest("a"))return;let t=this.querySelector("a.src_link");t&&(window.location.hash=t.getAttribute("href").substring(1))}),F(document,"click",".source-dialog .source_table li[data-linenumber]",function(e){e.preventDefault(),at().scrollTop=this.offsetTop;let t=this.dataset.linenumber,n=window.location.hash.substring(1).replace(/-L.*/,"");window.location.replace(window.location.href.replace(/#.*/,"#"+n+"-L"+t))}),window.addEventListener("hashchange",He)}var _n="simplecov-dark-mode",vo="simplecov-colorblind-mode";function Eo(){return Ae(_n)}function yn(e){return Array.from(document.querySelectorAll(`[data-toggle="${e}"]`))}function wn(){let e=yn("colorblind");if(e.length===0)return;let t=document.documentElement,n=()=>{let r=String(t.classList.contains("colorblind-mode"));e.forEach(o=>o.setAttribute("aria-pressed",r))};n(),e.forEach(r=>r.addEventListener("click",()=>{let o=t.classList.toggle("colorblind-mode");pe(vo,o?"on":"off"),n(),ge()}))}function Mn(){let e=yn("dark");if(e.length===0)return;let t=document.documentElement;function n(){return t.classList.contains("dark-mode")||!t.classList.contains("light-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches}function r(){let o=n();e.forEach(s=>{s.textContent=o?"\u2600\uFE0F Light":"\u{1F319} Dark",s.setAttribute("aria-label",o?"Switch to light mode":"Switch to dark mode")})}r(),e.forEach(o=>o.addEventListener("click",()=>{let s=n();t.classList.toggle("light-mode",s),t.classList.toggle("dark-mode",!s),pe(_n,s?"light":"dark"),r(),ge()})),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{Eo()||r(),ge()})}function _o(){let e=v(".file_list_container").filter(n=>n.style.display!=="none"),t=e.length?x(".col-filter--name",e[0]):null;t&&t.focus()}function yo(e,t){ct()?(e.preventDefault(),Ie()):t?e.target.blur():it()&&ue(null)}function wo(e){e.key==="n"&&!e.shiftKey&&(e.preventDefault(),ut(1)),(e.key==="N"||e.key==="n"&&e.shiftKey||e.key==="p")&&(e.preventDefault(),ut(-1))}function Mo(e){e.key==="j"&&(e.preventDefault(),st(1)),e.key==="k"&&(e.preventDefault(),st(-1)),e.key==="Enter"&&it()&&(e.preventDefault(),hn())}function Sn(e){let t=e.target.matches("input, select, textarea");e.key==="/"&&!t?(e.preventDefault(),_o()):e.key==="Escape"?yo(e,t):t||(ct()?wo(e):Mo(e))}function Tn(){let e=x(".group_tabs");if(!e)return;let t=()=>{e.classList.toggle("is-scrolled",e.scrollLeft>0)};e.addEventListener("scroll",t),window.addEventListener("resize",t),t()}function Ln(){let e=1/0;v("abbr.timeago").forEach(t=>{let n=new Date(t.getAttribute("title")||"");Number.isNaN(n.getTime())||(t.textContent=wt(n),e=Math.min(e,Mt(n)))}),e<1/0&&setTimeout(Ln,e)}function So(){v(".file_list_container").forEach(e=>e.style.display="none"),v(".file_list_container").forEach(e=>{let t=e.id,n=e.querySelector(".group_name"),r=e.querySelector(".covered_percent"),o=document.createElement("li");o.setAttribute("role","tab");let s=document.createElement("a");s.href="#"+t,s.className=t,s.innerHTML=(n?n.innerHTML:"")+" ("+(r?r.innerHTML:"")+")",o.appendChild(s),document.querySelector(".group_tabs").appendChild(o)}),F(document.querySelector(".group_tabs"),"click","a",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").replace("#","#_")})}function To(e){e&&(e.style.transition="opacity 0.3s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},300));let t=document.getElementById("wrapper");t&&t.classList.remove("hide"),rt()}function Lo(){return oe(this,null,function*(){let e=window.SIMPLECOV_DATA,t=document.getElementById("loading");t&&(t.style.display=""),yield St(Object.keys(e.coverage)),Yt(e),Ln(),Mn(),wn(),cn(e.meta.primary_coverage),pn(),document.addEventListener("keydown",Sn),vn(),En(),So(),Tn(),window.addEventListener("resize",ae),He(),To(t)})}document.addEventListener("DOMContentLoaded",Lo);})();
84
85
  </script>
85
86
  </body>
86
87
  </html>
@@ -7,14 +7,15 @@ module SimpleCov
7
7
  # Catch-all adapter for parallel test runners that follow the
8
8
  # `TEST_ENV_NUMBER` / `PARALLEL_TEST_GROUPS` env-var convention but
9
9
  # don't ship a Ruby API for SimpleCov to hook (parallel_rspec,
10
- # knapsack-style splitters, custom CI sharding scripts). Activates
11
- # when `TEST_ENV_NUMBER` is set; doesn't require any specific gem to
12
- # be loaded.
10
+ # rspec-conductor since 1.0.7, knapsack-style splitters, custom CI
11
+ # sharding scripts). Activates when `TEST_ENV_NUMBER` is set;
12
+ # doesn't require any specific gem to be loaded.
13
13
  #
14
14
  # Heuristic for `first_worker?`: the worker whose `TEST_ENV_NUMBER`
15
- # is `""` (parallel_tests/parallel_rspec convention) or `"1"`
16
- # (zero-based runners that start at 1). Any other value is treated
17
- # as a non-first worker.
15
+ # is `""` (parallel_tests/parallel_rspec convention, rspec-conductor's
16
+ # default) or `"1"` (runners that number from 1, like rspec-conductor
17
+ # with `--first-is-1`). Any other value is treated as a non-first
18
+ # worker.
18
19
  #
19
20
  # `wait_for_siblings` is inherited from Base as a no-op — without a
20
21
  # runner-provided API the only synchronization available is polling
@@ -20,8 +20,10 @@ module SimpleCov
20
20
  # (precise sync + first-process detection via the gem's own API).
21
21
  # - `GenericAdapter` — env-var-only detection for runners that follow
22
22
  # the parallel_tests `TEST_ENV_NUMBER` convention but don't ship a
23
- # Ruby API (parallel_rspec, custom CI sharding, knapsack-style
24
- # splitters). See https://github.com/simplecov-ruby/simplecov/issues/1065.
23
+ # Ruby API (parallel_rspec, rspec-conductor 1.0.7+, custom CI
24
+ # sharding, knapsack-style splitters). See
25
+ # https://github.com/simplecov-ruby/simplecov/issues/1065 and
26
+ # https://github.com/simplecov-ruby/simplecov/issues/1156.
25
27
  #
26
28
  # Users can plug in additional adapters:
27
29
  #
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "coverage"
4
+
3
5
  module SimpleCov
4
6
  #
5
7
  # Responsible for adapting the format of the coverage result whether it's default or with statistics
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "coverage"
3
4
  require_relative "static_coverage_extractor"
4
5
 
5
6
  module SimpleCov
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleCov
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.1"
5
5
  end
data/lib/simplecov.rb CHANGED
@@ -270,5 +270,6 @@ require_relative "simplecov/report_deferral"
270
270
  require_relative "simplecov/parallel_coordination"
271
271
 
272
272
  # Load default config
273
- # simplecov:disable — env-var only set by aruba feature tests
273
+ # simplecov:disable — env-var never set in the dogfooded test process
274
+ # (sandbox fixture subprocesses set it via simplecov/no_defaults)
274
275
  require_relative "simplecov/defaults" unless ENV["SIMPLECOV_NO_DEFAULTS"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Berlin
@@ -159,8 +159,6 @@ files:
159
159
  - lib/simplecov/useless_results_remover.rb
160
160
  - lib/simplecov/version.rb
161
161
  - lib/simplecov_json_formatter.rb
162
- - schemas/coverage-v1.0.schema.json
163
- - schemas/coverage.schema.json
164
162
  - sig/simplecov.rbs
165
163
  homepage: https://github.com/simplecov-ruby/simplecov
166
164
  licenses:
@@ -168,9 +166,9 @@ licenses:
168
166
  metadata:
169
167
  bug_tracker_uri: https://github.com/simplecov-ruby/simplecov/issues
170
168
  changelog_uri: https://github.com/simplecov-ruby/simplecov/blob/main/docs/Changelog.md
171
- documentation_uri: https://www.rubydoc.info/gems/simplecov/1.1.0
169
+ documentation_uri: https://www.rubydoc.info/gems/simplecov/1.1.1
172
170
  mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
173
- source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v1.1.0
171
+ source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v1.1.1
174
172
  rubygems_mfa_required: 'true'
175
173
  rdoc_options: []
176
174
  require_paths: