Commit 8f9cea15 authored by Riegel's avatar Riegel
Browse files

Add documentation for zip-file usage

parent 7c08b62f
Pipeline #10973 passed with stages
in 13 seconds
@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}:root,[data-md-color-scheme=default]{--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#ffff0080;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:#ffff0080;--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:#0000001f;--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m18 21-4-4h3V7h-3l4-4 4 4h-3v10h3M2 19v-2h10v2M2 13v-2h7v2M2 7V5h4v2H2Z"/></svg>');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 17h3l-4 4-4-4h3V3h2M2 17h10v2H2M6 5v2H2V5m0 6h7v2H2v-2Z"/></svg>');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 7h3l-4-4-4 4h3v14h2M2 17h10v2H2M6 5v2H2V5m0 6h7v2H2v-2Z"/></svg>')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr[title]:focus:after,.md-typeset abbr[title]:hover:after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);font-size:.7rem;left:.8rem;margin-top:2em;padding:.2rem .3rem;position:absolute;right:.8rem}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"/></svg>')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2Z"/></svg>')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:focus,.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:checked~.md-nav,.md-nav__toggle:indeterminate~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h7c-.41-.25-.8-.56-1.14-.9-.33-.33-.61-.7-.86-1.1H6V4h7v5h5v1.18c.71.16 1.39.43 2 .82V8l-6-6m6.31 16.9c1.33-2.11.69-4.9-1.4-6.22-2.11-1.33-4.91-.68-6.22 1.4-1.34 2.11-.69 4.89 1.4 6.22 1.46.93 3.32.93 4.79.02L22 23.39 23.39 22l-3.08-3.1m-3.81.1a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5Z"/></svg>')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:-webkit-sticky;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"/></svg>');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"/></svg>');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"/></svg>')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m5.41 21 .71-4h-4l.35-2h4l1.06-6h-4l.35-2h4l.71-4h2l-.71 4h6l.71-4h2l-.71 4h4l-.35 2h-4l-1.06 6h4l-.35 2h-4l-.71 4h-2l.71-4h-6l-.71 4h-2M9.53 9l-1.06 6h6l1.06-6h-6Z"/></svg>')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em #0000;transform:scale(1)}to{box-shadow:0 0 0 0 #0000;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:focus,.md-annotation .md-annotation__index:hover{color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index{color:var(--md-accent-bg-color)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S301 191.9 288 191.9L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m3.1 5.07c.14 0 .28.05.4.16l1.27 1.27c.23.22.23.57 0 .78l-1 1-2.05-2.05 1-1c.1-.11.24-.16.38-.16m-1.97 1.74 2.06 2.06-6.06 6.06H7.07v-2.06l6.06-6.06Z"/></svg>');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 9H7V7h10m0 6H7v-2h10m-3 6H7v-2h7M12 3a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m7 0h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z"/></svg>');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2Z"/></svg>');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.66 11.2c-.23-.3-.51-.56-.77-.82-.67-.6-1.43-1.03-2.07-1.66C13.33 7.26 13 4.85 13.95 3c-.95.23-1.78.75-2.49 1.32-2.59 2.08-3.61 5.75-2.39 8.9.04.1.08.2.08.33 0 .22-.15.42-.35.5-.23.1-.47.04-.66-.12a.58.58 0 0 1-.14-.17c-1.13-1.43-1.31-3.48-.55-5.12C5.78 10 4.87 12.3 5 14.47c.06.5.12 1 .29 1.5.14.6.41 1.2.71 1.73 1.08 1.73 2.95 2.97 4.96 3.22 2.14.27 4.43-.12 6.07-1.6 1.83-1.66 2.47-4.32 1.53-6.6l-.13-.26c-.21-.46-.77-1.26-.77-1.26m-3.16 6.3c-.28.24-.74.5-1.1.6-1.12.4-2.24-.16-2.9-.82 1.19-.28 1.9-1.16 2.11-2.05.17-.8-.15-1.46-.28-2.23-.12-.74-.1-1.37.17-2.06.19.38.39.76.63 1.06.77 1 1.98 1.44 2.24 2.8.04.14.06.28.06.43.03.82-.33 1.72-.93 2.27Z"/></svg>');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 7 9 19l-5.5-5.5 1.41-1.41L9 16.17 19.59 5.59 21 7Z"/></svg>');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10Z"/></svg>');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 14h-2V9h2m0 9h-2v-2h2M1 21h22L12 2 1 21Z"/></svg>');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m11.5 20 4.86-9.73H13V4l-5 9.73h3.5V20M12 2c2.75 0 5.1 1 7.05 2.95C21 6.9 22 9.25 22 12s-1 5.1-2.95 7.05C17.1 21 14.75 22 12 22s-5.1-1-7.05-2.95C3 17.1 2 14.75 2 12s1-5.1 2.95-7.05C6.9 3 9.25 2 12 2Z"/></svg>');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11 13h2v1h-2v-1m10-8v6c0 5.5-3.8 10.7-9 12-5.2-1.3-9-6.5-9-12V5l9-4 9 4m-4 5h-2.2c-.2-.6-.6-1.1-1.1-1.5l1.2-1.2-.7-.7L12.8 8H12c-.2 0-.5 0-.7.1L9.9 6.6l-.8.8 1.2 1.2c-.5.3-.9.8-1.1 1.4H7v1h2v1H7v1h2v1H7v1h2.2c.4 1.2 1.5 2 2.8 2s2.4-.8 2.8-2H17v-1h-2v-1h2v-1h-2v-1h2v-1m-6 2h2v-1h-2v1Z"/></svg>');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2v2h1v14a4 4 0 0 0 4 4 4 4 0 0 0 4-4V4h1V2H7m4 14c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m2-4c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m1-5h-4V4h4v3Z"/></svg>');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 17h3l2-4V7h-6v6h3M6 17h3l2-4V7H5v6h3l-2 4Z"/></svg>')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.42L5.83 13H21V7h-2Z"/></svg>')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 16.58 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.42Z"/></svg>');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm16.28-2.72a.751.751 0 0 0-.018-1.042.751.751 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg>');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm16.28-2.72a.751.751 0 0 0-.018-1.042.751.751 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg>')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}}
\ No newline at end of file
{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/components/_banner.scss","src/assets/stylesheets/main/components/_base.scss","src/assets/stylesheets/main/components/_clipboard.scss","src/assets/stylesheets/main/components/_consent.scss","src/assets/stylesheets/main/components/_content.scss","src/assets/stylesheets/main/components/_dialog.scss","src/assets/stylesheets/main/components/_feedback.scss","src/assets/stylesheets/main/components/_footer.scss","src/assets/stylesheets/main/components/_form.scss","src/assets/stylesheets/main/components/_header.scss","src/assets/stylesheets/main/components/_nav.scss","src/assets/stylesheets/main/components/_search.scss","src/assets/stylesheets/main/components/_select.scss","src/assets/stylesheets/main/components/_sidebar.scss","src/assets/stylesheets/main/components/_source.scss","src/assets/stylesheets/main/components/_tabs.scss","src/assets/stylesheets/main/components/_tag.scss","src/assets/stylesheets/main/components/_tooltip.scss","src/assets/stylesheets/main/components/_top.scss","src/assets/stylesheets/main/components/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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A,+BAAA,CAHA,2CACE,CALF,kBAAA,CALA,UnCwqHN,CmCzpHM,aAII,6CACE,OnCwpHV,CmCzpHQ,8CACE,OnC2pHV,CmC5pHQ,8CACE,OnC8pHV,CmC/pHQ,8CACE,OnCiqHV,CmClqHQ,8CACE,OnCoqHV,CmCrqHQ,8CACE,OnCuqHV,CmCxqHQ,8CACE,OnC0qHV,CmC3qHQ,8CACE,OnC6qHV,CmC9qHQ,8CACE,OnCgrHV,CmCjrHQ,+CACE,QnCmrHV,CmCprHQ,+CACE,QnCsrHV,CmCvrHQ,+CACE,QnCyrHV,CmC1rHQ,+CACE,QnC4rHV,CmC7rHQ,+CACE,QnC+rHV,CmChsHQ,+CACE,QnCksHV,CmCnsHQ,+CACE,QnCqsHV,CmCtsHQ,+CACE,QnCwsHV,CmCzsHQ,+CACE,QnC2sHV,CmC5sHQ,+CACE,QnC8sHV,CmC/sHQ,+CACE,QnCitHV,CACF,CmC5sHM,uCACE,+BnC8sHR,CmCxsHE,4BACE,UnC0sHJ,CmCvsHI,aAJF,4BAKI,gBnC0sHJ,CACF,CmCtsHE,0BACE,YnCwsHJ,CmCrsHI,aAJF,0BAKI,anCwsHJ,CmCpsHM,sCACE,OnCssHR,CmCvsHM,uCACE,OnCysHR,CmC1sHM,uCACE,OnC4sHR,CmC7sHM,uCACE,OnC+sHR,CmChtHM,uCACE,OnCktHR,CmCntHM,uCACE,OnCqtHR,CmCttHM,uCACE,OnCwtHR,CmCztHM,uCACE,OnC2tHR,CmC5tHM,uCACE,OnC8tHR,CmC/tHM,wCACE,QnCiuHR,CmCluHM,wCACE,QnCouHR,CmCruHM,wCACE,QnCuuHR,CmCxuHM,wCACE,QnC0uHR,CmC3uHM,wCACE,QnC6uHR,CmC9uHM,wCACE,QnCgvHR,CmCjvHM,wCACE,QnCmvHR,CmCpvHM,wCACE,QnCsvHR,CmCvvHM,wCACE,QnCyvHR,CmC1vHM,wCACE,QnC4vHR,CmC7vHM,wCACE,QnC+vHR,CACF,CmCzvHI,+FAEE,QnC2vHN,CmCxvHM,yGACE,wBAAA,CACA,yBnC2vHR,CmClvHM,2DAEE,wBAAA,CACA,yBAAA,CAFA,QnCsvHR,CmC/uHM,iEACE,QnCivHR,CmC9uHQ,qLAGE,wBAAA,CACA,yBAAA,CAFA,QnCkvHV,CmC5uHQ,6FACE,wBAAA,CACA,yBnC8uHV,CmCzuHM,yDACE,kBnC2uHR,CmCtuHI,sCACE,QnCwuHN,CmCnuHE,2BAEE,iBAAA,CAKA,kBAAA,CADA,uCAAA,CAEA,cAAA,CAPA,aAAA,CAGA,YAAA,CACA,gBAAA,CAKA,mBAAA,CADA,gCAAA,CANA,WnC4uHJ,CmCluHI,iCAEE,uDAAA,CADA,+BnCquHN,CmChuHI,iCAIE,6BAAA,CAQA,UAAA,CAXA,aAAA,CAEA,WAAA,CAKA,8CAAA,CAAA,sCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CANA,+CACE,CAJF,UnC0uHN,CmC3tHE,4BAME,yEACE,CALF,YAAA,CAGA,aAAA,CAFA,qBAAA,CAUA,mBAAA,CAZA,iBAAA,CAWA,wBAAA,CARA,YnCiuHJ,CmCrtHI,sCACE,wBnCutHN,CmCntHI,oCACE,SnCqtHN,CmCjtHI,kCAGE,wEACE,CAFF,mBAAA,CADA,OnCqtHN,CmC3sHM,uDACE,8CAAA,CAAA,sCnC6sHR,CK7zHI,wC8B8HF,wDAGE,kBnCosHF,CmCvsHA,wDAGE,mBnCosHF,CmCvsHA,8CAEE,eAAA,CADA,eAAA,CAGA,iCnCmsHF,CmC/rHE,8DACE,mBnCksHJ,CmCnsHE,8DACE,kBnCksHJ,CmCnsHE,oDAEE,UnCisHJ,CmC7rHE,8EAEE,kBnCgsHJ,CmClsHE,8EAEE,mBnCgsHJ,CmClsHE,8EAGE,kBnC+rHJ,CmClsHE,8EAGE,mBnC+rHJ,CmClsHE,oEACE,UnCisHJ,CmC3rHE,8EAEE,mBnC8rHJ,CmChsHE,8EAEE,kBnC8rHJ,CmChsHE,8EAGE,mBnC6rHJ,CmChsHE,8EAGE,kBnC6rHJ,CmChsHE,oEACE,UnC+rHJ,CACF,CmCjrHE,cAHF,olDAII,+BnCorHF,CmCjrHE,g8GACE,sCnCmrHJ,CACF,CmC9qHA,4sDACE,uDnCirHF,CmC7qHA,wmDACE,anCgrHF,CoC7hIA,MACE,8WAAA,CAEA,uXpCiiIF,CoCvhIE,4BAEE,oBAAA,CADA,iBpC2hIJ,CoCthII,sDAGE,SpCwhIN,CoC3hII,sDAGE,UpCwhIN,CoC3hII,4CACE,iBAAA,CACA,SpCyhIN,CoCnhIE,+CAEE,SAAA,CADA,UpCshIJ,CoCjhIE,kDAGE,WpC2hIJ,CoC9hIE,kDAGE,YpC2hIJ,CoC9hIE,wCAME,qDAAA,CAKA,UAAA,CANA,aAAA,CAEA,0CAAA,CAAA,kCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CATA,iBAAA,CACA,SAAA,CAEA,YpC0hIJ,CoC/gIE,gEACE,wBTyWa,CSxWb,mDAAA,CAAA,2CpCihIJ,CqCnkIA,QACE,8DAAA,CAGA,+CAAA,CACA,iEAAA,CACA,oDAAA,CACA,sDAAA,CACA,mDrCokIF,CqChkIA,SAEE,kBAAA,CADA,YrCokIF,CK36HI,mCiChKA,8BACE,UtCmlIJ,CsCplIE,8BACE,WtCmlIJ,CsCplIE,8BAIE,kBtCglIJ,CsCplIE,8BAIE,iBtCglIJ,CsCplIE,oBAKE,mBAAA,CAFA,YAAA,CADA,atCklIJ,CsC5kII,kCACE,WtC+kIN,CsChlII,kCACE,UtC+kIN,CsChlII,kCAEE,iBAAA,CAAA,ctC8kIN,CsChlII,kCAEE,aAAA,CAAA,kBtC8kIN,CACF","file":"main.css"}
\ No newline at end of file
@media screen{[data-md-color-scheme=slate]{--md-default-fg-color:hsla(var(--md-hue),15%,90%,0.82);--md-default-fg-color--light:hsla(var(--md-hue),15%,90%,0.56);--md-default-fg-color--lighter:hsla(var(--md-hue),15%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),15%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,14%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,14%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,14%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,14%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,0.82);--md-code-bg-color:hsla(var(--md-hue),15%,18%,1);--md-code-hl-color:#2977ff;--md-code-hl-color--light:#2977ff1a;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-kbd-color:hsla(var(--md-hue),15%,90%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,90%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-mark-color:#4287ff4d;--md-typeset-table-color:hsla(var(--md-hue),15%,95%,0.12);--md-typeset-table-color--light:hsla(var(--md-hue),15%,95%,0.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,10%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,8%,1);--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #00000040,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059;color-scheme:dark}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#c46fd3}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a47bea}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#5488e8}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff764d}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c1775c}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#5e8bde}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:hsla(var(--md-hue),0%,100%,1);--md-primary-fg-color--light:hsla(var(--md-hue),0%,100%,0.7);--md-primary-fg-color--dark:hsla(var(--md-hue),0%,0%,0.07);--md-primary-bg-color:hsla(var(--md-hue),0%,0%,0.87);--md-primary-bg-color--light:hsla(var(--md-hue),0%,0%,0.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:hsla(var(--md-hue),0%,0%,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:hsla(var(--md-hue),0%,0%,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:hsla(var(--md-hue),0%,0%,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:hsla(var(--md-hue),15%,9%,1);--md-primary-fg-color--light:hsla(var(--md-hue),15%,9%,0.54);--md-primary-fg-color--dark:hsla(var(--md-hue),15%,9%,1);--md-primary-bg-color:hsla(var(--md-hue),15%,100%,1);--md-primary-bg-color--light:hsla(var(--md-hue),15%,100%,0.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}[data-md-color-primary=black] .md-header{background-color:hsla(var(--md-hue),15%,9%,1)}@media screen and (max-width:59.984375em){[data-md-color-primary=black] .md-nav__source{background-color:hsla(var(--md-hue),15%,11%,.87)}}@media screen and (max-width:76.234375em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:hsla(var(--md-hue),15%,9%,1)}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:hsla(var(--md-hue),15%,9%,1)}}
\ No newline at end of file
{"version":3,"sources":["src/templates/assets/stylesheets/palette/_scheme.scss","../../../../src/templates/assets/stylesheets/palette.scss","src/templates/assets/stylesheets/palette/_accent.scss","src/templates/assets/stylesheets/palette/_primary.scss","src/templates/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"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","file":"palette.css"}
\ No newline at end of file
@media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:#4287ff26;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:#4287ff4d;--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem #0003,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000004d,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:#ffffffb3;--md-primary-fg-color--dark:#00000012;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a;--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:#fff}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:#00000012}[data-md-color-primary=white] .md-search__form:hover{background-color:#00000052}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:#000000de}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:#0000008a;--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:#fff}[data-md-color-primary=black] .md-header{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:#000000de}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:#ffffff1f}[data-md-color-primary=black] .md-search__form:hover{background-color:#ffffff4d}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}}
\ No newline at end of file
{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAKE,YAAA,CAGA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,gDAAA,CACA,gDAAA,CAGA,4BAAA,CACA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,iCAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,yDAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,wDAAA,CAGA,0DAAA,CAKA,8DAAA,CAKA,0DCxDF,CD6DE,kHAEE,YC3DJ,CD+DE,gHAEE,eC7DJ,CDoFE,yDACE,4BClFJ,CDiFE,2DACE,4BC/EJ,CD8EE,gEACE,4BC5EJ,CD2EE,2DACE,4BCzEJ,CDwEE,yDACE,4BCtEJ,CDqEE,0DACE,4BCnEJ,CDkEE,gEACE,4BChEJ,CD+DE,0DACE,4BC7DJ,CD4DE,2OACE,4BCjDJ,CDwDA,+FAGE,iCCtDF,CACF,CCjDE,2BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD6CN,CCvDE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDoDN,CC9DE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD2DN,CCrEE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDkEN,CC5EE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDyEN,CCnFE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDgFN,CC1FE,kCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDuFN,CCjGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD8FN,CCxGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDqGN,CC/GE,6BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD4GN,CCtHE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDmHN,CC7HE,4BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD6HN,CCpIE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDoIN,CC3IE,6BACE,yBAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD2IN,CClJE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDkJN,CCzJE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDsJN,CE3JE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwJN,CEnKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgKN,CE3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwKN,CEnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgLN,CE3LE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwLN,CEnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgMN,CE3ME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwMN,CEnNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgNN,CE3NE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwNN,CEnOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgON,CE3OE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwON,CEnPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmPN,CE3PE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2PN,CEnQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmQN,CE3QE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2QN,CEnRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgRN,CE3RE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwRN,CEnSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BF4RN,CE5SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BFqSN,CEtRE,sEACE,4BFyRJ,CE1RE,+DACE,4BF6RJ,CE9RE,iEACE,4BFiSJ,CElSE,gEACE,4BFqSJ,CEtSE,iEACE,4BFySJ,CEhSA,8BACE,0BAAA,CACA,sCAAA,CACA,qCAAA,CACA,+BAAA,CACA,sCAAA,CAGA,4BFiSF,CE9RE,yCACE,+BFgSJ,CE7RI,kDAEE,0CAAA,CACA,sCAAA,CAFA,UFiSN,CG7MI,mCD1EA,+CACE,0BF0RJ,CEvRI,qDACE,0BFyRN,CEpRE,iEACE,eFsRJ,CACF,CGxNI,sCDvDA,uCACE,oCFkRJ,CACF,CEzQA,8BACE,0BAAA,CACA,sCAAA,CACA,gCAAA,CACA,0BAAA,CACA,sCAAA,CAGA,4BF0QF,CEvQE,yCACE,+BFyQJ,CEtQI,kDAEE,0CAAA,CACA,sCAAA,CAFA,UF0QN,CEnQE,yCACE,qBFqQJ,CG9NI,wCDhCA,8CACE,0BFiQJ,CACF,CGtPI,mCDJA,+CACE,0BF6PJ,CE1PI,qDACE,0BF4PN,CACF,CG3OI,wCDTA,iFACE,qBFuPJ,CACF,CGnQI,sCDmBA,uCACE,qBFmPJ,CACF","file":"palette.css"}
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../validationPlan/" rel="prev"/>
<link href="../requirements/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Fundamentals - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,63 +153,88 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="true" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Fundamentals
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
Fundamentals
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -218,14 +243,18 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#terms-and-definitions">
Terms and definitions
</a>
<span class="md-ellipsis">
Terms and definitions
</span>
</a>
<nav aria-label="Terms and definitions" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#additional-defintions">
Additional defintions
</a>
<span class="md-ellipsis">
Additional defintions
</span>
</a>
</li>
</ul>
</nav>
......@@ -235,140 +264,192 @@
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -395,14 +476,18 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#terms-and-definitions">
Terms and definitions
</a>
<span class="md-ellipsis">
Terms and definitions
</span>
</a>
<nav aria-label="Terms and definitions" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#additional-defintions">
Additional defintions
</a>
<span class="md-ellipsis">
Additional defintions
</span>
</a>
</li>
</ul>
</nav>
......@@ -444,6 +529,7 @@
</blockquote>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -464,8 +550,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../requiredSoftware/" rel="prev"/>
<link href="../userInterface/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>First Start - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,36 +153,46 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
First Start
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
First Start
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -191,175 +201,244 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#start">
Start
</a>
<span class="md-ellipsis">
Start
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -386,8 +465,10 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#start">
Start
</a>
<span class="md-ellipsis">
Start
</span>
</a>
</li>
</ul>
</nav>
......@@ -415,6 +496,7 @@
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -435,8 +517,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../schemaRequirements/" rel="prev"/>
<link href="../semantic/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Geometric Requirements - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,78 +153,109 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="true" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Geometric Requirements
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
Geometric Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -233,168 +264,230 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#error-codes-for-geometric-errors">
Error codes for geometric errors
</a>
<span class="md-ellipsis">
Error codes for geometric errors
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#vertex-requirement">
Vertex Requirement
</a>
<span class="md-ellipsis">
Vertex Requirement
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#linear-ring">
Linear Ring
</a>
<span class="md-ellipsis">
Linear Ring
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#polygon">
Polygon
</a>
<span class="md-ellipsis">
Polygon
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#solid-shell">
Solid / Shell
</a>
<span class="md-ellipsis">
Solid / Shell
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#parameter-overview">
Parameter Overview
</a>
<span class="md-ellipsis">
Parameter Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dependency-tree">
Dependency tree
</a>
<span class="md-ellipsis">
Dependency tree
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#multisurface-and-solid-geometry">
Multisurface and Solid geometry
</a>
<span class="md-ellipsis">
Multisurface and Solid geometry
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -421,43 +514,59 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#error-codes-for-geometric-errors">
Error codes for geometric errors
</a>
<span class="md-ellipsis">
Error codes for geometric errors
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#vertex-requirement">
Vertex Requirement
</a>
<span class="md-ellipsis">
Vertex Requirement
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#linear-ring">
Linear Ring
</a>
<span class="md-ellipsis">
Linear Ring
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#polygon">
Polygon
</a>
<span class="md-ellipsis">
Polygon
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#solid-shell">
Solid / Shell
</a>
<span class="md-ellipsis">
Solid / Shell
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#parameter-overview">
Parameter Overview
</a>
<span class="md-ellipsis">
Parameter Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#dependency-tree">
Dependency tree
</a>
<span class="md-ellipsis">
Dependency tree
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#multisurface-and-solid-geometry">
Multisurface and Solid geometry
</a>
<span class="md-ellipsis">
Multisurface and Solid geometry
</span>
</a>
</li>
</ul>
</nav>
......@@ -783,6 +892,7 @@ if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s
</table>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -803,8 +913,8 @@ if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
<script>mermaid.initialize({});</script></body>
</html>
\ No newline at end of file
......@@ -8,18 +8,17 @@
<link href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/" rel="canonical"/>
<link href="requiredSoftware/" rel="next"/>
<link href="img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>About - CityDoctor2</title>
<link href="assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -30,13 +29,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href="." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -55,38 +54,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="." hreflang="en">
English
</a>
<a class="md-select__link" href="None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -94,17 +94,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -118,7 +118,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -136,14 +136,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href="." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -152,196 +152,271 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<a class="md-nav__link md-nav__link--active" href=".">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -389,6 +464,7 @@ At the moment CityDoctor is developed in the project <a href="https://transfer.h
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -409,8 +485,8 @@ At the moment CityDoctor is developed in the project <a href="https://transfer.h
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": ["content.code.annotate", "navigation.sections"], "search": "assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": ".", "features": ["content.code.annotate", "navigation.sections"], "search": "assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href=".." rel="prev"/>
<link href="../firstRun/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Installation - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,31 +153,39 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Installation
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -186,28 +194,36 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-from-3130">
Versions from 3.13.0
</a>
<span class="md-ellipsis">
Versions from 3.13.0
</span>
</a>
<nav aria-label="Versions from 3.13.0" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#release-versions">
Release Versions
</a>
<span class="md-ellipsis">
Release Versions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-until-312x">
Versions until 3.12.x
</a>
<span class="md-ellipsis">
Versions until 3.12.x
</span>
</a>
<nav aria-label="Versions until 3.12.x" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#java">
Java
</a>
<span class="md-ellipsis">
Java
</span>
</a>
</li>
</ul>
</nav>
......@@ -217,172 +233,241 @@
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -409,28 +494,36 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-from-3130">
Versions from 3.13.0
</a>
<span class="md-ellipsis">
Versions from 3.13.0
</span>
</a>
<nav aria-label="Versions from 3.13.0" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#release-versions">
Release Versions
</a>
<span class="md-ellipsis">
Release Versions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-until-312x">
Versions until 3.12.x
</a>
<span class="md-ellipsis">
Versions until 3.12.x
</span>
</a>
<nav aria-label="Versions until 3.12.x" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#java">
Java
</a>
<span class="md-ellipsis">
Java
</span>
</a>
</li>
</ul>
</nav>
......@@ -503,6 +596,7 @@ Java runtimes of the Liberica distribution are included in different versions. <
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -523,8 +617,8 @@ Java runtimes of the Liberica distribution are included in different versions. <
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../basic/" rel="prev"/>
<link href="../schemaRequirements/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Overview - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,196 +153,271 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="true" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<a class="md-nav__link md-nav__link--active" href="./">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -379,6 +454,7 @@ A distinction is made between:</p>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -399,8 +475,8 @@ A distinction is made between:</p>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../requirements/" rel="prev"/>
<link href="../geometric/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Schema Requirements - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,73 +153,102 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="true" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Schema Requirements
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
Schema Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -228,19 +257,25 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#r_sc_schema_validation">
R_SC_SCHEMA_VALIDATION
</a>
<span class="md-ellipsis">
R_SC_SCHEMA_VALIDATION
</span>
</a>
<nav aria-label="R_SC_SCHEMA_VALIDATION" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#anforderung">
Anforderung
</a>
<span class="md-ellipsis">
Anforderung
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#prufung">
Prüfung
</a>
<span class="md-ellipsis">
Prüfung
</span>
</a>
</li>
</ul>
</nav>
......@@ -250,130 +285,178 @@
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -400,19 +483,25 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#r_sc_schema_validation">
R_SC_SCHEMA_VALIDATION
</a>
<span class="md-ellipsis">
R_SC_SCHEMA_VALIDATION
</span>
</a>
<nav aria-label="R_SC_SCHEMA_VALIDATION" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#anforderung">
Anforderung
</a>
<span class="md-ellipsis">
Anforderung
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#prufung">
Prüfung
</a>
<span class="md-ellipsis">
Prüfung
</span>
</a>
</li>
</ul>
</nav>
......@@ -474,6 +563,7 @@
</table>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -494,8 +584,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"CityDoctor2","text":"<p>Development of a automatic repair system for virtual city models </p> <p>CityDoctor2 is a quality check software for 3D city models in CityGML format. CityDoctor can read CityGML 1/2 documents and since version 3.12 can also read CityGML 3 with restrictions. All check results can be output in xml or pdf form. Additionally CityDoctor implements the QualityADE to save test results directly into CityGML.</p> <p></p>"},{"location":"#licence-versions","title":"Licence / Versions","text":""},{"location":"#citydoctorvalidation","title":"CityDoctorValidation","text":"<p>The validation part of CityDoctor is freely available and open source</p>"},{"location":"#citydoctorgui","title":"CityDoctorGUI","text":"<p>The graphical interface is freely available and open source</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair is freely available and open source. Mail to: </p>"},{"location":"#projekts","title":"Projekts","text":"<p>CityDoctor was developed in several projects. At the moment CityDoctor is developed in the project UDigitDoctor.</p> <p>Past project:</p> <ul> <li>CityDoctor2</li> </ul>"},{"location":"R_GE_MS/","title":"R_GE_MS","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001</p>"},{"location":"R_GE_P_HOLE_OUTSIDE/","title":"R_GE_P_HOLE_OUTSIDE","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004</p>"},{"location":"R_GE_P_INNER_RINGS_NESTED/","title":"R_GE_P_INNER_RINGS_NESTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005</p>"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/","title":"R_GE_P_INTERIOR_DISCONNECTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003 </p>"},{"location":"R_GE_P_INTERSECTING_RINGS/","title":"R_GE_P_INTERSECTING_RINGS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001</p>"},{"location":"R_GE_P_NON_PLANAR/","title":"R_GE_P_NON_PLANAR","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002 </p>"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/","title":"R_GE_P_ORIENTATION_RINGS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006 </p>"},{"location":"R_GE_R_COLLAPSED_TO_LINE/","title":"R_GE_R_COLLAPSED_TO_LINE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005</p>"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/","title":"R_GE_R_CONSECUTIVE_POINTS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002</p>"},{"location":"R_GE_R_NOT_CLOSED/","title":"R_GE_R_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003</p>"},{"location":"R_GE_R_SELF_INTERSECTION/","title":"R_GE_R_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004</p>"},{"location":"R_GE_R_TOO_FEW_POINTS/","title":"R_GE_R_TOO_FEW_POINTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001</p>"},{"location":"R_GE_SO/","title":"R_GE_SO","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009</p>"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/","title":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008</p>"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/","title":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005</p>"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/","title":"R_GE_S_NON_MANIFOLD_EDGE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004</p>"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/","title":"R_GE_S_NON_MANIFOLD_VERTEX","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003</p>"},{"location":"R_GE_S_NOT_CLOSED/","title":"R_GE_S_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002</p>"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/","title":"R_GE_S_POLYGON_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007</p>"},{"location":"R_GE_S_SELF_INTERSECTION/","title":"R_GE_S_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006</p>"},{"location":"R_GE_S_TOO_FEW_POLYGONS/","title":"R_GE_S_TOO_FEW_POLYGONS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001</p>"},{"location":"basic/","title":"Validation of 3D city models encoded in CityGML","text":""},{"location":"basic/#terms-and-definitions","title":"Terms and definitions","text":"<p>as defined in CityGML Quality Interoperability Experiment, chapter 3</p> <p>Validation</p> <p>Process of validating a CityGML data set against a specified set of requirements. A valid data set is conformant to these requirements.</p> <p>Requirements</p> <p>Rules and restrictions to define data structure and content unambiguously. Requirements can be derived from the CityGML Standard document or be defined separately as refinement of the CityGML standard to avoid ambiguities of the standard and/or specify further requirements (user/application dependent).</p> <p>Check</p> <p>Algorithmic implementation to check if a requirement is met in a validation software. </p> <p>Error</p> <p>Result of a check in case of non-conformance.</p> <p>Validation plan</p> <p>Structured list of requirements, usually depending on use case.</p>"},{"location":"basic/#additional-defintions","title":"Additional defintions","text":"<p>XSD valid</p> <p>A CityGML is conform to the schema or XSD valid if it validates against the CityGML XML schema.</p>"},{"location":"firstRun/","title":"First run","text":""},{"location":"firstRun/#start","title":"Start","text":"<p>After extracting the zip file the file structure should be similar to the example image, depending on the version (GUI or batch). </p> <p>To start CityDoctor the start.bat or start.sh should be used. It is possible to use the command in your own start scripts as needed.</p> <p>The .bat/.sh file only contains the following command (example for windows and the GUI version):</p> <pre><code>java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter\n</code></pre> <p>Note</p> <p>The exact command has changed over the development history of CityDoctor.</p> <p>For the batch version the command is similar and can be adapted for other operating systems.</p> <p>Note</p> <p>The command can also be used for Linux and Mac but the \";\" has to be replaced by \":\".</p>"},{"location":"geometric/","title":"Geometry Requirements","text":""},{"location":"geometric/#error-codes-for-geometric-errors","title":"Error codes for geometric errors","text":"<p>as defined in the CityGML Quality Interoperability Experiment, chapter 7.5.</p> <p>Note</p> <p>The requirements were renamed in CityDoctor to be more human readable. The were renamed according to the error codes.</p> <p>All the geometric errors are in the \"GE\" domain. Also, since the geometric validation is performed at 3 different levels (based on the primitives), the requirements also contain the level:</p> <ul> <li>Ring: R</li> <li>Polygon: P</li> <li>Shell: S</li> </ul> <p>Error codes follow the same system as the requirements mentioned fundamentals. A violation of each respective data quality requirement should result in an error which must be reported with an error code according to the requirement ID. For each error code, extra information can (and should) be returned. For instance: if a ring is not closed (GE_R_NOT_CLOSED) then the ID of the ring (e.g., its position (first, second..) in the polygon) should be returned; if a polygon is not planar (GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE) then the ID of the polygon and the max. deviation from the reference plane should be returned; or if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s) should be returned.</p>"},{"location":"geometric/#vertex-requirement","title":"Vertex Requirement","text":"<p>Vertices A and B are the same if the euclidean distance between them is smaller than (minVertexDistance). It is also used to check whether a point is touching an edge. If a point is within minVertexDistance distance to an edge it is considered touching. This parameter is used in multiple checks with the same value:</p> <ul> <li>R_GE_R_CONSECUTIVE_POINTS_SAME</li> <li>R_GE_R_NOT_CLOSED</li> <li>R_GE_R_SELF_INTERSECTION</li> <li>R_GE_P_INTERIOR_DISCONNECTED</li> </ul> <p>The following requirements are defined for the three respective geometric levels (adopted from Ledoux (2013)):</p>"},{"location":"geometric/#linear-ring","title":"Linear Ring","text":"Requirement ID Description Error code Known checks R_GE_R_TOO_FEW_POINTS too few points GE_R_TOO_FEW_POINTS C_GE_R_TOO_FEW_POINTS R_GE_R_CONSECUTIVE_POINTS_SAME 2 consecutive points are the same GE_R_CONCECUTIVE_POINTS_SAME C_GE_R_CONCECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT R_GE_R_NOT_CLOSED first-last points are not the same GE_R_NOT_CLOSED C_GE_R_NOT_CLOSED R_GE_R_SELF_INTERSECTION self-intersects, i.e., a bowtie GE_R_SELF_INTERSECTION C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT R_GE_R_COLLAPSED_TO_LINE Currently not in use as it is redundant with R_GE_R_SELF_INTERSECTION is point or line GE_R_COLLAPSED_TO_LINE C_GE_R_COLLAPSED_TO_LINE R_GE_R_ALL Container for: R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION -- --"},{"location":"geometric/#polygon","title":"Polygon","text":"Requirement ID Description Error code Known checks R_GE_P_INTERSECTING_RINGS 2+ rings intersect GE_P_INTERSECTING_RINGS C_GE_P_INTERSECTING_RINGS R_GE_P_NON_PLANAR Non planar polygon, both distance and normal deviation GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION C_GE_P_NON_PLANAR R_GE_P_INTERIOR_DISCONNECTED interior is not connected GE_P_INTERIOR_DISCONNECTED C_GE_P_INTERIOR_DISCONNECTED R_GE_P_HOLE_OUTSIDE 1 or more interior rings are located outside the exterior ring GE_P_HOLE_OUTSIDE C_GE_P_HOLE_OUTSIDE R_GE_P_INNER_RINGS_NESTED interior ring is located inside other GE_P_INNER_RINGS_NESTED C_GE_P_INNER_RINGS_NESTED R_GE_P_ORIENTATION_RINGS_SAME exterior and interior rings have same orientation GE_P_ORIENTATION_RINGS_SAME C_GE_P_ORIENTATION_RINGS_SAME R_GE_P_ALL Container for: R_GE_P_INTERSECTING_RINGS, R_GE_P_NON_PLANAR, R_GE_P_INTERIOR_DISCONNECTED, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_ORIENTATION_RINGS_SAME, R_GE_R_ALL -- --"},{"location":"geometric/#solid-shell","title":"Solid / Shell","text":"Requirement ID Description Error code Known checks R_GE_S_TOO_FEW_POLYGONS &lt;4 polygons GE_S_TOO_FEW_POLYGONS C_GE_S_TOO_FEW_POLYGONS R_GE_S_NOT_CLOSED there is 1+ hole(s) on the surface GE_S_NOT_CLOSED C_GE_S_NOT_CLOSED R_GE_S_NON_MANIFOLD_VERTEX Each shell must be simple GE_S_NON_MANIFOLD_VERTEX C_GE_S_NON_MANIFOLD_VERTEX R_GE_S_NON_MANIFOLD_EDGE Each edge of a shell should have exactly 2 incident polygons. GE_S_NON_MANIFOLD_EDGE C_GE_S_NON_MANIFOLD_EDGE R_GE_S_MULTIPLE_CONNECTED_COMPONENTS 1+ polygons not connected to main shell GE_S_MULTIPLE_CONNECTED_COMPONENTS C_GE_S_MULTIPLE_CONNECTED_COMPONENTS R_GE_S_SELF_INTERSECTION Solid self intersects GE_S_SELF_INTERSECTION C_GE_S_SELF_INTERSECTION R_GE_S_POLYGON_WRONG_ORIENTATION orientation of a polygon not correct GE_S_POLYGON_WRONG_ORIENTATION C_GE_S_POLYGON_WRONG_ORIENTATION R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION normals all pointing in wrong direction GE_S_ALL_POLYGONS_WRONG_ORIENTATION C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION R_GE_S_ALL Container for: R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED, R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS, R_GE_S_SELF_INTERSECTION, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION -- --"},{"location":"geometric/#parameter-overview","title":"Parameter Overview","text":"Name Description Used in Unit minVertexDistance The minimum distance between two points before they are considered the same point R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION, R_GE_P_INTERIOR_DISCONNECTED Meter type Planar check type, can be distance, angle, both sein R_GE_P_NON_PLANAR - distanceTolerance Distance from the regression plane before a point is considered not in plane R_GE_P_NON_PLANAR Meter angleTolerance Difference in normal vectors before a plane is not considered planar R_GE_P_NON_PLANAR Radiant"},{"location":"geometric/#dependency-tree","title":"Dependency tree","text":"<p>This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.</p> <pre><code>graph TD;\n X0001[R_SC_SCHEMA_VALIDATION]\n R0001[R_GE_R_TOO_FEW_POINTS]\n R0002[R_GE_R_CONSECUTIVE_POINTS_SAME]\n R0003[R_GE_R_NOT_CLOSED]\n R0004[R_GE_R_SELF_INTERSECTION]\n P0001[R_GE_P_INTERSECTING_RINGS]\n P0002[R_GE_P_NON_PLANAR]\n P0003[R_GE_P_INTERIOR_DISCONNECTED]\n P0004[R_GE_P_HOLE_OUTSIDE]\n P0005[R_GE_P_INNER_RINGS_NESTED]\n P0006[R_GE_P_ORIENTATION_RINGS_SAME]\n\n S0001[R_GE_S_TOO_FEW_POLYGONS]\n S0002[R_GE_S_NOT_CLOSED]\n S0003[R_GE_S_NON_MANIFOLD_VERTEX]\n S0004[R_GE_S_NON_MANIFOLD_EDGE]\n S0005[R_GE_S_MULTIPLE_CONNECTED_COMPONENTS]\n S0006[R_GE_S_SELF_INTERSECTION]\n S0007[R_GE_S_POLYGON_WRONG_ORIENTATION]\n S0008[R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION]\n\n X0001--&gt;R0003;\n R0003--&gt;R0001;\n R0001--&gt;R0002;\n R0002--&gt;R0004;\n R0004--&gt;P0002;\n P0002--&gt;P0006;\n P0006--&gt;P0003;\n P0006--&gt;P0004;\n P0006--&gt;P0005;\n P0004--&gt;P0001;\n P0005--&gt;P0001;\n P0001--&gt;S0001;\n P0003--&gt;S0001;\n S0001--&gt;S0002;\n S0001--&gt;S0004;\n S0001--&gt;S0003;\n S0001--&gt;S0005;\n S0002--&gt;S0007;\n S0004--&gt;S0007;\n S0007--&gt;S0006;\n S0003--&gt;S0006;\n S0005--&gt;S0006;\n S0006--&gt;S0008; \n</code></pre>"},{"location":"geometric/#multisurface-and-solid-geometry","title":"Multisurface and Solid geometry","text":"<p>In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.</p> Requirement ID Description Dependencies Error code Known checks R_GE_MS valid multisurface geometry R_SC-SCHEMA-VALIDATION, R_GE_P_ALL -- -- R_GE_SO valid solid geometry R_SC-SCHEMA-VALIDATION, R_GE_S_ALL -- --"},{"location":"requiredSoftware/","title":"Required Software","text":""},{"location":"requiredSoftware/#versions-from-3130","title":"Versions from 3.13.0","text":"<p>Starting with version 3.13.0, a repository was created on the university's transfer portal, which will henceforth be used as a repository for finished releases: https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases</p> <p>The versions are divided there between CityDoctorValidation and CityDoctorGUI and under these folders there are the corresponding version folders.</p>"},{"location":"requiredSoftware/#release-versions","title":"Release Versions","text":"<p>For each CityDoctor variant (CityDoctorValidation or CityDoctorGUI) four different versions are provided for download. Java runtimes of the Liberica distribution are included in different versions. </p> Version Description CityDoctor*-no-runtime.zip This version does not include a runtime for Java. If you already have a Java version 17 installed on your PC use this. See Java CityDoctor*-win.zip Includes a Windows Java Runtime to run CityDoctor, no Java needs to be installed. CityDoctor*-lin.zip Includes a Linux Java Runtime to run CityDoctor CityDoctor*-mac.zip Includes a Mac Java Runtime to run CityDoctor"},{"location":"requiredSoftware/#versions-until-312x","title":"Versions until 3.12.x","text":"<p>CityDoctor can be downloaded from various sites. The most recent place is a gitlab repository. Alternatively, releases are also listed on the CityDoctor homepage of the BHT. There are always two versions:</p> <ul> <li>CityDoctorGUI-3.x.x.zip: This is the graphical interface including the checks. Suitable for the end user on a desktop PC.</li> <li>CityDoctorValidation-3.x.x.zip: This is the batch version suitable for integration into servers or other existing systems and has no graphical interface but works file-based as a process.</li> </ul> <p>Note</p> <p>There are sometimes special versions that have been created for testing different delivery options. Example: CityDoctorGUI-x.x.x-win.zip contains the JavaFX libraries so that a Java environment without JavaFX can also be used.</p>"},{"location":"requiredSoftware/#java","title":"Java","text":"<p>Before CityDoctor version 3.12.x Java 8 is required either as JDK or as JRE. From version 3.12.x Java 17 is required.</p> <p>Warning</p> <p>It is important that the installed Java version includes the JavaFX libraries. These are needed for the graphical user interface.</p> <p>The Liberica JRE oder JDK has proven itself for use with CityDoctor.</p> <p>Note</p> <p>The Liberica distribution is 100% free and open source.</p> <p>Note</p> <p>For the development with CityDoctor a JDK is required.</p>"},{"location":"requirements/","title":"Anforderungen und Pr\u00fcfungen f\u00fcr die Validierung von CityGML-Modellen","text":"<p>The requirements are the basic building blocks for a validation plan to validate CityGML models. For naming conventions and definitions, see fundamentals. </p> <p>A requirement can be validated by one or more checks. A check validates one or more requirements on a model. Each check can have preconditions. If these preconditions are not met, the check is not executed. A distinction is made between:</p> <ul> <li>Schema Requirements</li> <li>Geometry Requirements</li> <li>Semantic Requirements</li> </ul>"},{"location":"schemaRequirements/","title":"Schema Requirements","text":""},{"location":"schemaRequirements/#r_sc_schema_validation","title":"R_SC_SCHEMA_VALIDATION","text":""},{"location":"schemaRequirements/#anforderung","title":"Anforderung","text":"ID R_SC_SCHEMA_VALIDATION Description A basic requirement is that each CityGML document must be well defined and XSD valid. Error code SC-SCHEMA-NOT-VALID"},{"location":"schemaRequirements/#prufung","title":"Pr\u00fcfung","text":"ID SC_SCHEMA_VALIDATION Anforderungs ID R_SC_SCHEMA_VALIDATION Requirements none Description Tools to perform XSD validation are available and give reliable results Error code SC_SCHEMA_NOT_VALID"},{"location":"semantic/","title":"Semantic Requirements","text":"<p>The semantic requirements are mostly attribute based. This results in 3 error states for an attribute:</p> <ul> <li>SE_ATTRIBUTE_WRONG_VALUE: If an attribute has a wrong value.</li> <li>SE_ATTRIBUTE_MISSING: If an attribute is missing but should be present.</li> <li>SE_ATTRIBUTE_INVALID: If an attribute is present but forbidden.</li> </ul>"},{"location":"semantic/#schematron","title":"Schematron","text":"<p>In CityDoctor wurde das XML Validierungssystem Schematron integriert um flexibel Attributpr\u00fcfungen anzupassen und zu unterst\u00fctzen. </p> <p>Hier ist ein Beispiel f\u00fcr eine Schematron Datei die CityDoctor integrieren kann:</p>"},{"location":"semantic/#citydoctor-3130","title":"CityDoctor &gt;= 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n\n</code></pre>"},{"location":"semantic/#citydoctor-3130_1","title":"CityDoctor &lt; 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n</code></pre> <p>Diese Datei pr\u00fcft, dass alle Buildings in sich selbst oder in einem ihrer Unterelementen ein Solid beliebigen LODSs vorhanden ist. Au\u00dferdem stellt die Datei sicher, dass jedes BuildingPart ein Solid enth\u00e4lt. Wenn dies nicht der Fall ist wird eine Fehlermeldung ausgegeben. Die Fehlermeldung ist dabei so formattiert, dass CityDoctor sie interpretieren und in das interne Datenmodell einbinden kann.</p>"},{"location":"semantic/#fehlerformat","title":"Fehlerformat","text":"<p>Das Fehlerformat ist ein CSV-Format mit || als Trennzeichen</p> <pre><code>parent id||child id||error code||error type||is generic attribute\n</code></pre> <p>Die Fehlermeldung besteht aus den folgenden Teilen:</p> <ul> <li>Die <code>parent id</code> ist die gml id des obersten Elements z.B. Building oder Bridge. </li> <li>Falls der Fehler in einem Unterelement aufgetreten ist so kann diese ID in dem Feld f\u00fcr die <code>child id</code> eingetragen werden.</li> <li>Im Feld <code>error type</code> ist einer der 3 Fehlertypen einzutragen: <code>SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID</code>.</li> </ul> <p>note Nur in CityDoctor &lt; 3.13.0: * Um ein generisches Attribut mit dem Namen <code>measuredHeight</code> von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen <code>true</code> einzutragen wenn es sich um ein generisches Attribut handelt ansonsten <code>false</code>. </p>"},{"location":"udt_about/","title":"UDigiT-Doctor","text":"<p>Expansion of CityDoctor2 to enable integration with urban digital twins</p> <p></p> <p>The UDigiT-Doctor project continues the development of CityDoctor2, with the goal of enabling the validation and repair of urban digital twins with CityDoctor.</p>"},{"location":"udt_about/#objectives","title":"Objectives","text":"<p>In summary, the following scientific and technical objectives can be derived to allow for a transfer of the validation functionality of CityDoctor to urban digital twins:</p> <ul> <li>Design of an internal data model and methods for the creation of an integrated complete model. </li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data. </li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ul>"},{"location":"udt_about/#license","title":"License","text":"<p>UDigiT-Doctor, being an update of CityDoctor2, will continue to be released under the LGPL as FOSS.</p>"},{"location":"udt_about/#releases","title":"Releases","text":"<p>Releases of UDigiT-Doctor will be made available via the CityDoctor2 GitLab-repository.</p>"},{"location":"udt_about/#project-information","title":"Project Information","text":"<p>Project Duration: April 01, 2024 - July 01, 2027</p> <p>Project Website: UDigiT-Doctor: Hochschule f\u00fcr Technik Stuttgart UDigiT-Doctor: Berliner Hochschule f\u00fcr Technik</p> <p>Project Lead: Prof. Dr.-Ing. Volker Coors</p> <p>Collaboration Partner: Prof. Dr. Margitta Pries</p>"},{"location":"udt_about/#partners","title":"Partners","text":"<p>Cooperation Partners: Robert Bosch GmbH Geoplex GIS GmbH M.O.S.S. Computer Grafik Systeme GmbH LandPlan OS GmbH Point Cloud Technology GmbH virtualcitysystems GmbH</p> <p>Associative Partners: Open Geospatial Consortium Stadt Stuttgart Stadt Leverkusen </p> <p>Funding: Bundesamt f\u00fcr Bildung und Forschung</p> <p>Promoter: VDI Technologiezentrum </p>"},{"location":"udt_req_data_model/","title":"Requirements of the internal data model","text":""},{"location":"udt_req_data_model/#urban-digital-twin-data","title":"Urban digital twin data","text":"<p>In order to be able to validate and repair the models of urban digital twins, CityDoctor needs the capability to access their data.</p>"},{"location":"udt_req_data_model/#reference-model","title":"Reference model","text":"<p>While CityDoctor is capable of repairing geometrical errors, the repaired model can contain discrepancies with the real object. This is expected, since CityDoctor purely operates via model data. To alleviate this, functionalities for the usage of a reference model are desired. The reference model would allow CityDoctor to determine the quality of a repair step, enabling the implementation of more sophisticated healing-routines.</p>"},{"location":"udt_req_data_model/#data-format-support","title":"Data format support","text":"<p>The aforementioned requirements revolve around data that is not compatible with, or available as, CityGML. Therefore, to </p>"},{"location":"udt_req_overview/","title":"Requirements of UDigiT-Doctor","text":"<ol> <li>Design of an internal data model and methods for the creation of an integrated complete model.</li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data.</li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ol> Specific requirements of Applicable to requirement nr. Data model 1., 2., 3. Topological consistency 2., 3. Semantical validation 2., 4."},{"location":"udt_terms/","title":"Validation of urban digital twins","text":""},{"location":"udt_terms/#terms-and-definitions","title":"Terms and definitions","text":"<p>See also: Terms and definitions of CityDoctor2</p> <p>Urban digital twin</p> <p>An urban digital twin is a virtual, representative model of a real building. Digital twins are useful for various tasks, e.g. the simulation of certain processes. They also serve as a central access point to information and data of the building, including access to installed sensors and building management systems.</p>"},{"location":"userInterface/","title":"User interface","text":""},{"location":"userInterface/#citydoctor","title":"CityDoctor","text":"<p>In the upper bar the following buttons are in order:</p> <ul> <li>Load: Opens the dialog for loading a CityGML file</li> <li>Validation: Opens the dialog to check a loaded CityGML</li> <li>Validation results: Opens the dialog for writing a test protocol in xml or pdf form</li> <li>Grid: Shows/hides the grid instead of filled polygons</li> <li>Backsides: Shows/hides backs of polygons</li> <li>Global View: Loads all elements of a CityGML into the view</li> <li>LODs: Turns individual LODs on or off from the view</li> <li>Save: Saves a CityGML file back, if the file was checked the QualityADE is written too.</li> <li>About: Opens the dialog with information about the project CityDoctor2</li> <li>View: Switches different views. There is only one for the validation part.</li> <li>Language: Here you can set the language (German/English)</li> </ul> <p>Warning</p> <p>Displaying the Global View can cause crashes with large CityGML files (&gt; 100mb depending on the system). The display may take a short time.</p>"},{"location":"userInterface/#load","title":"Load","text":"<p>The Load button opens the dialog for loading a CityGML file.</p> <p></p> <p>In the file bar a file path can be entered or selected via the Select button.</p> <p>In addition, other settings for reading the file can be specified.</p> <ul> <li>NumberOfRoundingPlaces: To how many decimal places are the read-in values rounded?</li> <li>XML-Validierung: Performs an XML validation. Errors are detected directly during the import and the import is aborted.</li> <li>Low Memory Consumption Mode : Saves RAM to allow larger files in the GUI. Slight performance costs during the validation process.</li> </ul> <p>When loading, the progress is approximately represented by the loading bar.</p> <p>Note</p> <p>Files can also be dragged and dropped directly from the file manager into the GUI without using the load dialog. The default values are assumed (8 decimal places, no XML validation).</p> <p>After loading a CityGML file, the elements are displayed in the individual tabs. Selecting an element will display it in the view.</p> <p></p> <p>Note</p> <p>By selecting the top element of a tab, all elements within this tab are displayed. As the above warning states, larger amounts of data will cause crashes.</p>"},{"location":"userInterface/#validation","title":"Validation","text":"<p>The validation plan can be customized in the check dialog. In addition to the available checks, the global parameters are also displayed here.</p> <p>The parameters can be changed with a double click in the value column. The unit is fixed.</p> <p>Note</p> <p>The numberOfRoundingPlaces parameter cannot be changed. It was set when the file was loaded.</p> <p>If checks should not be executed, they can be deactivated in the Active column.</p> <p>Warning</p> <p>If checks are disabled but other active checks need them as dependencies, they will be re-enabled during the check to ensure stability. See Requirements.</p> <p>In the Schematron file field, a path to a Schematron file can be entered. In this file flexible rules for the semantic requirements can be defined. See Semantic Requirements</p> <p>The test plan can be saved and loaded via the two buttons at the top right.</p> <p>After the check, elements with errors are colored red and elements without errors are colored green. When selecting an element that contains errors, the errors are displayed in the lower tab Errors. There you can select the error to display it in CityDoctor and get more information.</p> <p></p> <p>The elements can be filtered with the dropdown menu to show only faulty elements.</p>"},{"location":"userInterface/#validation-reports","title":"Validation reports","text":"<p>In this dialog there is again an overview of the errors in image form and the possibility to write an xml or pdf report.</p> <p></p>"},{"location":"validationPlan/","title":"Validation Plan","text":"<p>the validation plan for CityDoctor is specified in YAML.</p> <p>For version 3.12.x and later, an example looks like this:</p> <pre><code>globalParameters:\n numberOfRoundingPlaces: 8\n # in m\n minVertexDistance: 0.0001\n schematronPath: 'checkForSolid.xml'\nuseStreaming: true # (1)!\nrequirements:\n R_GE_R_TOO_FEW_POINTS:\n enabled: true\n R_GE_R_NOT_CLOSED:\n enabled: true\n R_GE_R_CONSECUTIVE_POINTS_SAME:\n enabled: true\n R_GE_R_SELF_INTERSECTION:\n enabled: true\n R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:\n enabled: true\n R_GE_P_INTERIOR_DISCONNECTED:\n enabled: true\n R_GE_P_INTERSECTING_RINGS:\n enabled: true\n R_GE_P_NON_PLANAR:\n enabled: true\n parameters:\n # one of (\"distance\", \"angle\", \"both\")\n type: distance\n # in m\n distanceTolerance: 0.01\n # in degree\n angleTolerance: 1\n R_GE_P_HOLE_OUTSIDE:\n enabled: true\n R_GE_P_ORIENTATION_RINGS_SAME:\n enabled: true\n R_GE_P_INNER_RINGS_NESTED:\n enabled: true\n R_GE_S_TOO_FEW_POLYGONS:\n enabled: true\n R_GE_S_NOT_CLOSED:\n enabled: true\n R_GE_S_NON_MANIFOLD_EDGE:\n enabled: true\n R_GE_S_POLYGON_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_NON_MANIFOLD_VERTEX:\n enabled: true\n R_GE_S_SELF_INTERSECTION:\n enabled: true\n R_SE_BS_IS_WALL:\n enabled: false\n parameters:\n lowerAngle: '45'\n upperAngle: '135'\n R_SE_BS_IS_FLOOR:\n enabled: false\n R_SE_BS_GROUND_UNFRAGMENTED:\n enabled: false\n R_SE_BS_IS_GROUND:\n enabled: false\n R_SE_BS_IS_CEILING:\n enabled: false\n</code></pre> <ol> <li>The parameter <code>useStreaming</code> is a switch to read a file piece by piece instead of reading the complete file before the check takes place. With this setting also files &gt; 2GB can be checked without large RAM requirements.</li> </ol> <p>In the validation plan you will find the same settings that are listed in the graphical user interface.</p> <p>All requirements that are to be checked are listed under requirements. The semantic checks are deactivated by default. </p>"}]}
\ No newline at end of file
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"CityDoctor2","text":"<p>Development of a automatic repair system for virtual city models </p> <p>CityDoctor2 is a quality check software for 3D city models in CityGML format. CityDoctor can read CityGML 1/2 documents and since version 3.12 can also read CityGML 3 with restrictions. All check results can be output in xml or pdf form. Additionally CityDoctor implements the QualityADE to save test results directly into CityGML.</p> <p></p>"},{"location":"#licence-versions","title":"Licence / Versions","text":""},{"location":"#citydoctorvalidation","title":"CityDoctorValidation","text":"<p>The validation part of CityDoctor is freely available and open source</p>"},{"location":"#citydoctorgui","title":"CityDoctorGUI","text":"<p>The graphical interface is freely available and open source</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair is freely available and open source. Mail to: </p>"},{"location":"#projekts","title":"Projekts","text":"<p>CityDoctor was developed in several projects. At the moment CityDoctor is developed in the project UDigitDoctor.</p> <p>Past project:</p> <ul> <li>CityDoctor2</li> </ul>"},{"location":"R_GE_MS/","title":"R_GE_MS","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001</p>"},{"location":"R_GE_P_HOLE_OUTSIDE/","title":"R_GE_P_HOLE_OUTSIDE","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004</p>"},{"location":"R_GE_P_INNER_RINGS_NESTED/","title":"R_GE_P_INNER_RINGS_NESTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005</p>"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/","title":"R_GE_P_INTERIOR_DISCONNECTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003 </p>"},{"location":"R_GE_P_INTERSECTING_RINGS/","title":"R_GE_P_INTERSECTING_RINGS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001</p>"},{"location":"R_GE_P_NON_PLANAR/","title":"R_GE_P_NON_PLANAR","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002 </p>"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/","title":"R_GE_P_ORIENTATION_RINGS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006 </p>"},{"location":"R_GE_R_COLLAPSED_TO_LINE/","title":"R_GE_R_COLLAPSED_TO_LINE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005</p>"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/","title":"R_GE_R_CONSECUTIVE_POINTS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002</p>"},{"location":"R_GE_R_NOT_CLOSED/","title":"R_GE_R_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003</p>"},{"location":"R_GE_R_SELF_INTERSECTION/","title":"R_GE_R_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004</p>"},{"location":"R_GE_R_TOO_FEW_POINTS/","title":"R_GE_R_TOO_FEW_POINTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001</p>"},{"location":"R_GE_SO/","title":"R_GE_SO","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009</p>"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/","title":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008</p>"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/","title":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005</p>"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/","title":"R_GE_S_NON_MANIFOLD_EDGE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004</p>"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/","title":"R_GE_S_NON_MANIFOLD_VERTEX","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003</p>"},{"location":"R_GE_S_NOT_CLOSED/","title":"R_GE_S_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002</p>"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/","title":"R_GE_S_POLYGON_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007</p>"},{"location":"R_GE_S_SELF_INTERSECTION/","title":"R_GE_S_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006</p>"},{"location":"R_GE_S_TOO_FEW_POLYGONS/","title":"R_GE_S_TOO_FEW_POLYGONS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001</p>"},{"location":"basic/","title":"Validation of 3D city models encoded in CityGML","text":""},{"location":"basic/#terms-and-definitions","title":"Terms and definitions","text":"<p>as defined in CityGML Quality Interoperability Experiment, chapter 3</p> <p>Validation</p> <p>Process of validating a CityGML data set against a specified set of requirements. A valid data set is conformant to these requirements.</p> <p>Requirements</p> <p>Rules and restrictions to define data structure and content unambiguously. Requirements can be derived from the CityGML Standard document or be defined separately as refinement of the CityGML standard to avoid ambiguities of the standard and/or specify further requirements (user/application dependent).</p> <p>Check</p> <p>Algorithmic implementation to check if a requirement is met in a validation software. </p> <p>Error</p> <p>Result of a check in case of non-conformance.</p> <p>Validation plan</p> <p>Structured list of requirements, usually depending on use case.</p>"},{"location":"basic/#additional-defintions","title":"Additional defintions","text":"<p>XSD valid</p> <p>A CityGML is conform to the schema or XSD valid if it validates against the CityGML XML schema.</p>"},{"location":"firstRun/","title":"First run","text":""},{"location":"firstRun/#start","title":"Start","text":"<p>After extracting the zip file the file structure should be similar to the example image, depending on the version (GUI or batch). </p> <p>To start CityDoctor the start.bat or start.sh should be used. It is possible to use the command in your own start scripts as needed.</p> <p>The .bat/.sh file only contains the following command (example for windows and the GUI version):</p> <pre><code>java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter\n</code></pre> <p>Note</p> <p>The exact command has changed over the development history of CityDoctor.</p> <p>For the batch version the command is similar and can be adapted for other operating systems.</p> <p>Note</p> <p>The command can also be used for Linux and Mac but the \";\" has to be replaced by \":\".</p>"},{"location":"geometric/","title":"Geometry Requirements","text":""},{"location":"geometric/#error-codes-for-geometric-errors","title":"Error codes for geometric errors","text":"<p>as defined in the CityGML Quality Interoperability Experiment, chapter 7.5.</p> <p>Note</p> <p>The requirements were renamed in CityDoctor to be more human readable. The were renamed according to the error codes.</p> <p>All the geometric errors are in the \"GE\" domain. Also, since the geometric validation is performed at 3 different levels (based on the primitives), the requirements also contain the level:</p> <ul> <li>Ring: R</li> <li>Polygon: P</li> <li>Shell: S</li> </ul> <p>Error codes follow the same system as the requirements mentioned fundamentals. A violation of each respective data quality requirement should result in an error which must be reported with an error code according to the requirement ID. For each error code, extra information can (and should) be returned. For instance: if a ring is not closed (GE_R_NOT_CLOSED) then the ID of the ring (e.g., its position (first, second..) in the polygon) should be returned; if a polygon is not planar (GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE) then the ID of the polygon and the max. deviation from the reference plane should be returned; or if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s) should be returned.</p>"},{"location":"geometric/#vertex-requirement","title":"Vertex Requirement","text":"<p>Vertices A and B are the same if the euclidean distance between them is smaller than (minVertexDistance). It is also used to check whether a point is touching an edge. If a point is within minVertexDistance distance to an edge it is considered touching. This parameter is used in multiple checks with the same value:</p> <ul> <li>R_GE_R_CONSECUTIVE_POINTS_SAME</li> <li>R_GE_R_NOT_CLOSED</li> <li>R_GE_R_SELF_INTERSECTION</li> <li>R_GE_P_INTERIOR_DISCONNECTED</li> </ul> <p>The following requirements are defined for the three respective geometric levels (adopted from Ledoux (2013)):</p>"},{"location":"geometric/#linear-ring","title":"Linear Ring","text":"Requirement ID Description Error code Known checks R_GE_R_TOO_FEW_POINTS too few points GE_R_TOO_FEW_POINTS C_GE_R_TOO_FEW_POINTS R_GE_R_CONSECUTIVE_POINTS_SAME 2 consecutive points are the same GE_R_CONCECUTIVE_POINTS_SAME C_GE_R_CONCECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT R_GE_R_NOT_CLOSED first-last points are not the same GE_R_NOT_CLOSED C_GE_R_NOT_CLOSED R_GE_R_SELF_INTERSECTION self-intersects, i.e., a bowtie GE_R_SELF_INTERSECTION C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT R_GE_R_COLLAPSED_TO_LINE Currently not in use as it is redundant with R_GE_R_SELF_INTERSECTION is point or line GE_R_COLLAPSED_TO_LINE C_GE_R_COLLAPSED_TO_LINE R_GE_R_ALL Container for: R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION -- --"},{"location":"geometric/#polygon","title":"Polygon","text":"Requirement ID Description Error code Known checks R_GE_P_INTERSECTING_RINGS 2+ rings intersect GE_P_INTERSECTING_RINGS C_GE_P_INTERSECTING_RINGS R_GE_P_NON_PLANAR Non planar polygon, both distance and normal deviation GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION C_GE_P_NON_PLANAR R_GE_P_INTERIOR_DISCONNECTED interior is not connected GE_P_INTERIOR_DISCONNECTED C_GE_P_INTERIOR_DISCONNECTED R_GE_P_HOLE_OUTSIDE 1 or more interior rings are located outside the exterior ring GE_P_HOLE_OUTSIDE C_GE_P_HOLE_OUTSIDE R_GE_P_INNER_RINGS_NESTED interior ring is located inside other GE_P_INNER_RINGS_NESTED C_GE_P_INNER_RINGS_NESTED R_GE_P_ORIENTATION_RINGS_SAME exterior and interior rings have same orientation GE_P_ORIENTATION_RINGS_SAME C_GE_P_ORIENTATION_RINGS_SAME R_GE_P_ALL Container for: R_GE_P_INTERSECTING_RINGS, R_GE_P_NON_PLANAR, R_GE_P_INTERIOR_DISCONNECTED, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_ORIENTATION_RINGS_SAME, R_GE_R_ALL -- --"},{"location":"geometric/#solid-shell","title":"Solid / Shell","text":"Requirement ID Description Error code Known checks R_GE_S_TOO_FEW_POLYGONS &lt;4 polygons GE_S_TOO_FEW_POLYGONS C_GE_S_TOO_FEW_POLYGONS R_GE_S_NOT_CLOSED there is 1+ hole(s) on the surface GE_S_NOT_CLOSED C_GE_S_NOT_CLOSED R_GE_S_NON_MANIFOLD_VERTEX Each shell must be simple GE_S_NON_MANIFOLD_VERTEX C_GE_S_NON_MANIFOLD_VERTEX R_GE_S_NON_MANIFOLD_EDGE Each edge of a shell should have exactly 2 incident polygons. GE_S_NON_MANIFOLD_EDGE C_GE_S_NON_MANIFOLD_EDGE R_GE_S_MULTIPLE_CONNECTED_COMPONENTS 1+ polygons not connected to main shell GE_S_MULTIPLE_CONNECTED_COMPONENTS C_GE_S_MULTIPLE_CONNECTED_COMPONENTS R_GE_S_SELF_INTERSECTION Solid self intersects GE_S_SELF_INTERSECTION C_GE_S_SELF_INTERSECTION R_GE_S_POLYGON_WRONG_ORIENTATION orientation of a polygon not correct GE_S_POLYGON_WRONG_ORIENTATION C_GE_S_POLYGON_WRONG_ORIENTATION R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION normals all pointing in wrong direction GE_S_ALL_POLYGONS_WRONG_ORIENTATION C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION R_GE_S_ALL Container for: R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED, R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS, R_GE_S_SELF_INTERSECTION, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION -- --"},{"location":"geometric/#parameter-overview","title":"Parameter Overview","text":"Name Description Used in Unit minVertexDistance The minimum distance between two points before they are considered the same point R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION, R_GE_P_INTERIOR_DISCONNECTED Meter type Planar check type, can be distance, angle, both sein R_GE_P_NON_PLANAR - distanceTolerance Distance from the regression plane before a point is considered not in plane R_GE_P_NON_PLANAR Meter angleTolerance Difference in normal vectors before a plane is not considered planar R_GE_P_NON_PLANAR Radiant"},{"location":"geometric/#dependency-tree","title":"Dependency tree","text":"<p>This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.</p> <pre><code>graph TD;\n X0001[R_SC_SCHEMA_VALIDATION]\n R0001[R_GE_R_TOO_FEW_POINTS]\n R0002[R_GE_R_CONSECUTIVE_POINTS_SAME]\n R0003[R_GE_R_NOT_CLOSED]\n R0004[R_GE_R_SELF_INTERSECTION]\n P0001[R_GE_P_INTERSECTING_RINGS]\n P0002[R_GE_P_NON_PLANAR]\n P0003[R_GE_P_INTERIOR_DISCONNECTED]\n P0004[R_GE_P_HOLE_OUTSIDE]\n P0005[R_GE_P_INNER_RINGS_NESTED]\n P0006[R_GE_P_ORIENTATION_RINGS_SAME]\n\n S0001[R_GE_S_TOO_FEW_POLYGONS]\n S0002[R_GE_S_NOT_CLOSED]\n S0003[R_GE_S_NON_MANIFOLD_VERTEX]\n S0004[R_GE_S_NON_MANIFOLD_EDGE]\n S0005[R_GE_S_MULTIPLE_CONNECTED_COMPONENTS]\n S0006[R_GE_S_SELF_INTERSECTION]\n S0007[R_GE_S_POLYGON_WRONG_ORIENTATION]\n S0008[R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION]\n\n X0001--&gt;R0003;\n R0003--&gt;R0001;\n R0001--&gt;R0002;\n R0002--&gt;R0004;\n R0004--&gt;P0002;\n P0002--&gt;P0006;\n P0006--&gt;P0003;\n P0006--&gt;P0004;\n P0006--&gt;P0005;\n P0004--&gt;P0001;\n P0005--&gt;P0001;\n P0001--&gt;S0001;\n P0003--&gt;S0001;\n S0001--&gt;S0002;\n S0001--&gt;S0004;\n S0001--&gt;S0003;\n S0001--&gt;S0005;\n S0002--&gt;S0007;\n S0004--&gt;S0007;\n S0007--&gt;S0006;\n S0003--&gt;S0006;\n S0005--&gt;S0006;\n S0006--&gt;S0008; \n</code></pre>"},{"location":"geometric/#multisurface-and-solid-geometry","title":"Multisurface and Solid geometry","text":"<p>In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.</p> Requirement ID Description Dependencies Error code Known checks R_GE_MS valid multisurface geometry R_SC-SCHEMA-VALIDATION, R_GE_P_ALL -- -- R_GE_SO valid solid geometry R_SC-SCHEMA-VALIDATION, R_GE_S_ALL -- --"},{"location":"requiredSoftware/","title":"Required Software","text":""},{"location":"requiredSoftware/#versions-from-3130","title":"Versions from 3.13.0","text":"<p>Starting with version 3.13.0, a repository was created on the university's transfer portal, which will henceforth be used as a repository for finished releases: https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases</p> <p>The versions are divided there between CityDoctorValidation and CityDoctorGUI and under these folders there are the corresponding version folders.</p>"},{"location":"requiredSoftware/#release-versions","title":"Release Versions","text":"<p>For each CityDoctor variant (CityDoctorValidation or CityDoctorGUI) four different versions are provided for download. Java runtimes of the Liberica distribution are included in different versions. </p> Version Description CityDoctor*-no-runtime.zip This version does not include a runtime for Java. If you already have a Java version 17 installed on your PC use this. See Java CityDoctor*-win.zip Includes a Windows Java Runtime to run CityDoctor, no Java needs to be installed. CityDoctor*-lin.zip Includes a Linux Java Runtime to run CityDoctor CityDoctor*-mac.zip Includes a Mac Java Runtime to run CityDoctor"},{"location":"requiredSoftware/#versions-until-312x","title":"Versions until 3.12.x","text":"<p>CityDoctor can be downloaded from various sites. The most recent place is a gitlab repository. Alternatively, releases are also listed on the CityDoctor homepage of the BHT. There are always two versions:</p> <ul> <li>CityDoctorGUI-3.x.x.zip: This is the graphical interface including the checks. Suitable for the end user on a desktop PC.</li> <li>CityDoctorValidation-3.x.x.zip: This is the batch version suitable for integration into servers or other existing systems and has no graphical interface but works file-based as a process.</li> </ul> <p>Note</p> <p>There are sometimes special versions that have been created for testing different delivery options. Example: CityDoctorGUI-x.x.x-win.zip contains the JavaFX libraries so that a Java environment without JavaFX can also be used.</p>"},{"location":"requiredSoftware/#java","title":"Java","text":"<p>Before CityDoctor version 3.12.x Java 8 is required either as JDK or as JRE. From version 3.12.x Java 17 is required.</p> <p>Warning</p> <p>It is important that the installed Java version includes the JavaFX libraries. These are needed for the graphical user interface.</p> <p>The Liberica JRE oder JDK has proven itself for use with CityDoctor.</p> <p>Note</p> <p>The Liberica distribution is 100% free and open source.</p> <p>Note</p> <p>For the development with CityDoctor a JDK is required.</p>"},{"location":"requirements/","title":"Anforderungen und Pr\u00fcfungen f\u00fcr die Validierung von CityGML-Modellen","text":"<p>The requirements are the basic building blocks for a validation plan to validate CityGML models. For naming conventions and definitions, see fundamentals. </p> <p>A requirement can be validated by one or more checks. A check validates one or more requirements on a model. Each check can have preconditions. If these preconditions are not met, the check is not executed. A distinction is made between:</p> <ul> <li>Schema Requirements</li> <li>Geometry Requirements</li> <li>Semantic Requirements</li> </ul>"},{"location":"schemaRequirements/","title":"Schema Requirements","text":""},{"location":"schemaRequirements/#r_sc_schema_validation","title":"R_SC_SCHEMA_VALIDATION","text":""},{"location":"schemaRequirements/#anforderung","title":"Anforderung","text":"ID R_SC_SCHEMA_VALIDATION Description A basic requirement is that each CityGML document must be well defined and XSD valid. Error code SC-SCHEMA-NOT-VALID"},{"location":"schemaRequirements/#prufung","title":"Pr\u00fcfung","text":"ID SC_SCHEMA_VALIDATION Anforderungs ID R_SC_SCHEMA_VALIDATION Requirements none Description Tools to perform XSD validation are available and give reliable results Error code SC_SCHEMA_NOT_VALID"},{"location":"semantic/","title":"Semantic Requirements","text":"<p>The semantic requirements are mostly attribute based. This results in 3 error states for an attribute:</p> <ul> <li>SE_ATTRIBUTE_WRONG_VALUE: If an attribute has a wrong value.</li> <li>SE_ATTRIBUTE_MISSING: If an attribute is missing but should be present.</li> <li>SE_ATTRIBUTE_INVALID: If an attribute is present but forbidden.</li> </ul>"},{"location":"semantic/#schematron","title":"Schematron","text":"<p>In CityDoctor wurde das XML Validierungssystem Schematron integriert um flexibel Attributpr\u00fcfungen anzupassen und zu unterst\u00fctzen. </p> <p>Hier ist ein Beispiel f\u00fcr eine Schematron Datei die CityDoctor integrieren kann:</p>"},{"location":"semantic/#citydoctor-3130","title":"CityDoctor &gt;= 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n\n</code></pre>"},{"location":"semantic/#citydoctor-3130_1","title":"CityDoctor &lt; 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n</code></pre> <p>Diese Datei pr\u00fcft, dass alle Buildings in sich selbst oder in einem ihrer Unterelementen ein Solid beliebigen LODSs vorhanden ist. Au\u00dferdem stellt die Datei sicher, dass jedes BuildingPart ein Solid enth\u00e4lt. Wenn dies nicht der Fall ist wird eine Fehlermeldung ausgegeben. Die Fehlermeldung ist dabei so formattiert, dass CityDoctor sie interpretieren und in das interne Datenmodell einbinden kann.</p>"},{"location":"semantic/#fehlerformat","title":"Fehlerformat","text":"<p>Das Fehlerformat ist ein CSV-Format mit || als Trennzeichen</p> <pre><code>parent id||child id||error code||error type||is generic attribute\n</code></pre> <p>Die Fehlermeldung besteht aus den folgenden Teilen:</p> <ul> <li>Die <code>parent id</code> ist die gml id des obersten Elements z.B. Building oder Bridge. </li> <li>Falls der Fehler in einem Unterelement aufgetreten ist so kann diese ID in dem Feld f\u00fcr die <code>child id</code> eingetragen werden.</li> <li>Im Feld <code>error type</code> ist einer der 3 Fehlertypen einzutragen: <code>SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID</code>.</li> </ul> <p>note Nur in CityDoctor &lt; 3.13.0: * Um ein generisches Attribut mit dem Namen <code>measuredHeight</code> von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen <code>true</code> einzutragen wenn es sich um ein generisches Attribut handelt ansonsten <code>false</code>. </p>"},{"location":"udt_about/","title":"UDigiT-Doctor","text":"<p>Expansion of CityDoctor2 to enable integration with urban digital twins</p> <p></p> <p>The UDigiT-Doctor project continues the development of CityDoctor2, with the goal of enabling the validation and repair of urban digital twins with CityDoctor.</p>"},{"location":"udt_about/#objectives","title":"Objectives","text":"<p>In summary, the following scientific and technical objectives can be derived to allow for a transfer of the validation functionality of CityDoctor to urban digital twins:</p> <ul> <li>Design of an internal data model and methods for the creation of an integrated complete model. </li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data. </li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ul>"},{"location":"udt_about/#license","title":"License","text":"<p>UDigiT-Doctor, being an update of CityDoctor2, will continue to be released under the LGPL as FOSS.</p>"},{"location":"udt_about/#releases","title":"Releases","text":"<p>Releases of UDigiT-Doctor will be made available via the CityDoctor2 GitLab-repository.</p>"},{"location":"udt_about/#project-information","title":"Project Information","text":"<p>Project Duration: April 01, 2024 - July 01, 2027</p> <p>Project Website: UDigiT-Doctor: Hochschule f\u00fcr Technik Stuttgart UDigiT-Doctor: Berliner Hochschule f\u00fcr Technik</p> <p>Project Lead: Prof. Dr.-Ing. Volker Coors</p> <p>Collaboration Partner: Prof. Dr. Margitta Pries</p>"},{"location":"udt_about/#partners","title":"Partners","text":"<p>Cooperation Partners: Robert Bosch GmbH Geoplex GIS GmbH M.O.S.S. Computer Grafik Systeme GmbH LandPlan OS GmbH Point Cloud Technology GmbH virtualcitysystems GmbH</p> <p>Associative Partners: Open Geospatial Consortium Stadt Stuttgart Stadt Leverkusen </p> <p>Funding: Bundesamt f\u00fcr Bildung und Forschung</p> <p>Promoter: VDI Technologiezentrum </p>"},{"location":"udt_req_data_model/","title":"Requirements of the internal data model","text":""},{"location":"udt_req_data_model/#urban-digital-twin-data","title":"Urban digital twin data","text":"<p>In order to be able to validate and repair the models of urban digital twins, CityDoctor needs the capability to access their data.</p>"},{"location":"udt_req_data_model/#reference-model","title":"Reference model","text":"<p>While CityDoctor is capable of repairing geometrical errors, the repaired model can contain discrepancies with the real object. This is expected, since CityDoctor purely operates via model data. To alleviate this, functionalities for the usage of a reference model are desired. The reference model would allow CityDoctor to determine the quality of a repair step, enabling the implementation of more sophisticated healing-routines.</p>"},{"location":"udt_req_data_model/#data-format-support","title":"Data format support","text":"<p>The aforementioned requirements revolve around data that is not compatible with, or available as, CityGML. Therefore, to </p>"},{"location":"udt_req_overview/","title":"Requirements of UDigiT-Doctor","text":"<ol> <li>Design of an internal data model and methods for the creation of an integrated complete model.</li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data.</li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ol> Specific requirements of Applicable to requirement nr. Data model 1., 2., 3. Topological consistency 2., 3. Semantical validation 2., 4."},{"location":"udt_terms/","title":"Validation of urban digital twins","text":""},{"location":"udt_terms/#terms-and-definitions","title":"Terms and definitions","text":"<p>See also: Terms and definitions of CityDoctor2</p> <p>Urban digital twin</p> <p>An urban digital twin is a virtual, representative model of a real building. Digital twins are useful for various tasks, e.g. the simulation of certain processes. They also serve as a central access point to information and data of the building, including access to installed sensors and building management systems.</p>"},{"location":"userInterface/","title":"User interface","text":""},{"location":"userInterface/#citydoctor","title":"CityDoctor","text":"<p>In the upper bar the following buttons are in order:</p> <ul> <li>Load: Opens the dialog for loading a CityGML file</li> <li>Validation: Opens the dialog to check a loaded CityGML</li> <li>Validation results: Opens the dialog for writing a test protocol in xml or pdf form</li> <li>Grid: Shows/hides the grid instead of filled polygons</li> <li>Backsides: Shows/hides backs of polygons</li> <li>Global View: Loads all elements of a CityGML into the view</li> <li>LODs: Turns individual LODs on or off from the view</li> <li>Save: Saves a CityGML file back, if the file was checked the QualityADE is written too.</li> <li>About: Opens the dialog with information about the project CityDoctor2</li> <li>View: Switches different views. There is only one for the validation part.</li> <li>Language: Here you can set the language (German/English)</li> </ul> <p>Warning</p> <p>Displaying the Global View can cause crashes with large CityGML files (&gt; 100mb depending on the system). The display may take a short time.</p>"},{"location":"userInterface/#load","title":"Load","text":"<p>The Load button opens the dialog for loading a CityGML file.</p> <p></p> <p>In the file bar a file path can be entered or selected via the Select button.</p> <p>In addition, other settings for reading the file can be specified.</p> <ul> <li>NumberOfRoundingPlaces: To how many decimal places are the read-in values rounded?</li> <li>XML-Validierung: Performs an XML validation. Errors are detected directly during the import and the import is aborted.</li> <li>Low Memory Consumption Mode : Saves RAM to allow larger files in the GUI. Slight performance costs during the validation process.</li> </ul> <p>When loading, the progress is approximately represented by the loading bar.</p> <p>Note</p> <p>Files can also be dragged and dropped directly from the file manager into the GUI without using the load dialog. The default values are assumed (8 decimal places, no XML validation).</p> <p>After loading a CityGML file, the elements are displayed in the individual tabs. Selecting an element will display it in the view.</p> <p></p> <p>Note</p> <p>By selecting the top element of a tab, all elements within this tab are displayed. As the above warning states, larger amounts of data will cause crashes.</p>"},{"location":"userInterface/#validation","title":"Validation","text":"<p>The validation plan can be customized in the check dialog. In addition to the available checks, the global parameters are also displayed here.</p> <p>The parameters can be changed with a double click in the value column. The unit is fixed.</p> <p>Note</p> <p>The numberOfRoundingPlaces parameter cannot be changed. It was set when the file was loaded.</p> <p>If checks should not be executed, they can be deactivated in the Active column.</p> <p>Warning</p> <p>If checks are disabled but other active checks need them as dependencies, they will be re-enabled during the check to ensure stability. See Requirements.</p> <p>In the Schematron file field, a path to a Schematron file can be entered. In this file flexible rules for the semantic requirements can be defined. See Semantic Requirements</p> <p>The test plan can be saved and loaded via the two buttons at the top right.</p> <p>After the check, elements with errors are colored red and elements without errors are colored green. When selecting an element that contains errors, the errors are displayed in the lower tab Errors. There you can select the error to display it in CityDoctor and get more information.</p> <p></p> <p>The elements can be filtered with the dropdown menu to show only faulty elements.</p>"},{"location":"userInterface/#validation-reports","title":"Validation reports","text":"<p>In this dialog there is again an overview of the errors in image form and the possibility to write an xml or pdf report.</p> <p></p>"},{"location":"validationPlan/","title":"Validation Plan","text":"<p>the validation plan for CityDoctor is specified in YAML.</p> <p>For version 3.12.x and later, an example looks like this:</p> <pre><code>globalParameters:\n numberOfRoundingPlaces: 8\n # in m\n minVertexDistance: 0.0001\n schematronPath: 'checkForSolid.xml'\nuseStreaming: true # (1)!\nrequirements:\n R_GE_R_TOO_FEW_POINTS:\n enabled: true\n R_GE_R_NOT_CLOSED:\n enabled: true\n R_GE_R_CONSECUTIVE_POINTS_SAME:\n enabled: true\n R_GE_R_SELF_INTERSECTION:\n enabled: true\n R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:\n enabled: true\n R_GE_P_INTERIOR_DISCONNECTED:\n enabled: true\n R_GE_P_INTERSECTING_RINGS:\n enabled: true\n R_GE_P_NON_PLANAR:\n enabled: true\n parameters:\n # one of (\"distance\", \"angle\", \"both\")\n type: distance\n # in m\n distanceTolerance: 0.01\n # in degree\n angleTolerance: 1\n R_GE_P_HOLE_OUTSIDE:\n enabled: true\n R_GE_P_ORIENTATION_RINGS_SAME:\n enabled: true\n R_GE_P_INNER_RINGS_NESTED:\n enabled: true\n R_GE_S_TOO_FEW_POLYGONS:\n enabled: true\n R_GE_S_NOT_CLOSED:\n enabled: true\n R_GE_S_NON_MANIFOLD_EDGE:\n enabled: true\n R_GE_S_POLYGON_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_NON_MANIFOLD_VERTEX:\n enabled: true\n R_GE_S_SELF_INTERSECTION:\n enabled: true\n R_SE_BS_IS_WALL:\n enabled: false\n parameters:\n lowerAngle: '45'\n upperAngle: '135'\n R_SE_BS_IS_FLOOR:\n enabled: false\n R_SE_BS_GROUND_UNFRAGMENTED:\n enabled: false\n R_SE_BS_IS_GROUND:\n enabled: false\n R_SE_BS_IS_CEILING:\n enabled: false\n</code></pre> <ol> <li>The parameter <code>useStreaming</code> is a switch to read a file piece by piece instead of reading the complete file before the check takes place. With this setting also files &gt; 2GB can be checked without large RAM requirements.</li> </ol> <p>In the validation plan you will find the same settings that are listed in the graphical user interface.</p> <p>All requirements that are to be checked are listed under requirements. The semantic checks are deactivated by default. </p>"},{"location":"zipFiles/","title":"Zip Archives","text":"<p>CityDoctor is capable of parsing zip archives to enable the validation of contained CityGML files.</p>"},{"location":"zipFiles/#loading-a-zip-archive","title":"Loading a zip archive","text":"<p>To load a zip archive, select a zip file using file loading dialoge. CityDoctor will analyze the zip file for potential CityGml files.</p>"},{"location":"zipFiles/#zip-entry-manager","title":"Zip entry manager","text":"<p>CityDoctor will show the zip entry manager after successfully loading a zip archive. The zip entry manager has the following buttons: </p> <ol> <li>Show model: Shows the city model of the selected entry in the main window of CityDoctor, giving access to the normal CityDoctor functionality. Only available for decompressed entries.</li> <li>Decompress entry: Decompresses the selected entry.</li> <li>Error statistics: Shows the error statistics of the selected entry. Only available for validated entries.</li> <li>Decompress all entries: Decompresses all entries of the archive.</li> <li>Check all: Opens the checking dialoge, allowing batch validation of all entries. See validation for more details.</li> <li>Save reports: Allows saving of validation reports. Available after at least one entry has been validated.</li> </ol> <p></p> <p>Entries display their current state via color coding. Possible states are:</p> <ul> <li>compressed(black): A compressed entry is still 'zipped'.</li> <li>decompressed(blue): A decompressed entry has been successfully 'unzipped' into the memory.</li> <li>empty model(gray): A decompressed entry containing no city model or a model without any city objects.</li> <li>erroneous entry(dark red): An entry which could not be successfully decompressed, due to either having an invalid CityGML file, being too big to be held in memory or encountering a problem while reading the file. The respective reason will be shown in the entry's metadata.</li> <li>validated with / without errors (bright red / green respectively)</li> </ul> <p>Note</p> <p>The original zip file or its entries will not be changed. Decompressed data is a copy of the source entry.</p>"},{"location":"zipFiles/#validation","title":"Validation","text":""},{"location":"zipFiles/#validation-of-individual-entries","title":"Validation of individual entries","text":"<p>Decompressed entries can be validated individually through the CityDoctor main window. CityDoctor will retain the validation results for each entry in memory until the application is closed or a new zip archive is loaded.</p>"},{"location":"zipFiles/#batch-validation","title":"Batch validation","text":"<p>The \"Check all\" button in the zip entry manager opens the option window for the batch validation. This process does not require prior decompression of the entries and offers two modes of operation:</p>"},{"location":"zipFiles/#default-mode","title":"Default mode","text":"<p>The default batch validation mode validates each entry within the archive. Compressed entries will be automatically decompressed during this process. Like with the individual validation, the results are held in memory and can be inspected in CityDoctor.</p>"},{"location":"zipFiles/#low-memory-mode-stream-mode","title":"Low memory mode (stream mode)","text":"<p>Low memory mode utilizes datastreams to read and check the city model features individually. This significantly decreases memory overhead and usage by eliminating the need for entry decompression. However, this also means that the state of entries remains unchanged. As a result, the results of the validation cannot be inspected within CityDoctor and will be recorded in report files at the designated output location.</p>"}]}
\ No newline at end of file
......@@ -9,18 +9,17 @@
<link href="../geometric/" rel="prev"/>
<link href="../R_GE_R_TOO_FEW_POINTS/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<title>Semantic Requirements - CityDoctor2</title>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -31,13 +30,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -56,38 +55,39 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href=".." hreflang="en">
English
</a>
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,83 +153,116 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
About
</a>
<span class="md-ellipsis">
About
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
Installation
</a>
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
First Start
</a>
<span class="md-ellipsis">
First Start
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
User Interface
</a>
<span class="md-ellipsis">
User Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
Validation Plan
</a>
<span class="md-ellipsis">
Validation Plan
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6" id="__nav_1_6" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_6" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7" id="__nav_1_7_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_6">
<nav aria-expanded="true" aria-labelledby="__nav_1_7_label" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_7">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
Fundamentals
</a>
<span class="md-ellipsis">
Fundamentals
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
Overview
</a>
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
Schema Requirements
</a>
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
Geometric Requirements
</a>
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Semantic Requirements
<span class="md-nav__icon md-icon"></span>
<span class="md-ellipsis">
Semantic Requirements
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
Semantic Requirements
</a>
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -238,24 +271,32 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#schematron">
Schematron
</a>
<span class="md-ellipsis">
Schematron
</span>
</a>
<nav aria-label="Schematron" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130">
CityDoctor &gt;= 3.13.0
</a>
<span class="md-ellipsis">
CityDoctor &gt;= 3.13.0
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130_1">
CityDoctor &lt; 3.13.0
</a>
<span class="md-ellipsis">
CityDoctor &lt; 3.13.0
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fehlerformat">
Fehlerformat
</a>
<span class="md-ellipsis">
Fehlerformat
</span>
</a>
</li>
</ul>
</nav>
......@@ -264,121 +305,165 @@
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_6_6" id="__nav_1_6_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_6_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" id="__nav_1_7_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_7_6" id="__nav_1_7_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_6_6">
<nav aria-expanded="false" aria-labelledby="__nav_1_7_6_label" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_7_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
R_TOO_FEW_POINTS
</a>
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
R_CONSECUTIVE_POINTS_SAME
</a>
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
R_RING_NOT_CLOSED
</a>
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
R_RING_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
R_COLLAPSED_TO_LINE
</a>
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
P_INTERSECTING_RINGS
</a>
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
P_NON_PLANAR
</a>
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
P_INTERIOR_DISCONNECTED
</a>
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
P_HOLE_OUTSIDE
</a>
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
P_INNER_RINGS_NESTED
</a>
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
P_ORIENTATION_RINGS_SAME
</a>
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
MULTI_SURFACE
</a>
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
S_TOO_FEW_POLYGONS
</a>
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
S_NOT_CLOSED
</a>
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
S_NON_MANIFOLD_VERTEX
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
S_NON_MANIFOLD_EDGE
</a>
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
S_SELF_INTERSECTION
</a>
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
S_POLYGON_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
SOLID
</a>
<span class="md-ellipsis">
SOLID
</span>
</a>
</li>
</ul>
</nav>
......@@ -405,24 +490,32 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#schematron">
Schematron
</a>
<span class="md-ellipsis">
Schematron
</span>
</a>
<nav aria-label="Schematron" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130">
CityDoctor &gt;= 3.13.0
</a>
<span class="md-ellipsis">
CityDoctor &gt;= 3.13.0
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130_1">
CityDoctor &lt; 3.13.0
</a>
<span class="md-ellipsis">
CityDoctor &lt; 3.13.0
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fehlerformat">
Fehlerformat
</a>
<span class="md-ellipsis">
Fehlerformat
</span>
</a>
</li>
</ul>
</nav>
......@@ -493,6 +586,7 @@ Nur in CityDoctor &lt; 3.13.0:
* Um ein generisches Attribut mit dem Namen <code>measuredHeight</code> von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen <code>true</code> einzutragen wenn es sich um ein generisches Attribut handelt ansonsten <code>false</code>. </p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -513,8 +607,8 @@ Nur in CityDoctor &lt; 3.13.0:
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -2,187 +2,154 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_MS/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_HOLE_OUTSIDE/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INNER_RINGS_NESTED/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERIOR_DISCONNECTED/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERSECTING_RINGS/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_NON_PLANAR/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_ORIENTATION_RINGS_SAME/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_COLLAPSED_TO_LINE/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_CONSECUTIVE_POINTS_SAME/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_NOT_CLOSED/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_SELF_INTERSECTION/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_TOO_FEW_POINTS/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_SO/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_EDGE/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_VERTEX/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NOT_CLOSED/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_POLYGON_WRONG_ORIENTATION/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_SELF_INTERSECTION/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_TOO_FEW_POLYGONS/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/basic/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/firstRun/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/geometric/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requiredSoftware/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requirements/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/schemaRequirements/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/semantic/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_about/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_data_model/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_overview/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_sem/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_topo/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_terms/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/userInterface/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/validationPlan/</loc>
<lastmod>2024-10-31</lastmod>
<changefreq>daily</changefreq>
<lastmod>2025-01-28</lastmod>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/zipFiles/</loc>
<lastmod>2025-01-28</lastmod>
</url>
</urlset>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment