.markdown-body hr::after,.markdown-body::after { clear: both }
.loopLine,.messageLine0 { }
.markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; line-height: 1.5 }
.markdown-body .pl-c { color: #6a737d }
.markdown-body .pl-c1,.markdown-body .pl-s .pl-v { color: #005cc5 }
.markdown-body .pl-e,.markdown-body .pl-en { color: #6f42c1 }
.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi { color: #24292e }
.markdown-body .pl-ent { color: #22863a }
.markdown-body .pl-k { color: #d73a49 }
.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre { color: #032f62 }
.markdown-body .pl-smw,.markdown-body .pl-v { color: #e36209 }
.markdown-body .pl-bu { color: #b31d28 }
.markdown-body .pl-ii { color: #fafbfc; background-color: #b31d28 }
.markdown-body .pl-c2 { color: #fafbfc; background-color: #d73a49 }
.markdown-body .pl-c2::before { content: "^M" }
.markdown-body .pl-sr .pl-cce { font-weight: 700; color: #22863a }
.markdown-body .pl-ml { color: #735c0f }
.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms { font-weight: 700; color: #005cc5 }
.markdown-body .pl-mi { font-style: italic; color: #24292e }
.markdown-body .pl-mb { font-weight: 700; color: #24292e }
.markdown-body .pl-md { color: #b31d28; background-color: #ffeef0 }
.markdown-body .pl-mi1 { color: #22863a; background-color: #f0fff4 }
.markdown-body .pl-mc { color: #e36209; background-color: #ffebda }
.markdown-body .pl-mi2 { color: #f6f8fa; background-color: #005cc5 }
.markdown-body .pl-mdr { font-weight: 700; color: #6f42c1 }
.markdown-body .pl-ba { color: #586069 }
.markdown-body .pl-sg { color: #959da5 }
.markdown-body .pl-corl { text-decoration: underline; color: #032f62 }
.markdown-body .octicon { display: inline-block; vertical-align: text-bottom }
.markdown-body hr::after,.markdown-body hr::before,.markdown-body::after,.markdown-body::before { display: table; content: "" }
.markdown-body a { background-color: transparent; color: #0366d6; text-decoration: none }
.markdown-body a:active,.markdown-body a:hover { outline-width: 0 }
.markdown-body h1 { margin: .67em 0 }
.markdown-body img { border-style: none }
.markdown-body svg:not(:root) { overflow: hidden }
.markdown-body hr { }
.markdown-body input { font: inherit; margin: 0; overflow: visible; font-family: inherit; font-size: inherit; line-height: inherit }
.markdown-body [type="checkbox"] { padding: 0 }
.markdown-body * { }
.markdown-body a:hover { text-decoration: underline }
.markdown-body strong { font-weight: 600 }
.markdown-body td,.markdown-body th { padding: 0 }
.markdown-body blockquote { margin: 0 }
.markdown-body ol ol,.markdown-body ul ol { list-style-type: lower-roman }
.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol { list-style-type: lower-alpha }
.markdown-body .task-list-item,ul.table-of-contents { list-style-type: none }
.markdown-body dd { margin-left: 0 }
.markdown-body code { font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace }
.markdown-body pre { font: 12px SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace }
.markdown-body .pl-0 { padding-left: 0 !important }
.markdown-body .pl-1 { padding-left: 4px !important }
.markdown-body .pl-2 { padding-left: 8px !important }
.markdown-body .pl-3 { padding-left: 16px !important }
.markdown-body .pl-4 { padding-left: 24px !important }
.markdown-body .pl-5 { padding-left: 32px !important }
.markdown-body .pl-6 { padding-left: 40px !important }
.markdown-body>:first-child { margin-top: 0 !important }
.markdown-body>:last-child { margin-bottom: 0 !important }
.markdown-body a:not([href]) { color: inherit; text-decoration: none }
.markdown-body .anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1 }
.markdown-body .anchor:focus { outline: 0 }
.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul { margin-top: 0; margin-bottom: 16px }
.markdown-body hr { overflow: hidden; background: #e1e4e8; height: .25em; padding: 0; margin: 24px 0; border: 0 }
.markdown-body blockquote { padding: 0 1em; color: #6a737d; border-left: .25em solid #dfe2e5 }
.markdown-body h1,.markdown-body h2 { padding-bottom: .3em; border-bottom: 1px solid #eaecef }
.markdown-body blockquote>:first-child { margin-top: 0 }
.markdown-body blockquote>:last-child { margin-bottom: 0 }
.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25 }
.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link { color: #1b1f23; vertical-align: middle; visibility: hidden }
.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor { text-decoration: none }
.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link { visibility: visible }
.markdown-body h6 { color: #6a737d }
.markdown-body ol,.markdown-body ul { padding-left: 2em }
.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul { margin-top: 0; margin-bottom: 0 }
.markdown-body li>p { margin-top: 16px }
.markdown-body li+li { margin-top: .25em }
.markdown-body dl { padding: 0 }
.markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600 }
.markdown-body dl dd { padding: 0 16px; margin-bottom: 16px }
.markdown-body table th { font-weight: 600 }
.markdown-body table td,.markdown-body table th { padding: 6px 13px; border: 1px solid #dfe2e5 }
.markdown-body table tr { background-color: #fff; border-top: 1px solid #c6cbd1 }
.markdown-body table tr:nth-child(2n) { background-color: #f6f8fa }
.markdown-body img { max-width: 100%; background-color: #fff }
.markdown-body code { padding: .2em 0; margin: 0; font-size: 85%; background-color: rgba(27,31,35,.05) }
.markdown-body code::after,.markdown-body code::before { letter-spacing: -.2em; content: " " }
.markdown-body pre>code { padding: 0; margin: 0; font-size: 100%; white-space: pre; background: 0 0; border: 0 }
.markdown-body .highlight { margin-bottom: 16px }
.markdown-body .highlight pre { margin-bottom: 0 }
.markdown-body .highlight pre,.markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f6f8fa }
.markdown-body pre code { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; background-color: transparent; border: 0 }
.markdown-body pre code::after,.markdown-body pre code::before { content: normal }
.markdown-body .full-commit .btn-outline:not(:disabled):hover { color: #005cc5; border-color: #005cc5 }
.markdown-body kbd { display: inline-block; padding: 3px 5px; font: 11px SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; line-height: 10px; color: #444d56; vertical-align: middle; background-color: #fafbfc; border: 1px solid #d1d5da; border-bottom-color: #c6cbd1 }
.node text,.noteText,div.mermaidTooltip { font-family: "trebuchet ms", verdana, arial }
.markdown-body :checked+.radio-label { position: relative; z-index: 1; border-color: #0366d6 }
.markdown-body .task-list-item+.task-list-item { margin-top: 3px }
.markdown-body .task-list-item input { margin: 0 .2em .25em -1.6em; vertical-align: middle }
.markdown-body hr { border-bottom-color: #eee }
.hljs { display: block; padding: .5em; color: #333; background: #f8f8f8 }
.hljs-comment,.hljs-quote { color: #998; font-style: italic }
.hljs-keyword,.hljs-selector-tag,.hljs-subst { color: #333; font-weight: 700 }
.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable { color: teal }
.hljs-doctag,.hljs-string { color: #d14 }
.hljs-section,.hljs-selector-id,.hljs-title { color: #900; font-weight: 700 }
.hljs-subst { font-weight: 400 }
.hljs-class .hljs-title,.hljs-type { color: #458; font-weight: 700 }
.hljs-attribute,.hljs-name,.hljs-tag { color: navy; font-weight: 400 }
.hljs-meta,.hljs-strong { font-weight: 700 }
.hljs-link,.hljs-regexp { color: #009926 }
.hljs-bullet,.hljs-symbol { color: #990073 }
.hljs-built_in,.hljs-builtin-name { color: #0086b3 }
.hljs-meta { color: #999 }
.hljs-deletion { background: #fdd }
.hljs-addition { background: #dfd }
.hljs-emphasis { font-style: italic }
.mermaid .label { color: #333 }
.node circle,.node ellipse,.node polygon,.node rect { }
.edgePath .path { }
.edgeLabel { background-color: #e8e8e8 }
.cluster rect { }
.cluster text { }
.actor { }
text.actor { }
.actor-line { }
.messageLine0,.messageLine1 { }
#arrowhead { }
#crosshead path { }
.messageText { }
.labelBox { }
.labelText,.loopText { }
.loopLine { }
.note { }
.noteText { font-size: 14px }
.section { opacity: .2 }
.section0 { }
.section2 { }
.section1,.section3 { opacity: .2 }
.sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3 { }
.sectionTitle { font-size: 11px }
.grid .tick { opacity: .3 }
.grid path { }
.today { }
.task { }
.taskText { font-size: 11px }
.taskTextOutsideRight { font-size: 11px }
.taskTextOutsideLeft { font-size: 11px }
.taskText0,.taskText1,.taskText2,.taskText3 { }
.task0,.task1,.task2,.task3 { }
.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3 { }
.active0,.active1,.active2,.active3 { }
.activeText0,.activeText1,.activeText2,.activeText3 { }
.done0,.done1,.done2,.done3 { }
.doneText0,.doneText1,.doneText2,.doneText3 { }
.crit0,.crit1,.crit2,.crit3 { }
.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3 { }
.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3 { cursor: pointer }
.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3 { }
.titleText { font-size: 18px }
.node text { font-size: 14px }
div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-size: 12px; background: #ffffde; border: 1px solid #aa3; z-index: 100 }
.katex-display { display: block; margin: 1em 0; text-align: center }
.katex .base,.katex .katex-html,.katex .strut { display: inline-block }
.katex-display>.katex { display: inline-block; text-align: initial }
.katex { font: 400 1.21em KaTeX_Main, Times New Roman, serif; line-height: 1.2; white-space: nowrap; text-indent: 0 }
.katex * { }
.katex .katex-mathml { position: absolute; clip: rect(1px,1px,1px,1px); padding: 0; border: 0; height: 1px; width: 1px; overflow: hidden }
.katex .base,.katex .vlist,.katex .vlist>span { position: relative }
.katex .mathrm { font-style: normal }
.katex .mainit,.katex .mathit,.katex .textit { font-style: italic }
.katex .mathit { font-family: KaTeX_Math }
.katex .mathbf { font-family: KaTeX_Main; font-weight: 700 }
.katex .amsrm,.katex .mathbb { font-family: KaTeX_AMS }
.katex .mathcal { font-family: KaTeX_Caligraphic }
.katex .mathfrak { font-family: KaTeX_Fraktur }
.katex .mathtt { font-family: KaTeX_Typewriter }
.katex .mathscr { font-family: KaTeX_Script }
.katex .mathsf { font-family: KaTeX_SansSerif }
.katex .mainit,.katex .mainrm { font-family: KaTeX_Main }
.katex .mainrm { font-style: normal }
.katex .mord+.mop { margin-left: .16667em }
.katex .mord+.mbin { margin-left: .22222em }
.katex .mord+.mrel { margin-left: .27778em }
.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner { margin-left: .16667em }
.katex .mop+.mrel { margin-left: .27778em }
.katex .mop+.minner { margin-left: .16667em }
.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord { margin-left: .22222em }
.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord { margin-left: .27778em }
.katex .mclose+.mop { margin-left: .16667em }
.katex .mclose+.mbin { margin-left: .22222em }
.katex .mclose+.mrel { margin-left: .27778em }
.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel { margin-left: .16667em }
.katex .minner+.mbin { margin-left: .22222em }
.katex .minner+.mrel { margin-left: .27778em }
.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct { margin-left: .16667em }
.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight { margin-left: 0 }
.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight { margin-left: .16667em }
.katex .vlist-t { display: inline-table; table-layout: fixed }
.katex .vlist-r { display: table-row }
.katex .vlist { display: table-cell; vertical-align: bottom }
.katex .vlist>span { display: block; height: 0 }
.katex .vlist>span>span { display: inline-block }
.katex .vlist>span>.pstrut { overflow: hidden; width: 0 }
.katex .vlist-t2 { margin-right: -2px }
.katex .vlist-s { display: table-cell; vertical-align: bottom; font-size: 1px; width: 2px }
.katex .fontsize-ensurer,.katex .llap>.fix,.katex .mfrac .frac-line,.katex .mspace,.katex .mtable .arraycolsep,.katex .mtable .vertical-separator,.katex .nulldelimiter,.katex .rlap>.fix,.katex .rule,.katex .sizing { display: inline-block }
.katex .msupsub { text-align: left }
.katex .accent>.vlist-t,.katex .mfrac>span>span,.katex .mtable .col-align-c>.vlist-t,.katex .op-limits>.vlist-t { text-align: center }
.katex .mfrac .frac-line { width: 100%; border-bottom-style: solid }
.katex .mspace.negativethinspace { margin-left: -.16667em }
.katex .mspace.thinspace { width: .16667em }
.katex .mspace.negativemediumspace { margin-left: -.22222em }
.katex .mspace.mediumspace { width: .22222em }
.katex .mspace.thickspace { width: .27778em }
.katex .mspace.sixmuspace { width: .333333em }
.katex .mspace.eightmuspace { width: .444444em }
.katex .mspace.enspace { width: .5em }
.katex .mspace.twelvemuspace { width: .666667em }
.katex .mspace.quad { width: 1em }
.katex .mspace.qquad { width: 2em }
.katex .llap,.katex .rlap { width: 0; position: relative }
.katex .llap>.inner,.katex .rlap>.inner { position: absolute }
.katex .llap>.inner { right: 0 }
.katex .rlap>.inner { left: 0 }
.katex .katex-logo .a { font-size: .75em; margin-left: -.32em; position: relative; top: -.2em }
.katex .katex-logo .t { margin-left: -.23em }
.katex .katex-logo .e { margin-left: -.1667em; position: relative; top: .2155em }
.katex .katex-logo .x { margin-left: -.125em }
.katex .rule { border: 0 solid; position: relative }
.katex .overline .overline-line,.katex .underline .underline-line { display: inline-block; width: 100%; border-bottom-style: solid }
.katex .sqrt>.root { margin-left: .27777778em; margin-right: -.55555556em }
.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1 { font-size: 1em }
.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2 { font-size: 1.2em }
.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3 { font-size: 1.4em }
.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4 { font-size: 1.6em }
.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5 { font-size: 1.8em }
.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6 { font-size: 2em }
.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7 { font-size: 2.4em }
.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8 { font-size: 2.88em }
.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9 { font-size: 3.456em }
.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10 { font-size: 4.148em }
.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11 { font-size: 4.976em }
.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1 { font-size: .83333333em }
.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2 { font-size: 1em }
.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3 { font-size: 1.16666667em }
.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4 { font-size: 1.33333333em }
.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5 { font-size: 1.5em }
.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6 { font-size: 1.66666667em }
.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7 { font-size: 2em }
.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8 { font-size: 2.4em }
.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9 { font-size: 2.88em }
.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10 { font-size: 3.45666667em }
.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11 { font-size: 4.14666667em }
.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1 { font-size: .71428571em }
.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2 { font-size: .85714286em }
.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3 { font-size: 1em }
.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4 { font-size: 1.14285714em }
.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5 { font-size: 1.28571429em }
.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6 { font-size: 1.42857143em }
.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7 { font-size: 1.71428571em }
.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8 { font-size: 2.05714286em }
.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9 { font-size: 2.46857143em }
.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10 { font-size: 2.96285714em }
.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11 { font-size: 3.55428571em }
.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1 { font-size: .625em }
.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2 { font-size: .75em }
.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3 { font-size: .875em }
.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4 { font-size: 1em }
.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5 { font-size: 1.125em }
.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6 { font-size: 1.25em }
.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7 { font-size: 1.5em }
.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8 { font-size: 1.8em }
.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9 { font-size: 2.16em }
.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10 { font-size: 2.5925em }
.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11 { font-size: 3.11em }
.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1 { font-size: .55555556em }
.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2 { font-size: .66666667em }
.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3 { font-size: .77777778em }
.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4 { font-size: .88888889em }
.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5 { font-size: 1em }
.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6 { font-size: 1.11111111em }
.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7 { font-size: 1.33333333em }
.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8 { font-size: 1.6em }
.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9 { font-size: 1.92em }
.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10 { font-size: 2.30444444em }
.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11 { font-size: 2.76444444em }
.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1 { font-size: .5em }
.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2 { font-size: .6em }
.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3 { font-size: .7em }
.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4 { font-size: .8em }
.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5 { font-size: .9em }
.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6 { font-size: 1em }
.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7 { font-size: 1.2em }
.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8 { font-size: 1.44em }
.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9 { font-size: 1.728em }
.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10 { font-size: 2.074em }
.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11 { font-size: 2.488em }
.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1 { font-size: .41666667em }
.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2 { font-size: .5em }
.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3 { font-size: .58333333em }
.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4 { font-size: .66666667em }
.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5 { font-size: .75em }
.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6 { font-size: .83333333em }
.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7 { font-size: 1em }
.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8 { font-size: 1.2em }
.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9 { font-size: 1.44em }
.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10 { font-size: 1.72833333em }
.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11 { font-size: 2.07333333em }
.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1 { font-size: .34722222em }
.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2 { font-size: .41666667em }
.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3 { font-size: .48611111em }
.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4 { font-size: .55555556em }
.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5 { font-size: .625em }
.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6 { font-size: .69444444em }
.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7 { font-size: .83333333em }
.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8 { font-size: 1em }
.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9 { font-size: 1.2em }
.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10 { font-size: 1.44027778em }
.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11 { font-size: 1.72777778em }
.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1 { font-size: .28935185em }
.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2 { font-size: .34722222em }
.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3 { font-size: .40509259em }
.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4 { font-size: .46296296em }
.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5 { font-size: .52083333em }
.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6 { font-size: .5787037em }
.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7 { font-size: .69444444em }
.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8 { font-size: .83333333em }
.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9 { font-size: 1em }
.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10 { font-size: 1.20023148em }
.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11 { font-size: 1.43981481em }
.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1 { font-size: .24108004em }
.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2 { font-size: .28929605em }
.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3 { font-size: .33751205em }
.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4 { font-size: .38572806em }
.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5 { font-size: .43394407em }
.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6 { font-size: .48216008em }
.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7 { font-size: .57859209em }
.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8 { font-size: .69431051em }
.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9 { font-size: .83317261em }
.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10 { font-size: 1em }
.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11 { font-size: 1.19961427em }
.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1 { font-size: .20096463em }
.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2 { font-size: .24115756em }
.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3 { font-size: .28135048em }
.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4 { font-size: .32154341em }
.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5 { font-size: .36173633em }
.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6 { font-size: .40192926em }
.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7 { font-size: .48231511em }
.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8 { font-size: .57877814em }
.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9 { font-size: .69453376em }
.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10 { font-size: .83360129em }
.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11 { font-size: 1em }
.katex .delimsizing.size1 { font-family: KaTeX_Size1 }
.katex .delimsizing.size2 { font-family: KaTeX_Size2 }
.katex .delimsizing.size3 { font-family: KaTeX_Size3 }
.katex .delimsizing.size4 { font-family: KaTeX_Size4 }
.katex .delimsizing.mult .delim-size1>span { font-family: KaTeX_Size1 }
.katex .delimsizing.mult .delim-size4>span { font-family: KaTeX_Size4 }
.katex .nulldelimiter { width: .12em }
.katex .delimcenter,.katex .op-symbol { position: relative }
.katex .op-symbol.small-op { font-family: KaTeX_Size1 }
.katex .op-symbol.large-op { font-family: KaTeX_Size2 }
.katex .accent .accent-body>span { width: 0 }
.katex .accent .accent-body.accent-vec>span { position: relative; left: .326em }
.katex .accent .accent-body.accent-hungarian>span { position: relative; left: .25em }
.katex .mtable .vertical-separator { margin: 0 -.025em; border-right: .05em solid #000 }
.katex .stretchy,.katex svg { width: 100%; display: block }
.katex .mtable .col-align-l>.vlist-t { text-align: left }
.katex .mtable .col-align-r>.vlist-t { text-align: right }
.katex .svg-align { text-align: left }
.katex .mover,.katex .munder,.katex .x-arrow,div.mermaid { text-align: center }
.katex svg { position: absolute }
.katex svg path { }
.katex svg line { }
.katex .stretchy::after,.katex .stretchy::before { content: "" }
.katex .x-arrow-pad { padding: 0 .5em }
.katex .boxpad { padding: 0 .3em }
.katex .fbox { border: .04em solid #000 }
.katex .cancel-pad { padding: 0 .2em }
.katex .cancel-lap+.mbin,.katex .cancel-lap+.mord,.katex .cancel-lap+.msupsub,.katex .mbin+.cancel-lap,.katex .mord+.cancel-lap { margin-left: -.2em }
.katex .sout { border-bottom-style: solid; border-bottom-width: .08em }
body { margin: 0; padding: 0 }
.markdown-body { min-width: 256px; max-width: 978px; margin: 0 auto; padding: 20px; font-size: 14px }
.markdown-body h1 { font-size: 2.25em }
.markdown-body h2 { font-size: 1.75em }
.markdown-body h3 { font-size: 1.5em }
.markdown-body h4 { font-size: 1.25em }
.markdown-body h5,.markdown-body h6 { font-size: 1em }
div.mermaid svg { height: auto }
hr.footnotes-sep { margin: 64px 0 32px; height: 1px }
.footnotes { font-size: 90%; padding-left: 16px }
li.footnote-item>p { margin: 8px 0 }
.danger,.info,.success,.warning { padding: 15px; margin-bottom: 20px; border: 1px solid transparent }
.danger>p:last-child,.info>p:last-child,.success>p:last-child,.warning>p:last-child { margin-bottom: 0 }
.success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6 }
.info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1 }
.warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc }
.danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1 }
abbr[title] { cursor: help; border-bottom: 1px dotted #777 }
ul.table-of-contents li { margin: 4px 0 }
.markdown-body table { border-spacing: 0; border-collapse: collapse; width: auto; display: table }
.markdown-body table td,.markdown-body table th { }
认识json
{
“cat”:”it”,
“lanuaes”:{
{“id”:1;”ide”:”Eclipse”,”name”:”Java”},
{“id”:2,”ide”:”xcode”,”name”:”swift”},
{“id”:3,”ide”:”visual”,”name”:”c#”}
}
}
1、使用JSON生成JSON类
//JSONArray 用来解析或生成数组[]
//JSONObject 用来解析或生成类{}
//生成一个类json串
JSONObject json = new JSONObject();
json.put(key,value);
2、生成json数组
JSONObject array1 = new JSONObject();
array.put(name,value);
JSONObject array2 = new JSONObject();
array.put(name,value);
JSONArray array = new JSONArray();
array.put(array1);
array.put(array2);
//解析json
String jsonclass = json.toString();
JSONObject jsonObjectClass = new JSONObject(jsonclass);
//判断是否存在
if(jsonObjectClass.has(“name”)){
String str = jsonObjectClass.get(“name”);
Log.e(“TT”,”解析到的类:”+str);
}else{
Log.e(“TT”,”没有找到字段”);
}
//解析数组
String array = array.toString();
JSONArray jsonarray = new JSONArray(array);
for(int I = 0 ;jsonarray.length();i++){
JSONObject jsonobject = jsonArray.getJSONObject(i);
if(jsonobject.has("name")){
string str = jsonobject.get("name");
}
}
3、GSon解析
1、创建一个JsonBean的Java类
public class JsonBean {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "JsonBean{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、在MainActivity中写一个叫getjsonData的方法
public void getjsonData() {
Gson gson = new Gson(); //实例化Gson
JsonBean jsonBean = gson.fromJson(json,JsonBean.class); //讲json转化成Java对象
Log.d("TT",""+jsonBean.getName());
}
这样就可以解析出来了 下面是全部的代码
3、MainActivity全部代码
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.gson.Gson;
public class MainActivity extends AppCompatActivity {
private String json ="{\"name\":\"小明\",\"age\":\"23\"}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getjsonData();
}
public void getjsonData() {
Gson gson = new Gson(); //实例化Gson
JsonBean jsonBean = gson.fromJson(json,JsonBean.class); //讲json转化成Java对象
Log.d("TT",""+jsonBean.getName());
}
}
4、使用Gson生成json
同样创建JsonBean类
public class JsonBean {
private String name;
private int age;
public JsonBean(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "JsonBean{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
MainActivity类
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.gson.Gson;
public class MainActivity extends AppCompatActivity {
private String json ="{\"name\":\"小明\",\"age\":\"23\"}";
Gson gson = new Gson(); //实例化Gson
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
formjsonData();
}
private void formjsonData(){
JsonBean jsonBean = new JsonBean("Carr",20);
String str = gson.toJson(jsonBean);
Log.d("TT",str);
}
}
这样打印出来的就是生成的json数据了,大家可以试试