From 17e8226bf63f242a9167f412b15193b8e0eca6cf Mon Sep 17 00:00:00 2001 From: nkoester Date: Mon, 27 Nov 2023 02:25:44 +0000 Subject: [PATCH] deploy: 238c14e68d38160675501b8d68e019cdc8919e36 --- _/css/site.css | 4 +- _/font/roboto-cyrillic-400-italic.woff2 | Bin 0 -> 10292 bytes _/font/roboto-cyrillic-400-normal.woff2 | Bin 0 -> 9628 bytes _/font/roboto-cyrillic-500-italic.woff2 | Bin 0 -> 10640 bytes _/font/roboto-cyrillic-500-normal.woff2 | Bin 0 -> 9840 bytes search-index.js | 2 +- sitemap.xml | 276 ++++++++++++------------ 7 files changed, 141 insertions(+), 141 deletions(-) create mode 100644 _/font/roboto-cyrillic-400-italic.woff2 create mode 100644 _/font/roboto-cyrillic-400-normal.woff2 create mode 100644 _/font/roboto-cyrillic-500-italic.woff2 create mode 100644 _/font/roboto-cyrillic-500-normal.woff2 diff --git a/_/css/site.css b/_/css/site.css index 768c0d6b..5093f1e4 100644 --- a/_/css/site.css +++ b/_/css/site.css @@ -1,3 +1,3 @@ -@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2) format("woff2"),url(../font/roboto-latin-400-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-latin-400-italic.woff2) format("woff2"),url(../font/roboto-latin-400-italic.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:url(../font/roboto-latin-500-normal.woff2) format("woff2"),url(../font/roboto-latin-500-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:url(../font/roboto-latin-500-italic.woff2) format("woff2"),url(../font/roboto-latin-500-italic.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../font/roboto-mono-latin-400-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-400-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;src:url(../font/roboto-mono-latin-500-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-500-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:1.0625em;height:100%;scroll-behavior:smooth}@media screen and (min-width:1024px){html{font-size:1.125em}}body{background:#fff;color:#222;font-family:Roboto,sans-serif;line-height:1.15;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline}a:active{background-color:none}code,kbd,pre{font-family:Roboto Mono,monospace}b,dt,strong,th{font-weight:500}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}em em{font-style:normal}strong strong{font-weight:400}button{cursor:pointer;font-family:inherit;font-size:1em;line-height:1.15;margin:0}button::-moz-focus-inner{border:none;padding:0}summary{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}table{border-collapse:collapse;word-wrap:normal}object[type="image/svg+xml"]:not([width]){width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}::-webkit-input-placeholder{opacity:.5}::-moz-placeholder{opacity:.5}:-ms-input-placeholder{opacity:.5}::-ms-input-placeholder{opacity:.5}::placeholder{opacity:.5}@media (pointer:fine){@supports (scrollbar-width:thin){html{scrollbar-color:#c1c1c1 #fafafa}body *{scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}}html::-webkit-scrollbar{background-color:#fafafa;height:12px;width:12px}body ::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#c1c1c1;border:3px solid transparent;border-radius:12px}body ::-webkit-scrollbar-thumb{border-width:1.75px;border-radius:6px}::-webkit-scrollbar-thumb:hover{background-color:#9c9c9c}}@media screen and (min-width:1024px){.body{display:-webkit-box;display:-ms-flexbox;display:flex}}@media screen and (max-width:1023.5px){html.is-clipped--nav{overflow-y:hidden}}.nav-container{position:fixed;top:3.5rem;left:0;width:100%;font-size:.94444rem;z-index:1;visibility:hidden}@media screen and (min-width:769px){.nav-container{width:15rem}}@media screen and (min-width:1024px){.nav-container{font-size:.86111rem;-webkit-box-flex:0;-ms-flex:none;flex:none;position:static;top:0;visibility:visible}}.nav-container.is-active{visibility:visible}.nav{background:#fafafa;position:relative;top:2.5rem;height:calc(100vh - 6rem)}@media screen and (min-width:769px){.nav{-webkit-box-shadow:.5px 0 3px #c1c1c1;box-shadow:.5px 0 3px #c1c1c1}}@media screen and (min-width:1024px){.nav{top:3.5rem;-webkit-box-shadow:none;box-shadow:none;position:sticky;height:calc(100vh - 3.5rem)}}.nav a{color:inherit}.nav .panels{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:inherit}.nav-panel-menu{overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;height:calc(100% - 2.5rem)}.nav-panel-menu:not(.is-active) .nav-menu{opacity:.75}.nav-panel-menu:not(.is-active)::after{content:"";background:rgba(0,0,0,.5);display:block;position:absolute;top:0;right:0;bottom:0;left:0}.nav-menu{min-height:100%;padding:.5rem .75rem;line-height:1.35;position:relative}.nav-menu-toggle{background:transparent url(../img/octicons-16.svg#view-unfold) no-repeat 50%/100% 100%;border:none;float:right;height:1em;margin-right:-.5rem;opacity:.75;outline:none;padding:0;position:sticky;top:.85rem;visibility:hidden;width:1em}.nav-menu-toggle.is-active{background-image:url(../img/octicons-16.svg#view-fold)}.nav-panel-menu.is-active:hover .nav-menu-toggle{visibility:visible}.nav-menu h3.title{color:#424242;font-size:inherit;font-weight:500;margin:0;padding:.25em 0 .125em}.nav-list{list-style:none;margin:0 0 0 .75rem;padding:0}.nav-menu>.nav-list+.nav-list{margin-top:.5rem}.nav-item{margin-top:.5em}.nav-item-toggle~.nav-list{padding-bottom:.125rem}.nav-item[data-depth="0"]>.nav-list:first-child{display:block;margin:0}.nav-item:not(.is-active)>.nav-list{display:none}.nav-item-toggle{background:transparent url(../img/caret.svg) no-repeat 50%/50%;border:none;outline:none;line-height:inherit;padding:0;position:absolute;height:1.35em;width:1.35em;margin-top:-.05em;margin-left:-1.35em}.nav-item.is-active>.nav-item-toggle{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.is-current-page>.nav-link,.is-current-page>.nav-text{font-weight:500}.nav-panel-explore{background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0}.nav-panel-explore:not(:first-child){top:auto;max-height:calc(50% + 2.5rem)}.nav-panel-explore .context{font-size:.83333rem;-ms-flex-negative:0;flex-shrink:0;color:#5d5d5d;-webkit-box-shadow:0 -1px 0 #e1e1e1;box-shadow:0 -1px 0 #e1e1e1;padding:0 .5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1;height:2.5rem}.nav-panel-explore:not(:first-child) .context{cursor:pointer}.nav-panel-explore .context .version{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.nav-panel-explore .context .version::after{content:"";background:url(../img/chevron.svg) no-repeat 100%/auto 100%;width:1.25em;height:.75em}.nav-panel-explore .components{line-height:1.6;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-shadow:inset 0 1px 5px #e1e1e1;box-shadow:inset 0 1px 5px #e1e1e1;background:#f0f0f0;padding:.5rem .75rem 0;margin:0;overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;max-height:100%;display:block}.nav-panel-explore:not(.is-active) .components{display:none}.nav-panel-explore .component{display:block}.nav-panel-explore .component+.component{margin-top:.5rem}.nav-panel-explore .component:last-child{margin-bottom:.75rem}.nav-panel-explore .component .title{font-weight:500}.nav-panel-explore .versions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-top:-.25rem;line-height:1;list-style:none}.nav-panel-explore .component .version{margin:.375rem .375rem 0 0}.nav-panel-explore .component .version a{border:1px solid #c1c1c1;border-radius:.25rem;opacity:.75;white-space:nowrap;padding:.125em .25em;display:inherit}.nav-panel-explore .component .is-current a{border-color:currentColor;opacity:.9;font-weight:500}@media screen and (max-width:1023.5px){aside.toc.sidebar{display:none}main>.content{overflow-x:auto}}@media screen and (min-width:1024px){main{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}main>.content{display:-webkit-box;display:-ms-flexbox;display:flex}aside.toc.embedded{display:none}aside.toc.sidebar{-webkit-box-flex:0;-ms-flex:0 0 9rem;flex:0 0 9rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media screen and (min-width:1216px){aside.toc.sidebar{-ms-flex-preferred-size:12rem;flex-basis:12rem}}.toolbar{color:#5d5d5d;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fafafa;-webkit-box-shadow:0 1px 0 #e1e1e1;box-shadow:0 1px 0 #e1e1e1;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.83333rem;height:2.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:sticky;top:3.5rem;z-index:2}.toolbar a{color:inherit}.nav-toggle{background:url(../img/menu.svg) no-repeat 50% 47.5%;background-size:49%;border:none;outline:none;line-height:inherit;padding:0;height:2.5rem;width:2.5rem;margin-right:-.25rem}@media screen and (min-width:1024px){.nav-toggle{display:none}}.nav-toggle.is-active{background-image:url(../img/back.svg);background-size:41.5%}.home-link{display:block;background:url(../img/home-o.svg) no-repeat 50%;height:1.25rem;width:1.25rem;margin:.625rem}.home-link.is-current,.home-link:hover{background-image:url(../img/home.svg)}.edit-this-page{display:none;padding-right:.5rem}@media screen and (min-width:1024px){.edit-this-page{display:block}}.toolbar .edit-this-page a{color:#8e8e8e}.breadcrumbs{display:none;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;padding:0 .5rem 0 .75rem;line-height:1.35}@media screen and (min-width:1024px){.breadcrumbs{display:block}}a+.breadcrumbs{padding-left:.05rem}.breadcrumbs ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline;margin:0}.breadcrumbs li::after{content:"/";padding:0 .5rem}.breadcrumbs li:last-of-type::after{content:none}.page-versions{margin:0 .2rem 0 auto;position:relative;line-height:1}@media screen and (min-width:1024px){.page-versions{margin-right:.7rem}}.page-versions .version-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem .5rem;position:relative;z-index:3}.page-versions .version-menu{display:-webkit-box;display:-ms-flexbox;display:flex;min-width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#f0f0f0)) no-repeat;background:linear-gradient(180deg,#f0f0f0 0,#f0f0f0) no-repeat;padding:1.375rem 1.5rem .5rem .5rem;position:absolute;top:0;right:0;white-space:nowrap}.page-versions:not(.is-active) .version-menu{display:none}.page-versions .version{display:block;padding-top:.5rem}.page-versions .version.is-current{display:none}.page-versions .version.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}.toc-menu{color:#5d5d5d}.toc.sidebar .toc-menu{margin-right:.75rem;position:sticky;top:6rem}.toc .toc-menu h3{color:#333;font-size:.88889rem;font-weight:500;line-height:1.3;margin:0 -.5px;padding-bottom:.25rem}.toc.sidebar .toc-menu h3{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:2.5rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.toc .toc-menu ul{font-size:.83333rem;line-height:1.2;list-style:none;margin:0;padding:0}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 8.5rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none}@supports (scrollbar-width:none){.toc.sidebar .toc-menu ul{scrollbar-width:none}}.toc .toc-menu ul::-webkit-scrollbar{width:0;height:0}@media screen and (min-width:1024px){.toc .toc-menu h3{font-size:.83333rem}.toc .toc-menu ul{font-size:.75rem}}.toc .toc-menu li{margin:0}.toc .toc-menu li[data-level="2"] a{padding-left:1.25rem}.toc .toc-menu li[data-level="3"] a{padding-left:2rem}.toc .toc-menu a{color:inherit;border-left:2px solid #e1e1e1;display:inline-block;padding:.25rem 0 .25rem .5rem;text-decoration:none}.sidebar.toc .toc-menu a{display:block;outline:none}.toc .toc-menu a:hover{color:#1565c0}.toc .toc-menu a.is-active{border-left-color:#1565c0;color:#333}.sidebar.toc .toc-menu a:focus{background:#fafafa}.toc .toc-menu .is-hidden-toc{display:none!important}.doc{color:#333;font-size:inherit;-ms-hyphens:auto;hyphens:auto;line-height:1.6;margin:0 auto;max-width:40rem;padding:0 1rem 4rem}@media screen and (min-width:1024px){.doc{-webkit-box-flex:1;-ms-flex:auto;flex:auto;font-size:.94444rem;margin:0 2rem;max-width:46rem;min-width:0}}.doc h1,.doc h2,.doc h3,.doc h4,.doc h5,.doc h6{color:#191919;font-weight:400;-ms-hyphens:none;hyphens:none;line-height:1.3;margin:1rem 0 0}.doc>h1.page:first-child{font-size:2rem;margin:1.5rem 0}@media screen and (min-width:769px){.doc>h1.page:first-child{margin-top:2.5rem}}.doc>h1.page:first-child+aside.toc.embedded{margin-top:-.5rem}.doc>h2#name+.sectionbody{margin-top:1rem}#preamble+.sect1,.doc .sect1+.sect1{margin-top:2rem}.doc h1.sect0{background:#f0f0f0;font-size:1.8em;margin:1.5rem -1rem 0;padding:.5rem 1rem}.doc h2:not(.discrete){border-bottom:1px solid #e1e1e1;margin-left:-1rem;margin-right:-1rem;padding:.4rem 1rem .1rem}.doc h3:not(.discrete),.doc h4:not(.discrete){font-weight:500}.doc h1 .anchor,.doc h2 .anchor,.doc h3 .anchor,.doc h4 .anchor,.doc h5 .anchor,.doc h6 .anchor{position:absolute;text-decoration:none;width:1.75ex;margin-left:-1.5ex;visibility:hidden;font-size:.8em;font-weight:400;padding-top:.05em}.doc h1 .anchor::before,.doc h2 .anchor::before,.doc h3 .anchor::before,.doc h4 .anchor::before,.doc h5 .anchor::before,.doc h6 .anchor::before{content:"\00a7"}.doc h1:hover .anchor,.doc h2:hover .anchor,.doc h3:hover .anchor,.doc h4:hover .anchor,.doc h5:hover .anchor,.doc h6:hover .anchor{visibility:visible}.doc dl,.doc p{margin:0}.doc a{color:#1565c0}.doc a:hover{color:#104d92}.doc a.bare{-ms-hyphens:none;hyphens:none}.doc a.unresolved{color:#d32f2f}.doc i.fa{-ms-hyphens:none;hyphens:none;font-style:normal}.doc .colist>table code,.doc p code,.doc thead code{color:#222;background:#fafafa;border-radius:.25em;font-size:.95em;padding:.125em .25em}.doc code,.doc pre{-ms-hyphens:none;hyphens:none}.doc pre{font-size:.88889rem;line-height:1.5;margin:0}.doc blockquote{margin:0}.doc .paragraph.lead>p{font-size:1rem}.doc .right{float:right}.doc .left{float:left}.doc .float-gap.right{margin:0 1rem 1rem 0}.doc .float-gap.left{margin:0 0 1rem 1rem}.doc .float-group::after{content:"";display:table;clear:both}.doc .text-left{text-align:left}.doc .text-center{text-align:center}.doc .text-right{text-align:right}.doc .text-justify{text-align:justify}.doc .stretch{width:100%}.doc .big{font-size:larger}.doc .small{font-size:smaller}.doc .underline{text-decoration:underline}.doc .line-through{text-decoration:line-through}.doc .dlist,.doc .exampleblock,.doc .hdlist,.doc .imageblock,.doc .listingblock,.doc .literalblock,.doc .olist,.doc .paragraph,.doc .partintro,.doc .quoteblock,.doc .sidebarblock,.doc .tabs,.doc .ulist,.doc .verseblock,.doc .videoblock,.doc details,.doc hr{margin:1rem 0 0}.doc .tablecontainer,.doc .tablecontainer+*,.doc :not(.tablecontainer)>table.tableblock,.doc :not(.tablecontainer)>table.tableblock+*,.doc>table.tableblock,.doc>table.tableblock+*{margin-top:1.5rem}.doc table.tableblock{font-size:.83333rem}.doc p.tableblock+p.tableblock{margin-top:.5rem}.doc table.tableblock pre{font-size:inherit}.doc td.tableblock>.content{word-wrap:anywhere}.doc td.tableblock>.content>:first-child{margin-top:0}.doc table.tableblock td,.doc table.tableblock th{padding:.5rem}.doc table.tableblock,.doc table.tableblock>*>tr>*{border:0 solid #e1e1e1}.doc table.grid-all>*>tr>*{border-width:1px}.doc table.grid-cols>*>tr>*{border-width:0 1px}.doc table.grid-rows>*>tr>*{border-width:1px 0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{border-bottom-width:2.5px}.doc table.frame-all{border-width:1px}.doc table.frame-ends{border-width:1px 0}.doc table.frame-sides{border-width:0 1px}.doc table.frame-none>colgroup+*>:first-child>*,.doc table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}.doc table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}.doc table.frame-ends>*>tr>:first-child,.doc table.frame-none>*>tr>:first-child{border-left-width:0}.doc table.frame-ends>*>tr>:last-child,.doc table.frame-none>*>tr>:last-child{border-right-width:0}.doc table.stripes-all>tbody>tr,.doc table.stripes-even>tbody>tr:nth-of-type(2n),.doc table.stripes-hover>tbody>tr:hover,.doc table.stripes-odd>tbody>tr:nth-of-type(odd){background:#fafafa}.doc table.tableblock>tfoot{background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#fff));background:linear-gradient(180deg,#f0f0f0 0,#fff)}.doc .halign-left{text-align:left}.doc .halign-right{text-align:right}.doc .halign-center{text-align:center}.doc .valign-top{vertical-align:top}.doc .valign-bottom{vertical-align:bottom}.doc .valign-middle{vertical-align:middle}.doc .admonitionblock{margin:1.4rem 0 0}.doc .admonitionblock p,.doc .admonitionblock td.content{font-size:.88889rem}.doc .admonitionblock td.content>.title+*,.doc .admonitionblock td.content>:not(.title):first-child{margin-top:0}.doc .admonitionblock td.content pre{font-size:.83333rem}.doc .admonitionblock>table{table-layout:fixed;position:relative;width:100%}.doc .admonitionblock td.content{padding:1rem 1rem .75rem;background:#fafafa;width:100%;word-wrap:anywhere}.doc .admonitionblock td.icon{font-size:.83333rem;left:0;line-height:1;padding:0;position:absolute;top:0;-webkit-transform:translate(-.5rem,-50%);transform:translate(-.5rem,-50%)}.doc .admonitionblock td.icon i{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:.45rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-filter:initial;filter:none;height:1.25rem;padding:0 .5rem;vertical-align:initial;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.doc .admonitionblock td.icon i::after{content:attr(title);font-weight:500;font-style:normal;text-transform:uppercase}.doc .admonitionblock td.icon i.icon-caution{background-color:#a0439c;color:#fff}.doc .admonitionblock td.icon i.icon-important{background-color:#d32f2f;color:#fff}.doc .admonitionblock td.icon i.icon-note{background-color:#217ee7;color:#fff}.doc .admonitionblock td.icon i.icon-tip{background-color:#41af46;color:#fff}.doc .admonitionblock td.icon i.icon-warning{background-color:#e18114;color:#fff}.doc .imageblock,.doc .videoblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.doc .imageblock.text-left,.doc .videoblock.text-left{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.doc .imageblock.text-right,.doc .videoblock.text-right{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.doc .image>img,.doc .image>object,.doc .image>svg,.doc .imageblock img,.doc .imageblock object,.doc .imageblock svg{display:inline-block;height:auto;max-width:100%;vertical-align:middle}.doc .image:not(.left):not(.right)>img{margin-top:-.2em}.doc .videoblock iframe,.doc .videoblock video{max-width:100%;vertical-align:middle}#preamble .abstract blockquote{background:#f0f0f0;border-left:5px solid #e1e1e1;color:#4a4a4a;font-size:.88889rem;padding:.75em 1em}.doc .quoteblock,.doc .verseblock{background:#fafafa;border-left:5px solid #5d5d5d;color:#5d5d5d}.doc .quoteblock{padding:.25rem 2rem 1.25rem}.doc .quoteblock .attribution{color:#8e8e8e;font-size:.83333rem;margin-top:.75rem}.doc .quoteblock blockquote{margin-top:1rem}.doc .quoteblock .paragraph{font-style:italic}.doc .quoteblock cite{padding-left:1em}.doc .verseblock{font-size:1.15em;padding:1rem 2rem}.doc .verseblock pre{font-family:inherit;font-size:inherit}.doc ol,.doc ul{margin:0;padding:0 0 0 2rem}.doc ol.none,.doc ol.unnumbered,.doc ol.unstyled,.doc ul.checklist,.doc ul.no-bullet,.doc ul.none,.doc ul.unstyled{list-style-type:none}.doc ol.unnumbered,.doc ul.no-bullet{padding-left:1.25rem}.doc ol.unstyled,.doc ul.unstyled{padding-left:0}.doc ul.circle{list-style-type:circle}.doc ul.disc{list-style-type:disc}.doc ul.square{list-style-type:square}.doc ul.circle ul:not([class]),.doc ul.disc ul:not([class]),.doc ul.square ul:not([class]){list-style:inherit}.doc ol.arabic{list-style-type:decimal}.doc ol.decimal{list-style-type:decimal-leading-zero}.doc ol.loweralpha{list-style-type:lower-alpha}.doc ol.upperalpha{list-style-type:upper-alpha}.doc ol.lowerroman{list-style-type:lower-roman}.doc ol.upperroman{list-style-type:upper-roman}.doc ol.lowergreek{list-style-type:lower-greek}.doc ul.checklist{padding-left:1.75rem}.doc ul.checklist p>i.fa-check-square-o:first-child,.doc ul.checklist p>i.fa-square-o:first-child{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:1.25rem;margin-left:-1.25rem}.doc ul.checklist i.fa-check-square-o::before{content:"\2713"}.doc ul.checklist i.fa-square-o::before{content:"\274f"}.doc .dlist .dlist,.doc .dlist .olist,.doc .dlist .ulist,.doc .olist .dlist,.doc .olist .olist,.doc .olist .ulist,.doc .olist li+li,.doc .ulist .dlist,.doc .ulist .olist,.doc .ulist .ulist,.doc .ulist li+li{margin-top:.5rem}.doc .admonitionblock .listingblock,.doc .olist .listingblock,.doc .ulist .listingblock{padding:0}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .videoblock .title,.doc table.tableblock caption{color:#5d5d5d;font-size:.88889rem;font-style:italic;font-weight:500;-ms-hyphens:none;hyphens:none;letter-spacing:.01em;padding-bottom:.075rem}.doc table.tableblock caption{text-align:left}.doc .olist .title,.doc .ulist .title{font-style:italic;font-weight:500;margin-bottom:.25rem}.doc .imageblock .title,.doc .videoblock .title{margin-top:.5rem;padding-bottom:0}.doc details{margin-left:1rem}.doc details>summary{display:block;position:relative;line-height:1.6;margin-bottom:.5rem}.doc details>summary::-webkit-details-marker{display:none}.doc details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1rem;-webkit-transform:translateX(15%);transform:translateX(15%)}.doc details[open]>summary::before{border-color:currentColor transparent transparent;border-width:.5rem .3rem 0;-webkit-transform:translateY(15%);transform:translateY(15%)}.doc details>summary::after{content:"";width:1rem;height:1em;position:absolute;top:.3em;left:-1rem}.doc details.result{margin-top:.25rem}.doc details.result>summary{color:#5d5d5d;font-style:italic;margin-bottom:0}.doc details.result>.content{margin-left:-1rem}.doc .exampleblock>.content,.doc details.result>.content{background:#fff;border:.25rem solid #5d5d5d;border-radius:.5rem;padding:.75rem}.doc .exampleblock>.content::after,.doc details.result>.content::after{content:"";display:table;clear:both}.doc .exampleblock>.content>:first-child,.doc details>.content>:first-child{margin-top:0}.doc .sidebarblock{background:#e1e1e1;border-radius:.75rem;padding:.75rem 1.5rem}.doc .sidebarblock>.content>.title{font-size:1.25rem;font-weight:500;line-height:1.3;margin-bottom:.5rem;text-align:center}.doc .sidebarblock>.content>.title+*,.doc .sidebarblock>.content>:not(.title):first-child{margin-top:0}.doc .listingblock.wrap pre,.doc table.tableblock pre{white-space:pre-wrap}.doc .listingblock pre:not(.highlight),.doc .literalblock pre,.doc pre.highlight>code{background:#fafafa;-webkit-box-shadow:inset 0 0 1.75px #e1e1e1;box-shadow:inset 0 0 1.75px #e1e1e1;display:block;overflow-x:auto;padding:.875em}.doc .listingblock>.content{position:relative}.doc .source-toolbox{display:-webkit-box;display:-ms-flexbox;display:flex;visibility:hidden;position:absolute;top:.25rem;right:.5rem;color:grey;font-family:Roboto,sans-serif;font-size:.72222rem;line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1}.doc .listingblock:hover .source-toolbox{visibility:visible}.doc .source-toolbox .source-lang{text-transform:uppercase;letter-spacing:.075em}.doc .source-toolbox>:not(:last-child)::after{content:"|";letter-spacing:0;padding:0 1ch}.doc .source-toolbox .copy-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:none;color:inherit;outline:none;padding:0;font-size:inherit;line-height:inherit;width:1em;height:1em}.doc .source-toolbox .copy-icon{-webkit-box-flex:0;-ms-flex:none;flex:none;width:inherit;height:inherit}.doc .source-toolbox img.copy-icon{-webkit-filter:invert(50.2%);filter:invert(50.2%)}.doc .source-toolbox svg.copy-icon{fill:currentColor}.doc .source-toolbox .copy-toast{-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;background-color:#333;border-radius:.25em;padding:.5em;color:#fff;cursor:auto;opacity:0;-webkit-transition:opacity .5s ease .5s;transition:opacity .5s ease .5s}.doc .source-toolbox .copy-toast::after{content:"";position:absolute;top:0;width:1em;height:1em;border:.55em solid transparent;border-left-color:#333;-webkit-transform:rotate(-90deg) translateX(50%) translateY(50%);transform:rotate(-90deg) translateX(50%) translateY(50%);-webkit-transform-origin:left;transform-origin:left}.doc .source-toolbox .copy-button.clicked .copy-toast{opacity:1;-webkit-transition:none;transition:none}.doc .language-console .hljs-meta{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.doc .dlist dt{font-style:italic}.doc .dlist dd{margin:0 0 0 1.5rem}.doc .dlist dd+dt,.doc .dlist dd>p:first-child{margin-top:.5rem}.doc td.hdlist1,.doc td.hdlist2{padding:.5rem 0 0;vertical-align:top}.doc tr:first-child>.hdlist1,.doc tr:first-child>.hdlist2{padding-top:0}.doc td.hdlist1{font-weight:500;padding-right:.25rem}.doc td.hdlist2{padding-left:.25rem}.doc .colist{font-size:.88889rem;margin:.25rem 0 -.25rem}.doc .colist>table>tbody>tr>:first-child,.doc .colist>table>tr>:first-child{padding:.25em .5rem 0;vertical-align:top}.doc .colist>table>tbody>tr>:last-child,.doc .colist>table>tr>:last-child{padding:.25rem 0}.doc .conum[data-value]{border:1px solid;border-radius:100%;display:inline-block;font-family:Roboto,sans-serif;font-size:.75rem;font-style:normal;line-height:1.2;text-align:center;width:1.25em;height:1.25em;letter-spacing:-.25ex;text-indent:-.25ex}.doc .conum[data-value]::after{content:attr(data-value)}.doc .conum[data-value]+b{display:none}.doc hr{border:solid #e1e1e1;border-width:2px 0 0;height:0}.doc b.button{white-space:nowrap}.doc b.button::before{content:"[";padding-right:.25em}.doc b.button::after{content:"]";padding-left:.25em}.doc kbd{display:inline-block;font-size:.66667rem;background:#fafafa;border:1px solid #c1c1c1;border-radius:.25em;-webkit-box-shadow:0 1px 0 #c1c1c1,0 0 0 .1em #fff inset;box-shadow:0 1px 0 #c1c1c1,inset 0 0 0 .1em #fff;padding:.25em .5em;vertical-align:text-bottom;white-space:nowrap}.doc .keyseq,.doc kbd{line-height:1}.doc .keyseq{font-size:.88889rem}.doc .keyseq kbd{margin:0 .125em}.doc .keyseq kbd:first-child{margin-left:0}.doc .keyseq kbd:last-child{margin-right:0}.doc .menuseq,.doc .path{-ms-hyphens:none;hyphens:none}.doc .menuseq i.caret::before{content:"\203a";font-size:1.1em;font-weight:500;line-height:.90909}.doc :not(pre).nowrap{white-space:nowrap}.doc .nobreak{-ms-hyphens:none;hyphens:none;word-wrap:normal}.doc :not(pre).pre-wrap{white-space:pre-wrap}#footnotes{font-size:.85em;line-height:1.5;margin:2rem -.5rem 0}.doc td.tableblock>.content #footnotes{margin:2rem 0 0}#footnotes hr{border-top-width:1px;margin-top:0;width:20%}#footnotes .footnote{margin:.5em 0 0 1em}#footnotes .footnote+.footnote{margin-top:.25em}#footnotes .footnote>a:first-of-type{display:inline-block;margin-left:-2em;text-align:right;width:1.5em}nav.pagination{border-top:1px solid #e1e1e1;line-height:1;margin:2rem -1rem -1rem;padding:.75rem 1rem 0}nav.pagination,nav.pagination span{display:-webkit-box;display:-ms-flexbox;display:flex}nav.pagination span{-webkit-box-flex:50%;-ms-flex:50%;flex:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}nav.pagination .prev{padding-right:.5rem}nav.pagination .next{margin-left:auto;padding-left:.5rem;text-align:right}nav.pagination span::before{color:#8e8e8e;font-size:.75em;padding-bottom:.1em}nav.pagination .prev::before{content:"Prev"}nav.pagination .next::before{content:"Next"}nav.pagination a{font-weight:500;line-height:1.3;position:relative}nav.pagination a::after,nav.pagination a::before{color:#8e8e8e;font-weight:400;font-size:1.5em;line-height:.75;position:absolute;top:0;width:1rem}nav.pagination .prev a::before{content:"\2039";-webkit-transform:translateX(-100%);transform:translateX(-100%)}nav.pagination .next a::after{content:"\203a"}@media screen and (max-width:1023.5px){html.is-clipped--navbar{overflow-y:hidden}}body{padding-top:3.5rem}.navbar{background:#191919;color:#fff;font-size:.88889rem;height:3.5rem;position:fixed;top:0;width:100%;z-index:4}.navbar a{text-decoration:none}.navbar-brand{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto;flex:auto;padding-left:1rem}.navbar-brand .navbar-item{color:#fff}.navbar-brand .navbar-item:first-child{-ms-flex-item-align:center;align-self:center;padding:0;font-size:1.22222rem;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1}.navbar-brand .navbar-item:first-child a{color:inherit;word-wrap:normal}.navbar-brand .navbar-item:first-child :not(:last-child){padding-right:.375rem}.navbar-brand .navbar-item.search{-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#search-input{color:#333;font-family:inherit;font-size:.95rem;width:150px;border:1px solid #dbdbdb;border-radius:.1em;line-height:1.5;padding:0 .25em}#search-input:disabled{background-color:#dbdbdb;cursor:not-allowed;pointer-events:all!important}#search-input:disabled::-webkit-input-placeholder{color:#4c4c4c}#search-input:disabled::-moz-placeholder{color:#4c4c4c}#search-input:disabled:-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::placeholder{color:#4c4c4c}#search-input:focus{outline:none}.navbar-burger{background:none;border:none;outline:none;line-height:1;position:relative;width:3rem;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;min-width:0}.navbar-burger span{background-color:#fff;height:1.5px;width:1rem}.navbar-burger:not(.is-active) span{-webkit-transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out}.navbar-burger span+span{margin-top:.25rem}.navbar-burger.is-active span+span{margin-top:-1.5px}.navbar-burger.is-active span:first-child{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.6;padding:.5rem 1rem}.navbar-item.has-dropdown{padding:0}.navbar-item .icon{width:1.25rem;height:1.25rem;display:block}.navbar-item .icon img,.navbar-item .icon svg{fill:currentColor;width:inherit;height:inherit}.navbar-link{padding-right:2.5em}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item.has-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-dropdown .navbar-item small{color:#8e8e8e;font-size:.66667rem}.navbar-divider{background-color:#e1e1e1;border:none;height:1px;margin:.25rem 0}.navbar .button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border:1px solid #e1e1e1;border-radius:.15rem;height:1.75rem;color:#222;padding:0 .75em;white-space:nowrap}@media screen and (max-width:768.5px){.navbar-brand .navbar-item.search{padding-left:0;padding-right:0}}@media screen and (min-width:769px){#search-input{width:200px}}@media screen and (max-width:1023.5px){.navbar-brand{height:inherit}.navbar-brand .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background:#fff;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);max-height:calc(100vh - 3.5rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;padding:.5rem 0}.navbar-menu:not(.is-active){display:none}.navbar-menu .navbar-link:hover,.navbar-menu a.navbar-item:hover{background:#f5f5f5}}@media screen and (min-width:1024px){.navbar-burger{display:none}.navbar,.navbar-end,.navbar-item,.navbar-link,.navbar-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-item,.navbar-link{position:relative;-webkit-box-flex:0;-ms-flex:none;flex:none}.navbar-item:not(.has-dropdown),.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-link::after{border-width:0 0 1px 1px;border-style:solid;content:"";display:block;height:.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);width:.5em;margin-top:-.375em;right:1.125em;top:50%}.navbar-end .navbar-link,.navbar-end>.navbar-item{color:#fff}.navbar-end .navbar-item.has-dropdown:hover .navbar-link,.navbar-end .navbar-link:hover,.navbar-end>a.navbar-item:hover{background:#000;color:#fff}.navbar-end .navbar-link::after{border-color:currentColor}.navbar-dropdown{background:#fff;border:1px solid #e1e1e1;border-top:none;border-radius:0 0 .25rem .25rem;display:none;top:100%;left:0;min-width:100%;position:absolute}.navbar-dropdown .navbar-item{padding:.5rem 3rem .5rem 1rem;white-space:nowrap}.navbar-dropdown .navbar-item small{position:relative;right:-2rem}.navbar-dropdown .navbar-item:last-child{border-radius:inherit}.navbar-dropdown.is-right{left:auto;right:0}.navbar-dropdown a.navbar-item:hover{background:#f5f5f5}}footer.footer{background-color:#e1e1e1;color:#5d5d5d;font-size:.83333rem;line-height:1.6;padding:1.5rem}.footer p{margin:.5rem 0}.footer a{color:#191919} +@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2) format("woff2"),url(../font/roboto-latin-400-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-latin-400-italic.woff2) format("woff2"),url(../font/roboto-latin-400-italic.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-cyrillic-400-italic.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:600;src:url(../font/roboto-latin-500-normal.woff2) format("woff2"),url(../font/roboto-latin-500-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:600;src:url(../font/roboto-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:600;src:url(../font/roboto-latin-500-italic.woff2) format("woff2"),url(../font/roboto-latin-500-italic.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:600;src:url(../font/roboto-cyrillic-500-italic.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../font/roboto-mono-latin-400-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-400-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;src:url(../font/roboto-mono-latin-500-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-500-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:1.0625em;height:100%;scroll-behavior:smooth}@media screen and (min-width:1024px){html{font-size:1.125em}}body{background:#fff;color:#222;font-family:Roboto,sans-serif;line-height:1.15;margin:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline}a:active{background-color:none}code,kbd,pre{font-family:Roboto Mono,monospace}b,dt,strong,th{font-weight:600}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}em em{font-style:normal}strong strong{font-weight:400}button{cursor:pointer;font-family:inherit;font-size:1em;line-height:1.15;margin:0}button::-moz-focus-inner{border:none;padding:0}summary{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}table{border-collapse:collapse;word-wrap:normal}object[type="image/svg+xml"]:not([width]){width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}::-webkit-input-placeholder{opacity:.5}::-moz-placeholder{opacity:.5}:-ms-input-placeholder{opacity:.5}::-ms-input-placeholder{opacity:.5}::placeholder{opacity:.5}@media (pointer:fine){@supports (scrollbar-width:thin){html{scrollbar-color:#c1c1c1 #fafafa}body *{scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}}html::-webkit-scrollbar{background-color:#fafafa;height:12px;width:12px}body ::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#c1c1c1;border:3px solid transparent;border-radius:12px}body ::-webkit-scrollbar-thumb{border-width:1.75px;border-radius:6px}::-webkit-scrollbar-thumb:hover{background-color:#9c9c9c}}@media screen and (min-width:1024px){.body{display:-webkit-box;display:-ms-flexbox;display:flex}}@media screen and (max-width:1023.5px){html.is-clipped--nav{overflow-y:hidden}}.nav-container{position:fixed;top:3.5rem;left:0;width:100%;font-size:.94444rem;z-index:1;visibility:hidden}@media screen and (min-width:769px){.nav-container{width:15rem}}@media screen and (min-width:1024px){.nav-container{font-size:.86111rem;-webkit-box-flex:0;-ms-flex:none;flex:none;position:static;top:0;visibility:visible}}.nav-container.is-active{visibility:visible}.nav{background:#fafafa;position:relative;top:2.5rem;height:calc(100vh - 6rem)}@media screen and (min-width:769px){.nav{-webkit-box-shadow:.5px 0 3px #c1c1c1;box-shadow:.5px 0 3px #c1c1c1}}@media screen and (min-width:1024px){.nav{top:3.5rem;-webkit-box-shadow:none;box-shadow:none;position:sticky;height:calc(100vh - 3.5rem)}}.nav a{color:inherit}.nav .panels{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:inherit}.nav-panel-menu{overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;height:calc(100% - 2.5rem)}.nav-panel-menu:not(.is-active) .nav-menu{opacity:.75}.nav-panel-menu:not(.is-active)::after{content:"";background:rgba(0,0,0,.5);display:block;position:absolute;top:0;right:0;bottom:0;left:0}.nav-menu{min-height:100%;padding:.5rem .75rem;line-height:1.35;position:relative}.nav-menu-toggle{background:transparent url(../img/octicons-16.svg#view-unfold) no-repeat 50%/100% 100%;border:none;float:right;height:1em;margin-right:-.5rem;opacity:.75;outline:none;padding:0;position:sticky;top:.85rem;visibility:hidden;width:1em}.nav-menu-toggle.is-active{background-image:url(../img/octicons-16.svg#view-fold)}.nav-panel-menu.is-active:hover .nav-menu-toggle{visibility:visible}.nav-menu h3.title{color:#424242;font-size:inherit;font-weight:600;margin:0;padding:.25em 0 .125em}.nav-list{list-style:none;margin:0 0 0 .75rem;padding:0}.nav-menu>.nav-list+.nav-list{margin-top:.5rem}.nav-item{margin-top:.5em}.nav-item-toggle~.nav-list{padding-bottom:.125rem}.nav-item[data-depth="0"]>.nav-list:first-child{display:block;margin:0}.nav-item:not(.is-active)>.nav-list{display:none}.nav-item-toggle{background:transparent url(../img/caret.svg) no-repeat 50%/50%;border:none;outline:none;line-height:inherit;padding:0;position:absolute;height:1.35em;width:1.35em;margin-top:-.05em;margin-left:-1.35em}.nav-item.is-active>.nav-item-toggle{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.is-current-page>.nav-link,.is-current-page>.nav-text{font-weight:600}.nav-panel-explore{background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0}.nav-panel-explore:not(:first-child){top:auto;max-height:calc(50% + 2.5rem)}.nav-panel-explore .context{font-size:.83333rem;-ms-flex-negative:0;flex-shrink:0;color:#5d5d5d;-webkit-box-shadow:0 -1px 0 #e1e1e1;box-shadow:0 -1px 0 #e1e1e1;padding:0 .5rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1;height:2.5rem}.nav-panel-explore:not(:first-child) .context{cursor:pointer}.nav-panel-explore .context .version{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.nav-panel-explore .context .version::after{content:"";background:url(../img/chevron.svg) no-repeat 100%/auto 100%;width:1.25em;height:.75em}.nav-panel-explore .components{line-height:1.6;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-shadow:inset 0 1px 5px #e1e1e1;box-shadow:inset 0 1px 5px #e1e1e1;background:#f0f0f0;padding:.5rem .75rem 0;margin:0;overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;max-height:100%;display:block}.nav-panel-explore:not(.is-active) .components{display:none}.nav-panel-explore .component{display:block}.nav-panel-explore .component+.component{margin-top:.5rem}.nav-panel-explore .component:last-child{margin-bottom:.75rem}.nav-panel-explore .component .title{font-weight:600}.nav-panel-explore .versions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-top:-.25rem;line-height:1;list-style:none}.nav-panel-explore .component .version{margin:.375rem .375rem 0 0}.nav-panel-explore .component .version a{border:1px solid #c1c1c1;border-radius:.25rem;opacity:.75;white-space:nowrap;padding:.125em .25em;display:inherit}.nav-panel-explore .component .is-current a{border-color:currentColor;opacity:.9;font-weight:600}@media screen and (max-width:1023.5px){aside.toc.sidebar{display:none}main>.content{overflow-x:auto}}@media screen and (min-width:1024px){main{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}main>.content{display:-webkit-box;display:-ms-flexbox;display:flex}aside.toc.embedded{display:none}aside.toc.sidebar{-webkit-box-flex:0;-ms-flex:0 0 9rem;flex:0 0 9rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media screen and (min-width:1216px){aside.toc.sidebar{-ms-flex-preferred-size:12rem;flex-basis:12rem}}.toolbar{color:#5d5d5d;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fafafa;-webkit-box-shadow:0 1px 0 #e1e1e1;box-shadow:0 1px 0 #e1e1e1;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.83333rem;height:2.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:sticky;top:3.5rem;z-index:2}.toolbar a{color:inherit}.nav-toggle{background:url(../img/menu.svg) no-repeat 50% 47.5%;background-size:49%;border:none;outline:none;line-height:inherit;padding:0;height:2.5rem;width:2.5rem;margin-right:-.25rem}@media screen and (min-width:1024px){.nav-toggle{display:none}}.nav-toggle.is-active{background-image:url(../img/back.svg);background-size:41.5%}.home-link{display:block;background:url(../img/home-o.svg) no-repeat 50%;height:1.25rem;width:1.25rem;margin:.625rem}.home-link.is-current,.home-link:hover{background-image:url(../img/home.svg)}.edit-this-page{display:none;padding-right:.5rem}@media screen and (min-width:1024px){.edit-this-page{display:block}}.toolbar .edit-this-page a{color:#8e8e8e}.breadcrumbs{display:none;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;padding:0 .5rem 0 .75rem;line-height:1.35}@media screen and (min-width:1024px){.breadcrumbs{display:block}}a+.breadcrumbs{padding-left:.05rem}.breadcrumbs ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline;margin:0}.breadcrumbs li::after{content:"/";padding:0 .5rem}.breadcrumbs li:last-of-type::after{content:none}.page-versions{margin:0 .2rem 0 auto;position:relative;line-height:1}@media screen and (min-width:1024px){.page-versions{margin-right:.7rem}}.page-versions .version-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem .5rem;position:relative;z-index:3}.page-versions .version-menu{display:-webkit-box;display:-ms-flexbox;display:flex;min-width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#f0f0f0)) no-repeat;background:linear-gradient(180deg,#f0f0f0 0,#f0f0f0) no-repeat;padding:1.375rem 1.5rem .5rem .5rem;position:absolute;top:0;right:0;white-space:nowrap}.page-versions:not(.is-active) .version-menu{display:none}.page-versions .version{display:block;padding-top:.5rem}.page-versions .version.is-current{display:none}.page-versions .version.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}.toc-menu{color:#5d5d5d}.toc.sidebar .toc-menu{margin-right:.75rem;position:sticky;top:6rem}.toc .toc-menu h3{color:#333;font-size:.88889rem;font-weight:600;line-height:1.3;margin:0 -.5px;padding-bottom:.25rem}.toc.sidebar .toc-menu h3{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:2.5rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.toc .toc-menu ul{font-size:.83333rem;line-height:1.2;list-style:none;margin:0;padding:0}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 8.5rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none}@supports (scrollbar-width:none){.toc.sidebar .toc-menu ul{scrollbar-width:none}}.toc .toc-menu ul::-webkit-scrollbar{width:0;height:0}@media screen and (min-width:1024px){.toc .toc-menu h3{font-size:.83333rem}.toc .toc-menu ul{font-size:.75rem}}.toc .toc-menu li{margin:0}.toc .toc-menu li[data-level="2"] a{padding-left:1.25rem}.toc .toc-menu li[data-level="3"] a{padding-left:2rem}.toc .toc-menu a{color:inherit;border-left:2px solid #e1e1e1;display:inline-block;padding:.25rem 0 .25rem .5rem;text-decoration:none}.sidebar.toc .toc-menu a{display:block;outline:none}.toc .toc-menu a:hover{color:#1565c0}.toc .toc-menu a.is-active{border-left-color:#1565c0;color:#333}.sidebar.toc .toc-menu a:focus{background:#fafafa}.toc .toc-menu .is-hidden-toc{display:none!important}.doc{color:#333;font-size:inherit;-ms-hyphens:auto;hyphens:auto;line-height:1.6;margin:0 auto;max-width:40rem;padding:0 1rem 4rem}@media screen and (min-width:1024px){.doc{-webkit-box-flex:1;-ms-flex:auto;flex:auto;font-size:.94444rem;margin:0 2rem;max-width:46rem;min-width:0}}.doc h1,.doc h2,.doc h3,.doc h4,.doc h5,.doc h6{color:#191919;font-weight:400;-ms-hyphens:none;hyphens:none;line-height:1.3;margin:1rem 0 0}.doc>h1.page:first-child{font-size:2rem;margin:1.5rem 0}@media screen and (min-width:769px){.doc>h1.page:first-child{margin-top:2.5rem}}.doc>h1.page:first-child+aside.toc.embedded{margin-top:-.5rem}.doc>h2#name+.sectionbody{margin-top:1rem}#preamble+.sect1,.doc .sect1+.sect1{margin-top:2rem}.doc h1.sect0{background:#f0f0f0;font-size:1.8em;margin:1.5rem -1rem 0;padding:.5rem 1rem}.doc h2:not(.discrete){border-bottom:1px solid #e1e1e1;margin-left:-1rem;margin-right:-1rem;padding:.4rem 1rem .1rem}.doc h3:not(.discrete),.doc h4:not(.discrete){font-weight:600}.doc h1 .anchor,.doc h2 .anchor,.doc h3 .anchor,.doc h4 .anchor,.doc h5 .anchor,.doc h6 .anchor{position:absolute;text-decoration:none;width:1.75ex;margin-left:-1.5ex;visibility:hidden;font-size:.8em;font-weight:400;padding-top:.05em}.doc h1 .anchor::before,.doc h2 .anchor::before,.doc h3 .anchor::before,.doc h4 .anchor::before,.doc h5 .anchor::before,.doc h6 .anchor::before{content:"\00a7"}.doc h1:hover .anchor,.doc h2:hover .anchor,.doc h3:hover .anchor,.doc h4:hover .anchor,.doc h5:hover .anchor,.doc h6:hover .anchor{visibility:visible}.doc dl,.doc p{margin:0}.doc a{color:#1565c0}.doc a:hover{color:#104d92}.doc a.bare{-ms-hyphens:none;hyphens:none}.doc a.unresolved{color:#d32f2f}.doc i.fa{-ms-hyphens:none;hyphens:none;font-style:normal}.doc .colist>table code,.doc p code,.doc thead code{color:#222;background:#fafafa;border-radius:.25em;font-size:.95em;padding:.125em .25em}.doc code,.doc pre{-ms-hyphens:none;hyphens:none}.doc pre{font-size:.88889rem;line-height:1.5;margin:0}.doc blockquote{margin:0}.doc .paragraph.lead>p{font-size:1rem}.doc .right{float:right}.doc .left{float:left}.doc .float-gap.right{margin:0 1rem 1rem 0}.doc .float-gap.left{margin:0 0 1rem 1rem}.doc .float-group::after{content:"";display:table;clear:both}.doc .text-left{text-align:left}.doc .text-center{text-align:center}.doc .text-right{text-align:right}.doc .text-justify{text-align:justify}.doc .stretch{width:100%}.doc .big{font-size:larger}.doc .small{font-size:smaller}.doc .underline{text-decoration:underline}.doc .line-through{text-decoration:line-through}.doc .dlist,.doc .exampleblock,.doc .hdlist,.doc .imageblock,.doc .listingblock,.doc .literalblock,.doc .olist,.doc .paragraph,.doc .partintro,.doc .quoteblock,.doc .sidebarblock,.doc .tabs,.doc .ulist,.doc .verseblock,.doc .videoblock,.doc details,.doc hr{margin:1rem 0 0}.doc .tablecontainer,.doc .tablecontainer+*,.doc :not(.tablecontainer)>table.tableblock,.doc :not(.tablecontainer)>table.tableblock+*,.doc>table.tableblock,.doc>table.tableblock+*{margin-top:1.5rem}.doc table.tableblock{font-size:.83333rem}.doc p.tableblock+p.tableblock{margin-top:.5rem}.doc table.tableblock pre{font-size:inherit}.doc td.tableblock>.content{word-wrap:anywhere}.doc td.tableblock>.content>:first-child{margin-top:0}.doc table.tableblock td,.doc table.tableblock th{padding:.5rem}.doc table.tableblock,.doc table.tableblock>*>tr>*{border:0 solid #e1e1e1}.doc table.grid-all>*>tr>*{border-width:1px}.doc table.grid-cols>*>tr>*{border-width:0 1px}.doc table.grid-rows>*>tr>*{border-width:1px 0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{border-bottom-width:2.5px}.doc table.frame-all{border-width:1px}.doc table.frame-ends{border-width:1px 0}.doc table.frame-sides{border-width:0 1px}.doc table.frame-none>colgroup+*>:first-child>*,.doc table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}.doc table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}.doc table.frame-ends>*>tr>:first-child,.doc table.frame-none>*>tr>:first-child{border-left-width:0}.doc table.frame-ends>*>tr>:last-child,.doc table.frame-none>*>tr>:last-child{border-right-width:0}.doc table.stripes-all>tbody>tr,.doc table.stripes-even>tbody>tr:nth-of-type(2n),.doc table.stripes-hover>tbody>tr:hover,.doc table.stripes-odd>tbody>tr:nth-of-type(odd){background:#fafafa}.doc table.tableblock>tfoot{background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#fff));background:linear-gradient(180deg,#f0f0f0 0,#fff)}.doc .halign-left{text-align:left}.doc .halign-right{text-align:right}.doc .halign-center{text-align:center}.doc .valign-top{vertical-align:top}.doc .valign-bottom{vertical-align:bottom}.doc .valign-middle{vertical-align:middle}.doc .admonitionblock{margin:1.4rem 0 0}.doc .admonitionblock p,.doc .admonitionblock td.content{font-size:.88889rem}.doc .admonitionblock td.content>.title+*,.doc .admonitionblock td.content>:not(.title):first-child{margin-top:0}.doc .admonitionblock td.content pre{font-size:.83333rem}.doc .admonitionblock>table{table-layout:fixed;position:relative;width:100%}.doc .admonitionblock td.content{padding:1rem 1rem .75rem;background:#fafafa;width:100%;word-wrap:anywhere}.doc .admonitionblock td.icon{font-size:.83333rem;left:0;line-height:1;padding:0;position:absolute;top:0;-webkit-transform:translate(-.5rem,-50%);transform:translate(-.5rem,-50%)}.doc .admonitionblock td.icon i{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:.45rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-filter:initial;filter:none;height:1.25rem;padding:0 .5rem;vertical-align:initial;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.doc .admonitionblock td.icon i::after{content:attr(title);font-weight:600;font-style:normal;text-transform:uppercase}.doc .admonitionblock td.icon i.icon-caution{background-color:#a0439c;color:#fff}.doc .admonitionblock td.icon i.icon-important{background-color:#d32f2f;color:#fff}.doc .admonitionblock td.icon i.icon-note{background-color:#217ee7;color:#fff}.doc .admonitionblock td.icon i.icon-tip{background-color:#41af46;color:#fff}.doc .admonitionblock td.icon i.icon-warning{background-color:#e18114;color:#fff}.doc .imageblock,.doc .videoblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.doc .imageblock.text-left,.doc .videoblock.text-left{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.doc .imageblock.text-right,.doc .videoblock.text-right{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.doc .image>img,.doc .image>object,.doc .image>svg,.doc .imageblock img,.doc .imageblock object,.doc .imageblock svg{display:inline-block;height:auto;max-width:100%;vertical-align:middle}.doc .image:not(.left):not(.right)>img{margin-top:-.2em}.doc .videoblock iframe,.doc .videoblock video{max-width:100%;vertical-align:middle}#preamble .abstract blockquote{background:#f0f0f0;border-left:5px solid #e1e1e1;color:#4a4a4a;font-size:.88889rem;padding:.75em 1em}.doc .quoteblock,.doc .verseblock{background:#fafafa;border-left:5px solid #5d5d5d;color:#5d5d5d}.doc .quoteblock{padding:.25rem 2rem 1.25rem}.doc .quoteblock .attribution{color:#8e8e8e;font-size:.83333rem;margin-top:.75rem}.doc .quoteblock blockquote{margin-top:1rem}.doc .quoteblock .paragraph{font-style:italic}.doc .quoteblock cite{padding-left:1em}.doc .verseblock{font-size:1.15em;padding:1rem 2rem}.doc .verseblock pre{font-family:inherit;font-size:inherit}.doc ol,.doc ul{margin:0;padding:0 0 0 2rem}.doc ol.none,.doc ol.unnumbered,.doc ol.unstyled,.doc ul.checklist,.doc ul.no-bullet,.doc ul.none,.doc ul.unstyled{list-style-type:none}.doc ol.unnumbered,.doc ul.no-bullet{padding-left:1.25rem}.doc ol.unstyled,.doc ul.unstyled{padding-left:0}.doc ul.circle{list-style-type:circle}.doc ul.disc{list-style-type:disc}.doc ul.square{list-style-type:square}.doc ul.circle ul:not([class]),.doc ul.disc ul:not([class]),.doc ul.square ul:not([class]){list-style:inherit}.doc ol.arabic{list-style-type:decimal}.doc ol.decimal{list-style-type:decimal-leading-zero}.doc ol.loweralpha{list-style-type:lower-alpha}.doc ol.upperalpha{list-style-type:upper-alpha}.doc ol.lowerroman{list-style-type:lower-roman}.doc ol.upperroman{list-style-type:upper-roman}.doc ol.lowergreek{list-style-type:lower-greek}.doc ul.checklist{padding-left:1.75rem}.doc ul.checklist p>i.fa-check-square-o:first-child,.doc ul.checklist p>i.fa-square-o:first-child{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:1.25rem;margin-left:-1.25rem}.doc ul.checklist i.fa-check-square-o::before{content:"\2713"}.doc ul.checklist i.fa-square-o::before{content:"\274f"}.doc .dlist .dlist,.doc .dlist .olist,.doc .dlist .ulist,.doc .olist .dlist,.doc .olist .olist,.doc .olist .ulist,.doc .olist li+li,.doc .ulist .dlist,.doc .ulist .olist,.doc .ulist .ulist,.doc .ulist li+li{margin-top:.5rem}.doc .admonitionblock .listingblock,.doc .olist .listingblock,.doc .ulist .listingblock{padding:0}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .videoblock .title,.doc table.tableblock caption{color:#5d5d5d;font-size:.88889rem;font-style:italic;font-weight:600;-ms-hyphens:none;hyphens:none;letter-spacing:.01em;padding-bottom:.075rem}.doc table.tableblock caption{text-align:left}.doc .olist .title,.doc .ulist .title{font-style:italic;font-weight:600;margin-bottom:.25rem}.doc .imageblock .title,.doc .videoblock .title{margin-top:.5rem;padding-bottom:0}.doc details{margin-left:1rem}.doc details>summary{display:block;position:relative;line-height:1.6;margin-bottom:.5rem}.doc details>summary::-webkit-details-marker{display:none}.doc details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1rem;-webkit-transform:translateX(15%);transform:translateX(15%)}.doc details[open]>summary::before{border-color:currentColor transparent transparent;border-width:.5rem .3rem 0;-webkit-transform:translateY(15%);transform:translateY(15%)}.doc details>summary::after{content:"";width:1rem;height:1em;position:absolute;top:.3em;left:-1rem}.doc details.result{margin-top:.25rem}.doc details.result>summary{color:#5d5d5d;font-style:italic;margin-bottom:0}.doc details.result>.content{margin-left:-1rem}.doc .exampleblock>.content,.doc details.result>.content{background:#fff;border:.25rem solid #5d5d5d;border-radius:.5rem;padding:.75rem}.doc .exampleblock>.content::after,.doc details.result>.content::after{content:"";display:table;clear:both}.doc .exampleblock>.content>:first-child,.doc details>.content>:first-child{margin-top:0}.doc .sidebarblock{background:#e1e1e1;border-radius:.75rem;padding:.75rem 1.5rem}.doc .sidebarblock>.content>.title{font-size:1.25rem;font-weight:600;line-height:1.3;margin-bottom:.5rem;text-align:center}.doc .sidebarblock>.content>.title+*,.doc .sidebarblock>.content>:not(.title):first-child{margin-top:0}.doc .listingblock.wrap pre,.doc table.tableblock pre{white-space:pre-wrap}.doc .listingblock pre:not(.highlight),.doc .literalblock pre,.doc pre.highlight>code{background:#fafafa;-webkit-box-shadow:inset 0 0 1.75px #e1e1e1;box-shadow:inset 0 0 1.75px #e1e1e1;display:block;overflow-x:auto;padding:.875em}.doc .listingblock>.content{position:relative}.doc .source-toolbox{display:-webkit-box;display:-ms-flexbox;display:flex;visibility:hidden;position:absolute;top:.25rem;right:.5rem;color:grey;font-family:Roboto,sans-serif;font-size:.72222rem;line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1}.doc .listingblock:hover .source-toolbox{visibility:visible}.doc .source-toolbox .source-lang{text-transform:uppercase;letter-spacing:.075em}.doc .source-toolbox>:not(:last-child)::after{content:"|";letter-spacing:0;padding:0 1ch}.doc .source-toolbox .copy-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:none;color:inherit;outline:none;padding:0;font-size:inherit;line-height:inherit;width:1em;height:1em}.doc .source-toolbox .copy-icon{-webkit-box-flex:0;-ms-flex:none;flex:none;width:inherit;height:inherit}.doc .source-toolbox img.copy-icon{-webkit-filter:invert(50.2%);filter:invert(50.2%)}.doc .source-toolbox svg.copy-icon{fill:currentColor}.doc .source-toolbox .copy-toast{-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;background-color:#333;border-radius:.25em;padding:.5em;color:#fff;cursor:auto;opacity:0;-webkit-transition:opacity .5s ease .5s;transition:opacity .5s ease .5s}.doc .source-toolbox .copy-toast::after{content:"";position:absolute;top:0;width:1em;height:1em;border:.55em solid transparent;border-left-color:#333;-webkit-transform:rotate(-90deg) translateX(50%) translateY(50%);transform:rotate(-90deg) translateX(50%) translateY(50%);-webkit-transform-origin:left;transform-origin:left}.doc .source-toolbox .copy-button.clicked .copy-toast{opacity:1;-webkit-transition:none;transition:none}.doc .language-console .hljs-meta{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.doc .dlist dt{font-style:italic}.doc .dlist dd{margin:0 0 0 1.5rem}.doc .dlist dd+dt,.doc .dlist dd>p:first-child{margin-top:.5rem}.doc td.hdlist1,.doc td.hdlist2{padding:.5rem 0 0;vertical-align:top}.doc tr:first-child>.hdlist1,.doc tr:first-child>.hdlist2{padding-top:0}.doc td.hdlist1{font-weight:600;padding-right:.25rem}.doc td.hdlist2{padding-left:.25rem}.doc .colist{font-size:.88889rem;margin:.25rem 0 -.25rem}.doc .colist>table>tbody>tr>:first-child,.doc .colist>table>tr>:first-child{padding:.25em .5rem 0;vertical-align:top}.doc .colist>table>tbody>tr>:last-child,.doc .colist>table>tr>:last-child{padding:.25rem 0}.doc .conum[data-value]{border:1px solid;border-radius:100%;display:inline-block;font-family:Roboto,sans-serif;font-size:.75rem;font-style:normal;line-height:1.2;text-align:center;width:1.25em;height:1.25em;letter-spacing:-.25ex;text-indent:-.25ex}.doc .conum[data-value]::after{content:attr(data-value)}.doc .conum[data-value]+b{display:none}.doc hr{border:solid #e1e1e1;border-width:2px 0 0;height:0}.doc b.button{white-space:nowrap}.doc b.button::before{content:"[";padding-right:.25em}.doc b.button::after{content:"]";padding-left:.25em}.doc kbd{display:inline-block;font-size:.66667rem;background:#fafafa;border:1px solid #c1c1c1;border-radius:.25em;-webkit-box-shadow:0 1px 0 #c1c1c1,0 0 0 .1em #fff inset;box-shadow:0 1px 0 #c1c1c1,inset 0 0 0 .1em #fff;padding:.25em .5em;vertical-align:text-bottom;white-space:nowrap}.doc .keyseq,.doc kbd{line-height:1}.doc .keyseq{font-size:.88889rem}.doc .keyseq kbd{margin:0 .125em}.doc .keyseq kbd:first-child{margin-left:0}.doc .keyseq kbd:last-child{margin-right:0}.doc .menuseq,.doc .path{-ms-hyphens:none;hyphens:none}.doc .menuseq i.caret::before{content:"\203a";font-size:1.1em;font-weight:600;line-height:.90909}.doc :not(pre).nowrap{white-space:nowrap}.doc .nobreak{-ms-hyphens:none;hyphens:none;word-wrap:normal}.doc :not(pre).pre-wrap{white-space:pre-wrap}#footnotes{font-size:.85em;line-height:1.5;margin:2rem -.5rem 0}.doc td.tableblock>.content #footnotes{margin:2rem 0 0}#footnotes hr{border-top-width:1px;margin-top:0;width:20%}#footnotes .footnote{margin:.5em 0 0 1em}#footnotes .footnote+.footnote{margin-top:.25em}#footnotes .footnote>a:first-of-type{display:inline-block;margin-left:-2em;text-align:right;width:1.5em}nav.pagination{border-top:1px solid #e1e1e1;line-height:1;margin:2rem -1rem -1rem;padding:.75rem 1rem 0}nav.pagination,nav.pagination span{display:-webkit-box;display:-ms-flexbox;display:flex}nav.pagination span{-webkit-box-flex:50%;-ms-flex:50%;flex:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}nav.pagination .prev{padding-right:.5rem}nav.pagination .next{margin-left:auto;padding-left:.5rem;text-align:right}nav.pagination span::before{color:#8e8e8e;font-size:.75em;padding-bottom:.1em}nav.pagination .prev::before{content:"Prev"}nav.pagination .next::before{content:"Next"}nav.pagination a{font-weight:600;line-height:1.3;position:relative}nav.pagination a::after,nav.pagination a::before{color:#8e8e8e;font-weight:400;font-size:1.5em;line-height:.75;position:absolute;top:0;width:1rem}nav.pagination .prev a::before{content:"\2039";-webkit-transform:translateX(-100%);transform:translateX(-100%)}nav.pagination .next a::after{content:"\203a"}@media screen and (max-width:1023.5px){html.is-clipped--navbar{overflow-y:hidden}}body{padding-top:3.5rem}.navbar{background:#191919;color:#fff;font-size:.88889rem;height:3.5rem;position:fixed;top:0;width:100%;z-index:4}.navbar a{text-decoration:none}.navbar-brand{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto;flex:auto;padding-left:1rem}.navbar-brand .navbar-item{color:#fff}.navbar-brand .navbar-item:first-child{-ms-flex-item-align:center;align-self:center;padding:0;font-size:1.22222rem;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1}.navbar-brand .navbar-item:first-child a{color:inherit;word-wrap:normal}.navbar-brand .navbar-item:first-child :not(:last-child){padding-right:.375rem}.navbar-brand .navbar-item.search{-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#search-input{color:#333;font-family:inherit;font-size:.95rem;width:150px;border:1px solid #dbdbdb;border-radius:.1em;line-height:1.5;padding:0 .25em}#search-input:disabled{background-color:#dbdbdb;cursor:not-allowed;pointer-events:all!important}#search-input:disabled::-webkit-input-placeholder{color:#4c4c4c}#search-input:disabled::-moz-placeholder{color:#4c4c4c}#search-input:disabled:-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::placeholder{color:#4c4c4c}#search-input:focus{outline:none}.navbar-burger{background:none;border:none;outline:none;line-height:1;position:relative;width:3rem;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;min-width:0}.navbar-burger span{background-color:#fff;height:1.5px;width:1rem}.navbar-burger:not(.is-active) span{-webkit-transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out}.navbar-burger span+span{margin-top:.25rem}.navbar-burger.is-active span+span{margin-top:-1.5px}.navbar-burger.is-active span:first-child{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.6;padding:.5rem 1rem}.navbar-item.has-dropdown{padding:0}.navbar-item .icon{width:1.25rem;height:1.25rem;display:block}.navbar-item .icon img,.navbar-item .icon svg{fill:currentColor;width:inherit;height:inherit}.navbar-link{padding-right:2.5em}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item.has-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-dropdown .navbar-item small{color:#8e8e8e;font-size:.66667rem}.navbar-divider{background-color:#e1e1e1;border:none;height:1px;margin:.25rem 0}.navbar .button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border:1px solid #e1e1e1;border-radius:.15rem;height:1.75rem;color:#222;padding:0 .75em;white-space:nowrap}@media screen and (max-width:768.5px){.navbar-brand .navbar-item.search{padding-left:0;padding-right:0}}@media screen and (min-width:769px){#search-input{width:200px}}@media screen and (max-width:1023.5px){.navbar-brand{height:inherit}.navbar-brand .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background:#fff;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);max-height:calc(100vh - 3.5rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;padding:.5rem 0}.navbar-menu:not(.is-active){display:none}.navbar-menu .navbar-link:hover,.navbar-menu a.navbar-item:hover{background:#f5f5f5}}@media screen and (min-width:1024px){.navbar-burger{display:none}.navbar,.navbar-end,.navbar-item,.navbar-link,.navbar-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-item,.navbar-link{position:relative;-webkit-box-flex:0;-ms-flex:none;flex:none}.navbar-item:not(.has-dropdown),.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-link::after{border-width:0 0 1px 1px;border-style:solid;content:"";display:block;height:.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);width:.5em;margin-top:-.375em;right:1.125em;top:50%}.navbar-end .navbar-link,.navbar-end>.navbar-item{color:#fff}.navbar-end .navbar-item.has-dropdown:hover .navbar-link,.navbar-end .navbar-link:hover,.navbar-end>a.navbar-item:hover{background:#000;color:#fff}.navbar-end .navbar-link::after{border-color:currentColor}.navbar-dropdown{background:#fff;border:1px solid #e1e1e1;border-top:none;border-radius:0 0 .25rem .25rem;display:none;top:100%;left:0;min-width:100%;position:absolute}.navbar-dropdown .navbar-item{padding:.5rem 3rem .5rem 1rem;white-space:nowrap}.navbar-dropdown .navbar-item small{position:relative;right:-2rem}.navbar-dropdown .navbar-item:last-child{border-radius:inherit}.navbar-dropdown.is-right{left:auto;right:0}.navbar-dropdown a.navbar-item:hover{background:#f5f5f5}}footer.footer{background-color:#e1e1e1;color:#5d5d5d;font-size:.83333rem;line-height:1.6;padding:1.5rem}.footer p{margin:.5rem 0}.footer a{color:#191919} -/*! Adapted from the GitHub style by Vasily Polovnyov */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:500}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:500}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:500}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:500}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:500}@page{margin:.5in}@media print{.hide-for-print{display:none!important}html{font-size:.9375em}a{color:inherit!important;text-decoration:underline}a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none}img,object,svg,tr{page-break-inside:avoid}thead{display:table-header-group}pre{-ms-hyphens:none;hyphens:none;white-space:pre-wrap}body{padding-top:2rem}.navbar{background:none;color:inherit;position:absolute}.navbar *{color:inherit!important}.nav-container,.navbar>:not(.navbar-brand),.toolbar,aside.toc,nav.pagination{display:none}.doc{color:inherit;margin:auto;max-width:none;padding-bottom:2rem}.doc .admonitionblock td.icon{-webkit-print-color-adjust:exact;color-adjust:exact}.doc .listingblock code[data-lang]::before{display:block}footer.footer{background:none;border-top:1px solid #e1e1e1;color:#8e8e8e;padding:.25rem .5rem 0}.footer *{color:inherit}} \ No newline at end of file +/*! Adapted from the GitHub style by Vasily Polovnyov */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:600}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:600}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:600}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:600}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:600}@page{margin:.5in}@media print{.hide-for-print{display:none!important}html{font-size:.9375em}a{color:inherit!important;text-decoration:underline}a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none}img,object,svg,tr{page-break-inside:avoid}thead{display:table-header-group}pre{-ms-hyphens:none;hyphens:none;white-space:pre-wrap}body{padding-top:2rem}.navbar{background:none;color:inherit;position:absolute}.navbar *{color:inherit!important}.nav-container,.navbar>:not(.navbar-brand),.toolbar,aside.toc,nav.pagination{display:none}.doc{color:inherit;margin:auto;max-width:none;padding-bottom:2rem}.doc .admonitionblock td.icon{-webkit-print-color-adjust:exact;color-adjust:exact}.doc .listingblock code[data-lang]::before{display:block}footer.footer{background:none;border-top:1px solid #e1e1e1;color:#8e8e8e;padding:.25rem .5rem 0}.footer *{color:inherit}} \ No newline at end of file diff --git a/_/font/roboto-cyrillic-400-italic.woff2 b/_/font/roboto-cyrillic-400-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..dd587a2bcb38c94ebd054732d6c3b36e351dd2c0 GIT binary patch literal 10292 zcmV-4D9hJ(Pew8T0RR9104Ov75&!@I09srC04LG_0RR9100000000000000000000 z0000QY8#eT95x1E0D=SvQVD}R5ey1}g$VZq3xW^;5`h!}HUcCAgd7AQ1%nC)APj;; z8xK*l12t?M0RNypj3W^yWrnYjfnejnyixezzdYc{P`j5%Xd1={7`CmUYFkv50hU%1 zS-tXXSG(96qtRk3gae7d5eFOI-=-m8U|(}EaD_*BT>Hc!mRJM)3~U?ulbrN<{%h|4 zTS-oL@&_0s5~{CCwwwD*C;D=J7uAxcQagrs7mrgB^76CZCj zU8WnRyLZ3uog|Yk;)W9dASDBa^fUR(qV;pTf25~5J z-!(nZJ$sp&KA2tZ?aJ6nFK zBRA?}WM~66a;bnA!S&m<-+t*=?WRd7t+LF{pPbc5?j7auuvTGc7|SuBfvTO}EZ_?+ z2);emgbC)xk#__!C%&UY{tQ8TlWB%>sP`tnAqLh$`*KM1* z?T$p#o_N4nP1TH)fNNE{Nv2qaa4NS7(H<%>dvqFAXYS1uZ~igvxC-zq93 zV6*+v2poD7krEN7pK0j;qHjADc8pKBE6n%k3HN(N1dl`a-4VvjbqZ&mfUU;9!QBOT z&FWgm2;jtO>4%Q4ZPOCcj9c7tt=%w8P$=pRY0LeP8GP}UJ-PSvTeIS_IB%QvXZPjR zTsmKxf1zop7ueq)F(vW|l$D#xOX`xpTwCrfD~kZD%O@QyqRn8-3k1NK8#?*& zFbLb|jWBc6)_dR0x_9QaIPZ~|&m_I0>zbjl)i^5?<6cguL6JPoJ>x0p;9cvp!Y#8* zxaLRngx~Nqc#>C^e63a9CCHaW`I=2Yi45J_%hYzm-&tyZlbO8DJY4q^QrOt)LlJ_h z);6R&A0n-faLVt_V0A62&0I?8om@#ldbn~;F38o~P69|A2wgc`NV79TOx>jGpD=qv zgf6b}0o@s5JNwr}WtEFu-ezay=3b^uk1l z6eU`WSaISdNJOGBk|ax!Dowf!nX+VKaf}33Ir0@KQmjOUN;PUVYSyAnJCRL?ZasSS zlQ;|-GGf%YNmCXq3l)}!qViB&R*?CK$&9oJu$iFC5`#93nP3JUEQXMAIh2Qx4@FQy zm5?vyBPkC#vSJuubj$I)F_9%x7R^gquxSPJR`ZBLSO!Jm=4lxxWSRtKQY={@rx3i6 zlpmKb$b7>vaNL==5V9aQiz>JfY1p_pGPAU*2`h9ntnP==Dio1x%KLT97G$#vlOgJ zDhC)!NAlj7rb&S1EuC;_W6I?)U>Z|lsX-QC@K|bNoW>+9z_OC7Vg4i}C|4$>w2uSQ z1RxuHQz0vD=;-gtwXY#4VA26z{p0N^CAk z<1YIV_>{RwpT`O_tuzl+duwYm3xDkBv` zN4=ZCCxJm~9Ko0nvZ^v)+2nEkaj$6WSvuC&FLw(YYPl82&gD+H_5jcrhZ8`HjGyV! z2qG_0fN*nM*b#)=?+aiX*s?Dv0CC`T#~dL6Xa!CKK&@s@q@7un#{%yY;w#Us6hxW< zppe31iIH-fSc_OicIqWpj5!8C>bRHM3~P2005MrW)F_Vdlwci zxg-gRNAiGc1tUz$&W1!QLcZYtRQr_}e7ulEqR1mfU0sIGW=Ug>{Q0O&49ow+32!)3uAZj~XurCPz)Ha}f z8dx2bW*L=Dc~ntd*;{IDjY1qyT4h|UDlBZS`X5;`Xq$gWfB%@~4MBLuwZLQhdsKrk zjlwmN-LCx99&Hyzvx%WS#j<@3Sl^{hA`8O4=LU)5f_D{oWkYoI42Bt*nDItfSV97m zm1&u&jJGW}ZN{uQ-hEH2%v-UbTD)5ewoLdAHpS|#YgH|E-0QtP9{_B(?g^e_wa`h4 zrrzaMd0ZRDvrF?DTDbLVocnKXzfUWP=V8pc`ig*lx~500rL7F*t}yb=jT)Fx-%HUb z&=3=zhhtKGCARFXfhqO9j4`Eprk#rlTQPf?{TU~FX{;FF#lcXuZ%*X+W`Cinh(X2G zfn{dp)k@e6n>jSmm(AAGz)&1Vc}ZfwVvrynWNv5rtAT0t^In`%yV%9n1-mt5VmF3t zrjnAP5q3Y4QkEG?Y_tfhoOtmHKd}jz_wtlnVKeJ4h8h^FpJ(r4WZ0dn#2$C*s}mz) z9!@t4>T4%Z=3d#c57>JH2;vtOY+UZr3o+B;!w)95v3J3inZMA%99r9q>Z_aK=8B;H z>MN(fvTK0F`llZ;Kn!1rWi89V)55R?d-e^?Ux6)0fZ;(fTn_d+B1fo^M;(Pbz&Kh4 z^A;H#4}1NZI8EWevFpQyvU%C^0|b=n(lX>qGEt){rW79jt;(2}rGR-URkb49fU9Dk zqKlzuG)pI?yc7^4*>T;^s;nyW0hT9~XF(=u8ulBiNv)Nk6cI5k%(G$$yVw@kjp zHW>M~JPYj6Y0hwV7)FMmK7tH246A4twF)NZ~k=^*#V?#8%D%7S8Fe$a^sv=tR=_OKTLw!ax6-nDj%k~!`2vwDK54Vv)h_tphXfx;xz9=qYWi_K6z13)$)^8f}aQ0oQNTfR7&@iqn%(c zRuzMR6lQ@(a2QiGNE5|dZAz#;n}e>7O;sMLXDcI3C?&2XVQ<*8l{*u&|cdvz_q8?LK+l5=|}D+`uuc6 zeh7cxqTn&yW!l#afi4d_(3@L~hUWh9%=vh*jHnHx6t1th1CEL%@61xsxlFbQxctOW zp6_vT(n$|*2r`~&FI%|lyHni|a6!#I9P0A*=L73)_w9z!q>xw`gB zGz2+MOB3y!%z~^LZ#X%B!@Uu^E+6I01`sI?<@e?<%Ugq6bh$;!M8PNFGkoQ_Nw)R! zyi}e$`D#DG#gT`HVQ-DAi5y;Mdc66kdih0qQCo((IKjY@uLlAOi#I4L5)G3`{FsmVG@bfyXvqsg?)FxU#+$Ct;WFEMOMbVB0bG#$xcV~*X_l0es1{dmwoyhh=Sm2us zEskLyhv((|x5CZ1i4X7?AMrf`@Iqo^fHw6Gq5+%h3IB=o zJs>lEvc+T%Z4zq((=SIwJH#HW1bV4@c9Vjse7QHm(Nr#j5@+%0@OZ+BPxwN_7PX>BZ!-ywA>i&HOMoEciEN); z2leCrC~x>Jc?R!{@6LaciPHk$&6{*-dMVcvH5nx31uiXdcXb{X`!Yd$4Kg>;75;P1Z0x~N<<4jMcU14HaF4CuRGQU- zob9!A3c_uv>Zb1enNnNl$K_9idDOQ|%Hw8J1 zWR&$F<~c#uh*%TJ#kBm+U|z*LTv0v@BH z>1--=@Sqs2#B?G_rcz{uC(oqjeV(|pjmn$3&fC8+)j9*ZUU1|OwMygVcw zx>3OXE>cQ8S5Ems%;CUnxZK@;h#EmWY)v_NDu;vQz&B^4x{MC&kY+Sx z5pO5Q!aT$$#*@sY8$D|TjFV{veMmKO@g?pC?JyT-UmRQ&fYczN6|RK61+_>z-2Wu7 ze*^VImIhDzqb+fOkpHc#1!{!u^dV(e0mKUQb%xv^1I-U)QxUh*TU@1kHLEM}p?FSo z*{F30+zw6ik*ZE`IQ+P;H&o!{w{%%G>(vznqRendiB`$W!L4heBlZn+X~yQUO&dO? z5hh@L6FRMI&Jl@o&~(?2rF5zc=!-V9MQc7kxJBK@n|Xb{PF=KiX1R~1**EiGT%P$2 zENoXjt0Lr5_m7}z>c^i@pD#9OJ7;sdlv%vU|U zzenAG2>e(zb*-Dle>#pfY>$K|p`~T|U9m?>AHN`I`5CCEmYOe`mRXnz#lkHbr&{*U zEMeA~am+&F`BjW1gnYyo;ZIn0&l{f8KeiLw zca1iGm-;{cb45)-&QLKufqFbHJq}5;85RdDta?)`^a^?SPHMt@WWZvSXc$Rh1=|I| zIq;3m2{-zws^WRfT2nS-73-%;GPwe)1s$k>cn#NEcrm$#3zvfr2I0tZ3&S~>9ytCF)eR8>ar zp+uwu7U4v`IKHwz^oWzQnO#LqSb2YVc_m!_O)Ul0Yn~uSHy@AY(Ql%7KKiY8kL|Y? z8ETJqmG-BKMvH`%CY^@jp}tH;a4!(!Zk?Whp5c~W&^qal&~QI>_jY11nsSCu2&#bY zBVQIs{k?z~QBoX>7(!_(4#zEM38E26NhP=ofLZHfK8)SScuf%rCmo=hJ?I~Ib8^IJ z0Sx~Ciyvq>sxLCL(uQ{ytIlZ?whZSKMLC_`ZE-(}W3hgYdp@YV(u1B;t z-^Db9N>bfbbM=%7^4CCl9t{31`bHK8%JstFZ|PCV!A4;V;TU5+G*a)8Ru;JSq0SxM z>tKZG{}BWq#l4L$Gsj$M9n&C?JZ%mB5xAuW_?MJ*5p}PK~XoA@Nol74c0NNzBq45hXHnk=W zkp@2d{(`FEN}o-S{+xoac*kiy1 zm)fCL=voswn_PX}#az)a4#&d#N0r^SiGo`pK`*`>1Bh*SkUQiD75kv}5_NY#4`5aw z*Wv5&D11FGDTSE$6%4R(H^7vbb?z-vmNrO_o(I?V{s?>8> zp^`^;eIB@53R{cSdwJqx>l7}E`FTCHssEei+2KWR~M4cp5uh^T;vtzid zyEC<=AfF|8Z7bmB#Bx!U`dPxsBZsB#USX3bs?yYnGMd;jWx+d?BUrYOzMRv2uFIsQ zG7AV`{dY`1D4ZCrp!8#z*$q2E7K%3QTvn^;dSg)dzX0w*ohY{IYwt>}WCPR(Hl}@P zCMew`3B`u$6QI@+8Lp1LsKb5*@xdCxOc6=Q*uEtWs=K3bFOk}*$3+>9GpI@c5r07gGSG{bqfKANc(+kTgHC(6 z@tHNy1Eq(ExS>vtLC%PmJO2ZOf$M!}#qwxi9L!s}Qf}Lvf}D^dbvNGxM|S;gY*emx zdqd^X47WBw_DOCVb3Y1>!j0bEeWWOyK3;#*`d?dg@8g<~@#n;IZ2->+%Je|OahEZz zi-oe~sl>vt%SUa3R}Ri8uMH6y$Y8$HPii?y3E8=O3KtJuOF1%)rU790_`>$itu@U= z@}ldGBiXoHLfNrkoFOSXGS?T$!Hv$!bSEBI!Pzguw27$Sbl;utu-T>>e*~@i+1*35 zCtEr?TOmqdzuz|y0Ok4mZ0+oo+zsbd^&*u>;XUzA5<_0{+)!^RqG8UEFQRVGQGQ5b zNV0V4Ii+wj5`Bf_gX4;B=shb_epdbxw?6zyr7S0TLN#Hsp6!6jNj-PhBM2VHJ=iGq zVT&B3uJst#ij2R2&b1v4Np?q0;jXl3UC5U$Pob7Yb_N{e=$Tai1x>ht3#39))$-ur zEmWo6h!wgna>tvY2bI87yxx`@Z^wA&fsi$JDCZdJf|@zAU2*X)bu-2lT$7sc4-H); z6$opNyOL+f3Szi(>j_y$Mc99q6Z)=0ne>FM6}wenSZq4NkjZB)vwQ~QqtZ*_pexO9b7 zvO(tNhHDBwmj*eo8Xy9Ih+qOi&>@p6h$%Fh5.IQi(wS`Rph{L7HS(io&gTqB)B zQjkFqFd+cl)B-8P4Y!i{Q69MEQ7s$KIPt`DUaCs4=fH`edF>-_dB;aJG|osSAbZO9 zq*HKz?Ze4?UWamSgGo3{H)Zlg#rJ>EW`@^9UKKW`(EST`1vHp;KKs=b%1wWod-&4-GIWcxd?vH1u4tibhp;|&IF1JDOf zoS!kO0f$#3F?2ci{TKw83w}UoVL?s$zQ=Go$zA@BN;5o;BiXZi?RJ-(2SA0QrsYA3 zGzao;U^vjq?flK34FBDR``GQSesR7m>5b)H{oG{qyz6>+D>OI5-s}m$p0mMY^Wj%+ z+tsM-sX=T-^k=O&;e*yFmj8r6IvWq84 zFAI0iw!VhU8WQvu?FD5vyR{m>X7XKz=|Xx&7pgLzlQvi6aw{D$2x&q>F&OeJd?L01y;Z6h<#7ESe=d6O$cE4Lfosrv= zZCSt^2pBx_CBBGoVMd6Vq{EWXrzDsOH~H;}!emIZ1KJ98yRmbH0<(1H`N2su6bcRT-rYDRQo2}LzH)o11o$V6+qgX#4dZmYUJxO!Y(W{e!RDvz_iAXmAT#^y-GoZ&7cPbN7NZA#)REoR4@NmnYxD67j- zhZIiLZ2*>#p8*JS2`<4tvhiw|Lb=xF1vT#D9&Na_TQr1UYxyZ*osHXzdg6oaOb0$e zK_ZStx2I8he@$uFjk^`)E_ir5|8Y?;;8n?t19ZN}7vexxIp&64_=_SG*(~D7C#j6Y zIbU9@J%zzw2cl8bEt=<%+)Cu-xKn=x+Hqm82Of19C}g=>E#*I_)76z>cPwFO3>`En zjiswUC_2CY9DW9_=hVzwMQBs^Cf>W zm#rz^a2*8^6s;d~z*J-d4)r~;j%yS0U{23bLiBv+lraaId%v<#ql4PfaeAdq#D(Gx zvW5|@06UmM7T|be#*8u-$xLv@A`Jdf@=-jZ|ihvMk#+lk+)06bb5VPYxYmk(s+{JE5onnp6 z;cl{?O=jB&GUcE)ifx->g-|F*_=^=UqG>l+OfNjs&5oF40d%$e7#7;aX$ICbE6ou} z@qpqc<~H}OHBvme<%K8&g&Xi2+=u%%iG5q?X&ZB8XQsHYW#2&v zV|%Xa@Za7`1dJi@5&*7~kWx)#yqLt~P>VX?rEuRNeR@cQPQH2q?KTQ~9U9BI>>ShU zTN>(5SuiFCAu1Y(v+k?3Jtw!e!VV)Mn!XDOK}E#FFFuWjaO=ZovYVyH{ zJiYi-Y1gxOmp#+VrTu{2$Ro*a>*8ZRU3$i|?j`v0&lH6XeX7|>Sv1>nIM4!FeKWN5hFVgjEUn6 z{0xHcm_DX1OAyFmhk(6xu{SEkMMIM|=6LZY`?O6%CKeBy2yEFtBiS;nXb1`_?pY2x zPtyGDIkcNk#oVFg?L76Fv~j-5-uw<%c~G~X7{Sl!*64dq$$_<%vrSH30{ISY zb*4*k{k2+KsLDve^z2->N{LEJfwl>a{Sl@PgXCogJ9e_AozE>V!{e!b^SX;!mF<;! zYcP=2QoIQB$^r3xBz!RwaL1bXuAQNmefyc2QB`;863cqJk?L|srF`_=TN-099TbFS zmVm7pWBm2N-2)Eg1v{ZtHZqfXSWyx^sjy7@_773wqNBqxE3CSO*s5)cF8k2q zPsNQc+}&K*xSKm~=1x>^wpOp|bZIY`cDN#w`Q_F;et~JS$PJr%z|L)z1?)&)X?j){ zXV1NE`_VvESSD<~y?A=BN-pHz7`O0c7m(zaK<@&kTfeY;atR!3=MVjFCTOJxSzl$T zC(E_D0mOnw3zimQzzr-f3w;WGT4yh$Sna6?{E#<#mJ5TxI@T@Jw3dv3TUr_W*n2y$ zuQuSTAp2P*-r~qrxjoM26h+2H)7sAOCqU(5*`Q!Ddqak|$l7gR*KVxR3!L6vmceJO znW$z@8Q=g6zzZA52rzanQmM(3ZYr&%B`b!TD~Xy6G0T*U)x>8ZvTQ6-P-}x1$lQtA zz?|k89oV~RFlj+#W5;{Jih#E>P@|R#7iIj#S&85 ziu>8z?7ip;5u&lVg|z9k$OVssjR=-l(feREi;32a*P^fm^ylV)bh}DDzdx|!$Jj6f z%*oBcZK& z(Zjky4OjwdV~Px{!E0yqJ|s4iQ-^G{;NwJvj&^9%b`+g9q!XRk4Vb54hYB&_3IFAi z2uKro3>;(yB&cK!Pr2G`>k1M)9cc1m=-3KUFQI!YJuOux9Vid=YA`)+o03GY?Q`jJ z_J5lWS1G&GcBx7U-7na?RYqF-Fl8B`jW-?9QxPe_pQS4+vV)PfnuO3O zPYZ3iOG)8a(Bim=ML?!4VWP+%BcWhiQc4(}FmLAX{Mj>v+z&}HLJ6MuXM8^Rc zD7?et2B)K05gj(1pn%J)MWG@)4&cG*p~+pJ6LJQpd#OdCB04-M;67`8fW9;ppyXD7 G!T|u%&BW^f literal 0 HcmV?d00001 diff --git a/_/font/roboto-cyrillic-400-normal.woff2 b/_/font/roboto-cyrillic-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..47da362999e33cd11a91f4d62dc06d3b18df64f9 GIT binary patch literal 9628 zcmV;NC1cumPew8T0RR91041CN5&!@I09dd903|s90RR9100000000000000000000 z0000QY8#eT95x1E0D=SvR0)GT5ey1}fo$_c3xW^;5`h!}HUcCAgd7AQ1%h-3APj;@ z8$eGLY+PlAjROp`>1R+BRin*BQKQwQHNpR1lbbSd4^;oEAhKlGtgK2ZCDPPWh20ob zA&)R+sqdbyR*+~+aVI%YaG-eWl&PTgdD+rD8JCtAk`!r`ZhC1u>f=?T1*7OWdtOsg zrYY&mRDb{AhcIwtR-o8qK0-?$@e)LK{8zo(vorq;M`j8j6ynR?Ib|dzInh7=p7rM@ zsiwj}#U_QA4y1OVbVYydJ{jNg*J^;~)~!S`tbrglRvc9}U4s^>c221tW5~#jG7tKW z2gZXzNQFd=$dLxGk5y~7dxUcdPZ*|R#0wz_6!57>W46nOf1WOWXLjGr|3DcAT9^k( z0=yUgtF`Ri5YHSCyM&EQlw#v!?CW3S)Y)+Fdm(VZ?^>!`s0zJ|!-zzyC*3n9uIqo7 z{qLsT3WF`sR5Bdj>{tva?QJX>-Tq{a%T#yc9 zIJz0v3kSS_dT#2IhPkX8zZ$y>1TMk%pN$fBRCTO`;m?Zh|NqpI>gtcr8Sf%Fo!Prx z>45Dn3P1rQghBM8tyF-5P*?yC04!(NDFVillzCh@61Gw zLp#Qpp7;#BI#%O4(Apv6)kqr5(KUA8pG$6R#Nt*JSfVNYSTty%iS&xG|e zL&-0xoLHsHrztPFIszmm0IIT%B0z@ZZxo+x_d(|GzToy~#z`0{NT6lasMnxLvlbmX_2@Nd*oZOXCge<-F>B5OM!{0ctgzB*Ypt`zOHwrT zA?ssomt5-{&G0rLT(4+s@p>gZQb;4?)3vD))S(_tXyH!OpJ*LZpF+EQft4dyw_r_d z>oVRfyd~!yQg3JVaI^!a@oQA7_EFZE|gJw8YzjXj?SvF;Ow| zMuCIiN7f=~+nuIu_&O3~7B*0@#IiK=NQ7LHYbDY_BFA$*Ui8f1<#yH-K22L>+9Mmu zCcc=ta_zv~;-Gj&`5G;4lZdiVAX43CAa6DjH4;_eb2P7>efn7x$Rvr;Evjuv2eAo! zIpU1EiR_GwHMxbB-DZ@|(KU}$-_R^$#uk5fYs-?Y=->%3!*QYZb{30`S+FpR8L$M4 zBQOqNHL!|VLqNEzNDpS@&e|a=9J^P#A=)P8j1z(s(#SB)aE+jj>wzY;pp%yaD|yWc zgkUpvFy1cR71$o4_pu@rg}bg6r47yE$TnFY@bUdxwJLHj@Ny)tNN=e2kp|>K3^M7> z0)!zWMgsAz1rgijp=9Jg(+$4oJzat_U_OBmO8hxl0xI;AzF9?<5m?1*J+|-Rh{QI< zS8ay@yufxdWn!#{LWe*LHf+noI2rojCYewHzHIL)HKegAt@Y`y_VhLjFCEw0r>@pc z0DYe&SVLdAAAIhzFvTt>Tt3yDMOx!f-OKl;0ArvOp&SZL6+6`(r4(dQ1Tk1jelR}} zQGsv}5sYw+3d6D%FOzaOH*9K=>f{Q74Gn^lZ2(_2x;+_qV>8B)jc;iC!lJToUx~pP zs57I1^Ol(khb{(QWzL$wFO0s@`8pGnE&$G&Ft9N=8%_hT9@gF&7D3&h8mF+4jmS6? z0q!bA&M$_MSAzJo1h5Vf0U;I+Fk_SA65~iE8acS=yt-|#k;jD*0YF16J4k0$518c| za3f9x*FZQD3;+Nb)Y(UIjhC*A6%`Xt@c7vBAod^}0yI;kN8CA_We#m)dm@Tf^S@8`AN)MdRyv^M=*ylB7W*2oZ`v5kRp88rqLuAh zu)YesyJezc;+9KDN=aKGbCob{oHgEV+-76jt+&BOo36W6v&&{X5E(PMh$v2w&*e1h zx0|hQo=d^=DkNzIHh4y%xUxyzC-E~xF^L2=MC3?Nu400RNwj=}4On5mr2)KF4iWlD zgzlX=`61zxu?Djc*_{Cz)!-H|lhP0t3V@SAlhZ!bED4c(U&1W z2k*keJ6YjH+@O))w)tz6rBqu`b#5@W7#A-_4_1mSUamhV zFWc(RxH72KjP1u=Lbal^Xu48H$ZicgarHspV;|a;R`_uYx{sqg@8bW4(|-}mhc+8(S!Sv--M$U5f^ST zf5CwN4&vh2VyJI_#GM#r+Z8N$`58`5pF^W#TtYG0W)u(sUE>{C-FutCW13h?dE!I# zyTR(u0OD2<7l7?P-z4O8B~?v;3A6)dMdrXc6eBFfY1iX0!e$eioj1FDHv!e{-V!xW zCZ)*b+=ToQjEII7?`86_DjXRvx3)Esf=xcTt4~By1~kKNpiHd~6m|QKt*U{@XP*K& zl8$zL5oiw4AVzGjHl*NWi4+fabp6?~b&u%ZgqB2|7NRleIpfGN zBJo(9T87Du9AY@eg^q@`1r2mIkVJ#U@3BR?`8&Q;$x20uyH`@Z(;d%^zN7BCO_Pr>KCp(!886-6thskFi9t(E4$cq3$3ya!Hy(Y_>~3HDfn(a3vm6{@l&UuuP$s zdm<~nLNqW?_sQglV|#DoMu%i=i%b$F(`deQHdJ``!*VHGZ3RIrTO3H;`@kI`aZveU z>j>9v=5Kt)DA)8Nm9KivvKp)~b9AUh9Fz6|Zs7XV-z+(*yfG8Bry*;tO8>k%C}reQ zSM*fQzSaY=5ygGc(Ti269Y-8(uh&CN^5yE*pY2tSD}!uYY#ciuEDG&E>cS~xzqqK3 zXH~KyjS~Xz=kXW*r>e-FShS0k%l5_xd$8rvmUq4 zo+w;ajHGETbr93)kEWD}uS^Ofyfd=q2`*-|pmG;0uRF4>_vhzo@4k0RwtC8G z8%z2c@>r*dtR%;KGl#ygVFhnAmb)ynhq+*-W^IZ0Z{)ewrI`Ew!Mn1fbcL^ITYfYxEe-vI(I2O3Zx8(qbFn%)aDr* z9>y9@jHLP2@*D+XMB-$npr@od2-c1e--DsDz?ZM|eOWM0+an=U+$79uY|L@y6bCVC zYLlq1Jq1cs$fn)FidS8qinFZ%S}~560PaMPq#3~G4xB5%psZq0Rv2%E-Z1-^(9hDJ zpi=2U=u^cJ_RmtoG62W;`bG=W$(QDE-d`%Fj@bHlYUxfXk7Cs8xDXD!a+Y)iCEOz@ z-XrEjn&M;Gw>8|Yi!w-P#1u5&UzE{UVXSj`gei?bR>nB_`-J6h3p$)&Wv8DQpbFXEzGQ7_ zrkhqal&r*20=?rbO}m5o=GvF4%Jt^mN3POjmBB_7rdy=Grbh(5=l)+G9!5I&(0}Az z?t)AJN7#HjZ3Bl{KaFW-ujwhVBzkrdnxJ#vUuXajngCqr&vm+dR-I%iH`~!WG{JJb z?RzznJ*ig*_4;7na(VE(rNEp7f%BSrqel0+UzK8fPD^b4}ID zB)Uh)x7{nVP%sV8$B_{I+QSG2;V*c(ryk+vp&staB2{4Ronwku$vsi+y$3*j$% z-n@0r8p7hC`RTl{zmu`a69QNN=gke;pN>x(7r6QdK3r8invhsD{-vUHJR!DZR8w_U z@aK$N^Czz`P8h)L%MJ&6#kaN0${wo2)Mod`lp2t6`sr^YX?MwAEeJMHJr}=?9slE`ESXUo5;BwlLN*&cnww!jSOe13PZS zPRv7k=r{Q{dDuhRPHf0vosYle!slZ*W(d6F(i%JzVQZI%CkbbtN}RgX{@{?2g`9^+ z*o<4=pP&0zg%|z|oLe?S#s~qC6LOKm!HhJXqV%9lt%pzUYdv|aeMTK8)ChQ`xs>M@ zbp?RtMeeG}<)2vR?tM)mt}nF9uXY7DD=@R`sEq8)6f!EYFr$zXD_4BYljP;P5gs=q z|JLzsNjJEPp*Lenye-bjgun5jmcbkljsDdq_Q^bS({%!kV|RQ;ZBJn209*i$B=}C6 z%Djz9Mk(ibTOM+7yS~h|eWLlcPrr&yLP5?eA}u=>6(}xqw=0lo?>2)5&W0vnX%Ztx z>!LLSXudOhz&%OIOAPVLjE_Y}K5!Hgfb!0K+}|2SkM}os0gH)blog%(mk9{eTo)T| z9MlYmU4R%y@6fr~x$C}~s8C~-+Z_7fZvBK>p2S>&XZ2}d%h)96W)efGi3uocOK-;} zM^Psx(5IEFCxLfB($g8h#YWA~{_7%ddG_7xtR9f4G%Ax?l%2V`e9-c7jucoF#0<(M z1Jnc0RDdpS5a{$FE@pbl4(U+kCzCbi~9+M zd;XJ3j&~u0gnzy-eCrxzH63+EoR2pRt+am~T5hr8+Jkhtn=HYD_j~6Q9z{ZWKA(ll ziML{&zqf|blkONvZ*09;qb)89@px~FCTIKJwf6$Rk?)^0s+umiS7c**<;>4ugu+1< z`sQp5>+>hn$_)BEfUCSVH<7VPa@do`qwK_GtZfRplbM^3-c28-L9hOq*!A;&7afCd z$12~X9@j9AOx`E$6x{&s?FwKrF zK9om3$MLy0T;Q`$>p_1@zQswm|J5?+w{ zjgjtf+V@ZAuE3OFmjCAXtCa7Y(tGAce^P&3h?lU_R;Gq~#fKh`#WPMb>Ljw#%06Vq zJ8t5odN`Wf00B{e&Qa_Cob?2rpFJ$N;^t0FmQS6*JCb}fSQ$3`4DLc9wJ>D zTp?Yy;+z(1dd`HI5fV+))?B1ZE2(ljLXUh+9qmbunste*mF127g_-wFf^}v7QT``m z{ynpPyM|V$li=m*_QLLog~t0p} zNB7m$Ae9>+h!l8=ug{EO`{s7A1i61UgKQrz4=D3INuLR2|6EsVrDO z`d4g3vA})*Bekf(`hvo-7NosU^|x=Pu#2~wmAR*n1Io^*^`wJ9Sd9!K?qanxo^yBg ztm>Tq*>t2{);Oeu8$(w9Wi14^e(aSWlGK3xp_sTT_EZVvlo;m}m{rT2Poa`|Q!}7Q zBTuZz@Zm%41H31=Se&_`f2U$ndN~F7M=`@N2*YQqibsz!CO(&!OeDmWjOHu&fgn;O z{y*a@Khs&(GuMqgQ3V4N4|UvaO@Y%>T+YD+htoG;JUWE($plS0^`@+xs;I}8c9Ep* zY$+Aw;_YP~Z6o^_1H%j|<0JeLAFWMtNDt&NgRoYCB`x-zljt)5{<7bX;Yf1L<|xN| zh{Gi*%7v5#ani_CGG`w3U7q4DNW)j7`>M$4ef2fy;Q~FeB4Ls2IR;9VZeYmysFx3Ht1i?N=!jXe-N-Z*b_})d6<` zb@Q`lN{?<#&P;v_zr7LaYGr$Q(0~9F%s?%*n-Z8q85hi-xN9h&jJMer2trINBvyBSZhL9Yi!7J7q;YJz)Sx zhpdLTcWtqBVtG=U`6)@1KQGu9nhn=iUByL=Vt!~%cTwL7O^;Jne2E>w&96!*SxLEJ z&&((xZjPNH_Vj1v!UKyGj8DRs=UcD&FO^O$2p!7sBZ!L#3kxek{vJMJE&WSc9Xuzn zrvb@JzI!9l8}(xi*TmQDOqp8M|Nc(HrzXT$aeF(Vao)@-=Blyh$z}gazF)iN{q5pw zJolC7id%RVIr;tRCgr~mHc0=aq}wkqG@m{AHJ6{p0nwq{>!Fs4YOP|W_=kW8D#5$1 zJTDY^3-l8lKFbY_D=Mshm2X3x1mP{fYGgH#9B#@?Ucasif#3?ER5wB-*g`BMLMG*c z4e?uCt979g#iC4>HjX?`?GT_Le2WiiO_n?hg;SZWX54{PHi3jDU#lonmey}%-gQ#9 zQf74hdfFhr#Ty_HKlI0MYm{x?!GHa#l{bFpJgIZQBY@net9c3#w>78+!E|Zo0B>t| zXM z&o$_w`i@+qBuT13QYJX`6K_<3ODnGn3yvJO;?qW!PHT zZt{ogI|zuO+#({tUauIDs1CcYGlLyapqV?XDV;-d3Va_)&L0RB<7N!&wMMW-jsg4L z1&Q8Lt6ph8li?@Q6Rm@CPo{Jut{@7`Nq{~;LGk@pD00ses;{8ywf*6Q3&FCxe!H9X zo3+k9T;Ub}2+C(Fn=*9ey#IIX_-oyp+^X&386Wx0uv9g(vH{|6n7~xv;U{8BQNBLy z*i8Wl{=oA~0(s+5W#%vlYQ>(1=nJrfA>>SUBe9*zBMhJ|NWN8%fPt;Iz(6P38OvIK z|7;h|@Q80X1rHsvmzR9uA2Xo{)&1n*zcx|StsbDdfmC1w2V7FL9&@SPiMrJ+Mz0Y& zNYKsgSSx^lW!_BXrVP_)H+G1xR53|)ORjo!hcx{*8MMX|yeu{x1Kb0nq{nD#Quv-m zBhM-a;Jx2lnG(}e!X5)ZEWal>VSyD#myJx#3Z)*v3vc|0Y8F*6iC=DT|Fn2wDSfv| zzLy~(ZU1lajAeb0xzj*)>IK?IOys^=5}imTJ+64lTG?_*=zU0wNsS4?9M611(LGC{ z+%*Dra`%Y9jAoYhG%F`NKr}uE7SUKZof-&ZL4kEiK+!LtQdMKRl-XV}C^=Ns$lMtwGLMkZgdu-;F^z`5^igv3RM)+s z&Sp<(1msjaH&w9Qu}%ldcFj;iuMYxo)T?knHqTn@+IC# zl&yXA6Ro62Yf3UqTs(&uCgK^dcl1p-{nT#GhwWpfFVRRjx$z$Kn`*b@paJBona%!C?wDM;_JM;tv*$GV12_ z;@ha5zgjzO@!)EzkiWu6F|3VZpg7`MV>4_EX8L1n<` zRBWZp!N4?v9I?h(gq!IZyz7th~;q z)fu@A*`kn!%P^~34!g5h&Cp(GAyfoM;VTH88}~1tMX%?0qqCK|Cn~4Iu)IY~0CRi; z0brZZbV3QWC6!b+hwRfUebs-xK!@JDGf(p&ztX8+LRpCpS*D7cf)N6bK!fINwqSjR zG$-|&GPuPnQ}iL{JRfWp=?+_42Uw#t5j9P-zOfMiqK}jWNuDNQRH;C|#1;&4Wn!yv zI0^g$s#-7|tlw6_D^XG04%!#OFI;Whz)GoXtnkL*+%}#FM-CZ;)-B-)HfWT40pJD2 zu8FH8!5C2;@e*kxXjN0hR$GH$H{oS3#tvy#L_+BML0(B$y;vD)MG9Uf(8#!5Y-fG> zMeb+JVosn!n-$;EbR(HZ-kSe_SzLp>hcO4}KAg@!k8&m!21Z57s;4ZX+|S3fM`h_( zsME6%&xl=(PF}5VA}Y_>(|sAUS7D={;{E)lHE$BXo`jY6e8xDVqGu|forCEDf<_s( zM9**9?68dRDM~?ZE~O6-krllv&Dy zCHr2B`YRm3bYEbHXDgjXH|R|H-*xZG&KjOwl-SHhYxDK^;MUoJIpWbKy9+8_*K+&? z^%9S+<{S$TLx4IwiC$GBy`Ha+QfjR6@n-SB(`4@BG1mJoM>m8oBh#XEPn#&*h_|+gU#0%nL0qAC9H*a7#noKdEUllYWI$&o(%l3x6z{y4`Kx?z`8Y z*qDTb%Xf?sM#9lDC!h$kNFL(#DBY?v)~;GjFdvk32LL##1(+ilGTX7Ysc?M%j0O?(ur*;6|I>V@IP> z`I|>KgW|)m6jcDEKI{@*F+Hq__lU-%Zb*<@bFD`)J?lnhbmOfDQ3sC87q{ z!fTnTO3ETQP>tx1Np;2Nk(Z;98f$#)jN|e=i{CY+RtkLLp^Jp%36V<>v3&>EasBi# zQBPe>S_>zF0d5Q!TzX7LDwp8=wTq;+_u8arxtOM0$|YPhGZEY;hp?to_FlD%mbGVW z4})PBjVVHIZ$?>D4iZ+2!prFa#?;E7M9L5lt1>@OulA1r4KOyt&69=-p1yX{7g;we zR3nr~#HM^?mCEj^Qiaqu2=p9=$>8&h$Cdy?b!Zq-OCMVbU$7JfR7)<39m8E;#CSnquwDWq} zGq=fBB+}F8)l^3eP5Rs=qFx8^fU*{a6(4j_JWQ!}Rf7)qxC^|Vw^wjAPNSf>NF~HJ z4C`Enbq74x>u!+(?a@DcCtA@!Lk?7m22|jC*>RG7KLDEyME%x0(y~E+(G<_k;8JvC zn3|z(nS%V0Q7Y{7+ZzztrVLvhd7*S0uEDjBbN#tX#{q}6o!DWwPP`c$tK>+ZJZ7(- zeUiN1OQnE%g2Zp`*0E}U-?3+B zF|WYqZh}Ps>(#o$MHo9HH}~wQ*+S&|^gM-Cp%r2Fu%$po-9A@Ta1F92d?itUy~Y|huC?9RQyhIZ z7=uELWW7@}0eCti1tyY4F$NiSbu-C~o1(+JsL^>ic%L3d+twNBK_;0spHyR2bH@x6 z$w%yllO(}BxgQ#$3lyczB5G=q(uf0Pe-ozH00qwcbJ#H=R``uuIsm{YKaOnx{1E!T z?r(nQi@Y*?fmJYo0R86wc>q?O`uDNB^?3y{y4_=Q0)pZ351<{QV&e8??WWa}@bXp4 zCOJ=~8}G)#jpa`@L=>=juqMgRoEr}G5FdZbmWXa}&{CRqPYb@k0qzK|&GDp2EwYYP@!FLmY9M0ZyyZ)GlT z4rn?Tb?i|OwGgLzG^jH@yaBIqvVc5^`c&Mn-YaT}nn-6!y}K^r#J~mtk4Yw`6AN95wZH`1 z0Xw|jFbRi}2jEhGZAJu!H)BL*m*VlIM7^1XvSu?|g-ewpot~xsZx&elaxabX26cr*m23sJEy3U8x!-H?MUmjHKnPsP2%Z5qX@;(cy< zO2E+Rg#Pg!Ql*pDXGYAWI(2IgZK+s?-j`%uOG}8y#o1RDoP5d1$z5o{bl2>tHt|34&fV+i(7tP)kXVo?+uCCbjs zApEpi$2N(Qd$Xt9zn*H_fY2B#Pb?$8%EEsCj-Mw=sNom)vqu@~#$W-TskXv1tl1W$ zubr_7aZuBGu@ux$9ig#La^dM4$N$~knbpG=kyw9aBNN@>)1mgxk4jQfDCGQ5r{9~I z&;>Jr+Nlt78dgkFXaawg3+J?uPdX9jJ)G7jke+OhI`-|}PXGy}B?YXYs#F57-vG_6 zi$$`H%>*pK0;2$D5Iw3Sa&$^mtAt`SduW@i@fbx7dSeI-6aJj$_f#x(OSWvUi#B#z z8(pcWHTv1j_*!EdcmV$bU;w-i*a8^M91S`^a^KwB0nY3u1ps~gJdj>U%PHgkT~+%d z>;Ved3UwrDGW((J0V=X;y2*IxTK;hNgqO_Y8n*r3Z@*WNr5OpzV?~nL!T-;nX**Z5GVp|0!Ci%mZtX57 zeX4r&zUckY7q5@LzCl{nf|0dg+yFt(r69oE<+yWtf}(a)rLTegPhHvm=RNPCXHGgU zQ+4tIm6cBiO1wdP1B4ZzEbqmVgWdpD2t^5H+A_YsxAxwI!YnJ9Hdcz1VN#C%>093X zH}f|AyR|~F!Sf^)kznV(hSOs%op@>x#2(S4>#8_V1k89ra(Up#vm+SvLl{&DqZ(@5 zq?#5|5fL>brViS_ne4DgtBxg7MuViTm!SUL#HhLIapN_hnwU^lQC{S7THC8vm~s-UzP)2}wG| zy|$<6MdD{|mdjZUgnTgzimYyxP;o8grEXsL{W4L0ub~D4TNFl|7PhT&QSGc+Qt#BS z^@oPmx=!f^iDnxJ<9eX=Bs74hyy7BKv#D(zXVY<*Hdk?Rx_UF(oGq=@lg4S??RyUQx;MU4;c%w6BUSu!)?882d&4eVvH9}U*V1`=(QQkP~Q z#)&V=uxG6c+k46OG2>Kqg||&3G!DAg(z1bsgJ zi46_+_7c?c|GdLSNkvUVOGnSZ$fQrd0fUAN8!>9kxCxV{Of$1^@bd8s2_wyjN=lix zV8xnso3^B7Y}>Q%z!6GLUO`D&Rb9i0b0W&vG_e_4*B{qllg9d=wH4lakc~*kMa7nD zUA0-YR-82JvQgcXl~J`pQyD{ieQoG((O@&iYGIDe9-AXJS8VRsJh6Ej;EydBTPQX% zwrFgr*wQVcDwB(^7+X2EMr=1?yNKV06mu?vbaF%a2H~RKWe>Gd_J&5zK2{HNlk9N71vfkuZ{z&L zK_CPYQKXpa<05exrpk^<4L(V@AYGXC&qC!7e&Z(?|G{7|7>svdFc=I5xg5 zFj)P9G{p5L;LTGJ(IB8F(`OkQ$^#ZsP7Y8YNhHGuRz4P{u=!=YMCE@pECY72T&^Av(91Rb~@a%YY6V_Qf#3Gp^3&^%Jlo+KoVOU6=HCg2jw zb5K@6BVk`)*0eirA=y}+xx(Z=gH_RnA@_g$p5>>hnxWB(zA1*peRB5x7C2j!+(F-`0R-t1Q*=!u(!^B zLXblMi6~NB1j=0NLjyN(!L$x<9eLMvH=GES5WF%OyRw7ef*YQSH!eRAK#)VIgd0YJ zqd*Epl+nNqT(o84i!XsfrBs&+xDK4J&&N_XXCDlBr@_f&@<_bHl-58MmpV>xZkPhe zZR|C1KtOsi3g^mNORM2zJ{~FsAyz&8Nl-*yww1jKuUE zsBX{LdN0zrn3dxRzx%;y+WI>Ir^C_@+M?CmAWCHWs#r6?bR?Ywg2F9uP-%f8Ed?$1 z#^HsxCV&SYI!u5712GmtnDl68G9HN=LR+OQ7AS!L8pDbp9#t?vFpb+2Fa%%q7+BMLMBi&#eUP}*UD~*OZ=)hP^qx(&LDf- zop4jo(|QhYy|&%qG25@ks%}yh@gti1E9wVCQ2s>Ve_+{j!vnpL3joMeWznk_b`EV# zd->ET8o!ygMtvBl43JZzDtclox$#Psqmxsf092>-`kBEGN!D;v8a z2PYS|63-ojy@7opd+u)CtRdlwtFF0zSNq+ab;E@dbBw;A=@CsoQSgRq=B%5s@j~!| z4*=SKHjuqVloje3)$U`{Julta$AGsHW%=GSV+<>JS%a%Zrd}^{AE48XduUzeZ1tl!G{o)x+OjNzHI3B@jPnRm>>*u zl}f~WZOA<>fbpk?o$d6bL)vF!4Wp@1O)ooZ7E`3}Z&IWzi)QF`T2$PRDI&CL{ghzf zFlm6VmGsP@`23yEQuneW@s)HyN(xJ@ib}_I1#GxjgUMEfjvJo?yn8QXY5EX@PX*W} zzF$H8FKGJ%cm;3;Nb>+;*qx|q4koc3izQ>g?aIIyo5h@BEPLYQ(Xpd*mLtIQc3#1B zoM__BXd{HaV1krV%*Ie>UGQ28Ll5;vQe#c!gE=)`8%iw` zdoX+*e+LXy5L}h5fiu;?HTpb!W5H_L4S2h)qJc-T)3VG8W}P&MBa-O`*PKQC zY3qmhkJz8jD{{#ihx1Msy1L^0ATUn8Fqj-WDmh^w&r>QnFUwhxXGAk62>}-mJ89Ha z{WsM1Q46=v*?X_kR7L9Xg}SlSU$-VliqiO8wyjgibrzHgMq1x$q8*On#%(rB@eabS zzx^gX_Cz;cvda*e*T(K)Vma`um*bJ`NrjyM=FkvYkjw?U%V)i!gK?)TnL(gcYYpfp zO8kHwU6j`S*Lxen46<44&rutF8FUYm4-kk0A&X;ysM_d1-9eS19!CAd`#2 zu8(8#_LnXvFJKCbMEv-vH735(1?H7+;H6wiq2Ecy?^f1(e$1d&$6|VSTnQ%0LjO2) z{3zcca3ZOEUV&Vj_N&;D@-!He8FC>o;m$(B(`g+-Ps4a-QFZX|fBM5Q~4#3qMU(ypyfqx0e~G@LM5-c!;-G>024&%uc1G2TabgAT216ym;GKNa>fg z-eOPmnUvQ|q^O;Kym3dVCaI5Gk?N1M7te&T7FIahAp~;+q4@7Xpn!OML}=cDLWGNW z_e+lv74PyfBuHNq^N}v>Q%qWUW3d_#*5}ExQ?XG@(~yR&jm0dPne`O8$PTQhrKXsH zJP4F4h+@S-8F2-iIprxwYj>WL>wwkGP!nh4@s$WiubXGHm>H+=`2{TpcyleNA% z)h}*iA2_mZx@;wR0wD1HW;{Jl7>}Lp6CsKcCe6`-f8HnB=~4emIWGteiMm7;4uI0Y zsFhE9=W+V>cS6N6D{f!)`M5oqX_s>uOC;`5HWxhxf}osmsQDlfu(7W&v3L~LB2xgt zd(p`=0n(KP7wu`?`S6P?+9jO7+azIH^D9xSBsTdUGV?Oxu=pIdO|k+}jP~wf%+Svm zODMX`ZUZOFMYJSK9SkI_J({mbA(pJtYiDKx(@f6b}maI4HMU|N_ms!#zd=xvb zmN?P6a^l!!G;S3HJ2x;d4Zm(qp9Kp1ALu*pXgh#pwPQ|J01{1!Qw?6hhfLpwLF*LI z8upPLF*^9n5O+qB^<8|A^>ekm#KGM72x*M<23UgS&xo~@QNFwRe)~tLAYzxq9RF#K zZYKl;RfP+A5S`5fTwwHzDY#x5Ky=vsVvGR*o{ZaH)YE!Gd^imnjtt_XijjWGDeoqB zmpy?#!hbR7`3=O)(6nIa4&uw2qss0g}Fk+7@j)66OC0}LF*3y|S*3TXsq^Z#xV zt9E1Dke+9ng6%AzNVv5y^bB?u+Ymo;4nIXq5D%?ugo|2>j{eUQ;9x(={glxQKmUmO z_JT=|lgVL3Z|@`@#5q7ukHcvq7I1zi-sQY4-sf=Y__?Yu!f}bOSJ=W|Xz?_u)AKT& zWFtw(k^1+!Eg`tb^^LTDGGWB+XdJ`JhJNNj{wCdJn1p)3=})-w?QF<)vE{% zD8?ew0!)PMql~7cLsQ`(sPeU2krdhCkha=@8LAeMyY=Qj@Co?wHCVa`Aj8C%0qXhc zWDzYy)Re_KOi@h;=ZKP#SP;Yl=X=014uGaib5r12phn2nhb{XZW&8Pieir#+eQA$R z&0~KWHCh{eK^>)SByJZW0~HGOWt9o!qbA9a^T8V*5vb5Q24qx~&YV+KQIu0wwo_IQ z3B91EbTFCIKbtBk?GrHt#4ep26enr<^@+)J%wZFnOOxPuu)HLu8bG9nDr@PyI-!xk zx!rk|Cv~vmq>}_6&f(|x*8HN*I_JA~M#f=p@H@EiL)1h0D9itc2){{#@1zKY5xo3j zLSZi`cYjdEroDMxyieDUk^7~0N}se6!mWaNs8XbF&6Y`#vWL(I_zxPl__mLiT~7;w z3K661%ZqD(c+VWh9$6LH6b`2$>x;zmQVikSWFQqD4RY$k#gf@{#QH&E0p}H8oLH{X z>EGlQgyoK&(@~h)-}M4v@6@8)s81Gn3K#`e=TjntynK^g;Ybl9RSyq$f!&Eez$EpXlNn?hYsF(l`^UPO&11-~zn3zUw`s zYg4N`+J~0;8p(v7i$v6_rT&3Bx{p+clJ=oJ4+9)x@^Yh`ASp$e@@zEyMMqG z{N<6`NJDb})>R4}JU#W(gga8}Y@uMHt54`}roG;z^U@Wk%BxO1i&Kt}zhT)~8Dg?= zB(Y%jErm*i4U7-md&6sntZ1xkrmGZKEYl7;SC62ez$r zu#y66v{pXl817* zaKTPUMWI8YaR@RO zG$PjVp7z`S>9V!0!tj2^1Xs@rvX%Y|Ou*KXPzPyP?w>$OtmB?g&zo>5K+N+Tpe55`>%fs226Yk6ghnGn`Ius4h+4+0lhj-Hp>HsRKyy-*__Qemd~={~ft|0H1zu!FocF$yJWN(RvC^LpTad2FioRVLI6an%BHfePTD`{)a}t9Wbq)!KNi z8g95I;7ZMzuB(f`sZ|dHH6L<=4_)LQo_loMtoi|!2v`^48ea51 z76Da*pI^a63y6xniN0B=F;1P9bQjSG?0bF_Fb179Fv{M#YAOuSUt36F8NlcNtZM}Q z!D>y*l=~M{=*zdeRq$bl zw(~Q6{pEn+j_$J-X#b*p&xH(Z2lSpxi;NOaZnI%nbAI!kd!KH6BCxEac{(p#R}`7I z*pR2&TCCH`OUl5)#X`UA%K;a!GQ*6qwP9RrRhYrScll=zCg>}JDxzkCTywVS0d=q# zEawBmLNn!^cj8yx@$-dr0rmX`kGb*tAANb1AJImR_9w)!xfi9{@`*+?rsB)7HAC z1>0w>Mfx1!W+m-w40u$`Ko@||nqMBhLv0yGV1z44|2u&3h^rph@B@cVymT(^9JRvL&N&ubWF##wpVf|UD*yB>s2fVHa zh!oCCCSaU1)$lujbB}-if7%yHhu@@{2uQ_LQSj7-Z^&wRU;?cDwrS~S2)jUe>C&ZU zfY<{~LbOeulQM#?5IP3@hZtKLFRj2up%4CHW3E@_Ko(+6|s_<8?7rK4vYs~o`8s`PZoQWEK zvE>!7IPtDJsm=}5G&o!|rhr($X)ZP|yKFmqPF6Yii?{9dUuEQ$r2|H88SE|47db&L zXMa=#XTo<|Ii)B~(u2_t3gB$Gs*PRr1Vr1axT=BLkejEF1J)RAqwKB@>VdAlMC<(s zyY0$R8s3q{BaN}PsK&eSfxDLPUh#SE;Zq;|YjR^oVwqQ6+7lOB&8g>GqIP80sOpPN z>c0NK%0h>iy!z#o0VPADzCPV>%m#q+^N$RG0>Mf@q8&BrwFYA^$DsZzrwDsJv*9QmM=BPJoqK8w#yL|A#{rysLiNz5FO&whrJDKe~X2aF+$VA=uRf`}KI1R2?Lw-XMbf{D;l}e>v%tH*B!#~a8cCkm129 zF;bQm`{5pHO)6xIY&UJKkcLj#j(n|5k7O=R@^On^an>?=QPYrR}xpa@{!US z>-?sW@SRTg1y7xdfP5sGluu~00lsj+X+pew{(b^X0bdry(3Mwl*ute4f_jws)?yoB zkMi+pjHoszf;tK_sE@{|_&u19DM9h0KqLZs4c9-bkCU$zsaAM;RzEL??4DVAp0H=R zfK84Mm~=lvD@#I(mz%o)JpCV<^|IZz>*r3f9Bsrn52yo*Mq#>c zDB4gT>UM`H7a)N4bPcYLzo7x>D)wdcH&!mL-~-q|AVaCzNbt&tk~Bv^35WlN${CLX zrKEVH%Qr|#S`De({uk-LHUN?6<(P3uD$nOehrlNheDm>jH_x{4Wshd z@Blea*{KoaIfrK%pa=bVc1M$Nq=!o=P9b)v3Dt3d???d$XBcBKnWE-UxN+opmI%d8f(S`zUoIgHjEe>J3VFdJT-X$Q$J(j)Uaog9eTFOwtN%0?k!Np;l{YsZ|`r2+2+ zqLn%DW#Y22%1gFvGB+B}Xu0gqPfYZr z*8TMlT}t|~16SQWd7t8q3nF)KhdvR!WXA!Rj%~3Bj<=XJ(G7VGzUI68atf3%iwZaS zVtq(Lj4lNHqe5{OX-b}5y>%%mLh4PtwfPr_M=U*0$O(~ zx8eid)tbGpEmyEKG6ghmvDY%S5jvE?z;svBtFo9l3v=BlfvctqrVf9BgsgyOjuS24 zOcG>@vRfsrud!1N-3Fy|<#jPi=M}(8PJH%XOT%5=K-MK}xizr4Uf2C@x4dlK!#=|4 zEaB}}$@&om@R4wYUtLfJ<$^IDv2iHJ%OPn7wA1~AulfhyeumPMO%aw?j4I+e3+L9< zc7R6V(A-9XmveztmAjh)PUwArM`+zsWE66G2OtoLw7YE#&7kU<>NPmHj0qD1#2%&I zo^5XLmtf;D=jY2#vcV(_ycdSLK6jm%;q8%=w4KZ)1d9`=XgzwTgXAEwD<0p=95}hX z#bd=nJb(>;lHCq-izL~5DJ%!#CT3JbB_kqAi+ujU?6pp0U?;Y6GQC#C7z?-#{l}VG zwM=IAi9ie>5Oiw^fwSI;HC*{`*XCeGXLk~0hwNS?dAT4iT0(Z9#%(ho>*RD4?o}jK zEHf>ddV?*tT9_P`Xl7*}Y11iBcA}m;V0U<&0sEUwj ztA$4HKnZScD-AnBbvTMC2#YC#Z6F*{6-Em-0@Eu8Cli4W%Zi4i%+KwrTuCdX?d}0_ z^Y5hR39a!%?~|ZiJoUEd-=~LYg~k55Mc+Mro{oc|o$Kdv2w^r>sZ)qj|3NzhZDZ1Q zDy4;C8~E5$@SFzeI*BT>bXwq469^gmA;!Wmgx}M?D`^S5T zS-FGPxWVMAcg#KWw3}fX!o>a*|FP*Jw8m#FIeo6c&@R08D#VI^W+^L;2x1~Z;$GCG z6S}TJ$_Xe`IbonlQ^let^bX9>&*q#f^wp`@R~{-eB1}@1u_w7LqwE6YE|UDn_upwB z)%YwEy;`%ztIGZ35ch#oj^>S8oAF9elwTe`e5H_F=I7*{Jh^QJSZIQ#M(^(X3cE7l8V`r!6k;Ej71WgP+1`ZWYTH zh3wkASM-B@_YVn`j_quWeWC!?Y*LCQ3%3$iRs7#w11j8hY8e?PbtRzj93UsVvcm!o zU8U=O^!NYwtA7vohh$Yc%sf1o9*>RAua6Vv%&6xxC<~AO>}0eiPP$XL*xMQ&Ue6c$ z&A{l(G~P~2b`f4|c*5!r){G;$D=Ao3rGqYY1n0S441~u4a^qCuNO&@HD1_n^V!c{V z-`o@t6$9yTGeD-Pt2ecxo?SvO*(bCrJ$Y`=SfzafUqY7|%-lmOqC%M~1Au^Nz%|ET z#dej_`}&N9^3GJee7U;NlA!$Td1WS?2B!-y$}f6iELavl;n+KF@CiV(O#6slB;epL zwx5Y3s(P^dbeZaWvHJfbszz?XwbR_V8L=kfQPqpOFzxHZ9M6ZG%+-dH%%NshiHQB$ zxlJcDJI-yR?2e`B9`~oEXkG~fEAv6HovT2}8y|XTm8#7NSrK2CwidI$D^3uy98O+3 zO!w9Laa!XzT*Hq|seQ=$w)y5VrR_RI1q)x}O5m93-iR|4Ls4PEb;Ws6vS@mM(vY*6 zi2ubhP5=jR{2MEPk1=Wt8uPZK-s?@sy1|Ra6iX4kce6&lU4j+D)40`(b*L03#V z(Xg(WT4E-I4!Sgr){X#+IkeUF-j9@Y2x2~B->>b#q@JD^ufYUBjjGtXlIK zvHBCpx4y|IUIul&?nl+3$ zd@OIi5A5}AwzDsYR~R-t*@&NCs1^rdCF$*)X4G~@Ewy05BTZ5331c-*vfWOmMes5WFh)rWLbK3XD1e_W67=q- z!)&5y#IC)Qnd5bf_F#@Bf>=6Yf?4pc6HF89FGq4US8}Ee++~%C#(_DTXU`%~3U=Qn zgMMsJ5H{XXmo6TJ3vtkvIoOTQ4Y6v12*Gw*GGakQX$espp^cETtkiztO@JD*5L$`_ z`~${{H8C_WpoX;)`UeEo#0cMVP>sAO*|v=@TAVr{utv}4w~16eO9rwi z^5bng=s0Q}j@GPiM=|s;K#GjMuUAnyWC5UMJM1>ueP?but#aS z!th?-TGu{fRUHFszNz@3_(Z*^q8`ZL9yxz|tc7hH!#kFme>i@1^EpPjs3J-z5zbSv zZ5?f5=$>qwHoGltEyTi6JOwqWj?maAx#W+!dV3N-Nw#G3%*eF6^D{yHHpE4f3b9Kn z06fH!xZLu}_<*t4sg4eFReqF31Nc74ZlIXoV08G|{rCKwFlv%icNfh``&y4<-|v$aprv zASls*OCjJ$gQ|vY?^6l{8IndQPzHrWir%R!BuY>Sg)z+kT-%8{A~Lm)d$aA_LMD?c zj}|zpvv}s~e)bCn0`(@f(6EPCh)^7~V@ui>3XfD6>3;t^H8maS4=V$ZmVmwjSU{58 z9)`CpeJuEO-}cYk(-g+a;^vIJAfZ z!9WuWxbK1i0^k0Bw)Lg&HuQ*BuX?6ISoKY^oOvS!G>mjJ|NMoouwqseoI@9kO0+6L zHfJO8$g=1Md9?8G&6PGkxf0}r1B_cCPw5(yox{IVqG?K$0-{iLGUp2Pe2o;nnx<6p zIlaN4JPn`*GzDSZs-8~zqIc8lnUNXU8G17Y4>4a6ZpZLI55Evy5CA9u6xv7d$@*8>Pypa_P44ndG1F(7 z-SV(}Z~l}e@Ogyj(H%L;RPFqCgKAEF2pio+AGHel>-tMe+A67&T8V>_@VvpZ&{`z{p+K;$F;uY}5Y6 z_mrEv*PveIYb$6osENklQj$!H#nV2bwiDWfL)PE8Z}+wun#1*u0-%<4uTcM{JG$|K zY|#2mUF!+zcs}H48q*iuJ-7BvYX%cji|EwCPB!;fx%R6`=&5P$ z^z5~3ydnImw;}xmV*URk4%2w~_yq)oghfPA%yl>1bjxjb+;z`=4?Oh9V^74SWn>i; zl~t?Jpiv85yG~tt^y<@Z(1=lECQO+&W7fO{OIEDfw#O|ao(Y)@na#GCVkOdMQAipl z4^YHw3ME9%Rt>AA>4l9;mXzs=T#m`Em`%5kV=>W6tj&Jd55Yq45Hf@cp+lGgI3OSb zIP^?+za~<;LQPi$Wg2$Ds2TT2LAq)Zch6>8Otx_Or~N`U#H=_&LP57oe{oO%B7j5A zx?htiU8QC!#+DH*+pu}82`XrguC=ZXb z1nj5vZdM`but=OBp`c|da)h7=0Ee7e1Z8VGXwYS(zTMcsYn&WC9ol8;DSnt0CrBvh zmPx?@9zhYUR2YDV;EW<=8gv=WG-1=7P-sj2Q-O6beAof*KcbW}-)ndp#XO7eP_-SY zvZ>Q!7)@%!!joypYd~|PY7y>mEDf9ujn!V;5vlipC$Xm$3uFb>!B9i1+>Q^DgKE>h zR-3vox&1FQI4y{V$TIJ#ZK~N0+k=LZM6X>d*H2E#YOy+DHfUxVo!wIWaIP${nCYoa zUVAT7XHTF3xg1A5FS5&5QS`4t+U!psZyDxfR%@`^mmS%Fb$^MqiZ{;) z{^R()Y}vuxnUxLGa44{RU2Ll;yjDE`i*7u| zKn_?5Kz0NO0DwrSukS2q{IY;T3o1opfs}_|CO`oP?lO9gDF6y~VPFHcN*@62N7_hx zt~OxtI{1IZX2|C!Bin)B2oy`EYM@0LuSl# zL0&FiSh7P7JA%R4Q7(v>T(g9@32_&aEyPFK`bv{7LuTInc2Bz?2ag|P_r2Gw%v-a@ zWbhM&B=`sETNVM--)_L32D@KZiaR&-)gq4^uqm>;LfBEKGS|2d6?&0`)CU0o{D4}i zBrLW1SHutg2P+4pE`PPiN1aR{B_utP64=dzLpm$aEVS65r&Df^#viv* zLDNh&u-Dn?*C6gEFKYY!jX|LAj~R|-^v6JTyvkMKZO{cd{^JIW&0ca)5&OKJK&$?h zK}szU%hEFjeAUlOmCEM^M*`4ECx64V4s7iJ#{o71t@yDBr5DQRK}w+{X~e?OV_jQi z+SM{h4B3S2JiGji^Ay0!Wp9DX0GZGtpde%PB5LL}j?VFr`69Qd9iMEgxyekh!Cv43 zBIi!(&Ai1LTbHAk?M0>xTSQm7kfY=1aPIRAcg`y%YpD(<3z^e;XDpS`FPnCHX>5*1 zV}})PoYCCnCOZt?7r6}~sg>*7(CnvM-PBTVlVGMtK1AWyRun6jPLu}k48I0Q_!NiN z<`HEvVA@rz`?{xWRIu`xTB)|(nLtZzk{ZfL*~9|Ab|C1IN4CX+RcSgKJdh3FQ$sq3 ztt-CIBw09vJ!+vl$l`aAl-Q{AEZR~{`-+WhSqttRNHW)H@Qe+-P9~uMk@Q3wzP_Q` zYie#;;F3o_d7(X?^h667T`V98;Yj9`DN0SghHbc5x46fb31EzSxe&E;lR{v9ro z^~$ed#7p6xR~N;m-UL&E>7o9-ofCI2ljC>5JIYrV-z%O#6-R>hTvMV^*)epcN#(1C zG%iuzy%NtWNb>bg0GOq=k$^ea9%wn<_};T{`R;b<)e*NFLzHiMsov^XKHGsBmR!$ zPR@xp;W#HbFKmwV;FF7BI;Y2MM|j=6b``U5ty2_3u%2fTR4T=CCQda9$!g#_=Dla! zake~NQ?ptoz2@A_RP~rX$JbJ*GGIC_;knl90934%*UYu@2R{{yRyaR2iD>_o@k^k` zQ#36Yger(>#|7)XRG|Y~8#rS2G~F05U;*!ScF>~11R(MvJoFJt-#WkHA(6oV{u&~> zD<<(BbX6K)K-)1k=0B8Mcf$Yfzjc3QJON9Oake-iFp-S@Q5+=Iqoe1VvIC3efBN#- z95-P9tig)GR=UGK>D5Jcwl97^n^^IG1BBEWj=+)--aylbiaa55XyA=eV!AzAJG-_1*{2DYa-t8syGtG9RkAl(|oH8GaMbdaM!33LP zY;mj*66s%boWiUQRP%16fj8_Zpt#LS7V$;crl@s#>_g#%VnR(JM}&;oQunNkbHt}S z;MpVXLG2is?R$NMtdX4BPpffDAf{Z6-6(6g#f)m~Z^eTn{9EzBFkA#>SVV;RgEH9~ z7v0$Jml07&+k^M#V_2=X(CzOFxzFq4^a;ama7(vI0VeEX*J9Vi&=+qT}DqjS^5 zl(O%Z5a;TTv-S57l6+M?3nvPl#61g9=dFtUk0jpb-?0}JF6hDWQS4y#5fC2vyxI*t zNJsZqIfG~s(tHc+?VJJef2Tgop}Kn~{&)G(z5BKS%s%bkUU{LuwQag=nOl^}WtS9Y zz#PcOk)qq8pQ0Q0vn>oO+N~6Ir&q53W#Fjdq@sW0ubCBHie}}?vZA?)E@G!r9|pI# zR7N$G+M5CMYK zcXap4@$hnV@bJuW_dKH3NvQAc9Bv^#zIN6!1)kl39r=ShPSS75*jdY~{A0I<+@?%x z>Q7OA^*Y*eM_m41{=%2MtFxVjS5r6z3vNU>`sbSQwXtX>42tu!DjOG_HFJAaU+QC- zo4m{1D(BSIqZ!rAi*t#;>m7|Iezoy6m^{-{_-20U#=EO^kb8u`pEup>uw%fXeTUoq zNGWH^KTa(29|bXbLf#@zbNp$+G|w0i3(%B~VNdHS{F3w{Ny*MTFRTLP3-yn`5IE7_ zp}V*2J}x}*_jkdOwEfiijx;ov{hK4m;6)hy-@kh z4)}orZVp)cAt(`W@P*r=ocr-fq?f;`yfQ(4dnVUeY6pUw9^v0(0@9ULd-Fy#R1_7r zjfkXIelAO-GW$hM6;%REBh&k7n^i3kS7$!WeTbEakoKZ08rDkEGqvaW&Cbioe$s(a zmM>%<@3}khyMj?>X*r8gT$}>qXfWJ(F%ol=#;v%_W&VS`U!X>*ywqfgJKXrT*?4Kn z_=yP>7t=3!>5ATmUBs0rNJ;BUlI4Q*l=?#co^gqYeLv)^te$XtBWq(DU@~$$a>>hO zQPdJ*+`1K)w#2`W{rV1O<`JdY`JEW?iZ3zZ3ofL=0{uURe+a)C{z~D)SPFIXYiV?5>!lKE>kNR(M>6g~Vsphj7_wqN}=BzL@bVP$q={^6jC5>&N* z@7&7xw9Xy~aAOLQ5M#UEZ z>_)WAa3L_my)L$T*N?&f9T;l)TI)27FU&QI$H%AN6+BS=vIR5UDiGK{?KeatJ3C&^ z_6d{_33E@tzumHn1ofvqMm`~O#IKm9YJNpy{~GEA{61VdMYz^lSXrRlBvISal@`C+ z)l=>O{F@#XJIeP6znLIaUR_K~rqH%M(lt$c6c?rfCh!%OjHB+>*(!AojgjdeXFpUE zr;gv{8okX?UO{huhH0P-7B^p~<>y~|1Ej;be40VW&i&83|5Nx+PHX)iWdqRn@N3Oy z>-;_5hwT@`j%MVNy0mNX%^kSX(#rB1Y<_cBWA;#LO3tvbFsI$GgfRX0tNOCz{_OMk zD3vrmwdU`p73uqma-RgbSEPpSK1$`?L_AHieae2p78CB8@~+bpU6-Yr6r0|2tC8ZK zQ!ZaX?=3ybQV$i40*F52S>w<+@7tJhxHUz}=u>ZUAJoVA+-u~Eh_o}$K7c@b`f*7* zv(9r>ABFeQ@A)RxMu}ZmXV0ID^d*w1Zo$JN6Ya1ZmjEwc?>N#yamo9s*`l))+2&SN~h#ap0*kTpe7 zHf%qC;*W>oC;#)uC$^f%M+*_Y!&JFSOoaa-2rPuq~=?J>R4 zX0l5f#*qovvSjE4h}+GDxD^=qUq{Uku0l}(Dv^J`es<>sbb=ij5*tcWRe%PlRT8+q zNMGfzY?|HLy6VPiN7ftpAY@G`~+er^R z4W{loMuIm*XfMmrHJG|<;)}+4cwo9({#k_36ecVIYufEck^oatZ_S5A>hycwP6hJ0-TTkHv_a8m) z&?f>xT(q`PDA{>UGm35qtJ%DE3pO9*NKx60IVAs@oj-LRc?mu?bFapR4-wDrJM{hGHrM6!5lka&{c#@pMH+ z^MOmkU?QiyQ1pTUnmsgw|6+Mg72~+V2^K^IMMXH@PG1u4Ut6!;O2~bfDM>Eo@ze97 zg1jrDDf9=tpzg#e)fexZWtim;^0(7Fa_e$(qQg}&mkV(mqH>}TC)W{l*6>moYfV-U z;cS=d;#JhtI>MjLQTjH&&<~z87G@5fY+`}^Q4d-ppCfmYy#1*f6>tsGs3Pjl4HKNP z2l2nHQ0v3~b}Xgrr?^Dg`B|G-HbRG@`lbMaf}Q=CTpglmT@1S=MnHfJ;fCG+DQheV zw-a>BGADyQqf4#P{zylhibAImRb1_2@``X7IiyiW=Yn!1kw*a?(o21U>DV^kSty7? zC`u!R_1Q!0hUh+XL)AY@drDx@V5b)CgKe4jD1aOBvqyr!=6~1o(<*%$upPZ;d4S=w$P$eML*Phdp z_Sfn_1HuJ2cn2NiL|8w;D^-#Ev`I#*j$6Z@Y=0N)CV}1l3}3f5GDfHoc%7ZUp`RIw zV%JSx0a|o_Q^Oo;)4$!^65R?ri@gW|9$=e1$2(PC2kgDvezK6_Y|HrZ41kpO`FjM= zq~3aO`ZI)2Z}S%5JtH1Ui{(mbY-ccgsBpFHoCF=O|1S#ldgF$*46K`!OyMtPs{uFb z&@^;9KfX-@dLUdDr?8U6lSOE6u$h6CJhV1zNyJ;}X_E8Nf?*uS38qSR@1O)X z6>1MRJK;JJ>VPhQfLP}4&K7Iv_B!yeo=w5qPdD3DWAg)KH3` zgT{IS0{n)D2rCrS*&7~LsafBYO=>}FReYLx>&tkcUSkjLbGat2?5Z+#TOJwTfpsyE zkO1Ligb|xh6?yH_6=c9re!WfWGJ#_E9aLTo0thcj9tI5LIC@z0Um{7Kkh@?jEJe?z zq;yvo?D0O3dexe`i;hWmJ}}Q7-Kt$w5AdL$c5}ANh|zb6k5L?hc!ZyXz?Z<@YQ1wNPTNcImu=~H>AfxK zaHq&*4mPw`!wfo2wonLU?n(Lt^h7jfz*zYnTymL-30T)7mI#PcB9%)VUzotZzgcOL zdy#?LjmY^uIJlWGD|m@)wJ%h{auux80xrYI>8_G5s}hbyJT!+E_N=E@;03!jrUWsJ z2%3xeia@OcgHz7hT7F;evRM8sG5E=-U^z)#&z9!gOdBO0MogQ7nxz5)g+I>6d?_as zF!B60M2IJwc7-a*D{_}p0r>KYf<>8-#)1;%D*k3j(Zgi)F0Xt)Tl>#h>T&#mW6r8i z$}@6T{eQkp(aR~r9FJw1)*#ltcAM%rgJwR!TlV6_B$lMnzpmH}&@Jm`ocRG&u5y_( zWQci(jEJWfhe5RzVjy3lc1^d9o9AUdRtMvs{h&*|c)ok?N*(duZu(HH9T5o{4o461 z1H|6r)iYpVn^Ndk?dNKS-~|DF?hAlKZzBbzG~19jQ3iG^an6DalMMO4MN<2(1-73o4bUKE!^2sckT! z3+YLn?M#3&%`=x30tr)4m|0aPFd~DX&U_Y{JeOQFPSQ9C%BDl5Z()CsA}>wB+v#7lR-OD7nIt^{G`l*a)82!>S-KVYqJ! zZ1WsTZwhR<#A-U&a|uR=OA3cDZ#aK=-j(k?OdpD`AAV4lJfz`L-wP1Me#e|3Pa^K8 z_C^w_z48DAL`@thuMYsdj+ae<0~U1k$;zA~vyx=3WugvFc{s+)h$O~Lm^#-hJ=gfb zOU}`<9+i(*Yo=b(C$)WXF_dv{hE@9y*e6FAIa=DFJK?8t53f#1+MIomq%2i@In#FdZ>`yU8LCuv!lPrZ9Xz+ipr>O-+rBN*A*|#ko2ZwM zo)hQ=W+_>t%qnH+hQ~$IFp%q4 zLWIllI^w;W8+dYZM_d_7s+Yf1gEzslx*CWQ$ac!q$OVd(1X9Iw?mb%W$$l`F_DMoO zkADBJuZ`ayPe<0FG=|0V@zOUlpIwrJ+NSsQDYxlbIGVl!ZQ~{Eo^VguzN4p+WJZ6< z#+T-iX>*yF33g2kcF`SSb#ghrb6iuk>A=LRG7CpPjf8#&Xb*`3@A*CgymeH8^-9GG zkdTvB`+&qT5mcJv?MorpHg-Y-MX@A)CgMrEoH=+mn5nfL)2@m7OH!rP1e`u8)Drsa-9oFwF~)C zF~kn%2G7kn$(^_sldxbJ8!&lOC`tRtEJ4?eW&T(=>}GT-S>=@TIgWDVJ%3>Tn-n7_OM0{%kCf@Ivm-76 zr$OSuDY@xbVQJ{7hVJn6oXAfevrmbJp|Wbf^2+#Vq?~L!)x3~zugdl@tDMUx2)W;V zXujfYP`lrK931ue?n|Y8RBthRN^8C%$v{nsl6xLMUj&D3e^i}JEkWXyq@LCw5UL@_ z3GQd!KGm3~@wtTynqq=^YqM(blb|G#`dA0~OpdZ7GDyw7+R{m34FwseG zo6L{7(i&>;6|CENrr<57jrYx8pn%6n zfV+Xq1OZ!t6BOj&sSg?cA`^%a W*E`Tm7TU08C~GZ@>+Fazi~#^e8{{qk literal 0 HcmV?d00001 diff --git a/search-index.js b/search-index.js index 00ccc7ff..efa93578 100644 --- a/search-index.js +++ b/search-index.js @@ -1 +1 @@ -antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,48.267]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1-2",[1,36.417]],["name/1-2",[]],["text/1-2",[]],["component/1-2",[]],["title/1-3",[2,28.009,3,39.726]],["name/1-3",[]],["text/1-3",[]],["component/1-3",[]],["title/1-4",[3,39.726,4,38.103]],["name/1-4",[]],["text/1-4",[]],["component/1-4",[]],["title/1-5",[5,45.409]],["name/1-5",[]],["text/1-5",[]],["component/1-5",[]],["title/1-6",[6,56.954]],["name/1-6",[]],["text/1-6",[]],["component/1-6",[]],["title/1",[7,40.637,8,6.606]],["name/1",[9,1.827]],["text/1",[1,4.134,3,2.979,4,1.267,5,1.243,6,1.559,8,0.722,10,2.036,11,2.221,12,2.732,13,1.772,14,1.267,15,2.321,16,1.293,17,1.421,18,1.559,19,1.599,20,1.559,21,1.035,22,1.559,23,1.753,24,1.385,25,1.062,26,1.848,27,1.179,28,1.108,29,1.092,30,0.76,31,1.352,32,1.559,33,2.134,34,1.753,35,2.22,36,1.494,37,1.691,38,1.784,39,1.462,40,1.784,41,1.421,42,1.693,43,1.062,44,1.799,45,1.108,46,1.784,47,1.674,48,0.885,49,2.427,50,1.784,51,1.179,52,1.321,53,1.462,54,1.352,55,1.784,56,1.209,57,2.439,58,1.519,59,1.62,60,1.421,61,1.559,62,0.799,63,2.962,64,3.062,65,1.848,66,1.92,67,1.243,68,1.62,69,3.062,70,1.559,71,3.048,72,1.108,73,1.16,74,1.179,75,1.693,76,1.16,77,0.885,78,1.234,79,1.784,80,1.462,81,1.22,82,1.784,83,1.559,84,1.22,85,1.784,86,1.62,87,2.676,88,1.462,89,1.55,90,1.108,91,1.559,92,0.985,93,1.784,94,1.959,95,1.22,96,1.352,97,1.616,98,3.062,99,1.784,100,1.108,101,1.321,102,1.784,103,1.784,104,1.559,105,1.141,106,1.321,107,1.243,108,1.559,109,1.22,110,1.421,111,1.462,112,1.16,113,1.559,114,1.243,115,1.179,116,1.559,117,1.321,118,1.462,119,1.634,120,1.16,121,1.693,122,0.869,123,1.55,124,1.907,125,1.907,126,2.095,127,1.352,128,1.784,129,1.462,130,1.035,131,1.507,132,1.538,133,2.439,134,1.784,135,1.507,136,1.462,137,1.559,138,1.784,139,1.693,140,2.058,141,0.952,142,1.385,143,1.16,144,2.703,145,1.077,146,1.243,147,1.784,148,1.784,149,1.784,150,1.784,151,1.352,152,1.784,153,0.967,154,1.784,155,1.784,156,1.784,157,1.124,158,1.293,159,1.16,160,1.784,161,1.784,162,0.663,163,1.62,164,1.559,165,0.786,166,1.062,167,1.784,168,1.507,169,1.199,170,1.784,171,1.784,172,1.784,173,1.022,174,1.421,175,1.141,176,1.784,177,1.784,178,1.784]],["component/1",[8,0.304]],["title/2-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[180,36.86]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[14,13.171]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2",[179,40.459]],["name/2",[179,2.332]],["text/2",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/2",[8,0.304]],["title/3",[5,45.409]],["name/3",[5,2.617]],["text/3",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/3",[8,0.304]],["title/4-1",[338,65.178]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4-2",[339,65.178]],["name/4-2",[]],["text/4-2",[]],["component/4-2",[]],["title/4-3",[219,26.887]],["name/4-3",[]],["text/4-3",[]],["component/4-3",[]],["title/4",[8,6.606,340,38.103]],["name/4",[340,2.668]],["text/4",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/4",[8,0.304]],["title/5",[126,44.579]],["name/5",[9,1.827]],["text/5",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/5",[8,0.304]],["title/6-1",[8,8.026]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[47,15.32,348,41.632]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[47,10.007,56,8.876,348,27.195,349,30.62,350,16.567]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[8,6.606,158,38.884]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[67,37.374,351,57.322]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6",[8,6.606,62,24.035]],["name/6",[62,1.683]],["text/6",[2,1.122,8,0.885,12,1.231,13,0.947,14,1.694,15,2.618,19,2.408,23,1.231,25,1.279,27,1.42,29,1.315,30,1.527,31,1.628,36,1.712,45,2.225,47,2.051,48,1.066,49,1.297,52,1.592,56,1.515,58,1.066,62,1.606,63,1.334,66,1.026,72,2.225,74,1.42,84,1.47,88,1.76,92,1.979,95,1.47,96,1.628,97,1.134,106,1.592,117,1.592,122,2.039,123,2.333,153,1.456,158,1.558,166,2.134,180,1.215,181,2.782,182,1.76,183,1.297,184,3.028,185,1.579,188,1.688,192,1.246,198,1.628,204,1.099,211,1.173,214,1.444,215,1.628,216,1.951,219,1.479,225,1.262,226,1.934,228,1.215,245,1.262,248,2.782,258,2.293,268,2.052,293,1.579,331,0.76,332,1.76,333,1.173,334,2.409,340,1.527,346,1.712,348,2.782,349,1.878,350,1.695,352,2.297,353,1.878,354,1.592,355,1.397,356,2.297,357,1.76,358,2.297,359,2.297,360,2.297,361,1.712,362,1.951,363,1.297,364,1.712,365,1.527,366,2.297,367,2.297,368,2.821,369,1.951,370,2.149,371,1.354,372,2.193,373,1.527,374,1.375,375,2.855,376,2.039,377,1.088,378,0.765,379,1.763,380,1.16,381,2.31,382,1.628,383,1.815,384,3.83,385,1.444,386,1.592,387,1.951,388,1.354,389,1.444,390,1.628,391,1.628,392,1.444,393,2.297,394,2.297,395,2.297,396,1.397,397,1.354,398,1.375,399,1.47,400,2.039,401,2.297,402,1.628]],["component/6",[8,0.304]],["title/7",[87,39.827,403,45.578,404,45.578]],["name/7",[83,3.283]],["text/7",[405,4.809]],["component/7",[8,0.304]],["title/8",[120,42.36]],["name/8",[9,1.827]],["text/8",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/8",[8,0.304]],["title/9-1",[26,39.327]],["name/9-1",[]],["text/9-1",[]],["component/9-1",[]],["title/9-2",[348,50.583]],["name/9-2",[]],["text/9-2",[]],["component/9-2",[]],["title/9-3",[411,51.913]],["name/9-3",[]],["text/9-3",[]],["component/9-3",[]],["title/9-4",[]],["name/9-4",[]],["text/9-4",[]],["component/9-4",[]],["title/9-5",[13,28.706]],["name/9-5",[]],["text/9-5",[]],["component/9-5",[]],["title/9-6",[132,24.915]],["name/9-6",[]],["text/9-6",[]],["component/9-6",[]],["title/9-7",[144,36.047,412,45.311]],["name/9-7",[]],["text/9-7",[]],["component/9-7",[]],["title/9-8",[89,20.05,413,31.557,414,34.622,415,37.591]],["name/9-8",[]],["text/9-8",[]],["component/9-8",[]],["title/9-9",[414,46.875,416,27.146]],["name/9-9",[]],["text/9-9",[]],["component/9-9",[]],["title/9-10",[416,27.146,417,41.632]],["name/9-10",[]],["text/9-10",[]],["component/9-10",[]],["title/9-11",[142,41.632,143,34.864]],["name/9-11",[]],["text/9-11",[]],["component/9-11",[]],["title/9",[120,34.864,418,38.103]],["name/9",[418,2.668]],["text/9",[8,0.835,10,1.38,25,1.623,26,1.645,29,1.668,34,1.561,36,1.012,43,1.623,49,1.645,56,1.831,66,2.593,68,2.475,78,1.754,89,2.203,120,1.772,132,2.372,142,3.379,143,2.829,144,4.858,145,2.627,153,0.861,185,1.201,190,4.497,204,1.394,207,1.865,214,1.832,215,2.065,219,1.125,226,2.349,227,1.266,255,1.692,262,2.117,266,1.744,271,1.937,297,1.937,303,1.668,312,2.172,357,2.233,364,2.172,380,1.471,397,1.718,400,2.587,412,2.303,413,2.172,414,3.804,415,6.434,416,2.203,417,4.217,418,3.092,419,1.692,420,2.233,421,2.913,422,2.233,423,2.065,424,1.801,425,1.865,426,2.475,427,2.829,428,2.913,429,2.913,430,2.116,431,1.976,432,2.913,433,2.913,434,4.652,435,4.652,436,1.832,437,2.058,438,2.303,439,2.913,440,2.019,441,2.913,442,5.807,443,2.726,444,2.475,445,2.233,446,2.019,447,1.602,448,1.832,449,2.913,450,2.382,451,2.726,452,2.587,453,2.726,454,2.913,455,2.475,456,3.224,457,2.726,458,1.602,459,3.86,460,2.913,461,2.913,462,4.13,463,1.937,464,2.913,465,4.652]],["component/9",[8,0.304]],["title/10-1",[10,32.982]],["name/10-1",[]],["text/10-1",[]],["component/10-1",[]],["title/10-2",[466,31.51,467,43.942]],["name/10-2",[]],["text/10-2",[]],["component/10-2",[]],["title/10-3",[59,48.702,397,33.796]],["name/10-3",[]],["text/10-3",[]],["component/10-3",[]],["title/10",[10,27.146,466,31.51]],["name/10",[10,1.901]],["text/10",[1,2.126,8,0.469,10,2.847,11,1.275,12,1.322,13,2.137,14,0.467,29,1.413,36,1.413,44,2.235,47,1.912,48,1.145,53,1.892,56,1.229,59,5.649,61,2.018,62,1.035,63,2.362,65,2.296,66,1.816,72,1.434,78,0.931,89,3.149,97,1.219,119,2.589,122,1.08,129,1.892,132,1.454,136,3.117,140,1.552,144,3.26,145,1.393,146,1.609,153,1.964,157,1.455,164,2.018,188,0.724,191,1.557,196,1.526,197,1.26,217,2.018,219,0.953,226,1.246,238,1.232,245,1.356,269,1.306,331,0.816,350,2.294,364,1.839,371,1.455,379,0.883,397,2.397,411,1.839,412,1.951,413,1.839,419,1.434,420,1.892,427,1.501,437,2.294,450,2.018,456,1.71,466,4.637,467,1.892,468,1.71,469,2.309,470,2.018,471,3.805,472,2.514,473,1.749,474,2.309,475,1.792,476,1.477,477,1.674,478,1.951,479,1.092,480,1.674,481,1.169,482,1.072,483,2.309,484,2.097,485,3.03,486,1.892,487,2.097,488,2.097,489,1.434,490,2.097,491,2.097,492,1.792,493,2.097,494,2.097,495,2.818,496,3.454,497,1.892,498,2.097,499,2.097,500,2.953,501,2.097,502,2.097,503,2.097,504,1.552,505,2.097,506,2.309,507,2.097,508,2.309,509,2.097,510,2.018,511,1.674,512,2.097,513,2.309,514,2.191,515,1.892,516,2.309,517,4.462,518,2.514,519,2.708,520,2.077,521,2.708,522,2.708,523,2.708,524,2.708,525,2.708,526,2.708]],["component/10",[8,0.304]],["title/11-1",[62,20.421,276,33.753,527,39.827]],["name/11-1",[]],["text/11-1",[]],["component/11-1",[]],["title/11-2",[47,13.017,528,38.498,529,29.622]],["name/11-2",[]],["text/11-2",[]],["component/11-2",[]],["title/11-3",[14,9.21,122,12.937,529,29.622]],["name/11-3",[]],["text/11-3",[]],["component/11-3",[]],["title/11-4",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/11-4",[]],["text/11-4",[]],["component/11-4",[]],["title/11-5",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/11-5",[]],["text/11-5",[]],["component/11-5",[]],["title/11-6",[1,29.973,529,34.864]],["name/11-6",[]],["text/11-6",[]],["component/11-6",[]],["title/11-7",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/11-7",[]],["text/11-7",[]],["component/11-7",[]],["title/11-8",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/11-8",[]],["text/11-8",[]],["component/11-8",[]],["title/11-9",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/11-9",[]],["text/11-9",[]],["component/11-9",[]],["title/11-10",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/11-10",[]],["text/11-10",[]],["component/11-10",[]],["title/11-11",[536,56.954]],["name/11-11",[]],["text/11-11",[]],["component/11-11",[]],["title/11",[74,43.059]],["name/11",[74,2.482]],["text/11",[1,1.67,2,0.906,3,1.626,4,0.868,8,0.829,10,1.321,13,2.062,14,1.532,15,1.916,16,0.469,19,1.561,23,1.909,24,0.503,26,0.737,28,2.069,29,1.343,30,1.554,33,0.451,34,1.909,35,0.886,36,0.644,37,1.442,43,0.385,44,0.718,45,1.077,47,1.125,48,0.86,51,0.428,53,0.531,54,0.926,56,1.462,58,2.086,62,0.777,63,0.759,65,0.737,66,1.591,71,0.491,72,1.621,73,1.127,74,1.725,76,0.421,78,0.261,84,0.443,89,2.672,90,0.402,91,0.566,92,0.958,95,0.443,97,0.342,100,0.402,101,0.48,104,0.566,105,0.414,114,1.53,115,0.428,119,0.346,120,0.421,121,0.614,122,1.989,123,1.321,126,0.836,127,0.491,132,0.467,133,0.516,135,0.547,140,0.435,141,0.346,145,0.737,146,0.451,153,2.311,157,0.408,158,0.469,159,0.421,162,0.644,165,0.285,169,0.435,173,0.371,174,0.516,180,0.981,181,0.503,183,0.737,185,0.538,188,0.819,191,0.899,196,0.807,197,0.667,201,0.896,206,0.748,208,0.376,210,0.331,211,1.198,212,0.435,213,0.748,215,0.491,219,1.931,221,0.428,225,0.718,226,1.409,228,0.366,234,1.18,238,0.926,245,1.019,254,0.973,255,0.402,258,1.112,262,0.594,267,0.321,268,0.371,269,0.366,271,1.559,272,1.626,276,0.48,279,0.435,282,0.905,295,0.618,299,0.516,303,0.748,313,0.469,315,0.428,316,0.516,318,0.469,328,1.068,329,0.516,331,0.432,333,0.947,334,0.435,335,0.503,345,0.566,350,0.306,354,0.48,355,0.794,362,0.588,363,0.391,364,0.973,368,1.061,369,0.588,371,0.408,372,1.598,373,0.46,375,1.382,377,1.846,378,0.617,379,2.363,380,1.185,381,0.324,386,0.48,388,0.408,389,0.435,397,0.408,398,0.414,408,0.451,409,0.566,411,1.382,413,0.973,416,0.328,417,0.503,419,0.759,420,0.531,422,0.531,425,0.443,427,0.794,430,0.503,444,1.109,447,0.38,448,1.475,450,2.913,456,0.48,458,0.718,466,3.204,467,0.531,479,1.038,484,1.993,485,0.516,486,0.531,487,0.588,488,0.588,489,0.759,490,0.588,491,0.588,492,0.948,493,0.588,494,0.588,495,0.905,496,1.109,497,0.531,498,0.588,499,0.588,500,1.346,501,0.588,502,1.109,503,1.109,504,0.821,505,0.588,507,0.588,509,1.109,510,1.068,511,1.257,512,0.588,518,1.146,520,0.667,527,1.068,528,0.547,529,0.794,531,0.516,532,0.566,534,1.516,536,1.918,537,0.692,538,0.516,539,0.692,540,0.491,541,0.692,542,0.566,543,0.531,544,0.648,545,0.648,546,0.648,547,0.516,548,0.648,549,0.648,550,0.451,551,1.222,552,1.159,553,0.851,554,0.566,555,0.547,556,0.648,557,1.257,558,1.222,559,0.469,560,0.648,561,1.222,562,0.648,563,0.648,564,0.614,565,1.222,566,0.566,567,0.648,568,1.109,569,1.421,570,1.159,571,0.588,572,0.648,573,0.566,574,0.491,575,0.648,576,0.547,577,1.646,578,0.648,579,0.648,580,0.648,581,0.491,582,0.531,583,0.491,584,0.566,585,0.516,586,0.648,587,0.648,588,1.209,589,0.428,590,0.435,591,0.648,592,0.648,593,1.159,594,0.503,595,0.547,596,0.691,597,0.648,598,0.588,599,0.648,600,0.428,601,1.068,602,0.648,603,0.648,604,0.614,605,0.491,606,1.109,607,0.408,608,1.186,609,0.648,610,0.648,611,0.993,612,0.648,613,0.648,614,0.491,615,0.648,616,0.335,617,0.588,618,0.46,619,0.648,620,0.648,621,0.648,622,0.648,623,0.531,624,0.588,625,0.588,626,0.547,627,2.611,628,1.516,629,0.648,630,0.836,631,1.068,632,0.648,633,0.648,634,0.614,635,1.222,636,0.648,637,0.547,638,0.648,639,0.648,640,0.648,641,0.531,642,0.648,643,0.648,644,0.588,645,0.648,646,1.222,647,0.77,648,0.588,649,0.614,650,0.648,651,0.566,652,0.408,653,0.46,654,0.421,655,0.648,656,1.222,657,0.648,658,1.222,659,0.566,660,0.648,661,0.648,662,1.222,663,0.648,664,2.195,665,0.48,666,0.46,667,0.491,668,0.648,669,1.159,670,0.648,671,0.648,672,0.648,673,0.48,674,0.38,675,0.648,676,0.648]],["component/11",[8,0.304]],["title/12",[405,31.51,677,45.311]],["name/12",[405,2.207]],["text/12",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/12",[8,0.304]],["title/13",[8,5.613,47,13.017,334,30.627]],["name/13",[47,0.693,334,1.631]],["text/13",[8,0.162,13,0.579,14,1.624,15,0.639,26,1.913,77,0.652,122,1.701,153,1.678,158,2.298,162,3.833,174,1.047,180,0.743,186,1.077,188,1.781,191,1.298,194,1.047,204,0.672,231,1.148,293,1.946,331,1.121,353,1.148,363,1.414,375,1.047,377,1.604,378,2.471,380,0.709,381,0.658,416,0.665,458,0.772,472,1.548,481,0.665,482,0.61,492,1.02,497,4.65,520,4.684,594,1.02,607,0.828,618,0.933,641,1.077,682,1.314,683,1.314,684,1.193,685,8.532,686,1.148,687,1.148,688,1.404,689,3.171,690,0.734,691,0.726,692,1.979,693,1.314,694,2.683,695,2.597,696,1.404,697,1.404,698,1.314,699,1.314,700,1.818,701,1.077,702,1.02,703,1.314,704,1.314,705,3.171,706,2.999,707,1.404,708,1.314]],["component/13",[8,0.304]],["title/14",[65,39.327]],["name/14",[9,1.827]],["text/14",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/14",[8,0.304]],["title/15-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/15-1",[]],["text/15-1",[]],["component/15-1",[]],["title/15-2",[8,5.613,13,20.074,90,28.292]],["name/15-2",[]],["text/15-2",[]],["component/15-2",[]],["title/15-3",[8,5.613,90,28.292,618,32.374]],["name/15-3",[]],["text/15-3",[]],["component/15-3",[]],["title/15-4",[8,5.613,77,22.605,90,28.292]],["name/15-4",[]],["text/15-4",[]],["component/15-4",[]],["title/15",[8,6.606,47,15.32]],["name/15",[47,0.693,132,0.928]],["text/15",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/15",[8,0.304]],["title/16-1",[331,18.962,729,39.726]],["name/16-1",[]],["text/16-1",[]],["component/16-1",[]],["title/16-2",[43,31.931,424,35.439]],["name/16-2",[]],["text/16-2",[]],["component/16-2",[]],["title/16-3",[8,5.613,479,21.549,730,34.527]],["name/16-3",[]],["text/16-3",[]],["component/16-3",[]],["title/16-4",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/16-4",[]],["text/16-4",[]],["component/16-4",[]],["title/16",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/16",[47,0.693,331,0.858]],["text/16",[8,0.878,11,1.668,36,2.157,43,1.798,47,1.348,51,3.118,56,1.664,66,1.441,97,1.594,132,2.724,162,1.753,188,0.947,197,2.576,210,1.544,211,1.648,221,1.995,225,1.774,226,1.63,227,1.402,228,1.708,234,3.221,237,2.189,238,1.612,262,2.296,267,1.498,268,1.729,277,1.708,331,2.519,350,1.428,355,1.963,378,2.068,379,1.155,385,2.03,396,1.963,418,2.145,424,3.118,436,2.03,437,3.105,459,2.145,463,2.145,472,1.995,477,2.189,479,2.231,480,3.421,481,2.388,482,3.308,550,2.104,553,2.104,590,2.03,611,1.729,647,1.903,653,2.145,674,2.772,731,1.995,732,1.798,733,1.63,734,2.344,735,3.495,736,2.344,737,2.474,738,2.288,739,2.288,740,2.189,741,1.648,742,2.344,743,5.097,744,2.344,745,3.663,746,2.344,747,2.104,748,3.663,749,3.663,750,2.344,751,2.344,752,2.189,753,2.344,754,1.903]],["component/16",[8,0.304]],["title/17",[105,41.695]],["name/17",[9,1.827]],["text/17",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/17",[8,0.304]],["title/18-1",[4,38.103,756,57.322]],["name/18-1",[]],["text/18-1",[]],["component/18-1",[]],["title/18-2",[78,21.616,423,40.637]],["name/18-2",[]],["text/18-2",[]],["component/18-2",[]],["title/18",[0,48.267]],["name/18",[9,1.827]],["text/18",[1,2.281,8,0.904,13,1.108,14,1.316,15,2.881,21,1.459,28,1.562,30,1.739,33,2.844,37,1.39,39,2.062,47,0.719,49,1.519,56,1.86,62,1.128,66,1.201,76,1.636,77,3.458,78,1.645,84,1.721,95,1.721,97,1.328,115,2.697,119,2.178,129,2.062,130,1.459,132,1.968,146,1.753,153,2.318,165,1.108,173,1.441,179,1.562,180,2.308,183,2.463,185,1.108,188,1.615,190,1.824,212,1.691,214,2.743,219,1.684,225,1.478,229,1.864,234,1.137,245,1.478,258,2.774,262,1.224,266,1.61,295,1.274,315,1.663,331,2.094,333,2.228,340,1.788,350,3.078,386,3.023,388,1.586,389,1.691,397,1.586,398,2.611,399,1.721,402,1.906,419,1.562,425,1.721,426,2.285,431,1.824,448,1.691,476,1.61,547,2.004,574,3.901,583,1.906,585,2.004,614,1.906,630,1.721,659,2.199,712,1.824,721,2.199,722,2.199,723,4.127,724,2.199,725,2.199,726,3.567,727,1.953,728,2.199,733,1.358,757,2.517,758,2.062,759,4.082,760,2.517,761,2.004,762,2.388,763,2.199,764,2.517,765,2.388,766,2.689,767,2.689,768,2.199,769,2.689,770,2.517,771,1.953]],["component/18",[8,0.304]],["title/19",[77,26.606,381,26.872]],["name/19",[381,1.882]],["text/19",[8,0.522,25,2.523,30,3.316,56,1.804,58,2.102,71,3.21,77,2.102,90,2.631,130,3.529,153,1.338,180,3.442,211,2.313,212,2.848,275,3.894,294,3.138,350,2.004,379,1.62,381,2.123,540,6.245,588,2.953,666,3.01,772,4.529,773,4.238,774,3.848,775,3.138,776,3.703,777,7.041,778,4.238,779,6.086,780,3.703,781,4.529,782,4.323,783,4.529,784,4.507,785,5.672,786,4.529,787,4.238,788,4.529,789,4.529,790,4.529,791,4.021,792,3.848,793,4.529,794,4.529,795,4.529]],["component/19",[8,0.304]],["title/20-1",[56,11.545,165,20.074,258,19.416]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20-2",[56,11.545,173,26.096,258,19.416]],["name/20-2",[]],["text/20-2",[]],["component/20-2",[]],["title/20-3",[56,11.545,258,19.416,630,31.174]],["name/20-3",[]],["text/20-3",[]],["component/20-3",[]],["title/20",[62,24.035,77,26.606]],["name/20",[62,1.683]],["text/20",[2,2.91,8,0.398,13,0.837,14,1.75,15,3.453,25,1.131,36,0.705,47,0.542,48,2.09,49,1.146,56,2.194,62,1.447,67,1.323,73,2.739,76,1.234,77,0.942,81,1.299,92,1.784,94,3.181,112,1.234,122,1.582,132,0.726,153,1.76,159,2.1,165,0.837,173,1.85,175,3.878,183,1.146,185,0.837,188,2.306,189,1.513,191,0.777,192,3.75,195,1.724,201,3.798,206,1.162,219,1.739,234,1.905,238,1.014,245,1.898,255,2.005,258,3.308,262,1.571,267,0.942,269,1.074,277,1.074,293,2.455,315,1.255,327,1.556,331,0.671,333,2.301,348,1.474,353,1.66,363,1.146,368,3.71,379,1.901,380,1.743,381,1.618,388,3.133,390,1.439,391,2.447,398,2.067,419,1.179,446,1.407,489,1.179,511,1.377,518,1.255,520,1.037,611,1.088,630,1.299,652,2.035,665,2.392,694,2.937,702,1.474,741,1.037,771,4.705,796,1.556,797,1.439,798,2.03,799,2.251,800,2.03,801,2.03,802,1.66,803,1.66,804,1.802,805,2.392,806,2.03,807,1.802,808,1.802,809,1.66,810,1.604,811,1.802]],["component/20",[8,0.304]],["title/21-1",[812,50.583]],["name/21-1",[]],["text/21-1",[]],["component/21-1",[]],["title/21-2",[813,69.648]],["name/21-2",[]],["text/21-2",[]],["component/21-2",[]],["title/21-3",[153,16.935,647,33.796]],["name/21-3",[]],["text/21-3",[]],["component/21-3",[]],["title/21-4",[14,9.21,78,18.366,188,14.297]],["name/21-4",[]],["text/21-4",[]],["component/21-4",[]],["title/21-5",[78,21.616,153,16.935]],["name/21-5",[]],["text/21-5",[]],["component/21-5",[]],["title/21-6",[14,9.21,188,14.297,192,26.428]],["name/21-6",[]],["text/21-6",[]],["component/21-6",[]],["title/21",[14,6.347,56,7.956,153,9.916,165,13.834,188,9.853,258,13.38]],["name/21",[814,4.014]],["text/21",[11,1.349,14,1.664,23,3.938,26,3.045,33,2.776,36,1.48,56,1.009,66,1.166,70,4.409,78,1.606,112,1.588,132,2.225,141,2.126,153,2.47,162,1.48,165,1.076,173,1.399,183,1.474,185,1.076,188,2.583,190,1.771,191,1.631,201,3.007,204,1.249,206,4.628,214,1.642,234,1.104,244,2.135,255,2.474,258,1.041,262,1.188,267,1.212,269,1.382,295,2.553,335,1.896,363,2.404,388,2.511,392,1.642,416,2.017,419,1.517,431,1.771,463,1.736,468,2.951,475,1.896,557,3.658,611,1.399,616,2.059,630,1.671,690,1.365,694,4.055,712,1.771,733,1.319,735,3.737,741,1.334,797,1.851,815,6.024,816,2.611,817,1.851,818,4.311,819,3.264,820,2.135,821,2.135,822,2.135,823,2.611,824,3.482,825,5.392,826,5.046,827,4.581,828,6.22,829,1.851,830,2.444,831,2.318,832,2.611,833,2.611,834,2.611,835,2.611,836,2.444]],["component/21",[8,0.304]],["title/22-1",[812,50.583]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22-2",[331,23.038]],["name/22-2",[]],["text/22-2",[]],["component/22-2",[]],["title/22-3",[78,26.264]],["name/22-3",[]],["text/22-3",[]],["component/22-3",[]],["title/22-4",[153,16.935,210,27.426]],["name/22-4",[]],["text/22-4",[]],["component/22-4",[]],["title/22-5",[56,16.509]],["name/22-5",[]],["text/22-5",[]],["component/22-5",[]],["title/22",[14,5.751,15,13.843,56,7.209,173,16.296,188,8.928,258,12.124,771,22.088]],["name/22",[837,4.014]],["text/22",[11,2.206,12,1.74,14,1.738,15,2.837,30,1.294,36,1.484,47,1.141,48,0.877,56,1.81,62,2.613,76,1.149,78,1.61,90,1.098,94,1.131,109,1.209,112,1.975,122,1.346,153,2.256,165,1.338,173,1.012,185,1.338,188,2.161,190,2.203,191,1.941,192,1.025,196,2.007,198,1.34,201,2.759,204,2.425,206,2.445,208,1.025,214,1.188,219,0.729,227,0.821,234,0.799,238,0.944,255,2.48,258,2.275,262,0.86,269,1.718,293,1.76,295,1.538,303,1.859,331,1.412,333,0.965,346,1.408,368,4.214,378,0.629,379,2.229,380,1.64,388,2.517,390,1.34,391,1.34,431,1.282,438,1.494,446,1.309,468,3.512,472,4.124,478,1.494,504,1.188,511,1.282,518,2.007,555,2.567,557,1.282,588,1.232,630,1.209,652,1.114,665,1.309,690,1.698,694,4.349,700,1.372,701,2.489,702,1.372,712,1.282,732,1.053,733,0.954,771,3.68,775,1.309,796,1.448,799,2.784,802,1.545,803,1.545,805,2.25,812,2.358,815,2.42,818,2.25,819,2.489,820,1.545,821,1.545,822,1.545,824,1.545,838,1.494,839,1.889,840,1.678,841,1.889,842,2.883,843,1.678,844,1.889,845,1.605,846,4.319,847,1.889,848,1.605,849,2.759,850,1.448,851,3.791,852,1.889,853,1.889,854,1.605,855,1.545,856,1.494]],["component/22",[8,0.304]],["title/23-1",[812,50.583]],["name/23-1",[]],["text/23-1",[]],["component/23-1",[]],["title/23-2",[331,23.038]],["name/23-2",[]],["text/23-2",[]],["component/23-2",[]],["title/23-3",[78,26.264]],["name/23-3",[]],["text/23-3",[]],["component/23-3",[]],["title/23-4",[153,16.935,210,27.426]],["name/23-4",[]],["text/23-4",[]],["component/23-4",[]],["title/23-5",[56,16.509]],["name/23-5",[]],["text/23-5",[]],["component/23-5",[]],["title/23",[14,5.751,15,13.843,56,7.209,188,8.928,258,12.124,388,17.931,630,19.466]],["name/23",[857,4.014]],["text/23",[2,2.439,8,0.417,11,1.872,12,1.445,14,1.728,15,3.954,19,1.318,30,1.444,36,1.259,47,0.968,48,0.709,56,1.713,58,0.709,62,0.64,73,0.929,76,0.929,78,1.649,90,0.887,92,0.789,109,0.977,112,1.64,122,1.582,123,2.364,153,2.059,159,2.203,165,1.112,173,1.941,175,2.168,184,1.207,185,1.112,188,2.356,190,1.83,191,1.387,192,1.464,198,1.912,199,1.058,201,4.025,204,1.29,206,2.074,208,1.464,210,0.731,213,0.874,214,0.96,220,1.758,227,0.663,234,0.646,238,0.763,255,2.54,258,1.99,262,1.649,269,1.917,293,1.493,295,1.277,303,0.874,331,1.446,368,2.858,378,0.509,379,1.786,380,0.771,381,1.264,382,1.083,388,4.632,391,1.083,396,0.929,431,1.036,446,1.058,452,1.356,468,2.51,472,0.944,478,1.207,511,3.386,515,1.171,518,0.944,520,0.78,555,1.207,557,1.036,559,1.036,588,0.996,589,0.944,625,1.297,652,2.578,665,1.058,690,1.41,694,3.255,700,1.109,701,1.171,712,1.036,732,0.851,733,0.771,771,4.327,775,1.058,799,1.758,802,1.249,803,1.249,805,1.058,807,2.395,808,1.356,809,1.249,810,1.207,812,1.959,815,2.01,818,1.869,819,2.068,820,1.249,821,1.249,822,1.249,824,1.249,838,1.207,842,1.356,843,1.356,845,1.297,846,3.03,848,1.297,849,2.291,850,1.171,851,3.882,855,1.249,856,1.207,858,1.429,859,1.527,860,1.527,861,1.429,862,2.239,863,1.527,864,1.527,865,1.527,866,1.527]],["component/23",[8,0.304]],["title/24-1",[0,48.267]],["name/24-1",[]],["text/24-1",[]],["component/24-1",[]],["title/24-2",[78,21.616,423,40.637]],["name/24-2",[]],["text/24-2",[]],["component/24-2",[]],["title/24-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/24-3",[]],["text/24-3",[]],["component/24-3",[]],["title/24-4",[331,18.962,729,39.726]],["name/24-4",[]],["text/24-4",[]],["component/24-4",[]],["title/24-5",[43,31.931,424,35.439]],["name/24-5",[]],["text/24-5",[]],["component/24-5",[]],["title/24-6",[8,5.613,479,21.549,730,34.527]],["name/24-6",[]],["text/24-6",[]],["component/24-6",[]],["title/24-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/24-7",[]],["text/24-7",[]],["component/24-7",[]],["title/24",[7,40.637,447,31.51]],["name/24",[9,1.827]],["text/24",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/24",[8,0.304]],["title/25",[126,36.69,447,31.51]],["name/25",[9,1.827]],["text/25",[405,4.809]],["component/25",[8,0.304]],["title/26-1",[867,46.875,868,50.896]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26",[706,39.881]],["name/26",[706,2.299]],["text/26",[2,1.325,8,0.313,10,1.285,14,1.551,16,1.84,30,2.206,36,0.943,39,2.079,45,1.576,48,2.569,49,1.532,56,1.508,58,2.039,71,1.923,92,2.269,100,3.215,122,1.167,143,2.671,144,1.706,166,1.511,168,2.144,185,1.118,197,2.827,200,3.367,201,3.616,211,1.385,219,1.047,223,4.741,228,1.436,234,1.147,238,1.355,262,2.519,264,4.62,275,1.624,290,1.97,293,2.281,298,1.923,308,2.079,318,1.84,319,3.367,333,1.385,355,2.671,386,3.044,390,1.923,407,2.144,422,2.079,495,3.044,500,1.97,520,1.385,571,3.732,598,2.305,611,1.453,644,2.305,653,1.803,654,1.65,692,2.144,706,2.515,758,2.079,768,3.592,775,1.88,817,1.923,867,4.526,868,5.648,869,4.11,870,2.712,871,2.538,872,4.914,873,4.392,874,2.712,875,2.712,876,2.712,877,2.712,878,4.392,879,2.712,880,2.712,881,4.645,882,1.97,883,2.218,884,2.712,885,2.712,886,2.712,887,2.305,888,2.712,889,2.079,890,2.712,891,2.408,892,2.712,893,2.712,894,2.712,895,2.712,896,2.712,897,2.305,898,2.305,899,3.472,900,2.712,901,2.538,902,2.712,903,2.712,904,2.712,905,2.712]],["component/26",[8,0.304]],["title/27",[447,38.285]],["name/27",[9,1.827]],["text/27",[405,4.809]],["component/27",[8,0.304]],["title/28-1",[605,40.637,906,50.896]],["name/28-1",[]],["text/28-1",[]],["component/28-1",[]],["title/28-2",[28,33.299,907,50.896]],["name/28-2",[]],["text/28-2",[]],["component/28-2",[]],["title/28-3",[122,11.246,380,21.38,706,24.243,805,29.341]],["name/28-3",[]],["text/28-3",[]],["component/28-3",[]],["title/28-4",[185,20.074,881,32.374,908,41.379]],["name/28-4",[]],["text/28-4",[]],["component/28-4",[]],["title/28-5",[100,28.292,881,32.374,909,41.379]],["name/28-5",[]],["text/28-5",[]],["component/28-5",[]],["title/28-6",[28,28.292,194,36.302,520,24.876]],["name/28-6",[]],["text/28-6",[]],["component/28-6",[]],["title/28",[706,39.881]],["name/28",[706,2.299]],["text/28",[2,0.932,14,0.893,16,0.705,25,1.472,30,0.761,34,1.022,37,0.537,45,1.108,48,0.885,54,0.737,56,1.361,58,0.885,78,0.392,84,0.666,92,0.537,94,0.623,96,0.737,100,2.744,122,0.507,141,0.519,143,1.991,153,0.307,162,3.619,175,0.623,181,3.949,188,1.387,189,0.775,191,0.731,193,1.352,194,2.848,197,0.531,199,0.721,201,2.775,202,0.755,203,1.221,204,0.913,207,0.666,210,0.498,219,1.264,225,0.572,228,0.55,234,1.385,238,0.519,246,0.883,257,1.462,258,0.415,262,0.473,268,0.557,270,0.705,275,1.96,277,2.276,281,3.674,290,0.755,293,1.575,319,0.797,326,1.621,331,0.344,333,0.531,349,0.85,354,1.832,355,0.632,365,1.268,368,0.595,371,3.206,377,0.492,378,0.346,379,1.171,380,0.525,391,0.737,398,0.623,399,1.692,407,0.822,416,0.903,419,0.604,430,0.755,448,0.654,459,2.54,462,4.528,489,0.604,492,0.755,495,1.832,516,0.973,520,0.974,550,0.678,589,2.659,652,0.613,674,0.572,706,1.092,723,1.244,747,0.678,754,0.613,763,0.85,768,0.85,774,0.883,784,1.322,797,0.737,805,0.721,809,0.85,817,1.352,829,1.352,872,0.923,881,3.816,882,0.755,891,0.923,898,2.782,899,0.822,906,1.694,907,1.694,908,0.883,909,0.883,910,1.462,911,1.04,912,6.32,913,1.04,914,3.274,915,1.04,916,1.908,917,1.04,918,1.04,919,1.04,920,1.04,921,0.923,922,1.04,923,1.04,924,1.04,925,1.04,926,3.821,927,1.908,928,1.908,929,1.908,930,1.04,931,1.04,932,1.04,933,1.04,934,1.04,935,1.04,936,1.04,937,1.462,938,4.301,939,2.643,940,1.908,941,3.274,942,3.274,943,1.04,944,1.908,945,2.643,946,2.643,947,1.04,948,1.908,949,1.908,950,1.04,951,1.04,952,2.643,953,1.04,954,3.274,955,1.908,956,1.508,957,2.54,958,1.908,959,1.04,960,1.908,961,1.908,962,1.04,963,1.04,964,1.908,965,1.04,966,2.643,967,0.973,968,0.85,969,1.04,970,1.04,971,2.643,972,1.04,973,1.04,974,1.04,975,1.04,976,1.04,977,1.04,978,4.301,979,1.04,980,1.04,981,1.04,982,2.089,983,1.04,984,1.04,985,1.908,986,1.04,987,1.04,988,1.04,989,1.908,990,1.04,991,1.04,992,1.908,993,1.04,994,1.04,995,1.04,996,1.04,997,1.04,998,1.04,999,1.04]],["component/28",[8,0.304]],["title/29",[14,8.473,122,7.385,188,8.161,196,17.189,208,15.086,293,11.459,476,16.644]],["name/29",[14,0.287,122,0.403,476,0.909,1000,1.519]],["text/29",[14,1.616,56,1.608,66,2.146,122,2.089,130,2.608,162,3.468,165,1.981,185,1.981,188,1.411,196,2.971,204,3.246,208,2.608,226,2.427,253,4.342,277,2.543,295,2.276,377,2.276,379,1.719,416,2.276,417,3.49,476,4.708,589,2.971,616,2.323,691,2.483,754,2.833,784,3.33,912,5.711,1001,6.784,1002,4.805,1003,4.805,1004,4.805,1005,4.805,1006,4.805,1007,4.805,1008,4.805,1009,4.805,1010,4.805,1011,4.083,1012,4.083]],["component/29",[8,0.304]],["title/30",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/30",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/30",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/30",[8,0.304]],["title/31",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/31",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/31",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1051,1.376,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45]],["component/31",[8,0.304]],["title/32",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/32",[14,0.362,188,0.562,596,1.014]],["text/32",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/32",[8,0.304]],["title/33-1",[62,29.203]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33-2",[227,24.902,616,27.714]],["name/33-2",[]],["text/33-2",[]],["component/33-2",[]],["title/33-3",[227,24.902,1090,50.896]],["name/33-3",[]],["text/33-3",[]],["component/33-3",[]],["title/33-4",[227,24.902,1091,57.322]],["name/33-4",[]],["text/33-4",[]],["component/33-4",[]],["title/33-5",[227,21.157,600,30.111,1092,48.704]],["name/33-5",[]],["text/33-5",[]],["component/33-5",[]],["title/33-6",[227,21.157,600,30.111,1093,43.243]],["name/33-6",[]],["text/33-6",[]],["component/33-6",[]],["title/33-7",[350,30.815]],["name/33-7",[]],["text/33-7",[]],["component/33-7",[]],["title/33",[14,8.473,122,7.385,191,10.649,206,15.92,269,14.714,378,9.261,910,21.313]],["name/33",[14,0.238,47,0.336,378,0.419,694,0.82,695,0.965]],["text/33",[12,2.871,14,1.545,30,0.68,34,0.914,36,0.593,56,0.936,78,0.643,81,1.091,100,1.726,122,1.255,123,0.807,132,1.063,139,1.514,141,0.851,145,0.963,151,1.209,153,1.869,159,1.037,162,2.946,165,0.703,185,0.703,186,1.307,188,1.968,191,1.138,201,0.824,202,1.238,203,2.527,206,3.068,207,2.527,228,0.902,245,0.937,247,1.807,248,1.238,249,1.449,253,2.527,254,2.214,264,1.238,267,2.193,268,1.592,269,1.572,274,2.059,275,1.021,281,1.091,350,0.754,361,1.271,365,1.133,370,1.596,374,2.829,378,1.315,379,1.063,380,2.386,399,1.091,406,4.014,416,2.238,417,1.238,427,1.037,436,1.072,437,0.754,456,1.182,458,0.937,459,1.133,475,3.891,479,0.754,481,0.807,482,0.741,600,3.637,607,1.005,608,1.902,611,0.914,616,1.909,641,1.307,654,1.807,674,2.597,684,2.524,690,0.892,694,3.835,695,3.026,723,3.493,731,1.054,741,0.871,782,1.133,815,1.271,829,2.799,910,4.107,956,1.348,957,4.674,1049,1.307,1051,1.514,1062,2.278,1081,1.449,1090,2.638,1093,1.514,1094,3.735,1095,1.705,1096,1.705,1097,2.278,1098,2.348,1099,1.449,1100,4.235,1101,2.971,1102,2.971,1103,1.705,1104,1.705,1105,1.705,1106,1.705,1107,1.596,1108,3.948,1109,1.705,1110,2.348,1111,2.524,1112,1.705,1113,1.705,1114,1.871,1115,1.449,1116,1.705,1117,1.871,1118,1.596,1119,1.871,1120,1.348,1121,2.524,1122,1.449,1123,2.524,1124,1.449,1125,2.971,1126,1.705,1127,1.705,1128,1.514,1129,1.514,1130,1.705,1131,1.705,1132,1.348,1133,3.948,1134,2.971,1135,3.948,1136,2.971,1137,1.705,1138,1.705,1139,1.705,1140,1.705,1141,1.705,1142,1.705,1143,1.705,1144,1.705,1145,1.705]],["component/33",[8,0.304]],["title/34",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/34",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/34",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/34",[8,0.304]],["title/35-1",[62,29.203]],["name/35-1",[]],["text/35-1",[]],["component/35-1",[]],["title/35",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/35",[47,0.512,381,0.898,607,1.13]],["text/35",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.396,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897]],["component/35",[8,0.304]],["title/36-1",[62,29.203]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[227,24.902,616,27.714]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[227,24.902,1222,45.311]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[227,24.902,1097,43.942]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[227,24.902,416,27.146]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[247,34.864,277,30.337]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[350,30.815]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/36",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/36",[2,0.622,12,1.229,14,0.835,21,0.691,30,1.963,36,0.797,37,1.185,56,1.271,66,0.569,67,0.83,100,0.74,101,0.883,114,2.495,122,1.833,123,1.086,130,2.397,132,0.456,141,2.678,144,0.801,145,0.719,153,1.798,162,3.031,173,0.682,185,0.525,191,0.879,199,0.883,203,2.003,210,1.497,212,0.801,219,0.492,227,2.139,229,0.883,238,0.636,247,1.903,250,1.041,253,1.468,258,0.508,267,3.305,279,0.801,282,0.883,361,0.949,363,1.295,365,2.544,371,1.352,374,1.373,377,1.086,378,1.042,379,2.897,380,1.932,381,3.235,382,0.903,389,0.801,390,1.626,399,1.468,402,0.903,416,2.882,425,1.468,427,0.775,436,0.801,437,0.563,456,2.169,458,0.7,475,0.925,479,0.563,481,0.603,482,0.553,485,0.949,486,0.976,518,0.787,520,1.598,543,0.976,569,1.758,576,1.007,594,0.925,600,1.935,607,3.162,608,3.895,616,3.709,637,1.007,674,3.159,678,0.949,687,1.041,690,2.001,706,1.313,731,0.787,754,1.352,761,0.949,782,2.544,797,0.903,817,2.219,889,0.976,899,1.007,921,1.131,957,3.82,968,1.041,982,1.007,1011,1.082,1012,1.082,1049,4.665,1060,0.976,1062,1.758,1065,1.876,1071,2.559,1073,1.041,1075,1.041,1076,1.876,1078,1.876,1094,2.474,1097,0.976,1098,1.007,1099,1.082,1110,3.025,1111,3.251,1121,1.949,1122,1.082,1123,1.949,1124,1.082,1146,0.801,1148,1.041,1154,0.949,1222,1.813,1223,1.082,1224,2.147,1225,2.147,1226,1.192,1227,2.147,1228,2.147,1229,2.147,1230,2.147,1231,1.192,1232,1.192,1233,1.192,1234,1.192,1235,2.147,1236,2.147,1237,1.274,1238,1.082,1239,1.274,1240,1.082,1241,2.147,1242,1.192,1243,1.192,1244,1.192,1245,1.192,1246,1.192,1247,1.192,1248,1.192,1249,1.192,1250,1.192,1251,0.976,1252,2.147,1253,1.192,1254,1.192,1255,1.192,1256,1.192,1257,1.192,1258,1.192,1259,1.192,1260,1.192,1261,1.192,1262,1.192,1263,1.192,1264,1.192,1265,1.192,1266,1.274,1267,1.274,1268,1.192,1269,1.192,1270,1.192,1271,1.192,1272,1.192,1273,1.192,1274,1.192,1275,1.192,1276,1.192,1277,1.192]],["component/36",[8,0.304]],["title/37",[14,9.21,122,12.937,379,17.423]],["name/37",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/37",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/37",[8,0.304]],["title/38-1",[62,29.203]],["name/38-1",[]],["text/38-1",[]],["component/38-1",[]],["title/38-2",[165,23.626,1281,50.896]],["name/38-2",[]],["text/38-2",[]],["component/38-2",[]],["title/38-3",[1282,69.648]],["name/38-3",[]],["text/38-3",[]],["component/38-3",[]],["title/38",[14,10.84,122,15.227]],["name/38",[14,0.362,47,0.512,122,0.509]],["text/38",[8,0.394,14,1.95,19,1.671,29,1.959,37,4.042,47,1.41,49,1.931,56,1.527,66,2.356,122,2.62,123,1.62,132,1.224,162,2.238,183,1.931,201,3.114,219,3.191,225,1.88,226,1.727,234,3.309,258,1.364,303,1.959,318,2.32,335,4.678,375,3.933,377,1.62,379,2.304,380,2.664,381,1.603,437,1.513,458,1.88,479,1.513,481,1.62,482,1.486,520,1.747,582,2.622,583,2.425,589,4.476,605,2.425,617,2.906,631,2.797,678,2.549,1023,2.906,1146,2.151,1154,2.549,1157,2.906,1281,3.037,1283,3.037,1284,3.42,1285,3.42,1286,3.42,1287,3.42]],["component/38",[8,0.304]],["title/39-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[14,9.21,153,14.389,188,14.297]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[10,32.982]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39-4",[122,18.501]],["name/39-4",[]],["text/39-4",[]],["component/39-4",[]],["title/39",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/39",[14,0.362,47,0.512,188,0.562]],["text/39",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/39",[8,0.304]],["title/40-1",[372,32.824,1296,50.896]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40-2",[9,31.701]],["name/40-2",[]],["text/40-2",[]],["component/40-2",[]],["title/40-3",[36,24.202]],["name/40-3",[]],["text/40-3",[]],["component/40-3",[]],["title/40-4",[1297,69.648]],["name/40-4",[]],["text/40-4",[]],["component/40-4",[]],["title/40",[14,8.006,153,12.508,188,12.428,191,16.216]],["name/40",[14,0.238,47,0.336,153,0.372,188,0.369,191,0.482]],["text/40",[9,1.923,11,3.195,36,2.978,41,3.149,44,2.322,81,2.704,86,3.589,122,1.122,132,1.511,143,2.569,162,2.149,163,5.254,166,4.485,185,1.741,189,3.149,191,1.618,201,2.042,208,2.292,223,4.195,258,1.684,277,2.236,311,4.111,333,2.158,354,2.928,372,5.126,398,2.529,416,2.001,437,1.869,458,2.322,479,1.869,481,2.001,482,1.835,611,2.264,616,2.042,732,3.445,741,2.158,791,3.751,827,3.589,881,2.808,1098,3.339,1110,3.339,1129,3.751,1132,3.339,1296,7.608,1298,4.225,1299,4.225,1300,3.953,1301,4.225,1302,4.225,1303,4.225,1304,3.953,1305,6.184,1306,4.225,1307,6.184]],["component/40",[8,0.304]],["title/41-1",[62,29.203]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41",[702,41.632,1308,57.322]],["name/41",[14,0.287,47,0.406,122,0.403,701,1.164]],["text/41",[10,2.57,14,1.879,25,3.023,56,1.287,122,2.391,132,1.942,159,3.301,162,1.886,188,2.167,191,2.079,192,2.945,198,3.848,219,2.095,368,4.227,378,1.808,379,2.641,380,2.741,382,3.848,448,3.413,481,2.57,515,5.658,518,3.355,652,3.2,702,5.361,712,3.682,840,6.554,867,4.438,982,5.835,1309,5.427]],["component/41",[8,0.304]],["title/42",[105,34.317,447,31.51]],["name/42",[9,1.827]],["text/42",[405,4.809]],["component/42",[8,0.304]],["title/43-1",[0,48.267]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[78,21.616,423,40.637]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/43-3",[]],["text/43-3",[]],["component/43-3",[]],["title/43-4",[331,18.962,729,39.726]],["name/43-4",[]],["text/43-4",[]],["component/43-4",[]],["title/43-5",[43,31.931,424,35.439]],["name/43-5",[]],["text/43-5",[]],["component/43-5",[]],["title/43-6",[8,5.613,479,21.549,730,34.527]],["name/43-6",[]],["text/43-6",[]],["component/43-6",[]],["title/43-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/43-7",[]],["text/43-7",[]],["component/43-7",[]],["title/43",[7,40.637,720,39.726]],["name/43",[9,1.827]],["text/43",[8,0.982,11,1.556,13,1.968,36,2.062,43,1.677,47,1.586,51,2.952,56,1.601,66,1.345,89,1.426,97,1.487,130,1.634,132,2.804,162,1.659,188,0.884,197,2.439,210,1.441,211,1.538,219,1.162,221,1.862,225,1.655,226,1.521,227,1.308,228,1.594,234,3.115,237,2.043,238,1.504,262,2.174,267,1.398,268,1.613,277,1.594,331,2.436,350,1.332,355,1.831,378,2.25,379,1.077,385,1.894,396,1.831,418,2.002,424,2.952,436,1.894,437,2.988,459,2.002,463,2.002,466,1.655,472,1.862,477,2.043,479,2.113,480,3.239,481,2.262,482,3.199,489,1.749,550,1.963,553,1.963,590,1.894,611,1.613,647,1.775,653,2.002,674,2.625,720,2.087,731,1.862,732,1.677,733,1.521,734,2.187,735,3.31,736,2.187,737,2.308,738,2.135,739,2.135,740,2.043,741,1.538,742,2.187,743,4.906,744,2.187,745,3.468,746,2.187,747,1.963,748,3.468,749,3.468,750,2.187,751,2.187,752,2.043,753,2.187,754,1.775]],["component/43",[8,0.304]],["title/44",[8,5.613,13,20.074,378,16.222]],["name/44",[9,1.827]],["text/44",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/44",[8,0.304]],["title/45-1",[379,20.506,596,30.337]],["name/45-1",[]],["text/45-1",[]],["component/45-1",[]],["title/45-2",[89,27.146,1313,45.311]],["name/45-2",[]],["text/45-2",[]],["component/45-2",[]],["title/45",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/45",[13,1.069,596,1.373]],["text/45",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/45",[8,0.304]],["title/46",[105,34.317,720,39.726]],["name/46",[9,1.827]],["text/46",[405,4.809]],["component/46",[8,0.304]],["title/47-1",[0,48.267]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[1,36.417]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[2,28.009,3,39.726]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[3,39.726,4,38.103]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47-5",[5,45.409]],["name/47-5",[]],["text/47-5",[]],["component/47-5",[]],["title/47-6",[6,56.954]],["name/47-6",[]],["text/47-6",[]],["component/47-6",[]],["title/47",[7,40.637,8,6.606]],["name/47",[9,1.827]],["text/47",[1,4.148,3,3,4,1.279,5,1.255,6,1.573,8,0.725,10,2.05,11,2.237,12,2.748,13,1.784,14,1.273,15,2.335,16,1.305,17,1.434,18,1.573,19,1.612,20,1.573,21,1.044,22,1.573,23,1.767,24,1.397,25,1.072,26,1.862,27,1.19,28,1.118,29,1.102,30,0.767,31,1.364,32,1.573,33,2.15,34,1.767,35,2.237,36,1.504,37,1.704,38,1.801,39,1.475,40,1.801,41,1.434,42,1.708,43,1.072,44,1.813,45,1.118,46,1.801,47,1.682,48,0.893,49,2.444,50,1.801,51,1.19,52,1.333,53,1.475,54,1.364,55,1.801,56,1.216,57,2.458,58,1.531,59,1.635,60,1.434,61,1.573,62,0.807,63,2.514,64,3.086,65,1.862,66,1.933,67,1.255,68,1.635,69,4.051,70,1.573,71,2.338,72,1.118,73,1.17,74,1.19,75,1.708,76,1.17,77,0.893,78,1.244,79,1.801,80,1.475,81,1.232,82,1.801,83,1.573,84,1.232,85,1.801,86,1.635,87,2.697,88,1.475,89,1.562,91,1.573,92,0.994,93,3.086,94,1.152,95,1.232,96,1.364,97,1.629,98,3.086,99,1.801,100,1.118,101,1.333,102,1.801,103,1.801,104,1.573,105,1.152,106,1.333,107,1.255,108,1.573,109,1.232,110,1.434,111,1.475,112,1.17,113,1.573,114,1.255,115,1.19,116,1.573,117,1.333,119,1.647,120,1.17,123,1.562,126,2.111,127,1.364,128,1.801,129,1.475,130,1.044,131,1.521,132,1.548,133,2.458,134,1.801,135,1.521,136,1.475,137,1.573,138,1.801,139,1.708,140,2.074,141,0.961,142,1.397,143,1.17,144,2.722,145,1.087,146,1.255,147,1.801,148,1.801,149,1.801,150,1.801,151,1.364,152,1.801,153,0.974,154,1.801,155,1.801,156,1.801,157,1.134,158,1.305,159,1.17,160,1.801,161,1.801,162,0.669,163,1.635,164,1.573,165,0.793,166,1.072,167,1.801,168,1.521,169,1.21,170,1.801,171,1.801,172,1.801,173,1.031,174,1.434,175,1.152,176,1.801,177,1.801,178,1.801,333,0.983,529,1.17,826,1.801,1332,2.112,1333,2.112]],["component/47",[8,0.304]],["title/48-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/48-1",[]],["text/48-1",[]],["component/48-1",[]],["title/48-2",[180,36.86]],["name/48-2",[]],["text/48-2",[]],["component/48-2",[]],["title/48-3",[14,13.171]],["name/48-3",[]],["text/48-3",[]],["component/48-3",[]],["title/48",[179,40.459]],["name/48",[179,2.332]],["text/48",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/48",[8,0.304]],["title/49",[5,45.409]],["name/49",[5,2.617]],["text/49",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/49",[8,0.304]],["title/50-1",[338,65.178]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[339,65.178]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[219,26.887]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50",[8,6.606,340,38.103]],["name/50",[340,2.668]],["text/50",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/50",[8,0.304]],["title/51",[126,44.579]],["name/51",[9,1.827]],["text/51",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/51",[8,0.304]],["title/52",[87,39.827,403,45.578,404,45.578]],["name/52",[83,3.283]],["text/52",[405,4.809]],["component/52",[8,0.304]],["title/53",[120,42.36]],["name/53",[9,1.827]],["text/53",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/53",[8,0.304]],["title/54-1",[10,32.982]],["name/54-1",[]],["text/54-1",[]],["component/54-1",[]],["title/54-2",[466,31.51,467,43.942]],["name/54-2",[]],["text/54-2",[]],["component/54-2",[]],["title/54-3",[74,43.059]],["name/54-3",[]],["text/54-3",[]],["component/54-3",[]],["title/54-4",[62,20.421,276,33.753,527,39.827]],["name/54-4",[]],["text/54-4",[]],["component/54-4",[]],["title/54-5",[47,13.017,528,38.498,529,29.622]],["name/54-5",[]],["text/54-5",[]],["component/54-5",[]],["title/54-6",[14,9.21,122,12.937,529,29.622]],["name/54-6",[]],["text/54-6",[]],["component/54-6",[]],["title/54-7",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/54-7",[]],["text/54-7",[]],["component/54-7",[]],["title/54-8",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/54-8",[]],["text/54-8",[]],["component/54-8",[]],["title/54-9",[1,29.973,529,34.864]],["name/54-9",[]],["text/54-9",[]],["component/54-9",[]],["title/54-10",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/54-10",[]],["text/54-10",[]],["component/54-10",[]],["title/54-11",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/54-11",[]],["text/54-11",[]],["component/54-11",[]],["title/54-12",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/54-12",[]],["text/54-12",[]],["component/54-12",[]],["title/54-13",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/54-13",[]],["text/54-13",[]],["component/54-13",[]],["title/54-14",[536,56.954]],["name/54-14",[]],["text/54-14",[]],["component/54-14",[]],["title/54",[10,23.064,74,30.111,466,26.772]],["name/54",[74,2.482]],["text/54",[1,1.32,2,0.811,3,1.463,4,0.773,8,0.788,10,1.831,11,0.316,12,0.328,13,2.171,14,1.484,15,1.76,16,0.415,19,1.418,23,1.741,24,0.444,26,0.656,28,1.887,29,1.445,30,1.423,33,0.399,34,1.741,35,0.788,36,0.877,37,1.304,43,0.341,44,1.161,45,0.964,47,1.408,48,0.77,51,0.378,53,0.891,54,0.434,56,1.41,58,1.922,61,0.5,62,0.885,63,1.227,65,1.192,66,1.727,71,0.434,72,1.686,73,1.009,74,1.306,76,0.372,78,0.438,84,0.392,89,2.816,91,0.5,92,0.858,97,0.574,100,0.355,101,0.424,104,0.5,105,0.366,114,1.377,115,0.378,119,0.58,120,0.372,122,1.897,123,1.195,126,0.744,127,0.434,129,0.469,132,0.755,133,0.456,135,0.484,140,0.385,141,0.306,144,1.044,145,0.937,146,0.758,153,2.319,157,0.685,158,0.415,159,0.372,162,0.577,164,0.5,165,0.252,169,0.385,173,0.328,174,0.456,180,0.878,181,0.444,183,0.656,185,0.479,188,0.852,191,1.111,196,0.719,197,0.594,201,0.802,206,0.665,208,0.332,210,0.293,211,1.079,212,0.385,213,0.665,215,0.434,217,0.5,219,1.876,221,0.378,225,0.639,226,1.275,228,0.324,234,1.068,238,1.055,245,1.161,255,0.355,258,1.006,262,0.529,267,0.284,268,0.328,269,0.615,271,1.404,272,1.463,276,0.424,279,0.385,282,0.805,295,0.55,299,0.456,303,0.665,313,0.415,315,0.378,316,0.456,318,0.415,328,0.95,329,0.456,331,0.549,333,0.848,334,0.385,335,0.444,345,0.5,350,0.514,354,0.424,355,0.707,362,0.52,363,0.346,364,1.237,368,0.95,369,0.52,371,0.685,372,1.209,373,0.407,375,1.237,377,1.69,378,0.553,379,2.278,380,1.066,381,0.287,386,0.424,388,0.361,389,0.385,397,0.361,398,0.366,408,0.399,409,0.5,411,1.574,412,0.484,413,1.237,416,0.29,419,0.964,420,0.891,425,0.392,427,1.009,430,0.444,437,0.734,444,0.987,447,0.336,448,1.328,450,2.373,456,0.805,458,0.639,466,3.699,467,0.891,468,0.424,469,0.573,470,0.5,471,1.088,472,0.719,473,0.434,474,0.573,475,0.444,476,0.366,477,0.415,478,0.484,479,1.117,480,0.415,481,0.29,482,0.266,483,0.573,484,2.144,485,0.866,486,0.891,487,0.987,488,0.987,489,0.964,490,0.987,491,0.987,492,1.205,493,0.987,494,0.987,495,1.463,496,1.794,497,0.891,498,0.987,499,0.987,500,1.833,501,0.987,502,1.41,503,1.41,504,1.044,505,0.987,506,0.573,507,0.987,508,0.573,509,1.41,510,0.95,511,1.432,512,0.987,513,0.573,518,1.026,520,0.594,527,0.95,528,0.484,529,0.707,532,0.5,534,1.357,536,1.727,542,0.5,543,0.469,544,0.573,545,0.573,546,0.573,547,0.456,548,0.573,549,0.573,550,0.399,551,1.088,552,1.032,553,0.758,554,0.5,555,0.484,556,0.573,557,1.126,558,1.088,559,0.415,560,0.573,561,1.088,562,0.573,563,0.573,564,0.543,565,1.088,566,0.5,567,0.573,568,0.987,569,1.272,570,1.032,571,0.52,572,0.573,573,0.5,574,0.434,575,0.573,576,0.484,577,1.474,578,0.573,579,0.573,580,0.573,581,0.434,582,0.469,583,0.434,584,0.5,585,0.456,586,0.573,587,0.573,588,1.082,589,0.378,590,0.385,591,0.573,592,0.573,593,1.032,594,0.444,595,0.484,596,0.615,597,0.573,598,0.52,599,0.573,600,0.378,601,0.95,602,0.573,603,0.573,604,0.543,605,0.434,606,0.987,607,0.361,608,1.062,609,0.573,610,0.573,611,0.889,612,0.573,613,0.573,614,0.434,615,0.573,616,0.296,617,0.52,618,0.407,619,0.573,620,0.573,621,0.573,622,0.573,623,0.469,624,0.52,625,0.52,626,0.484,627,2.362,628,1.357,629,0.573,630,0.744,631,0.95,632,0.573,633,0.573,634,0.543,635,1.088,636,0.573,637,0.484,638,0.573,639,0.573,640,0.573,641,0.469,642,0.573,643,0.573,644,0.52,645,0.573,646,1.088,647,0.685,648,0.52,649,0.543,650,0.573,651,0.5,652,0.361,653,0.407,654,0.372,655,0.573,656,1.088,657,0.573,658,1.088,659,0.5,660,0.573,661,0.573,662,1.088,663,0.573,664,1.976,665,0.424,666,0.407,667,0.434,668,0.573,669,1.032,670,0.573,671,0.573,672,0.573,673,0.424,674,0.336,675,0.573,676,0.573]],["component/54",[8,0.304]],["title/55",[405,31.51,677,45.311]],["name/55",[405,2.207]],["text/55",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/55",[8,0.304]],["title/56",[8,5.613,47,13.017,334,30.627]],["name/56",[47,0.693,334,1.631]],["text/56",[8,0.229,13,0.818,14,1.592,15,0.903,26,2.501,77,0.921,122,1.913,153,1.891,158,3.005,162,3.813,174,1.479,180,1.05,186,1.522,188,1.879,191,1.297,204,0.95,231,1.623,293,2.158,331,1.465,363,1.121,377,2.098,378,2.594,381,0.931,416,0.94,458,1.091,472,2.094,481,0.94,482,0.862,492,1.442,497,4.907,520,4.529,594,1.442,607,1.17,641,1.522,682,1.858,683,1.858,684,1.686,685,8.588,686,1.623,687,1.623,689,3.17,690,1.038,691,1.026,692,2.677,693,1.858,694,1.294,698,1.858,699,1.858,700,2.46,703,1.858,704,1.858,705,4.146,708,1.858]],["component/56",[8,0.304]],["title/57",[65,39.327]],["name/57",[9,1.827]],["text/57",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/57",[8,0.304]],["title/58-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/58-1",[]],["text/58-1",[]],["component/58-1",[]],["title/58-2",[8,5.613,13,20.074,90,28.292]],["name/58-2",[]],["text/58-2",[]],["component/58-2",[]],["title/58-3",[8,5.613,90,28.292,618,32.374]],["name/58-3",[]],["text/58-3",[]],["component/58-3",[]],["title/58-4",[8,5.613,77,22.605,90,28.292]],["name/58-4",[]],["text/58-4",[]],["component/58-4",[]],["title/58",[8,6.606,47,15.32]],["name/58",[47,0.693,132,0.928]],["text/58",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/58",[8,0.304]],["title/59-1",[331,18.962,729,39.726]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59-2",[8,5.613,479,21.549,730,34.527]],["name/59-2",[]],["text/59-2",[]],["component/59-2",[]],["title/59-3",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/59-3",[]],["text/59-3",[]],["component/59-3",[]],["title/59",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/59",[47,0.693,331,0.858]],["text/59",[8,0.918,36,1.889,47,1.453,51,2.198,56,1.564,66,1.588,97,1.756,132,2.361,162,1.889,188,1.044,197,2.776,210,1.701,211,1.816,221,2.198,226,1.796,227,1.545,234,3.367,237,2.412,238,1.776,262,2.474,267,1.65,268,1.905,277,1.882,331,2.444,350,1.573,355,2.163,378,2.198,379,1.272,385,2.236,396,2.163,436,2.236,437,3.269,463,2.364,477,2.412,479,2.405,480,3.687,481,2.574,482,3.459,550,2.318,553,2.318,590,2.236,611,1.905,647,2.096,674,2.988,731,2.198,732,1.981,733,1.796,734,2.583,735,3.767,736,2.583,739,2.521,740,2.412,741,1.816,742,2.583,743,5.367,744,2.583,745,3.948,746,2.583,747,2.318,748,3.948,749,3.948,750,2.583,751,2.583,752,2.412,753,2.583,754,2.096]],["component/59",[8,0.304]],["title/60",[105,41.695]],["name/60",[9,1.827]],["text/60",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/60",[8,0.304]],["title/61-1",[0,48.267]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[78,21.616,423,40.637]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/61-3",[]],["text/61-3",[]],["component/61-3",[]],["title/61-4",[331,18.962,729,39.726]],["name/61-4",[]],["text/61-4",[]],["component/61-4",[]],["title/61-5",[43,31.931,424,35.439]],["name/61-5",[]],["text/61-5",[]],["component/61-5",[]],["title/61-6",[8,5.613,479,21.549,730,34.527]],["name/61-6",[]],["text/61-6",[]],["component/61-6",[]],["title/61-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/61-7",[]],["text/61-7",[]],["component/61-7",[]],["title/61-8",[637,45.311,1223,48.702]],["name/61-8",[]],["text/61-8",[]],["component/61-8",[]],["title/61",[7,34.527,8,5.613,77,22.605]],["name/61",[9,1.827]],["text/61",[2,0.849,8,0.927,10,1.431,11,1.561,13,1.245,14,0.758,15,1.375,19,0.849,21,0.943,28,1.01,30,1.597,36,2.22,37,0.898,39,1.332,43,0.968,44,0.955,47,1.071,49,0.981,51,1.868,56,1.86,66,1.349,75,1.543,77,2.966,78,0.655,84,1.112,95,1.112,97,1.492,115,2.477,119,1.509,126,1.112,130,0.943,132,2.537,146,1.133,153,1.999,162,1.05,179,1.01,180,2.121,183,1.706,188,0.51,196,1.075,197,1.543,210,0.832,211,0.888,212,1.093,219,1.547,221,1.868,225,1.661,226,0.878,227,1.312,228,0.92,229,1.205,234,2.516,237,1.179,238,0.868,245,0.955,258,2.162,262,1.375,267,0.807,268,0.931,277,0.92,295,0.823,315,1.075,327,1.332,331,1.967,333,0.888,340,1.155,346,1.296,350,2.827,355,1.057,378,1.335,379,0.622,385,1.093,386,1.205,389,1.093,392,1.093,396,1.057,397,1.025,398,1.041,402,1.232,418,1.155,419,1.01,424,2.477,431,1.179,436,1.093,437,2.118,459,1.155,463,1.155,472,1.075,477,1.179,479,1.337,480,2.049,481,1.431,482,2.355,547,1.296,550,1.133,553,1.133,557,1.179,574,2.142,583,1.232,585,1.296,590,1.093,611,0.931,623,1.332,647,1.025,652,1.781,653,1.155,659,1.421,666,1.155,674,1.661,721,1.421,722,1.421,723,3.122,724,1.421,725,1.421,726,2.47,727,1.262,728,1.421,731,1.075,732,2.667,733,0.878,734,1.262,735,2.094,736,1.262,737,1.332,738,1.232,739,1.232,740,1.179,741,0.888,742,1.262,743,3.477,744,1.262,745,2.194,746,1.262,747,1.133,748,2.194,749,2.194,750,1.262,751,1.262,752,1.179,753,1.262,754,1.025,757,1.627,758,1.332,759,2.827,760,1.627,761,1.296,762,1.543,763,1.421,764,1.627,765,1.543,799,1.133,838,1.374,846,1.205,862,1.075,1334,1.907,1335,1.907,1336,1.738,1337,1.907,1338,1.907,1339,1.907,1340,1.907,1341,1.907]],["component/61",[8,0.304]],["title/62",[14,7.081,19,18.296,30,14.927,153,11.062,392,23.546]],["name/62",[19,1.267,392,1.631]],["text/62",[]],["component/62",[8,0.304]],["title/63",[2,23.798,77,22.605,132,17.423]],["name/63",[2,1.961]],["text/63",[1,1.59,2,1.486,8,0.35,14,1.739,19,1.486,23,1.629,24,2.208,30,2.381,36,1.056,47,1.286,48,2.772,56,1.416,77,1.411,94,1.82,111,2.331,122,1.804,123,2.828,132,1.088,146,1.982,153,2.436,162,3.059,185,1.983,188,2.172,191,1.843,192,1.65,201,2.327,220,5.131,248,2.208,303,3.889,313,2.062,331,1.006,350,2.642,374,1.82,378,1.013,379,2.136,381,1.425,383,2.403,419,1.766,425,1.946,489,1.766,504,3.026,515,4.578,520,1.553,574,2.155,590,3.026,623,2.331,652,1.792,666,2.021,691,1.571,706,1.741,723,1.982,732,2.68,741,1.553,799,3.137,810,2.403,838,2.403,846,2.107,850,2.331,862,2.975,910,2.331,1279,2.266,1293,5.338,1342,3.336,1343,3.336,1344,3.336,1345,3.336,1346,3.336,1347,3.04,1348,2.486]],["component/63",[8,0.304]],["title/64",[56,10.036,165,17.45,258,16.878,862,26.175]],["name/64",[165,1.069,1349,2.121]],["text/64",[14,1.352,19,1.385,44,1.558,47,0.758,48,1.316,56,1.901,58,1.316,67,2.967,81,1.814,88,3.489,90,3.312,92,1.465,94,1.697,115,1.753,130,1.538,135,2.241,153,1.684,183,4.309,185,1.168,197,2.912,204,1.356,209,2.173,213,1.623,226,1.431,234,1.199,242,3.597,254,3.392,258,3.042,262,1.29,293,1.876,303,3.737,327,2.173,332,3.489,368,1.623,383,2.241,438,2.241,446,3.154,485,2.113,489,1.647,504,1.783,540,3.226,552,4.041,559,1.923,605,2.01,626,2.241,652,1.671,667,2.01,678,2.113,723,1.848,731,1.753,741,2.324,765,5.062,777,3.392,785,4.25,799,1.848,846,1.965,858,7.801,862,4.035,869,2.653,937,3.489,1080,2.517,1279,2.113,1350,3.111,1351,5.336,1352,6.257,1353,6.527,1354,2.517,1355,3.111,1356,6.257,1357,4.994,1358,4.994,1359,4.994,1360,2.517,1361,6.257,1362,3.111,1363,3.111,1364,3.111,1365,3.111,1366,3.111,1367,3.111,1368,3.111,1369,3.111]],["component/64",[8,0.304]],["title/65",[56,7.956,173,17.984,258,13.38,540,23.794,780,27.447,1370,33.564]],["name/65",[173,1.39,1349,2.121]],["text/65",[]],["component/65",[8,0.304]],["title/66-1",[62,29.203]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[56,10.036,179,24.594,258,16.878,1156,33.466]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66",[36,14.712,56,10.036,77,19.651,258,16.878]],["name/66",[1349,3.283]],["text/66",[14,1.72,19,1.959,36,1.393,37,2.072,47,1.071,56,2.156,77,1.861,80,3.073,92,2.072,119,2.002,122,1.885,153,1.184,162,3.053,165,2.452,169,2.521,173,3.188,179,2.329,188,2.083,213,2.296,219,1.548,220,4.626,234,1.696,258,3.626,293,2.452,373,2.665,374,2.4,388,3.508,392,2.521,408,2.614,438,3.169,540,2.842,608,3.808,691,3.075,695,4.561,780,3.278,796,3.073,862,3.679,1100,3.169,1336,4.009,1348,4.866,1351,3.752,1354,3.56,1360,3.56,1370,4.009,1371,4.4,1372,4.009,1373,4.4,1374,4.4]],["component/66",[8,0.304]],["title/67-1",[88,37.335,166,27.13,179,28.292]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67-2",[30,22.852,153,16.935]],["name/67-2",[]],["text/67-2",[]],["component/67-2",[]],["title/67-3",[14,7.081,19,18.296,122,15.017,379,13.395]],["name/67-3",[]],["text/67-3",[]],["component/67-3",[]],["title/67-4",[19,23.798,123,23.064,1293,33.038]],["name/67-4",[]],["text/67-4",[]],["component/67-4",[]],["title/67-5",[48,26.606,1293,38.884]],["name/67-5",[]],["text/67-5",[]],["component/67-5",[]],["title/67-6",[94,22.416,368,21.441,504,23.546,846,25.949,862,23.149]],["name/67-6",[]],["text/67-6",[]],["component/67-6",[]],["title/67-7",[15,17.043,169,23.546,213,21.441,368,21.441,408,24.413]],["name/67-7",[]],["text/67-7",[]],["component/67-7",[]],["title/67-8",[162,14.712,214,26.624,215,30.014,411,31.557]],["name/67-8",[]],["text/67-8",[]],["component/67-8",[]],["title/67",[47,11.315,132,15.146,166,23.584,179,24.594]],["name/67",[179,2.332]],["text/67",[1,2.164,8,0.361,10,0.859,12,1.679,13,0.747,14,1.681,15,0.825,19,2.408,27,1.121,30,1.965,36,1.089,37,2.138,45,1.053,47,2.131,48,3.032,51,1.121,56,1.713,58,2.827,62,0.76,66,0.81,73,4.567,76,1.103,77,1.921,80,2.402,88,1.39,92,1.619,97,0.896,112,1.103,122,1.834,123,1.96,132,0.649,153,1.8,157,1.069,159,1.103,162,2.4,165,0.747,168,1.433,175,3.91,179,1.053,183,1.77,185,2.294,188,1.634,191,0.694,192,1.701,197,0.926,201,0.877,204,0.868,209,1.39,219,2.666,228,0.96,234,2.354,245,1.723,248,1.317,255,1.053,256,1.433,258,1.965,262,0.825,293,0.747,303,1.038,315,1.121,329,1.352,333,1.601,350,0.802,373,1.205,379,1.48,381,0.85,386,1.257,388,3.282,392,1.14,399,1.161,438,2.477,489,1.053,515,1.39,574,1.285,577,1.61,581,2.934,590,2.602,604,1.61,611,0.972,626,1.433,631,1.483,647,1.069,648,3.516,652,1.848,654,1.103,690,0.948,706,1.794,723,2.043,727,1.317,741,2.517,762,1.61,810,1.433,811,2.782,827,1.541,838,2.477,862,3.047,901,1.697,1100,1.433,1154,1.352,1293,4.132,1347,1.813,1375,1.99,1376,3.439,1377,1.99,1378,1.99,1379,3.675,1380,1.99,1381,1.813,1382,1.99,1383,1.99,1384,1.99,1385,1.99,1386,1.99,1387,1.99,1388,1.61,1389,3.439,1390,1.99]],["component/67",[8,0.304]],["title/68-1",[162,16.924,185,20.074,331,16.111]],["name/68-1",[]],["text/68-1",[]],["component/68-1",[]],["title/68-2",[165,15.433,331,12.386,799,24.413,846,25.949,862,23.149]],["name/68-2",[]],["text/68-2",[]],["component/68-2",[]],["title/68-3",[48,19.651,78,15.966,173,22.685,1293,28.72]],["name/68-3",[]],["text/68-3",[]],["component/68-3",[]],["title/68-4",[185,17.45,383,33.466,630,27.099,799,27.604]],["name/68-4",[]],["text/68-4",[]],["component/68-4",[]],["title/68",[94,20.094,245,18.45,368,19.219,504,21.106,799,21.883,862,20.751]],["name/68",[862,2.482]],["text/68",[1,1.538,8,0.339,14,1.539,23,1.576,27,1.818,36,1.629,43,1.638,47,1.253,48,3.379,49,1.661,56,1.385,67,1.917,77,1.365,78,2.513,94,3.498,97,1.453,117,2.038,119,1.469,122,1.934,123,1.393,145,1.661,153,1.969,165,1.212,173,1.576,175,1.761,183,1.661,185,2.408,188,1.376,204,1.407,219,1.809,220,3.809,233,2.136,234,1.244,247,1.789,258,1.172,262,2.133,266,2.806,268,1.576,303,3.346,327,2.254,331,0.973,333,1.502,368,3.346,372,1.684,378,0.98,383,3.705,392,1.849,419,1.708,427,1.789,504,4.191,559,1.995,590,1.849,606,2.498,611,1.576,626,2.325,652,1.734,667,2.085,723,3.056,732,1.638,733,2.367,741,2.984,770,2.752,777,2.192,797,2.085,815,3.493,829,2.085,846,4.049,848,2.498,854,2.498,862,4.795,897,2.498,1132,2.325,1238,2.498,1279,2.192,1293,3.963,1348,2.405,1351,2.752,1372,2.941,1388,2.611,1391,3.227,1392,3.227,1393,3.227,1394,2.752,1395,2.752,1396,3.227,1397,3.227,1398,2.752]],["component/68",[8,0.304]],["title/69-1",[30,27.765]],["name/69-1",[]],["text/69-1",[]],["component/69-1",[]],["title/69-2",[122,15.227,379,20.506]],["name/69-2",[]],["text/69-2",[]],["component/69-2",[]],["title/69-3",[329,51.913]],["name/69-3",[]],["text/69-3",[]],["component/69-3",[]],["title/69",[14,9.102,19,14.861,37,15.715,122,8.079,123,14.402,379,10.88]],["name/69",[14,0.508,37,0.785,122,0.403]],["text/69",[2,0.581,8,0.137,12,0.637,14,0.225,25,1.201,30,1.877,34,1.585,36,0.413,42,2.626,48,1.954,49,0.672,52,1.494,56,0.861,65,2.904,70,0.973,77,0.552,90,0.691,111,0.912,112,0.723,122,0.573,123,0.563,130,1.17,131,0.94,132,0.771,153,0.874,159,0.723,162,3.615,165,0.889,180,1.565,196,2.246,204,1.415,211,0.607,212,0.748,213,1.235,223,0.807,225,0.654,248,0.864,275,1.291,277,2.492,279,0.748,312,0.886,315,0.735,319,0.912,329,1.607,331,1.202,333,0.607,350,0.954,357,3.609,372,1.235,373,0.791,374,1.291,377,0.563,379,2.098,380,0.601,386,0.824,392,1.86,416,1.401,419,0.691,420,0.912,425,1.38,451,1.113,457,1.113,482,0.517,489,0.691,504,0.748,528,0.94,538,0.886,540,2.097,543,0.912,588,1.406,589,3.814,607,0.701,679,0.94,730,5.176,739,0.843,754,3.458,773,1.113,774,1.01,775,0.824,776,0.973,777,4.119,778,1.113,779,2.018,782,2.415,784,1.494,785,4.984,787,2.768,805,0.824,845,1.01,871,1.113,883,0.973,898,5.681,908,3.577,957,1.433,967,1.113,1115,3.087,1120,0.94,1174,4.567,1179,3.738,1193,0.973,1195,0.973,1202,1.056,1204,3.577,1207,1.056,1214,1.056,1219,1.914,1222,0.94,1240,4.695,1300,1.113,1313,2.338,1399,1.305,1400,1.305,1401,1.305,1402,1.305,1403,1.305,1404,1.305,1405,2.366,1406,1.305,1407,1.305,1408,1.305,1409,1.305,1410,1.305,1411,1.305,1412,1.305,1413,1.305,1414,2.366,1415,2.366,1416,1.305,1417,3.246,1418,1.305,1419,1.305,1420,1.305,1421,1.305,1422,1.305,1423,1.305,1424,1.305,1425,1.305,1426,1.305,1427,1.305,1428,1.305,1429,1.305,1430,1.305,1431,3.246,1432,1.305,1433,3.246,1434,3.246,1435,3.246,1436,3.987,1437,1.305,1438,3.987,1439,1.305,1440,2.366,1441,1.305,1442,1.305,1443,2.366,1444,1.305,1445,1.305,1446,1.305,1447,1.305,1448,1.305,1449,2.366,1450,1.305,1451,1.305,1452,1.305,1453,1.305,1454,1.305,1455,3.246,1456,1.305,1457,1.305,1458,2.366,1459,2.366,1460,2.366,1461,1.305,1462,1.305,1463,1.305,1464,1.305,1465,2.366,1466,1.305,1467,1.305,1468,1.113]],["component/69",[8,0.304]],["title/70",[14,8.006,78,15.966,188,12.428,1060,32.455]],["name/70",[14,0.491,188,0.761]],["text/70",[14,1.739,47,1.884,56,1.92,66,3.149,78,3.055,132,1.816,185,2.906,188,2.378,191,1.945,204,2.429,214,4.434,266,3.039,368,2.907,378,1.691,396,3.088,408,3.31,425,3.25,731,3.139,733,2.564,784,3.518,818,3.518,1060,3.892,1083,4.152,1087,4.313,1089,5.99,1469,5.077,1470,5.077,1471,5.572,1472,5.572,1473,5.572,1474,5.572,1475,5.572,1476,5.572,1477,5.572,1478,5.572,1479,5.572,1480,5.572,1481,5.077]],["component/70",[8,0.304]],["title/71",[19,20.688,392,26.624,606,35.971,1293,28.72]],["name/71",[1293,2.723]],["text/71",[8,0.41,10,2.574,14,1.248,15,3.004,19,2.656,30,2.167,35,2.412,36,1.236,44,1.955,47,0.95,48,2.523,51,2.198,56,0.843,66,1.588,76,2.163,81,2.276,96,2.521,101,2.464,122,2.393,123,3.125,141,1.776,165,1.466,168,4.297,188,1.596,210,1.701,219,3.241,220,2.318,238,1.776,245,1.955,253,2.276,262,1.618,267,1.65,279,4.15,332,4.167,333,1.816,346,2.65,350,2.405,379,1.272,383,4.297,392,3.418,504,2.236,511,2.412,581,5.951,626,2.811,653,2.364,669,3.157,706,2.036,741,2.776,763,2.908,775,2.464,799,2.318,862,3.361,1279,2.65,1283,3.157,1293,4.476,1379,4.826,1381,3.556,1482,3.902,1483,3.902,1484,3.902,1485,3.902,1486,3.902,1487,3.902,1488,3.902,1489,3.902,1490,3.902]],["component/71",[8,0.304]],["title/72-1",[331,23.038]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[596,36.86]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72",[122,12.937,706,27.888,741,24.876]],["name/72",[14,0.287,122,0.403,220,0.99,1348,1.242]],["text/72",[7,0.978,11,1.274,14,0.98,30,0.55,34,0.739,36,1.161,48,1.144,78,0.52,97,0.681,106,2.315,122,1.686,153,2.419,162,3.385,175,0.826,185,1.377,188,0.723,191,0.944,201,0.667,204,0.66,219,1.568,220,2.648,223,2.266,234,0.584,262,0.628,266,0.826,267,0.64,295,0.653,311,1.638,331,0.815,332,1.058,350,1.09,374,2.431,378,0.821,382,0.978,396,0.839,399,0.883,416,2.845,422,1.058,443,1.291,446,0.956,453,1.291,476,0.826,515,1.058,557,0.936,576,1.091,581,0.978,588,0.9,616,1.192,666,1.638,691,1.274,706,0.79,723,0.9,729,0.956,732,1.373,733,1.245,741,1.259,777,1.837,785,3.861,836,1.291,862,0.853,881,0.917,910,1.058,937,1.058,1116,1.38,1120,1.948,1132,1.091,1160,1.091,1173,3.606,1193,3.321,1195,3.321,1204,1.172,1238,1.172,1240,2.094,1279,1.028,1293,1.672,1304,1.291,1388,1.225,1394,1.291,1395,1.291,1491,1.38,1492,1.514,1493,1.38,1494,1.291,1495,1.291,1496,1.291,1497,1.291,1498,1.291,1499,1.291,1500,1.514,1501,6.345,1502,6.007,1503,6.007,1504,1.38,1505,5.622,1506,6.007,1507,6.007,1508,6.007,1509,4.061,1510,8.296,1511,7.738,1512,7.738,1513,7.738,1514,5.121,1515,2.705,1516,2.705,1517,4.457,1518,2.465,1519,2.465,1520,2.705,1521,1.514,1522,1.514,1523,1.514,1524,2.705,1525,4.457,1526,3.666,1527,3.666,1528,2.705,1529,3.666,1530,3.34,1531,1.514,1532,1.514,1533,1.514,1534,1.514,1535,1.514,1536,1.514,1537,1.514,1538,1.514]],["component/72",[8,0.304]],["title/73-1",[331,23.038]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[596,36.86]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73-3",[511,33.038,811,43.243,1539,53.449]],["name/73-3",[]],["text/73-3",[]],["component/73-3",[]],["title/73",[14,8.006,122,11.246,188,12.428,741,21.625]],["name/73",[14,0.287,122,0.403,188,0.446,220,0.99]],["text/73",[14,1.377,15,1.339,36,1.022,48,1.365,56,0.697,78,1.767,97,1.453,122,2.421,132,1.052,153,0.869,162,3.167,185,1.212,188,1.715,201,2.266,204,2.796,219,2.573,220,5.305,226,1.485,254,3.493,262,1.339,266,1.761,311,3.115,331,0.973,350,2.949,378,0.98,379,1.052,382,2.085,391,2.085,392,1.849,396,1.789,411,2.192,416,2.219,422,2.254,476,1.761,581,2.085,588,1.917,593,2.611,634,2.611,666,1.955,732,2.611,733,2.367,741,1.502,785,2.192,810,2.325,861,2.752,862,2.897,937,2.254,1083,2.405,1160,2.325,1193,3.832,1195,3.832,1238,2.498,1279,2.192,1388,2.611,1394,2.752,1395,2.752,1491,2.941,1501,4.687,1502,2.941,1503,2.941,1504,2.941,1505,2.752,1506,2.941,1507,2.941,1508,2.941,1509,4.687,1511,4.687,1512,4.687,1513,4.687,1518,2.941,1519,2.941,1530,2.941,1540,3.227,1541,3.227,1542,3.227,1543,3.227,1544,5.143,1545,3.227,1546,3.227,1547,3.227,1548,5.143,1549,3.227,1550,5.143,1551,3.227,1552,3.227]],["component/73",[8,0.304]],["title/74-1",[78,18.366,1354,43.243,1553,41.379]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74",[48,17.379,56,8.876,165,15.433,185,15.433,258,14.927]],["name/74",[78,0.723,165,0.79,1349,1.567]],["text/74",[10,1.243,11,1.356,14,1.393,27,2.643,33,0.965,34,1.406,36,1.228,47,0.396,48,0.687,56,1.159,58,0.687,73,1.596,77,1.218,78,1.844,81,0.948,90,0.86,105,0.886,115,1.622,122,1.657,127,1.049,132,0.53,153,1.942,162,3.372,165,1.082,166,1.462,175,1.571,179,0.86,183,0.836,185,1.457,187,1.258,188,1.588,191,1.354,199,1.026,204,0.708,206,0.848,208,0.803,213,1.503,219,1.013,220,3.817,221,0.915,234,0.626,238,0.739,253,0.948,255,0.86,258,1.046,262,1.194,267,0.687,268,0.793,270,1.78,275,0.886,293,0.61,295,1.243,302,2.011,303,0.848,315,0.915,331,1.169,361,1.103,365,1.744,368,2.801,376,1.314,378,0.874,379,1.264,385,0.931,388,2.084,396,1.596,416,0.701,426,2.229,431,1.004,446,1.026,473,1.049,543,2.011,553,0.965,557,1.78,564,1.314,568,1.258,594,1.075,608,3.131,624,3.003,647,0.873,654,0.9,666,0.984,691,1.356,692,1.17,695,2.011,731,0.915,732,1.969,733,1.785,741,0.756,775,1.026,780,1.211,799,0.965,804,1.314,817,1.86,818,1.026,819,2.011,831,1.314,846,2.449,854,2.229,855,2.146,862,3.857,897,2.229,909,1.258,968,2.146,1015,1.258,1094,2.074,1118,2.456,1151,1.258,1160,2.074,1251,1.135,1283,1.314,1348,1.211,1353,1.48,1354,1.314,1379,1.314,1398,3.307,1468,2.456,1494,3.307,1495,3.307,1496,3.307,1497,3.307,1498,1.385,1499,1.385,1553,1.258,1554,2.624,1555,1.48,1556,3.878,1557,4.891,1558,4.891,1559,3.878,1560,1.625,1561,1.48,1562,1.48,1563,1.625,1564,1.625,1565,1.625,1566,1.625,1567,1.625,1568,1.625,1569,1.48,1570,1.48,1571,2.624,1572,1.48,1573,2.624,1574,1.48,1575,1.48,1576,1.48,1577,1.48,1578,2.624,1579,1.48,1580,1.48,1581,1.48,1582,4.275,1583,1.48,1584,1.48,1585,1.48,1586,1.48,1587,1.48,1588,1.48,1589,1.48,1590,1.48,1591,1.48,1592,1.48,1593,2.624,1594,1.48,1595,1.48,1596,1.48,1597,1.48,1598,1.48,1599,1.48,1600,1.48,1601,1.48,1602,1.48]],["component/74",[8,0.304]],["title/75-1",[78,18.366,1360,43.243,1553,41.379]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[78,18.366,1553,41.379,1603,48.704]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75",[48,17.379,56,8.876,185,15.433,258,14.927,1604,41.092]],["name/75",[78,0.573,165,0.626,649,1.349,1349,1.242]],["text/75",[8,0.067,10,0.957,11,1.045,14,1.357,23,0.594,27,2.127,33,0.722,34,1.083,36,0.969,41,1.507,44,0.32,47,0.296,56,0.574,58,0.736,71,0.785,73,1.472,78,1.693,81,0.709,90,3.755,115,1.25,122,1.13,127,0.413,132,0.396,136,0.446,153,1.392,162,3.408,165,0.457,166,0.617,175,1.449,185,0.998,187,0.941,188,1.607,191,1.318,192,0.601,199,0.768,204,0.278,206,0.634,207,0.372,208,0.601,210,0.53,213,1.158,219,0.428,220,2.433,221,0.685,223,0.752,227,0.878,234,0.469,238,0.553,244,0.476,247,0.354,253,1.294,255,0.644,258,0.232,262,0.92,267,1.597,268,0.594,270,1.642,274,0.403,275,0.949,277,0.839,287,0.423,294,0.403,295,0.525,302,1.55,303,0.634,311,0.736,315,0.685,331,1.034,350,0.257,361,0.826,365,1.344,368,2.292,376,0.517,378,0.806,379,0.997,380,0.801,385,0.997,388,0.935,396,1.23,405,0.32,416,1.147,431,0.752,446,0.768,473,0.785,476,1.21,510,2.28,543,1.55,553,1.318,557,1.891,568,0.941,570,0.517,581,0.413,590,0.366,594,0.805,595,1.253,616,0.977,624,2.369,647,0.935,648,0.494,654,0.964,666,0.736,677,0.46,685,0.517,691,1.045,692,0.876,729,1.099,731,0.98,732,1.553,733,1.884,741,0.81,754,0.343,775,0.768,780,0.476,784,0.403,797,0.413,799,0.722,804,0.984,805,0.403,817,1.716,818,0.768,819,1.55,829,0.413,830,1.037,831,0.984,846,1.932,849,0.941,854,1.718,855,1.653,862,3.042,889,1.856,897,2.057,968,2.28,1015,0.941,1083,1.653,1084,0.984,1087,0.941,1089,0.941,1094,1.914,1107,0.545,1118,1.892,1120,0.876,1132,0.876,1151,0.941,1160,1.914,1223,0.494,1240,0.941,1251,0.849,1348,0.476,1360,0.517,1379,0.984,1398,2.609,1468,1.892,1469,1.108,1470,1.108,1481,5.3,1493,1.586,1494,1.037,1495,1.037,1496,7.281,1497,2.609,1498,1.037,1499,0.545,1505,1.484,1553,1.347,1554,1.108,1555,1.108,1557,2.022,1558,2.022,1561,1.108,1562,1.108,1569,1.108,1570,1.108,1571,2.022,1572,1.108,1573,2.022,1574,1.108,1575,1.108,1576,1.108,1577,1.108,1578,2.022,1579,1.108,1580,1.108,1581,1.108,1582,3.44,1583,1.108,1584,1.108,1585,1.108,1586,1.108,1587,1.108,1588,1.108,1589,1.108,1590,1.108,1591,1.108,1592,1.108,1593,2.022,1594,1.108,1595,1.586,1596,1.108,1597,1.108,1598,1.108,1599,1.108,1600,1.586,1601,1.108,1602,0.582,1603,0.582,1605,0.639,1606,0.639,1607,0.639,1608,0.639,1609,0.639,1610,1.74,1611,0.639,1612,0.639,1613,1.216,1614,0.639,1615,0.639,1616,1.216,1617,1.216,1618,1.216,1619,1.216,1620,1.216,1621,1.216,1622,0.639,1623,0.639,1624,0.639,1625,1.216,1626,0.639,1627,2.219,1628,0.639,1629,0.639,1630,0.639,1631,0.639,1632,0.639,1633,0.639,1634,2.657,1635,0.639,1636,1.216,1637,0.639,1638,1.216,1639,1.216,1640,0.639,1641,0.639,1642,0.639,1643,0.639,1644,0.639,1645,0.639,1646,3.06,1647,1.216,1648,1.216,1649,1.216,1650,4.392,1651,1.216,1652,1.216,1653,1.216,1654,1.216,1655,0.639,1656,0.639,1657,0.639,1658,0.639,1659,0.639,1660,0.639,1661,0.639,1662,0.639,1663,0.639,1664,0.639,1665,0.639,1666,2.219,1667,0.639,1668,0.639,1669,0.639,1670,1.74,1671,0.639,1672,0.639,1673,0.639,1674,1.216,1675,1.216,1676,0.639,1677,0.639,1678,3.06,1679,1.216,1680,0.639,1681,0.639,1682,0.639,1683,3.06,1684,0.639,1685,3.06,1686,3.06,1687,0.639,1688,1.74,1689,0.639,1690,0.639,1691,0.639,1692,0.639,1693,0.639,1694,0.639,1695,0.639,1696,0.639,1697,0.639,1698,0.639,1699,0.639,1700,0.639,1701,0.639]],["component/75",[8,0.304]],["title/76",[]],["name/76",[1128,2.303,1349,2.121]],["text/76",[105,5.096,405,4.679,1128,7.558]],["component/76",[8,0.304]],["title/77-1",[0,48.267]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[78,21.616,423,40.637]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[331,18.962,729,39.726]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[43,31.931,424,35.439]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[8,5.613,479,21.549,730,34.527]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77",[7,40.637,447,31.51]],["name/77",[9,1.827]],["text/77",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/77",[8,0.304]],["title/78",[126,36.69,447,31.51]],["name/78",[9,1.827]],["text/78",[405,4.809]],["component/78",[8,0.304]],["title/79",[447,38.285]],["name/79",[9,1.827]],["text/79",[405,4.809]],["component/79",[8,0.304]],["title/80",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/80",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/80",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/80",[8,0.304]],["title/81",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/81",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/81",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45,1702,1.701]],["component/81",[8,0.304]],["title/82",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/82",[14,0.362,188,0.562,596,1.014]],["text/82",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/82",[8,0.304]],["title/83",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/83",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/83",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/83",[8,0.304]],["title/84-1",[62,29.203]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/84",[47,0.512,381,0.898,607,1.13]],["text/84",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.121,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897,1703,1.052]],["component/84",[8,0.304]],["title/85-1",[62,29.203]],["name/85-1",[]],["text/85-1",[]],["component/85-1",[]],["title/85-2",[227,24.902,616,27.714]],["name/85-2",[]],["text/85-2",[]],["component/85-2",[]],["title/85-3",[227,24.902,1222,45.311]],["name/85-3",[]],["text/85-3",[]],["component/85-3",[]],["title/85-4",[227,24.902,1097,43.942]],["name/85-4",[]],["text/85-4",[]],["component/85-4",[]],["title/85-5",[227,24.902,416,27.146]],["name/85-5",[]],["text/85-5",[]],["component/85-5",[]],["title/85-6",[247,34.864,277,30.337]],["name/85-6",[]],["text/85-6",[]],["component/85-6",[]],["title/85-7",[350,30.815]],["name/85-7",[]],["text/85-7",[]],["component/85-7",[]],["title/85",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/85",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/85",[2,0.699,12,1.363,14,0.904,21,0.776,30,1.662,36,0.884,56,1.361,66,0.639,67,0.932,100,0.831,114,2.718,122,1.865,123,1.205,130,2.262,132,0.512,141,2.645,153,1.909,162,3.096,173,0.766,191,0.975,199,0.991,203,2.2,210,0.684,219,0.552,227,2.301,229,0.991,238,0.714,247,1.547,250,1.169,253,1.629,258,0.57,267,3.369,279,0.899,282,0.991,361,1.066,363,1.437,365,2.771,371,1.5,374,1.523,377,1.205,378,1.145,379,2.805,380,1.736,381,3.403,382,1.014,389,0.899,390,1.804,399,1.629,402,1.014,416,2.9,425,1.629,427,0.87,436,0.899,437,0.633,456,2.382,458,0.786,475,1.038,479,0.633,481,0.677,482,0.621,485,1.066,486,1.096,518,0.884,520,1.3,576,1.13,600,2.125,607,3.384,608,4.136,616,3.706,637,1.13,674,3.367,678,1.066,687,1.169,690,1.33,731,0.884,761,1.066,782,1.691,797,1.014,817,2.437,899,1.13,957,3.815,982,1.13,1011,1.215,1012,1.215,1049,4.695,1060,1.096,1062,1.95,1065,2.081,1071,2.081,1073,1.169,1075,1.169,1076,2.081,1078,2.081,1094,2.717,1097,1.096,1098,1.13,1099,1.215,1110,2.011,1111,2.162,1121,2.162,1122,1.215,1123,2.162,1124,1.215,1146,0.899,1148,1.169,1154,1.066,1222,2.011,1223,1.215,1224,2.381,1225,2.381,1226,1.338,1227,2.381,1228,2.381,1229,2.381,1230,2.381,1231,1.338,1232,1.338,1233,1.338,1234,1.338,1235,2.381,1236,2.381,1241,2.381,1242,1.338,1243,1.338,1244,1.338,1245,1.338,1246,1.338,1247,1.338,1248,1.338,1249,1.338,1250,1.338,1251,1.096,1252,2.381,1253,1.338,1254,1.338,1255,1.338,1256,1.338,1257,1.338,1258,1.338,1259,1.338,1260,1.338,1261,1.338,1262,1.338,1263,1.338,1264,1.338,1265,1.338,1268,1.338,1269,1.338,1270,1.338,1271,1.338,1272,1.338,1273,1.338,1274,1.338,1275,1.338,1276,1.338,1277,1.338]],["component/85",[8,0.304]],["title/86",[14,9.21,122,12.937,379,17.423]],["name/86",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/86",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/86",[8,0.304]],["title/87-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87-2",[14,9.21,153,14.389,188,14.297]],["name/87-2",[]],["text/87-2",[]],["component/87-2",[]],["title/87-3",[10,32.982]],["name/87-3",[]],["text/87-3",[]],["component/87-3",[]],["title/87-4",[122,18.501]],["name/87-4",[]],["text/87-4",[]],["component/87-4",[]],["title/87",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/87",[14,0.362,47,0.512,188,0.562]],["text/87",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/87",[8,0.304]],["title/88",[105,34.317,447,31.51]],["name/88",[9,1.827]],["text/88",[405,4.809]],["component/88",[8,0.304]],["title/89-1",[0,48.267]],["name/89-1",[]],["text/89-1",[]],["component/89-1",[]],["title/89-2",[78,21.616,423,40.637]],["name/89-2",[]],["text/89-2",[]],["component/89-2",[]],["title/89-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/89-3",[]],["text/89-3",[]],["component/89-3",[]],["title/89-4",[331,18.962,729,39.726]],["name/89-4",[]],["text/89-4",[]],["component/89-4",[]],["title/89-5",[8,5.613,479,21.549,730,34.527]],["name/89-5",[]],["text/89-5",[]],["component/89-5",[]],["title/89-6",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/89-6",[]],["text/89-6",[]],["component/89-6",[]],["title/89",[7,40.637,720,39.726]],["name/89",[9,1.827]],["text/89",[8,1.013,13,2.113,36,1.781,47,1.681,51,2.037,56,1.491,66,1.472,89,1.56,97,1.628,130,1.788,132,2.539,162,1.781,188,0.967,197,2.618,210,1.577,211,1.683,219,1.272,221,2.037,226,1.664,227,1.431,234,3.252,237,2.235,238,1.645,262,2.333,267,1.529,268,1.766,277,1.744,331,2.348,350,1.458,355,2.004,378,2.364,379,1.179,385,2.072,396,2.004,436,2.072,437,3.14,463,2.19,466,1.811,477,2.235,479,2.268,480,3.477,481,2.427,482,3.34,489,1.914,550,2.148,553,2.148,590,2.072,611,1.766,647,1.943,674,2.818,720,2.284,731,2.037,732,1.835,733,1.664,734,2.393,735,3.552,736,2.393,739,2.336,740,2.235,741,1.683,742,2.393,743,5.155,744,2.393,745,3.723,746,2.393,747,2.148,748,3.723,749,3.723,750,2.393,751,2.393,752,2.235,753,2.393,754,1.943]],["component/89",[8,0.304]],["title/90",[8,5.613,13,20.074,378,16.222]],["name/90",[9,1.827]],["text/90",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/90",[8,0.304]],["title/91-1",[379,20.506,596,30.337]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[89,27.146,1313,45.311]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/91",[13,1.069,596,1.373]],["text/91",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/91",[8,0.304]],["title/92",[105,34.317,720,39.726]],["name/92",[9,1.827]],["text/92",[405,4.809]],["component/92",[8,0.304]],["title/93-1",[0,48.267]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[1,36.417]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93-3",[2,28.009,3,39.726]],["name/93-3",[]],["text/93-3",[]],["component/93-3",[]],["title/93-4",[3,39.726,4,38.103]],["name/93-4",[]],["text/93-4",[]],["component/93-4",[]],["title/93-5",[5,45.409]],["name/93-5",[]],["text/93-5",[]],["component/93-5",[]],["title/93-6",[6,56.954]],["name/93-6",[]],["text/93-6",[]],["component/93-6",[]],["title/93",[7,40.637,8,6.606]],["name/93",[9,1.827]],["text/93",[1,4.134,3,2.979,4,1.267,5,1.243,6,1.559,8,0.722,10,2.036,11,2.221,12,2.732,13,1.772,14,1.267,15,2.321,16,1.293,17,1.421,18,1.559,19,1.599,20,1.559,21,1.035,22,1.559,23,1.753,24,1.385,25,1.062,26,1.848,27,1.179,28,1.108,29,1.092,30,0.76,31,1.352,32,1.559,33,2.134,34,1.753,35,2.22,36,1.494,37,1.691,38,1.784,39,1.462,40,1.784,41,1.421,42,1.693,43,1.062,44,1.799,45,1.108,46,1.784,47,1.674,48,0.885,49,2.427,50,1.784,51,1.179,52,1.321,53,1.462,54,1.352,55,1.784,56,1.209,57,2.439,58,1.519,59,1.62,60,1.421,61,1.559,62,0.799,63,2.962,64,3.062,65,1.848,66,1.92,67,1.243,68,1.62,69,3.062,70,1.559,71,3.048,72,1.108,73,1.16,74,1.179,75,1.693,76,1.16,77,0.885,78,1.234,79,1.784,80,1.462,81,1.22,82,1.784,83,1.559,84,1.22,85,1.784,86,1.62,87,2.676,88,1.462,89,1.55,91,1.559,92,0.985,93,1.784,94,1.959,95,1.22,96,1.352,97,1.616,98,3.062,99,1.784,100,1.108,101,1.321,102,1.784,103,1.784,104,1.559,105,1.141,106,1.321,107,1.243,108,1.559,109,1.22,110,1.421,111,1.462,112,1.16,113,1.559,114,1.243,115,1.179,116,1.559,117,1.321,118,1.462,119,1.634,120,1.16,121,1.693,122,0.869,123,1.55,124,1.907,125,1.907,126,2.095,127,1.352,128,1.784,129,1.462,130,1.035,131,1.507,132,1.538,133,2.439,134,1.784,135,1.507,136,1.462,137,1.559,138,1.784,139,1.693,140,2.058,141,0.952,142,1.385,143,1.16,144,2.703,145,1.077,146,1.243,147,1.784,148,1.784,149,1.784,150,1.784,151,1.352,152,1.784,153,0.967,154,1.784,155,1.784,156,1.784,157,1.124,158,1.293,159,1.16,160,1.784,161,1.784,162,0.663,163,1.62,164,1.559,165,0.786,166,1.062,167,1.784,168,1.507,169,1.199,170,1.784,171,1.784,172,1.784,173,1.022,174,1.421,175,1.141,176,1.784,177,1.784,178,1.784,531,1.421]],["component/93",[8,0.304]],["title/94-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/94-1",[]],["text/94-1",[]],["component/94-1",[]],["title/94-2",[180,36.86]],["name/94-2",[]],["text/94-2",[]],["component/94-2",[]],["title/94-3",[14,13.171]],["name/94-3",[]],["text/94-3",[]],["component/94-3",[]],["title/94",[179,40.459]],["name/94",[179,2.332]],["text/94",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/94",[8,0.304]],["title/95",[5,45.409]],["name/95",[5,2.617]],["text/95",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/95",[8,0.304]],["title/96-1",[338,65.178]],["name/96-1",[]],["text/96-1",[]],["component/96-1",[]],["title/96-2",[339,65.178]],["name/96-2",[]],["text/96-2",[]],["component/96-2",[]],["title/96-3",[219,26.887]],["name/96-3",[]],["text/96-3",[]],["component/96-3",[]],["title/96",[8,6.606,340,38.103]],["name/96",[340,2.668]],["text/96",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/96",[8,0.304]],["title/97",[126,44.579]],["name/97",[9,1.827]],["text/97",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/97",[8,0.304]],["title/98-1",[8,8.026]],["name/98-1",[]],["text/98-1",[]],["component/98-1",[]],["title/98-2",[47,15.32,348,41.632]],["name/98-2",[]],["text/98-2",[]],["component/98-2",[]],["title/98-3",[47,10.007,56,8.876,348,27.195,349,30.62,350,16.567]],["name/98-3",[]],["text/98-3",[]],["component/98-3",[]],["title/98-4",[8,6.606,158,38.884]],["name/98-4",[]],["text/98-4",[]],["component/98-4",[]],["title/98-5",[67,37.374,351,57.322]],["name/98-5",[]],["text/98-5",[]],["component/98-5",[]],["title/98",[8,6.606,62,24.035]],["name/98",[62,1.683]],["text/98",[2,1.122,8,0.885,12,1.231,13,0.947,14,1.694,15,2.618,19,2.408,23,1.231,25,1.279,27,1.42,29,1.315,30,1.527,31,1.628,36,1.712,45,2.225,47,2.051,48,1.066,49,1.297,52,1.592,56,1.515,58,1.066,62,1.606,63,1.334,66,1.026,72,2.225,74,1.42,84,1.47,88,1.76,92,1.979,95,1.47,96,1.628,97,1.134,106,1.592,117,1.592,122,2.039,123,2.333,153,1.456,158,1.558,166,2.134,180,1.215,181,2.782,182,1.76,183,1.297,184,3.028,185,1.579,188,1.688,192,1.246,198,1.628,204,1.099,211,1.173,214,1.444,215,1.628,216,1.951,219,1.479,225,1.262,226,1.934,228,1.215,245,1.262,248,2.782,258,2.293,268,2.052,293,1.579,331,0.76,332,1.76,333,1.173,334,2.409,340,1.527,346,1.712,348,2.782,349,1.878,350,1.695,352,2.297,353,1.878,354,1.592,355,1.397,356,2.297,357,1.76,358,2.297,359,2.297,360,2.297,361,1.712,362,1.951,363,1.297,364,1.712,365,1.527,366,2.297,367,2.297,368,2.821,369,1.951,370,2.149,371,1.354,372,2.193,373,1.527,374,1.375,375,2.855,376,2.039,377,1.088,378,0.765,379,1.763,380,1.16,381,2.31,382,1.628,383,1.815,384,3.83,385,1.444,386,1.592,387,1.951,388,1.354,389,1.444,390,1.628,391,1.628,392,1.444,393,2.297,394,2.297,395,2.297,396,1.397,397,1.354,398,1.375,399,1.47,400,2.039,401,2.297,402,1.628]],["component/98",[8,0.304]],["title/99",[87,39.827,403,45.578,404,45.578]],["name/99",[83,3.283]],["text/99",[405,4.809]],["component/99",[8,0.304]],["title/100",[120,42.36]],["name/100",[9,1.827]],["text/100",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/100",[8,0.304]],["title/101-1",[26,39.327]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101-2",[348,50.583]],["name/101-2",[]],["text/101-2",[]],["component/101-2",[]],["title/101-3",[411,51.913]],["name/101-3",[]],["text/101-3",[]],["component/101-3",[]],["title/101-4",[]],["name/101-4",[]],["text/101-4",[]],["component/101-4",[]],["title/101-5",[13,28.706]],["name/101-5",[]],["text/101-5",[]],["component/101-5",[]],["title/101-6",[132,24.915]],["name/101-6",[]],["text/101-6",[]],["component/101-6",[]],["title/101-7",[144,36.047,412,45.311]],["name/101-7",[]],["text/101-7",[]],["component/101-7",[]],["title/101-8",[89,20.05,413,31.557,414,34.622,415,37.591]],["name/101-8",[]],["text/101-8",[]],["component/101-8",[]],["title/101-9",[414,46.875,416,27.146]],["name/101-9",[]],["text/101-9",[]],["component/101-9",[]],["title/101-10",[416,27.146,417,41.632]],["name/101-10",[]],["text/101-10",[]],["component/101-10",[]],["title/101-11",[142,41.632,143,34.864]],["name/101-11",[]],["text/101-11",[]],["component/101-11",[]],["title/101",[120,34.864,418,38.103]],["name/101",[418,2.668]],["text/101",[8,0.835,10,1.38,25,1.623,26,1.645,29,1.668,34,1.561,36,1.012,43,1.623,49,1.645,56,1.831,66,2.593,68,2.475,78,1.754,89,2.203,120,1.772,132,2.372,142,3.379,143,2.829,144,4.858,145,2.627,153,0.861,185,1.201,190,4.497,204,1.394,207,1.865,214,1.832,215,2.065,219,1.125,226,2.349,227,1.266,255,1.692,262,2.117,266,1.744,271,1.937,297,1.937,303,1.668,312,2.172,357,2.233,364,2.172,380,1.471,397,1.718,400,2.587,412,2.303,413,2.172,414,3.804,415,6.434,416,2.203,417,4.217,418,3.092,419,1.692,420,2.233,421,2.913,422,2.233,423,2.065,424,1.801,425,1.865,426,2.475,427,2.829,428,2.913,429,2.913,430,2.116,431,1.976,432,2.913,433,2.913,434,4.652,435,4.652,436,1.832,437,2.058,438,2.303,439,2.913,440,2.019,441,2.913,442,5.807,443,2.726,444,2.475,445,2.233,446,2.019,447,1.602,448,1.832,449,2.913,450,2.382,451,2.726,452,2.587,453,2.726,454,2.913,455,2.475,456,3.224,457,2.726,458,1.602,459,3.86,460,2.913,461,2.913,462,4.13,463,1.937,464,2.913,465,4.652]],["component/101",[8,0.304]],["title/102-1",[10,32.982]],["name/102-1",[]],["text/102-1",[]],["component/102-1",[]],["title/102-2",[466,31.51,467,43.942]],["name/102-2",[]],["text/102-2",[]],["component/102-2",[]],["title/102",[10,27.146,466,31.51]],["name/102",[10,1.901]],["text/102",[8,0.54,10,3.156,11,1.52,12,1.576,13,2.408,14,0.556,29,1.684,36,1.629,44,2.576,47,2.073,53,2.254,56,0.697,61,2.405,62,1.233,63,2.722,65,2.646,66,2.093,72,1.708,78,1.109,89,3.447,97,1.453,119,1.469,129,2.254,132,1.677,140,1.849,144,3.674,145,1.661,146,1.917,153,2.151,157,1.734,164,2.405,188,0.863,191,1.795,217,2.405,219,1.135,238,1.469,245,1.617,269,1.556,331,0.973,350,1.301,364,2.192,371,1.734,379,1.052,411,2.192,412,2.325,413,2.192,419,1.708,420,2.254,427,1.789,437,2.585,456,2.038,466,4.907,467,2.254,468,2.038,469,2.752,470,2.405,471,4.386,472,2.897,473,2.085,474,2.752,475,2.136,476,1.761,477,1.995,478,2.325,479,1.301,480,1.995,481,1.393,482,1.277,483,2.752,484,2.498,485,2.192,486,2.254,487,2.498,488,2.498,489,1.708,490,2.498,491,2.498,492,2.136,493,2.498,494,2.498,495,3.248,496,3.982,497,2.254,498,2.498,499,2.498,500,3.404,501,2.498,502,2.498,503,2.498,504,1.849,505,2.498,506,2.752,507,2.498,508,2.752,509,2.498,510,2.405,511,1.995,512,2.498,513,2.752]],["component/102",[8,0.304]],["title/103-1",[62,20.421,276,33.753,527,39.827]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[47,13.017,528,38.498,529,29.622]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[14,9.21,122,12.937,529,29.622]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103-4",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/103-4",[]],["text/103-4",[]],["component/103-4",[]],["title/103-5",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/103-5",[]],["text/103-5",[]],["component/103-5",[]],["title/103-6",[1,29.973,529,34.864]],["name/103-6",[]],["text/103-6",[]],["component/103-6",[]],["title/103-7",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/103-7",[]],["text/103-7",[]],["component/103-7",[]],["title/103-8",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/103-8",[]],["text/103-8",[]],["component/103-8",[]],["title/103-9",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/103-9",[]],["text/103-9",[]],["component/103-9",[]],["title/103-10",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/103-10",[]],["text/103-10",[]],["component/103-10",[]],["title/103-11",[536,56.954]],["name/103-11",[]],["text/103-11",[]],["component/103-11",[]],["title/103",[74,43.059]],["name/103",[74,2.482]],["text/103",[1,1.67,2,0.906,3,1.626,4,0.868,8,0.829,10,1.321,13,2.062,14,1.532,15,1.916,16,0.469,19,1.561,23,1.909,24,0.503,26,0.737,28,2.069,29,1.343,30,1.554,33,0.451,34,1.909,35,0.886,36,0.644,37,1.442,43,0.385,44,0.718,45,1.077,47,1.125,48,0.86,51,0.428,53,0.531,54,0.926,56,1.462,58,2.086,62,0.777,63,0.759,65,0.737,66,1.591,71,0.491,72,1.621,73,1.127,74,1.725,76,0.421,78,0.261,84,0.443,89,2.672,90,0.402,91,0.566,92,0.958,95,0.443,97,0.342,100,0.402,101,0.48,104,0.566,105,0.414,114,1.53,115,0.428,119,0.346,120,0.421,121,0.614,122,1.989,123,1.321,126,0.836,127,0.491,132,0.467,133,0.516,135,0.547,140,0.435,141,0.346,145,0.737,146,0.451,153,2.311,157,0.408,158,0.469,159,0.421,162,0.644,165,0.285,169,0.435,173,0.371,174,0.516,180,0.981,181,0.503,183,0.737,185,0.538,188,0.819,191,0.899,196,0.807,197,0.667,201,0.896,206,0.748,208,0.376,210,0.331,211,1.198,212,0.435,213,0.748,215,0.491,219,1.931,221,0.428,225,0.718,226,1.409,228,0.366,234,1.18,238,0.926,245,1.019,254,0.973,255,0.402,258,1.112,262,0.594,267,0.321,268,0.371,269,0.366,271,1.559,272,1.626,276,0.48,279,0.435,282,0.905,295,0.618,299,0.516,303,0.748,313,0.469,315,0.428,316,0.516,318,0.469,328,1.068,329,0.516,331,0.432,333,0.947,334,0.435,335,0.503,345,0.566,350,0.306,354,0.48,355,0.794,362,0.588,363,0.391,364,0.973,368,1.061,369,0.588,371,0.408,372,1.598,373,0.46,375,1.382,377,1.846,378,0.617,379,2.363,380,1.185,381,0.324,386,0.48,388,0.408,389,0.435,397,0.408,398,0.414,408,0.451,409,0.566,411,1.382,413,0.973,416,0.328,417,0.503,419,0.759,420,0.531,422,0.531,425,0.443,427,0.794,430,0.503,444,1.109,447,0.38,448,1.475,450,2.913,456,0.48,458,0.718,466,3.204,467,0.531,479,1.038,484,1.993,485,0.516,486,0.531,487,0.588,488,0.588,489,0.759,490,0.588,491,0.588,492,0.948,493,0.588,494,0.588,495,0.905,496,1.109,497,0.531,498,0.588,499,0.588,500,1.346,501,0.588,502,1.109,503,1.109,504,0.821,505,0.588,507,0.588,509,1.109,510,1.068,511,1.257,512,0.588,518,1.146,520,0.667,527,1.068,528,0.547,529,0.794,531,0.516,532,0.566,534,1.516,536,1.918,537,0.692,538,0.516,539,0.692,540,0.491,541,0.692,542,0.566,543,0.531,544,0.648,545,0.648,546,0.648,547,0.516,548,0.648,549,0.648,550,0.451,551,1.222,552,1.159,553,0.851,554,0.566,555,0.547,556,0.648,557,1.257,558,1.222,559,0.469,560,0.648,561,1.222,562,0.648,563,0.648,564,0.614,565,1.222,566,0.566,567,0.648,568,1.109,569,1.421,570,1.159,571,0.588,572,0.648,573,0.566,574,0.491,575,0.648,576,0.547,577,1.646,578,0.648,579,0.648,580,0.648,581,0.491,582,0.531,583,0.491,584,0.566,585,0.516,586,0.648,587,0.648,588,1.209,589,0.428,590,0.435,591,0.648,592,0.648,593,1.159,594,0.503,595,0.547,596,0.691,597,0.648,598,0.588,599,0.648,600,0.428,601,1.068,602,0.648,603,0.648,604,0.614,605,0.491,606,1.109,607,0.408,608,1.186,609,0.648,610,0.648,611,0.993,612,0.648,613,0.648,614,0.491,615,0.648,616,0.335,617,0.588,618,0.46,619,0.648,620,0.648,621,0.648,622,0.648,623,0.531,624,0.588,625,0.588,626,0.547,627,2.611,628,1.516,629,0.648,630,0.836,631,1.068,632,0.648,633,0.648,634,0.614,635,1.222,636,0.648,637,0.547,638,0.648,639,0.648,640,0.648,641,0.531,642,0.648,643,0.648,644,0.588,645,0.648,646,1.222,647,0.77,648,0.588,649,0.614,650,0.648,651,0.566,652,0.408,653,0.46,654,0.421,655,0.648,656,1.222,657,0.648,658,1.222,659,0.566,660,0.648,661,0.648,662,1.222,663,0.648,664,2.195,665,0.48,666,0.46,667,0.491,668,0.648,669,1.159,670,0.648,671,0.648,672,0.648,673,0.48,674,0.38,675,0.648,676,0.648]],["component/103",[8,0.304]],["title/104",[405,31.51,677,45.311]],["name/104",[405,2.207]],["text/104",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/104",[8,0.304]],["title/105",[8,5.613,47,13.017,334,30.627]],["name/105",[47,0.693,334,1.631]],["text/105",[8,0.162,13,0.579,14,1.624,15,0.639,26,1.913,77,0.652,122,1.701,153,1.678,158,2.298,162,3.833,174,1.047,180,0.743,186,1.077,188,1.781,191,1.298,194,1.047,204,0.672,231,1.148,293,1.946,331,1.121,353,1.148,363,1.414,375,1.047,377,1.604,378,2.471,380,0.709,381,0.658,416,0.665,458,0.772,472,1.548,481,0.665,482,0.61,492,1.02,497,4.65,520,4.684,594,1.02,607,0.828,618,0.933,641,1.077,682,1.314,683,1.314,684,1.193,685,8.532,686,1.148,687,1.148,688,1.404,689,3.171,690,0.734,691,0.726,692,1.979,693,1.314,694,2.683,695,2.597,696,1.404,697,1.404,698,1.314,699,1.314,700,1.818,701,1.077,702,1.02,703,1.314,704,1.314,705,3.171,706,2.999,707,1.404,708,1.314]],["component/105",[8,0.304]],["title/106",[65,39.327]],["name/106",[9,1.827]],["text/106",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/106",[8,0.304]],["title/107-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107-2",[8,5.613,13,20.074,90,28.292]],["name/107-2",[]],["text/107-2",[]],["component/107-2",[]],["title/107-3",[8,5.613,90,28.292,618,32.374]],["name/107-3",[]],["text/107-3",[]],["component/107-3",[]],["title/107-4",[8,5.613,77,22.605,90,28.292]],["name/107-4",[]],["text/107-4",[]],["component/107-4",[]],["title/107",[8,6.606,47,15.32]],["name/107",[47,0.693,132,0.928]],["text/107",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/107",[8,0.304]],["title/108-1",[331,18.962,729,39.726]],["name/108-1",[]],["text/108-1",[]],["component/108-1",[]],["title/108-2",[43,31.931,424,35.439]],["name/108-2",[]],["text/108-2",[]],["component/108-2",[]],["title/108-3",[8,5.613,479,21.549,730,34.527]],["name/108-3",[]],["text/108-3",[]],["component/108-3",[]],["title/108-4",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/108-4",[]],["text/108-4",[]],["component/108-4",[]],["title/108",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/108",[47,0.693,331,0.858]],["text/108",[8,0.878,11,1.668,36,2.157,43,1.798,47,1.348,51,3.118,56,1.664,66,1.441,97,1.594,132,2.724,162,1.753,188,0.947,197,2.576,210,1.544,211,1.648,221,1.995,225,1.774,226,1.63,227,1.402,228,1.708,234,3.221,237,2.189,238,1.612,262,2.296,267,1.498,268,1.729,277,1.708,331,2.519,350,1.428,355,1.963,378,2.068,379,1.155,385,2.03,396,1.963,418,2.145,424,3.118,436,2.03,437,3.105,459,2.145,463,2.145,472,1.995,477,2.189,479,2.231,480,3.421,481,2.388,482,3.308,550,2.104,553,2.104,590,2.03,611,1.729,647,1.903,653,2.145,674,2.772,731,1.995,732,1.798,733,1.63,734,2.344,735,3.495,736,2.344,737,2.474,738,2.288,739,2.288,740,2.189,741,1.648,742,2.344,743,5.097,744,2.344,745,3.663,746,2.344,747,2.104,748,3.663,749,3.663,750,2.344,751,2.344,752,2.189,753,2.344,754,1.903]],["component/108",[8,0.304]],["title/109",[105,41.695]],["name/109",[9,1.827]],["text/109",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/109",[8,0.304]],["title/110-1",[4,38.103,756,57.322]],["name/110-1",[]],["text/110-1",[]],["component/110-1",[]],["title/110-2",[78,21.616,423,40.637]],["name/110-2",[]],["text/110-2",[]],["component/110-2",[]],["title/110",[0,48.267]],["name/110",[9,1.827]],["text/110",[1,2.281,8,0.904,13,1.108,14,1.316,15,2.881,21,1.459,28,1.562,30,1.739,33,2.844,37,1.39,39,2.062,47,0.719,49,1.519,56,1.86,62,1.128,66,1.201,76,1.636,77,3.458,78,1.645,84,1.721,95,1.721,97,1.328,115,2.697,119,2.178,129,2.062,130,1.459,132,1.968,146,1.753,153,2.318,165,1.108,173,1.441,179,1.562,180,2.308,183,2.463,185,1.108,188,1.615,190,1.824,212,1.691,214,2.743,219,1.684,225,1.478,229,1.864,234,1.137,245,1.478,258,2.774,262,1.224,266,1.61,295,1.274,315,1.663,331,2.094,333,2.228,340,1.788,350,3.078,386,3.023,388,1.586,389,1.691,397,1.586,398,2.611,399,1.721,402,1.906,419,1.562,425,1.721,426,2.285,431,1.824,448,1.691,476,1.61,547,2.004,574,3.901,583,1.906,585,2.004,614,1.906,630,1.721,659,2.199,712,1.824,721,2.199,722,2.199,723,4.127,724,2.199,725,2.199,726,3.567,727,1.953,728,2.199,733,1.358,757,2.517,758,2.062,759,4.082,760,2.517,761,2.004,762,2.388,763,2.199,764,2.517,765,2.388,766,2.689,767,2.689,768,2.199,769,2.689,770,2.517,771,1.953]],["component/110",[8,0.304]],["title/111",[77,26.606,381,26.872]],["name/111",[381,1.882]],["text/111",[8,0.522,25,2.523,30,3.316,56,1.804,58,2.102,71,3.21,77,2.102,90,2.631,130,3.529,153,1.338,180,3.442,211,2.313,212,2.848,275,3.894,294,3.138,350,2.004,379,1.62,381,2.123,540,6.245,588,2.953,666,3.01,772,4.529,773,4.238,774,3.848,775,3.138,776,3.703,777,7.041,778,4.238,779,6.086,780,3.703,781,4.529,782,4.323,783,4.529,784,4.507,785,5.672,786,4.529,787,4.238,788,4.529,789,4.529,790,4.529,791,4.021,792,3.848,793,4.529,794,4.529,795,4.529]],["component/111",[8,0.304]],["title/112-1",[56,11.545,165,20.074,258,19.416]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[56,11.545,173,26.096,258,19.416]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[56,11.545,258,19.416,630,31.174]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112",[62,24.035,77,26.606]],["name/112",[62,1.683]],["text/112",[2,2.91,8,0.398,13,0.837,14,1.75,15,3.453,25,1.131,36,0.705,47,0.542,48,2.09,49,1.146,56,2.194,62,1.447,67,1.323,73,2.739,76,1.234,77,0.942,81,1.299,92,1.784,94,3.181,112,1.234,122,1.582,132,0.726,153,1.76,159,2.1,165,0.837,173,1.85,175,3.878,183,1.146,185,0.837,188,2.306,189,1.513,191,0.777,192,3.75,195,1.724,201,3.798,206,1.162,219,1.739,234,1.905,238,1.014,245,1.898,255,2.005,258,3.308,262,1.571,267,0.942,269,1.074,277,1.074,293,2.455,315,1.255,327,1.556,331,0.671,333,2.301,348,1.474,353,1.66,363,1.146,368,3.71,379,1.901,380,1.743,381,1.618,388,3.133,390,1.439,391,2.447,398,2.067,419,1.179,446,1.407,489,1.179,511,1.377,518,1.255,520,1.037,611,1.088,630,1.299,652,2.035,665,2.392,694,2.937,702,1.474,741,1.037,771,4.705,796,1.556,797,1.439,798,2.03,799,2.251,800,2.03,801,2.03,802,1.66,803,1.66,804,1.802,805,2.392,806,2.03,807,1.802,808,1.802,809,1.66,810,1.604,811,1.802]],["component/112",[8,0.304]],["title/113-1",[812,50.583]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[813,69.648]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[153,16.935,647,33.796]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[14,9.21,78,18.366,188,14.297]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[78,21.616,153,16.935]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[14,9.21,188,14.297,192,26.428]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113",[14,6.347,56,7.956,153,9.916,165,13.834,188,9.853,258,13.38]],["name/113",[814,4.014]],["text/113",[11,1.349,14,1.664,23,3.938,26,3.045,33,2.776,36,1.48,56,1.009,66,1.166,70,4.409,78,1.606,112,1.588,132,2.225,141,2.126,153,2.47,162,1.48,165,1.076,173,1.399,183,1.474,185,1.076,188,2.583,190,1.771,191,1.631,201,3.007,204,1.249,206,4.628,214,1.642,234,1.104,244,2.135,255,2.474,258,1.041,262,1.188,267,1.212,269,1.382,295,2.553,335,1.896,363,2.404,388,2.511,392,1.642,416,2.017,419,1.517,431,1.771,463,1.736,468,2.951,475,1.896,557,3.658,611,1.399,616,2.059,630,1.671,690,1.365,694,4.055,712,1.771,733,1.319,735,3.737,741,1.334,797,1.851,815,6.024,816,2.611,817,1.851,818,4.311,819,3.264,820,2.135,821,2.135,822,2.135,823,2.611,824,3.482,825,5.392,826,5.046,827,4.581,828,6.22,829,1.851,830,2.444,831,2.318,832,2.611,833,2.611,834,2.611,835,2.611,836,2.444]],["component/113",[8,0.304]],["title/114-1",[812,50.583]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114-2",[331,23.038]],["name/114-2",[]],["text/114-2",[]],["component/114-2",[]],["title/114-3",[78,26.264]],["name/114-3",[]],["text/114-3",[]],["component/114-3",[]],["title/114-4",[153,16.935,210,27.426]],["name/114-4",[]],["text/114-4",[]],["component/114-4",[]],["title/114-5",[56,16.509]],["name/114-5",[]],["text/114-5",[]],["component/114-5",[]],["title/114",[14,5.751,15,13.843,56,7.209,173,16.296,188,8.928,258,12.124,771,22.088]],["name/114",[837,4.014]],["text/114",[11,2.206,12,1.74,14,1.738,15,2.837,30,1.294,36,1.484,47,1.141,48,0.877,56,1.81,62,2.613,76,1.149,78,1.61,90,1.098,94,1.131,109,1.209,112,1.975,122,1.346,153,2.256,165,1.338,173,1.012,185,1.338,188,2.161,190,2.203,191,1.941,192,1.025,196,2.007,198,1.34,201,2.759,204,2.425,206,2.445,208,1.025,214,1.188,219,0.729,227,0.821,234,0.799,238,0.944,255,2.48,258,2.275,262,0.86,269,1.718,293,1.76,295,1.538,303,1.859,331,1.412,333,0.965,346,1.408,368,4.214,378,0.629,379,2.229,380,1.64,388,2.517,390,1.34,391,1.34,431,1.282,438,1.494,446,1.309,468,3.512,472,4.124,478,1.494,504,1.188,511,1.282,518,2.007,555,2.567,557,1.282,588,1.232,630,1.209,652,1.114,665,1.309,690,1.698,694,4.349,700,1.372,701,2.489,702,1.372,712,1.282,732,1.053,733,0.954,771,3.68,775,1.309,796,1.448,799,2.784,802,1.545,803,1.545,805,2.25,812,2.358,815,2.42,818,2.25,819,2.489,820,1.545,821,1.545,822,1.545,824,1.545,838,1.494,839,1.889,840,1.678,841,1.889,842,2.883,843,1.678,844,1.889,845,1.605,846,4.319,847,1.889,848,1.605,849,2.759,850,1.448,851,3.791,852,1.889,853,1.889,854,1.605,855,1.545,856,1.494]],["component/114",[8,0.304]],["title/115-1",[812,50.583]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[331,23.038]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[78,26.264]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115-4",[153,16.935,210,27.426]],["name/115-4",[]],["text/115-4",[]],["component/115-4",[]],["title/115-5",[56,16.509]],["name/115-5",[]],["text/115-5",[]],["component/115-5",[]],["title/115",[14,5.751,15,13.843,56,7.209,188,8.928,258,12.124,388,17.931,630,19.466]],["name/115",[857,4.014]],["text/115",[2,2.439,8,0.417,11,1.872,12,1.445,14,1.728,15,3.954,19,1.318,30,1.444,36,1.259,47,0.968,48,0.709,56,1.713,58,0.709,62,0.64,73,0.929,76,0.929,78,1.649,90,0.887,92,0.789,109,0.977,112,1.64,122,1.582,123,2.364,153,2.059,159,2.203,165,1.112,173,1.941,175,2.168,184,1.207,185,1.112,188,2.356,190,1.83,191,1.387,192,1.464,198,1.912,199,1.058,201,4.025,204,1.29,206,2.074,208,1.464,210,0.731,213,0.874,214,0.96,220,1.758,227,0.663,234,0.646,238,0.763,255,2.54,258,1.99,262,1.649,269,1.917,293,1.493,295,1.277,303,0.874,331,1.446,368,2.858,378,0.509,379,1.786,380,0.771,381,1.264,382,1.083,388,4.632,391,1.083,396,0.929,431,1.036,446,1.058,452,1.356,468,2.51,472,0.944,478,1.207,511,3.386,515,1.171,518,0.944,520,0.78,555,1.207,557,1.036,559,1.036,588,0.996,589,0.944,625,1.297,652,2.578,665,1.058,690,1.41,694,3.255,700,1.109,701,1.171,712,1.036,732,0.851,733,0.771,771,4.327,775,1.058,799,1.758,802,1.249,803,1.249,805,1.058,807,2.395,808,1.356,809,1.249,810,1.207,812,1.959,815,2.01,818,1.869,819,2.068,820,1.249,821,1.249,822,1.249,824,1.249,838,1.207,842,1.356,843,1.356,845,1.297,846,3.03,848,1.297,849,2.291,850,1.171,851,3.882,855,1.249,856,1.207,858,1.429,859,1.527,860,1.527,861,1.429,862,2.239,863,1.527,864,1.527,865,1.527,866,1.527]],["component/115",[8,0.304]],["title/116-1",[0,48.267]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[78,21.616,423,40.637]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/116-3",[]],["text/116-3",[]],["component/116-3",[]],["title/116-4",[331,18.962,729,39.726]],["name/116-4",[]],["text/116-4",[]],["component/116-4",[]],["title/116-5",[43,31.931,424,35.439]],["name/116-5",[]],["text/116-5",[]],["component/116-5",[]],["title/116-6",[8,5.613,479,21.549,730,34.527]],["name/116-6",[]],["text/116-6",[]],["component/116-6",[]],["title/116-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/116-7",[]],["text/116-7",[]],["component/116-7",[]],["title/116",[7,40.637,447,31.51]],["name/116",[9,1.827]],["text/116",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/116",[8,0.304]],["title/117",[126,36.69,447,31.51]],["name/117",[9,1.827]],["text/117",[405,4.809]],["component/117",[8,0.304]],["title/118-1",[867,46.875,868,50.896]],["name/118-1",[]],["text/118-1",[]],["component/118-1",[]],["title/118",[706,39.881]],["name/118",[706,2.299]],["text/118",[2,1.325,8,0.313,10,1.285,14,1.551,16,1.84,30,2.206,36,0.943,39,2.079,45,1.576,48,2.569,49,1.532,56,1.508,58,2.039,71,1.923,92,2.269,100,3.215,122,1.167,143,2.671,144,1.706,166,1.511,168,2.144,185,1.118,197,2.827,200,3.367,201,3.616,211,1.385,219,1.047,223,4.741,228,1.436,234,1.147,238,1.355,262,2.519,264,4.62,275,1.624,290,1.97,293,2.281,298,1.923,308,2.079,318,1.84,319,3.367,333,1.385,355,2.671,386,3.044,390,1.923,407,2.144,422,2.079,495,3.044,500,1.97,520,1.385,571,3.732,598,2.305,611,1.453,644,2.305,653,1.803,654,1.65,692,2.144,706,2.515,758,2.079,768,3.592,775,1.88,817,1.923,867,4.526,868,5.648,869,4.11,870,2.712,871,2.538,872,4.914,873,4.392,874,2.712,875,2.712,876,2.712,877,2.712,878,4.392,879,2.712,880,2.712,881,4.645,882,1.97,883,2.218,884,2.712,885,2.712,886,2.712,887,2.305,888,2.712,889,2.079,890,2.712,891,2.408,892,2.712,893,2.712,894,2.712,895,2.712,896,2.712,897,2.305,898,2.305,899,3.472,900,2.712,901,2.538,902,2.712,903,2.712,904,2.712,905,2.712]],["component/118",[8,0.304]],["title/119",[447,38.285]],["name/119",[9,1.827]],["text/119",[405,4.809]],["component/119",[8,0.304]],["title/120-1",[605,40.637,906,50.896]],["name/120-1",[]],["text/120-1",[]],["component/120-1",[]],["title/120-2",[28,33.299,907,50.896]],["name/120-2",[]],["text/120-2",[]],["component/120-2",[]],["title/120-3",[122,11.246,380,21.38,706,24.243,805,29.341]],["name/120-3",[]],["text/120-3",[]],["component/120-3",[]],["title/120-4",[185,20.074,881,32.374,908,41.379]],["name/120-4",[]],["text/120-4",[]],["component/120-4",[]],["title/120-5",[100,28.292,881,32.374,909,41.379]],["name/120-5",[]],["text/120-5",[]],["component/120-5",[]],["title/120-6",[28,28.292,194,36.302,520,24.876]],["name/120-6",[]],["text/120-6",[]],["component/120-6",[]],["title/120",[706,39.881]],["name/120",[706,2.299]],["text/120",[2,0.932,14,0.893,16,0.705,25,1.472,30,0.761,34,1.022,37,0.537,45,1.108,48,0.885,54,0.737,56,1.361,58,0.885,78,0.392,84,0.666,92,0.537,94,0.623,96,0.737,100,2.744,122,0.507,141,0.519,143,1.991,153,0.307,162,3.619,175,0.623,181,3.949,188,1.387,189,0.775,191,0.731,193,1.352,194,2.848,197,0.531,199,0.721,201,2.775,202,0.755,203,1.221,204,0.913,207,0.666,210,0.498,219,1.264,225,0.572,228,0.55,234,1.385,238,0.519,246,0.883,257,1.462,258,0.415,262,0.473,268,0.557,270,0.705,275,1.96,277,2.276,281,3.674,290,0.755,293,1.575,319,0.797,326,1.621,331,0.344,333,0.531,349,0.85,354,1.832,355,0.632,365,1.268,368,0.595,371,3.206,377,0.492,378,0.346,379,1.171,380,0.525,391,0.737,398,0.623,399,1.692,407,0.822,416,0.903,419,0.604,430,0.755,448,0.654,459,2.54,462,4.528,489,0.604,492,0.755,495,1.832,516,0.973,520,0.974,550,0.678,589,2.659,652,0.613,674,0.572,706,1.092,723,1.244,747,0.678,754,0.613,763,0.85,768,0.85,774,0.883,784,1.322,797,0.737,805,0.721,809,0.85,817,1.352,829,1.352,872,0.923,881,3.816,882,0.755,891,0.923,898,2.782,899,0.822,906,1.694,907,1.694,908,0.883,909,0.883,910,1.462,911,1.04,912,6.32,913,1.04,914,3.274,915,1.04,916,1.908,917,1.04,918,1.04,919,1.04,920,1.04,921,0.923,922,1.04,923,1.04,924,1.04,925,1.04,926,3.821,927,1.908,928,1.908,929,1.908,930,1.04,931,1.04,932,1.04,933,1.04,934,1.04,935,1.04,936,1.04,937,1.462,938,4.301,939,2.643,940,1.908,941,3.274,942,3.274,943,1.04,944,1.908,945,2.643,946,2.643,947,1.04,948,1.908,949,1.908,950,1.04,951,1.04,952,2.643,953,1.04,954,3.274,955,1.908,956,1.508,957,2.54,958,1.908,959,1.04,960,1.908,961,1.908,962,1.04,963,1.04,964,1.908,965,1.04,966,2.643,967,0.973,968,0.85,969,1.04,970,1.04,971,2.643,972,1.04,973,1.04,974,1.04,975,1.04,976,1.04,977,1.04,978,4.301,979,1.04,980,1.04,981,1.04,982,2.089,983,1.04,984,1.04,985,1.908,986,1.04,987,1.04,988,1.04,989,1.908,990,1.04,991,1.04,992,1.908,993,1.04,994,1.04,995,1.04,996,1.04,997,1.04,998,1.04,999,1.04]],["component/120",[8,0.304]],["title/121",[14,8.473,122,7.385,188,8.161,196,17.189,208,15.086,293,11.459,476,16.644]],["name/121",[14,0.287,122,0.403,476,0.909,1000,1.519]],["text/121",[14,1.616,56,1.608,66,2.146,122,2.089,130,2.608,162,3.468,165,1.981,185,1.981,188,1.411,196,2.971,204,3.246,208,2.608,226,2.427,253,4.342,277,2.543,295,2.276,377,2.276,379,1.719,416,2.276,417,3.49,476,4.708,589,2.971,616,2.323,691,2.483,754,2.833,784,3.33,912,5.711,1001,6.784,1002,4.805,1003,4.805,1004,4.805,1005,4.805,1006,4.805,1007,4.805,1008,4.805,1009,4.805,1010,4.805,1011,4.083,1012,4.083]],["component/121",[8,0.304]],["title/122",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/122",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/122",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/122",[8,0.304]],["title/123",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/123",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/123",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1051,1.376,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45]],["component/123",[8,0.304]],["title/124",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/124",[14,0.362,188,0.562,596,1.014]],["text/124",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/124",[8,0.304]],["title/125-1",[62,29.203]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[227,24.902,616,27.714]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[227,24.902,1090,50.896]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[227,24.902,1091,57.322]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125-5",[227,21.157,600,30.111,1092,48.704]],["name/125-5",[]],["text/125-5",[]],["component/125-5",[]],["title/125-6",[227,21.157,600,30.111,1093,43.243]],["name/125-6",[]],["text/125-6",[]],["component/125-6",[]],["title/125-7",[350,30.815]],["name/125-7",[]],["text/125-7",[]],["component/125-7",[]],["title/125",[14,8.473,122,7.385,191,10.649,206,15.92,269,14.714,378,9.261,910,21.313]],["name/125",[14,0.238,47,0.336,378,0.419,694,0.82,695,0.965]],["text/125",[12,2.951,14,1.568,30,0.711,34,0.955,36,0.619,56,0.968,78,0.672,81,1.141,122,1.294,123,0.844,132,1.105,141,0.89,145,1.006,151,1.264,153,1.913,159,1.084,162,2.987,165,0.735,185,0.735,186,1.366,188,2.011,191,1.183,201,0.862,202,1.295,203,2.615,206,3.154,207,2.615,228,0.943,245,0.98,247,1.084,248,1.295,249,1.514,253,2.615,254,2.301,264,1.295,267,2.261,268,1.654,269,1.634,274,1.235,275,1.067,281,1.141,350,0.789,361,1.329,365,1.185,374,2.916,378,1.361,379,1.105,380,2.46,399,1.141,406,4.139,416,2.307,417,1.295,427,1.084,436,1.121,437,0.789,456,1.235,458,0.98,459,1.185,475,4,479,0.789,481,0.844,482,0.774,600,3.73,607,1.051,608,1.976,611,0.955,616,1.975,641,1.366,654,1.878,674,2.678,684,2.623,690,0.932,694,3.176,695,3.131,723,3.591,741,0.91,782,1.185,815,1.329,829,2.896,910,4.222,956,1.409,957,4.768,1049,1.366,1051,1.583,1062,2.367,1081,1.514,1090,2.742,1093,1.583,1094,3.851,1095,1.782,1096,1.782,1097,2.367,1098,2.441,1099,1.514,1100,4.354,1101,3.088,1102,3.088,1103,1.782,1104,1.782,1105,1.782,1106,1.782,1107,1.668,1108,4.085,1109,1.782,1110,2.441,1111,2.623,1112,1.782,1113,1.782,1121,2.623,1122,1.514,1123,2.623,1124,1.514,1125,3.088,1126,1.782,1127,1.782,1128,1.583,1129,1.583,1130,1.782,1131,1.782,1132,1.409,1133,4.085,1134,3.088,1135,4.085,1136,3.088,1137,1.782,1138,1.782,1139,1.782,1140,1.782,1141,1.782,1142,1.782,1143,1.782,1144,1.782,1145,1.782]],["component/125",[8,0.304]],["title/126",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/126",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/126",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/126",[8,0.304]],["title/127-1",[62,29.203]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/127",[47,0.512,381,0.898,607,1.13]],["text/127",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.396,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897]],["component/127",[8,0.304]],["title/128-1",[62,29.203]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128-2",[227,24.902,616,27.714]],["name/128-2",[]],["text/128-2",[]],["component/128-2",[]],["title/128-3",[227,24.902,1222,45.311]],["name/128-3",[]],["text/128-3",[]],["component/128-3",[]],["title/128-4",[227,24.902,1097,43.942]],["name/128-4",[]],["text/128-4",[]],["component/128-4",[]],["title/128-5",[227,24.902,416,27.146]],["name/128-5",[]],["text/128-5",[]],["component/128-5",[]],["title/128-6",[247,34.864,277,30.337]],["name/128-6",[]],["text/128-6",[]],["component/128-6",[]],["title/128-7",[350,30.815]],["name/128-7",[]],["text/128-7",[]],["component/128-7",[]],["title/128",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/128",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/128",[2,0.622,12,1.229,14,0.835,21,0.691,30,1.963,36,0.797,37,1.185,56,1.271,66,0.569,67,0.83,100,0.74,101,0.883,114,2.495,122,1.833,123,1.086,130,2.397,132,0.456,141,2.678,144,0.801,145,0.719,153,1.798,162,3.031,173,0.682,185,0.525,191,0.879,199,0.883,203,2.003,210,1.497,212,0.801,219,0.492,227,2.139,229,0.883,238,0.636,247,1.903,250,1.041,253,1.468,258,0.508,267,3.305,279,0.801,282,0.883,361,0.949,363,1.295,365,2.544,371,1.352,374,1.373,377,1.086,378,1.042,379,2.897,380,1.932,381,3.235,382,0.903,389,0.801,390,1.626,399,1.468,402,0.903,416,2.882,425,1.468,427,0.775,436,0.801,437,0.563,456,2.169,458,0.7,475,0.925,479,0.563,481,0.603,482,0.553,485,0.949,486,0.976,518,0.787,520,1.598,543,0.976,569,1.758,576,1.007,594,0.925,600,1.935,607,3.162,608,3.895,616,3.709,637,1.007,674,3.159,678,0.949,687,1.041,690,2.001,706,1.313,731,0.787,754,1.352,761,0.949,782,2.544,797,0.903,817,2.219,889,0.976,899,1.007,921,1.131,957,3.82,968,1.041,982,1.007,1011,1.082,1012,1.082,1049,4.665,1060,0.976,1062,1.758,1065,1.876,1071,2.559,1073,1.041,1075,1.041,1076,1.876,1078,1.876,1094,2.474,1097,0.976,1098,1.007,1099,1.082,1110,3.025,1111,3.251,1121,1.949,1122,1.082,1123,1.949,1124,1.082,1146,0.801,1148,1.041,1154,0.949,1222,1.813,1223,1.082,1224,2.147,1225,2.147,1226,1.192,1227,2.147,1228,2.147,1229,2.147,1230,2.147,1231,1.192,1232,1.192,1233,1.192,1234,1.192,1235,2.147,1236,2.147,1237,1.274,1238,1.082,1239,1.274,1240,1.082,1241,2.147,1242,1.192,1243,1.192,1244,1.192,1245,1.192,1246,1.192,1247,1.192,1248,1.192,1249,1.192,1250,1.192,1251,0.976,1252,2.147,1253,1.192,1254,1.192,1255,1.192,1256,1.192,1257,1.192,1258,1.192,1259,1.192,1260,1.192,1261,1.192,1262,1.192,1263,1.192,1264,1.192,1265,1.192,1266,1.274,1267,1.274,1268,1.192,1269,1.192,1270,1.192,1271,1.192,1272,1.192,1273,1.192,1274,1.192,1275,1.192,1276,1.192,1277,1.192]],["component/128",[8,0.304]],["title/129",[14,9.21,122,12.937,379,17.423]],["name/129",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/129",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/129",[8,0.304]],["title/130-1",[62,29.203]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130-2",[165,23.626,1281,50.896]],["name/130-2",[]],["text/130-2",[]],["component/130-2",[]],["title/130-3",[1282,69.648]],["name/130-3",[]],["text/130-3",[]],["component/130-3",[]],["title/130",[14,10.84,122,15.227]],["name/130",[14,0.362,47,0.512,122,0.509]],["text/130",[8,0.394,14,1.95,19,1.671,29,1.959,37,4.042,47,1.41,49,1.931,56,1.527,66,2.356,122,2.62,123,1.62,132,1.224,162,2.238,183,1.931,201,3.114,219,3.191,225,1.88,226,1.727,234,3.309,258,1.364,303,1.959,318,2.32,335,4.678,375,3.933,377,1.62,379,2.304,380,2.664,381,1.603,437,1.513,458,1.88,479,1.513,481,1.62,482,1.486,520,1.747,582,2.622,583,2.425,589,4.476,605,2.425,617,2.906,631,2.797,678,2.549,1023,2.906,1146,2.151,1154,2.549,1157,2.906,1281,3.037,1283,3.037,1284,3.42,1285,3.42,1286,3.42,1287,3.42]],["component/130",[8,0.304]],["title/131-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/131-1",[]],["text/131-1",[]],["component/131-1",[]],["title/131-2",[14,9.21,153,14.389,188,14.297]],["name/131-2",[]],["text/131-2",[]],["component/131-2",[]],["title/131-3",[10,32.982]],["name/131-3",[]],["text/131-3",[]],["component/131-3",[]],["title/131-4",[122,18.501]],["name/131-4",[]],["text/131-4",[]],["component/131-4",[]],["title/131",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/131",[14,0.362,47,0.512,188,0.562]],["text/131",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/131",[8,0.304]],["title/132-1",[372,32.824,1296,50.896]],["name/132-1",[]],["text/132-1",[]],["component/132-1",[]],["title/132-2",[9,31.701]],["name/132-2",[]],["text/132-2",[]],["component/132-2",[]],["title/132-3",[36,24.202]],["name/132-3",[]],["text/132-3",[]],["component/132-3",[]],["title/132-4",[1297,69.648]],["name/132-4",[]],["text/132-4",[]],["component/132-4",[]],["title/132",[14,8.006,153,12.508,188,12.428,191,16.216]],["name/132",[14,0.238,47,0.336,153,0.372,188,0.369,191,0.482]],["text/132",[9,1.923,11,3.195,36,2.978,41,3.149,44,2.322,81,2.704,86,3.589,122,1.122,132,1.511,143,2.569,162,2.149,163,5.254,166,4.485,185,1.741,189,3.149,191,1.618,201,2.042,208,2.292,223,4.195,258,1.684,277,2.236,311,4.111,333,2.158,354,2.928,372,5.126,398,2.529,416,2.001,437,1.869,458,2.322,479,1.869,481,2.001,482,1.835,611,2.264,616,2.042,732,3.445,741,2.158,791,3.751,827,3.589,881,2.808,1098,3.339,1110,3.339,1129,3.751,1132,3.339,1296,7.608,1298,4.225,1299,4.225,1300,3.953,1301,4.225,1302,4.225,1303,4.225,1304,3.953,1305,6.184,1306,4.225,1307,6.184]],["component/132",[8,0.304]],["title/133-1",[62,29.203]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133",[702,41.632,1308,57.322]],["name/133",[14,0.287,47,0.406,122,0.403,701,1.164]],["text/133",[10,2.57,14,1.879,25,3.023,56,1.287,122,2.391,132,1.942,159,3.301,162,1.886,188,2.167,191,2.079,192,2.945,198,3.848,219,2.095,368,4.227,378,1.808,379,2.641,380,2.741,382,3.848,448,3.413,481,2.57,515,5.658,518,3.355,652,3.2,702,5.361,712,3.682,840,6.554,867,4.438,982,5.835,1309,5.427]],["component/133",[8,0.304]],["title/134",[105,34.317,447,31.51]],["name/134",[9,1.827]],["text/134",[405,4.809]],["component/134",[8,0.304]],["title/135-1",[0,48.267]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[78,21.616,423,40.637]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[331,18.962,729,39.726]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[43,31.931,424,35.439]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135-6",[8,5.613,479,21.549,730,34.527]],["name/135-6",[]],["text/135-6",[]],["component/135-6",[]],["title/135-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/135-7",[]],["text/135-7",[]],["component/135-7",[]],["title/135",[7,40.637,720,39.726]],["name/135",[9,1.827]],["text/135",[8,0.982,11,1.556,13,1.968,36,2.062,43,1.677,47,1.586,51,2.952,56,1.601,66,1.345,89,1.426,97,1.487,130,1.634,132,2.804,162,1.659,188,0.884,197,2.439,210,1.441,211,1.538,219,1.162,221,1.862,225,1.655,226,1.521,227,1.308,228,1.594,234,3.115,237,2.043,238,1.504,262,2.174,267,1.398,268,1.613,277,1.594,331,2.436,350,1.332,355,1.831,378,2.25,379,1.077,385,1.894,396,1.831,418,2.002,424,2.952,436,1.894,437,2.988,459,2.002,463,2.002,466,1.655,472,1.862,477,2.043,479,2.113,480,3.239,481,2.262,482,3.199,489,1.749,550,1.963,553,1.963,590,1.894,611,1.613,647,1.775,653,2.002,674,2.625,720,2.087,731,1.862,732,1.677,733,1.521,734,2.187,735,3.31,736,2.187,737,2.308,738,2.135,739,2.135,740,2.043,741,1.538,742,2.187,743,4.906,744,2.187,745,3.468,746,2.187,747,1.963,748,3.468,749,3.468,750,2.187,751,2.187,752,2.043,753,2.187,754,1.775]],["component/135",[8,0.304]],["title/136",[8,5.613,13,20.074,378,16.222]],["name/136",[9,1.827]],["text/136",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/136",[8,0.304]],["title/137-1",[379,20.506,596,30.337]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137-2",[89,27.146,1313,45.311]],["name/137-2",[]],["text/137-2",[]],["component/137-2",[]],["title/137",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/137",[13,1.069,596,1.373]],["text/137",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/137",[8,0.304]],["title/138",[105,34.317,720,39.726]],["name/138",[9,1.827]],["text/138",[405,4.809]],["component/138",[8,0.304]]],"invertedIndex":[["",{"_index":162,"title":{"11-5":{},"54-8":{},"67-8":{},"68-1":{},"103-5":{}},"name":{},"text":{"1":{},"3":{},"11":{},"13":{},"16":{},"21":{},"24":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"45":{},"47":{},"49":{},"54":{},"56":{},"59":{},"61":{},"63":{},"66":{},"67":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"91":{},"93":{},"95":{},"103":{},"105":{},"108":{},"113":{},"116":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"137":{}},"component":{}}],["0..n",{"_index":1405,"title":{},"name":{},"text":{"69":{}},"component":{}}],["0.088",{"_index":1661,"title":{},"name":{},"text":{"75":{}},"component":{}}],["0.14",{"_index":1564,"title":{},"name":{},"text":{"74":{}},"component":{}}],["0.286",{"_index":1694,"title":{},"name":{},"text":{"75":{}},"component":{}}],["01",{"_index":1685,"title":{},"name":{},"text":{"75":{}},"component":{}}],["07",{"_index":1559,"title":{},"name":{},"text":{"74":{}},"component":{}}],["07t09:18:02.345z",{"_index":1592,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["07t09:18:02.740z",{"_index":1598,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["1",{"_index":165,"title":{"21":{},"64":{},"74":{},"113":{},"20-1":{},"38-2":{},"68-2":{},"112-1":{},"130-2":{}},"name":{"64":{},"74":{},"75":{}},"text":{"1":{},"5":{},"8":{},"11":{},"14":{},"17":{},"18":{},"20":{},"21":{},"22":{},"23":{},"29":{},"33":{},"45":{},"47":{},"51":{},"53":{},"54":{},"57":{},"60":{},"66":{},"67":{},"68":{},"69":{},"71":{},"74":{},"75":{},"91":{},"93":{},"97":{},"100":{},"103":{},"106":{},"109":{},"110":{},"112":{},"113":{},"114":{},"115":{},"121":{},"125":{},"137":{}},"component":{}}],["1.3.2.jar!/logback.xml",{"_index":1621,"title":{},"name":{},"text":{"75":{}},"component":{}}],["101",{"_index":1528,"title":{},"name":{},"text":{"72":{}},"component":{}}],["102",{"_index":1532,"title":{},"name":{},"text":{"72":{}},"component":{}}],["103rd",{"_index":499,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["10:12:38.874",{"_index":1560,"title":{},"name":{},"text":{"74":{}},"component":{}}],["10:12:39.009",{"_index":1563,"title":{},"name":{},"text":{"74":{}},"component":{}}],["10:12:39.131",{"_index":1565,"title":{},"name":{},"text":{"74":{}},"component":{}}],["11",{"_index":426,"title":{},"name":{},"text":{"9":{},"18":{},"74":{},"101":{},"110":{}},"component":{}}],["12",{"_index":1558,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["123",{"_index":461,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["13",{"_index":1701,"title":{},"name":{},"text":{"75":{}},"component":{}}],["13776m",{"_index":1594,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["15",{"_index":1366,"title":{},"name":{},"text":{"64":{}},"component":{}}],["16",{"_index":1684,"title":{},"name":{},"text":{"75":{}},"component":{}}],["186b24edf20c1c4a",{"_index":1593,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["18:33:16,185",{"_index":1609,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,186",{"_index":1613,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,194",{"_index":1622,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,269",{"_index":1624,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,270",{"_index":1629,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,272",{"_index":1630,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,282",{"_index":1634,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,283",{"_index":1644,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.295",{"_index":1646,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.296",{"_index":1650,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.364",{"_index":1659,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.428",{"_index":1660,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.518",{"_index":1662,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:48.977",{"_index":1687,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.044",{"_index":1690,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.070",{"_index":1692,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.346",{"_index":1693,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.455",{"_index":1695,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:50.806",{"_index":1696,"title":{},"name":{},"text":{"75":{}},"component":{}}],["1a",{"_index":1354,"title":{"74-1":{}},"name":{},"text":{"64":{},"66":{},"74":{}},"component":{}}],["1b",{"_index":1360,"title":{"75-1":{}},"name":{},"text":{"64":{},"66":{},"75":{}},"component":{}}],["1c",{"_index":1603,"title":{"75-2":{}},"name":{},"text":{"75":{}},"component":{}}],["2",{"_index":173,"title":{"22":{},"65":{},"114":{},"20-2":{},"68-3":{},"112-2":{}},"name":{"65":{}},"text":{"1":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"36":{},"47":{},"54":{},"66":{},"68":{},"85":{},"93":{},"103":{},"110":{},"112":{},"113":{},"114":{},"115":{},"128":{}},"component":{}}],["2.0",{"_index":469,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["2.1/org.modelix/model",{"_index":1618,"title":{},"name":{},"text":{"75":{}},"component":{}}],["2.47",{"_index":1577,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2.org.modelix.model.data",{"_index":1282,"title":{"38-3":{},"130-3":{}},"name":{},"text":{},"component":{}}],["2/file",{"_index":1617,"title":{},"name":{},"text":{"75":{}},"component":{}}],["20",{"_index":1568,"title":{},"name":{},"text":{"74":{}},"component":{}}],["2020",{"_index":629,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["2021",{"_index":628,"title":{},"name":{},"text":{"11":{},"45":{},"54":{},"91":{},"103":{},"137":{}},"component":{}}],["2021.2",{"_index":501,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["2021.2.103",{"_index":498,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["2021.2.6",{"_index":431,"title":{},"name":{},"text":{"9":{},"18":{},"21":{},"22":{},"23":{},"61":{},"74":{},"75":{},"101":{},"110":{},"113":{},"114":{},"115":{}},"component":{}}],["2022",{"_index":1557,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2023",{"_index":510,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"75":{},"102":{},"103":{}},"component":{}}],["2023.r1",{"_index":513,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["211.31",{"_index":1586,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["23.1",{"_index":529,"title":{"11-2":{},"11-3":{},"11-4":{},"11-5":{},"11-6":{},"54-5":{},"54-6":{},"54-7":{},"54-8":{},"54-9":{},"103-2":{},"103-3":{},"103-4":{},"103-5":{},"103-6":{}},"name":{},"text":{"11":{},"47":{},"54":{},"103":{}},"component":{}}],["23.1.0",{"_index":1320,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["23.2",{"_index":531,"title":{"11-7":{},"11-8":{},"54-10":{},"54-11":{},"103-7":{},"103-8":{}},"name":{},"text":{"11":{},"93":{},"103":{}},"component":{}}],["24.1",{"_index":533,"title":{"11-9":{},"54-12":{},"103-9":{}},"name":{},"text":{},"component":{}}],["24.2",{"_index":535,"title":{"11-10":{},"54-13":{},"103-10":{}},"name":{},"text":{},"component":{}}],["25",{"_index":1686,"title":{},"name":{},"text":{"75":{}},"component":{}}],["26m",{"_index":1700,"title":{},"name":{},"text":{"75":{}},"component":{}}],["28101",{"_index":1654,"title":{},"name":{},"text":{"75":{}},"component":{}}],["28101:28101",{"_index":1473,"title":{},"name":{},"text":{"70":{}},"component":{}}],["29",{"_index":1601,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2a",{"_index":1604,"title":{"75":{}},"name":{},"text":{},"component":{}}],["2g",{"_index":1123,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["2gb",{"_index":1124,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["2m",{"_index":1567,"title":{},"name":{},"text":{"74":{}},"component":{}}],["2x.1",{"_index":621,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["2x.2",{"_index":622,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["3",{"_index":630,"title":{"23":{},"115":{},"20-3":{},"68-4":{},"112-3":{}},"name":{},"text":{"11":{},"18":{},"20":{},"21":{},"22":{},"54":{},"103":{},"110":{},"112":{},"113":{},"114":{}},"component":{}}],["3.08",{"_index":1591,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["318.03",{"_index":1581,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["32178700288",{"_index":1649,"title":{},"name":{},"text":{"75":{}},"component":{}}],["32232121",{"_index":1516,"title":{},"name":{},"text":{"72":{}},"component":{}}],["324m",{"_index":1599,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["4",{"_index":830,"title":{},"name":{},"text":{"21":{},"75":{},"113":{}},"component":{}}],["40a6",{"_index":1512,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["42",{"_index":1530,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["420",{"_index":1519,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["44bc",{"_index":1427,"title":{},"name":{},"text":{"69":{}},"component":{}}],["4653",{"_index":1426,"title":{},"name":{},"text":{"69":{}},"component":{}}],["46f2",{"_index":1165,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["48305",{"_index":1299,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["4g",{"_index":1141,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["5",{"_index":831,"title":{},"name":{},"text":{"21":{},"74":{},"75":{},"113":{}},"component":{}}],["5005",{"_index":1669,"title":{},"name":{},"text":{"75":{}},"component":{}}],["5a6581bcd381%28university.schedule.structure%29%2f4128798754188010580",{"_index":1429,"title":{},"name":{},"text":{"69":{}},"component":{}}],["6",{"_index":832,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["6.53",{"_index":1590,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["69",{"_index":1536,"title":{},"name":{},"text":{"72":{}},"component":{}}],["7",{"_index":835,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["73",{"_index":1658,"title":{},"name":{},"text":{"75":{}},"component":{}}],["7s",{"_index":1665,"title":{},"name":{},"text":{"75":{}},"component":{}}],["8",{"_index":836,"title":{},"name":{},"text":{"21":{},"72":{},"113":{}},"component":{}}],["8090",{"_index":1397,"title":{},"name":{},"text":{"68":{}},"component":{}}],["85",{"_index":1664,"title":{},"name":{},"text":{"75":{}},"component":{}}],["86.71",{"_index":1588,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["8d4c",{"_index":1164,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca",{"_index":1167,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449",{"_index":1203,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048450",{"_index":1205,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048452",{"_index":1208,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048454",{"_index":1206,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048457",{"_index":1210,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048457/1648392019017048458",{"_index":1211,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460",{"_index":1213,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460/1648392019017048461",{"_index":1217,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460/1648392019017048466",{"_index":1215,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048463",{"_index":1218,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048463/1648392019017048464",{"_index":1220,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560",{"_index":1170,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188010563",{"_index":1171,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188010565",{"_index":1172,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188058355",{"_index":1175,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188058364",{"_index":1177,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010568",{"_index":1182,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010568/4128798754188010578",{"_index":1183,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010569",{"_index":1185,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570",{"_index":1187,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570/4128798754188010571",{"_index":1189,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570/4128798754188010573",{"_index":1190,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580",{"_index":1191,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580/4128798754188010583",{"_index":1192,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580/4128798754188010585",{"_index":1194,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010588",{"_index":1196,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010588/4128798754188010589",{"_index":1197,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188057192",{"_index":1198,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188057192/4128798754188057193",{"_index":1199,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188059567",{"_index":1201,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8s",{"_index":1672,"title":{},"name":{},"text":{"75":{}},"component":{}}],["91",{"_index":1566,"title":{},"name":{},"text":{"74":{}},"component":{}}],["94",{"_index":1699,"title":{},"name":{},"text":{"75":{}},"component":{}}],["95",{"_index":1600,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["96533389",{"_index":1163,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["9d7cd01febe2%2528university.schedule.sandbox%2529%252f4128798754188058349",{"_index":1522,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f1305729863392535677",{"_index":1531,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058347",{"_index":1514,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058349",{"_index":1517,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058353",{"_index":1526,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188060854",{"_index":1533,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2(unused)/4128798754188058347",{"_index":1545,"title":{},"name":{},"text":{"73":{}},"component":{}}],["9d7cd01febe2(unused)/4128798754188058349",{"_index":1547,"title":{},"name":{},"text":{"73":{}},"component":{}}],["9dfe",{"_index":1428,"title":{},"name":{},"text":{"69":{}},"component":{}}],["_",{"_index":1683,"title":{},"name":{},"text":{"75":{}},"component":{}}],["__",{"_index":1678,"title":{},"name":{},"text":{"75":{}},"component":{}}],["___",{"_index":1681,"title":{},"name":{},"text":{"75":{}},"component":{}}],["____",{"_index":1679,"title":{},"name":{},"text":{"75":{}},"component":{}}],["_____",{"_index":1680,"title":{},"name":{},"text":{"75":{}},"component":{}}],["______",{"_index":1682,"title":{},"name":{},"text":{"75":{}},"component":{}}],["_c_typedimpl_",{"_index":1265,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["_c_untypedimpl_",{"_index":1262,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["_n_typedimpl_",{"_index":1260,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["a31d",{"_index":1513,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["abov",{"_index":182,"title":{},"name":{},"text":{"2":{},"6":{},"31":{},"48":{},"81":{},"94":{},"98":{},"123":{}},"component":{}}],["abstract",{"_index":581,"title":{},"name":{},"text":{"11":{},"35":{},"54":{},"67":{},"71":{},"72":{},"73":{},"75":{},"84":{},"103":{},"127":{}},"component":{}}],["accept",{"_index":1506,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["access",{"_index":234,"title":{"34":{},"83":{},"126":{}},"name":{},"text":{"2":{},"11":{},"15":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"30":{},"31":{},"38":{},"43":{},"48":{},"54":{},"58":{},"59":{},"61":{},"64":{},"66":{},"67":{},"68":{},"72":{},"74":{},"75":{},"77":{},"80":{},"81":{},"89":{},"94":{},"103":{},"107":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"122":{},"123":{},"130":{},"135":{}},"component":{}}],["accordingli",{"_index":1255,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["account",{"_index":237,"title":{},"name":{},"text":{"2":{},"16":{},"24":{},"43":{},"48":{},"59":{},"61":{},"77":{},"89":{},"94":{},"108":{},"116":{},"135":{}},"component":{}}],["achiev",{"_index":761,"title":{},"name":{},"text":{"18":{},"36":{},"39":{},"61":{},"85":{},"87":{},"110":{},"128":{},"131":{}},"component":{}}],["acronym",{"_index":147,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["action",{"_index":475,"title":{},"name":{},"text":{"10":{},"21":{},"33":{},"36":{},"54":{},"85":{},"102":{},"113":{},"125":{},"128":{}},"component":{}}],["ad",{"_index":827,"title":{},"name":{},"text":{"21":{},"40":{},"67":{},"113":{},"132":{}},"component":{}}],["adapt",{"_index":707,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["add",{"_index":141,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"12":{},"21":{},"28":{},"31":{},"32":{},"33":{},"36":{},"39":{},"45":{},"47":{},"48":{},"54":{},"55":{},"71":{},"81":{},"82":{},"85":{},"87":{},"91":{},"93":{},"94":{},"103":{},"104":{},"113":{},"120":{},"123":{},"124":{},"125":{},"128":{},"131":{},"137":{}},"component":{}}],["addit",{"_index":279,"title":{},"name":{},"text":{"2":{},"11":{},"31":{},"36":{},"39":{},"48":{},"54":{},"69":{},"71":{},"81":{},"85":{},"87":{},"94":{},"103":{},"123":{},"128":{},"131":{}},"component":{}}],["addition",{"_index":631,"title":{},"name":{},"text":{"11":{},"38":{},"54":{},"67":{},"103":{},"130":{}},"component":{}}],["address",{"_index":244,"title":{},"name":{},"text":{"2":{},"21":{},"48":{},"75":{},"94":{},"113":{}},"component":{}}],["adjust",{"_index":885,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["admittedli",{"_index":1487,"title":{},"name":{},"text":{"71":{}},"component":{}}],["advanc",{"_index":1147,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["against",{"_index":1000,"title":{},"name":{"29":{},"121":{}},"text":{},"component":{}}],["aggreg",{"_index":133,"title":{},"name":{},"text":{"1":{},"11":{},"44":{},"47":{},"54":{},"90":{},"93":{},"103":{},"136":{}},"component":{}}],["agnost",{"_index":580,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["aim",{"_index":364,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"11":{},"54":{},"98":{},"101":{},"102":{},"103":{}},"component":{}}],["aka",{"_index":772,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["alia",{"_index":1416,"title":{},"name":{},"text":{"69":{}},"component":{}}],["allow",{"_index":228,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"11":{},"16":{},"24":{},"26":{},"28":{},"33":{},"39":{},"43":{},"48":{},"49":{},"54":{},"61":{},"67":{},"77":{},"87":{},"94":{},"95":{},"98":{},"103":{},"108":{},"116":{},"118":{},"120":{},"125":{},"131":{},"135":{}},"component":{}}],["alongsid",{"_index":1335,"title":{},"name":{},"text":{"61":{}},"component":{}}],["alreadi",{"_index":54,"title":{},"name":{},"text":{"1":{},"11":{},"28":{},"31":{},"47":{},"54":{},"81":{},"93":{},"103":{},"120":{},"123":{}},"component":{}}],["altern",{"_index":266,"title":{},"name":{},"text":{"2":{},"9":{},"18":{},"31":{},"34":{},"39":{},"48":{},"68":{},"70":{},"72":{},"73":{},"81":{},"83":{},"87":{},"94":{},"101":{},"110":{},"123":{},"126":{},"131":{}},"component":{}}],["alway",{"_index":400,"title":{},"name":{},"text":{"6":{},"9":{},"98":{},"101":{}},"component":{}}],["amount",{"_index":1096,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["analysi",{"_index":170,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["angular",{"_index":799,"title":{"68":{},"68-2":{},"68-4":{}},"name":{},"text":{"20":{},"22":{},"23":{},"61":{},"63":{},"64":{},"71":{},"74":{},"75":{},"112":{},"114":{},"115":{}},"component":{}}],["angular.io",{"_index":1569,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["angular:build",{"_index":848,"title":{},"name":{},"text":{"22":{},"23":{},"68":{},"114":{},"115":{}},"component":{}}],["angular:npmrun",{"_index":1398,"title":{},"name":{},"text":{"68":{},"74":{},"75":{}},"component":{}}],["annot",{"_index":521,"title":{},"name":{},"text":{"10":{}},"component":{}}],["anoth",{"_index":390,"title":{},"name":{},"text":{"6":{},"20":{},"22":{},"26":{},"36":{},"85":{},"98":{},"112":{},"114":{},"118":{},"128":{}},"component":{}}],["answer",{"_index":85,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["ant",{"_index":429,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["antora",{"_index":128,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["anyth",{"_index":491,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["apach",{"_index":217,"title":{},"name":{},"text":{"2":{},"10":{},"48":{},"54":{},"94":{},"102":{}},"component":{}}],["apart",{"_index":395,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["api",{"_index":122,"title":{"29":{},"31":{},"33":{},"36":{},"37":{},"38":{},"69":{},"72":{},"73":{},"81":{},"85":{},"86":{},"121":{},"123":{},"125":{},"128":{},"129":{},"130":{},"11-3":{},"11-4":{},"28-3":{},"39-4":{},"54-6":{},"54-7":{},"67-3":{},"69-2":{},"87-4":{},"103-3":{},"103-4":{},"120-3":{},"131-4":{}},"name":{"29":{},"31":{},"36":{},"37":{},"38":{},"41":{},"69":{},"72":{},"73":{},"81":{},"85":{},"86":{},"121":{},"123":{},"128":{},"129":{},"130":{},"133":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"13":{},"15":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"48":{},"54":{},"56":{},"58":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"93":{},"94":{},"98":{},"103":{},"105":{},"107":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"component":{}}],["api.modelix.org",{"_index":639,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["app",{"_index":383,"title":{"68-4":{}},"name":{},"text":{"6":{},"63":{},"64":{},"68":{},"71":{},"98":{}},"component":{}}],["append",{"_index":1627,"title":{},"name":{},"text":{"75":{}},"component":{}}],["appli",{"_index":21,"title":{"31":{},"81":{},"123":{}},"name":{},"text":{"1":{},"2":{},"4":{},"15":{},"18":{},"31":{},"36":{},"39":{},"47":{},"48":{},"50":{},"58":{},"61":{},"81":{},"85":{},"87":{},"93":{},"94":{},"96":{},"107":{},"110":{},"123":{},"128":{},"131":{}},"component":{}}],["applic",{"_index":368,"title":{"68":{},"67-6":{},"67-7":{}},"name":{},"text":{"6":{},"11":{},"20":{},"22":{},"23":{},"28":{},"41":{},"54":{},"64":{},"68":{},"70":{},"74":{},"75":{},"98":{},"103":{},"112":{},"114":{},"115":{},"120":{},"133":{}},"component":{}}],["application.conf",{"_index":1500,"title":{},"name":{},"text":{"72":{}},"component":{}}],["application/json",{"_index":1507,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["approach",{"_index":35,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"11":{},"47":{},"48":{},"50":{},"54":{},"71":{},"93":{},"94":{},"96":{},"103":{}},"component":{}}],["architectur",{"_index":179,"title":{"2":{},"48":{},"67":{},"94":{},"2-1":{},"48-1":{},"66-2":{},"67-1":{},"94-1":{}},"name":{"2":{},"48":{},"67":{},"94":{}},"text":{"15":{},"18":{},"58":{},"61":{},"66":{},"67":{},"74":{},"107":{},"110":{}},"component":{}}],["archiv",{"_index":645,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["area",{"_index":546,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["arg",{"_index":1087,"title":{},"name":{},"text":{"32":{},"70":{},"75":{},"82":{},"124":{}},"component":{}}],["arguement",{"_index":1086,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["arraylist",{"_index":1231,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["artifact",{"_index":479,"title":{"16-3":{},"24-6":{},"43-6":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"10":{},"11":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"103":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["ask",{"_index":404,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{},"component":{}}],["aspect",{"_index":389,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"18":{},"35":{},"36":{},"54":{},"58":{},"61":{},"84":{},"85":{},"98":{},"103":{},"107":{},"110":{},"127":{},"128":{}},"component":{}}],["assembl",{"_index":952,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["assign",{"_index":1219,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["assum",{"_index":385,"title":{},"name":{},"text":{"6":{},"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"74":{},"75":{},"77":{},"81":{},"89":{},"98":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["assumpt",{"_index":1316,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["attach",{"_index":1639,"title":{},"name":{},"text":{"75":{}},"component":{}}],["attempt",{"_index":878,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["attribut",{"_index":1222,"title":{"36-3":{},"85-3":{},"128-3":{}},"name":{},"text":{"36":{},"69":{},"85":{},"128":{}},"component":{}}],["authent",{"_index":440,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["author",{"_index":174,"title":{},"name":{},"text":{"1":{},"11":{},"13":{},"47":{},"54":{},"56":{},"93":{},"103":{},"105":{}},"component":{}}],["autom",{"_index":560,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["automat",{"_index":446,"title":{},"name":{},"text":{"9":{},"20":{},"22":{},"23":{},"64":{},"72":{},"74":{},"75":{},"101":{},"112":{},"114":{},"115":{}},"component":{}}],["autoreload",{"_index":1561,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["autumn",{"_index":507,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["avail",{"_index":611,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"11":{},"16":{},"20":{},"21":{},"24":{},"26":{},"33":{},"40":{},"43":{},"54":{},"59":{},"61":{},"67":{},"68":{},"77":{},"89":{},"103":{},"108":{},"112":{},"113":{},"116":{},"118":{},"125":{},"132":{},"135":{}},"component":{}}],["avoid",{"_index":1606,"title":{},"name":{},"text":{"75":{}},"component":{}}],["b",{"_index":649,"title":{},"name":{"75":{}},"text":{"11":{},"54":{},"103":{}},"component":{}}],["b150",{"_index":1166,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["backend",{"_index":388,"title":{"23":{},"115":{}},"name":{},"text":{"6":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"54":{},"66":{},"67":{},"74":{},"75":{},"98":{},"103":{},"110":{},"112":{},"113":{},"114":{},"115":{}},"component":{}}],["backend/build/depend",{"_index":1555,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["backend:build",{"_index":821,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["bad",{"_index":263,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["barrier",{"_index":636,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["base",{"_index":245,"title":{"68":{}},"name":{},"text":{"2":{},"6":{},"10":{},"11":{},"15":{},"18":{},"20":{},"33":{},"39":{},"48":{},"54":{},"58":{},"61":{},"67":{},"71":{},"87":{},"94":{},"98":{},"102":{},"103":{},"107":{},"110":{},"112":{},"125":{},"131":{}},"component":{}}],["baseconcept",{"_index":1414,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.children",{"_index":1451,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.properti",{"_index":1430,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.refer",{"_index":1453,"title":{},"name":{},"text":{"69":{}},"component":{}}],["basenameconvers",{"_index":1253,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["basi",{"_index":583,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"38":{},"54":{},"58":{},"61":{},"103":{},"107":{},"110":{},"130":{}},"component":{}}],["basic",{"_index":349,"title":{"6-3":{},"98-3":{}},"name":{},"text":{"6":{},"28":{},"98":{},"120":{}},"component":{}}],["be",{"_index":485,"title":{},"name":{},"text":{"10":{},"11":{},"36":{},"54":{},"64":{},"85":{},"102":{},"103":{},"128":{}},"component":{}}],["becom",{"_index":299,"title":{},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["befor",{"_index":422,"title":{},"name":{},"text":{"9":{},"11":{},"26":{},"72":{},"73":{},"101":{},"103":{},"118":{}},"component":{}}],["begin",{"_index":768,"title":{},"name":{},"text":{"18":{},"26":{},"28":{},"110":{},"118":{},"120":{}},"component":{}}],["behaviour",{"_index":1486,"title":{},"name":{},"text":{"71":{}},"component":{}}],["behind",{"_index":894,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["below",{"_index":550,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"28":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"103":{},"108":{},"116":{},"120":{},"135":{}},"component":{}}],["benefit",{"_index":602,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["between",{"_index":269,"title":{"33":{},"125":{}},"name":{},"text":{"2":{},"10":{},"11":{},"20":{},"21":{},"22":{},"23":{},"33":{},"39":{},"44":{},"45":{},"48":{},"54":{},"87":{},"90":{},"91":{},"94":{},"102":{},"103":{},"112":{},"113":{},"114":{},"115":{},"125":{},"131":{},"136":{},"137":{}},"component":{}}],["big",{"_index":265,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["bind",{"_index":1308,"title":{"41":{},"133":{}},"name":{},"text":{},"component":{}}],["birthday",{"_index":1403,"title":{},"name":{},"text":{"69":{}},"component":{}}],["block",{"_index":365,"title":{},"name":{},"text":{"6":{},"28":{},"33":{},"36":{},"45":{},"74":{},"75":{},"85":{},"91":{},"98":{},"120":{},"125":{},"128":{},"137":{}},"component":{}}],["blog",{"_index":578,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["bodi",{"_index":966,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["boolean",{"_index":1115,"title":{},"name":{},"text":{"33":{},"35":{},"69":{},"84":{},"127":{}},"component":{}}],["boolean.parseboolean(propertyvalu",{"_index":1447,"title":{},"name":{},"text":{"69":{}},"component":{}}],["boolean.tostring(valu",{"_index":1450,"title":{},"name":{},"text":{"69":{}},"component":{}}],["born",{"_index":1209,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["both",{"_index":209,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"64":{},"67":{},"87":{},"94":{},"131":{}},"component":{}}],["bottom",{"_index":69,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["bound",{"_index":591,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["branch",{"_index":417,"title":{"9-10":{},"101-10":{}},"name":{},"text":{"9":{},"11":{},"29":{},"33":{},"101":{},"103":{},"121":{},"125":{}},"component":{}}],["branch.getrootnod",{"_index":1005,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["branch.runwrit",{"_index":1004,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["branchnam",{"_index":1135,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["bridg",{"_index":563,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["bring",{"_index":95,"title":{},"name":{},"text":{"1":{},"6":{},"11":{},"15":{},"18":{},"39":{},"47":{},"58":{},"61":{},"87":{},"93":{},"98":{},"103":{},"107":{},"110":{},"131":{}},"component":{}}],["browser",{"_index":27,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"34":{},"47":{},"48":{},"50":{},"67":{},"68":{},"74":{},"75":{},"83":{},"93":{},"94":{},"96":{},"98":{},"126":{}},"component":{}}],["bug",{"_index":138,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["build",{"_index":331,"title":{"16":{},"59":{},"108":{},"16-1":{},"22-2":{},"23-2":{},"24-3":{},"24-4":{},"43-3":{},"43-4":{},"59-1":{},"61-3":{},"61-4":{},"68-1":{},"68-2":{},"72-1":{},"73-1":{},"77-3":{},"77-4":{},"89-3":{},"89-4":{},"108-1":{},"114-2":{},"115-2":{},"116-3":{},"116-4":{},"135-3":{},"135-4":{}},"name":{"16":{},"59":{},"108":{}},"text":{"3":{},"6":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"20":{},"22":{},"23":{},"24":{},"28":{},"30":{},"31":{},"43":{},"45":{},"49":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"89":{},"91":{},"95":{},"98":{},"102":{},"103":{},"105":{},"107":{},"108":{},"110":{},"112":{},"114":{},"115":{},"116":{},"120":{},"122":{},"123":{},"135":{},"137":{}},"component":{}}],["build.gradle.kt",{"_index":1035,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["builddir.resolve(\"mp",{"_index":1702,"title":{},"name":{},"text":{"81":{}},"component":{}}],["buildfil",{"_index":1146,"title":{},"name":{},"text":{"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"83":{},"84":{},"85":{},"86":{},"87":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{}},"component":{}}],["buildhtmlqueri",{"_index":985,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["buildlocalmap",{"_index":971,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["built",{"_index":127,"title":{},"name":{},"text":{"1":{},"11":{},"44":{},"47":{},"54":{},"74":{},"75":{},"90":{},"93":{},"103":{},"136":{}},"component":{}}],["bulk",{"_index":695,"title":{},"name":{"33":{},"125":{}},"text":{"13":{},"33":{},"66":{},"74":{},"105":{},"125":{}},"component":{}}],["bulk:run",{"_index":1556,"title":{},"name":{},"text":{"74":{}},"component":{}}],["bundl",{"_index":624,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"75":{},"103":{}},"component":{}}],["busi",{"_index":167,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["button",{"_index":68,"title":{},"name":{},"text":{"1":{},"9":{},"47":{},"93":{},"101":{}},"component":{}}],["byte",{"_index":1648,"title":{},"name":{},"text":{"75":{}},"component":{}}],["c",{"_index":1551,"title":{},"name":{},"text":{"73":{}},"component":{}}],["c_",{"_index":1011,"title":{},"name":{},"text":{"29":{},"36":{},"85":{},"121":{},"128":{}},"component":{}}],["c_otherconcept).appli",{"_index":1010,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["c_someconcept.untyped()).typ",{"_index":1008,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["call",{"_index":396,"title":{},"name":{},"text":{"6":{},"16":{},"23":{},"24":{},"43":{},"59":{},"61":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"89":{},"98":{},"108":{},"115":{},"116":{},"135":{}},"component":{}}],["capabl",{"_index":1363,"title":{},"name":{},"text":{"64":{}},"component":{}}],["capac",{"_index":1401,"title":{},"name":{},"text":{"69":{}},"component":{}}],["care",{"_index":240,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["carri",{"_index":509,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["case",{"_index":258,"title":{"21":{},"22":{},"23":{},"64":{},"65":{},"66":{},"74":{},"75":{},"113":{},"114":{},"115":{},"20-1":{},"20-2":{},"20-3":{},"66-2":{},"112-1":{},"112-2":{},"112-3":{}},"name":{},"text":{"2":{},"6":{},"11":{},"15":{},"18":{},"20":{},"21":{},"22":{},"23":{},"28":{},"36":{},"38":{},"39":{},"40":{},"48":{},"54":{},"58":{},"61":{},"64":{},"66":{},"67":{},"68":{},"74":{},"75":{},"85":{},"87":{},"94":{},"98":{},"103":{},"107":{},"110":{},"112":{},"113":{},"114":{},"115":{},"120":{},"128":{},"130":{},"131":{},"132":{}},"component":{}}],["catalog",{"_index":544,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["categori",{"_index":104,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["caus",{"_index":1467,"title":{},"name":{},"text":{"69":{}},"component":{}}],["central",{"_index":135,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"64":{},"93":{},"103":{}},"component":{}}],["centric",{"_index":650,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["ch.qos.logback.classic.encoder.patternlayoutencod",{"_index":1632,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.configurationact",{"_index":1643,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.loggeract",{"_index":1635,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.rootloggeract",{"_index":1641,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.joranconfigurator@7ff95560",{"_index":1645,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.loggercontext[default",{"_index":1610,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.consoleappend",{"_index":1628,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.appenderact",{"_index":1625,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.appenderrefact",{"_index":1638,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.nestedcomplexpropertyia",{"_index":1631,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.spi.configurationwatchlist@f4168b8",{"_index":1623,"title":{},"name":{},"text":{"75":{}},"component":{}}],["chain",{"_index":973,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["chang",{"_index":255,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"20":{},"21":{},"22":{},"23":{},"39":{},"48":{},"54":{},"67":{},"74":{},"75":{},"87":{},"94":{},"101":{},"103":{},"112":{},"113":{},"114":{},"115":{},"131":{}},"component":{}}],["changequeri",{"_index":1019,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["channel",{"_index":156,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["check",{"_index":372,"title":{"40-1":{},"132-1":{}},"name":{},"text":{"6":{},"11":{},"30":{},"31":{},"32":{},"40":{},"45":{},"54":{},"68":{},"69":{},"80":{},"81":{},"82":{},"91":{},"98":{},"103":{},"122":{},"123":{},"124":{},"132":{},"137":{}},"component":{}}],["child",{"_index":1409,"title":{},"name":{},"text":{"69":{}},"component":{}}],["children",{"_index":1174,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["choic",{"_index":1338,"title":{},"name":{},"text":{"61":{}},"component":{}}],["choos",{"_index":91,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["chosen",{"_index":1376,"title":{},"name":{},"text":{"67":{}},"component":{}}],["chunk",{"_index":1573,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["ci/gradl",{"_index":1465,"title":{},"name":{},"text":{"69":{}},"component":{}}],["cl",{"_index":927,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["clarifi",{"_index":342,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["class",{"_index":589,"title":{},"name":{},"text":{"11":{},"23":{},"28":{},"29":{},"31":{},"35":{},"38":{},"54":{},"69":{},"81":{},"84":{},"103":{},"115":{},"120":{},"121":{},"123":{},"127":{},"130":{}},"component":{}}],["classconcept",{"_index":928,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["classdiagram",{"_index":1404,"title":{},"name":{},"text":{"69":{}},"component":{}}],["classnam",{"_index":935,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["clearli",{"_index":577,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"103":{}},"component":{}}],["click",{"_index":825,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["client",{"_index":293,"title":{"29":{},"30":{},"34":{},"80":{},"83":{},"121":{},"122":{},"126":{}},"name":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"text":{"2":{},"6":{},"13":{},"15":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"30":{},"34":{},"39":{},"45":{},"48":{},"56":{},"58":{},"64":{},"66":{},"67":{},"74":{},"77":{},"80":{},"83":{},"87":{},"91":{},"94":{},"98":{},"105":{},"107":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"122":{},"126":{},"131":{},"137":{}},"component":{}}],["client.changequery(buildmodelqueri",{"_index":1020,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client.getrootnode()!!.queri",{"_index":919,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["client.queri",{"_index":914,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["client.runread",{"_index":1029,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client.waitforrootnod",{"_index":1028,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client:2.4.0",{"_index":1331,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["clipboard",{"_index":465,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["clone",{"_index":767,"title":{},"name":{},"text":{"18":{},"110":{}},"component":{}}],["cloud",{"_index":23,"title":{"39":{},"87":{},"131":{},"11-8":{},"54-11":{},"103-8":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"11":{},"21":{},"39":{},"47":{},"48":{},"50":{},"54":{},"63":{},"68":{},"75":{},"87":{},"93":{},"94":{},"96":{},"98":{},"103":{},"113":{},"131":{}},"component":{}}],["cls.name",{"_index":936,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["cls.queri",{"_index":930,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["cluster",{"_index":216,"title":{},"name":{},"text":{"2":{},"6":{},"48":{},"94":{},"98":{}},"component":{}}],["cn_",{"_index":1267,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["co",{"_index":676,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["code",{"_index":196,"title":{"29":{},"121":{}},"name":{},"text":{"2":{},"10":{},"11":{},"22":{},"29":{},"31":{},"48":{},"54":{},"61":{},"69":{},"81":{},"94":{},"103":{},"114":{},"121":{},"123":{}},"component":{}}],["collabor",{"_index":169,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"1":{},"2":{},"11":{},"39":{},"47":{},"48":{},"54":{},"66":{},"87":{},"93":{},"94":{},"103":{},"131":{}},"component":{}}],["collect",{"_index":321,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["combin",{"_index":354,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"28":{},"40":{},"54":{},"58":{},"98":{},"103":{},"107":{},"120":{},"132":{}},"component":{}}],["come",{"_index":402,"title":{},"name":{},"text":{"6":{},"15":{},"18":{},"36":{},"58":{},"61":{},"85":{},"98":{},"107":{},"110":{},"128":{}},"component":{}}],["command",{"_index":818,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"35":{},"70":{},"74":{},"75":{},"84":{},"113":{},"114":{},"115":{},"127":{}},"component":{}}],["commit",{"_index":415,"title":{"9-8":{},"101-8":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["common",{"_index":249,"title":{},"name":{},"text":{"2":{},"33":{},"48":{},"94":{},"125":{}},"component":{}}],["commun",{"_index":511,"title":{"73-3":{}},"name":{},"text":{"10":{},"11":{},"20":{},"22":{},"23":{},"54":{},"71":{},"102":{},"103":{},"112":{},"114":{},"115":{}},"component":{}}],["compat",{"_index":500,"title":{},"name":{},"text":{"10":{},"11":{},"26":{},"44":{},"54":{},"90":{},"102":{},"103":{},"118":{},"136":{}},"component":{}}],["compil",{"_index":543,"title":{},"name":{},"text":{"11":{},"36":{},"54":{},"69":{},"74":{},"75":{},"103":{},"128":{}},"component":{}}],["complet",{"_index":115,"title":{},"name":{},"text":{"1":{},"11":{},"15":{},"17":{},"18":{},"47":{},"54":{},"58":{},"60":{},"61":{},"64":{},"74":{},"75":{},"93":{},"103":{},"107":{},"109":{},"110":{}},"component":{}}],["complex",{"_index":909,"title":{"28-5":{},"120-5":{}},"name":{},"text":{"28":{},"74":{},"120":{}},"component":{}}],["complic",{"_index":1607,"title":{},"name":{},"text":{"75":{}},"component":{}}],["compon",{"_index":47,"title":{"13":{},"15":{},"16":{},"56":{},"58":{},"59":{},"67":{},"105":{},"107":{},"108":{},"6-2":{},"6-3":{},"11-2":{},"15-1":{},"24-3":{},"43-3":{},"54-5":{},"58-1":{},"61-3":{},"77-3":{},"89-3":{},"98-2":{},"98-3":{},"103-2":{},"107-1":{},"116-3":{},"135-3":{}},"name":{"13":{},"15":{},"16":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"56":{},"58":{},"59":{},"83":{},"84":{},"85":{},"86":{},"87":{},"105":{},"107":{},"108":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"20":{},"22":{},"23":{},"24":{},"37":{},"38":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"54":{},"58":{},"59":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"70":{},"71":{},"74":{},"75":{},"77":{},"86":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"108":{},"110":{},"112":{},"114":{},"115":{},"116":{},"129":{},"130":{},"131":{},"135":{},"136":{},"137":{}},"component":{}}],["components/tech",{"_index":1343,"title":{},"name":{},"text":{"63":{}},"component":{}}],["compos",{"_index":712,"title":{},"name":{},"text":{"15":{},"18":{},"21":{},"22":{},"23":{},"41":{},"58":{},"107":{},"110":{},"113":{},"114":{},"115":{},"133":{}},"component":{}}],["comput",{"_index":259,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["concepdata",{"_index":1159,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["concept",{"_index":782,"title":{},"name":{},"text":{"19":{},"31":{},"33":{},"35":{},"36":{},"69":{},"81":{},"84":{},"85":{},"111":{},"123":{},"125":{},"127":{},"128":{}},"component":{}}],["conceptpropertiesinterfacenam",{"_index":1239,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["concepttypealia",{"_index":1266,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["conceptu",{"_index":488,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["concurr",{"_index":285,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["configur",{"_index":227,"title":{"33-2":{},"33-3":{},"33-4":{},"33-5":{},"33-6":{},"36-2":{},"36-3":{},"36-4":{},"36-5":{},"85-2":{},"85-3":{},"85-4":{},"85-5":{},"125-2":{},"125-3":{},"125-4":{},"125-5":{},"125-6":{},"128-2":{},"128-3":{},"128-4":{},"128-5":{}},"name":{},"text":{"2":{},"9":{},"16":{},"22":{},"23":{},"24":{},"32":{},"36":{},"43":{},"48":{},"59":{},"61":{},"75":{},"77":{},"82":{},"85":{},"89":{},"94":{},"101":{},"108":{},"114":{},"115":{},"116":{},"124":{},"128":{},"135":{}},"component":{}}],["configurations.cr",{"_index":1052,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["conflict",{"_index":284,"title":{},"name":{},"text":{"2":{},"34":{},"39":{},"48":{},"83":{},"87":{},"94":{},"126":{},"131":{}},"component":{}}],["conform",{"_index":1388,"title":{},"name":{},"text":{"67":{},"68":{},"72":{},"73":{}},"component":{}}],["confus",{"_index":572,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["connect",{"_index":192,"title":{"21-6":{},"113-6":{}},"name":{},"text":{"2":{},"6":{},"20":{},"22":{},"23":{},"30":{},"34":{},"39":{},"41":{},"48":{},"63":{},"67":{},"75":{},"80":{},"83":{},"87":{},"94":{},"98":{},"112":{},"114":{},"115":{},"122":{},"126":{},"131":{},"133":{}},"component":{}}],["consequ",{"_index":51,"title":{},"name":{},"text":{"1":{},"11":{},"16":{},"24":{},"43":{},"47":{},"54":{},"59":{},"61":{},"67":{},"71":{},"77":{},"89":{},"93":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["consid",{"_index":681,"title":{},"name":{},"text":{"12":{},"55":{},"104":{}},"component":{}}],["consist",{"_index":184,"title":{},"name":{},"text":{"2":{},"6":{},"23":{},"48":{},"94":{},"98":{},"115":{}},"component":{}}],["consol",{"_index":729,"title":{"16-1":{},"24-4":{},"43-4":{},"59-1":{},"61-4":{},"77-4":{},"89-4":{},"108-1":{},"116-4":{},"135-4":{}},"name":{},"text":{"72":{},"75":{}},"component":{}}],["construct",{"_index":367,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["consum",{"_index":1279,"title":{},"name":{},"text":{"37":{},"63":{},"64":{},"68":{},"71":{},"72":{},"73":{},"86":{},"129":{}},"component":{}}],["consumpt",{"_index":1150,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["contact",{"_index":6,"title":{"1-6":{},"47-6":{},"93-6":{}},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["contain",{"_index":130,"title":{},"name":{},"text":{"1":{},"15":{},"18":{},"19":{},"24":{},"29":{},"36":{},"43":{},"45":{},"47":{},"58":{},"61":{},"64":{},"69":{},"77":{},"85":{},"89":{},"91":{},"93":{},"107":{},"110":{},"111":{},"116":{},"121":{},"128":{},"135":{},"137":{}},"component":{}}],["content",{"_index":303,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"22":{},"23":{},"38":{},"39":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"74":{},"75":{},"87":{},"94":{},"101":{},"103":{},"114":{},"115":{},"130":{},"131":{}},"component":{}}],["continu",{"_index":1117,"title":{},"name":{},"text":{"33":{}},"component":{}}],["contract",{"_index":1485,"title":{},"name":{},"text":{"71":{}},"component":{}}],["contribut",{"_index":418,"title":{"9":{},"101":{}},"name":{"9":{},"101":{}},"text":{"9":{},"16":{},"24":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"135":{}},"component":{}}],["control",{"_index":807,"title":{},"name":{},"text":{"20":{},"23":{},"112":{},"115":{}},"component":{}}],["conveni",{"_index":932,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["convent",{"_index":414,"title":{"9-8":{},"9-9":{},"101-8":{},"101-9":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["converg",{"_index":292,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["convey",{"_index":575,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["copi",{"_index":463,"title":{},"name":{},"text":{"9":{},"16":{},"21":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"101":{},"108":{},"113":{},"116":{},"135":{}},"component":{}}],["core",{"_index":618,"title":{"15-3":{},"58-3":{},"107-3":{}},"name":{},"text":{"11":{},"13":{},"15":{},"24":{},"54":{},"58":{},"77":{},"103":{},"105":{},"107":{},"116":{}},"component":{}}],["coroutin",{"_index":896,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["correct",{"_index":233,"title":{},"name":{},"text":{"2":{},"31":{},"39":{},"48":{},"68":{},"81":{},"87":{},"94":{},"123":{},"131":{}},"component":{}}],["correspond",{"_index":145,"title":{},"name":{},"text":{"1":{},"9":{},"10":{},"11":{},"12":{},"33":{},"35":{},"36":{},"37":{},"47":{},"54":{},"55":{},"68":{},"84":{},"86":{},"93":{},"101":{},"102":{},"103":{},"104":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["coupl",{"_index":721,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["cours",{"_index":392,"title":{"62":{},"71":{}},"name":{"62":{}},"text":{"6":{},"21":{},"35":{},"61":{},"66":{},"67":{},"68":{},"69":{},"71":{},"73":{},"84":{},"98":{},"113":{},"127":{}},"component":{}}],["courses.modelserver.dump",{"_index":1470,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["cover",{"_index":1336,"title":{},"name":{},"text":{"61":{},"66":{}},"component":{}}],["cp",{"_index":1479,"title":{},"name":{},"text":{"70":{}},"component":{}}],["craft",{"_index":1345,"title":{},"name":{},"text":{"63":{}},"component":{}}],["creat",{"_index":25,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"9":{},"12":{},"19":{},"20":{},"28":{},"30":{},"41":{},"47":{},"50":{},"55":{},"69":{},"80":{},"93":{},"96":{},"98":{},"101":{},"104":{},"111":{},"112":{},"120":{},"122":{},"133":{}},"component":{}}],["creation",{"_index":1370,"title":{"65":{}},"name":{},"text":{"66":{}},"component":{}}],["credenti",{"_index":743,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["cumbersom",{"_index":1399,"title":{},"name":{},"text":{"69":{}},"component":{}}],["curat",{"_index":1312,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["curl",{"_index":1501,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["current",{"_index":44,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"1":{},"2":{},"10":{},"11":{},"37":{},"39":{},"40":{},"47":{},"48":{},"54":{},"61":{},"64":{},"71":{},"75":{},"86":{},"87":{},"93":{},"94":{},"102":{},"103":{},"129":{},"131":{},"132":{}},"component":{}}],["custom",{"_index":391,"title":{},"name":{},"text":{"6":{},"20":{},"22":{},"23":{},"28":{},"73":{},"98":{},"112":{},"114":{},"115":{},"120":{}},"component":{}}],["cycl",{"_index":467,"title":{"10-2":{},"54-2":{},"102-2":{}},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["d",{"_index":1474,"title":{},"name":{},"text":{"70":{}},"component":{}}],["dashboard",{"_index":862,"title":{"64":{},"68":{},"67-6":{},"68-2":{}},"name":{"68":{}},"text":{"23":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"115":{}},"component":{}}],["data",{"_index":201,"title":{},"name":{},"text":{"2":{},"11":{},"20":{},"21":{},"22":{},"23":{},"26":{},"28":{},"30":{},"33":{},"35":{},"38":{},"39":{},"40":{},"48":{},"54":{},"63":{},"67":{},"72":{},"73":{},"80":{},"84":{},"87":{},"94":{},"103":{},"112":{},"113":{},"114":{},"115":{},"118":{},"120":{},"122":{},"125":{},"127":{},"130":{},"131":{},"132":{}},"component":{}}],["databas",{"_index":984,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["database.properti",{"_index":1088,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["datastructur",{"_index":688,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["date",{"_index":792,"title":{},"name":{},"text":{"19":{},"35":{},"84":{},"111":{},"127":{}},"component":{}}],["dateandtim",{"_index":1188,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["day",{"_index":1362,"title":{},"name":{},"text":{"64":{}},"component":{}}],["db",{"_index":939,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["db.products.buildlocalmap",{"_index":974,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["db.products.map",{"_index":940,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["debug",{"_index":1637,"title":{},"name":{},"text":{"75":{}},"component":{}}],["debugg",{"_index":1131,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["decemb",{"_index":539,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["declar",{"_index":1251,"title":{},"name":{},"text":{"36":{},"45":{},"74":{},"75":{},"85":{},"91":{},"128":{},"137":{}},"component":{}}],["decoupl",{"_index":1383,"title":{},"name":{},"text":{"67":{}},"component":{}}],["dedic",{"_index":121,"title":{},"name":{},"text":{"1":{},"11":{},"93":{},"103":{}},"component":{}}],["default",{"_index":247,"title":{"36-6":{},"85-6":{},"128-6":{}},"name":{},"text":{"2":{},"30":{},"32":{},"33":{},"36":{},"48":{},"68":{},"75":{},"80":{},"82":{},"85":{},"94":{},"122":{},"124":{},"125":{},"128":{}},"component":{}}],["defaultdispatch",{"_index":1494,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["defin",{"_index":723,"title":{},"name":{},"text":{"15":{},"18":{},"28":{},"33":{},"58":{},"61":{},"63":{},"64":{},"67":{},"68":{},"72":{},"107":{},"110":{},"120":{},"125":{}},"component":{}}],["definit",{"_index":248,"title":{},"name":{},"text":{"2":{},"6":{},"33":{},"48":{},"63":{},"67":{},"69":{},"94":{},"98":{},"125":{}},"component":{}}],["deliv",{"_index":548,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["demand",{"_index":873,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["demo",{"_index":728,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["demonstr",{"_index":812,"title":{"21-1":{},"22-1":{},"23-1":{},"113-1":{},"114-1":{},"115-1":{}},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["dens",{"_index":542,"title":{},"name":{},"text":{"11":{},"15":{},"54":{},"58":{},"103":{},"107":{}},"component":{}}],["depend",{"_index":690,"title":{"45":{},"91":{},"137":{}},"name":{},"text":{"13":{},"15":{},"21":{},"22":{},"23":{},"24":{},"31":{},"33":{},"36":{},"45":{},"56":{},"58":{},"67":{},"77":{},"81":{},"85":{},"91":{},"105":{},"107":{},"113":{},"114":{},"115":{},"116":{},"123":{},"125":{},"128":{},"137":{}},"component":{}}],["dependson",{"_index":1099,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["dependson(resolvemp",{"_index":1061,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["dependson(someothertask",{"_index":1137,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["deploy",{"_index":411,"title":{"9-3":{},"67-8":{},"101-3":{}},"name":{},"text":{"10":{},"11":{},"54":{},"73":{},"102":{},"103":{}},"component":{}}],["depth",{"_index":177,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["deriv",{"_index":841,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["descend",{"_index":1021,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["describ",{"_index":775,"title":{},"name":{},"text":{"19":{},"22":{},"23":{},"26":{},"69":{},"71":{},"74":{},"75":{},"111":{},"114":{},"115":{},"118":{}},"component":{}}],["descript",{"_index":374,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"33":{},"35":{},"36":{},"57":{},"58":{},"63":{},"66":{},"69":{},"72":{},"84":{},"85":{},"98":{},"106":{},"107":{},"125":{},"127":{},"128":{}},"component":{}}],["design",{"_index":325,"title":{},"name":{},"text":{"3":{},"34":{},"49":{},"83":{},"95":{},"126":{}},"component":{}}],["detail",{"_index":73,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"20":{},"23":{},"39":{},"47":{},"49":{},"54":{},"67":{},"74":{},"75":{},"87":{},"93":{},"95":{},"103":{},"112":{},"115":{},"131":{}},"component":{}}],["detect",{"_index":306,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["determin",{"_index":457,"title":{},"name":{},"text":{"9":{},"69":{},"101":{}},"component":{}}],["dev",{"_index":1144,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["develop",{"_index":10,"title":{"10":{},"54":{},"102":{},"10-1":{},"39-3":{},"54-1":{},"87-3":{},"102-1":{},"131-3":{}},"name":{"10":{},"102":{}},"text":{"1":{},"3":{},"4":{},"9":{},"10":{},"11":{},"26":{},"32":{},"41":{},"47":{},"49":{},"50":{},"54":{},"61":{},"67":{},"71":{},"74":{},"75":{},"82":{},"93":{},"95":{},"96":{},"101":{},"102":{},"103":{},"118":{},"124":{},"133":{}},"component":{}}],["diagram",{"_index":335,"title":{},"name":{},"text":{"3":{},"11":{},"21":{},"38":{},"49":{},"54":{},"95":{},"103":{},"113":{},"130":{}},"component":{}}],["diataxi",{"_index":638,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["differ",{"_index":92,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"20":{},"23":{},"26":{},"28":{},"32":{},"39":{},"45":{},"47":{},"48":{},"54":{},"64":{},"66":{},"67":{},"82":{},"87":{},"91":{},"93":{},"94":{},"98":{},"103":{},"112":{},"115":{},"118":{},"120":{},"124":{},"131":{},"137":{}},"component":{}}],["difficult",{"_index":668,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["direct",{"_index":406,"title":{},"name":{},"text":{"8":{},"33":{},"53":{},"100":{},"125":{}},"component":{}}],["direction(\"pushtomyserv",{"_index":1138,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["directli",{"_index":76,"title":{},"name":{},"text":{"1":{},"11":{},"18":{},"20":{},"22":{},"23":{},"31":{},"47":{},"54":{},"67":{},"71":{},"81":{},"93":{},"103":{},"110":{},"112":{},"114":{},"115":{},"123":{}},"component":{}}],["directori",{"_index":1049,"title":{},"name":{},"text":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"component":{}}],["disabl",{"_index":1562,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["disallow",{"_index":879,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["discuss",{"_index":341,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["display",{"_index":858,"title":{},"name":{},"text":{"23":{},"64":{},"115":{}},"component":{}}],["distinct",{"_index":1284,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["distinguish",{"_index":905,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["distribut",{"_index":17,"title":{},"name":{},"text":{"1":{},"2":{},"15":{},"47":{},"48":{},"58":{},"93":{},"94":{},"107":{}},"component":{}}],["div",{"_index":992,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["dive",{"_index":75,"title":{},"name":{},"text":{"1":{},"47":{},"61":{},"93":{}},"component":{}}],["diverg",{"_index":304,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["divers",{"_index":671,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["diátaxis[2",{"_index":99,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["djdbc.url=$jdbc_url",{"_index":1478,"title":{},"name":{},"text":{"70":{}},"component":{}}],["do",{"_index":516,"title":{},"name":{},"text":{"10":{},"28":{},"120":{}},"component":{}}],["doc",{"_index":458,"title":{},"name":{},"text":{"9":{},"11":{},"13":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"54":{},"56":{},"83":{},"85":{},"86":{},"87":{},"101":{},"103":{},"105":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{}},"component":{}}],["doc/model",{"_index":1294,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["docker",{"_index":214,"title":{"67-8":{}},"name":{},"text":{"2":{},"6":{},"9":{},"18":{},"21":{},"22":{},"23":{},"48":{},"70":{},"94":{},"98":{},"101":{},"110":{},"113":{},"114":{},"115":{}},"component":{}}],["docs.modelix.org",{"_index":561,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["document",{"_index":1,"title":{"1-2":{},"11-6":{},"47-2":{},"54-9":{},"93-2":{},"103-6":{}},"name":{},"text":{"1":{},"3":{},"10":{},"11":{},"12":{},"18":{},"39":{},"45":{},"47":{},"49":{},"54":{},"55":{},"63":{},"67":{},"68":{},"87":{},"91":{},"93":{},"95":{},"103":{},"104":{},"110":{},"131":{},"137":{}},"component":{}}],["documentaion",{"_index":124,"title":{},"name":{},"text":{"1":{},"93":{}},"component":{}}],["doesn’t",{"_index":314,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["domain",{"_index":19,"title":{"62":{},"69":{},"71":{},"11-4":{},"54-7":{},"67-3":{},"67-4":{},"103-4":{}},"name":{"62":{}},"text":{"1":{},"3":{},"4":{},"6":{},"11":{},"23":{},"37":{},"38":{},"47":{},"49":{},"50":{},"54":{},"61":{},"63":{},"64":{},"66":{},"67":{},"71":{},"86":{},"93":{},"95":{},"96":{},"98":{},"103":{},"115":{},"129":{},"130":{}},"component":{}}],["domain[1",{"_index":1483,"title":{},"name":{},"text":{"71":{}},"component":{}}],["done",{"_index":473,"title":{},"name":{},"text":{"10":{},"30":{},"31":{},"54":{},"74":{},"75":{},"80":{},"81":{},"102":{},"122":{},"123":{}},"component":{}}],["download",{"_index":692,"title":{},"name":{},"text":{"13":{},"26":{},"56":{},"74":{},"75":{},"105":{},"118":{}},"component":{}}],["downsid",{"_index":892,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["dsl",{"_index":326,"title":{},"name":{},"text":{"3":{},"28":{},"49":{},"95":{},"120":{}},"component":{}}],["dt_socket",{"_index":1668,"title":{},"name":{},"text":{"75":{}},"component":{}}],["dump",{"_index":1608,"title":{},"name":{},"text":{"75":{}},"component":{}}],["dumpin",{"_index":1469,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["dure",{"_index":538,"title":{},"name":{},"text":{"11":{},"32":{},"45":{},"69":{},"82":{},"91":{},"103":{},"124":{},"137":{}},"component":{}}],["dynam",{"_index":890,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["e",{"_index":242,"title":{},"name":{},"text":{"2":{},"45":{},"48":{},"64":{},"91":{},"94":{},"137":{}},"component":{}}],["e.g",{"_index":427,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"33":{},"35":{},"36":{},"45":{},"54":{},"68":{},"84":{},"85":{},"91":{},"101":{},"102":{},"103":{},"125":{},"127":{},"128":{},"137":{}},"component":{}}],["ea76",{"_index":1511,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["each",{"_index":489,"title":{},"name":{},"text":{"10":{},"11":{},"15":{},"20":{},"28":{},"43":{},"44":{},"54":{},"58":{},"63":{},"64":{},"67":{},"69":{},"89":{},"90":{},"102":{},"103":{},"107":{},"112":{},"120":{},"135":{},"136":{}},"component":{}}],["earli",{"_index":487,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["eas",{"_index":369,"title":{},"name":{},"text":{"6":{},"11":{},"54":{},"98":{},"103":{}},"component":{}}],["easi",{"_index":313,"title":{},"name":{},"text":{"2":{},"11":{},"31":{},"39":{},"48":{},"54":{},"63":{},"81":{},"87":{},"94":{},"103":{},"123":{},"131":{}},"component":{}}],["easier",{"_index":420,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"69":{},"101":{},"102":{},"103":{}},"component":{}}],["easiest",{"_index":750,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["easili",{"_index":305,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["ecosystem",{"_index":592,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["edit",{"_index":327,"title":{},"name":{},"text":{"3":{},"20":{},"49":{},"61":{},"64":{},"68":{},"95":{},"112":{}},"component":{}}],["editor",{"_index":180,"title":{"2-2":{},"11-10":{},"48-2":{},"54-13":{},"94-2":{},"103-10":{}},"name":{},"text":{"2":{},"3":{},"6":{},"11":{},"13":{},"18":{},"19":{},"39":{},"48":{},"49":{},"54":{},"56":{},"61":{},"69":{},"87":{},"94":{},"95":{},"98":{},"103":{},"105":{},"110":{},"111":{},"131":{}},"component":{}}],["educ",{"_index":1381,"title":{},"name":{},"text":{"67":{},"71":{}},"component":{}}],["effect",{"_index":1303,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["effort",{"_index":635,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["einstein",{"_index":1546,"title":{},"name":{},"text":{"73":{}},"component":{}}],["elabor",{"_index":657,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["element",{"_index":899,"title":{},"name":{},"text":{"26":{},"28":{},"36":{},"85":{},"118":{},"120":{},"128":{}},"component":{}}],["email",{"_index":160,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["empow",{"_index":366,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["enabl",{"_index":398,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"18":{},"20":{},"28":{},"31":{},"40":{},"54":{},"58":{},"61":{},"81":{},"98":{},"103":{},"107":{},"110":{},"112":{},"120":{},"123":{},"132":{}},"component":{}}],["enablecontinueonerror",{"_index":1114,"title":{},"name":{},"text":{"33":{}},"component":{}}],["encod",{"_index":1633,"title":{},"name":{},"text":{"75":{}},"component":{}}],["encount",{"_index":370,"title":{},"name":{},"text":{"6":{},"33":{},"98":{}},"component":{}}],["end",{"_index":294,"title":{},"name":{},"text":{"2":{},"12":{},"19":{},"39":{},"48":{},"55":{},"75":{},"87":{},"94":{},"104":{},"111":{},"131":{}},"component":{}}],["endpoint",{"_index":910,"title":{"33":{},"125":{}},"name":{},"text":{"28":{},"33":{},"63":{},"72":{},"120":{},"125":{}},"component":{}}],["enforc",{"_index":455,"title":{},"name":{},"text":{"9":{},"45":{},"91":{},"101":{},"137":{}},"component":{}}],["enforcedplatform",{"_index":1315,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["engin",{"_index":168,"title":{},"name":{},"text":{"1":{},"26":{},"47":{},"67":{},"71":{},"93":{},"118":{}},"component":{}}],["ensur",{"_index":1048,"title":{},"name":{},"text":{"31":{},"44":{},"81":{},"90":{},"123":{},"136":{}},"component":{}}],["enter",{"_index":828,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["entir",{"_index":1015,"title":{},"name":{},"text":{"30":{},"74":{},"75":{},"80":{},"122":{}},"component":{}}],["entri",{"_index":637,"title":{"61-8":{}},"name":{},"text":{"11":{},"36":{},"54":{},"85":{},"103":{},"128":{}},"component":{}}],["environ",{"_index":642,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["envis",{"_index":765,"title":{},"name":{},"text":{"18":{},"61":{},"64":{},"110":{}},"component":{}}],["equip",{"_index":795,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["error",{"_index":139,"title":{},"name":{},"text":{"1":{},"33":{},"47":{},"93":{}},"component":{}}],["essenti",{"_index":348,"title":{"6-2":{},"6-3":{},"9-2":{},"98-2":{},"98-3":{},"101-2":{}},"name":{},"text":{"6":{},"20":{},"98":{},"112":{}},"component":{}}],["establish",{"_index":22,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["estim",{"_index":530,"title":{"11-7":{},"11-8":{},"11-9":{},"11-10":{},"54-10":{},"54-11":{},"54-12":{},"54-13":{},"103-7":{},"103-8":{},"103-9":{},"103-10":{}},"name":{},"text":{},"component":{}}],["even",{"_index":257,"title":{},"name":{},"text":{"2":{},"28":{},"39":{},"48":{},"87":{},"94":{},"120":{},"131":{}},"component":{}}],["eventloopgroupproxi",{"_index":1697,"title":{},"name":{},"text":{"75":{}},"component":{}}],["eventu",{"_index":653,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"26":{},"43":{},"54":{},"61":{},"71":{},"77":{},"103":{},"108":{},"116":{},"118":{},"135":{}},"component":{}}],["everyon",{"_index":1535,"title":{},"name":{},"text":{"72":{}},"component":{}}],["everyth",{"_index":574,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"63":{},"67":{},"103":{},"107":{},"110":{}},"component":{}}],["evolut",{"_index":532,"title":{"11-9":{},"54-12":{},"103-9":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["evolv",{"_index":401,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["exactli",{"_index":150,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["exampl",{"_index":350,"title":{"6-3":{},"33-7":{},"36-7":{},"85-7":{},"98-3":{},"125-7":{},"128-7":{}},"name":{},"text":{"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"19":{},"24":{},"31":{},"33":{},"43":{},"45":{},"54":{},"58":{},"59":{},"61":{},"63":{},"67":{},"69":{},"71":{},"72":{},"73":{},"75":{},"77":{},"81":{},"89":{},"91":{},"98":{},"102":{},"103":{},"107":{},"108":{},"110":{},"111":{},"116":{},"123":{},"125":{},"135":{},"137":{}},"component":{}}],["example@0.0.0",{"_index":1570,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["exceed",{"_index":888,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["except",{"_index":883,"title":{},"name":{},"text":{"26":{},"30":{},"69":{},"80":{},"118":{},"122":{}},"component":{}}],["exchang",{"_index":675,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["execut",{"_index":817,"title":{},"name":{},"text":{"21":{},"26":{},"28":{},"36":{},"74":{},"75":{},"85":{},"113":{},"118":{},"120":{},"128":{}},"component":{}}],["exemplari",{"_index":1161,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["exist",{"_index":29,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"9":{},"10":{},"11":{},"15":{},"31":{},"38":{},"47":{},"50":{},"54":{},"58":{},"81":{},"93":{},"96":{},"98":{},"101":{},"102":{},"103":{},"107":{},"123":{},"130":{}},"component":{}}],["expect",{"_index":897,"title":{},"name":{},"text":{"26":{},"68":{},"74":{},"75":{},"118":{}},"component":{}}],["experi",{"_index":670,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["experiment",{"_index":59,"title":{"10-3":{}},"name":{},"text":{"1":{},"10":{},"47":{},"93":{}},"component":{}}],["expert",{"_index":20,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["explain",{"_index":1371,"title":{},"name":{},"text":{"66":{}},"component":{}}],["explan",{"_index":126,"title":{"5":{},"25":{},"51":{},"78":{},"97":{},"117":{}},"name":{},"text":{"1":{},"5":{},"11":{},"47":{},"51":{},"54":{},"61":{},"93":{},"97":{},"103":{}},"component":{}}],["explor",{"_index":33,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"18":{},"21":{},"47":{},"50":{},"54":{},"74":{},"75":{},"93":{},"96":{},"103":{},"110":{},"113":{}},"component":{}}],["expor",{"_index":1703,"title":{},"name":{},"text":{"84":{}},"component":{}}],["export",{"_index":607,"title":{"35":{},"84":{},"127":{}},"name":{"35":{},"84":{},"127":{}},"text":{"11":{},"13":{},"33":{},"35":{},"36":{},"54":{},"56":{},"69":{},"84":{},"85":{},"103":{},"105":{},"125":{},"127":{},"128":{}},"component":{}}],["exportmodul",{"_index":1250,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["exportmodules(\"jetbrains.mps.runtim",{"_index":1273,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["expos",{"_index":515,"title":{},"name":{},"text":{"10":{},"23":{},"41":{},"63":{},"67":{},"72":{},"115":{},"133":{}},"component":{}}],["express",{"_index":779,"title":{},"name":{},"text":{"19":{},"69":{},"111":{}},"component":{}}],["extend",{"_index":1179,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["extens",{"_index":492,"title":{},"name":{},"text":{"10":{},"11":{},"13":{},"28":{},"54":{},"56":{},"102":{},"103":{},"105":{},"120":{}},"component":{}}],["extern",{"_index":229,"title":{},"name":{},"text":{"2":{},"15":{},"18":{},"36":{},"48":{},"58":{},"61":{},"85":{},"94":{},"107":{},"110":{},"128":{}},"component":{}}],["extra",{"_index":604,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"103":{}},"component":{}}],["factor",{"_index":439,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["fail",{"_index":1300,"title":{},"name":{},"text":{"40":{},"69":{},"132":{}},"component":{}}],["fairli",{"_index":773,"title":{},"name":{},"text":{"19":{},"69":{},"111":{}},"component":{}}],["fallback",{"_index":677,"title":{"12":{},"55":{},"104":{}},"name":{},"text":{"12":{},"55":{},"75":{},"104":{}},"component":{}}],["fals",{"_index":1120,"title":{},"name":{},"text":{"33":{},"35":{},"69":{},"72":{},"75":{},"84":{},"127":{}},"component":{}}],["fanci",{"_index":1489,"title":{},"name":{},"text":{"71":{}},"component":{}}],["faq",{"_index":83,"title":{},"name":{"7":{},"52":{},"99":{}},"text":{"1":{},"47":{},"93":{}},"component":{}}],["fast",{"_index":310,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["fatjar",{"_index":1620,"title":{},"name":{},"text":{"75":{}},"component":{}}],["fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model",{"_index":1619,"title":{},"name":{},"text":{"75":{}},"component":{}}],["featur",{"_index":397,"title":{"10-3":{}},"name":{},"text":{"6":{},"9":{},"10":{},"11":{},"15":{},"18":{},"34":{},"45":{},"54":{},"58":{},"61":{},"83":{},"91":{},"98":{},"101":{},"103":{},"107":{},"110":{},"126":{},"137":{}},"component":{}}],["feedback",{"_index":161,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["few",{"_index":599,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["figur",{"_index":815,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"33":{},"68":{},"113":{},"114":{},"115":{},"125":{}},"component":{}}],["file",{"_index":267,"title":{},"name":{},"text":{"2":{},"11":{},"16":{},"20":{},"21":{},"24":{},"31":{},"33":{},"35":{},"36":{},"37":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"72":{},"74":{},"75":{},"77":{},"81":{},"84":{},"85":{},"86":{},"87":{},"89":{},"94":{},"103":{},"108":{},"112":{},"113":{},"116":{},"123":{},"125":{},"127":{},"128":{},"129":{},"131":{},"135":{}},"component":{}}],["file(\"build/kotlin_gen",{"_index":1269,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"build/ts_gen",{"_index":1271,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"path/to/json/dir",{"_index":1226,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"path/to/mps/hom",{"_index":1268,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["filter",{"_index":882,"title":{},"name":{},"text":{"26":{},"28":{},"30":{},"31":{},"80":{},"81":{},"118":{},"120":{},"122":{},"123":{}},"component":{}}],["final",{"_index":42,"title":{},"name":{},"text":{"1":{},"47":{},"69":{},"93":{}},"component":{}}],["find",{"_index":71,"title":{},"name":{},"text":{"1":{},"11":{},"19":{},"26":{},"47":{},"54":{},"75":{},"93":{},"103":{},"111":{},"118":{}},"component":{}}],["fine",{"_index":876,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["first",{"_index":238,"title":{},"name":{},"text":{"2":{},"10":{},"11":{},"16":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"36":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"74":{},"75":{},"77":{},"85":{},"89":{},"94":{},"102":{},"103":{},"108":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"128":{},"135":{}},"component":{}}],["fit",{"_index":362,"title":{},"name":{},"text":{"6":{},"11":{},"54":{},"98":{},"103":{}},"component":{}}],["fix",{"_index":312,"title":{},"name":{},"text":{"2":{},"9":{},"39":{},"48":{},"69":{},"87":{},"94":{},"101":{},"131":{}},"component":{}}],["fixtur",{"_index":1002,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["flexibl",{"_index":1375,"title":{},"name":{},"text":{"67":{}},"component":{}}],["flow",{"_index":895,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["flux",{"_index":904,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["focu",{"_index":547,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"103":{},"107":{},"110":{}},"component":{}}],["focus",{"_index":672,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["folder",{"_index":732,"title":{},"name":{},"text":{"16":{},"22":{},"23":{},"24":{},"31":{},"40":{},"43":{},"59":{},"61":{},"63":{},"68":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"89":{},"108":{},"114":{},"115":{},"116":{},"123":{},"132":{},"135":{}},"component":{}}],["follow",{"_index":66,"title":{},"name":{},"text":{"1":{},"6":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"21":{},"24":{},"29":{},"31":{},"36":{},"38":{},"43":{},"45":{},"47":{},"54":{},"58":{},"59":{},"61":{},"67":{},"70":{},"71":{},"77":{},"81":{},"85":{},"89":{},"91":{},"93":{},"98":{},"101":{},"102":{},"103":{},"107":{},"108":{},"110":{},"113":{},"116":{},"121":{},"123":{},"128":{},"130":{},"135":{},"137":{}},"component":{}}],["forc",{"_index":884,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["form",{"_index":387,"title":{},"name":{},"text":{"6":{},"15":{},"58":{},"98":{},"107":{}},"component":{}}],["format",{"_index":273,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["forward",{"_index":232,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["found",{"_index":136,"title":{},"name":{},"text":{"1":{},"10":{},"12":{},"47":{},"55":{},"75":{},"93":{},"104":{}},"component":{}}],["four",{"_index":102,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["framework",{"_index":3,"title":{"1-3":{},"1-4":{},"47-3":{},"47-4":{},"93-3":{},"93-4":{}},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["frameworks/tool",{"_index":725,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["frequent",{"_index":403,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{},"component":{}}],["friction",{"_index":18,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["from(mps.resolve().map",{"_index":1057,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["fromloc",{"_index":1101,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["frommodelserv",{"_index":1103,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["frontend",{"_index":771,"title":{"22":{},"114":{}},"name":{},"text":{"18":{},"20":{},"22":{},"23":{},"110":{},"112":{},"114":{},"115":{}},"component":{}}],["full",{"_index":88,"title":{"67-1":{}},"name":{},"text":{"1":{},"6":{},"47":{},"64":{},"67":{},"93":{},"98":{}},"component":{}}],["fulli",{"_index":1110,"title":{},"name":{},"text":{"33":{},"36":{},"40":{},"85":{},"125":{},"128":{},"132":{}},"component":{}}],["function",{"_index":576,"title":{},"name":{},"text":{"11":{},"36":{},"54":{},"72":{},"85":{},"103":{},"128":{}},"component":{}}],["further",{"_index":448,"title":{},"name":{},"text":{"9":{},"11":{},"18":{},"28":{},"31":{},"35":{},"41":{},"54":{},"81":{},"84":{},"101":{},"103":{},"110":{},"120":{},"123":{},"127":{},"133":{}},"component":{}}],["furthermor",{"_index":1311,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["futur",{"_index":451,"title":{},"name":{},"text":{"9":{},"69":{},"101":{}},"component":{}}],["g",{"_index":1319,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["gain",{"_index":61,"title":{},"name":{},"text":{"1":{},"10":{},"47":{},"54":{},"93":{},"102":{}},"component":{}}],["gen",{"_index":377,"title":{},"name":{"31":{},"36":{},"37":{},"81":{},"85":{},"86":{},"123":{},"128":{},"129":{}},"text":{"6":{},"11":{},"13":{},"15":{},"24":{},"28":{},"29":{},"31":{},"36":{},"37":{},"38":{},"54":{},"56":{},"58":{},"69":{},"77":{},"81":{},"85":{},"86":{},"98":{},"103":{},"105":{},"107":{},"116":{},"120":{},"121":{},"123":{},"128":{},"129":{},"130":{}},"component":{}}],["gen.gradl",{"_index":1043,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["gen.gradle.plugin",{"_index":687,"title":{},"name":{},"text":{"13":{},"36":{},"56":{},"85":{},"105":{},"128":{}},"component":{}}],["gener",{"_index":379,"title":{"31":{},"36":{},"37":{},"69":{},"81":{},"85":{},"86":{},"123":{},"128":{},"129":{},"11-4":{},"45-1":{},"54-7":{},"67-3":{},"69-2":{},"91-1":{},"103-4":{},"137-1":{}},"name":{},"text":{"6":{},"10":{},"11":{},"16":{},"19":{},"20":{},"22":{},"23":{},"24":{},"28":{},"29":{},"31":{},"33":{},"35":{},"36":{},"37":{},"38":{},"41":{},"43":{},"54":{},"59":{},"61":{},"63":{},"67":{},"69":{},"71":{},"73":{},"74":{},"75":{},"77":{},"81":{},"84":{},"85":{},"86":{},"89":{},"98":{},"102":{},"103":{},"108":{},"111":{},"112":{},"114":{},"115":{},"116":{},"120":{},"121":{},"123":{},"125":{},"127":{},"128":{},"129":{},"130":{},"133":{},"135":{}},"component":{}}],["get",{"_index":423,"title":{"18-2":{},"24-2":{},"43-2":{},"61-2":{},"77-2":{},"89-2":{},"110-2":{},"116-2":{},"135-2":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["getchildren",{"_index":1462,"title":{},"name":{},"text":{"69":{}},"component":{}}],["gethasremoteequip",{"_index":1445,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinod",{"_index":1434,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().getpropertyvalue(\"hasremoteequip",{"_index":1446,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().getpropertyvalue(\"maxplac",{"_index":1439,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().setpropertyvalue(\"hasremoteequip",{"_index":1449,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().setpropertyvalue(\"maxplac",{"_index":1443,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getmaxplac",{"_index":1437,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getproperti",{"_index":1461,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getrefer",{"_index":1463,"title":{},"name":{},"text":{"69":{}},"component":{}}],["ghp",{"_index":683,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["git",{"_index":271,"title":{"11-7":{},"54-10":{},"103-7":{}},"name":{},"text":{"2":{},"9":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"101":{},"103":{},"131":{}},"component":{}}],["githhub",{"_index":742,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["github",{"_index":437,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"9":{},"10":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"101":{},"102":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["gitui",{"_index":703,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["give",{"_index":84,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"18":{},"28":{},"47":{},"48":{},"54":{},"61":{},"93":{},"94":{},"98":{},"103":{},"110":{},"120":{}},"component":{}}],["given",{"_index":1100,"title":{},"name":{},"text":{"33":{},"37":{},"66":{},"67":{},"86":{},"125":{},"129":{}},"component":{}}],["global",{"_index":855,"title":{},"name":{},"text":{"22":{},"23":{},"74":{},"75":{},"114":{},"115":{}},"component":{}}],["glossari",{"_index":5,"title":{"3":{},"49":{},"95":{},"1-5":{},"47-5":{},"93-5":{}},"name":{"3":{},"49":{},"95":{}},"text":{"1":{},"3":{},"47":{},"49":{},"93":{},"95":{}},"component":{}}],["go",{"_index":770,"title":{},"name":{},"text":{"18":{},"68":{},"110":{}},"component":{}}],["goal",{"_index":340,"title":{"4":{},"50":{},"96":{}},"name":{"4":{},"50":{},"96":{}},"text":{"6":{},"8":{},"18":{},"53":{},"61":{},"98":{},"100":{},"110":{}},"component":{}}],["good",{"_index":656,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["googl",{"_index":236,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["gpr.key",{"_index":749,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gpr.user",{"_index":748,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gradl",{"_index":378,"title":{"16":{},"31":{},"33":{},"36":{},"44":{},"59":{},"81":{},"85":{},"90":{},"108":{},"123":{},"125":{},"128":{},"136":{},"24-3":{},"43-3":{},"61-3":{},"77-3":{},"89-3":{},"116-3":{},"135-3":{}},"name":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"text":{"6":{},"11":{},"13":{},"15":{},"16":{},"22":{},"23":{},"24":{},"28":{},"31":{},"33":{},"36":{},"37":{},"41":{},"43":{},"44":{},"45":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"85":{},"86":{},"89":{},"90":{},"91":{},"98":{},"103":{},"105":{},"107":{},"108":{},"114":{},"115":{},"116":{},"120":{},"123":{},"125":{},"128":{},"129":{},"133":{},"135":{},"136":{},"137":{}},"component":{}}],["gradle.properti",{"_index":752,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"77":{},"81":{},"89":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["gradlew",{"_index":733,"title":{},"name":{},"text":{"16":{},"18":{},"21":{},"22":{},"23":{},"24":{},"31":{},"32":{},"39":{},"43":{},"59":{},"61":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"82":{},"87":{},"89":{},"108":{},"110":{},"113":{},"114":{},"115":{},"116":{},"123":{},"124":{},"131":{},"135":{}},"component":{}}],["gradlew.bat",{"_index":736,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gradle’",{"_index":1310,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["grain",{"_index":877,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["graphic",{"_index":534,"title":{"11-10":{},"54-13":{},"103-10":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["ground",{"_index":587,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["group",{"_index":617,"title":{},"name":{},"text":{"11":{},"38":{},"54":{},"103":{},"130":{}},"component":{}}],["grow",{"_index":640,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["guarante",{"_index":291,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["guid",{"_index":120,"title":{"8":{},"9":{},"53":{},"100":{},"101":{}},"name":{},"text":{"1":{},"8":{},"9":{},"11":{},"14":{},"47":{},"53":{},"54":{},"57":{},"93":{},"100":{},"101":{},"103":{},"106":{}},"component":{}}],["h",{"_index":1505,"title":{},"name":{},"text":{"72":{},"73":{},"75":{}},"component":{}}],["h1",{"_index":995,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["h2",{"_index":993,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["hall",{"_index":1361,"title":{},"name":{},"text":{"64":{}},"component":{}}],["hand",{"_index":111,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"63":{},"69":{},"93":{},"109":{}},"component":{}}],["handl",{"_index":566,"title":{},"name":{},"text":{"11":{},"45":{},"54":{},"91":{},"103":{},"137":{}},"component":{}}],["happen",{"_index":256,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"67":{},"87":{},"94":{},"131":{}},"component":{}}],["hard",{"_index":290,"title":{},"name":{},"text":{"2":{},"26":{},"28":{},"39":{},"48":{},"87":{},"94":{},"118":{},"120":{},"131":{}},"component":{}}],["hash",{"_index":302,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"74":{},"75":{},"87":{},"94":{},"131":{}},"component":{}}],["hasremoteequip",{"_index":1195,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"73":{},"84":{},"127":{}},"component":{}}],["have",{"_index":1368,"title":{},"name":{},"text":{"64":{}},"component":{}}],["head",{"_index":64,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["header",{"_index":241,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["headless",{"_index":186,"title":{},"name":{},"text":{"2":{},"13":{},"33":{},"48":{},"56":{},"94":{},"105":{},"125":{}},"component":{}}],["health",{"_index":1296,"title":{"40-1":{},"132-1":{}},"name":{},"text":{"40":{},"132":{}},"component":{}}],["healthi",{"_index":1302,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["heap",{"_index":1122,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["held",{"_index":787,"title":{},"name":{},"text":{"19":{},"69":{},"111":{}},"component":{}}],["hello",{"_index":1534,"title":{},"name":{},"text":{"72":{}},"component":{}}],["helm",{"_index":432,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["help",{"_index":615,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["helper",{"_index":1060,"title":{"70":{}},"name":{},"text":{"31":{},"36":{},"70":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["here",{"_index":119,"title":{},"name":{},"text":{"1":{},"2":{},"10":{},"11":{},"12":{},"15":{},"18":{},"30":{},"31":{},"32":{},"39":{},"47":{},"48":{},"54":{},"55":{},"58":{},"61":{},"66":{},"68":{},"80":{},"81":{},"82":{},"87":{},"93":{},"94":{},"102":{},"103":{},"104":{},"107":{},"110":{},"122":{},"123":{},"124":{},"131":{}},"component":{}}],["hidden",{"_index":893,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["hide",{"_index":860,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["hierarch",{"_index":953,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["high",{"_index":222,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["hold",{"_index":625,"title":{},"name":{},"text":{"11":{},"23":{},"54":{},"103":{},"115":{}},"component":{}}],["home",{"_index":1232,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["home/nkoester/git/modelix/modelix",{"_index":1655,"title":{},"name":{},"text":{"75":{}},"component":{}}],["hook",{"_index":454,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["host",{"_index":443,"title":{},"name":{},"text":{"9":{},"72":{},"101":{}},"component":{}}],["html",{"_index":194,"title":{"28-6":{},"120-6":{}},"name":{},"text":{"2":{},"13":{},"28":{},"48":{},"94":{},"105":{},"120":{}},"component":{}}],["http",{"_index":189,"title":{},"name":{},"text":{"2":{},"20":{},"28":{},"40":{},"48":{},"94":{},"112":{},"120":{},"132":{}},"component":{}}],["http://0.0.0.0:28101",{"_index":1663,"title":{},"name":{},"text":{"75":{}},"component":{}}],["http://0.0.0.0:28101/v2",{"_index":1143,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["http://0.0.0.0:8090",{"_index":1499,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["http://127.0.0.1:63320/node?ref=r%3adfa26643",{"_index":1425,"title":{},"name":{},"text":{"69":{}},"component":{}}],["http://localhost:28101",{"_index":824,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["http://localhost:28101/cours",{"_index":834,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["http://localhost:3000",{"_index":853,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["http://localhost:4200",{"_index":854,"title":{},"name":{},"text":{"22":{},"68":{},"74":{},"75":{},"114":{}},"component":{}}],["http://localhost:4201",{"_index":865,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["http://localhost:8090",{"_index":864,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["http://localhost:8090/lectur",{"_index":1524,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/lectures/mp",{"_index":1537,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/lectures/trash",{"_index":1538,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/room",{"_index":1504,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["http://localhost:8090/rooms/mp",{"_index":1520,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/rooms/trash",{"_index":1523,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://voelter.de/data/pub/aplatformforsystemsandbusinessmodeling.pdf",{"_index":172,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["https://api.docs.modelix.org",{"_index":125,"title":{},"name":{},"text":{"1":{},"93":{}},"component":{}}],["https://diataxis.fr/explan",{"_index":347,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["https://diataxis.fr/how",{"_index":410,"title":{},"name":{},"text":{"8":{},"53":{},"100":{}},"component":{}}],["https://diataxis.fr/refer",{"_index":711,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["https://diataxis.fr/tutori",{"_index":755,"title":{},"name":{},"text":{"17":{},"60":{},"109":{}},"component":{}}],["https://en.wikipedia.org/wiki/jetbrains_mp",{"_index":337,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["https://github.com/modelix/increment",{"_index":717,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix",{"_index":716,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.cor",{"_index":714,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.doc",{"_index":718,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.mp",{"_index":715,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.platform",{"_index":713,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.sampl",{"_index":719,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://issues.modelix.org",{"_index":483,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["https://www.jetbrains.com/mp",{"_index":336,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["https://www.openapis.org",{"_index":1390,"title":{},"name":{},"text":{"67":{}},"component":{}}],["hybrid",{"_index":646,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["i.",{"_index":1154,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"67":{},"84":{},"85":{},"127":{},"128":{},"130":{}},"component":{}}],["id",{"_index":459,"title":{},"name":{},"text":{"9":{},"16":{},"24":{},"28":{},"33":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"120":{},"125":{},"135":{}},"component":{}}],["id(\"org.modelix.model",{"_index":1042,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["id.zip(titl",{"_index":944,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["idea",{"_index":43,"title":{"16-2":{},"24-5":{},"43-5":{},"61-5":{},"77-5":{},"108-2":{},"116-5":{},"135-5":{}},"name":{},"text":{"1":{},"9":{},"11":{},"16":{},"24":{},"43":{},"47":{},"54":{},"61":{},"68":{},"77":{},"93":{},"101":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["identifi",{"_index":301,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["ignit",{"_index":218,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["ignor",{"_index":1227,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["ilanguag",{"_index":1106,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["illumin",{"_index":343,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["illustr",{"_index":1372,"title":{},"name":{},"text":{"66":{},"68":{}},"component":{}}],["imag",{"_index":181,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"28":{},"48":{},"54":{},"94":{},"98":{},"103":{},"120":{}},"component":{}}],["images).maploc",{"_index":962,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["images.get",{"_index":981,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["imaginari",{"_index":1350,"title":{},"name":{},"text":{"64":{}},"component":{}}],["immedi",{"_index":86,"title":{},"name":{},"text":{"1":{},"40":{},"47":{},"93":{},"132":{}},"component":{}}],["implement",{"_index":48,"title":{"74":{},"75":{},"67-5":{},"68-3":{}},"name":{},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"20":{},"22":{},"23":{},"26":{},"28":{},"34":{},"39":{},"47":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"83":{},"87":{},"93":{},"94":{},"98":{},"103":{},"112":{},"114":{},"115":{},"118":{},"120":{},"126":{},"131":{}},"component":{}}],["implementation(\"org.modelix:model",{"_index":1323,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implementation(enforcedplatform(\"org.modelix:platform",{"_index":1321,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implementation(platform(\"org.modelix:platform",{"_index":1330,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implicit",{"_index":82,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["import",{"_index":357,"title":{},"name":{},"text":{"6":{},"9":{},"31":{},"69":{},"81":{},"98":{},"101":{},"123":{}},"component":{}}],["inamedconcept",{"_index":1415,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.children",{"_index":1452,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.properti",{"_index":1432,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.refer",{"_index":1454,"title":{},"name":{},"text":{"69":{}},"component":{}}],["includ",{"_index":654,"title":{},"name":{},"text":{"11":{},"15":{},"24":{},"26":{},"30":{},"33":{},"54":{},"58":{},"67":{},"74":{},"75":{},"77":{},"80":{},"103":{},"107":{},"116":{},"118":{},"122":{},"125":{}},"component":{}}],["includeconcept",{"_index":1249,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includeconcept(\"concept.fq.nam",{"_index":1068,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includedconcept",{"_index":1235,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedlanguag",{"_index":1233,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedlanguagenamespac",{"_index":1234,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedmodul",{"_index":1236,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includednamespac",{"_index":1248,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includelanguag",{"_index":1244,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includelanguage(\"language.fq.nam",{"_index":1067,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includelanguage(\"org.modelix.model.repositoryconcept",{"_index":1070,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includemodul",{"_index":1109,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includemodule(\"mysolut",{"_index":1140,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includemodulesbyprefix",{"_index":1112,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includenamespac",{"_index":1246,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includenamespace(\"jetbrains.mps.baselanguag",{"_index":1272,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includenamespace(\"org.exampl",{"_index":1066,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["incompat",{"_index":1328,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["incomplet",{"_index":1119,"title":{},"name":{},"text":{"33":{}},"component":{}}],["increment",{"_index":641,"title":{},"name":{},"text":{"11":{},"13":{},"33":{},"54":{},"56":{},"103":{},"105":{},"125":{}},"component":{}}],["indep",{"_index":296,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["independ",{"_index":605,"title":{"28-1":{},"120-1":{}},"name":{},"text":{"11":{},"38":{},"39":{},"54":{},"64":{},"87":{},"103":{},"130":{},"131":{}},"component":{}}],["index",{"_index":9,"title":{"40-2":{},"132-2":{}},"name":{"1":{},"5":{},"8":{},"14":{},"17":{},"18":{},"24":{},"25":{},"27":{},"42":{},"43":{},"44":{},"46":{},"47":{},"51":{},"53":{},"57":{},"60":{},"61":{},"77":{},"78":{},"79":{},"88":{},"89":{},"90":{},"92":{},"93":{},"97":{},"100":{},"106":{},"109":{},"110":{},"116":{},"117":{},"119":{},"134":{},"135":{},"136":{},"138":{}},"text":{"40":{},"132":{}},"component":{}}],["indic",{"_index":1301,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["individu",{"_index":97,"title":{},"name":{},"text":{"1":{},"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"24":{},"43":{},"44":{},"45":{},"47":{},"54":{},"58":{},"59":{},"61":{},"67":{},"68":{},"72":{},"73":{},"77":{},"89":{},"90":{},"91":{},"93":{},"98":{},"102":{},"103":{},"107":{},"108":{},"110":{},"116":{},"135":{},"136":{},"137":{}},"component":{}}],["info",{"_index":1496,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["inform",{"_index":559,"title":{},"name":{},"text":{"11":{},"14":{},"15":{},"23":{},"54":{},"57":{},"58":{},"64":{},"68":{},"103":{},"106":{},"107":{},"115":{}},"component":{}}],["initi",{"_index":557,"title":{},"name":{},"text":{"11":{},"21":{},"22":{},"23":{},"54":{},"61":{},"72":{},"74":{},"75":{},"103":{},"113":{},"114":{},"115":{}},"component":{}}],["ink",{"_index":1357,"title":{},"name":{},"text":{"64":{}},"component":{}}],["inmemori",{"_index":1089,"title":{},"name":{},"text":{"32":{},"70":{},"75":{},"82":{},"124":{}},"component":{}}],["inod",{"_index":908,"title":{"28-4":{},"120-4":{}},"name":{},"text":{"28":{},"69":{},"120":{}},"component":{}}],["inode.isload",{"_index":1031,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["inodehold",{"_index":1431,"title":{},"name":{},"text":{"69":{}},"component":{}}],["input",{"_index":250,"title":{},"name":{},"text":{"2":{},"36":{},"48":{},"85":{},"94":{},"128":{}},"component":{}}],["input.children(\"models\").requestfrag",{"_index":990,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["input.children(\"modules\").requestfrag",{"_index":987,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["input.property(\"name\").request",{"_index":989,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insertfragment(model",{"_index":997,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insertfragment(modul",{"_index":998,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insid",{"_index":399,"title":{},"name":{},"text":{"6":{},"18":{},"28":{},"33":{},"36":{},"45":{},"67":{},"72":{},"85":{},"91":{},"98":{},"110":{},"120":{},"125":{},"128":{},"137":{}},"component":{}}],["insight",{"_index":634,"title":{},"name":{},"text":{"11":{},"54":{},"73":{},"103":{}},"component":{}}],["inspect",{"_index":1337,"title":{},"name":{},"text":{"61":{}},"component":{}}],["inspir",{"_index":39,"title":{},"name":{},"text":{"1":{},"18":{},"26":{},"47":{},"61":{},"93":{},"110":{},"118":{}},"component":{}}],["instal",{"_index":190,"title":{},"name":{},"text":{"2":{},"9":{},"18":{},"21":{},"22":{},"23":{},"48":{},"94":{},"101":{},"110":{},"113":{},"114":{},"115":{}},"component":{}}],["instanc",{"_index":204,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"13":{},"21":{},"22":{},"23":{},"28":{},"29":{},"30":{},"34":{},"39":{},"48":{},"56":{},"64":{},"67":{},"68":{},"69":{},"70":{},"72":{},"73":{},"74":{},"75":{},"80":{},"83":{},"87":{},"94":{},"98":{},"101":{},"105":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"126":{},"131":{}},"component":{}}],["instanti",{"_index":1626,"title":{},"name":{},"text":{"75":{}},"component":{}}],["instantli",{"_index":800,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["instead",{"_index":274,"title":{},"name":{},"text":{"2":{},"33":{},"39":{},"45":{},"48":{},"75":{},"87":{},"91":{},"94":{},"125":{},"131":{},"137":{}},"component":{}}],["instruct",{"_index":813,"title":{"21-2":{},"113-2":{}},"name":{},"text":{},"component":{}}],["int",{"_index":956,"title":{},"name":{},"text":{"28":{},"33":{},"35":{},"84":{},"120":{},"125":{},"127":{}},"component":{}}],["integ",{"_index":1417,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integer.parseint(propertyvalu",{"_index":1441,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integer.tostring(valu",{"_index":1444,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integr",{"_index":28,"title":{"11-7":{},"28-2":{},"28-6":{},"54-10":{},"103-7":{},"120-2":{},"120-6":{}},"name":{},"text":{"1":{},"4":{},"11":{},"18":{},"31":{},"47":{},"50":{},"54":{},"61":{},"81":{},"93":{},"96":{},"103":{},"110":{},"123":{}},"component":{}}],["intellij",{"_index":424,"title":{"16-2":{},"24-5":{},"43-5":{},"61-5":{},"77-5":{},"108-2":{},"116-5":{},"135-5":{}},"name":{},"text":{"9":{},"16":{},"24":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"135":{}},"component":{}}],["intend",{"_index":727,"title":{},"name":{},"text":{"15":{},"18":{},"35":{},"58":{},"61":{},"67":{},"84":{},"107":{},"110":{},"127":{}},"component":{}}],["intent",{"_index":1484,"title":{},"name":{},"text":{"71":{}},"component":{}}],["intention",{"_index":778,"title":{},"name":{},"text":{"19":{},"69":{},"111":{}},"component":{}}],["interact",{"_index":198,"title":{},"name":{},"text":{"2":{},"6":{},"22":{},"23":{},"41":{},"48":{},"94":{},"98":{},"114":{},"115":{},"133":{}},"component":{}}],["interest",{"_index":673,"title":{},"name":{},"text":{"11":{},"30":{},"31":{},"32":{},"54":{},"80":{},"81":{},"82":{},"103":{},"122":{},"123":{},"124":{}},"component":{}}],["interfac",{"_index":569,"title":{},"name":{},"text":{"11":{},"35":{},"36":{},"54":{},"84":{},"103":{},"127":{},"128":{}},"component":{}}],["intermedi",{"_index":606,"title":{"71":{}},"name":{},"text":{"11":{},"54":{},"68":{},"103":{}},"component":{}}],["intermediari",{"_index":844,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["intern",{"_index":202,"title":{},"name":{},"text":{"2":{},"28":{},"33":{},"39":{},"48":{},"87":{},"94":{},"120":{},"125":{},"131":{}},"component":{}}],["interoper",{"_index":46,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["interst",{"_index":1332,"title":{},"name":{},"text":{"47":{}},"component":{}}],["into(mpsdir",{"_index":1059,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["introduc",{"_index":901,"title":{},"name":{},"text":{"26":{},"67":{},"118":{}},"component":{}}],["introduct",{"_index":0,"title":{"18":{},"110":{},"1-1":{},"24-1":{},"43-1":{},"47-1":{},"61-1":{},"77-1":{},"89-1":{},"93-1":{},"116-1":{},"135-1":{}},"name":{},"text":{},"component":{}}],["introspect",{"_index":1539,"title":{"73-3":{}},"name":{},"text":{},"component":{}}],["investig",{"_index":655,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["invok",{"_index":916,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["involv",{"_index":568,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"75":{},"103":{}},"component":{}}],["isn’t",{"_index":1413,"title":{},"name":{},"text":{"69":{}},"component":{}}],["issu",{"_index":144,"title":{"9-7":{},"101-7":{}},"name":{},"text":{"1":{},"9":{},"10":{},"12":{},"26":{},"36":{},"47":{},"54":{},"55":{},"93":{},"101":{},"102":{},"104":{},"118":{},"128":{}},"component":{}}],["issue/modelix",{"_index":460,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["issues.modelix.org",{"_index":444,"title":{},"name":{},"text":{"9":{},"11":{},"54":{},"101":{},"103":{}},"component":{}}],["it.children(\"classes\").ofconcept(c_classconcept).first",{"_index":929,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.children(\"modules\").property(\"name\").tolist",{"_index":920,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.first",{"_index":947,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.id",{"_index":941,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.id.request",{"_index":975,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.imag",{"_index":964,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.images.maploc",{"_index":960,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.images.tolist",{"_index":943,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.map(buildhtmlqueri",{"_index":986,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.member.ofconcept(c_staticmethoddeclaration).name.tolist",{"_index":931,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.properties.nam",{"_index":1407,"title":{},"name":{},"text":{"69":{}},"component":{}}],["it.second",{"_index":948,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.third",{"_index":949,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.titl",{"_index":942,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.title.request",{"_index":976,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.visibility.instanceof(c_publicvis",{"_index":925,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["itemi",{"_index":480,"title":{},"name":{},"text":{"10":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"102":{},"108":{},"116":{},"135":{}},"component":{}}],["iter",{"_index":651,"title":{},"name":{},"text":{"11":{},"30":{},"54":{},"80":{},"103":{},"122":{}},"component":{}}],["itself",{"_index":315,"title":{},"name":{},"text":{"2":{},"11":{},"18":{},"20":{},"39":{},"48":{},"54":{},"61":{},"67":{},"69":{},"74":{},"75":{},"87":{},"94":{},"103":{},"110":{},"112":{},"131":{}},"component":{}}],["it’",{"_index":319,"title":{},"name":{},"text":{"2":{},"26":{},"28":{},"48":{},"69":{},"94":{},"118":{},"120":{}},"component":{}}],["jar:file:/home/nkoester/.gradle/caches/modul",{"_index":1616,"title":{},"name":{},"text":{"75":{}},"component":{}}],["java",{"_index":425,"title":{},"name":{},"text":{"9":{},"11":{},"18":{},"36":{},"44":{},"54":{},"63":{},"69":{},"70":{},"85":{},"90":{},"101":{},"103":{},"110":{},"128":{},"136":{}},"component":{}}],["java/kotlin",{"_index":724,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["javaexecut",{"_index":1229,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["javascript",{"_index":195,"title":{},"name":{},"text":{"2":{},"20":{},"48":{},"94":{},"112":{}},"component":{}}],["jdbc",{"_index":1084,"title":{},"name":{},"text":{"32":{},"75":{},"82":{},"124":{}},"component":{}}],["jdbcconf",{"_index":1085,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["jetbrain",{"_index":157,"title":{},"name":{},"text":{"1":{},"3":{},"10":{},"11":{},"15":{},"24":{},"31":{},"47":{},"49":{},"54":{},"58":{},"67":{},"77":{},"81":{},"93":{},"95":{},"102":{},"103":{},"107":{},"116":{},"123":{}},"component":{}}],["jetbrains.mps.lang.core.baseconcept",{"_index":1180,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["jetbrains.mps.lang.core.inamedconcept",{"_index":1181,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["jetbrains.mps.lang.core.structure.baseconcept",{"_index":1419,"title":{},"name":{},"text":{"69":{}},"component":{}}],["jetbrains.mps.lang.core.structure.inamedconcept",{"_index":1420,"title":{},"name":{},"text":{"69":{}},"component":{}}],["join",{"_index":154,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["jq",{"_index":1508,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["js",{"_index":586,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["json",{"_index":608,"title":{},"name":{},"text":{"11":{},"33":{},"35":{},"36":{},"37":{},"54":{},"66":{},"74":{},"84":{},"85":{},"86":{},"103":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["jsondir",{"_index":1225,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["jvm",{"_index":585,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"103":{},"107":{},"110":{}},"component":{}}],["kb",{"_index":1582,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["keep",{"_index":445,"title":{},"name":{},"text":{"9":{},"34":{},"39":{},"83":{},"87":{},"101":{},"126":{},"131":{}},"component":{}}],["key",{"_index":276,"title":{"11-1":{},"54-4":{},"103-1":{}},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["keyboard",{"_index":251,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["keycloak",{"_index":704,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["keyword",{"_index":322,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["kind",{"_index":116,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["know",{"_index":308,"title":{},"name":{},"text":{"2":{},"26":{},"39":{},"48":{},"87":{},"94":{},"118":{},"131":{}},"component":{}}],["knowledg",{"_index":648,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"75":{},"103":{}},"component":{}}],["known",{"_index":965,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["kotlin",{"_index":520,"title":{"28-6":{},"120-6":{}},"name":{},"text":{"10":{},"11":{},"13":{},"20":{},"23":{},"26":{},"28":{},"31":{},"34":{},"36":{},"37":{},"38":{},"54":{},"56":{},"63":{},"81":{},"83":{},"85":{},"86":{},"103":{},"105":{},"112":{},"115":{},"118":{},"120":{},"123":{},"126":{},"128":{},"129":{},"130":{}},"component":{}}],["kotlin/typescript",{"_index":1228,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["kotlindir",{"_index":1071,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["kotlinproject",{"_index":1073,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["ktor",{"_index":1347,"title":{},"name":{},"text":{"63":{},"67":{}},"component":{}}],["ktor.appl",{"_index":1497,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["kubernet",{"_index":215,"title":{"67-8":{}},"name":{},"text":{"2":{},"6":{},"9":{},"11":{},"48":{},"54":{},"94":{},"98":{},"101":{},"103":{}},"component":{}}],["l_",{"_index":1257,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["langaug",{"_index":1155,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["languag",{"_index":30,"title":{"62":{},"11-9":{},"54-12":{},"67-2":{},"69-1":{},"103-9":{}},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"6":{},"11":{},"15":{},"18":{},"19":{},"22":{},"23":{},"26":{},"28":{},"31":{},"33":{},"35":{},"36":{},"37":{},"47":{},"48":{},"49":{},"50":{},"54":{},"58":{},"61":{},"63":{},"67":{},"69":{},"71":{},"72":{},"81":{},"84":{},"85":{},"86":{},"93":{},"94":{},"95":{},"96":{},"98":{},"103":{},"107":{},"110":{},"111":{},"114":{},"115":{},"118":{},"120":{},"123":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["languageclass",{"_index":1256,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languageclass.prefix",{"_index":1274,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languageclass.suffix",{"_index":1276,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languagedata",{"_index":1158,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["languageprefix",{"_index":1247,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["larg",{"_index":869,"title":{},"name":{},"text":{"26":{},"64":{},"118":{}},"component":{}}],["larger",{"_index":951,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["latest",{"_index":738,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"61":{},"77":{},"81":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["launch",{"_index":1543,"title":{},"name":{},"text":{"73":{}},"component":{}}],["layer",{"_index":1379,"title":{},"name":{},"text":{"67":{},"71":{},"74":{},"75":{}},"component":{}}],["lazi",{"_index":880,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["lead",{"_index":1327,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["learn",{"_index":106,"title":{},"name":{},"text":{"1":{},"6":{},"17":{},"45":{},"47":{},"60":{},"72":{},"91":{},"93":{},"98":{},"109":{},"137":{}},"component":{}}],["lectur",{"_index":777,"title":{},"name":{},"text":{"19":{},"35":{},"64":{},"68":{},"69":{},"72":{},"84":{},"111":{},"127":{}},"component":{}}],["lectureassign",{"_index":1214,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["lecturelist",{"_index":786,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["lectureref",{"_index":1525,"title":{},"name":{},"text":{"72":{}},"component":{}}],["left",{"_index":93,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["legaci",{"_index":564,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"103":{}},"component":{}}],["lesson",{"_index":108,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["level",{"_index":553,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"74":{},"75":{},"77":{},"89":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["lib",{"_index":689,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["librari",{"_index":804,"title":{},"name":{},"text":{"20":{},"74":{},"75":{},"112":{}},"component":{}}],["licens",{"_index":470,"title":{},"name":{},"text":{"10":{},"39":{},"54":{},"87":{},"102":{},"131":{}},"component":{}}],["ligh",{"_index":1346,"title":{},"name":{},"text":{"63":{}},"component":{}}],["light",{"_index":691,"title":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"name":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"text":{"13":{},"15":{},"24":{},"29":{},"34":{},"56":{},"58":{},"63":{},"66":{},"72":{},"74":{},"75":{},"77":{},"83":{},"105":{},"107":{},"116":{},"121":{},"126":{}},"component":{}}],["lightmodelcli",{"_index":907,"title":{"28-2":{},"120-2":{}},"name":{},"text":{"28":{},"120":{}},"component":{}}],["lightmodelclient.build",{"_index":1016,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["lightmodelclient.builder().modelqlclient(modelqlclient).build",{"_index":918,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["limit",{"_index":329,"title":{"69-3":{}},"name":{},"text":{"3":{},"11":{},"49":{},"54":{},"67":{},"69":{},"95":{},"103":{}},"component":{}}],["line",{"_index":1036,"title":{},"name":{},"text":{"31":{},"35":{},"81":{},"84":{},"123":{},"127":{}},"component":{}}],["link",{"_index":680,"title":{},"name":{},"text":{"12":{},"55":{},"104":{}},"component":{}}],["lionweb",{"_index":536,"title":{"11-11":{},"54-14":{},"103-11":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["list",{"_index":371,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"6":{},"10":{},"11":{},"28":{},"30":{},"31":{},"36":{},"54":{},"80":{},"81":{},"85":{},"98":{},"102":{},"103":{},"120":{},"122":{},"123":{},"128":{}},"component":{}}],["listen",{"_index":1595,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["littl",{"_index":798,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["live",{"_index":1151,"title":{},"name":{},"text":{"34":{},"74":{},"75":{},"83":{},"126":{}},"component":{}}],["load",{"_index":223,"title":{},"name":{},"text":{"2":{},"26":{},"30":{},"40":{},"48":{},"69":{},"72":{},"75":{},"80":{},"94":{},"118":{},"122":{},"132":{}},"component":{}}],["local",{"_index":207,"title":{"32":{},"82":{},"124":{}},"name":{},"text":{"2":{},"9":{},"28":{},"33":{},"39":{},"48":{},"75":{},"87":{},"94":{},"101":{},"120":{},"125":{},"131":{}},"component":{}}],["localhost:4200",{"_index":1596,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["localsourc",{"_index":1092,"title":{"33-5":{},"125-5":{}},"name":{},"text":{},"component":{}}],["locat",{"_index":436,"title":{},"name":{},"text":{"9":{},"16":{},"24":{},"33":{},"36":{},"43":{},"59":{},"61":{},"77":{},"85":{},"89":{},"101":{},"108":{},"116":{},"125":{},"128":{},"135":{}},"component":{}}],["lock",{"_index":597,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["log",{"_index":1116,"title":{},"name":{},"text":{"33":{},"72":{}},"component":{}}],["logback",{"_index":1611,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logback.groovi",{"_index":1614,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logback.xml",{"_index":1615,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger",{"_index":1636,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger[org.modelix",{"_index":1640,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger[root",{"_index":1642,"title":{},"name":{},"text":{"75":{}},"component":{}}],["login",{"_index":235,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["long",{"_index":1148,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"85":{},"126":{},"128":{}},"component":{}}],["look",{"_index":845,"title":{},"name":{},"text":{"22":{},"23":{},"69":{},"114":{},"115":{}},"component":{}}],["lose",{"_index":320,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["low",{"_index":552,"title":{},"name":{},"text":{"11":{},"54":{},"64":{},"103":{}},"component":{}}],["lower",{"_index":1149,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["mac/linux",{"_index":734,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["machin",{"_index":421,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["machineri",{"_index":709,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["made",{"_index":665,"title":{},"name":{},"text":{"11":{},"20":{},"22":{},"23":{},"31":{},"54":{},"81":{},"103":{},"112":{},"114":{},"115":{},"123":{}},"component":{}}],["mail",{"_index":243,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["main",{"_index":90,"title":{"15-2":{},"15-3":{},"15-4":{},"58-2":{},"58-3":{},"58-4":{},"107-2":{},"107-3":{},"107-4":{}},"name":{},"text":{"1":{},"11":{},"19":{},"22":{},"23":{},"64":{},"69":{},"74":{},"75":{},"103":{},"111":{},"114":{},"115":{}},"component":{}}],["main.j",{"_index":1587,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["mainli",{"_index":1280,"title":{},"name":{},"text":{"37":{},"86":{},"129":{}},"component":{}}],["maintain",{"_index":598,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["mainten",{"_index":612,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["major",{"_index":493,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["make",{"_index":419,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"18":{},"20":{},"21":{},"28":{},"45":{},"54":{},"61":{},"63":{},"68":{},"69":{},"91":{},"101":{},"102":{},"103":{},"110":{},"112":{},"113":{},"120":{},"137":{}},"component":{}}],["manag",{"_index":472,"title":{},"name":{},"text":{"10":{},"13":{},"16":{},"22":{},"23":{},"24":{},"43":{},"54":{},"56":{},"61":{},"77":{},"102":{},"105":{},"108":{},"114":{},"115":{},"116":{},"135":{}},"component":{}}],["mani",{"_index":484,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["manipul",{"_index":384,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["manual",{"_index":780,"title":{"65":{}},"name":{},"text":{"19":{},"66":{},"74":{},"75":{},"111":{}},"component":{}}],["map",{"_index":1156,"title":{"66-2":{}},"name":{},"text":{"35":{},"44":{},"84":{},"90":{},"127":{},"136":{}},"component":{}}],["maploc",{"_index":954,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mark",{"_index":517,"title":{},"name":{},"text":{"10":{}},"component":{}}],["materi",{"_index":710,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["matter",{"_index":1392,"title":{},"name":{},"text":{"68":{}},"component":{}}],["maven",{"_index":1044,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["max",{"_index":1647,"title":{},"name":{},"text":{"75":{}},"component":{}}],["maximum",{"_index":1400,"title":{},"name":{},"text":{"69":{}},"component":{}}],["maxparticip",{"_index":1173,"title":{},"name":{},"text":{"35":{},"72":{},"84":{},"127":{}},"component":{}}],["maxplac",{"_index":1193,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"73":{},"84":{},"127":{}},"component":{}}],["mayor",{"_index":103,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["mb",{"_index":1578,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["mean",{"_index":151,"title":{},"name":{},"text":{"1":{},"2":{},"33":{},"39":{},"47":{},"48":{},"87":{},"93":{},"94":{},"125":{},"131":{}},"component":{}}],["meant",{"_index":762,"title":{},"name":{},"text":{"18":{},"61":{},"67":{},"110":{}},"component":{}}],["meetup",{"_index":512,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["member",{"_index":923,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["memori",{"_index":889,"title":{},"name":{},"text":{"26":{},"32":{},"36":{},"75":{},"82":{},"118":{},"124":{},"128":{}},"component":{}}],["menu",{"_index":1333,"title":{},"name":{},"text":{"47":{}},"component":{}}],["messag",{"_index":453,"title":{},"name":{},"text":{"9":{},"72":{},"101":{}},"component":{}}],["met",{"_index":1542,"title":{},"name":{},"text":{"73":{}},"component":{}}],["meta",{"_index":37,"title":{"69":{}},"name":{"69":{}},"text":{"1":{},"3":{},"11":{},"15":{},"18":{},"28":{},"31":{},"35":{},"36":{},"38":{},"47":{},"49":{},"54":{},"58":{},"61":{},"66":{},"67":{},"81":{},"84":{},"93":{},"95":{},"103":{},"107":{},"110":{},"120":{},"123":{},"127":{},"128":{},"130":{}},"component":{}}],["metamodel",{"_index":381,"title":{"19":{},"35":{},"84":{},"111":{},"127":{}},"name":{"19":{},"35":{},"84":{},"111":{},"127":{}},"text":{"6":{},"11":{},"13":{},"19":{},"20":{},"23":{},"31":{},"35":{},"36":{},"37":{},"38":{},"54":{},"56":{},"63":{},"67":{},"81":{},"84":{},"85":{},"86":{},"98":{},"103":{},"105":{},"111":{},"112":{},"115":{},"123":{},"127":{},"128":{},"129":{},"130":{}},"component":{}}],["method",{"_index":1097,"title":{"36-4":{},"85-4":{},"128-4":{}},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["migrat",{"_index":664,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["minim",{"_index":1095,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["minimum",{"_index":891,"title":{},"name":{},"text":{"26":{},"28":{},"118":{},"120":{}},"component":{}}],["minor",{"_index":494,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["minut",{"_index":1367,"title":{},"name":{},"text":{"64":{}},"component":{}}],["miss",{"_index":950,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mission",{"_index":339,"title":{"4-2":{},"50-2":{},"96-2":{}},"name":{},"text":{},"component":{}}],["mode",{"_index":187,"title":{},"name":{},"text":{"2":{},"48":{},"74":{},"75":{},"94":{}},"component":{}}],["model",{"_index":14,"title":{"21":{},"22":{},"23":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"62":{},"69":{},"70":{},"73":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"113":{},"114":{},"115":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{},"2-3":{},"11-3":{},"11-4":{},"21-4":{},"21-6":{},"39-2":{},"48-3":{},"54-6":{},"54-7":{},"67-3":{},"87-2":{},"94-3":{},"103-3":{},"103-4":{},"113-4":{},"113-6":{},"131-2":{}},"name":{"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"69":{},"70":{},"72":{},"73":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"text":{"1":{},"2":{},"4":{},"6":{},"10":{},"11":{},"13":{},"15":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"47":{},"48":{},"50":{},"54":{},"56":{},"58":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"93":{},"94":{},"96":{},"98":{},"102":{},"103":{},"105":{},"107":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{}},"component":{}}],["model:1.3.2",{"_index":1476,"title":{},"name":{},"text":{"70":{}},"component":{}}],["modelfacade.tolocalbranch(modelfacade.newlocaltre",{"_index":1003,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["modelix",{"_index":8,"title":{"1":{},"4":{},"6":{},"13":{},"15":{},"39":{},"44":{},"45":{},"47":{},"50":{},"56":{},"58":{},"61":{},"87":{},"90":{},"91":{},"93":{},"96":{},"98":{},"105":{},"107":{},"131":{},"136":{},"137":{},"2-1":{},"6-1":{},"6-4":{},"15-1":{},"15-2":{},"15-3":{},"15-4":{},"16-3":{},"24-6":{},"43-6":{},"48-1":{},"58-1":{},"58-2":{},"58-3":{},"58-4":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"94-1":{},"98-1":{},"98-4":{},"107-1":{},"107-2":{},"107-3":{},"107-4":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"19":{},"20":{},"23":{},"24":{},"26":{},"34":{},"35":{},"38":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"49":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"67":{},"68":{},"69":{},"71":{},"75":{},"77":{},"83":{},"84":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"105":{},"107":{},"108":{},"110":{},"111":{},"112":{},"115":{},"116":{},"118":{},"126":{},"127":{},"130":{},"131":{},"135":{},"136":{},"137":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{}}}],["modelix.cor",{"_index":447,"title":{"24":{},"25":{},"27":{},"42":{},"77":{},"78":{},"79":{},"88":{},"116":{},"117":{},"119":{},"134":{}},"name":{},"text":{"9":{},"11":{},"15":{},"24":{},"32":{},"54":{},"58":{},"77":{},"82":{},"101":{},"103":{},"107":{},"116":{},"124":{}},"component":{}}],["modelix.doc",{"_index":620,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["modelix.platform",{"_index":720,"title":{"43":{},"46":{},"89":{},"92":{},"135":{},"138":{}},"name":{},"text":{"15":{},"43":{},"58":{},"89":{},"107":{},"135":{}},"component":{}}],["modelix/model",{"_index":839,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["modelix/modelix",{"_index":1475,"title":{},"name":{},"text":{"70":{}},"component":{}}],["modelix/modelix.doc",{"_index":137,"title":{},"name":{},"text":{"1":{},"12":{},"47":{},"55":{},"93":{},"104":{}},"component":{}}],["modelix/vu",{"_index":840,"title":{},"name":{},"text":{"22":{},"41":{},"114":{},"133":{}},"component":{}}],["modelix_platform_vers",{"_index":1318,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["modelixcorevers",{"_index":1041,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modelixcoreversion=1.4.10",{"_index":1038,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modelnam",{"_index":991,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelname.get",{"_index":994,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelql",{"_index":706,"title":{"26":{},"28":{},"72":{},"118":{},"120":{},"28-3":{},"120-3":{}},"name":{"26":{},"28":{},"118":{},"120":{}},"text":{"13":{},"26":{},"28":{},"36":{},"63":{},"67":{},"71":{},"72":{},"105":{},"118":{},"120":{},"128":{}},"component":{}}],["modelqlcli",{"_index":906,"title":{"28-1":{},"120-1":{}},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlclient.builder().build",{"_index":917,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlclient.builder().url(\"http://localhost/query\").httpclient(httpclient).build",{"_index":913,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlkotlindir",{"_index":921,"title":{},"name":{},"text":{"28":{},"36":{},"120":{},"128":{}},"component":{}}],["modelserv",{"_index":849,"title":{},"name":{},"text":{"22":{},"23":{},"75":{},"114":{},"115":{}},"component":{}}],["modelsync",{"_index":1090,"title":{"33-3":{},"125-3":{}},"name":{},"text":{"33":{},"125":{}},"component":{}}],["modif",{"_index":286,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["modifi",{"_index":555,"title":{},"name":{},"text":{"11":{},"22":{},"23":{},"54":{},"103":{},"114":{},"115":{}},"component":{}}],["modul",{"_index":203,"title":{},"name":{},"text":{"2":{},"28":{},"30":{},"33":{},"36":{},"39":{},"48":{},"80":{},"85":{},"87":{},"94":{},"120":{},"122":{},"125":{},"128":{},"131":{}},"component":{}}],["modulefold",{"_index":1230,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["modulenam",{"_index":988,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modulename.get",{"_index":996,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modulesfrom",{"_index":1243,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"build/depend",{"_index":1069,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"languag",{"_index":1063,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"solut",{"_index":1064,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["moment",{"_index":739,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"69":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["mono",{"_index":903,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["more",{"_index":58,"title":{},"name":{},"text":{"1":{},"3":{},"6":{},"11":{},"15":{},"19":{},"23":{},"26":{},"28":{},"30":{},"31":{},"32":{},"34":{},"45":{},"47":{},"49":{},"54":{},"58":{},"64":{},"67":{},"74":{},"75":{},"80":{},"81":{},"82":{},"83":{},"91":{},"93":{},"95":{},"98":{},"103":{},"107":{},"111":{},"115":{},"118":{},"120":{},"122":{},"123":{},"124":{},"126":{},"137":{}},"component":{}}],["motiv",{"_index":178,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["mous",{"_index":252,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["mp",{"_index":153,"title":{"21":{},"35":{},"40":{},"62":{},"84":{},"113":{},"127":{},"132":{},"11-8":{},"21-3":{},"21-5":{},"22-4":{},"23-4":{},"39-2":{},"54-11":{},"67-2":{},"87-2":{},"103-8":{},"113-3":{},"113-5":{},"114-4":{},"115-4":{},"131-2":{}},"name":{"40":{},"132":{}},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"13":{},"15":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"28":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"39":{},"45":{},"47":{},"48":{},"49":{},"54":{},"56":{},"58":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"83":{},"84":{},"85":{},"87":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"105":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"131":{},"137":{}},"component":{}}],["mps(\"com.jetbrains:mps:$mpsvers",{"_index":1054,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mps/languag",{"_index":842,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["mps/metamodel",{"_index":850,"title":{},"name":{},"text":{"22":{},"23":{},"31":{},"63":{},"81":{},"114":{},"115":{},"123":{}},"component":{}}],["mps/project",{"_index":819,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"74":{},"75":{},"113":{},"114":{},"115":{}},"component":{}}],["mps:96533389",{"_index":1169,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["mps:metamodel:build",{"_index":1082,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mps:project",{"_index":820,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["mps_version",{"_index":1317,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["mps_version:$modelix_platform_vers",{"_index":1322,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["mpsdebugport",{"_index":1126,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["mpsdepend",{"_index":1053,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsdir",{"_index":1050,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsheapsiz",{"_index":1121,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["mpshome",{"_index":1062,"title":{},"name":{},"text":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"component":{}}],["mpslanguageregistry.getinst",{"_index":1411,"title":{},"name":{},"text":{"69":{}},"component":{}}],["mpsversion",{"_index":1046,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsversion=2021.3.2",{"_index":1039,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["multi",{"_index":584,"title":{},"name":{},"text":{"11":{},"34":{},"54":{},"83":{},"103":{},"126":{}},"component":{}}],["multipl",{"_index":45,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"15":{},"26":{},"28":{},"35":{},"47":{},"48":{},"54":{},"58":{},"67":{},"84":{},"93":{},"94":{},"98":{},"103":{},"107":{},"118":{},"120":{},"127":{}},"component":{}}],["multiproject",{"_index":708,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["myimage(it",{"_index":961,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myimage(v",{"_index":958,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mylanguageprefix",{"_index":1275,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["mylanguagesuffix",{"_index":1277,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["myproduct(id.get",{"_index":979,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myproduct(it.first",{"_index":963,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myproduct(v",{"_index":955,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["n_",{"_index":1012,"title":{},"name":{},"text":{"29":{},"36":{},"85":{},"121":{},"128":{}},"component":{}}],["name",{"_index":416,"title":{"9-9":{},"9-10":{},"36-5":{},"85-5":{},"101-9":{},"101-10":{},"128-5":{}},"name":{},"text":{"9":{},"11":{},"13":{},"21":{},"28":{},"29":{},"31":{},"33":{},"35":{},"36":{},"40":{},"54":{},"56":{},"69":{},"72":{},"73":{},"74":{},"75":{},"81":{},"84":{},"85":{},"101":{},"103":{},"105":{},"113":{},"120":{},"121":{},"123":{},"125":{},"127":{},"128":{},"132":{}},"component":{}}],["nameconfig",{"_index":1254,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["namespac",{"_index":1065,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["nativ",{"_index":38,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["navig",{"_index":554,"title":{},"name":{},"text":{"11":{},"15":{},"54":{},"58":{},"103":{},"107":{}},"component":{}}],["ncludedlanguag",{"_index":1245,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["necessari",{"_index":614,"title":{},"name":{},"text":{"11":{},"18":{},"31":{},"45":{},"54":{},"81":{},"91":{},"103":{},"110":{},"123":{},"137":{}},"component":{}}],["necessarili",{"_index":1490,"title":{},"name":{},"text":{"71":{}},"component":{}}],["need",{"_index":262,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"64":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"87":{},"89":{},"94":{},"101":{},"103":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"131":{},"135":{}},"component":{}}],["new",{"_index":34,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"9":{},"11":{},"28":{},"33":{},"39":{},"45":{},"47":{},"48":{},"50":{},"54":{},"69":{},"72":{},"74":{},"75":{},"87":{},"91":{},"93":{},"94":{},"96":{},"101":{},"103":{},"120":{},"125":{},"131":{},"137":{}},"component":{}}],["newest",{"_index":1369,"title":{},"name":{},"text":{"64":{}},"component":{}}],["next",{"_index":67,"title":{"6-5":{},"98-5":{}},"name":{},"text":{"1":{},"2":{},"20":{},"36":{},"47":{},"48":{},"64":{},"68":{},"85":{},"93":{},"94":{},"112":{},"128":{}},"component":{}}],["nexu",{"_index":481,"title":{},"name":{},"text":{"10":{},"13":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"54":{},"56":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"105":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{}},"component":{}}],["ng",{"_index":1571,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["node",{"_index":275,"title":{},"name":{},"text":{"2":{},"19":{},"26":{},"28":{},"30":{},"33":{},"39":{},"48":{},"69":{},"74":{},"75":{},"80":{},"87":{},"94":{},"111":{},"118":{},"120":{},"122":{},"125":{},"131":{}},"component":{}}],["node%253ar%253ace161c54",{"_index":1521,"title":{},"name":{},"text":{"72":{}},"component":{}}],["node%3ar%3ace161c54",{"_index":1510,"title":{},"name":{},"text":{"72":{}},"component":{}}],["node.getchildren(\"modules\").filterload",{"_index":1033,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["none",{"_index":757,"title":{},"name":{},"text":{"18":{},"61":{},"110":{}},"component":{}}],["notabl",{"_index":603,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["note",{"_index":358,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["noteworthi",{"_index":1382,"title":{},"name":{},"text":{"67":{}},"component":{}}],["noth",{"_index":317,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["notif",{"_index":1386,"title":{},"name":{},"text":{"67":{}},"component":{}}],["notion",{"_index":902,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["notnul",{"_index":1433,"title":{},"name":{},"text":{"69":{}},"component":{}}],["now",{"_index":588,"title":{},"name":{},"text":{"11":{},"19":{},"22":{},"23":{},"31":{},"54":{},"69":{},"72":{},"73":{},"81":{},"103":{},"111":{},"114":{},"115":{},"123":{}},"component":{}}],["npm",{"_index":434,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["null",{"_index":1240,"title":{},"name":{},"text":{"36":{},"69":{},"72":{},"75":{},"128":{}},"component":{}}],["nullabl",{"_index":1436,"title":{},"name":{},"text":{"69":{}},"component":{}}],["number",{"_index":495,"title":{},"name":{},"text":{"10":{},"11":{},"26":{},"28":{},"45":{},"54":{},"91":{},"102":{},"103":{},"118":{},"120":{},"137":{}},"component":{}}],["o",{"_index":1676,"title":{},"name":{},"text":{"75":{}},"component":{}}],["o.m.s.r.modelserverlightwrapp",{"_index":1688,"title":{},"name":{},"text":{"75":{}},"component":{}}],["oauth",{"_index":239,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["object",{"_index":982,"title":{},"name":{},"text":{"28":{},"36":{},"41":{},"85":{},"120":{},"128":{},"133":{}},"component":{}}],["observ",{"_index":593,"title":{},"name":{},"text":{"11":{},"54":{},"73":{},"103":{}},"component":{}}],["obtain",{"_index":590,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"63":{},"67":{},"68":{},"75":{},"77":{},"89":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["ofconcept(c_staticmethoddeclar",{"_index":924,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["offer",{"_index":1298,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["on",{"_index":333,"title":{},"name":{},"text":{"3":{},"6":{},"11":{},"18":{},"20":{},"22":{},"26":{},"28":{},"39":{},"40":{},"45":{},"47":{},"49":{},"54":{},"61":{},"67":{},"68":{},"69":{},"71":{},"87":{},"91":{},"95":{},"98":{},"103":{},"110":{},"112":{},"114":{},"118":{},"120":{},"131":{},"132":{},"137":{}},"component":{}}],["onc",{"_index":666,"title":{},"name":{},"text":{"11":{},"19":{},"31":{},"54":{},"61":{},"63":{},"72":{},"73":{},"74":{},"75":{},"81":{},"103":{},"111":{},"123":{}},"component":{}}],["oneoff",{"_index":1202,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["onetimeschedul",{"_index":788,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["ongo",{"_index":1387,"title":{},"name":{},"text":{"67":{}},"component":{}}],["onsuccess",{"_index":978,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["open",{"_index":11,"title":{},"name":{},"text":{"1":{},"4":{},"10":{},"12":{},"16":{},"21":{},"22":{},"23":{},"24":{},"40":{},"43":{},"47":{},"50":{},"54":{},"55":{},"61":{},"72":{},"74":{},"75":{},"77":{},"93":{},"96":{},"102":{},"104":{},"108":{},"113":{},"114":{},"115":{},"116":{},"132":{},"135":{}},"component":{}}],["openapi",{"_index":1293,"title":{"71":{},"67-4":{},"67-5":{},"68-3":{}},"name":{"71":{}},"text":{"39":{},"63":{},"67":{},"68":{},"71":{},"72":{},"87":{},"131":{}},"component":{}}],["openapi.yaml",{"_index":1491,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["openapi.yml",{"_index":1482,"title":{},"name":{},"text":{"71":{}},"component":{}}],["oper",{"_index":281,"title":{"39-1":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"14":{},"28":{},"33":{},"39":{},"48":{},"57":{},"87":{},"94":{},"106":{},"120":{},"125":{},"131":{}},"component":{}}],["operand",{"_index":983,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["opt",{"_index":523,"title":{},"name":{},"text":{"10":{}},"component":{}}],["optim",{"_index":887,"title":{},"name":{},"text":{"26":{},"34":{},"83":{},"118":{},"126":{}},"component":{}}],["option",{"_index":210,"title":{"22-4":{},"23-4":{},"114-4":{},"115-4":{}},"name":{},"text":{"2":{},"11":{},"16":{},"23":{},"24":{},"28":{},"30":{},"35":{},"36":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"75":{},"77":{},"80":{},"84":{},"85":{},"87":{},"89":{},"94":{},"103":{},"108":{},"115":{},"116":{},"120":{},"122":{},"127":{},"128":{},"131":{},"135":{}},"component":{}}],["options>ng",{"_index":1671,"title":{},"name":{},"text":{"75":{}},"component":{}}],["order",{"_index":297,"title":{},"name":{},"text":{"2":{},"9":{},"35":{},"39":{},"45":{},"48":{},"84":{},"87":{},"91":{},"94":{},"101":{},"127":{},"131":{},"137":{}},"component":{}}],["org.example.mylanguag",{"_index":1077,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["org.jetbrains.annotations.notnul",{"_index":1422,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.jetbrains.annotations.nul",{"_index":1424,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix",{"_index":685,"title":{},"name":{},"text":{"13":{},"56":{},"75":{},"105":{}},"component":{}}],["org.modelix.bulk",{"_index":696,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["org.modelix.languag",{"_index":1270,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["org.modelix.model",{"_index":686,"title":{},"name":{},"text":{"13":{},"31":{},"56":{},"81":{},"105":{},"123":{}},"component":{}}],["org.modelix.model.api",{"_index":1281,"title":{"38-2":{},"130-2":{}},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.api.inod",{"_index":1423,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix.model.area",{"_index":1287,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.data",{"_index":1285,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.server.main",{"_index":1481,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["org.modelix.mp",{"_index":497,"title":{},"name":{},"text":{"10":{},"11":{},"13":{},"54":{},"56":{},"102":{},"103":{},"105":{}},"component":{}}],["org.modelix.mps.apigen.runtime.inodehold",{"_index":1421,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix.mps.build",{"_index":698,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["org.modelix.mps.model",{"_index":693,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["org.modelix.platform",{"_index":627,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["org.modelix:modelql",{"_index":1237,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["org.modelix:platform",{"_index":1325,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["organ",{"_index":1342,"title":{},"name":{},"text":{"63":{}},"component":{}}],["organis",{"_index":474,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["orient",{"_index":107,"title":{},"name":{},"text":{"1":{},"5":{},"8":{},"14":{},"17":{},"47":{},"51":{},"53":{},"57":{},"60":{},"93":{},"97":{},"100":{},"106":{},"109":{}},"component":{}}],["ot",{"_index":289,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["other",{"_index":57,"title":{},"name":{},"text":{"1":{},"15":{},"24":{},"47":{},"58":{},"77":{},"93":{},"107":{},"116":{}},"component":{}}],["otherwis",{"_index":79,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["out",{"_index":72,"title":{},"name":{},"text":{"1":{},"6":{},"10":{},"11":{},"30":{},"31":{},"32":{},"45":{},"47":{},"54":{},"80":{},"81":{},"82":{},"91":{},"93":{},"98":{},"102":{},"103":{},"122":{},"123":{},"124":{},"137":{}},"component":{}}],["outlin",{"_index":633,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["output",{"_index":968,"title":{},"name":{},"text":{"28":{},"36":{},"74":{},"75":{},"120":{},"128":{}},"component":{}}],["outsid",{"_index":667,"title":{},"name":{},"text":{"11":{},"30":{},"35":{},"54":{},"64":{},"68":{},"80":{},"84":{},"103":{},"122":{},"127":{}},"component":{}}],["over",{"_index":63,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"30":{},"39":{},"47":{},"48":{},"54":{},"58":{},"80":{},"87":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"122":{},"131":{}},"component":{}}],["overcom",{"_index":328,"title":{},"name":{},"text":{"3":{},"11":{},"49":{},"54":{},"95":{},"103":{}},"component":{}}],["overrid",{"_index":1313,"title":{"45-2":{},"91-2":{},"137-2":{}},"name":{},"text":{"45":{},"69":{},"91":{},"137":{}},"component":{}}],["overview",{"_index":62,"title":{"6":{},"20":{},"98":{},"112":{},"2-1":{},"11-1":{},"33-1":{},"35-1":{},"36-1":{},"38-1":{},"41-1":{},"48-1":{},"54-4":{},"66-1":{},"84-1":{},"85-1":{},"94-1":{},"103-1":{},"125-1":{},"127-1":{},"128-1":{},"130-1":{},"133-1":{}},"name":{"6":{},"20":{},"98":{},"112":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"18":{},"20":{},"22":{},"23":{},"47":{},"48":{},"54":{},"58":{},"67":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"110":{},"112":{},"114":{},"115":{}},"component":{}}],["p",{"_index":1472,"title":{},"name":{},"text":{"70":{}},"component":{}}],["packag",{"_index":482,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"10":{},"13":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"56":{},"59":{},"61":{},"69":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"105":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["page",{"_index":94,"title":{"68":{},"67-6":{}},"name":{},"text":{"1":{},"12":{},"15":{},"20":{},"22":{},"28":{},"47":{},"55":{},"58":{},"63":{},"64":{},"68":{},"93":{},"104":{},"107":{},"112":{},"114":{},"120":{}},"component":{}}],["paramet",{"_index":1098,"title":{},"name":{},"text":{"33":{},"36":{},"40":{},"85":{},"125":{},"128":{},"132":{}},"component":{}}],["parent",{"_index":1394,"title":{},"name":{},"text":{"68":{},"72":{},"73":{}},"component":{}}],["parser",{"_index":330,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["part",{"_index":49,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"9":{},"18":{},"20":{},"26":{},"38":{},"39":{},"47":{},"48":{},"61":{},"68":{},"69":{},"87":{},"93":{},"94":{},"98":{},"101":{},"110":{},"112":{},"118":{},"130":{},"131":{}},"component":{}}],["partial",{"_index":644,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["particular",{"_index":344,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["past",{"_index":751,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["patch",{"_index":496,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["path",{"_index":41,"title":{},"name":{},"text":{"1":{},"32":{},"40":{},"47":{},"75":{},"82":{},"93":{},"124":{},"132":{}},"component":{}}],["pattern",{"_index":1001,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["paus",{"_index":1673,"title":{},"name":{},"text":{"75":{}},"component":{}}],["perform",{"_index":264,"title":{},"name":{},"text":{"2":{},"26":{},"32":{},"33":{},"48":{},"82":{},"94":{},"118":{},"124":{},"125":{}},"component":{}}],["period",{"_index":1365,"title":{},"name":{},"text":{"64":{}},"component":{}}],["persist",{"_index":376,"title":{},"name":{},"text":{"6":{},"74":{},"75":{},"98":{}},"component":{}}],["person",{"_index":744,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["phase",{"_index":1572,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["philosophi",{"_index":643,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["physic",{"_index":1527,"title":{},"name":{},"text":{"72":{}},"component":{}}],["pick",{"_index":1326,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["piec",{"_index":660,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["plan",{"_index":450,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"101":{},"103":{}},"component":{}}],["platform",{"_index":13,"title":{"44":{},"45":{},"90":{},"91":{},"136":{},"137":{},"9-5":{},"15-2":{},"58-2":{},"101-5":{},"107-2":{}},"name":{"45":{},"91":{},"137":{}},"text":{"1":{},"4":{},"6":{},"10":{},"11":{},"13":{},"15":{},"18":{},"20":{},"24":{},"34":{},"43":{},"44":{},"45":{},"47":{},"50":{},"54":{},"56":{},"58":{},"61":{},"67":{},"77":{},"83":{},"89":{},"90":{},"91":{},"93":{},"96":{},"98":{},"102":{},"103":{},"105":{},"107":{},"110":{},"112":{},"116":{},"126":{},"135":{},"136":{},"137":{}},"component":{}}],["playbook",{"_index":134,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["pleas",{"_index":140,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"12":{},"15":{},"39":{},"47":{},"54":{},"55":{},"58":{},"87":{},"93":{},"102":{},"103":{},"104":{},"107":{},"131":{}},"component":{}}],["plugin",{"_index":191,"title":{"31":{},"33":{},"36":{},"40":{},"81":{},"85":{},"123":{},"125":{},"128":{},"132":{}},"name":{"40":{},"132":{}},"text":{"2":{},"10":{},"11":{},"13":{},"20":{},"21":{},"22":{},"23":{},"28":{},"30":{},"31":{},"33":{},"36":{},"37":{},"39":{},"40":{},"41":{},"44":{},"48":{},"54":{},"56":{},"63":{},"67":{},"70":{},"72":{},"74":{},"75":{},"80":{},"81":{},"85":{},"86":{},"87":{},"90":{},"94":{},"102":{},"103":{},"105":{},"112":{},"113":{},"114":{},"115":{},"120":{},"122":{},"123":{},"125":{},"128":{},"129":{},"131":{},"132":{},"133":{},"136":{}},"component":{}}],["pluginmanag",{"_index":1040,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["podman",{"_index":766,"title":{},"name":{},"text":{"18":{},"110":{}},"component":{}}],["point",{"_index":1223,"title":{"61-8":{}},"name":{},"text":{"36":{},"75":{},"85":{},"128":{}},"component":{}}],["polyfil",{"_index":1580,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["polyfills.j",{"_index":1579,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["poor",{"_index":875,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["port",{"_index":1132,"title":{},"name":{},"text":{"33":{},"40":{},"68":{},"72":{},"75":{},"125":{},"132":{}},"component":{}}],["possibl",{"_index":225,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"16":{},"18":{},"24":{},"28":{},"38":{},"39":{},"43":{},"48":{},"54":{},"61":{},"69":{},"77":{},"87":{},"94":{},"98":{},"103":{},"108":{},"110":{},"116":{},"120":{},"130":{},"131":{},"135":{}},"component":{}}],["post",{"_index":579,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["potenti",{"_index":571,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["power",{"_index":1356,"title":{},"name":{},"text":{"64":{}},"component":{}}],["practic",{"_index":1013,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"80":{},"81":{},"82":{},"122":{},"123":{},"124":{}},"component":{}}],["pre",{"_index":435,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["precondit",{"_index":1541,"title":{},"name":{},"text":{"73":{}},"component":{}}],["predict",{"_index":886,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["prefix",{"_index":456,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"33":{},"36":{},"54":{},"85":{},"101":{},"102":{},"103":{},"125":{},"128":{}},"component":{}}],["prepar",{"_index":632,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["prerequisit",{"_index":756,"title":{"18-1":{},"110-1":{}},"name":{},"text":{},"component":{}}],["present",{"_index":1014,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"80":{},"81":{},"82":{},"122":{},"123":{},"124":{}},"component":{}}],["press",{"_index":1670,"title":{},"name":{},"text":{"75":{}},"component":{}}],["prevent",{"_index":1032,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["previou",{"_index":282,"title":{},"name":{},"text":{"2":{},"11":{},"36":{},"39":{},"48":{},"54":{},"85":{},"87":{},"94":{},"103":{},"128":{},"131":{}},"component":{}}],["previous",{"_index":797,"title":{},"name":{},"text":{"20":{},"21":{},"28":{},"36":{},"68":{},"75":{},"85":{},"112":{},"113":{},"120":{},"128":{}},"component":{}}],["primari",{"_index":722,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["primarili",{"_index":1221,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["println(\"id",{"_index":946,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["prioriti",{"_index":527,"title":{"11-1":{},"54-4":{},"103-1":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["privat",{"_index":1455,"title":{},"name":{},"text":{"69":{}},"component":{}}],["problem",{"_index":298,"title":{},"name":{},"text":{"2":{},"8":{},"26":{},"39":{},"48":{},"53":{},"87":{},"94":{},"100":{},"118":{},"131":{}},"component":{}}],["process",{"_index":253,"title":{},"name":{},"text":{"2":{},"29":{},"33":{},"34":{},"36":{},"48":{},"71":{},"74":{},"75":{},"83":{},"85":{},"94":{},"121":{},"125":{},"126":{},"128":{}},"component":{}}],["produc",{"_index":283,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["product",{"_index":55,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["profil",{"_index":822,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["program",{"_index":324,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["programm",{"_index":859,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["progress",{"_index":1334,"title":{},"name":{},"text":{"61":{}},"component":{}}],["project",{"_index":36,"title":{"66":{},"2-1":{},"40-3":{},"48-1":{},"94-1":{},"132-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"16":{},"17":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"30":{},"31":{},"32":{},"33":{},"36":{},"40":{},"43":{},"45":{},"47":{},"48":{},"49":{},"54":{},"59":{},"60":{},"61":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"85":{},"89":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"108":{},"109":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"122":{},"123":{},"124":{},"125":{},"128":{},"132":{},"135":{},"137":{}},"component":{}}],["project\").projectdir.resolve(\"src/gen",{"_index":1079,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project(\":mi",{"_index":1074,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project(\":mps:metamodel\").projectdir.resolve(\"src/main/kotlin",{"_index":1072,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project.layout.builddirectory.dir(\"mps\").get().asfil",{"_index":1051,"title":{},"name":{},"text":{"31":{},"33":{},"123":{},"125":{}},"component":{}}],["projectdir.resolve(\"mi",{"_index":1142,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["projector",{"_index":659,"title":{},"name":{},"text":{"11":{},"18":{},"54":{},"61":{},"103":{},"110":{}},"component":{}}],["project’",{"_index":1314,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["propag",{"_index":866,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["properti",{"_index":754,"title":{},"name":{},"text":{"16":{},"24":{},"28":{},"29":{},"35":{},"36":{},"43":{},"59":{},"61":{},"69":{},"75":{},"77":{},"84":{},"89":{},"108":{},"116":{},"120":{},"121":{},"127":{},"128":{},"135":{}},"component":{}}],["propertyvalu",{"_index":1438,"title":{},"name":{},"text":{"69":{}},"component":{}}],["propertyvalue.isempti",{"_index":1440,"title":{},"name":{},"text":{"69":{}},"component":{}}],["protected_prefix",{"_index":1292,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["prototyp",{"_index":658,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["provid",{"_index":219,"title":{"4-3":{},"50-3":{},"96-3":{}},"name":{},"text":{"2":{},"6":{},"9":{},"10":{},"11":{},"15":{},"18":{},"20":{},"22":{},"26":{},"28":{},"31":{},"34":{},"35":{},"36":{},"38":{},"39":{},"41":{},"43":{},"45":{},"48":{},"54":{},"58":{},"61":{},"66":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"81":{},"83":{},"84":{},"85":{},"87":{},"89":{},"91":{},"94":{},"98":{},"101":{},"102":{},"103":{},"107":{},"110":{},"112":{},"114":{},"118":{},"120":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"133":{},"135":{},"137":{}},"component":{}}],["proxi",{"_index":231,"title":{},"name":{},"text":{"2":{},"13":{},"48":{},"56":{},"94":{},"105":{}},"component":{}}],["public",{"_index":730,"title":{"16-3":{},"24-6":{},"43-6":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"69":{}},"component":{}}],["publish",{"_index":477,"title":{},"name":{},"text":{"10":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"102":{},"108":{},"116":{},"135":{}},"component":{}}],["pull",{"_index":142,"title":{"9-11":{},"101-11":{}},"name":{},"text":{"1":{},"9":{},"12":{},"47":{},"55":{},"93":{},"101":{},"104":{}},"component":{}}],["purpos",{"_index":763,"title":{},"name":{},"text":{"18":{},"28":{},"61":{},"71":{},"110":{},"120":{}},"component":{}}],["push",{"_index":1385,"title":{},"name":{},"text":{"67":{}},"component":{}}],["python",{"_index":433,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["ql",{"_index":1348,"title":{},"name":{"72":{}},"text":{"63":{},"66":{},"68":{},"74":{},"75":{}},"component":{}}],["ql:build",{"_index":1492,"title":{},"name":{},"text":{"72":{}},"component":{}}],["ql:run",{"_index":1493,"title":{},"name":{},"text":{"72":{},"75":{}},"component":{}}],["qualifi",{"_index":1111,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["quarku",{"_index":810,"title":{},"name":{},"text":{"20":{},"23":{},"63":{},"67":{},"73":{},"112":{},"115":{}},"component":{}}],["queri",{"_index":881,"title":{"28-4":{},"28-5":{},"120-4":{},"120-5":{}},"name":{},"text":{"26":{},"28":{},"30":{},"40":{},"72":{},"80":{},"118":{},"120":{},"122":{},"132":{}},"component":{}}],["question",{"_index":87,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["quick",{"_index":352,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["quickli",{"_index":870,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["r",{"_index":1674,"title":{},"name":{},"text":{"75":{}},"component":{}}],["r1",{"_index":506,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["r2",{"_index":508,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["r:ce161c54",{"_index":1544,"title":{},"name":{},"text":{"73":{}},"component":{}}],["rare",{"_index":316,"title":{},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["raw",{"_index":1574,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["re",{"_index":601,"title":{},"name":{},"text":{"11":{},"31":{},"54":{},"81":{},"103":{},"123":{}},"component":{}}],["reactiv",{"_index":867,"title":{"26-1":{},"118-1":{}},"name":{},"text":{"26":{},"41":{},"118":{},"133":{}},"component":{}}],["reactor",{"_index":900,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["read",{"_index":652,"title":{},"name":{},"text":{"11":{},"20":{},"22":{},"23":{},"28":{},"30":{},"41":{},"54":{},"61":{},"63":{},"64":{},"67":{},"68":{},"80":{},"103":{},"112":{},"114":{},"115":{},"120":{},"122":{},"133":{}},"component":{}}],["read/writ",{"_index":1022,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["readabl",{"_index":970,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["reader",{"_index":110,"title":{},"name":{},"text":{"1":{},"8":{},"17":{},"47":{},"53":{},"60":{},"93":{},"100":{},"109":{}},"component":{}}],["readi",{"_index":1304,"title":{},"name":{},"text":{"40":{},"72":{},"132":{}},"component":{}}],["real",{"_index":408,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"8":{},"11":{},"39":{},"53":{},"54":{},"66":{},"70":{},"87":{},"100":{},"103":{},"131":{}},"component":{}}],["realiz",{"_index":838,"title":{},"name":{},"text":{"22":{},"23":{},"61":{},"63":{},"67":{},"114":{},"115":{}},"component":{}}],["realli",{"_index":1488,"title":{},"name":{},"text":{"71":{}},"component":{}}],["realtim",{"_index":278,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["reason",{"_index":525,"title":{},"name":{},"text":{"10":{}},"component":{}}],["receiv",{"_index":193,"title":{},"name":{},"text":{"2":{},"28":{},"30":{},"39":{},"48":{},"80":{},"87":{},"94":{},"120":{},"122":{},"131":{}},"component":{}}],["recommend",{"_index":430,"title":{},"name":{},"text":{"9":{},"11":{},"28":{},"32":{},"54":{},"82":{},"101":{},"103":{},"120":{},"124":{}},"component":{}}],["recur",{"_index":1186,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["reduc",{"_index":16,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"26":{},"28":{},"47":{},"50":{},"54":{},"93":{},"96":{},"103":{},"118":{},"120":{}},"component":{}}],["refer",{"_index":65,"title":{"14":{},"57":{},"106":{}},"name":{},"text":{"1":{},"10":{},"11":{},"14":{},"31":{},"35":{},"39":{},"47":{},"54":{},"57":{},"69":{},"81":{},"84":{},"87":{},"93":{},"102":{},"103":{},"106":{},"123":{},"127":{},"131":{}},"component":{}}],["refin",{"_index":662,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["reflect",{"_index":801,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["reformat",{"_index":1290,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["refresh",{"_index":1364,"title":{},"name":{},"text":{"64":{}},"component":{}}],["regard",{"_index":663,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["regener",{"_index":1464,"title":{},"name":{},"text":{"69":{}},"component":{}}],["regist",{"_index":1107,"title":{},"name":{},"text":{"33":{},"75":{},"125":{}},"component":{}}],["registerlanguag",{"_index":1105,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["registerlanguage(l_mygeneratedlanguag",{"_index":1139,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["registr",{"_index":1075,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["registrationhelpernam",{"_index":1076,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["relat",{"_index":796,"title":{},"name":{},"text":{"20":{},"22":{},"31":{},"66":{},"81":{},"112":{},"114":{},"123":{}},"component":{}}],["releas",{"_index":466,"title":{"10":{},"54":{},"102":{},"10-2":{},"11-5":{},"54-2":{},"54-8":{},"102-2":{},"103-5":{}},"name":{},"text":{"10":{},"11":{},"15":{},"31":{},"43":{},"44":{},"54":{},"58":{},"81":{},"89":{},"90":{},"102":{},"103":{},"107":{},"123":{},"135":{},"136":{}},"component":{}}],["relev",{"_index":478,"title":{},"name":{},"text":{"10":{},"22":{},"23":{},"54":{},"102":{},"114":{},"115":{}},"component":{}}],["reload",{"_index":1602,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["remain",{"_index":307,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["remot",{"_index":1130,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["remoteproductdatabasequeri",{"_index":959,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["remov",{"_index":261,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["renam",{"_index":528,"title":{"11-2":{},"54-5":{},"103-2":{}},"name":{},"text":{"11":{},"54":{},"69":{},"103":{}},"component":{}}],["render",{"_index":246,"title":{},"name":{},"text":{"2":{},"28":{},"48":{},"94":{},"120":{}},"component":{}}],["repeat",{"_index":1402,"title":{},"name":{},"text":{"69":{}},"component":{}}],["replac",{"_index":753,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["replic",{"_index":200,"title":{},"name":{},"text":{"2":{},"26":{},"39":{},"48":{},"87":{},"94":{},"118":{},"131":{}},"component":{}}],["repo",{"_index":684,"title":{},"name":{},"text":{"13":{},"33":{},"56":{},"105":{},"125":{}},"component":{}}],["repo/w",{"_index":1018,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["report",{"_index":163,"title":{},"name":{},"text":{"1":{},"40":{},"47":{},"93":{},"132":{}},"component":{}}],["repositori",{"_index":132,"title":{"63":{},"67":{},"9-6":{},"101-6":{}},"name":{"15":{},"58":{},"107":{}},"text":{"1":{},"2":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"20":{},"21":{},"24":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"47":{},"48":{},"54":{},"58":{},"59":{},"61":{},"63":{},"67":{},"69":{},"70":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"93":{},"94":{},"101":{},"102":{},"103":{},"107":{},"108":{},"110":{},"112":{},"113":{},"116":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{}},"component":{}}],["repositorydir",{"_index":1125,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["repositoryid",{"_index":1133,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["repres",{"_index":678,"title":{},"name":{},"text":{"12":{},"36":{},"38":{},"55":{},"64":{},"85":{},"104":{},"128":{},"130":{}},"component":{}}],["represent",{"_index":609,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["request",{"_index":143,"title":{"9-11":{},"101-11":{}},"name":{},"text":{"1":{},"2":{},"9":{},"12":{},"26":{},"28":{},"40":{},"47":{},"48":{},"55":{},"93":{},"94":{},"101":{},"104":{},"118":{},"120":{},"132":{}},"component":{}}],["requestfrag",{"_index":999,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["requir",{"_index":197,"title":{},"name":{},"text":{"2":{},"8":{},"10":{},"11":{},"16":{},"24":{},"26":{},"28":{},"31":{},"39":{},"43":{},"48":{},"53":{},"54":{},"59":{},"61":{},"64":{},"67":{},"77":{},"81":{},"87":{},"89":{},"94":{},"100":{},"103":{},"108":{},"116":{},"118":{},"120":{},"123":{},"131":{},"135":{}},"component":{}}],["resid",{"_index":619,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["resolut",{"_index":1329,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["resolv",{"_index":287,"title":{},"name":{},"text":{"2":{},"34":{},"39":{},"48":{},"75":{},"83":{},"87":{},"94":{},"126":{},"131":{}},"component":{}}],["resolvemp",{"_index":1055,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["resourc",{"_index":595,"title":{},"name":{},"text":{"11":{},"34":{},"54":{},"75":{},"83":{},"103":{},"126":{}},"component":{}}],["respect",{"_index":1037,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["respond",{"_index":1498,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["respons",{"_index":1152,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["rest",{"_index":220,"title":{},"name":{"72":{},"73":{}},"text":{"2":{},"23":{},"48":{},"63":{},"66":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"115":{}},"component":{}}],["restrict",{"_index":740,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"77":{},"81":{},"89":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["result",{"_index":100,"title":{"28-5":{},"120-5":{}},"name":{},"text":{"1":{},"2":{},"11":{},"26":{},"28":{},"33":{},"36":{},"39":{},"47":{},"48":{},"54":{},"85":{},"87":{},"93":{},"94":{},"103":{},"118":{},"120":{},"128":{},"131":{}},"component":{}}],["result.foreach",{"_index":945,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["resum",{"_index":1675,"title":{},"name":{},"text":{"75":{}},"component":{}}],["return",{"_index":898,"title":{},"name":{},"text":{"26":{},"28":{},"69":{},"118":{},"120":{}},"component":{}}],["reus",{"_index":759,"title":{},"name":{},"text":{"18":{},"61":{},"110":{}},"component":{}}],["revers",{"_index":230,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["revis",{"_index":1136,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["rewrit",{"_index":556,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["right",{"_index":70,"title":{},"name":{},"text":{"1":{},"21":{},"47":{},"69":{},"93":{},"113":{}},"component":{}}],["rm",{"_index":1471,"title":{},"name":{},"text":{"70":{}},"component":{}}],["roadmap",{"_index":74,"title":{"11":{},"54":{},"103":{},"11-5":{},"54-3":{},"54-8":{},"103-5":{}},"name":{"11":{},"54":{},"103":{}},"text":{"1":{},"6":{},"11":{},"47":{},"54":{},"93":{},"98":{},"103":{}},"component":{}}],["role",{"_index":1410,"title":{},"name":{},"text":{"69":{}},"component":{}}],["rollout",{"_index":449,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["room",{"_index":785,"title":{},"name":{},"text":{"19":{},"35":{},"64":{},"69":{},"72":{},"73":{},"84":{},"111":{},"127":{}},"component":{}}],["room(inod",{"_index":1456,"title":{},"name":{},"text":{"69":{}},"component":{}}],["room.this.getinod",{"_index":1435,"title":{},"name":{},"text":{"69":{}},"component":{}}],["roomlist",{"_index":783,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["roomref",{"_index":1509,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["rooms.children.rooms.foreach",{"_index":1406,"title":{},"name":{},"text":{"69":{}},"component":{}}],["root",{"_index":784,"title":{},"name":{},"text":{"19":{},"28":{},"29":{},"30":{},"69":{},"70":{},"75":{},"80":{},"111":{},"120":{},"121":{},"122":{}},"component":{}}],["root.addnewchild(nul",{"_index":1007,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["root.children(\"classes\").ofconcept(c_classconcept",{"_index":922,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["root.children(\"modules\").property(\"name\").tolist",{"_index":915,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["rootnod",{"_index":1027,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["rootnode.getchildren(\"modul",{"_index":1030,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["rootproject",{"_index":1047,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["run",{"_index":185,"title":{"74":{},"75":{},"28-4":{},"68-1":{},"68-4":{},"120-4":{}},"name":{},"text":{"2":{},"6":{},"9":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"26":{},"29":{},"32":{},"33":{},"34":{},"36":{},"39":{},"40":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"82":{},"83":{},"87":{},"94":{},"98":{},"101":{},"103":{},"110":{},"112":{},"113":{},"114":{},"115":{},"118":{},"121":{},"124":{},"125":{},"126":{},"128":{},"131":{},"132":{}},"component":{}}],["runner",{"_index":699,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["runread",{"_index":1024,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["runsyncpushtomyserv",{"_index":1145,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["runtim",{"_index":594,"title":{},"name":{},"text":{"11":{},"13":{},"36":{},"54":{},"56":{},"74":{},"75":{},"103":{},"105":{},"128":{}},"component":{}}],["runtime.j",{"_index":1589,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["runwrit",{"_index":1025,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["s",{"_index":1502,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["safe",{"_index":805,"title":{"28-3":{},"120-3":{}},"name":{},"text":{"20":{},"22":{},"23":{},"28":{},"69":{},"75":{},"112":{},"114":{},"115":{},"120":{}},"component":{}}],["same",{"_index":212,"title":{},"name":{},"text":{"2":{},"11":{},"18":{},"19":{},"36":{},"39":{},"48":{},"54":{},"61":{},"69":{},"87":{},"94":{},"103":{},"110":{},"111":{},"128":{},"131":{}},"component":{}}],["sampl",{"_index":77,"title":{"19":{},"20":{},"61":{},"63":{},"66":{},"111":{},"112":{},"15-4":{},"58-4":{},"107-4":{}},"name":{},"text":{"1":{},"13":{},"15":{},"18":{},"19":{},"20":{},"30":{},"31":{},"32":{},"47":{},"56":{},"58":{},"61":{},"63":{},"66":{},"67":{},"68":{},"69":{},"74":{},"80":{},"81":{},"82":{},"93":{},"105":{},"107":{},"110":{},"111":{},"112":{},"122":{},"123":{},"124":{}},"component":{}}],["sample/model",{"_index":1656,"title":{},"name":{},"text":{"75":{}},"component":{}}],["samples:tutorial/startup",{"_index":1340,"title":{},"name":{},"text":{"61":{}},"component":{}}],["scalabl",{"_index":224,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["scale",{"_index":171,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["scenario",{"_index":1352,"title":{},"name":{},"text":{"64":{}},"component":{}}],["schedul",{"_index":540,"title":{"65":{}},"name":{},"text":{"11":{},"19":{},"35":{},"64":{},"66":{},"69":{},"84":{},"103":{},"111":{},"127":{}},"component":{}}],["schema",{"_index":1653,"title":{},"name":{},"text":{"75":{}},"component":{}}],["scheme",{"_index":490,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["schrödinger",{"_index":1518,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["scratch",{"_index":393,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["script",{"_index":661,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["second",{"_index":199,"title":{},"name":{},"text":{"2":{},"23":{},"28":{},"36":{},"48":{},"74":{},"75":{},"85":{},"94":{},"115":{},"120":{},"128":{}},"component":{}}],["secret",{"_index":1651,"title":{},"name":{},"text":{"75":{}},"component":{}}],["secrets/modelsecret/modelsecret.txt",{"_index":1652,"title":{},"name":{},"text":{"75":{}},"component":{}}],["section",{"_index":80,"title":{},"name":{},"text":{"1":{},"45":{},"47":{},"66":{},"67":{},"91":{},"93":{},"137":{}},"component":{}}],["see",{"_index":175,"title":{},"name":{},"text":{"1":{},"3":{},"20":{},"23":{},"28":{},"35":{},"47":{},"49":{},"67":{},"68":{},"72":{},"74":{},"75":{},"84":{},"93":{},"95":{},"112":{},"115":{},"120":{},"127":{}},"component":{}}],["select",{"_index":826,"title":{},"name":{},"text":{"21":{},"47":{},"113":{}},"component":{}}],["semant",{"_index":413,"title":{"9-8":{},"101-8":{}},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"101":{},"102":{},"103":{}},"component":{}}],["semest",{"_index":1207,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["semesterplan",{"_index":793,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["send",{"_index":934,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["sens",{"_index":360,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["sent",{"_index":1548,"title":{},"name":{},"text":{"73":{}},"component":{}}],["separ",{"_index":101,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"36":{},"47":{},"48":{},"54":{},"71":{},"93":{},"94":{},"103":{},"128":{}},"component":{}}],["sequenc",{"_index":816,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["seri",{"_index":113,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["serial",{"_index":1286,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["serializ",{"_index":1157,"title":{},"name":{},"text":{"35":{},"38":{},"84":{},"127":{},"130":{}},"component":{}}],["serv",{"_index":81,"title":{},"name":{},"text":{"1":{},"15":{},"20":{},"33":{},"40":{},"47":{},"58":{},"64":{},"71":{},"74":{},"75":{},"93":{},"107":{},"112":{},"125":{},"132":{}},"component":{}}],["server",{"_index":188,"title":{"21":{},"22":{},"23":{},"29":{},"32":{},"39":{},"40":{},"70":{},"73":{},"82":{},"87":{},"113":{},"114":{},"115":{},"121":{},"124":{},"131":{},"132":{},"21-4":{},"21-6":{},"39-2":{},"87-2":{},"113-4":{},"113-6":{},"131-2":{}},"name":{"32":{},"39":{},"40":{},"70":{},"73":{},"82":{},"87":{},"124":{},"131":{},"132":{}},"text":{"2":{},"6":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"39":{},"41":{},"43":{},"48":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"66":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"82":{},"83":{},"87":{},"89":{},"94":{},"98":{},"102":{},"103":{},"105":{},"107":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"120":{},"121":{},"122":{},"124":{},"125":{},"126":{},"131":{},"133":{},"135":{}},"component":{}}],["server.json",{"_index":1295,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["server/build/lib",{"_index":1480,"title":{},"name":{},"text":{"70":{}},"component":{}}],["server/cli",{"_index":911,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["server/courses.modelserver.dump",{"_index":1657,"title":{},"name":{},"text":{"75":{}},"component":{}}],["server:build",{"_index":861,"title":{},"name":{},"text":{"23":{},"73":{},"115":{}},"component":{}}],["server:quarkusdev",{"_index":1666,"title":{},"name":{},"text":{"75":{}},"component":{}}],["server:run",{"_index":1083,"title":{},"name":{},"text":{"32":{},"70":{},"73":{},"75":{},"82":{},"124":{}},"component":{}}],["serversourc",{"_index":1093,"title":{"33-6":{},"125-6":{}},"name":{},"text":{"33":{},"125":{}},"component":{}}],["session",{"_index":541,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["set",{"_index":616,"title":{"16-4":{},"24-7":{},"33-2":{},"36-2":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"85-2":{},"89-6":{},"108-4":{},"116-7":{},"125-2":{},"128-2":{},"135-7":{}},"name":{},"text":{"11":{},"21":{},"29":{},"30":{},"31":{},"33":{},"36":{},"40":{},"54":{},"72":{},"75":{},"80":{},"81":{},"85":{},"103":{},"113":{},"121":{},"122":{},"123":{},"125":{},"128":{},"132":{}},"component":{}}],["sethasremoteequipment(@nul",{"_index":1448,"title":{},"name":{},"text":{"69":{}},"component":{}}],["setmaxplaces(integ",{"_index":1442,"title":{},"name":{},"text":{"69":{}},"component":{}}],["settings.gradle.kt",{"_index":1034,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["setup",{"_index":647,"title":{"21-3":{},"113-3":{}},"name":{},"text":{"11":{},"16":{},"24":{},"31":{},"43":{},"54":{},"59":{},"61":{},"67":{},"74":{},"75":{},"77":{},"81":{},"89":{},"103":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["sever",{"_index":570,"title":{},"name":{},"text":{"11":{},"54":{},"75":{},"103":{}},"component":{}}],["share",{"_index":582,"title":{},"name":{},"text":{"11":{},"31":{},"38":{},"54":{},"81":{},"103":{},"123":{},"130":{}},"component":{}}],["ship",{"_index":760,"title":{},"name":{},"text":{"18":{},"61":{},"110":{}},"component":{}}],["short",{"_index":373,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"34":{},"54":{},"58":{},"66":{},"67":{},"69":{},"83":{},"98":{},"103":{},"107":{},"126":{}},"component":{}}],["shortcom",{"_index":558,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["shortli",{"_index":549,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["show",{"_index":183,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"15":{},"18":{},"20":{},"21":{},"38":{},"48":{},"54":{},"58":{},"61":{},"64":{},"67":{},"68":{},"74":{},"94":{},"98":{},"103":{},"107":{},"110":{},"112":{},"113":{},"130":{}},"component":{}}],["shown",{"_index":726,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"110":{}},"component":{}}],["side",{"_index":260,"title":{},"name":{},"text":{"2":{},"34":{},"48":{},"83":{},"94":{},"126":{}},"component":{}}],["signific",{"_index":545,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["similar",{"_index":270,"title":{},"name":{},"text":{"2":{},"28":{},"31":{},"39":{},"48":{},"74":{},"75":{},"81":{},"87":{},"94":{},"120":{},"123":{},"131":{}},"component":{}}],["simpl",{"_index":937,"title":{},"name":{},"text":{"28":{},"31":{},"64":{},"72":{},"73":{},"81":{},"120":{},"123":{}},"component":{}}],["simpli",{"_index":731,"title":{},"name":{},"text":{"16":{},"24":{},"33":{},"36":{},"43":{},"59":{},"61":{},"64":{},"70":{},"74":{},"75":{},"77":{},"85":{},"89":{},"108":{},"116":{},"128":{},"135":{}},"component":{}}],["simplifi",{"_index":776,"title":{},"name":{},"text":{"19":{},"44":{},"69":{},"90":{},"111":{},"136":{}},"component":{}}],["singl",{"_index":504,"title":{"68":{},"67-6":{}},"name":{},"text":{"10":{},"11":{},"22":{},"45":{},"54":{},"63":{},"64":{},"68":{},"69":{},"71":{},"91":{},"102":{},"103":{},"114":{},"137":{}},"component":{}}],["size",{"_index":361,"title":{},"name":{},"text":{"6":{},"33":{},"36":{},"74":{},"75":{},"85":{},"98":{},"125":{},"128":{}},"component":{}}],["skip",{"_index":1224,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["slack",{"_index":155,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["small",{"_index":774,"title":{},"name":{},"text":{"19":{},"28":{},"69":{},"111":{},"120":{}},"component":{}}],["snapshot",{"_index":280,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["socket",{"_index":1549,"title":{},"name":{},"text":{"73":{}},"component":{}}],["softwar",{"_index":129,"title":{},"name":{},"text":{"1":{},"10":{},"18":{},"47":{},"54":{},"93":{},"102":{},"110":{}},"component":{}}],["solut",{"_index":363,"title":{"35":{},"84":{},"127":{}},"name":{},"text":{"6":{},"11":{},"13":{},"20":{},"21":{},"31":{},"35":{},"36":{},"54":{},"56":{},"81":{},"84":{},"85":{},"98":{},"103":{},"105":{},"112":{},"113":{},"123":{},"127":{},"128":{}},"component":{}}],["solv",{"_index":407,"title":{},"name":{},"text":{"8":{},"26":{},"28":{},"53":{},"100":{},"118":{},"120":{}},"component":{}}],["somebodi",{"_index":1408,"title":{},"name":{},"text":{"69":{}},"component":{}}],["somehjtinghekjrekjrh",{"_index":1515,"title":{},"name":{},"text":{"72":{}},"component":{}}],["somehow",{"_index":1466,"title":{},"name":{},"text":{"69":{}},"component":{}}],["somerootnod",{"_index":1006,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["somerootnode.member.addnew",{"_index":1009,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["someth",{"_index":524,"title":{},"name":{},"text":{"10":{}},"component":{}}],["sometim",{"_index":514,"title":{},"name":{},"text":{"10":{},"45":{},"91":{},"137":{}},"component":{}}],["soulut",{"_index":1378,"title":{},"name":{},"text":{"67":{}},"component":{}}],["sourc",{"_index":12,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"10":{},"22":{},"23":{},"31":{},"33":{},"36":{},"37":{},"47":{},"50":{},"54":{},"67":{},"69":{},"81":{},"85":{},"86":{},"93":{},"96":{},"98":{},"102":{},"114":{},"115":{},"123":{},"125":{},"128":{},"129":{}},"component":{}}],["spa",{"_index":846,"title":{"67-6":{},"68-2":{}},"name":{},"text":{"22":{},"23":{},"61":{},"63":{},"64":{},"68":{},"74":{},"75":{},"114":{},"115":{}},"component":{}}],["spec",{"_index":1395,"title":{},"name":{},"text":{"68":{},"72":{},"73":{}},"component":{}}],["special",{"_index":318,"title":{},"name":{},"text":{"2":{},"11":{},"26":{},"38":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"118":{},"130":{},"131":{}},"component":{}}],["specif",{"_index":123,"title":{"69":{},"11-4":{},"54-7":{},"67-4":{},"103-4":{}},"name":{},"text":{"1":{},"3":{},"6":{},"11":{},"23":{},"31":{},"33":{},"36":{},"37":{},"38":{},"45":{},"47":{},"49":{},"54":{},"63":{},"67":{},"68":{},"69":{},"71":{},"81":{},"85":{},"86":{},"91":{},"93":{},"95":{},"98":{},"103":{},"115":{},"123":{},"125":{},"128":{},"129":{},"130":{},"137":{}},"component":{}}],["specifi",{"_index":674,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"28":{},"32":{},"33":{},"36":{},"37":{},"43":{},"54":{},"59":{},"61":{},"77":{},"82":{},"85":{},"86":{},"89":{},"103":{},"108":{},"116":{},"120":{},"124":{},"125":{},"128":{},"129":{},"135":{}},"component":{}}],["specification[1",{"_index":1380,"title":{},"name":{},"text":{"67":{}},"component":{}}],["spotlessappli",{"_index":1291,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["spring",{"_index":505,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["stabil",{"_index":526,"title":{},"name":{},"text":{"10":{}},"component":{}}],["stabl",{"_index":53,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"47":{},"54":{},"93":{},"102":{},"103":{}},"component":{}}],["stage",{"_index":486,"title":{},"name":{},"text":{"10":{},"11":{},"36":{},"54":{},"85":{},"102":{},"103":{},"128":{}},"component":{}}],["start",{"_index":78,"title":{"32":{},"70":{},"82":{},"124":{},"18-2":{},"21-4":{},"21-5":{},"22-3":{},"23-3":{},"24-2":{},"43-2":{},"61-2":{},"68-3":{},"74-1":{},"75-1":{},"75-2":{},"77-2":{},"89-2":{},"110-2":{},"113-4":{},"113-5":{},"114-3":{},"115-3":{},"116-2":{},"135-2":{}},"name":{"74":{},"75":{}},"text":{"1":{},"9":{},"10":{},"11":{},"18":{},"21":{},"22":{},"23":{},"28":{},"30":{},"32":{},"33":{},"39":{},"47":{},"54":{},"61":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"80":{},"82":{},"87":{},"93":{},"101":{},"102":{},"103":{},"110":{},"113":{},"114":{},"115":{},"120":{},"122":{},"124":{},"125":{},"131":{}},"component":{}}],["startup",{"_index":1128,"title":{},"name":{"76":{}},"text":{"33":{},"76":{},"125":{}},"component":{}}],["state",{"_index":60,"title":{},"name":{},"text":{"1":{},"2":{},"34":{},"47":{},"48":{},"83":{},"93":{},"94":{},"126":{}},"component":{}}],["statu",{"_index":1344,"title":{},"name":{},"text":{"63":{}},"component":{}}],["stay",{"_index":205,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["step",{"_index":114,"title":{},"name":{},"text":{"1":{},"8":{},"11":{},"17":{},"36":{},"47":{},"53":{},"54":{},"60":{},"85":{},"93":{},"100":{},"103":{},"109":{},"128":{}},"component":{}}],["still",{"_index":872,"title":{},"name":{},"text":{"26":{},"28":{},"118":{},"120":{}},"component":{}}],["storag",{"_index":272,"title":{},"name":{},"text":{"2":{},"11":{},"32":{},"39":{},"48":{},"54":{},"82":{},"87":{},"94":{},"103":{},"124":{},"131":{}},"component":{}}],["storage/repositori",{"_index":1288,"title":{"39":{},"87":{},"131":{}},"name":{},"text":{},"component":{}}],["store",{"_index":268,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"16":{},"24":{},"28":{},"33":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"68":{},"74":{},"75":{},"77":{},"87":{},"89":{},"94":{},"98":{},"103":{},"108":{},"116":{},"120":{},"125":{},"131":{},"135":{}},"component":{}}],["stream",{"_index":868,"title":{"26-1":{},"118-1":{}},"name":{},"text":{"26":{},"118":{}},"component":{}}],["streamlin",{"_index":573,"title":{"45":{},"91":{},"137":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["strictli",{"_index":769,"title":{},"name":{},"text":{"18":{},"110":{}},"component":{}}],["string",{"_index":957,"title":{},"name":{},"text":{"28":{},"31":{},"33":{},"36":{},"45":{},"69":{},"81":{},"85":{},"91":{},"120":{},"123":{},"125":{},"128":{},"137":{}},"component":{}}],["structur",{"_index":2,"title":{"63":{},"1-3":{},"47-3":{},"93-3":{}},"name":{"63":{}},"text":{"2":{},"6":{},"11":{},"20":{},"23":{},"26":{},"28":{},"31":{},"35":{},"36":{},"39":{},"48":{},"54":{},"61":{},"63":{},"69":{},"81":{},"84":{},"85":{},"87":{},"94":{},"98":{},"103":{},"112":{},"115":{},"118":{},"120":{},"123":{},"127":{},"128":{},"131":{}},"component":{}}],["student",{"_index":1204,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"84":{},"127":{}},"component":{}}],["stuff",{"_index":1529,"title":{},"name":{},"text":{"72":{}},"component":{}}],["style",{"_index":1585,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["styles.css",{"_index":1583,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["styles.j",{"_index":1584,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["sub",{"_index":623,"title":{},"name":{},"text":{"11":{},"31":{},"54":{},"61":{},"63":{},"81":{},"103":{},"123":{}},"component":{}}],["subproject",{"_index":1238,"title":{},"name":{},"text":{"36":{},"68":{},"72":{},"73":{},"128":{}},"component":{}}],["subset",{"_index":1377,"title":{},"name":{},"text":{"67":{}},"component":{}}],["success",{"_index":1691,"title":{},"name":{},"text":{"75":{}},"component":{}}],["successfulli",{"_index":1468,"title":{},"name":{},"text":{"69":{},"74":{},"75":{}},"component":{}}],["such",{"_index":332,"title":{},"name":{},"text":{"3":{},"6":{},"49":{},"64":{},"71":{},"72":{},"95":{},"98":{}},"component":{}}],["suffici",{"_index":1080,"title":{},"name":{},"text":{"31":{},"64":{},"81":{},"123":{}},"component":{}}],["suffix",{"_index":1252,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["suitabl",{"_index":809,"title":{},"name":{},"text":{"20":{},"23":{},"28":{},"112":{},"115":{},"120":{}},"component":{}}],["summari",{"_index":464,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["super(nod",{"_index":1457,"title":{},"name":{},"text":{"69":{}},"component":{}}],["suppli",{"_index":1605,"title":{},"name":{},"text":{"75":{}},"component":{}}],["support",{"_index":211,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"12":{},"16":{},"19":{},"24":{},"26":{},"37":{},"39":{},"43":{},"48":{},"54":{},"55":{},"59":{},"61":{},"69":{},"77":{},"86":{},"87":{},"89":{},"94":{},"98":{},"103":{},"104":{},"108":{},"111":{},"116":{},"118":{},"129":{},"131":{},"135":{}},"component":{}}],["sure",{"_index":1396,"title":{},"name":{},"text":{"68":{}},"component":{}}],["surfac",{"_index":394,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["suspend",{"_index":1127,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["switch",{"_index":309,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["sync",{"_index":694,"title":{},"name":{"33":{},"125":{}},"text":{"13":{},"20":{},"21":{},"22":{},"23":{},"33":{},"56":{},"105":{},"112":{},"113":{},"114":{},"115":{},"125":{}},"component":{}}],["sync.gradle.plugin",{"_index":697,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["syncdirect",{"_index":1091,"title":{"33-4":{},"125-4":{}},"name":{},"text":{},"component":{}}],["synchron",{"_index":206,"title":{"33":{},"125":{}},"name":{},"text":{"2":{},"11":{},"20":{},"21":{},"22":{},"23":{},"33":{},"39":{},"48":{},"54":{},"74":{},"75":{},"87":{},"94":{},"103":{},"112":{},"113":{},"114":{},"115":{},"125":{},"131":{}},"component":{}}],["synchronis",{"_index":1108,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["syntax",{"_index":972,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["system",{"_index":166,"title":{"67":{},"67-1":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"15":{},"26":{},"39":{},"40":{},"47":{},"48":{},"49":{},"58":{},"74":{},"75":{},"87":{},"93":{},"94":{},"95":{},"98":{},"107":{},"118":{},"131":{},"132":{}},"component":{}}],["system/servic",{"_index":1391,"title":{},"name":{},"text":{"68":{}},"component":{}}],["systemat",{"_index":98,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["tab",{"_index":856,"title":{},"name":{},"text":{"22":{},"23":{},"34":{},"83":{},"114":{},"115":{},"126":{}},"component":{}}],["tabl",{"_index":334,"title":{"13":{},"56":{},"105":{}},"name":{"13":{},"56":{},"105":{}},"text":{"3":{},"6":{},"11":{},"15":{},"49":{},"54":{},"58":{},"95":{},"98":{},"103":{},"107":{}},"component":{}}],["tabular",{"_index":1373,"title":{},"name":{},"text":{"66":{}},"component":{}}],["tag",{"_index":519,"title":{},"name":{},"text":{"10":{}},"component":{}}],["take",{"_index":109,"title":{},"name":{},"text":{"1":{},"2":{},"8":{},"17":{},"22":{},"23":{},"47":{},"48":{},"53":{},"60":{},"93":{},"94":{},"100":{},"109":{},"114":{},"115":{}},"component":{}}],["talk",{"_index":152,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["target",{"_index":600,"title":{"33-5":{},"33-6":{},"125-5":{},"125-6":{}},"name":{},"text":{"11":{},"31":{},"33":{},"36":{},"37":{},"54":{},"81":{},"85":{},"86":{},"103":{},"123":{},"125":{},"128":{},"129":{}},"component":{}}],["target/sourc",{"_index":1134,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["task",{"_index":1094,"title":{},"name":{},"text":{"33":{},"36":{},"74":{},"75":{},"85":{},"125":{},"128":{}},"component":{}}],["taskdepend",{"_index":1241,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["tasks.registering(sync::class",{"_index":1056,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["tbd",{"_index":1389,"title":{},"name":{},"text":{"67":{}},"component":{}}],["team",{"_index":669,"title":{},"name":{},"text":{"11":{},"54":{},"71":{},"103":{}},"component":{}}],["tech",{"_index":682,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["technic",{"_index":4,"title":{"1-4":{},"18-1":{},"47-4":{},"93-4":{},"110-1":{}},"name":{},"text":{"1":{},"11":{},"14":{},"47":{},"54":{},"57":{},"93":{},"103":{},"106":{}},"component":{}}],["technolog",{"_index":24,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"47":{},"50":{},"54":{},"63":{},"93":{},"96":{},"103":{}},"component":{}}],["tediou",{"_index":781,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["tell",{"_index":679,"title":{},"name":{},"text":{"12":{},"30":{},"55":{},"69":{},"80":{},"104":{},"122":{}},"component":{}}],["temurin",{"_index":428,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["termin",{"_index":1118,"title":{},"name":{},"text":{"33":{},"74":{},"75":{}},"component":{}}],["test",{"_index":476,"title":{"29":{},"121":{}},"name":{"29":{},"121":{}},"text":{"10":{},"18":{},"29":{},"32":{},"45":{},"54":{},"72":{},"73":{},"75":{},"82":{},"91":{},"102":{},"110":{},"121":{},"124":{},"137":{}},"component":{}}],["test.xml",{"_index":1612,"title":{},"name":{},"text":{"75":{}},"component":{}}],["that’",{"_index":967,"title":{},"name":{},"text":{"28":{},"69":{},"120":{}},"component":{}}],["therefor",{"_index":452,"title":{},"name":{},"text":{"9":{},"23":{},"101":{},"115":{}},"component":{}}],["think",{"_index":764,"title":{},"name":{},"text":{"18":{},"61":{},"110":{}},"component":{}}],["third",{"_index":969,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["this.children",{"_index":1459,"title":{},"name":{},"text":{"69":{}},"component":{}}],["this.properti",{"_index":1458,"title":{},"name":{},"text":{"69":{}},"component":{}}],["this.refer",{"_index":1460,"title":{},"name":{},"text":{"69":{}},"component":{}}],["those",{"_index":851,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["though",{"_index":933,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["three",{"_index":1283,"title":{},"name":{},"text":{"38":{},"71":{},"74":{},"130":{}},"component":{}}],["through",{"_index":112,"title":{},"name":{},"text":{"1":{},"8":{},"17":{},"20":{},"21":{},"22":{},"23":{},"47":{},"53":{},"60":{},"67":{},"69":{},"93":{},"100":{},"109":{},"112":{},"113":{},"114":{},"115":{}},"component":{}}],["throughout",{"_index":323,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["throw",{"_index":1412,"title":{},"name":{},"text":{"69":{}},"component":{}}],["thrown",{"_index":1026,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["thu",{"_index":626,"title":{},"name":{},"text":{"11":{},"54":{},"64":{},"67":{},"68":{},"71":{},"103":{}},"component":{}}],["tighter",{"_index":562,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["time",{"_index":213,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"11":{},"23":{},"35":{},"39":{},"48":{},"54":{},"64":{},"66":{},"69":{},"74":{},"75":{},"84":{},"87":{},"94":{},"103":{},"115":{},"127":{},"131":{}},"component":{}}],["titl",{"_index":462,"title":{},"name":{},"text":{"9":{},"28":{},"101":{},"120":{}},"component":{}}],["title.get",{"_index":980,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["todo",{"_index":405,"title":{"12":{},"55":{},"104":{}},"name":{"12":{},"55":{},"104":{}},"text":{"7":{},"12":{},"25":{},"27":{},"42":{},"46":{},"52":{},"55":{},"75":{},"76":{},"78":{},"79":{},"88":{},"92":{},"99":{},"104":{},"117":{},"119":{},"134":{},"138":{}},"component":{}}],["togeth",{"_index":96,"title":{},"name":{},"text":{"1":{},"6":{},"15":{},"28":{},"47":{},"58":{},"71":{},"93":{},"98":{},"107":{},"120":{}},"component":{}}],["toggl",{"_index":1677,"title":{},"name":{},"text":{"75":{}},"component":{}}],["token",{"_index":745,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["tolist",{"_index":926,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["tolist().request",{"_index":977,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["toloc",{"_index":1104,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["tomodelserv",{"_index":1102,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["tool",{"_index":26,"title":{"9-1":{},"101-1":{}},"name":{},"text":{"1":{},"3":{},"4":{},"9":{},"11":{},"13":{},"15":{},"21":{},"47":{},"49":{},"50":{},"54":{},"56":{},"58":{},"93":{},"95":{},"96":{},"101":{},"103":{},"105":{},"107":{},"113":{}},"component":{}}],["top",{"_index":221,"title":{},"name":{},"text":{"2":{},"11":{},"16":{},"24":{},"43":{},"48":{},"54":{},"59":{},"61":{},"74":{},"75":{},"77":{},"89":{},"94":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["topic",{"_index":345,"title":{},"name":{},"text":{"5":{},"11":{},"51":{},"54":{},"97":{},"103":{}},"component":{}}],["total",{"_index":1554,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["track",{"_index":412,"title":{"9-7":{},"101-7":{}},"name":{},"text":{"9":{},"10":{},"54":{},"101":{},"102":{}},"component":{}}],["tracker",{"_index":164,"title":{},"name":{},"text":{"1":{},"10":{},"47":{},"54":{},"93":{},"102":{}},"component":{}}],["tradit",{"_index":359,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["transact",{"_index":1023,"title":{},"name":{},"text":{"30":{},"38":{},"80":{},"122":{},"130":{}},"component":{}}],["transform",{"_index":288,"title":{"39-1":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["transit",{"_index":565,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["translat",{"_index":808,"title":{},"name":{},"text":{"20":{},"23":{},"112":{},"115":{}},"component":{}}],["transport",{"_index":1667,"title":{},"name":{},"text":{"75":{}},"component":{}}],["trash",{"_index":1698,"title":{},"name":{},"text":{"75":{}},"component":{}}],["travers",{"_index":874,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["tree",{"_index":1309,"title":{},"name":{},"text":{"41":{},"133":{}},"component":{}}],["tri",{"_index":758,"title":{},"name":{},"text":{"18":{},"26":{},"30":{},"61":{},"80":{},"110":{},"118":{},"122":{}},"component":{}}],["trigger",{"_index":1081,"title":{},"name":{},"text":{"31":{},"33":{},"81":{},"123":{},"125":{}},"component":{}}],["trivial",{"_index":300,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["true",{"_index":311,"title":{},"name":{},"text":{"2":{},"35":{},"39":{},"40":{},"48":{},"72":{},"73":{},"75":{},"84":{},"87":{},"94":{},"127":{},"131":{},"132":{}},"component":{}}],["ts",{"_index":700,"title":{},"name":{},"text":{"13":{},"22":{},"23":{},"31":{},"56":{},"81":{},"105":{},"114":{},"115":{},"123":{}},"component":{}}],["turn",{"_index":806,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["tutor",{"_index":794,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["tutori",{"_index":105,"title":{"17":{},"42":{},"46":{},"60":{},"88":{},"92":{},"109":{},"134":{},"138":{}},"name":{},"text":{"1":{},"11":{},"17":{},"47":{},"54":{},"60":{},"74":{},"76":{},"93":{},"103":{},"109":{}},"component":{}}],["twice",{"_index":502,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["two",{"_index":438,"title":{},"name":{},"text":{"9":{},"22":{},"64":{},"66":{},"67":{},"101":{},"114":{}},"component":{}}],["type",{"_index":380,"title":{"28-3":{},"120-3":{}},"name":{},"text":{"6":{},"9":{},"11":{},"13":{},"20":{},"22":{},"23":{},"28":{},"33":{},"35":{},"36":{},"38":{},"41":{},"54":{},"69":{},"75":{},"84":{},"85":{},"98":{},"101":{},"103":{},"105":{},"112":{},"114":{},"115":{},"120":{},"125":{},"127":{},"128":{},"130":{},"133":{}},"component":{}}],["typedconcept",{"_index":1263,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typedconceptimpl",{"_index":1264,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typednod",{"_index":1258,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typednodeimpl",{"_index":1259,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typescipt",{"_index":1278,"title":{},"name":{},"text":{"37":{},"86":{},"129":{}},"component":{}}],["typescript",{"_index":518,"title":{},"name":{},"text":{"10":{},"11":{},"20":{},"22":{},"23":{},"31":{},"36":{},"41":{},"54":{},"81":{},"85":{},"103":{},"112":{},"114":{},"115":{},"123":{},"128":{},"133":{}},"component":{}}],["typescriptdir",{"_index":1078,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["uc",{"_index":1553,"title":{"74-1":{},"75-1":{},"75-2":{}},"name":{},"text":{"74":{},"75":{}},"component":{}}],["ui",{"_index":705,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["uid",{"_index":1162,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["unchang",{"_index":1597,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["under",{"_index":468,"title":{},"name":{},"text":{"10":{},"21":{},"22":{},"23":{},"39":{},"54":{},"87":{},"102":{},"113":{},"114":{},"115":{},"131":{}},"component":{}}],["underli",{"_index":1384,"title":{},"name":{},"text":{"67":{}},"component":{}}],["understand",{"_index":346,"title":{},"name":{},"text":{"5":{},"6":{},"22":{},"51":{},"61":{},"71":{},"97":{},"98":{},"114":{}},"component":{}}],["unfold",{"_index":1160,"title":{},"name":{},"text":{"35":{},"72":{},"73":{},"74":{},"75":{},"84":{},"127":{}},"component":{}}],["unfortun",{"_index":537,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["unhealthi",{"_index":1305,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["unifi",{"_index":551,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["university.schedul",{"_index":1168,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.assign",{"_index":1216,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.dateandtim",{"_index":1184,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.lectur",{"_index":1200,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.mps.backend.sandbox",{"_index":833,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["university.schedule.room",{"_index":1178,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.schedul",{"_index":1176,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.structur",{"_index":1418,"title":{},"name":{},"text":{"69":{}},"component":{}}],["university.schedule.stud",{"_index":1212,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["unstablemodelixfeatur",{"_index":522,"title":{},"name":{},"text":{"10":{}},"component":{}}],["unsur",{"_index":149,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["until",{"_index":791,"title":{},"name":{},"text":{"19":{},"40":{},"111":{},"132":{}},"component":{}}],["untyp",{"_index":375,"title":{},"name":{},"text":{"6":{},"11":{},"13":{},"38":{},"54":{},"98":{},"103":{},"105":{},"130":{}},"component":{}}],["untypedconcept",{"_index":1261,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["up",{"_index":295,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"2":{},"11":{},"12":{},"15":{},"18":{},"21":{},"22":{},"23":{},"29":{},"39":{},"48":{},"54":{},"55":{},"58":{},"61":{},"72":{},"74":{},"75":{},"87":{},"94":{},"103":{},"104":{},"107":{},"110":{},"113":{},"114":{},"115":{},"121":{},"131":{}},"component":{}}],["upcom",{"_index":1355,"title":{},"name":{},"text":{"64":{}},"component":{}}],["updat",{"_index":254,"title":{},"name":{},"text":{"2":{},"11":{},"33":{},"48":{},"64":{},"73":{},"94":{},"103":{},"125":{}},"component":{}}],["upload",{"_index":1289,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["uri(\"https://artifacts.itemis.cloud/repository/maven",{"_index":1045,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["url",{"_index":829,"title":{},"name":{},"text":{"21":{},"28":{},"31":{},"33":{},"68":{},"75":{},"81":{},"113":{},"120":{},"123":{},"125":{}},"component":{}}],["url(\"ws://localhost/json/v2/test",{"_index":1017,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["us",{"_index":56,"title":{"16":{},"21":{},"22":{},"23":{},"30":{},"31":{},"45":{},"59":{},"64":{},"65":{},"66":{},"74":{},"75":{},"80":{},"81":{},"91":{},"108":{},"113":{},"114":{},"115":{},"122":{},"123":{},"137":{},"6-3":{},"20-1":{},"20-2":{},"20-3":{},"22-5":{},"23-5":{},"24-3":{},"43-3":{},"61-3":{},"66-2":{},"77-3":{},"89-3":{},"98-3":{},"112-1":{},"112-2":{},"112-3":{},"114-5":{},"115-5":{},"116-3":{},"135-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"48":{},"49":{},"54":{},"58":{},"59":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"107":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{},"135":{},"136":{},"137":{}},"component":{}}],["usabl",{"_index":1540,"title":{},"name":{},"text":{"73":{}},"component":{}}],["usag",{"_index":596,"title":{"45-1":{},"72-2":{},"73-2":{},"91-1":{},"137-1":{}},"name":{"30":{},"31":{},"32":{},"45":{},"80":{},"81":{},"82":{},"91":{},"122":{},"123":{},"124":{},"137":{}},"text":{"11":{},"30":{},"31":{},"32":{},"54":{},"80":{},"81":{},"82":{},"103":{},"122":{},"123":{},"124":{}},"component":{}}],["use_case_1",{"_index":814,"title":{},"name":{"21":{},"113":{}},"text":{},"component":{}}],["use_case_2",{"_index":837,"title":{},"name":{"22":{},"114":{}},"text":{},"component":{}}],["use_case_3",{"_index":857,"title":{},"name":{"23":{},"115":{}},"text":{},"component":{}}],["usecas",{"_index":1349,"title":{},"name":{"64":{},"65":{},"66":{},"74":{},"75":{},"76":{}},"text":{},"component":{}}],["usecase1",{"_index":823,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["usecase2",{"_index":852,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["usecase3",{"_index":863,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["usecases.adoc",{"_index":1341,"title":{},"name":{},"text":{"61":{}},"component":{}}],["user",{"_index":117,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"47":{},"48":{},"49":{},"68":{},"93":{},"94":{},"95":{},"98":{}},"component":{}}],["usernam",{"_index":746,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["usual",{"_index":118,"title":{},"name":{},"text":{"1":{},"2":{},"39":{},"48":{},"87":{},"93":{},"94":{},"131":{}},"component":{}}],["util",{"_index":353,"title":{},"name":{},"text":{"6":{},"13":{},"20":{},"98":{},"105":{},"112":{}},"component":{}}],["v1",{"_index":613,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["v2",{"_index":610,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["val",{"_index":912,"title":{},"name":{},"text":{"28":{},"29":{},"30":{},"31":{},"80":{},"81":{},"120":{},"121":{},"122":{},"123":{}},"component":{}}],["valid",{"_index":1153,"title":{},"name":{},"text":{"34":{},"39":{},"83":{},"87":{},"126":{},"131":{}},"component":{}}],["valu",{"_index":277,"title":{"36-6":{},"85-6":{},"128-6":{}},"name":{},"text":{"2":{},"16":{},"20":{},"24":{},"28":{},"29":{},"39":{},"40":{},"43":{},"48":{},"59":{},"61":{},"69":{},"75":{},"77":{},"87":{},"89":{},"94":{},"108":{},"112":{},"116":{},"120":{},"121":{},"131":{},"132":{},"135":{}},"component":{}}],["vararg",{"_index":1242,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["variabl",{"_index":747,"title":{},"name":{},"text":{"16":{},"24":{},"28":{},"43":{},"45":{},"59":{},"61":{},"77":{},"89":{},"91":{},"108":{},"116":{},"120":{},"135":{},"137":{}},"component":{}}],["variant",{"_index":1374,"title":{},"name":{},"text":{"66":{}},"component":{}}],["variat",{"_index":1353,"title":{},"name":{},"text":{"64":{},"74":{}},"component":{}}],["varieti",{"_index":356,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["variou",{"_index":146,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"15":{},"18":{},"47":{},"54":{},"58":{},"61":{},"63":{},"93":{},"102":{},"103":{},"107":{},"110":{}},"component":{}}],["vendor",{"_index":1576,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["vendor.j",{"_index":1575,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["veri",{"_index":52,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"39":{},"47":{},"48":{},"69":{},"87":{},"93":{},"94":{},"98":{},"131":{}},"component":{}}],["verif",{"_index":441,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["versa",{"_index":803,"title":{},"name":{},"text":{"20":{},"22":{},"23":{},"112":{},"114":{},"115":{}},"component":{}}],["version",{"_index":89,"title":{"9-8":{},"11-5":{},"45-2":{},"54-8":{},"91-2":{},"101-8":{},"103-5":{},"137-2":{}},"name":{},"text":{"1":{},"2":{},"9":{},"10":{},"11":{},"15":{},"31":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"54":{},"58":{},"81":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"101":{},"102":{},"103":{},"107":{},"123":{},"131":{},"135":{},"136":{},"137":{}},"component":{}}],["via",{"_index":741,"title":{"72":{},"73":{}},"name":{},"text":{"16":{},"20":{},"21":{},"24":{},"31":{},"33":{},"40":{},"43":{},"59":{},"61":{},"63":{},"64":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"89":{},"108":{},"112":{},"113":{},"116":{},"123":{},"125":{},"132":{},"135":{}},"component":{}}],["vice",{"_index":802,"title":{},"name":{},"text":{"20":{},"22":{},"23":{},"112":{},"114":{},"115":{}},"component":{}}],["video",{"_index":176,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["view",{"_index":1351,"title":{},"name":{},"text":{"64":{},"66":{},"68":{}},"component":{}}],["virtual",{"_index":1307,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["virtualfold",{"_index":1297,"title":{"40-4":{},"132-4":{}},"name":{},"text":{},"component":{}}],["vision",{"_index":50,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["vison",{"_index":338,"title":{"4-1":{},"50-1":{},"96-1":{}},"name":{},"text":{},"component":{}}],["vue",{"_index":701,"title":{},"name":{"41":{},"133":{}},"text":{"13":{},"22":{},"23":{},"105":{},"114":{},"115":{}},"component":{}}],["vue.j",{"_index":702,"title":{"41":{},"133":{}},"name":{},"text":{"13":{},"20":{},"22":{},"41":{},"105":{},"112":{},"114":{},"133":{}},"component":{}}],["vue:build",{"_index":847,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["wait",{"_index":1129,"title":{},"name":{},"text":{"33":{},"40":{},"125":{},"132":{}},"component":{}}],["want",{"_index":226,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"10":{},"11":{},"16":{},"24":{},"29":{},"31":{},"38":{},"43":{},"45":{},"48":{},"54":{},"59":{},"61":{},"64":{},"73":{},"77":{},"81":{},"89":{},"91":{},"94":{},"98":{},"101":{},"103":{},"108":{},"116":{},"121":{},"123":{},"130":{},"135":{},"137":{}},"component":{}}],["way",{"_index":355,"title":{},"name":{},"text":{"6":{},"11":{},"16":{},"24":{},"26":{},"28":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"98":{},"103":{},"108":{},"116":{},"118":{},"120":{},"135":{}},"component":{}}],["web",{"_index":15,"title":{"22":{},"23":{},"114":{},"115":{},"11-10":{},"54-13":{},"67-7":{},"103-10":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"11":{},"13":{},"15":{},"18":{},"20":{},"22":{},"23":{},"39":{},"47":{},"48":{},"50":{},"54":{},"56":{},"58":{},"61":{},"67":{},"71":{},"73":{},"87":{},"93":{},"94":{},"96":{},"98":{},"103":{},"105":{},"107":{},"110":{},"112":{},"114":{},"115":{},"131":{}},"component":{}}],["websit",{"_index":1358,"title":{},"name":{},"text":{"64":{}},"component":{}}],["websocket",{"_index":811,"title":{"73-3":{}},"name":{},"text":{"20":{},"67":{},"112":{}},"component":{}}],["webstorm",{"_index":1339,"title":{},"name":{},"text":{"61":{}},"component":{}}],["weekli",{"_index":790,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["weeklyrecurringschedul",{"_index":789,"title":{},"name":{},"text":{"19":{},"111":{}},"component":{}}],["welcom",{"_index":7,"title":{"1":{},"24":{},"43":{},"47":{},"61":{},"77":{},"89":{},"93":{},"116":{},"135":{}},"name":{},"text":{"72":{}},"component":{}}],["well",{"_index":471,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["wev",{"_index":567,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["what’",{"_index":351,"title":{"6-5":{},"98-5":{}},"name":{},"text":{},"component":{}}],["whenev",{"_index":1306,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["wherev",{"_index":737,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"61":{},"77":{},"108":{},"116":{},"135":{}},"component":{}}],["whether",{"_index":1393,"title":{},"name":{},"text":{"68":{}},"component":{}}],["whilst",{"_index":32,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["whitepaper[1",{"_index":40,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["whole",{"_index":871,"title":{},"name":{},"text":{"26":{},"69":{},"118":{}},"component":{}}],["whose",{"_index":1113,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["wifi",{"_index":1359,"title":{},"name":{},"text":{"64":{}},"component":{}}],["window",{"_index":735,"title":{},"name":{},"text":{"16":{},"21":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"113":{},"116":{},"135":{}},"component":{}}],["within",{"_index":131,"title":{},"name":{},"text":{"1":{},"12":{},"47":{},"55":{},"69":{},"93":{},"104":{}},"component":{}}],["without",{"_index":208,"title":{"29":{},"121":{}},"name":{},"text":{"2":{},"11":{},"22":{},"23":{},"29":{},"30":{},"39":{},"40":{},"45":{},"48":{},"54":{},"74":{},"75":{},"80":{},"87":{},"91":{},"94":{},"103":{},"114":{},"115":{},"121":{},"122":{},"131":{},"132":{},"137":{}},"component":{}}],["word",{"_index":148,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["work",{"_index":386,"title":{},"name":{},"text":{"6":{},"11":{},"18":{},"26":{},"54":{},"61":{},"67":{},"69":{},"98":{},"103":{},"110":{},"118":{}},"component":{}}],["workbench",{"_index":31,"title":{},"name":{},"text":{"1":{},"3":{},"4":{},"6":{},"47":{},"49":{},"50":{},"93":{},"95":{},"96":{},"98":{}},"component":{}}],["worker",{"_index":1495,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["workspac",{"_index":158,"title":{"6-4":{},"98-4":{}},"name":{},"text":{"1":{},"6":{},"11":{},"13":{},"47":{},"54":{},"56":{},"93":{},"98":{},"103":{},"105":{}},"component":{}}],["world",{"_index":409,"title":{},"name":{},"text":{"8":{},"11":{},"53":{},"54":{},"100":{},"103":{}},"component":{}}],["wrap",{"_index":382,"title":{},"name":{},"text":{"6":{},"23":{},"36":{},"41":{},"72":{},"73":{},"85":{},"98":{},"115":{},"128":{},"133":{}},"component":{}}],["write",{"_index":159,"title":{},"name":{},"text":{"1":{},"11":{},"20":{},"23":{},"30":{},"33":{},"41":{},"47":{},"54":{},"67":{},"69":{},"80":{},"93":{},"103":{},"112":{},"115":{},"122":{},"125":{},"133":{}},"component":{}}],["written",{"_index":843,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["ws://127.0.0.1:8090/updat",{"_index":1552,"title":{},"name":{},"text":{"73":{}},"component":{}}],["ws://localhost:48302/w",{"_index":1689,"title":{},"name":{},"text":{"75":{}},"component":{}}],["wscat",{"_index":1550,"title":{},"name":{},"text":{"73":{}},"component":{}}],["x",{"_index":1503,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["xx:maxrampercentage=85",{"_index":1477,"title":{},"name":{},"text":{"70":{}},"component":{}}],["year",{"_index":503,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["yourself",{"_index":1324,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["youtrack",{"_index":442,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["zip",{"_index":938,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["ziptree(it",{"_index":1058,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version main. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users usually start here. How-To Guides Reference There is also a dedicated API page where you can find component specific API documentaion over at https://api.docs.modelix.org. Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"main","name":"index","url":"/modelix/main/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"2":{"id":2,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"main","name":"architecture","url":"/modelix/main/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"3":{"id":3,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"main","name":"glossary","url":"/modelix/main/explanation/glossary.html","titles":[]},"4":{"id":4,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"main","name":"goals","url":"/modelix/main/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"5":{"id":5,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"main","name":"index","url":"/modelix/main/explanation/index.html","titles":[]},"6":{"id":6,"text":"The goal of this quick overview is for you to understand, what modelix is, what it is not and how it might be utilized. Modelix is a platform to bring models to the web. It consists of multiple components, which can be combined in different ways to support a variety of use cases. It is important to note, that modelix is neither a language workbench in the traditional sense nor a one-size-fits-all solution. The modelix project aims to provide you with building blocks, which empower you to construct your own application with ease. The following table gives an overview over essential components, which you are very likely to encounter when using modelix. For a full list of components check out the components table. Component Short description model-api Untyped API, which allows to interact with models. model-server Server, which persistently stores models. model-client Client, which implements the model-api and connects to a model-server. model-api-gen(-gradle) Component, which generates a typed, domain specific API based on a metamodel definition. The generated API wraps the untyped model-api. As a basic example, you might want to create a web app, which manipulates domain-specific models. In this case we assume a metamodel for such models exists as part of an MPS project. The image above shows how the essential components work together to form the backend for a web application. In this case the metamodel definition is generated from the structure aspect of a language in MPS. For a different use case it could also be from another (custom) source. The web application can then use the domain-specific API to manipulate and store models in the model-server. Of course, this example only scratches the surface of what is possible with modelix. Apart from the individual components, modelix can also provide a system called workspaces. It consists of multiple docker images, which run in a kubernetes cluster. Among other features, this system enables users to use projectional editors inside their browser by running MPS instances in the cloud. Modelix is always evolving. If you want to learn more about what is coming, check out the roadmap.","title":"Modelix Overview","component":"modelix","version":"main","name":"overview","url":"/modelix/main/explanation/overview.html","titles":[{"text":"What is Modelix?","hash":"_what_is_modelix","id":1},{"text":"Essential components","hash":"_essential_components","id":2},{"text":"Basic example using essential components","hash":"_basic_example_using_essential_components","id":3},{"text":"Modelix workspaces","hash":"_modelix_workspaces","id":4},{"text":"What’s next","hash":"_whats_next","id":5}]},"7":{"id":7,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"main","name":"faq","url":"/modelix/main/howto/faq.html","titles":[]},"8":{"id":8,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"main","name":"index","url":"/modelix/main/howto/index.html","titles":[]},"9":{"id":9,"text":"This guide aims to make it easier for you to start contributing to the modelix project. The following tools are used to develop modelix. You may want to install these on your machine before getting started. IntelliJ IDEA Java 11 (e.g. Temurin) ant git MPS (recommended version 2021.2.6) docker kubernetes helm python npm pre-commit The modelix repositories are located on GitHub. In order to contribute you need to configure two-factor authentication and commit verification. We use a YouTrack instance hosted on issues.modelix.org to keep track of modelix issues. If you want to create a new issue, you can do so in the corresponding GitHub repository, and it will be automatically imported into YouTrack. We use Semantic Versioning in modelix.core (a further rollout to the other modelix repositories is planned for the future). Therefore, commit messages follow Conventional Commits. To install the hooks enforcing the convention, you need to run npm install and pre-commit install in your local repository. Branch names should always be prefixed. The prefix is determined by the type of changes that your branch provides like fix/, feature/, docs/. Alternatively you can use issue/ followed by the issue id as your branch name, e.g. issue/MODELIX-123. If a corresponding issue exists for your pull request, then the issue id must be part of the title. You can use the \"Copy ID and summary to clipboard\" button in YouTrack, and use the clipboard content as the title for the pull request.","title":"Contribution Guide","component":"modelix","version":"main","name":"contribute","url":"/modelix/main/main/contribute.html","titles":[{"text":"Tools","hash":"_tools","id":1},{"text":"Essentials","hash":"_essentials","id":2},{"text":"Deployment","hash":"_deployment","id":3},{"text":"Other","hash":"_other","id":4},{"text":"Platforms","hash":"_platforms","id":5},{"text":"Repositories","hash":"_repositories","id":6},{"text":"Issue Tracking","hash":"_issue_tracking","id":7},{"text":"Semantic Versioning and Conventional Commits","hash":"_semantic_versioning_and_conventional_commits","id":8},{"text":"Naming Conventions","hash":"_naming_conventions","id":9},{"text":"Branch Names","hash":"_branch_names","id":10},{"text":"Pull Requests","hash":"_pull_requests","id":11}]},"10":{"id":10,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here. Sometimes we want to implement a feature or expose an API that is experimental. When doing so, we mark the APIs as experimental. In TypeScript, we use the documentation tag @experimental. For Kotlin, we use the annotation @UnstableModelixFeature for an opt-in requirement When marking something as experimental, we document the reason for it being experimental and our plans for stabilizing the feature. An example in our Kotlin code can be found here. An example in TypeScript can be found here.","title":"Development and Releases","component":"modelix","version":"main","name":"development","url":"/modelix/main/main/development.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2},{"text":"Experimental features","hash":"experimental_features","id":3}]},"11":{"id":11,"text":"Unfortunately, we were not able to update the roadmap before releasing modelix-23.2. We are dedicated to bring an updated version during December 2023 after our already scheduled planning sessions. Please check the documentation in the main branch of modelix. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Roadmap","component":"modelix","version":"main","name":"roadmap","url":"/modelix/main/main/roadmap.html","titles":[{"text":"Key priorities overview","hash":"_key_priorities_overview","id":1},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":2},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":3},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":4},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":5},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":6},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":7},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":8},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":9},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":10},{"text":"LIonWeb","hash":"_lionweb","id":11}]},"12":{"id":12,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"main","name":"todo","url":"/modelix/main/main/todo.html","titles":[]},"13":{"id":13,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix kotlin-utils Kotlin 🔗 🔗 🔗 org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-datastructure Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix bulk-model-sync-lib Kotlin 🔗 🔗 🔗 🔗 org.modelix bulk-model-sync-solution MPS 🔗 🔗 org.modelix bulk-model-sync-gradle Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix.bulk-model-sync.gradle.plugin Gradle 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 vue-model-api Vue.js 🔗 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelql-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-core Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-html Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-typed Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-untyped Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix.mps model-adapters Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps model-server-plugin Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗 🔗","title":"Table of modelix Components","component":"modelix","version":"main","name":"components-table","url":"/modelix/main/reference/components-table.html","titles":[]},"14":{"id":14,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"main","name":"index","url":"/modelix/main/reference/index.html","titles":[]},"15":{"id":15,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"main","name":"repositories-components","url":"/modelix/main/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"16":{"id":16,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"main","name":"build-component","url":"/modelix/main/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":2},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":3},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":4}]},"17":{"id":17,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/tutorial/index.html","titles":[]},"18":{"id":18,"text":"The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is, then modelix itself ships with a Projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration for what is possible with modelix and make you think about and envision your own use cases. To work with the samples, you need the following software installed.: MPS 2021.2.6 Java 11 Docker and Docker Compose Alternatives like Podman might work, but have not been tested. Clone samples repository Start building all components with ./gradlew build inside the repository Building everything in the beginning is not strictly necessary, but it enables you to let the build run, while you explore the documentation further. Explore the documentation Start with the overview Or go directly to one of the samples Use case 1: Model server and MPS Use case 2: Model server and web frontend Use case 3: Model server and web backend","title":"Introduction","component":"modelix","version":"main","name":"index","url":"/modelix/main/samples/index.html","titles":[{"text":"Technical prerequisites","hash":"_technical_prerequisites","id":1},{"text":"Getting started","hash":"_getting_started","id":2}]},"19":{"id":19,"text":"The MPS language (aka. metamodel) used in all examples is the same. It is fairly small as describes a simplified lecture schedule. The language intentionally does not use expressions. Creating editors for expressions manually is tedious, and modelix has no support yet for generating these editors for you. The main concepts of the language are: RoomList Root node that contains rooms. Room LectureList Root node that contains lectures. Lecture Lectures are held in rooms. Schedule A lecture is scheduled. OnetimeSchedule A lecture can be scheduled once. WeeklyRecurringSchedule Or a lecture can be scheduled weekly until an end date You will find more concepts in the language like SemesterPlan, Tutor and Equipment they are not used in the samples as of now.","title":"Metamodel for the samples","component":"modelix","version":"main","name":"metamodel","url":"/modelix/main/samples/metamodel.html","titles":[]},"20":{"id":20,"text":"The samples are structured into use cases. Each use case uses different components from the modelix platform to create custom solutions. On this page, you can get an overview of all use cases, and see how they are related and what their essential differences are. In the first use case, an MPS project is synchronized to a repository on a model server by utilizing the model-server-sync-plugin. It shows how to make model data, previously accessible only in a running MPS or via files, available through a server. In itself, this use case has little value, but the next use cases build in part on it. See the Use case 1 page for details. In this use case, we connect web frontends to a model server. The web frontends read from and write model data to the model server. One web frontend can be used to edit model data and is implemented with Vue.js. The other one serves as an overview and is implemented with Angular. You can see how changes made in one connected application are instantly reflected in another connected application. You can also connect an MPS to the model server and see how changes made in the application are synced to MPS and vice versa. The frontend applications directly use the model-client JavaScript library that connects to the model server. They also use a TypeScript API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. See the Use case 2 page for details. In this use case, a web frontend connects to a web backend, which in turn communicates with a model server. Like in use case 2 model data is synced automatically between the model server, the application and MPS. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented with Quarkus. It uses the model-client to connect to a model server. It also uses a Kotlin API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. For the Angular based web frontend, the web backend provides a custom HTTP- and websocket-based API. See the Use case 3 page for details.","title":"Overview of the samples","component":"modelix","version":"main","name":"overview","url":"/modelix/main/samples/overview.html","titles":[{"text":"Use case 1","hash":"use_case_1","id":1},{"text":"Use case 2","hash":"use_case_2","id":2},{"text":"Use case 3","hash":"use_case_3","id":3}]},"21":{"id":21,"text":"This use case shows how model data can be synced between an MPS instance and a model server. This makes model data, previously accessible only in a running MPS or via files, available through a server. The synchronization needs to be initialized from MPS using the model-server-sync-plugin. Figure 1. Initiating synchronization and synchronizing change Figure 2. Initiating synchronization and synchronizing change (sequence diagram) Execute the following command to set up the MPS project under mps/project-mps-backend. It installs the model-server-sync-plugin and its dependencies. Command to set up the MPS project ./gradlew mps:project-mps-backend:build Command to start a model server docker-compose --profile useCase1 up This command starts a model server under http://localhost:28101/ Open the mps/project-mps-backend in MPS 2021.2.6. In the 'Cloud' tool window, right-click on Cloud and select Add Model Server Figure 3. Adding a model server Enter http://localhost:28101/ as the model servers URL Figure 4. Entering the address of the model server In the Cloud tool window, right-click on the added server and select Add Repository Figure 5. Adding a repository Enter courses as the repository name Figure 6. Entering repository name Right-click the University.Schedule.mps.backend.sandbox solution and select Cloud Actions > Copy on Cloud and Sync → http://localhost:28101/courses Figure 7. Synchronizing solution Explore synchronized data in the Cloud tool window Figure 8. Exploring synchronized data","title":"Use case 1: Model server and MPS","component":"modelix","version":"main","name":"use_case_1","url":"/modelix/main/samples/use_case_1.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Instructions","hash":"_instructions","id":2},{"text":"Setup MPS","hash":"_setup_mps","id":3},{"text":"Start a model server","hash":"_start_a_model_server","id":4},{"text":"Start MPS","hash":"_start_mps","id":5},{"text":"Connect to the model server","hash":"_connect_to_the_model_server","id":6}]},"22":{"id":22,"text":"This use case realizes the synchronization of model data between two web frontends and a model server. One web frontend is the Management application implemented in Vue.js and can modify the model content. It uses the @modelix/model-client, the @modelix/vue-model-api and code generated by the Model API generator. The generated code provides type-safe access to model data and is derived from the MPS languages under mps/languages. The other web frontend is written in Angular and only reads model data. It also uses the model-client and the generated type-safe TypeScript API. A running MPS instance can also sync model data using the model-server-sync-plugin. The web frontends communicate directly with a model server and not through an intermediary custom backend like in use case 3. Take a look at the overview to understand how this use case relates to the other use cases Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build needed components ./gradlew spa-management-vue:build spa-overview-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the Single-page applications spa-management-vue and spa-overview-angular Start up the components. docker-compose --profile useCase2 up This starts: a model server with initial data under http://localhost:28101/ the Management application under http://localhost:3000/ the Overview application under http://localhost:4200/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the Management application. Those changes are first synced to the model server. The model server syncs those changes to other opened web applications, like the Overview application or other instances of the Management application open in another tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa.","title":"Use case 2: Model server and web frontend","component":"modelix","version":"main","name":"use_case_2","url":"/modelix/main/samples/use_case_2.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"23":{"id":23,"text":"This use case realizes the synchronization of model data between a web application and MPS through a model server. This use case consists of: a model server that holds model data a web backend that can read and write data to the model server a web frontend that displays data from and interacts with the web backend an optionally running MPS that syncs its data with the model server To see how a web frontend can directly connect to a model server, take a look at use case 2. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented in Quarkus. It communicates to the model server using the model-client. The data communicated between the model server and web backend are modelix-specific data structures without information about the metamodel. In the backend, those data structures are wrapped with generated Kotlin classes generated by the Model API generator from the metamodel. The backend programmer can use this so-called domain-specific-language API to access model data more type-safely. The web backend exposes a custom application-specific API, which the web frontend uses to communicate and read and write data. The web backend, therefore: controls how data is read and written to the model server. hides details about modelix-specific data structures and domain-specific-language API. Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build the needed components ./gradlew rest-api-model-server:build spa-dashboard-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the web backend rest-api-model-server builds the web frontend spa-dashboard-angular Start up the components. docker-compose --profile useCase3 up This starts: a model server with initial data under http://localhost:28101/ the web backend under http://localhost:8090/ the web frontend under http://localhost:4201/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the web frontend. Those changes are first communicated to the web backend. From there, they are communicated to the model server. The model server syncs those changes to other open web applications. You can see this by opening the dashboard a second time in a different tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa. You can also start the web frontends from use case 2 and see how changes to the model are propagated there.","title":"Use case 3: Model server and web backend","component":"modelix","version":"main","name":"use_case_3","url":"/modelix/main/samples/use_case_3.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"24":{"id":24,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"25":{"id":25,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/explanation/index.html","titles":[]},"26":{"id":26,"text":"When working with large models you will quickly run into performance issues when you try to replicate the whole model into the client. While the data structure for model replication in Modelix supports partial loading of models, you still need a way to describe which data you need on the client. Loading data on demand while traversing the model also results in a poor performance, because of the potentially large number of fine-grained request. A first attempt to solve this problem was to disallow lazy loading and require the client to load all required data at the beginning, before working with the model. A special query language was used to filter the data and an attempt to access a node that is not included by that query resulted in an exception, forcing the developer to adjust the query. While this results in a more predictable performance, it is also hard to maintain and still not optimal for the performance. You have to download all the data at the beginning that you might eventually need, potentially exceeding the available memory of the system. The ModelQL query language provides a more dynamic way of loading parts of the model on demand, but still allows reducing the number of request to a minimum. The downside is that it’s not just a different implementation hidden behind the model-api, but requires to use a different API. The query language is inspired by Reactive Streams and the execution engine uses Kotlin Flows, which is a Coroutines compatible implementation of Reactive Streams. Often it’s useful to know if a stream is expected to return only one element or multiple elements. Project Reactor, another implementation of Reactive Streams, introduced the notion of Mono and Flux to distinguish them. You will also find them in ModelQL.","title":"ModelQL","component":"modelix","version":"main","name":"modelql","url":"/modelix/main/core/explanation/modelql.html","titles":[{"text":"Reactive Streams","hash":"_reactive_streams","id":1}]},"27":{"id":27,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/howto/index.html","titles":[]},"28":{"id":28,"text":"ModelQL defines its own HTTP endpoint and provides server/client implementations for it. The model-server and the mps-model-server-plugin already implement this endpoint. The client can be created like this: val client = ModelQLClient.builder().url(\"http://localhost/query\").httpClient(httpClient).build() val result: List = client.query { root -> root.children(\"modules\").property(\"name\").toList() } When creating a LightModelClient you can optionally provide a ModelQLClient instance, which allows invoking .query { …​ } (see below) on a node returned by the LightModelClient. val modelqlClient = ModelQLClient.builder().build() val client = LightModelClient.builder().modelQLClient(modelqlClient).build() val result: List = client.getRootNode()!!.query { it.children(\"modules\").property(\"name\").toList() } You can use the model-api-gen-gradle plugin to generate type safe extensions from your meta-model. Specify the modelqlKotlinDir property to enable the generation. val result: List = client.query { root -> root.children(\"classes\").ofConcept(C_ClassConcept) .member .ofConcept(C_StaticMethodDeclaration) .filter { it.visibility.instanceOf(C_PublicVisibility) } .toList() } If a query returns a node, you can execute a new query starting from that node. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val names = cls.query { it.member.ofConcept(C_StaticMethodDeclaration).name.toList() } For convenience, it’s possible to access further data of that node using the INode API, but this is not recommended though, because each access sends a new query to the server. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val className = cls.name While returning a list of elements is simple, the purpose of the query language is to reduce the number of request to a minimum. This requires combining multiple values into more complex data structures. The zip operation provides a simple way of doing that: val result: List>> = query { db -> db.products.map { val id = it.id val title = it.title val images = it.images.toList() id.zip(title, images) }.toList() } result.forEach { println(\"ID: ${it.first}, Title: ${it.second}, Images: ${it.third}\") } This is suitable for combining a small number of values, but because of the missing variable names it can be hard to read for a larger number of values or even multiple zip operations assembled into a hierarchical data structure. This can be solved by defining custom data classes and using the mapLocal operation: data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = remoteProductDatabaseQuery { db -> db.products.map { val id = it.id val title = it.title val images = it.images.mapLocal { MyImage(it) }.toList() id.zip(title, images).mapLocal { MyProduct(it.first, it.second, it.third) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } The mapLocal operation is not just useful in combination with the zip operation, but in general to create instances of classes only known to the client. The body of mapLocal is executed on the client after receiving the result from the server. That’s why you only have access to the output of the zip operation and still have to use first, second and third inside the query. To make this even more readable there is a buildLocalMapping operation, which provides a different syntax for the zip-mapLocal chain. data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = query { db -> db.products.buildLocalMapping { val id = it.id.request() val title = it.title.request() val images = it.images.mapLocal { MyImage(it) }.toList().request() onSuccess { MyProduct(id.get(), title.get(), images.get()) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } At the beginning of the buildLocalMapping body, you invoke request() on all the values you need to assemble your object. This basically adds the operand to the internal zip operation and returns an object that gives you access to the value after receiving it from the server. Inside the onSuccess block you assemble the local object using the previously requested values. One use case of the query language is to build database applications that generate HTML pages from the data stored in the model server. You can use the Kotlin HTML DSL together with ModelQL to do that. Use buildHtmlQuery to request data from the server and render it into an HTML string: val html = query { it.map(buildHtmlQuery { val modules = input.children(\"modules\").requestFragment { val moduleName = input.property(\"name\").request() val models = input.children(\"models\").requestFragment { val modelName = input.property(\"name\").request() onSuccess { div { h2 { +\"Model: ${modelName.get()}\" } } } } onSuccess { div { h1 { +\"Module: ${moduleName.get()}\" } insertFragment(models) } } } onSuccess { body { insertFragment(modules) } } }) } buildHtmlQuery and the requestFragment operation are similar to the buildLocalMapping operation, but inside the onSuccess block you use the Kotlin HTML DSL.","title":"ModelQL","component":"modelix","version":"main","name":"modelql","url":"/modelix/main/core/howto/modelql.html","titles":[{"text":"Independent ModelQLClient","hash":"_independent_modelqlclient","id":1},{"text":"Integration with LightModelClient","hash":"_integration_with_lightmodelclient","id":2},{"text":"Type-safe ModelQL API","hash":"_type_safe_modelql_api","id":3},{"text":"Run query on an INode","hash":"_run_query_on_an_inode","id":4},{"text":"Complex query results","hash":"_complex_query_results","id":5},{"text":"Kotlin HTML integration","hash":"_kotlin_html_integration","id":6}]},"29":{"id":29,"text":"If you want to test code that processes model-api instances, you can do this in-process without a running (light-) model-server. Use the following pattern to set up your test fixture containing model-api instances: val branch = ModelFacade.toLocalBranch(ModelFacade.newLocalTree()) branch.runWrite { val root = branch.getRootNode() val someRootNode = root.addNewChild(null, C_SomeConcept.untyped()).typed() someRootNode.member.addNew(-1, C_OtherConcept).apply { name = \"some test property value\" } } All classes of the pattern C_* and N_* are generated using the model-api-gen.","title":"How-To test model-api client code without a model-server","component":"modelix","version":"main","name":"testing-against-model-api","url":"/modelix/main/core/howto/testing-against-model-api.html","titles":[]},"30":{"id":30,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"main","name":"usage-light-model-client","url":"/modelix/main/core/howto/usage-light-model-client.html","titles":[]},"31":{"id":31,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = project.layout.buildDirectory.dir(\"mps\").get().asFile val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"main","name":"usage-model-api-gen-gradle","url":"/modelix/main/core/howto/usage-model-api-gen-gradle.html","titles":[]},"32":{"id":32,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"main","name":"usage-model-server","url":"/modelix/main/core/howto/usage-model-server.html","titles":[]},"33":{"id":33,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The bulk-model-sync Gradle plugin synchronizes models between model-api endpoints. A common example would be synchronizing a local MPS project to a model-server. Figure 1. Bulk Synchronization between MPS and model-server The plugin allows the definition of sync directions inside of a modelSync block by specifying source and target endpoint. Based on these directions, Gradle tasks will be generated, which can be run to trigger the corresponding synchronization. Internally, the node data will be bulk exported from the source endpoint and stored as JSON files. After that, these JSON files serve as a specification to incrementally update the target model via the target model-api endpoint. This means that only a minimal amount of write operations is used to update the target model. method parameter type description dependsOn Any Adds the given task as a dependency of this task. direction String, Action Defines a new sync direction with the given name. method parameter type description fromLocal Action Defines a local source (MPS). toModelServer Action Defines a model-server target. fromModelServer Action Defines a model-server source. toLocal Action Defines a local target (MPS). registerLanguage ILanguage Registers the given language and all of its concepts for the synchronisation process. includeModule String Includes the module specified by the given fully qualified name in the synchronisation process. includeModulesByPrefix String Includes all modules, whose fully qualified name starts with the given prefix, in the synchronisation process. enableContinueOnError Boolean If the sync encounters an error, simply log it and continue instead of terminating. This most likely results in an incomplete sync result. Defaults to false. setting type description mpsHome File Location of the MPS to be used for the sync. mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB (default: \"2g\") repositoryDir File Directory in which the modules are stored. mpsDebugPort Int If set, the headless MPS will suspend on startup and wait for a remote debugger on the specified port. setting type description url String URL of the model-server API endpoint. repositoryId String Id of the target/source model-server repository. branchName String Name of the target/source model-server branch. revision String Source model-server revision. Can be used instead of repositoryId and branchName. Only available in ServerSource. modelSync { dependsOn(someOtherTask) direction(\"pushToMyServer\") { registerLanguage(L_MyGeneratedLanguage) includeModule(\"MySolution\") fromLocal { mpsHome = project.layout.buildDirectory.dir(\"mps\").get().asFile mpsHeapSize = \"4g\" repositoryDir = projectDir.resolve(\"my-repo\") } toModelServer { url = \"http://0.0.0.0:28101/v2\" repositoryId = \"my-repo\" branchName = \"dev\" } } } Generated Gradle task to perform synchronization: runSyncPushToMyServer.","title":"Gradle Plugin for synchronizing models between model-api endpoints","component":"modelix","version":"main","name":"component-bulk-model-sync-gradle","url":"/modelix/main/core/reference/component-bulk-model-sync-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"modelSync configuration","hash":"_modelsync_configuration","id":3},{"text":"SyncDirection configuration","hash":"_syncdirection_configuration","id":4},{"text":"LocalSource/-Target configuration","hash":"_localsource_target_configuration","id":5},{"text":"ServerSource/-Target configuration","hash":"_serversource_target_configuration","id":6},{"text":"Example","hash":"_example","id":7}]},"34":{"id":34,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"main","name":"component-light-model-client","url":"/modelix/main/core/reference/component-light-model-client.html","titles":[]},"35":{"id":35,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-export provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"main","name":"component-metamodel-export","url":"/modelix/main/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"36":{"id":36,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator modelqlKotlinDir File The generation of the ModelQL API is optional, because the output has a dependency on the ModelQL runtime. If this option is set, you have to add a dependency on org.modelix:modelql-typed. Can be the same as kotlinDir or a directory in a separate subproject, if you run into memory issues of the Kotlin compiler. kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Fully qualified name of the generated language registration helper conceptPropertiesInterfaceName String Fully qualified name of the generated interface, that contains the concept meta-properties of this language set. If null (default), neither the concept meta-properties nor the corresponding interface will be generated. taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept \"C_\" \"\" typedConceptImpl \"_C_TypedImpl_\" \"\" conceptTypeAlias \"CN_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"main","name":"component-model-api-gen-gradle","url":"/modelix/main/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"37":{"id":37,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"main","name":"component-model-api-gen","url":"/modelix/main/core/reference/component-model-api-gen.html","titles":[]},"38":{"id":38,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API (model-api) is a Kotlin component which provides a metamodel independent model API. This API is the shared basis and used across all modelix components. The model-api provides three distinct parts org.modelix.model.api: The untyped API to provide model access org.modelix.model.data: Data classes for (meta-)model serialization org.modelix.model.area: Model grouping and transactional access The following diagram provides a meta-model of the model-api An untyped access to model content is possible when only using the model-api. In case you want to use domain-specific model access (i.e. typed access), the model-api-gen provides a generator which generates a typed model API from your existing meta-model. This generated API specializes the model-api. Additionally, the model-api provides serializable data classes to represent a meta-model. The following diagrams show a class diagram of the data classes for the model and meta-model.","title":"Model API","component":"modelix","version":"main","name":"component-model-api","url":"/modelix/main/core/reference/component-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"1. org.modelix.model.api","hash":"_1_org_modelix_model_api","id":2},{"text":"2.org.modelix.model.data","hash":"_2_org_modelix_model_data","id":3}]},"39":{"id":39,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"main","name":"component-model-server","url":"/modelix/main/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"40":{"id":40,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The plugin offers a set of health checks via HTTP on port 48305 and path /health. Health checks can be enabled adding query parameters with the health check name and the value true to the request. The check fails, if the indexer is currently running for one of the opened projects. This check indicates a healthy system until a project is opened. Combine it with the projects health check to effectively wait for the system to be ready to serve data immediately. Reports an unhealthy system whenever no project is loaded. Reports an unhealthy system when no virtual folders are available. This might also be true in case a project without virtual folders is fully loaded.","title":"mps-model-server-plugin","component":"modelix","version":"main","name":"component-mps-model-server-plugin","url":"/modelix/main/core/reference/component-mps-model-server-plugin.html","titles":[{"text":"Health checks","hash":"_health_checks","id":1},{"text":"indexer","hash":"_indexer","id":2},{"text":"projects","hash":"_projects","id":3},{"text":"virtualFolders","hash":"_virtualfolders","id":4}]},"41":{"id":41,"text":"Repository | Nexus The @modelix/vue-model-api can be used to create Vue.js applications, that interact with a model server by reading and writing models. @modelix/vue-model-api provides Vue.js composable to connect to the model server. It exposes the model as a tree of reactive objects to the application developer. The exposed object can be further wrapped by the generated TypeScript API by the Gradle plugin for typed model API generation.","title":"Vue.js bindings","component":"modelix","version":"main","name":"component-vue-model-api","url":"/modelix/main/core/reference/component-vue-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"42":{"id":42,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/tutorial/index.html","titles":[]},"43":{"id":43,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"44":{"id":44,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/explanation/index.html","titles":[]},"45":{"id":45,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"main","name":"usage-platform","url":"/modelix/main/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"46":{"id":46,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/tutorial/index.html","titles":[]},"47":{"id":47,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version 23.1. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. If you are only intersted in one specific component, you can select it in the menu at the bottom left. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users start here. How-To Guides Reference Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"48":{"id":48,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"23.1","name":"architecture","url":"/modelix/23.1/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"49":{"id":49,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"23.1","name":"glossary","url":"/modelix/23.1/explanation/glossary.html","titles":[]},"50":{"id":50,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"23.1","name":"goals","url":"/modelix/23.1/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"51":{"id":51,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/explanation/index.html","titles":[]},"52":{"id":52,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"23.1","name":"faq","url":"/modelix/23.1/howto/faq.html","titles":[]},"53":{"id":53,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/howto/index.html","titles":[]},"54":{"id":54,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Development, Releases, and Roadmap","component":"modelix","version":"23.1","name":"roadmap","url":"/modelix/23.1/main/roadmap.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2},{"text":"Roadmap","hash":"_roadmap","id":3},{"text":"Key priorities overview","hash":"_key_priorities_overview","id":4},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":5},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":6},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":7},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":8},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":9},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":10},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":11},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":12},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":13},{"text":"LIonWeb","hash":"_lionweb","id":14}]},"55":{"id":55,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"23.1","name":"todo","url":"/modelix/23.1/main/todo.html","titles":[]},"56":{"id":56,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗","title":"Table of modelix Components","component":"modelix","version":"23.1","name":"components-table","url":"/modelix/23.1/reference/components-table.html","titles":[]},"57":{"id":57,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/reference/index.html","titles":[]},"58":{"id":58,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"23.1","name":"repositories-components","url":"/modelix/23.1/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"59":{"id":59,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"23.1","name":"build-component","url":"/modelix/23.1/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":2},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":3}]},"60":{"id":60,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/tutorial/index.html","titles":[]},"61":{"id":61,"text":"The examples are currently work in progress and are develop alongside the modelix platform development. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use-cases and architectures based on what is provided here. Not all features of modelix are shown here so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is then modelix itself ships with a projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration of what is possible with modelix and make you think and envision your own use-cases. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties. Once the initial build has completes you can dive in with the following: Read explanations in the Courses Domain: MPS Language and Model Read the use-cases these samples cover in the Use Cases of the Sample project Understand the repository in the Sample Repository Structure Inspect and edit the project with the code editor of your choice. The top folder in the repository provides IntelliJ configurations, the mps folder is a sub-project can be opened using MPS 2021.2.6, and the spa-dashboard-angular folder is a WebStorm project. Start sample components which realize use case samples:tutorial/startup-usecases.adoc","title":"Welcome to the modelix samples!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/samples/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7},{"text":"Entry Points","hash":"_entry_points","id":8}]},"62":{"id":62,"text":"","title":"Courses Domain: MPS Language and Model","component":"modelix","version":"23.1","name":"courses-domain","url":"/modelix/23.1/samples/explanation/courses-domain.html","titles":[]},"63":{"id":63,"text":"The repository of the modelix samples is a single gradle project to make building everything at once easy. The examples are organized by the technology they use into the various sub-folders: Components/Tech Description Status Folder MPS + cloud-plugin MPS language definition that is used by all examples. The MPS language structure is used to generate a Java API consumed by all examples. ✅ mps MPS, metamodel-generator Generated Kotlin API from the MPS language. ✅ mps/metamodel OpenAPI A hand-crafted OpenAPI specification that defines domain-specific REST endpoints which expose the model contents. ✅ openapi model-server + Quarkus An implementation of the OpenAPI that exposes the model contents REST. Obtains model data from a running model-server. ✅ rest-api-model-server ligh-model-server+ ModelQL + Ktor An implementation of the OpenAPI that exposes the model contents REST. Obtains model data from a running the light-model-server MPS plugin. ✅ rest-api-model-ql Angular via REST A single page app that realizes a read-only dashboard. Can connect to either of the OpenAPI implementations. ✅ spa-dashboard-angular Each component documentation with component specific content.","title":"Sample Repository Structure","component":"modelix","version":"23.1","name":"structure","url":"/modelix/23.1/samples/explanation/structure.html","titles":[]},"64":{"id":64,"text":"The imaginary domain use-case represents a dashboard like view on model content. This use-case envisions a scenario where an independent client (outside of MPS) wants to consume the content of models defined in MPS, thus requiring read only access. There are two different variations of this use-case: Use Case 1a: Dashboard view next to Room In this variation, we envision a display next to each room that shows the upcoming lectures in that room. A low power display such as an low power e-ink with showing a simple website via wifi would be sufficient for this scenario. Use Case 1b: Dashboard View in the Main Hall In this variation, we envision a display in the main hall shows the full schedule of all the lectures of the current day. A large display would be used for this scenario, showing a website via wifi which contains the complete schedule. In both variations, the clients do not need to edit these models and are not capable to run a full MPS instance to show the model content. While the e-ink display does not require automatic updates (the display simply refreshes periodically every 15 minutes), the display in the main hall will require automatic updates (having more power and being a central display it would want to show the newest information at all times). The dashboard component, an angular app that serves the content of a model, implements such a simple single page application (SPA) for this use-case.","title":"Use-Case 1: Dashboard","component":"modelix","version":"23.1","name":"usecase-1","url":"/modelix/23.1/samples/explanation/usecase-1.html","titles":[]},"65":{"id":65,"text":"","title":"Use-Case 2: Manual Schedule Creation","component":"modelix","version":"23.1","name":"usecase-2","url":"/modelix/23.1/samples/explanation/usecase-2.html","titles":[]},"66":{"id":66,"text":"Given the courses domain and its meta-model explained here, the samples project covers two use-cases: Use-Case 1: Dashboard Use-Case 2: Manual Schedule Creation To illustrate how the different use-cases and component architecture relate, this section provides a short tabular description. Use Case Variant Backend MPS Backend model-server Use Case 1: Dashboard view 1a. light-model-server-client + rest-api-model-ql light-model-server-client + rest-api-model-ql 1b. json-bulk-model-access + rest-api-json-bulk ❌ Use Case 2: Real-time collaboration 🏗️ 🏗️","title":"Use Cases of the Sample project","component":"modelix","version":"23.1","name":"usecases","url":"/modelix/23.1/samples/explanation/usecases.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Use-Case Architecture Mapping","hash":"_use_case_architecture_mapping","id":2}]},"67":{"id":67,"text":"This samples implementations allow to run different use-cases in different setups - thus showing the flexibility of the modelix platform. Depending on the chosen use-case, only a subset of the components in this repository are used. The full architecture includes components used for multiple use-cases. One does not need all components to realize individual use-cases. In the following a short overview is given on each component. The meta-model (language) of the courses domain and a model (soulution) with sample data in JetBrains MPS on which everything in this sample is based. ▶️ For more details, see the Language section in the MPS component documentation An API based on the meta-model generated with the metamodel-generator component from modelix. ▶️ For more details, see the 'Generated API' section in the MPS component documentation In this example project, an extra domain-specific API layer is added which is defined in the OpenAPI specification[1]. This layer is meant educational as no noteworthy abstractions from the language itself happen in this definition. It intends to show how one introduces a clearly defined domain-specific abstraction decoupling the language engineering (meta-modeling) and the web development. We provide two backends (i.e. implementations of the API layer): The API via modelQL and API via model-server components. ▶️ For more details, see the OpenAPI component documentation. This project provides two implementations of the openapi domain abstraction. MPS as a source This backend provides access to the model by obtaining the model knowledge directly from a running MPS instance. It is implemented using ktor and connects to a model-client plugin running inside of MPS. This component can only provide read and write access. ▶️ For more details, see the API via modelQL for details. model-server as a source This backend provides access to the model by connecting to a running model-server. It is implemented using Quarkus and can provide read access to the underlying model. Additionally, a websocket for push notifications about ongoing model changes is provided. This is realized using websockets exposed by the model-server. ▶️ For more details, also see the API via model-server component for details. The dashboard provides access to model knowledge through a browser. As it is conforming to the OpenAPI specification, the dashboard is able to obtain the model content from both backend implementations. However, the dashboard is consequently limited by the chosen backend. This components requires running any of the available OpenAPI implementations to obtain model knowledge from. ▶️ For more details, also see the Dashboard for details. ⚠️ TBD ⚠️ TBD 1. See https://www.openapis.org/ for details on how OpenAPI works.","title":"System architecture and components in this repository","component":"modelix","version":"23.1","name":"architecture","url":"/modelix/23.1/samples/reference/architecture.html","titles":[{"text":"Full system architecture","hash":"_full_system_architecture","id":1},{"text":"The MPS Language","hash":"_the_mps_language","id":2},{"text":"Generated model API (domain API","hash":"_generated_model_api_domain_api","id":3},{"text":"Domain-specific OpenAPI","hash":"_domain_specific_openapi","id":4},{"text":"OpenAPI implementation","hash":"_openapi_implementation","id":5},{"text":"Single-page application (SPA) Dashboard","hash":"_single_page_application_spa_dashboard","id":6},{"text":"Real-time' collaboration web application","hash":"_real_time_collaboration_web_application","id":7},{"text":"Deploying to Docker / Kubernetes","hash":"_deploying_to_docker_kubernetes","id":8}]},"68":{"id":68,"text":"Figure 1. The SPA Dashboard Figure 2. View on a single Lecture in the Dashboard This component provides a single page application which accesses an implementation of the sample OpenAPI specification. The idea here is to illustrate a read only use-case where a system/service outside of MPS wants to consume the content of models previously defined in MPS. This dashboard is a single-page app showing content obtained from the intermediate REST APIs. A user cannot edit these models from the browser. It does not matter whether MPS is used to store the model information (e.g. by running an MPS instance in the cloud), or alternatively the modelix model-server is used. You can build this subproject individually from the parent folder via via Gradle: ./gradlew spa-dashboard-angular:build To run this application you will need a component which provides an API implementation conforming to the OpenAPI spec. Thus, you need to start one of the available OpenAPI implementations in this project: Either start the rest-api-model-ql implementation, or alternatively you can start the rest-api-model-server implementation. Check the documentation of the corresponding project parts on how to start them. Make sure you have the correct ports defined in the API URLs. This app expects 8090 by default. Next run this single page application via: ./gradlew spa-dashboard-angular:npmRun You can then go to http://localhost:4200 to see a dashboard with the courses model content.","title":"Single page application: An Angular based dashboard","component":"modelix","version":"23.1","name":"dashboard","url":"/modelix/23.1/samples/reference/dashboard.html","titles":[{"text":"Building & Running","hash":"_building_running","id":1},{"text":"1. Build spa-dashboard-angular","hash":"_1_build_spa_dashboard_angular","id":2},{"text":"2. Start an OpenAPI implementation","hash":"_2_start_an_openapi_implementation","id":3},{"text":"3. Run the angular app","hash":"_3_run_the_angular_app","id":4}]},"69":{"id":69,"text":"The language used in all examples is the same. The language itself is fairly small: It describes a very simplified lecture schedule. The language intentionally does not use expressions, creating editors for expressions by hand is very cumbersome and at the time where these samples were created modelix has no support for generating these editors for you. The main concepts of the language are: Room: where lecture are held. Each room has a maximum capacity of students, a name and some additional properties. Lecture: Have a name, some description and reference a room where they are held. And also have a schedule which determines when they are held and if they repeat through the whole semester or are a one time lecture. Student: A student with a name and birthday. Assignment: Lecture assignments for a single student. Some concepts are contained a root node like a Rooms container to make structuring the editors in MPS easier: classDiagram class Rooms { > } class Courses { > } class Students { > } class LectureAssignments { > } Rooms *-- Room : 0..n Courses *-- Lecture: 0..n Lecture .. Room: 1 Lecture *-- Schedule: 1 OneOff (iNode) rooms.children.rooms.forEach { it.properties.name } The code generator has exported the language definition, and we can use to write type safe code that works with the models. For properties and children we now have attributes in the generated classes and if somebody renames a property or child-role the compiler will tell us. Of course the MPSLanguageRegistry.getInstance would throw an exception if our iNode instance isn’t a Rooms instance. The generate class for a Room concept: concept Room extends BaseConcept implements INamedConcept instance can be root: false alias: short description: properties: maxPlaces : integer hasRemoteEquipment : boolean children: > references: > Will look like this: java package University.Schedule.structure; /*Generated by MPS */ import jetbrains.mps.lang.core.structure.BaseConcept; import jetbrains.mps.lang.core.structure.INamedConcept; import org.modelix.mps.apigen.runtime.INodeHolder; import org.jetbrains.annotations.NotNull; import org.modelix.model.api.INode; import org.jetbrains.annotations.Nullable; /** * Generated for http://127.0.0.1:63320/node?ref=r%3Adfa26643-4653-44bc-9dfe-5a6581bcd381%28University.Schedule.structure%29%2F4128798754188010580 */ public class Room extends BaseConcept implements INamedConcept { public class Properties extends BaseConcept.Properties implements INodeHolder, INamedConcept.Properties { @NotNull @Override public INode getINode() { return Room.this.getINode(); } @Nullable public Integer getMaxPlaces() { String propertyValue = getINode().getPropertyValue(\"maxPlaces\"); if (propertyValue != null && !(propertyValue.isEmpty())) { return Integer.parseInt(propertyValue); } return null; } @Nullable public Integer setMaxPlaces(Integer value) { if (value != null) { getINode().setPropertyValue(\"maxPlaces\", Integer.toString(value)); } else { getINode().setPropertyValue(\"maxPlaces\", null); } return value; } @Nullable public Boolean getHasRemoteEquipment() { String propertyValue = getINode().getPropertyValue(\"hasRemoteEquipment\"); if (propertyValue != null && !(propertyValue.isEmpty())) { return Boolean.parseBoolean(propertyValue); } return null; } @Nullable public Boolean setHasRemoteEquipment(@Nullable Boolean value) { if (value != null) { getINode().setPropertyValue(\"hasRemoteEquipment\", Boolean.toString(value)); } else { getINode().setPropertyValue(\"hasRemoteEquipment\", null); } return value; } } public class Children extends BaseConcept.Children implements INodeHolder, INamedConcept.Children { @NotNull @Override public INode getINode() { return Room.this.getINode(); } } public class References extends BaseConcept.References implements INodeHolder, INamedConcept.References { @NotNull @Override public INode getINode() { return Room.this.getINode(); } } private final Properties properties; private final Children children; private final References references; public Room(INode node) { super(node); this.properties = new Properties(); this.children = new Children(); this.references = new References(); } public Properties getProperties() { return this.properties; } public Children getChildren() { return this.children; } public References getReferences() { return this.references; } } At the moment it’s not possible to regenerate the API as part of the CI/gradle build, that’s why the generated sources are checked into the repository. This limitation is specific this example and is somehow caused by the MPS build failing to load the right languages during the build. Other projects are successfully using the api-gen code generator within their CI/gradle build. The limitation will get fixed in the future but for now the generated Java code is checked into the repository.","title":"Meta-model and the Generated Domain-Specific Model API","component":"modelix","version":"23.1","name":"meta-model-model-api","url":"/modelix/23.1/samples/reference/meta-model-model-api.html","titles":[{"text":"Language","hash":"_language","id":1},{"text":"Generated API","hash":"_generated_api","id":2},{"text":"Limitations","hash":"_limitations","id":3}]},"70":{"id":70,"text":"This 'component' is not a real component but rather a start helper - the model-server is started using the Gradle application plugin. To start the model-server, simply call the following in the repository root: ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" As an alternative, you can also use Docker to run an in instance of model-server using the following command: docker run --rm -p 28101:28101 -d modelix/modelix-model:1.3.2 java -XX:MaxRAMPercentage=85 -Djdbc.url=$jdbc_url -cp \"model-server/build/libs/*\" org.modelix.model.server.Main -inmemory","title":"model-server start helper","component":"modelix","version":"23.1","name":"model-server","url":"/modelix/23.1/samples/reference/model-server.html","titles":[]},"71":{"id":71,"text":"This component of a single openapi.yml file which provides the OpenAPI specification of the REST API implementations serving as examples in this project. The described API provides an additional domain-specific abstraction of the courses domain[1]. The intention of this abstraction is to provide an example on how the use of modelix can be abstracted for eventual consumer apps, such as the Angular based dashboard. The development process thus can follow a API-first approach. Consequently, this openAPI provides a contract of the API behaviour for web teams and a language engineers. There are currently three implementations of this OpenAPI specification: API via model-server API via modelQL 1. This additional abstraction admittedly does not really provide fancy abstractions for this domain. Its purpose is rather educational for you to understand the option to add an additional layer separating web development from language engineering. You do not have to do this. Of course one does not necessarily need such an abstraction layer - any dashboard or web app can directly communicate with the API provided by the model-server together with the generated model API","title":"Intermediate OpenAPI of the Courses domain","component":"modelix","version":"23.1","name":"openapi","url":"/modelix/23.1/samples/reference/openapi.html","titles":[]},"72":{"id":72,"text":"This project provides a REST API that wraps the functionality of the light-model-server MPS plugin running inside an MPS instance. The provided REST API conforms to the API spec in the openapi.yaml. You can build this subproject individually from the parent folder via all gradle: ./gradlew rest-api-model-ql:build Before running the API provider you need to open the MPS project in the mps folder. The initial gradle build will automatically have set up MPS with the light-model-server plugin and expose the models via query language called ModelQL. This API is then accessed from this openAPI abstraction implementation to load the models. Once your MPS project is opened you can run: ./gradlew rest-api-model-ql:run Once you see a log message like: [DefaultDispatcher-worker-8] INFO ktor.application - Responding at http://0.0.0.0:8090 Your openAPI implementation is ready. Settings such as ports and hosts are defined in the application.conf file. For simple testing you can curl the data provided by the API for example: 🧾 Unfold for examples ```console $ curl -s -X GET \"http://localhost:8090/rooms\" -H \"accept: application/json\" | jq { \"rooms\": [ { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\", \"name\": \"somehjtinghekjrekjrhe\", \"maxPlaces\": 32232121, \"hasRemoteEquipment\": false }, { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } ] } $ curl -s -X GET \"http://localhost:8090/rooms/mps-node%253Ar%253Ace161c54-ea76-40a6-a31d-9d7cd01febe2%2528University.Schedule.sandbox%2529%252F4128798754188058349\" -H \"accept: application/json\" | jq { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } $ curl -s -X GET \"http://localhost:8090/rooms/mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" -H \"accept: application/json\" | jq { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\", \"name\": \"somehjtinghekjrekjrhe\", \"maxPlaces\": 32232121, \"hasRemoteEquipment\": false } $ curl -s -X GET \"http://localhost:8090/rooms/trash\" -H \"accept: application/json\" | jq \"Can not load Room: null $ curl -s -X GET \"http://localhost:8090/lectures\" -H \"accept: application/json\" | jq curl -s -X GET \"http://localhost:8090/lectures\" -H \"accept: application/json\" | jq { \"lectures\": [ { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\", \"name\": \"Physics 101\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" }, { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F1305729863392535677\", \"name\": \"Physics 102\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\" }, { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188060854\", \"name\": \"New Students Welcome\", \"description\": \"Hello everyone\", \"maxParticipants\": 69, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\" } ] } $ curl -s -X GET \"http://localhost:8090/lectures/mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\" -H \"accept: application/json\" | jq { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\", \"name\": \"Physics 101\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" } $ curl -s -X GET \"http://localhost:8090/lectures/trash\" -H \"accept: application/json\" | jq \"Can not load Lecture: null\" Alternatively you can now start the Dashboard to consume this API endpoint.","title":"API via modelQL","component":"modelix","version":"23.1","name":"rest-api-model-ql","url":"/modelix/23.1/samples/reference/rest-api-model-ql.html","titles":[{"text":"Building","hash":"_building","id":1},{"text":"Usage","hash":"_usage","id":2}]},"73":{"id":73,"text":"This project provides a custom REST API implemented in Quarkus that wraps a model-server instance. The REST API abstracts the generic model-server API for providing the dashboard example with usable data. The provided REST API conforms to the API spec in the openapi.yaml. You can build this subproject individually from the parent folder via all gradle: ./gradlew rest-api-model-server:build Before starting the REST API, a model-server instance needs to be running. The example from the MPS folder has to be deployed on this instance in a repository call courses. Once these preconditions are met, the REST API can be launched with: ./gradlew rest-api-model-server:run For simple testing you can curl the data provided by the API for example: 🧾 Unfold for examples $ curl -s -X GET \"http://localhost:8090/rooms\" -H \"accept: application/json\" | jq { \"rooms\": [ { \"roomRef\": \"r:ce161c54-ea76-40a6-a31d-9d7cd01febe2(unused)/4128798754188058347\", \"name\": \"Einstein\", \"maxPlaces\": 42, \"hasRemoteEquipment\": true }, { \"roomRef\": \"r:ce161c54-ea76-40a6-a31d-9d7cd01febe2(unused)/4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } ] } Alternatively you can now start the Dashboard to consume this API. If you want to observe the updates sent on the web socket, you can use wscat to get some insights when updates are sent. wscat -c ws://127.0.0.1:8090/updates","title":"API via model-server","component":"modelix","version":"23.1","name":"rest-api-model-server","url":"/modelix/23.1/samples/reference/rest-api-model-server.html","titles":[{"text":"Building","hash":"_building","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Introspecting the websocket communication","hash":"_introspecting_the_websocket_communication","id":3}]},"74":{"id":74,"text":"This Tutorial shows how to start up a system that implements Use-Case 1: Dashboard The samples provide a total of three architectural variation of this use case: Using the more complex rest-api-model-server backend and the model-server. Using the rest-api-model-ql backend and the light-model-server MPS plugin rest-api-model-server (legacy) + model-server All gradle commands assume you are in the top level folder of the samples repository. To start up the system as described in UC 1a, you first have to have built the entire project: ./gradlew Once done, you need to start all components involved, these are: MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project stores the model content using MPS persistence. The gradle build process will have downloaded all plugins needed to mps/project-mps-backend/build/dependencies and declare this folder as a global library. This includes the json-bulk-model-access and the light-model-client. API layer: The rest-api-json-bulk provides the models from the running MPS instance, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-json-bulk:run 🧾 You can expect output similar to this (unfold to see details) > Task :rest-api-json-bulk:run 2022-12-07 10:12:38.874 [DefaultDispatcher-worker-11] INFO ktor.application - Autoreload is disabled because the development mode is off. 2022-12-07 10:12:39.009 [DefaultDispatcher-worker-11] INFO ktor.application - Application started in 0.14 seconds. 2022-12-07 10:12:39.131 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:8090 91% EXECUTING [2m 20s] > :rest-api-json-bulk:run Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): $ ./gradlew spa-dashboard-angular:npmRun 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will not automatically synchronize to the dashboard, you will have to manually reload the model.","title":"Run Use-Case 1 Implementation","component":"modelix","version":"23.1","name":"start-usecase-1-a","url":"/modelix/23.1/samples/tutorial/start-usecase-1-a.html","titles":[{"text":"How to start UC 1a","hash":"_how_to_start_uc_1a","id":1}]},"75":{"id":75,"text":"TODO using the rest-api-model-ql backend and the light-model-server MPS plugin All gradle commands assume you are in the top level folder of this repository. To start up the system as described in UC 1b, you first have to have build the entire project: ./gradlew Once done, you need to start all components involved, these are: modelix model-server: Model knowledge is supplied by the model-sever in this use case. To avoid complicated setups, we simply start the model-server in memory and load the model content from the included dump file, all using gradle: ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" 🧾 You can expect output similar to this (unfold to see details) ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" > Task :model-server:run 18:33:16,185 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 18:33:16,186 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 18:33:16,186 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/home/nkoester/.gradle/caches/modules-2/files-2.1/org.modelix/model-server-fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model-server-fatjar-1.3.2.jar!/logback.xml] 18:33:16,194 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@f4168b8 - URL [jar:file:/home/nkoester/.gradle/caches/modules-2/files-2.1/org.modelix/model-server-fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model-server-fatjar-1.3.2.jar!/logback.xml] is not of type file 18:33:16,269 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 18:33:16,270 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [console] 18:33:16,272 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.modelix] to DEBUG 18:33:16,282 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [console] to Logger[org.modelix] 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 18:33:16,282 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [console] to Logger[ROOT] 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 18:33:16,283 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@7ff95560 - Registering current configuration as safe fallback point 18:33:16.295 [main] INFO org.modelix.model.server.Main - Max memory (bytes): 32178700288 18:33:16.295 [main] INFO org.modelix.model.server.Main - Max memory (bytes): 32178700288 18:33:16.295 [main] INFO org.modelix.model.server.Main - Server process started 18:33:16.295 [main] INFO org.modelix.model.server.Main - Server process started 18:33:16.295 [main] INFO org.modelix.model.server.Main - In memory: true 18:33:16.295 [main] INFO org.modelix.model.server.Main - In memory: true 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to secret file: /secrets/modelsecret/modelsecret.txt 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to secret file: /secrets/modelsecret/modelsecret.txt 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to JDBC configuration file: null 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to JDBC configuration file: null 18:33:16.296 [main] INFO org.modelix.model.server.Main - Schema initialization: false 18:33:16.296 [main] INFO org.modelix.model.server.Main - Schema initialization: false 18:33:16.296 [main] INFO org.modelix.model.server.Main - Set values: [] 18:33:16.296 [main] INFO org.modelix.model.server.Main - Set values: [] 18:33:16.296 [main] INFO org.modelix.model.server.Main - Port: 28101 18:33:16.296 [main] INFO org.modelix.model.server.Main - Port: 28101 Values loaded from /home/nkoester/git/modelix/modelix-sample/model-server/courses.modelserver.dump (73) 18:33:16.364 [main] INFO ktor.application - Autoreload is disabled because the development mode is off. 18:33:16.428 [main] INFO ktor.application - Application started in 0.088 seconds. 18:33:16.518 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:28101 85% EXECUTING [7s] > :model-server:run API layer: The rest-api-model-server provides an abstraction of the model from the previously started model-server, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-model-server:quarkusDev 🧾 You can expect output similar to this (unfold to see details) $ ./gradlew rest-api-model-server:quarkusDev > Task :rest-api-model-server:quarkusDev Listening for transport dt_socket at address: 5005 Press [h] for more options>NG [8s] Tests paused Press [r] to resume testing, [h] for more options> Press [r] to resume testing, [o] Toggle test output, [h] for more options> __ ____ __ _____ ___ __ ____ ______ --/ __ \\/ / / / _ | / _ \\/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ , 95% EXECUTING [16s] > :rest-api-model-server:quarkusDev Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): $ ./gradlew spa-dashboard-angular:npmRun 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-modelserver-backend folder. This MPS project does not store the model locally and instead obtains them from the model-server via the cloud-access plugin. The gradle build process will have downloaded all plugins needed to mps/project-modelserver-backend/build/dependencies and declare this folder as a global library. This includes the cloud-access plugin. Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will automatically synchronize to the dashboard All gradle commands assume you are in the top level folder of this repository. To start up the system as described in UC 1c, you first have to have built the entire project: ./gradlew Once done, you need to start all components involved, these are: MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project stores the model content using MPS persistence. The gradle build process will have downloaded all plugins needed to mps/project-mps-backend/build/dependencies and declare this folder as a global library. This includes the light-model-server plugin used in this example UC. API layer: The light-model-server provides the models from the running MPS instance, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-model-ql:run 🧾 You can expect output similar to this (unfold to see details) > Task :rest-api-model-ql:run 2023-01-25 18:46:48.977 [main] INFO o.m.s.r.ModelServerLightWrapper - Connecting to light model-server at ws://localhost:48302/ws 2023-01-25 18:46:49.044 [main] INFO o.m.s.r.ModelServerLightWrapper - Connection successful 2023-01-25 18:46:49.070 [main] INFO ktor.application - Autoreload is disabled because the development mode is off. 2023-01-25 18:46:49.346 [main] INFO ktor.application - Application started in 0.286 seconds. 2023-01-25 18:46:49.455 [DefaultDispatcher-worker-4] INFO ktor.application - Responding at http://0.0.0.0:8090 2023-01-25 18:46:50.806 [eventLoopGroupProxy-4-1] INFO o.m.s.r.ModelServerLightWrapper - Resolving node trash 94% EXECUTING [26m 13s] > :rest-api-model-ql:run Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): `$ ./gradlew spa-dashboard-angular:npmRun ` 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will not automatically synchronize to the dashboard, you will have to manually reload the model.","title":"Run Use-Case 2a Implementation","component":"modelix","version":"23.1","name":"start-usecase-1-b","url":"/modelix/23.1/samples/tutorial/start-usecase-1-b.html","titles":[{"text":"How to start UC 1b","hash":"_how_to_start_uc_1b","id":1},{"text":"How to start UC 1c","hash":"_how_to_start_uc_1c","id":2}]},"76":{"id":76,"text":"TODO startup tutorial","title":"","component":"modelix","version":"23.1","name":"startup-usecases","url":"/modelix/23.1/samples/tutorial/startup-usecases.html","titles":[]},"77":{"id":77,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"78":{"id":78,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/explanation/index.html","titles":[]},"79":{"id":79,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/howto/index.html","titles":[]},"80":{"id":80,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"23.1","name":"usage-light-model-client","url":"/modelix/23.1/core/howto/usage-light-model-client.html","titles":[]},"81":{"id":81,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = buildDir.resolve(\"mps\") val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"23.1","name":"usage-model-api-gen-gradle","url":"/modelix/23.1/core/howto/usage-model-api-gen-gradle.html","titles":[]},"82":{"id":82,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"23.1","name":"usage-model-server","url":"/modelix/23.1/core/howto/usage-model-server.html","titles":[]},"83":{"id":83,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"23.1","name":"component-light-model-client","url":"/modelix/23.1/core/reference/component-light-model-client.html","titles":[]},"84":{"id":84,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-expor provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"23.1","name":"component-metamodel-export","url":"/modelix/23.1/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"85":{"id":85,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Name of the registration helper taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl` \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept` \"C_\" \"\" typedConceptImpl` \"_C_TypedImpl_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"23.1","name":"component-model-api-gen-gradle","url":"/modelix/23.1/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"86":{"id":86,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"23.1","name":"component-model-api-gen","url":"/modelix/23.1/core/reference/component-model-api-gen.html","titles":[]},"87":{"id":87,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"23.1","name":"component-model-server","url":"/modelix/23.1/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"88":{"id":88,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/tutorial/index.html","titles":[]},"89":{"id":89,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":5},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":6}]},"90":{"id":90,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/explanation/index.html","titles":[]},"91":{"id":91,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"23.1","name":"usage-platform","url":"/modelix/23.1/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"92":{"id":92,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/tutorial/index.html","titles":[]},"93":{"id":93,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version 23.2. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users usually start here. How-To Guides Reference There is also a dedicated API page where you can find component specific API documentaion over at https://api.docs.modelix.org. Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"94":{"id":94,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"23.2","name":"architecture","url":"/modelix/23.2/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"95":{"id":95,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"23.2","name":"glossary","url":"/modelix/23.2/explanation/glossary.html","titles":[]},"96":{"id":96,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"23.2","name":"goals","url":"/modelix/23.2/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"97":{"id":97,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/explanation/index.html","titles":[]},"98":{"id":98,"text":"The goal of this quick overview is for you to understand, what modelix is, what it is not and how it might be utilized. Modelix is a platform to bring models to the web. It consists of multiple components, which can be combined in different ways to support a variety of use cases. It is important to note, that modelix is neither a language workbench in the traditional sense nor a one-size-fits-all solution. The modelix project aims to provide you with building blocks, which empower you to construct your own application with ease. The following table gives an overview over essential components, which you are very likely to encounter when using modelix. For a full list of components check out the components table. Component Short description model-api Untyped API, which allows to interact with models. model-server Server, which persistently stores models. model-client Client, which implements the model-api and connects to a model-server. model-api-gen(-gradle) Component, which generates a typed, domain specific API based on a metamodel definition. The generated API wraps the untyped model-api. As a basic example, you might want to create a web app, which manipulates domain-specific models. In this case we assume a metamodel for such models exists as part of an MPS project. The image above shows how the essential components work together to form the backend for a web application. In this case the metamodel definition is generated from the structure aspect of a language in MPS. For a different use case it could also be from another (custom) source. The web application can then use the domain-specific API to manipulate and store models in the model-server. Of course, this example only scratches the surface of what is possible with modelix. Apart from the individual components, modelix can also provide a system called workspaces. It consists of multiple docker images, which run in a kubernetes cluster. Among other features, this system enables users to use projectional editors inside their browser by running MPS instances in the cloud. Modelix is always evolving. If you want to learn more about what is coming, check out the roadmap.","title":"Modelix Overview","component":"modelix","version":"23.2","name":"overview","url":"/modelix/23.2/explanation/overview.html","titles":[{"text":"What is Modelix?","hash":"_what_is_modelix","id":1},{"text":"Essential components","hash":"_essential_components","id":2},{"text":"Basic example using essential components","hash":"_basic_example_using_essential_components","id":3},{"text":"Modelix workspaces","hash":"_modelix_workspaces","id":4},{"text":"What’s next","hash":"_whats_next","id":5}]},"99":{"id":99,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"23.2","name":"faq","url":"/modelix/23.2/howto/faq.html","titles":[]},"100":{"id":100,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/howto/index.html","titles":[]},"101":{"id":101,"text":"This guide aims to make it easier for you to start contributing to the modelix project. The following tools are used to develop modelix. You may want to install these on your machine before getting started. IntelliJ IDEA Java 11 (e.g. Temurin) ant git MPS (recommended version 2021.2.6) docker kubernetes helm python npm pre-commit The modelix repositories are located on GitHub. In order to contribute you need to configure two-factor authentication and commit verification. We use a YouTrack instance hosted on issues.modelix.org to keep track of modelix issues. If you want to create a new issue, you can do so in the corresponding GitHub repository, and it will be automatically imported into YouTrack. We use Semantic Versioning in modelix.core (a further rollout to the other modelix repositories is planned for the future). Therefore, commit messages follow Conventional Commits. To install the hooks enforcing the convention, you need to run npm install and pre-commit install in your local repository. Branch names should always be prefixed. The prefix is determined by the type of changes that your branch provides like fix/, feature/, docs/. Alternatively you can use issue/ followed by the issue id as your branch name, e.g. issue/MODELIX-123. If a corresponding issue exists for your pull request, then the issue id must be part of the title. You can use the \"Copy ID and summary to clipboard\" button in YouTrack, and use the clipboard content as the title for the pull request.","title":"Contribution Guide","component":"modelix","version":"23.2","name":"contribute","url":"/modelix/23.2/main/contribute.html","titles":[{"text":"Tools","hash":"_tools","id":1},{"text":"Essentials","hash":"_essentials","id":2},{"text":"Deployment","hash":"_deployment","id":3},{"text":"Other","hash":"_other","id":4},{"text":"Platforms","hash":"_platforms","id":5},{"text":"Repositories","hash":"_repositories","id":6},{"text":"Issue Tracking","hash":"_issue_tracking","id":7},{"text":"Semantic Versioning and Conventional Commits","hash":"_semantic_versioning_and_conventional_commits","id":8},{"text":"Naming Conventions","hash":"_naming_conventions","id":9},{"text":"Branch Names","hash":"_branch_names","id":10},{"text":"Pull Requests","hash":"_pull_requests","id":11}]},"102":{"id":102,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here.","title":"Development and Releases","component":"modelix","version":"23.2","name":"development","url":"/modelix/23.2/main/development.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2}]},"103":{"id":103,"text":"Unfortunately, we were not able to update the roadmap before releasing modelix-23.2. We are dedicated to bring an updated version during December 2023 after our already scheduled planning sessions. Please check the documentation in the main branch of modelix. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Roadmap","component":"modelix","version":"23.2","name":"roadmap","url":"/modelix/23.2/main/roadmap.html","titles":[{"text":"Key priorities overview","hash":"_key_priorities_overview","id":1},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":2},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":3},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":4},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":5},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":6},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":7},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":8},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":9},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":10},{"text":"LIonWeb","hash":"_lionweb","id":11}]},"104":{"id":104,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"23.2","name":"todo","url":"/modelix/23.2/main/todo.html","titles":[]},"105":{"id":105,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix kotlin-utils Kotlin 🔗 🔗 🔗 org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-datastructure Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix bulk-model-sync-lib Kotlin 🔗 🔗 🔗 🔗 org.modelix bulk-model-sync-solution MPS 🔗 🔗 org.modelix bulk-model-sync-gradle Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix.bulk-model-sync.gradle.plugin Gradle 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 vue-model-api Vue.js 🔗 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelql-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-core Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-html Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-typed Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-untyped Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix.mps model-adapters Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps model-server-plugin Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗 🔗","title":"Table of modelix Components","component":"modelix","version":"23.2","name":"components-table","url":"/modelix/23.2/reference/components-table.html","titles":[]},"106":{"id":106,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/reference/index.html","titles":[]},"107":{"id":107,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"23.2","name":"repositories-components","url":"/modelix/23.2/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"108":{"id":108,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"23.2","name":"build-component","url":"/modelix/23.2/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":2},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":3},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":4}]},"109":{"id":109,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/tutorial/index.html","titles":[]},"110":{"id":110,"text":"The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is, then modelix itself ships with a Projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration for what is possible with modelix and make you think about and envision your own use cases. To work with the samples, you need the following software installed.: MPS 2021.2.6 Java 11 Docker and Docker Compose Alternatives like Podman might work, but have not been tested. Clone samples repository Start building all components with ./gradlew build inside the repository Building everything in the beginning is not strictly necessary, but it enables you to let the build run, while you explore the documentation further. Explore the documentation Start with the overview Or go directly to one of the samples Use case 1: Model server and MPS Use case 2: Model server and web frontend Use case 3: Model server and web backend","title":"Introduction","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/samples/index.html","titles":[{"text":"Technical prerequisites","hash":"_technical_prerequisites","id":1},{"text":"Getting started","hash":"_getting_started","id":2}]},"111":{"id":111,"text":"The MPS language (aka. metamodel) used in all examples is the same. It is fairly small as describes a simplified lecture schedule. The language intentionally does not use expressions. Creating editors for expressions manually is tedious, and modelix has no support yet for generating these editors for you. The main concepts of the language are: RoomList Root node that contains rooms. Room LectureList Root node that contains lectures. Lecture Lectures are held in rooms. Schedule A lecture is scheduled. OnetimeSchedule A lecture can be scheduled once. WeeklyRecurringSchedule Or a lecture can be scheduled weekly until an end date You will find more concepts in the language like SemesterPlan, Tutor and Equipment they are not used in the samples as of now.","title":"Metamodel for the samples","component":"modelix","version":"23.2","name":"metamodel","url":"/modelix/23.2/samples/metamodel.html","titles":[]},"112":{"id":112,"text":"The samples are structured into use cases. Each use case uses different components from the modelix platform to create custom solutions. On this page, you can get an overview of all use cases, and see how they are related and what their essential differences are. In the first use case, an MPS project is synchronized to a repository on a model server by utilizing the model-server-sync-plugin. It shows how to make model data, previously accessible only in a running MPS or via files, available through a server. In itself, this use case has little value, but the next use cases build in part on it. See the Use case 1 page for details. In this use case, we connect web frontends to a model server. The web frontends read from and write model data to the model server. One web frontend can be used to edit model data and is implemented with Vue.js. The other one serves as an overview and is implemented with Angular. You can see how changes made in one connected application are instantly reflected in another connected application. You can also connect an MPS to the model server and see how changes made in the application are synced to MPS and vice versa. The frontend applications directly use the model-client JavaScript library that connects to the model server. They also use a TypeScript API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. See the Use case 2 page for details. In this use case, a web frontend connects to a web backend, which in turn communicates with a model server. Like in use case 2 model data is synced automatically between the model server, the application and MPS. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented with Quarkus. It uses the model-client to connect to a model server. It also uses a Kotlin API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. For the Angular based web frontend, the web backend provides a custom HTTP- and websocket-based API. See the Use case 3 page for details.","title":"Overview of the samples","component":"modelix","version":"23.2","name":"overview","url":"/modelix/23.2/samples/overview.html","titles":[{"text":"Use case 1","hash":"use_case_1","id":1},{"text":"Use case 2","hash":"use_case_2","id":2},{"text":"Use case 3","hash":"use_case_3","id":3}]},"113":{"id":113,"text":"This use case shows how model data can be synced between an MPS instance and a model server. This makes model data, previously accessible only in a running MPS or via files, available through a server. The synchronization needs to be initialized from MPS using the model-server-sync-plugin. Figure 1. Initiating synchronization and synchronizing change Figure 2. Initiating synchronization and synchronizing change (sequence diagram) Execute the following command to set up the MPS project under mps/project-mps-backend. It installs the model-server-sync-plugin and its dependencies. Command to set up the MPS project ./gradlew mps:project-mps-backend:build Command to start a model server docker-compose --profile useCase1 up This command starts a model server under http://localhost:28101/ Open the mps/project-mps-backend in MPS 2021.2.6. In the 'Cloud' tool window, right-click on Cloud and select Add Model Server Figure 3. Adding a model server Enter http://localhost:28101/ as the model servers URL Figure 4. Entering the address of the model server In the Cloud tool window, right-click on the added server and select Add Repository Figure 5. Adding a repository Enter courses as the repository name Figure 6. Entering repository name Right-click the University.Schedule.mps.backend.sandbox solution and select Cloud Actions > Copy on Cloud and Sync → http://localhost:28101/courses Figure 7. Synchronizing solution Explore synchronized data in the Cloud tool window Figure 8. Exploring synchronized data","title":"Use case 1: Model server and MPS","component":"modelix","version":"23.2","name":"use_case_1","url":"/modelix/23.2/samples/use_case_1.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Instructions","hash":"_instructions","id":2},{"text":"Setup MPS","hash":"_setup_mps","id":3},{"text":"Start a model server","hash":"_start_a_model_server","id":4},{"text":"Start MPS","hash":"_start_mps","id":5},{"text":"Connect to the model server","hash":"_connect_to_the_model_server","id":6}]},"114":{"id":114,"text":"This use case realizes the synchronization of model data between two web frontends and a model server. One web frontend is the Management application implemented in Vue.js and can modify the model content. It uses the @modelix/model-client, the @modelix/vue-model-api and code generated by the Model API generator. The generated code provides type-safe access to model data and is derived from the MPS languages under mps/languages. The other web frontend is written in Angular and only reads model data. It also uses the model-client and the generated type-safe TypeScript API. A running MPS instance can also sync model data using the model-server-sync-plugin. The web frontends communicate directly with a model server and not through an intermediary custom backend like in use case 3. Take a look at the overview to understand how this use case relates to the other use cases Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build needed components ./gradlew spa-management-vue:build spa-overview-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the Single-page applications spa-management-vue and spa-overview-angular Start up the components. docker-compose --profile useCase2 up This starts: a model server with initial data under http://localhost:28101/ the Management application under http://localhost:3000/ the Overview application under http://localhost:4200/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the Management application. Those changes are first synced to the model server. The model server syncs those changes to other opened web applications, like the Overview application or other instances of the Management application open in another tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa.","title":"Use case 2: Model server and web frontend","component":"modelix","version":"23.2","name":"use_case_2","url":"/modelix/23.2/samples/use_case_2.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"115":{"id":115,"text":"This use case realizes the synchronization of model data between a web application and MPS through a model server. This use case consists of: a model server that holds model data a web backend that can read and write data to the model server a web frontend that displays data from and interacts with the web backend an optionally running MPS that syncs its data with the model server To see how a web frontend can directly connect to a model server, take a look at use case 2. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented in Quarkus. It communicates to the model server using the model-client. The data communicated between the model server and web backend are modelix-specific data structures without information about the metamodel. In the backend, those data structures are wrapped with generated Kotlin classes generated by the Model API generator from the metamodel. The backend programmer can use this so-called domain-specific-language API to access model data more type-safely. The web backend exposes a custom application-specific API, which the web frontend uses to communicate and read and write data. The web backend, therefore: controls how data is read and written to the model server. hides details about modelix-specific data structures and domain-specific-language API. Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build the needed components ./gradlew rest-api-model-server:build spa-dashboard-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the web backend rest-api-model-server builds the web frontend spa-dashboard-angular Start up the components. docker-compose --profile useCase3 up This starts: a model server with initial data under http://localhost:28101/ the web backend under http://localhost:8090/ the web frontend under http://localhost:4201/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the web frontend. Those changes are first communicated to the web backend. From there, they are communicated to the model server. The model server syncs those changes to other open web applications. You can see this by opening the dashboard a second time in a different tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa. You can also start the web frontends from use case 2 and see how changes to the model are propagated there.","title":"Use case 3: Model server and web backend","component":"modelix","version":"23.2","name":"use_case_3","url":"/modelix/23.2/samples/use_case_3.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"116":{"id":116,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"117":{"id":117,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/explanation/index.html","titles":[]},"118":{"id":118,"text":"When working with large models you will quickly run into performance issues when you try to replicate the whole model into the client. While the data structure for model replication in Modelix supports partial loading of models, you still need a way to describe which data you need on the client. Loading data on demand while traversing the model also results in a poor performance, because of the potentially large number of fine-grained request. A first attempt to solve this problem was to disallow lazy loading and require the client to load all required data at the beginning, before working with the model. A special query language was used to filter the data and an attempt to access a node that is not included by that query resulted in an exception, forcing the developer to adjust the query. While this results in a more predictable performance, it is also hard to maintain and still not optimal for the performance. You have to download all the data at the beginning that you might eventually need, potentially exceeding the available memory of the system. The ModelQL query language provides a more dynamic way of loading parts of the model on demand, but still allows reducing the number of request to a minimum. The downside is that it’s not just a different implementation hidden behind the model-api, but requires to use a different API. The query language is inspired by Reactive Streams and the execution engine uses Kotlin Flows, which is a Coroutines compatible implementation of Reactive Streams. Often it’s useful to know if a stream is expected to return only one element or multiple elements. Project Reactor, another implementation of Reactive Streams, introduced the notion of Mono and Flux to distinguish them. You will also find them in ModelQL.","title":"ModelQL","component":"modelix","version":"23.2","name":"modelql","url":"/modelix/23.2/core/explanation/modelql.html","titles":[{"text":"Reactive Streams","hash":"_reactive_streams","id":1}]},"119":{"id":119,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/howto/index.html","titles":[]},"120":{"id":120,"text":"ModelQL defines its own HTTP endpoint and provides server/client implementations for it. The model-server and the mps-model-server-plugin already implement this endpoint. The client can be created like this: val client = ModelQLClient.builder().url(\"http://localhost/query\").httpClient(httpClient).build() val result: List = client.query { root -> root.children(\"modules\").property(\"name\").toList() } When creating a LightModelClient you can optionally provide a ModelQLClient instance, which allows invoking .query { …​ } (see below) on a node returned by the LightModelClient. val modelqlClient = ModelQLClient.builder().build() val client = LightModelClient.builder().modelQLClient(modelqlClient).build() val result: List = client.getRootNode()!!.query { it.children(\"modules\").property(\"name\").toList() } You can use the model-api-gen-gradle plugin to generate type safe extensions from your meta-model. Specify the modelqlKotlinDir property to enable the generation. val result: List = client.query { root -> root.children(\"classes\").ofConcept(C_ClassConcept) .member .ofConcept(C_StaticMethodDeclaration) .filter { it.visibility.instanceOf(C_PublicVisibility) } .toList() } If a query returns a node, you can execute a new query starting from that node. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val names = cls.query { it.member.ofConcept(C_StaticMethodDeclaration).name.toList() } For convenience, it’s possible to access further data of that node using the INode API, but this is not recommended though, because each access sends a new query to the server. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val className = cls.name While returning a list of elements is simple, the purpose of the query language is to reduce the number of request to a minimum. This requires combining multiple values into more complex data structures. The zip operation provides a simple way of doing that: val result: List>> = query { db -> db.products.map { val id = it.id val title = it.title val images = it.images.toList() id.zip(title, images) }.toList() } result.forEach { println(\"ID: ${it.first}, Title: ${it.second}, Images: ${it.third}\") } This is suitable for combining a small number of values, but because of the missing variable names it can be hard to read for a larger number of values or even multiple zip operations assembled into a hierarchical data structure. This can be solved by defining custom data classes and using the mapLocal operation: data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = remoteProductDatabaseQuery { db -> db.products.map { val id = it.id val title = it.title val images = it.images.mapLocal { MyImage(it) }.toList() id.zip(title, images).mapLocal { MyProduct(it.first, it.second, it.third) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } The mapLocal operation is not just useful in combination with the zip operation, but in general to create instances of classes only known to the client. The body of mapLocal is executed on the client after receiving the result from the server. That’s why you only have access to the output of the zip operation and still have to use first, second and third inside the query. To make this even more readable there is a buildLocalMapping operation, which provides a different syntax for the zip-mapLocal chain. data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = query { db -> db.products.buildLocalMapping { val id = it.id.request() val title = it.title.request() val images = it.images.mapLocal { MyImage(it) }.toList().request() onSuccess { MyProduct(id.get(), title.get(), images.get()) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } At the beginning of the buildLocalMapping body, you invoke request() on all the values you need to assemble your object. This basically adds the operand to the internal zip operation and returns an object that gives you access to the value after receiving it from the server. Inside the onSuccess block you assemble the local object using the previously requested values. One use case of the query language is to build database applications that generate HTML pages from the data stored in the model server. You can use the Kotlin HTML DSL together with ModelQL to do that. Use buildHtmlQuery to request data from the server and render it into an HTML string: val html = query { it.map(buildHtmlQuery { val modules = input.children(\"modules\").requestFragment { val moduleName = input.property(\"name\").request() val models = input.children(\"models\").requestFragment { val modelName = input.property(\"name\").request() onSuccess { div { h2 { +\"Model: ${modelName.get()}\" } } } } onSuccess { div { h1 { +\"Module: ${moduleName.get()}\" } insertFragment(models) } } } onSuccess { body { insertFragment(modules) } } }) } buildHtmlQuery and the requestFragment operation are similar to the buildLocalMapping operation, but inside the onSuccess block you use the Kotlin HTML DSL.","title":"ModelQL","component":"modelix","version":"23.2","name":"modelql","url":"/modelix/23.2/core/howto/modelql.html","titles":[{"text":"Independent ModelQLClient","hash":"_independent_modelqlclient","id":1},{"text":"Integration with LightModelClient","hash":"_integration_with_lightmodelclient","id":2},{"text":"Type-safe ModelQL API","hash":"_type_safe_modelql_api","id":3},{"text":"Run query on an INode","hash":"_run_query_on_an_inode","id":4},{"text":"Complex query results","hash":"_complex_query_results","id":5},{"text":"Kotlin HTML integration","hash":"_kotlin_html_integration","id":6}]},"121":{"id":121,"text":"If you want to test code that processes model-api instances, you can do this in-process without a running (light-) model-server. Use the following pattern to set up your test fixture containing model-api instances: val branch = ModelFacade.toLocalBranch(ModelFacade.newLocalTree()) branch.runWrite { val root = branch.getRootNode() val someRootNode = root.addNewChild(null, C_SomeConcept.untyped()).typed() someRootNode.member.addNew(-1, C_OtherConcept).apply { name = \"some test property value\" } } All classes of the pattern C_* and N_* are generated using the model-api-gen.","title":"How-To test model-api client code without a model-server","component":"modelix","version":"23.2","name":"testing-against-model-api","url":"/modelix/23.2/core/howto/testing-against-model-api.html","titles":[]},"122":{"id":122,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"23.2","name":"usage-light-model-client","url":"/modelix/23.2/core/howto/usage-light-model-client.html","titles":[]},"123":{"id":123,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = project.layout.buildDirectory.dir(\"mps\").get().asFile val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"23.2","name":"usage-model-api-gen-gradle","url":"/modelix/23.2/core/howto/usage-model-api-gen-gradle.html","titles":[]},"124":{"id":124,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"23.2","name":"usage-model-server","url":"/modelix/23.2/core/howto/usage-model-server.html","titles":[]},"125":{"id":125,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The bulk-model-sync Gradle plugin synchronizes models between model-api endpoints. A common example would be synchronizing a local MPS project to a model-server. Figure 1. Bulk Synchronization between MPS and model-server The plugin allows the definition of sync directions inside of a modelSync block by specifying source and target endpoint. Based on these directions, Gradle tasks will be generated, which can be run to trigger the corresponding synchronization. Internally, the node data will be bulk exported from the source endpoint and stored as JSON files. After that, these JSON files serve as a specification to incrementally update the target model via the target model-api endpoint. This means that only a minimal amount of write operations is used to update the target model. method parameter type description dependsOn Any Adds the given task as a dependency of this task. direction String, Action Defines a new sync direction with the given name. method parameter type description fromLocal Action Defines a local source (MPS). toModelServer Action Defines a model-server target. fromModelServer Action Defines a model-server source. toLocal Action Defines a local target (MPS). registerLanguage ILanguage Registers the given language and all of its concepts for the synchronisation process. includeModule String Includes the module specified by the given fully qualified name in the synchronisation process. includeModulesByPrefix String Includes all modules, whose fully qualified name starts with the given prefix, in the synchronisation process. setting type description mpsHome File Location of the MPS to be used for the sync. mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB (default: \"2g\") repositoryDir File Directory in which the modules are stored. mpsDebugPort Int If set, the headless MPS will suspend on startup and wait for a remote debugger on the specified port. setting type description url String URL of the model-server API endpoint. repositoryId String Id of the target/source model-server repository. branchName String Name of the target/source model-server branch. revision String Source model-server revision. Can be used instead of repositoryId and branchName. Only available in ServerSource. modelSync { dependsOn(someOtherTask) direction(\"pushToMyServer\") { registerLanguage(L_MyGeneratedLanguage) includeModule(\"MySolution\") fromLocal { mpsHome = project.layout.buildDirectory.dir(\"mps\").get().asFile mpsHeapSize = \"4g\" repositoryDir = projectDir.resolve(\"my-repo\") } toModelServer { url = \"http://0.0.0.0:28101/v2\" repositoryId = \"my-repo\" branchName = \"dev\" } } } Generated Gradle task to perform synchronization: runSyncPushToMyServer.","title":"Gradle Plugin for synchronizing models between model-api endpoints","component":"modelix","version":"23.2","name":"component-bulk-model-sync-gradle","url":"/modelix/23.2/core/reference/component-bulk-model-sync-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"modelSync configuration","hash":"_modelsync_configuration","id":3},{"text":"SyncDirection configuration","hash":"_syncdirection_configuration","id":4},{"text":"LocalSource/-Target configuration","hash":"_localsource_target_configuration","id":5},{"text":"ServerSource/-Target configuration","hash":"_serversource_target_configuration","id":6},{"text":"Example","hash":"_example","id":7}]},"126":{"id":126,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"23.2","name":"component-light-model-client","url":"/modelix/23.2/core/reference/component-light-model-client.html","titles":[]},"127":{"id":127,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-export provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"23.2","name":"component-metamodel-export","url":"/modelix/23.2/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"128":{"id":128,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator modelqlKotlinDir File The generation of the ModelQL API is optional, because the output has a dependency on the ModelQL runtime. If this option is set, you have to add a dependency on org.modelix:modelql-typed. Can be the same as kotlinDir or a directory in a separate subproject, if you run into memory issues of the Kotlin compiler. kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Fully qualified name of the generated language registration helper conceptPropertiesInterfaceName String Fully qualified name of the generated interface, that contains the concept meta-properties of this language set. If null (default), neither the concept meta-properties nor the corresponding interface will be generated. taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept \"C_\" \"\" typedConceptImpl \"_C_TypedImpl_\" \"\" conceptTypeAlias \"CN_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"23.2","name":"component-model-api-gen-gradle","url":"/modelix/23.2/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"129":{"id":129,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"23.2","name":"component-model-api-gen","url":"/modelix/23.2/core/reference/component-model-api-gen.html","titles":[]},"130":{"id":130,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API (model-api) is a Kotlin component which provides a metamodel independent model API. This API is the shared basis and used across all modelix components. The model-api provides three distinct parts org.modelix.model.api: The untyped API to provide model access org.modelix.model.data: Data classes for (meta-)model serialization org.modelix.model.area: Model grouping and transactional access The following diagram provides a meta-model of the model-api An untyped access to model content is possible when only using the model-api. In case you want to use domain-specific model access (i.e. typed access), the model-api-gen provides a generator which generates a typed model API from your existing meta-model. This generated API specializes the model-api. Additionally, the model-api provides serializable data classes to represent a meta-model. The following diagrams show a class diagram of the data classes for the model and meta-model.","title":"Model API","component":"modelix","version":"23.2","name":"component-model-api","url":"/modelix/23.2/core/reference/component-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"1. org.modelix.model.api","hash":"_1_org_modelix_model_api","id":2},{"text":"2.org.modelix.model.data","hash":"_2_org_modelix_model_data","id":3}]},"131":{"id":131,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"23.2","name":"component-model-server","url":"/modelix/23.2/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"132":{"id":132,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The plugin offers a set of health checks via HTTP on port 48305 and path /health. Health checks can be enabled adding query parameters with the health check name and the value true to the request. The check fails, if the indexer is currently running for one of the opened projects. This check indicates a healthy system until a project is opened. Combine it with the projects health check to effectively wait for the system to be ready to serve data immediately. Reports an unhealthy system whenever no project is loaded. Reports an unhealthy system when no virtual folders are available. This might also be true in case a project without virtual folders is fully loaded.","title":"mps-model-server-plugin","component":"modelix","version":"23.2","name":"component-mps-model-server-plugin","url":"/modelix/23.2/core/reference/component-mps-model-server-plugin.html","titles":[{"text":"Health checks","hash":"_health_checks","id":1},{"text":"indexer","hash":"_indexer","id":2},{"text":"projects","hash":"_projects","id":3},{"text":"virtualFolders","hash":"_virtualfolders","id":4}]},"133":{"id":133,"text":"Repository | Nexus The @modelix/vue-model-api can be used to create Vue.js applications, that interact with a model server by reading and writing models. @modelix/vue-model-api provides Vue.js composable to connect to the model server. It exposes the model as a tree of reactive objects to the application developer. The exposed object can be further wrapped by the generated TypeScript API by the Gradle plugin for typed model API generation.","title":"Vue.js bindings","component":"modelix","version":"23.2","name":"component-vue-model-api","url":"/modelix/23.2/core/reference/component-vue-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"134":{"id":134,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/tutorial/index.html","titles":[]},"135":{"id":135,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"136":{"id":136,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/explanation/index.html","titles":[]},"137":{"id":137,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"23.2","name":"usage-platform","url":"/modelix/23.2/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"138":{"id":138,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/tutorial/index.html","titles":[]}},"components":{},"componentVersions":{"modelix/main":{"displayVersion":"main","title":"Modelix Documentation","version":"main","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/main/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/main/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/main/index.html","urlType":"internal"},{"content":"Roadmap","url":"/modelix/main/main/roadmap.html","urlType":"internal"},{"content":"Contribution Guide","url":"/modelix/main/main/contribute.html","urlType":"internal"},{"content":"Development and Releases","url":"/modelix/main/main/development.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/main/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/main/tutorial/build-component.html","urlType":"internal"}]}],"root":true,"order":0.1667},{"items":[{"content":"How-To Guides","url":"/modelix/main/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/main/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/main/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/main/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/main/core/howto/usage-light-model-client.html","urlType":"internal"},{"content":"Test model-api client code without a model-server","url":"/modelix/main/core/howto/testing-against-model-api.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/main/core/howto/modelql.html","urlType":"internal"}]}],"root":true,"order":0.3333},{"items":[{"content":"Reference","url":"/modelix/main/reference/index.html","urlType":"internal","items":[{"content":"List of Repositories","url":"/modelix/main/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/main/reference/components-table.html","urlType":"internal","items":[{"content":"model-api","url":"/modelix/main/core/reference/component-model-api.html","urlType":"internal"},{"content":"model-server","url":"/modelix/main/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/main/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/main/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/main/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"bulk-model-sync-gradle","url":"/modelix/main/core/reference/component-bulk-model-sync-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/main/core/reference/component-light-model-client.html","urlType":"internal"},{"content":"mps-model-server-plugin","url":"/modelix/main/core/reference/component-mps-model-server-plugin.html","urlType":"internal"},{"content":"vue-model-api","url":"/modelix/main/core/reference/component-vue-model-api.html","urlType":"internal"}]}]}],"root":true,"order":0.5},{"items":[{"content":"Explanation","url":"/modelix/main/explanation/index.html","urlType":"internal","items":[{"content":"Gradle Platform","url":"/modelix/main/platform/explanation/index.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/main/core/explanation/modelql.html","urlType":"internal"},{"content":"Overview","url":"/modelix/main/explanation/overview.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/main/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/main/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/main/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.6667},{"items":[{"content":"Samples","items":[{"content":"Introduction","url":"/modelix/main/samples/index.html","urlType":"internal"},{"content":"Overview","url":"/modelix/main/samples/overview.html","urlType":"internal"},{"content":"Metamodel","url":"/modelix/main/samples/metamodel.html","urlType":"internal"},{"content":"Use cases","items":[{"content":"1. Model server and MPS","url":"/modelix/main/samples/use_case_1.html","urlType":"internal"},{"content":"2. Model server and web frontend","url":"/modelix/main/samples/use_case_2.html","urlType":"internal"},{"content":"3. Model server and web backend","url":"/modelix/main/samples/use_case_3.html","urlType":"internal"}]}]}],"root":true,"order":0.8333}]},"modelix/23.2":{"displayVersion":"23.2","title":"Modelix Documentation","version":"23.2","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/23.2/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/23.2/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/23.2/index.html","urlType":"internal"},{"content":"Roadmap","url":"/modelix/23.2/main/roadmap.html","urlType":"internal"},{"content":"Contribution Guide","url":"/modelix/23.2/main/contribute.html","urlType":"internal"},{"content":"Development and Releases","url":"/modelix/23.2/main/development.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/23.2/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/23.2/tutorial/build-component.html","urlType":"internal"}]}],"root":true,"order":0.1667},{"items":[{"content":"How-To Guides","url":"/modelix/23.2/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/23.2/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/23.2/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/23.2/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/23.2/core/howto/usage-light-model-client.html","urlType":"internal"},{"content":"Test model-api client code without a model-server","url":"/modelix/23.2/core/howto/testing-against-model-api.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/23.2/core/howto/modelql.html","urlType":"internal"}]}],"root":true,"order":0.3333},{"items":[{"content":"Reference","url":"/modelix/23.2/reference/index.html","urlType":"internal","items":[{"content":"List of Repositories","url":"/modelix/23.2/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/23.2/reference/components-table.html","urlType":"internal","items":[{"content":"model-api","url":"/modelix/23.2/core/reference/component-model-api.html","urlType":"internal"},{"content":"model-server","url":"/modelix/23.2/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/23.2/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/23.2/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/23.2/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"bulk-model-sync-gradle","url":"/modelix/23.2/core/reference/component-bulk-model-sync-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/23.2/core/reference/component-light-model-client.html","urlType":"internal"},{"content":"mps-model-server-plugin","url":"/modelix/23.2/core/reference/component-mps-model-server-plugin.html","urlType":"internal"},{"content":"vue-model-api","url":"/modelix/23.2/core/reference/component-vue-model-api.html","urlType":"internal"}]}]}],"root":true,"order":0.5},{"items":[{"content":"Explanation","url":"/modelix/23.2/explanation/index.html","urlType":"internal","items":[{"content":"Gradle Platform","url":"/modelix/23.2/platform/explanation/index.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/23.2/core/explanation/modelql.html","urlType":"internal"},{"content":"Overview","url":"/modelix/23.2/explanation/overview.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/23.2/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/23.2/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/23.2/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.6667},{"items":[{"content":"Samples","items":[{"content":"Introduction","url":"/modelix/23.2/samples/index.html","urlType":"internal"},{"content":"Overview","url":"/modelix/23.2/samples/overview.html","urlType":"internal"},{"content":"Metamodel","url":"/modelix/23.2/samples/metamodel.html","urlType":"internal"},{"content":"Use cases","items":[{"content":"1. Model server and MPS","url":"/modelix/23.2/samples/use_case_1.html","urlType":"internal"},{"content":"2. Model server and web frontend","url":"/modelix/23.2/samples/use_case_2.html","urlType":"internal"},{"content":"3. Model server and web backend","url":"/modelix/23.2/samples/use_case_3.html","urlType":"internal"}]}]}],"root":true,"order":0.8333}]},"modelix/23.1":{"displayVersion":"23.1","title":"Modelix Documentation","version":"23.1","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/23.1/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/23.1/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/23.1/index.html","urlType":"internal"},{"content":"Development, Releases, and Roadmap","url":"/modelix/23.1/main/roadmap.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/23.1/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/23.1/tutorial/build-component.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"samples:tutorial/startup-usecases.adoc","url":"/modelix/23.1/samples/tutorial/startup-usecases.html","urlType":"internal"},{"content":"Run Use-Case 1 Implementation","url":"/modelix/23.1/samples/tutorial/start-usecase-1-a.html","urlType":"internal"},{"content":"Run Use-Case 1a Implementation","url":"/modelix/23.1/samples/tutorial/start-usecase-1-b.html","urlType":"internal"}]}]}]}],"root":true,"order":0.2},{"items":[{"content":"How-To Guides","url":"/modelix/23.1/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/23.1/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/23.1/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/23.1/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/23.1/core/howto/usage-light-model-client.html","urlType":"internal"}]}],"root":true,"order":0.4},{"items":[{"content":"Reference","url":"/modelix/23.1/reference/index.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"System Architecture","url":"/modelix/23.1/samples/reference/architecture.html","urlType":"internal"},{"content":"Meta-model & Generated Model API","url":"/modelix/23.1/samples/reference/meta-model-model-api.html","urlType":"internal"},{"content":"Dashboard","url":"/modelix/23.1/samples/reference/dashboard.html","urlType":"internal"},{"content":"Local model-server","url":"/modelix/23.1/samples/reference/model-server.html","urlType":"internal"},{"content":"Intermediate OpenAPI","url":"/modelix/23.1/samples/reference/openapi.html","urlType":"internal","items":[{"content":"modelQL API","url":"/modelix/23.1/samples/reference/rest-api-model-ql.html","urlType":"internal"},{"content":"model-server API","url":"/modelix/23.1/samples/reference/rest-api-model-server.html","urlType":"internal"}]}]},{"content":"List of Repositories","url":"/modelix/23.1/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/23.1/reference/components-table.html","urlType":"internal"},{"content":"model-server","url":"/modelix/23.1/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/23.1/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/23.1/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/23.1/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/23.1/core/reference/component-light-model-client.html","urlType":"internal"}]}],"root":true,"order":0.6},{"items":[{"content":"Explanation","url":"/modelix/23.1/explanation/index.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"Samples Introduction","url":"/modelix/23.1/samples/index.html","urlType":"internal"},{"content":"Sample Structure","url":"/modelix/23.1/samples/explanation/structure.html","urlType":"internal"},{"content":"Use-Cases","items":[{"content":"Use-cases Overview","url":"/modelix/23.1/samples/explanation/usecases.html","urlType":"internal"},{"content":"Use-Case 1: Dashboard","url":"/modelix/23.1/samples/explanation/usecase-1.html","urlType":"internal"},{"content":"Use-Case 2: Manual Schedule Creation","url":"/modelix/23.1/samples/explanation/usecase-2.html","urlType":"internal"}]}]},{"content":"Gradle Platform","url":"/modelix/23.1/platform/explanation/index.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/23.1/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/23.1/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/23.1/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.8}]}}}}) \ No newline at end of file +antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,48.267]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1-2",[1,36.417]],["name/1-2",[]],["text/1-2",[]],["component/1-2",[]],["title/1-3",[2,28.009,3,39.726]],["name/1-3",[]],["text/1-3",[]],["component/1-3",[]],["title/1-4",[3,39.726,4,38.103]],["name/1-4",[]],["text/1-4",[]],["component/1-4",[]],["title/1-5",[5,45.409]],["name/1-5",[]],["text/1-5",[]],["component/1-5",[]],["title/1-6",[6,56.954]],["name/1-6",[]],["text/1-6",[]],["component/1-6",[]],["title/1",[7,40.637,8,6.606]],["name/1",[9,1.827]],["text/1",[1,4.134,3,2.979,4,1.267,5,1.243,6,1.559,8,0.722,10,2.036,11,2.221,12,2.732,13,1.772,14,1.267,15,2.321,16,1.293,17,1.421,18,1.559,19,1.599,20,1.559,21,1.035,22,1.559,23,1.753,24,1.385,25,1.062,26,1.848,27,1.179,28,1.108,29,1.092,30,0.76,31,1.352,32,1.559,33,2.134,34,1.753,35,2.22,36,1.494,37,1.691,38,1.784,39,1.462,40,1.784,41,1.421,42,1.693,43,1.062,44,1.799,45,1.108,46,1.784,47,1.674,48,0.885,49,2.427,50,1.784,51,1.179,52,1.321,53,1.462,54,1.352,55,1.784,56,1.209,57,2.439,58,1.519,59,1.62,60,1.421,61,1.559,62,0.799,63,2.962,64,3.062,65,1.848,66,1.92,67,1.243,68,1.62,69,3.062,70,1.559,71,3.048,72,1.108,73,1.16,74,1.179,75,1.693,76,1.16,77,0.885,78,1.234,79,1.784,80,1.462,81,1.22,82,1.784,83,1.559,84,1.22,85,1.784,86,1.62,87,2.676,88,1.462,89,1.55,90,1.108,91,1.559,92,0.985,93,1.784,94,1.959,95,1.22,96,1.352,97,1.616,98,3.062,99,1.784,100,1.108,101,1.321,102,1.784,103,1.784,104,1.559,105,1.141,106,1.321,107,1.243,108,1.559,109,1.22,110,1.421,111,1.462,112,1.16,113,1.559,114,1.243,115,1.179,116,1.559,117,1.321,118,1.462,119,1.634,120,1.16,121,1.693,122,0.869,123,1.55,124,1.907,125,1.907,126,2.095,127,1.352,128,1.784,129,1.462,130,1.035,131,1.507,132,1.538,133,2.439,134,1.784,135,1.507,136,1.462,137,1.559,138,1.784,139,1.693,140,2.058,141,0.952,142,1.385,143,1.16,144,2.703,145,1.077,146,1.243,147,1.784,148,1.784,149,1.784,150,1.784,151,1.352,152,1.784,153,0.967,154,1.784,155,1.784,156,1.784,157,1.124,158,1.293,159,1.16,160,1.784,161,1.784,162,0.663,163,1.62,164,1.559,165,0.786,166,1.062,167,1.784,168,1.507,169,1.199,170,1.784,171,1.784,172,1.784,173,1.022,174,1.421,175,1.141,176,1.784,177,1.784,178,1.784]],["component/1",[8,0.304]],["title/2-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[180,36.86]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[14,13.171]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2",[179,40.459]],["name/2",[179,2.332]],["text/2",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/2",[8,0.304]],["title/3",[5,45.409]],["name/3",[5,2.617]],["text/3",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/3",[8,0.304]],["title/4-1",[338,65.178]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4-2",[339,65.178]],["name/4-2",[]],["text/4-2",[]],["component/4-2",[]],["title/4-3",[219,26.887]],["name/4-3",[]],["text/4-3",[]],["component/4-3",[]],["title/4",[8,6.606,340,38.103]],["name/4",[340,2.668]],["text/4",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/4",[8,0.304]],["title/5",[126,44.579]],["name/5",[9,1.827]],["text/5",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/5",[8,0.304]],["title/6-1",[8,8.026]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[47,15.32,348,41.632]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[47,10.007,56,8.876,348,27.195,349,30.62,350,16.567]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[8,6.606,158,38.884]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[67,37.374,351,57.322]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6",[8,6.606,62,24.035]],["name/6",[62,1.683]],["text/6",[2,1.122,8,0.885,12,1.231,13,0.947,14,1.694,15,2.618,19,2.408,23,1.231,25,1.279,27,1.42,29,1.315,30,1.527,31,1.628,36,1.712,45,2.225,47,2.051,48,1.066,49,1.297,52,1.592,56,1.515,58,1.066,62,1.606,63,1.334,66,1.026,72,2.225,74,1.42,84,1.47,88,1.76,92,1.979,95,1.47,96,1.628,97,1.134,106,1.592,117,1.592,122,2.039,123,2.333,153,1.456,158,1.558,166,2.134,180,1.215,181,2.782,182,1.76,183,1.297,184,3.028,185,1.579,188,1.688,192,1.246,198,1.628,204,1.099,211,1.173,214,1.444,215,1.628,216,1.951,219,1.479,225,1.262,226,1.934,228,1.215,245,1.262,248,2.782,258,2.293,268,2.052,293,1.579,331,0.76,332,1.76,333,1.173,334,2.409,340,1.527,346,1.712,348,2.782,349,1.878,350,1.695,352,2.297,353,1.878,354,1.592,355,1.397,356,2.297,357,1.76,358,2.297,359,2.297,360,2.297,361,1.712,362,1.951,363,1.297,364,1.712,365,1.527,366,2.297,367,2.297,368,2.821,369,1.951,370,2.149,371,1.354,372,2.193,373,1.527,374,1.375,375,2.855,376,2.039,377,1.088,378,0.765,379,1.763,380,1.16,381,2.31,382,1.628,383,1.815,384,3.83,385,1.444,386,1.592,387,1.951,388,1.354,389,1.444,390,1.628,391,1.628,392,1.444,393,2.297,394,2.297,395,2.297,396,1.397,397,1.354,398,1.375,399,1.47,400,2.039,401,2.297,402,1.628]],["component/6",[8,0.304]],["title/7",[87,39.827,403,45.578,404,45.578]],["name/7",[83,3.283]],["text/7",[405,4.809]],["component/7",[8,0.304]],["title/8",[120,42.36]],["name/8",[9,1.827]],["text/8",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/8",[8,0.304]],["title/9-1",[26,39.327]],["name/9-1",[]],["text/9-1",[]],["component/9-1",[]],["title/9-2",[348,50.583]],["name/9-2",[]],["text/9-2",[]],["component/9-2",[]],["title/9-3",[411,51.913]],["name/9-3",[]],["text/9-3",[]],["component/9-3",[]],["title/9-4",[]],["name/9-4",[]],["text/9-4",[]],["component/9-4",[]],["title/9-5",[13,28.706]],["name/9-5",[]],["text/9-5",[]],["component/9-5",[]],["title/9-6",[132,24.915]],["name/9-6",[]],["text/9-6",[]],["component/9-6",[]],["title/9-7",[144,36.047,412,45.311]],["name/9-7",[]],["text/9-7",[]],["component/9-7",[]],["title/9-8",[89,20.05,413,31.557,414,34.622,415,37.591]],["name/9-8",[]],["text/9-8",[]],["component/9-8",[]],["title/9-9",[414,46.875,416,27.146]],["name/9-9",[]],["text/9-9",[]],["component/9-9",[]],["title/9-10",[416,27.146,417,41.632]],["name/9-10",[]],["text/9-10",[]],["component/9-10",[]],["title/9-11",[142,41.632,143,34.864]],["name/9-11",[]],["text/9-11",[]],["component/9-11",[]],["title/9",[120,34.864,418,38.103]],["name/9",[418,2.668]],["text/9",[8,0.835,10,1.38,25,1.623,26,1.645,29,1.668,34,1.561,36,1.012,43,1.623,49,1.645,56,1.831,66,2.593,68,2.475,78,1.754,89,2.203,120,1.772,132,2.372,142,3.379,143,2.829,144,4.858,145,2.627,153,0.861,185,1.201,190,4.497,204,1.394,207,1.865,214,1.832,215,2.065,219,1.125,226,2.349,227,1.266,255,1.692,262,2.117,266,1.744,271,1.937,297,1.937,303,1.668,312,2.172,357,2.233,364,2.172,380,1.471,397,1.718,400,2.587,412,2.303,413,2.172,414,3.804,415,6.434,416,2.203,417,4.217,418,3.092,419,1.692,420,2.233,421,2.913,422,2.233,423,2.065,424,1.801,425,1.865,426,2.475,427,2.829,428,2.913,429,2.913,430,2.116,431,1.976,432,2.913,433,2.913,434,4.652,435,4.652,436,1.832,437,2.058,438,2.303,439,2.913,440,2.019,441,2.913,442,5.807,443,2.726,444,2.475,445,2.233,446,2.019,447,1.602,448,1.832,449,2.913,450,2.382,451,2.726,452,2.587,453,2.726,454,2.913,455,2.475,456,3.224,457,2.726,458,1.602,459,3.86,460,2.913,461,2.913,462,4.13,463,1.937,464,2.913,465,4.652]],["component/9",[8,0.304]],["title/10-1",[10,32.982]],["name/10-1",[]],["text/10-1",[]],["component/10-1",[]],["title/10-2",[466,31.51,467,43.942]],["name/10-2",[]],["text/10-2",[]],["component/10-2",[]],["title/10-3",[59,48.702,397,33.796]],["name/10-3",[]],["text/10-3",[]],["component/10-3",[]],["title/10",[10,27.146,466,31.51]],["name/10",[10,1.901]],["text/10",[1,2.126,8,0.469,10,2.847,11,1.275,12,1.322,13,2.137,14,0.467,29,1.413,36,1.413,44,2.235,47,1.912,48,1.145,53,1.892,56,1.229,59,5.649,61,2.018,62,1.035,63,2.362,65,2.296,66,1.816,72,1.434,78,0.931,89,3.149,97,1.219,119,2.589,122,1.08,129,1.892,132,1.454,136,3.117,140,1.552,144,3.26,145,1.393,146,1.609,153,1.964,157,1.455,164,2.018,188,0.724,191,1.557,196,1.526,197,1.26,217,2.018,219,0.953,226,1.246,238,1.232,245,1.356,269,1.306,331,0.816,350,2.294,364,1.839,371,1.455,379,0.883,397,2.397,411,1.839,412,1.951,413,1.839,419,1.434,420,1.892,427,1.501,437,2.294,450,2.018,456,1.71,466,4.637,467,1.892,468,1.71,469,2.309,470,2.018,471,3.805,472,2.514,473,1.749,474,2.309,475,1.792,476,1.477,477,1.674,478,1.951,479,1.092,480,1.674,481,1.169,482,1.072,483,2.309,484,2.097,485,3.03,486,1.892,487,2.097,488,2.097,489,1.434,490,2.097,491,2.097,492,1.792,493,2.097,494,2.097,495,2.818,496,3.454,497,1.892,498,2.097,499,2.097,500,2.953,501,2.097,502,2.097,503,2.097,504,1.552,505,2.097,506,2.309,507,2.097,508,2.309,509,2.097,510,2.018,511,1.674,512,2.097,513,2.309,514,2.191,515,1.892,516,2.309,517,4.462,518,2.514,519,2.708,520,2.077,521,2.708,522,2.708,523,2.708,524,2.708,525,2.708,526,2.708]],["component/10",[8,0.304]],["title/11-1",[62,20.421,276,33.753,527,39.827]],["name/11-1",[]],["text/11-1",[]],["component/11-1",[]],["title/11-2",[47,13.017,528,38.498,529,29.622]],["name/11-2",[]],["text/11-2",[]],["component/11-2",[]],["title/11-3",[14,9.21,122,12.937,529,29.622]],["name/11-3",[]],["text/11-3",[]],["component/11-3",[]],["title/11-4",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/11-4",[]],["text/11-4",[]],["component/11-4",[]],["title/11-5",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/11-5",[]],["text/11-5",[]],["component/11-5",[]],["title/11-6",[1,29.973,529,34.864]],["name/11-6",[]],["text/11-6",[]],["component/11-6",[]],["title/11-7",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/11-7",[]],["text/11-7",[]],["component/11-7",[]],["title/11-8",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/11-8",[]],["text/11-8",[]],["component/11-8",[]],["title/11-9",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/11-9",[]],["text/11-9",[]],["component/11-9",[]],["title/11-10",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/11-10",[]],["text/11-10",[]],["component/11-10",[]],["title/11-11",[536,56.954]],["name/11-11",[]],["text/11-11",[]],["component/11-11",[]],["title/11",[74,43.059]],["name/11",[74,2.482]],["text/11",[1,1.67,2,0.906,3,1.626,4,0.868,8,0.829,10,1.321,13,2.062,14,1.532,15,1.916,16,0.469,19,1.561,23,1.909,24,0.503,26,0.737,28,2.069,29,1.343,30,1.554,33,0.451,34,1.909,35,0.886,36,0.644,37,1.442,43,0.385,44,0.718,45,1.077,47,1.125,48,0.86,51,0.428,53,0.531,54,0.926,56,1.462,58,2.086,62,0.777,63,0.759,65,0.737,66,1.591,71,0.491,72,1.621,73,1.127,74,1.725,76,0.421,78,0.261,84,0.443,89,2.672,90,0.402,91,0.566,92,0.958,95,0.443,97,0.342,100,0.402,101,0.48,104,0.566,105,0.414,114,1.53,115,0.428,119,0.346,120,0.421,121,0.614,122,1.989,123,1.321,126,0.836,127,0.491,132,0.467,133,0.516,135,0.547,140,0.435,141,0.346,145,0.737,146,0.451,153,2.311,157,0.408,158,0.469,159,0.421,162,0.644,165,0.285,169,0.435,173,0.371,174,0.516,180,0.981,181,0.503,183,0.737,185,0.538,188,0.819,191,0.899,196,0.807,197,0.667,201,0.896,206,0.748,208,0.376,210,0.331,211,1.198,212,0.435,213,0.748,215,0.491,219,1.931,221,0.428,225,0.718,226,1.409,228,0.366,234,1.18,238,0.926,245,1.019,254,0.973,255,0.402,258,1.112,262,0.594,267,0.321,268,0.371,269,0.366,271,1.559,272,1.626,276,0.48,279,0.435,282,0.905,295,0.618,299,0.516,303,0.748,313,0.469,315,0.428,316,0.516,318,0.469,328,1.068,329,0.516,331,0.432,333,0.947,334,0.435,335,0.503,345,0.566,350,0.306,354,0.48,355,0.794,362,0.588,363,0.391,364,0.973,368,1.061,369,0.588,371,0.408,372,1.598,373,0.46,375,1.382,377,1.846,378,0.617,379,2.363,380,1.185,381,0.324,386,0.48,388,0.408,389,0.435,397,0.408,398,0.414,408,0.451,409,0.566,411,1.382,413,0.973,416,0.328,417,0.503,419,0.759,420,0.531,422,0.531,425,0.443,427,0.794,430,0.503,444,1.109,447,0.38,448,1.475,450,2.913,456,0.48,458,0.718,466,3.204,467,0.531,479,1.038,484,1.993,485,0.516,486,0.531,487,0.588,488,0.588,489,0.759,490,0.588,491,0.588,492,0.948,493,0.588,494,0.588,495,0.905,496,1.109,497,0.531,498,0.588,499,0.588,500,1.346,501,0.588,502,1.109,503,1.109,504,0.821,505,0.588,507,0.588,509,1.109,510,1.068,511,1.257,512,0.588,518,1.146,520,0.667,527,1.068,528,0.547,529,0.794,531,0.516,532,0.566,534,1.516,536,1.918,537,0.692,538,0.516,539,0.692,540,0.491,541,0.692,542,0.566,543,0.531,544,0.648,545,0.648,546,0.648,547,0.516,548,0.648,549,0.648,550,0.451,551,1.222,552,1.159,553,0.851,554,0.566,555,0.547,556,0.648,557,1.257,558,1.222,559,0.469,560,0.648,561,1.222,562,0.648,563,0.648,564,0.614,565,1.222,566,0.566,567,0.648,568,1.109,569,1.421,570,1.159,571,0.588,572,0.648,573,0.566,574,0.491,575,0.648,576,0.547,577,1.646,578,0.648,579,0.648,580,0.648,581,0.491,582,0.531,583,0.491,584,0.566,585,0.516,586,0.648,587,0.648,588,1.209,589,0.428,590,0.435,591,0.648,592,0.648,593,1.159,594,0.503,595,0.547,596,0.691,597,0.648,598,0.588,599,0.648,600,0.428,601,1.068,602,0.648,603,0.648,604,0.614,605,0.491,606,1.109,607,0.408,608,1.186,609,0.648,610,0.648,611,0.993,612,0.648,613,0.648,614,0.491,615,0.648,616,0.335,617,0.588,618,0.46,619,0.648,620,0.648,621,0.648,622,0.648,623,0.531,624,0.588,625,0.588,626,0.547,627,2.611,628,1.516,629,0.648,630,0.836,631,1.068,632,0.648,633,0.648,634,0.614,635,1.222,636,0.648,637,0.547,638,0.648,639,0.648,640,0.648,641,0.531,642,0.648,643,0.648,644,0.588,645,0.648,646,1.222,647,0.77,648,0.588,649,0.614,650,0.648,651,0.566,652,0.408,653,0.46,654,0.421,655,0.648,656,1.222,657,0.648,658,1.222,659,0.566,660,0.648,661,0.648,662,1.222,663,0.648,664,2.195,665,0.48,666,0.46,667,0.491,668,0.648,669,1.159,670,0.648,671,0.648,672,0.648,673,0.48,674,0.38,675,0.648,676,0.648]],["component/11",[8,0.304]],["title/12",[405,31.51,677,45.311]],["name/12",[405,2.207]],["text/12",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/12",[8,0.304]],["title/13",[8,5.613,47,13.017,334,30.627]],["name/13",[47,0.693,334,1.631]],["text/13",[8,0.162,13,0.579,14,1.624,15,0.639,26,1.913,77,0.652,122,1.701,153,1.678,158,2.298,162,3.833,174,1.047,180,0.743,186,1.077,188,1.781,191,1.298,194,1.047,204,0.672,231,1.148,293,1.946,331,1.121,353,1.148,363,1.414,375,1.047,377,1.604,378,2.471,380,0.709,381,0.658,416,0.665,458,0.772,472,1.548,481,0.665,482,0.61,492,1.02,497,4.65,520,4.684,594,1.02,607,0.828,618,0.933,641,1.077,682,1.314,683,1.314,684,1.193,685,8.532,686,1.148,687,1.148,688,1.404,689,3.171,690,0.734,691,0.726,692,1.979,693,1.314,694,2.683,695,2.597,696,1.404,697,1.404,698,1.314,699,1.314,700,1.818,701,1.077,702,1.02,703,1.314,704,1.314,705,3.171,706,2.999,707,1.404,708,1.314]],["component/13",[8,0.304]],["title/14",[65,39.327]],["name/14",[9,1.827]],["text/14",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/14",[8,0.304]],["title/15-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/15-1",[]],["text/15-1",[]],["component/15-1",[]],["title/15-2",[8,5.613,13,20.074,90,28.292]],["name/15-2",[]],["text/15-2",[]],["component/15-2",[]],["title/15-3",[8,5.613,90,28.292,618,32.374]],["name/15-3",[]],["text/15-3",[]],["component/15-3",[]],["title/15-4",[8,5.613,77,22.605,90,28.292]],["name/15-4",[]],["text/15-4",[]],["component/15-4",[]],["title/15",[8,6.606,47,15.32]],["name/15",[47,0.693,132,0.928]],["text/15",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/15",[8,0.304]],["title/16-1",[331,18.962,729,39.726]],["name/16-1",[]],["text/16-1",[]],["component/16-1",[]],["title/16-2",[43,31.931,424,35.439]],["name/16-2",[]],["text/16-2",[]],["component/16-2",[]],["title/16-3",[8,5.613,479,21.549,730,34.527]],["name/16-3",[]],["text/16-3",[]],["component/16-3",[]],["title/16-4",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/16-4",[]],["text/16-4",[]],["component/16-4",[]],["title/16",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/16",[47,0.693,331,0.858]],["text/16",[8,0.878,11,1.668,36,2.157,43,1.798,47,1.348,51,3.118,56,1.664,66,1.441,97,1.594,132,2.724,162,1.753,188,0.947,197,2.576,210,1.544,211,1.648,221,1.995,225,1.774,226,1.63,227,1.402,228,1.708,234,3.221,237,2.189,238,1.612,262,2.296,267,1.498,268,1.729,277,1.708,331,2.519,350,1.428,355,1.963,378,2.068,379,1.155,385,2.03,396,1.963,418,2.145,424,3.118,436,2.03,437,3.105,459,2.145,463,2.145,472,1.995,477,2.189,479,2.231,480,3.421,481,2.388,482,3.308,550,2.104,553,2.104,590,2.03,611,1.729,647,1.903,653,2.145,674,2.772,731,1.995,732,1.798,733,1.63,734,2.344,735,3.495,736,2.344,737,2.474,738,2.288,739,2.288,740,2.189,741,1.648,742,2.344,743,5.097,744,2.344,745,3.663,746,2.344,747,2.104,748,3.663,749,3.663,750,2.344,751,2.344,752,2.189,753,2.344,754,1.903]],["component/16",[8,0.304]],["title/17",[105,41.695]],["name/17",[9,1.827]],["text/17",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/17",[8,0.304]],["title/18-1",[4,38.103,756,57.322]],["name/18-1",[]],["text/18-1",[]],["component/18-1",[]],["title/18-2",[78,21.616,423,40.637]],["name/18-2",[]],["text/18-2",[]],["component/18-2",[]],["title/18",[0,48.267]],["name/18",[9,1.827]],["text/18",[1,2.281,8,0.904,13,1.108,14,1.316,15,2.881,21,1.459,28,1.562,30,1.739,33,2.844,37,1.39,39,2.062,47,0.719,49,1.519,56,1.86,62,1.128,66,1.201,76,1.636,77,3.458,78,1.645,84,1.721,95,1.721,97,1.328,115,2.697,119,2.178,129,2.062,130,1.459,132,1.968,146,1.753,153,2.318,165,1.108,173,1.441,179,1.562,180,2.308,183,2.463,185,1.108,188,1.615,190,1.824,212,1.691,214,2.743,219,1.684,225,1.478,229,1.864,234,1.137,245,1.478,258,2.774,262,1.224,266,1.61,295,1.274,315,1.663,331,2.094,333,2.228,340,1.788,350,3.078,386,3.023,388,1.586,389,1.691,397,1.586,398,2.611,399,1.721,402,1.906,419,1.562,425,1.721,426,2.285,431,1.824,448,1.691,476,1.61,547,2.004,574,3.901,583,1.906,585,2.004,614,1.906,630,1.721,659,2.199,712,1.824,721,2.199,722,2.199,723,4.127,724,2.199,725,2.199,726,3.567,727,1.953,728,2.199,733,1.358,757,2.517,758,2.062,759,4.082,760,2.517,761,2.004,762,2.388,763,2.199,764,2.517,765,2.388,766,2.689,767,2.689,768,2.199,769,2.689,770,2.517,771,1.953]],["component/18",[8,0.304]],["title/19",[77,26.606,381,26.872]],["name/19",[381,1.882]],["text/19",[8,0.522,25,2.523,30,3.316,56,1.804,58,2.102,71,3.21,77,2.102,90,2.631,130,3.529,153,1.338,180,3.442,211,2.313,212,2.848,275,3.894,294,3.138,350,2.004,379,1.62,381,2.123,540,6.245,588,2.953,666,3.01,772,4.529,773,4.238,774,3.848,775,3.138,776,3.703,777,7.041,778,4.238,779,6.086,780,3.703,781,4.529,782,4.323,783,4.529,784,4.507,785,5.672,786,4.529,787,4.238,788,4.529,789,4.529,790,4.529,791,4.021,792,3.848,793,4.529,794,4.529,795,4.529]],["component/19",[8,0.304]],["title/20-1",[56,11.545,165,20.074,258,19.416]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20-2",[56,11.545,173,26.096,258,19.416]],["name/20-2",[]],["text/20-2",[]],["component/20-2",[]],["title/20-3",[56,11.545,258,19.416,630,31.174]],["name/20-3",[]],["text/20-3",[]],["component/20-3",[]],["title/20",[62,24.035,77,26.606]],["name/20",[62,1.683]],["text/20",[2,2.91,8,0.398,13,0.837,14,1.75,15,3.453,25,1.131,36,0.705,47,0.542,48,2.09,49,1.146,56,2.194,62,1.447,67,1.323,73,2.739,76,1.234,77,0.942,81,1.299,92,1.784,94,3.181,112,1.234,122,1.582,132,0.726,153,1.76,159,2.1,165,0.837,173,1.85,175,3.878,183,1.146,185,0.837,188,2.306,189,1.513,191,0.777,192,3.75,195,1.724,201,3.798,206,1.162,219,1.739,234,1.905,238,1.014,245,1.898,255,2.005,258,3.308,262,1.571,267,0.942,269,1.074,277,1.074,293,2.455,315,1.255,327,1.556,331,0.671,333,2.301,348,1.474,353,1.66,363,1.146,368,3.71,379,1.901,380,1.743,381,1.618,388,3.133,390,1.439,391,2.447,398,2.067,419,1.179,446,1.407,489,1.179,511,1.377,518,1.255,520,1.037,611,1.088,630,1.299,652,2.035,665,2.392,694,2.937,702,1.474,741,1.037,771,4.705,796,1.556,797,1.439,798,2.03,799,2.251,800,2.03,801,2.03,802,1.66,803,1.66,804,1.802,805,2.392,806,2.03,807,1.802,808,1.802,809,1.66,810,1.604,811,1.802]],["component/20",[8,0.304]],["title/21-1",[812,50.583]],["name/21-1",[]],["text/21-1",[]],["component/21-1",[]],["title/21-2",[813,69.648]],["name/21-2",[]],["text/21-2",[]],["component/21-2",[]],["title/21-3",[153,16.935,647,33.796]],["name/21-3",[]],["text/21-3",[]],["component/21-3",[]],["title/21-4",[14,9.21,78,18.366,188,14.297]],["name/21-4",[]],["text/21-4",[]],["component/21-4",[]],["title/21-5",[78,21.616,153,16.935]],["name/21-5",[]],["text/21-5",[]],["component/21-5",[]],["title/21-6",[14,9.21,188,14.297,192,26.428]],["name/21-6",[]],["text/21-6",[]],["component/21-6",[]],["title/21",[14,6.347,56,7.956,153,9.916,165,13.834,188,9.853,258,13.38]],["name/21",[814,4.014]],["text/21",[11,1.349,14,1.664,23,3.938,26,3.045,33,2.776,36,1.48,56,1.009,66,1.166,70,4.409,78,1.606,112,1.588,132,2.225,141,2.126,153,2.47,162,1.48,165,1.076,173,1.399,183,1.474,185,1.076,188,2.583,190,1.771,191,1.631,201,3.007,204,1.249,206,4.628,214,1.642,234,1.104,244,2.135,255,2.474,258,1.041,262,1.188,267,1.212,269,1.382,295,2.553,335,1.896,363,2.404,388,2.511,392,1.642,416,2.017,419,1.517,431,1.771,463,1.736,468,2.951,475,1.896,557,3.658,611,1.399,616,2.059,630,1.671,690,1.365,694,4.055,712,1.771,733,1.319,735,3.737,741,1.334,797,1.851,815,6.024,816,2.611,817,1.851,818,4.311,819,3.264,820,2.135,821,2.135,822,2.135,823,2.611,824,3.482,825,5.392,826,5.046,827,4.581,828,6.22,829,1.851,830,2.444,831,2.318,832,2.611,833,2.611,834,2.611,835,2.611,836,2.444]],["component/21",[8,0.304]],["title/22-1",[812,50.583]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22-2",[331,23.038]],["name/22-2",[]],["text/22-2",[]],["component/22-2",[]],["title/22-3",[78,26.264]],["name/22-3",[]],["text/22-3",[]],["component/22-3",[]],["title/22-4",[153,16.935,210,27.426]],["name/22-4",[]],["text/22-4",[]],["component/22-4",[]],["title/22-5",[56,16.509]],["name/22-5",[]],["text/22-5",[]],["component/22-5",[]],["title/22",[14,5.751,15,13.843,56,7.209,173,16.296,188,8.928,258,12.124,771,22.088]],["name/22",[837,4.014]],["text/22",[11,2.206,12,1.74,14,1.738,15,2.837,30,1.294,36,1.484,47,1.141,48,0.877,56,1.81,62,2.613,76,1.149,78,1.61,90,1.098,94,1.131,109,1.209,112,1.975,122,1.346,153,2.256,165,1.338,173,1.012,185,1.338,188,2.161,190,2.203,191,1.941,192,1.025,196,2.007,198,1.34,201,2.759,204,2.425,206,2.445,208,1.025,214,1.188,219,0.729,227,0.821,234,0.799,238,0.944,255,2.48,258,2.275,262,0.86,269,1.718,293,1.76,295,1.538,303,1.859,331,1.412,333,0.965,346,1.408,368,4.214,378,0.629,379,2.229,380,1.64,388,2.517,390,1.34,391,1.34,431,1.282,438,1.494,446,1.309,468,3.512,472,4.124,478,1.494,504,1.188,511,1.282,518,2.007,555,2.567,557,1.282,588,1.232,630,1.209,652,1.114,665,1.309,690,1.698,694,4.349,700,1.372,701,2.489,702,1.372,712,1.282,732,1.053,733,0.954,771,3.68,775,1.309,796,1.448,799,2.784,802,1.545,803,1.545,805,2.25,812,2.358,815,2.42,818,2.25,819,2.489,820,1.545,821,1.545,822,1.545,824,1.545,838,1.494,839,1.889,840,1.678,841,1.889,842,2.883,843,1.678,844,1.889,845,1.605,846,4.319,847,1.889,848,1.605,849,2.759,850,1.448,851,3.791,852,1.889,853,1.889,854,1.605,855,1.545,856,1.494]],["component/22",[8,0.304]],["title/23-1",[812,50.583]],["name/23-1",[]],["text/23-1",[]],["component/23-1",[]],["title/23-2",[331,23.038]],["name/23-2",[]],["text/23-2",[]],["component/23-2",[]],["title/23-3",[78,26.264]],["name/23-3",[]],["text/23-3",[]],["component/23-3",[]],["title/23-4",[153,16.935,210,27.426]],["name/23-4",[]],["text/23-4",[]],["component/23-4",[]],["title/23-5",[56,16.509]],["name/23-5",[]],["text/23-5",[]],["component/23-5",[]],["title/23",[14,5.751,15,13.843,56,7.209,188,8.928,258,12.124,388,17.931,630,19.466]],["name/23",[857,4.014]],["text/23",[2,2.439,8,0.417,11,1.872,12,1.445,14,1.728,15,3.954,19,1.318,30,1.444,36,1.259,47,0.968,48,0.709,56,1.713,58,0.709,62,0.64,73,0.929,76,0.929,78,1.649,90,0.887,92,0.789,109,0.977,112,1.64,122,1.582,123,2.364,153,2.059,159,2.203,165,1.112,173,1.941,175,2.168,184,1.207,185,1.112,188,2.356,190,1.83,191,1.387,192,1.464,198,1.912,199,1.058,201,4.025,204,1.29,206,2.074,208,1.464,210,0.731,213,0.874,214,0.96,220,1.758,227,0.663,234,0.646,238,0.763,255,2.54,258,1.99,262,1.649,269,1.917,293,1.493,295,1.277,303,0.874,331,1.446,368,2.858,378,0.509,379,1.786,380,0.771,381,1.264,382,1.083,388,4.632,391,1.083,396,0.929,431,1.036,446,1.058,452,1.356,468,2.51,472,0.944,478,1.207,511,3.386,515,1.171,518,0.944,520,0.78,555,1.207,557,1.036,559,1.036,588,0.996,589,0.944,625,1.297,652,2.578,665,1.058,690,1.41,694,3.255,700,1.109,701,1.171,712,1.036,732,0.851,733,0.771,771,4.327,775,1.058,799,1.758,802,1.249,803,1.249,805,1.058,807,2.395,808,1.356,809,1.249,810,1.207,812,1.959,815,2.01,818,1.869,819,2.068,820,1.249,821,1.249,822,1.249,824,1.249,838,1.207,842,1.356,843,1.356,845,1.297,846,3.03,848,1.297,849,2.291,850,1.171,851,3.882,855,1.249,856,1.207,858,1.429,859,1.527,860,1.527,861,1.429,862,2.239,863,1.527,864,1.527,865,1.527,866,1.527]],["component/23",[8,0.304]],["title/24-1",[0,48.267]],["name/24-1",[]],["text/24-1",[]],["component/24-1",[]],["title/24-2",[78,21.616,423,40.637]],["name/24-2",[]],["text/24-2",[]],["component/24-2",[]],["title/24-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/24-3",[]],["text/24-3",[]],["component/24-3",[]],["title/24-4",[331,18.962,729,39.726]],["name/24-4",[]],["text/24-4",[]],["component/24-4",[]],["title/24-5",[43,31.931,424,35.439]],["name/24-5",[]],["text/24-5",[]],["component/24-5",[]],["title/24-6",[8,5.613,479,21.549,730,34.527]],["name/24-6",[]],["text/24-6",[]],["component/24-6",[]],["title/24-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/24-7",[]],["text/24-7",[]],["component/24-7",[]],["title/24",[7,40.637,447,31.51]],["name/24",[9,1.827]],["text/24",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/24",[8,0.304]],["title/25",[126,36.69,447,31.51]],["name/25",[9,1.827]],["text/25",[405,4.809]],["component/25",[8,0.304]],["title/26-1",[867,46.875,868,50.896]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26",[706,39.881]],["name/26",[706,2.299]],["text/26",[2,1.325,8,0.313,10,1.285,14,1.551,16,1.84,30,2.206,36,0.943,39,2.079,45,1.576,48,2.569,49,1.532,56,1.508,58,2.039,71,1.923,92,2.269,100,3.215,122,1.167,143,2.671,144,1.706,166,1.511,168,2.144,185,1.118,197,2.827,200,3.367,201,3.616,211,1.385,219,1.047,223,4.741,228,1.436,234,1.147,238,1.355,262,2.519,264,4.62,275,1.624,290,1.97,293,2.281,298,1.923,308,2.079,318,1.84,319,3.367,333,1.385,355,2.671,386,3.044,390,1.923,407,2.144,422,2.079,495,3.044,500,1.97,520,1.385,571,3.732,598,2.305,611,1.453,644,2.305,653,1.803,654,1.65,692,2.144,706,2.515,758,2.079,768,3.592,775,1.88,817,1.923,867,4.526,868,5.648,869,4.11,870,2.712,871,2.538,872,4.914,873,4.392,874,2.712,875,2.712,876,2.712,877,2.712,878,4.392,879,2.712,880,2.712,881,4.645,882,1.97,883,2.218,884,2.712,885,2.712,886,2.712,887,2.305,888,2.712,889,2.079,890,2.712,891,2.408,892,2.712,893,2.712,894,2.712,895,2.712,896,2.712,897,2.305,898,2.305,899,3.472,900,2.712,901,2.538,902,2.712,903,2.712,904,2.712,905,2.712]],["component/26",[8,0.304]],["title/27",[447,38.285]],["name/27",[9,1.827]],["text/27",[405,4.809]],["component/27",[8,0.304]],["title/28-1",[605,40.637,906,50.896]],["name/28-1",[]],["text/28-1",[]],["component/28-1",[]],["title/28-2",[28,33.299,907,50.896]],["name/28-2",[]],["text/28-2",[]],["component/28-2",[]],["title/28-3",[122,11.246,380,21.38,706,24.243,805,29.341]],["name/28-3",[]],["text/28-3",[]],["component/28-3",[]],["title/28-4",[185,20.074,881,32.374,908,41.379]],["name/28-4",[]],["text/28-4",[]],["component/28-4",[]],["title/28-5",[100,28.292,881,32.374,909,41.379]],["name/28-5",[]],["text/28-5",[]],["component/28-5",[]],["title/28-6",[28,28.292,194,36.302,520,24.876]],["name/28-6",[]],["text/28-6",[]],["component/28-6",[]],["title/28",[706,39.881]],["name/28",[706,2.299]],["text/28",[2,0.932,14,0.893,16,0.705,25,1.472,30,0.761,34,1.022,37,0.537,45,1.108,48,0.885,54,0.737,56,1.361,58,0.885,78,0.392,84,0.666,92,0.537,94,0.623,96,0.737,100,2.744,122,0.507,141,0.519,143,1.991,153,0.307,162,3.619,175,0.623,181,3.949,188,1.387,189,0.775,191,0.731,193,1.352,194,2.848,197,0.531,199,0.721,201,2.775,202,0.755,203,1.221,204,0.913,207,0.666,210,0.498,219,1.264,225,0.572,228,0.55,234,1.385,238,0.519,246,0.883,257,1.462,258,0.415,262,0.473,268,0.557,270,0.705,275,1.96,277,2.276,281,3.674,290,0.755,293,1.575,319,0.797,326,1.621,331,0.344,333,0.531,349,0.85,354,1.832,355,0.632,365,1.268,368,0.595,371,3.206,377,0.492,378,0.346,379,1.171,380,0.525,391,0.737,398,0.623,399,1.692,407,0.822,416,0.903,419,0.604,430,0.755,448,0.654,459,2.54,462,4.528,489,0.604,492,0.755,495,1.832,516,0.973,520,0.974,550,0.678,589,2.659,652,0.613,674,0.572,706,1.092,723,1.244,747,0.678,754,0.613,763,0.85,768,0.85,774,0.883,784,1.322,797,0.737,805,0.721,809,0.85,817,1.352,829,1.352,872,0.923,881,3.816,882,0.755,891,0.923,898,2.782,899,0.822,906,1.694,907,1.694,908,0.883,909,0.883,910,1.462,911,1.04,912,6.32,913,1.04,914,3.274,915,1.04,916,1.908,917,1.04,918,1.04,919,1.04,920,1.04,921,0.923,922,1.04,923,1.04,924,1.04,925,1.04,926,3.821,927,1.908,928,1.908,929,1.908,930,1.04,931,1.04,932,1.04,933,1.04,934,1.04,935,1.04,936,1.04,937,1.462,938,4.301,939,2.643,940,1.908,941,3.274,942,3.274,943,1.04,944,1.908,945,2.643,946,2.643,947,1.04,948,1.908,949,1.908,950,1.04,951,1.04,952,2.643,953,1.04,954,3.274,955,1.908,956,1.508,957,2.54,958,1.908,959,1.04,960,1.908,961,1.908,962,1.04,963,1.04,964,1.908,965,1.04,966,2.643,967,0.973,968,0.85,969,1.04,970,1.04,971,2.643,972,1.04,973,1.04,974,1.04,975,1.04,976,1.04,977,1.04,978,4.301,979,1.04,980,1.04,981,1.04,982,2.089,983,1.04,984,1.04,985,1.908,986,1.04,987,1.04,988,1.04,989,1.908,990,1.04,991,1.04,992,1.908,993,1.04,994,1.04,995,1.04,996,1.04,997,1.04,998,1.04,999,1.04]],["component/28",[8,0.304]],["title/29",[14,8.473,122,7.385,188,8.161,196,17.189,208,15.086,293,11.459,476,16.644]],["name/29",[14,0.287,122,0.403,476,0.909,1000,1.519]],["text/29",[14,1.616,56,1.608,66,2.146,122,2.089,130,2.608,162,3.468,165,1.981,185,1.981,188,1.411,196,2.971,204,3.246,208,2.608,226,2.427,253,4.342,277,2.543,295,2.276,377,2.276,379,1.719,416,2.276,417,3.49,476,4.708,589,2.971,616,2.323,691,2.483,754,2.833,784,3.33,912,5.711,1001,6.784,1002,4.805,1003,4.805,1004,4.805,1005,4.805,1006,4.805,1007,4.805,1008,4.805,1009,4.805,1010,4.805,1011,4.083,1012,4.083]],["component/29",[8,0.304]],["title/30",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/30",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/30",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/30",[8,0.304]],["title/31",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/31",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/31",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1051,1.376,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45]],["component/31",[8,0.304]],["title/32",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/32",[14,0.362,188,0.562,596,1.014]],["text/32",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/32",[8,0.304]],["title/33-1",[62,29.203]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33-2",[227,24.902,616,27.714]],["name/33-2",[]],["text/33-2",[]],["component/33-2",[]],["title/33-3",[227,24.902,1090,50.896]],["name/33-3",[]],["text/33-3",[]],["component/33-3",[]],["title/33-4",[227,24.902,1091,57.322]],["name/33-4",[]],["text/33-4",[]],["component/33-4",[]],["title/33-5",[227,21.157,600,30.111,1092,48.704]],["name/33-5",[]],["text/33-5",[]],["component/33-5",[]],["title/33-6",[227,21.157,600,30.111,1093,43.243]],["name/33-6",[]],["text/33-6",[]],["component/33-6",[]],["title/33-7",[350,30.815]],["name/33-7",[]],["text/33-7",[]],["component/33-7",[]],["title/33",[14,8.473,122,7.385,191,10.649,206,15.92,269,14.714,378,9.261,910,21.313]],["name/33",[14,0.238,47,0.336,378,0.419,694,0.82,695,0.965]],["text/33",[12,2.871,14,1.545,30,0.68,34,0.914,36,0.593,56,0.936,78,0.643,81,1.091,100,1.726,122,1.255,123,0.807,132,1.063,139,1.514,141,0.851,145,0.963,151,1.209,153,1.869,159,1.037,162,2.946,165,0.703,185,0.703,186,1.307,188,1.968,191,1.138,201,0.824,202,1.238,203,2.527,206,3.068,207,2.527,228,0.902,245,0.937,247,1.807,248,1.238,249,1.449,253,2.527,254,2.214,264,1.238,267,2.193,268,1.592,269,1.572,274,2.059,275,1.021,281,1.091,350,0.754,361,1.271,365,1.133,370,1.596,374,2.829,378,1.315,379,1.063,380,2.386,399,1.091,406,4.014,416,2.238,417,1.238,427,1.037,436,1.072,437,0.754,456,1.182,458,0.937,459,1.133,475,3.891,479,0.754,481,0.807,482,0.741,600,3.637,607,1.005,608,1.902,611,0.914,616,1.909,641,1.307,654,1.807,674,2.597,684,2.524,690,0.892,694,3.835,695,3.026,723,3.493,731,1.054,741,0.871,782,1.133,815,1.271,829,2.799,910,4.107,956,1.348,957,4.674,1049,1.307,1051,1.514,1062,2.278,1081,1.449,1090,2.638,1093,1.514,1094,3.735,1095,1.705,1096,1.705,1097,2.278,1098,2.348,1099,1.449,1100,4.235,1101,2.971,1102,2.971,1103,1.705,1104,1.705,1105,1.705,1106,1.705,1107,1.596,1108,3.948,1109,1.705,1110,2.348,1111,2.524,1112,1.705,1113,1.705,1114,1.871,1115,1.449,1116,1.705,1117,1.871,1118,1.596,1119,1.871,1120,1.348,1121,2.524,1122,1.449,1123,2.524,1124,1.449,1125,2.971,1126,1.705,1127,1.705,1128,1.514,1129,1.514,1130,1.705,1131,1.705,1132,1.348,1133,3.948,1134,2.971,1135,3.948,1136,2.971,1137,1.705,1138,1.705,1139,1.705,1140,1.705,1141,1.705,1142,1.705,1143,1.705,1144,1.705,1145,1.705]],["component/33",[8,0.304]],["title/34",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/34",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/34",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/34",[8,0.304]],["title/35-1",[62,29.203]],["name/35-1",[]],["text/35-1",[]],["component/35-1",[]],["title/35",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/35",[47,0.512,381,0.898,607,1.13]],["text/35",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.396,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897]],["component/35",[8,0.304]],["title/36-1",[62,29.203]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[227,24.902,616,27.714]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[227,24.902,1222,45.311]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[227,24.902,1097,43.942]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[227,24.902,416,27.146]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[247,34.864,277,30.337]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[350,30.815]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/36",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/36",[2,0.622,12,1.229,14,0.835,21,0.691,30,1.963,36,0.797,37,1.185,56,1.271,66,0.569,67,0.83,100,0.74,101,0.883,114,2.495,122,1.833,123,1.086,130,2.397,132,0.456,141,2.678,144,0.801,145,0.719,153,1.798,162,3.031,173,0.682,185,0.525,191,0.879,199,0.883,203,2.003,210,1.497,212,0.801,219,0.492,227,2.139,229,0.883,238,0.636,247,1.903,250,1.041,253,1.468,258,0.508,267,3.305,279,0.801,282,0.883,361,0.949,363,1.295,365,2.544,371,1.352,374,1.373,377,1.086,378,1.042,379,2.897,380,1.932,381,3.235,382,0.903,389,0.801,390,1.626,399,1.468,402,0.903,416,2.882,425,1.468,427,0.775,436,0.801,437,0.563,456,2.169,458,0.7,475,0.925,479,0.563,481,0.603,482,0.553,485,0.949,486,0.976,518,0.787,520,1.598,543,0.976,569,1.758,576,1.007,594,0.925,600,1.935,607,3.162,608,3.895,616,3.709,637,1.007,674,3.159,678,0.949,687,1.041,690,2.001,706,1.313,731,0.787,754,1.352,761,0.949,782,2.544,797,0.903,817,2.219,889,0.976,899,1.007,921,1.131,957,3.82,968,1.041,982,1.007,1011,1.082,1012,1.082,1049,4.665,1060,0.976,1062,1.758,1065,1.876,1071,2.559,1073,1.041,1075,1.041,1076,1.876,1078,1.876,1094,2.474,1097,0.976,1098,1.007,1099,1.082,1110,3.025,1111,3.251,1121,1.949,1122,1.082,1123,1.949,1124,1.082,1146,0.801,1148,1.041,1154,0.949,1222,1.813,1223,1.082,1224,2.147,1225,2.147,1226,1.192,1227,2.147,1228,2.147,1229,2.147,1230,2.147,1231,1.192,1232,1.192,1233,1.192,1234,1.192,1235,2.147,1236,2.147,1237,1.274,1238,1.082,1239,1.274,1240,1.082,1241,2.147,1242,1.192,1243,1.192,1244,1.192,1245,1.192,1246,1.192,1247,1.192,1248,1.192,1249,1.192,1250,1.192,1251,0.976,1252,2.147,1253,1.192,1254,1.192,1255,1.192,1256,1.192,1257,1.192,1258,1.192,1259,1.192,1260,1.192,1261,1.192,1262,1.192,1263,1.192,1264,1.192,1265,1.192,1266,1.274,1267,1.274,1268,1.192,1269,1.192,1270,1.192,1271,1.192,1272,1.192,1273,1.192,1274,1.192,1275,1.192,1276,1.192,1277,1.192]],["component/36",[8,0.304]],["title/37",[14,9.21,122,12.937,379,17.423]],["name/37",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/37",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/37",[8,0.304]],["title/38-1",[62,29.203]],["name/38-1",[]],["text/38-1",[]],["component/38-1",[]],["title/38-2",[165,23.626,1281,50.896]],["name/38-2",[]],["text/38-2",[]],["component/38-2",[]],["title/38-3",[1282,69.648]],["name/38-3",[]],["text/38-3",[]],["component/38-3",[]],["title/38",[14,10.84,122,15.227]],["name/38",[14,0.362,47,0.512,122,0.509]],["text/38",[8,0.394,14,1.95,19,1.671,29,1.959,37,4.042,47,1.41,49,1.931,56,1.527,66,2.356,122,2.62,123,1.62,132,1.224,162,2.238,183,1.931,201,3.114,219,3.191,225,1.88,226,1.727,234,3.309,258,1.364,303,1.959,318,2.32,335,4.678,375,3.933,377,1.62,379,2.304,380,2.664,381,1.603,437,1.513,458,1.88,479,1.513,481,1.62,482,1.486,520,1.747,582,2.622,583,2.425,589,4.476,605,2.425,617,2.906,631,2.797,678,2.549,1023,2.906,1146,2.151,1154,2.549,1157,2.906,1281,3.037,1283,3.037,1284,3.42,1285,3.42,1286,3.42,1287,3.42]],["component/38",[8,0.304]],["title/39-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[14,9.21,153,14.389,188,14.297]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[10,32.982]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39-4",[122,18.501]],["name/39-4",[]],["text/39-4",[]],["component/39-4",[]],["title/39",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/39",[14,0.362,47,0.512,188,0.562]],["text/39",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/39",[8,0.304]],["title/40-1",[372,32.824,1296,50.896]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40-2",[9,31.701]],["name/40-2",[]],["text/40-2",[]],["component/40-2",[]],["title/40-3",[36,24.202]],["name/40-3",[]],["text/40-3",[]],["component/40-3",[]],["title/40-4",[1297,69.648]],["name/40-4",[]],["text/40-4",[]],["component/40-4",[]],["title/40",[14,8.006,153,12.508,188,12.428,191,16.216]],["name/40",[14,0.238,47,0.336,153,0.372,188,0.369,191,0.482]],["text/40",[9,1.923,11,3.195,36,2.978,41,3.149,44,2.322,81,2.704,86,3.589,122,1.122,132,1.511,143,2.569,162,2.149,163,5.254,166,4.485,185,1.741,189,3.149,191,1.618,201,2.042,208,2.292,223,4.195,258,1.684,277,2.236,311,4.111,333,2.158,354,2.928,372,5.126,398,2.529,416,2.001,437,1.869,458,2.322,479,1.869,481,2.001,482,1.835,611,2.264,616,2.042,732,3.445,741,2.158,791,3.751,827,3.589,881,2.808,1098,3.339,1110,3.339,1129,3.751,1132,3.339,1296,7.608,1298,4.225,1299,4.225,1300,3.953,1301,4.225,1302,4.225,1303,4.225,1304,3.953,1305,6.184,1306,4.225,1307,6.184]],["component/40",[8,0.304]],["title/41-1",[62,29.203]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41",[702,41.632,1308,57.322]],["name/41",[14,0.287,47,0.406,122,0.403,701,1.164]],["text/41",[10,2.57,14,1.879,25,3.023,56,1.287,122,2.391,132,1.942,159,3.301,162,1.886,188,2.167,191,2.079,192,2.945,198,3.848,219,2.095,368,4.227,378,1.808,379,2.641,380,2.741,382,3.848,448,3.413,481,2.57,515,5.658,518,3.355,652,3.2,702,5.361,712,3.682,840,6.554,867,4.438,982,5.835,1309,5.427]],["component/41",[8,0.304]],["title/42",[105,34.317,447,31.51]],["name/42",[9,1.827]],["text/42",[405,4.809]],["component/42",[8,0.304]],["title/43-1",[0,48.267]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[78,21.616,423,40.637]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/43-3",[]],["text/43-3",[]],["component/43-3",[]],["title/43-4",[331,18.962,729,39.726]],["name/43-4",[]],["text/43-4",[]],["component/43-4",[]],["title/43-5",[43,31.931,424,35.439]],["name/43-5",[]],["text/43-5",[]],["component/43-5",[]],["title/43-6",[8,5.613,479,21.549,730,34.527]],["name/43-6",[]],["text/43-6",[]],["component/43-6",[]],["title/43-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/43-7",[]],["text/43-7",[]],["component/43-7",[]],["title/43",[7,40.637,720,39.726]],["name/43",[9,1.827]],["text/43",[8,0.982,11,1.556,13,1.968,36,2.062,43,1.677,47,1.586,51,2.952,56,1.601,66,1.345,89,1.426,97,1.487,130,1.634,132,2.804,162,1.659,188,0.884,197,2.439,210,1.441,211,1.538,219,1.162,221,1.862,225,1.655,226,1.521,227,1.308,228,1.594,234,3.115,237,2.043,238,1.504,262,2.174,267,1.398,268,1.613,277,1.594,331,2.436,350,1.332,355,1.831,378,2.25,379,1.077,385,1.894,396,1.831,418,2.002,424,2.952,436,1.894,437,2.988,459,2.002,463,2.002,466,1.655,472,1.862,477,2.043,479,2.113,480,3.239,481,2.262,482,3.199,489,1.749,550,1.963,553,1.963,590,1.894,611,1.613,647,1.775,653,2.002,674,2.625,720,2.087,731,1.862,732,1.677,733,1.521,734,2.187,735,3.31,736,2.187,737,2.308,738,2.135,739,2.135,740,2.043,741,1.538,742,2.187,743,4.906,744,2.187,745,3.468,746,2.187,747,1.963,748,3.468,749,3.468,750,2.187,751,2.187,752,2.043,753,2.187,754,1.775]],["component/43",[8,0.304]],["title/44",[8,5.613,13,20.074,378,16.222]],["name/44",[9,1.827]],["text/44",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/44",[8,0.304]],["title/45-1",[379,20.506,596,30.337]],["name/45-1",[]],["text/45-1",[]],["component/45-1",[]],["title/45-2",[89,27.146,1313,45.311]],["name/45-2",[]],["text/45-2",[]],["component/45-2",[]],["title/45",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/45",[13,1.069,596,1.373]],["text/45",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/45",[8,0.304]],["title/46",[105,34.317,720,39.726]],["name/46",[9,1.827]],["text/46",[405,4.809]],["component/46",[8,0.304]],["title/47-1",[0,48.267]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[1,36.417]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[2,28.009,3,39.726]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[3,39.726,4,38.103]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47-5",[5,45.409]],["name/47-5",[]],["text/47-5",[]],["component/47-5",[]],["title/47-6",[6,56.954]],["name/47-6",[]],["text/47-6",[]],["component/47-6",[]],["title/47",[7,40.637,8,6.606]],["name/47",[9,1.827]],["text/47",[1,4.148,3,3,4,1.279,5,1.255,6,1.573,8,0.725,10,2.05,11,2.237,12,2.748,13,1.784,14,1.273,15,2.335,16,1.305,17,1.434,18,1.573,19,1.612,20,1.573,21,1.044,22,1.573,23,1.767,24,1.397,25,1.072,26,1.862,27,1.19,28,1.118,29,1.102,30,0.767,31,1.364,32,1.573,33,2.15,34,1.767,35,2.237,36,1.504,37,1.704,38,1.801,39,1.475,40,1.801,41,1.434,42,1.708,43,1.072,44,1.813,45,1.118,46,1.801,47,1.682,48,0.893,49,2.444,50,1.801,51,1.19,52,1.333,53,1.475,54,1.364,55,1.801,56,1.216,57,2.458,58,1.531,59,1.635,60,1.434,61,1.573,62,0.807,63,2.514,64,3.086,65,1.862,66,1.933,67,1.255,68,1.635,69,4.051,70,1.573,71,2.338,72,1.118,73,1.17,74,1.19,75,1.708,76,1.17,77,0.893,78,1.244,79,1.801,80,1.475,81,1.232,82,1.801,83,1.573,84,1.232,85,1.801,86,1.635,87,2.697,88,1.475,89,1.562,91,1.573,92,0.994,93,3.086,94,1.152,95,1.232,96,1.364,97,1.629,98,3.086,99,1.801,100,1.118,101,1.333,102,1.801,103,1.801,104,1.573,105,1.152,106,1.333,107,1.255,108,1.573,109,1.232,110,1.434,111,1.475,112,1.17,113,1.573,114,1.255,115,1.19,116,1.573,117,1.333,119,1.647,120,1.17,123,1.562,126,2.111,127,1.364,128,1.801,129,1.475,130,1.044,131,1.521,132,1.548,133,2.458,134,1.801,135,1.521,136,1.475,137,1.573,138,1.801,139,1.708,140,2.074,141,0.961,142,1.397,143,1.17,144,2.722,145,1.087,146,1.255,147,1.801,148,1.801,149,1.801,150,1.801,151,1.364,152,1.801,153,0.974,154,1.801,155,1.801,156,1.801,157,1.134,158,1.305,159,1.17,160,1.801,161,1.801,162,0.669,163,1.635,164,1.573,165,0.793,166,1.072,167,1.801,168,1.521,169,1.21,170,1.801,171,1.801,172,1.801,173,1.031,174,1.434,175,1.152,176,1.801,177,1.801,178,1.801,333,0.983,529,1.17,826,1.801,1332,2.112,1333,2.112]],["component/47",[8,0.304]],["title/48-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/48-1",[]],["text/48-1",[]],["component/48-1",[]],["title/48-2",[180,36.86]],["name/48-2",[]],["text/48-2",[]],["component/48-2",[]],["title/48-3",[14,13.171]],["name/48-3",[]],["text/48-3",[]],["component/48-3",[]],["title/48",[179,40.459]],["name/48",[179,2.332]],["text/48",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/48",[8,0.304]],["title/49",[5,45.409]],["name/49",[5,2.617]],["text/49",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/49",[8,0.304]],["title/50-1",[338,65.178]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[339,65.178]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[219,26.887]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50",[8,6.606,340,38.103]],["name/50",[340,2.668]],["text/50",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/50",[8,0.304]],["title/51",[126,44.579]],["name/51",[9,1.827]],["text/51",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/51",[8,0.304]],["title/52",[87,39.827,403,45.578,404,45.578]],["name/52",[83,3.283]],["text/52",[405,4.809]],["component/52",[8,0.304]],["title/53",[120,42.36]],["name/53",[9,1.827]],["text/53",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/53",[8,0.304]],["title/54-1",[10,32.982]],["name/54-1",[]],["text/54-1",[]],["component/54-1",[]],["title/54-2",[466,31.51,467,43.942]],["name/54-2",[]],["text/54-2",[]],["component/54-2",[]],["title/54-3",[74,43.059]],["name/54-3",[]],["text/54-3",[]],["component/54-3",[]],["title/54-4",[62,20.421,276,33.753,527,39.827]],["name/54-4",[]],["text/54-4",[]],["component/54-4",[]],["title/54-5",[47,13.017,528,38.498,529,29.622]],["name/54-5",[]],["text/54-5",[]],["component/54-5",[]],["title/54-6",[14,9.21,122,12.937,529,29.622]],["name/54-6",[]],["text/54-6",[]],["component/54-6",[]],["title/54-7",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/54-7",[]],["text/54-7",[]],["component/54-7",[]],["title/54-8",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/54-8",[]],["text/54-8",[]],["component/54-8",[]],["title/54-9",[1,29.973,529,34.864]],["name/54-9",[]],["text/54-9",[]],["component/54-9",[]],["title/54-10",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/54-10",[]],["text/54-10",[]],["component/54-10",[]],["title/54-11",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/54-11",[]],["text/54-11",[]],["component/54-11",[]],["title/54-12",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/54-12",[]],["text/54-12",[]],["component/54-12",[]],["title/54-13",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/54-13",[]],["text/54-13",[]],["component/54-13",[]],["title/54-14",[536,56.954]],["name/54-14",[]],["text/54-14",[]],["component/54-14",[]],["title/54",[10,23.064,74,30.111,466,26.772]],["name/54",[74,2.482]],["text/54",[1,1.32,2,0.811,3,1.463,4,0.773,8,0.788,10,1.831,11,0.316,12,0.328,13,2.171,14,1.484,15,1.76,16,0.415,19,1.418,23,1.741,24,0.444,26,0.656,28,1.887,29,1.445,30,1.423,33,0.399,34,1.741,35,0.788,36,0.877,37,1.304,43,0.341,44,1.161,45,0.964,47,1.408,48,0.77,51,0.378,53,0.891,54,0.434,56,1.41,58,1.922,61,0.5,62,0.885,63,1.227,65,1.192,66,1.727,71,0.434,72,1.686,73,1.009,74,1.306,76,0.372,78,0.438,84,0.392,89,2.816,91,0.5,92,0.858,97,0.574,100,0.355,101,0.424,104,0.5,105,0.366,114,1.377,115,0.378,119,0.58,120,0.372,122,1.897,123,1.195,126,0.744,127,0.434,129,0.469,132,0.755,133,0.456,135,0.484,140,0.385,141,0.306,144,1.044,145,0.937,146,0.758,153,2.319,157,0.685,158,0.415,159,0.372,162,0.577,164,0.5,165,0.252,169,0.385,173,0.328,174,0.456,180,0.878,181,0.444,183,0.656,185,0.479,188,0.852,191,1.111,196,0.719,197,0.594,201,0.802,206,0.665,208,0.332,210,0.293,211,1.079,212,0.385,213,0.665,215,0.434,217,0.5,219,1.876,221,0.378,225,0.639,226,1.275,228,0.324,234,1.068,238,1.055,245,1.161,255,0.355,258,1.006,262,0.529,267,0.284,268,0.328,269,0.615,271,1.404,272,1.463,276,0.424,279,0.385,282,0.805,295,0.55,299,0.456,303,0.665,313,0.415,315,0.378,316,0.456,318,0.415,328,0.95,329,0.456,331,0.549,333,0.848,334,0.385,335,0.444,345,0.5,350,0.514,354,0.424,355,0.707,362,0.52,363,0.346,364,1.237,368,0.95,369,0.52,371,0.685,372,1.209,373,0.407,375,1.237,377,1.69,378,0.553,379,2.278,380,1.066,381,0.287,386,0.424,388,0.361,389,0.385,397,0.361,398,0.366,408,0.399,409,0.5,411,1.574,412,0.484,413,1.237,416,0.29,419,0.964,420,0.891,425,0.392,427,1.009,430,0.444,437,0.734,444,0.987,447,0.336,448,1.328,450,2.373,456,0.805,458,0.639,466,3.699,467,0.891,468,0.424,469,0.573,470,0.5,471,1.088,472,0.719,473,0.434,474,0.573,475,0.444,476,0.366,477,0.415,478,0.484,479,1.117,480,0.415,481,0.29,482,0.266,483,0.573,484,2.144,485,0.866,486,0.891,487,0.987,488,0.987,489,0.964,490,0.987,491,0.987,492,1.205,493,0.987,494,0.987,495,1.463,496,1.794,497,0.891,498,0.987,499,0.987,500,1.833,501,0.987,502,1.41,503,1.41,504,1.044,505,0.987,506,0.573,507,0.987,508,0.573,509,1.41,510,0.95,511,1.432,512,0.987,513,0.573,518,1.026,520,0.594,527,0.95,528,0.484,529,0.707,532,0.5,534,1.357,536,1.727,542,0.5,543,0.469,544,0.573,545,0.573,546,0.573,547,0.456,548,0.573,549,0.573,550,0.399,551,1.088,552,1.032,553,0.758,554,0.5,555,0.484,556,0.573,557,1.126,558,1.088,559,0.415,560,0.573,561,1.088,562,0.573,563,0.573,564,0.543,565,1.088,566,0.5,567,0.573,568,0.987,569,1.272,570,1.032,571,0.52,572,0.573,573,0.5,574,0.434,575,0.573,576,0.484,577,1.474,578,0.573,579,0.573,580,0.573,581,0.434,582,0.469,583,0.434,584,0.5,585,0.456,586,0.573,587,0.573,588,1.082,589,0.378,590,0.385,591,0.573,592,0.573,593,1.032,594,0.444,595,0.484,596,0.615,597,0.573,598,0.52,599,0.573,600,0.378,601,0.95,602,0.573,603,0.573,604,0.543,605,0.434,606,0.987,607,0.361,608,1.062,609,0.573,610,0.573,611,0.889,612,0.573,613,0.573,614,0.434,615,0.573,616,0.296,617,0.52,618,0.407,619,0.573,620,0.573,621,0.573,622,0.573,623,0.469,624,0.52,625,0.52,626,0.484,627,2.362,628,1.357,629,0.573,630,0.744,631,0.95,632,0.573,633,0.573,634,0.543,635,1.088,636,0.573,637,0.484,638,0.573,639,0.573,640,0.573,641,0.469,642,0.573,643,0.573,644,0.52,645,0.573,646,1.088,647,0.685,648,0.52,649,0.543,650,0.573,651,0.5,652,0.361,653,0.407,654,0.372,655,0.573,656,1.088,657,0.573,658,1.088,659,0.5,660,0.573,661,0.573,662,1.088,663,0.573,664,1.976,665,0.424,666,0.407,667,0.434,668,0.573,669,1.032,670,0.573,671,0.573,672,0.573,673,0.424,674,0.336,675,0.573,676,0.573]],["component/54",[8,0.304]],["title/55",[405,31.51,677,45.311]],["name/55",[405,2.207]],["text/55",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/55",[8,0.304]],["title/56",[8,5.613,47,13.017,334,30.627]],["name/56",[47,0.693,334,1.631]],["text/56",[8,0.229,13,0.818,14,1.592,15,0.903,26,2.501,77,0.921,122,1.913,153,1.891,158,3.005,162,3.813,174,1.479,180,1.05,186,1.522,188,1.879,191,1.297,204,0.95,231,1.623,293,2.158,331,1.465,363,1.121,377,2.098,378,2.594,381,0.931,416,0.94,458,1.091,472,2.094,481,0.94,482,0.862,492,1.442,497,4.907,520,4.529,594,1.442,607,1.17,641,1.522,682,1.858,683,1.858,684,1.686,685,8.588,686,1.623,687,1.623,689,3.17,690,1.038,691,1.026,692,2.677,693,1.858,694,1.294,698,1.858,699,1.858,700,2.46,703,1.858,704,1.858,705,4.146,708,1.858]],["component/56",[8,0.304]],["title/57",[65,39.327]],["name/57",[9,1.827]],["text/57",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/57",[8,0.304]],["title/58-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/58-1",[]],["text/58-1",[]],["component/58-1",[]],["title/58-2",[8,5.613,13,20.074,90,28.292]],["name/58-2",[]],["text/58-2",[]],["component/58-2",[]],["title/58-3",[8,5.613,90,28.292,618,32.374]],["name/58-3",[]],["text/58-3",[]],["component/58-3",[]],["title/58-4",[8,5.613,77,22.605,90,28.292]],["name/58-4",[]],["text/58-4",[]],["component/58-4",[]],["title/58",[8,6.606,47,15.32]],["name/58",[47,0.693,132,0.928]],["text/58",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/58",[8,0.304]],["title/59-1",[331,18.962,729,39.726]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59-2",[8,5.613,479,21.549,730,34.527]],["name/59-2",[]],["text/59-2",[]],["component/59-2",[]],["title/59-3",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/59-3",[]],["text/59-3",[]],["component/59-3",[]],["title/59",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/59",[47,0.693,331,0.858]],["text/59",[8,0.918,36,1.889,47,1.453,51,2.198,56,1.564,66,1.588,97,1.756,132,2.361,162,1.889,188,1.044,197,2.776,210,1.701,211,1.816,221,2.198,226,1.796,227,1.545,234,3.367,237,2.412,238,1.776,262,2.474,267,1.65,268,1.905,277,1.882,331,2.444,350,1.573,355,2.163,378,2.198,379,1.272,385,2.236,396,2.163,436,2.236,437,3.269,463,2.364,477,2.412,479,2.405,480,3.687,481,2.574,482,3.459,550,2.318,553,2.318,590,2.236,611,1.905,647,2.096,674,2.988,731,2.198,732,1.981,733,1.796,734,2.583,735,3.767,736,2.583,739,2.521,740,2.412,741,1.816,742,2.583,743,5.367,744,2.583,745,3.948,746,2.583,747,2.318,748,3.948,749,3.948,750,2.583,751,2.583,752,2.412,753,2.583,754,2.096]],["component/59",[8,0.304]],["title/60",[105,41.695]],["name/60",[9,1.827]],["text/60",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/60",[8,0.304]],["title/61-1",[0,48.267]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[78,21.616,423,40.637]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/61-3",[]],["text/61-3",[]],["component/61-3",[]],["title/61-4",[331,18.962,729,39.726]],["name/61-4",[]],["text/61-4",[]],["component/61-4",[]],["title/61-5",[43,31.931,424,35.439]],["name/61-5",[]],["text/61-5",[]],["component/61-5",[]],["title/61-6",[8,5.613,479,21.549,730,34.527]],["name/61-6",[]],["text/61-6",[]],["component/61-6",[]],["title/61-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/61-7",[]],["text/61-7",[]],["component/61-7",[]],["title/61-8",[637,45.311,1223,48.702]],["name/61-8",[]],["text/61-8",[]],["component/61-8",[]],["title/61",[7,34.527,8,5.613,77,22.605]],["name/61",[9,1.827]],["text/61",[2,0.849,8,0.927,10,1.431,11,1.561,13,1.245,14,0.758,15,1.375,19,0.849,21,0.943,28,1.01,30,1.597,36,2.22,37,0.898,39,1.332,43,0.968,44,0.955,47,1.071,49,0.981,51,1.868,56,1.86,66,1.349,75,1.543,77,2.966,78,0.655,84,1.112,95,1.112,97,1.492,115,2.477,119,1.509,126,1.112,130,0.943,132,2.537,146,1.133,153,1.999,162,1.05,179,1.01,180,2.121,183,1.706,188,0.51,196,1.075,197,1.543,210,0.832,211,0.888,212,1.093,219,1.547,221,1.868,225,1.661,226,0.878,227,1.312,228,0.92,229,1.205,234,2.516,237,1.179,238,0.868,245,0.955,258,2.162,262,1.375,267,0.807,268,0.931,277,0.92,295,0.823,315,1.075,327,1.332,331,1.967,333,0.888,340,1.155,346,1.296,350,2.827,355,1.057,378,1.335,379,0.622,385,1.093,386,1.205,389,1.093,392,1.093,396,1.057,397,1.025,398,1.041,402,1.232,418,1.155,419,1.01,424,2.477,431,1.179,436,1.093,437,2.118,459,1.155,463,1.155,472,1.075,477,1.179,479,1.337,480,2.049,481,1.431,482,2.355,547,1.296,550,1.133,553,1.133,557,1.179,574,2.142,583,1.232,585,1.296,590,1.093,611,0.931,623,1.332,647,1.025,652,1.781,653,1.155,659,1.421,666,1.155,674,1.661,721,1.421,722,1.421,723,3.122,724,1.421,725,1.421,726,2.47,727,1.262,728,1.421,731,1.075,732,2.667,733,0.878,734,1.262,735,2.094,736,1.262,737,1.332,738,1.232,739,1.232,740,1.179,741,0.888,742,1.262,743,3.477,744,1.262,745,2.194,746,1.262,747,1.133,748,2.194,749,2.194,750,1.262,751,1.262,752,1.179,753,1.262,754,1.025,757,1.627,758,1.332,759,2.827,760,1.627,761,1.296,762,1.543,763,1.421,764,1.627,765,1.543,799,1.133,838,1.374,846,1.205,862,1.075,1334,1.907,1335,1.907,1336,1.738,1337,1.907,1338,1.907,1339,1.907,1340,1.907,1341,1.907]],["component/61",[8,0.304]],["title/62",[14,7.081,19,18.296,30,14.927,153,11.062,392,23.546]],["name/62",[19,1.267,392,1.631]],["text/62",[]],["component/62",[8,0.304]],["title/63",[2,23.798,77,22.605,132,17.423]],["name/63",[2,1.961]],["text/63",[1,1.59,2,1.486,8,0.35,14,1.739,19,1.486,23,1.629,24,2.208,30,2.381,36,1.056,47,1.286,48,2.772,56,1.416,77,1.411,94,1.82,111,2.331,122,1.804,123,2.828,132,1.088,146,1.982,153,2.436,162,3.059,185,1.983,188,2.172,191,1.843,192,1.65,201,2.327,220,5.131,248,2.208,303,3.889,313,2.062,331,1.006,350,2.642,374,1.82,378,1.013,379,2.136,381,1.425,383,2.403,419,1.766,425,1.946,489,1.766,504,3.026,515,4.578,520,1.553,574,2.155,590,3.026,623,2.331,652,1.792,666,2.021,691,1.571,706,1.741,723,1.982,732,2.68,741,1.553,799,3.137,810,2.403,838,2.403,846,2.107,850,2.331,862,2.975,910,2.331,1279,2.266,1293,5.338,1342,3.336,1343,3.336,1344,3.336,1345,3.336,1346,3.336,1347,3.04,1348,2.486]],["component/63",[8,0.304]],["title/64",[56,10.036,165,17.45,258,16.878,862,26.175]],["name/64",[165,1.069,1349,2.121]],["text/64",[14,1.352,19,1.385,44,1.558,47,0.758,48,1.316,56,1.901,58,1.316,67,2.967,81,1.814,88,3.489,90,3.312,92,1.465,94,1.697,115,1.753,130,1.538,135,2.241,153,1.684,183,4.309,185,1.168,197,2.912,204,1.356,209,2.173,213,1.623,226,1.431,234,1.199,242,3.597,254,3.392,258,3.042,262,1.29,293,1.876,303,3.737,327,2.173,332,3.489,368,1.623,383,2.241,438,2.241,446,3.154,485,2.113,489,1.647,504,1.783,540,3.226,552,4.041,559,1.923,605,2.01,626,2.241,652,1.671,667,2.01,678,2.113,723,1.848,731,1.753,741,2.324,765,5.062,777,3.392,785,4.25,799,1.848,846,1.965,858,7.801,862,4.035,869,2.653,937,3.489,1080,2.517,1279,2.113,1350,3.111,1351,5.336,1352,6.257,1353,6.527,1354,2.517,1355,3.111,1356,6.257,1357,4.994,1358,4.994,1359,4.994,1360,2.517,1361,6.257,1362,3.111,1363,3.111,1364,3.111,1365,3.111,1366,3.111,1367,3.111,1368,3.111,1369,3.111]],["component/64",[8,0.304]],["title/65",[56,7.956,173,17.984,258,13.38,540,23.794,780,27.447,1370,33.564]],["name/65",[173,1.39,1349,2.121]],["text/65",[]],["component/65",[8,0.304]],["title/66-1",[62,29.203]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[56,10.036,179,24.594,258,16.878,1156,33.466]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66",[36,14.712,56,10.036,77,19.651,258,16.878]],["name/66",[1349,3.283]],["text/66",[14,1.72,19,1.959,36,1.393,37,2.072,47,1.071,56,2.156,77,1.861,80,3.073,92,2.072,119,2.002,122,1.885,153,1.184,162,3.053,165,2.452,169,2.521,173,3.188,179,2.329,188,2.083,213,2.296,219,1.548,220,4.626,234,1.696,258,3.626,293,2.452,373,2.665,374,2.4,388,3.508,392,2.521,408,2.614,438,3.169,540,2.842,608,3.808,691,3.075,695,4.561,780,3.278,796,3.073,862,3.679,1100,3.169,1336,4.009,1348,4.866,1351,3.752,1354,3.56,1360,3.56,1370,4.009,1371,4.4,1372,4.009,1373,4.4,1374,4.4]],["component/66",[8,0.304]],["title/67-1",[88,37.335,166,27.13,179,28.292]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67-2",[30,22.852,153,16.935]],["name/67-2",[]],["text/67-2",[]],["component/67-2",[]],["title/67-3",[14,7.081,19,18.296,122,15.017,379,13.395]],["name/67-3",[]],["text/67-3",[]],["component/67-3",[]],["title/67-4",[19,23.798,123,23.064,1293,33.038]],["name/67-4",[]],["text/67-4",[]],["component/67-4",[]],["title/67-5",[48,26.606,1293,38.884]],["name/67-5",[]],["text/67-5",[]],["component/67-5",[]],["title/67-6",[94,22.416,368,21.441,504,23.546,846,25.949,862,23.149]],["name/67-6",[]],["text/67-6",[]],["component/67-6",[]],["title/67-7",[15,17.043,169,23.546,213,21.441,368,21.441,408,24.413]],["name/67-7",[]],["text/67-7",[]],["component/67-7",[]],["title/67-8",[162,14.712,214,26.624,215,30.014,411,31.557]],["name/67-8",[]],["text/67-8",[]],["component/67-8",[]],["title/67",[47,11.315,132,15.146,166,23.584,179,24.594]],["name/67",[179,2.332]],["text/67",[1,2.164,8,0.361,10,0.859,12,1.679,13,0.747,14,1.681,15,0.825,19,2.408,27,1.121,30,1.965,36,1.089,37,2.138,45,1.053,47,2.131,48,3.032,51,1.121,56,1.713,58,2.827,62,0.76,66,0.81,73,4.567,76,1.103,77,1.921,80,2.402,88,1.39,92,1.619,97,0.896,112,1.103,122,1.834,123,1.96,132,0.649,153,1.8,157,1.069,159,1.103,162,2.4,165,0.747,168,1.433,175,3.91,179,1.053,183,1.77,185,2.294,188,1.634,191,0.694,192,1.701,197,0.926,201,0.877,204,0.868,209,1.39,219,2.666,228,0.96,234,2.354,245,1.723,248,1.317,255,1.053,256,1.433,258,1.965,262,0.825,293,0.747,303,1.038,315,1.121,329,1.352,333,1.601,350,0.802,373,1.205,379,1.48,381,0.85,386,1.257,388,3.282,392,1.14,399,1.161,438,2.477,489,1.053,515,1.39,574,1.285,577,1.61,581,2.934,590,2.602,604,1.61,611,0.972,626,1.433,631,1.483,647,1.069,648,3.516,652,1.848,654,1.103,690,0.948,706,1.794,723,2.043,727,1.317,741,2.517,762,1.61,810,1.433,811,2.782,827,1.541,838,2.477,862,3.047,901,1.697,1100,1.433,1154,1.352,1293,4.132,1347,1.813,1375,1.99,1376,3.439,1377,1.99,1378,1.99,1379,3.675,1380,1.99,1381,1.813,1382,1.99,1383,1.99,1384,1.99,1385,1.99,1386,1.99,1387,1.99,1388,1.61,1389,3.439,1390,1.99]],["component/67",[8,0.304]],["title/68-1",[162,16.924,185,20.074,331,16.111]],["name/68-1",[]],["text/68-1",[]],["component/68-1",[]],["title/68-2",[165,15.433,331,12.386,799,24.413,846,25.949,862,23.149]],["name/68-2",[]],["text/68-2",[]],["component/68-2",[]],["title/68-3",[48,19.651,78,15.966,173,22.685,1293,28.72]],["name/68-3",[]],["text/68-3",[]],["component/68-3",[]],["title/68-4",[185,17.45,383,33.466,630,27.099,799,27.604]],["name/68-4",[]],["text/68-4",[]],["component/68-4",[]],["title/68",[94,20.094,245,18.45,368,19.219,504,21.106,799,21.883,862,20.751]],["name/68",[862,2.482]],["text/68",[1,1.538,8,0.339,14,1.539,23,1.576,27,1.818,36,1.629,43,1.638,47,1.253,48,3.379,49,1.661,56,1.385,67,1.917,77,1.365,78,2.513,94,3.498,97,1.453,117,2.038,119,1.469,122,1.934,123,1.393,145,1.661,153,1.969,165,1.212,173,1.576,175,1.761,183,1.661,185,2.408,188,1.376,204,1.407,219,1.809,220,3.809,233,2.136,234,1.244,247,1.789,258,1.172,262,2.133,266,2.806,268,1.576,303,3.346,327,2.254,331,0.973,333,1.502,368,3.346,372,1.684,378,0.98,383,3.705,392,1.849,419,1.708,427,1.789,504,4.191,559,1.995,590,1.849,606,2.498,611,1.576,626,2.325,652,1.734,667,2.085,723,3.056,732,1.638,733,2.367,741,2.984,770,2.752,777,2.192,797,2.085,815,3.493,829,2.085,846,4.049,848,2.498,854,2.498,862,4.795,897,2.498,1132,2.325,1238,2.498,1279,2.192,1293,3.963,1348,2.405,1351,2.752,1372,2.941,1388,2.611,1391,3.227,1392,3.227,1393,3.227,1394,2.752,1395,2.752,1396,3.227,1397,3.227,1398,2.752]],["component/68",[8,0.304]],["title/69-1",[30,27.765]],["name/69-1",[]],["text/69-1",[]],["component/69-1",[]],["title/69-2",[122,15.227,379,20.506]],["name/69-2",[]],["text/69-2",[]],["component/69-2",[]],["title/69-3",[329,51.913]],["name/69-3",[]],["text/69-3",[]],["component/69-3",[]],["title/69",[14,9.102,19,14.861,37,15.715,122,8.079,123,14.402,379,10.88]],["name/69",[14,0.508,37,0.785,122,0.403]],["text/69",[2,0.581,8,0.137,12,0.637,14,0.225,25,1.201,30,1.877,34,1.585,36,0.413,42,2.626,48,1.954,49,0.672,52,1.494,56,0.861,65,2.904,70,0.973,77,0.552,90,0.691,111,0.912,112,0.723,122,0.573,123,0.563,130,1.17,131,0.94,132,0.771,153,0.874,159,0.723,162,3.615,165,0.889,180,1.565,196,2.246,204,1.415,211,0.607,212,0.748,213,1.235,223,0.807,225,0.654,248,0.864,275,1.291,277,2.492,279,0.748,312,0.886,315,0.735,319,0.912,329,1.607,331,1.202,333,0.607,350,0.954,357,3.609,372,1.235,373,0.791,374,1.291,377,0.563,379,2.098,380,0.601,386,0.824,392,1.86,416,1.401,419,0.691,420,0.912,425,1.38,451,1.113,457,1.113,482,0.517,489,0.691,504,0.748,528,0.94,538,0.886,540,2.097,543,0.912,588,1.406,589,3.814,607,0.701,679,0.94,730,5.176,739,0.843,754,3.458,773,1.113,774,1.01,775,0.824,776,0.973,777,4.119,778,1.113,779,2.018,782,2.415,784,1.494,785,4.984,787,2.768,805,0.824,845,1.01,871,1.113,883,0.973,898,5.681,908,3.577,957,1.433,967,1.113,1115,3.087,1120,0.94,1174,4.567,1179,3.738,1193,0.973,1195,0.973,1202,1.056,1204,3.577,1207,1.056,1214,1.056,1219,1.914,1222,0.94,1240,4.695,1300,1.113,1313,2.338,1399,1.305,1400,1.305,1401,1.305,1402,1.305,1403,1.305,1404,1.305,1405,2.366,1406,1.305,1407,1.305,1408,1.305,1409,1.305,1410,1.305,1411,1.305,1412,1.305,1413,1.305,1414,2.366,1415,2.366,1416,1.305,1417,3.246,1418,1.305,1419,1.305,1420,1.305,1421,1.305,1422,1.305,1423,1.305,1424,1.305,1425,1.305,1426,1.305,1427,1.305,1428,1.305,1429,1.305,1430,1.305,1431,3.246,1432,1.305,1433,3.246,1434,3.246,1435,3.246,1436,3.987,1437,1.305,1438,3.987,1439,1.305,1440,2.366,1441,1.305,1442,1.305,1443,2.366,1444,1.305,1445,1.305,1446,1.305,1447,1.305,1448,1.305,1449,2.366,1450,1.305,1451,1.305,1452,1.305,1453,1.305,1454,1.305,1455,3.246,1456,1.305,1457,1.305,1458,2.366,1459,2.366,1460,2.366,1461,1.305,1462,1.305,1463,1.305,1464,1.305,1465,2.366,1466,1.305,1467,1.305,1468,1.113]],["component/69",[8,0.304]],["title/70",[14,8.006,78,15.966,188,12.428,1060,32.455]],["name/70",[14,0.491,188,0.761]],["text/70",[14,1.739,47,1.884,56,1.92,66,3.149,78,3.055,132,1.816,185,2.906,188,2.378,191,1.945,204,2.429,214,4.434,266,3.039,368,2.907,378,1.691,396,3.088,408,3.31,425,3.25,731,3.139,733,2.564,784,3.518,818,3.518,1060,3.892,1083,4.152,1087,4.313,1089,5.99,1469,5.077,1470,5.077,1471,5.572,1472,5.572,1473,5.572,1474,5.572,1475,5.572,1476,5.572,1477,5.572,1478,5.572,1479,5.572,1480,5.572,1481,5.077]],["component/70",[8,0.304]],["title/71",[19,20.688,392,26.624,606,35.971,1293,28.72]],["name/71",[1293,2.723]],["text/71",[8,0.41,10,2.574,14,1.248,15,3.004,19,2.656,30,2.167,35,2.412,36,1.236,44,1.955,47,0.95,48,2.523,51,2.198,56,0.843,66,1.588,76,2.163,81,2.276,96,2.521,101,2.464,122,2.393,123,3.125,141,1.776,165,1.466,168,4.297,188,1.596,210,1.701,219,3.241,220,2.318,238,1.776,245,1.955,253,2.276,262,1.618,267,1.65,279,4.15,332,4.167,333,1.816,346,2.65,350,2.405,379,1.272,383,4.297,392,3.418,504,2.236,511,2.412,581,5.951,626,2.811,653,2.364,669,3.157,706,2.036,741,2.776,763,2.908,775,2.464,799,2.318,862,3.361,1279,2.65,1283,3.157,1293,4.476,1379,4.826,1381,3.556,1482,3.902,1483,3.902,1484,3.902,1485,3.902,1486,3.902,1487,3.902,1488,3.902,1489,3.902,1490,3.902]],["component/71",[8,0.304]],["title/72-1",[331,23.038]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[596,36.86]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72",[122,12.937,706,27.888,741,24.876]],["name/72",[14,0.287,122,0.403,220,0.99,1348,1.242]],["text/72",[7,0.978,11,1.274,14,0.98,30,0.55,34,0.739,36,1.161,48,1.144,78,0.52,97,0.681,106,2.315,122,1.686,153,2.419,162,3.385,175,0.826,185,1.377,188,0.723,191,0.944,201,0.667,204,0.66,219,1.568,220,2.648,223,2.266,234,0.584,262,0.628,266,0.826,267,0.64,295,0.653,311,1.638,331,0.815,332,1.058,350,1.09,374,2.431,378,0.821,382,0.978,396,0.839,399,0.883,416,2.845,422,1.058,443,1.291,446,0.956,453,1.291,476,0.826,515,1.058,557,0.936,576,1.091,581,0.978,588,0.9,616,1.192,666,1.638,691,1.274,706,0.79,723,0.9,729,0.956,732,1.373,733,1.245,741,1.259,777,1.837,785,3.861,836,1.291,862,0.853,881,0.917,910,1.058,937,1.058,1116,1.38,1120,1.948,1132,1.091,1160,1.091,1173,3.606,1193,3.321,1195,3.321,1204,1.172,1238,1.172,1240,2.094,1279,1.028,1293,1.672,1304,1.291,1388,1.225,1394,1.291,1395,1.291,1491,1.38,1492,1.514,1493,1.38,1494,1.291,1495,1.291,1496,1.291,1497,1.291,1498,1.291,1499,1.291,1500,1.514,1501,6.345,1502,6.007,1503,6.007,1504,1.38,1505,5.622,1506,6.007,1507,6.007,1508,6.007,1509,4.061,1510,8.296,1511,7.738,1512,7.738,1513,7.738,1514,5.121,1515,2.705,1516,2.705,1517,4.457,1518,2.465,1519,2.465,1520,2.705,1521,1.514,1522,1.514,1523,1.514,1524,2.705,1525,4.457,1526,3.666,1527,3.666,1528,2.705,1529,3.666,1530,3.34,1531,1.514,1532,1.514,1533,1.514,1534,1.514,1535,1.514,1536,1.514,1537,1.514,1538,1.514]],["component/72",[8,0.304]],["title/73-1",[331,23.038]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[596,36.86]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73-3",[511,33.038,811,43.243,1539,53.449]],["name/73-3",[]],["text/73-3",[]],["component/73-3",[]],["title/73",[14,8.006,122,11.246,188,12.428,741,21.625]],["name/73",[14,0.287,122,0.403,188,0.446,220,0.99]],["text/73",[14,1.377,15,1.339,36,1.022,48,1.365,56,0.697,78,1.767,97,1.453,122,2.421,132,1.052,153,0.869,162,3.167,185,1.212,188,1.715,201,2.266,204,2.796,219,2.573,220,5.305,226,1.485,254,3.493,262,1.339,266,1.761,311,3.115,331,0.973,350,2.949,378,0.98,379,1.052,382,2.085,391,2.085,392,1.849,396,1.789,411,2.192,416,2.219,422,2.254,476,1.761,581,2.085,588,1.917,593,2.611,634,2.611,666,1.955,732,2.611,733,2.367,741,1.502,785,2.192,810,2.325,861,2.752,862,2.897,937,2.254,1083,2.405,1160,2.325,1193,3.832,1195,3.832,1238,2.498,1279,2.192,1388,2.611,1394,2.752,1395,2.752,1491,2.941,1501,4.687,1502,2.941,1503,2.941,1504,2.941,1505,2.752,1506,2.941,1507,2.941,1508,2.941,1509,4.687,1511,4.687,1512,4.687,1513,4.687,1518,2.941,1519,2.941,1530,2.941,1540,3.227,1541,3.227,1542,3.227,1543,3.227,1544,5.143,1545,3.227,1546,3.227,1547,3.227,1548,5.143,1549,3.227,1550,5.143,1551,3.227,1552,3.227]],["component/73",[8,0.304]],["title/74-1",[78,18.366,1354,43.243,1553,41.379]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74",[48,17.379,56,8.876,165,15.433,185,15.433,258,14.927]],["name/74",[78,0.723,165,0.79,1349,1.567]],["text/74",[10,1.243,11,1.356,14,1.393,27,2.643,33,0.965,34,1.406,36,1.228,47,0.396,48,0.687,56,1.159,58,0.687,73,1.596,77,1.218,78,1.844,81,0.948,90,0.86,105,0.886,115,1.622,122,1.657,127,1.049,132,0.53,153,1.942,162,3.372,165,1.082,166,1.462,175,1.571,179,0.86,183,0.836,185,1.457,187,1.258,188,1.588,191,1.354,199,1.026,204,0.708,206,0.848,208,0.803,213,1.503,219,1.013,220,3.817,221,0.915,234,0.626,238,0.739,253,0.948,255,0.86,258,1.046,262,1.194,267,0.687,268,0.793,270,1.78,275,0.886,293,0.61,295,1.243,302,2.011,303,0.848,315,0.915,331,1.169,361,1.103,365,1.744,368,2.801,376,1.314,378,0.874,379,1.264,385,0.931,388,2.084,396,1.596,416,0.701,426,2.229,431,1.004,446,1.026,473,1.049,543,2.011,553,0.965,557,1.78,564,1.314,568,1.258,594,1.075,608,3.131,624,3.003,647,0.873,654,0.9,666,0.984,691,1.356,692,1.17,695,2.011,731,0.915,732,1.969,733,1.785,741,0.756,775,1.026,780,1.211,799,0.965,804,1.314,817,1.86,818,1.026,819,2.011,831,1.314,846,2.449,854,2.229,855,2.146,862,3.857,897,2.229,909,1.258,968,2.146,1015,1.258,1094,2.074,1118,2.456,1151,1.258,1160,2.074,1251,1.135,1283,1.314,1348,1.211,1353,1.48,1354,1.314,1379,1.314,1398,3.307,1468,2.456,1494,3.307,1495,3.307,1496,3.307,1497,3.307,1498,1.385,1499,1.385,1553,1.258,1554,2.624,1555,1.48,1556,3.878,1557,4.891,1558,4.891,1559,3.878,1560,1.625,1561,1.48,1562,1.48,1563,1.625,1564,1.625,1565,1.625,1566,1.625,1567,1.625,1568,1.625,1569,1.48,1570,1.48,1571,2.624,1572,1.48,1573,2.624,1574,1.48,1575,1.48,1576,1.48,1577,1.48,1578,2.624,1579,1.48,1580,1.48,1581,1.48,1582,4.275,1583,1.48,1584,1.48,1585,1.48,1586,1.48,1587,1.48,1588,1.48,1589,1.48,1590,1.48,1591,1.48,1592,1.48,1593,2.624,1594,1.48,1595,1.48,1596,1.48,1597,1.48,1598,1.48,1599,1.48,1600,1.48,1601,1.48,1602,1.48]],["component/74",[8,0.304]],["title/75-1",[78,18.366,1360,43.243,1553,41.379]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[78,18.366,1553,41.379,1603,48.704]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75",[48,17.379,56,8.876,185,15.433,258,14.927,1604,41.092]],["name/75",[78,0.573,165,0.626,649,1.349,1349,1.242]],["text/75",[8,0.067,10,0.957,11,1.045,14,1.357,23,0.594,27,2.127,33,0.722,34,1.083,36,0.969,41,1.507,44,0.32,47,0.296,56,0.574,58,0.736,71,0.785,73,1.472,78,1.693,81,0.709,90,3.755,115,1.25,122,1.13,127,0.413,132,0.396,136,0.446,153,1.392,162,3.408,165,0.457,166,0.617,175,1.449,185,0.998,187,0.941,188,1.607,191,1.318,192,0.601,199,0.768,204,0.278,206,0.634,207,0.372,208,0.601,210,0.53,213,1.158,219,0.428,220,2.433,221,0.685,223,0.752,227,0.878,234,0.469,238,0.553,244,0.476,247,0.354,253,1.294,255,0.644,258,0.232,262,0.92,267,1.597,268,0.594,270,1.642,274,0.403,275,0.949,277,0.839,287,0.423,294,0.403,295,0.525,302,1.55,303,0.634,311,0.736,315,0.685,331,1.034,350,0.257,361,0.826,365,1.344,368,2.292,376,0.517,378,0.806,379,0.997,380,0.801,385,0.997,388,0.935,396,1.23,405,0.32,416,1.147,431,0.752,446,0.768,473,0.785,476,1.21,510,2.28,543,1.55,553,1.318,557,1.891,568,0.941,570,0.517,581,0.413,590,0.366,594,0.805,595,1.253,616,0.977,624,2.369,647,0.935,648,0.494,654,0.964,666,0.736,677,0.46,685,0.517,691,1.045,692,0.876,729,1.099,731,0.98,732,1.553,733,1.884,741,0.81,754,0.343,775,0.768,780,0.476,784,0.403,797,0.413,799,0.722,804,0.984,805,0.403,817,1.716,818,0.768,819,1.55,829,0.413,830,1.037,831,0.984,846,1.932,849,0.941,854,1.718,855,1.653,862,3.042,889,1.856,897,2.057,968,2.28,1015,0.941,1083,1.653,1084,0.984,1087,0.941,1089,0.941,1094,1.914,1107,0.545,1118,1.892,1120,0.876,1132,0.876,1151,0.941,1160,1.914,1223,0.494,1240,0.941,1251,0.849,1348,0.476,1360,0.517,1379,0.984,1398,2.609,1468,1.892,1469,1.108,1470,1.108,1481,5.3,1493,1.586,1494,1.037,1495,1.037,1496,7.281,1497,2.609,1498,1.037,1499,0.545,1505,1.484,1553,1.347,1554,1.108,1555,1.108,1557,2.022,1558,2.022,1561,1.108,1562,1.108,1569,1.108,1570,1.108,1571,2.022,1572,1.108,1573,2.022,1574,1.108,1575,1.108,1576,1.108,1577,1.108,1578,2.022,1579,1.108,1580,1.108,1581,1.108,1582,3.44,1583,1.108,1584,1.108,1585,1.108,1586,1.108,1587,1.108,1588,1.108,1589,1.108,1590,1.108,1591,1.108,1592,1.108,1593,2.022,1594,1.108,1595,1.586,1596,1.108,1597,1.108,1598,1.108,1599,1.108,1600,1.586,1601,1.108,1602,0.582,1603,0.582,1605,0.639,1606,0.639,1607,0.639,1608,0.639,1609,0.639,1610,1.74,1611,0.639,1612,0.639,1613,1.216,1614,0.639,1615,0.639,1616,1.216,1617,1.216,1618,1.216,1619,1.216,1620,1.216,1621,1.216,1622,0.639,1623,0.639,1624,0.639,1625,1.216,1626,0.639,1627,2.219,1628,0.639,1629,0.639,1630,0.639,1631,0.639,1632,0.639,1633,0.639,1634,2.657,1635,0.639,1636,1.216,1637,0.639,1638,1.216,1639,1.216,1640,0.639,1641,0.639,1642,0.639,1643,0.639,1644,0.639,1645,0.639,1646,3.06,1647,1.216,1648,1.216,1649,1.216,1650,4.392,1651,1.216,1652,1.216,1653,1.216,1654,1.216,1655,0.639,1656,0.639,1657,0.639,1658,0.639,1659,0.639,1660,0.639,1661,0.639,1662,0.639,1663,0.639,1664,0.639,1665,0.639,1666,2.219,1667,0.639,1668,0.639,1669,0.639,1670,1.74,1671,0.639,1672,0.639,1673,0.639,1674,1.216,1675,1.216,1676,0.639,1677,0.639,1678,3.06,1679,1.216,1680,0.639,1681,0.639,1682,0.639,1683,3.06,1684,0.639,1685,3.06,1686,3.06,1687,0.639,1688,1.74,1689,0.639,1690,0.639,1691,0.639,1692,0.639,1693,0.639,1694,0.639,1695,0.639,1696,0.639,1697,0.639,1698,0.639,1699,0.639,1700,0.639,1701,0.639]],["component/75",[8,0.304]],["title/76",[]],["name/76",[1128,2.303,1349,2.121]],["text/76",[105,5.096,405,4.679,1128,7.558]],["component/76",[8,0.304]],["title/77-1",[0,48.267]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[78,21.616,423,40.637]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[331,18.962,729,39.726]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[43,31.931,424,35.439]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[8,5.613,479,21.549,730,34.527]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77",[7,40.637,447,31.51]],["name/77",[9,1.827]],["text/77",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/77",[8,0.304]],["title/78",[126,36.69,447,31.51]],["name/78",[9,1.827]],["text/78",[405,4.809]],["component/78",[8,0.304]],["title/79",[447,38.285]],["name/79",[9,1.827]],["text/79",[405,4.809]],["component/79",[8,0.304]],["title/80",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/80",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/80",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/80",[8,0.304]],["title/81",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/81",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/81",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45,1702,1.701]],["component/81",[8,0.304]],["title/82",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/82",[14,0.362,188,0.562,596,1.014]],["text/82",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/82",[8,0.304]],["title/83",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/83",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/83",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/83",[8,0.304]],["title/84-1",[62,29.203]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/84",[47,0.512,381,0.898,607,1.13]],["text/84",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.121,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897,1703,1.052]],["component/84",[8,0.304]],["title/85-1",[62,29.203]],["name/85-1",[]],["text/85-1",[]],["component/85-1",[]],["title/85-2",[227,24.902,616,27.714]],["name/85-2",[]],["text/85-2",[]],["component/85-2",[]],["title/85-3",[227,24.902,1222,45.311]],["name/85-3",[]],["text/85-3",[]],["component/85-3",[]],["title/85-4",[227,24.902,1097,43.942]],["name/85-4",[]],["text/85-4",[]],["component/85-4",[]],["title/85-5",[227,24.902,416,27.146]],["name/85-5",[]],["text/85-5",[]],["component/85-5",[]],["title/85-6",[247,34.864,277,30.337]],["name/85-6",[]],["text/85-6",[]],["component/85-6",[]],["title/85-7",[350,30.815]],["name/85-7",[]],["text/85-7",[]],["component/85-7",[]],["title/85",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/85",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/85",[2,0.699,12,1.363,14,0.904,21,0.776,30,1.662,36,0.884,56,1.361,66,0.639,67,0.932,100,0.831,114,2.718,122,1.865,123,1.205,130,2.262,132,0.512,141,2.645,153,1.909,162,3.096,173,0.766,191,0.975,199,0.991,203,2.2,210,0.684,219,0.552,227,2.301,229,0.991,238,0.714,247,1.547,250,1.169,253,1.629,258,0.57,267,3.369,279,0.899,282,0.991,361,1.066,363,1.437,365,2.771,371,1.5,374,1.523,377,1.205,378,1.145,379,2.805,380,1.736,381,3.403,382,1.014,389,0.899,390,1.804,399,1.629,402,1.014,416,2.9,425,1.629,427,0.87,436,0.899,437,0.633,456,2.382,458,0.786,475,1.038,479,0.633,481,0.677,482,0.621,485,1.066,486,1.096,518,0.884,520,1.3,576,1.13,600,2.125,607,3.384,608,4.136,616,3.706,637,1.13,674,3.367,678,1.066,687,1.169,690,1.33,731,0.884,761,1.066,782,1.691,797,1.014,817,2.437,899,1.13,957,3.815,982,1.13,1011,1.215,1012,1.215,1049,4.695,1060,1.096,1062,1.95,1065,2.081,1071,2.081,1073,1.169,1075,1.169,1076,2.081,1078,2.081,1094,2.717,1097,1.096,1098,1.13,1099,1.215,1110,2.011,1111,2.162,1121,2.162,1122,1.215,1123,2.162,1124,1.215,1146,0.899,1148,1.169,1154,1.066,1222,2.011,1223,1.215,1224,2.381,1225,2.381,1226,1.338,1227,2.381,1228,2.381,1229,2.381,1230,2.381,1231,1.338,1232,1.338,1233,1.338,1234,1.338,1235,2.381,1236,2.381,1241,2.381,1242,1.338,1243,1.338,1244,1.338,1245,1.338,1246,1.338,1247,1.338,1248,1.338,1249,1.338,1250,1.338,1251,1.096,1252,2.381,1253,1.338,1254,1.338,1255,1.338,1256,1.338,1257,1.338,1258,1.338,1259,1.338,1260,1.338,1261,1.338,1262,1.338,1263,1.338,1264,1.338,1265,1.338,1268,1.338,1269,1.338,1270,1.338,1271,1.338,1272,1.338,1273,1.338,1274,1.338,1275,1.338,1276,1.338,1277,1.338]],["component/85",[8,0.304]],["title/86",[14,9.21,122,12.937,379,17.423]],["name/86",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/86",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/86",[8,0.304]],["title/87-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87-2",[14,9.21,153,14.389,188,14.297]],["name/87-2",[]],["text/87-2",[]],["component/87-2",[]],["title/87-3",[10,32.982]],["name/87-3",[]],["text/87-3",[]],["component/87-3",[]],["title/87-4",[122,18.501]],["name/87-4",[]],["text/87-4",[]],["component/87-4",[]],["title/87",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/87",[14,0.362,47,0.512,188,0.562]],["text/87",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/87",[8,0.304]],["title/88",[105,34.317,447,31.51]],["name/88",[9,1.827]],["text/88",[405,4.809]],["component/88",[8,0.304]],["title/89-1",[0,48.267]],["name/89-1",[]],["text/89-1",[]],["component/89-1",[]],["title/89-2",[78,21.616,423,40.637]],["name/89-2",[]],["text/89-2",[]],["component/89-2",[]],["title/89-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/89-3",[]],["text/89-3",[]],["component/89-3",[]],["title/89-4",[331,18.962,729,39.726]],["name/89-4",[]],["text/89-4",[]],["component/89-4",[]],["title/89-5",[8,5.613,479,21.549,730,34.527]],["name/89-5",[]],["text/89-5",[]],["component/89-5",[]],["title/89-6",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/89-6",[]],["text/89-6",[]],["component/89-6",[]],["title/89",[7,40.637,720,39.726]],["name/89",[9,1.827]],["text/89",[8,1.013,13,2.113,36,1.781,47,1.681,51,2.037,56,1.491,66,1.472,89,1.56,97,1.628,130,1.788,132,2.539,162,1.781,188,0.967,197,2.618,210,1.577,211,1.683,219,1.272,221,2.037,226,1.664,227,1.431,234,3.252,237,2.235,238,1.645,262,2.333,267,1.529,268,1.766,277,1.744,331,2.348,350,1.458,355,2.004,378,2.364,379,1.179,385,2.072,396,2.004,436,2.072,437,3.14,463,2.19,466,1.811,477,2.235,479,2.268,480,3.477,481,2.427,482,3.34,489,1.914,550,2.148,553,2.148,590,2.072,611,1.766,647,1.943,674,2.818,720,2.284,731,2.037,732,1.835,733,1.664,734,2.393,735,3.552,736,2.393,739,2.336,740,2.235,741,1.683,742,2.393,743,5.155,744,2.393,745,3.723,746,2.393,747,2.148,748,3.723,749,3.723,750,2.393,751,2.393,752,2.235,753,2.393,754,1.943]],["component/89",[8,0.304]],["title/90",[8,5.613,13,20.074,378,16.222]],["name/90",[9,1.827]],["text/90",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/90",[8,0.304]],["title/91-1",[379,20.506,596,30.337]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[89,27.146,1313,45.311]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/91",[13,1.069,596,1.373]],["text/91",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/91",[8,0.304]],["title/92",[105,34.317,720,39.726]],["name/92",[9,1.827]],["text/92",[405,4.809]],["component/92",[8,0.304]],["title/93-1",[0,48.267]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[1,36.417]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93-3",[2,28.009,3,39.726]],["name/93-3",[]],["text/93-3",[]],["component/93-3",[]],["title/93-4",[3,39.726,4,38.103]],["name/93-4",[]],["text/93-4",[]],["component/93-4",[]],["title/93-5",[5,45.409]],["name/93-5",[]],["text/93-5",[]],["component/93-5",[]],["title/93-6",[6,56.954]],["name/93-6",[]],["text/93-6",[]],["component/93-6",[]],["title/93",[7,40.637,8,6.606]],["name/93",[9,1.827]],["text/93",[1,4.134,3,2.979,4,1.267,5,1.243,6,1.559,8,0.722,10,2.036,11,2.221,12,2.732,13,1.772,14,1.267,15,2.321,16,1.293,17,1.421,18,1.559,19,1.599,20,1.559,21,1.035,22,1.559,23,1.753,24,1.385,25,1.062,26,1.848,27,1.179,28,1.108,29,1.092,30,0.76,31,1.352,32,1.559,33,2.134,34,1.753,35,2.22,36,1.494,37,1.691,38,1.784,39,1.462,40,1.784,41,1.421,42,1.693,43,1.062,44,1.799,45,1.108,46,1.784,47,1.674,48,0.885,49,2.427,50,1.784,51,1.179,52,1.321,53,1.462,54,1.352,55,1.784,56,1.209,57,2.439,58,1.519,59,1.62,60,1.421,61,1.559,62,0.799,63,2.962,64,3.062,65,1.848,66,1.92,67,1.243,68,1.62,69,3.062,70,1.559,71,3.048,72,1.108,73,1.16,74,1.179,75,1.693,76,1.16,77,0.885,78,1.234,79,1.784,80,1.462,81,1.22,82,1.784,83,1.559,84,1.22,85,1.784,86,1.62,87,2.676,88,1.462,89,1.55,91,1.559,92,0.985,93,1.784,94,1.959,95,1.22,96,1.352,97,1.616,98,3.062,99,1.784,100,1.108,101,1.321,102,1.784,103,1.784,104,1.559,105,1.141,106,1.321,107,1.243,108,1.559,109,1.22,110,1.421,111,1.462,112,1.16,113,1.559,114,1.243,115,1.179,116,1.559,117,1.321,118,1.462,119,1.634,120,1.16,121,1.693,122,0.869,123,1.55,124,1.907,125,1.907,126,2.095,127,1.352,128,1.784,129,1.462,130,1.035,131,1.507,132,1.538,133,2.439,134,1.784,135,1.507,136,1.462,137,1.559,138,1.784,139,1.693,140,2.058,141,0.952,142,1.385,143,1.16,144,2.703,145,1.077,146,1.243,147,1.784,148,1.784,149,1.784,150,1.784,151,1.352,152,1.784,153,0.967,154,1.784,155,1.784,156,1.784,157,1.124,158,1.293,159,1.16,160,1.784,161,1.784,162,0.663,163,1.62,164,1.559,165,0.786,166,1.062,167,1.784,168,1.507,169,1.199,170,1.784,171,1.784,172,1.784,173,1.022,174,1.421,175,1.141,176,1.784,177,1.784,178,1.784,531,1.421]],["component/93",[8,0.304]],["title/94-1",[8,4.879,36,14.712,62,17.752,179,24.594]],["name/94-1",[]],["text/94-1",[]],["component/94-1",[]],["title/94-2",[180,36.86]],["name/94-2",[]],["text/94-2",[]],["component/94-2",[]],["title/94-3",[14,13.171]],["name/94-3",[]],["text/94-3",[]],["component/94-3",[]],["title/94",[179,40.459]],["name/94",[179,2.332]],["text/94",[2,0.763,8,0.512,14,1.38,15,1.252,17,1.164,21,2,23,0.837,27,2.279,30,1.469,34,1.474,35,1.059,36,0.543,44,0.858,45,1.598,47,0.417,48,1.276,49,0.882,52,1.082,56,1.053,60,1.164,62,0.655,63,2.141,67,1.018,84,0.999,89,3.037,92,2.295,100,2.58,101,1.082,109,0.999,117,2.554,118,1.197,119,0.78,122,0.415,132,0.558,141,0.78,143,1.673,151,1.107,153,2.079,166,0.87,169,0.982,180,3.725,181,3.226,182,1.197,183,0.882,184,1.234,185,2.087,186,1.197,187,1.326,188,2.142,189,2.05,190,1.059,191,1.412,192,2.748,193,1.95,194,3.31,195,1.326,196,0.965,197,1.883,198,1.107,199,1.082,200,2.825,201,1.782,202,1.134,203,0.999,204,3.228,205,1.461,206,0.894,207,1.76,208,0.847,209,2.108,210,0.747,211,1.405,212,3.185,213,1.575,214,0.982,215,1.107,216,2.337,217,1.277,218,1.461,219,1.423,220,1.018,221,0.965,222,1.461,223,1.059,224,1.461,225,0.858,226,0.788,227,0.678,228,1.456,229,1.082,230,1.461,231,2.249,232,1.461,233,1.997,234,0.66,235,1.461,236,1.461,237,1.059,238,0.78,239,1.461,240,1.461,241,1.277,242,1.234,243,1.461,244,1.277,245,2.026,246,1.326,247,0.95,248,1.997,249,1.326,250,1.277,251,1.461,252,1.461,253,0.999,254,1.164,255,2.58,256,2.174,257,2.108,258,1.469,259,1.461,260,1.277,261,1.461,262,1.252,263,1.461,264,1.134,265,1.461,266,0.935,267,1.276,268,2.38,269,2.351,270,1.059,271,1.828,272,1.082,273,1.277,274,1.082,275,0.935,276,1.082,277,0.826,278,1.461,279,0.982,280,1.277,281,2.843,282,1.082,283,1.277,284,1.164,285,1.277,286,1.277,287,1.134,288,1.164,289,2.249,290,1.134,291,1.277,292,1.277,293,1.134,294,1.082,295,0.739,296,1.461,297,1.038,298,1.95,299,1.164,300,1.277,301,1.277,302,2.108,303,0.894,304,3.632,305,1.277,306,2.249,307,1.277,308,1.197,309,3.014,310,1.277,311,1.038,312,2.05,313,1.059,314,2.574,315,0.965,316,1.164,317,1.277,318,1.059,319,1.197]],["component/94",[8,0.304]],["title/95",[5,45.409]],["name/95",[5,2.617]],["text/95",[1,2.79,5,3.479,8,0.615,10,2.527,19,2.607,26,3.013,30,3.315,31,3.782,36,1.854,37,2.757,56,1.729,58,2.476,73,3.245,117,3.697,123,2.527,153,2.456,157,4.301,162,1.854,166,2.972,175,3.194,180,2.824,228,2.824,320,4.993,321,4.993,322,4.993,323,4.993,324,4.993,325,4.363,326,6.199,327,4.09,328,4.363,329,3.977,330,4.993,331,1.765,332,4.09,333,2.725,334,3.355,335,3.875,336,4.993,337,4.993]],["component/95",[8,0.304]],["title/96-1",[338,65.178]],["name/96-1",[]],["text/96-1",[]],["component/96-1",[]],["title/96-2",[339,65.178]],["name/96-2",[]],["text/96-2",[]],["component/96-2",[]],["title/96-3",[219,26.887]],["name/96-3",[]],["text/96-3",[]],["component/96-3",[]],["title/96",[8,6.606,340,38.103]],["name/96",[340,2.668]],["text/96",[10,3.012,11,3.287,12,3.408,13,2.622,14,1.716,15,3.732,16,4.314,18,5.201,19,3.108,20,5.201,21,3.451,22,5.201,23,3.408,24,4.619,25,3.543,26,3.591,27,3.932,28,3.695,29,3.642,30,2.536,31,4.509,32,5.201,33,4.147,34,3.408,35,4.314]],["component/96",[8,0.304]],["title/97",[126,44.579]],["name/97",[9,1.827]],["text/97",[107,4.947,126,5.859,165,3.773,341,7.101,342,7.101,343,7.101,344,7.101,345,6.205,346,5.656,347,7.101]],["component/97",[8,0.304]],["title/98-1",[8,8.026]],["name/98-1",[]],["text/98-1",[]],["component/98-1",[]],["title/98-2",[47,15.32,348,41.632]],["name/98-2",[]],["text/98-2",[]],["component/98-2",[]],["title/98-3",[47,10.007,56,8.876,348,27.195,349,30.62,350,16.567]],["name/98-3",[]],["text/98-3",[]],["component/98-3",[]],["title/98-4",[8,6.606,158,38.884]],["name/98-4",[]],["text/98-4",[]],["component/98-4",[]],["title/98-5",[67,37.374,351,57.322]],["name/98-5",[]],["text/98-5",[]],["component/98-5",[]],["title/98",[8,6.606,62,24.035]],["name/98",[62,1.683]],["text/98",[2,1.122,8,0.885,12,1.231,13,0.947,14,1.694,15,2.618,19,2.408,23,1.231,25,1.279,27,1.42,29,1.315,30,1.527,31,1.628,36,1.712,45,2.225,47,2.051,48,1.066,49,1.297,52,1.592,56,1.515,58,1.066,62,1.606,63,1.334,66,1.026,72,2.225,74,1.42,84,1.47,88,1.76,92,1.979,95,1.47,96,1.628,97,1.134,106,1.592,117,1.592,122,2.039,123,2.333,153,1.456,158,1.558,166,2.134,180,1.215,181,2.782,182,1.76,183,1.297,184,3.028,185,1.579,188,1.688,192,1.246,198,1.628,204,1.099,211,1.173,214,1.444,215,1.628,216,1.951,219,1.479,225,1.262,226,1.934,228,1.215,245,1.262,248,2.782,258,2.293,268,2.052,293,1.579,331,0.76,332,1.76,333,1.173,334,2.409,340,1.527,346,1.712,348,2.782,349,1.878,350,1.695,352,2.297,353,1.878,354,1.592,355,1.397,356,2.297,357,1.76,358,2.297,359,2.297,360,2.297,361,1.712,362,1.951,363,1.297,364,1.712,365,1.527,366,2.297,367,2.297,368,2.821,369,1.951,370,2.149,371,1.354,372,2.193,373,1.527,374,1.375,375,2.855,376,2.039,377,1.088,378,0.765,379,1.763,380,1.16,381,2.31,382,1.628,383,1.815,384,3.83,385,1.444,386,1.592,387,1.951,388,1.354,389,1.444,390,1.628,391,1.628,392,1.444,393,2.297,394,2.297,395,2.297,396,1.397,397,1.354,398,1.375,399,1.47,400,2.039,401,2.297,402,1.628]],["component/98",[8,0.304]],["title/99",[87,39.827,403,45.578,404,45.578]],["name/99",[83,3.283]],["text/99",[405,4.809]],["component/99",[8,0.304]],["title/100",[120,42.36]],["name/100",[9,1.827]],["text/100",[107,4.613,109,4.529,110,5.274,112,4.304,114,4.613,120,5.797,165,3.615,197,3.614,298,5.016,340,4.703,406,6.012,407,5.593,408,4.613,409,5.786,410,6.622]],["component/100",[8,0.304]],["title/101-1",[26,39.327]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101-2",[348,50.583]],["name/101-2",[]],["text/101-2",[]],["component/101-2",[]],["title/101-3",[411,51.913]],["name/101-3",[]],["text/101-3",[]],["component/101-3",[]],["title/101-4",[]],["name/101-4",[]],["text/101-4",[]],["component/101-4",[]],["title/101-5",[13,28.706]],["name/101-5",[]],["text/101-5",[]],["component/101-5",[]],["title/101-6",[132,24.915]],["name/101-6",[]],["text/101-6",[]],["component/101-6",[]],["title/101-7",[144,36.047,412,45.311]],["name/101-7",[]],["text/101-7",[]],["component/101-7",[]],["title/101-8",[89,20.05,413,31.557,414,34.622,415,37.591]],["name/101-8",[]],["text/101-8",[]],["component/101-8",[]],["title/101-9",[414,46.875,416,27.146]],["name/101-9",[]],["text/101-9",[]],["component/101-9",[]],["title/101-10",[416,27.146,417,41.632]],["name/101-10",[]],["text/101-10",[]],["component/101-10",[]],["title/101-11",[142,41.632,143,34.864]],["name/101-11",[]],["text/101-11",[]],["component/101-11",[]],["title/101",[120,34.864,418,38.103]],["name/101",[418,2.668]],["text/101",[8,0.835,10,1.38,25,1.623,26,1.645,29,1.668,34,1.561,36,1.012,43,1.623,49,1.645,56,1.831,66,2.593,68,2.475,78,1.754,89,2.203,120,1.772,132,2.372,142,3.379,143,2.829,144,4.858,145,2.627,153,0.861,185,1.201,190,4.497,204,1.394,207,1.865,214,1.832,215,2.065,219,1.125,226,2.349,227,1.266,255,1.692,262,2.117,266,1.744,271,1.937,297,1.937,303,1.668,312,2.172,357,2.233,364,2.172,380,1.471,397,1.718,400,2.587,412,2.303,413,2.172,414,3.804,415,6.434,416,2.203,417,4.217,418,3.092,419,1.692,420,2.233,421,2.913,422,2.233,423,2.065,424,1.801,425,1.865,426,2.475,427,2.829,428,2.913,429,2.913,430,2.116,431,1.976,432,2.913,433,2.913,434,4.652,435,4.652,436,1.832,437,2.058,438,2.303,439,2.913,440,2.019,441,2.913,442,5.807,443,2.726,444,2.475,445,2.233,446,2.019,447,1.602,448,1.832,449,2.913,450,2.382,451,2.726,452,2.587,453,2.726,454,2.913,455,2.475,456,3.224,457,2.726,458,1.602,459,3.86,460,2.913,461,2.913,462,4.13,463,1.937,464,2.913,465,4.652]],["component/101",[8,0.304]],["title/102-1",[10,32.982]],["name/102-1",[]],["text/102-1",[]],["component/102-1",[]],["title/102-2",[466,31.51,467,43.942]],["name/102-2",[]],["text/102-2",[]],["component/102-2",[]],["title/102",[10,27.146,466,31.51]],["name/102",[10,1.901]],["text/102",[8,0.54,10,3.156,11,1.52,12,1.576,13,2.408,14,0.556,29,1.684,36,1.629,44,2.576,47,2.073,53,2.254,56,0.697,61,2.405,62,1.233,63,2.722,65,2.646,66,2.093,72,1.708,78,1.109,89,3.447,97,1.453,119,1.469,129,2.254,132,1.677,140,1.849,144,3.674,145,1.661,146,1.917,153,2.151,157,1.734,164,2.405,188,0.863,191,1.795,217,2.405,219,1.135,238,1.469,245,1.617,269,1.556,331,0.973,350,1.301,364,2.192,371,1.734,379,1.052,411,2.192,412,2.325,413,2.192,419,1.708,420,2.254,427,1.789,437,2.585,456,2.038,466,4.907,467,2.254,468,2.038,469,2.752,470,2.405,471,4.386,472,2.897,473,2.085,474,2.752,475,2.136,476,1.761,477,1.995,478,2.325,479,1.301,480,1.995,481,1.393,482,1.277,483,2.752,484,2.498,485,2.192,486,2.254,487,2.498,488,2.498,489,1.708,490,2.498,491,2.498,492,2.136,493,2.498,494,2.498,495,3.248,496,3.982,497,2.254,498,2.498,499,2.498,500,3.404,501,2.498,502,2.498,503,2.498,504,1.849,505,2.498,506,2.752,507,2.498,508,2.752,509,2.498,510,2.405,511,1.995,512,2.498,513,2.752]],["component/102",[8,0.304]],["title/103-1",[62,20.421,276,33.753,527,39.827]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[47,13.017,528,38.498,529,29.622]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[14,9.21,122,12.937,529,29.622]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103-4",[14,6.347,19,16.4,122,8.916,123,15.895,379,12.007,529,20.414]],["name/103-4",[]],["text/103-4",[]],["component/103-4",[]],["title/103-5",[74,20.751,89,15.895,162,18.068,466,18.45,529,20.414]],["name/103-5",[]],["text/103-5",[]],["component/103-5",[]],["title/103-6",[1,29.973,529,34.864]],["name/103-6",[]],["text/103-6",[]],["component/103-6",[]],["title/103-7",[28,24.594,271,28.142,530,29.341,531,31.557]],["name/103-7",[]],["text/103-7",[]],["component/103-7",[]],["title/103-8",[23,22.685,153,12.508,530,29.341,531,31.557]],["name/103-8",[]],["text/103-8",[]],["component/103-8",[]],["title/103-9",[30,16.878,530,29.341,532,34.622,533,39.621]],["name/103-9",[]],["text/103-9",[]],["component/103-9",[]],["title/103-10",[15,17.043,180,19.817,530,25.949,534,30.62,535,35.041]],["name/103-10",[]],["text/103-10",[]],["component/103-10",[]],["title/103-11",[536,56.954]],["name/103-11",[]],["text/103-11",[]],["component/103-11",[]],["title/103",[74,43.059]],["name/103",[74,2.482]],["text/103",[1,1.67,2,0.906,3,1.626,4,0.868,8,0.829,10,1.321,13,2.062,14,1.532,15,1.916,16,0.469,19,1.561,23,1.909,24,0.503,26,0.737,28,2.069,29,1.343,30,1.554,33,0.451,34,1.909,35,0.886,36,0.644,37,1.442,43,0.385,44,0.718,45,1.077,47,1.125,48,0.86,51,0.428,53,0.531,54,0.926,56,1.462,58,2.086,62,0.777,63,0.759,65,0.737,66,1.591,71,0.491,72,1.621,73,1.127,74,1.725,76,0.421,78,0.261,84,0.443,89,2.672,90,0.402,91,0.566,92,0.958,95,0.443,97,0.342,100,0.402,101,0.48,104,0.566,105,0.414,114,1.53,115,0.428,119,0.346,120,0.421,121,0.614,122,1.989,123,1.321,126,0.836,127,0.491,132,0.467,133,0.516,135,0.547,140,0.435,141,0.346,145,0.737,146,0.451,153,2.311,157,0.408,158,0.469,159,0.421,162,0.644,165,0.285,169,0.435,173,0.371,174,0.516,180,0.981,181,0.503,183,0.737,185,0.538,188,0.819,191,0.899,196,0.807,197,0.667,201,0.896,206,0.748,208,0.376,210,0.331,211,1.198,212,0.435,213,0.748,215,0.491,219,1.931,221,0.428,225,0.718,226,1.409,228,0.366,234,1.18,238,0.926,245,1.019,254,0.973,255,0.402,258,1.112,262,0.594,267,0.321,268,0.371,269,0.366,271,1.559,272,1.626,276,0.48,279,0.435,282,0.905,295,0.618,299,0.516,303,0.748,313,0.469,315,0.428,316,0.516,318,0.469,328,1.068,329,0.516,331,0.432,333,0.947,334,0.435,335,0.503,345,0.566,350,0.306,354,0.48,355,0.794,362,0.588,363,0.391,364,0.973,368,1.061,369,0.588,371,0.408,372,1.598,373,0.46,375,1.382,377,1.846,378,0.617,379,2.363,380,1.185,381,0.324,386,0.48,388,0.408,389,0.435,397,0.408,398,0.414,408,0.451,409,0.566,411,1.382,413,0.973,416,0.328,417,0.503,419,0.759,420,0.531,422,0.531,425,0.443,427,0.794,430,0.503,444,1.109,447,0.38,448,1.475,450,2.913,456,0.48,458,0.718,466,3.204,467,0.531,479,1.038,484,1.993,485,0.516,486,0.531,487,0.588,488,0.588,489,0.759,490,0.588,491,0.588,492,0.948,493,0.588,494,0.588,495,0.905,496,1.109,497,0.531,498,0.588,499,0.588,500,1.346,501,0.588,502,1.109,503,1.109,504,0.821,505,0.588,507,0.588,509,1.109,510,1.068,511,1.257,512,0.588,518,1.146,520,0.667,527,1.068,528,0.547,529,0.794,531,0.516,532,0.566,534,1.516,536,1.918,537,0.692,538,0.516,539,0.692,540,0.491,541,0.692,542,0.566,543,0.531,544,0.648,545,0.648,546,0.648,547,0.516,548,0.648,549,0.648,550,0.451,551,1.222,552,1.159,553,0.851,554,0.566,555,0.547,556,0.648,557,1.257,558,1.222,559,0.469,560,0.648,561,1.222,562,0.648,563,0.648,564,0.614,565,1.222,566,0.566,567,0.648,568,1.109,569,1.421,570,1.159,571,0.588,572,0.648,573,0.566,574,0.491,575,0.648,576,0.547,577,1.646,578,0.648,579,0.648,580,0.648,581,0.491,582,0.531,583,0.491,584,0.566,585,0.516,586,0.648,587,0.648,588,1.209,589,0.428,590,0.435,591,0.648,592,0.648,593,1.159,594,0.503,595,0.547,596,0.691,597,0.648,598,0.588,599,0.648,600,0.428,601,1.068,602,0.648,603,0.648,604,0.614,605,0.491,606,1.109,607,0.408,608,1.186,609,0.648,610,0.648,611,0.993,612,0.648,613,0.648,614,0.491,615,0.648,616,0.335,617,0.588,618,0.46,619,0.648,620,0.648,621,0.648,622,0.648,623,0.531,624,0.588,625,0.588,626,0.547,627,2.611,628,1.516,629,0.648,630,0.836,631,1.068,632,0.648,633,0.648,634,0.614,635,1.222,636,0.648,637,0.547,638,0.648,639,0.648,640,0.648,641,0.531,642,0.648,643,0.648,644,0.588,645,0.648,646,1.222,647,0.77,648,0.588,649,0.614,650,0.648,651,0.566,652,0.408,653,0.46,654,0.421,655,0.648,656,1.222,657,0.648,658,1.222,659,0.566,660,0.648,661,0.648,662,1.222,663,0.648,664,2.195,665,0.48,666,0.46,667,0.491,668,0.648,669,1.159,670,0.648,671,0.648,672,0.648,673,0.48,674,0.38,675,0.648,676,0.648]],["component/103",[8,0.304]],["title/104",[405,31.51,677,45.311]],["name/104",[405,2.207]],["text/104",[1,3.466,11,3.425,25,3.692,94,5.04,119,3.31,131,5.24,136,5.081,137,5.42,140,4.168,141,3.31,142,4.814,143,4.031,144,4.168,145,3.743,211,3.386,294,4.594,295,3.139,405,3.644,677,5.24,678,4.941,679,5.24,680,6.203,681,6.203]],["component/104",[8,0.304]],["title/105",[8,5.613,47,13.017,334,30.627]],["name/105",[47,0.693,334,1.631]],["text/105",[8,0.162,13,0.579,14,1.624,15,0.639,26,1.913,77,0.652,122,1.701,153,1.678,158,2.298,162,3.833,174,1.047,180,0.743,186,1.077,188,1.781,191,1.298,194,1.047,204,0.672,231,1.148,293,1.946,331,1.121,353,1.148,363,1.414,375,1.047,377,1.604,378,2.471,380,0.709,381,0.658,416,0.665,458,0.772,472,1.548,481,0.665,482,0.61,492,1.02,497,4.65,520,4.684,594,1.02,607,0.828,618,0.933,641,1.077,682,1.314,683,1.314,684,1.193,685,8.532,686,1.148,687,1.148,688,1.404,689,3.171,690,0.734,691,0.726,692,1.979,693,1.314,694,2.683,695,2.597,696,1.404,697,1.404,698,1.314,699,1.314,700,1.818,701,1.077,702,1.02,703,1.314,704,1.314,705,3.171,706,2.999,707,1.404,708,1.314]],["component/105",[8,0.304]],["title/106",[65,39.327]],["name/106",[9,1.827]],["text/106",[4,4.984,65,5.132,107,4.888,120,4.56,165,3.746,281,4.799,374,4.489,559,5.086,709,7.016,710,7.016,711,7.016]],["component/106",[8,0.304]],["title/107-1",[8,4.315,44,20.583,47,10.007,371,22.076,611,20.063]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107-2",[8,5.613,13,20.074,90,28.292]],["name/107-2",[]],["text/107-2",[]],["component/107-2",[]],["title/107-3",[8,5.613,90,28.292,618,32.374]],["name/107-3",[]],["text/107-3",[]],["component/107-3",[]],["title/107-4",[8,5.613,77,22.605,90,28.292]],["name/107-4",[]],["text/107-4",[]],["component/107-4",[]],["title/107",[8,6.606,47,15.32]],["name/107",[47,0.693,132,0.928]],["text/107",[8,1.052,13,3.007,14,1.542,15,2.668,17,2.202,21,1.603,26,1.668,29,1.692,30,1.178,37,1.527,45,1.716,47,2.331,56,1.115,57,2.202,58,1.371,62,1.239,63,1.716,66,1.319,77,2.72,81,1.891,89,1.399,94,1.769,95,3.011,96,2.095,97,1.459,115,1.827,119,2.349,122,1.25,130,3.18,132,2.78,140,1.858,146,1.926,153,1.732,157,1.742,166,1.646,179,1.716,183,2.656,188,0.867,219,2.263,229,2.048,234,1.25,245,1.624,258,1.178,293,1.218,295,1.399,331,0.977,334,1.858,350,1.307,354,2.048,373,1.964,374,1.769,377,2.228,378,1.567,387,2.51,389,1.858,397,1.742,398,1.769,402,2.095,447,1.624,466,1.624,489,1.716,542,2.416,547,2.202,554,2.416,559,2.004,574,3.335,583,2.095,585,2.202,618,1.964,654,1.797,690,1.545,691,1.527,712,2.004,713,2.765,714,2.765,715,2.765,716,2.765,717,2.765,718,2.765,719,2.765,720,2.048,721,2.416,722,2.416,723,3.067,724,2.416,725,2.416,726,3.847,727,2.146,728,2.416]],["component/107",[8,0.304]],["title/108-1",[331,18.962,729,39.726]],["name/108-1",[]],["text/108-1",[]],["component/108-1",[]],["title/108-2",[43,31.931,424,35.439]],["name/108-2",[]],["text/108-2",[]],["component/108-2",[]],["title/108-3",[8,5.613,479,21.549,730,34.527]],["name/108-3",[]],["text/108-3",[]],["component/108-3",[]],["title/108-4",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/108-4",[]],["text/108-4",[]],["component/108-4",[]],["title/108",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/108",[47,0.693,331,0.858]],["text/108",[8,0.878,11,1.668,36,2.157,43,1.798,47,1.348,51,3.118,56,1.664,66,1.441,97,1.594,132,2.724,162,1.753,188,0.947,197,2.576,210,1.544,211,1.648,221,1.995,225,1.774,226,1.63,227,1.402,228,1.708,234,3.221,237,2.189,238,1.612,262,2.296,267,1.498,268,1.729,277,1.708,331,2.519,350,1.428,355,1.963,378,2.068,379,1.155,385,2.03,396,1.963,418,2.145,424,3.118,436,2.03,437,3.105,459,2.145,463,2.145,472,1.995,477,2.189,479,2.231,480,3.421,481,2.388,482,3.308,550,2.104,553,2.104,590,2.03,611,1.729,647,1.903,653,2.145,674,2.772,731,1.995,732,1.798,733,1.63,734,2.344,735,3.495,736,2.344,737,2.474,738,2.288,739,2.288,740,2.189,741,1.648,742,2.344,743,5.097,744,2.344,745,3.663,746,2.344,747,2.104,748,3.663,749,3.663,750,2.344,751,2.344,752,2.189,753,2.344,754,1.903]],["component/108",[8,0.304]],["title/109",[105,41.695]],["name/109",[9,1.827]],["text/109",[36,2.487,105,5.288,106,4.96,107,4.666,108,5.852,109,4.581,110,5.334,111,5.486,112,4.353,113,5.852,114,4.666,115,4.424,116,5.852,165,3.64,755,6.697]],["component/109",[8,0.304]],["title/110",[77,26.606,381,26.872]],["name/110",[381,1.882]],["text/110",[8,0.522,25,2.523,30,3.316,56,1.804,58,2.102,71,3.21,77,2.102,90,2.631,130,3.529,153,1.338,180,3.442,211,2.313,212,2.848,275,3.894,294,3.138,350,2.004,379,1.62,381,2.123,540,6.245,588,2.953,666,3.01,772,4.529,773,4.238,774,3.848,775,3.138,776,3.703,777,7.041,778,4.238,779,6.086,780,3.703,781,4.529,782,4.323,783,4.529,784,4.507,785,5.672,786,4.529,787,4.238,788,4.529,789,4.529,790,4.529,791,4.021,792,3.848,793,4.529,794,4.529,795,4.529]],["component/110",[8,0.304]],["title/111-1",[4,38.103,756,57.322]],["name/111-1",[]],["text/111-1",[]],["component/111-1",[]],["title/111-2",[78,21.616,423,40.637]],["name/111-2",[]],["text/111-2",[]],["component/111-2",[]],["title/111",[0,48.267]],["name/111",[9,1.827]],["text/111",[1,2.281,8,0.904,13,1.108,14,1.316,15,2.881,21,1.459,28,1.562,30,1.739,33,2.844,37,1.39,39,2.062,47,0.719,49,1.519,56,1.86,62,1.128,66,1.201,76,1.636,77,3.458,78,1.645,84,1.721,95,1.721,97,1.328,115,2.697,119,2.178,129,2.062,130,1.459,132,1.968,146,1.753,153,2.318,165,1.108,173,1.441,179,1.562,180,2.308,183,2.463,185,1.108,188,1.615,190,1.824,212,1.691,214,2.743,219,1.684,225,1.478,229,1.864,234,1.137,245,1.478,258,2.774,262,1.224,266,1.61,295,1.274,315,1.663,331,2.094,333,2.228,340,1.788,350,3.078,386,3.023,388,1.586,389,1.691,397,1.586,398,2.611,399,1.721,402,1.906,419,1.562,425,1.721,426,2.285,431,1.824,448,1.691,476,1.61,547,2.004,574,3.901,583,1.906,585,2.004,614,1.906,630,1.721,659,2.199,712,1.824,721,2.199,722,2.199,723,4.127,724,2.199,725,2.199,726,3.567,727,1.953,728,2.199,733,1.358,757,2.517,758,2.062,759,4.082,760,2.517,761,2.004,762,2.388,763,2.199,764,2.517,765,2.388,766,2.689,767,2.689,768,2.199,769,2.689,770,2.517,771,1.953]],["component/111",[8,0.304]],["title/112-1",[56,11.545,165,20.074,258,19.416]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[56,11.545,173,26.096,258,19.416]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[56,11.545,258,19.416,630,31.174]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112",[62,24.035,77,26.606]],["name/112",[62,1.683]],["text/112",[2,2.91,8,0.398,13,0.837,14,1.75,15,3.453,25,1.131,36,0.705,47,0.542,48,2.09,49,1.146,56,2.194,62,1.447,67,1.323,73,2.739,76,1.234,77,0.942,81,1.299,92,1.784,94,3.181,112,1.234,122,1.582,132,0.726,153,1.76,159,2.1,165,0.837,173,1.85,175,3.878,183,1.146,185,0.837,188,2.306,189,1.513,191,0.777,192,3.75,195,1.724,201,3.798,206,1.162,219,1.739,234,1.905,238,1.014,245,1.898,255,2.005,258,3.308,262,1.571,267,0.942,269,1.074,277,1.074,293,2.455,315,1.255,327,1.556,331,0.671,333,2.301,348,1.474,353,1.66,363,1.146,368,3.71,379,1.901,380,1.743,381,1.618,388,3.133,390,1.439,391,2.447,398,2.067,419,1.179,446,1.407,489,1.179,511,1.377,518,1.255,520,1.037,611,1.088,630,1.299,652,2.035,665,2.392,694,2.937,702,1.474,741,1.037,771,4.705,796,1.556,797,1.439,798,2.03,799,2.251,800,2.03,801,2.03,802,1.66,803,1.66,804,1.802,805,2.392,806,2.03,807,1.802,808,1.802,809,1.66,810,1.604,811,1.802]],["component/112",[8,0.304]],["title/113-1",[812,50.583]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[813,69.648]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[153,16.935,647,33.796]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[14,9.21,78,18.366,188,14.297]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[78,21.616,153,16.935]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[14,9.21,188,14.297,192,26.428]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113",[14,6.347,56,7.956,153,9.916,165,13.834,188,9.853,258,13.38]],["name/113",[814,4.014]],["text/113",[11,1.349,14,1.664,23,3.938,26,3.045,33,2.776,36,1.48,56,1.009,66,1.166,70,4.409,78,1.606,112,1.588,132,2.225,141,2.126,153,2.47,162,1.48,165,1.076,173,1.399,183,1.474,185,1.076,188,2.583,190,1.771,191,1.631,201,3.007,204,1.249,206,4.628,214,1.642,234,1.104,244,2.135,255,2.474,258,1.041,262,1.188,267,1.212,269,1.382,295,2.553,335,1.896,363,2.404,388,2.511,392,1.642,416,2.017,419,1.517,431,1.771,463,1.736,468,2.951,475,1.896,557,3.658,611,1.399,616,2.059,630,1.671,690,1.365,694,4.055,712,1.771,733,1.319,735,3.737,741,1.334,797,1.851,815,6.024,816,2.611,817,1.851,818,4.311,819,3.264,820,2.135,821,2.135,822,2.135,823,2.611,824,3.482,825,5.392,826,5.046,827,4.581,828,6.22,829,1.851,830,2.444,831,2.318,832,2.611,833,2.611,834,2.611,835,2.611,836,2.444]],["component/113",[8,0.304]],["title/114-1",[812,50.583]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114-2",[331,23.038]],["name/114-2",[]],["text/114-2",[]],["component/114-2",[]],["title/114-3",[78,26.264]],["name/114-3",[]],["text/114-3",[]],["component/114-3",[]],["title/114-4",[153,16.935,210,27.426]],["name/114-4",[]],["text/114-4",[]],["component/114-4",[]],["title/114-5",[56,16.509]],["name/114-5",[]],["text/114-5",[]],["component/114-5",[]],["title/114",[14,5.751,15,13.843,56,7.209,173,16.296,188,8.928,258,12.124,771,22.088]],["name/114",[837,4.014]],["text/114",[11,2.206,12,1.74,14,1.738,15,2.837,30,1.294,36,1.484,47,1.141,48,0.877,56,1.81,62,2.613,76,1.149,78,1.61,90,1.098,94,1.131,109,1.209,112,1.975,122,1.346,153,2.256,165,1.338,173,1.012,185,1.338,188,2.161,190,2.203,191,1.941,192,1.025,196,2.007,198,1.34,201,2.759,204,2.425,206,2.445,208,1.025,214,1.188,219,0.729,227,0.821,234,0.799,238,0.944,255,2.48,258,2.275,262,0.86,269,1.718,293,1.76,295,1.538,303,1.859,331,1.412,333,0.965,346,1.408,368,4.214,378,0.629,379,2.229,380,1.64,388,2.517,390,1.34,391,1.34,431,1.282,438,1.494,446,1.309,468,3.512,472,4.124,478,1.494,504,1.188,511,1.282,518,2.007,555,2.567,557,1.282,588,1.232,630,1.209,652,1.114,665,1.309,690,1.698,694,4.349,700,1.372,701,2.489,702,1.372,712,1.282,732,1.053,733,0.954,771,3.68,775,1.309,796,1.448,799,2.784,802,1.545,803,1.545,805,2.25,812,2.358,815,2.42,818,2.25,819,2.489,820,1.545,821,1.545,822,1.545,824,1.545,838,1.494,839,1.889,840,1.678,841,1.889,842,2.883,843,1.678,844,1.889,845,1.605,846,4.319,847,1.889,848,1.605,849,2.759,850,1.448,851,3.791,852,1.889,853,1.889,854,1.605,855,1.545,856,1.494]],["component/114",[8,0.304]],["title/115-1",[812,50.583]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[331,23.038]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[78,26.264]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115-4",[153,16.935,210,27.426]],["name/115-4",[]],["text/115-4",[]],["component/115-4",[]],["title/115-5",[56,16.509]],["name/115-5",[]],["text/115-5",[]],["component/115-5",[]],["title/115",[14,5.751,15,13.843,56,7.209,188,8.928,258,12.124,388,17.931,630,19.466]],["name/115",[857,4.014]],["text/115",[2,2.439,8,0.417,11,1.872,12,1.445,14,1.728,15,3.954,19,1.318,30,1.444,36,1.259,47,0.968,48,0.709,56,1.713,58,0.709,62,0.64,73,0.929,76,0.929,78,1.649,90,0.887,92,0.789,109,0.977,112,1.64,122,1.582,123,2.364,153,2.059,159,2.203,165,1.112,173,1.941,175,2.168,184,1.207,185,1.112,188,2.356,190,1.83,191,1.387,192,1.464,198,1.912,199,1.058,201,4.025,204,1.29,206,2.074,208,1.464,210,0.731,213,0.874,214,0.96,220,1.758,227,0.663,234,0.646,238,0.763,255,2.54,258,1.99,262,1.649,269,1.917,293,1.493,295,1.277,303,0.874,331,1.446,368,2.858,378,0.509,379,1.786,380,0.771,381,1.264,382,1.083,388,4.632,391,1.083,396,0.929,431,1.036,446,1.058,452,1.356,468,2.51,472,0.944,478,1.207,511,3.386,515,1.171,518,0.944,520,0.78,555,1.207,557,1.036,559,1.036,588,0.996,589,0.944,625,1.297,652,2.578,665,1.058,690,1.41,694,3.255,700,1.109,701,1.171,712,1.036,732,0.851,733,0.771,771,4.327,775,1.058,799,1.758,802,1.249,803,1.249,805,1.058,807,2.395,808,1.356,809,1.249,810,1.207,812,1.959,815,2.01,818,1.869,819,2.068,820,1.249,821,1.249,822,1.249,824,1.249,838,1.207,842,1.356,843,1.356,845,1.297,846,3.03,848,1.297,849,2.291,850,1.171,851,3.882,855,1.249,856,1.207,858,1.429,859,1.527,860,1.527,861,1.429,862,2.239,863,1.527,864,1.527,865,1.527,866,1.527]],["component/115",[8,0.304]],["title/116-1",[0,48.267]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[78,21.616,423,40.637]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/116-3",[]],["text/116-3",[]],["component/116-3",[]],["title/116-4",[331,18.962,729,39.726]],["name/116-4",[]],["text/116-4",[]],["component/116-4",[]],["title/116-5",[43,31.931,424,35.439]],["name/116-5",[]],["text/116-5",[]],["component/116-5",[]],["title/116-6",[8,5.613,479,21.549,730,34.527]],["name/116-6",[]],["text/116-6",[]],["component/116-6",[]],["title/116-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/116-7",[]],["text/116-7",[]],["component/116-7",[]],["title/116",[7,40.637,447,31.51]],["name/116",[9,1.827]],["text/116",[8,0.879,11,1.465,13,1.168,14,1.234,36,1.981,43,1.579,47,1.91,51,2.814,56,1.547,57,2.113,66,1.266,97,1.4,122,1.209,130,1.538,132,2.869,153,0.837,157,1.671,162,1.581,188,1.336,197,2.324,210,1.356,211,1.448,221,1.753,225,1.558,226,1.431,227,1.231,228,1.5,234,3.023,237,1.923,238,1.416,262,2.071,267,1.316,268,1.519,277,1.5,293,1.168,331,2.364,350,1.254,355,1.724,377,2.155,378,2.174,379,1.014,385,1.783,396,1.724,418,1.884,424,2.814,436,1.783,437,2.888,447,1.558,459,1.884,463,1.884,472,1.753,477,1.923,479,2.014,480,3.087,481,2.155,482,3.105,550,1.848,553,1.848,590,1.783,611,1.519,618,1.884,647,1.671,653,1.884,654,1.724,674,2.502,690,1.482,691,1.465,731,1.753,732,1.579,733,1.431,734,2.059,735,3.154,736,2.059,737,2.173,738,2.01,739,2.01,740,1.923,741,1.448,742,2.059,743,4.74,744,2.059,745,3.305,746,2.059,747,1.848,748,3.305,749,3.305,750,2.059,751,2.059,752,1.923,753,2.059,754,1.671]],["component/116",[8,0.304]],["title/117",[126,36.69,447,31.51]],["name/117",[9,1.827]],["text/117",[405,4.809]],["component/117",[8,0.304]],["title/118-1",[867,46.875,868,50.896]],["name/118-1",[]],["text/118-1",[]],["component/118-1",[]],["title/118",[706,39.881]],["name/118",[706,2.299]],["text/118",[2,1.325,8,0.313,10,1.285,14,1.551,16,1.84,30,2.206,36,0.943,39,2.079,45,1.576,48,2.569,49,1.532,56,1.508,58,2.039,71,1.923,92,2.269,100,3.215,122,1.167,143,2.671,144,1.706,166,1.511,168,2.144,185,1.118,197,2.827,200,3.367,201,3.616,211,1.385,219,1.047,223,4.741,228,1.436,234,1.147,238,1.355,262,2.519,264,4.62,275,1.624,290,1.97,293,2.281,298,1.923,308,2.079,318,1.84,319,3.367,333,1.385,355,2.671,386,3.044,390,1.923,407,2.144,422,2.079,495,3.044,500,1.97,520,1.385,571,3.732,598,2.305,611,1.453,644,2.305,653,1.803,654,1.65,692,2.144,706,2.515,758,2.079,768,3.592,775,1.88,817,1.923,867,4.526,868,5.648,869,4.11,870,2.712,871,2.538,872,4.914,873,4.392,874,2.712,875,2.712,876,2.712,877,2.712,878,4.392,879,2.712,880,2.712,881,4.645,882,1.97,883,2.218,884,2.712,885,2.712,886,2.712,887,2.305,888,2.712,889,2.079,890,2.712,891,2.408,892,2.712,893,2.712,894,2.712,895,2.712,896,2.712,897,2.305,898,2.305,899,3.472,900,2.712,901,2.538,902,2.712,903,2.712,904,2.712,905,2.712]],["component/118",[8,0.304]],["title/119",[447,38.285]],["name/119",[9,1.827]],["text/119",[405,4.809]],["component/119",[8,0.304]],["title/120-1",[605,40.637,906,50.896]],["name/120-1",[]],["text/120-1",[]],["component/120-1",[]],["title/120-2",[28,33.299,907,50.896]],["name/120-2",[]],["text/120-2",[]],["component/120-2",[]],["title/120-3",[122,11.246,380,21.38,706,24.243,805,29.341]],["name/120-3",[]],["text/120-3",[]],["component/120-3",[]],["title/120-4",[185,20.074,881,32.374,908,41.379]],["name/120-4",[]],["text/120-4",[]],["component/120-4",[]],["title/120-5",[100,28.292,881,32.374,909,41.379]],["name/120-5",[]],["text/120-5",[]],["component/120-5",[]],["title/120-6",[28,28.292,194,36.302,520,24.876]],["name/120-6",[]],["text/120-6",[]],["component/120-6",[]],["title/120",[706,39.881]],["name/120",[706,2.299]],["text/120",[2,0.932,14,0.893,16,0.705,25,1.472,30,0.761,34,1.022,37,0.537,45,1.108,48,0.885,54,0.737,56,1.361,58,0.885,78,0.392,84,0.666,92,0.537,94,0.623,96,0.737,100,2.744,122,0.507,141,0.519,143,1.991,153,0.307,162,3.619,175,0.623,181,3.949,188,1.387,189,0.775,191,0.731,193,1.352,194,2.848,197,0.531,199,0.721,201,2.775,202,0.755,203,1.221,204,0.913,207,0.666,210,0.498,219,1.264,225,0.572,228,0.55,234,1.385,238,0.519,246,0.883,257,1.462,258,0.415,262,0.473,268,0.557,270,0.705,275,1.96,277,2.276,281,3.674,290,0.755,293,1.575,319,0.797,326,1.621,331,0.344,333,0.531,349,0.85,354,1.832,355,0.632,365,1.268,368,0.595,371,3.206,377,0.492,378,0.346,379,1.171,380,0.525,391,0.737,398,0.623,399,1.692,407,0.822,416,0.903,419,0.604,430,0.755,448,0.654,459,2.54,462,4.528,489,0.604,492,0.755,495,1.832,516,0.973,520,0.974,550,0.678,589,2.659,652,0.613,674,0.572,706,1.092,723,1.244,747,0.678,754,0.613,763,0.85,768,0.85,774,0.883,784,1.322,797,0.737,805,0.721,809,0.85,817,1.352,829,1.352,872,0.923,881,3.816,882,0.755,891,0.923,898,2.782,899,0.822,906,1.694,907,1.694,908,0.883,909,0.883,910,1.462,911,1.04,912,6.32,913,1.04,914,3.274,915,1.04,916,1.908,917,1.04,918,1.04,919,1.04,920,1.04,921,0.923,922,1.04,923,1.04,924,1.04,925,1.04,926,3.821,927,1.908,928,1.908,929,1.908,930,1.04,931,1.04,932,1.04,933,1.04,934,1.04,935,1.04,936,1.04,937,1.462,938,4.301,939,2.643,940,1.908,941,3.274,942,3.274,943,1.04,944,1.908,945,2.643,946,2.643,947,1.04,948,1.908,949,1.908,950,1.04,951,1.04,952,2.643,953,1.04,954,3.274,955,1.908,956,1.508,957,2.54,958,1.908,959,1.04,960,1.908,961,1.908,962,1.04,963,1.04,964,1.908,965,1.04,966,2.643,967,0.973,968,0.85,969,1.04,970,1.04,971,2.643,972,1.04,973,1.04,974,1.04,975,1.04,976,1.04,977,1.04,978,4.301,979,1.04,980,1.04,981,1.04,982,2.089,983,1.04,984,1.04,985,1.908,986,1.04,987,1.04,988,1.04,989,1.908,990,1.04,991,1.04,992,1.908,993,1.04,994,1.04,995,1.04,996,1.04,997,1.04,998,1.04,999,1.04]],["component/120",[8,0.304]],["title/121",[14,8.473,122,7.385,188,8.161,196,17.189,208,15.086,293,11.459,476,16.644]],["name/121",[14,0.287,122,0.403,476,0.909,1000,1.519]],["text/121",[14,1.616,56,1.608,66,2.146,122,2.089,130,2.608,162,3.468,165,1.981,185,1.981,188,1.411,196,2.971,204,3.246,208,2.608,226,2.427,253,4.342,277,2.543,295,2.276,377,2.276,379,1.719,416,2.276,417,3.49,476,4.708,589,2.971,616,2.323,691,2.483,754,2.833,784,3.33,912,5.711,1001,6.784,1002,4.805,1003,4.805,1004,4.805,1005,4.805,1006,4.805,1007,4.805,1008,4.805,1009,4.805,1010,4.805,1011,4.083,1012,4.083]],["component/121",[8,0.304]],["title/122",[14,8.006,56,10.036,293,17.45,691,21.877]],["name/122",[14,0.287,293,0.626,596,0.804,691,0.785]],["text/122",[14,1.239,25,1.959,36,1.222,56,1.553,58,1.632,63,2.043,72,2.043,77,1.632,78,1.326,119,1.756,153,1.039,159,2.138,162,3.479,188,1.582,191,1.347,192,1.908,193,2.493,201,2.606,203,2.251,204,1.682,208,1.908,210,1.682,223,3.656,234,2.279,247,2.138,275,5.003,293,2.701,331,1.163,371,2.073,372,3.086,473,2.493,596,1.861,616,1.7,651,2.875,652,2.073,654,3.278,667,2.493,673,3.735,679,2.779,758,4.131,784,2.437,881,4.883,882,2.554,883,5.359,912,4.759,1013,2.621,1014,2.621,1015,2.987,1016,3.29,1017,3.29,1018,3.29,1019,3.29,1020,3.29,1021,3.29,1022,3.29,1023,4.579,1024,3.29,1025,3.29,1026,5.043,1027,3.29,1028,3.29,1029,3.29,1030,3.29,1031,3.29,1032,3.29,1033,3.29]],["component/122",[8,0.304]],["title/123",[14,5.751,21,16.503,56,7.209,122,8.079,191,11.648,378,10.13,379,10.88]],["name/123",[14,0.238,122,0.334,377,0.596,378,0.419,596,0.666]],["text/123",[2,0.757,12,0.83,14,0.693,21,0.841,28,0.9,29,1.565,30,2.217,36,2.336,37,1.412,54,1.099,56,0.869,58,0.719,65,0.875,66,1.22,72,0.9,76,0.943,77,0.719,89,1.735,119,2.206,122,1.697,123,1.294,132,1.311,141,1.364,153,1.888,157,0.914,162,3.691,182,2.094,191,1.403,196,0.958,197,0.792,219,1.055,226,0.783,233,1.125,234,0.655,266,1.636,267,2.051,270,1.051,279,1.718,313,1.051,331,1.84,350,0.686,357,1.188,363,2.069,371,1.611,372,0.887,377,1.294,378,2.239,379,1.99,381,1.281,385,0.974,398,0.928,416,1.294,448,0.974,466,0.852,473,1.937,518,2.731,520,2.841,582,1.188,588,1.01,589,1.689,596,0.82,600,2.265,601,1.267,614,1.099,616,1.772,623,2.094,647,1.611,665,1.074,666,1.03,673,1.074,686,1.267,690,1.916,700,1.125,732,1.522,733,0.783,738,1.937,740,1.051,741,1.396,752,2.486,782,1.816,796,1.188,829,1.099,850,1.188,882,1.125,912,4.362,937,1.188,957,2.436,1013,1.155,1014,1.155,1034,2.557,1035,2.557,1036,2.234,1037,1.45,1038,1.45,1039,1.45,1040,1.45,1041,3.429,1042,2.557,1043,2.557,1044,1.45,1045,1.45,1046,1.45,1047,2.557,1048,2.234,1049,2.094,1050,2.557,1051,1.376,1052,2.557,1053,1.45,1054,1.45,1055,1.45,1056,1.45,1057,1.45,1058,1.45,1059,1.45,1060,2.809,1061,1.45,1062,1.188,1063,1.45,1064,1.45,1065,1.267,1066,1.45,1067,1.45,1068,1.45,1069,1.45,1070,1.45,1071,1.267,1072,1.45,1073,1.267,1074,2.557,1075,1.267,1076,1.267,1077,1.45,1078,1.267,1079,1.45,1080,1.376,1081,1.317,1082,1.45]],["component/123",[8,0.304]],["title/124",[14,8.006,78,15.966,188,12.428,207,27.099]],["name/124",[14,0.362,188,0.562,596,1.014]],["text/124",[10,2.385,14,1.734,36,1.75,41,3.754,58,2.338,72,2.926,77,2.338,78,1.899,92,2.602,119,2.515,141,2.515,162,2.803,185,2.89,188,2.058,227,3.046,247,3.063,264,3.658,272,3.49,372,2.884,430,3.658,447,4.434,476,3.015,538,3.754,596,2.665,673,3.49,674,2.768,733,4.073,889,3.861,1013,3.754,1014,3.754,1083,6.596,1084,4.472,1085,6.561,1086,4.713,1087,5.957,1088,4.713,1089,4.279]],["component/124",[8,0.304]],["title/125-1",[62,29.203]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[227,24.902,616,27.714]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[227,24.902,1090,50.896]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[227,24.902,1091,57.322]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125-5",[227,21.157,600,30.111,1092,48.704]],["name/125-5",[]],["text/125-5",[]],["component/125-5",[]],["title/125-6",[227,21.157,600,30.111,1093,43.243]],["name/125-6",[]],["text/125-6",[]],["component/125-6",[]],["title/125-7",[350,30.815]],["name/125-7",[]],["text/125-7",[]],["component/125-7",[]],["title/125",[14,8.473,122,7.385,191,10.649,206,15.92,269,14.714,378,9.261,910,21.313]],["name/125",[14,0.238,47,0.336,378,0.419,694,0.82,695,0.965]],["text/125",[12,2.951,14,1.568,30,0.711,34,0.955,36,0.619,56,0.968,78,0.672,81,1.141,122,1.294,123,0.844,132,1.105,141,0.89,145,1.006,151,1.264,153,1.913,159,1.084,162,2.987,165,0.735,185,0.735,186,1.366,188,2.011,191,1.183,201,0.862,202,1.295,203,2.615,206,3.154,207,2.615,228,0.943,245,0.98,247,1.084,248,1.295,249,1.514,253,2.615,254,2.301,264,1.295,267,2.261,268,1.654,269,1.634,274,1.235,275,1.067,281,1.141,350,0.789,361,1.329,365,1.185,374,2.916,378,1.361,379,1.105,380,2.46,399,1.141,406,4.139,416,2.307,417,1.295,427,1.084,436,1.121,437,0.789,456,1.235,458,0.98,459,1.185,475,4,479,0.789,481,0.844,482,0.774,600,3.73,607,1.051,608,1.976,611,0.955,616,1.975,641,1.366,654,1.878,674,2.678,684,2.623,690,0.932,694,3.176,695,3.131,723,3.591,741,0.91,782,1.185,815,1.329,829,2.896,910,4.222,956,1.409,957,4.768,1049,1.366,1051,1.583,1062,2.367,1081,1.514,1090,2.742,1093,1.583,1094,3.851,1095,1.782,1096,1.782,1097,2.367,1098,2.441,1099,1.514,1100,4.354,1101,3.088,1102,3.088,1103,1.782,1104,1.782,1105,1.782,1106,1.782,1107,1.668,1108,4.085,1109,1.782,1110,2.441,1111,2.623,1112,1.782,1113,1.782,1121,2.623,1122,1.514,1123,2.623,1124,1.514,1125,3.088,1126,1.782,1127,1.782,1128,1.583,1129,1.583,1130,1.782,1131,1.782,1132,1.409,1133,4.085,1134,3.088,1135,4.085,1136,3.088,1137,1.782,1138,1.782,1139,1.782,1140,1.782,1141,1.782,1142,1.782,1143,1.782,1144,1.782,1145,1.782]],["component/125",[8,0.304]],["title/126",[14,10.691,234,15.837,293,15.433,691,19.348]],["name/126",[14,0.287,47,0.406,293,0.626,691,0.785]],["text/126",[8,0.554,13,1.981,14,1.704,27,4.194,48,2.23,56,1.139,58,2.23,60,3.582,122,1.276,132,1.719,153,1.42,162,2.733,185,2.796,188,1.992,192,2.608,204,2.299,219,1.855,253,4.342,260,3.93,266,2.877,284,3.582,287,3.49,293,3.521,325,3.93,373,3.194,397,2.833,437,2.126,445,3.684,458,2.642,479,2.126,481,2.276,482,2.088,520,2.454,584,3.93,595,3.798,691,3.506,856,3.798,887,4.083,1146,3.022,1147,4.497,1148,3.93,1149,4.497,1150,4.497,1151,4.083,1152,4.497,1153,3.93]],["component/126",[8,0.304]],["title/127-1",[62,29.203]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127",[153,12.508,363,23.907,381,19.848,607,24.962]],["name/127",[47,0.512,381,0.898,607,1.13]],["text/127",[2,0.865,8,0.111,14,0.466,30,0.382,37,0.496,45,1.783,56,0.42,65,3.394,122,0.47,132,0.343,145,0.542,153,0.729,162,3.753,175,0.574,201,0.856,210,1.945,213,0.549,219,0.37,267,0.822,297,0.637,311,2.392,363,1,374,0.574,379,0.633,380,3.258,381,1.156,389,0.603,392,0.603,416,4.062,427,0.583,437,0.424,448,0.603,479,0.424,481,0.454,482,0.417,540,1.255,569,0.735,581,0.68,589,1.095,607,2.396,608,1.133,667,0.68,727,0.696,754,3.544,777,2.288,782,0.637,785,2.288,792,0.815,818,0.665,956,1.95,1036,0.784,1115,0.815,1120,3.213,1146,0.603,1154,0.715,1155,0.897,1156,0.758,1157,0.815,1158,0.897,1159,0.897,1160,0.758,1161,0.897,1162,7.962,1163,6.83,1164,7.962,1165,7.962,1166,7.962,1167,0.897,1168,0.897,1169,5.625,1170,0.897,1171,0.897,1172,0.897,1173,0.851,1174,5.337,1175,0.897,1176,2.308,1177,0.897,1178,1.657,1179,5.337,1180,5.133,1181,1.657,1182,0.897,1183,0.897,1184,1.657,1185,0.897,1186,0.897,1187,0.897,1188,0.897,1189,0.897,1190,0.897,1191,0.897,1192,0.897,1193,0.784,1194,0.897,1195,0.784,1196,0.897,1197,0.897,1198,0.897,1199,0.897,1200,1.657,1201,0.897,1202,0.851,1203,0.897,1204,2.608,1205,0.897,1206,0.897,1207,0.851,1208,0.897,1209,0.897,1210,0.897,1211,0.897,1212,1.657,1213,0.897,1214,0.851,1215,0.897,1216,0.897,1217,0.897,1218,0.897,1219,0.851,1220,0.897,1221,0.897]],["component/127",[8,0.304]],["title/128-1",[62,29.203]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128-2",[227,24.902,616,27.714]],["name/128-2",[]],["text/128-2",[]],["component/128-2",[]],["title/128-3",[227,24.902,1222,45.311]],["name/128-3",[]],["text/128-3",[]],["component/128-3",[]],["title/128-4",[227,24.902,1097,43.942]],["name/128-4",[]],["text/128-4",[]],["component/128-4",[]],["title/128-5",[227,24.902,416,27.146]],["name/128-5",[]],["text/128-5",[]],["component/128-5",[]],["title/128-6",[247,34.864,277,30.337]],["name/128-6",[]],["text/128-6",[]],["component/128-6",[]],["title/128-7",[350,30.815]],["name/128-7",[]],["text/128-7",[]],["component/128-7",[]],["title/128",[14,7.081,122,9.946,191,14.341,378,12.472,379,13.395]],["name/128",[14,0.238,47,0.336,122,0.334,377,0.596,378,0.419]],["text/128",[2,0.622,12,1.229,14,0.835,21,0.691,30,1.963,36,0.797,37,1.185,56,1.271,66,0.569,67,0.83,100,0.74,101,0.883,114,2.495,122,1.833,123,1.086,130,2.397,132,0.456,141,2.678,144,0.801,145,0.719,153,1.798,162,3.031,173,0.682,185,0.525,191,0.879,199,0.883,203,2.003,210,1.497,212,0.801,219,0.492,227,2.139,229,0.883,238,0.636,247,1.903,250,1.041,253,1.468,258,0.508,267,3.305,279,0.801,282,0.883,361,0.949,363,1.295,365,2.544,371,1.352,374,1.373,377,1.086,378,1.042,379,2.897,380,1.932,381,3.235,382,0.903,389,0.801,390,1.626,399,1.468,402,0.903,416,2.882,425,1.468,427,0.775,436,0.801,437,0.563,456,2.169,458,0.7,475,0.925,479,0.563,481,0.603,482,0.553,485,0.949,486,0.976,518,0.787,520,1.598,543,0.976,569,1.758,576,1.007,594,0.925,600,1.935,607,3.162,608,3.895,616,3.709,637,1.007,674,3.159,678,0.949,687,1.041,690,2.001,706,1.313,731,0.787,754,1.352,761,0.949,782,2.544,797,0.903,817,2.219,889,0.976,899,1.007,921,1.131,957,3.82,968,1.041,982,1.007,1011,1.082,1012,1.082,1049,4.665,1060,0.976,1062,1.758,1065,1.876,1071,2.559,1073,1.041,1075,1.041,1076,1.876,1078,1.876,1094,2.474,1097,0.976,1098,1.007,1099,1.082,1110,3.025,1111,3.251,1121,1.949,1122,1.082,1123,1.949,1124,1.082,1146,0.801,1148,1.041,1154,0.949,1222,1.813,1223,1.082,1224,2.147,1225,2.147,1226,1.192,1227,2.147,1228,2.147,1229,2.147,1230,2.147,1231,1.192,1232,1.192,1233,1.192,1234,1.192,1235,2.147,1236,2.147,1237,1.274,1238,1.082,1239,1.274,1240,1.082,1241,2.147,1242,1.192,1243,1.192,1244,1.192,1245,1.192,1246,1.192,1247,1.192,1248,1.192,1249,1.192,1250,1.192,1251,0.976,1252,2.147,1253,1.192,1254,1.192,1255,1.192,1256,1.192,1257,1.192,1258,1.192,1259,1.192,1260,1.192,1261,1.192,1262,1.192,1263,1.192,1264,1.192,1265,1.192,1266,1.274,1267,1.274,1268,1.192,1269,1.192,1270,1.192,1271,1.192,1272,1.192,1273,1.192,1274,1.192,1275,1.192,1276,1.192,1277,1.192]],["component/128",[8,0.304]],["title/129",[14,9.21,122,12.937,379,17.423]],["name/129",[14,0.287,47,0.406,122,0.403,377,0.719]],["text/129",[12,2.677,14,1.791,19,2.441,30,1.992,44,2.746,47,1.335,56,1.184,122,2.633,123,2.366,132,1.787,145,2.821,162,2.791,191,1.914,211,2.552,267,2.319,377,3.803,378,2.322,379,3.27,381,2.342,437,2.211,458,2.746,479,2.211,481,2.366,482,2.17,520,3.561,600,3.089,608,3.198,674,2.746,1100,3.949,1146,3.142,1278,4.676,1279,3.724,1280,4.676]],["component/129",[8,0.304]],["title/130-1",[62,29.203]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130-2",[165,23.626,1281,50.896]],["name/130-2",[]],["text/130-2",[]],["component/130-2",[]],["title/130-3",[1282,69.648]],["name/130-3",[]],["text/130-3",[]],["component/130-3",[]],["title/130",[14,10.84,122,15.227]],["name/130",[14,0.362,47,0.512,122,0.509]],["text/130",[8,0.394,14,1.95,19,1.671,29,1.959,37,4.042,47,1.41,49,1.931,56,1.527,66,2.356,122,2.62,123,1.62,132,1.224,162,2.238,183,1.931,201,3.114,219,3.191,225,1.88,226,1.727,234,3.309,258,1.364,303,1.959,318,2.32,335,4.678,375,3.933,377,1.62,379,2.304,380,2.664,381,1.603,437,1.513,458,1.88,479,1.513,481,1.62,482,1.486,520,1.747,582,2.622,583,2.425,589,4.476,605,2.425,617,2.906,631,2.797,678,2.549,1023,2.906,1146,2.151,1154,2.549,1157,2.906,1281,3.037,1283,3.037,1284,3.42,1285,3.42,1286,3.42,1287,3.42]],["component/130",[8,0.304]],["title/131-1",[169,23.546,213,21.441,281,23.967,288,27.909,408,24.413]],["name/131-1",[]],["text/131-1",[]],["component/131-1",[]],["title/131-2",[14,9.21,153,14.389,188,14.297]],["name/131-2",[]],["text/131-2",[]],["component/131-2",[]],["title/131-3",[10,32.982]],["name/131-3",[]],["text/131-3",[]],["component/131-3",[]],["title/131-4",[122,18.501]],["name/131-4",[]],["text/131-4",[]],["component/131-4",[]],["title/131",[8,3.868,14,9.833,23,17.984,188,9.853,1288,31.41]],["name/131",[14,0.362,47,0.512,188,0.562]],["text/131",[1,1.142,2,1.068,8,0.423,14,1.421,15,0.994,21,2.579,23,1.171,34,1.968,44,1.201,47,0.982,48,1.014,49,1.234,52,1.514,56,0.871,63,1.269,65,1.234,73,1.329,78,0.824,89,3.559,92,1.898,95,1.398,100,2.134,118,1.675,119,1.091,122,0.58,132,1.701,140,1.374,141,1.091,151,1.549,153,1.989,162,1.936,166,1.217,169,1.374,180,1.156,185,1.514,188,1.824,191,0.837,192,1.994,193,1.549,197,1.116,200,2.816,201,2.298,202,1.587,203,2.351,204,2.274,206,1.251,207,2.351,208,1.186,209,1.675,210,1.045,211,1.876,212,3.504,213,2.722,219,0.843,225,1.201,228,1.156,233,1.587,241,1.787,245,1.201,255,2.761,256,1.727,257,1.675,258,0.871,262,0.994,266,1.308,267,2.206,268,2.547,269,2.949,270,1.482,271,3.16,272,3.294,273,1.787,274,1.514,275,1.308,276,3.294,277,1.156,279,1.374,280,1.787,281,3.567,282,1.514,283,1.787,284,1.629,285,1.787,286,1.787,287,1.587,288,1.629,289,3.004,290,1.587,291,1.787,292,1.787,293,1.514,294,1.514,295,1.035,297,1.452,298,2.604,299,1.629,300,1.787,301,1.787,302,2.816,303,1.251,304,4.557,305,1.787,306,3.004,307,1.787,308,1.675,309,3.887,310,1.787,311,1.452,312,2.738,313,1.482,315,1.351,316,1.629,317,1.787,318,1.482,333,1.116,408,1.424,437,0.967,445,1.675,458,1.201,468,1.514,470,1.787,479,0.967,481,1.035,482,0.949,605,2.604,733,1.103,761,1.629,1146,1.374,1153,1.787,1289,2.045,1290,2.045,1291,2.045,1292,2.045,1293,1.482,1294,2.045,1295,2.045]],["component/131",[8,0.304]],["title/132-1",[372,32.824,1296,50.896]],["name/132-1",[]],["text/132-1",[]],["component/132-1",[]],["title/132-2",[9,31.701]],["name/132-2",[]],["text/132-2",[]],["component/132-2",[]],["title/132-3",[36,24.202]],["name/132-3",[]],["text/132-3",[]],["component/132-3",[]],["title/132-4",[1297,69.648]],["name/132-4",[]],["text/132-4",[]],["component/132-4",[]],["title/132",[14,8.006,153,12.508,188,12.428,191,16.216]],["name/132",[14,0.238,47,0.336,153,0.372,188,0.369,191,0.482]],["text/132",[9,1.923,11,3.195,36,2.978,41,3.149,44,2.322,81,2.704,86,3.589,122,1.122,132,1.511,143,2.569,162,2.149,163,5.254,166,4.485,185,1.741,189,3.149,191,1.618,201,2.042,208,2.292,223,4.195,258,1.684,277,2.236,311,4.111,333,2.158,354,2.928,372,5.126,398,2.529,416,2.001,437,1.869,458,2.322,479,1.869,481,2.001,482,1.835,611,2.264,616,2.042,732,3.445,741,2.158,791,3.751,827,3.589,881,2.808,1098,3.339,1110,3.339,1129,3.751,1132,3.339,1296,7.608,1298,4.225,1299,4.225,1300,3.953,1301,4.225,1302,4.225,1303,4.225,1304,3.953,1305,6.184,1306,4.225,1307,6.184]],["component/132",[8,0.304]],["title/133-1",[62,29.203]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133",[702,41.632,1308,57.322]],["name/133",[14,0.287,47,0.406,122,0.403,701,1.164]],["text/133",[10,2.57,14,1.879,25,3.023,56,1.287,122,2.391,132,1.942,159,3.301,162,1.886,188,2.167,191,2.079,192,2.945,198,3.848,219,2.095,368,4.227,378,1.808,379,2.641,380,2.741,382,3.848,448,3.413,481,2.57,515,5.658,518,3.355,652,3.2,702,5.361,712,3.682,840,6.554,867,4.438,982,5.835,1309,5.427]],["component/133",[8,0.304]],["title/134",[105,34.317,447,31.51]],["name/134",[9,1.827]],["text/134",[405,4.809]],["component/134",[8,0.304]],["title/135-1",[0,48.267]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[78,21.616,423,40.637]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[47,11.315,56,10.036,331,14.005,378,14.102]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[331,18.962,729,39.726]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[43,31.931,424,35.439]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135-6",[8,5.613,479,21.549,730,34.527]],["name/135-6",[]],["text/135-6",[]],["component/135-6",[]],["title/135-7",[295,17.732,437,16.567,440,25.949,482,16.266,616,18.103]],["name/135-7",[]],["text/135-7",[]],["component/135-7",[]],["title/135",[7,40.637,720,39.726]],["name/135",[9,1.827]],["text/135",[8,0.982,11,1.556,13,1.968,36,2.062,43,1.677,47,1.586,51,2.952,56,1.601,66,1.345,89,1.426,97,1.487,130,1.634,132,2.804,162,1.659,188,0.884,197,2.439,210,1.441,211,1.538,219,1.162,221,1.862,225,1.655,226,1.521,227,1.308,228,1.594,234,3.115,237,2.043,238,1.504,262,2.174,267,1.398,268,1.613,277,1.594,331,2.436,350,1.332,355,1.831,378,2.25,379,1.077,385,1.894,396,1.831,418,2.002,424,2.952,436,1.894,437,2.988,459,2.002,463,2.002,466,1.655,472,1.862,477,2.043,479,2.113,480,3.239,481,2.262,482,3.199,489,1.749,550,1.963,553,1.963,590,1.894,611,1.613,647,1.775,653,2.002,674,2.625,720,2.087,731,1.862,732,1.677,733,1.521,734,2.187,735,3.31,736,2.187,737,2.308,738,2.135,739,2.135,740,2.043,741,1.538,742,2.187,743,4.906,744,2.187,745,3.468,746,2.187,747,1.963,748,3.468,749,3.468,750,2.187,751,2.187,752,2.043,753,2.187,754,1.775]],["component/135",[8,0.304]],["title/136",[8,5.613,13,20.074,378,16.222]],["name/136",[9,1.827]],["text/136",[8,1.026,13,3.891,47,2.136,56,1.449,89,4.471,97,3.947,127,4.334,133,4.557,191,2.341,269,3.235,378,2.036,425,3.913,466,4.393,489,3.551,500,4.44,776,4.999,1048,4.999,1156,4.832,1310,5.721,1311,5.721,1312,5.721]],["component/136",[8,0.304]],["title/137-1",[379,20.506,596,30.337]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137-2",[89,27.146,1313,45.311]],["name/137-2",[]],["text/137-2",[]],["component/137-2",[]],["title/137",[8,4.315,13,15.433,56,8.876,573,30.62,690,19.579]],["name/137",[13,1.069,596,1.373]],["text/137",[1,1.552,8,0.843,13,3.494,34,1.591,36,1.032,47,1.955,56,1.846,58,1.378,66,1.326,72,1.724,80,2.276,89,4.327,92,1.534,97,1.466,106,2.057,123,2.236,130,3.19,141,1.482,153,2.161,162,2.706,165,1.224,208,1.611,219,1.823,226,2.969,242,2.346,269,2.499,274,3.272,293,1.224,297,1.973,331,1.562,333,1.516,350,1.313,365,1.973,372,1.7,378,1.573,397,1.75,399,3.022,419,1.724,427,2.872,455,4.012,476,1.777,495,2.057,504,1.867,514,2.636,538,2.213,566,2.427,614,2.104,628,2.427,690,4.432,747,3.079,957,3.139,1251,3.62,1313,3.732,1314,2.778,1315,6.27,1316,2.778,1317,2.778,1318,2.778,1319,2.778,1320,2.778,1321,4.419,1322,5.502,1323,4.419,1324,2.778,1325,2.778,1326,2.778,1327,2.778,1328,2.778,1329,2.778,1330,2.778,1331,2.778]],["component/137",[8,0.304]],["title/138",[105,34.317,720,39.726]],["name/138",[9,1.827]],["text/138",[405,4.809]],["component/138",[8,0.304]]],"invertedIndex":[["",{"_index":162,"title":{"11-5":{},"54-8":{},"67-8":{},"68-1":{},"103-5":{}},"name":{},"text":{"1":{},"3":{},"11":{},"13":{},"16":{},"21":{},"24":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"45":{},"47":{},"49":{},"54":{},"56":{},"59":{},"61":{},"63":{},"66":{},"67":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"91":{},"93":{},"95":{},"103":{},"105":{},"108":{},"113":{},"116":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"137":{}},"component":{}}],["0..n",{"_index":1405,"title":{},"name":{},"text":{"69":{}},"component":{}}],["0.088",{"_index":1661,"title":{},"name":{},"text":{"75":{}},"component":{}}],["0.14",{"_index":1564,"title":{},"name":{},"text":{"74":{}},"component":{}}],["0.286",{"_index":1694,"title":{},"name":{},"text":{"75":{}},"component":{}}],["01",{"_index":1685,"title":{},"name":{},"text":{"75":{}},"component":{}}],["07",{"_index":1559,"title":{},"name":{},"text":{"74":{}},"component":{}}],["07t09:18:02.345z",{"_index":1592,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["07t09:18:02.740z",{"_index":1598,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["1",{"_index":165,"title":{"21":{},"64":{},"74":{},"113":{},"20-1":{},"38-2":{},"68-2":{},"112-1":{},"130-2":{}},"name":{"64":{},"74":{},"75":{}},"text":{"1":{},"5":{},"8":{},"11":{},"14":{},"17":{},"18":{},"20":{},"21":{},"22":{},"23":{},"29":{},"33":{},"45":{},"47":{},"51":{},"53":{},"54":{},"57":{},"60":{},"66":{},"67":{},"68":{},"69":{},"71":{},"74":{},"75":{},"91":{},"93":{},"97":{},"100":{},"103":{},"106":{},"109":{},"111":{},"112":{},"113":{},"114":{},"115":{},"121":{},"125":{},"137":{}},"component":{}}],["1.3.2.jar!/logback.xml",{"_index":1621,"title":{},"name":{},"text":{"75":{}},"component":{}}],["101",{"_index":1528,"title":{},"name":{},"text":{"72":{}},"component":{}}],["102",{"_index":1532,"title":{},"name":{},"text":{"72":{}},"component":{}}],["103rd",{"_index":499,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["10:12:38.874",{"_index":1560,"title":{},"name":{},"text":{"74":{}},"component":{}}],["10:12:39.009",{"_index":1563,"title":{},"name":{},"text":{"74":{}},"component":{}}],["10:12:39.131",{"_index":1565,"title":{},"name":{},"text":{"74":{}},"component":{}}],["11",{"_index":426,"title":{},"name":{},"text":{"9":{},"18":{},"74":{},"101":{},"111":{}},"component":{}}],["12",{"_index":1558,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["123",{"_index":461,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["13",{"_index":1701,"title":{},"name":{},"text":{"75":{}},"component":{}}],["13776m",{"_index":1594,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["15",{"_index":1366,"title":{},"name":{},"text":{"64":{}},"component":{}}],["16",{"_index":1684,"title":{},"name":{},"text":{"75":{}},"component":{}}],["186b24edf20c1c4a",{"_index":1593,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["18:33:16,185",{"_index":1609,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,186",{"_index":1613,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,194",{"_index":1622,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,269",{"_index":1624,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,270",{"_index":1629,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,272",{"_index":1630,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,282",{"_index":1634,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16,283",{"_index":1644,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.295",{"_index":1646,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.296",{"_index":1650,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.364",{"_index":1659,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.428",{"_index":1660,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:33:16.518",{"_index":1662,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:48.977",{"_index":1687,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.044",{"_index":1690,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.070",{"_index":1692,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.346",{"_index":1693,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:49.455",{"_index":1695,"title":{},"name":{},"text":{"75":{}},"component":{}}],["18:46:50.806",{"_index":1696,"title":{},"name":{},"text":{"75":{}},"component":{}}],["1a",{"_index":1354,"title":{"74-1":{}},"name":{},"text":{"64":{},"66":{},"74":{}},"component":{}}],["1b",{"_index":1360,"title":{"75-1":{}},"name":{},"text":{"64":{},"66":{},"75":{}},"component":{}}],["1c",{"_index":1603,"title":{"75-2":{}},"name":{},"text":{"75":{}},"component":{}}],["2",{"_index":173,"title":{"22":{},"65":{},"114":{},"20-2":{},"68-3":{},"112-2":{}},"name":{"65":{}},"text":{"1":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"36":{},"47":{},"54":{},"66":{},"68":{},"85":{},"93":{},"103":{},"111":{},"112":{},"113":{},"114":{},"115":{},"128":{}},"component":{}}],["2.0",{"_index":469,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["2.1/org.modelix/model",{"_index":1618,"title":{},"name":{},"text":{"75":{}},"component":{}}],["2.47",{"_index":1577,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2.org.modelix.model.data",{"_index":1282,"title":{"38-3":{},"130-3":{}},"name":{},"text":{},"component":{}}],["2/file",{"_index":1617,"title":{},"name":{},"text":{"75":{}},"component":{}}],["20",{"_index":1568,"title":{},"name":{},"text":{"74":{}},"component":{}}],["2020",{"_index":629,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["2021",{"_index":628,"title":{},"name":{},"text":{"11":{},"45":{},"54":{},"91":{},"103":{},"137":{}},"component":{}}],["2021.2",{"_index":501,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["2021.2.103",{"_index":498,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["2021.2.6",{"_index":431,"title":{},"name":{},"text":{"9":{},"18":{},"21":{},"22":{},"23":{},"61":{},"74":{},"75":{},"101":{},"111":{},"113":{},"114":{},"115":{}},"component":{}}],["2022",{"_index":1557,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2023",{"_index":510,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"75":{},"102":{},"103":{}},"component":{}}],["2023.r1",{"_index":513,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["211.31",{"_index":1586,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["23.1",{"_index":529,"title":{"11-2":{},"11-3":{},"11-4":{},"11-5":{},"11-6":{},"54-5":{},"54-6":{},"54-7":{},"54-8":{},"54-9":{},"103-2":{},"103-3":{},"103-4":{},"103-5":{},"103-6":{}},"name":{},"text":{"11":{},"47":{},"54":{},"103":{}},"component":{}}],["23.1.0",{"_index":1320,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["23.2",{"_index":531,"title":{"11-7":{},"11-8":{},"54-10":{},"54-11":{},"103-7":{},"103-8":{}},"name":{},"text":{"11":{},"93":{},"103":{}},"component":{}}],["24.1",{"_index":533,"title":{"11-9":{},"54-12":{},"103-9":{}},"name":{},"text":{},"component":{}}],["24.2",{"_index":535,"title":{"11-10":{},"54-13":{},"103-10":{}},"name":{},"text":{},"component":{}}],["25",{"_index":1686,"title":{},"name":{},"text":{"75":{}},"component":{}}],["26m",{"_index":1700,"title":{},"name":{},"text":{"75":{}},"component":{}}],["28101",{"_index":1654,"title":{},"name":{},"text":{"75":{}},"component":{}}],["28101:28101",{"_index":1473,"title":{},"name":{},"text":{"70":{}},"component":{}}],["29",{"_index":1601,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["2a",{"_index":1604,"title":{"75":{}},"name":{},"text":{},"component":{}}],["2g",{"_index":1123,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["2gb",{"_index":1124,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["2m",{"_index":1567,"title":{},"name":{},"text":{"74":{}},"component":{}}],["2x.1",{"_index":621,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["2x.2",{"_index":622,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["3",{"_index":630,"title":{"23":{},"115":{},"20-3":{},"68-4":{},"112-3":{}},"name":{},"text":{"11":{},"18":{},"20":{},"21":{},"22":{},"54":{},"103":{},"111":{},"112":{},"113":{},"114":{}},"component":{}}],["3.08",{"_index":1591,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["318.03",{"_index":1581,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["32178700288",{"_index":1649,"title":{},"name":{},"text":{"75":{}},"component":{}}],["32232121",{"_index":1516,"title":{},"name":{},"text":{"72":{}},"component":{}}],["324m",{"_index":1599,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["4",{"_index":830,"title":{},"name":{},"text":{"21":{},"75":{},"113":{}},"component":{}}],["40a6",{"_index":1512,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["42",{"_index":1530,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["420",{"_index":1519,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["44bc",{"_index":1427,"title":{},"name":{},"text":{"69":{}},"component":{}}],["4653",{"_index":1426,"title":{},"name":{},"text":{"69":{}},"component":{}}],["46f2",{"_index":1165,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["48305",{"_index":1299,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["4g",{"_index":1141,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["5",{"_index":831,"title":{},"name":{},"text":{"21":{},"74":{},"75":{},"113":{}},"component":{}}],["5005",{"_index":1669,"title":{},"name":{},"text":{"75":{}},"component":{}}],["5a6581bcd381%28university.schedule.structure%29%2f4128798754188010580",{"_index":1429,"title":{},"name":{},"text":{"69":{}},"component":{}}],["6",{"_index":832,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["6.53",{"_index":1590,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["69",{"_index":1536,"title":{},"name":{},"text":{"72":{}},"component":{}}],["7",{"_index":835,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["73",{"_index":1658,"title":{},"name":{},"text":{"75":{}},"component":{}}],["7s",{"_index":1665,"title":{},"name":{},"text":{"75":{}},"component":{}}],["8",{"_index":836,"title":{},"name":{},"text":{"21":{},"72":{},"113":{}},"component":{}}],["8090",{"_index":1397,"title":{},"name":{},"text":{"68":{}},"component":{}}],["85",{"_index":1664,"title":{},"name":{},"text":{"75":{}},"component":{}}],["86.71",{"_index":1588,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["8d4c",{"_index":1164,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca",{"_index":1167,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449",{"_index":1203,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048450",{"_index":1205,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048452",{"_index":1208,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048449/1648392019017048454",{"_index":1206,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048457",{"_index":1210,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048457/1648392019017048458",{"_index":1211,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460",{"_index":1213,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460/1648392019017048461",{"_index":1217,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048460/1648392019017048466",{"_index":1215,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048463",{"_index":1218,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/1648392019017048463/1648392019017048464",{"_index":1220,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560",{"_index":1170,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188010563",{"_index":1171,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188010565",{"_index":1172,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188058355",{"_index":1175,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010560/4128798754188058364",{"_index":1177,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010568",{"_index":1182,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010568/4128798754188010578",{"_index":1183,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010569",{"_index":1185,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570",{"_index":1187,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570/4128798754188010571",{"_index":1189,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010570/4128798754188010573",{"_index":1190,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580",{"_index":1191,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580/4128798754188010583",{"_index":1192,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010580/4128798754188010585",{"_index":1194,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010588",{"_index":1196,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188010588/4128798754188010589",{"_index":1197,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188057192",{"_index":1198,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188057192/4128798754188057193",{"_index":1199,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8d89155f7fca/4128798754188059567",{"_index":1201,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["8s",{"_index":1672,"title":{},"name":{},"text":{"75":{}},"component":{}}],["91",{"_index":1566,"title":{},"name":{},"text":{"74":{}},"component":{}}],["94",{"_index":1699,"title":{},"name":{},"text":{"75":{}},"component":{}}],["95",{"_index":1600,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["96533389",{"_index":1163,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["9d7cd01febe2%2528university.schedule.sandbox%2529%252f4128798754188058349",{"_index":1522,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f1305729863392535677",{"_index":1531,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058347",{"_index":1514,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058349",{"_index":1517,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188058353",{"_index":1526,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2%28university.schedule.sandbox%29%2f4128798754188060854",{"_index":1533,"title":{},"name":{},"text":{"72":{}},"component":{}}],["9d7cd01febe2(unused)/4128798754188058347",{"_index":1545,"title":{},"name":{},"text":{"73":{}},"component":{}}],["9d7cd01febe2(unused)/4128798754188058349",{"_index":1547,"title":{},"name":{},"text":{"73":{}},"component":{}}],["9dfe",{"_index":1428,"title":{},"name":{},"text":{"69":{}},"component":{}}],["_",{"_index":1683,"title":{},"name":{},"text":{"75":{}},"component":{}}],["__",{"_index":1678,"title":{},"name":{},"text":{"75":{}},"component":{}}],["___",{"_index":1681,"title":{},"name":{},"text":{"75":{}},"component":{}}],["____",{"_index":1679,"title":{},"name":{},"text":{"75":{}},"component":{}}],["_____",{"_index":1680,"title":{},"name":{},"text":{"75":{}},"component":{}}],["______",{"_index":1682,"title":{},"name":{},"text":{"75":{}},"component":{}}],["_c_typedimpl_",{"_index":1265,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["_c_untypedimpl_",{"_index":1262,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["_n_typedimpl_",{"_index":1260,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["a31d",{"_index":1513,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["abov",{"_index":182,"title":{},"name":{},"text":{"2":{},"6":{},"31":{},"48":{},"81":{},"94":{},"98":{},"123":{}},"component":{}}],["abstract",{"_index":581,"title":{},"name":{},"text":{"11":{},"35":{},"54":{},"67":{},"71":{},"72":{},"73":{},"75":{},"84":{},"103":{},"127":{}},"component":{}}],["accept",{"_index":1506,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["access",{"_index":234,"title":{"34":{},"83":{},"126":{}},"name":{},"text":{"2":{},"11":{},"15":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"30":{},"31":{},"38":{},"43":{},"48":{},"54":{},"58":{},"59":{},"61":{},"64":{},"66":{},"67":{},"68":{},"72":{},"74":{},"75":{},"77":{},"80":{},"81":{},"89":{},"94":{},"103":{},"107":{},"108":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"122":{},"123":{},"130":{},"135":{}},"component":{}}],["accordingli",{"_index":1255,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["account",{"_index":237,"title":{},"name":{},"text":{"2":{},"16":{},"24":{},"43":{},"48":{},"59":{},"61":{},"77":{},"89":{},"94":{},"108":{},"116":{},"135":{}},"component":{}}],["achiev",{"_index":761,"title":{},"name":{},"text":{"18":{},"36":{},"39":{},"61":{},"85":{},"87":{},"111":{},"128":{},"131":{}},"component":{}}],["acronym",{"_index":147,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["action",{"_index":475,"title":{},"name":{},"text":{"10":{},"21":{},"33":{},"36":{},"54":{},"85":{},"102":{},"113":{},"125":{},"128":{}},"component":{}}],["ad",{"_index":827,"title":{},"name":{},"text":{"21":{},"40":{},"67":{},"113":{},"132":{}},"component":{}}],["adapt",{"_index":707,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["add",{"_index":141,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"12":{},"21":{},"28":{},"31":{},"32":{},"33":{},"36":{},"39":{},"45":{},"47":{},"48":{},"54":{},"55":{},"71":{},"81":{},"82":{},"85":{},"87":{},"91":{},"93":{},"94":{},"103":{},"104":{},"113":{},"120":{},"123":{},"124":{},"125":{},"128":{},"131":{},"137":{}},"component":{}}],["addit",{"_index":279,"title":{},"name":{},"text":{"2":{},"11":{},"31":{},"36":{},"39":{},"48":{},"54":{},"69":{},"71":{},"81":{},"85":{},"87":{},"94":{},"103":{},"123":{},"128":{},"131":{}},"component":{}}],["addition",{"_index":631,"title":{},"name":{},"text":{"11":{},"38":{},"54":{},"67":{},"103":{},"130":{}},"component":{}}],["address",{"_index":244,"title":{},"name":{},"text":{"2":{},"21":{},"48":{},"75":{},"94":{},"113":{}},"component":{}}],["adjust",{"_index":885,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["admittedli",{"_index":1487,"title":{},"name":{},"text":{"71":{}},"component":{}}],["advanc",{"_index":1147,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["against",{"_index":1000,"title":{},"name":{"29":{},"121":{}},"text":{},"component":{}}],["aggreg",{"_index":133,"title":{},"name":{},"text":{"1":{},"11":{},"44":{},"47":{},"54":{},"90":{},"93":{},"103":{},"136":{}},"component":{}}],["agnost",{"_index":580,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["aim",{"_index":364,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"11":{},"54":{},"98":{},"101":{},"102":{},"103":{}},"component":{}}],["aka",{"_index":772,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["alia",{"_index":1416,"title":{},"name":{},"text":{"69":{}},"component":{}}],["allow",{"_index":228,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"11":{},"16":{},"24":{},"26":{},"28":{},"33":{},"39":{},"43":{},"48":{},"49":{},"54":{},"61":{},"67":{},"77":{},"87":{},"94":{},"95":{},"98":{},"103":{},"108":{},"116":{},"118":{},"120":{},"125":{},"131":{},"135":{}},"component":{}}],["alongsid",{"_index":1335,"title":{},"name":{},"text":{"61":{}},"component":{}}],["alreadi",{"_index":54,"title":{},"name":{},"text":{"1":{},"11":{},"28":{},"31":{},"47":{},"54":{},"81":{},"93":{},"103":{},"120":{},"123":{}},"component":{}}],["altern",{"_index":266,"title":{},"name":{},"text":{"2":{},"9":{},"18":{},"31":{},"34":{},"39":{},"48":{},"68":{},"70":{},"72":{},"73":{},"81":{},"83":{},"87":{},"94":{},"101":{},"111":{},"123":{},"126":{},"131":{}},"component":{}}],["alway",{"_index":400,"title":{},"name":{},"text":{"6":{},"9":{},"98":{},"101":{}},"component":{}}],["amount",{"_index":1096,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["analysi",{"_index":170,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["angular",{"_index":799,"title":{"68":{},"68-2":{},"68-4":{}},"name":{},"text":{"20":{},"22":{},"23":{},"61":{},"63":{},"64":{},"71":{},"74":{},"75":{},"112":{},"114":{},"115":{}},"component":{}}],["angular.io",{"_index":1569,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["angular:build",{"_index":848,"title":{},"name":{},"text":{"22":{},"23":{},"68":{},"114":{},"115":{}},"component":{}}],["angular:npmrun",{"_index":1398,"title":{},"name":{},"text":{"68":{},"74":{},"75":{}},"component":{}}],["annot",{"_index":521,"title":{},"name":{},"text":{"10":{}},"component":{}}],["anoth",{"_index":390,"title":{},"name":{},"text":{"6":{},"20":{},"22":{},"26":{},"36":{},"85":{},"98":{},"112":{},"114":{},"118":{},"128":{}},"component":{}}],["answer",{"_index":85,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["ant",{"_index":429,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["antora",{"_index":128,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["anyth",{"_index":491,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["apach",{"_index":217,"title":{},"name":{},"text":{"2":{},"10":{},"48":{},"54":{},"94":{},"102":{}},"component":{}}],["apart",{"_index":395,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["api",{"_index":122,"title":{"29":{},"31":{},"33":{},"36":{},"37":{},"38":{},"69":{},"72":{},"73":{},"81":{},"85":{},"86":{},"121":{},"123":{},"125":{},"128":{},"129":{},"130":{},"11-3":{},"11-4":{},"28-3":{},"39-4":{},"54-6":{},"54-7":{},"67-3":{},"69-2":{},"87-4":{},"103-3":{},"103-4":{},"120-3":{},"131-4":{}},"name":{"29":{},"31":{},"36":{},"37":{},"38":{},"41":{},"69":{},"72":{},"73":{},"81":{},"85":{},"86":{},"121":{},"123":{},"128":{},"129":{},"130":{},"133":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"13":{},"15":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"48":{},"54":{},"56":{},"58":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"93":{},"94":{},"98":{},"103":{},"105":{},"107":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"component":{}}],["api.modelix.org",{"_index":639,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["app",{"_index":383,"title":{"68-4":{}},"name":{},"text":{"6":{},"63":{},"64":{},"68":{},"71":{},"98":{}},"component":{}}],["append",{"_index":1627,"title":{},"name":{},"text":{"75":{}},"component":{}}],["appli",{"_index":21,"title":{"31":{},"81":{},"123":{}},"name":{},"text":{"1":{},"2":{},"4":{},"15":{},"18":{},"31":{},"36":{},"39":{},"47":{},"48":{},"50":{},"58":{},"61":{},"81":{},"85":{},"87":{},"93":{},"94":{},"96":{},"107":{},"111":{},"123":{},"128":{},"131":{}},"component":{}}],["applic",{"_index":368,"title":{"68":{},"67-6":{},"67-7":{}},"name":{},"text":{"6":{},"11":{},"20":{},"22":{},"23":{},"28":{},"41":{},"54":{},"64":{},"68":{},"70":{},"74":{},"75":{},"98":{},"103":{},"112":{},"114":{},"115":{},"120":{},"133":{}},"component":{}}],["application.conf",{"_index":1500,"title":{},"name":{},"text":{"72":{}},"component":{}}],["application/json",{"_index":1507,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["approach",{"_index":35,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"11":{},"47":{},"48":{},"50":{},"54":{},"71":{},"93":{},"94":{},"96":{},"103":{}},"component":{}}],["architectur",{"_index":179,"title":{"2":{},"48":{},"67":{},"94":{},"2-1":{},"48-1":{},"66-2":{},"67-1":{},"94-1":{}},"name":{"2":{},"48":{},"67":{},"94":{}},"text":{"15":{},"18":{},"58":{},"61":{},"66":{},"67":{},"74":{},"107":{},"111":{}},"component":{}}],["archiv",{"_index":645,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["area",{"_index":546,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["arg",{"_index":1087,"title":{},"name":{},"text":{"32":{},"70":{},"75":{},"82":{},"124":{}},"component":{}}],["arguement",{"_index":1086,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["arraylist",{"_index":1231,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["artifact",{"_index":479,"title":{"16-3":{},"24-6":{},"43-6":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"10":{},"11":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"103":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["ask",{"_index":404,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{},"component":{}}],["aspect",{"_index":389,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"18":{},"35":{},"36":{},"54":{},"58":{},"61":{},"84":{},"85":{},"98":{},"103":{},"107":{},"111":{},"127":{},"128":{}},"component":{}}],["assembl",{"_index":952,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["assign",{"_index":1219,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["assum",{"_index":385,"title":{},"name":{},"text":{"6":{},"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"74":{},"75":{},"77":{},"81":{},"89":{},"98":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["assumpt",{"_index":1316,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["attach",{"_index":1639,"title":{},"name":{},"text":{"75":{}},"component":{}}],["attempt",{"_index":878,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["attribut",{"_index":1222,"title":{"36-3":{},"85-3":{},"128-3":{}},"name":{},"text":{"36":{},"69":{},"85":{},"128":{}},"component":{}}],["authent",{"_index":440,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["author",{"_index":174,"title":{},"name":{},"text":{"1":{},"11":{},"13":{},"47":{},"54":{},"56":{},"93":{},"103":{},"105":{}},"component":{}}],["autom",{"_index":560,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["automat",{"_index":446,"title":{},"name":{},"text":{"9":{},"20":{},"22":{},"23":{},"64":{},"72":{},"74":{},"75":{},"101":{},"112":{},"114":{},"115":{}},"component":{}}],["autoreload",{"_index":1561,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["autumn",{"_index":507,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["avail",{"_index":611,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"11":{},"16":{},"20":{},"21":{},"24":{},"26":{},"33":{},"40":{},"43":{},"54":{},"59":{},"61":{},"67":{},"68":{},"77":{},"89":{},"103":{},"108":{},"112":{},"113":{},"116":{},"118":{},"125":{},"132":{},"135":{}},"component":{}}],["avoid",{"_index":1606,"title":{},"name":{},"text":{"75":{}},"component":{}}],["b",{"_index":649,"title":{},"name":{"75":{}},"text":{"11":{},"54":{},"103":{}},"component":{}}],["b150",{"_index":1166,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["backend",{"_index":388,"title":{"23":{},"115":{}},"name":{},"text":{"6":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"54":{},"66":{},"67":{},"74":{},"75":{},"98":{},"103":{},"111":{},"112":{},"113":{},"114":{},"115":{}},"component":{}}],["backend/build/depend",{"_index":1555,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["backend:build",{"_index":821,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["bad",{"_index":263,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["barrier",{"_index":636,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["base",{"_index":245,"title":{"68":{}},"name":{},"text":{"2":{},"6":{},"10":{},"11":{},"15":{},"18":{},"20":{},"33":{},"39":{},"48":{},"54":{},"58":{},"61":{},"67":{},"71":{},"87":{},"94":{},"98":{},"102":{},"103":{},"107":{},"111":{},"112":{},"125":{},"131":{}},"component":{}}],["baseconcept",{"_index":1414,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.children",{"_index":1451,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.properti",{"_index":1430,"title":{},"name":{},"text":{"69":{}},"component":{}}],["baseconcept.refer",{"_index":1453,"title":{},"name":{},"text":{"69":{}},"component":{}}],["basenameconvers",{"_index":1253,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["basi",{"_index":583,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"38":{},"54":{},"58":{},"61":{},"103":{},"107":{},"111":{},"130":{}},"component":{}}],["basic",{"_index":349,"title":{"6-3":{},"98-3":{}},"name":{},"text":{"6":{},"28":{},"98":{},"120":{}},"component":{}}],["be",{"_index":485,"title":{},"name":{},"text":{"10":{},"11":{},"36":{},"54":{},"64":{},"85":{},"102":{},"103":{},"128":{}},"component":{}}],["becom",{"_index":299,"title":{},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["befor",{"_index":422,"title":{},"name":{},"text":{"9":{},"11":{},"26":{},"72":{},"73":{},"101":{},"103":{},"118":{}},"component":{}}],["begin",{"_index":768,"title":{},"name":{},"text":{"18":{},"26":{},"28":{},"111":{},"118":{},"120":{}},"component":{}}],["behaviour",{"_index":1486,"title":{},"name":{},"text":{"71":{}},"component":{}}],["behind",{"_index":894,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["below",{"_index":550,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"28":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"103":{},"108":{},"116":{},"120":{},"135":{}},"component":{}}],["benefit",{"_index":602,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["between",{"_index":269,"title":{"33":{},"125":{}},"name":{},"text":{"2":{},"10":{},"11":{},"20":{},"21":{},"22":{},"23":{},"33":{},"39":{},"44":{},"45":{},"48":{},"54":{},"87":{},"90":{},"91":{},"94":{},"102":{},"103":{},"112":{},"113":{},"114":{},"115":{},"125":{},"131":{},"136":{},"137":{}},"component":{}}],["big",{"_index":265,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["bind",{"_index":1308,"title":{"41":{},"133":{}},"name":{},"text":{},"component":{}}],["birthday",{"_index":1403,"title":{},"name":{},"text":{"69":{}},"component":{}}],["block",{"_index":365,"title":{},"name":{},"text":{"6":{},"28":{},"33":{},"36":{},"45":{},"74":{},"75":{},"85":{},"91":{},"98":{},"120":{},"125":{},"128":{},"137":{}},"component":{}}],["blog",{"_index":578,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["bodi",{"_index":966,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["boolean",{"_index":1115,"title":{},"name":{},"text":{"33":{},"35":{},"69":{},"84":{},"127":{}},"component":{}}],["boolean.parseboolean(propertyvalu",{"_index":1447,"title":{},"name":{},"text":{"69":{}},"component":{}}],["boolean.tostring(valu",{"_index":1450,"title":{},"name":{},"text":{"69":{}},"component":{}}],["born",{"_index":1209,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["both",{"_index":209,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"64":{},"67":{},"87":{},"94":{},"131":{}},"component":{}}],["bottom",{"_index":69,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["bound",{"_index":591,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["branch",{"_index":417,"title":{"9-10":{},"101-10":{}},"name":{},"text":{"9":{},"11":{},"29":{},"33":{},"101":{},"103":{},"121":{},"125":{}},"component":{}}],["branch.getrootnod",{"_index":1005,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["branch.runwrit",{"_index":1004,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["branchnam",{"_index":1135,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["bridg",{"_index":563,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["bring",{"_index":95,"title":{},"name":{},"text":{"1":{},"6":{},"11":{},"15":{},"18":{},"39":{},"47":{},"58":{},"61":{},"87":{},"93":{},"98":{},"103":{},"107":{},"111":{},"131":{}},"component":{}}],["browser",{"_index":27,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"34":{},"47":{},"48":{},"50":{},"67":{},"68":{},"74":{},"75":{},"83":{},"93":{},"94":{},"96":{},"98":{},"126":{}},"component":{}}],["bug",{"_index":138,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["build",{"_index":331,"title":{"16":{},"59":{},"108":{},"16-1":{},"22-2":{},"23-2":{},"24-3":{},"24-4":{},"43-3":{},"43-4":{},"59-1":{},"61-3":{},"61-4":{},"68-1":{},"68-2":{},"72-1":{},"73-1":{},"77-3":{},"77-4":{},"89-3":{},"89-4":{},"108-1":{},"114-2":{},"115-2":{},"116-3":{},"116-4":{},"135-3":{},"135-4":{}},"name":{"16":{},"59":{},"108":{}},"text":{"3":{},"6":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"20":{},"22":{},"23":{},"24":{},"28":{},"30":{},"31":{},"43":{},"45":{},"49":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"89":{},"91":{},"95":{},"98":{},"102":{},"103":{},"105":{},"107":{},"108":{},"111":{},"112":{},"114":{},"115":{},"116":{},"120":{},"122":{},"123":{},"135":{},"137":{}},"component":{}}],["build.gradle.kt",{"_index":1035,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["builddir.resolve(\"mp",{"_index":1702,"title":{},"name":{},"text":{"81":{}},"component":{}}],["buildfil",{"_index":1146,"title":{},"name":{},"text":{"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"83":{},"84":{},"85":{},"86":{},"87":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{}},"component":{}}],["buildhtmlqueri",{"_index":985,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["buildlocalmap",{"_index":971,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["built",{"_index":127,"title":{},"name":{},"text":{"1":{},"11":{},"44":{},"47":{},"54":{},"74":{},"75":{},"90":{},"93":{},"103":{},"136":{}},"component":{}}],["bulk",{"_index":695,"title":{},"name":{"33":{},"125":{}},"text":{"13":{},"33":{},"66":{},"74":{},"105":{},"125":{}},"component":{}}],["bulk:run",{"_index":1556,"title":{},"name":{},"text":{"74":{}},"component":{}}],["bundl",{"_index":624,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"75":{},"103":{}},"component":{}}],["busi",{"_index":167,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["button",{"_index":68,"title":{},"name":{},"text":{"1":{},"9":{},"47":{},"93":{},"101":{}},"component":{}}],["byte",{"_index":1648,"title":{},"name":{},"text":{"75":{}},"component":{}}],["c",{"_index":1551,"title":{},"name":{},"text":{"73":{}},"component":{}}],["c_",{"_index":1011,"title":{},"name":{},"text":{"29":{},"36":{},"85":{},"121":{},"128":{}},"component":{}}],["c_otherconcept).appli",{"_index":1010,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["c_someconcept.untyped()).typ",{"_index":1008,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["call",{"_index":396,"title":{},"name":{},"text":{"6":{},"16":{},"23":{},"24":{},"43":{},"59":{},"61":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"89":{},"98":{},"108":{},"115":{},"116":{},"135":{}},"component":{}}],["capabl",{"_index":1363,"title":{},"name":{},"text":{"64":{}},"component":{}}],["capac",{"_index":1401,"title":{},"name":{},"text":{"69":{}},"component":{}}],["care",{"_index":240,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["carri",{"_index":509,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["case",{"_index":258,"title":{"21":{},"22":{},"23":{},"64":{},"65":{},"66":{},"74":{},"75":{},"113":{},"114":{},"115":{},"20-1":{},"20-2":{},"20-3":{},"66-2":{},"112-1":{},"112-2":{},"112-3":{}},"name":{},"text":{"2":{},"6":{},"11":{},"15":{},"18":{},"20":{},"21":{},"22":{},"23":{},"28":{},"36":{},"38":{},"39":{},"40":{},"48":{},"54":{},"58":{},"61":{},"64":{},"66":{},"67":{},"68":{},"74":{},"75":{},"85":{},"87":{},"94":{},"98":{},"103":{},"107":{},"111":{},"112":{},"113":{},"114":{},"115":{},"120":{},"128":{},"130":{},"131":{},"132":{}},"component":{}}],["catalog",{"_index":544,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["categori",{"_index":104,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["caus",{"_index":1467,"title":{},"name":{},"text":{"69":{}},"component":{}}],["central",{"_index":135,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"64":{},"93":{},"103":{}},"component":{}}],["centric",{"_index":650,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["ch.qos.logback.classic.encoder.patternlayoutencod",{"_index":1632,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.configurationact",{"_index":1643,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.loggeract",{"_index":1635,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.action.rootloggeract",{"_index":1641,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.joran.joranconfigurator@7ff95560",{"_index":1645,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.classic.loggercontext[default",{"_index":1610,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.consoleappend",{"_index":1628,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.appenderact",{"_index":1625,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.appenderrefact",{"_index":1638,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.action.nestedcomplexpropertyia",{"_index":1631,"title":{},"name":{},"text":{"75":{}},"component":{}}],["ch.qos.logback.core.joran.spi.configurationwatchlist@f4168b8",{"_index":1623,"title":{},"name":{},"text":{"75":{}},"component":{}}],["chain",{"_index":973,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["chang",{"_index":255,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"20":{},"21":{},"22":{},"23":{},"39":{},"48":{},"54":{},"67":{},"74":{},"75":{},"87":{},"94":{},"101":{},"103":{},"112":{},"113":{},"114":{},"115":{},"131":{}},"component":{}}],["changequeri",{"_index":1019,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["channel",{"_index":156,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["check",{"_index":372,"title":{"40-1":{},"132-1":{}},"name":{},"text":{"6":{},"11":{},"30":{},"31":{},"32":{},"40":{},"45":{},"54":{},"68":{},"69":{},"80":{},"81":{},"82":{},"91":{},"98":{},"103":{},"122":{},"123":{},"124":{},"132":{},"137":{}},"component":{}}],["child",{"_index":1409,"title":{},"name":{},"text":{"69":{}},"component":{}}],["children",{"_index":1174,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["choic",{"_index":1338,"title":{},"name":{},"text":{"61":{}},"component":{}}],["choos",{"_index":91,"title":{},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["chosen",{"_index":1376,"title":{},"name":{},"text":{"67":{}},"component":{}}],["chunk",{"_index":1573,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["ci/gradl",{"_index":1465,"title":{},"name":{},"text":{"69":{}},"component":{}}],["cl",{"_index":927,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["clarifi",{"_index":342,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["class",{"_index":589,"title":{},"name":{},"text":{"11":{},"23":{},"28":{},"29":{},"31":{},"35":{},"38":{},"54":{},"69":{},"81":{},"84":{},"103":{},"115":{},"120":{},"121":{},"123":{},"127":{},"130":{}},"component":{}}],["classconcept",{"_index":928,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["classdiagram",{"_index":1404,"title":{},"name":{},"text":{"69":{}},"component":{}}],["classnam",{"_index":935,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["clearli",{"_index":577,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"103":{}},"component":{}}],["click",{"_index":825,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["client",{"_index":293,"title":{"29":{},"30":{},"34":{},"80":{},"83":{},"121":{},"122":{},"126":{}},"name":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"text":{"2":{},"6":{},"13":{},"15":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"30":{},"34":{},"39":{},"45":{},"48":{},"56":{},"58":{},"64":{},"66":{},"67":{},"74":{},"77":{},"80":{},"83":{},"87":{},"91":{},"94":{},"98":{},"105":{},"107":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"122":{},"126":{},"131":{},"137":{}},"component":{}}],["client.changequery(buildmodelqueri",{"_index":1020,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client.getrootnode()!!.queri",{"_index":919,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["client.queri",{"_index":914,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["client.runread",{"_index":1029,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client.waitforrootnod",{"_index":1028,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["client:2.4.0",{"_index":1331,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["clipboard",{"_index":465,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["clone",{"_index":767,"title":{},"name":{},"text":{"18":{},"111":{}},"component":{}}],["cloud",{"_index":23,"title":{"39":{},"87":{},"131":{},"11-8":{},"54-11":{},"103-8":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"11":{},"21":{},"39":{},"47":{},"48":{},"50":{},"54":{},"63":{},"68":{},"75":{},"87":{},"93":{},"94":{},"96":{},"98":{},"103":{},"113":{},"131":{}},"component":{}}],["cls.name",{"_index":936,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["cls.queri",{"_index":930,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["cluster",{"_index":216,"title":{},"name":{},"text":{"2":{},"6":{},"48":{},"94":{},"98":{}},"component":{}}],["cn_",{"_index":1267,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["co",{"_index":676,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["code",{"_index":196,"title":{"29":{},"121":{}},"name":{},"text":{"2":{},"10":{},"11":{},"22":{},"29":{},"31":{},"48":{},"54":{},"61":{},"69":{},"81":{},"94":{},"103":{},"114":{},"121":{},"123":{}},"component":{}}],["collabor",{"_index":169,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"1":{},"2":{},"11":{},"39":{},"47":{},"48":{},"54":{},"66":{},"87":{},"93":{},"94":{},"103":{},"131":{}},"component":{}}],["collect",{"_index":321,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["combin",{"_index":354,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"28":{},"40":{},"54":{},"58":{},"98":{},"103":{},"107":{},"120":{},"132":{}},"component":{}}],["come",{"_index":402,"title":{},"name":{},"text":{"6":{},"15":{},"18":{},"36":{},"58":{},"61":{},"85":{},"98":{},"107":{},"111":{},"128":{}},"component":{}}],["command",{"_index":818,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"35":{},"70":{},"74":{},"75":{},"84":{},"113":{},"114":{},"115":{},"127":{}},"component":{}}],["commit",{"_index":415,"title":{"9-8":{},"101-8":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["common",{"_index":249,"title":{},"name":{},"text":{"2":{},"33":{},"48":{},"94":{},"125":{}},"component":{}}],["commun",{"_index":511,"title":{"73-3":{}},"name":{},"text":{"10":{},"11":{},"20":{},"22":{},"23":{},"54":{},"71":{},"102":{},"103":{},"112":{},"114":{},"115":{}},"component":{}}],["compat",{"_index":500,"title":{},"name":{},"text":{"10":{},"11":{},"26":{},"44":{},"54":{},"90":{},"102":{},"103":{},"118":{},"136":{}},"component":{}}],["compil",{"_index":543,"title":{},"name":{},"text":{"11":{},"36":{},"54":{},"69":{},"74":{},"75":{},"103":{},"128":{}},"component":{}}],["complet",{"_index":115,"title":{},"name":{},"text":{"1":{},"11":{},"15":{},"17":{},"18":{},"47":{},"54":{},"58":{},"60":{},"61":{},"64":{},"74":{},"75":{},"93":{},"103":{},"107":{},"109":{},"111":{}},"component":{}}],["complex",{"_index":909,"title":{"28-5":{},"120-5":{}},"name":{},"text":{"28":{},"74":{},"120":{}},"component":{}}],["complic",{"_index":1607,"title":{},"name":{},"text":{"75":{}},"component":{}}],["compon",{"_index":47,"title":{"13":{},"15":{},"16":{},"56":{},"58":{},"59":{},"67":{},"105":{},"107":{},"108":{},"6-2":{},"6-3":{},"11-2":{},"15-1":{},"24-3":{},"43-3":{},"54-5":{},"58-1":{},"61-3":{},"77-3":{},"89-3":{},"98-2":{},"98-3":{},"103-2":{},"107-1":{},"116-3":{},"135-3":{}},"name":{"13":{},"15":{},"16":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"56":{},"58":{},"59":{},"83":{},"84":{},"85":{},"86":{},"87":{},"105":{},"107":{},"108":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"20":{},"22":{},"23":{},"24":{},"37":{},"38":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"54":{},"58":{},"59":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"70":{},"71":{},"74":{},"75":{},"77":{},"86":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"108":{},"111":{},"112":{},"114":{},"115":{},"116":{},"129":{},"130":{},"131":{},"135":{},"136":{},"137":{}},"component":{}}],["components/tech",{"_index":1343,"title":{},"name":{},"text":{"63":{}},"component":{}}],["compos",{"_index":712,"title":{},"name":{},"text":{"15":{},"18":{},"21":{},"22":{},"23":{},"41":{},"58":{},"107":{},"111":{},"113":{},"114":{},"115":{},"133":{}},"component":{}}],["comput",{"_index":259,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["concepdata",{"_index":1159,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["concept",{"_index":782,"title":{},"name":{},"text":{"19":{},"31":{},"33":{},"35":{},"36":{},"69":{},"81":{},"84":{},"85":{},"110":{},"123":{},"125":{},"127":{},"128":{}},"component":{}}],["conceptpropertiesinterfacenam",{"_index":1239,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["concepttypealia",{"_index":1266,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["conceptu",{"_index":488,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["concurr",{"_index":285,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["configur",{"_index":227,"title":{"33-2":{},"33-3":{},"33-4":{},"33-5":{},"33-6":{},"36-2":{},"36-3":{},"36-4":{},"36-5":{},"85-2":{},"85-3":{},"85-4":{},"85-5":{},"125-2":{},"125-3":{},"125-4":{},"125-5":{},"125-6":{},"128-2":{},"128-3":{},"128-4":{},"128-5":{}},"name":{},"text":{"2":{},"9":{},"16":{},"22":{},"23":{},"24":{},"32":{},"36":{},"43":{},"48":{},"59":{},"61":{},"75":{},"77":{},"82":{},"85":{},"89":{},"94":{},"101":{},"108":{},"114":{},"115":{},"116":{},"124":{},"128":{},"135":{}},"component":{}}],["configurations.cr",{"_index":1052,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["conflict",{"_index":284,"title":{},"name":{},"text":{"2":{},"34":{},"39":{},"48":{},"83":{},"87":{},"94":{},"126":{},"131":{}},"component":{}}],["conform",{"_index":1388,"title":{},"name":{},"text":{"67":{},"68":{},"72":{},"73":{}},"component":{}}],["confus",{"_index":572,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["connect",{"_index":192,"title":{"21-6":{},"113-6":{}},"name":{},"text":{"2":{},"6":{},"20":{},"22":{},"23":{},"30":{},"34":{},"39":{},"41":{},"48":{},"63":{},"67":{},"75":{},"80":{},"83":{},"87":{},"94":{},"98":{},"112":{},"114":{},"115":{},"122":{},"126":{},"131":{},"133":{}},"component":{}}],["consequ",{"_index":51,"title":{},"name":{},"text":{"1":{},"11":{},"16":{},"24":{},"43":{},"47":{},"54":{},"59":{},"61":{},"67":{},"71":{},"77":{},"89":{},"93":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["consid",{"_index":681,"title":{},"name":{},"text":{"12":{},"55":{},"104":{}},"component":{}}],["consist",{"_index":184,"title":{},"name":{},"text":{"2":{},"6":{},"23":{},"48":{},"94":{},"98":{},"115":{}},"component":{}}],["consol",{"_index":729,"title":{"16-1":{},"24-4":{},"43-4":{},"59-1":{},"61-4":{},"77-4":{},"89-4":{},"108-1":{},"116-4":{},"135-4":{}},"name":{},"text":{"72":{},"75":{}},"component":{}}],["construct",{"_index":367,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["consum",{"_index":1279,"title":{},"name":{},"text":{"37":{},"63":{},"64":{},"68":{},"71":{},"72":{},"73":{},"86":{},"129":{}},"component":{}}],["consumpt",{"_index":1150,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["contact",{"_index":6,"title":{"1-6":{},"47-6":{},"93-6":{}},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["contain",{"_index":130,"title":{},"name":{},"text":{"1":{},"15":{},"18":{},"19":{},"24":{},"29":{},"36":{},"43":{},"45":{},"47":{},"58":{},"61":{},"64":{},"69":{},"77":{},"85":{},"89":{},"91":{},"93":{},"107":{},"110":{},"111":{},"116":{},"121":{},"128":{},"135":{},"137":{}},"component":{}}],["content",{"_index":303,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"22":{},"23":{},"38":{},"39":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"74":{},"75":{},"87":{},"94":{},"101":{},"103":{},"114":{},"115":{},"130":{},"131":{}},"component":{}}],["continu",{"_index":1117,"title":{},"name":{},"text":{"33":{}},"component":{}}],["contract",{"_index":1485,"title":{},"name":{},"text":{"71":{}},"component":{}}],["contribut",{"_index":418,"title":{"9":{},"101":{}},"name":{"9":{},"101":{}},"text":{"9":{},"16":{},"24":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"135":{}},"component":{}}],["control",{"_index":807,"title":{},"name":{},"text":{"20":{},"23":{},"112":{},"115":{}},"component":{}}],["conveni",{"_index":932,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["convent",{"_index":414,"title":{"9-8":{},"9-9":{},"101-8":{},"101-9":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["converg",{"_index":292,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["convey",{"_index":575,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["copi",{"_index":463,"title":{},"name":{},"text":{"9":{},"16":{},"21":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"101":{},"108":{},"113":{},"116":{},"135":{}},"component":{}}],["core",{"_index":618,"title":{"15-3":{},"58-3":{},"107-3":{}},"name":{},"text":{"11":{},"13":{},"15":{},"24":{},"54":{},"58":{},"77":{},"103":{},"105":{},"107":{},"116":{}},"component":{}}],["coroutin",{"_index":896,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["correct",{"_index":233,"title":{},"name":{},"text":{"2":{},"31":{},"39":{},"48":{},"68":{},"81":{},"87":{},"94":{},"123":{},"131":{}},"component":{}}],["correspond",{"_index":145,"title":{},"name":{},"text":{"1":{},"9":{},"10":{},"11":{},"12":{},"33":{},"35":{},"36":{},"37":{},"47":{},"54":{},"55":{},"68":{},"84":{},"86":{},"93":{},"101":{},"102":{},"103":{},"104":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["coupl",{"_index":721,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["cours",{"_index":392,"title":{"62":{},"71":{}},"name":{"62":{}},"text":{"6":{},"21":{},"35":{},"61":{},"66":{},"67":{},"68":{},"69":{},"71":{},"73":{},"84":{},"98":{},"113":{},"127":{}},"component":{}}],["courses.modelserver.dump",{"_index":1470,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["cover",{"_index":1336,"title":{},"name":{},"text":{"61":{},"66":{}},"component":{}}],["cp",{"_index":1479,"title":{},"name":{},"text":{"70":{}},"component":{}}],["craft",{"_index":1345,"title":{},"name":{},"text":{"63":{}},"component":{}}],["creat",{"_index":25,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"9":{},"12":{},"19":{},"20":{},"28":{},"30":{},"41":{},"47":{},"50":{},"55":{},"69":{},"80":{},"93":{},"96":{},"98":{},"101":{},"104":{},"110":{},"112":{},"120":{},"122":{},"133":{}},"component":{}}],["creation",{"_index":1370,"title":{"65":{}},"name":{},"text":{"66":{}},"component":{}}],["credenti",{"_index":743,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["cumbersom",{"_index":1399,"title":{},"name":{},"text":{"69":{}},"component":{}}],["curat",{"_index":1312,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["curl",{"_index":1501,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["current",{"_index":44,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"1":{},"2":{},"10":{},"11":{},"37":{},"39":{},"40":{},"47":{},"48":{},"54":{},"61":{},"64":{},"71":{},"75":{},"86":{},"87":{},"93":{},"94":{},"102":{},"103":{},"129":{},"131":{},"132":{}},"component":{}}],["custom",{"_index":391,"title":{},"name":{},"text":{"6":{},"20":{},"22":{},"23":{},"28":{},"73":{},"98":{},"112":{},"114":{},"115":{},"120":{}},"component":{}}],["cycl",{"_index":467,"title":{"10-2":{},"54-2":{},"102-2":{}},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["d",{"_index":1474,"title":{},"name":{},"text":{"70":{}},"component":{}}],["dashboard",{"_index":862,"title":{"64":{},"68":{},"67-6":{},"68-2":{}},"name":{"68":{}},"text":{"23":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"115":{}},"component":{}}],["data",{"_index":201,"title":{},"name":{},"text":{"2":{},"11":{},"20":{},"21":{},"22":{},"23":{},"26":{},"28":{},"30":{},"33":{},"35":{},"38":{},"39":{},"40":{},"48":{},"54":{},"63":{},"67":{},"72":{},"73":{},"80":{},"84":{},"87":{},"94":{},"103":{},"112":{},"113":{},"114":{},"115":{},"118":{},"120":{},"122":{},"125":{},"127":{},"130":{},"131":{},"132":{}},"component":{}}],["databas",{"_index":984,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["database.properti",{"_index":1088,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["datastructur",{"_index":688,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["date",{"_index":792,"title":{},"name":{},"text":{"19":{},"35":{},"84":{},"110":{},"127":{}},"component":{}}],["dateandtim",{"_index":1188,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["day",{"_index":1362,"title":{},"name":{},"text":{"64":{}},"component":{}}],["db",{"_index":939,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["db.products.buildlocalmap",{"_index":974,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["db.products.map",{"_index":940,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["debug",{"_index":1637,"title":{},"name":{},"text":{"75":{}},"component":{}}],["debugg",{"_index":1131,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["decemb",{"_index":539,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["declar",{"_index":1251,"title":{},"name":{},"text":{"36":{},"45":{},"74":{},"75":{},"85":{},"91":{},"128":{},"137":{}},"component":{}}],["decoupl",{"_index":1383,"title":{},"name":{},"text":{"67":{}},"component":{}}],["dedic",{"_index":121,"title":{},"name":{},"text":{"1":{},"11":{},"93":{},"103":{}},"component":{}}],["default",{"_index":247,"title":{"36-6":{},"85-6":{},"128-6":{}},"name":{},"text":{"2":{},"30":{},"32":{},"33":{},"36":{},"48":{},"68":{},"75":{},"80":{},"82":{},"85":{},"94":{},"122":{},"124":{},"125":{},"128":{}},"component":{}}],["defaultdispatch",{"_index":1494,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["defin",{"_index":723,"title":{},"name":{},"text":{"15":{},"18":{},"28":{},"33":{},"58":{},"61":{},"63":{},"64":{},"67":{},"68":{},"72":{},"107":{},"111":{},"120":{},"125":{}},"component":{}}],["definit",{"_index":248,"title":{},"name":{},"text":{"2":{},"6":{},"33":{},"48":{},"63":{},"67":{},"69":{},"94":{},"98":{},"125":{}},"component":{}}],["deliv",{"_index":548,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["demand",{"_index":873,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["demo",{"_index":728,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["demonstr",{"_index":812,"title":{"21-1":{},"22-1":{},"23-1":{},"113-1":{},"114-1":{},"115-1":{}},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["dens",{"_index":542,"title":{},"name":{},"text":{"11":{},"15":{},"54":{},"58":{},"103":{},"107":{}},"component":{}}],["depend",{"_index":690,"title":{"45":{},"91":{},"137":{}},"name":{},"text":{"13":{},"15":{},"21":{},"22":{},"23":{},"24":{},"31":{},"33":{},"36":{},"45":{},"56":{},"58":{},"67":{},"77":{},"81":{},"85":{},"91":{},"105":{},"107":{},"113":{},"114":{},"115":{},"116":{},"123":{},"125":{},"128":{},"137":{}},"component":{}}],["dependson",{"_index":1099,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["dependson(resolvemp",{"_index":1061,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["dependson(someothertask",{"_index":1137,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["deploy",{"_index":411,"title":{"9-3":{},"67-8":{},"101-3":{}},"name":{},"text":{"10":{},"11":{},"54":{},"73":{},"102":{},"103":{}},"component":{}}],["depth",{"_index":177,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["deriv",{"_index":841,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["descend",{"_index":1021,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["describ",{"_index":775,"title":{},"name":{},"text":{"19":{},"22":{},"23":{},"26":{},"69":{},"71":{},"74":{},"75":{},"110":{},"114":{},"115":{},"118":{}},"component":{}}],["descript",{"_index":374,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"33":{},"35":{},"36":{},"57":{},"58":{},"63":{},"66":{},"69":{},"72":{},"84":{},"85":{},"98":{},"106":{},"107":{},"125":{},"127":{},"128":{}},"component":{}}],["design",{"_index":325,"title":{},"name":{},"text":{"3":{},"34":{},"49":{},"83":{},"95":{},"126":{}},"component":{}}],["detail",{"_index":73,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"20":{},"23":{},"39":{},"47":{},"49":{},"54":{},"67":{},"74":{},"75":{},"87":{},"93":{},"95":{},"103":{},"112":{},"115":{},"131":{}},"component":{}}],["detect",{"_index":306,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["determin",{"_index":457,"title":{},"name":{},"text":{"9":{},"69":{},"101":{}},"component":{}}],["dev",{"_index":1144,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["develop",{"_index":10,"title":{"10":{},"54":{},"102":{},"10-1":{},"39-3":{},"54-1":{},"87-3":{},"102-1":{},"131-3":{}},"name":{"10":{},"102":{}},"text":{"1":{},"3":{},"4":{},"9":{},"10":{},"11":{},"26":{},"32":{},"41":{},"47":{},"49":{},"50":{},"54":{},"61":{},"67":{},"71":{},"74":{},"75":{},"82":{},"93":{},"95":{},"96":{},"101":{},"102":{},"103":{},"118":{},"124":{},"133":{}},"component":{}}],["diagram",{"_index":335,"title":{},"name":{},"text":{"3":{},"11":{},"21":{},"38":{},"49":{},"54":{},"95":{},"103":{},"113":{},"130":{}},"component":{}}],["diataxi",{"_index":638,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["differ",{"_index":92,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"20":{},"23":{},"26":{},"28":{},"32":{},"39":{},"45":{},"47":{},"48":{},"54":{},"64":{},"66":{},"67":{},"82":{},"87":{},"91":{},"93":{},"94":{},"98":{},"103":{},"112":{},"115":{},"118":{},"120":{},"124":{},"131":{},"137":{}},"component":{}}],["difficult",{"_index":668,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["direct",{"_index":406,"title":{},"name":{},"text":{"8":{},"33":{},"53":{},"100":{},"125":{}},"component":{}}],["direction(\"pushtomyserv",{"_index":1138,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["directli",{"_index":76,"title":{},"name":{},"text":{"1":{},"11":{},"18":{},"20":{},"22":{},"23":{},"31":{},"47":{},"54":{},"67":{},"71":{},"81":{},"93":{},"103":{},"111":{},"112":{},"114":{},"115":{},"123":{}},"component":{}}],["directori",{"_index":1049,"title":{},"name":{},"text":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"component":{}}],["disabl",{"_index":1562,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["disallow",{"_index":879,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["discuss",{"_index":341,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["display",{"_index":858,"title":{},"name":{},"text":{"23":{},"64":{},"115":{}},"component":{}}],["distinct",{"_index":1284,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["distinguish",{"_index":905,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["distribut",{"_index":17,"title":{},"name":{},"text":{"1":{},"2":{},"15":{},"47":{},"48":{},"58":{},"93":{},"94":{},"107":{}},"component":{}}],["div",{"_index":992,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["dive",{"_index":75,"title":{},"name":{},"text":{"1":{},"47":{},"61":{},"93":{}},"component":{}}],["diverg",{"_index":304,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["divers",{"_index":671,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["diátaxis[2",{"_index":99,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["djdbc.url=$jdbc_url",{"_index":1478,"title":{},"name":{},"text":{"70":{}},"component":{}}],["do",{"_index":516,"title":{},"name":{},"text":{"10":{},"28":{},"120":{}},"component":{}}],["doc",{"_index":458,"title":{},"name":{},"text":{"9":{},"11":{},"13":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"54":{},"56":{},"83":{},"85":{},"86":{},"87":{},"101":{},"103":{},"105":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{}},"component":{}}],["doc/model",{"_index":1294,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["docker",{"_index":214,"title":{"67-8":{}},"name":{},"text":{"2":{},"6":{},"9":{},"18":{},"21":{},"22":{},"23":{},"48":{},"70":{},"94":{},"98":{},"101":{},"111":{},"113":{},"114":{},"115":{}},"component":{}}],["docs.modelix.org",{"_index":561,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["document",{"_index":1,"title":{"1-2":{},"11-6":{},"47-2":{},"54-9":{},"93-2":{},"103-6":{}},"name":{},"text":{"1":{},"3":{},"10":{},"11":{},"12":{},"18":{},"39":{},"45":{},"47":{},"49":{},"54":{},"55":{},"63":{},"67":{},"68":{},"87":{},"91":{},"93":{},"95":{},"103":{},"104":{},"111":{},"131":{},"137":{}},"component":{}}],["documentaion",{"_index":124,"title":{},"name":{},"text":{"1":{},"93":{}},"component":{}}],["doesn’t",{"_index":314,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["domain",{"_index":19,"title":{"62":{},"69":{},"71":{},"11-4":{},"54-7":{},"67-3":{},"67-4":{},"103-4":{}},"name":{"62":{}},"text":{"1":{},"3":{},"4":{},"6":{},"11":{},"23":{},"37":{},"38":{},"47":{},"49":{},"50":{},"54":{},"61":{},"63":{},"64":{},"66":{},"67":{},"71":{},"86":{},"93":{},"95":{},"96":{},"98":{},"103":{},"115":{},"129":{},"130":{}},"component":{}}],["domain[1",{"_index":1483,"title":{},"name":{},"text":{"71":{}},"component":{}}],["done",{"_index":473,"title":{},"name":{},"text":{"10":{},"30":{},"31":{},"54":{},"74":{},"75":{},"80":{},"81":{},"102":{},"122":{},"123":{}},"component":{}}],["download",{"_index":692,"title":{},"name":{},"text":{"13":{},"26":{},"56":{},"74":{},"75":{},"105":{},"118":{}},"component":{}}],["downsid",{"_index":892,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["dsl",{"_index":326,"title":{},"name":{},"text":{"3":{},"28":{},"49":{},"95":{},"120":{}},"component":{}}],["dt_socket",{"_index":1668,"title":{},"name":{},"text":{"75":{}},"component":{}}],["dump",{"_index":1608,"title":{},"name":{},"text":{"75":{}},"component":{}}],["dumpin",{"_index":1469,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["dure",{"_index":538,"title":{},"name":{},"text":{"11":{},"32":{},"45":{},"69":{},"82":{},"91":{},"103":{},"124":{},"137":{}},"component":{}}],["dynam",{"_index":890,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["e",{"_index":242,"title":{},"name":{},"text":{"2":{},"45":{},"48":{},"64":{},"91":{},"94":{},"137":{}},"component":{}}],["e.g",{"_index":427,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"33":{},"35":{},"36":{},"45":{},"54":{},"68":{},"84":{},"85":{},"91":{},"101":{},"102":{},"103":{},"125":{},"127":{},"128":{},"137":{}},"component":{}}],["ea76",{"_index":1511,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["each",{"_index":489,"title":{},"name":{},"text":{"10":{},"11":{},"15":{},"20":{},"28":{},"43":{},"44":{},"54":{},"58":{},"63":{},"64":{},"67":{},"69":{},"89":{},"90":{},"102":{},"103":{},"107":{},"112":{},"120":{},"135":{},"136":{}},"component":{}}],["earli",{"_index":487,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["eas",{"_index":369,"title":{},"name":{},"text":{"6":{},"11":{},"54":{},"98":{},"103":{}},"component":{}}],["easi",{"_index":313,"title":{},"name":{},"text":{"2":{},"11":{},"31":{},"39":{},"48":{},"54":{},"63":{},"81":{},"87":{},"94":{},"103":{},"123":{},"131":{}},"component":{}}],["easier",{"_index":420,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"69":{},"101":{},"102":{},"103":{}},"component":{}}],["easiest",{"_index":750,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["easili",{"_index":305,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["ecosystem",{"_index":592,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["edit",{"_index":327,"title":{},"name":{},"text":{"3":{},"20":{},"49":{},"61":{},"64":{},"68":{},"95":{},"112":{}},"component":{}}],["editor",{"_index":180,"title":{"2-2":{},"11-10":{},"48-2":{},"54-13":{},"94-2":{},"103-10":{}},"name":{},"text":{"2":{},"3":{},"6":{},"11":{},"13":{},"18":{},"19":{},"39":{},"48":{},"49":{},"54":{},"56":{},"61":{},"69":{},"87":{},"94":{},"95":{},"98":{},"103":{},"105":{},"110":{},"111":{},"131":{}},"component":{}}],["educ",{"_index":1381,"title":{},"name":{},"text":{"67":{},"71":{}},"component":{}}],["effect",{"_index":1303,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["effort",{"_index":635,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["einstein",{"_index":1546,"title":{},"name":{},"text":{"73":{}},"component":{}}],["elabor",{"_index":657,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["element",{"_index":899,"title":{},"name":{},"text":{"26":{},"28":{},"36":{},"85":{},"118":{},"120":{},"128":{}},"component":{}}],["email",{"_index":160,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["empow",{"_index":366,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["enabl",{"_index":398,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"18":{},"20":{},"28":{},"31":{},"40":{},"54":{},"58":{},"61":{},"81":{},"98":{},"103":{},"107":{},"111":{},"112":{},"120":{},"123":{},"132":{}},"component":{}}],["enablecontinueonerror",{"_index":1114,"title":{},"name":{},"text":{"33":{}},"component":{}}],["encod",{"_index":1633,"title":{},"name":{},"text":{"75":{}},"component":{}}],["encount",{"_index":370,"title":{},"name":{},"text":{"6":{},"33":{},"98":{}},"component":{}}],["end",{"_index":294,"title":{},"name":{},"text":{"2":{},"12":{},"19":{},"39":{},"48":{},"55":{},"75":{},"87":{},"94":{},"104":{},"110":{},"131":{}},"component":{}}],["endpoint",{"_index":910,"title":{"33":{},"125":{}},"name":{},"text":{"28":{},"33":{},"63":{},"72":{},"120":{},"125":{}},"component":{}}],["enforc",{"_index":455,"title":{},"name":{},"text":{"9":{},"45":{},"91":{},"101":{},"137":{}},"component":{}}],["enforcedplatform",{"_index":1315,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["engin",{"_index":168,"title":{},"name":{},"text":{"1":{},"26":{},"47":{},"67":{},"71":{},"93":{},"118":{}},"component":{}}],["ensur",{"_index":1048,"title":{},"name":{},"text":{"31":{},"44":{},"81":{},"90":{},"123":{},"136":{}},"component":{}}],["enter",{"_index":828,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["entir",{"_index":1015,"title":{},"name":{},"text":{"30":{},"74":{},"75":{},"80":{},"122":{}},"component":{}}],["entri",{"_index":637,"title":{"61-8":{}},"name":{},"text":{"11":{},"36":{},"54":{},"85":{},"103":{},"128":{}},"component":{}}],["environ",{"_index":642,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["envis",{"_index":765,"title":{},"name":{},"text":{"18":{},"61":{},"64":{},"111":{}},"component":{}}],["equip",{"_index":795,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["error",{"_index":139,"title":{},"name":{},"text":{"1":{},"33":{},"47":{},"93":{}},"component":{}}],["essenti",{"_index":348,"title":{"6-2":{},"6-3":{},"9-2":{},"98-2":{},"98-3":{},"101-2":{}},"name":{},"text":{"6":{},"20":{},"98":{},"112":{}},"component":{}}],["establish",{"_index":22,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["estim",{"_index":530,"title":{"11-7":{},"11-8":{},"11-9":{},"11-10":{},"54-10":{},"54-11":{},"54-12":{},"54-13":{},"103-7":{},"103-8":{},"103-9":{},"103-10":{}},"name":{},"text":{},"component":{}}],["even",{"_index":257,"title":{},"name":{},"text":{"2":{},"28":{},"39":{},"48":{},"87":{},"94":{},"120":{},"131":{}},"component":{}}],["eventloopgroupproxi",{"_index":1697,"title":{},"name":{},"text":{"75":{}},"component":{}}],["eventu",{"_index":653,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"26":{},"43":{},"54":{},"61":{},"71":{},"77":{},"103":{},"108":{},"116":{},"118":{},"135":{}},"component":{}}],["everyon",{"_index":1535,"title":{},"name":{},"text":{"72":{}},"component":{}}],["everyth",{"_index":574,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"63":{},"67":{},"103":{},"107":{},"111":{}},"component":{}}],["evolut",{"_index":532,"title":{"11-9":{},"54-12":{},"103-9":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["evolv",{"_index":401,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["exactli",{"_index":150,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["exampl",{"_index":350,"title":{"6-3":{},"33-7":{},"36-7":{},"85-7":{},"98-3":{},"125-7":{},"128-7":{}},"name":{},"text":{"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"19":{},"24":{},"31":{},"33":{},"43":{},"45":{},"54":{},"58":{},"59":{},"61":{},"63":{},"67":{},"69":{},"71":{},"72":{},"73":{},"75":{},"77":{},"81":{},"89":{},"91":{},"98":{},"102":{},"103":{},"107":{},"108":{},"110":{},"111":{},"116":{},"123":{},"125":{},"135":{},"137":{}},"component":{}}],["example@0.0.0",{"_index":1570,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["exceed",{"_index":888,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["except",{"_index":883,"title":{},"name":{},"text":{"26":{},"30":{},"69":{},"80":{},"118":{},"122":{}},"component":{}}],["exchang",{"_index":675,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["execut",{"_index":817,"title":{},"name":{},"text":{"21":{},"26":{},"28":{},"36":{},"74":{},"75":{},"85":{},"113":{},"118":{},"120":{},"128":{}},"component":{}}],["exemplari",{"_index":1161,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["exist",{"_index":29,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"9":{},"10":{},"11":{},"15":{},"31":{},"38":{},"47":{},"50":{},"54":{},"58":{},"81":{},"93":{},"96":{},"98":{},"101":{},"102":{},"103":{},"107":{},"123":{},"130":{}},"component":{}}],["expect",{"_index":897,"title":{},"name":{},"text":{"26":{},"68":{},"74":{},"75":{},"118":{}},"component":{}}],["experi",{"_index":670,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["experiment",{"_index":59,"title":{"10-3":{}},"name":{},"text":{"1":{},"10":{},"47":{},"93":{}},"component":{}}],["expert",{"_index":20,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["explain",{"_index":1371,"title":{},"name":{},"text":{"66":{}},"component":{}}],["explan",{"_index":126,"title":{"5":{},"25":{},"51":{},"78":{},"97":{},"117":{}},"name":{},"text":{"1":{},"5":{},"11":{},"47":{},"51":{},"54":{},"61":{},"93":{},"97":{},"103":{}},"component":{}}],["explor",{"_index":33,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"18":{},"21":{},"47":{},"50":{},"54":{},"74":{},"75":{},"93":{},"96":{},"103":{},"111":{},"113":{}},"component":{}}],["expor",{"_index":1703,"title":{},"name":{},"text":{"84":{}},"component":{}}],["export",{"_index":607,"title":{"35":{},"84":{},"127":{}},"name":{"35":{},"84":{},"127":{}},"text":{"11":{},"13":{},"33":{},"35":{},"36":{},"54":{},"56":{},"69":{},"84":{},"85":{},"103":{},"105":{},"125":{},"127":{},"128":{}},"component":{}}],["exportmodul",{"_index":1250,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["exportmodules(\"jetbrains.mps.runtim",{"_index":1273,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["expos",{"_index":515,"title":{},"name":{},"text":{"10":{},"23":{},"41":{},"63":{},"67":{},"72":{},"115":{},"133":{}},"component":{}}],["express",{"_index":779,"title":{},"name":{},"text":{"19":{},"69":{},"110":{}},"component":{}}],["extend",{"_index":1179,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["extens",{"_index":492,"title":{},"name":{},"text":{"10":{},"11":{},"13":{},"28":{},"54":{},"56":{},"102":{},"103":{},"105":{},"120":{}},"component":{}}],["extern",{"_index":229,"title":{},"name":{},"text":{"2":{},"15":{},"18":{},"36":{},"48":{},"58":{},"61":{},"85":{},"94":{},"107":{},"111":{},"128":{}},"component":{}}],["extra",{"_index":604,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"103":{}},"component":{}}],["factor",{"_index":439,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["fail",{"_index":1300,"title":{},"name":{},"text":{"40":{},"69":{},"132":{}},"component":{}}],["fairli",{"_index":773,"title":{},"name":{},"text":{"19":{},"69":{},"110":{}},"component":{}}],["fallback",{"_index":677,"title":{"12":{},"55":{},"104":{}},"name":{},"text":{"12":{},"55":{},"75":{},"104":{}},"component":{}}],["fals",{"_index":1120,"title":{},"name":{},"text":{"33":{},"35":{},"69":{},"72":{},"75":{},"84":{},"127":{}},"component":{}}],["fanci",{"_index":1489,"title":{},"name":{},"text":{"71":{}},"component":{}}],["faq",{"_index":83,"title":{},"name":{"7":{},"52":{},"99":{}},"text":{"1":{},"47":{},"93":{}},"component":{}}],["fast",{"_index":310,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["fatjar",{"_index":1620,"title":{},"name":{},"text":{"75":{}},"component":{}}],["fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model",{"_index":1619,"title":{},"name":{},"text":{"75":{}},"component":{}}],["featur",{"_index":397,"title":{"10-3":{}},"name":{},"text":{"6":{},"9":{},"10":{},"11":{},"15":{},"18":{},"34":{},"45":{},"54":{},"58":{},"61":{},"83":{},"91":{},"98":{},"101":{},"103":{},"107":{},"111":{},"126":{},"137":{}},"component":{}}],["feedback",{"_index":161,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["few",{"_index":599,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["figur",{"_index":815,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"33":{},"68":{},"113":{},"114":{},"115":{},"125":{}},"component":{}}],["file",{"_index":267,"title":{},"name":{},"text":{"2":{},"11":{},"16":{},"20":{},"21":{},"24":{},"31":{},"33":{},"35":{},"36":{},"37":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"72":{},"74":{},"75":{},"77":{},"81":{},"84":{},"85":{},"86":{},"87":{},"89":{},"94":{},"103":{},"108":{},"112":{},"113":{},"116":{},"123":{},"125":{},"127":{},"128":{},"129":{},"131":{},"135":{}},"component":{}}],["file(\"build/kotlin_gen",{"_index":1269,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"build/ts_gen",{"_index":1271,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"path/to/json/dir",{"_index":1226,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["file(\"path/to/mps/hom",{"_index":1268,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["filter",{"_index":882,"title":{},"name":{},"text":{"26":{},"28":{},"30":{},"31":{},"80":{},"81":{},"118":{},"120":{},"122":{},"123":{}},"component":{}}],["final",{"_index":42,"title":{},"name":{},"text":{"1":{},"47":{},"69":{},"93":{}},"component":{}}],["find",{"_index":71,"title":{},"name":{},"text":{"1":{},"11":{},"19":{},"26":{},"47":{},"54":{},"75":{},"93":{},"103":{},"110":{},"118":{}},"component":{}}],["fine",{"_index":876,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["first",{"_index":238,"title":{},"name":{},"text":{"2":{},"10":{},"11":{},"16":{},"20":{},"22":{},"23":{},"24":{},"26":{},"28":{},"36":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"74":{},"75":{},"77":{},"85":{},"89":{},"94":{},"102":{},"103":{},"108":{},"112":{},"114":{},"115":{},"116":{},"118":{},"120":{},"128":{},"135":{}},"component":{}}],["fit",{"_index":362,"title":{},"name":{},"text":{"6":{},"11":{},"54":{},"98":{},"103":{}},"component":{}}],["fix",{"_index":312,"title":{},"name":{},"text":{"2":{},"9":{},"39":{},"48":{},"69":{},"87":{},"94":{},"101":{},"131":{}},"component":{}}],["fixtur",{"_index":1002,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["flexibl",{"_index":1375,"title":{},"name":{},"text":{"67":{}},"component":{}}],["flow",{"_index":895,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["flux",{"_index":904,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["focu",{"_index":547,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"103":{},"107":{},"111":{}},"component":{}}],["focus",{"_index":672,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["folder",{"_index":732,"title":{},"name":{},"text":{"16":{},"22":{},"23":{},"24":{},"31":{},"40":{},"43":{},"59":{},"61":{},"63":{},"68":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"89":{},"108":{},"114":{},"115":{},"116":{},"123":{},"132":{},"135":{}},"component":{}}],["follow",{"_index":66,"title":{},"name":{},"text":{"1":{},"6":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"21":{},"24":{},"29":{},"31":{},"36":{},"38":{},"43":{},"45":{},"47":{},"54":{},"58":{},"59":{},"61":{},"67":{},"70":{},"71":{},"77":{},"81":{},"85":{},"89":{},"91":{},"93":{},"98":{},"101":{},"102":{},"103":{},"107":{},"108":{},"111":{},"113":{},"116":{},"121":{},"123":{},"128":{},"130":{},"135":{},"137":{}},"component":{}}],["forc",{"_index":884,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["form",{"_index":387,"title":{},"name":{},"text":{"6":{},"15":{},"58":{},"98":{},"107":{}},"component":{}}],["format",{"_index":273,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["forward",{"_index":232,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["found",{"_index":136,"title":{},"name":{},"text":{"1":{},"10":{},"12":{},"47":{},"55":{},"75":{},"93":{},"104":{}},"component":{}}],["four",{"_index":102,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["framework",{"_index":3,"title":{"1-3":{},"1-4":{},"47-3":{},"47-4":{},"93-3":{},"93-4":{}},"name":{},"text":{"1":{},"11":{},"47":{},"54":{},"93":{},"103":{}},"component":{}}],["frameworks/tool",{"_index":725,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["frequent",{"_index":403,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{},"component":{}}],["friction",{"_index":18,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["from(mps.resolve().map",{"_index":1057,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["fromloc",{"_index":1101,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["frommodelserv",{"_index":1103,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["frontend",{"_index":771,"title":{"22":{},"114":{}},"name":{},"text":{"18":{},"20":{},"22":{},"23":{},"111":{},"112":{},"114":{},"115":{}},"component":{}}],["full",{"_index":88,"title":{"67-1":{}},"name":{},"text":{"1":{},"6":{},"47":{},"64":{},"67":{},"93":{},"98":{}},"component":{}}],["fulli",{"_index":1110,"title":{},"name":{},"text":{"33":{},"36":{},"40":{},"85":{},"125":{},"128":{},"132":{}},"component":{}}],["function",{"_index":576,"title":{},"name":{},"text":{"11":{},"36":{},"54":{},"72":{},"85":{},"103":{},"128":{}},"component":{}}],["further",{"_index":448,"title":{},"name":{},"text":{"9":{},"11":{},"18":{},"28":{},"31":{},"35":{},"41":{},"54":{},"81":{},"84":{},"101":{},"103":{},"111":{},"120":{},"123":{},"127":{},"133":{}},"component":{}}],["furthermor",{"_index":1311,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["futur",{"_index":451,"title":{},"name":{},"text":{"9":{},"69":{},"101":{}},"component":{}}],["g",{"_index":1319,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["gain",{"_index":61,"title":{},"name":{},"text":{"1":{},"10":{},"47":{},"54":{},"93":{},"102":{}},"component":{}}],["gen",{"_index":377,"title":{},"name":{"31":{},"36":{},"37":{},"81":{},"85":{},"86":{},"123":{},"128":{},"129":{}},"text":{"6":{},"11":{},"13":{},"15":{},"24":{},"28":{},"29":{},"31":{},"36":{},"37":{},"38":{},"54":{},"56":{},"58":{},"69":{},"77":{},"81":{},"85":{},"86":{},"98":{},"103":{},"105":{},"107":{},"116":{},"120":{},"121":{},"123":{},"128":{},"129":{},"130":{}},"component":{}}],["gen.gradl",{"_index":1043,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["gen.gradle.plugin",{"_index":687,"title":{},"name":{},"text":{"13":{},"36":{},"56":{},"85":{},"105":{},"128":{}},"component":{}}],["gener",{"_index":379,"title":{"31":{},"36":{},"37":{},"69":{},"81":{},"85":{},"86":{},"123":{},"128":{},"129":{},"11-4":{},"45-1":{},"54-7":{},"67-3":{},"69-2":{},"91-1":{},"103-4":{},"137-1":{}},"name":{},"text":{"6":{},"10":{},"11":{},"16":{},"19":{},"20":{},"22":{},"23":{},"24":{},"28":{},"29":{},"31":{},"33":{},"35":{},"36":{},"37":{},"38":{},"41":{},"43":{},"54":{},"59":{},"61":{},"63":{},"67":{},"69":{},"71":{},"73":{},"74":{},"75":{},"77":{},"81":{},"84":{},"85":{},"86":{},"89":{},"98":{},"102":{},"103":{},"108":{},"110":{},"112":{},"114":{},"115":{},"116":{},"120":{},"121":{},"123":{},"125":{},"127":{},"128":{},"129":{},"130":{},"133":{},"135":{}},"component":{}}],["get",{"_index":423,"title":{"18-2":{},"24-2":{},"43-2":{},"61-2":{},"77-2":{},"89-2":{},"111-2":{},"116-2":{},"135-2":{}},"name":{},"text":{"9":{},"101":{}},"component":{}}],["getchildren",{"_index":1462,"title":{},"name":{},"text":{"69":{}},"component":{}}],["gethasremoteequip",{"_index":1445,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinod",{"_index":1434,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().getpropertyvalue(\"hasremoteequip",{"_index":1446,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().getpropertyvalue(\"maxplac",{"_index":1439,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().setpropertyvalue(\"hasremoteequip",{"_index":1449,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getinode().setpropertyvalue(\"maxplac",{"_index":1443,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getmaxplac",{"_index":1437,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getproperti",{"_index":1461,"title":{},"name":{},"text":{"69":{}},"component":{}}],["getrefer",{"_index":1463,"title":{},"name":{},"text":{"69":{}},"component":{}}],["ghp",{"_index":683,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["git",{"_index":271,"title":{"11-7":{},"54-10":{},"103-7":{}},"name":{},"text":{"2":{},"9":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"101":{},"103":{},"131":{}},"component":{}}],["githhub",{"_index":742,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["github",{"_index":437,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"9":{},"10":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"101":{},"102":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["gitui",{"_index":703,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["give",{"_index":84,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"18":{},"28":{},"47":{},"48":{},"54":{},"61":{},"93":{},"94":{},"98":{},"103":{},"111":{},"120":{}},"component":{}}],["given",{"_index":1100,"title":{},"name":{},"text":{"33":{},"37":{},"66":{},"67":{},"86":{},"125":{},"129":{}},"component":{}}],["global",{"_index":855,"title":{},"name":{},"text":{"22":{},"23":{},"74":{},"75":{},"114":{},"115":{}},"component":{}}],["glossari",{"_index":5,"title":{"3":{},"49":{},"95":{},"1-5":{},"47-5":{},"93-5":{}},"name":{"3":{},"49":{},"95":{}},"text":{"1":{},"3":{},"47":{},"49":{},"93":{},"95":{}},"component":{}}],["go",{"_index":770,"title":{},"name":{},"text":{"18":{},"68":{},"111":{}},"component":{}}],["goal",{"_index":340,"title":{"4":{},"50":{},"96":{}},"name":{"4":{},"50":{},"96":{}},"text":{"6":{},"8":{},"18":{},"53":{},"61":{},"98":{},"100":{},"111":{}},"component":{}}],["good",{"_index":656,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["googl",{"_index":236,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["gpr.key",{"_index":749,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gpr.user",{"_index":748,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gradl",{"_index":378,"title":{"16":{},"31":{},"33":{},"36":{},"44":{},"59":{},"81":{},"85":{},"90":{},"108":{},"123":{},"125":{},"128":{},"136":{},"24-3":{},"43-3":{},"61-3":{},"77-3":{},"89-3":{},"116-3":{},"135-3":{}},"name":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"text":{"6":{},"11":{},"13":{},"15":{},"16":{},"22":{},"23":{},"24":{},"28":{},"31":{},"33":{},"36":{},"37":{},"41":{},"43":{},"44":{},"45":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"85":{},"86":{},"89":{},"90":{},"91":{},"98":{},"103":{},"105":{},"107":{},"108":{},"114":{},"115":{},"116":{},"120":{},"123":{},"125":{},"128":{},"129":{},"133":{},"135":{},"136":{},"137":{}},"component":{}}],["gradle.properti",{"_index":752,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"77":{},"81":{},"89":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["gradlew",{"_index":733,"title":{},"name":{},"text":{"16":{},"18":{},"21":{},"22":{},"23":{},"24":{},"31":{},"32":{},"39":{},"43":{},"59":{},"61":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"82":{},"87":{},"89":{},"108":{},"111":{},"113":{},"114":{},"115":{},"116":{},"123":{},"124":{},"131":{},"135":{}},"component":{}}],["gradlew.bat",{"_index":736,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["gradle’",{"_index":1310,"title":{},"name":{},"text":{"44":{},"90":{},"136":{}},"component":{}}],["grain",{"_index":877,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["graphic",{"_index":534,"title":{"11-10":{},"54-13":{},"103-10":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["ground",{"_index":587,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["group",{"_index":617,"title":{},"name":{},"text":{"11":{},"38":{},"54":{},"103":{},"130":{}},"component":{}}],["grow",{"_index":640,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["guarante",{"_index":291,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["guid",{"_index":120,"title":{"8":{},"9":{},"53":{},"100":{},"101":{}},"name":{},"text":{"1":{},"8":{},"9":{},"11":{},"14":{},"47":{},"53":{},"54":{},"57":{},"93":{},"100":{},"101":{},"103":{},"106":{}},"component":{}}],["h",{"_index":1505,"title":{},"name":{},"text":{"72":{},"73":{},"75":{}},"component":{}}],["h1",{"_index":995,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["h2",{"_index":993,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["hall",{"_index":1361,"title":{},"name":{},"text":{"64":{}},"component":{}}],["hand",{"_index":111,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"63":{},"69":{},"93":{},"109":{}},"component":{}}],["handl",{"_index":566,"title":{},"name":{},"text":{"11":{},"45":{},"54":{},"91":{},"103":{},"137":{}},"component":{}}],["happen",{"_index":256,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"67":{},"87":{},"94":{},"131":{}},"component":{}}],["hard",{"_index":290,"title":{},"name":{},"text":{"2":{},"26":{},"28":{},"39":{},"48":{},"87":{},"94":{},"118":{},"120":{},"131":{}},"component":{}}],["hash",{"_index":302,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"74":{},"75":{},"87":{},"94":{},"131":{}},"component":{}}],["hasremoteequip",{"_index":1195,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"73":{},"84":{},"127":{}},"component":{}}],["have",{"_index":1368,"title":{},"name":{},"text":{"64":{}},"component":{}}],["head",{"_index":64,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["header",{"_index":241,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["headless",{"_index":186,"title":{},"name":{},"text":{"2":{},"13":{},"33":{},"48":{},"56":{},"94":{},"105":{},"125":{}},"component":{}}],["health",{"_index":1296,"title":{"40-1":{},"132-1":{}},"name":{},"text":{"40":{},"132":{}},"component":{}}],["healthi",{"_index":1302,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["heap",{"_index":1122,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["held",{"_index":787,"title":{},"name":{},"text":{"19":{},"69":{},"110":{}},"component":{}}],["hello",{"_index":1534,"title":{},"name":{},"text":{"72":{}},"component":{}}],["helm",{"_index":432,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["help",{"_index":615,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["helper",{"_index":1060,"title":{"70":{}},"name":{},"text":{"31":{},"36":{},"70":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["here",{"_index":119,"title":{},"name":{},"text":{"1":{},"2":{},"10":{},"11":{},"12":{},"15":{},"18":{},"30":{},"31":{},"32":{},"39":{},"47":{},"48":{},"54":{},"55":{},"58":{},"61":{},"66":{},"68":{},"80":{},"81":{},"82":{},"87":{},"93":{},"94":{},"102":{},"103":{},"104":{},"107":{},"111":{},"122":{},"123":{},"124":{},"131":{}},"component":{}}],["hidden",{"_index":893,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["hide",{"_index":860,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["hierarch",{"_index":953,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["high",{"_index":222,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["hold",{"_index":625,"title":{},"name":{},"text":{"11":{},"23":{},"54":{},"103":{},"115":{}},"component":{}}],["home",{"_index":1232,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["home/nkoester/git/modelix/modelix",{"_index":1655,"title":{},"name":{},"text":{"75":{}},"component":{}}],["hook",{"_index":454,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["host",{"_index":443,"title":{},"name":{},"text":{"9":{},"72":{},"101":{}},"component":{}}],["html",{"_index":194,"title":{"28-6":{},"120-6":{}},"name":{},"text":{"2":{},"13":{},"28":{},"48":{},"94":{},"105":{},"120":{}},"component":{}}],["http",{"_index":189,"title":{},"name":{},"text":{"2":{},"20":{},"28":{},"40":{},"48":{},"94":{},"112":{},"120":{},"132":{}},"component":{}}],["http://0.0.0.0:28101",{"_index":1663,"title":{},"name":{},"text":{"75":{}},"component":{}}],["http://0.0.0.0:28101/v2",{"_index":1143,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["http://0.0.0.0:8090",{"_index":1499,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["http://127.0.0.1:63320/node?ref=r%3adfa26643",{"_index":1425,"title":{},"name":{},"text":{"69":{}},"component":{}}],["http://localhost:28101",{"_index":824,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["http://localhost:28101/cours",{"_index":834,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["http://localhost:3000",{"_index":853,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["http://localhost:4200",{"_index":854,"title":{},"name":{},"text":{"22":{},"68":{},"74":{},"75":{},"114":{}},"component":{}}],["http://localhost:4201",{"_index":865,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["http://localhost:8090",{"_index":864,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["http://localhost:8090/lectur",{"_index":1524,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/lectures/mp",{"_index":1537,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/lectures/trash",{"_index":1538,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/room",{"_index":1504,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["http://localhost:8090/rooms/mp",{"_index":1520,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://localhost:8090/rooms/trash",{"_index":1523,"title":{},"name":{},"text":{"72":{}},"component":{}}],["http://voelter.de/data/pub/aplatformforsystemsandbusinessmodeling.pdf",{"_index":172,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["https://api.docs.modelix.org",{"_index":125,"title":{},"name":{},"text":{"1":{},"93":{}},"component":{}}],["https://diataxis.fr/explan",{"_index":347,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["https://diataxis.fr/how",{"_index":410,"title":{},"name":{},"text":{"8":{},"53":{},"100":{}},"component":{}}],["https://diataxis.fr/refer",{"_index":711,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["https://diataxis.fr/tutori",{"_index":755,"title":{},"name":{},"text":{"17":{},"60":{},"109":{}},"component":{}}],["https://en.wikipedia.org/wiki/jetbrains_mp",{"_index":337,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["https://github.com/modelix/increment",{"_index":717,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix",{"_index":716,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.cor",{"_index":714,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.doc",{"_index":718,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.mp",{"_index":715,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.platform",{"_index":713,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://github.com/modelix/modelix.sampl",{"_index":719,"title":{},"name":{},"text":{"15":{},"58":{},"107":{}},"component":{}}],["https://issues.modelix.org",{"_index":483,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["https://www.jetbrains.com/mp",{"_index":336,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["https://www.openapis.org",{"_index":1390,"title":{},"name":{},"text":{"67":{}},"component":{}}],["hybrid",{"_index":646,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["i.",{"_index":1154,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"67":{},"84":{},"85":{},"127":{},"128":{},"130":{}},"component":{}}],["id",{"_index":459,"title":{},"name":{},"text":{"9":{},"16":{},"24":{},"28":{},"33":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"120":{},"125":{},"135":{}},"component":{}}],["id(\"org.modelix.model",{"_index":1042,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["id.zip(titl",{"_index":944,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["idea",{"_index":43,"title":{"16-2":{},"24-5":{},"43-5":{},"61-5":{},"77-5":{},"108-2":{},"116-5":{},"135-5":{}},"name":{},"text":{"1":{},"9":{},"11":{},"16":{},"24":{},"43":{},"47":{},"54":{},"61":{},"68":{},"77":{},"93":{},"101":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["identifi",{"_index":301,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["ignit",{"_index":218,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["ignor",{"_index":1227,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["ilanguag",{"_index":1106,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["illumin",{"_index":343,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["illustr",{"_index":1372,"title":{},"name":{},"text":{"66":{},"68":{}},"component":{}}],["imag",{"_index":181,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"28":{},"48":{},"54":{},"94":{},"98":{},"103":{},"120":{}},"component":{}}],["images).maploc",{"_index":962,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["images.get",{"_index":981,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["imaginari",{"_index":1350,"title":{},"name":{},"text":{"64":{}},"component":{}}],["immedi",{"_index":86,"title":{},"name":{},"text":{"1":{},"40":{},"47":{},"93":{},"132":{}},"component":{}}],["implement",{"_index":48,"title":{"74":{},"75":{},"67-5":{},"68-3":{}},"name":{},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"20":{},"22":{},"23":{},"26":{},"28":{},"34":{},"39":{},"47":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"83":{},"87":{},"93":{},"94":{},"98":{},"103":{},"112":{},"114":{},"115":{},"118":{},"120":{},"126":{},"131":{}},"component":{}}],["implementation(\"org.modelix:model",{"_index":1323,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implementation(enforcedplatform(\"org.modelix:platform",{"_index":1321,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implementation(platform(\"org.modelix:platform",{"_index":1330,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["implicit",{"_index":82,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["import",{"_index":357,"title":{},"name":{},"text":{"6":{},"9":{},"31":{},"69":{},"81":{},"98":{},"101":{},"123":{}},"component":{}}],["inamedconcept",{"_index":1415,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.children",{"_index":1452,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.properti",{"_index":1432,"title":{},"name":{},"text":{"69":{}},"component":{}}],["inamedconcept.refer",{"_index":1454,"title":{},"name":{},"text":{"69":{}},"component":{}}],["includ",{"_index":654,"title":{},"name":{},"text":{"11":{},"15":{},"24":{},"26":{},"30":{},"33":{},"54":{},"58":{},"67":{},"74":{},"75":{},"77":{},"80":{},"103":{},"107":{},"116":{},"118":{},"122":{},"125":{}},"component":{}}],["includeconcept",{"_index":1249,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includeconcept(\"concept.fq.nam",{"_index":1068,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includedconcept",{"_index":1235,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedlanguag",{"_index":1233,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedlanguagenamespac",{"_index":1234,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includedmodul",{"_index":1236,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includednamespac",{"_index":1248,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includelanguag",{"_index":1244,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includelanguage(\"language.fq.nam",{"_index":1067,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includelanguage(\"org.modelix.model.repositoryconcept",{"_index":1070,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["includemodul",{"_index":1109,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includemodule(\"mysolut",{"_index":1140,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includemodulesbyprefix",{"_index":1112,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["includenamespac",{"_index":1246,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includenamespace(\"jetbrains.mps.baselanguag",{"_index":1272,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["includenamespace(\"org.exampl",{"_index":1066,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["incompat",{"_index":1328,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["incomplet",{"_index":1119,"title":{},"name":{},"text":{"33":{}},"component":{}}],["increment",{"_index":641,"title":{},"name":{},"text":{"11":{},"13":{},"33":{},"54":{},"56":{},"103":{},"105":{},"125":{}},"component":{}}],["indep",{"_index":296,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["independ",{"_index":605,"title":{"28-1":{},"120-1":{}},"name":{},"text":{"11":{},"38":{},"39":{},"54":{},"64":{},"87":{},"103":{},"130":{},"131":{}},"component":{}}],["index",{"_index":9,"title":{"40-2":{},"132-2":{}},"name":{"1":{},"5":{},"8":{},"14":{},"17":{},"18":{},"24":{},"25":{},"27":{},"42":{},"43":{},"44":{},"46":{},"47":{},"51":{},"53":{},"57":{},"60":{},"61":{},"77":{},"78":{},"79":{},"88":{},"89":{},"90":{},"92":{},"93":{},"97":{},"100":{},"106":{},"109":{},"111":{},"116":{},"117":{},"119":{},"134":{},"135":{},"136":{},"138":{}},"text":{"40":{},"132":{}},"component":{}}],["indic",{"_index":1301,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["individu",{"_index":97,"title":{},"name":{},"text":{"1":{},"6":{},"10":{},"11":{},"15":{},"16":{},"18":{},"24":{},"43":{},"44":{},"45":{},"47":{},"54":{},"58":{},"59":{},"61":{},"67":{},"68":{},"72":{},"73":{},"77":{},"89":{},"90":{},"91":{},"93":{},"98":{},"102":{},"103":{},"107":{},"108":{},"111":{},"116":{},"135":{},"136":{},"137":{}},"component":{}}],["info",{"_index":1496,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["inform",{"_index":559,"title":{},"name":{},"text":{"11":{},"14":{},"15":{},"23":{},"54":{},"57":{},"58":{},"64":{},"68":{},"103":{},"106":{},"107":{},"115":{}},"component":{}}],["initi",{"_index":557,"title":{},"name":{},"text":{"11":{},"21":{},"22":{},"23":{},"54":{},"61":{},"72":{},"74":{},"75":{},"103":{},"113":{},"114":{},"115":{}},"component":{}}],["ink",{"_index":1357,"title":{},"name":{},"text":{"64":{}},"component":{}}],["inmemori",{"_index":1089,"title":{},"name":{},"text":{"32":{},"70":{},"75":{},"82":{},"124":{}},"component":{}}],["inod",{"_index":908,"title":{"28-4":{},"120-4":{}},"name":{},"text":{"28":{},"69":{},"120":{}},"component":{}}],["inode.isload",{"_index":1031,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["inodehold",{"_index":1431,"title":{},"name":{},"text":{"69":{}},"component":{}}],["input",{"_index":250,"title":{},"name":{},"text":{"2":{},"36":{},"48":{},"85":{},"94":{},"128":{}},"component":{}}],["input.children(\"models\").requestfrag",{"_index":990,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["input.children(\"modules\").requestfrag",{"_index":987,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["input.property(\"name\").request",{"_index":989,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insertfragment(model",{"_index":997,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insertfragment(modul",{"_index":998,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["insid",{"_index":399,"title":{},"name":{},"text":{"6":{},"18":{},"28":{},"33":{},"36":{},"45":{},"67":{},"72":{},"85":{},"91":{},"98":{},"111":{},"120":{},"125":{},"128":{},"137":{}},"component":{}}],["insight",{"_index":634,"title":{},"name":{},"text":{"11":{},"54":{},"73":{},"103":{}},"component":{}}],["inspect",{"_index":1337,"title":{},"name":{},"text":{"61":{}},"component":{}}],["inspir",{"_index":39,"title":{},"name":{},"text":{"1":{},"18":{},"26":{},"47":{},"61":{},"93":{},"111":{},"118":{}},"component":{}}],["instal",{"_index":190,"title":{},"name":{},"text":{"2":{},"9":{},"18":{},"21":{},"22":{},"23":{},"48":{},"94":{},"101":{},"111":{},"113":{},"114":{},"115":{}},"component":{}}],["instanc",{"_index":204,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"13":{},"21":{},"22":{},"23":{},"28":{},"29":{},"30":{},"34":{},"39":{},"48":{},"56":{},"64":{},"67":{},"68":{},"69":{},"70":{},"72":{},"73":{},"74":{},"75":{},"80":{},"83":{},"87":{},"94":{},"98":{},"101":{},"105":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"126":{},"131":{}},"component":{}}],["instanti",{"_index":1626,"title":{},"name":{},"text":{"75":{}},"component":{}}],["instantli",{"_index":800,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["instead",{"_index":274,"title":{},"name":{},"text":{"2":{},"33":{},"39":{},"45":{},"48":{},"75":{},"87":{},"91":{},"94":{},"125":{},"131":{},"137":{}},"component":{}}],["instruct",{"_index":813,"title":{"21-2":{},"113-2":{}},"name":{},"text":{},"component":{}}],["int",{"_index":956,"title":{},"name":{},"text":{"28":{},"33":{},"35":{},"84":{},"120":{},"125":{},"127":{}},"component":{}}],["integ",{"_index":1417,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integer.parseint(propertyvalu",{"_index":1441,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integer.tostring(valu",{"_index":1444,"title":{},"name":{},"text":{"69":{}},"component":{}}],["integr",{"_index":28,"title":{"11-7":{},"28-2":{},"28-6":{},"54-10":{},"103-7":{},"120-2":{},"120-6":{}},"name":{},"text":{"1":{},"4":{},"11":{},"18":{},"31":{},"47":{},"50":{},"54":{},"61":{},"81":{},"93":{},"96":{},"103":{},"111":{},"123":{}},"component":{}}],["intellij",{"_index":424,"title":{"16-2":{},"24-5":{},"43-5":{},"61-5":{},"77-5":{},"108-2":{},"116-5":{},"135-5":{}},"name":{},"text":{"9":{},"16":{},"24":{},"43":{},"61":{},"77":{},"101":{},"108":{},"116":{},"135":{}},"component":{}}],["intend",{"_index":727,"title":{},"name":{},"text":{"15":{},"18":{},"35":{},"58":{},"61":{},"67":{},"84":{},"107":{},"111":{},"127":{}},"component":{}}],["intent",{"_index":1484,"title":{},"name":{},"text":{"71":{}},"component":{}}],["intention",{"_index":778,"title":{},"name":{},"text":{"19":{},"69":{},"110":{}},"component":{}}],["interact",{"_index":198,"title":{},"name":{},"text":{"2":{},"6":{},"22":{},"23":{},"41":{},"48":{},"94":{},"98":{},"114":{},"115":{},"133":{}},"component":{}}],["interest",{"_index":673,"title":{},"name":{},"text":{"11":{},"30":{},"31":{},"32":{},"54":{},"80":{},"81":{},"82":{},"103":{},"122":{},"123":{},"124":{}},"component":{}}],["interfac",{"_index":569,"title":{},"name":{},"text":{"11":{},"35":{},"36":{},"54":{},"84":{},"103":{},"127":{},"128":{}},"component":{}}],["intermedi",{"_index":606,"title":{"71":{}},"name":{},"text":{"11":{},"54":{},"68":{},"103":{}},"component":{}}],["intermediari",{"_index":844,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["intern",{"_index":202,"title":{},"name":{},"text":{"2":{},"28":{},"33":{},"39":{},"48":{},"87":{},"94":{},"120":{},"125":{},"131":{}},"component":{}}],["interoper",{"_index":46,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["interst",{"_index":1332,"title":{},"name":{},"text":{"47":{}},"component":{}}],["into(mpsdir",{"_index":1059,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["introduc",{"_index":901,"title":{},"name":{},"text":{"26":{},"67":{},"118":{}},"component":{}}],["introduct",{"_index":0,"title":{"18":{},"111":{},"1-1":{},"24-1":{},"43-1":{},"47-1":{},"61-1":{},"77-1":{},"89-1":{},"93-1":{},"116-1":{},"135-1":{}},"name":{},"text":{},"component":{}}],["introspect",{"_index":1539,"title":{"73-3":{}},"name":{},"text":{},"component":{}}],["investig",{"_index":655,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["invok",{"_index":916,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["involv",{"_index":568,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"75":{},"103":{}},"component":{}}],["isn’t",{"_index":1413,"title":{},"name":{},"text":{"69":{}},"component":{}}],["issu",{"_index":144,"title":{"9-7":{},"101-7":{}},"name":{},"text":{"1":{},"9":{},"10":{},"12":{},"26":{},"36":{},"47":{},"54":{},"55":{},"93":{},"101":{},"102":{},"104":{},"118":{},"128":{}},"component":{}}],["issue/modelix",{"_index":460,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["issues.modelix.org",{"_index":444,"title":{},"name":{},"text":{"9":{},"11":{},"54":{},"101":{},"103":{}},"component":{}}],["it.children(\"classes\").ofconcept(c_classconcept).first",{"_index":929,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.children(\"modules\").property(\"name\").tolist",{"_index":920,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.first",{"_index":947,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.id",{"_index":941,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.id.request",{"_index":975,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.imag",{"_index":964,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.images.maploc",{"_index":960,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.images.tolist",{"_index":943,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.map(buildhtmlqueri",{"_index":986,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.member.ofconcept(c_staticmethoddeclaration).name.tolist",{"_index":931,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.properties.nam",{"_index":1407,"title":{},"name":{},"text":{"69":{}},"component":{}}],["it.second",{"_index":948,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.third",{"_index":949,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.titl",{"_index":942,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.title.request",{"_index":976,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["it.visibility.instanceof(c_publicvis",{"_index":925,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["itemi",{"_index":480,"title":{},"name":{},"text":{"10":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"102":{},"108":{},"116":{},"135":{}},"component":{}}],["iter",{"_index":651,"title":{},"name":{},"text":{"11":{},"30":{},"54":{},"80":{},"103":{},"122":{}},"component":{}}],["itself",{"_index":315,"title":{},"name":{},"text":{"2":{},"11":{},"18":{},"20":{},"39":{},"48":{},"54":{},"61":{},"67":{},"69":{},"74":{},"75":{},"87":{},"94":{},"103":{},"111":{},"112":{},"131":{}},"component":{}}],["it’",{"_index":319,"title":{},"name":{},"text":{"2":{},"26":{},"28":{},"48":{},"69":{},"94":{},"118":{},"120":{}},"component":{}}],["jar:file:/home/nkoester/.gradle/caches/modul",{"_index":1616,"title":{},"name":{},"text":{"75":{}},"component":{}}],["java",{"_index":425,"title":{},"name":{},"text":{"9":{},"11":{},"18":{},"36":{},"44":{},"54":{},"63":{},"69":{},"70":{},"85":{},"90":{},"101":{},"103":{},"111":{},"128":{},"136":{}},"component":{}}],["java/kotlin",{"_index":724,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["javaexecut",{"_index":1229,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["javascript",{"_index":195,"title":{},"name":{},"text":{"2":{},"20":{},"48":{},"94":{},"112":{}},"component":{}}],["jdbc",{"_index":1084,"title":{},"name":{},"text":{"32":{},"75":{},"82":{},"124":{}},"component":{}}],["jdbcconf",{"_index":1085,"title":{},"name":{},"text":{"32":{},"82":{},"124":{}},"component":{}}],["jetbrain",{"_index":157,"title":{},"name":{},"text":{"1":{},"3":{},"10":{},"11":{},"15":{},"24":{},"31":{},"47":{},"49":{},"54":{},"58":{},"67":{},"77":{},"81":{},"93":{},"95":{},"102":{},"103":{},"107":{},"116":{},"123":{}},"component":{}}],["jetbrains.mps.lang.core.baseconcept",{"_index":1180,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["jetbrains.mps.lang.core.inamedconcept",{"_index":1181,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["jetbrains.mps.lang.core.structure.baseconcept",{"_index":1419,"title":{},"name":{},"text":{"69":{}},"component":{}}],["jetbrains.mps.lang.core.structure.inamedconcept",{"_index":1420,"title":{},"name":{},"text":{"69":{}},"component":{}}],["join",{"_index":154,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["jq",{"_index":1508,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["js",{"_index":586,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["json",{"_index":608,"title":{},"name":{},"text":{"11":{},"33":{},"35":{},"36":{},"37":{},"54":{},"66":{},"74":{},"84":{},"85":{},"86":{},"103":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["jsondir",{"_index":1225,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["jvm",{"_index":585,"title":{},"name":{},"text":{"11":{},"15":{},"18":{},"54":{},"58":{},"61":{},"103":{},"107":{},"111":{}},"component":{}}],["kb",{"_index":1582,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["keep",{"_index":445,"title":{},"name":{},"text":{"9":{},"34":{},"39":{},"83":{},"87":{},"101":{},"126":{},"131":{}},"component":{}}],["key",{"_index":276,"title":{"11-1":{},"54-4":{},"103-1":{}},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["keyboard",{"_index":251,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["keycloak",{"_index":704,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["keyword",{"_index":322,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["kind",{"_index":116,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["know",{"_index":308,"title":{},"name":{},"text":{"2":{},"26":{},"39":{},"48":{},"87":{},"94":{},"118":{},"131":{}},"component":{}}],["knowledg",{"_index":648,"title":{},"name":{},"text":{"11":{},"54":{},"67":{},"75":{},"103":{}},"component":{}}],["known",{"_index":965,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["kotlin",{"_index":520,"title":{"28-6":{},"120-6":{}},"name":{},"text":{"10":{},"11":{},"13":{},"20":{},"23":{},"26":{},"28":{},"31":{},"34":{},"36":{},"37":{},"38":{},"54":{},"56":{},"63":{},"81":{},"83":{},"85":{},"86":{},"103":{},"105":{},"112":{},"115":{},"118":{},"120":{},"123":{},"126":{},"128":{},"129":{},"130":{}},"component":{}}],["kotlin/typescript",{"_index":1228,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["kotlindir",{"_index":1071,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["kotlinproject",{"_index":1073,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["ktor",{"_index":1347,"title":{},"name":{},"text":{"63":{},"67":{}},"component":{}}],["ktor.appl",{"_index":1497,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["kubernet",{"_index":215,"title":{"67-8":{}},"name":{},"text":{"2":{},"6":{},"9":{},"11":{},"48":{},"54":{},"94":{},"98":{},"101":{},"103":{}},"component":{}}],["l_",{"_index":1257,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["langaug",{"_index":1155,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["languag",{"_index":30,"title":{"62":{},"11-9":{},"54-12":{},"67-2":{},"69-1":{},"103-9":{}},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"6":{},"11":{},"15":{},"18":{},"19":{},"22":{},"23":{},"26":{},"28":{},"31":{},"33":{},"35":{},"36":{},"37":{},"47":{},"48":{},"49":{},"50":{},"54":{},"58":{},"61":{},"63":{},"67":{},"69":{},"71":{},"72":{},"81":{},"84":{},"85":{},"86":{},"93":{},"94":{},"95":{},"96":{},"98":{},"103":{},"107":{},"110":{},"111":{},"114":{},"115":{},"118":{},"120":{},"123":{},"125":{},"127":{},"128":{},"129":{}},"component":{}}],["languageclass",{"_index":1256,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languageclass.prefix",{"_index":1274,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languageclass.suffix",{"_index":1276,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["languagedata",{"_index":1158,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["languageprefix",{"_index":1247,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["larg",{"_index":869,"title":{},"name":{},"text":{"26":{},"64":{},"118":{}},"component":{}}],["larger",{"_index":951,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["latest",{"_index":738,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"61":{},"77":{},"81":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["launch",{"_index":1543,"title":{},"name":{},"text":{"73":{}},"component":{}}],["layer",{"_index":1379,"title":{},"name":{},"text":{"67":{},"71":{},"74":{},"75":{}},"component":{}}],["lazi",{"_index":880,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["lead",{"_index":1327,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["learn",{"_index":106,"title":{},"name":{},"text":{"1":{},"6":{},"17":{},"45":{},"47":{},"60":{},"72":{},"91":{},"93":{},"98":{},"109":{},"137":{}},"component":{}}],["lectur",{"_index":777,"title":{},"name":{},"text":{"19":{},"35":{},"64":{},"68":{},"69":{},"72":{},"84":{},"110":{},"127":{}},"component":{}}],["lectureassign",{"_index":1214,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["lecturelist",{"_index":786,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["lectureref",{"_index":1525,"title":{},"name":{},"text":{"72":{}},"component":{}}],["left",{"_index":93,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["legaci",{"_index":564,"title":{},"name":{},"text":{"11":{},"54":{},"74":{},"103":{}},"component":{}}],["lesson",{"_index":108,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["level",{"_index":553,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"74":{},"75":{},"77":{},"89":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["lib",{"_index":689,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["librari",{"_index":804,"title":{},"name":{},"text":{"20":{},"74":{},"75":{},"112":{}},"component":{}}],["licens",{"_index":470,"title":{},"name":{},"text":{"10":{},"39":{},"54":{},"87":{},"102":{},"131":{}},"component":{}}],["ligh",{"_index":1346,"title":{},"name":{},"text":{"63":{}},"component":{}}],["light",{"_index":691,"title":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"name":{"30":{},"34":{},"80":{},"83":{},"122":{},"126":{}},"text":{"13":{},"15":{},"24":{},"29":{},"34":{},"56":{},"58":{},"63":{},"66":{},"72":{},"74":{},"75":{},"77":{},"83":{},"105":{},"107":{},"116":{},"121":{},"126":{}},"component":{}}],["lightmodelcli",{"_index":907,"title":{"28-2":{},"120-2":{}},"name":{},"text":{"28":{},"120":{}},"component":{}}],["lightmodelclient.build",{"_index":1016,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["lightmodelclient.builder().modelqlclient(modelqlclient).build",{"_index":918,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["limit",{"_index":329,"title":{"69-3":{}},"name":{},"text":{"3":{},"11":{},"49":{},"54":{},"67":{},"69":{},"95":{},"103":{}},"component":{}}],["line",{"_index":1036,"title":{},"name":{},"text":{"31":{},"35":{},"81":{},"84":{},"123":{},"127":{}},"component":{}}],["link",{"_index":680,"title":{},"name":{},"text":{"12":{},"55":{},"104":{}},"component":{}}],["lionweb",{"_index":536,"title":{"11-11":{},"54-14":{},"103-11":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["list",{"_index":371,"title":{"15-1":{},"58-1":{},"107-1":{}},"name":{},"text":{"6":{},"10":{},"11":{},"28":{},"30":{},"31":{},"36":{},"54":{},"80":{},"81":{},"85":{},"98":{},"102":{},"103":{},"120":{},"122":{},"123":{},"128":{}},"component":{}}],["listen",{"_index":1595,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["littl",{"_index":798,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["live",{"_index":1151,"title":{},"name":{},"text":{"34":{},"74":{},"75":{},"83":{},"126":{}},"component":{}}],["load",{"_index":223,"title":{},"name":{},"text":{"2":{},"26":{},"30":{},"40":{},"48":{},"69":{},"72":{},"75":{},"80":{},"94":{},"118":{},"122":{},"132":{}},"component":{}}],["local",{"_index":207,"title":{"32":{},"82":{},"124":{}},"name":{},"text":{"2":{},"9":{},"28":{},"33":{},"39":{},"48":{},"75":{},"87":{},"94":{},"101":{},"120":{},"125":{},"131":{}},"component":{}}],["localhost:4200",{"_index":1596,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["localsourc",{"_index":1092,"title":{"33-5":{},"125-5":{}},"name":{},"text":{},"component":{}}],["locat",{"_index":436,"title":{},"name":{},"text":{"9":{},"16":{},"24":{},"33":{},"36":{},"43":{},"59":{},"61":{},"77":{},"85":{},"89":{},"101":{},"108":{},"116":{},"125":{},"128":{},"135":{}},"component":{}}],["lock",{"_index":597,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["log",{"_index":1116,"title":{},"name":{},"text":{"33":{},"72":{}},"component":{}}],["logback",{"_index":1611,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logback.groovi",{"_index":1614,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logback.xml",{"_index":1615,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger",{"_index":1636,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger[org.modelix",{"_index":1640,"title":{},"name":{},"text":{"75":{}},"component":{}}],["logger[root",{"_index":1642,"title":{},"name":{},"text":{"75":{}},"component":{}}],["login",{"_index":235,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["long",{"_index":1148,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"85":{},"126":{},"128":{}},"component":{}}],["look",{"_index":845,"title":{},"name":{},"text":{"22":{},"23":{},"69":{},"114":{},"115":{}},"component":{}}],["lose",{"_index":320,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["low",{"_index":552,"title":{},"name":{},"text":{"11":{},"54":{},"64":{},"103":{}},"component":{}}],["lower",{"_index":1149,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["mac/linux",{"_index":734,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["machin",{"_index":421,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["machineri",{"_index":709,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["made",{"_index":665,"title":{},"name":{},"text":{"11":{},"20":{},"22":{},"23":{},"31":{},"54":{},"81":{},"103":{},"112":{},"114":{},"115":{},"123":{}},"component":{}}],["mail",{"_index":243,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["main",{"_index":90,"title":{"15-2":{},"15-3":{},"15-4":{},"58-2":{},"58-3":{},"58-4":{},"107-2":{},"107-3":{},"107-4":{}},"name":{},"text":{"1":{},"11":{},"19":{},"22":{},"23":{},"64":{},"69":{},"74":{},"75":{},"103":{},"110":{},"114":{},"115":{}},"component":{}}],["main.j",{"_index":1587,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["mainli",{"_index":1280,"title":{},"name":{},"text":{"37":{},"86":{},"129":{}},"component":{}}],["maintain",{"_index":598,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["mainten",{"_index":612,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["major",{"_index":493,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["make",{"_index":419,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"18":{},"20":{},"21":{},"28":{},"45":{},"54":{},"61":{},"63":{},"68":{},"69":{},"91":{},"101":{},"102":{},"103":{},"111":{},"112":{},"113":{},"120":{},"137":{}},"component":{}}],["manag",{"_index":472,"title":{},"name":{},"text":{"10":{},"13":{},"16":{},"22":{},"23":{},"24":{},"43":{},"54":{},"56":{},"61":{},"77":{},"102":{},"105":{},"108":{},"114":{},"115":{},"116":{},"135":{}},"component":{}}],["mani",{"_index":484,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["manipul",{"_index":384,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["manual",{"_index":780,"title":{"65":{}},"name":{},"text":{"19":{},"66":{},"74":{},"75":{},"110":{}},"component":{}}],["map",{"_index":1156,"title":{"66-2":{}},"name":{},"text":{"35":{},"44":{},"84":{},"90":{},"127":{},"136":{}},"component":{}}],["maploc",{"_index":954,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mark",{"_index":517,"title":{},"name":{},"text":{"10":{}},"component":{}}],["materi",{"_index":710,"title":{},"name":{},"text":{"14":{},"57":{},"106":{}},"component":{}}],["matter",{"_index":1392,"title":{},"name":{},"text":{"68":{}},"component":{}}],["maven",{"_index":1044,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["max",{"_index":1647,"title":{},"name":{},"text":{"75":{}},"component":{}}],["maximum",{"_index":1400,"title":{},"name":{},"text":{"69":{}},"component":{}}],["maxparticip",{"_index":1173,"title":{},"name":{},"text":{"35":{},"72":{},"84":{},"127":{}},"component":{}}],["maxplac",{"_index":1193,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"73":{},"84":{},"127":{}},"component":{}}],["mayor",{"_index":103,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["mb",{"_index":1578,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["mean",{"_index":151,"title":{},"name":{},"text":{"1":{},"2":{},"33":{},"39":{},"47":{},"48":{},"87":{},"93":{},"94":{},"125":{},"131":{}},"component":{}}],["meant",{"_index":762,"title":{},"name":{},"text":{"18":{},"61":{},"67":{},"111":{}},"component":{}}],["meetup",{"_index":512,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["member",{"_index":923,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["memori",{"_index":889,"title":{},"name":{},"text":{"26":{},"32":{},"36":{},"75":{},"82":{},"118":{},"124":{},"128":{}},"component":{}}],["menu",{"_index":1333,"title":{},"name":{},"text":{"47":{}},"component":{}}],["messag",{"_index":453,"title":{},"name":{},"text":{"9":{},"72":{},"101":{}},"component":{}}],["met",{"_index":1542,"title":{},"name":{},"text":{"73":{}},"component":{}}],["meta",{"_index":37,"title":{"69":{}},"name":{"69":{}},"text":{"1":{},"3":{},"11":{},"15":{},"18":{},"28":{},"31":{},"35":{},"36":{},"38":{},"47":{},"49":{},"54":{},"58":{},"61":{},"66":{},"67":{},"81":{},"84":{},"93":{},"95":{},"103":{},"107":{},"111":{},"120":{},"123":{},"127":{},"128":{},"130":{}},"component":{}}],["metamodel",{"_index":381,"title":{"19":{},"35":{},"84":{},"110":{},"127":{}},"name":{"19":{},"35":{},"84":{},"110":{},"127":{}},"text":{"6":{},"11":{},"13":{},"19":{},"20":{},"23":{},"31":{},"35":{},"36":{},"37":{},"38":{},"54":{},"56":{},"63":{},"67":{},"81":{},"84":{},"85":{},"86":{},"98":{},"103":{},"105":{},"110":{},"112":{},"115":{},"123":{},"127":{},"128":{},"129":{},"130":{}},"component":{}}],["method",{"_index":1097,"title":{"36-4":{},"85-4":{},"128-4":{}},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["migrat",{"_index":664,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["minim",{"_index":1095,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["minimum",{"_index":891,"title":{},"name":{},"text":{"26":{},"28":{},"118":{},"120":{}},"component":{}}],["minor",{"_index":494,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["minut",{"_index":1367,"title":{},"name":{},"text":{"64":{}},"component":{}}],["miss",{"_index":950,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mission",{"_index":339,"title":{"4-2":{},"50-2":{},"96-2":{}},"name":{},"text":{},"component":{}}],["mode",{"_index":187,"title":{},"name":{},"text":{"2":{},"48":{},"74":{},"75":{},"94":{}},"component":{}}],["model",{"_index":14,"title":{"21":{},"22":{},"23":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"62":{},"69":{},"70":{},"73":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"113":{},"114":{},"115":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{},"2-3":{},"11-3":{},"11-4":{},"21-4":{},"21-6":{},"39-2":{},"48-3":{},"54-6":{},"54-7":{},"67-3":{},"87-2":{},"94-3":{},"103-3":{},"103-4":{},"113-4":{},"113-6":{},"131-2":{}},"name":{"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"69":{},"70":{},"72":{},"73":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{}},"text":{"1":{},"2":{},"4":{},"6":{},"10":{},"11":{},"13":{},"15":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"47":{},"48":{},"50":{},"54":{},"56":{},"58":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"93":{},"94":{},"96":{},"98":{},"102":{},"103":{},"105":{},"107":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{}},"component":{}}],["model:1.3.2",{"_index":1476,"title":{},"name":{},"text":{"70":{}},"component":{}}],["modelfacade.tolocalbranch(modelfacade.newlocaltre",{"_index":1003,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["modelix",{"_index":8,"title":{"1":{},"4":{},"6":{},"13":{},"15":{},"39":{},"44":{},"45":{},"47":{},"50":{},"56":{},"58":{},"61":{},"87":{},"90":{},"91":{},"93":{},"96":{},"98":{},"105":{},"107":{},"131":{},"136":{},"137":{},"2-1":{},"6-1":{},"6-4":{},"15-1":{},"15-2":{},"15-3":{},"15-4":{},"16-3":{},"24-6":{},"43-6":{},"48-1":{},"58-1":{},"58-2":{},"58-3":{},"58-4":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"94-1":{},"98-1":{},"98-4":{},"107-1":{},"107-2":{},"107-3":{},"107-4":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"19":{},"20":{},"23":{},"24":{},"26":{},"34":{},"35":{},"38":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"49":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"67":{},"68":{},"69":{},"71":{},"75":{},"77":{},"83":{},"84":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"105":{},"107":{},"108":{},"110":{},"111":{},"112":{},"115":{},"116":{},"118":{},"126":{},"127":{},"130":{},"131":{},"135":{},"136":{},"137":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{}}}],["modelix.cor",{"_index":447,"title":{"24":{},"25":{},"27":{},"42":{},"77":{},"78":{},"79":{},"88":{},"116":{},"117":{},"119":{},"134":{}},"name":{},"text":{"9":{},"11":{},"15":{},"24":{},"32":{},"54":{},"58":{},"77":{},"82":{},"101":{},"103":{},"107":{},"116":{},"124":{}},"component":{}}],["modelix.doc",{"_index":620,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["modelix.platform",{"_index":720,"title":{"43":{},"46":{},"89":{},"92":{},"135":{},"138":{}},"name":{},"text":{"15":{},"43":{},"58":{},"89":{},"107":{},"135":{}},"component":{}}],["modelix/model",{"_index":839,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["modelix/modelix",{"_index":1475,"title":{},"name":{},"text":{"70":{}},"component":{}}],["modelix/modelix.doc",{"_index":137,"title":{},"name":{},"text":{"1":{},"12":{},"47":{},"55":{},"93":{},"104":{}},"component":{}}],["modelix/vu",{"_index":840,"title":{},"name":{},"text":{"22":{},"41":{},"114":{},"133":{}},"component":{}}],["modelix_platform_vers",{"_index":1318,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["modelixcorevers",{"_index":1041,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modelixcoreversion=1.4.10",{"_index":1038,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modelnam",{"_index":991,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelname.get",{"_index":994,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelql",{"_index":706,"title":{"26":{},"28":{},"72":{},"118":{},"120":{},"28-3":{},"120-3":{}},"name":{"26":{},"28":{},"118":{},"120":{}},"text":{"13":{},"26":{},"28":{},"36":{},"63":{},"67":{},"71":{},"72":{},"105":{},"118":{},"120":{},"128":{}},"component":{}}],["modelqlcli",{"_index":906,"title":{"28-1":{},"120-1":{}},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlclient.builder().build",{"_index":917,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlclient.builder().url(\"http://localhost/query\").httpclient(httpclient).build",{"_index":913,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modelqlkotlindir",{"_index":921,"title":{},"name":{},"text":{"28":{},"36":{},"120":{},"128":{}},"component":{}}],["modelserv",{"_index":849,"title":{},"name":{},"text":{"22":{},"23":{},"75":{},"114":{},"115":{}},"component":{}}],["modelsync",{"_index":1090,"title":{"33-3":{},"125-3":{}},"name":{},"text":{"33":{},"125":{}},"component":{}}],["modif",{"_index":286,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["modifi",{"_index":555,"title":{},"name":{},"text":{"11":{},"22":{},"23":{},"54":{},"103":{},"114":{},"115":{}},"component":{}}],["modul",{"_index":203,"title":{},"name":{},"text":{"2":{},"28":{},"30":{},"33":{},"36":{},"39":{},"48":{},"80":{},"85":{},"87":{},"94":{},"120":{},"122":{},"125":{},"128":{},"131":{}},"component":{}}],["modulefold",{"_index":1230,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["modulenam",{"_index":988,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modulename.get",{"_index":996,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["modulesfrom",{"_index":1243,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"build/depend",{"_index":1069,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"languag",{"_index":1063,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["modulesfrom(projectdir.resolve(\"solut",{"_index":1064,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["moment",{"_index":739,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"69":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["mono",{"_index":903,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["more",{"_index":58,"title":{},"name":{},"text":{"1":{},"3":{},"6":{},"11":{},"15":{},"19":{},"23":{},"26":{},"28":{},"30":{},"31":{},"32":{},"34":{},"45":{},"47":{},"49":{},"54":{},"58":{},"64":{},"67":{},"74":{},"75":{},"80":{},"81":{},"82":{},"83":{},"91":{},"93":{},"95":{},"98":{},"103":{},"107":{},"110":{},"115":{},"118":{},"120":{},"122":{},"123":{},"124":{},"126":{},"137":{}},"component":{}}],["motiv",{"_index":178,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["mous",{"_index":252,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["mp",{"_index":153,"title":{"21":{},"35":{},"40":{},"62":{},"84":{},"113":{},"127":{},"132":{},"11-8":{},"21-3":{},"21-5":{},"22-4":{},"23-4":{},"39-2":{},"54-11":{},"67-2":{},"87-2":{},"103-8":{},"113-3":{},"113-5":{},"114-4":{},"115-4":{},"131-2":{}},"name":{"40":{},"132":{}},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"13":{},"15":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"28":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"39":{},"45":{},"47":{},"48":{},"49":{},"54":{},"56":{},"58":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"83":{},"84":{},"85":{},"87":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"105":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"131":{},"137":{}},"component":{}}],["mps(\"com.jetbrains:mps:$mpsvers",{"_index":1054,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mps/languag",{"_index":842,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["mps/metamodel",{"_index":850,"title":{},"name":{},"text":{"22":{},"23":{},"31":{},"63":{},"81":{},"114":{},"115":{},"123":{}},"component":{}}],["mps/project",{"_index":819,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"74":{},"75":{},"113":{},"114":{},"115":{}},"component":{}}],["mps:96533389",{"_index":1169,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["mps:metamodel:build",{"_index":1082,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mps:project",{"_index":820,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["mps_version",{"_index":1317,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["mps_version:$modelix_platform_vers",{"_index":1322,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["mpsdebugport",{"_index":1126,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["mpsdepend",{"_index":1053,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsdir",{"_index":1050,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsheapsiz",{"_index":1121,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["mpshome",{"_index":1062,"title":{},"name":{},"text":{"31":{},"33":{},"36":{},"81":{},"85":{},"123":{},"125":{},"128":{}},"component":{}}],["mpslanguageregistry.getinst",{"_index":1411,"title":{},"name":{},"text":{"69":{}},"component":{}}],["mpsversion",{"_index":1046,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["mpsversion=2021.3.2",{"_index":1039,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["multi",{"_index":584,"title":{},"name":{},"text":{"11":{},"34":{},"54":{},"83":{},"103":{},"126":{}},"component":{}}],["multipl",{"_index":45,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"15":{},"26":{},"28":{},"35":{},"47":{},"48":{},"54":{},"58":{},"67":{},"84":{},"93":{},"94":{},"98":{},"103":{},"107":{},"118":{},"120":{},"127":{}},"component":{}}],["multiproject",{"_index":708,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["myimage(it",{"_index":961,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myimage(v",{"_index":958,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["mylanguageprefix",{"_index":1275,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["mylanguagesuffix",{"_index":1277,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["myproduct(id.get",{"_index":979,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myproduct(it.first",{"_index":963,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["myproduct(v",{"_index":955,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["n_",{"_index":1012,"title":{},"name":{},"text":{"29":{},"36":{},"85":{},"121":{},"128":{}},"component":{}}],["name",{"_index":416,"title":{"9-9":{},"9-10":{},"36-5":{},"85-5":{},"101-9":{},"101-10":{},"128-5":{}},"name":{},"text":{"9":{},"11":{},"13":{},"21":{},"28":{},"29":{},"31":{},"33":{},"35":{},"36":{},"40":{},"54":{},"56":{},"69":{},"72":{},"73":{},"74":{},"75":{},"81":{},"84":{},"85":{},"101":{},"103":{},"105":{},"113":{},"120":{},"121":{},"123":{},"125":{},"127":{},"128":{},"132":{}},"component":{}}],["nameconfig",{"_index":1254,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["namespac",{"_index":1065,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["nativ",{"_index":38,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["navig",{"_index":554,"title":{},"name":{},"text":{"11":{},"15":{},"54":{},"58":{},"103":{},"107":{}},"component":{}}],["ncludedlanguag",{"_index":1245,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["necessari",{"_index":614,"title":{},"name":{},"text":{"11":{},"18":{},"31":{},"45":{},"54":{},"81":{},"91":{},"103":{},"111":{},"123":{},"137":{}},"component":{}}],["necessarili",{"_index":1490,"title":{},"name":{},"text":{"71":{}},"component":{}}],["need",{"_index":262,"title":{},"name":{},"text":{"2":{},"9":{},"11":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"64":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"87":{},"89":{},"94":{},"101":{},"103":{},"108":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"131":{},"135":{}},"component":{}}],["new",{"_index":34,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"9":{},"11":{},"28":{},"33":{},"39":{},"45":{},"47":{},"48":{},"50":{},"54":{},"69":{},"72":{},"74":{},"75":{},"87":{},"91":{},"93":{},"94":{},"96":{},"101":{},"103":{},"120":{},"125":{},"131":{},"137":{}},"component":{}}],["newest",{"_index":1369,"title":{},"name":{},"text":{"64":{}},"component":{}}],["next",{"_index":67,"title":{"6-5":{},"98-5":{}},"name":{},"text":{"1":{},"2":{},"20":{},"36":{},"47":{},"48":{},"64":{},"68":{},"85":{},"93":{},"94":{},"112":{},"128":{}},"component":{}}],["nexu",{"_index":481,"title":{},"name":{},"text":{"10":{},"13":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"54":{},"56":{},"59":{},"61":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"105":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{}},"component":{}}],["ng",{"_index":1571,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["node",{"_index":275,"title":{},"name":{},"text":{"2":{},"19":{},"26":{},"28":{},"30":{},"33":{},"39":{},"48":{},"69":{},"74":{},"75":{},"80":{},"87":{},"94":{},"110":{},"118":{},"120":{},"122":{},"125":{},"131":{}},"component":{}}],["node%253ar%253ace161c54",{"_index":1521,"title":{},"name":{},"text":{"72":{}},"component":{}}],["node%3ar%3ace161c54",{"_index":1510,"title":{},"name":{},"text":{"72":{}},"component":{}}],["node.getchildren(\"modules\").filterload",{"_index":1033,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["none",{"_index":757,"title":{},"name":{},"text":{"18":{},"61":{},"111":{}},"component":{}}],["notabl",{"_index":603,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["note",{"_index":358,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["noteworthi",{"_index":1382,"title":{},"name":{},"text":{"67":{}},"component":{}}],["noth",{"_index":317,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["notif",{"_index":1386,"title":{},"name":{},"text":{"67":{}},"component":{}}],["notion",{"_index":902,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["notnul",{"_index":1433,"title":{},"name":{},"text":{"69":{}},"component":{}}],["now",{"_index":588,"title":{},"name":{},"text":{"11":{},"19":{},"22":{},"23":{},"31":{},"54":{},"69":{},"72":{},"73":{},"81":{},"103":{},"110":{},"114":{},"115":{},"123":{}},"component":{}}],["npm",{"_index":434,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["null",{"_index":1240,"title":{},"name":{},"text":{"36":{},"69":{},"72":{},"75":{},"128":{}},"component":{}}],["nullabl",{"_index":1436,"title":{},"name":{},"text":{"69":{}},"component":{}}],["number",{"_index":495,"title":{},"name":{},"text":{"10":{},"11":{},"26":{},"28":{},"45":{},"54":{},"91":{},"102":{},"103":{},"118":{},"120":{},"137":{}},"component":{}}],["o",{"_index":1676,"title":{},"name":{},"text":{"75":{}},"component":{}}],["o.m.s.r.modelserverlightwrapp",{"_index":1688,"title":{},"name":{},"text":{"75":{}},"component":{}}],["oauth",{"_index":239,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["object",{"_index":982,"title":{},"name":{},"text":{"28":{},"36":{},"41":{},"85":{},"120":{},"128":{},"133":{}},"component":{}}],["observ",{"_index":593,"title":{},"name":{},"text":{"11":{},"54":{},"73":{},"103":{}},"component":{}}],["obtain",{"_index":590,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"63":{},"67":{},"68":{},"75":{},"77":{},"89":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["ofconcept(c_staticmethoddeclar",{"_index":924,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["offer",{"_index":1298,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["on",{"_index":333,"title":{},"name":{},"text":{"3":{},"6":{},"11":{},"18":{},"20":{},"22":{},"26":{},"28":{},"39":{},"40":{},"45":{},"47":{},"49":{},"54":{},"61":{},"67":{},"68":{},"69":{},"71":{},"87":{},"91":{},"95":{},"98":{},"103":{},"111":{},"112":{},"114":{},"118":{},"120":{},"131":{},"132":{},"137":{}},"component":{}}],["onc",{"_index":666,"title":{},"name":{},"text":{"11":{},"19":{},"31":{},"54":{},"61":{},"63":{},"72":{},"73":{},"74":{},"75":{},"81":{},"103":{},"110":{},"123":{}},"component":{}}],["oneoff",{"_index":1202,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["onetimeschedul",{"_index":788,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["ongo",{"_index":1387,"title":{},"name":{},"text":{"67":{}},"component":{}}],["onsuccess",{"_index":978,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["open",{"_index":11,"title":{},"name":{},"text":{"1":{},"4":{},"10":{},"12":{},"16":{},"21":{},"22":{},"23":{},"24":{},"40":{},"43":{},"47":{},"50":{},"54":{},"55":{},"61":{},"72":{},"74":{},"75":{},"77":{},"93":{},"96":{},"102":{},"104":{},"108":{},"113":{},"114":{},"115":{},"116":{},"132":{},"135":{}},"component":{}}],["openapi",{"_index":1293,"title":{"71":{},"67-4":{},"67-5":{},"68-3":{}},"name":{"71":{}},"text":{"39":{},"63":{},"67":{},"68":{},"71":{},"72":{},"87":{},"131":{}},"component":{}}],["openapi.yaml",{"_index":1491,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["openapi.yml",{"_index":1482,"title":{},"name":{},"text":{"71":{}},"component":{}}],["oper",{"_index":281,"title":{"39-1":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"14":{},"28":{},"33":{},"39":{},"48":{},"57":{},"87":{},"94":{},"106":{},"120":{},"125":{},"131":{}},"component":{}}],["operand",{"_index":983,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["opt",{"_index":523,"title":{},"name":{},"text":{"10":{}},"component":{}}],["optim",{"_index":887,"title":{},"name":{},"text":{"26":{},"34":{},"83":{},"118":{},"126":{}},"component":{}}],["option",{"_index":210,"title":{"22-4":{},"23-4":{},"114-4":{},"115-4":{}},"name":{},"text":{"2":{},"11":{},"16":{},"23":{},"24":{},"28":{},"30":{},"35":{},"36":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"71":{},"75":{},"77":{},"80":{},"84":{},"85":{},"87":{},"89":{},"94":{},"103":{},"108":{},"115":{},"116":{},"120":{},"122":{},"127":{},"128":{},"131":{},"135":{}},"component":{}}],["options>ng",{"_index":1671,"title":{},"name":{},"text":{"75":{}},"component":{}}],["order",{"_index":297,"title":{},"name":{},"text":{"2":{},"9":{},"35":{},"39":{},"45":{},"48":{},"84":{},"87":{},"91":{},"94":{},"101":{},"127":{},"131":{},"137":{}},"component":{}}],["org.example.mylanguag",{"_index":1077,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["org.jetbrains.annotations.notnul",{"_index":1422,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.jetbrains.annotations.nul",{"_index":1424,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix",{"_index":685,"title":{},"name":{},"text":{"13":{},"56":{},"75":{},"105":{}},"component":{}}],["org.modelix.bulk",{"_index":696,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["org.modelix.languag",{"_index":1270,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["org.modelix.model",{"_index":686,"title":{},"name":{},"text":{"13":{},"31":{},"56":{},"81":{},"105":{},"123":{}},"component":{}}],["org.modelix.model.api",{"_index":1281,"title":{"38-2":{},"130-2":{}},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.api.inod",{"_index":1423,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix.model.area",{"_index":1287,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.data",{"_index":1285,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["org.modelix.model.server.main",{"_index":1481,"title":{},"name":{},"text":{"70":{},"75":{}},"component":{}}],["org.modelix.mp",{"_index":497,"title":{},"name":{},"text":{"10":{},"11":{},"13":{},"54":{},"56":{},"102":{},"103":{},"105":{}},"component":{}}],["org.modelix.mps.apigen.runtime.inodehold",{"_index":1421,"title":{},"name":{},"text":{"69":{}},"component":{}}],["org.modelix.mps.build",{"_index":698,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["org.modelix.mps.model",{"_index":693,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["org.modelix.platform",{"_index":627,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["org.modelix:modelql",{"_index":1237,"title":{},"name":{},"text":{"36":{},"128":{}},"component":{}}],["org.modelix:platform",{"_index":1325,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["organ",{"_index":1342,"title":{},"name":{},"text":{"63":{}},"component":{}}],["organis",{"_index":474,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["orient",{"_index":107,"title":{},"name":{},"text":{"1":{},"5":{},"8":{},"14":{},"17":{},"47":{},"51":{},"53":{},"57":{},"60":{},"93":{},"97":{},"100":{},"106":{},"109":{}},"component":{}}],["ot",{"_index":289,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["other",{"_index":57,"title":{},"name":{},"text":{"1":{},"15":{},"24":{},"47":{},"58":{},"77":{},"93":{},"107":{},"116":{}},"component":{}}],["otherwis",{"_index":79,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["out",{"_index":72,"title":{},"name":{},"text":{"1":{},"6":{},"10":{},"11":{},"30":{},"31":{},"32":{},"45":{},"47":{},"54":{},"80":{},"81":{},"82":{},"91":{},"93":{},"98":{},"102":{},"103":{},"122":{},"123":{},"124":{},"137":{}},"component":{}}],["outlin",{"_index":633,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["output",{"_index":968,"title":{},"name":{},"text":{"28":{},"36":{},"74":{},"75":{},"120":{},"128":{}},"component":{}}],["outsid",{"_index":667,"title":{},"name":{},"text":{"11":{},"30":{},"35":{},"54":{},"64":{},"68":{},"80":{},"84":{},"103":{},"122":{},"127":{}},"component":{}}],["over",{"_index":63,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"30":{},"39":{},"47":{},"48":{},"54":{},"58":{},"80":{},"87":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"122":{},"131":{}},"component":{}}],["overcom",{"_index":328,"title":{},"name":{},"text":{"3":{},"11":{},"49":{},"54":{},"95":{},"103":{}},"component":{}}],["overrid",{"_index":1313,"title":{"45-2":{},"91-2":{},"137-2":{}},"name":{},"text":{"45":{},"69":{},"91":{},"137":{}},"component":{}}],["overview",{"_index":62,"title":{"6":{},"20":{},"98":{},"112":{},"2-1":{},"11-1":{},"33-1":{},"35-1":{},"36-1":{},"38-1":{},"41-1":{},"48-1":{},"54-4":{},"66-1":{},"84-1":{},"85-1":{},"94-1":{},"103-1":{},"125-1":{},"127-1":{},"128-1":{},"130-1":{},"133-1":{}},"name":{"6":{},"20":{},"98":{},"112":{}},"text":{"1":{},"2":{},"6":{},"10":{},"11":{},"15":{},"18":{},"20":{},"22":{},"23":{},"47":{},"48":{},"54":{},"58":{},"67":{},"93":{},"94":{},"98":{},"102":{},"103":{},"107":{},"111":{},"112":{},"114":{},"115":{}},"component":{}}],["p",{"_index":1472,"title":{},"name":{},"text":{"70":{}},"component":{}}],["packag",{"_index":482,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"10":{},"13":{},"16":{},"24":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"43":{},"54":{},"56":{},"59":{},"61":{},"69":{},"77":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"102":{},"105":{},"108":{},"116":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"135":{}},"component":{}}],["page",{"_index":94,"title":{"68":{},"67-6":{}},"name":{},"text":{"1":{},"12":{},"15":{},"20":{},"22":{},"28":{},"47":{},"55":{},"58":{},"63":{},"64":{},"68":{},"93":{},"104":{},"107":{},"112":{},"114":{},"120":{}},"component":{}}],["paramet",{"_index":1098,"title":{},"name":{},"text":{"33":{},"36":{},"40":{},"85":{},"125":{},"128":{},"132":{}},"component":{}}],["parent",{"_index":1394,"title":{},"name":{},"text":{"68":{},"72":{},"73":{}},"component":{}}],["parser",{"_index":330,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["part",{"_index":49,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"9":{},"18":{},"20":{},"26":{},"38":{},"39":{},"47":{},"48":{},"61":{},"68":{},"69":{},"87":{},"93":{},"94":{},"98":{},"101":{},"111":{},"112":{},"118":{},"130":{},"131":{}},"component":{}}],["partial",{"_index":644,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["particular",{"_index":344,"title":{},"name":{},"text":{"5":{},"51":{},"97":{}},"component":{}}],["past",{"_index":751,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["patch",{"_index":496,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["path",{"_index":41,"title":{},"name":{},"text":{"1":{},"32":{},"40":{},"47":{},"75":{},"82":{},"93":{},"124":{},"132":{}},"component":{}}],["pattern",{"_index":1001,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["paus",{"_index":1673,"title":{},"name":{},"text":{"75":{}},"component":{}}],["perform",{"_index":264,"title":{},"name":{},"text":{"2":{},"26":{},"32":{},"33":{},"48":{},"82":{},"94":{},"118":{},"124":{},"125":{}},"component":{}}],["period",{"_index":1365,"title":{},"name":{},"text":{"64":{}},"component":{}}],["persist",{"_index":376,"title":{},"name":{},"text":{"6":{},"74":{},"75":{},"98":{}},"component":{}}],["person",{"_index":744,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["phase",{"_index":1572,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["philosophi",{"_index":643,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["physic",{"_index":1527,"title":{},"name":{},"text":{"72":{}},"component":{}}],["pick",{"_index":1326,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["piec",{"_index":660,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["plan",{"_index":450,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"101":{},"103":{}},"component":{}}],["platform",{"_index":13,"title":{"44":{},"45":{},"90":{},"91":{},"136":{},"137":{},"9-5":{},"15-2":{},"58-2":{},"101-5":{},"107-2":{}},"name":{"45":{},"91":{},"137":{}},"text":{"1":{},"4":{},"6":{},"10":{},"11":{},"13":{},"15":{},"18":{},"20":{},"24":{},"34":{},"43":{},"44":{},"45":{},"47":{},"50":{},"54":{},"56":{},"58":{},"61":{},"67":{},"77":{},"83":{},"89":{},"90":{},"91":{},"93":{},"96":{},"98":{},"102":{},"103":{},"105":{},"107":{},"111":{},"112":{},"116":{},"126":{},"135":{},"136":{},"137":{}},"component":{}}],["playbook",{"_index":134,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["pleas",{"_index":140,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"12":{},"15":{},"39":{},"47":{},"54":{},"55":{},"58":{},"87":{},"93":{},"102":{},"103":{},"104":{},"107":{},"131":{}},"component":{}}],["plugin",{"_index":191,"title":{"31":{},"33":{},"36":{},"40":{},"81":{},"85":{},"123":{},"125":{},"128":{},"132":{}},"name":{"40":{},"132":{}},"text":{"2":{},"10":{},"11":{},"13":{},"20":{},"21":{},"22":{},"23":{},"28":{},"30":{},"31":{},"33":{},"36":{},"37":{},"39":{},"40":{},"41":{},"44":{},"48":{},"54":{},"56":{},"63":{},"67":{},"70":{},"72":{},"74":{},"75":{},"80":{},"81":{},"85":{},"86":{},"87":{},"90":{},"94":{},"102":{},"103":{},"105":{},"112":{},"113":{},"114":{},"115":{},"120":{},"122":{},"123":{},"125":{},"128":{},"129":{},"131":{},"132":{},"133":{},"136":{}},"component":{}}],["pluginmanag",{"_index":1040,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["podman",{"_index":766,"title":{},"name":{},"text":{"18":{},"111":{}},"component":{}}],["point",{"_index":1223,"title":{"61-8":{}},"name":{},"text":{"36":{},"75":{},"85":{},"128":{}},"component":{}}],["polyfil",{"_index":1580,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["polyfills.j",{"_index":1579,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["poor",{"_index":875,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["port",{"_index":1132,"title":{},"name":{},"text":{"33":{},"40":{},"68":{},"72":{},"75":{},"125":{},"132":{}},"component":{}}],["possibl",{"_index":225,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"16":{},"18":{},"24":{},"28":{},"38":{},"39":{},"43":{},"48":{},"54":{},"61":{},"69":{},"77":{},"87":{},"94":{},"98":{},"103":{},"108":{},"111":{},"116":{},"120":{},"130":{},"131":{},"135":{}},"component":{}}],["post",{"_index":579,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["potenti",{"_index":571,"title":{},"name":{},"text":{"11":{},"26":{},"54":{},"103":{},"118":{}},"component":{}}],["power",{"_index":1356,"title":{},"name":{},"text":{"64":{}},"component":{}}],["practic",{"_index":1013,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"80":{},"81":{},"82":{},"122":{},"123":{},"124":{}},"component":{}}],["pre",{"_index":435,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["precondit",{"_index":1541,"title":{},"name":{},"text":{"73":{}},"component":{}}],["predict",{"_index":886,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["prefix",{"_index":456,"title":{},"name":{},"text":{"9":{},"10":{},"11":{},"33":{},"36":{},"54":{},"85":{},"101":{},"102":{},"103":{},"125":{},"128":{}},"component":{}}],["prepar",{"_index":632,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["prerequisit",{"_index":756,"title":{"18-1":{},"111-1":{}},"name":{},"text":{},"component":{}}],["present",{"_index":1014,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"80":{},"81":{},"82":{},"122":{},"123":{},"124":{}},"component":{}}],["press",{"_index":1670,"title":{},"name":{},"text":{"75":{}},"component":{}}],["prevent",{"_index":1032,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["previou",{"_index":282,"title":{},"name":{},"text":{"2":{},"11":{},"36":{},"39":{},"48":{},"54":{},"85":{},"87":{},"94":{},"103":{},"128":{},"131":{}},"component":{}}],["previous",{"_index":797,"title":{},"name":{},"text":{"20":{},"21":{},"28":{},"36":{},"68":{},"75":{},"85":{},"112":{},"113":{},"120":{},"128":{}},"component":{}}],["primari",{"_index":722,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["primarili",{"_index":1221,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["println(\"id",{"_index":946,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["prioriti",{"_index":527,"title":{"11-1":{},"54-4":{},"103-1":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["privat",{"_index":1455,"title":{},"name":{},"text":{"69":{}},"component":{}}],["problem",{"_index":298,"title":{},"name":{},"text":{"2":{},"8":{},"26":{},"39":{},"48":{},"53":{},"87":{},"94":{},"100":{},"118":{},"131":{}},"component":{}}],["process",{"_index":253,"title":{},"name":{},"text":{"2":{},"29":{},"33":{},"34":{},"36":{},"48":{},"71":{},"74":{},"75":{},"83":{},"85":{},"94":{},"121":{},"125":{},"126":{},"128":{}},"component":{}}],["produc",{"_index":283,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["product",{"_index":55,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["profil",{"_index":822,"title":{},"name":{},"text":{"21":{},"22":{},"23":{},"113":{},"114":{},"115":{}},"component":{}}],["program",{"_index":324,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["programm",{"_index":859,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["progress",{"_index":1334,"title":{},"name":{},"text":{"61":{}},"component":{}}],["project",{"_index":36,"title":{"66":{},"2-1":{},"40-3":{},"48-1":{},"94-1":{},"132-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"16":{},"17":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"30":{},"31":{},"32":{},"33":{},"36":{},"40":{},"43":{},"45":{},"47":{},"48":{},"49":{},"54":{},"59":{},"60":{},"61":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"82":{},"85":{},"89":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"108":{},"109":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"122":{},"123":{},"124":{},"125":{},"128":{},"132":{},"135":{},"137":{}},"component":{}}],["project\").projectdir.resolve(\"src/gen",{"_index":1079,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project(\":mi",{"_index":1074,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project(\":mps:metamodel\").projectdir.resolve(\"src/main/kotlin",{"_index":1072,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["project.layout.builddirectory.dir(\"mps\").get().asfil",{"_index":1051,"title":{},"name":{},"text":{"31":{},"33":{},"123":{},"125":{}},"component":{}}],["projectdir.resolve(\"mi",{"_index":1142,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["projector",{"_index":659,"title":{},"name":{},"text":{"11":{},"18":{},"54":{},"61":{},"103":{},"111":{}},"component":{}}],["project’",{"_index":1314,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["propag",{"_index":866,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["properti",{"_index":754,"title":{},"name":{},"text":{"16":{},"24":{},"28":{},"29":{},"35":{},"36":{},"43":{},"59":{},"61":{},"69":{},"75":{},"77":{},"84":{},"89":{},"108":{},"116":{},"120":{},"121":{},"127":{},"128":{},"135":{}},"component":{}}],["propertyvalu",{"_index":1438,"title":{},"name":{},"text":{"69":{}},"component":{}}],["propertyvalue.isempti",{"_index":1440,"title":{},"name":{},"text":{"69":{}},"component":{}}],["protected_prefix",{"_index":1292,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["prototyp",{"_index":658,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["provid",{"_index":219,"title":{"4-3":{},"50-3":{},"96-3":{}},"name":{},"text":{"2":{},"6":{},"9":{},"10":{},"11":{},"15":{},"18":{},"20":{},"22":{},"26":{},"28":{},"31":{},"34":{},"35":{},"36":{},"38":{},"39":{},"41":{},"43":{},"45":{},"48":{},"54":{},"58":{},"61":{},"66":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"81":{},"83":{},"84":{},"85":{},"87":{},"89":{},"91":{},"94":{},"98":{},"101":{},"102":{},"103":{},"107":{},"111":{},"112":{},"114":{},"118":{},"120":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"133":{},"135":{},"137":{}},"component":{}}],["proxi",{"_index":231,"title":{},"name":{},"text":{"2":{},"13":{},"48":{},"56":{},"94":{},"105":{}},"component":{}}],["public",{"_index":730,"title":{"16-3":{},"24-6":{},"43-6":{},"59-2":{},"61-6":{},"77-6":{},"89-5":{},"108-3":{},"116-6":{},"135-6":{}},"name":{},"text":{"69":{}},"component":{}}],["publish",{"_index":477,"title":{},"name":{},"text":{"10":{},"16":{},"24":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"102":{},"108":{},"116":{},"135":{}},"component":{}}],["pull",{"_index":142,"title":{"9-11":{},"101-11":{}},"name":{},"text":{"1":{},"9":{},"12":{},"47":{},"55":{},"93":{},"101":{},"104":{}},"component":{}}],["purpos",{"_index":763,"title":{},"name":{},"text":{"18":{},"28":{},"61":{},"71":{},"111":{},"120":{}},"component":{}}],["push",{"_index":1385,"title":{},"name":{},"text":{"67":{}},"component":{}}],["python",{"_index":433,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["ql",{"_index":1348,"title":{},"name":{"72":{}},"text":{"63":{},"66":{},"68":{},"74":{},"75":{}},"component":{}}],["ql:build",{"_index":1492,"title":{},"name":{},"text":{"72":{}},"component":{}}],["ql:run",{"_index":1493,"title":{},"name":{},"text":{"72":{},"75":{}},"component":{}}],["qualifi",{"_index":1111,"title":{},"name":{},"text":{"33":{},"36":{},"85":{},"125":{},"128":{}},"component":{}}],["quarku",{"_index":810,"title":{},"name":{},"text":{"20":{},"23":{},"63":{},"67":{},"73":{},"112":{},"115":{}},"component":{}}],["queri",{"_index":881,"title":{"28-4":{},"28-5":{},"120-4":{},"120-5":{}},"name":{},"text":{"26":{},"28":{},"30":{},"40":{},"72":{},"80":{},"118":{},"120":{},"122":{},"132":{}},"component":{}}],["question",{"_index":87,"title":{"7":{},"52":{},"99":{}},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["quick",{"_index":352,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["quickli",{"_index":870,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["r",{"_index":1674,"title":{},"name":{},"text":{"75":{}},"component":{}}],["r1",{"_index":506,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["r2",{"_index":508,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["r:ce161c54",{"_index":1544,"title":{},"name":{},"text":{"73":{}},"component":{}}],["rare",{"_index":316,"title":{},"name":{},"text":{"2":{},"11":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"131":{}},"component":{}}],["raw",{"_index":1574,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["re",{"_index":601,"title":{},"name":{},"text":{"11":{},"31":{},"54":{},"81":{},"103":{},"123":{}},"component":{}}],["reactiv",{"_index":867,"title":{"26-1":{},"118-1":{}},"name":{},"text":{"26":{},"41":{},"118":{},"133":{}},"component":{}}],["reactor",{"_index":900,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["read",{"_index":652,"title":{},"name":{},"text":{"11":{},"20":{},"22":{},"23":{},"28":{},"30":{},"41":{},"54":{},"61":{},"63":{},"64":{},"67":{},"68":{},"80":{},"103":{},"112":{},"114":{},"115":{},"120":{},"122":{},"133":{}},"component":{}}],["read/writ",{"_index":1022,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["readabl",{"_index":970,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["reader",{"_index":110,"title":{},"name":{},"text":{"1":{},"8":{},"17":{},"47":{},"53":{},"60":{},"93":{},"100":{},"109":{}},"component":{}}],["readi",{"_index":1304,"title":{},"name":{},"text":{"40":{},"72":{},"132":{}},"component":{}}],["real",{"_index":408,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"8":{},"11":{},"39":{},"53":{},"54":{},"66":{},"70":{},"87":{},"100":{},"103":{},"131":{}},"component":{}}],["realiz",{"_index":838,"title":{},"name":{},"text":{"22":{},"23":{},"61":{},"63":{},"67":{},"114":{},"115":{}},"component":{}}],["realli",{"_index":1488,"title":{},"name":{},"text":{"71":{}},"component":{}}],["realtim",{"_index":278,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["reason",{"_index":525,"title":{},"name":{},"text":{"10":{}},"component":{}}],["receiv",{"_index":193,"title":{},"name":{},"text":{"2":{},"28":{},"30":{},"39":{},"48":{},"80":{},"87":{},"94":{},"120":{},"122":{},"131":{}},"component":{}}],["recommend",{"_index":430,"title":{},"name":{},"text":{"9":{},"11":{},"28":{},"32":{},"54":{},"82":{},"101":{},"103":{},"120":{},"124":{}},"component":{}}],["recur",{"_index":1186,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["reduc",{"_index":16,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"26":{},"28":{},"47":{},"50":{},"54":{},"93":{},"96":{},"103":{},"118":{},"120":{}},"component":{}}],["refer",{"_index":65,"title":{"14":{},"57":{},"106":{}},"name":{},"text":{"1":{},"10":{},"11":{},"14":{},"31":{},"35":{},"39":{},"47":{},"54":{},"57":{},"69":{},"81":{},"84":{},"87":{},"93":{},"102":{},"103":{},"106":{},"123":{},"127":{},"131":{}},"component":{}}],["refin",{"_index":662,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["reflect",{"_index":801,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["reformat",{"_index":1290,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["refresh",{"_index":1364,"title":{},"name":{},"text":{"64":{}},"component":{}}],["regard",{"_index":663,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["regener",{"_index":1464,"title":{},"name":{},"text":{"69":{}},"component":{}}],["regist",{"_index":1107,"title":{},"name":{},"text":{"33":{},"75":{},"125":{}},"component":{}}],["registerlanguag",{"_index":1105,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["registerlanguage(l_mygeneratedlanguag",{"_index":1139,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["registr",{"_index":1075,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["registrationhelpernam",{"_index":1076,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["relat",{"_index":796,"title":{},"name":{},"text":{"20":{},"22":{},"31":{},"66":{},"81":{},"112":{},"114":{},"123":{}},"component":{}}],["releas",{"_index":466,"title":{"10":{},"54":{},"102":{},"10-2":{},"11-5":{},"54-2":{},"54-8":{},"102-2":{},"103-5":{}},"name":{},"text":{"10":{},"11":{},"15":{},"31":{},"43":{},"44":{},"54":{},"58":{},"81":{},"89":{},"90":{},"102":{},"103":{},"107":{},"123":{},"135":{},"136":{}},"component":{}}],["relev",{"_index":478,"title":{},"name":{},"text":{"10":{},"22":{},"23":{},"54":{},"102":{},"114":{},"115":{}},"component":{}}],["reload",{"_index":1602,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["remain",{"_index":307,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["remot",{"_index":1130,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["remoteproductdatabasequeri",{"_index":959,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["remov",{"_index":261,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["renam",{"_index":528,"title":{"11-2":{},"54-5":{},"103-2":{}},"name":{},"text":{"11":{},"54":{},"69":{},"103":{}},"component":{}}],["render",{"_index":246,"title":{},"name":{},"text":{"2":{},"28":{},"48":{},"94":{},"120":{}},"component":{}}],["repeat",{"_index":1402,"title":{},"name":{},"text":{"69":{}},"component":{}}],["replac",{"_index":753,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["replic",{"_index":200,"title":{},"name":{},"text":{"2":{},"26":{},"39":{},"48":{},"87":{},"94":{},"118":{},"131":{}},"component":{}}],["repo",{"_index":684,"title":{},"name":{},"text":{"13":{},"33":{},"56":{},"105":{},"125":{}},"component":{}}],["repo/w",{"_index":1018,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["report",{"_index":163,"title":{},"name":{},"text":{"1":{},"40":{},"47":{},"93":{},"132":{}},"component":{}}],["repositori",{"_index":132,"title":{"63":{},"67":{},"9-6":{},"101-6":{}},"name":{"15":{},"58":{},"107":{}},"text":{"1":{},"2":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"20":{},"21":{},"24":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"47":{},"48":{},"54":{},"58":{},"59":{},"61":{},"63":{},"67":{},"69":{},"70":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"93":{},"94":{},"101":{},"102":{},"103":{},"107":{},"108":{},"111":{},"112":{},"113":{},"116":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{}},"component":{}}],["repositorydir",{"_index":1125,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["repositoryid",{"_index":1133,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["repres",{"_index":678,"title":{},"name":{},"text":{"12":{},"36":{},"38":{},"55":{},"64":{},"85":{},"104":{},"128":{},"130":{}},"component":{}}],["represent",{"_index":609,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["request",{"_index":143,"title":{"9-11":{},"101-11":{}},"name":{},"text":{"1":{},"2":{},"9":{},"12":{},"26":{},"28":{},"40":{},"47":{},"48":{},"55":{},"93":{},"94":{},"101":{},"104":{},"118":{},"120":{},"132":{}},"component":{}}],["requestfrag",{"_index":999,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["requir",{"_index":197,"title":{},"name":{},"text":{"2":{},"8":{},"10":{},"11":{},"16":{},"24":{},"26":{},"28":{},"31":{},"39":{},"43":{},"48":{},"53":{},"54":{},"59":{},"61":{},"64":{},"67":{},"77":{},"81":{},"87":{},"89":{},"94":{},"100":{},"103":{},"108":{},"116":{},"118":{},"120":{},"123":{},"131":{},"135":{}},"component":{}}],["resid",{"_index":619,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["resolut",{"_index":1329,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["resolv",{"_index":287,"title":{},"name":{},"text":{"2":{},"34":{},"39":{},"48":{},"75":{},"83":{},"87":{},"94":{},"126":{},"131":{}},"component":{}}],["resolvemp",{"_index":1055,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["resourc",{"_index":595,"title":{},"name":{},"text":{"11":{},"34":{},"54":{},"75":{},"83":{},"103":{},"126":{}},"component":{}}],["respect",{"_index":1037,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["respond",{"_index":1498,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["respons",{"_index":1152,"title":{},"name":{},"text":{"34":{},"83":{},"126":{}},"component":{}}],["rest",{"_index":220,"title":{},"name":{"72":{},"73":{}},"text":{"2":{},"23":{},"48":{},"63":{},"66":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"115":{}},"component":{}}],["restrict",{"_index":740,"title":{},"name":{},"text":{"16":{},"24":{},"31":{},"43":{},"59":{},"61":{},"77":{},"81":{},"89":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["result",{"_index":100,"title":{"28-5":{},"120-5":{}},"name":{},"text":{"1":{},"2":{},"11":{},"26":{},"28":{},"33":{},"36":{},"39":{},"47":{},"48":{},"54":{},"85":{},"87":{},"93":{},"94":{},"103":{},"118":{},"120":{},"128":{},"131":{}},"component":{}}],["result.foreach",{"_index":945,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["resum",{"_index":1675,"title":{},"name":{},"text":{"75":{}},"component":{}}],["return",{"_index":898,"title":{},"name":{},"text":{"26":{},"28":{},"69":{},"118":{},"120":{}},"component":{}}],["reus",{"_index":759,"title":{},"name":{},"text":{"18":{},"61":{},"111":{}},"component":{}}],["revers",{"_index":230,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["revis",{"_index":1136,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["rewrit",{"_index":556,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["right",{"_index":70,"title":{},"name":{},"text":{"1":{},"21":{},"47":{},"69":{},"93":{},"113":{}},"component":{}}],["rm",{"_index":1471,"title":{},"name":{},"text":{"70":{}},"component":{}}],["roadmap",{"_index":74,"title":{"11":{},"54":{},"103":{},"11-5":{},"54-3":{},"54-8":{},"103-5":{}},"name":{"11":{},"54":{},"103":{}},"text":{"1":{},"6":{},"11":{},"47":{},"54":{},"93":{},"98":{},"103":{}},"component":{}}],["role",{"_index":1410,"title":{},"name":{},"text":{"69":{}},"component":{}}],["rollout",{"_index":449,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["room",{"_index":785,"title":{},"name":{},"text":{"19":{},"35":{},"64":{},"69":{},"72":{},"73":{},"84":{},"110":{},"127":{}},"component":{}}],["room(inod",{"_index":1456,"title":{},"name":{},"text":{"69":{}},"component":{}}],["room.this.getinod",{"_index":1435,"title":{},"name":{},"text":{"69":{}},"component":{}}],["roomlist",{"_index":783,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["roomref",{"_index":1509,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["rooms.children.rooms.foreach",{"_index":1406,"title":{},"name":{},"text":{"69":{}},"component":{}}],["root",{"_index":784,"title":{},"name":{},"text":{"19":{},"28":{},"29":{},"30":{},"69":{},"70":{},"75":{},"80":{},"110":{},"120":{},"121":{},"122":{}},"component":{}}],["root.addnewchild(nul",{"_index":1007,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["root.children(\"classes\").ofconcept(c_classconcept",{"_index":922,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["root.children(\"modules\").property(\"name\").tolist",{"_index":915,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["rootnod",{"_index":1027,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["rootnode.getchildren(\"modul",{"_index":1030,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["rootproject",{"_index":1047,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["run",{"_index":185,"title":{"74":{},"75":{},"28-4":{},"68-1":{},"68-4":{},"120-4":{}},"name":{},"text":{"2":{},"6":{},"9":{},"11":{},"18":{},"20":{},"21":{},"22":{},"23":{},"26":{},"29":{},"32":{},"33":{},"34":{},"36":{},"39":{},"40":{},"48":{},"54":{},"63":{},"64":{},"67":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"82":{},"83":{},"87":{},"94":{},"98":{},"101":{},"103":{},"111":{},"112":{},"113":{},"114":{},"115":{},"118":{},"121":{},"124":{},"125":{},"126":{},"128":{},"131":{},"132":{}},"component":{}}],["runner",{"_index":699,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["runread",{"_index":1024,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["runsyncpushtomyserv",{"_index":1145,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["runtim",{"_index":594,"title":{},"name":{},"text":{"11":{},"13":{},"36":{},"54":{},"56":{},"74":{},"75":{},"103":{},"105":{},"128":{}},"component":{}}],["runtime.j",{"_index":1589,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["runwrit",{"_index":1025,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["s",{"_index":1502,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["safe",{"_index":805,"title":{"28-3":{},"120-3":{}},"name":{},"text":{"20":{},"22":{},"23":{},"28":{},"69":{},"75":{},"112":{},"114":{},"115":{},"120":{}},"component":{}}],["same",{"_index":212,"title":{},"name":{},"text":{"2":{},"11":{},"18":{},"19":{},"36":{},"39":{},"48":{},"54":{},"61":{},"69":{},"87":{},"94":{},"103":{},"110":{},"111":{},"128":{},"131":{}},"component":{}}],["sampl",{"_index":77,"title":{"19":{},"20":{},"61":{},"63":{},"66":{},"110":{},"112":{},"15-4":{},"58-4":{},"107-4":{}},"name":{},"text":{"1":{},"13":{},"15":{},"18":{},"19":{},"20":{},"30":{},"31":{},"32":{},"47":{},"56":{},"58":{},"61":{},"63":{},"66":{},"67":{},"68":{},"69":{},"74":{},"80":{},"81":{},"82":{},"93":{},"105":{},"107":{},"110":{},"111":{},"112":{},"122":{},"123":{},"124":{}},"component":{}}],["sample/model",{"_index":1656,"title":{},"name":{},"text":{"75":{}},"component":{}}],["samples:tutorial/startup",{"_index":1340,"title":{},"name":{},"text":{"61":{}},"component":{}}],["scalabl",{"_index":224,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["scale",{"_index":171,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["scenario",{"_index":1352,"title":{},"name":{},"text":{"64":{}},"component":{}}],["schedul",{"_index":540,"title":{"65":{}},"name":{},"text":{"11":{},"19":{},"35":{},"64":{},"66":{},"69":{},"84":{},"103":{},"110":{},"127":{}},"component":{}}],["schema",{"_index":1653,"title":{},"name":{},"text":{"75":{}},"component":{}}],["scheme",{"_index":490,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["schrödinger",{"_index":1518,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["scratch",{"_index":393,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["script",{"_index":661,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["second",{"_index":199,"title":{},"name":{},"text":{"2":{},"23":{},"28":{},"36":{},"48":{},"74":{},"75":{},"85":{},"94":{},"115":{},"120":{},"128":{}},"component":{}}],["secret",{"_index":1651,"title":{},"name":{},"text":{"75":{}},"component":{}}],["secrets/modelsecret/modelsecret.txt",{"_index":1652,"title":{},"name":{},"text":{"75":{}},"component":{}}],["section",{"_index":80,"title":{},"name":{},"text":{"1":{},"45":{},"47":{},"66":{},"67":{},"91":{},"93":{},"137":{}},"component":{}}],["see",{"_index":175,"title":{},"name":{},"text":{"1":{},"3":{},"20":{},"23":{},"28":{},"35":{},"47":{},"49":{},"67":{},"68":{},"72":{},"74":{},"75":{},"84":{},"93":{},"95":{},"112":{},"115":{},"120":{},"127":{}},"component":{}}],["select",{"_index":826,"title":{},"name":{},"text":{"21":{},"47":{},"113":{}},"component":{}}],["semant",{"_index":413,"title":{"9-8":{},"101-8":{}},"name":{},"text":{"9":{},"10":{},"11":{},"54":{},"101":{},"102":{},"103":{}},"component":{}}],["semest",{"_index":1207,"title":{},"name":{},"text":{"35":{},"69":{},"84":{},"127":{}},"component":{}}],["semesterplan",{"_index":793,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["send",{"_index":934,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["sens",{"_index":360,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["sent",{"_index":1548,"title":{},"name":{},"text":{"73":{}},"component":{}}],["separ",{"_index":101,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"36":{},"47":{},"48":{},"54":{},"71":{},"93":{},"94":{},"103":{},"128":{}},"component":{}}],["sequenc",{"_index":816,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["seri",{"_index":113,"title":{},"name":{},"text":{"1":{},"17":{},"47":{},"60":{},"93":{},"109":{}},"component":{}}],["serial",{"_index":1286,"title":{},"name":{},"text":{"38":{},"130":{}},"component":{}}],["serializ",{"_index":1157,"title":{},"name":{},"text":{"35":{},"38":{},"84":{},"127":{},"130":{}},"component":{}}],["serv",{"_index":81,"title":{},"name":{},"text":{"1":{},"15":{},"20":{},"33":{},"40":{},"47":{},"58":{},"64":{},"71":{},"74":{},"75":{},"93":{},"107":{},"112":{},"125":{},"132":{}},"component":{}}],["server",{"_index":188,"title":{"21":{},"22":{},"23":{},"29":{},"32":{},"39":{},"40":{},"70":{},"73":{},"82":{},"87":{},"113":{},"114":{},"115":{},"121":{},"124":{},"131":{},"132":{},"21-4":{},"21-6":{},"39-2":{},"87-2":{},"113-4":{},"113-6":{},"131-2":{}},"name":{"32":{},"39":{},"40":{},"70":{},"73":{},"82":{},"87":{},"124":{},"131":{},"132":{}},"text":{"2":{},"6":{},"10":{},"11":{},"13":{},"15":{},"16":{},"18":{},"20":{},"21":{},"22":{},"23":{},"24":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"39":{},"41":{},"43":{},"48":{},"54":{},"56":{},"58":{},"59":{},"61":{},"63":{},"66":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"80":{},"82":{},"83":{},"87":{},"89":{},"94":{},"98":{},"102":{},"103":{},"105":{},"107":{},"108":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"120":{},"121":{},"122":{},"124":{},"125":{},"126":{},"131":{},"133":{},"135":{}},"component":{}}],["server.json",{"_index":1295,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["server/build/lib",{"_index":1480,"title":{},"name":{},"text":{"70":{}},"component":{}}],["server/cli",{"_index":911,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["server/courses.modelserver.dump",{"_index":1657,"title":{},"name":{},"text":{"75":{}},"component":{}}],["server:build",{"_index":861,"title":{},"name":{},"text":{"23":{},"73":{},"115":{}},"component":{}}],["server:quarkusdev",{"_index":1666,"title":{},"name":{},"text":{"75":{}},"component":{}}],["server:run",{"_index":1083,"title":{},"name":{},"text":{"32":{},"70":{},"73":{},"75":{},"82":{},"124":{}},"component":{}}],["serversourc",{"_index":1093,"title":{"33-6":{},"125-6":{}},"name":{},"text":{"33":{},"125":{}},"component":{}}],["session",{"_index":541,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["set",{"_index":616,"title":{"16-4":{},"24-7":{},"33-2":{},"36-2":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"85-2":{},"89-6":{},"108-4":{},"116-7":{},"125-2":{},"128-2":{},"135-7":{}},"name":{},"text":{"11":{},"21":{},"29":{},"30":{},"31":{},"33":{},"36":{},"40":{},"54":{},"72":{},"75":{},"80":{},"81":{},"85":{},"103":{},"113":{},"121":{},"122":{},"123":{},"125":{},"128":{},"132":{}},"component":{}}],["sethasremoteequipment(@nul",{"_index":1448,"title":{},"name":{},"text":{"69":{}},"component":{}}],["setmaxplaces(integ",{"_index":1442,"title":{},"name":{},"text":{"69":{}},"component":{}}],["settings.gradle.kt",{"_index":1034,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["setup",{"_index":647,"title":{"21-3":{},"113-3":{}},"name":{},"text":{"11":{},"16":{},"24":{},"31":{},"43":{},"54":{},"59":{},"61":{},"67":{},"74":{},"75":{},"77":{},"81":{},"89":{},"103":{},"108":{},"116":{},"123":{},"135":{}},"component":{}}],["sever",{"_index":570,"title":{},"name":{},"text":{"11":{},"54":{},"75":{},"103":{}},"component":{}}],["share",{"_index":582,"title":{},"name":{},"text":{"11":{},"31":{},"38":{},"54":{},"81":{},"103":{},"123":{},"130":{}},"component":{}}],["ship",{"_index":760,"title":{},"name":{},"text":{"18":{},"61":{},"111":{}},"component":{}}],["short",{"_index":373,"title":{},"name":{},"text":{"6":{},"11":{},"15":{},"34":{},"54":{},"58":{},"66":{},"67":{},"69":{},"83":{},"98":{},"103":{},"107":{},"126":{}},"component":{}}],["shortcom",{"_index":558,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["shortli",{"_index":549,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["show",{"_index":183,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"15":{},"18":{},"20":{},"21":{},"38":{},"48":{},"54":{},"58":{},"61":{},"64":{},"67":{},"68":{},"74":{},"94":{},"98":{},"103":{},"107":{},"111":{},"112":{},"113":{},"130":{}},"component":{}}],["shown",{"_index":726,"title":{},"name":{},"text":{"15":{},"18":{},"58":{},"61":{},"107":{},"111":{}},"component":{}}],["side",{"_index":260,"title":{},"name":{},"text":{"2":{},"34":{},"48":{},"83":{},"94":{},"126":{}},"component":{}}],["signific",{"_index":545,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["similar",{"_index":270,"title":{},"name":{},"text":{"2":{},"28":{},"31":{},"39":{},"48":{},"74":{},"75":{},"81":{},"87":{},"94":{},"120":{},"123":{},"131":{}},"component":{}}],["simpl",{"_index":937,"title":{},"name":{},"text":{"28":{},"31":{},"64":{},"72":{},"73":{},"81":{},"120":{},"123":{}},"component":{}}],["simpli",{"_index":731,"title":{},"name":{},"text":{"16":{},"24":{},"33":{},"36":{},"43":{},"59":{},"61":{},"64":{},"70":{},"74":{},"75":{},"77":{},"85":{},"89":{},"108":{},"116":{},"128":{},"135":{}},"component":{}}],["simplifi",{"_index":776,"title":{},"name":{},"text":{"19":{},"44":{},"69":{},"90":{},"110":{},"136":{}},"component":{}}],["singl",{"_index":504,"title":{"68":{},"67-6":{}},"name":{},"text":{"10":{},"11":{},"22":{},"45":{},"54":{},"63":{},"64":{},"68":{},"69":{},"71":{},"91":{},"102":{},"103":{},"114":{},"137":{}},"component":{}}],["size",{"_index":361,"title":{},"name":{},"text":{"6":{},"33":{},"36":{},"74":{},"75":{},"85":{},"98":{},"125":{},"128":{}},"component":{}}],["skip",{"_index":1224,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["slack",{"_index":155,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["small",{"_index":774,"title":{},"name":{},"text":{"19":{},"28":{},"69":{},"110":{},"120":{}},"component":{}}],["snapshot",{"_index":280,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["socket",{"_index":1549,"title":{},"name":{},"text":{"73":{}},"component":{}}],["softwar",{"_index":129,"title":{},"name":{},"text":{"1":{},"10":{},"18":{},"47":{},"54":{},"93":{},"102":{},"111":{}},"component":{}}],["solut",{"_index":363,"title":{"35":{},"84":{},"127":{}},"name":{},"text":{"6":{},"11":{},"13":{},"20":{},"21":{},"31":{},"35":{},"36":{},"54":{},"56":{},"81":{},"84":{},"85":{},"98":{},"103":{},"105":{},"112":{},"113":{},"123":{},"127":{},"128":{}},"component":{}}],["solv",{"_index":407,"title":{},"name":{},"text":{"8":{},"26":{},"28":{},"53":{},"100":{},"118":{},"120":{}},"component":{}}],["somebodi",{"_index":1408,"title":{},"name":{},"text":{"69":{}},"component":{}}],["somehjtinghekjrekjrh",{"_index":1515,"title":{},"name":{},"text":{"72":{}},"component":{}}],["somehow",{"_index":1466,"title":{},"name":{},"text":{"69":{}},"component":{}}],["somerootnod",{"_index":1006,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["somerootnode.member.addnew",{"_index":1009,"title":{},"name":{},"text":{"29":{},"121":{}},"component":{}}],["someth",{"_index":524,"title":{},"name":{},"text":{"10":{}},"component":{}}],["sometim",{"_index":514,"title":{},"name":{},"text":{"10":{},"45":{},"91":{},"137":{}},"component":{}}],["soulut",{"_index":1378,"title":{},"name":{},"text":{"67":{}},"component":{}}],["sourc",{"_index":12,"title":{},"name":{},"text":{"1":{},"4":{},"6":{},"10":{},"22":{},"23":{},"31":{},"33":{},"36":{},"37":{},"47":{},"50":{},"54":{},"67":{},"69":{},"81":{},"85":{},"86":{},"93":{},"96":{},"98":{},"102":{},"114":{},"115":{},"123":{},"125":{},"128":{},"129":{}},"component":{}}],["spa",{"_index":846,"title":{"67-6":{},"68-2":{}},"name":{},"text":{"22":{},"23":{},"61":{},"63":{},"64":{},"68":{},"74":{},"75":{},"114":{},"115":{}},"component":{}}],["spec",{"_index":1395,"title":{},"name":{},"text":{"68":{},"72":{},"73":{}},"component":{}}],["special",{"_index":318,"title":{},"name":{},"text":{"2":{},"11":{},"26":{},"38":{},"39":{},"48":{},"54":{},"87":{},"94":{},"103":{},"118":{},"130":{},"131":{}},"component":{}}],["specif",{"_index":123,"title":{"69":{},"11-4":{},"54-7":{},"67-4":{},"103-4":{}},"name":{},"text":{"1":{},"3":{},"6":{},"11":{},"23":{},"31":{},"33":{},"36":{},"37":{},"38":{},"45":{},"47":{},"49":{},"54":{},"63":{},"67":{},"68":{},"69":{},"71":{},"81":{},"85":{},"86":{},"91":{},"93":{},"95":{},"98":{},"103":{},"115":{},"123":{},"125":{},"128":{},"129":{},"130":{},"137":{}},"component":{}}],["specifi",{"_index":674,"title":{},"name":{},"text":{"11":{},"16":{},"24":{},"28":{},"32":{},"33":{},"36":{},"37":{},"43":{},"54":{},"59":{},"61":{},"77":{},"82":{},"85":{},"86":{},"89":{},"103":{},"108":{},"116":{},"120":{},"124":{},"125":{},"128":{},"129":{},"135":{}},"component":{}}],["specification[1",{"_index":1380,"title":{},"name":{},"text":{"67":{}},"component":{}}],["spotlessappli",{"_index":1291,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["spring",{"_index":505,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["stabil",{"_index":526,"title":{},"name":{},"text":{"10":{}},"component":{}}],["stabl",{"_index":53,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"47":{},"54":{},"93":{},"102":{},"103":{}},"component":{}}],["stage",{"_index":486,"title":{},"name":{},"text":{"10":{},"11":{},"36":{},"54":{},"85":{},"102":{},"103":{},"128":{}},"component":{}}],["start",{"_index":78,"title":{"32":{},"70":{},"82":{},"124":{},"18-2":{},"21-4":{},"21-5":{},"22-3":{},"23-3":{},"24-2":{},"43-2":{},"61-2":{},"68-3":{},"74-1":{},"75-1":{},"75-2":{},"77-2":{},"89-2":{},"111-2":{},"113-4":{},"113-5":{},"114-3":{},"115-3":{},"116-2":{},"135-2":{}},"name":{"74":{},"75":{}},"text":{"1":{},"9":{},"10":{},"11":{},"18":{},"21":{},"22":{},"23":{},"28":{},"30":{},"32":{},"33":{},"39":{},"47":{},"54":{},"61":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"80":{},"82":{},"87":{},"93":{},"101":{},"102":{},"103":{},"111":{},"113":{},"114":{},"115":{},"120":{},"122":{},"124":{},"125":{},"131":{}},"component":{}}],["startup",{"_index":1128,"title":{},"name":{"76":{}},"text":{"33":{},"76":{},"125":{}},"component":{}}],["state",{"_index":60,"title":{},"name":{},"text":{"1":{},"2":{},"34":{},"47":{},"48":{},"83":{},"93":{},"94":{},"126":{}},"component":{}}],["statu",{"_index":1344,"title":{},"name":{},"text":{"63":{}},"component":{}}],["stay",{"_index":205,"title":{},"name":{},"text":{"2":{},"48":{},"94":{}},"component":{}}],["step",{"_index":114,"title":{},"name":{},"text":{"1":{},"8":{},"11":{},"17":{},"36":{},"47":{},"53":{},"54":{},"60":{},"85":{},"93":{},"100":{},"103":{},"109":{},"128":{}},"component":{}}],["still",{"_index":872,"title":{},"name":{},"text":{"26":{},"28":{},"118":{},"120":{}},"component":{}}],["storag",{"_index":272,"title":{},"name":{},"text":{"2":{},"11":{},"32":{},"39":{},"48":{},"54":{},"82":{},"87":{},"94":{},"103":{},"124":{},"131":{}},"component":{}}],["storage/repositori",{"_index":1288,"title":{"39":{},"87":{},"131":{}},"name":{},"text":{},"component":{}}],["store",{"_index":268,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"16":{},"24":{},"28":{},"33":{},"39":{},"43":{},"48":{},"54":{},"59":{},"61":{},"68":{},"74":{},"75":{},"77":{},"87":{},"89":{},"94":{},"98":{},"103":{},"108":{},"116":{},"120":{},"125":{},"131":{},"135":{}},"component":{}}],["stream",{"_index":868,"title":{"26-1":{},"118-1":{}},"name":{},"text":{"26":{},"118":{}},"component":{}}],["streamlin",{"_index":573,"title":{"45":{},"91":{},"137":{}},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["strictli",{"_index":769,"title":{},"name":{},"text":{"18":{},"111":{}},"component":{}}],["string",{"_index":957,"title":{},"name":{},"text":{"28":{},"31":{},"33":{},"36":{},"45":{},"69":{},"81":{},"85":{},"91":{},"120":{},"123":{},"125":{},"128":{},"137":{}},"component":{}}],["structur",{"_index":2,"title":{"63":{},"1-3":{},"47-3":{},"93-3":{}},"name":{"63":{}},"text":{"2":{},"6":{},"11":{},"20":{},"23":{},"26":{},"28":{},"31":{},"35":{},"36":{},"39":{},"48":{},"54":{},"61":{},"63":{},"69":{},"81":{},"84":{},"85":{},"87":{},"94":{},"98":{},"103":{},"112":{},"115":{},"118":{},"120":{},"123":{},"127":{},"128":{},"131":{}},"component":{}}],["student",{"_index":1204,"title":{},"name":{},"text":{"35":{},"69":{},"72":{},"84":{},"127":{}},"component":{}}],["stuff",{"_index":1529,"title":{},"name":{},"text":{"72":{}},"component":{}}],["style",{"_index":1585,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["styles.css",{"_index":1583,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["styles.j",{"_index":1584,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["sub",{"_index":623,"title":{},"name":{},"text":{"11":{},"31":{},"54":{},"61":{},"63":{},"81":{},"103":{},"123":{}},"component":{}}],["subproject",{"_index":1238,"title":{},"name":{},"text":{"36":{},"68":{},"72":{},"73":{},"128":{}},"component":{}}],["subset",{"_index":1377,"title":{},"name":{},"text":{"67":{}},"component":{}}],["success",{"_index":1691,"title":{},"name":{},"text":{"75":{}},"component":{}}],["successfulli",{"_index":1468,"title":{},"name":{},"text":{"69":{},"74":{},"75":{}},"component":{}}],["such",{"_index":332,"title":{},"name":{},"text":{"3":{},"6":{},"49":{},"64":{},"71":{},"72":{},"95":{},"98":{}},"component":{}}],["suffici",{"_index":1080,"title":{},"name":{},"text":{"31":{},"64":{},"81":{},"123":{}},"component":{}}],["suffix",{"_index":1252,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["suitabl",{"_index":809,"title":{},"name":{},"text":{"20":{},"23":{},"28":{},"112":{},"115":{},"120":{}},"component":{}}],["summari",{"_index":464,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["super(nod",{"_index":1457,"title":{},"name":{},"text":{"69":{}},"component":{}}],["suppli",{"_index":1605,"title":{},"name":{},"text":{"75":{}},"component":{}}],["support",{"_index":211,"title":{},"name":{},"text":{"2":{},"6":{},"11":{},"12":{},"16":{},"19":{},"24":{},"26":{},"37":{},"39":{},"43":{},"48":{},"54":{},"55":{},"59":{},"61":{},"69":{},"77":{},"86":{},"87":{},"89":{},"94":{},"98":{},"103":{},"104":{},"108":{},"110":{},"116":{},"118":{},"129":{},"131":{},"135":{}},"component":{}}],["sure",{"_index":1396,"title":{},"name":{},"text":{"68":{}},"component":{}}],["surfac",{"_index":394,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["suspend",{"_index":1127,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["switch",{"_index":309,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["sync",{"_index":694,"title":{},"name":{"33":{},"125":{}},"text":{"13":{},"20":{},"21":{},"22":{},"23":{},"33":{},"56":{},"105":{},"112":{},"113":{},"114":{},"115":{},"125":{}},"component":{}}],["sync.gradle.plugin",{"_index":697,"title":{},"name":{},"text":{"13":{},"105":{}},"component":{}}],["syncdirect",{"_index":1091,"title":{"33-4":{},"125-4":{}},"name":{},"text":{},"component":{}}],["synchron",{"_index":206,"title":{"33":{},"125":{}},"name":{},"text":{"2":{},"11":{},"20":{},"21":{},"22":{},"23":{},"33":{},"39":{},"48":{},"54":{},"74":{},"75":{},"87":{},"94":{},"103":{},"112":{},"113":{},"114":{},"115":{},"125":{},"131":{}},"component":{}}],["synchronis",{"_index":1108,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["syntax",{"_index":972,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["system",{"_index":166,"title":{"67":{},"67-1":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"15":{},"26":{},"39":{},"40":{},"47":{},"48":{},"49":{},"58":{},"74":{},"75":{},"87":{},"93":{},"94":{},"95":{},"98":{},"107":{},"118":{},"131":{},"132":{}},"component":{}}],["system/servic",{"_index":1391,"title":{},"name":{},"text":{"68":{}},"component":{}}],["systemat",{"_index":98,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["tab",{"_index":856,"title":{},"name":{},"text":{"22":{},"23":{},"34":{},"83":{},"114":{},"115":{},"126":{}},"component":{}}],["tabl",{"_index":334,"title":{"13":{},"56":{},"105":{}},"name":{"13":{},"56":{},"105":{}},"text":{"3":{},"6":{},"11":{},"15":{},"49":{},"54":{},"58":{},"95":{},"98":{},"103":{},"107":{}},"component":{}}],["tabular",{"_index":1373,"title":{},"name":{},"text":{"66":{}},"component":{}}],["tag",{"_index":519,"title":{},"name":{},"text":{"10":{}},"component":{}}],["take",{"_index":109,"title":{},"name":{},"text":{"1":{},"2":{},"8":{},"17":{},"22":{},"23":{},"47":{},"48":{},"53":{},"60":{},"93":{},"94":{},"100":{},"109":{},"114":{},"115":{}},"component":{}}],["talk",{"_index":152,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["target",{"_index":600,"title":{"33-5":{},"33-6":{},"125-5":{},"125-6":{}},"name":{},"text":{"11":{},"31":{},"33":{},"36":{},"37":{},"54":{},"81":{},"85":{},"86":{},"103":{},"123":{},"125":{},"128":{},"129":{}},"component":{}}],["target/sourc",{"_index":1134,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["task",{"_index":1094,"title":{},"name":{},"text":{"33":{},"36":{},"74":{},"75":{},"85":{},"125":{},"128":{}},"component":{}}],["taskdepend",{"_index":1241,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["tasks.registering(sync::class",{"_index":1056,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["tbd",{"_index":1389,"title":{},"name":{},"text":{"67":{}},"component":{}}],["team",{"_index":669,"title":{},"name":{},"text":{"11":{},"54":{},"71":{},"103":{}},"component":{}}],["tech",{"_index":682,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["technic",{"_index":4,"title":{"1-4":{},"18-1":{},"47-4":{},"93-4":{},"111-1":{}},"name":{},"text":{"1":{},"11":{},"14":{},"47":{},"54":{},"57":{},"93":{},"103":{},"106":{}},"component":{}}],["technolog",{"_index":24,"title":{},"name":{},"text":{"1":{},"4":{},"11":{},"47":{},"50":{},"54":{},"63":{},"93":{},"96":{},"103":{}},"component":{}}],["tediou",{"_index":781,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["tell",{"_index":679,"title":{},"name":{},"text":{"12":{},"30":{},"55":{},"69":{},"80":{},"104":{},"122":{}},"component":{}}],["temurin",{"_index":428,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["termin",{"_index":1118,"title":{},"name":{},"text":{"33":{},"74":{},"75":{}},"component":{}}],["test",{"_index":476,"title":{"29":{},"121":{}},"name":{"29":{},"121":{}},"text":{"10":{},"18":{},"29":{},"32":{},"45":{},"54":{},"72":{},"73":{},"75":{},"82":{},"91":{},"102":{},"111":{},"121":{},"124":{},"137":{}},"component":{}}],["test.xml",{"_index":1612,"title":{},"name":{},"text":{"75":{}},"component":{}}],["that’",{"_index":967,"title":{},"name":{},"text":{"28":{},"69":{},"120":{}},"component":{}}],["therefor",{"_index":452,"title":{},"name":{},"text":{"9":{},"23":{},"101":{},"115":{}},"component":{}}],["think",{"_index":764,"title":{},"name":{},"text":{"18":{},"61":{},"111":{}},"component":{}}],["third",{"_index":969,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["this.children",{"_index":1459,"title":{},"name":{},"text":{"69":{}},"component":{}}],["this.properti",{"_index":1458,"title":{},"name":{},"text":{"69":{}},"component":{}}],["this.refer",{"_index":1460,"title":{},"name":{},"text":{"69":{}},"component":{}}],["those",{"_index":851,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["though",{"_index":933,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["three",{"_index":1283,"title":{},"name":{},"text":{"38":{},"71":{},"74":{},"130":{}},"component":{}}],["through",{"_index":112,"title":{},"name":{},"text":{"1":{},"8":{},"17":{},"20":{},"21":{},"22":{},"23":{},"47":{},"53":{},"60":{},"67":{},"69":{},"93":{},"100":{},"109":{},"112":{},"113":{},"114":{},"115":{}},"component":{}}],["throughout",{"_index":323,"title":{},"name":{},"text":{"3":{},"49":{},"95":{}},"component":{}}],["throw",{"_index":1412,"title":{},"name":{},"text":{"69":{}},"component":{}}],["thrown",{"_index":1026,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["thu",{"_index":626,"title":{},"name":{},"text":{"11":{},"54":{},"64":{},"67":{},"68":{},"71":{},"103":{}},"component":{}}],["tighter",{"_index":562,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["time",{"_index":213,"title":{"39-1":{},"67-7":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"11":{},"23":{},"35":{},"39":{},"48":{},"54":{},"64":{},"66":{},"69":{},"74":{},"75":{},"84":{},"87":{},"94":{},"103":{},"115":{},"127":{},"131":{}},"component":{}}],["titl",{"_index":462,"title":{},"name":{},"text":{"9":{},"28":{},"101":{},"120":{}},"component":{}}],["title.get",{"_index":980,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["todo",{"_index":405,"title":{"12":{},"55":{},"104":{}},"name":{"12":{},"55":{},"104":{}},"text":{"7":{},"12":{},"25":{},"27":{},"42":{},"46":{},"52":{},"55":{},"75":{},"76":{},"78":{},"79":{},"88":{},"92":{},"99":{},"104":{},"117":{},"119":{},"134":{},"138":{}},"component":{}}],["togeth",{"_index":96,"title":{},"name":{},"text":{"1":{},"6":{},"15":{},"28":{},"47":{},"58":{},"71":{},"93":{},"98":{},"107":{},"120":{}},"component":{}}],["toggl",{"_index":1677,"title":{},"name":{},"text":{"75":{}},"component":{}}],["token",{"_index":745,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["tolist",{"_index":926,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["tolist().request",{"_index":977,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["toloc",{"_index":1104,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["tomodelserv",{"_index":1102,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["tool",{"_index":26,"title":{"9-1":{},"101-1":{}},"name":{},"text":{"1":{},"3":{},"4":{},"9":{},"11":{},"13":{},"15":{},"21":{},"47":{},"49":{},"50":{},"54":{},"56":{},"58":{},"93":{},"95":{},"96":{},"101":{},"103":{},"105":{},"107":{},"113":{}},"component":{}}],["top",{"_index":221,"title":{},"name":{},"text":{"2":{},"11":{},"16":{},"24":{},"43":{},"48":{},"54":{},"59":{},"61":{},"74":{},"75":{},"77":{},"89":{},"94":{},"103":{},"108":{},"116":{},"135":{}},"component":{}}],["topic",{"_index":345,"title":{},"name":{},"text":{"5":{},"11":{},"51":{},"54":{},"97":{},"103":{}},"component":{}}],["total",{"_index":1554,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["track",{"_index":412,"title":{"9-7":{},"101-7":{}},"name":{},"text":{"9":{},"10":{},"54":{},"101":{},"102":{}},"component":{}}],["tracker",{"_index":164,"title":{},"name":{},"text":{"1":{},"10":{},"47":{},"54":{},"93":{},"102":{}},"component":{}}],["tradit",{"_index":359,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["transact",{"_index":1023,"title":{},"name":{},"text":{"30":{},"38":{},"80":{},"122":{},"130":{}},"component":{}}],["transform",{"_index":288,"title":{"39-1":{},"87-1":{},"131-1":{}},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["transit",{"_index":565,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["translat",{"_index":808,"title":{},"name":{},"text":{"20":{},"23":{},"112":{},"115":{}},"component":{}}],["transport",{"_index":1667,"title":{},"name":{},"text":{"75":{}},"component":{}}],["trash",{"_index":1698,"title":{},"name":{},"text":{"75":{}},"component":{}}],["travers",{"_index":874,"title":{},"name":{},"text":{"26":{},"118":{}},"component":{}}],["tree",{"_index":1309,"title":{},"name":{},"text":{"41":{},"133":{}},"component":{}}],["tri",{"_index":758,"title":{},"name":{},"text":{"18":{},"26":{},"30":{},"61":{},"80":{},"111":{},"118":{},"122":{}},"component":{}}],["trigger",{"_index":1081,"title":{},"name":{},"text":{"31":{},"33":{},"81":{},"123":{},"125":{}},"component":{}}],["trivial",{"_index":300,"title":{},"name":{},"text":{"2":{},"39":{},"48":{},"87":{},"94":{},"131":{}},"component":{}}],["true",{"_index":311,"title":{},"name":{},"text":{"2":{},"35":{},"39":{},"40":{},"48":{},"72":{},"73":{},"75":{},"84":{},"87":{},"94":{},"127":{},"131":{},"132":{}},"component":{}}],["ts",{"_index":700,"title":{},"name":{},"text":{"13":{},"22":{},"23":{},"31":{},"56":{},"81":{},"105":{},"114":{},"115":{},"123":{}},"component":{}}],["turn",{"_index":806,"title":{},"name":{},"text":{"20":{},"112":{}},"component":{}}],["tutor",{"_index":794,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["tutori",{"_index":105,"title":{"17":{},"42":{},"46":{},"60":{},"88":{},"92":{},"109":{},"134":{},"138":{}},"name":{},"text":{"1":{},"11":{},"17":{},"47":{},"54":{},"60":{},"74":{},"76":{},"93":{},"103":{},"109":{}},"component":{}}],["twice",{"_index":502,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["two",{"_index":438,"title":{},"name":{},"text":{"9":{},"22":{},"64":{},"66":{},"67":{},"101":{},"114":{}},"component":{}}],["type",{"_index":380,"title":{"28-3":{},"120-3":{}},"name":{},"text":{"6":{},"9":{},"11":{},"13":{},"20":{},"22":{},"23":{},"28":{},"33":{},"35":{},"36":{},"38":{},"41":{},"54":{},"69":{},"75":{},"84":{},"85":{},"98":{},"101":{},"103":{},"105":{},"112":{},"114":{},"115":{},"120":{},"125":{},"127":{},"128":{},"130":{},"133":{}},"component":{}}],["typedconcept",{"_index":1263,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typedconceptimpl",{"_index":1264,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typednod",{"_index":1258,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typednodeimpl",{"_index":1259,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["typescipt",{"_index":1278,"title":{},"name":{},"text":{"37":{},"86":{},"129":{}},"component":{}}],["typescript",{"_index":518,"title":{},"name":{},"text":{"10":{},"11":{},"20":{},"22":{},"23":{},"31":{},"36":{},"41":{},"54":{},"81":{},"85":{},"103":{},"112":{},"114":{},"115":{},"123":{},"128":{},"133":{}},"component":{}}],["typescriptdir",{"_index":1078,"title":{},"name":{},"text":{"31":{},"36":{},"81":{},"85":{},"123":{},"128":{}},"component":{}}],["uc",{"_index":1553,"title":{"74-1":{},"75-1":{},"75-2":{}},"name":{},"text":{"74":{},"75":{}},"component":{}}],["ui",{"_index":705,"title":{},"name":{},"text":{"13":{},"56":{},"105":{}},"component":{}}],["uid",{"_index":1162,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["unchang",{"_index":1597,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["under",{"_index":468,"title":{},"name":{},"text":{"10":{},"21":{},"22":{},"23":{},"39":{},"54":{},"87":{},"102":{},"113":{},"114":{},"115":{},"131":{}},"component":{}}],["underli",{"_index":1384,"title":{},"name":{},"text":{"67":{}},"component":{}}],["understand",{"_index":346,"title":{},"name":{},"text":{"5":{},"6":{},"22":{},"51":{},"61":{},"71":{},"97":{},"98":{},"114":{}},"component":{}}],["unfold",{"_index":1160,"title":{},"name":{},"text":{"35":{},"72":{},"73":{},"74":{},"75":{},"84":{},"127":{}},"component":{}}],["unfortun",{"_index":537,"title":{},"name":{},"text":{"11":{},"103":{}},"component":{}}],["unhealthi",{"_index":1305,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["unifi",{"_index":551,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["university.schedul",{"_index":1168,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.assign",{"_index":1216,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.dateandtim",{"_index":1184,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.lectur",{"_index":1200,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.mps.backend.sandbox",{"_index":833,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["university.schedule.room",{"_index":1178,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.schedul",{"_index":1176,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["university.schedule.structur",{"_index":1418,"title":{},"name":{},"text":{"69":{}},"component":{}}],["university.schedule.stud",{"_index":1212,"title":{},"name":{},"text":{"35":{},"84":{},"127":{}},"component":{}}],["unstablemodelixfeatur",{"_index":522,"title":{},"name":{},"text":{"10":{}},"component":{}}],["unsur",{"_index":149,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["until",{"_index":791,"title":{},"name":{},"text":{"19":{},"40":{},"110":{},"132":{}},"component":{}}],["untyp",{"_index":375,"title":{},"name":{},"text":{"6":{},"11":{},"13":{},"38":{},"54":{},"98":{},"103":{},"105":{},"130":{}},"component":{}}],["untypedconcept",{"_index":1261,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["up",{"_index":295,"title":{"16-4":{},"24-7":{},"43-7":{},"59-3":{},"61-7":{},"77-7":{},"89-6":{},"108-4":{},"116-7":{},"135-7":{}},"name":{},"text":{"2":{},"11":{},"12":{},"15":{},"18":{},"21":{},"22":{},"23":{},"29":{},"39":{},"48":{},"54":{},"55":{},"58":{},"61":{},"72":{},"74":{},"75":{},"87":{},"94":{},"103":{},"104":{},"107":{},"111":{},"113":{},"114":{},"115":{},"121":{},"131":{}},"component":{}}],["upcom",{"_index":1355,"title":{},"name":{},"text":{"64":{}},"component":{}}],["updat",{"_index":254,"title":{},"name":{},"text":{"2":{},"11":{},"33":{},"48":{},"64":{},"73":{},"94":{},"103":{},"125":{}},"component":{}}],["upload",{"_index":1289,"title":{},"name":{},"text":{"39":{},"87":{},"131":{}},"component":{}}],["uri(\"https://artifacts.itemis.cloud/repository/maven",{"_index":1045,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}],["url",{"_index":829,"title":{},"name":{},"text":{"21":{},"28":{},"31":{},"33":{},"68":{},"75":{},"81":{},"113":{},"120":{},"123":{},"125":{}},"component":{}}],["url(\"ws://localhost/json/v2/test",{"_index":1017,"title":{},"name":{},"text":{"30":{},"80":{},"122":{}},"component":{}}],["us",{"_index":56,"title":{"16":{},"21":{},"22":{},"23":{},"30":{},"31":{},"45":{},"59":{},"64":{},"65":{},"66":{},"74":{},"75":{},"80":{},"81":{},"91":{},"108":{},"113":{},"114":{},"115":{},"122":{},"123":{},"137":{},"6-3":{},"20-1":{},"20-2":{},"20-3":{},"22-5":{},"23-5":{},"24-3":{},"43-3":{},"61-3":{},"66-2":{},"77-3":{},"89-3":{},"98-3":{},"112-1":{},"112-2":{},"112-3":{},"114-5":{},"115-5":{},"116-3":{},"135-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{},"10":{},"11":{},"15":{},"16":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"26":{},"28":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"48":{},"49":{},"54":{},"58":{},"59":{},"61":{},"63":{},"64":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"73":{},"74":{},"75":{},"77":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"95":{},"98":{},"101":{},"102":{},"103":{},"107":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"118":{},"120":{},"121":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{},"135":{},"136":{},"137":{}},"component":{}}],["usabl",{"_index":1540,"title":{},"name":{},"text":{"73":{}},"component":{}}],["usag",{"_index":596,"title":{"45-1":{},"72-2":{},"73-2":{},"91-1":{},"137-1":{}},"name":{"30":{},"31":{},"32":{},"45":{},"80":{},"81":{},"82":{},"91":{},"122":{},"123":{},"124":{},"137":{}},"text":{"11":{},"30":{},"31":{},"32":{},"54":{},"80":{},"81":{},"82":{},"103":{},"122":{},"123":{},"124":{}},"component":{}}],["use_case_1",{"_index":814,"title":{},"name":{"21":{},"113":{}},"text":{},"component":{}}],["use_case_2",{"_index":837,"title":{},"name":{"22":{},"114":{}},"text":{},"component":{}}],["use_case_3",{"_index":857,"title":{},"name":{"23":{},"115":{}},"text":{},"component":{}}],["usecas",{"_index":1349,"title":{},"name":{"64":{},"65":{},"66":{},"74":{},"75":{},"76":{}},"text":{},"component":{}}],["usecase1",{"_index":823,"title":{},"name":{},"text":{"21":{},"113":{}},"component":{}}],["usecase2",{"_index":852,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["usecase3",{"_index":863,"title":{},"name":{},"text":{"23":{},"115":{}},"component":{}}],["usecases.adoc",{"_index":1341,"title":{},"name":{},"text":{"61":{}},"component":{}}],["user",{"_index":117,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"47":{},"48":{},"49":{},"68":{},"93":{},"94":{},"95":{},"98":{}},"component":{}}],["usernam",{"_index":746,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"116":{},"135":{}},"component":{}}],["usual",{"_index":118,"title":{},"name":{},"text":{"1":{},"2":{},"39":{},"48":{},"87":{},"93":{},"94":{},"131":{}},"component":{}}],["util",{"_index":353,"title":{},"name":{},"text":{"6":{},"13":{},"20":{},"98":{},"105":{},"112":{}},"component":{}}],["v1",{"_index":613,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["v2",{"_index":610,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["val",{"_index":912,"title":{},"name":{},"text":{"28":{},"29":{},"30":{},"31":{},"80":{},"81":{},"120":{},"121":{},"122":{},"123":{}},"component":{}}],["valid",{"_index":1153,"title":{},"name":{},"text":{"34":{},"39":{},"83":{},"87":{},"126":{},"131":{}},"component":{}}],["valu",{"_index":277,"title":{"36-6":{},"85-6":{},"128-6":{}},"name":{},"text":{"2":{},"16":{},"20":{},"24":{},"28":{},"29":{},"39":{},"40":{},"43":{},"48":{},"59":{},"61":{},"69":{},"75":{},"77":{},"87":{},"89":{},"94":{},"108":{},"112":{},"116":{},"120":{},"121":{},"131":{},"132":{},"135":{}},"component":{}}],["vararg",{"_index":1242,"title":{},"name":{},"text":{"36":{},"85":{},"128":{}},"component":{}}],["variabl",{"_index":747,"title":{},"name":{},"text":{"16":{},"24":{},"28":{},"43":{},"45":{},"59":{},"61":{},"77":{},"89":{},"91":{},"108":{},"116":{},"120":{},"135":{},"137":{}},"component":{}}],["variant",{"_index":1374,"title":{},"name":{},"text":{"66":{}},"component":{}}],["variat",{"_index":1353,"title":{},"name":{},"text":{"64":{},"74":{}},"component":{}}],["varieti",{"_index":356,"title":{},"name":{},"text":{"6":{},"98":{}},"component":{}}],["variou",{"_index":146,"title":{},"name":{},"text":{"1":{},"10":{},"11":{},"15":{},"18":{},"47":{},"54":{},"58":{},"61":{},"63":{},"93":{},"102":{},"103":{},"107":{},"111":{}},"component":{}}],["vendor",{"_index":1576,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["vendor.j",{"_index":1575,"title":{},"name":{},"text":{"74":{},"75":{}},"component":{}}],["veri",{"_index":52,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"39":{},"47":{},"48":{},"69":{},"87":{},"93":{},"94":{},"98":{},"131":{}},"component":{}}],["verif",{"_index":441,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["versa",{"_index":803,"title":{},"name":{},"text":{"20":{},"22":{},"23":{},"112":{},"114":{},"115":{}},"component":{}}],["version",{"_index":89,"title":{"9-8":{},"11-5":{},"45-2":{},"54-8":{},"91-2":{},"101-8":{},"103-5":{},"137-2":{}},"name":{},"text":{"1":{},"2":{},"9":{},"10":{},"11":{},"15":{},"31":{},"39":{},"43":{},"44":{},"45":{},"47":{},"48":{},"54":{},"58":{},"81":{},"87":{},"89":{},"90":{},"91":{},"93":{},"94":{},"101":{},"102":{},"103":{},"107":{},"123":{},"131":{},"135":{},"136":{},"137":{}},"component":{}}],["via",{"_index":741,"title":{"72":{},"73":{}},"name":{},"text":{"16":{},"20":{},"21":{},"24":{},"31":{},"33":{},"40":{},"43":{},"59":{},"61":{},"63":{},"64":{},"67":{},"68":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"89":{},"108":{},"112":{},"113":{},"116":{},"123":{},"125":{},"132":{},"135":{}},"component":{}}],["vice",{"_index":802,"title":{},"name":{},"text":{"20":{},"22":{},"23":{},"112":{},"114":{},"115":{}},"component":{}}],["video",{"_index":176,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["view",{"_index":1351,"title":{},"name":{},"text":{"64":{},"66":{},"68":{}},"component":{}}],["virtual",{"_index":1307,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["virtualfold",{"_index":1297,"title":{"40-4":{},"132-4":{}},"name":{},"text":{},"component":{}}],["vision",{"_index":50,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["vison",{"_index":338,"title":{"4-1":{},"50-1":{},"96-1":{}},"name":{},"text":{},"component":{}}],["vue",{"_index":701,"title":{},"name":{"41":{},"133":{}},"text":{"13":{},"22":{},"23":{},"105":{},"114":{},"115":{}},"component":{}}],["vue.j",{"_index":702,"title":{"41":{},"133":{}},"name":{},"text":{"13":{},"20":{},"22":{},"41":{},"105":{},"112":{},"114":{},"133":{}},"component":{}}],["vue:build",{"_index":847,"title":{},"name":{},"text":{"22":{},"114":{}},"component":{}}],["wait",{"_index":1129,"title":{},"name":{},"text":{"33":{},"40":{},"125":{},"132":{}},"component":{}}],["want",{"_index":226,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"10":{},"11":{},"16":{},"24":{},"29":{},"31":{},"38":{},"43":{},"45":{},"48":{},"54":{},"59":{},"61":{},"64":{},"73":{},"77":{},"81":{},"89":{},"91":{},"94":{},"98":{},"101":{},"103":{},"108":{},"116":{},"121":{},"123":{},"130":{},"135":{},"137":{}},"component":{}}],["way",{"_index":355,"title":{},"name":{},"text":{"6":{},"11":{},"16":{},"24":{},"26":{},"28":{},"43":{},"54":{},"59":{},"61":{},"77":{},"89":{},"98":{},"103":{},"108":{},"116":{},"118":{},"120":{},"135":{}},"component":{}}],["web",{"_index":15,"title":{"22":{},"23":{},"114":{},"115":{},"11-10":{},"54-13":{},"67-7":{},"103-10":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"11":{},"13":{},"15":{},"18":{},"20":{},"22":{},"23":{},"39":{},"47":{},"48":{},"50":{},"54":{},"56":{},"58":{},"61":{},"67":{},"71":{},"73":{},"87":{},"93":{},"94":{},"96":{},"98":{},"103":{},"105":{},"107":{},"111":{},"112":{},"114":{},"115":{},"131":{}},"component":{}}],["websit",{"_index":1358,"title":{},"name":{},"text":{"64":{}},"component":{}}],["websocket",{"_index":811,"title":{"73-3":{}},"name":{},"text":{"20":{},"67":{},"112":{}},"component":{}}],["webstorm",{"_index":1339,"title":{},"name":{},"text":{"61":{}},"component":{}}],["weekli",{"_index":790,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["weeklyrecurringschedul",{"_index":789,"title":{},"name":{},"text":{"19":{},"110":{}},"component":{}}],["welcom",{"_index":7,"title":{"1":{},"24":{},"43":{},"47":{},"61":{},"77":{},"89":{},"93":{},"116":{},"135":{}},"name":{},"text":{"72":{}},"component":{}}],["well",{"_index":471,"title":{},"name":{},"text":{"10":{},"54":{},"102":{}},"component":{}}],["wev",{"_index":567,"title":{},"name":{},"text":{"11":{},"54":{},"103":{}},"component":{}}],["what’",{"_index":351,"title":{"6-5":{},"98-5":{}},"name":{},"text":{},"component":{}}],["whenev",{"_index":1306,"title":{},"name":{},"text":{"40":{},"132":{}},"component":{}}],["wherev",{"_index":737,"title":{},"name":{},"text":{"16":{},"24":{},"43":{},"61":{},"77":{},"108":{},"116":{},"135":{}},"component":{}}],["whether",{"_index":1393,"title":{},"name":{},"text":{"68":{}},"component":{}}],["whilst",{"_index":32,"title":{},"name":{},"text":{"1":{},"4":{},"47":{},"50":{},"93":{},"96":{}},"component":{}}],["whitepaper[1",{"_index":40,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["whole",{"_index":871,"title":{},"name":{},"text":{"26":{},"69":{},"118":{}},"component":{}}],["whose",{"_index":1113,"title":{},"name":{},"text":{"33":{},"125":{}},"component":{}}],["wifi",{"_index":1359,"title":{},"name":{},"text":{"64":{}},"component":{}}],["window",{"_index":735,"title":{},"name":{},"text":{"16":{},"21":{},"24":{},"43":{},"59":{},"61":{},"77":{},"89":{},"108":{},"113":{},"116":{},"135":{}},"component":{}}],["within",{"_index":131,"title":{},"name":{},"text":{"1":{},"12":{},"47":{},"55":{},"69":{},"93":{},"104":{}},"component":{}}],["without",{"_index":208,"title":{"29":{},"121":{}},"name":{},"text":{"2":{},"11":{},"22":{},"23":{},"29":{},"30":{},"39":{},"40":{},"45":{},"48":{},"54":{},"74":{},"75":{},"80":{},"87":{},"91":{},"94":{},"103":{},"114":{},"115":{},"121":{},"122":{},"131":{},"132":{},"137":{}},"component":{}}],["word",{"_index":148,"title":{},"name":{},"text":{"1":{},"47":{},"93":{}},"component":{}}],["work",{"_index":386,"title":{},"name":{},"text":{"6":{},"11":{},"18":{},"26":{},"54":{},"61":{},"67":{},"69":{},"98":{},"103":{},"111":{},"118":{}},"component":{}}],["workbench",{"_index":31,"title":{},"name":{},"text":{"1":{},"3":{},"4":{},"6":{},"47":{},"49":{},"50":{},"93":{},"95":{},"96":{},"98":{}},"component":{}}],["worker",{"_index":1495,"title":{},"name":{},"text":{"72":{},"74":{},"75":{}},"component":{}}],["workspac",{"_index":158,"title":{"6-4":{},"98-4":{}},"name":{},"text":{"1":{},"6":{},"11":{},"13":{},"47":{},"54":{},"56":{},"93":{},"98":{},"103":{},"105":{}},"component":{}}],["world",{"_index":409,"title":{},"name":{},"text":{"8":{},"11":{},"53":{},"54":{},"100":{},"103":{}},"component":{}}],["wrap",{"_index":382,"title":{},"name":{},"text":{"6":{},"23":{},"36":{},"41":{},"72":{},"73":{},"85":{},"98":{},"115":{},"128":{},"133":{}},"component":{}}],["write",{"_index":159,"title":{},"name":{},"text":{"1":{},"11":{},"20":{},"23":{},"30":{},"33":{},"41":{},"47":{},"54":{},"67":{},"69":{},"80":{},"93":{},"103":{},"112":{},"115":{},"122":{},"125":{},"133":{}},"component":{}}],["written",{"_index":843,"title":{},"name":{},"text":{"22":{},"23":{},"114":{},"115":{}},"component":{}}],["ws://127.0.0.1:8090/updat",{"_index":1552,"title":{},"name":{},"text":{"73":{}},"component":{}}],["ws://localhost:48302/w",{"_index":1689,"title":{},"name":{},"text":{"75":{}},"component":{}}],["wscat",{"_index":1550,"title":{},"name":{},"text":{"73":{}},"component":{}}],["x",{"_index":1503,"title":{},"name":{},"text":{"72":{},"73":{}},"component":{}}],["xx:maxrampercentage=85",{"_index":1477,"title":{},"name":{},"text":{"70":{}},"component":{}}],["year",{"_index":503,"title":{},"name":{},"text":{"10":{},"11":{},"54":{},"102":{},"103":{}},"component":{}}],["yourself",{"_index":1324,"title":{},"name":{},"text":{"45":{},"91":{},"137":{}},"component":{}}],["youtrack",{"_index":442,"title":{},"name":{},"text":{"9":{},"101":{}},"component":{}}],["zip",{"_index":938,"title":{},"name":{},"text":{"28":{},"120":{}},"component":{}}],["ziptree(it",{"_index":1058,"title":{},"name":{},"text":{"31":{},"81":{},"123":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version main. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users usually start here. How-To Guides Reference There is also a dedicated API page where you can find component specific API documentaion over at https://api.docs.modelix.org. Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"main","name":"index","url":"/modelix/main/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"2":{"id":2,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"main","name":"architecture","url":"/modelix/main/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"3":{"id":3,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"main","name":"glossary","url":"/modelix/main/explanation/glossary.html","titles":[]},"4":{"id":4,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"main","name":"goals","url":"/modelix/main/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"5":{"id":5,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"main","name":"index","url":"/modelix/main/explanation/index.html","titles":[]},"6":{"id":6,"text":"The goal of this quick overview is for you to understand, what modelix is, what it is not and how it might be utilized. Modelix is a platform to bring models to the web. It consists of multiple components, which can be combined in different ways to support a variety of use cases. It is important to note, that modelix is neither a language workbench in the traditional sense nor a one-size-fits-all solution. The modelix project aims to provide you with building blocks, which empower you to construct your own application with ease. The following table gives an overview over essential components, which you are very likely to encounter when using modelix. For a full list of components check out the components table. Component Short description model-api Untyped API, which allows to interact with models. model-server Server, which persistently stores models. model-client Client, which implements the model-api and connects to a model-server. model-api-gen(-gradle) Component, which generates a typed, domain specific API based on a metamodel definition. The generated API wraps the untyped model-api. As a basic example, you might want to create a web app, which manipulates domain-specific models. In this case we assume a metamodel for such models exists as part of an MPS project. The image above shows how the essential components work together to form the backend for a web application. In this case the metamodel definition is generated from the structure aspect of a language in MPS. For a different use case it could also be from another (custom) source. The web application can then use the domain-specific API to manipulate and store models in the model-server. Of course, this example only scratches the surface of what is possible with modelix. Apart from the individual components, modelix can also provide a system called workspaces. It consists of multiple docker images, which run in a kubernetes cluster. Among other features, this system enables users to use projectional editors inside their browser by running MPS instances in the cloud. Modelix is always evolving. If you want to learn more about what is coming, check out the roadmap.","title":"Modelix Overview","component":"modelix","version":"main","name":"overview","url":"/modelix/main/explanation/overview.html","titles":[{"text":"What is Modelix?","hash":"_what_is_modelix","id":1},{"text":"Essential components","hash":"_essential_components","id":2},{"text":"Basic example using essential components","hash":"_basic_example_using_essential_components","id":3},{"text":"Modelix workspaces","hash":"_modelix_workspaces","id":4},{"text":"What’s next","hash":"_whats_next","id":5}]},"7":{"id":7,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"main","name":"faq","url":"/modelix/main/howto/faq.html","titles":[]},"8":{"id":8,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"main","name":"index","url":"/modelix/main/howto/index.html","titles":[]},"9":{"id":9,"text":"This guide aims to make it easier for you to start contributing to the modelix project. The following tools are used to develop modelix. You may want to install these on your machine before getting started. IntelliJ IDEA Java 11 (e.g. Temurin) ant git MPS (recommended version 2021.2.6) docker kubernetes helm python npm pre-commit The modelix repositories are located on GitHub. In order to contribute you need to configure two-factor authentication and commit verification. We use a YouTrack instance hosted on issues.modelix.org to keep track of modelix issues. If you want to create a new issue, you can do so in the corresponding GitHub repository, and it will be automatically imported into YouTrack. We use Semantic Versioning in modelix.core (a further rollout to the other modelix repositories is planned for the future). Therefore, commit messages follow Conventional Commits. To install the hooks enforcing the convention, you need to run npm install and pre-commit install in your local repository. Branch names should always be prefixed. The prefix is determined by the type of changes that your branch provides like fix/, feature/, docs/. Alternatively you can use issue/ followed by the issue id as your branch name, e.g. issue/MODELIX-123. If a corresponding issue exists for your pull request, then the issue id must be part of the title. You can use the \"Copy ID and summary to clipboard\" button in YouTrack, and use the clipboard content as the title for the pull request.","title":"Contribution Guide","component":"modelix","version":"main","name":"contribute","url":"/modelix/main/main/contribute.html","titles":[{"text":"Tools","hash":"_tools","id":1},{"text":"Essentials","hash":"_essentials","id":2},{"text":"Deployment","hash":"_deployment","id":3},{"text":"Other","hash":"_other","id":4},{"text":"Platforms","hash":"_platforms","id":5},{"text":"Repositories","hash":"_repositories","id":6},{"text":"Issue Tracking","hash":"_issue_tracking","id":7},{"text":"Semantic Versioning and Conventional Commits","hash":"_semantic_versioning_and_conventional_commits","id":8},{"text":"Naming Conventions","hash":"_naming_conventions","id":9},{"text":"Branch Names","hash":"_branch_names","id":10},{"text":"Pull Requests","hash":"_pull_requests","id":11}]},"10":{"id":10,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here. Sometimes we want to implement a feature or expose an API that is experimental. When doing so, we mark the APIs as experimental. In TypeScript, we use the documentation tag @experimental. For Kotlin, we use the annotation @UnstableModelixFeature for an opt-in requirement When marking something as experimental, we document the reason for it being experimental and our plans for stabilizing the feature. An example in our Kotlin code can be found here. An example in TypeScript can be found here.","title":"Development and Releases","component":"modelix","version":"main","name":"development","url":"/modelix/main/main/development.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2},{"text":"Experimental features","hash":"experimental_features","id":3}]},"11":{"id":11,"text":"Unfortunately, we were not able to update the roadmap before releasing modelix-23.2. We are dedicated to bring an updated version during December 2023 after our already scheduled planning sessions. Please check the documentation in the main branch of modelix. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Roadmap","component":"modelix","version":"main","name":"roadmap","url":"/modelix/main/main/roadmap.html","titles":[{"text":"Key priorities overview","hash":"_key_priorities_overview","id":1},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":2},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":3},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":4},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":5},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":6},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":7},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":8},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":9},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":10},{"text":"LIonWeb","hash":"_lionweb","id":11}]},"12":{"id":12,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"main","name":"todo","url":"/modelix/main/main/todo.html","titles":[]},"13":{"id":13,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix kotlin-utils Kotlin 🔗 🔗 🔗 org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-datastructure Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix bulk-model-sync-lib Kotlin 🔗 🔗 🔗 🔗 org.modelix bulk-model-sync-solution MPS 🔗 🔗 org.modelix bulk-model-sync-gradle Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix.bulk-model-sync.gradle.plugin Gradle 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 vue-model-api Vue.js 🔗 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelql-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-core Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-html Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-typed Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-untyped Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix.mps model-adapters Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps model-server-plugin Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗 🔗","title":"Table of modelix Components","component":"modelix","version":"main","name":"components-table","url":"/modelix/main/reference/components-table.html","titles":[]},"14":{"id":14,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"main","name":"index","url":"/modelix/main/reference/index.html","titles":[]},"15":{"id":15,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"main","name":"repositories-components","url":"/modelix/main/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"16":{"id":16,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"main","name":"build-component","url":"/modelix/main/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":2},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":3},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":4}]},"17":{"id":17,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/tutorial/index.html","titles":[]},"18":{"id":18,"text":"The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is, then modelix itself ships with a Projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration for what is possible with modelix and make you think about and envision your own use cases. To work with the samples, you need the following software installed.: MPS 2021.2.6 Java 11 Docker and Docker Compose Alternatives like Podman might work, but have not been tested. Clone samples repository Start building all components with ./gradlew build inside the repository Building everything in the beginning is not strictly necessary, but it enables you to let the build run, while you explore the documentation further. Explore the documentation Start with the overview Or go directly to one of the samples Use case 1: Model server and MPS Use case 2: Model server and web frontend Use case 3: Model server and web backend","title":"Introduction","component":"modelix","version":"main","name":"index","url":"/modelix/main/samples/index.html","titles":[{"text":"Technical prerequisites","hash":"_technical_prerequisites","id":1},{"text":"Getting started","hash":"_getting_started","id":2}]},"19":{"id":19,"text":"The MPS language (aka. metamodel) used in all examples is the same. It is fairly small as describes a simplified lecture schedule. The language intentionally does not use expressions. Creating editors for expressions manually is tedious, and modelix has no support yet for generating these editors for you. The main concepts of the language are: RoomList Root node that contains rooms. Room LectureList Root node that contains lectures. Lecture Lectures are held in rooms. Schedule A lecture is scheduled. OnetimeSchedule A lecture can be scheduled once. WeeklyRecurringSchedule Or a lecture can be scheduled weekly until an end date You will find more concepts in the language like SemesterPlan, Tutor and Equipment they are not used in the samples as of now.","title":"Metamodel for the samples","component":"modelix","version":"main","name":"metamodel","url":"/modelix/main/samples/metamodel.html","titles":[]},"20":{"id":20,"text":"The samples are structured into use cases. Each use case uses different components from the modelix platform to create custom solutions. On this page, you can get an overview of all use cases, and see how they are related and what their essential differences are. In the first use case, an MPS project is synchronized to a repository on a model server by utilizing the model-server-sync-plugin. It shows how to make model data, previously accessible only in a running MPS or via files, available through a server. In itself, this use case has little value, but the next use cases build in part on it. See the Use case 1 page for details. In this use case, we connect web frontends to a model server. The web frontends read from and write model data to the model server. One web frontend can be used to edit model data and is implemented with Vue.js. The other one serves as an overview and is implemented with Angular. You can see how changes made in one connected application are instantly reflected in another connected application. You can also connect an MPS to the model server and see how changes made in the application are synced to MPS and vice versa. The frontend applications directly use the model-client JavaScript library that connects to the model server. They also use a TypeScript API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. See the Use case 2 page for details. In this use case, a web frontend connects to a web backend, which in turn communicates with a model server. Like in use case 2 model data is synced automatically between the model server, the application and MPS. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented with Quarkus. It uses the model-client to connect to a model server. It also uses a Kotlin API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. For the Angular based web frontend, the web backend provides a custom HTTP- and websocket-based API. See the Use case 3 page for details.","title":"Overview of the samples","component":"modelix","version":"main","name":"overview","url":"/modelix/main/samples/overview.html","titles":[{"text":"Use case 1","hash":"use_case_1","id":1},{"text":"Use case 2","hash":"use_case_2","id":2},{"text":"Use case 3","hash":"use_case_3","id":3}]},"21":{"id":21,"text":"This use case shows how model data can be synced between an MPS instance and a model server. This makes model data, previously accessible only in a running MPS or via files, available through a server. The synchronization needs to be initialized from MPS using the model-server-sync-plugin. Figure 1. Initiating synchronization and synchronizing change Figure 2. Initiating synchronization and synchronizing change (sequence diagram) Execute the following command to set up the MPS project under mps/project-mps-backend. It installs the model-server-sync-plugin and its dependencies. Command to set up the MPS project ./gradlew mps:project-mps-backend:build Command to start a model server docker-compose --profile useCase1 up This command starts a model server under http://localhost:28101/ Open the mps/project-mps-backend in MPS 2021.2.6. In the 'Cloud' tool window, right-click on Cloud and select Add Model Server Figure 3. Adding a model server Enter http://localhost:28101/ as the model servers URL Figure 4. Entering the address of the model server In the Cloud tool window, right-click on the added server and select Add Repository Figure 5. Adding a repository Enter courses as the repository name Figure 6. Entering repository name Right-click the University.Schedule.mps.backend.sandbox solution and select Cloud Actions > Copy on Cloud and Sync → http://localhost:28101/courses Figure 7. Synchronizing solution Explore synchronized data in the Cloud tool window Figure 8. Exploring synchronized data","title":"Use case 1: Model server and MPS","component":"modelix","version":"main","name":"use_case_1","url":"/modelix/main/samples/use_case_1.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Instructions","hash":"_instructions","id":2},{"text":"Setup MPS","hash":"_setup_mps","id":3},{"text":"Start a model server","hash":"_start_a_model_server","id":4},{"text":"Start MPS","hash":"_start_mps","id":5},{"text":"Connect to the model server","hash":"_connect_to_the_model_server","id":6}]},"22":{"id":22,"text":"This use case realizes the synchronization of model data between two web frontends and a model server. One web frontend is the Management application implemented in Vue.js and can modify the model content. It uses the @modelix/model-client, the @modelix/vue-model-api and code generated by the Model API generator. The generated code provides type-safe access to model data and is derived from the MPS languages under mps/languages. The other web frontend is written in Angular and only reads model data. It also uses the model-client and the generated type-safe TypeScript API. A running MPS instance can also sync model data using the model-server-sync-plugin. The web frontends communicate directly with a model server and not through an intermediary custom backend like in use case 3. Take a look at the overview to understand how this use case relates to the other use cases Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build needed components ./gradlew spa-management-vue:build spa-overview-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the Single-page applications spa-management-vue and spa-overview-angular Start up the components. docker-compose --profile useCase2 up This starts: a model server with initial data under http://localhost:28101/ the Management application under http://localhost:3000/ the Overview application under http://localhost:4200/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the Management application. Those changes are first synced to the model server. The model server syncs those changes to other opened web applications, like the Overview application or other instances of the Management application open in another tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa.","title":"Use case 2: Model server and web frontend","component":"modelix","version":"main","name":"use_case_2","url":"/modelix/main/samples/use_case_2.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"23":{"id":23,"text":"This use case realizes the synchronization of model data between a web application and MPS through a model server. This use case consists of: a model server that holds model data a web backend that can read and write data to the model server a web frontend that displays data from and interacts with the web backend an optionally running MPS that syncs its data with the model server To see how a web frontend can directly connect to a model server, take a look at use case 2. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented in Quarkus. It communicates to the model server using the model-client. The data communicated between the model server and web backend are modelix-specific data structures without information about the metamodel. In the backend, those data structures are wrapped with generated Kotlin classes generated by the Model API generator from the metamodel. The backend programmer can use this so-called domain-specific-language API to access model data more type-safely. The web backend exposes a custom application-specific API, which the web frontend uses to communicate and read and write data. The web backend, therefore: controls how data is read and written to the model server. hides details about modelix-specific data structures and domain-specific-language API. Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build the needed components ./gradlew rest-api-model-server:build spa-dashboard-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the web backend rest-api-model-server builds the web frontend spa-dashboard-angular Start up the components. docker-compose --profile useCase3 up This starts: a model server with initial data under http://localhost:28101/ the web backend under http://localhost:8090/ the web frontend under http://localhost:4201/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the web frontend. Those changes are first communicated to the web backend. From there, they are communicated to the model server. The model server syncs those changes to other open web applications. You can see this by opening the dashboard a second time in a different tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa. You can also start the web frontends from use case 2 and see how changes to the model are propagated there.","title":"Use case 3: Model server and web backend","component":"modelix","version":"main","name":"use_case_3","url":"/modelix/main/samples/use_case_3.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"24":{"id":24,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"25":{"id":25,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/explanation/index.html","titles":[]},"26":{"id":26,"text":"When working with large models you will quickly run into performance issues when you try to replicate the whole model into the client. While the data structure for model replication in Modelix supports partial loading of models, you still need a way to describe which data you need on the client. Loading data on demand while traversing the model also results in a poor performance, because of the potentially large number of fine-grained request. A first attempt to solve this problem was to disallow lazy loading and require the client to load all required data at the beginning, before working with the model. A special query language was used to filter the data and an attempt to access a node that is not included by that query resulted in an exception, forcing the developer to adjust the query. While this results in a more predictable performance, it is also hard to maintain and still not optimal for the performance. You have to download all the data at the beginning that you might eventually need, potentially exceeding the available memory of the system. The ModelQL query language provides a more dynamic way of loading parts of the model on demand, but still allows reducing the number of request to a minimum. The downside is that it’s not just a different implementation hidden behind the model-api, but requires to use a different API. The query language is inspired by Reactive Streams and the execution engine uses Kotlin Flows, which is a Coroutines compatible implementation of Reactive Streams. Often it’s useful to know if a stream is expected to return only one element or multiple elements. Project Reactor, another implementation of Reactive Streams, introduced the notion of Mono and Flux to distinguish them. You will also find them in ModelQL.","title":"ModelQL","component":"modelix","version":"main","name":"modelql","url":"/modelix/main/core/explanation/modelql.html","titles":[{"text":"Reactive Streams","hash":"_reactive_streams","id":1}]},"27":{"id":27,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/howto/index.html","titles":[]},"28":{"id":28,"text":"ModelQL defines its own HTTP endpoint and provides server/client implementations for it. The model-server and the mps-model-server-plugin already implement this endpoint. The client can be created like this: val client = ModelQLClient.builder().url(\"http://localhost/query\").httpClient(httpClient).build() val result: List = client.query { root -> root.children(\"modules\").property(\"name\").toList() } When creating a LightModelClient you can optionally provide a ModelQLClient instance, which allows invoking .query { …​ } (see below) on a node returned by the LightModelClient. val modelqlClient = ModelQLClient.builder().build() val client = LightModelClient.builder().modelQLClient(modelqlClient).build() val result: List = client.getRootNode()!!.query { it.children(\"modules\").property(\"name\").toList() } You can use the model-api-gen-gradle plugin to generate type safe extensions from your meta-model. Specify the modelqlKotlinDir property to enable the generation. val result: List = client.query { root -> root.children(\"classes\").ofConcept(C_ClassConcept) .member .ofConcept(C_StaticMethodDeclaration) .filter { it.visibility.instanceOf(C_PublicVisibility) } .toList() } If a query returns a node, you can execute a new query starting from that node. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val names = cls.query { it.member.ofConcept(C_StaticMethodDeclaration).name.toList() } For convenience, it’s possible to access further data of that node using the INode API, but this is not recommended though, because each access sends a new query to the server. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val className = cls.name While returning a list of elements is simple, the purpose of the query language is to reduce the number of request to a minimum. This requires combining multiple values into more complex data structures. The zip operation provides a simple way of doing that: val result: List>> = query { db -> db.products.map { val id = it.id val title = it.title val images = it.images.toList() id.zip(title, images) }.toList() } result.forEach { println(\"ID: ${it.first}, Title: ${it.second}, Images: ${it.third}\") } This is suitable for combining a small number of values, but because of the missing variable names it can be hard to read for a larger number of values or even multiple zip operations assembled into a hierarchical data structure. This can be solved by defining custom data classes and using the mapLocal operation: data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = remoteProductDatabaseQuery { db -> db.products.map { val id = it.id val title = it.title val images = it.images.mapLocal { MyImage(it) }.toList() id.zip(title, images).mapLocal { MyProduct(it.first, it.second, it.third) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } The mapLocal operation is not just useful in combination with the zip operation, but in general to create instances of classes only known to the client. The body of mapLocal is executed on the client after receiving the result from the server. That’s why you only have access to the output of the zip operation and still have to use first, second and third inside the query. To make this even more readable there is a buildLocalMapping operation, which provides a different syntax for the zip-mapLocal chain. data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = query { db -> db.products.buildLocalMapping { val id = it.id.request() val title = it.title.request() val images = it.images.mapLocal { MyImage(it) }.toList().request() onSuccess { MyProduct(id.get(), title.get(), images.get()) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } At the beginning of the buildLocalMapping body, you invoke request() on all the values you need to assemble your object. This basically adds the operand to the internal zip operation and returns an object that gives you access to the value after receiving it from the server. Inside the onSuccess block you assemble the local object using the previously requested values. One use case of the query language is to build database applications that generate HTML pages from the data stored in the model server. You can use the Kotlin HTML DSL together with ModelQL to do that. Use buildHtmlQuery to request data from the server and render it into an HTML string: val html = query { it.map(buildHtmlQuery { val modules = input.children(\"modules\").requestFragment { val moduleName = input.property(\"name\").request() val models = input.children(\"models\").requestFragment { val modelName = input.property(\"name\").request() onSuccess { div { h2 { +\"Model: ${modelName.get()}\" } } } } onSuccess { div { h1 { +\"Module: ${moduleName.get()}\" } insertFragment(models) } } } onSuccess { body { insertFragment(modules) } } }) } buildHtmlQuery and the requestFragment operation are similar to the buildLocalMapping operation, but inside the onSuccess block you use the Kotlin HTML DSL.","title":"ModelQL","component":"modelix","version":"main","name":"modelql","url":"/modelix/main/core/howto/modelql.html","titles":[{"text":"Independent ModelQLClient","hash":"_independent_modelqlclient","id":1},{"text":"Integration with LightModelClient","hash":"_integration_with_lightmodelclient","id":2},{"text":"Type-safe ModelQL API","hash":"_type_safe_modelql_api","id":3},{"text":"Run query on an INode","hash":"_run_query_on_an_inode","id":4},{"text":"Complex query results","hash":"_complex_query_results","id":5},{"text":"Kotlin HTML integration","hash":"_kotlin_html_integration","id":6}]},"29":{"id":29,"text":"If you want to test code that processes model-api instances, you can do this in-process without a running (light-) model-server. Use the following pattern to set up your test fixture containing model-api instances: val branch = ModelFacade.toLocalBranch(ModelFacade.newLocalTree()) branch.runWrite { val root = branch.getRootNode() val someRootNode = root.addNewChild(null, C_SomeConcept.untyped()).typed() someRootNode.member.addNew(-1, C_OtherConcept).apply { name = \"some test property value\" } } All classes of the pattern C_* and N_* are generated using the model-api-gen.","title":"How-To test model-api client code without a model-server","component":"modelix","version":"main","name":"testing-against-model-api","url":"/modelix/main/core/howto/testing-against-model-api.html","titles":[]},"30":{"id":30,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"main","name":"usage-light-model-client","url":"/modelix/main/core/howto/usage-light-model-client.html","titles":[]},"31":{"id":31,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = project.layout.buildDirectory.dir(\"mps\").get().asFile val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"main","name":"usage-model-api-gen-gradle","url":"/modelix/main/core/howto/usage-model-api-gen-gradle.html","titles":[]},"32":{"id":32,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"main","name":"usage-model-server","url":"/modelix/main/core/howto/usage-model-server.html","titles":[]},"33":{"id":33,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The bulk-model-sync Gradle plugin synchronizes models between model-api endpoints. A common example would be synchronizing a local MPS project to a model-server. Figure 1. Bulk Synchronization between MPS and model-server The plugin allows the definition of sync directions inside of a modelSync block by specifying source and target endpoint. Based on these directions, Gradle tasks will be generated, which can be run to trigger the corresponding synchronization. Internally, the node data will be bulk exported from the source endpoint and stored as JSON files. After that, these JSON files serve as a specification to incrementally update the target model via the target model-api endpoint. This means that only a minimal amount of write operations is used to update the target model. method parameter type description dependsOn Any Adds the given task as a dependency of this task. direction String, Action Defines a new sync direction with the given name. method parameter type description fromLocal Action Defines a local source (MPS). toModelServer Action Defines a model-server target. fromModelServer Action Defines a model-server source. toLocal Action Defines a local target (MPS). registerLanguage ILanguage Registers the given language and all of its concepts for the synchronisation process. includeModule String Includes the module specified by the given fully qualified name in the synchronisation process. includeModulesByPrefix String Includes all modules, whose fully qualified name starts with the given prefix, in the synchronisation process. enableContinueOnError Boolean If the sync encounters an error, simply log it and continue instead of terminating. This most likely results in an incomplete sync result. Defaults to false. setting type description mpsHome File Location of the MPS to be used for the sync. mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB (default: \"2g\") repositoryDir File Directory in which the modules are stored. mpsDebugPort Int If set, the headless MPS will suspend on startup and wait for a remote debugger on the specified port. setting type description url String URL of the model-server API endpoint. repositoryId String Id of the target/source model-server repository. branchName String Name of the target/source model-server branch. revision String Source model-server revision. Can be used instead of repositoryId and branchName. Only available in ServerSource. modelSync { dependsOn(someOtherTask) direction(\"pushToMyServer\") { registerLanguage(L_MyGeneratedLanguage) includeModule(\"MySolution\") fromLocal { mpsHome = project.layout.buildDirectory.dir(\"mps\").get().asFile mpsHeapSize = \"4g\" repositoryDir = projectDir.resolve(\"my-repo\") } toModelServer { url = \"http://0.0.0.0:28101/v2\" repositoryId = \"my-repo\" branchName = \"dev\" } } } Generated Gradle task to perform synchronization: runSyncPushToMyServer.","title":"Gradle Plugin for synchronizing models between model-api endpoints","component":"modelix","version":"main","name":"component-bulk-model-sync-gradle","url":"/modelix/main/core/reference/component-bulk-model-sync-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"modelSync configuration","hash":"_modelsync_configuration","id":3},{"text":"SyncDirection configuration","hash":"_syncdirection_configuration","id":4},{"text":"LocalSource/-Target configuration","hash":"_localsource_target_configuration","id":5},{"text":"ServerSource/-Target configuration","hash":"_serversource_target_configuration","id":6},{"text":"Example","hash":"_example","id":7}]},"34":{"id":34,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"main","name":"component-light-model-client","url":"/modelix/main/core/reference/component-light-model-client.html","titles":[]},"35":{"id":35,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-export provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"main","name":"component-metamodel-export","url":"/modelix/main/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"36":{"id":36,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator modelqlKotlinDir File The generation of the ModelQL API is optional, because the output has a dependency on the ModelQL runtime. If this option is set, you have to add a dependency on org.modelix:modelql-typed. Can be the same as kotlinDir or a directory in a separate subproject, if you run into memory issues of the Kotlin compiler. kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Fully qualified name of the generated language registration helper conceptPropertiesInterfaceName String Fully qualified name of the generated interface, that contains the concept meta-properties of this language set. If null (default), neither the concept meta-properties nor the corresponding interface will be generated. taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept \"C_\" \"\" typedConceptImpl \"_C_TypedImpl_\" \"\" conceptTypeAlias \"CN_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"main","name":"component-model-api-gen-gradle","url":"/modelix/main/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"37":{"id":37,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"main","name":"component-model-api-gen","url":"/modelix/main/core/reference/component-model-api-gen.html","titles":[]},"38":{"id":38,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API (model-api) is a Kotlin component which provides a metamodel independent model API. This API is the shared basis and used across all modelix components. The model-api provides three distinct parts org.modelix.model.api: The untyped API to provide model access org.modelix.model.data: Data classes for (meta-)model serialization org.modelix.model.area: Model grouping and transactional access The following diagram provides a meta-model of the model-api An untyped access to model content is possible when only using the model-api. In case you want to use domain-specific model access (i.e. typed access), the model-api-gen provides a generator which generates a typed model API from your existing meta-model. This generated API specializes the model-api. Additionally, the model-api provides serializable data classes to represent a meta-model. The following diagrams show a class diagram of the data classes for the model and meta-model.","title":"Model API","component":"modelix","version":"main","name":"component-model-api","url":"/modelix/main/core/reference/component-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"1. org.modelix.model.api","hash":"_1_org_modelix_model_api","id":2},{"text":"2.org.modelix.model.data","hash":"_2_org_modelix_model_data","id":3}]},"39":{"id":39,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"main","name":"component-model-server","url":"/modelix/main/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"40":{"id":40,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The plugin offers a set of health checks via HTTP on port 48305 and path /health. Health checks can be enabled adding query parameters with the health check name and the value true to the request. The check fails, if the indexer is currently running for one of the opened projects. This check indicates a healthy system until a project is opened. Combine it with the projects health check to effectively wait for the system to be ready to serve data immediately. Reports an unhealthy system whenever no project is loaded. Reports an unhealthy system when no virtual folders are available. This might also be true in case a project without virtual folders is fully loaded.","title":"mps-model-server-plugin","component":"modelix","version":"main","name":"component-mps-model-server-plugin","url":"/modelix/main/core/reference/component-mps-model-server-plugin.html","titles":[{"text":"Health checks","hash":"_health_checks","id":1},{"text":"indexer","hash":"_indexer","id":2},{"text":"projects","hash":"_projects","id":3},{"text":"virtualFolders","hash":"_virtualfolders","id":4}]},"41":{"id":41,"text":"Repository | Nexus The @modelix/vue-model-api can be used to create Vue.js applications, that interact with a model server by reading and writing models. @modelix/vue-model-api provides Vue.js composable to connect to the model server. It exposes the model as a tree of reactive objects to the application developer. The exposed object can be further wrapped by the generated TypeScript API by the Gradle plugin for typed model API generation.","title":"Vue.js bindings","component":"modelix","version":"main","name":"component-vue-model-api","url":"/modelix/main/core/reference/component-vue-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"42":{"id":42,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/core/tutorial/index.html","titles":[]},"43":{"id":43,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"44":{"id":44,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/explanation/index.html","titles":[]},"45":{"id":45,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"main","name":"usage-platform","url":"/modelix/main/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"46":{"id":46,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"main","name":"index","url":"/modelix/main/platform/tutorial/index.html","titles":[]},"47":{"id":47,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version 23.1. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. If you are only intersted in one specific component, you can select it in the menu at the bottom left. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users start here. How-To Guides Reference Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"48":{"id":48,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"23.1","name":"architecture","url":"/modelix/23.1/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"49":{"id":49,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"23.1","name":"glossary","url":"/modelix/23.1/explanation/glossary.html","titles":[]},"50":{"id":50,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"23.1","name":"goals","url":"/modelix/23.1/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"51":{"id":51,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/explanation/index.html","titles":[]},"52":{"id":52,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"23.1","name":"faq","url":"/modelix/23.1/howto/faq.html","titles":[]},"53":{"id":53,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/howto/index.html","titles":[]},"54":{"id":54,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Development, Releases, and Roadmap","component":"modelix","version":"23.1","name":"roadmap","url":"/modelix/23.1/main/roadmap.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2},{"text":"Roadmap","hash":"_roadmap","id":3},{"text":"Key priorities overview","hash":"_key_priorities_overview","id":4},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":5},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":6},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":7},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":8},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":9},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":10},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":11},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":12},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":13},{"text":"LIonWeb","hash":"_lionweb","id":14}]},"55":{"id":55,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"23.1","name":"todo","url":"/modelix/23.1/main/todo.html","titles":[]},"56":{"id":56,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗","title":"Table of modelix Components","component":"modelix","version":"23.1","name":"components-table","url":"/modelix/23.1/reference/components-table.html","titles":[]},"57":{"id":57,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/reference/index.html","titles":[]},"58":{"id":58,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"23.1","name":"repositories-components","url":"/modelix/23.1/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"59":{"id":59,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"23.1","name":"build-component","url":"/modelix/23.1/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":2},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":3}]},"60":{"id":60,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/tutorial/index.html","titles":[]},"61":{"id":61,"text":"The examples are currently work in progress and are develop alongside the modelix platform development. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use-cases and architectures based on what is provided here. Not all features of modelix are shown here so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is then modelix itself ships with a projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration of what is possible with modelix and make you think and envision your own use-cases. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties. Once the initial build has completes you can dive in with the following: Read explanations in the Courses Domain: MPS Language and Model Read the use-cases these samples cover in the Use Cases of the Sample project Understand the repository in the Sample Repository Structure Inspect and edit the project with the code editor of your choice. The top folder in the repository provides IntelliJ configurations, the mps folder is a sub-project can be opened using MPS 2021.2.6, and the spa-dashboard-angular folder is a WebStorm project. Start sample components which realize use case samples:tutorial/startup-usecases.adoc","title":"Welcome to the modelix samples!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/samples/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7},{"text":"Entry Points","hash":"_entry_points","id":8}]},"62":{"id":62,"text":"","title":"Courses Domain: MPS Language and Model","component":"modelix","version":"23.1","name":"courses-domain","url":"/modelix/23.1/samples/explanation/courses-domain.html","titles":[]},"63":{"id":63,"text":"The repository of the modelix samples is a single gradle project to make building everything at once easy. The examples are organized by the technology they use into the various sub-folders: Components/Tech Description Status Folder MPS + cloud-plugin MPS language definition that is used by all examples. The MPS language structure is used to generate a Java API consumed by all examples. ✅ mps MPS, metamodel-generator Generated Kotlin API from the MPS language. ✅ mps/metamodel OpenAPI A hand-crafted OpenAPI specification that defines domain-specific REST endpoints which expose the model contents. ✅ openapi model-server + Quarkus An implementation of the OpenAPI that exposes the model contents REST. Obtains model data from a running model-server. ✅ rest-api-model-server ligh-model-server+ ModelQL + Ktor An implementation of the OpenAPI that exposes the model contents REST. Obtains model data from a running the light-model-server MPS plugin. ✅ rest-api-model-ql Angular via REST A single page app that realizes a read-only dashboard. Can connect to either of the OpenAPI implementations. ✅ spa-dashboard-angular Each component documentation with component specific content.","title":"Sample Repository Structure","component":"modelix","version":"23.1","name":"structure","url":"/modelix/23.1/samples/explanation/structure.html","titles":[]},"64":{"id":64,"text":"The imaginary domain use-case represents a dashboard like view on model content. This use-case envisions a scenario where an independent client (outside of MPS) wants to consume the content of models defined in MPS, thus requiring read only access. There are two different variations of this use-case: Use Case 1a: Dashboard view next to Room In this variation, we envision a display next to each room that shows the upcoming lectures in that room. A low power display such as an low power e-ink with showing a simple website via wifi would be sufficient for this scenario. Use Case 1b: Dashboard View in the Main Hall In this variation, we envision a display in the main hall shows the full schedule of all the lectures of the current day. A large display would be used for this scenario, showing a website via wifi which contains the complete schedule. In both variations, the clients do not need to edit these models and are not capable to run a full MPS instance to show the model content. While the e-ink display does not require automatic updates (the display simply refreshes periodically every 15 minutes), the display in the main hall will require automatic updates (having more power and being a central display it would want to show the newest information at all times). The dashboard component, an angular app that serves the content of a model, implements such a simple single page application (SPA) for this use-case.","title":"Use-Case 1: Dashboard","component":"modelix","version":"23.1","name":"usecase-1","url":"/modelix/23.1/samples/explanation/usecase-1.html","titles":[]},"65":{"id":65,"text":"","title":"Use-Case 2: Manual Schedule Creation","component":"modelix","version":"23.1","name":"usecase-2","url":"/modelix/23.1/samples/explanation/usecase-2.html","titles":[]},"66":{"id":66,"text":"Given the courses domain and its meta-model explained here, the samples project covers two use-cases: Use-Case 1: Dashboard Use-Case 2: Manual Schedule Creation To illustrate how the different use-cases and component architecture relate, this section provides a short tabular description. Use Case Variant Backend MPS Backend model-server Use Case 1: Dashboard view 1a. light-model-server-client + rest-api-model-ql light-model-server-client + rest-api-model-ql 1b. json-bulk-model-access + rest-api-json-bulk ❌ Use Case 2: Real-time collaboration 🏗️ 🏗️","title":"Use Cases of the Sample project","component":"modelix","version":"23.1","name":"usecases","url":"/modelix/23.1/samples/explanation/usecases.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Use-Case Architecture Mapping","hash":"_use_case_architecture_mapping","id":2}]},"67":{"id":67,"text":"This samples implementations allow to run different use-cases in different setups - thus showing the flexibility of the modelix platform. Depending on the chosen use-case, only a subset of the components in this repository are used. The full architecture includes components used for multiple use-cases. One does not need all components to realize individual use-cases. In the following a short overview is given on each component. The meta-model (language) of the courses domain and a model (soulution) with sample data in JetBrains MPS on which everything in this sample is based. ▶️ For more details, see the Language section in the MPS component documentation An API based on the meta-model generated with the metamodel-generator component from modelix. ▶️ For more details, see the 'Generated API' section in the MPS component documentation In this example project, an extra domain-specific API layer is added which is defined in the OpenAPI specification[1]. This layer is meant educational as no noteworthy abstractions from the language itself happen in this definition. It intends to show how one introduces a clearly defined domain-specific abstraction decoupling the language engineering (meta-modeling) and the web development. We provide two backends (i.e. implementations of the API layer): The API via modelQL and API via model-server components. ▶️ For more details, see the OpenAPI component documentation. This project provides two implementations of the openapi domain abstraction. MPS as a source This backend provides access to the model by obtaining the model knowledge directly from a running MPS instance. It is implemented using ktor and connects to a model-client plugin running inside of MPS. This component can only provide read and write access. ▶️ For more details, see the API via modelQL for details. model-server as a source This backend provides access to the model by connecting to a running model-server. It is implemented using Quarkus and can provide read access to the underlying model. Additionally, a websocket for push notifications about ongoing model changes is provided. This is realized using websockets exposed by the model-server. ▶️ For more details, also see the API via model-server component for details. The dashboard provides access to model knowledge through a browser. As it is conforming to the OpenAPI specification, the dashboard is able to obtain the model content from both backend implementations. However, the dashboard is consequently limited by the chosen backend. This components requires running any of the available OpenAPI implementations to obtain model knowledge from. ▶️ For more details, also see the Dashboard for details. ⚠️ TBD ⚠️ TBD 1. See https://www.openapis.org/ for details on how OpenAPI works.","title":"System architecture and components in this repository","component":"modelix","version":"23.1","name":"architecture","url":"/modelix/23.1/samples/reference/architecture.html","titles":[{"text":"Full system architecture","hash":"_full_system_architecture","id":1},{"text":"The MPS Language","hash":"_the_mps_language","id":2},{"text":"Generated model API (domain API","hash":"_generated_model_api_domain_api","id":3},{"text":"Domain-specific OpenAPI","hash":"_domain_specific_openapi","id":4},{"text":"OpenAPI implementation","hash":"_openapi_implementation","id":5},{"text":"Single-page application (SPA) Dashboard","hash":"_single_page_application_spa_dashboard","id":6},{"text":"Real-time' collaboration web application","hash":"_real_time_collaboration_web_application","id":7},{"text":"Deploying to Docker / Kubernetes","hash":"_deploying_to_docker_kubernetes","id":8}]},"68":{"id":68,"text":"Figure 1. The SPA Dashboard Figure 2. View on a single Lecture in the Dashboard This component provides a single page application which accesses an implementation of the sample OpenAPI specification. The idea here is to illustrate a read only use-case where a system/service outside of MPS wants to consume the content of models previously defined in MPS. This dashboard is a single-page app showing content obtained from the intermediate REST APIs. A user cannot edit these models from the browser. It does not matter whether MPS is used to store the model information (e.g. by running an MPS instance in the cloud), or alternatively the modelix model-server is used. You can build this subproject individually from the parent folder via via Gradle: ./gradlew spa-dashboard-angular:build To run this application you will need a component which provides an API implementation conforming to the OpenAPI spec. Thus, you need to start one of the available OpenAPI implementations in this project: Either start the rest-api-model-ql implementation, or alternatively you can start the rest-api-model-server implementation. Check the documentation of the corresponding project parts on how to start them. Make sure you have the correct ports defined in the API URLs. This app expects 8090 by default. Next run this single page application via: ./gradlew spa-dashboard-angular:npmRun You can then go to http://localhost:4200 to see a dashboard with the courses model content.","title":"Single page application: An Angular based dashboard","component":"modelix","version":"23.1","name":"dashboard","url":"/modelix/23.1/samples/reference/dashboard.html","titles":[{"text":"Building & Running","hash":"_building_running","id":1},{"text":"1. Build spa-dashboard-angular","hash":"_1_build_spa_dashboard_angular","id":2},{"text":"2. Start an OpenAPI implementation","hash":"_2_start_an_openapi_implementation","id":3},{"text":"3. Run the angular app","hash":"_3_run_the_angular_app","id":4}]},"69":{"id":69,"text":"The language used in all examples is the same. The language itself is fairly small: It describes a very simplified lecture schedule. The language intentionally does not use expressions, creating editors for expressions by hand is very cumbersome and at the time where these samples were created modelix has no support for generating these editors for you. The main concepts of the language are: Room: where lecture are held. Each room has a maximum capacity of students, a name and some additional properties. Lecture: Have a name, some description and reference a room where they are held. And also have a schedule which determines when they are held and if they repeat through the whole semester or are a one time lecture. Student: A student with a name and birthday. Assignment: Lecture assignments for a single student. Some concepts are contained a root node like a Rooms container to make structuring the editors in MPS easier: classDiagram class Rooms { > } class Courses { > } class Students { > } class LectureAssignments { > } Rooms *-- Room : 0..n Courses *-- Lecture: 0..n Lecture .. Room: 1 Lecture *-- Schedule: 1 OneOff (iNode) rooms.children.rooms.forEach { it.properties.name } The code generator has exported the language definition, and we can use to write type safe code that works with the models. For properties and children we now have attributes in the generated classes and if somebody renames a property or child-role the compiler will tell us. Of course the MPSLanguageRegistry.getInstance would throw an exception if our iNode instance isn’t a Rooms instance. The generate class for a Room concept: concept Room extends BaseConcept implements INamedConcept instance can be root: false alias: short description: properties: maxPlaces : integer hasRemoteEquipment : boolean children: > references: > Will look like this: java package University.Schedule.structure; /*Generated by MPS */ import jetbrains.mps.lang.core.structure.BaseConcept; import jetbrains.mps.lang.core.structure.INamedConcept; import org.modelix.mps.apigen.runtime.INodeHolder; import org.jetbrains.annotations.NotNull; import org.modelix.model.api.INode; import org.jetbrains.annotations.Nullable; /** * Generated for http://127.0.0.1:63320/node?ref=r%3Adfa26643-4653-44bc-9dfe-5a6581bcd381%28University.Schedule.structure%29%2F4128798754188010580 */ public class Room extends BaseConcept implements INamedConcept { public class Properties extends BaseConcept.Properties implements INodeHolder, INamedConcept.Properties { @NotNull @Override public INode getINode() { return Room.this.getINode(); } @Nullable public Integer getMaxPlaces() { String propertyValue = getINode().getPropertyValue(\"maxPlaces\"); if (propertyValue != null && !(propertyValue.isEmpty())) { return Integer.parseInt(propertyValue); } return null; } @Nullable public Integer setMaxPlaces(Integer value) { if (value != null) { getINode().setPropertyValue(\"maxPlaces\", Integer.toString(value)); } else { getINode().setPropertyValue(\"maxPlaces\", null); } return value; } @Nullable public Boolean getHasRemoteEquipment() { String propertyValue = getINode().getPropertyValue(\"hasRemoteEquipment\"); if (propertyValue != null && !(propertyValue.isEmpty())) { return Boolean.parseBoolean(propertyValue); } return null; } @Nullable public Boolean setHasRemoteEquipment(@Nullable Boolean value) { if (value != null) { getINode().setPropertyValue(\"hasRemoteEquipment\", Boolean.toString(value)); } else { getINode().setPropertyValue(\"hasRemoteEquipment\", null); } return value; } } public class Children extends BaseConcept.Children implements INodeHolder, INamedConcept.Children { @NotNull @Override public INode getINode() { return Room.this.getINode(); } } public class References extends BaseConcept.References implements INodeHolder, INamedConcept.References { @NotNull @Override public INode getINode() { return Room.this.getINode(); } } private final Properties properties; private final Children children; private final References references; public Room(INode node) { super(node); this.properties = new Properties(); this.children = new Children(); this.references = new References(); } public Properties getProperties() { return this.properties; } public Children getChildren() { return this.children; } public References getReferences() { return this.references; } } At the moment it’s not possible to regenerate the API as part of the CI/gradle build, that’s why the generated sources are checked into the repository. This limitation is specific this example and is somehow caused by the MPS build failing to load the right languages during the build. Other projects are successfully using the api-gen code generator within their CI/gradle build. The limitation will get fixed in the future but for now the generated Java code is checked into the repository.","title":"Meta-model and the Generated Domain-Specific Model API","component":"modelix","version":"23.1","name":"meta-model-model-api","url":"/modelix/23.1/samples/reference/meta-model-model-api.html","titles":[{"text":"Language","hash":"_language","id":1},{"text":"Generated API","hash":"_generated_api","id":2},{"text":"Limitations","hash":"_limitations","id":3}]},"70":{"id":70,"text":"This 'component' is not a real component but rather a start helper - the model-server is started using the Gradle application plugin. To start the model-server, simply call the following in the repository root: ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" As an alternative, you can also use Docker to run an in instance of model-server using the following command: docker run --rm -p 28101:28101 -d modelix/modelix-model:1.3.2 java -XX:MaxRAMPercentage=85 -Djdbc.url=$jdbc_url -cp \"model-server/build/libs/*\" org.modelix.model.server.Main -inmemory","title":"model-server start helper","component":"modelix","version":"23.1","name":"model-server","url":"/modelix/23.1/samples/reference/model-server.html","titles":[]},"71":{"id":71,"text":"This component of a single openapi.yml file which provides the OpenAPI specification of the REST API implementations serving as examples in this project. The described API provides an additional domain-specific abstraction of the courses domain[1]. The intention of this abstraction is to provide an example on how the use of modelix can be abstracted for eventual consumer apps, such as the Angular based dashboard. The development process thus can follow a API-first approach. Consequently, this openAPI provides a contract of the API behaviour for web teams and a language engineers. There are currently three implementations of this OpenAPI specification: API via model-server API via modelQL 1. This additional abstraction admittedly does not really provide fancy abstractions for this domain. Its purpose is rather educational for you to understand the option to add an additional layer separating web development from language engineering. You do not have to do this. Of course one does not necessarily need such an abstraction layer - any dashboard or web app can directly communicate with the API provided by the model-server together with the generated model API","title":"Intermediate OpenAPI of the Courses domain","component":"modelix","version":"23.1","name":"openapi","url":"/modelix/23.1/samples/reference/openapi.html","titles":[]},"72":{"id":72,"text":"This project provides a REST API that wraps the functionality of the light-model-server MPS plugin running inside an MPS instance. The provided REST API conforms to the API spec in the openapi.yaml. You can build this subproject individually from the parent folder via all gradle: ./gradlew rest-api-model-ql:build Before running the API provider you need to open the MPS project in the mps folder. The initial gradle build will automatically have set up MPS with the light-model-server plugin and expose the models via query language called ModelQL. This API is then accessed from this openAPI abstraction implementation to load the models. Once your MPS project is opened you can run: ./gradlew rest-api-model-ql:run Once you see a log message like: [DefaultDispatcher-worker-8] INFO ktor.application - Responding at http://0.0.0.0:8090 Your openAPI implementation is ready. Settings such as ports and hosts are defined in the application.conf file. For simple testing you can curl the data provided by the API for example: 🧾 Unfold for examples ```console $ curl -s -X GET \"http://localhost:8090/rooms\" -H \"accept: application/json\" | jq { \"rooms\": [ { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\", \"name\": \"somehjtinghekjrekjrhe\", \"maxPlaces\": 32232121, \"hasRemoteEquipment\": false }, { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } ] } $ curl -s -X GET \"http://localhost:8090/rooms/mps-node%253Ar%253Ace161c54-ea76-40a6-a31d-9d7cd01febe2%2528University.Schedule.sandbox%2529%252F4128798754188058349\" -H \"accept: application/json\" | jq { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } $ curl -s -X GET \"http://localhost:8090/rooms/mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" -H \"accept: application/json\" | jq { \"roomRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\", \"name\": \"somehjtinghekjrekjrhe\", \"maxPlaces\": 32232121, \"hasRemoteEquipment\": false } $ curl -s -X GET \"http://localhost:8090/rooms/trash\" -H \"accept: application/json\" | jq \"Can not load Room: null $ curl -s -X GET \"http://localhost:8090/lectures\" -H \"accept: application/json\" | jq curl -s -X GET \"http://localhost:8090/lectures\" -H \"accept: application/json\" | jq { \"lectures\": [ { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\", \"name\": \"Physics 101\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" }, { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F1305729863392535677\", \"name\": \"Physics 102\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\" }, { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188060854\", \"name\": \"New Students Welcome\", \"description\": \"Hello everyone\", \"maxParticipants\": 69, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058349\" } ] } $ curl -s -X GET \"http://localhost:8090/lectures/mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\" -H \"accept: application/json\" | jq { \"lectureRef\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058353\", \"name\": \"Physics 101\", \"description\": \"You learn about stuff\", \"maxParticipants\": 42, \"room\": \"mps-node%3Ar%3Ace161c54-ea76-40a6-a31d-9d7cd01febe2%28University.Schedule.sandbox%29%2F4128798754188058347\" } $ curl -s -X GET \"http://localhost:8090/lectures/trash\" -H \"accept: application/json\" | jq \"Can not load Lecture: null\" Alternatively you can now start the Dashboard to consume this API endpoint.","title":"API via modelQL","component":"modelix","version":"23.1","name":"rest-api-model-ql","url":"/modelix/23.1/samples/reference/rest-api-model-ql.html","titles":[{"text":"Building","hash":"_building","id":1},{"text":"Usage","hash":"_usage","id":2}]},"73":{"id":73,"text":"This project provides a custom REST API implemented in Quarkus that wraps a model-server instance. The REST API abstracts the generic model-server API for providing the dashboard example with usable data. The provided REST API conforms to the API spec in the openapi.yaml. You can build this subproject individually from the parent folder via all gradle: ./gradlew rest-api-model-server:build Before starting the REST API, a model-server instance needs to be running. The example from the MPS folder has to be deployed on this instance in a repository call courses. Once these preconditions are met, the REST API can be launched with: ./gradlew rest-api-model-server:run For simple testing you can curl the data provided by the API for example: 🧾 Unfold for examples $ curl -s -X GET \"http://localhost:8090/rooms\" -H \"accept: application/json\" | jq { \"rooms\": [ { \"roomRef\": \"r:ce161c54-ea76-40a6-a31d-9d7cd01febe2(unused)/4128798754188058347\", \"name\": \"Einstein\", \"maxPlaces\": 42, \"hasRemoteEquipment\": true }, { \"roomRef\": \"r:ce161c54-ea76-40a6-a31d-9d7cd01febe2(unused)/4128798754188058349\", \"name\": \"Schrödinger\", \"maxPlaces\": 420, \"hasRemoteEquipment\": true } ] } Alternatively you can now start the Dashboard to consume this API. If you want to observe the updates sent on the web socket, you can use wscat to get some insights when updates are sent. wscat -c ws://127.0.0.1:8090/updates","title":"API via model-server","component":"modelix","version":"23.1","name":"rest-api-model-server","url":"/modelix/23.1/samples/reference/rest-api-model-server.html","titles":[{"text":"Building","hash":"_building","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Introspecting the websocket communication","hash":"_introspecting_the_websocket_communication","id":3}]},"74":{"id":74,"text":"This Tutorial shows how to start up a system that implements Use-Case 1: Dashboard The samples provide a total of three architectural variation of this use case: Using the more complex rest-api-model-server backend and the model-server. Using the rest-api-model-ql backend and the light-model-server MPS plugin rest-api-model-server (legacy) + model-server All gradle commands assume you are in the top level folder of the samples repository. To start up the system as described in UC 1a, you first have to have built the entire project: ./gradlew Once done, you need to start all components involved, these are: MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project stores the model content using MPS persistence. The gradle build process will have downloaded all plugins needed to mps/project-mps-backend/build/dependencies and declare this folder as a global library. This includes the json-bulk-model-access and the light-model-client. API layer: The rest-api-json-bulk provides the models from the running MPS instance, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-json-bulk:run 🧾 You can expect output similar to this (unfold to see details) > Task :rest-api-json-bulk:run 2022-12-07 10:12:38.874 [DefaultDispatcher-worker-11] INFO ktor.application - Autoreload is disabled because the development mode is off. 2022-12-07 10:12:39.009 [DefaultDispatcher-worker-11] INFO ktor.application - Application started in 0.14 seconds. 2022-12-07 10:12:39.131 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:8090 91% EXECUTING [2m 20s] > :rest-api-json-bulk:run Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): $ ./gradlew spa-dashboard-angular:npmRun 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will not automatically synchronize to the dashboard, you will have to manually reload the model.","title":"Run Use-Case 1 Implementation","component":"modelix","version":"23.1","name":"start-usecase-1-a","url":"/modelix/23.1/samples/tutorial/start-usecase-1-a.html","titles":[{"text":"How to start UC 1a","hash":"_how_to_start_uc_1a","id":1}]},"75":{"id":75,"text":"TODO using the rest-api-model-ql backend and the light-model-server MPS plugin All gradle commands assume you are in the top level folder of this repository. To start up the system as described in UC 1b, you first have to have build the entire project: ./gradlew Once done, you need to start all components involved, these are: modelix model-server: Model knowledge is supplied by the model-sever in this use case. To avoid complicated setups, we simply start the model-server in memory and load the model content from the included dump file, all using gradle: ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" 🧾 You can expect output similar to this (unfold to see details) ./gradlew model-server:run --args=\"-inmemory -dumpin courses.modelserver.dump\" > Task :model-server:run 18:33:16,185 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 18:33:16,186 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 18:33:16,186 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/home/nkoester/.gradle/caches/modules-2/files-2.1/org.modelix/model-server-fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model-server-fatjar-1.3.2.jar!/logback.xml] 18:33:16,194 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@f4168b8 - URL [jar:file:/home/nkoester/.gradle/caches/modules-2/files-2.1/org.modelix/model-server-fatjar/1.3.2/1e6502c0e8282b1fe2c06824ad43f4d7270f20d7/model-server-fatjar-1.3.2.jar!/logback.xml] is not of type file 18:33:16,269 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 18:33:16,270 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [console] 18:33:16,272 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.modelix] to DEBUG 18:33:16,282 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [console] to Logger[org.modelix] 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 18:33:16,282 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [console] to Logger[ROOT] 18:33:16,282 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 18:33:16,283 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@7ff95560 - Registering current configuration as safe fallback point 18:33:16.295 [main] INFO org.modelix.model.server.Main - Max memory (bytes): 32178700288 18:33:16.295 [main] INFO org.modelix.model.server.Main - Max memory (bytes): 32178700288 18:33:16.295 [main] INFO org.modelix.model.server.Main - Server process started 18:33:16.295 [main] INFO org.modelix.model.server.Main - Server process started 18:33:16.295 [main] INFO org.modelix.model.server.Main - In memory: true 18:33:16.295 [main] INFO org.modelix.model.server.Main - In memory: true 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to secret file: /secrets/modelsecret/modelsecret.txt 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to secret file: /secrets/modelsecret/modelsecret.txt 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to JDBC configuration file: null 18:33:16.296 [main] INFO org.modelix.model.server.Main - Path to JDBC configuration file: null 18:33:16.296 [main] INFO org.modelix.model.server.Main - Schema initialization: false 18:33:16.296 [main] INFO org.modelix.model.server.Main - Schema initialization: false 18:33:16.296 [main] INFO org.modelix.model.server.Main - Set values: [] 18:33:16.296 [main] INFO org.modelix.model.server.Main - Set values: [] 18:33:16.296 [main] INFO org.modelix.model.server.Main - Port: 28101 18:33:16.296 [main] INFO org.modelix.model.server.Main - Port: 28101 Values loaded from /home/nkoester/git/modelix/modelix-sample/model-server/courses.modelserver.dump (73) 18:33:16.364 [main] INFO ktor.application - Autoreload is disabled because the development mode is off. 18:33:16.428 [main] INFO ktor.application - Application started in 0.088 seconds. 18:33:16.518 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:28101 85% EXECUTING [7s] > :model-server:run API layer: The rest-api-model-server provides an abstraction of the model from the previously started model-server, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-model-server:quarkusDev 🧾 You can expect output similar to this (unfold to see details) $ ./gradlew rest-api-model-server:quarkusDev > Task :rest-api-model-server:quarkusDev Listening for transport dt_socket at address: 5005 Press [h] for more options>NG [8s] Tests paused Press [r] to resume testing, [h] for more options> Press [r] to resume testing, [o] Toggle test output, [h] for more options> __ ____ __ _____ ___ __ ____ ______ --/ __ \\/ / / / _ | / _ \\/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ , 95% EXECUTING [16s] > :rest-api-model-server:quarkusDev Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): $ ./gradlew spa-dashboard-angular:npmRun 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-modelserver-backend folder. This MPS project does not store the model locally and instead obtains them from the model-server via the cloud-access plugin. The gradle build process will have downloaded all plugins needed to mps/project-modelserver-backend/build/dependencies and declare this folder as a global library. This includes the cloud-access plugin. Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will automatically synchronize to the dashboard All gradle commands assume you are in the top level folder of this repository. To start up the system as described in UC 1c, you first have to have built the entire project: ./gradlew Once done, you need to start all components involved, these are: MPS: Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project stores the model content using MPS persistence. The gradle build process will have downloaded all plugins needed to mps/project-mps-backend/build/dependencies and declare this folder as a global library. This includes the light-model-server plugin used in this example UC. API layer: The light-model-server provides the models from the running MPS instance, simply run in a new terminal (it will be a blocking call): $ ./gradlew rest-api-model-ql:run 🧾 You can expect output similar to this (unfold to see details) > Task :rest-api-model-ql:run 2023-01-25 18:46:48.977 [main] INFO o.m.s.r.ModelServerLightWrapper - Connecting to light model-server at ws://localhost:48302/ws 2023-01-25 18:46:49.044 [main] INFO o.m.s.r.ModelServerLightWrapper - Connection successful 2023-01-25 18:46:49.070 [main] INFO ktor.application - Autoreload is disabled because the development mode is off. 2023-01-25 18:46:49.346 [main] INFO ktor.application - Application started in 0.286 seconds. 2023-01-25 18:46:49.455 [DefaultDispatcher-worker-4] INFO ktor.application - Responding at http://0.0.0.0:8090 2023-01-25 18:46:50.806 [eventLoopGroupProxy-4-1] INFO o.m.s.r.ModelServerLightWrapper - Resolving node trash 94% EXECUTING [26m 13s] > :rest-api-model-ql:run Dashboard: The dashboard itself is a node application which can be run via in a new terminal (it will be a blocking call): `$ ./gradlew spa-dashboard-angular:npmRun ` 🧾 You can expect output similar to this (unfold to see details) > Task :spa-dashboard-angular:npmRun > angular.io-example@0.0.0 ng > ng serve - Generating browser application bundles (phase: setup)... ✔ Browser application bundle generation complete. Initial Chunk Files | Names | Raw Size vendor.js | vendor | 2.47 MB | polyfills.js | polyfills | 318.03 kB | styles.css, styles.js | styles | 211.31 kB | main.js | main | 86.71 kB | runtime.js | runtime | 6.53 kB | | Initial Total | 3.08 MB Build at: 2022-12-07T09:18:02.345Z - Hash: 186b24edf20c1c4a - Time: 13776ms ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** ✔ Compiled successfully. ✔ Browser application bundle generation complete. 5 unchanged chunks Build at: 2022-12-07T09:18:02.740Z - Hash: 186b24edf20c1c4a - Time: 324ms ✔ Compiled successfully. 95% EXECUTING [29s] > :spa-dashboard-angular:npmRun Explore the dashboard at http://localhost:4200/ Changes to the model in MPS will not automatically synchronize to the dashboard, you will have to manually reload the model.","title":"Run Use-Case 2a Implementation","component":"modelix","version":"23.1","name":"start-usecase-1-b","url":"/modelix/23.1/samples/tutorial/start-usecase-1-b.html","titles":[{"text":"How to start UC 1b","hash":"_how_to_start_uc_1b","id":1},{"text":"How to start UC 1c","hash":"_how_to_start_uc_1c","id":2}]},"76":{"id":76,"text":"TODO startup tutorial","title":"","component":"modelix","version":"23.1","name":"startup-usecases","url":"/modelix/23.1/samples/tutorial/startup-usecases.html","titles":[]},"77":{"id":77,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"78":{"id":78,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/explanation/index.html","titles":[]},"79":{"id":79,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/howto/index.html","titles":[]},"80":{"id":80,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"23.1","name":"usage-light-model-client","url":"/modelix/23.1/core/howto/usage-light-model-client.html","titles":[]},"81":{"id":81,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = buildDir.resolve(\"mps\") val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"23.1","name":"usage-model-api-gen-gradle","url":"/modelix/23.1/core/howto/usage-model-api-gen-gradle.html","titles":[]},"82":{"id":82,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"23.1","name":"usage-model-server","url":"/modelix/23.1/core/howto/usage-model-server.html","titles":[]},"83":{"id":83,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"23.1","name":"component-light-model-client","url":"/modelix/23.1/core/reference/component-light-model-client.html","titles":[]},"84":{"id":84,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-expor provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"23.1","name":"component-metamodel-export","url":"/modelix/23.1/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"85":{"id":85,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Name of the registration helper taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl` \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept` \"C_\" \"\" typedConceptImpl` \"_C_TypedImpl_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"23.1","name":"component-model-api-gen-gradle","url":"/modelix/23.1/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"86":{"id":86,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"23.1","name":"component-model-api-gen","url":"/modelix/23.1/core/reference/component-model-api-gen.html","titles":[]},"87":{"id":87,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"23.1","name":"component-model-server","url":"/modelix/23.1/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"88":{"id":88,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/core/tutorial/index.html","titles":[]},"89":{"id":89,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":5},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":6}]},"90":{"id":90,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/explanation/index.html","titles":[]},"91":{"id":91,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"23.1","name":"usage-platform","url":"/modelix/23.1/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"92":{"id":92,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"23.1","name":"index","url":"/modelix/23.1/platform/tutorial/index.html","titles":[]},"93":{"id":93,"text":"We develop an open source platform for models on the web to reduce distributed modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches The modelix project develops an open source platform for (meta-)models on the web. We are native to the web and the cloud, inspired by this whitepaper[1]. On the path to this final idea, we currently develop multiple interoperable components that implement parts of our vision. Consequently, some parts are very stable and already in productive use while others are in a more experimental and explorative state. To gain an overview over components, head over to the Components of modelix reference. Follow the 'Next' button in the bottom right to find out more details on our current roadmap, or dive directly into our sample project to get started! Otherwise, the How-To section serves as an implicit FAQ which might give answers to some of your immediate questions. This is the full modelix documentation for modelix version 23.2. You can choose different versions at the bottom left of this page. This documentation brings together the documentation from all individual modelix components. We follow the systematic Diátaxis[2] approach in this documentation. As a result, we separate the documentation in the following four mayor categories: Tutorials (learning-oriented) Lessons that take the reader by the hand through a series of steps to complete a project of some kind. New users usually start here. How-To Guides Reference There is also a dedicated API page where you can find component specific API documentaion over at https://api.docs.modelix.org. Explanation This documentation is built using the Antora framework. All individual software components contain their own documentation within their own repository but are aggregated here. The playbook for aggregation and central source source for this documentation can be found in the modelix/modelix.doc repository. If you find any bugs or errors in our documentation please add pull requests or issues in the corresponding repository. In this documentation we use various acronyms and domain-specific wording. Head over to the Glossary if you are unsure about what exactly we mean when talking about a model, meta-model, MPS, or others. To contact us join our #modelix Slack channel which is part of the JetBrains MPS workspace or write us an Email with your questions and feedback 📫. To report issues please use our issue tracker. 1. \"An open platform for systems and business engineering tools: collaborative modeling and analysis at scale\" http://voelter.de/data/pub/APlatformForSystemsAndBusinessModeling.pdf 2. \"A systematic framework for technical documentation authoring\", see this video for an in depth explanation of the motives of this framework","title":"Welcome to modelix!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"About this Documentation","hash":"_about_this_documentation","id":2},{"text":"Structure Framework","hash":"_structure_framework","id":3},{"text":"Technical Framework","hash":"_technical_framework","id":4},{"text":"Glossary","hash":"_glossary","id":5},{"text":"Contact","hash":"_contact","id":6}]},"94":{"id":94,"text":"The image above shows the components that modelix currently consists of. MPS is running in headless mode on the server with an HTTP server installed as a plugin. The browser connects to that server and receives the HTML and JavaScript code required for the interactive model editor. A second plugin connects to a model-server and replicates the data into MPS’ internal module repository. All MPS instances connected to that model server will stay synchronized. This can also be a local MPS instance without a web editor. Both options are supported at the same time. The next image gives an overview over the different docker images running in the kubernetes cluster. The model server uses an Apache Ignite cluster and just provides a REST API on top of it. A high load can be distributed over multiple instances. Running multiple MPS instances for scalability is possible, because the model has the same state on all instances. If you want to run MPS instances with different configurations (languages, plugins) or allow external instances to connect to the model server, a reverse proxy is used to forward the request to the correct instance. To access the web editor a user has to login in with a google account first. An OAuth proxy takes care of that and adds an HTTP header with the users e-mail address to the request. modelix provides an editor in the browser for the languages implemented in MPS. This can be an image based editor that renders the editor in MPS using the default editor definition or an HTML based editor that requires a separate editor definition in a language provided by modelix. Common to both approaches is that the user input (keyboard, mouse) is processed on the server and the update of the projection after a model change also happens on the server. Even in case of the HTML based editor the resulting HTML is computed on the server side. This removes the need to replicate the model into the browser, which would result in a bad performance in case of big models. Running MPS in the cloud requires an alternative to the file system for storing models. modelix implements a data structure that allows replication between all MPS instances connected to the same model server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support realtime collaboration, in addition to the snapshot of a version it also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result indepent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here. Fixing a divergence is as easy as switching to the correct version. If a client doesn’t have any local changes it doesn’t even need to apply the change operations itself. It can just switch to the new version. So in the rare case of a divergence fixing it is nothing special. It’s an operation that happens all the time.","title":"Architecture","component":"modelix","version":"23.2","name":"architecture","url":"/modelix/23.2/explanation/architecture.html","titles":[{"text":"An architectural overview of the modelix project","hash":"_an_architectural_overview_of_the_modelix_project","id":1},{"text":"Editor","hash":"_editor","id":2},{"text":"Model","hash":"_model","id":3}]},"95":{"id":95,"text":"This glossary is a lose collection of keywords used throughout the modelix documentation. MPS \"JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams\" See https://www.jetbrains.com/mps/ for more details. — https://en.wikipedia.org/wiki/JetBrains_MPS","title":"Glossary","component":"modelix","version":"23.2","name":"glossary","url":"/modelix/23.2/explanation/glossary.html","titles":[]},"96":{"id":96,"text":"We develop an open source platform for models on the web to reduce modeling friction for domain experts We apply established web and cloud technologies to create a modeling tool in the browser which integrates with existing language workbenches whilst exploring new approaches","title":"Modelix Goals","component":"modelix","version":"23.2","name":"goals","url":"/modelix/23.2/explanation/goals.html","titles":[{"text":"Vison","hash":"_vison","id":1},{"text":"Mission","hash":"_mission","id":2},{"text":"What we provide","hash":"_what_we_provide","id":3}]},"97":{"id":97,"text":"\"Explanation is discussion that clarifies and illuminates a particular topic. Explanation is understanding-oriented.\" [1] 1. https://diataxis.fr/explanation/","title":"Explanation","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/explanation/index.html","titles":[]},"98":{"id":98,"text":"The goal of this quick overview is for you to understand, what modelix is, what it is not and how it might be utilized. Modelix is a platform to bring models to the web. It consists of multiple components, which can be combined in different ways to support a variety of use cases. It is important to note, that modelix is neither a language workbench in the traditional sense nor a one-size-fits-all solution. The modelix project aims to provide you with building blocks, which empower you to construct your own application with ease. The following table gives an overview over essential components, which you are very likely to encounter when using modelix. For a full list of components check out the components table. Component Short description model-api Untyped API, which allows to interact with models. model-server Server, which persistently stores models. model-client Client, which implements the model-api and connects to a model-server. model-api-gen(-gradle) Component, which generates a typed, domain specific API based on a metamodel definition. The generated API wraps the untyped model-api. As a basic example, you might want to create a web app, which manipulates domain-specific models. In this case we assume a metamodel for such models exists as part of an MPS project. The image above shows how the essential components work together to form the backend for a web application. In this case the metamodel definition is generated from the structure aspect of a language in MPS. For a different use case it could also be from another (custom) source. The web application can then use the domain-specific API to manipulate and store models in the model-server. Of course, this example only scratches the surface of what is possible with modelix. Apart from the individual components, modelix can also provide a system called workspaces. It consists of multiple docker images, which run in a kubernetes cluster. Among other features, this system enables users to use projectional editors inside their browser by running MPS instances in the cloud. Modelix is always evolving. If you want to learn more about what is coming, check out the roadmap.","title":"Modelix Overview","component":"modelix","version":"23.2","name":"overview","url":"/modelix/23.2/explanation/overview.html","titles":[{"text":"What is Modelix?","hash":"_what_is_modelix","id":1},{"text":"Essential components","hash":"_essential_components","id":2},{"text":"Basic example using essential components","hash":"_basic_example_using_essential_components","id":3},{"text":"Modelix workspaces","hash":"_modelix_workspaces","id":4},{"text":"What’s next","hash":"_whats_next","id":5}]},"99":{"id":99,"text":"TODO","title":"Frequently asked Questions","component":"modelix","version":"23.2","name":"faq","url":"/modelix/23.2/howto/faq.html","titles":[]},"100":{"id":100,"text":"\"How-to guides are directions that take the reader through the steps required to solve a real-world problem. How-to guides are goal-oriented.\" [1] 1. https://diataxis.fr/how-to-guides/","title":"How-To Guides","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/howto/index.html","titles":[]},"101":{"id":101,"text":"This guide aims to make it easier for you to start contributing to the modelix project. The following tools are used to develop modelix. You may want to install these on your machine before getting started. IntelliJ IDEA Java 11 (e.g. Temurin) ant git MPS (recommended version 2021.2.6) docker kubernetes helm python npm pre-commit The modelix repositories are located on GitHub. In order to contribute you need to configure two-factor authentication and commit verification. We use a YouTrack instance hosted on issues.modelix.org to keep track of modelix issues. If you want to create a new issue, you can do so in the corresponding GitHub repository, and it will be automatically imported into YouTrack. We use Semantic Versioning in modelix.core (a further rollout to the other modelix repositories is planned for the future). Therefore, commit messages follow Conventional Commits. To install the hooks enforcing the convention, you need to run npm install and pre-commit install in your local repository. Branch names should always be prefixed. The prefix is determined by the type of changes that your branch provides like fix/, feature/, docs/. Alternatively you can use issue/ followed by the issue id as your branch name, e.g. issue/MODELIX-123. If a corresponding issue exists for your pull request, then the issue id must be part of the title. You can use the \"Copy ID and summary to clipboard\" button in YouTrack, and use the clipboard content as the title for the pull request.","title":"Contribution Guide","component":"modelix","version":"23.2","name":"contribute","url":"/modelix/23.2/main/contribute.html","titles":[{"text":"Tools","hash":"_tools","id":1},{"text":"Essentials","hash":"_essentials","id":2},{"text":"Deployment","hash":"_deployment","id":3},{"text":"Other","hash":"_other","id":4},{"text":"Platforms","hash":"_platforms","id":5},{"text":"Repositories","hash":"_repositories","id":6},{"text":"Issue Tracking","hash":"_issue_tracking","id":7},{"text":"Semantic Versioning and Conventional Commits","hash":"_semantic_versioning_and_conventional_commits","id":8},{"text":"Naming Conventions","hash":"_naming_conventions","id":9},{"text":"Branch Names","hash":"_branch_names","id":10},{"text":"Pull Requests","hash":"_pull_requests","id":11}]},"102":{"id":102,"text":"The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation. Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages Issues are managed in our issue tracker over at https://issues.modelix.org. With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*. To make it easier for developers, the modelix platform is currently released twice a year as a single \"platform release\" which references compatible component versions. We aim to provide a Spring release R1 and an Autumn release R2. All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: 2023.R1. To gain an overview over existing components, please refer to the list of components here.","title":"Development and Releases","component":"modelix","version":"23.2","name":"development","url":"/modelix/23.2/main/development.html","titles":[{"text":"Development","hash":"_development","id":1},{"text":"Release Cycle","hash":"_release_cycle","id":2}]},"103":{"id":103,"text":"Unfortunately, we were not able to update the roadmap before releasing modelix-23.2. We are dedicated to bring an updated version during December 2023 after our already scheduled planning sessions. Please check the documentation in the main branch of modelix. The following image shows a dense overview of our current roadmap. The aim of this roadmap is to provide you with a more detailed overview of our plans. We have compiled a catalog of our significant areas, which are our top priorities we focus on delivering. In the following we shortly list these key priorities. Below you can find more detailed explanations for each of these. Model APIs: A unified low-level API to navigate and modify models. It is untyped to any existing meta-model. Domain-Specific Model API generator: A complete rewrite of our initial API generator which overcomes multiple previous shortcomings. It provides type information and directly integrates with the model API. Versioning / Releases / Roadmap: Automated semantic versioning with unifying modelix platform releases twice a year. Development is planned over at issues.modelix.org. Documentation: Docs-as-code approach which is built to docs.modelix.org with every platform release. Git integration: A tighter integration for git based model storage to bridge legacy storage solutions. MPS in the Cloud: Run MPS in the cloud as a way to transition to the web. Language Evolution: A way to handle new language versions and metamodel changes. Graphical Editors: We plan to provide the data synchronization and the generation of a TypeScript model API to enable graphical editors on the wev. LIonWeb: Integration with other web components out there - modelix support and involvement in the LIonWeb (Language interfaces on the web) initiative. Several modelix artifacts had potentially confusing names. We streamlined everything and renamed to convey functionality more clearly. Check out our blog post for details. Also check the new table of modelix component overview here. Modelix uses a low level meta-model agnostic API across all components. The model-api provides this abstraction. This API is the shared basis and used across all modelix components. It is a Kotlin multi-platform implementation with artifacts for JVM and JS. An untyped access to model content is possible when only using the model-api. In case you want to use typed access, the model-api-gen provides a generator which generates a typed model API from your existing domain-specific meta-model. This generated API specializes the untyped model-api and provides domain grounded model access. Up to now, the model API generator api-gen was used to generate a domain-specific Java model API from a MPS structure. These classes can then be used in web applications to obtain typed model content from the model-server. The api-gen was implemented as a MPS generator and consequently bound to and limited by the MPS ecosystem. To overcome the many shortcomings we observed (runtime & resource usage, tool lock-in, maintainability, few target languages). We re-implement the generator (now model-api-gen`) in Kotlin, which has several benefits. Most notably, there is now an additional option to generate a domain-specific TypeScript API. One extra feature we add is MPS meta-model independence: In a new intermediate step, we export the MPS structure to a JSON representation re-using the JSON language of the existing MPS extensions. This intermediate artifact is then used by the api-gen v2 to generate the APIs. The MPS structure to JSON generator is available for all MPS versions so that previous maintenance of the api-gen v1 for multiple MPS versions is not necessary any more. To ease the use of the new model-api-gen, we provide a Gradle plugin to help setting up the domain-specific API generation: model-api-gen-gradle. With many modelix components being in various development stages - from stable to early and conceptual - they are released individually. Generally, modelix follows the Semantic Versioning scheme for releases and groups different components by repository (e.g. core components are in modelix.core, while documentation resides in modelix.docs). However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) is prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2. To make it easier for developers, the modelix platform will be released twice a year as a single modelix platform release which aggregates all compatible component versions. We aim to provide a Spring release (modelix-2X.1) and an Autumn release (modelix-2X.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release on the MPS Community meetup in May: modelix-23.1. For the different MPS versions there are sub-platforms that also bundle the corresponding MPS plugins of the modelix platform. The artifacts which hold the Gradle platform thus will be org.modelix.platform` org.modelix.platform-mps-2021-2 org.modelix.platform-mps-2020-3 org.modelix.platform-mps-2021-1 org.modelix.platform-mps-2021-3 Additionally, we want to communicate our plans for the modelix platform more clearly. As a result we prepared a roadmap outlining our planned steps. Further, on issues.modelix.org we also give more insights in our development efforts. To further reduce the barrier of entry to modelix with modelix-23.1 we deploy new documentation following the docs-as-code approach. You can access the new documentation over at docs.modelix.org which is available for each modelix platform release. We follow the Diataxis documentation framework to separate and communicate more clearly in the categories of Tutorials, How To Guides, Explanation, and (technical) Reference. Additionally api.modelix.org provides a generated technical API reference which we grow incrementally. Generally, we recommend using the model-server as the storage backend for models in the cloud. However, in some environments and use cases, this philosophy can only partially be archived. In rare cases we observe a hybrid setup where a) model knowledge is stored in files as MPS projects in combination with git while b) deploying web and cloud centric applications using the model-server. In a first iteration, we want to provide the possibility for read and write of MPS models from and to git repositories in the modelix platform. This could eventually also include the usage of the model-server for real-time collaboration in these hybrid setups. However, this is a topic which requires further investigation. For many MPS based projects, a good first step for transitioning to the web is running MPS in the cloud. modelix already has elaborate prototypes for these use-cases by using Kubernetes and Projector to provide MPS “Workspaces” in the cloud. One central piece for this are the modelix build-tools. This component allows the generation of MPS languages without any existing build script. We want to refine our efforts regarding MPS in the cloud and make them more accessible. When using MPS, model migrations are made easy using the migration aspect. However, once stepping outside of MPS, migrations become more difficult. Model migration needs to be carried out across platforms, teams and (web) applications when a new language version is deployed. We want to support a generated APIs that can work with multiple versions at the same time with which we also can support meta-model versions checks for compatibility. We have some ideas we need to further refine and explore in the following releases. The experience from MPS shows that the requirements for a graphical editor are too diverse to support all of them with a single framework. There are many different frameworks available in the web world where you can choose the one that fits your use case. We plan to only provide the data synchronization and the generation of a TypeScript model API, but not the integration of any diagram framework itself. Modelix focuses on a good integration with MPS. If you are interested in the integration of other modeling technologies then check out the LIonWeb project (short for Language Interfaces on the web). They specify more general interfaces and use the modelix model-server for data storage and exchange in their current prototypes. The modelix team co-authored and is involved with the LIonWeb initiative.","title":"Roadmap","component":"modelix","version":"23.2","name":"roadmap","url":"/modelix/23.2/main/roadmap.html","titles":[{"text":"Key priorities overview","hash":"_key_priorities_overview","id":1},{"text":"Component Renaming (23.1)","hash":"_component_renaming_23_1","id":2},{"text":"Model APIs (23.1)","hash":"_model_apis_23_1","id":3},{"text":"Domain-Specific Model API Generator (23.1)","hash":"_domain_specific_model_api_generator_23_1","id":4},{"text":"Versioning / Releases / Roadmap (23.1)","hash":"_versioning_releases_roadmap_23_1","id":5},{"text":"Documentation (23.1)","hash":"_documentation_23_1","id":6},{"text":"Git Integration (estimated 23.2)","hash":"_git_integration_estimated_23_2","id":7},{"text":"MPS in the Cloud (estimated 23.2)","hash":"_mps_in_the_cloud_estimated_23_2","id":8},{"text":"Language Evolution (estimated 24.1)","hash":"_language_evolution_estimated_24_1","id":9},{"text":"Graphical Editors in the Web (estimated 24.2)","hash":"_graphical_editors_in_the_web_estimated_24_2","id":10},{"text":"LIonWeb","hash":"_lionweb","id":11}]},"104":{"id":104,"text":"This page represents a fallback page for open TODOs within the documentation. If you end up here please add an issue to modelix/modelix.docs and tell us where you found this link or consider supporting us by creating a corresponding pull request.","title":"TODO Fallback","component":"modelix","version":"23.2","name":"todo","url":"/modelix/23.2/main/todo.html","titles":[]},"105":{"id":105,"text":"Package Name Tech Docs Nexus GHP API Repo org.modelix kotlin-utils Kotlin 🔗 🔗 🔗 org.modelix model-api Kotlin 🔗 🔗 🔗 🔗 org.modelix metamodel-export MPS 🔗 🔗 🔗 🔗 org.modelix model-api-gen Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-api-gen-runtime Kotlin 🔗 🔗 🔗 🔗 org.modelix model-api-gen-gradle Gradle 🔗 🔗 🔗 🔗 🔗 --- org.modelix.model-api-gen.gradle.plugin Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix incremental Kotlin 🔗 🔗 🔗 org.modelix model-datastructure Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server-lib MPS 🔗 🔗 🔗 🔗 org.modelix model-server-api Kotlin 🔗 🔗 🔗 🔗 org.modelix model-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-server-with-dependencies Kotlin 🔗 🔗 🔗 🔗 org.modelix model-client Kotlin 🔗 🔗 🔗 🔗 org.modelix light-model-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix model-download-gradle Gradle 🔗 🔗 --- org.modelix.mps.model-download Gradle 🔗 🔗 org.modelix.mps model-server-sync-plugin MPS 🔗 🔗 org.modelix bulk-model-sync-lib Kotlin 🔗 🔗 🔗 🔗 org.modelix bulk-model-sync-solution MPS 🔗 🔗 org.modelix bulk-model-sync-gradle Gradle 🔗 🔗 🔗 🔗 🔗 org.modelix.bulk-model-sync.gradle.plugin Gradle 🔗 🔗 org.modelix.mps build-tools-lib Kotlin 🔗 🔗 🔗 org.modelix.mps build-tools-gradle Gradle 🔗 🔗 🔗 --- org.modelix.mps.build-tools Gradle 🔗 🔗 🔗 org.modelix.mps build-solution MPS 🔗 🔗 org.modelix.mps headless-runner MPS 🔗 🔗 org.modelix authorization Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps web-editors-plugin MPS 🔗 🔗 ts-model-api TS 🔗 🔗 vue-model-api Vue.js 🔗 🔗 🔗 org.modelix workspace-client Kotlin 🔗 org.modelix workspace-manager Kotlin 🔗 org.modelix workspaces Kotlin 🔗 org.modelix instances-manager Kotlin 🔗 org.modelix gitui Kotlin 🔗 org.modelix keycloak-extensions Other 🔗 org.modelix ui-client Other 🔗 org.modelix ui-proxy Other 🔗 org.modelix ui-server Other 🔗 org.modelix modelql-client Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-core Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-html Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-server Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-typed Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelql-untyped Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix.mps model-adapters Kotlin 🔗 🔗 🔗 🔗 org.modelix.mps model-server-plugin Kotlin 🔗 🔗 🔗 🔗 🔗 org.modelix modelix-samples MultiProject 🔗 🔗 org.modelix platform Gradle 🔗 🔗","title":"Table of modelix Components","component":"modelix","version":"23.2","name":"components-table","url":"/modelix/23.2/reference/components-table.html","titles":[]},"106":{"id":106,"text":"\"Reference guides are technical descriptions of the machinery and how to operate it. Reference material is information-oriented.\" [1] 1. https://diataxis.fr/reference/","title":"Reference","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/reference/index.html","titles":[]},"107":{"id":107,"text":"The modelix platform is composed of multiple individual components which can be combined together to form a system bringing models to the web. Components are distributed across the following repositories: https://github.com/modelix/modelix.platform https://github.com/modelix/modelix.core https://github.com/modelix/modelix.mps-build-tools https://github.com/modelix/modelix https://github.com/modelix/incremental https://github.com/modelix/modelix.docs https://github.com/modelix/modelix.samples This page serves as an overview over all existing repositories, their components, and a short description. For more dense information about component, please navigate to the Table of modelix Components. The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do.","title":"Components of modelix","component":"modelix","version":"23.2","name":"repositories-components","url":"/modelix/23.2/reference/repositories-components.html","titles":[{"text":"List of currently available components in modelix","hash":"_list_of_currently_available_components_in_modelix","id":1},{"text":"Modelix platform (main)","hash":"_modelix_platform_main","id":2},{"text":"Modelix core (main)","hash":"_modelix_core_main","id":3},{"text":"Modelix samples (main)","hash":"_modelix_samples_main","id":4}]},"108":{"id":108,"text":"The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Build components using Gradle","component":"modelix","version":"23.2","name":"build-component","url":"/modelix/23.2/tutorial/build-component.html","titles":[{"text":"Build from console","hash":"_build_from_console","id":1},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":2},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":3},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":4}]},"109":{"id":109,"text":"\"Tutorials are lessons that take the reader by the hand through a series of steps to complete a project of some kind. Tutorials are learning-oriented.\" [1] 1. https://diataxis.fr/tutorials/","title":"Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/tutorial/index.html","titles":[]},"110":{"id":110,"text":"The MPS language (aka. metamodel) used in all examples is the same. It is fairly small as describes a simplified lecture schedule. The language intentionally does not use expressions. Creating editors for expressions manually is tedious, and modelix has no support yet for generating these editors for you. The main concepts of the language are: RoomList Root node that contains rooms. Room LectureList Root node that contains lectures. Lecture Lectures are held in rooms. Schedule A lecture is scheduled. OnetimeSchedule A lecture can be scheduled once. WeeklyRecurringSchedule Or a lecture can be scheduled weekly until an end date You will find more concepts in the language like SemesterPlan, Tutor and Equipment they are not used in the samples as of now.","title":"Metamodel for the samples","component":"modelix","version":"23.2","name":"metamodel","url":"/modelix/23.2/samples/metamodel.html","titles":[]},"111":{"id":111,"text":"The modelix samples repository contains a couple of examples that show various aspects of the modelix platform. The primary focus of the samples is to show how you can apply modelix to bring languages and models defined in MPS into the web. On the basis of (meta-)models defined in MPS, external access is provided using the JVM (Java/Kotlin) and web frameworks/tools. Everything shown in the samples is intended to enable you to come up with your own use cases and architectures based on what is provided here. Not all features of modelix are shown here, so this is not a complete demo of everything modelix can do. None of the examples try to reuse editors defined in MPS. If your goal is to reuse MPS editors as is, then modelix itself ships with a Projector integration to achieve this. While all the examples use the same language defined in MPS they are not meant as one complete example but rather as individual parts. The purpose of the examples is to give inspiration for what is possible with modelix and make you think about and envision your own use cases. To work with the samples, you need the following software installed.: MPS 2021.2.6 Java 11 Docker and Docker Compose Alternatives like Podman might work, but have not been tested. Clone samples repository Start building all components with ./gradlew build inside the repository Building everything in the beginning is not strictly necessary, but it enables you to let the build run, while you explore the documentation further. Explore the documentation Start with the overview Or go directly to one of the samples Use case 1: Model server and MPS Use case 2: Model server and web frontend Use case 3: Model server and web backend","title":"Introduction","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/samples/index.html","titles":[{"text":"Technical prerequisites","hash":"_technical_prerequisites","id":1},{"text":"Getting started","hash":"_getting_started","id":2}]},"112":{"id":112,"text":"The samples are structured into use cases. Each use case uses different components from the modelix platform to create custom solutions. On this page, you can get an overview of all use cases, and see how they are related and what their essential differences are. In the first use case, an MPS project is synchronized to a repository on a model server by utilizing the model-server-sync-plugin. It shows how to make model data, previously accessible only in a running MPS or via files, available through a server. In itself, this use case has little value, but the next use cases build in part on it. See the Use case 1 page for details. In this use case, we connect web frontends to a model server. The web frontends read from and write model data to the model server. One web frontend can be used to edit model data and is implemented with Vue.js. The other one serves as an overview and is implemented with Angular. You can see how changes made in one connected application are instantly reflected in another connected application. You can also connect an MPS to the model server and see how changes made in the application are synced to MPS and vice versa. The frontend applications directly use the model-client JavaScript library that connects to the model server. They also use a TypeScript API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. See the Use case 2 page for details. In this use case, a web frontend connects to a web backend, which in turn communicates with a model server. Like in use case 2 model data is synced automatically between the model server, the application and MPS. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented with Quarkus. It uses the model-client to connect to a model server. It also uses a Kotlin API generated by the Model API generator from the metamodel to enable type-safe access to data structures provided by the model client. For the Angular based web frontend, the web backend provides a custom HTTP- and websocket-based API. See the Use case 3 page for details.","title":"Overview of the samples","component":"modelix","version":"23.2","name":"overview","url":"/modelix/23.2/samples/overview.html","titles":[{"text":"Use case 1","hash":"use_case_1","id":1},{"text":"Use case 2","hash":"use_case_2","id":2},{"text":"Use case 3","hash":"use_case_3","id":3}]},"113":{"id":113,"text":"This use case shows how model data can be synced between an MPS instance and a model server. This makes model data, previously accessible only in a running MPS or via files, available through a server. The synchronization needs to be initialized from MPS using the model-server-sync-plugin. Figure 1. Initiating synchronization and synchronizing change Figure 2. Initiating synchronization and synchronizing change (sequence diagram) Execute the following command to set up the MPS project under mps/project-mps-backend. It installs the model-server-sync-plugin and its dependencies. Command to set up the MPS project ./gradlew mps:project-mps-backend:build Command to start a model server docker-compose --profile useCase1 up This command starts a model server under http://localhost:28101/ Open the mps/project-mps-backend in MPS 2021.2.6. In the 'Cloud' tool window, right-click on Cloud and select Add Model Server Figure 3. Adding a model server Enter http://localhost:28101/ as the model servers URL Figure 4. Entering the address of the model server In the Cloud tool window, right-click on the added server and select Add Repository Figure 5. Adding a repository Enter courses as the repository name Figure 6. Entering repository name Right-click the University.Schedule.mps.backend.sandbox solution and select Cloud Actions > Copy on Cloud and Sync → http://localhost:28101/courses Figure 7. Synchronizing solution Explore synchronized data in the Cloud tool window Figure 8. Exploring synchronized data","title":"Use case 1: Model server and MPS","component":"modelix","version":"23.2","name":"use_case_1","url":"/modelix/23.2/samples/use_case_1.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Instructions","hash":"_instructions","id":2},{"text":"Setup MPS","hash":"_setup_mps","id":3},{"text":"Start a model server","hash":"_start_a_model_server","id":4},{"text":"Start MPS","hash":"_start_mps","id":5},{"text":"Connect to the model server","hash":"_connect_to_the_model_server","id":6}]},"114":{"id":114,"text":"This use case realizes the synchronization of model data between two web frontends and a model server. One web frontend is the Management application implemented in Vue.js and can modify the model content. It uses the @modelix/model-client, the @modelix/vue-model-api and code generated by the Model API generator. The generated code provides type-safe access to model data and is derived from the MPS languages under mps/languages. The other web frontend is written in Angular and only reads model data. It also uses the model-client and the generated type-safe TypeScript API. A running MPS instance can also sync model data using the model-server-sync-plugin. The web frontends communicate directly with a model server and not through an intermediary custom backend like in use case 3. Take a look at the overview to understand how this use case relates to the other use cases Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build needed components ./gradlew spa-management-vue:build spa-overview-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the Single-page applications spa-management-vue and spa-overview-angular Start up the components. docker-compose --profile useCase2 up This starts: a model server with initial data under http://localhost:28101/ the Management application under http://localhost:3000/ the Overview application under http://localhost:4200/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the Management application. Those changes are first synced to the model server. The model server syncs those changes to other opened web applications, like the Overview application or other instances of the Management application open in another tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa.","title":"Use case 2: Model server and web frontend","component":"modelix","version":"23.2","name":"use_case_2","url":"/modelix/23.2/samples/use_case_2.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"115":{"id":115,"text":"This use case realizes the synchronization of model data between a web application and MPS through a model server. This use case consists of: a model server that holds model data a web backend that can read and write data to the model server a web frontend that displays data from and interacts with the web backend an optionally running MPS that syncs its data with the model server To see how a web frontend can directly connect to a model server, take a look at use case 2. A backend is needed if you need to control what data a client might read and write. It is also useful to translate data from modelix data structures into a data structure that is suitable for your web applications. The web backend is implemented in Quarkus. It communicates to the model server using the model-client. The data communicated between the model server and web backend are modelix-specific data structures without information about the metamodel. In the backend, those data structures are wrapped with generated Kotlin classes generated by the Model API generator from the metamodel. The backend programmer can use this so-called domain-specific-language API to access model data more type-safely. The web backend exposes a custom application-specific API, which the web frontend uses to communicate and read and write data. The web backend, therefore: controls how data is read and written to the model server. hides details about modelix-specific data structures and domain-specific-language API. Figure 1. Demonstration of synchronization Figure 2. Interactions in demonstration Use Gradle to build the relevant components. Command to build the needed components ./gradlew rest-api-model-server:build spa-dashboard-angular:build mps:project-modelserver-backend:build This command: Install dependencies in the MPS project mps/project-modelserver-backend The main dependency is the model-server-sync-plugin. Generates TypeScript sources in mps/metamodel-api-ts Those sources are generated from the MPS languages in mps/languages. They are used in the spa-management-vue and spa-overview-angular. builds the web backend rest-api-model-server builds the web frontend spa-dashboard-angular Start up the components. docker-compose --profile useCase3 up This starts: a model server with initial data under http://localhost:28101/ the web backend under http://localhost:8090/ the web frontend under http://localhost:4201/ Start MPS 2021.2.6 without any global plugins and open the project in the mps/project-mps-backend folder. This MPS project has a plugin installed and configured to sync the model content automatically with the model server. Use case 1 describes the synchronization between a model client and an MPS instance. Now you can modify the model through the web frontend. Those changes are first communicated to the web backend. From there, they are communicated to the model server. The model server syncs those changes to other open web applications. You can see this by opening the dashboard a second time in a different tab. If you have an MPS instance running and connected to the model server, changes made in MPS are synced with web applications, and vice versa. You can also start the web frontends from use case 2 and see how changes to the model are propagated there.","title":"Use case 3: Model server and web backend","component":"modelix","version":"23.2","name":"use_case_3","url":"/modelix/23.2/samples/use_case_3.html","titles":[{"text":"Demonstration","hash":"_demonstration","id":1},{"text":"Build","hash":"_build","id":2},{"text":"Start","hash":"_start","id":3},{"text":"MPS (optionally)","hash":"_mps_optionally","id":4},{"text":"Use","hash":"_use","id":5}]},"116":{"id":116,"text":"The modelix.core repository contains the core components of the modelix platform. These components include among others the model-server, model-api-gen, model-api-gen-gradle, and light-model-client. All components in this repository have no dependencies to JetBrains MPS. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.core!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"117":{"id":117,"text":"TODO","title":"modelix.core Explanation","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/explanation/index.html","titles":[]},"118":{"id":118,"text":"When working with large models you will quickly run into performance issues when you try to replicate the whole model into the client. While the data structure for model replication in Modelix supports partial loading of models, you still need a way to describe which data you need on the client. Loading data on demand while traversing the model also results in a poor performance, because of the potentially large number of fine-grained request. A first attempt to solve this problem was to disallow lazy loading and require the client to load all required data at the beginning, before working with the model. A special query language was used to filter the data and an attempt to access a node that is not included by that query resulted in an exception, forcing the developer to adjust the query. While this results in a more predictable performance, it is also hard to maintain and still not optimal for the performance. You have to download all the data at the beginning that you might eventually need, potentially exceeding the available memory of the system. The ModelQL query language provides a more dynamic way of loading parts of the model on demand, but still allows reducing the number of request to a minimum. The downside is that it’s not just a different implementation hidden behind the model-api, but requires to use a different API. The query language is inspired by Reactive Streams and the execution engine uses Kotlin Flows, which is a Coroutines compatible implementation of Reactive Streams. Often it’s useful to know if a stream is expected to return only one element or multiple elements. Project Reactor, another implementation of Reactive Streams, introduced the notion of Mono and Flux to distinguish them. You will also find them in ModelQL.","title":"ModelQL","component":"modelix","version":"23.2","name":"modelql","url":"/modelix/23.2/core/explanation/modelql.html","titles":[{"text":"Reactive Streams","hash":"_reactive_streams","id":1}]},"119":{"id":119,"text":"TODO","title":"modelix.core How-To","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/howto/index.html","titles":[]},"120":{"id":120,"text":"ModelQL defines its own HTTP endpoint and provides server/client implementations for it. The model-server and the mps-model-server-plugin already implement this endpoint. The client can be created like this: val client = ModelQLClient.builder().url(\"http://localhost/query\").httpClient(httpClient).build() val result: List = client.query { root -> root.children(\"modules\").property(\"name\").toList() } When creating a LightModelClient you can optionally provide a ModelQLClient instance, which allows invoking .query { …​ } (see below) on a node returned by the LightModelClient. val modelqlClient = ModelQLClient.builder().build() val client = LightModelClient.builder().modelQLClient(modelqlClient).build() val result: List = client.getRootNode()!!.query { it.children(\"modules\").property(\"name\").toList() } You can use the model-api-gen-gradle plugin to generate type safe extensions from your meta-model. Specify the modelqlKotlinDir property to enable the generation. val result: List = client.query { root -> root.children(\"classes\").ofConcept(C_ClassConcept) .member .ofConcept(C_StaticMethodDeclaration) .filter { it.visibility.instanceOf(C_PublicVisibility) } .toList() } If a query returns a node, you can execute a new query starting from that node. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val names = cls.query { it.member.ofConcept(C_StaticMethodDeclaration).name.toList() } For convenience, it’s possible to access further data of that node using the INode API, but this is not recommended though, because each access sends a new query to the server. val cls: ClassConcept = client.query { it.children(\"classes\").ofConcept(C_ClassConcept).first() } val className = cls.name While returning a list of elements is simple, the purpose of the query language is to reduce the number of request to a minimum. This requires combining multiple values into more complex data structures. The zip operation provides a simple way of doing that: val result: List>> = query { db -> db.products.map { val id = it.id val title = it.title val images = it.images.toList() id.zip(title, images) }.toList() } result.forEach { println(\"ID: ${it.first}, Title: ${it.second}, Images: ${it.third}\") } This is suitable for combining a small number of values, but because of the missing variable names it can be hard to read for a larger number of values or even multiple zip operations assembled into a hierarchical data structure. This can be solved by defining custom data classes and using the mapLocal operation: data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = remoteProductDatabaseQuery { db -> db.products.map { val id = it.id val title = it.title val images = it.images.mapLocal { MyImage(it) }.toList() id.zip(title, images).mapLocal { MyProduct(it.first, it.second, it.third) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } The mapLocal operation is not just useful in combination with the zip operation, but in general to create instances of classes only known to the client. The body of mapLocal is executed on the client after receiving the result from the server. That’s why you only have access to the output of the zip operation and still have to use first, second and third inside the query. To make this even more readable there is a buildLocalMapping operation, which provides a different syntax for the zip-mapLocal chain. data class MyProduct(val id: Int, val title: String, val images: List) data class MyImage(val url: String) val result: List = query { db -> db.products.buildLocalMapping { val id = it.id.request() val title = it.title.request() val images = it.images.mapLocal { MyImage(it) }.toList().request() onSuccess { MyProduct(id.get(), title.get(), images.get()) } }.toList() } result.forEach { println(\"ID: ${it.id}, Title: ${it.title}, Images: ${it.images}\") } At the beginning of the buildLocalMapping body, you invoke request() on all the values you need to assemble your object. This basically adds the operand to the internal zip operation and returns an object that gives you access to the value after receiving it from the server. Inside the onSuccess block you assemble the local object using the previously requested values. One use case of the query language is to build database applications that generate HTML pages from the data stored in the model server. You can use the Kotlin HTML DSL together with ModelQL to do that. Use buildHtmlQuery to request data from the server and render it into an HTML string: val html = query { it.map(buildHtmlQuery { val modules = input.children(\"modules\").requestFragment { val moduleName = input.property(\"name\").request() val models = input.children(\"models\").requestFragment { val modelName = input.property(\"name\").request() onSuccess { div { h2 { +\"Model: ${modelName.get()}\" } } } } onSuccess { div { h1 { +\"Module: ${moduleName.get()}\" } insertFragment(models) } } } onSuccess { body { insertFragment(modules) } } }) } buildHtmlQuery and the requestFragment operation are similar to the buildLocalMapping operation, but inside the onSuccess block you use the Kotlin HTML DSL.","title":"ModelQL","component":"modelix","version":"23.2","name":"modelql","url":"/modelix/23.2/core/howto/modelql.html","titles":[{"text":"Independent ModelQLClient","hash":"_independent_modelqlclient","id":1},{"text":"Integration with LightModelClient","hash":"_integration_with_lightmodelclient","id":2},{"text":"Type-safe ModelQL API","hash":"_type_safe_modelql_api","id":3},{"text":"Run query on an INode","hash":"_run_query_on_an_inode","id":4},{"text":"Complex query results","hash":"_complex_query_results","id":5},{"text":"Kotlin HTML integration","hash":"_kotlin_html_integration","id":6}]},"121":{"id":121,"text":"If you want to test code that processes model-api instances, you can do this in-process without a running (light-) model-server. Use the following pattern to set up your test fixture containing model-api instances: val branch = ModelFacade.toLocalBranch(ModelFacade.newLocalTree()) branch.runWrite { val root = branch.getRootNode() val someRootNode = root.addNewChild(null, C_SomeConcept.untyped()).typed() someRootNode.member.addNew(-1, C_OtherConcept).apply { name = \"some test property value\" } } All classes of the pattern C_* and N_* are generated using the model-api-gen.","title":"How-To test model-api client code without a model-server","component":"modelix","version":"23.2","name":"testing-against-model-api","url":"/modelix/23.2/core/howto/testing-against-model-api.html","titles":[]},"122":{"id":122,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project Creating an instance that loads the entire model from the server can be done like this: val client = LightModelClient.builder() .url(\"ws://localhost/json/v2/test-repo/ws\") // optional, by default it connects to the MPS plugin .build() You have to set a model query using changeQuery() to tell the server in what data you are interested in. Without a query the client will not receive any data. client.changeQuery(buildModelQuery { root { descendants { } } }) To read or write any nodes you have to start a read/write transaction by using runRead {}/runWrite {}. An exception is thrown when you try to access a node outside a transaction. val rootNode = client.waitForRootNode()!! client.runRead { val modules = rootNode.getChildren(\"modules\") // ... } If you try to access a node that is not included in your model query an exception is thrown. You can use INode.isLoaded() to check if a node was loaded on the client to prevent this exception. You can also filter a list of nodes like this: node.getChildren(\"modules\").filterLoaded(), to iterate only over the nodes that are included in your query.","title":"How-To use the light-model-client","component":"modelix","version":"23.2","name":"usage-light-model-client","url":"/modelix/23.2/core/howto/usage-light-model-client.html","titles":[]},"123":{"id":123,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To apply model-api-gen to an existing JetBrains MPS language, it is necessary to build the project via Gradle. This How-To assumes a folder structure as follows . ├── mps │ ├── build │ ├── metamodel │ │ └── [kotlin gradle sub-project] │ │ │ ├── languages │ │ └── [your MPS languages] │ └── solutions │ └── [your MPS solutions] │ ├── settings.gradle.kts ├── gradle.properties ├── gradle.properties ├── build.gradle.kts └── [...] Once you have your Gradle setup done, add the following lines the respective files. gradle.properties file: modelixCoreVersion=1.4.10 mpsVersion=2021.3.2 [...] The versions listed here are not the latest versions, refer to the repositories or use our latest release. settings.gradle.kts file: pluginManagement { val modelixCoreVersion: String by settings plugins { // the gradle plugin that provides easy access to the meta-model generator id(\"org.modelix.model-api-gen.gradle\") version modelixCoreVersion [...] } repositories { maven { url = uri(\"https://artifacts.itemis.cloud/repository/maven-mps/\") } [...] } } [...] build.gradle.kts file: plugins { id(\"org.modelix.model-api-gen\") } val mpsVersion: String by rootProject val modelixCoreVersion: String by rootProject // ensure that the MPS directory name is correct val mpsDir = project.layout.buildDirectory.dir(\"mps\").get().asFile val mps by configurations.creating val mpsDependencies by configurations.creating dependencies { mps(\"com.jetbrains:mps:$mpsVersion\") [...] } // you might already have this if you use Gradle to build your MPS languages val resolveMps by tasks.registering(Sync::class) { from(mps.resolve().map { zipTree(it) }) into(mpsDir) } // the specific addition of the meta-model generator Gradle helper metamodel { dependsOn(resolveMps) mpsHome = mpsDir // Source // ensure that your languages and solutions you want to generate are listed here modulesFrom(projectDir.resolve(\"languages\")) modulesFrom(projectDir.resolve(\"solutions\")) // further restrictions can be made to filter namespaces, languages or concepts includeNamespace(\"org.example\") includeLanguage(\"language.fq.name\") includeConcept(\"concept.fq.name\") // this example imports dependencies from the shared dependencies folder modulesFrom(projectDir.resolve(\"build/dependencies\")) // and specifically adds repository related concepts includeLanguage(\"org.modelix.model.repositoryconcepts\") // Target // Kotlin // the target project into which the kotlin API will be build (requires the project to exist in the gradle setup) kotlinDir = project(\":mps:metamodel\").projectDir.resolve(\"src/main/kotlin\") // an alternative to the line above // kotlinProject = project(\":my-kotlin-project\") // you can set the name of the registration helper class here registrationHelperName = \"org.example.MyLanguages\" // TypeScript // similar to the Kotlin API above, the typescript directory can be set to enable TS API generation typescriptDir = project(\":my-typescript-project\").projectDir.resolve(\"src/gen\") } [...] The org.modelix.model-api-gen.gradle Gradle helper provides an additional target which will integrate into your build, so a simple re-build of your Gradle project should be sufficient. Alternatively, you can directly trigger the API generation via ./gradlew mps:metamodel:build Done. You can now use the generated Classes in your code Kotlin (or TypeScript) project in the mps/metamodel sub-project.","title":"How-To apply the Model API Generator using the Gradle Plugin","component":"modelix","version":"23.2","name":"usage-model-api-gen-gradle","url":"/modelix/23.2/core/howto/usage-model-api-gen-gradle.html","titles":[]},"124":{"id":124,"text":"If you are interested in a more practical usage of what is presented here, check out the samples project To run the model-server with default configuration run: [modelix.core] $ ./gradlew model-server:run To specify a different jdbc configuration, you can add the -jdbcconf arguement: [modelix.core] $ ./gradlew model-server:run --args='-jdbcconf path-to-my-database.properties' During development or to perform tests it is recommended to start the model-server with in-memory storage: [modelix.core] $ ./gradlew model-server:run --args='-inmemory'","title":"How-To start a local model-server","component":"modelix","version":"23.2","name":"usage-model-server","url":"/modelix/23.2/core/howto/usage-model-server.html","titles":[]},"125":{"id":125,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The bulk-model-sync Gradle plugin synchronizes models between model-api endpoints. A common example would be synchronizing a local MPS project to a model-server. Figure 1. Bulk Synchronization between MPS and model-server The plugin allows the definition of sync directions inside of a modelSync block by specifying source and target endpoint. Based on these directions, Gradle tasks will be generated, which can be run to trigger the corresponding synchronization. Internally, the node data will be bulk exported from the source endpoint and stored as JSON files. After that, these JSON files serve as a specification to incrementally update the target model via the target model-api endpoint. This means that only a minimal amount of write operations is used to update the target model. method parameter type description dependsOn Any Adds the given task as a dependency of this task. direction String, Action Defines a new sync direction with the given name. method parameter type description fromLocal Action Defines a local source (MPS). toModelServer Action Defines a model-server target. fromModelServer Action Defines a model-server source. toLocal Action Defines a local target (MPS). registerLanguage ILanguage Registers the given language and all of its concepts for the synchronisation process. includeModule String Includes the module specified by the given fully qualified name in the synchronisation process. includeModulesByPrefix String Includes all modules, whose fully qualified name starts with the given prefix, in the synchronisation process. setting type description mpsHome File Location of the MPS to be used for the sync. mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB (default: \"2g\") repositoryDir File Directory in which the modules are stored. mpsDebugPort Int If set, the headless MPS will suspend on startup and wait for a remote debugger on the specified port. setting type description url String URL of the model-server API endpoint. repositoryId String Id of the target/source model-server repository. branchName String Name of the target/source model-server branch. revision String Source model-server revision. Can be used instead of repositoryId and branchName. Only available in ServerSource. modelSync { dependsOn(someOtherTask) direction(\"pushToMyServer\") { registerLanguage(L_MyGeneratedLanguage) includeModule(\"MySolution\") fromLocal { mpsHome = project.layout.buildDirectory.dir(\"mps\").get().asFile mpsHeapSize = \"4g\" repositoryDir = projectDir.resolve(\"my-repo\") } toModelServer { url = \"http://0.0.0.0:28101/v2\" repositoryId = \"my-repo\" branchName = \"dev\" } } } Generated Gradle task to perform synchronization: runSyncPushToMyServer.","title":"Gradle Plugin for synchronizing models between model-api endpoints","component":"modelix","version":"23.2","name":"component-bulk-model-sync-gradle","url":"/modelix/23.2/core/reference/component-bulk-model-sync-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"modelSync configuration","hash":"_modelsync_configuration","id":3},{"text":"SyncDirection configuration","hash":"_syncdirection_configuration","id":4},{"text":"LocalSource/-Target configuration","hash":"_localsource_target_configuration","id":5},{"text":"ServerSource/-Target configuration","hash":"_serversource_target_configuration","id":6},{"text":"Example","hash":"_example","id":7}]},"126":{"id":126,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The light-model-client is designed to connect to either an MPS instance or a Modelix model-server. It is implemented in Kotlin multi-platform so that it can also be run in the browser. While the alternative \"advanced model client\" provides more features and should be used for long-running processes, the light-model-client is optimized for a lower resource consumption and short living processes like in a browser tab. The server is responsible for resolving conflicts and to keep the client side model in a valid state.","title":"Accessing models: The light-model-client","component":"modelix","version":"23.2","name":"component-light-model-client","url":"/modelix/23.2/core/reference/component-light-model-client.html","titles":[]},"127":{"id":127,"text":"Repository | buildfile | Artifacts: Nexus GitHub Packages In order to export a meta-model (i.e. the structure aspect of a langauge) from MPS, modelix uses the MPS solution metamodel-export. This solution maps the structure of a language to corresponding serializable data classes of the model-api (e.g. LanguageData and ConcepData). Further, the metamodel-export provides a command line interface to export these data classes to a JSON file from outside of MPS. Unfold to see an exemplary JSON file which is generated from the export { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca\", \"name\": \"University.Schedule\", \"concepts\": [ { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560\", \"name\": \"Lecture\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010563\", \"name\": \"description\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188010565\", \"name\": \"maxParticipants\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058355\", \"name\": \"schedule\", \"type\": \"University.Schedule.Schedule\", \"optional\": false } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010560/4128798754188058364\", \"name\": \"room\", \"type\": \"University.Schedule.Room\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568\", \"name\": \"Schedule\", \"abstract\": true, \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010568/4128798754188010578\", \"name\": \"at\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010569\", \"name\": \"Recurring\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570\", \"name\": \"DateAndTime\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010571\", \"name\": \"date\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010570/4128798754188010573\", \"name\": \"time\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580\", \"name\": \"Room\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010583\", \"name\": \"maxPlaces\", \"type\": \"INT\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010580/4128798754188010585\", \"name\": \"hasRemoteEquipment\", \"type\": \"BOOLEAN\" } ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\", \"jetbrains.mps.lang.core.INamedConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588\", \"name\": \"Rooms\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188010588/4128798754188010589\", \"name\": \"rooms\", \"type\": \"University.Schedule.Room\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192\", \"name\": \"Courses\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188057192/4128798754188057193\", \"name\": \"lectures\", \"type\": \"University.Schedule.Lecture\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/4128798754188059567\", \"name\": \"OneOff\", \"properties\": [ ], \"children\": [ ], \"references\": [ ], \"extends\": [ \"University.Schedule.Schedule\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449\", \"name\": \"Student\", \"properties\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048450\", \"name\": \"name\" }, { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048454\", \"name\": \"semester\", \"type\": \"INT\" } ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048449/1648392019017048452\", \"name\": \"born\", \"type\": \"University.Schedule.DateAndTime\", \"optional\": false } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457\", \"name\": \"Students\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048457/1648392019017048458\", \"name\": \"students\", \"type\": \"University.Schedule.Student\", \"multiple\": true } ], \"references\": [ ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460\", \"name\": \"LectureAssignments\", \"properties\": [ ], \"children\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048466\", \"name\": \"lectures\", \"type\": \"University.Schedule.Assignment\", \"multiple\": true } ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048460/1648392019017048461\", \"name\": \"student\", \"type\": \"University.Schedule.Student\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] }, { \"uid\": \"mps:96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463\", \"name\": \"Assignment\", \"properties\": [ ], \"children\": [ ], \"references\": [ { \"uid\": \"96533389-8d4c-46f2-b150-8d89155f7fca/1648392019017048463/1648392019017048464\", \"name\": \"lecture\", \"type\": \"University.Schedule.Lecture\", \"optional\": false } ], \"extends\": [ \"jetbrains.mps.lang.core.BaseConcept\" ] } ] } The metamodel-export is primarily intended to be used by the Model API Generator.","title":"MPS solution for metamodel-export","component":"modelix","version":"23.2","name":"component-metamodel-export","url":"/modelix/23.2/core/reference/component-metamodel-export.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"128":{"id":128,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-api-gen.gradle.plugin is a Gradle plugin that wraps the functionality of the MPS solution for metamodel-export and Model API Generator. It provides an additional Gradle task which will apply a 2-staged process: MPS metamodel export to JSON (optional) In the first step the metamodel-export MPS solution is executed by the plugin to export the MPS structure aspect (i.e. the metamodel) to JSON files. In case your metamodel comes from another source this is an external entry point: As long as you can export your metamodel to JSON, you can use model-api-gen. To use JSON from another source or JSON files from a previous export, you can skip this step by simply specifying a directory, which contains the JSON files, in the configuration of the gradle task: metamodel { //... jsonDir = File(\"path/to/json/dir\") } As a result, all MPS-specific configuration settings will be ignored and the specified directory will be used for the next step. JSON to model API generation In the second step, the previously generated JSON files containing the metamodel are being used to generate the typed API using the Kotlin/TypeScript generator in model-api-gen. Inside of the metamodel block the following settings can be configured. setting type description javaExecutable File Location of the Java executable moduleFolders ArrayList Directories, that contain the language modules mpsHome File Home directory of MPS mpsHeapSize String MPS heap size specified as a String, e.g. \"2g\" for 2GB includedLanguages Set Set of languages, for which an API should be generated includedLanguageNamespaces Set Set of language namespaces, for which an API should be generated includedConcepts Set Set of concepts, for which an API should be generated includedModules Set Set of modules, for which an API should be generated jsonDir File Directory containing JSON files, which represent a metamodel. Will be used as input for the generation. Specifying this will skip the export from MPS and all MPS-specific configurations will be ignored. kotlinDir File Target Kotlin directory of the generator modelqlKotlinDir File The generation of the ModelQL API is optional, because the output has a dependency on the ModelQL runtime. If this option is set, you have to add a dependency on org.modelix:modelql-typed. Can be the same as kotlinDir or a directory in a separate subproject, if you run into memory issues of the Kotlin compiler. kotlinProject Project Target Kotlin project of the generator typescriptDir File Target TypeScript directory of the generator registrationHelperName String Fully qualified name of the generated language registration helper conceptPropertiesInterfaceName String Fully qualified name of the generated interface, that contains the concept meta-properties of this language set. If null (default), neither the concept meta-properties nor the corresponding interface will be generated. taskDependencies List List of tasks, on which the generation process depends method parameter type description names Action Block used to set a name configuration. dependsOn vararg Any Adds a dependency to taskDependencies javaExecutable File Sets the java executable. modulesFrom File Adds a directory to `moduleFolders includeLanguage String Adds the language specified by this fully qualified name to ìncludedLanguages includeNamespace String Adds the namespace specified by this languagePrefix to includedNamespaces includeConcept String Adds the concept specified by this fully qualified name to includedConcepts exportModules String Adds the module specified by this name prefix to includedModules Inside the metamodel block a names block can be declared to configure prefix, suffix, and baseNameConversion of generated Kotlin/TypeScript elements. This is achieved by setting the attributes of the NameConfig object accordingly. attribute default prefix default suffix languageClass \"L_\" \"\" typedNode \"N_\" \"\" typedNodeImpl \"_N_TypedImpl_\" \"\" untypedConcept \"_C_UntypedImpl_\" \"\" typedConcept \"C_\" \"\" typedConceptImpl \"_C_TypedImpl_\" \"\" conceptTypeAlias \"CN_\" \"\" metamodel { mpsHome = file(\"path/to/mps/home\") mpsHeapSize = \"2g\" kotlinDir = file(\"build/kotlin_gen\") registrationHelperName = \"org.modelix.Languages\" typescriptDir = file(\"build/ts_gen\") includeNamespace(\"jetbrains.mps.baseLanguage\") exportModules(\"jetbrains.mps.runtime\") names { languageClass.prefix = \"MyLanguagePrefix\" languageClass.suffix = \"MyLanguageSuffix\" } }","title":"Gradle Plugin for the Model API Generator","component":"modelix","version":"23.2","name":"component-model-api-gen-gradle","url":"/modelix/23.2/core/reference/component-model-api-gen-gradle.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Configuration settings","hash":"_configuration_settings","id":2},{"text":"Configurable Attributes","hash":"_configurable_attributes","id":3},{"text":"Configuration Methods","hash":"_configuration_methods","id":4},{"text":"Name Configuration","hash":"_name_configuration","id":5},{"text":"Default Values","hash":"_default_values","id":6},{"text":"Example","hash":"_example","id":7}]},"129":{"id":129,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API Generator (model-api-gen) is a Kotlin component which generates a domain-specific model API. Currently, the generator supports either Kotlin and TypeScipt as target languages. As a source for the generated API, model-api-gen consumes a given metamodel specified by JSON files. The Model API Generator is mainly used in the corresponding gradle plugin model-api-gen-gradle.","title":"Model API Generator","component":"modelix","version":"23.2","name":"component-model-api-gen","url":"/modelix/23.2/core/reference/component-model-api-gen.html","titles":[]},"130":{"id":130,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The Model API (model-api) is a Kotlin component which provides a metamodel independent model API. This API is the shared basis and used across all modelix components. The model-api provides three distinct parts org.modelix.model.api: The untyped API to provide model access org.modelix.model.data: Data classes for (meta-)model serialization org.modelix.model.area: Model grouping and transactional access The following diagram provides a meta-model of the model-api An untyped access to model content is possible when only using the model-api. In case you want to use domain-specific model access (i.e. typed access), the model-api-gen provides a generator which generates a typed model API from your existing meta-model. This generated API specializes the model-api. Additionally, the model-api provides serializable data classes to represent a meta-model. The following diagrams show a class diagram of the data classes for the model and meta-model.","title":"Model API","component":"modelix","version":"23.2","name":"component-model-api","url":"/modelix/23.2/core/reference/component-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"1. org.modelix.model.api","hash":"_1_org_modelix_model_api","id":2},{"text":"2.org.modelix.model.data","hash":"_2_org_modelix_model_data","id":3}]},"131":{"id":131,"text":"API doc | Repository | buildfile | Artifacts: Nexus GitHub Packages The model-server component provides a storage for models. Bringing models to the cloud requires an alternative to the file system (and git) based storage of models. Modelix implements a data structure that allows replication between all MPS instances connected to the same model-server. It is very similar to the git storage format, but instead of files it stores nodes in its key-value data store. To support real-time collaboration, in addition to the snapshot of a version, the model-server also stores the operations that were applied on the previous version to produce the new version. Conflicts between concurrent modification are resolved using operational transformation (OT). The usually hard part of OT is to guarantee convergence, meaning that all clients end up with the same result independent of the order in which they receive changes. This problem becomes trivial, because versions are identified by a hash over all the content. Any divergence will result in a different hash which can easily be detected. The remaining problem is what to do when a divergence is detected. From git we know that switching between versions is fast, because it only has to apply the difference between these versions. The same is true here: Fixing a divergence is as easy as switching to the correct version. If a client does not have any local changes it does not even need to apply the change operations itself - it can just switch to the new version. So in the rare case of a divergence fixing it is nothing special and is an operation that happens all the time. While this component is independent of MPS, it is possible to replicates the data of the MPS internal module repository into a running model-server. This can be achieved using the modelix MPS plugin: One can connect an MPS instances to a model-server, upload the current module repository, and keep it synchronized. This can also be a local MPS instance without a web editor - both options are supported at the same time. To reformat and add license header to all files run: ../gradlew spotlessApply Valid keys are keys starting with the PROTECTED_PREFIX ($$$). For details please refer to the OpenAPI documentation under doc/model-server.json.","title":"A Cloud Model Storage/Repository: The modelix model-server","component":"modelix","version":"23.2","name":"component-model-server","url":"/modelix/23.2/core/reference/component-model-server.html","titles":[{"text":"Real-Time Collaboration and Operational Transformation","hash":"_real_time_collaboration_and_operational_transformation","id":1},{"text":"MPS and the model-server","hash":"_mps_and_the_model_server","id":2},{"text":"Development","hash":"_development","id":3},{"text":"APIs","hash":"_apis","id":4}]},"132":{"id":132,"text":"API doc | Repository | Artifacts: Nexus GitHub Packages The plugin offers a set of health checks via HTTP on port 48305 and path /health. Health checks can be enabled adding query parameters with the health check name and the value true to the request. The check fails, if the indexer is currently running for one of the opened projects. This check indicates a healthy system until a project is opened. Combine it with the projects health check to effectively wait for the system to be ready to serve data immediately. Reports an unhealthy system whenever no project is loaded. Reports an unhealthy system when no virtual folders are available. This might also be true in case a project without virtual folders is fully loaded.","title":"mps-model-server-plugin","component":"modelix","version":"23.2","name":"component-mps-model-server-plugin","url":"/modelix/23.2/core/reference/component-mps-model-server-plugin.html","titles":[{"text":"Health checks","hash":"_health_checks","id":1},{"text":"indexer","hash":"_indexer","id":2},{"text":"projects","hash":"_projects","id":3},{"text":"virtualFolders","hash":"_virtualfolders","id":4}]},"133":{"id":133,"text":"Repository | Nexus The @modelix/vue-model-api can be used to create Vue.js applications, that interact with a model server by reading and writing models. @modelix/vue-model-api provides Vue.js composable to connect to the model server. It exposes the model as a tree of reactive objects to the application developer. The exposed object can be further wrapped by the generated TypeScript API by the Gradle plugin for typed model API generation.","title":"Vue.js bindings","component":"modelix","version":"23.2","name":"component-vue-model-api","url":"/modelix/23.2/core/reference/component-vue-model-api.html","titles":[{"text":"Overview","hash":"_overview","id":1}]},"134":{"id":134,"text":"TODO","title":"modelix.core Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/core/tutorial/index.html","titles":[]},"135":{"id":135,"text":"The modelix.platform repository contains the Gradle platforms for modelix. It provides all modelix component versions for each modelix platform release. The modelix project uses Gradle to build the individual components. Simply call the following in the top level folder of a repository: ./gradlew build # mac/linux or if you are on windows use: gradlew.bat build # windows Wherever possible we use the latest IntelliJ IDEA IDE to manage projects in our repositories. Consequently, opening any repository with IntelliJ will also allow you to build and eventually contribute. At the moment most modelix artifacts are stored on the itemis nexus with no access restriction. As a consequence, when you build modelix or use modelix components via Gradle there is no repository access setup required. This is optional when you want to obtain modelix artifacts from GitHub packages rather than the itemis nexus server. Most packages are also published to GitHub packages for which a GithHub account and credentials are required. To access GitHub packaged you need to specify your credentials. First of all you will need to generate a personal access token with access to GitHub Packages. The project assumes that your username is available as the variable gpr.user and the token as gpr.key. The easiest way to configure the credentials is copy the example below, paste it into the gradle.properties file in the repository and replace the values with your credentials: gpr.user= gpr.key= Gradle also supports other locations for specifying these properties.","title":"Welcome to modelix.platform!","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Getting Started","hash":"_getting_started","id":2},{"text":"Build components using Gradle","hash":"_build_components_using_gradle","id":3},{"text":"Build from console","hash":"_build_from_console","id":4},{"text":"IntelliJ Idea","hash":"_intellij_idea","id":5},{"text":"modelix Artifact Publication","hash":"_modelix_artifact_publication","id":6},{"text":"How to set up GitHub packages authentication","hash":"_how_to_set_up_github_packages_authentication","id":7}]},"136":{"id":136,"text":"The modelix platform is a Gradle platform built using Gradle’s Java Platform Plugin. It aggregates the versions of individual modelix components. Furthermore, the platform simplifies versioning by mapping the modelix release version to the versions of the individual components. These are curated for each release so that compatibility between them is ensured.","title":"The modelix Gradle platform","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/explanation/index.html","titles":[]},"137":{"id":137,"text":"The modelix platform provides component versions. To enforce these versions in your project’s build you can add the platform as an enforcedPlatform. We make the following assumptions: the string variable mps_version contains the mps version that is used in your project, e.g. 2021-1 the string variable modelix_platform_version contains the version of the modelix platform you want to use, e. g. 23.1.0 To enforce the versions provided by the platform in your Gradle build, you can use enforcedPlatform inside of a dependencies block like this: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) } Dependencies to modelix components can then be declared without a version number (as the version declared in the platform will be used). For example: dependencies { implementation(enforcedPlatform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client\") } If you want to handle dependencies to MPS version-specific modelix components yourself, you can use org.modelix:platform instead, which does not contain these dependencies. However, sometimes it might be necessary to pick a specific version of a single component, e.g. when one wants to test new features. Overriding versions may lead to incompatibilities between individual modelix components. In order to override versions inside the platform during dependency resolution, platform can be used instead of enforcedPlatform: dependencies { implementation(platform(\"org.modelix:platform-mps-$mps_version:$modelix_platform_version\")) implementation(\"org.modelix:model-client:2.4.0\") } If you want to learn more about the difference between platform and enforcedPlatform, you can check out this section in the Gradle documentation.","title":"How-to use the platform to streamline modelix dependencies","component":"modelix","version":"23.2","name":"usage-platform","url":"/modelix/23.2/platform/howto/usage-platform.html","titles":[{"text":"General Usage","hash":"_general_usage","id":1},{"text":"Overriding versions","hash":"_overriding_versions","id":2}]},"138":{"id":138,"text":"TODO","title":"modelix.platform Tutorials","component":"modelix","version":"23.2","name":"index","url":"/modelix/23.2/platform/tutorial/index.html","titles":[]}},"components":{},"componentVersions":{"modelix/main":{"displayVersion":"main","title":"Modelix Documentation","version":"main","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/main/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/main/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/main/index.html","urlType":"internal"},{"content":"Roadmap","url":"/modelix/main/main/roadmap.html","urlType":"internal"},{"content":"Contribution Guide","url":"/modelix/main/main/contribute.html","urlType":"internal"},{"content":"Development and Releases","url":"/modelix/main/main/development.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/main/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/main/tutorial/build-component.html","urlType":"internal"}]}],"root":true,"order":0.1667},{"items":[{"content":"How-To Guides","url":"/modelix/main/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/main/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/main/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/main/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/main/core/howto/usage-light-model-client.html","urlType":"internal"},{"content":"Test model-api client code without a model-server","url":"/modelix/main/core/howto/testing-against-model-api.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/main/core/howto/modelql.html","urlType":"internal"}]}],"root":true,"order":0.3333},{"items":[{"content":"Reference","url":"/modelix/main/reference/index.html","urlType":"internal","items":[{"content":"List of Repositories","url":"/modelix/main/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/main/reference/components-table.html","urlType":"internal","items":[{"content":"model-api","url":"/modelix/main/core/reference/component-model-api.html","urlType":"internal"},{"content":"model-server","url":"/modelix/main/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/main/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/main/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/main/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"bulk-model-sync-gradle","url":"/modelix/main/core/reference/component-bulk-model-sync-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/main/core/reference/component-light-model-client.html","urlType":"internal"},{"content":"mps-model-server-plugin","url":"/modelix/main/core/reference/component-mps-model-server-plugin.html","urlType":"internal"},{"content":"vue-model-api","url":"/modelix/main/core/reference/component-vue-model-api.html","urlType":"internal"}]}]}],"root":true,"order":0.5},{"items":[{"content":"Explanation","url":"/modelix/main/explanation/index.html","urlType":"internal","items":[{"content":"Gradle Platform","url":"/modelix/main/platform/explanation/index.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/main/core/explanation/modelql.html","urlType":"internal"},{"content":"Overview","url":"/modelix/main/explanation/overview.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/main/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/main/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/main/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.6667},{"items":[{"content":"Samples","items":[{"content":"Introduction","url":"/modelix/main/samples/index.html","urlType":"internal"},{"content":"Overview","url":"/modelix/main/samples/overview.html","urlType":"internal"},{"content":"Metamodel","url":"/modelix/main/samples/metamodel.html","urlType":"internal"},{"content":"Use cases","items":[{"content":"1. Model server and MPS","url":"/modelix/main/samples/use_case_1.html","urlType":"internal"},{"content":"2. Model server and web frontend","url":"/modelix/main/samples/use_case_2.html","urlType":"internal"},{"content":"3. Model server and web backend","url":"/modelix/main/samples/use_case_3.html","urlType":"internal"}]}]}],"root":true,"order":0.8333}]},"modelix/23.2":{"displayVersion":"23.2","title":"Modelix Documentation","version":"23.2","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/23.2/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/23.2/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/23.2/index.html","urlType":"internal"},{"content":"Roadmap","url":"/modelix/23.2/main/roadmap.html","urlType":"internal"},{"content":"Contribution Guide","url":"/modelix/23.2/main/contribute.html","urlType":"internal"},{"content":"Development and Releases","url":"/modelix/23.2/main/development.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/23.2/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/23.2/tutorial/build-component.html","urlType":"internal"}]}],"root":true,"order":0.1667},{"items":[{"content":"How-To Guides","url":"/modelix/23.2/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/23.2/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/23.2/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/23.2/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/23.2/core/howto/usage-light-model-client.html","urlType":"internal"},{"content":"Test model-api client code without a model-server","url":"/modelix/23.2/core/howto/testing-against-model-api.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/23.2/core/howto/modelql.html","urlType":"internal"}]}],"root":true,"order":0.3333},{"items":[{"content":"Reference","url":"/modelix/23.2/reference/index.html","urlType":"internal","items":[{"content":"List of Repositories","url":"/modelix/23.2/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/23.2/reference/components-table.html","urlType":"internal","items":[{"content":"model-api","url":"/modelix/23.2/core/reference/component-model-api.html","urlType":"internal"},{"content":"model-server","url":"/modelix/23.2/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/23.2/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/23.2/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/23.2/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"bulk-model-sync-gradle","url":"/modelix/23.2/core/reference/component-bulk-model-sync-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/23.2/core/reference/component-light-model-client.html","urlType":"internal"},{"content":"mps-model-server-plugin","url":"/modelix/23.2/core/reference/component-mps-model-server-plugin.html","urlType":"internal"},{"content":"vue-model-api","url":"/modelix/23.2/core/reference/component-vue-model-api.html","urlType":"internal"}]}]}],"root":true,"order":0.5},{"items":[{"content":"Explanation","url":"/modelix/23.2/explanation/index.html","urlType":"internal","items":[{"content":"Gradle Platform","url":"/modelix/23.2/platform/explanation/index.html","urlType":"internal"},{"content":"ModelQL","url":"/modelix/23.2/core/explanation/modelql.html","urlType":"internal"},{"content":"Overview","url":"/modelix/23.2/explanation/overview.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/23.2/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/23.2/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/23.2/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.6667},{"items":[{"content":"Samples","items":[{"content":"Introduction","url":"/modelix/23.2/samples/index.html","urlType":"internal"},{"content":"Overview","url":"/modelix/23.2/samples/overview.html","urlType":"internal"},{"content":"Metamodel","url":"/modelix/23.2/samples/metamodel.html","urlType":"internal"},{"content":"Use cases","items":[{"content":"1. Model server and MPS","url":"/modelix/23.2/samples/use_case_1.html","urlType":"internal"},{"content":"2. Model server and web frontend","url":"/modelix/23.2/samples/use_case_2.html","urlType":"internal"},{"content":"3. Model server and web backend","url":"/modelix/23.2/samples/use_case_3.html","urlType":"internal"}]}]}],"root":true,"order":0.8333}]},"modelix/23.1":{"displayVersion":"23.1","title":"Modelix Documentation","version":"23.1","name":"modelix","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Modelix Documentation","site-url":"https://docs.modelix.org","page-pagination":true,"page-partial":true},"sourcemap":true},"url":"/modelix/23.1/index.html","navigation":[{"items":[{"content":"General","url":"/modelix/23.1/index.html","urlType":"internal","items":[{"content":"Introduction","url":"/modelix/23.1/index.html","urlType":"internal"},{"content":"Development, Releases, and Roadmap","url":"/modelix/23.1/main/roadmap.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Tutorials","url":"/modelix/23.1/tutorial/index.html","urlType":"internal","items":[{"content":"Build components using Gradle","url":"/modelix/23.1/tutorial/build-component.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"samples:tutorial/startup-usecases.adoc","url":"/modelix/23.1/samples/tutorial/startup-usecases.html","urlType":"internal"},{"content":"Run Use-Case 1 Implementation","url":"/modelix/23.1/samples/tutorial/start-usecase-1-a.html","urlType":"internal"},{"content":"Run Use-Case 1a Implementation","url":"/modelix/23.1/samples/tutorial/start-usecase-1-b.html","urlType":"internal"}]}]}]}],"root":true,"order":0.2},{"items":[{"content":"How-To Guides","url":"/modelix/23.1/howto/index.html","urlType":"internal","items":[{"content":"Use platform to streamline dependencies","url":"/modelix/23.1/platform/howto/usage-platform.html","urlType":"internal"},{"content":"Start a model-server","url":"/modelix/23.1/core/howto/usage-model-server.html","urlType":"internal"},{"content":"Generate Kotlin/ Typescript API from MPS language","url":"/modelix/23.1/core/howto/usage-model-api-gen-gradle.html","urlType":"internal"},{"content":"Use the light-model-client","url":"/modelix/23.1/core/howto/usage-light-model-client.html","urlType":"internal"}]}],"root":true,"order":0.4},{"items":[{"content":"Reference","url":"/modelix/23.1/reference/index.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"System Architecture","url":"/modelix/23.1/samples/reference/architecture.html","urlType":"internal"},{"content":"Meta-model & Generated Model API","url":"/modelix/23.1/samples/reference/meta-model-model-api.html","urlType":"internal"},{"content":"Dashboard","url":"/modelix/23.1/samples/reference/dashboard.html","urlType":"internal"},{"content":"Local model-server","url":"/modelix/23.1/samples/reference/model-server.html","urlType":"internal"},{"content":"Intermediate OpenAPI","url":"/modelix/23.1/samples/reference/openapi.html","urlType":"internal","items":[{"content":"modelQL API","url":"/modelix/23.1/samples/reference/rest-api-model-ql.html","urlType":"internal"},{"content":"model-server API","url":"/modelix/23.1/samples/reference/rest-api-model-server.html","urlType":"internal"}]}]},{"content":"List of Repositories","url":"/modelix/23.1/reference/repositories-components.html","urlType":"internal"},{"content":"Table of Components","url":"/modelix/23.1/reference/components-table.html","urlType":"internal"},{"content":"model-server","url":"/modelix/23.1/core/reference/component-model-server.html","urlType":"internal"},{"content":"metamodel-export (MPS)","url":"/modelix/23.1/core/reference/component-metamodel-export.html","urlType":"internal"},{"content":"model-api-gen","url":"/modelix/23.1/core/reference/component-model-api-gen.html","urlType":"internal"},{"content":"model-api-gen-gradle","url":"/modelix/23.1/core/reference/component-model-api-gen-gradle.html","urlType":"internal"},{"content":"light-model-client","url":"/modelix/23.1/core/reference/component-light-model-client.html","urlType":"internal"}]}],"root":true,"order":0.6},{"items":[{"content":"Explanation","url":"/modelix/23.1/explanation/index.html","urlType":"internal","items":[{"content":"Samples","items":[{"content":"Samples Introduction","url":"/modelix/23.1/samples/index.html","urlType":"internal"},{"content":"Sample Structure","url":"/modelix/23.1/samples/explanation/structure.html","urlType":"internal"},{"content":"Use-Cases","items":[{"content":"Use-cases Overview","url":"/modelix/23.1/samples/explanation/usecases.html","urlType":"internal"},{"content":"Use-Case 1: Dashboard","url":"/modelix/23.1/samples/explanation/usecase-1.html","urlType":"internal"},{"content":"Use-Case 2: Manual Schedule Creation","url":"/modelix/23.1/samples/explanation/usecase-2.html","urlType":"internal"}]}]},{"content":"Gradle Platform","url":"/modelix/23.1/platform/explanation/index.html","urlType":"internal"},{"content":"Architecture","url":"/modelix/23.1/explanation/architecture.html","urlType":"internal"},{"content":"Modelix Goals","url":"/modelix/23.1/explanation/goals.html","urlType":"internal"},{"content":"Glossary","url":"/modelix/23.1/explanation/glossary.html","urlType":"internal"}]}],"root":true,"order":0.8}]}}}}) \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 80f8d75e..51e4f3c2 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,554 +2,554 @@ https://docs.modelix.org/modelix/main/core/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/explanation/modelql.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/modelql.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/testing-against-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/usage-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/usage-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/howto/usage-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-bulk-model-sync-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-metamodel-export.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-model-api-gen.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-mps-model-server-plugin.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/reference/component-vue-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/core/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/explanation/architecture.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/explanation/glossary.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/explanation/goals.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/explanation/overview.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/howto/faq.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/main/contribute.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/main/development.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/main/roadmap.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/main/todo.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/platform/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/platform/howto/usage-platform.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/platform/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/platform/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/reference/components-table.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/reference/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/reference/repositories-components.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/metamodel.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/overview.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/use_case_1.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/use_case_2.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/samples/use_case_3.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/tutorial/build-component.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/main/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/explanation/modelql.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/modelql.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/testing-against-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/usage-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/usage-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/howto/usage-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-bulk-model-sync-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-metamodel-export.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-model-api-gen.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-mps-model-server-plugin.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/reference/component-vue-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/core/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/explanation/architecture.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/explanation/glossary.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/explanation/goals.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/explanation/overview.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/howto/faq.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/main/contribute.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/main/development.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/main/roadmap.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/main/todo.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/platform/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/platform/howto/usage-platform.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/platform/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/platform/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/reference/components-table.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/reference/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/reference/repositories-components.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/metamodel.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/overview.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/use_case_1.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/use_case_2.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/samples/use_case_3.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/tutorial/build-component.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.2/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/howto/usage-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/howto/usage-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/howto/usage-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/reference/component-light-model-client.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/reference/component-metamodel-export.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/reference/component-model-api-gen-gradle.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/reference/component-model-api-gen.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/reference/component-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/core/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/explanation/architecture.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/explanation/glossary.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/explanation/goals.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/howto/faq.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/howto/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/main/roadmap.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/main/todo.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/platform/explanation/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/platform/howto/usage-platform.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/platform/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/platform/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/reference/components-table.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/reference/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/reference/repositories-components.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/explanation/courses-domain.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/explanation/structure.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/explanation/usecase-1.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/explanation/usecase-2.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/explanation/usecases.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/architecture.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/dashboard.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/meta-model-model-api.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/openapi.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/rest-api-model-ql.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/reference/rest-api-model-server.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/tutorial/start-usecase-1-a.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/tutorial/start-usecase-1-b.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/samples/tutorial/startup-usecases.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/tutorial/build-component.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z https://docs.modelix.org/modelix/23.1/tutorial/index.html -2023-11-26T02:26:05.467Z +2023-11-27T02:25:40.821Z