:root{color-scheme:light;--kb-accent:#7041a6;--kb-bg:#fff;--kb-fg:#20212a;--kb-muted:#687080;--kb-border:#dfe2e8;--kb-code:#f4f5f8}*{box-sizing:border-box}body{margin:0;background:var(--kb-bg);color:var(--kb-fg);font:16px/1.65 system-ui,-apple-system,"Segoe UI",sans-serif}.book-shell{max-width:1160px;margin:auto;padding:28px 24px 64px}.book-header{border-bottom:1px solid var(--kb-border);padding-bottom:18px;margin-bottom:24px}.book-header h1{margin:0;font-size:2rem}.book-subtitle,.book-author,.book-meta{color:var(--kb-muted);margin:.25rem 0}.book-layout{display:grid;grid-template-columns:minmax(190px,240px) minmax(0,1fr);gap:36px}.book-toc{font-size:.92rem}.book-toc ul{list-style:none;padding-left:1rem}.book-toc>ul{padding-left:0}.book-toc a,.book-nav a{color:var(--kb-accent);text-decoration:none}.book-toc a:hover,.book-nav a:hover{text-decoration:underline}.book-content{min-width:0}.book-content h1,.book-content h2,.book-content h3,.book-content h4{line-height:1.25;margin-top:1.65em}.book-content img{max-width:100%;height:auto}.book-content figure{margin:1.25rem 0}.book-content figcaption{color:var(--kb-muted);font-size:.92rem;margin-top:.35rem}.code-cell{margin:1.2rem 0;border:1px solid var(--kb-border);border-radius:8px;overflow:hidden}.code-prompt{padding:5px 12px;color:var(--kb-muted);font:12px ui-monospace,monospace;background:#fafafa;border-bottom:1px solid var(--kb-border)}pre{overflow:auto;white-space:pre-wrap;word-break:normal}pre.code{margin:0;padding:12px 14px;background:var(--kb-code)}pre.code code{font:13px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.outputs{padding:10px 12px;border-top:1px solid var(--kb-border)}.output-stream,.output-result,.output-error{margin:.4rem 0;padding:9px 11px;background:transparent;border-radius:5px;overflow:auto}.output-stream,.output-result,.output-error pre{font:14px/1.5 ui-monospace,monospace}.output-error{background:#fff0ef;color:#8c211a}.output-html{overflow:auto}.output-image{display:block;max-width:100%;height:auto}.output-caption{color:var(--kb-muted);font-size:.92rem;margin:.35rem 0}.code-fold{border-bottom:1px solid var(--kb-border)}.code-fold summary{padding:7px 12px;cursor:pointer;color:var(--kb-accent);font-size:.9rem}.code-fold pre{margin:0}.book-nav{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--kb-border);margin-top:40px;padding-top:16px}.book-index li{margin:.4rem 0}.book-footer{margin-top:30px;color:var(--kb-muted);font-size:.82rem}.ansi-bold{font-weight:700}.ansi-italic{font-style:italic}.ansi-underline{text-decoration:underline}.ansi-fg-30{color:#333}.ansi-fg-31{color:#c33}.ansi-fg-32{color:#287a38}.ansi-fg-33{color:#ad7900}.ansi-fg-34{color:#3267b1}.ansi-fg-35{color:#9b3ca5}.ansi-fg-36{color:#258b91}.ansi-fg-37{color:#ddd}.ansi-fg-90{color:#777}.ansi-fg-91{color:#ef6666}.ansi-fg-92{color:#5aa866}.ansi-fg-93{color:#d6a93c}.ansi-fg-94{color:#6794de}.ansi-fg-95{color:#c373cc}.ansi-fg-96{color:#54bfc6}.ansi-fg-97{color:#fff}@media(max-width:760px){.book-shell{padding:18px 14px 40px}.book-layout{display:block}.book-toc{margin-bottom:28px}.book-content h1{font-size:1.8rem}}@media print{.book-shell{max-width:none;padding:0}.book-layout{display:block}.book-toc,.book-nav{display:none}.code-cell{break-inside:avoid}a{color:inherit;text-decoration:none}}.book-shell{max-width:1440px}.book-layout{grid-template-columns:minmax(190px,220px) minmax(0,1fr) minmax(155px,195px);grid-template-areas:"chapters content toc";align-items:start;gap:28px}.book-chapters{grid-area:chapters}.book-page-toc{grid-area:toc}.book-content{grid-area:content}.book-content>h1:first-child{margin-top:0}.code-cell{border:0;border-radius:0}.code-prompt{border-bottom:0}.outputs{border-top:0}.code-fold{border-bottom:0}.book-sidebar{position:sticky;top:1.25rem;max-height:calc(100vh - 2.5rem);overflow:auto;font-size:.9rem}.book-sidebar>summary{font-weight:650;color:var(--kb-fg);cursor:pointer}.book-chapters nav ol{list-style:none;padding:0;margin:.6rem 0}.book-chapters li{margin:.25rem 0}.book-chapters a,.book-home-link{display:block;padding:.3rem .55rem;border-radius:5px;color:var(--kb-muted);text-decoration:none}.book-chapters a:hover,.book-home-link:hover{background:var(--kb-code);color:var(--kb-fg)}.book-chapters a[aria-current="page"]{background:color-mix(in srgb,var(--kb-accent) 12%,transparent);color:var(--kb-accent);font-weight:650}.book-page-toc .book-toc ul{list-style:none;padding:0;margin:.6rem 0}.book-page-toc .book-toc ul ul{padding-left:.8rem}.book-page-toc .book-toc li{margin:.3rem 0}.book-cover{padding:1rem 0}.book-cover h1{margin-top:0}.book-start-hint{margin-top:2rem;color:var(--kb-muted)}.book-index-layout .book-chapters{grid-area:chapters}.book-index-layout .book-cover{grid-area:content}@media(max-width:1120px){.book-layout{grid-template-columns:minmax(180px,220px) minmax(0,1fr);grid-template-areas:"chapters content" ". toc"}.book-sidebar{position:static;max-height:none}.book-index-layout{grid-template-areas:"chapters content"}}@media(max-width:760px){.book-layout,.book-index-layout{display:block}.book-sidebar{margin:0 0 1rem}.book-sidebar>summary{padding:.6rem .75rem;border:1px solid var(--kb-border);border-radius:6px;background:var(--kb-bg)}.book-sidebar[open]>summary{margin-bottom:.5rem}.book-sidebar:not([open])>nav{display:none}.book-content h1{font-size:1.8rem}}@media print{.book-layout,.book-index-layout{display:block}.book-sidebar,.book-nav{display:none}}.book-brand{display:block;margin:0 0 1rem;padding:0 .55rem;color:var(--kb-fg);font-size:1.15rem;font-weight:700;line-height:1.3;text-decoration:none}.book-cover .book-author{color:var(--kb-fg)}.book-chapters>details>summary{font-weight:650;color:var(--kb-fg);cursor:pointer}.book-page-toc{margin:0}.book-chapters nav ol{margin-top:.35rem}.book-page-toc .book-toc a{display:block;padding:.2rem .4rem;border-radius:4px}.book-page-toc .book-toc a[aria-current=location]{background:color-mix(in srgb,var(--kb-accent) 12%,transparent);color:var(--kb-accent);font-weight:650}@media(max-width:760px){.book-chapters>details>summary{padding:.6rem .75rem;border:1px solid var(--kb-border);border-radius:6px;background:var(--kb-bg)}.book-chapters>details[open]>summary{margin-bottom:.5rem}.book-brand{margin-bottom:.65rem}.book-page-toc[open]>summary{margin-bottom:.5rem}}.book-chapters nav ol{list-style:none;padding-left:0}.book-chapters nav li{display:flex;align-items:baseline}.book-chapters nav li::before{content:attr(data-chapter-number);flex:0 0 1.15em;margin-right:.15em;text-align:right;color:var(--kb-muted);font-variant-numeric:tabular-nums}.book-chapters nav li.book-preface::before{content:""}.book-chapters nav li.book-part{display:block;margin:.55rem 0 .2rem;padding:0}.book-chapters nav li.book-part::before{display:none}.book-chapters nav li.book-part>details>summary{padding:.25rem .55rem;color:var(--kb-fg);font-weight:650;cursor:pointer}.book-chapters nav li.book-part>details>ol{padding-left:.6rem;margin:.1rem 0 .4rem}.book-chapters nav li>a{flex:1;min-width:0}.book-content pre.code{font-size:14px;line-height:1.4}.book-content pre.code code{font-size:14px;line-height:1.4}/*
 * theme "GitHub" generated by syntect
 */

.syntect-code {
 color: #323232;
 background-color: #ffffff;
}

.syntect-comment {
 color: #969896;
font-style: italic;
}
.syntect-string {
 color: #183691;
}
.syntect-regexp-operator {
 color: #a71d5d;
}
.syntect-string.syntect-regexp.syntect-characterclass .syntect-punctuation.syntect-definition.syntect-string.syntect-begin, .syntect-string.syntect-regexp.syntect-characterclass .syntect-punctuation.syntect-definition.syntect-string.syntect-end {
 color: #a71d5d;
}
.syntect-constant.syntect-numeric {
 color: #0086b3;
}
.syntect-constant.syntect-language {
 color: #0086b3;
}
.syntect-constant.syntect-character, .syntect-constant.syntect-other, .syntect-variable.syntect-other.syntect-constant {
 color: #0086b3;
}
.syntect-variable {
 color: #323232;
}
.syntect-keyword {
 color: #a71d5d;
font-weight: bold;
}
.syntect-bitwise-operator {
 color: #a71d5d;
font-weight: bold;
}
.syntect-storage {
 color: #a71d5d;
font-weight: bold;
}
.syntect-storage.syntect-type {
 color: #a71d5d;
font-weight: bold;
}
.syntect-entity.syntect-name.syntect-class {
 color: #0086b3;
}
.syntect-entity.syntect-other.syntect-inherited-class {
 color: #0086b3;
}
.syntect-entity.syntect-name.syntect-function {
 color: #795da3;
font-weight: bold;
}
.syntect-variable.syntect-parameter {
 color: #323232;
}
.syntect-entity.syntect-name.syntect-tag {
 color: #63a35c;
}
.syntect-entity.syntect-other.syntect-attribute-name {
 color: #795da3;
}
.syntect-support.syntect-function {
 color: #62a35c;
}
.syntect-support.syntect-constant {
 color: #0086b3;
}
.syntect-support.syntect-type, .syntect-support.syntect-class {
 color: #0086b3;
}
.syntect-support.syntect-other.syntect-variable {
 color: #323232;
}
.syntect-invalid, .syntect-invalid.syntect-illegal, .syntect-invalid.syntect-deprecated {
 color: #b52a1d;
 background-color: #f5f5f5;
font-weight: bold;
}
.syntect-entity.syntect-name.syntect-filename.syntect-find-in-files {
 color: #323232;
font-weight: bold;
}
.syntect-constant.syntect-numeric.syntect-line-number.syntect-find-in-files, .syntect-constant.syntect-numeric.syntect-line-number.syntect-match.syntect-find-in-files {
 color: #b3b3b3;
}
.syntect-meta.syntect-diff.syntect-header {
 color: #969896;
 background-color: #ffffff;
font-style: italic;
}
.syntect-meta.syntect-diff.syntect-header .syntect-punctuation.syntect-definition.syntect-from-file.syntect-diff {
 color: #bd2c00;
 background-color: #ffecec;
font-weight: bold;
font-style: italic;
}
.syntect-meta.syntect-diff.syntect-header .syntect-punctuation.syntect-definition.syntect-to-file.syntect-diff {
 color: #55a532;
 background-color: #eaffea;
font-weight: bold;
font-style: italic;
}
.syntect-meta.syntect-diff.syntect-range {
 color: #969896;
font-weight: bold;
font-style: italic;
}
.syntect-markup.syntect-deleted {
 background-color: #ffecec;
}
.syntect-markup.syntect-deleted .syntect-punctuation.syntect-definition.syntect-inserted {
 color: #bd2c00;
font-weight: bold;
}
.syntect-markup.syntect-inserted {
 background-color: #eaffea;
}
.syntect-markup.syntect-inserted .syntect-punctuation.syntect-definition.syntect-inserted {
 color: #55a532;
font-weight: bold;
}
.syntect-markup.syntect-deleted.syntect-git_gutter {
 color: #bd2c00;
}
.syntect-markup.syntect-inserted.syntect-git_gutter {
 color: #55a532;
}
.syntect-markup.syntect-changed.syntect-git_gutter {
 color: #0086b3;
}
.syntect-markup.syntect-ignored.syntect-git_gutter {
 color: #b3b3b3;
}
.syntect-markup.syntect-untracked.syntect-git_gutter {
 color: #b3b3b3;
}
.syntect-source.syntect-css .syntect-punctuation.syntect-definition.syntect-entity {
 color: #323232;
}
.syntect-source.syntect-css .syntect-entity.syntect-other.syntect-attribute-name.syntect-pseudo-class, .syntect-source.syntect-css .syntect-entity.syntect-other.syntect-attribute-name.syntect-pseudo-element {
 color: #a71d5d;
}
.syntect-source.syntect-css .syntect-meta.syntect-value, .syntect-source.syntect-css .syntect-support.syntect-constant, .syntect-source.syntect-css .syntect-support.syntect-function {
 color: #323232;
}
.syntect-source.syntect-css .syntect-constant.syntect-other.syntect-color {
 color: #ed6a43;
}
.syntect-source.syntect-scss .syntect-punctuation.syntect-definition.syntect-entity {
 color: #323232;
}
.syntect-source.syntect-scss .syntect-entity.syntect-other.syntect-attribute-name.syntect-pseudo-class, .syntect-source.syntect-scss .syntect-entity.syntect-other.syntect-attribute-name.syntect-pseudo-element {
 color: #a71d5d;
}
.syntect-source.syntect-scss .syntect-support.syntect-constant.syntect-property-value, .syntect-source.syntect-scss .syntect-support.syntect-function {
 color: #323232;
}
.syntect-source.syntect-scss .syntect-variable {
 color: #a71d5d;
}
.syntect-variable.syntect-language.syntect-this.syntect-js {
 color: #ed6a43;
}
.syntect-source.syntect-js .syntect-entity.syntect-name.syntect-function {
 color: #323232;
}
.syntect-source.syntect-js .syntect-meta.syntect-function .syntect-entity.syntect-name.syntect-function, .syntect-source.syntect-js .syntect-entity.syntect-name.syntect-function .syntect-meta.syntect-function {
 color: #795da3;
font-weight: bold;
}
.syntect-entity.syntect-name.syntect-type.syntect-new.syntect-js {
 color: #795da3;
}
.syntect-variable.syntect-language.syntect-prototype.syntect-js {
 color: #0086b3;
}
.syntect-source.syntect-js .syntect-support.syntect-function {
 color: #0086b3;
}
.syntect-support.syntect-type.syntect-object.syntect-console.syntect-js {
 color: #795da3;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta .syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #183691;
font-weight: bold;
}
.syntect-meta.syntect-structure.syntect-dictionary.syntect-json .syntect-meta.syntect-structure.syntect-dictionary.syntect-value.syntect-json .syntect-string.syntect-quoted.syntect-double.syntect-json {
 color: #323232;
}
.syntect-source.syntect-python .syntect-keyword {
font-weight: bold;
}
.syntect-source.syntect-python .syntect-storage {
font-weight: bold;
}
.syntect-source.syntect-python .syntect-storage.syntect-type {
font-weight: bold;
}
.syntect-source.syntect-python .syntect-entity.syntect-name.syntect-function {
 color: #323232;
font-weight: bold;
}
.syntect-source.syntect-php .syntect-entity.syntect-name.syntect-type.syntect-class {
 color: #323232;
font-weight: bold;
}
.syntect-variable.syntect-language.syntect-ruby {
 color: #ed6a43;
}
.syntect-entity.syntect-name.syntect-type.syntect-module.syntect-ruby {
 color: #795da3;
font-weight: bold;
}
.syntect-entity.syntect-name.syntect-type.syntect-class.syntect-ruby {
 color: #795da3;
font-weight: bold;
}
.syntect-entity.syntect-other.syntect-inherited-class.syntect-ruby {
 color: #795da3;
font-weight: bold;
}
.syntect-text.syntect-html.syntect-markdown .syntect-punctuation.syntect-definition {
 color: #a71d5d;
}
.syntect-text.syntect-html.syntect-markdown .syntect-meta.syntect-separator {
 color: #b3b3b3;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-heading {
font-weight: bold;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-raw.syntect-block {
 color: #323232;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-raw.syntect-inline {
 color: #323232;
}
.syntect-text.syntect-html.syntect-markdown .syntect-meta.syntect-link, .syntect-text.syntect-html.syntect-markdown .syntect-meta.syntect-image {
 color: #4183c4;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-underline.syntect-link, .syntect-text.syntect-html.syntect-markdown .syntect-constant.syntect-other.syntect-reference {
font-style: italic;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-list {
 color: #ed6a43;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-bold {
font-weight: bold;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-italic {
font-style: italic;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-bold .syntect-markup.syntect-italic {
font-weight: bold;
font-style: italic;
}
.syntect-text.syntect-html.syntect-markdown .syntect-markup.syntect-italic .syntect-markup.syntect-bold {
font-weight: bold;
font-style: italic;
}
.output-dataframe,.output-html{max-width:100%;overflow:auto;margin:.5rem 0 1rem}.output-dataframe table,.output-html table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.92rem}.output-dataframe caption,.output-html caption{text-align:left;padding:.45rem 0;color:var(--kb-muted)}.output-dataframe th,.output-dataframe td,.output-html th,.output-html td{border:1px solid var(--kb-border);padding:.42rem .6rem;text-align:left;vertical-align:top}.output-dataframe th,.output-html th{background:var(--kb-code);font-weight:650}.output-dataframe td,.output-html td{white-space:pre-wrap;overflow-wrap:anywhere}.output-dataframe .dataframe-truncated{color:var(--kb-muted);font-size:.86rem;margin:.45rem 0}.callout{border:1px solid var(--kb-border);border-left:4px solid var(--kb-accent);border-radius:8px;padding:10px 14px;margin:1.1rem 0;background:#f4f2fa}.callout-note{border-left-color:#3267b1;background:#eef4fd}.callout-tip{border-left-color:#287a38;background:#edf7ef}.callout-important{border-left-color:#7041a6;background:#f4f2fa}.callout-warning{border-left-color:#ad7900;background:#fdf6e3}.callout-caution{border-left-color:#c33;background:#fff0ef}.callout-title{font-weight:700;margin-bottom:.4rem;display:flex;align-items:center;gap:.5rem}.callout-body>:first-child{margin-top:0}.callout-body>:last-child{margin-bottom:0}details.callout summary.callout-title{cursor:pointer}.layout-row{display:flex;flex-wrap:wrap;gap:12px;margin:.6rem 0}.layout-col{min-width:0;min-height:0}.layout-col>figure{margin:0}.layout-col>.output-dataframe,.layout-col>.output-html{margin-top:0;margin-bottom:0}.code-cell.layout-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 14px;align-items:start}.code-cell.layout-side>.outputs{border-top:0;border-left:1px solid var(--kb-border);margin:0}@media(max-width:760px){.code-cell.layout-side{grid-template-columns:minmax(0,1fr)}.code-cell.layout-side>.outputs{border-left:0;border-top:1px solid var(--kb-border)}.layout-row{flex-direction:column}.layout-col{flex-basis:100%!important;max-width:100%!important}}@media print{.code-cell.layout-side{grid-template-columns:minmax(0,1fr)}.layout-row{display:block}.layout-col{max-width:100%}}.kb-lw-1{flex:0 0 1%;max-width:1%}.kb-lw-2{flex:0 0 2%;max-width:2%}.kb-lw-3{flex:0 0 3%;max-width:3%}.kb-lw-4{flex:0 0 4%;max-width:4%}.kb-lw-5{flex:0 0 5%;max-width:5%}.kb-lw-6{flex:0 0 6%;max-width:6%}.kb-lw-7{flex:0 0 7%;max-width:7%}.kb-lw-8{flex:0 0 8%;max-width:8%}.kb-lw-9{flex:0 0 9%;max-width:9%}.kb-lw-10{flex:0 0 10%;max-width:10%}.kb-lw-11{flex:0 0 11%;max-width:11%}.kb-lw-12{flex:0 0 12%;max-width:12%}.kb-lw-13{flex:0 0 13%;max-width:13%}.kb-lw-14{flex:0 0 14%;max-width:14%}.kb-lw-15{flex:0 0 15%;max-width:15%}.kb-lw-16{flex:0 0 16%;max-width:16%}.kb-lw-17{flex:0 0 17%;max-width:17%}.kb-lw-18{flex:0 0 18%;max-width:18%}.kb-lw-19{flex:0 0 19%;max-width:19%}.kb-lw-20{flex:0 0 20%;max-width:20%}.kb-lw-21{flex:0 0 21%;max-width:21%}.kb-lw-22{flex:0 0 22%;max-width:22%}.kb-lw-23{flex:0 0 23%;max-width:23%}.kb-lw-24{flex:0 0 24%;max-width:24%}.kb-lw-25{flex:0 0 25%;max-width:25%}.kb-lw-26{flex:0 0 26%;max-width:26%}.kb-lw-27{flex:0 0 27%;max-width:27%}.kb-lw-28{flex:0 0 28%;max-width:28%}.kb-lw-29{flex:0 0 29%;max-width:29%}.kb-lw-30{flex:0 0 30%;max-width:30%}.kb-lw-31{flex:0 0 31%;max-width:31%}.kb-lw-32{flex:0 0 32%;max-width:32%}.kb-lw-33{flex:0 0 33%;max-width:33%}.kb-lw-34{flex:0 0 34%;max-width:34%}.kb-lw-35{flex:0 0 35%;max-width:35%}.kb-lw-36{flex:0 0 36%;max-width:36%}.kb-lw-37{flex:0 0 37%;max-width:37%}.kb-lw-38{flex:0 0 38%;max-width:38%}.kb-lw-39{flex:0 0 39%;max-width:39%}.kb-lw-40{flex:0 0 40%;max-width:40%}.kb-lw-41{flex:0 0 41%;max-width:41%}.kb-lw-42{flex:0 0 42%;max-width:42%}.kb-lw-43{flex:0 0 43%;max-width:43%}.kb-lw-44{flex:0 0 44%;max-width:44%}.kb-lw-45{flex:0 0 45%;max-width:45%}.kb-lw-46{flex:0 0 46%;max-width:46%}.kb-lw-47{flex:0 0 47%;max-width:47%}.kb-lw-48{flex:0 0 48%;max-width:48%}.kb-lw-49{flex:0 0 49%;max-width:49%}.kb-lw-50{flex:0 0 50%;max-width:50%}.kb-lw-51{flex:0 0 51%;max-width:51%}.kb-lw-52{flex:0 0 52%;max-width:52%}.kb-lw-53{flex:0 0 53%;max-width:53%}.kb-lw-54{flex:0 0 54%;max-width:54%}.kb-lw-55{flex:0 0 55%;max-width:55%}.kb-lw-56{flex:0 0 56%;max-width:56%}.kb-lw-57{flex:0 0 57%;max-width:57%}.kb-lw-58{flex:0 0 58%;max-width:58%}.kb-lw-59{flex:0 0 59%;max-width:59%}.kb-lw-60{flex:0 0 60%;max-width:60%}.kb-lw-61{flex:0 0 61%;max-width:61%}.kb-lw-62{flex:0 0 62%;max-width:62%}.kb-lw-63{flex:0 0 63%;max-width:63%}.kb-lw-64{flex:0 0 64%;max-width:64%}.kb-lw-65{flex:0 0 65%;max-width:65%}.kb-lw-66{flex:0 0 66%;max-width:66%}.kb-lw-67{flex:0 0 67%;max-width:67%}.kb-lw-68{flex:0 0 68%;max-width:68%}.kb-lw-69{flex:0 0 69%;max-width:69%}.kb-lw-70{flex:0 0 70%;max-width:70%}.kb-lw-71{flex:0 0 71%;max-width:71%}.kb-lw-72{flex:0 0 72%;max-width:72%}.kb-lw-73{flex:0 0 73%;max-width:73%}.kb-lw-74{flex:0 0 74%;max-width:74%}.kb-lw-75{flex:0 0 75%;max-width:75%}.kb-lw-76{flex:0 0 76%;max-width:76%}.kb-lw-77{flex:0 0 77%;max-width:77%}.kb-lw-78{flex:0 0 78%;max-width:78%}.kb-lw-79{flex:0 0 79%;max-width:79%}.kb-lw-80{flex:0 0 80%;max-width:80%}.kb-lw-81{flex:0 0 81%;max-width:81%}.kb-lw-82{flex:0 0 82%;max-width:82%}.kb-lw-83{flex:0 0 83%;max-width:83%}.kb-lw-84{flex:0 0 84%;max-width:84%}.kb-lw-85{flex:0 0 85%;max-width:85%}.kb-lw-86{flex:0 0 86%;max-width:86%}.kb-lw-87{flex:0 0 87%;max-width:87%}.kb-lw-88{flex:0 0 88%;max-width:88%}.kb-lw-89{flex:0 0 89%;max-width:89%}.kb-lw-90{flex:0 0 90%;max-width:90%}.kb-lw-91{flex:0 0 91%;max-width:91%}.kb-lw-92{flex:0 0 92%;max-width:92%}.kb-lw-93{flex:0 0 93%;max-width:93%}.kb-lw-94{flex:0 0 94%;max-width:94%}.kb-lw-95{flex:0 0 95%;max-width:95%}.kb-lw-96{flex:0 0 96%;max-width:96%}.kb-lw-97{flex:0 0 97%;max-width:97%}.kb-lw-98{flex:0 0 98%;max-width:98%}.kb-lw-99{flex:0 0 99%;max-width:99%}.kb-lw-100{flex:0 0 100%;max-width:100%}.book-content>.code-cell{margin-bottom:.75rem}.book-content>.code-cell+h1,.book-content>.code-cell+h2,.book-content>.code-cell+h3,.book-content>.code-cell+h4{margin-top:1.25em}.output-html .sk-text-repr-fallback{display:none!important}.output-html .sk-top-container{max-width:100%;overflow-x:auto;font:inherit;line-height:1.45}.output-html .sk-top-container .sk-container{display:block!important}.output-html .sk-label-container{display:flex;align-items:flex-start}.output-html .sk-toggleable__control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.output-html .sk-toggleable__label{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:inherit}.output-html .sk-toggleable__label-arrow:before{content:'▸';display:inline-block;width:1em;color:var(--kb-muted);transition:transform 120ms ease}.output-html .sk-toggleable__control:checked+.sk-toggleable__label-arrow:before{transform:rotate(90deg)}.output-html .sk-toggleable__control:focus-visible+.sk-toggleable__label{outline:2px solid var(--kb-accent);outline-offset:2px}.output-html .sk-toggleable__content{display:none;padding:4px 0 4px 1.25em}.output-html .sk-toggleable__control:checked~.sk-toggleable__content{display:block}.output-html .sk-top-container pre{margin:4px 0;padding:7px 9px;overflow-x:auto;border:1px solid var(--kb-border);border-radius:5px;background:var(--kb-code);color:inherit;font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}.output-html .sk-estimator-doc-link{color:var(--kb-accent);text-decoration:none}.output-html .sk-estimator-doc-link span{display:none}.output-html .sk-parallel{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.output-html .sk-parallel-item{flex:1 1 220px;min-width:0;padding:8px;border:1px solid var(--kb-border);border-radius:6px;background:var(--kb-code)}.output-html .sk-serial{margin:6px 0 0 8px;padding-left:10px;border-left:1px solid var(--kb-border)}.output-html .sk-toggleable__label:hover{color:var(--kb-accent)}pre.code code.syntect-code{background-color:transparent}